From patchwork Mon Jul 19 20:28:34 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 1507261 X-Patchwork-Delegate: uboot@andestech.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.a=rsa-sha256 header.s=badeba3b8450 header.b=C0dEY1Ay; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4GTD3F5rcnz9s5R for ; Tue, 20 Jul 2021 06:29:29 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id ADC1882C29; Mon, 19 Jul 2021 22:29:18 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=gmx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.b="C0dEY1Ay"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 22E3782C2C; Mon, 19 Jul 2021 22:29:15 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FROM,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mout.gmx.net (mout.gmx.net [212.227.15.19]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 8FF8F82B36 for ; Mon, 19 Jul 2021 22:29:08 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=xypron.glpk@gmx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1626726530; bh=1xtdwvKGhbhicA/pMQSMBT4saDkh58JHolp5tnnh7Q0=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=C0dEY1AyZAB9n84faTtcol1uxWiKb5ELdaF9MX7znKk9NDu6HCjmwHBSsmsIWUuX6 hk4oI7hBrTHICqmelRLjk1d4bGOrUf92tM7zOph8Rgap740QXsqV9jDmGqf9g0uM8d AL70vl+nyZ5VydHJBx3A8od4CppY1Qia9h74mux0= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from workstation.fritz.box ([88.152.144.157]) by mail.gmx.net (mrgmx005 [212.227.17.184]) with ESMTPSA (Nemesis) id 1MEFvj-1lvNHb0xLZ-00ABDg; Mon, 19 Jul 2021 22:28:50 +0200 From: Heinrich Schuchardt To: Rick Chen Cc: Leo , Bin Meng , Atish Patra , Pragnesh Patel , u-boot@lists.denx.de, Dimitri John Ledkov , Heinrich Schuchardt , Heinrich Schuchardt Subject: [PATCH 1/2] riscv: provide missing base extension functions Date: Mon, 19 Jul 2021 22:28:34 +0200 Message-Id: <20210719202835.23081-2-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210719202835.23081-1-xypron.glpk@gmx.de> References: <20210719202835.23081-1-xypron.glpk@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:h8yMs42EW4bQyZ0liYsIh0JyVGO4PrbdWl1LDeo+vgf4fSN3eej JQJrTwhh9a2VHvGLS65/kymOdQ2bKPsSXtI41dR0Xyt8qE1h4p60EQJD9LkLdLEUSdUUyLF nCWFoP7JiZt8vMQ+IsgHgfR6cwkrinqXNfvFHgZZgyZVGTvPd517IdAZcX7GRzZAvIqQGyH N0waD6hh+0w1BlEo3CdNg== X-UI-Out-Filterresults: notjunk:1;V03:K0:HZhAQDj5T9o=:Shu+cUb6jkp0aYoRi1Nqkn TFUb2CS9Qtt/6Kh5mHdO2JDdjUCREmFIfkurD+Laa32C+oc6U8wlnfKyUjp6bhp1uYorYTM9+ i/zKnXBiiSVe5Z/1V9p5wzwOfai8yg0eRU+gglygH/fvpgPJsJST4v7rEIttol9wq5qZB/bEt 4aEM/LMmJnRATicJBKYkzG4bVeuEZBkmwF08KSb/sSwfORDoHl+kXXaFyOG4eSva44WCEkCwS 07QJbgTEkOb7uGqZjgGQ+vkhsvEz/uALJfKVNtoPpHsW0M2u/BTRp3+SoulTLceETCFreebpI ADAzEGFbEnR5EUo+Aw73pAaYYCZwuUsRwqlIhOIqhU/RpshIcVGTumA5bl71aGRGtSu9gzjs9 /LjNd//OFjqdYR+qkUq6qqgqPqEq3Fu7UF8KOxfzE54a5RpMKBIjQPi0Ox19lqN/1d8z6xWax hyJXn4WK54x5G9ezBdP3XcaA98cO8Nnr10i/tsRazmNSyBIWWTAHzK7to7m+Hk3Tloo6IBPCC 6U5SFH3kneQcdvr8/YBwPfQbFjbx9Q+HRrIPiEOIeC/aBdKEYo7eAkLFaKvq8kP2mBqAyIVfb uKODmqd8m8qsvc+oOW3b395Kki0hh5U/oa4aA4m2rTY8TVdeeFN8lvAjiHQJVMxeUjn6BlfYE ciCQ0mwzeRpDGuZqJOoRXeo3IOZQIvaohT6RUmfwkDOKewStTgiAvBwKYialuYhjKHAI5xRlS s/jsuPuauSF6rAP/vCGdCTbStONDPbcnY20RFKN297p5HjZPO8SsT1n3QHd3etEnZ1Y6heV8V ouKxMoxPPzxVrWcem27WP7p8rWW0wLQ0DK+n+wR0Edw2XjkCqLqYQbuv9E7o6bXxyIVsTZcbb H7P4IRjKXIup1e40SwIdM2A3AVW78lvgLZai3qeg5JH1PJHSCQwBf3Y41uMxVLjzutOzqlX7U TTlF8AIm/S8RZ8F2KYlZ6g1kjp+wY0T4YppLlXtTAuwEmegQBGNNghxJ18na82Gvk9G/hfqLv A5SrHrowQd4ZO84HRpXomckRZZcXanS3Ud0UL6Dhw0W43RfegI3zkmbMV3irninBl6w7CVDUG AZutSHxidpc9ZK1Zem21jzEEEARAReiAlC/ X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean Provide library functions to read: * SBI implementation version * machine vendor ID * machine architecture ID * machine implementation ID Signed-off-by: Heinrich Schuchardt Reviewed-by: Sean Anderson Reviewed-by: Leo Yu-Chi Liang --- arch/riscv/include/asm/sbi.h | 4 ++ arch/riscv/lib/sbi.c | 71 ++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) -- 2.30.2 diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h index 53ca316180..262cc9228c 100644 --- a/arch/riscv/include/asm/sbi.h +++ b/arch/riscv/include/asm/sbi.h @@ -117,6 +117,10 @@ void sbi_remote_sfence_vma_asid(const unsigned long *hart_mask, void sbi_set_timer(uint64_t stime_value); long sbi_get_spec_version(void); int sbi_get_impl_id(void); +long sbi_get_impl_version(void); int sbi_probe_extension(int ext); +long sbi_get_mvendorid(void); +long sbi_get_marchid(void); +long sbi_get_mimpid(void); #endif diff --git a/arch/riscv/lib/sbi.c b/arch/riscv/lib/sbi.c index 77845a73ca..8b8b4b278f 100644 --- a/arch/riscv/lib/sbi.c +++ b/arch/riscv/lib/sbi.c @@ -89,6 +89,23 @@ int sbi_get_impl_id(void) return -ENOTSUPP; } +/** + * sbi_get_impl_version() - get SBI implementation version + * + * Return: implementation version + */ +long sbi_get_impl_version(void) +{ + struct sbiret ret; + + ret = sbi_ecall(SBI_EXT_BASE, SBI_EXT_BASE_GET_IMP_VERSION, + 0, 0, 0, 0, 0, 0); + if (!ret.error) + return ret.value; + + return -ENOTSUPP; +} + /** * sbi_probe_extension() - Check if an SBI extension ID is supported or not. * @extid: The extension ID to be probed. @@ -108,6 +125,60 @@ int sbi_probe_extension(int extid) return -ENOTSUPP; } +/** + * sbi_get_mvendorid() - get machine vendor ID + * + * Return: implementation vendor ID + */ +long sbi_get_mvendorid(void) +{ + struct sbiret ret; + + ret = sbi_ecall(SBI_EXT_BASE, SBI_EXT_BASE_GET_MVENDORID, + 0, 0, 0, 0, 0, 0); + if (!ret.error) + if (ret.value) + return ret.value; + + return -ENOTSUPP; +} + +/** + * sbi_get_marchid() - get machine architecture ID + * + * Return: implementation version + */ +long sbi_get_marchid(void) +{ + struct sbiret ret; + + ret = sbi_ecall(SBI_EXT_BASE, SBI_EXT_BASE_GET_MARCHID, + 0, 0, 0, 0, 0, 0); + if (!ret.error) + if (ret.value) + return ret.value; + + return -ENOTSUPP; +} + +/** + * sbi_get_mimpid() - get machine implementation ID + * + * Return: machine implementation ID + */ +long sbi_get_mimpid(void) +{ + struct sbiret ret; + + ret = sbi_ecall(SBI_EXT_BASE, SBI_EXT_BASE_GET_MIMPID, + 0, 0, 0, 0, 0, 0); + if (!ret.error) + if (ret.value) + return ret.value; + + return -ENOTSUPP; +} + #ifdef CONFIG_SBI_V01 /** From patchwork Mon Jul 19 20:28:35 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 1507260 X-Patchwork-Delegate: uboot@andestech.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.a=rsa-sha256 header.s=badeba3b8450 header.b=ePYxo+zV; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4GTD3344hwz9sS8 for ; Tue, 20 Jul 2021 06:29:19 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 12E8782BB2; Mon, 19 Jul 2021 22:29:13 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=gmx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.b="ePYxo+zV"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id AB365829F9; Mon, 19 Jul 2021 22:29:10 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FROM,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id B28A9829F9 for ; Mon, 19 Jul 2021 22:29:07 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=xypron.glpk@gmx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1626726530; bh=NQudo/Rb5E6u8ap7wgVMv3QUtcCLnScSzLkhNtG6hsM=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=ePYxo+zVO4TC9B6BjIBo0jeY6JP/BrjYfhRHFDjAXmAbiRHfE85k8BAsUoVSfONzS x2ve9zBrjWOPhZLVCy/TXMci+IHhoCh00NMrMk7d1fWKslcHuKQc7Pu1C9QDUTtTM2 xK1KsZNC9QAsUeVtZDMIAdDYIqAc89IEJXhmn5dE= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from workstation.fritz.box ([88.152.144.157]) by mail.gmx.net (mrgmx005 [212.227.17.184]) with ESMTPSA (Nemesis) id 1MMGRA-1lnMo82Fba-00JMAZ; Mon, 19 Jul 2021 22:28:50 +0200 From: Heinrich Schuchardt To: Rick Chen Cc: Leo , Bin Meng , Atish Patra , Pragnesh Patel , u-boot@lists.denx.de, Dimitri John Ledkov , Heinrich Schuchardt , Heinrich Schuchardt Subject: [PATCH 2/2] cmd/sbi: add missing SBI information Date: Mon, 19 Jul 2021 22:28:35 +0200 Message-Id: <20210719202835.23081-3-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210719202835.23081-1-xypron.glpk@gmx.de> References: <20210719202835.23081-1-xypron.glpk@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:E9T6/Y3G1ihP/o5SmxiSS0KAqAfQrjJFlBWn1276k1UtJjiEBHc t+rxkJjM/GqEE08xRohoqcJYWFmJO2nHFQnV+Fso5ige7efy5XrLJcgb0LfIuv8A+fUeo0B CjkqYzwk9Kxre042+Oljc3a8RecesC7dYqDD/A/EXNTey0TeF2zA4U1wouJnGOnOrORtWIP qSvo25i95nZWWsNe2chhQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:fr+9JA+FRMI=:TMPiv35V3L8mabar0eOuSd fTpIwiYGxst7yIckIUJ+ykQny665jhfLjn3DxJlRHezax+XvFD3NWL1SAHVZB9FkNnGo+l1Yi WvvpnCKjiAYL4WiJG9zLat0wvPEd6j2b5o969Y6nXlzVX/FRHX7CdCBJGHlwSsFNfwRthPXXL TIF9QKnpfb/DtjEBvD9XI4PE47mAM93bOwshIsOInnh2KjQGF6KmKRymPMRFwFVnl4CcYkUWg rjYI4tgWZyzF5K9mANjvtMFnOlEcPyCLMGxGCKDl8XkIJziFNX7ChU0kax6wGQ5xwn1aNT1QY CMiTjZ4dBfqcjc3q7xMnKUjYy5q1cZvtq5VyoBoZoil674/FSe3TAnD90zDmHtmUjiSWysWjM qB6B8hlFgpLxomkX2P2RVex9D7QIYPDwRpkX2nKq6cLnIAduYmS9fIfGYsECwlGMK+cQBd1n2 rHNQXkQDbDodu3ynI6anndFYi10SB1IRr2G3YJJyFNh8TQMiqfo4PSJXMajfr7uGzKD0VL5Xl fGUYOW6O9fTtkCIK2NMIY5523gHyF7IPQ4wk74VYgwDrfG9aQl7rkxjB4K2EQ0a/NWwkyHE3b lKVP1g2aPrmE7ltKbPU5jdPnsSVuw7CtxG7fYoMUhTdCBA+lQ642a1ywi2Z3yi2yqKFB+5lKl FFLKt+PaqxdUJHBUYwRV1LdrxXoMRVVSJXAbvSvxqFqCVR8XP6+O55KUHk6ltJpWpm1KhMNEc v/oek2GpZdnZo82k00SpHDx17M3RrgsXwY51ROKAG0uv6rWoM5Mm0jdu6oMrLOmL7LArwsLw7 OJVNU814sqSjOE4l95ikEQwFxrWKWiYrdrPQOUq+AGd7SJUDWBUhs93hq+8EkkBiUKPTGq07M jjbgY7iiqRuJpdrexhu5diGyIgaEpD1R0/D+Ipgf4qWTzVbSlV4rFp509qUl+a7F54Syvoc0P YTNQiNwwJ26PlVvtFH64MyRMTzFgYJ09q3DLzhML6jRIrMQ7sEnHZNW8VkuhkQ8LIk6oKH22F f790ZnkYUI6eZmtGLZgtqaUDE6vjFfMOqDYhwnZBNaRkYfGJNVUlZBBPrLA6eGuuqOs/o5dNE q8lw9rUR8Kzf9sH2S9aXdKxJHKSeqZNI9gA X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean 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 --- cmd/riscv/sbi.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) -- 2.30.2 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) { + /* 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) + printf(" Vendor ID %lx\n", ret); + ret = sbi_get_marchid(); + if (ret != -ENOTSUPP) + printf(" Architecture ID %lx\n", ret); + ret = sbi_get_mimpid(); + if (ret != -ENOTSUPP) + printf(" Implementation ID %lx\n", ret); printf("Extensions:\n"); for (i = 0; i < ARRAY_SIZE(extensions); ++i) { ret = sbi_probe_extension(extensions[i].id);