[PATCH 0/3] sbi/cmd: improve output formatting

* correctly format the version number for RustSBI * provide an error message if the SBI does not implement the 'SBI Base Functionality' extension. * provide user friendly short texts for the legacy extensions
Heinrich Schuchardt (3): cmd/sbi: format RustSBI version number cmd/sbi: error message for failure to get spec version cmd/sbi: user friendly short texts
cmd/riscv/sbi.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-)

The SBI command can print out the version number of the SBI implementation. Choose the correct output format for RustSBI.
Signed-off-by: Heinrich Schuchardt heinrich.schuchardt@canonical.com --- cmd/riscv/sbi.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/cmd/riscv/sbi.c b/cmd/riscv/sbi.c index 522f502435..160d7c7b30 100644 --- a/cmd/riscv/sbi.c +++ b/cmd/riscv/sbi.c @@ -74,6 +74,7 @@ static int do_sbi(struct cmd_tbl *cmdtp, int flag, int argc, vers >> 16, vers & 0xffff); break; case 3: /* KVM */ ++ case 4: /* RustSBI */ printf("%ld.%ld.%ld", vers >> 16, (vers >> 8) & 0xff,

On 10/1/22 03:39, Heinrich Schuchardt wrote:
The SBI command can print out the version number of the SBI implementation. Choose the correct output format for RustSBI.
Signed-off-by: Heinrich Schuchardt heinrich.schuchardt@canonical.com
cmd/riscv/sbi.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/cmd/riscv/sbi.c b/cmd/riscv/sbi.c index 522f502435..160d7c7b30 100644 --- a/cmd/riscv/sbi.c +++ b/cmd/riscv/sbi.c @@ -74,6 +74,7 @@ static int do_sbi(struct cmd_tbl *cmdtp, int flag, int argc, vers >> 16, vers & 0xffff); break; case 3: /* KVM */ ++ case 4: /* RustSBI */
Did your patch get mangled?
printf("%ld.%ld.%ld", vers >> 16, (vers >> 8) & 0xff,

Hi Sean, On Tue, Oct 04, 2022 at 02:23:33AM -0400, Sean Anderson wrote:
On 10/1/22 03:39, Heinrich Schuchardt wrote:
The SBI command can print out the version number of the SBI implementation. Choose the correct output format for RustSBI.
Signed-off-by: Heinrich Schuchardt heinrich.schuchardt@canonical.com
cmd/riscv/sbi.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/cmd/riscv/sbi.c b/cmd/riscv/sbi.c index 522f502435..160d7c7b30 100644 --- a/cmd/riscv/sbi.c +++ b/cmd/riscv/sbi.c @@ -74,6 +74,7 @@ static int do_sbi(struct cmd_tbl *cmdtp, int flag, int argc, vers >> 16, vers & 0xffff); break; case 3: /* KVM */ ++ case 4: /* RustSBI */
Did your patch get mangled?
Thanks for the catch. I will fix that extra '+' when merging the patches.
printf("%ld.%ld.%ld", vers >> 16, (vers >> 8) & 0xff,
Best regards, Leo

If calling 'Get SBI specification version' fails, write an error message and return CMD_RET_FAILURE.
Signed-off-by: Heinrich Schuchardt heinrich.schuchardt@canonical.com --- cmd/riscv/sbi.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/cmd/riscv/sbi.c b/cmd/riscv/sbi.c index 160d7c7b30..70574bbc66 100644 --- a/cmd/riscv/sbi.c +++ b/cmd/riscv/sbi.c @@ -56,8 +56,11 @@ static int do_sbi(struct cmd_tbl *cmdtp, int flag, int argc, long mvendorid, marchid, mimpid;
ret = sbi_get_spec_version(); - if (ret >= 0) - printf("SBI %ld.%ld", ret >> 24, ret & 0xffffff); + if (ret < 0) { + printf("No SBI 0.2+\n"); + return CMD_RET_FAILURE; + } + printf("SBI %ld.%ld", ret >> 24, ret & 0xffffff); impl_id = sbi_get_impl_id(); if (impl_id >= 0) { for (i = 0; i < ARRAY_SIZE(implementations); ++i) {

In the sbi command use the same short texts for the legacy extensions as the SBI specification 1.0.0.
Signed-off-by: Heinrich Schuchardt heinrich.schuchardt@canonical.com --- cmd/riscv/sbi.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/cmd/riscv/sbi.c b/cmd/riscv/sbi.c index 70574bbc66..e9872d7b66 100644 --- a/cmd/riscv/sbi.c +++ b/cmd/riscv/sbi.c @@ -30,15 +30,15 @@ static struct sbi_imp implementations[] = { };
static struct sbi_ext extensions[] = { - { SBI_EXT_0_1_SET_TIMER, "sbi_set_timer" }, - { SBI_EXT_0_1_CONSOLE_PUTCHAR, "sbi_console_putchar" }, - { SBI_EXT_0_1_CONSOLE_GETCHAR, "sbi_console_getchar" }, - { SBI_EXT_0_1_CLEAR_IPI, "sbi_clear_ipi" }, - { SBI_EXT_0_1_SEND_IPI, "sbi_send_ipi" }, - { SBI_EXT_0_1_REMOTE_FENCE_I, "sbi_remote_fence_i" }, - { SBI_EXT_0_1_REMOTE_SFENCE_VMA, "sbi_remote_sfence_vma" }, - { SBI_EXT_0_1_REMOTE_SFENCE_VMA_ASID, "sbi_remote_sfence_vma_asid" }, - { SBI_EXT_0_1_SHUTDOWN, "sbi_shutdown" }, + { SBI_EXT_0_1_SET_TIMER, "Set Timer" }, + { SBI_EXT_0_1_CONSOLE_PUTCHAR, "Console Putchar" }, + { SBI_EXT_0_1_CONSOLE_GETCHAR, "Console Getchar" }, + { SBI_EXT_0_1_CLEAR_IPI, "Clear IPI" }, + { SBI_EXT_0_1_SEND_IPI, "Send IPI" }, + { SBI_EXT_0_1_REMOTE_FENCE_I, "Remote FENCE.I" }, + { SBI_EXT_0_1_REMOTE_SFENCE_VMA, "Remote SFENCE.VMA" }, + { SBI_EXT_0_1_REMOTE_SFENCE_VMA_ASID, "Remote SFENCE.VMA with ASID" }, + { SBI_EXT_0_1_SHUTDOWN, "System Shutdown" }, { SBI_EXT_BASE, "SBI Base Functionality" }, { SBI_EXT_TIME, "Timer Extension" }, { SBI_EXT_IPI, "IPI Extension" },
participants (3)
-
Heinrich Schuchardt
-
Leo Liang
-
Sean Anderson