From patchwork Wed Jul 21 16:33:03 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 1508355 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=bWsLAcFn; 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 4GVLl241J6z9sRf for ; Thu, 22 Jul 2021 02:34:22 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id B1CD782ABE; Wed, 21 Jul 2021 18:34:05 +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="bWsLAcFn"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 2B0348203D; Wed, 21 Jul 2021 18:34:01 +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.17.21]) (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 CD4F182039 for ; Wed, 21 Jul 2021 18:33:57 +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=1626885201; bh=ZF3Aawd473Kg+RyQP0ADZ4zOZugpDhAIlj9IobKXxK8=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=bWsLAcFnU/lih/iWM+8S/Jf8kxbRq2mDFXVfWQPSa2kMwxZDl1pECh+Iwxc3rFPc+ r1nQSckVv8m5TOieQXUBJUjEBFFjGraA69tAjDlA/p7w8TpGgyruEmhi2l9E8p3JVZ 5Z4iJG1ef3OVu1VERCztRQM0gDUKWytt4lpE2Z40= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from workstation.fritz.box ([88.152.144.157]) by mail.gmx.net (mrgmx105 [212.227.17.174]) with ESMTPSA (Nemesis) id 1MgNct-1lSW5e1oBr-00hsYO; Wed, 21 Jul 2021 18:33:21 +0200 From: Heinrich Schuchardt To: Rick Chen Cc: Leo , Alexander Graf , Bin Meng , Sean Anderson , Green Wan , =?utf-8?q?Marek_Beh=C3=BAn?= , Pragnesh Patel , Atish Patra , Ley Foon Tan , Chee Hong Ang , Simon Glass , Siew Chin Lim , Sebastian Reichel , u-boot@lists.denx.de, Heinrich Schuchardt Subject: [PATCH v2 1/3] risv: add missing SBI extension definitions Date: Wed, 21 Jul 2021 18:33:03 +0200 Message-Id: <20210721163305.74945-2-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210721163305.74945-1-xypron.glpk@gmx.de> References: <20210721163305.74945-1-xypron.glpk@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:7l97+Jd72zE7+ji4ZrBBoynhpO3w4FX7IDd14pZK0HRaWdnyOjB 8lkKWyQw5UPTXI/yi/1XzspOFp7VSYrNyAmCj4rohuR7+x8a1vyso20ii1olI700m05ScHd 5fbQ4qh9NRpMfZBrKYoEpIeHbSZ4TKP1Mb9PjV0LS0QwhutxUa76U06XP+CEJ2Xibsi0ZhX 1zURCILVi15CpsDewfvGA== X-UI-Out-Filterresults: notjunk:1;V03:K0:12fcP7retmc=:eIuqk1FW2CGw5ETpcBNS54 +T0A8TXlA6PPElvp6lwceBdH/8jIc4kmLQrdJpugf2yoy3Gihpl8SLC2L59h7Tmu0/oSxBEpc JbM+lu+DfhQbvSayRvV0oY0xM+pMnL11vzGmqnghmCLfZc/Ub7qRvyudgkvNL+yGh1oFDxfI3 22yMSADLXKDETxM3a8AH9j5LLD6jl6L7ZRVe3lJg7XgALypQ5sCdhpd0S23VraBDpAmR+rpvt sPSihKRw5PnVN5cOilhj9asWhqkHFVuAhdm+4nrIU6MTXSQHgN1co/tqyGJTkpUq5ie4AqPNJ vtKQDF8G/fvo0Q61+m3OlqPIhBehD3pr1oK3PJp2cQjzz5P93CsVEKTNOggQ3TYP+K0CaSYZz MxD/wNoalEKkMkEdVonfE+vUiobHKH4tpmMqfScgebyuARpMESXDnDz8XlLLBdAdyza+OzrOO nIqQ1yuAhUNRjMkM3vlcJk21tuzihhs62uDLYpph9ZZktW5i0wU0PWq+5KBNBtE+iFb2jc0fY gZjXKI97XDLqkGEq4sFnR+bBcPD9qE3YbxIaTCq164zS8mS922JEWRwXsnBtHNlkuboAwC5AT J6YGIc+Ge8hJksO/g+Jy80cWFJbpqi9bT1+ORId50YFS9U+4uS9MoOCyUADG8e7733JKl536c gj1cRz8kLvwmqzx3sYXMcrwC+AIQogHUc1qVHr5jGweBVxbJ6GmNDh3sshCwxAZXNYV4MP72c 6CJy1ZuIdHMrbv0shDKmmCP1/oSNEgqAJGo/ZBwZUT5H27hIQyKmE5C/LfN1tueIb8Ht2sCBb 6DlCVXC2zERN6Bz9Wkd497u5AgVhkRx/PVLNNl+Ui104jBWlTi4ou6kJQ9aBt9Ge+W4Zvd0Yr O80a0tA41l9NUX3KYrlFRBkOn3940V5iMJHJ9BpPihq/iCCZ6RbT5RbxsGYjnUdZPH1N6LHv1 uKRuleTeYuniDfFQLwiY4fypIHUAXYthU13GgrL+bqsQ9MppRLGNaxOoq9eSuqczU5x2WzETH tsJNdOiGsQGE9ULqqkghLq31alxO3+E0VlKpAFPYv2fAsi4z47PeHQ8wW//mv8CClF12t0c/Y E6b7goh144AhZ63qTJq+zhB+VtZtZYZ647T 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 Add the System Reset Extension and the Hart State Management Extension definitions. Add missing RFENCE Extension enum values. The SBI 0.1 extension constants are needed for for the sbi command. Remove an #ifdef. Cf. https://github.com/riscv/riscv-sbi-doc/blob/master/riscv-sbi.adoc Signed-off-by: Heinrich Schuchardt Reviewed-by: Sean Anderson Reviewed-by: Leo Yu-Chi Liang --- v2: correct constants that were blindly copied from Linux --- arch/riscv/include/asm/sbi.h | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) -- 2.30.2 diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h index 53ca316180..39d5a022e0 100644 --- a/arch/riscv/include/asm/sbi.h +++ b/arch/riscv/include/asm/sbi.h @@ -12,7 +12,6 @@ #include enum sbi_ext_id { -#ifdef CONFIG_SBI_V01 SBI_EXT_0_1_SET_TIMER = 0x0, SBI_EXT_0_1_CONSOLE_PUTCHAR = 0x1, SBI_EXT_0_1_CONSOLE_GETCHAR = 0x2, @@ -22,11 +21,12 @@ enum sbi_ext_id { SBI_EXT_0_1_REMOTE_SFENCE_VMA = 0x6, SBI_EXT_0_1_REMOTE_SFENCE_VMA_ASID = 0x7, SBI_EXT_0_1_SHUTDOWN = 0x8, -#endif SBI_EXT_BASE = 0x10, SBI_EXT_TIME = 0x54494D45, SBI_EXT_IPI = 0x735049, SBI_EXT_RFENCE = 0x52464E43, + SBI_EXT_HSM = 0x48534D, + SBI_EXT_SRST = 0x53525354, }; enum sbi_ext_base_fid { @@ -51,6 +51,38 @@ enum sbi_ext_rfence_fid { SBI_EXT_RFENCE_REMOTE_FENCE_I = 0, SBI_EXT_RFENCE_REMOTE_SFENCE_VMA, SBI_EXT_RFENCE_REMOTE_SFENCE_VMA_ASID, + SBI_EXT_RFENCE_REMOTE_HFENCE_GVMA_VMID, + SBI_EXT_RFENCE_REMOTE_HFENCE_GVMA, + SBI_EXT_RFENCE_REMOTE_HFENCE_VVMA_ASID, + SBI_EXT_RFENCE_REMOTE_HFENCE_VVMA, +}; + +enum sbi_ext_hsm_fid { + SBI_EXT_HSM_HART_START = 0, + SBI_EXT_HSM_HART_STOP, + SBI_EXT_HSM_HART_STATUS, +}; + +enum sbi_hsm_hart_status { + SBI_HSM_HART_STATUS_STARTED = 0, + SBI_HSM_HART_STATUS_STOPPED, + SBI_HSM_HART_STATUS_START_PENDING, + SBI_HSM_HART_STATUS_STOP_PENDING, +}; + +enum sbi_ext_srst_fid { + SBI_EXT_SRST_RESET = 0, +}; + +enum sbi_srst_reset_type { + SBI_SRST_RESET_TYPE_SHUTDOWN = 0, + SBI_SRST_RESET_TYPE_COLD_REBOOT, + SBI_SRST_RESET_TYPE_WARM_REBOOT, +}; + +enum sbi_srst_reset_reason { + SBI_SRST_RESET_REASON_NONE = 0, + SBI_SRST_RESET_REASON_SYS_FAILURE, }; #ifdef CONFIG_SBI_V01 From patchwork Wed Jul 21 16:33:04 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 1508354 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=PbzdUZzk; 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 4GVLks1WWRz9sRf for ; Thu, 22 Jul 2021 02:34:11 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id A559F8203B; Wed, 21 Jul 2021 18:34:02 +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="PbzdUZzk"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 9BDB982977; Wed, 21 Jul 2021 18:34:00 +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.17.21]) (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 D31608203B for ; Wed, 21 Jul 2021 18:33:57 +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=1626885202; bh=MGjzo46kSXEAbnO/yZTABVwFY8QY3wz/0mcuVDis3Po=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=PbzdUZzklRSh+YuCT/DwlZlNqFQ6tdsHFJOUw2rpyXfE+uDHkeQ6e38lRaqJidk9F hab2FHG1nYg5YtpS1oO1k3vZN85xAIeBeXOWxuVCKAlbetjqYVKvcx8SuK1vRnGhZd ZuPKYvLVFozLOUQh9nnNToS9uLy6INxnt+zLyiX0= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from workstation.fritz.box ([88.152.144.157]) by mail.gmx.net (mrgmx105 [212.227.17.174]) with ESMTPSA (Nemesis) id 1MgvrB-1lRxrL0pv3-00hKK6; Wed, 21 Jul 2021 18:33:22 +0200 From: Heinrich Schuchardt To: Rick Chen Cc: Leo , Alexander Graf , Bin Meng , Sean Anderson , Green Wan , =?utf-8?q?Marek_Beh=C3=BAn?= , Pragnesh Patel , Atish Patra , Ley Foon Tan , Chee Hong Ang , Simon Glass , Siew Chin Lim , Sebastian Reichel , u-boot@lists.denx.de, Heinrich Schuchardt Subject: [PATCH v2 2/3] cmd/sbi: use constants instead of numerical values Date: Wed, 21 Jul 2021 18:33:04 +0200 Message-Id: <20210721163305.74945-3-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210721163305.74945-1-xypron.glpk@gmx.de> References: <20210721163305.74945-1-xypron.glpk@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:uZexIO1BNYwgSfBg3cNSBYFpkT7MZIAfBccnyEUtHibsv5Lx2vZ mCEETYVVqY4SXmJCqvTbHdz5JXAVJY+q/X6F4VtyrIvQOmAm6MFkeMEXCHEXzsjeV9LSPOb OfEoL9NKRH1sSqx3yyktCmIZ2PFFBEykoohI/+zG+cJrczGGKjKjruAOyTgaeexHSkvimWW 0+OalzzNWWSQed2k1Rgfg== X-UI-Out-Filterresults: notjunk:1;V03:K0:mRnVL2CtfCs=:SfBcaynGHHCuDBhW/xZAoa 3MApA3GQopFN+pqOXwPVQuYLMGwtD8vKq2GFZPm4yA9D1Fmky9MMkvRTeMQbgP/QDUaGDvogX CR/yVLySy54SYeYv6ewdS9z3lGWKg45MuD/L2KByIhMJNAceKcJbRcpZy9q9R40/vXYkn7DAT j9KFfUQNIWj+IMX5XILCxnd1+DjBqGfKxVbJ/rCQ2sHg4EaDwvvSgHcYm2ibMM/BXtXSKdy3K rNyjPt46r8MuO1lS/tqxSdv9W/O8fG7xopGZV6DwwWTW/279qQlUuPYUd12UaMEiJoFBVfM3W gJnXoAQ7A1vdtnn6mKBRawP/VPqlT7gWaqHAr6itEbHH7gRL9jghAWl0mbhD+9ohEaX0uO4Gt YinaXjpq+WVJ3eYqJgTvOal8Nr9/gbcqW92gb/4Nv2RpHWmuTMQ2o8uzhjDefNkd+xXJ5F8Y2 6GEQhoFPeKBQBxHHqCEG0MjVKJpbujFGyNrIQs1GGZVOGYB8tIbAngXsJhsghVKN1btvLErem LcDcAOu9QzOyosbp2tHI6Eqk5in0CDb2KVLZs2IehyRe35VVxNiVAML3ADYEsqet30cb+v5Ia MM4rS1RzylDWH2YefWNGHEZltR2WuYky0SjWDE3xh2MDwN+XLrAH7+V44xUwGGg+a6O9SiDUo iXieHl8CVihGa7bt6rNOmcBYqjGrPDI+sRKGbiXkg06RiNf35RC+JX4PEbOLaieBJdoHzczgJ KmI9EsOpSlzTFR/8rjsMDOSNQk7z4zmItkaljaX9x16bg1IsU5ONLEZZw7Ad4/JKT6CBaRR90 m1PNLAaidPc5Idq3AixW287GZmnsUKvXYyfXtXPFKZCMHikar/wbDzWfblzI7hDvDAzuBbZWl m2OCoQVqzKuFrJtiKHs9OUXpdu/UkpAxmL6LUJtY/d0YGKI3xC0BsiueHVfpuADsXRKuDBHV/ WGUB0IOdWGPaTftjkiwtApQo6l38/21oaffJeoxdr1VacOkt/Ex6MxqgrBSTJ10OdqQgCWyKL lvODmcj977hE+KJ+cHo9QNALUWvlAMvm6w5IM6TRoYHf3AASzes4GXSiASq95GUfNNr6lOyhV EZRK7AmZKrTXJxv5YRWrkdAm4VJcIWqOr86 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 Use constants for extension IDs. Signed-off-by: Heinrich Schuchardt Reviewed-by: Sean Anderson Reviewed-by: Leo Yu-Chi Liang --- v2: no change --- cmd/riscv/sbi.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) -- 2.30.2 diff --git a/cmd/riscv/sbi.c b/cmd/riscv/sbi.c index 90c0811e14..65a2c93290 100644 --- a/cmd/riscv/sbi.c +++ b/cmd/riscv/sbi.c @@ -29,21 +29,21 @@ static struct sbi_imp implementations[] = { }; static struct sbi_ext extensions[] = { - { 0x00000000, "sbi_set_timer" }, - { 0x00000001, "sbi_console_putchar" }, - { 0x00000002, "sbi_console_getchar" }, - { 0x00000003, "sbi_clear_ipi" }, - { 0x00000004, "sbi_send_ipi" }, - { 0x00000005, "sbi_remote_fence_i" }, - { 0x00000006, "sbi_remote_sfence_vma" }, - { 0x00000007, "sbi_remote_sfence_vma_asid" }, - { 0x00000008, "sbi_shutdown" }, - { 0x00000010, "SBI Base Functionality" }, - { 0x54494D45, "Timer Extension" }, - { 0x00735049, "IPI Extension" }, - { 0x52464E43, "RFENCE Extension" }, - { 0x0048534D, "Hart State Management Extension" }, - { 0x53525354, "System Reset Extension" }, + { 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_BASE, "SBI Base Functionality" }, + { SBI_EXT_TIME, "Timer Extension" }, + { SBI_EXT_IPI, "IPI Extension" }, + { SBI_EXT_RFENCE, "RFENCE Extension" }, + { SBI_EXT_HSM, "Hart State Management Extension" }, + { SBI_EXT_SRST, "System Reset Extension" }, }; static int do_sbi(struct cmd_tbl *cmdtp, int flag, int argc, From patchwork Wed Jul 21 16:33:05 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 1508357 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=Fvsed3si; 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 4GVLlL3p8pz9sRf for ; Thu, 22 Jul 2021 02:34:38 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id B17C082C65; Wed, 21 Jul 2021 18:34: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="Fvsed3si"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id CAF9482C5E; Wed, 21 Jul 2021 18:34:12 +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_H4,RCVD_IN_MSPIKE_WL, SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (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 6273082BE7 for ; Wed, 21 Jul 2021 18:34:06 +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=1626885203; bh=AQBPhL++v/6iwp6IpH5a8TiEqeDpy3o2P1/5OPBjpsQ=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=Fvsed3siSPwQpop3qQfcjDSZ6cKqtKbZ4HNd0wAKcCwYbVG1rJjxzp9Tx4mH9qzTw i2DQfvusbTSMQHhgFDrNvyjPLCwpcGY+DgD4GkSu6w5jjHPbIcbVfaSrjZ66IhYkUJ nBDsGb6EJhXc0Ko7OOXH2H6wW2tTIpAXWi/Uk5bY= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from workstation.fritz.box ([88.152.144.157]) by mail.gmx.net (mrgmx105 [212.227.17.174]) with ESMTPSA (Nemesis) id 1MkYbu-1lNrGm2yBa-00m1QL; Wed, 21 Jul 2021 18:33:22 +0200 From: Heinrich Schuchardt To: Rick Chen Cc: Leo , Alexander Graf , Bin Meng , Sean Anderson , Green Wan , =?utf-8?q?Marek_Beh=C3=BAn?= , Pragnesh Patel , Atish Patra , Ley Foon Tan , Chee Hong Ang , Simon Glass , Siew Chin Lim , Sebastian Reichel , u-boot@lists.denx.de, Heinrich Schuchardt Subject: [PATCH v2 3/3] sysreset: provide SBI based sysreset driver Date: Wed, 21 Jul 2021 18:33:05 +0200 Message-Id: <20210721163305.74945-4-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210721163305.74945-1-xypron.glpk@gmx.de> References: <20210721163305.74945-1-xypron.glpk@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:V6kNTUTPikU/2208EugAkasguOlsDomtnwk306wey3HSWiW5ICA wQn25/zGZvF7BVCkYiyh090RgLgFJ4r4rtIDyJwWL4ey+S1m5i32LXzgngz5J6nPLjjv64n aRcdWE9jXQ2gZPLRUEdPmoOkSrw/f/LNBd6kSaJfzd/NKJ8RpgqggtpdPVHP+2PKMBua92+ 2RRyjcvKGHDL0gPSwebjg== X-UI-Out-Filterresults: notjunk:1;V03:K0:SBqfhZvOkFY=:lQj7oK4DBIuz/kDLV+8gBW j7hdlZL0sRjer/YmGwBmUYjw5xmuc3uzrbcZgBTkrlSvWBo1uUPLuXsP09F9RQyOJftun03wc hOHRnaki3xkPvdjRVqOJmqOnsBv1kdm6Exb4C24zwpuL3DwCaRcpj+kzLeTLnLV9k+OayBSMb 2XBzHtFWPPMn+cIndkuWGKqz+dC0DbxdteNwWMqgxUdE1bx5s9ZwFRFVuaDwWM1XhT2BMsirk yCKfyQEJR7ocVYlQvCQ1FrrPY7R6JJYi+69/4jDjxomAvuD9wtTIPDRXX8yjN9pjJ2H8IaZ5d F/H2Btu8joLl5u7UzFDw+8YTT1zMU4jteLk3VfOpqxXE/HMs6eundCm/fct9DURA9eFUZhTmP PG4GiAJY+N5i7II3qs+cBcUd9rkDcLfJS5oi0gv6lResfQKr8jUw741xxFJ1DmhF7+YReHHXZ OJwfL7eMu5dCtH+B3/ajghJXX7HZ405CNlZJK2kPkWZ68UaihHFmXT7RqPZOjNJQVDe986mBA LeocEjsTRjoVaDkI1CfKKv9JF/1QDmPWB6pYDl96gsAENrEjCyDFdcFCqZyQf5vG1It02wDHl hVRRF6ISuD2kBUXpl3OywBCgaBam0cl+ia3FsPDHJ4zOmnfCZsncWT5b2bjZ4aOvlZBT+0+GH xTo3+TIFUH2r6FDMegR+TnolhqveygOLILucEFgNn9qeMiIFaYL+COlQxALx/0xjTpFq5j83K zpu344Cxehmhy5tORntfTVcF6oP3rlgULY4sj0kL308YKwWUALtkBRKcIHw7hKETfgdeAr5xW XPJ/wIQZdbx+YBXugdfkmanH9sFPQD46EtRYFFDbtVnW8PmT1xUI6JWRAodZAcV7RJkFU7/ZH eATVMJeopHedSAX2jmO2NoGGve2gv3B6Xcul5jQcnXQhZJHBgYcidameuc9MQaCmP/xfLejOy qL2OtPEGRcpMIF13yT/+xQR0O3b0jZSM/Nn5VL351W5gmkfIdMzKAEQt8RWSro/N6Z+E7QFps Oc/Gihg9fJuuBfUn+5vmzfbkqudK0F5uiOuSBjyE/gMkAyhyalWSZd4cpVE/cq0qrQTBHXHjT jX6XHtsQA60RugDf2g8/q0fg1B+bumIOKaL 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 sysreset driver using the SBI system reset extension. Signed-off-by: Heinrich Schuchardt Reviewed-by: Sean Anderson Reviewed-by: Leo Yu-Chi Liang --- v2: remove a superfluous check in sbi_sysreset_request() --- MAINTAINERS | 1 + arch/riscv/cpu/cpu.c | 13 ++++- arch/riscv/include/asm/sbi.h | 1 + arch/riscv/lib/sbi.c | 21 ++++++-- drivers/sysreset/Kconfig | 11 ++++ drivers/sysreset/Makefile | 1 + drivers/sysreset/sysreset_sbi.c | 96 +++++++++++++++++++++++++++++++++ lib/efi_loader/Kconfig | 2 +- 8 files changed, 140 insertions(+), 6 deletions(-) create mode 100644 drivers/sysreset/sysreset_sbi.c -- 2.30.2 diff --git a/MAINTAINERS b/MAINTAINERS index a6b49b54b9..29ac9450f5 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1012,6 +1012,7 @@ T: git https://source.denx.de/u-boot/custodians/u-boot-riscv.git F: arch/riscv/ F: cmd/riscv/ F: doc/usage/sbi.rst +F: drivers/sysreset/sysreset_sbi.c F: drivers/timer/andes_plmt_timer.c F: drivers/timer/sifive_clint_timer.c F: tools/prelink-riscv.c diff --git a/arch/riscv/cpu/cpu.c b/arch/riscv/cpu/cpu.c index c894ac10b5..8e49b6d736 100644 --- a/arch/riscv/cpu/cpu.c +++ b/arch/riscv/cpu/cpu.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -138,7 +139,17 @@ int arch_cpu_init_dm(void) int arch_early_init_r(void) { - return riscv_cpu_probe(); + int ret; + + ret = riscv_cpu_probe(); + if (ret) + return ret; + + if (IS_ENABLED(CONFIG_SYSRESET_SBI)) + device_bind_driver(gd->dm_root, "sbi-sysreset", + "sbi-sysreset", NULL); + + return 0; } /** diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h index 39d5a022e0..b702fca176 100644 --- a/arch/riscv/include/asm/sbi.h +++ b/arch/riscv/include/asm/sbi.h @@ -150,5 +150,6 @@ void sbi_set_timer(uint64_t stime_value); long sbi_get_spec_version(void); int sbi_get_impl_id(void); int sbi_probe_extension(int ext); +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 77845a73ca..8508041f2a 100644 --- a/arch/riscv/lib/sbi.c +++ b/arch/riscv/lib/sbi.c @@ -8,13 +8,14 @@ */ #include +#include #include #include -struct sbiret sbi_ecall(int ext, int fid, unsigned long arg0, - unsigned long arg1, unsigned long arg2, - unsigned long arg3, unsigned long arg4, - unsigned long arg5) +struct sbiret __efi_runtime sbi_ecall(int ext, int fid, unsigned long arg0, + unsigned long arg1, unsigned long arg2, + unsigned long arg3, unsigned long arg4, + unsigned long arg5) { struct sbiret ret; @@ -108,6 +109,18 @@ int sbi_probe_extension(int extid) return -ENOTSUPP; } +/** + * sbi_srst_reset() - invoke system reset extension + * + * @type: type of reset + * @reason: reason for reset + */ +void __efi_runtime sbi_srst_reset(unsigned long type, unsigned long reason) +{ + sbi_ecall(SBI_EXT_SRST, SBI_EXT_SRST_RESET, type, reason, + 0, 0, 0, 0); +} + #ifdef CONFIG_SBI_V01 /** diff --git a/drivers/sysreset/Kconfig b/drivers/sysreset/Kconfig index ac77ffbc8b..e095951166 100644 --- a/drivers/sysreset/Kconfig +++ b/drivers/sysreset/Kconfig @@ -85,6 +85,17 @@ config SYSRESET_PSCI Enable PSCI SYSTEM_RESET function call. To use this, PSCI firmware must be running on your system. +config SYSRESET_SBI + bool "Enable support for SBI System Reset" + depends on RISCV_SMODE && SBI_V02 + select SYSRESET_CMD_POWEROFF if CMD_POWEROFF + help + Enable system reset and poweroff via the SBI system reset extension. + If the SBI implementation provides the extension, is board specific. + The extension was introduced in version 0.3 of the SBI specification. + The SBI system reset driver supports the UEFI ResetSystem() service + at runtime. + config SYSRESET_SOCFPGA bool "Enable support for Intel SOCFPGA family" depends on ARCH_SOCFPGA && (TARGET_SOCFPGA_GEN5 || TARGET_SOCFPGA_ARRIA10) diff --git a/drivers/sysreset/Makefile b/drivers/sysreset/Makefile index de81c399d7..8e00be0779 100644 --- a/drivers/sysreset/Makefile +++ b/drivers/sysreset/Makefile @@ -13,6 +13,7 @@ obj-$(CONFIG_SYSRESET_MPC83XX) += sysreset_mpc83xx.o obj-$(CONFIG_SYSRESET_MICROBLAZE) += sysreset_microblaze.o obj-$(CONFIG_SYSRESET_OCTEON) += sysreset_octeon.o obj-$(CONFIG_SYSRESET_PSCI) += sysreset_psci.o +obj-$(CONFIG_SYSRESET_SBI) += sysreset_sbi.o obj-$(CONFIG_SYSRESET_SOCFPGA) += sysreset_socfpga.o obj-$(CONFIG_SYSRESET_SOCFPGA_SOC64) += sysreset_socfpga_soc64.o obj-$(CONFIG_SYSRESET_TI_SCI) += sysreset-ti-sci.o diff --git a/drivers/sysreset/sysreset_sbi.c b/drivers/sysreset/sysreset_sbi.c new file mode 100644 index 0000000000..fec5a66515 --- /dev/null +++ b/drivers/sysreset/sysreset_sbi.c @@ -0,0 +1,96 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2021, Heinrich Schuchardt + */ + +#include +#include +#include +#include +#include +#include +#include + +static long __efi_runtime_data have_reset; + +static int sbi_sysreset_request(struct udevice *dev, enum sysreset_t type) +{ + enum sbi_srst_reset_type reset_type; + + switch (type) { + case SYSRESET_WARM: + reset_type = SBI_SRST_RESET_TYPE_WARM_REBOOT; + break; + case SYSRESET_COLD: + reset_type = SBI_SRST_RESET_TYPE_COLD_REBOOT; + break; + case SYSRESET_POWER_OFF: + reset_type = SBI_SRST_RESET_TYPE_SHUTDOWN; + break; + default: + log_err("SBI has no system reset extension\n"); + return -ENOSYS; + } + + sbi_srst_reset(reset_type, SBI_SRST_RESET_REASON_NONE); + + return -EINPROGRESS; +} + +efi_status_t efi_reset_system_init(void) +{ + return EFI_SUCCESS; +} + +void __efi_runtime EFIAPI efi_reset_system(enum efi_reset_type type, + efi_status_t reset_status, + unsigned long data_size, + void *reset_data) +{ + enum sbi_srst_reset_type reset_type; + enum sbi_srst_reset_reason reset_reason; + + if (have_reset) + switch (type) { + case SYSRESET_COLD: + reset_type = SBI_SRST_RESET_TYPE_COLD_REBOOT; + break; + case SYSRESET_POWER_OFF: + reset_type = SBI_SRST_RESET_TYPE_SHUTDOWN; + break; + default: + reset_type = SBI_SRST_RESET_TYPE_WARM_REBOOT; + break; + } + + if (reset_status == EFI_SUCCESS) + reset_reason = SBI_SRST_RESET_REASON_NONE; + else + reset_reason = SBI_SRST_RESET_REASON_SYS_FAILURE; + + sbi_srst_reset(reset_type, reset_reason); + + while (1) + ; +} + +static int sbi_sysreset_probe(struct udevice *dev) +{ + have_reset = sbi_probe_extension(SBI_EXT_SRST); + if (have_reset) + return 0; + + log_warning("SBI has no system reset extension\n"); + return -ENOENT; +} + +static struct sysreset_ops sbi_sysreset_ops = { + .request = sbi_sysreset_request, +}; + +U_BOOT_DRIVER(sbi_sysreset) = { + .name = "sbi-sysreset", + .id = UCLASS_SYSRESET, + .ops = &sbi_sysreset_ops, + .probe = sbi_sysreset_probe, +}; diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig index dacc3b5881..36985fce2c 100644 --- a/lib/efi_loader/Kconfig +++ b/lib/efi_loader/Kconfig @@ -297,7 +297,7 @@ config EFI_HAVE_RUNTIME_RESET bool default y depends on ARCH_BCM283X || FSL_LAYERSCAPE || PSCI_RESET || \ - SANDBOX || SYSRESET_X86 + SANDBOX || SYSRESET_SBI || SYSRESET_X86 config EFI_GRUB_ARM32_WORKAROUND bool "Workaround for GRUB on 32bit ARM"