All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/2] cmd/sbi: add missing SBI information
@ 2022-03-17  6:36 Heinrich Schuchardt
  2022-03-17  6:36 ` [PATCH v3 1/2] riscv: provide missing base extension functions Heinrich Schuchardt
  2022-03-17  6:36 ` [PATCH v3 2/2] cmd/sbi: add missing SBI information Heinrich Schuchardt
  0 siblings, 2 replies; 5+ messages in thread
From: Heinrich Schuchardt @ 2022-03-17  6:36 UTC (permalink / raw)
  To: Rick Chen, Leo, u-boot; +Cc: Bin Meng, Sean Anderson, Heinrich Schuchardt

Let the sbi command display:

* machine vendor ID
* machine architecture ID
* machine implementation ID

Heinrich Schuchardt (2):
  riscv: provide missing base extension functions
  cmd/sbi: add missing SBI information

 arch/riscv/include/asm/sbi.h |  3 ++
 arch/riscv/lib/sbi.c         | 65 ++++++++++++++++++++++++++++++++++++
 cmd/riscv/sbi.c              | 13 +++++++-
 3 files changed, 80 insertions(+), 1 deletion(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v3 1/2] riscv: provide missing base extension functions
  2022-03-17  6:36 [PATCH v3 0/2] cmd/sbi: add missing SBI information Heinrich Schuchardt
@ 2022-03-17  6:36 ` Heinrich Schuchardt
  2022-03-20 19:32   ` Sean Anderson
  2022-03-17  6:36 ` [PATCH v3 2/2] cmd/sbi: add missing SBI information Heinrich Schuchardt
  1 sibling, 1 reply; 5+ messages in thread
From: Heinrich Schuchardt @ 2022-03-17  6:36 UTC (permalink / raw)
  To: Rick Chen, Leo, u-boot; +Cc: Bin Meng, Sean Anderson, Heinrich Schuchardt

Provide library functions to read:

* machine vendor ID
* machine architecture ID
* machine implementation ID

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
---
 arch/riscv/include/asm/sbi.h |  3 ++
 arch/riscv/lib/sbi.c         | 65 ++++++++++++++++++++++++++++++++++++
 2 files changed, 68 insertions(+)

diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h
index 76453121ea..81fcfe0b36 100644
--- a/arch/riscv/include/asm/sbi.h
+++ b/arch/riscv/include/asm/sbi.h
@@ -155,6 +155,9 @@ long sbi_get_spec_version(void);
 int sbi_get_impl_id(void);
 int sbi_get_impl_version(long *version);
 int sbi_probe_extension(int ext);
+int sbi_get_mvendorid(long *mvendorid);
+int sbi_get_marchid(long *marchid);
+int sbi_get_mimpid(long *mimpid);
 void sbi_srst_reset(unsigned long type, unsigned long reason);
 
 #endif
diff --git a/arch/riscv/lib/sbi.c b/arch/riscv/lib/sbi.c
index d427d1b29e..8724e3a460 100644
--- a/arch/riscv/lib/sbi.c
+++ b/arch/riscv/lib/sbi.c
@@ -127,6 +127,71 @@ int sbi_probe_extension(int extid)
 	return -ENOTSUPP;
 }
 
+/**
+ * sbi_get_mvendorid() - get machine vendor ID
+ *
+ * @mimpid:	on return machine vendor ID
+ * Return:	0 on success
+ */
+int sbi_get_mvendorid(long *mvendorid)
+{
+	struct sbiret ret;
+
+	ret = sbi_ecall(SBI_EXT_BASE, SBI_EXT_BASE_GET_MVENDORID,
+			0, 0, 0, 0, 0, 0);
+	if (ret.error)
+		return -ENOTSUPP;
+
+	if (mvendorid)
+		*mvendorid = ret.value;
+
+	return 0;
+}
+
+/**
+ * sbi_get_marchid() - get machine architecture ID
+ *
+ * @mimpid:	on return machine architecture ID
+ * Return:	0 on success
+ */
+int sbi_get_marchid(long *marchid)
+{
+	struct sbiret ret;
+
+	ret = sbi_ecall(SBI_EXT_BASE, SBI_EXT_BASE_GET_MARCHID,
+			0, 0, 0, 0, 0, 0);
+
+	if (ret.error)
+		return -ENOTSUPP;
+
+	if (marchid)
+		*marchid = ret.value;
+
+	return 0;
+}
+
+/**
+ * sbi_get_mimpid() - get machine implementation ID
+ *
+ * @mimpid:	on return machine implementation ID
+ * Return:	0 on success
+ */
+int sbi_get_mimpid(long *mimpid)
+{
+	struct sbiret ret;
+
+	ret = sbi_ecall(SBI_EXT_BASE, SBI_EXT_BASE_GET_MIMPID,
+			0, 0, 0, 0, 0, 0);
+
+	if (ret.error)
+		return -ENOTSUPP;
+
+	if (mimpid)
+		*mimpid = ret.value;
+
+	return 0;
+}
+
 /**
  * sbi_srst_reset() - invoke system reset extension
  *
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v3 2/2] cmd/sbi: add missing SBI information
  2022-03-17  6:36 [PATCH v3 0/2] cmd/sbi: add missing SBI information Heinrich Schuchardt
  2022-03-17  6:36 ` [PATCH v3 1/2] riscv: provide missing base extension functions Heinrich Schuchardt
@ 2022-03-17  6:36 ` Heinrich Schuchardt
  2022-03-20 19:33   ` Sean Anderson
  1 sibling, 1 reply; 5+ messages in thread
From: Heinrich Schuchardt @ 2022-03-17  6:36 UTC (permalink / raw)
  To: Rick Chen, Leo, u-boot; +Cc: Bin Meng, Sean Anderson, Heinrich Schuchardt

Let the sbi command display:

* 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 | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/cmd/riscv/sbi.c b/cmd/riscv/sbi.c
index 8349123925..8fc8ab0ac5 100644
--- a/cmd/riscv/sbi.c
+++ b/cmd/riscv/sbi.c
@@ -52,6 +52,7 @@ static int do_sbi(struct cmd_tbl *cmdtp, int flag, int argc,
 {
 	int i, impl_id;
 	long ret;
+	long mvendorid, marchid, mimpid;
 
 	ret = sbi_get_spec_version();
 	if (ret >= 0)
@@ -77,7 +78,17 @@ static int do_sbi(struct cmd_tbl *cmdtp, int flag, int argc,
 		if (i == ARRAY_SIZE(implementations))
 			printf("Unknown implementation ID %ld", ret);
 	}
-	printf("\nExtensions:\n");
+	printf("\nMachine:\n");
+	ret = sbi_get_mvendorid(&mvendorid);
+	if (!ret)
+		printf("  Vendor ID %lx\n", mvendorid);
+	ret = sbi_get_marchid(&marchid);
+	if (!ret)
+		printf("  Architecture ID %lx\n", marchid);
+	ret = sbi_get_mimpid(&mimpid);
+	if (!ret)
+		printf("  Implementation ID %lx\n", mimpid);
+	printf("Extensions:\n");
 	for (i = 0; i < ARRAY_SIZE(extensions); ++i) {
 		ret = sbi_probe_extension(extensions[i].id);
 		if (ret > 0)
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 1/2] riscv: provide missing base extension functions
  2022-03-17  6:36 ` [PATCH v3 1/2] riscv: provide missing base extension functions Heinrich Schuchardt
@ 2022-03-20 19:32   ` Sean Anderson
  0 siblings, 0 replies; 5+ messages in thread
From: Sean Anderson @ 2022-03-20 19:32 UTC (permalink / raw)
  To: Heinrich Schuchardt, Rick Chen, Leo, u-boot; +Cc: Bin Meng

On 3/17/22 2:36 AM, Heinrich Schuchardt wrote:
> Provide library functions to read:
> 
> * machine vendor ID
> * machine architecture ID
> * machine implementation ID
> 
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> ---
>   arch/riscv/include/asm/sbi.h |  3 ++
>   arch/riscv/lib/sbi.c         | 65 ++++++++++++++++++++++++++++++++++++
>   2 files changed, 68 insertions(+)
> 
> diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h
> index 76453121ea..81fcfe0b36 100644
> --- a/arch/riscv/include/asm/sbi.h
> +++ b/arch/riscv/include/asm/sbi.h
> @@ -155,6 +155,9 @@ long sbi_get_spec_version(void);
>   int sbi_get_impl_id(void);
>   int sbi_get_impl_version(long *version);
>   int sbi_probe_extension(int ext);
> +int sbi_get_mvendorid(long *mvendorid);
> +int sbi_get_marchid(long *marchid);
> +int sbi_get_mimpid(long *mimpid);
>   void sbi_srst_reset(unsigned long type, unsigned long reason);
>   
>   #endif
> diff --git a/arch/riscv/lib/sbi.c b/arch/riscv/lib/sbi.c
> index d427d1b29e..8724e3a460 100644
> --- a/arch/riscv/lib/sbi.c
> +++ b/arch/riscv/lib/sbi.c
> @@ -127,6 +127,71 @@ int sbi_probe_extension(int extid)
>   	return -ENOTSUPP;
>   }
>   
> +/**
> + * sbi_get_mvendorid() - get machine vendor ID
> + *
> + * @mimpid:	on return machine vendor ID
> + * Return:	0 on success
> + */
> +int sbi_get_mvendorid(long *mvendorid)
> +{
> +	struct sbiret ret;
> +
> +	ret = sbi_ecall(SBI_EXT_BASE, SBI_EXT_BASE_GET_MVENDORID,
> +			0, 0, 0, 0, 0, 0);
> +	if (ret.error)
> +		return -ENOTSUPP;
> +
> +	if (mvendorid)
> +		*mvendorid = ret.value;
> +
> +	return 0;
> +}
> +
> +/**
> + * sbi_get_marchid() - get machine architecture ID
> + *
> + * @mimpid:	on return machine architecture ID
> + * Return:	0 on success
> + */
> +int sbi_get_marchid(long *marchid)
> +{
> +	struct sbiret ret;
> +
> +	ret = sbi_ecall(SBI_EXT_BASE, SBI_EXT_BASE_GET_MARCHID,
> +			0, 0, 0, 0, 0, 0);
> +
> +	if (ret.error)
> +		return -ENOTSUPP;
> +
> +	if (marchid)
> +		*marchid = ret.value;
> +
> +	return 0;
> +}
> +
> +/**
> + * sbi_get_mimpid() - get machine implementation ID
> + *
> + * @mimpid:	on return machine implementation ID
> + * Return:	0 on success
> + */
> +int sbi_get_mimpid(long *mimpid)
> +{
> +	struct sbiret ret;
> +
> +	ret = sbi_ecall(SBI_EXT_BASE, SBI_EXT_BASE_GET_MIMPID,
> +			0, 0, 0, 0, 0, 0);
> +
> +	if (ret.error)
> +		return -ENOTSUPP;
> +
> +	if (mimpid)
> +		*mimpid = ret.value;
> +
> +	return 0;
> +}
> +
>   /**
>    * sbi_srst_reset() - invoke system reset extension
>    *
> 

Perhaps this could be rewritten like

int sbi_get_mimpid(long *mimpid)
{
	return sbi_base_get_info(mimpid, SBI_EXT_BASE_GET_MIMPID);
}

where sbi_base_get_info is common to all 6 of the generic "get info" functions.

The current implementation is fine as well.

Reviewed-by: Sean Anderson <seanga2@gmail.com>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 2/2] cmd/sbi: add missing SBI information
  2022-03-17  6:36 ` [PATCH v3 2/2] cmd/sbi: add missing SBI information Heinrich Schuchardt
@ 2022-03-20 19:33   ` Sean Anderson
  0 siblings, 0 replies; 5+ messages in thread
From: Sean Anderson @ 2022-03-20 19:33 UTC (permalink / raw)
  To: Heinrich Schuchardt, Rick Chen, Leo, u-boot; +Cc: Bin Meng

On 3/17/22 2:36 AM, Heinrich Schuchardt wrote:
> Let the sbi command display:
> 
> * 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 | 13 ++++++++++++-
>   1 file changed, 12 insertions(+), 1 deletion(-)
> 
> diff --git a/cmd/riscv/sbi.c b/cmd/riscv/sbi.c
> index 8349123925..8fc8ab0ac5 100644
> --- a/cmd/riscv/sbi.c
> +++ b/cmd/riscv/sbi.c
> @@ -52,6 +52,7 @@ static int do_sbi(struct cmd_tbl *cmdtp, int flag, int argc,
>   {
>   	int i, impl_id;
>   	long ret;
> +	long mvendorid, marchid, mimpid;
>   
>   	ret = sbi_get_spec_version();
>   	if (ret >= 0)
> @@ -77,7 +78,17 @@ static int do_sbi(struct cmd_tbl *cmdtp, int flag, int argc,
>   		if (i == ARRAY_SIZE(implementations))
>   			printf("Unknown implementation ID %ld", ret);
>   	}
> -	printf("\nExtensions:\n");
> +	printf("\nMachine:\n");
> +	ret = sbi_get_mvendorid(&mvendorid);
> +	if (!ret)
> +		printf("  Vendor ID %lx\n", mvendorid);
> +	ret = sbi_get_marchid(&marchid);
> +	if (!ret)
> +		printf("  Architecture ID %lx\n", marchid);
> +	ret = sbi_get_mimpid(&mimpid);
> +	if (!ret)
> +		printf("  Implementation ID %lx\n", mimpid);
> +	printf("Extensions:\n");
>   	for (i = 0; i < ARRAY_SIZE(extensions); ++i) {
>   		ret = sbi_probe_extension(extensions[i].id);
>   		if (ret > 0)
> 

Reviewed-by: Sean Anderson <seanga2@gmail.com>

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-03-20 19:33 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-17  6:36 [PATCH v3 0/2] cmd/sbi: add missing SBI information Heinrich Schuchardt
2022-03-17  6:36 ` [PATCH v3 1/2] riscv: provide missing base extension functions Heinrich Schuchardt
2022-03-20 19:32   ` Sean Anderson
2022-03-17  6:36 ` [PATCH v3 2/2] cmd/sbi: add missing SBI information Heinrich Schuchardt
2022-03-20 19:33   ` Sean Anderson

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.