All of lore.kernel.org
 help / color / mirror / Atom feed
From: Leo Liang <ycliang@andestech.com>
To: Sean Anderson <seanga2@gmail.com>
Cc: "Heinrich Schuchardt" <xypron.glpk@gmx.de>,
	"Rick Jian-Zhi Chen(陳建志)" <rick@andestech.com>,
	"Bin Meng" <bin.meng@windriver.com>,
	"Atish Patra" <atish.patra@wdc.com>,
	"Pragnesh Patel" <pragnesh.patel@openfive.com>,
	"u-boot@lists.denx.de" <u-boot@lists.denx.de>,
	"Dimitri John Ledkov" <dimitri.ledkov@canonical.com>,
	"Heinrich Schuchardt" <heinrich.schuchardt@canonical.com>
Subject: Re: [PATCH 2/2] cmd/sbi: add missing SBI information
Date: Mon, 26 Jul 2021 15:08:16 +0800	[thread overview]
Message-ID: <20210726070806.GB983@andestech.com> (raw)
In-Reply-To: <30512559-ac9a-8d4a-2857-16d8957c9029@gmail.com>

On Tue, Jul 20, 2021 at 01:13:56PM +0800, Sean Anderson wrote:
> On 7/20/21 12:59 AM, Heinrich Schuchardt wrote:
> > Am 20. Juli 2021 03:11:34 MESZ schrieb Sean Anderson <seanga2@gmail.com>:
> >> On 7/19/21 4:28 PM, Heinrich Schuchardt wrote:
> >>> Let the sbi command display:
> >>>
> >>> * SBI implementation version
> >>> * machine vendor ID
> >>> * machine architecture ID
> >>> * machine implementation ID
> >>>
> >>> With this patch the output for the HiFive Unmatched looks like
> >>>
> >>>       => sbi
> >>>       SBI 0.3
> >>>       OpenSBI 0.9
> >>>       Machine:
> >>>         Vendor ID 489
> >>>         Architecture ID 8000000000000007
> >>>         Implementation ID 20181004
> >>>       Extensions:
> >>>         sbi_set_timer
> >>>         sbi_console_putchar
> >>>         sbi_console_getchar
> >>>         sbi_clear_ipi
> >>>         sbi_send_ipi
> >>>         sbi_remote_fence_i
> >>>         sbi_remote_sfence_vma
> >>>         sbi_remote_sfence_vma_asid
> >>>         sbi_shutdown
> >>>         SBI Base Functionality
> >>>         Timer Extension
> >>>         IPI Extension
> >>>         RFENCE Extension
> >>>         Hart State Management Extension
> >>>         System Reset Extension
> >>>
> >>> Signed-off-by: Heinrich Schuchardt
> >> <heinrich.schuchardt@canonical.com>
> >>> ---
> >>>    cmd/riscv/sbi.c | 19 ++++++++++++++++++-
> >>>    1 file changed, 18 insertions(+), 1 deletion(-)
> >>>
> >>> diff --git a/cmd/riscv/sbi.c b/cmd/riscv/sbi.c
> >>> index 90c0811e14..c0db763ba7 100644
> >>> --- a/cmd/riscv/sbi.c
> >>> +++ b/cmd/riscv/sbi.c
> >>> @@ -59,13 +59,30 @@ static int do_sbi(struct cmd_tbl *cmdtp, int
> >> flag, int argc,
> >>>    	if (ret >= 0) {
> >>>    		for (i = 0; i < ARRAY_SIZE(implementations); ++i) {
> >>>    			if (ret == implementations[i].id) {
> >>> -				printf("%s\n", implementations[i].name);
> >>> +				printf("%s", implementations[i].name);
> >>> +				ret = sbi_get_impl_version();
> >>> +				if (ret > 0) {
> >>
> >> Shouldn't this have to check to ensure that i == 1?
> > 
> > Other SBI implementions may also provide a version number. I did not analyze how the should be formatted.
> 
> Right, so shouldn't we default to the raw hex string?

+1

> 
> > 
> >>
> >>> +					/* OpenSBI specific version encoding */
> >>> +					printf(" %ld", ret >> 16);
> >>> +					printf(".%ld", ret & 0xffff);
> >>> +				}
> >>> +				printf("\n");
> >>>    				break;
> >>>    			}
> >>>    		}
> >>>    		if (i == ARRAY_SIZE(implementations))
> >>>    			printf("Unknown implementation ID %ld\n", ret);
> >>>    	}
> >>> +	printf("Machine:\n");
> >>> +	ret = sbi_get_mvendorid();
> >>> +	if (ret != -ENOTSUPP)
> > 
> > Should we use an unsigned int as return value and 0 to indicate a missing implementation? mvendorid is only 32 bits wide.
> > 
> >>> +		printf("  Vendor ID %lx\n", ret);
> >>
> >> perhaps %0.8lx? And should we decode the JEDEC id?
> > 
> > Leading zeros won't add any meaning here. Splitting into the 25 bit and 7 bit subfields could be reasonable.
> 
> I think this would be a good option.

+1 with 25, 7 split.
IMHO, perhaps we could show only the "numbers" of the continuation code and the "decoded offset" ?
Something like: vendor ID: 489, continuation code: 9, offset decoded: 0x89.

Best regards,
Leo

> 
> > Decoding could result in up to 2^26 digits. I don't want to wait for all of these on my serial console.
> 
> Well, they're only up to 12 continuation codes, so imposing a small maximum would likely not be too onerous.
> 
> --Sean

      reply	other threads:[~2021-07-26  7:09 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-19 20:28 [PATCH 0/2] cmd/sbi: add missing SBI information Heinrich Schuchardt
2021-07-19 20:28 ` [PATCH 1/2] riscv: provide missing base extension functions Heinrich Schuchardt
2021-07-20  1:07   ` Sean Anderson
2021-07-26  6:44   ` Leo Liang
2021-07-19 20:28 ` [PATCH 2/2] cmd/sbi: add missing SBI information Heinrich Schuchardt
2021-07-20  1:11   ` Sean Anderson
2021-07-20  4:59     ` Heinrich Schuchardt
2021-07-20  5:13       ` Sean Anderson
2021-07-26  7:08         ` Leo Liang [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210726070806.GB983@andestech.com \
    --to=ycliang@andestech.com \
    --cc=atish.patra@wdc.com \
    --cc=bin.meng@windriver.com \
    --cc=dimitri.ledkov@canonical.com \
    --cc=heinrich.schuchardt@canonical.com \
    --cc=pragnesh.patel@openfive.com \
    --cc=rick@andestech.com \
    --cc=seanga2@gmail.com \
    --cc=u-boot@lists.denx.de \
    --cc=xypron.glpk@gmx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.