All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v7 0/1] SBI SRST extension support
@ 2021-06-09 12:13 ` Anup Patel
  0 siblings, 0 replies; 30+ messages in thread
From: Anup Patel @ 2021-06-09 12:13 UTC (permalink / raw)
  To: Palmer Dabbelt, Palmer Dabbelt, Paul Walmsley, Albert Ou
  Cc: Atish Patra, Alistair Francis, Anup Patel, linux-riscv,
	linux-kernel, Anup Patel

This series adds SBI SRST extension support to Linux RISC-V.

These patches can be found in riscv_sbi_srst_v7 branch at:
https://github.com/avpatel/linux

Changes since v6:
 - Dropped PATCH1 of v6 series because it's already merged
 - Rebased on Linux-5.13-rc5

Changes since v5:
 - Factored-out pr_info() related change into separate patch
 - Added cover letter

Changes since v4:
 - We should compare both major and minor number to ensure that
   SBI spec version is 0.3 (or above) for detecting SRST extension.

Changes since v3:
 - Rebased on Linux-5.12-rc1
 - Check SBI spec version when probing for SRST extension

Changes since v2:
 - Rebased on Linux-5.10-rc5
 - Updated patch as-per SBI SRST extension available in the latest
   SBI v0.3-draft specification

Changes since v1:
 - Updated patch as-per latest SBI SRST extension draft spec where
   we have only one SBI call with "reset_type" parameter

Anup Patel (1):
  RISC-V: Use SBI SRST extension when available

 arch/riscv/include/asm/sbi.h | 24 ++++++++++++++++++++++++
 arch/riscv/kernel/sbi.c      | 35 +++++++++++++++++++++++++++++++++++
 2 files changed, 59 insertions(+)

-- 
2.25.1


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

* [PATCH v7 0/1] SBI SRST extension support
@ 2021-06-09 12:13 ` Anup Patel
  0 siblings, 0 replies; 30+ messages in thread
From: Anup Patel @ 2021-06-09 12:13 UTC (permalink / raw)
  To: Palmer Dabbelt, Palmer Dabbelt, Paul Walmsley, Albert Ou
  Cc: Atish Patra, Alistair Francis, Anup Patel, linux-riscv,
	linux-kernel, Anup Patel

This series adds SBI SRST extension support to Linux RISC-V.

These patches can be found in riscv_sbi_srst_v7 branch at:
https://github.com/avpatel/linux

Changes since v6:
 - Dropped PATCH1 of v6 series because it's already merged
 - Rebased on Linux-5.13-rc5

Changes since v5:
 - Factored-out pr_info() related change into separate patch
 - Added cover letter

Changes since v4:
 - We should compare both major and minor number to ensure that
   SBI spec version is 0.3 (or above) for detecting SRST extension.

Changes since v3:
 - Rebased on Linux-5.12-rc1
 - Check SBI spec version when probing for SRST extension

Changes since v2:
 - Rebased on Linux-5.10-rc5
 - Updated patch as-per SBI SRST extension available in the latest
   SBI v0.3-draft specification

Changes since v1:
 - Updated patch as-per latest SBI SRST extension draft spec where
   we have only one SBI call with "reset_type" parameter

Anup Patel (1):
  RISC-V: Use SBI SRST extension when available

 arch/riscv/include/asm/sbi.h | 24 ++++++++++++++++++++++++
 arch/riscv/kernel/sbi.c      | 35 +++++++++++++++++++++++++++++++++++
 2 files changed, 59 insertions(+)

-- 
2.25.1


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

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

* [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
  2021-06-09 12:13 ` Anup Patel
@ 2021-06-09 12:13   ` Anup Patel
  -1 siblings, 0 replies; 30+ messages in thread
From: Anup Patel @ 2021-06-09 12:13 UTC (permalink / raw)
  To: Palmer Dabbelt, Palmer Dabbelt, Paul Walmsley, Albert Ou
  Cc: Atish Patra, Alistair Francis, Anup Patel, linux-riscv,
	linux-kernel, Anup Patel

The SBI SRST extension provides a standard way to poweroff and
reboot the system irrespective to whether Linux RISC-V S-mode
is running natively (HS-mode) or inside Guest/VM (VS-mode).

The SBI SRST extension is available in the SBI v0.3 specification.
(Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)

This patch extends Linux RISC-V SBI implementation to detect
and use SBI SRST extension.

Signed-off-by: Anup Patel <anup.patel@wdc.com>
Reviewed-by: Atish Patra <atish.patra@wdc.com>
---
 arch/riscv/include/asm/sbi.h | 24 ++++++++++++++++++++++++
 arch/riscv/kernel/sbi.c      | 35 +++++++++++++++++++++++++++++++++++
 2 files changed, 59 insertions(+)

diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h
index 0d42693cb65e..289621da4a2a 100644
--- a/arch/riscv/include/asm/sbi.h
+++ b/arch/riscv/include/asm/sbi.h
@@ -27,6 +27,7 @@ enum sbi_ext_id {
 	SBI_EXT_IPI = 0x735049,
 	SBI_EXT_RFENCE = 0x52464E43,
 	SBI_EXT_HSM = 0x48534D,
+	SBI_EXT_SRST = 0x53525354,
 };
 
 enum sbi_ext_base_fid {
@@ -70,6 +71,21 @@ enum sbi_hsm_hart_status {
 	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,
+};
+
 #define SBI_SPEC_VERSION_DEFAULT	0x1
 #define SBI_SPEC_VERSION_MAJOR_SHIFT	24
 #define SBI_SPEC_VERSION_MAJOR_MASK	0x7f
@@ -148,6 +164,14 @@ static inline unsigned long sbi_minor_version(void)
 	return sbi_spec_version & SBI_SPEC_VERSION_MINOR_MASK;
 }
 
+/* Make SBI version */
+static inline unsigned long sbi_mk_version(unsigned long major,
+					    unsigned long minor)
+{
+	return ((major & SBI_SPEC_VERSION_MAJOR_MASK) <<
+		SBI_SPEC_VERSION_MAJOR_SHIFT) | minor;
+}
+
 int sbi_err_map_linux_errno(int err);
 #else /* CONFIG_RISCV_SBI */
 static inline int sbi_remote_fence_i(const unsigned long *hart_mask) { return -1; }
diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c
index 7402a417f38e..9a84f0cb5175 100644
--- a/arch/riscv/kernel/sbi.c
+++ b/arch/riscv/kernel/sbi.c
@@ -7,6 +7,7 @@
 
 #include <linux/init.h>
 #include <linux/pm.h>
+#include <linux/reboot.h>
 #include <asm/sbi.h>
 #include <asm/smp.h>
 
@@ -501,6 +502,32 @@ int sbi_remote_hfence_vvma_asid(const unsigned long *hart_mask,
 }
 EXPORT_SYMBOL(sbi_remote_hfence_vvma_asid);
 
+static void sbi_srst_reset(unsigned long type, unsigned long reason)
+{
+	sbi_ecall(SBI_EXT_SRST, SBI_EXT_SRST_RESET, type, reason,
+		  0, 0, 0, 0);
+	pr_warn("%s: type=0x%lx reason=0x%lx failed\n",
+		__func__, type, reason);
+}
+
+static int sbi_srst_reboot(struct notifier_block *this,
+			   unsigned long mode, void *cmd)
+{
+	sbi_srst_reset((mode == REBOOT_WARM || mode == REBOOT_SOFT) ?
+		       SBI_SRST_RESET_TYPE_WARM_REBOOT :
+		       SBI_SRST_RESET_TYPE_COLD_REBOOT,
+		       SBI_SRST_RESET_REASON_NONE);
+	return NOTIFY_DONE;
+}
+
+static struct notifier_block sbi_srst_reboot_nb;
+
+static void sbi_srst_power_off(void)
+{
+	sbi_srst_reset(SBI_SRST_RESET_TYPE_SHUTDOWN,
+		       SBI_SRST_RESET_REASON_NONE);
+}
+
 /**
  * sbi_probe_extension() - Check if an SBI extension ID is supported or not.
  * @extid: The extension ID to be probed.
@@ -608,6 +635,14 @@ void __init sbi_init(void)
 		} else {
 			__sbi_rfence	= __sbi_rfence_v01;
 		}
+		if ((sbi_spec_version >= sbi_mk_version(0, 3)) &&
+		    (sbi_probe_extension(SBI_EXT_SRST) > 0)) {
+			pr_info("SBI SRST extension detected\n");
+			pm_power_off = sbi_srst_power_off;
+			sbi_srst_reboot_nb.notifier_call = sbi_srst_reboot;
+			sbi_srst_reboot_nb.priority = 192;
+			register_restart_handler(&sbi_srst_reboot_nb);
+		}
 	} else {
 		__sbi_set_timer = __sbi_set_timer_v01;
 		__sbi_send_ipi	= __sbi_send_ipi_v01;
-- 
2.25.1


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

* [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
@ 2021-06-09 12:13   ` Anup Patel
  0 siblings, 0 replies; 30+ messages in thread
From: Anup Patel @ 2021-06-09 12:13 UTC (permalink / raw)
  To: Palmer Dabbelt, Palmer Dabbelt, Paul Walmsley, Albert Ou
  Cc: Atish Patra, Alistair Francis, Anup Patel, linux-riscv,
	linux-kernel, Anup Patel

The SBI SRST extension provides a standard way to poweroff and
reboot the system irrespective to whether Linux RISC-V S-mode
is running natively (HS-mode) or inside Guest/VM (VS-mode).

The SBI SRST extension is available in the SBI v0.3 specification.
(Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)

This patch extends Linux RISC-V SBI implementation to detect
and use SBI SRST extension.

Signed-off-by: Anup Patel <anup.patel@wdc.com>
Reviewed-by: Atish Patra <atish.patra@wdc.com>
---
 arch/riscv/include/asm/sbi.h | 24 ++++++++++++++++++++++++
 arch/riscv/kernel/sbi.c      | 35 +++++++++++++++++++++++++++++++++++
 2 files changed, 59 insertions(+)

diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h
index 0d42693cb65e..289621da4a2a 100644
--- a/arch/riscv/include/asm/sbi.h
+++ b/arch/riscv/include/asm/sbi.h
@@ -27,6 +27,7 @@ enum sbi_ext_id {
 	SBI_EXT_IPI = 0x735049,
 	SBI_EXT_RFENCE = 0x52464E43,
 	SBI_EXT_HSM = 0x48534D,
+	SBI_EXT_SRST = 0x53525354,
 };
 
 enum sbi_ext_base_fid {
@@ -70,6 +71,21 @@ enum sbi_hsm_hart_status {
 	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,
+};
+
 #define SBI_SPEC_VERSION_DEFAULT	0x1
 #define SBI_SPEC_VERSION_MAJOR_SHIFT	24
 #define SBI_SPEC_VERSION_MAJOR_MASK	0x7f
@@ -148,6 +164,14 @@ static inline unsigned long sbi_minor_version(void)
 	return sbi_spec_version & SBI_SPEC_VERSION_MINOR_MASK;
 }
 
+/* Make SBI version */
+static inline unsigned long sbi_mk_version(unsigned long major,
+					    unsigned long minor)
+{
+	return ((major & SBI_SPEC_VERSION_MAJOR_MASK) <<
+		SBI_SPEC_VERSION_MAJOR_SHIFT) | minor;
+}
+
 int sbi_err_map_linux_errno(int err);
 #else /* CONFIG_RISCV_SBI */
 static inline int sbi_remote_fence_i(const unsigned long *hart_mask) { return -1; }
diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c
index 7402a417f38e..9a84f0cb5175 100644
--- a/arch/riscv/kernel/sbi.c
+++ b/arch/riscv/kernel/sbi.c
@@ -7,6 +7,7 @@
 
 #include <linux/init.h>
 #include <linux/pm.h>
+#include <linux/reboot.h>
 #include <asm/sbi.h>
 #include <asm/smp.h>
 
@@ -501,6 +502,32 @@ int sbi_remote_hfence_vvma_asid(const unsigned long *hart_mask,
 }
 EXPORT_SYMBOL(sbi_remote_hfence_vvma_asid);
 
+static void sbi_srst_reset(unsigned long type, unsigned long reason)
+{
+	sbi_ecall(SBI_EXT_SRST, SBI_EXT_SRST_RESET, type, reason,
+		  0, 0, 0, 0);
+	pr_warn("%s: type=0x%lx reason=0x%lx failed\n",
+		__func__, type, reason);
+}
+
+static int sbi_srst_reboot(struct notifier_block *this,
+			   unsigned long mode, void *cmd)
+{
+	sbi_srst_reset((mode == REBOOT_WARM || mode == REBOOT_SOFT) ?
+		       SBI_SRST_RESET_TYPE_WARM_REBOOT :
+		       SBI_SRST_RESET_TYPE_COLD_REBOOT,
+		       SBI_SRST_RESET_REASON_NONE);
+	return NOTIFY_DONE;
+}
+
+static struct notifier_block sbi_srst_reboot_nb;
+
+static void sbi_srst_power_off(void)
+{
+	sbi_srst_reset(SBI_SRST_RESET_TYPE_SHUTDOWN,
+		       SBI_SRST_RESET_REASON_NONE);
+}
+
 /**
  * sbi_probe_extension() - Check if an SBI extension ID is supported or not.
  * @extid: The extension ID to be probed.
@@ -608,6 +635,14 @@ void __init sbi_init(void)
 		} else {
 			__sbi_rfence	= __sbi_rfence_v01;
 		}
+		if ((sbi_spec_version >= sbi_mk_version(0, 3)) &&
+		    (sbi_probe_extension(SBI_EXT_SRST) > 0)) {
+			pr_info("SBI SRST extension detected\n");
+			pm_power_off = sbi_srst_power_off;
+			sbi_srst_reboot_nb.notifier_call = sbi_srst_reboot;
+			sbi_srst_reboot_nb.priority = 192;
+			register_restart_handler(&sbi_srst_reboot_nb);
+		}
 	} else {
 		__sbi_set_timer = __sbi_set_timer_v01;
 		__sbi_send_ipi	= __sbi_send_ipi_v01;
-- 
2.25.1


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
  2021-06-09 12:13   ` Anup Patel
@ 2021-06-22  4:46     ` Anup Patel
  -1 siblings, 0 replies; 30+ messages in thread
From: Anup Patel @ 2021-06-22  4:46 UTC (permalink / raw)
  To: Anup Patel
  Cc: Palmer Dabbelt, Palmer Dabbelt, Paul Walmsley, Albert Ou,
	Atish Patra, Alistair Francis, linux-riscv,
	linux-kernel@vger.kernel.org List

Hi Palmer,

On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
>
> The SBI SRST extension provides a standard way to poweroff and
> reboot the system irrespective to whether Linux RISC-V S-mode
> is running natively (HS-mode) or inside Guest/VM (VS-mode).
>
> The SBI SRST extension is available in the SBI v0.3 specification.
> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)

Can you please consider this patch for Linux-5.14-rc1 ?

The SBI v0.3 spec is already frozen and this patch has been
floating on LKML for quite a few months now.

Regards,
Anup

>
> This patch extends Linux RISC-V SBI implementation to detect
> and use SBI SRST extension.
>
> Signed-off-by: Anup Patel <anup.patel@wdc.com>
> Reviewed-by: Atish Patra <atish.patra@wdc.com>
> ---
>  arch/riscv/include/asm/sbi.h | 24 ++++++++++++++++++++++++
>  arch/riscv/kernel/sbi.c      | 35 +++++++++++++++++++++++++++++++++++
>  2 files changed, 59 insertions(+)
>
> diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h
> index 0d42693cb65e..289621da4a2a 100644
> --- a/arch/riscv/include/asm/sbi.h
> +++ b/arch/riscv/include/asm/sbi.h
> @@ -27,6 +27,7 @@ enum sbi_ext_id {
>         SBI_EXT_IPI = 0x735049,
>         SBI_EXT_RFENCE = 0x52464E43,
>         SBI_EXT_HSM = 0x48534D,
> +       SBI_EXT_SRST = 0x53525354,
>  };
>
>  enum sbi_ext_base_fid {
> @@ -70,6 +71,21 @@ enum sbi_hsm_hart_status {
>         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,
> +};
> +
>  #define SBI_SPEC_VERSION_DEFAULT       0x1
>  #define SBI_SPEC_VERSION_MAJOR_SHIFT   24
>  #define SBI_SPEC_VERSION_MAJOR_MASK    0x7f
> @@ -148,6 +164,14 @@ static inline unsigned long sbi_minor_version(void)
>         return sbi_spec_version & SBI_SPEC_VERSION_MINOR_MASK;
>  }
>
> +/* Make SBI version */
> +static inline unsigned long sbi_mk_version(unsigned long major,
> +                                           unsigned long minor)
> +{
> +       return ((major & SBI_SPEC_VERSION_MAJOR_MASK) <<
> +               SBI_SPEC_VERSION_MAJOR_SHIFT) | minor;
> +}
> +
>  int sbi_err_map_linux_errno(int err);
>  #else /* CONFIG_RISCV_SBI */
>  static inline int sbi_remote_fence_i(const unsigned long *hart_mask) { return -1; }
> diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c
> index 7402a417f38e..9a84f0cb5175 100644
> --- a/arch/riscv/kernel/sbi.c
> +++ b/arch/riscv/kernel/sbi.c
> @@ -7,6 +7,7 @@
>
>  #include <linux/init.h>
>  #include <linux/pm.h>
> +#include <linux/reboot.h>
>  #include <asm/sbi.h>
>  #include <asm/smp.h>
>
> @@ -501,6 +502,32 @@ int sbi_remote_hfence_vvma_asid(const unsigned long *hart_mask,
>  }
>  EXPORT_SYMBOL(sbi_remote_hfence_vvma_asid);
>
> +static void sbi_srst_reset(unsigned long type, unsigned long reason)
> +{
> +       sbi_ecall(SBI_EXT_SRST, SBI_EXT_SRST_RESET, type, reason,
> +                 0, 0, 0, 0);
> +       pr_warn("%s: type=0x%lx reason=0x%lx failed\n",
> +               __func__, type, reason);
> +}
> +
> +static int sbi_srst_reboot(struct notifier_block *this,
> +                          unsigned long mode, void *cmd)
> +{
> +       sbi_srst_reset((mode == REBOOT_WARM || mode == REBOOT_SOFT) ?
> +                      SBI_SRST_RESET_TYPE_WARM_REBOOT :
> +                      SBI_SRST_RESET_TYPE_COLD_REBOOT,
> +                      SBI_SRST_RESET_REASON_NONE);
> +       return NOTIFY_DONE;
> +}
> +
> +static struct notifier_block sbi_srst_reboot_nb;
> +
> +static void sbi_srst_power_off(void)
> +{
> +       sbi_srst_reset(SBI_SRST_RESET_TYPE_SHUTDOWN,
> +                      SBI_SRST_RESET_REASON_NONE);
> +}
> +
>  /**
>   * sbi_probe_extension() - Check if an SBI extension ID is supported or not.
>   * @extid: The extension ID to be probed.
> @@ -608,6 +635,14 @@ void __init sbi_init(void)
>                 } else {
>                         __sbi_rfence    = __sbi_rfence_v01;
>                 }
> +               if ((sbi_spec_version >= sbi_mk_version(0, 3)) &&
> +                   (sbi_probe_extension(SBI_EXT_SRST) > 0)) {
> +                       pr_info("SBI SRST extension detected\n");
> +                       pm_power_off = sbi_srst_power_off;
> +                       sbi_srst_reboot_nb.notifier_call = sbi_srst_reboot;
> +                       sbi_srst_reboot_nb.priority = 192;
> +                       register_restart_handler(&sbi_srst_reboot_nb);
> +               }
>         } else {
>                 __sbi_set_timer = __sbi_set_timer_v01;
>                 __sbi_send_ipi  = __sbi_send_ipi_v01;
> --
> 2.25.1
>

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
@ 2021-06-22  4:46     ` Anup Patel
  0 siblings, 0 replies; 30+ messages in thread
From: Anup Patel @ 2021-06-22  4:46 UTC (permalink / raw)
  To: Anup Patel
  Cc: Palmer Dabbelt, Palmer Dabbelt, Paul Walmsley, Albert Ou,
	Atish Patra, Alistair Francis, linux-riscv,
	linux-kernel@vger.kernel.org List

Hi Palmer,

On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
>
> The SBI SRST extension provides a standard way to poweroff and
> reboot the system irrespective to whether Linux RISC-V S-mode
> is running natively (HS-mode) or inside Guest/VM (VS-mode).
>
> The SBI SRST extension is available in the SBI v0.3 specification.
> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)

Can you please consider this patch for Linux-5.14-rc1 ?

The SBI v0.3 spec is already frozen and this patch has been
floating on LKML for quite a few months now.

Regards,
Anup

>
> This patch extends Linux RISC-V SBI implementation to detect
> and use SBI SRST extension.
>
> Signed-off-by: Anup Patel <anup.patel@wdc.com>
> Reviewed-by: Atish Patra <atish.patra@wdc.com>
> ---
>  arch/riscv/include/asm/sbi.h | 24 ++++++++++++++++++++++++
>  arch/riscv/kernel/sbi.c      | 35 +++++++++++++++++++++++++++++++++++
>  2 files changed, 59 insertions(+)
>
> diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h
> index 0d42693cb65e..289621da4a2a 100644
> --- a/arch/riscv/include/asm/sbi.h
> +++ b/arch/riscv/include/asm/sbi.h
> @@ -27,6 +27,7 @@ enum sbi_ext_id {
>         SBI_EXT_IPI = 0x735049,
>         SBI_EXT_RFENCE = 0x52464E43,
>         SBI_EXT_HSM = 0x48534D,
> +       SBI_EXT_SRST = 0x53525354,
>  };
>
>  enum sbi_ext_base_fid {
> @@ -70,6 +71,21 @@ enum sbi_hsm_hart_status {
>         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,
> +};
> +
>  #define SBI_SPEC_VERSION_DEFAULT       0x1
>  #define SBI_SPEC_VERSION_MAJOR_SHIFT   24
>  #define SBI_SPEC_VERSION_MAJOR_MASK    0x7f
> @@ -148,6 +164,14 @@ static inline unsigned long sbi_minor_version(void)
>         return sbi_spec_version & SBI_SPEC_VERSION_MINOR_MASK;
>  }
>
> +/* Make SBI version */
> +static inline unsigned long sbi_mk_version(unsigned long major,
> +                                           unsigned long minor)
> +{
> +       return ((major & SBI_SPEC_VERSION_MAJOR_MASK) <<
> +               SBI_SPEC_VERSION_MAJOR_SHIFT) | minor;
> +}
> +
>  int sbi_err_map_linux_errno(int err);
>  #else /* CONFIG_RISCV_SBI */
>  static inline int sbi_remote_fence_i(const unsigned long *hart_mask) { return -1; }
> diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c
> index 7402a417f38e..9a84f0cb5175 100644
> --- a/arch/riscv/kernel/sbi.c
> +++ b/arch/riscv/kernel/sbi.c
> @@ -7,6 +7,7 @@
>
>  #include <linux/init.h>
>  #include <linux/pm.h>
> +#include <linux/reboot.h>
>  #include <asm/sbi.h>
>  #include <asm/smp.h>
>
> @@ -501,6 +502,32 @@ int sbi_remote_hfence_vvma_asid(const unsigned long *hart_mask,
>  }
>  EXPORT_SYMBOL(sbi_remote_hfence_vvma_asid);
>
> +static void sbi_srst_reset(unsigned long type, unsigned long reason)
> +{
> +       sbi_ecall(SBI_EXT_SRST, SBI_EXT_SRST_RESET, type, reason,
> +                 0, 0, 0, 0);
> +       pr_warn("%s: type=0x%lx reason=0x%lx failed\n",
> +               __func__, type, reason);
> +}
> +
> +static int sbi_srst_reboot(struct notifier_block *this,
> +                          unsigned long mode, void *cmd)
> +{
> +       sbi_srst_reset((mode == REBOOT_WARM || mode == REBOOT_SOFT) ?
> +                      SBI_SRST_RESET_TYPE_WARM_REBOOT :
> +                      SBI_SRST_RESET_TYPE_COLD_REBOOT,
> +                      SBI_SRST_RESET_REASON_NONE);
> +       return NOTIFY_DONE;
> +}
> +
> +static struct notifier_block sbi_srst_reboot_nb;
> +
> +static void sbi_srst_power_off(void)
> +{
> +       sbi_srst_reset(SBI_SRST_RESET_TYPE_SHUTDOWN,
> +                      SBI_SRST_RESET_REASON_NONE);
> +}
> +
>  /**
>   * sbi_probe_extension() - Check if an SBI extension ID is supported or not.
>   * @extid: The extension ID to be probed.
> @@ -608,6 +635,14 @@ void __init sbi_init(void)
>                 } else {
>                         __sbi_rfence    = __sbi_rfence_v01;
>                 }
> +               if ((sbi_spec_version >= sbi_mk_version(0, 3)) &&
> +                   (sbi_probe_extension(SBI_EXT_SRST) > 0)) {
> +                       pr_info("SBI SRST extension detected\n");
> +                       pm_power_off = sbi_srst_power_off;
> +                       sbi_srst_reboot_nb.notifier_call = sbi_srst_reboot;
> +                       sbi_srst_reboot_nb.priority = 192;
> +                       register_restart_handler(&sbi_srst_reboot_nb);
> +               }
>         } else {
>                 __sbi_set_timer = __sbi_set_timer_v01;
>                 __sbi_send_ipi  = __sbi_send_ipi_v01;
> --
> 2.25.1
>

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
  2021-06-22  4:46     ` Anup Patel
@ 2021-07-06 20:27       ` Palmer Dabbelt
  -1 siblings, 0 replies; 30+ messages in thread
From: Palmer Dabbelt @ 2021-07-06 20:27 UTC (permalink / raw)
  To: anup
  Cc: Anup Patel, Paul Walmsley, aou, Atish Patra, Alistair Francis,
	linux-riscv, linux-kernel

On Mon, 21 Jun 2021 21:46:46 PDT (-0700), anup@brainfault.org wrote:
> Hi Palmer,
>
> On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
>>
>> The SBI SRST extension provides a standard way to poweroff and
>> reboot the system irrespective to whether Linux RISC-V S-mode
>> is running natively (HS-mode) or inside Guest/VM (VS-mode).
>>
>> The SBI SRST extension is available in the SBI v0.3 specification.
>> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
>
> Can you please consider this patch for Linux-5.14-rc1 ?
>
> The SBI v0.3 spec is already frozen and this patch has been
> floating on LKML for quite a few months now.

I didn't realize that SBI-0.3 had been frozed.  That link is to a RC, 
the cooresponding v0.3.0 tag isn't in that repo.  Can you give me a 
pointer to the frozen spec?

>
> Regards,
> Anup
>
>>
>> This patch extends Linux RISC-V SBI implementation to detect
>> and use SBI SRST extension.
>>
>> Signed-off-by: Anup Patel <anup.patel@wdc.com>
>> Reviewed-by: Atish Patra <atish.patra@wdc.com>
>> ---
>>  arch/riscv/include/asm/sbi.h | 24 ++++++++++++++++++++++++
>>  arch/riscv/kernel/sbi.c      | 35 +++++++++++++++++++++++++++++++++++
>>  2 files changed, 59 insertions(+)
>>
>> diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h
>> index 0d42693cb65e..289621da4a2a 100644
>> --- a/arch/riscv/include/asm/sbi.h
>> +++ b/arch/riscv/include/asm/sbi.h
>> @@ -27,6 +27,7 @@ enum sbi_ext_id {
>>         SBI_EXT_IPI = 0x735049,
>>         SBI_EXT_RFENCE = 0x52464E43,
>>         SBI_EXT_HSM = 0x48534D,
>> +       SBI_EXT_SRST = 0x53525354,
>>  };
>>
>>  enum sbi_ext_base_fid {
>> @@ -70,6 +71,21 @@ enum sbi_hsm_hart_status {
>>         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,
>> +};
>> +
>>  #define SBI_SPEC_VERSION_DEFAULT       0x1
>>  #define SBI_SPEC_VERSION_MAJOR_SHIFT   24
>>  #define SBI_SPEC_VERSION_MAJOR_MASK    0x7f
>> @@ -148,6 +164,14 @@ static inline unsigned long sbi_minor_version(void)
>>         return sbi_spec_version & SBI_SPEC_VERSION_MINOR_MASK;
>>  }
>>
>> +/* Make SBI version */
>> +static inline unsigned long sbi_mk_version(unsigned long major,
>> +                                           unsigned long minor)
>> +{
>> +       return ((major & SBI_SPEC_VERSION_MAJOR_MASK) <<
>> +               SBI_SPEC_VERSION_MAJOR_SHIFT) | minor;
>> +}
>> +
>>  int sbi_err_map_linux_errno(int err);
>>  #else /* CONFIG_RISCV_SBI */
>>  static inline int sbi_remote_fence_i(const unsigned long *hart_mask) { return -1; }
>> diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c
>> index 7402a417f38e..9a84f0cb5175 100644
>> --- a/arch/riscv/kernel/sbi.c
>> +++ b/arch/riscv/kernel/sbi.c
>> @@ -7,6 +7,7 @@
>>
>>  #include <linux/init.h>
>>  #include <linux/pm.h>
>> +#include <linux/reboot.h>
>>  #include <asm/sbi.h>
>>  #include <asm/smp.h>
>>
>> @@ -501,6 +502,32 @@ int sbi_remote_hfence_vvma_asid(const unsigned long *hart_mask,
>>  }
>>  EXPORT_SYMBOL(sbi_remote_hfence_vvma_asid);
>>
>> +static void sbi_srst_reset(unsigned long type, unsigned long reason)
>> +{
>> +       sbi_ecall(SBI_EXT_SRST, SBI_EXT_SRST_RESET, type, reason,
>> +                 0, 0, 0, 0);
>> +       pr_warn("%s: type=0x%lx reason=0x%lx failed\n",
>> +               __func__, type, reason);
>> +}
>> +
>> +static int sbi_srst_reboot(struct notifier_block *this,
>> +                          unsigned long mode, void *cmd)
>> +{
>> +       sbi_srst_reset((mode == REBOOT_WARM || mode == REBOOT_SOFT) ?
>> +                      SBI_SRST_RESET_TYPE_WARM_REBOOT :
>> +                      SBI_SRST_RESET_TYPE_COLD_REBOOT,
>> +                      SBI_SRST_RESET_REASON_NONE);
>> +       return NOTIFY_DONE;
>> +}
>> +
>> +static struct notifier_block sbi_srst_reboot_nb;
>> +
>> +static void sbi_srst_power_off(void)
>> +{
>> +       sbi_srst_reset(SBI_SRST_RESET_TYPE_SHUTDOWN,
>> +                      SBI_SRST_RESET_REASON_NONE);
>> +}
>> +
>>  /**
>>   * sbi_probe_extension() - Check if an SBI extension ID is supported or not.
>>   * @extid: The extension ID to be probed.
>> @@ -608,6 +635,14 @@ void __init sbi_init(void)
>>                 } else {
>>                         __sbi_rfence    = __sbi_rfence_v01;
>>                 }
>> +               if ((sbi_spec_version >= sbi_mk_version(0, 3)) &&
>> +                   (sbi_probe_extension(SBI_EXT_SRST) > 0)) {
>> +                       pr_info("SBI SRST extension detected\n");
>> +                       pm_power_off = sbi_srst_power_off;
>> +                       sbi_srst_reboot_nb.notifier_call = sbi_srst_reboot;
>> +                       sbi_srst_reboot_nb.priority = 192;
>> +                       register_restart_handler(&sbi_srst_reboot_nb);
>> +               }
>>         } else {
>>                 __sbi_set_timer = __sbi_set_timer_v01;
>>                 __sbi_send_ipi  = __sbi_send_ipi_v01;
>> --
>> 2.25.1
>>

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
@ 2021-07-06 20:27       ` Palmer Dabbelt
  0 siblings, 0 replies; 30+ messages in thread
From: Palmer Dabbelt @ 2021-07-06 20:27 UTC (permalink / raw)
  To: anup
  Cc: Anup Patel, Paul Walmsley, aou, Atish Patra, Alistair Francis,
	linux-riscv, linux-kernel

On Mon, 21 Jun 2021 21:46:46 PDT (-0700), anup@brainfault.org wrote:
> Hi Palmer,
>
> On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
>>
>> The SBI SRST extension provides a standard way to poweroff and
>> reboot the system irrespective to whether Linux RISC-V S-mode
>> is running natively (HS-mode) or inside Guest/VM (VS-mode).
>>
>> The SBI SRST extension is available in the SBI v0.3 specification.
>> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
>
> Can you please consider this patch for Linux-5.14-rc1 ?
>
> The SBI v0.3 spec is already frozen and this patch has been
> floating on LKML for quite a few months now.

I didn't realize that SBI-0.3 had been frozed.  That link is to a RC, 
the cooresponding v0.3.0 tag isn't in that repo.  Can you give me a 
pointer to the frozen spec?

>
> Regards,
> Anup
>
>>
>> This patch extends Linux RISC-V SBI implementation to detect
>> and use SBI SRST extension.
>>
>> Signed-off-by: Anup Patel <anup.patel@wdc.com>
>> Reviewed-by: Atish Patra <atish.patra@wdc.com>
>> ---
>>  arch/riscv/include/asm/sbi.h | 24 ++++++++++++++++++++++++
>>  arch/riscv/kernel/sbi.c      | 35 +++++++++++++++++++++++++++++++++++
>>  2 files changed, 59 insertions(+)
>>
>> diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h
>> index 0d42693cb65e..289621da4a2a 100644
>> --- a/arch/riscv/include/asm/sbi.h
>> +++ b/arch/riscv/include/asm/sbi.h
>> @@ -27,6 +27,7 @@ enum sbi_ext_id {
>>         SBI_EXT_IPI = 0x735049,
>>         SBI_EXT_RFENCE = 0x52464E43,
>>         SBI_EXT_HSM = 0x48534D,
>> +       SBI_EXT_SRST = 0x53525354,
>>  };
>>
>>  enum sbi_ext_base_fid {
>> @@ -70,6 +71,21 @@ enum sbi_hsm_hart_status {
>>         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,
>> +};
>> +
>>  #define SBI_SPEC_VERSION_DEFAULT       0x1
>>  #define SBI_SPEC_VERSION_MAJOR_SHIFT   24
>>  #define SBI_SPEC_VERSION_MAJOR_MASK    0x7f
>> @@ -148,6 +164,14 @@ static inline unsigned long sbi_minor_version(void)
>>         return sbi_spec_version & SBI_SPEC_VERSION_MINOR_MASK;
>>  }
>>
>> +/* Make SBI version */
>> +static inline unsigned long sbi_mk_version(unsigned long major,
>> +                                           unsigned long minor)
>> +{
>> +       return ((major & SBI_SPEC_VERSION_MAJOR_MASK) <<
>> +               SBI_SPEC_VERSION_MAJOR_SHIFT) | minor;
>> +}
>> +
>>  int sbi_err_map_linux_errno(int err);
>>  #else /* CONFIG_RISCV_SBI */
>>  static inline int sbi_remote_fence_i(const unsigned long *hart_mask) { return -1; }
>> diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c
>> index 7402a417f38e..9a84f0cb5175 100644
>> --- a/arch/riscv/kernel/sbi.c
>> +++ b/arch/riscv/kernel/sbi.c
>> @@ -7,6 +7,7 @@
>>
>>  #include <linux/init.h>
>>  #include <linux/pm.h>
>> +#include <linux/reboot.h>
>>  #include <asm/sbi.h>
>>  #include <asm/smp.h>
>>
>> @@ -501,6 +502,32 @@ int sbi_remote_hfence_vvma_asid(const unsigned long *hart_mask,
>>  }
>>  EXPORT_SYMBOL(sbi_remote_hfence_vvma_asid);
>>
>> +static void sbi_srst_reset(unsigned long type, unsigned long reason)
>> +{
>> +       sbi_ecall(SBI_EXT_SRST, SBI_EXT_SRST_RESET, type, reason,
>> +                 0, 0, 0, 0);
>> +       pr_warn("%s: type=0x%lx reason=0x%lx failed\n",
>> +               __func__, type, reason);
>> +}
>> +
>> +static int sbi_srst_reboot(struct notifier_block *this,
>> +                          unsigned long mode, void *cmd)
>> +{
>> +       sbi_srst_reset((mode == REBOOT_WARM || mode == REBOOT_SOFT) ?
>> +                      SBI_SRST_RESET_TYPE_WARM_REBOOT :
>> +                      SBI_SRST_RESET_TYPE_COLD_REBOOT,
>> +                      SBI_SRST_RESET_REASON_NONE);
>> +       return NOTIFY_DONE;
>> +}
>> +
>> +static struct notifier_block sbi_srst_reboot_nb;
>> +
>> +static void sbi_srst_power_off(void)
>> +{
>> +       sbi_srst_reset(SBI_SRST_RESET_TYPE_SHUTDOWN,
>> +                      SBI_SRST_RESET_REASON_NONE);
>> +}
>> +
>>  /**
>>   * sbi_probe_extension() - Check if an SBI extension ID is supported or not.
>>   * @extid: The extension ID to be probed.
>> @@ -608,6 +635,14 @@ void __init sbi_init(void)
>>                 } else {
>>                         __sbi_rfence    = __sbi_rfence_v01;
>>                 }
>> +               if ((sbi_spec_version >= sbi_mk_version(0, 3)) &&
>> +                   (sbi_probe_extension(SBI_EXT_SRST) > 0)) {
>> +                       pr_info("SBI SRST extension detected\n");
>> +                       pm_power_off = sbi_srst_power_off;
>> +                       sbi_srst_reboot_nb.notifier_call = sbi_srst_reboot;
>> +                       sbi_srst_reboot_nb.priority = 192;
>> +                       register_restart_handler(&sbi_srst_reboot_nb);
>> +               }
>>         } else {
>>                 __sbi_set_timer = __sbi_set_timer_v01;
>>                 __sbi_send_ipi  = __sbi_send_ipi_v01;
>> --
>> 2.25.1
>>

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
  2021-07-06 20:27       ` Palmer Dabbelt
@ 2021-07-07 15:49         ` Anup Patel
  -1 siblings, 0 replies; 30+ messages in thread
From: Anup Patel @ 2021-07-07 15:49 UTC (permalink / raw)
  To: Palmer Dabbelt
  Cc: Anup Patel, Paul Walmsley, Albert Ou, Atish Patra,
	Alistair Francis, linux-riscv, linux-kernel@vger.kernel.org List

On Wed, Jul 7, 2021 at 1:57 AM Palmer Dabbelt <palmerdabbelt@google.com> wrote:
>
> On Mon, 21 Jun 2021 21:46:46 PDT (-0700), anup@brainfault.org wrote:
> > Hi Palmer,
> >
> > On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
> >>
> >> The SBI SRST extension provides a standard way to poweroff and
> >> reboot the system irrespective to whether Linux RISC-V S-mode
> >> is running natively (HS-mode) or inside Guest/VM (VS-mode).
> >>
> >> The SBI SRST extension is available in the SBI v0.3 specification.
> >> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
> >
> > Can you please consider this patch for Linux-5.14-rc1 ?
> >
> > The SBI v0.3 spec is already frozen and this patch has been
> > floating on LKML for quite a few months now.
>
> I didn't realize that SBI-0.3 had been frozed.  That link is to a RC,
> the cooresponding v0.3.0 tag isn't in that repo.  Can you give me a
> pointer to the frozen spec?

Here's the link to SBI v0.3.0 tag:
https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0

We treat RC tags as frozen in SBI spec because no functional
changes are done in SBI spec after it is tagged as RC. We only
do typo fixes and clarifications on SBI spec RC release.

Regards,
Anup

>
> >
> > Regards,
> > Anup
> >
> >>
> >> This patch extends Linux RISC-V SBI implementation to detect
> >> and use SBI SRST extension.
> >>
> >> Signed-off-by: Anup Patel <anup.patel@wdc.com>
> >> Reviewed-by: Atish Patra <atish.patra@wdc.com>
> >> ---
> >>  arch/riscv/include/asm/sbi.h | 24 ++++++++++++++++++++++++
> >>  arch/riscv/kernel/sbi.c      | 35 +++++++++++++++++++++++++++++++++++
> >>  2 files changed, 59 insertions(+)
> >>
> >> diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h
> >> index 0d42693cb65e..289621da4a2a 100644
> >> --- a/arch/riscv/include/asm/sbi.h
> >> +++ b/arch/riscv/include/asm/sbi.h
> >> @@ -27,6 +27,7 @@ enum sbi_ext_id {
> >>         SBI_EXT_IPI = 0x735049,
> >>         SBI_EXT_RFENCE = 0x52464E43,
> >>         SBI_EXT_HSM = 0x48534D,
> >> +       SBI_EXT_SRST = 0x53525354,
> >>  };
> >>
> >>  enum sbi_ext_base_fid {
> >> @@ -70,6 +71,21 @@ enum sbi_hsm_hart_status {
> >>         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,
> >> +};
> >> +
> >>  #define SBI_SPEC_VERSION_DEFAULT       0x1
> >>  #define SBI_SPEC_VERSION_MAJOR_SHIFT   24
> >>  #define SBI_SPEC_VERSION_MAJOR_MASK    0x7f
> >> @@ -148,6 +164,14 @@ static inline unsigned long sbi_minor_version(void)
> >>         return sbi_spec_version & SBI_SPEC_VERSION_MINOR_MASK;
> >>  }
> >>
> >> +/* Make SBI version */
> >> +static inline unsigned long sbi_mk_version(unsigned long major,
> >> +                                           unsigned long minor)
> >> +{
> >> +       return ((major & SBI_SPEC_VERSION_MAJOR_MASK) <<
> >> +               SBI_SPEC_VERSION_MAJOR_SHIFT) | minor;
> >> +}
> >> +
> >>  int sbi_err_map_linux_errno(int err);
> >>  #else /* CONFIG_RISCV_SBI */
> >>  static inline int sbi_remote_fence_i(const unsigned long *hart_mask) { return -1; }
> >> diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c
> >> index 7402a417f38e..9a84f0cb5175 100644
> >> --- a/arch/riscv/kernel/sbi.c
> >> +++ b/arch/riscv/kernel/sbi.c
> >> @@ -7,6 +7,7 @@
> >>
> >>  #include <linux/init.h>
> >>  #include <linux/pm.h>
> >> +#include <linux/reboot.h>
> >>  #include <asm/sbi.h>
> >>  #include <asm/smp.h>
> >>
> >> @@ -501,6 +502,32 @@ int sbi_remote_hfence_vvma_asid(const unsigned long *hart_mask,
> >>  }
> >>  EXPORT_SYMBOL(sbi_remote_hfence_vvma_asid);
> >>
> >> +static void sbi_srst_reset(unsigned long type, unsigned long reason)
> >> +{
> >> +       sbi_ecall(SBI_EXT_SRST, SBI_EXT_SRST_RESET, type, reason,
> >> +                 0, 0, 0, 0);
> >> +       pr_warn("%s: type=0x%lx reason=0x%lx failed\n",
> >> +               __func__, type, reason);
> >> +}
> >> +
> >> +static int sbi_srst_reboot(struct notifier_block *this,
> >> +                          unsigned long mode, void *cmd)
> >> +{
> >> +       sbi_srst_reset((mode == REBOOT_WARM || mode == REBOOT_SOFT) ?
> >> +                      SBI_SRST_RESET_TYPE_WARM_REBOOT :
> >> +                      SBI_SRST_RESET_TYPE_COLD_REBOOT,
> >> +                      SBI_SRST_RESET_REASON_NONE);
> >> +       return NOTIFY_DONE;
> >> +}
> >> +
> >> +static struct notifier_block sbi_srst_reboot_nb;
> >> +
> >> +static void sbi_srst_power_off(void)
> >> +{
> >> +       sbi_srst_reset(SBI_SRST_RESET_TYPE_SHUTDOWN,
> >> +                      SBI_SRST_RESET_REASON_NONE);
> >> +}
> >> +
> >>  /**
> >>   * sbi_probe_extension() - Check if an SBI extension ID is supported or not.
> >>   * @extid: The extension ID to be probed.
> >> @@ -608,6 +635,14 @@ void __init sbi_init(void)
> >>                 } else {
> >>                         __sbi_rfence    = __sbi_rfence_v01;
> >>                 }
> >> +               if ((sbi_spec_version >= sbi_mk_version(0, 3)) &&
> >> +                   (sbi_probe_extension(SBI_EXT_SRST) > 0)) {
> >> +                       pr_info("SBI SRST extension detected\n");
> >> +                       pm_power_off = sbi_srst_power_off;
> >> +                       sbi_srst_reboot_nb.notifier_call = sbi_srst_reboot;
> >> +                       sbi_srst_reboot_nb.priority = 192;
> >> +                       register_restart_handler(&sbi_srst_reboot_nb);
> >> +               }
> >>         } else {
> >>                 __sbi_set_timer = __sbi_set_timer_v01;
> >>                 __sbi_send_ipi  = __sbi_send_ipi_v01;
> >> --
> >> 2.25.1
> >>

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
@ 2021-07-07 15:49         ` Anup Patel
  0 siblings, 0 replies; 30+ messages in thread
From: Anup Patel @ 2021-07-07 15:49 UTC (permalink / raw)
  To: Palmer Dabbelt
  Cc: Anup Patel, Paul Walmsley, Albert Ou, Atish Patra,
	Alistair Francis, linux-riscv, linux-kernel@vger.kernel.org List

On Wed, Jul 7, 2021 at 1:57 AM Palmer Dabbelt <palmerdabbelt@google.com> wrote:
>
> On Mon, 21 Jun 2021 21:46:46 PDT (-0700), anup@brainfault.org wrote:
> > Hi Palmer,
> >
> > On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
> >>
> >> The SBI SRST extension provides a standard way to poweroff and
> >> reboot the system irrespective to whether Linux RISC-V S-mode
> >> is running natively (HS-mode) or inside Guest/VM (VS-mode).
> >>
> >> The SBI SRST extension is available in the SBI v0.3 specification.
> >> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
> >
> > Can you please consider this patch for Linux-5.14-rc1 ?
> >
> > The SBI v0.3 spec is already frozen and this patch has been
> > floating on LKML for quite a few months now.
>
> I didn't realize that SBI-0.3 had been frozed.  That link is to a RC,
> the cooresponding v0.3.0 tag isn't in that repo.  Can you give me a
> pointer to the frozen spec?

Here's the link to SBI v0.3.0 tag:
https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0

We treat RC tags as frozen in SBI spec because no functional
changes are done in SBI spec after it is tagged as RC. We only
do typo fixes and clarifications on SBI spec RC release.

Regards,
Anup

>
> >
> > Regards,
> > Anup
> >
> >>
> >> This patch extends Linux RISC-V SBI implementation to detect
> >> and use SBI SRST extension.
> >>
> >> Signed-off-by: Anup Patel <anup.patel@wdc.com>
> >> Reviewed-by: Atish Patra <atish.patra@wdc.com>
> >> ---
> >>  arch/riscv/include/asm/sbi.h | 24 ++++++++++++++++++++++++
> >>  arch/riscv/kernel/sbi.c      | 35 +++++++++++++++++++++++++++++++++++
> >>  2 files changed, 59 insertions(+)
> >>
> >> diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h
> >> index 0d42693cb65e..289621da4a2a 100644
> >> --- a/arch/riscv/include/asm/sbi.h
> >> +++ b/arch/riscv/include/asm/sbi.h
> >> @@ -27,6 +27,7 @@ enum sbi_ext_id {
> >>         SBI_EXT_IPI = 0x735049,
> >>         SBI_EXT_RFENCE = 0x52464E43,
> >>         SBI_EXT_HSM = 0x48534D,
> >> +       SBI_EXT_SRST = 0x53525354,
> >>  };
> >>
> >>  enum sbi_ext_base_fid {
> >> @@ -70,6 +71,21 @@ enum sbi_hsm_hart_status {
> >>         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,
> >> +};
> >> +
> >>  #define SBI_SPEC_VERSION_DEFAULT       0x1
> >>  #define SBI_SPEC_VERSION_MAJOR_SHIFT   24
> >>  #define SBI_SPEC_VERSION_MAJOR_MASK    0x7f
> >> @@ -148,6 +164,14 @@ static inline unsigned long sbi_minor_version(void)
> >>         return sbi_spec_version & SBI_SPEC_VERSION_MINOR_MASK;
> >>  }
> >>
> >> +/* Make SBI version */
> >> +static inline unsigned long sbi_mk_version(unsigned long major,
> >> +                                           unsigned long minor)
> >> +{
> >> +       return ((major & SBI_SPEC_VERSION_MAJOR_MASK) <<
> >> +               SBI_SPEC_VERSION_MAJOR_SHIFT) | minor;
> >> +}
> >> +
> >>  int sbi_err_map_linux_errno(int err);
> >>  #else /* CONFIG_RISCV_SBI */
> >>  static inline int sbi_remote_fence_i(const unsigned long *hart_mask) { return -1; }
> >> diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c
> >> index 7402a417f38e..9a84f0cb5175 100644
> >> --- a/arch/riscv/kernel/sbi.c
> >> +++ b/arch/riscv/kernel/sbi.c
> >> @@ -7,6 +7,7 @@
> >>
> >>  #include <linux/init.h>
> >>  #include <linux/pm.h>
> >> +#include <linux/reboot.h>
> >>  #include <asm/sbi.h>
> >>  #include <asm/smp.h>
> >>
> >> @@ -501,6 +502,32 @@ int sbi_remote_hfence_vvma_asid(const unsigned long *hart_mask,
> >>  }
> >>  EXPORT_SYMBOL(sbi_remote_hfence_vvma_asid);
> >>
> >> +static void sbi_srst_reset(unsigned long type, unsigned long reason)
> >> +{
> >> +       sbi_ecall(SBI_EXT_SRST, SBI_EXT_SRST_RESET, type, reason,
> >> +                 0, 0, 0, 0);
> >> +       pr_warn("%s: type=0x%lx reason=0x%lx failed\n",
> >> +               __func__, type, reason);
> >> +}
> >> +
> >> +static int sbi_srst_reboot(struct notifier_block *this,
> >> +                          unsigned long mode, void *cmd)
> >> +{
> >> +       sbi_srst_reset((mode == REBOOT_WARM || mode == REBOOT_SOFT) ?
> >> +                      SBI_SRST_RESET_TYPE_WARM_REBOOT :
> >> +                      SBI_SRST_RESET_TYPE_COLD_REBOOT,
> >> +                      SBI_SRST_RESET_REASON_NONE);
> >> +       return NOTIFY_DONE;
> >> +}
> >> +
> >> +static struct notifier_block sbi_srst_reboot_nb;
> >> +
> >> +static void sbi_srst_power_off(void)
> >> +{
> >> +       sbi_srst_reset(SBI_SRST_RESET_TYPE_SHUTDOWN,
> >> +                      SBI_SRST_RESET_REASON_NONE);
> >> +}
> >> +
> >>  /**
> >>   * sbi_probe_extension() - Check if an SBI extension ID is supported or not.
> >>   * @extid: The extension ID to be probed.
> >> @@ -608,6 +635,14 @@ void __init sbi_init(void)
> >>                 } else {
> >>                         __sbi_rfence    = __sbi_rfence_v01;
> >>                 }
> >> +               if ((sbi_spec_version >= sbi_mk_version(0, 3)) &&
> >> +                   (sbi_probe_extension(SBI_EXT_SRST) > 0)) {
> >> +                       pr_info("SBI SRST extension detected\n");
> >> +                       pm_power_off = sbi_srst_power_off;
> >> +                       sbi_srst_reboot_nb.notifier_call = sbi_srst_reboot;
> >> +                       sbi_srst_reboot_nb.priority = 192;
> >> +                       register_restart_handler(&sbi_srst_reboot_nb);
> >> +               }
> >>         } else {
> >>                 __sbi_set_timer = __sbi_set_timer_v01;
> >>                 __sbi_send_ipi  = __sbi_send_ipi_v01;
> >> --
> >> 2.25.1
> >>

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
  2021-07-07 15:49         ` Anup Patel
@ 2021-07-10  5:01           ` Anup Patel
  -1 siblings, 0 replies; 30+ messages in thread
From: Anup Patel @ 2021-07-10  5:01 UTC (permalink / raw)
  To: Anup Patel, Palmer Dabbelt
  Cc: Paul Walmsley, Albert Ou, Atish Patra, Alistair Francis,
	linux-riscv, linux-kernel@vger.kernel.org List



On 08/07/21, 9:22 AM, "Anup Patel" <anup@brainfault.org> wrote:

    On Wed, Jul 7, 2021 at 1:57 AM Palmer Dabbelt <palmerdabbelt@google.com> wrote:
    >
    > On Mon, 21 Jun 2021 21:46:46 PDT (-0700), anup@brainfault.org wrote:
    > > Hi Palmer,
    > >
    > > On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
    > >>
    > >> The SBI SRST extension provides a standard way to poweroff and
    > >> reboot the system irrespective to whether Linux RISC-V S-mode
    > >> is running natively (HS-mode) or inside Guest/VM (VS-mode).
    > >>
    > >> The SBI SRST extension is available in the SBI v0.3 specification.
    > >> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
    > >
    > > Can you please consider this patch for Linux-5.14-rc1 ?
    > >
    > > The SBI v0.3 spec is already frozen and this patch has been
    > > floating on LKML for quite a few months now.
    >
    > I didn't realize that SBI-0.3 had been frozed.  That link is to a RC,
    > the cooresponding v0.3.0 tag isn't in that repo.  Can you give me a
    > pointer to the frozen spec?

    Here's the link to SBI v0.3.0 tag:
    https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0

    We treat RC tags as frozen in SBI spec because no functional
    changes are done in SBI spec after it is tagged as RC. We only
    do typo fixes and clarifications on SBI spec RC release.

Can you take this patch for Linux-5.14 ??

Regards,
Anup

    Regards,
    Anup

    >
    > >
    > > Regards,
    > > Anup
    > >
    > >>
    > >> This patch extends Linux RISC-V SBI implementation to detect
    > >> and use SBI SRST extension.
    > >>
    > >> Signed-off-by: Anup Patel <anup.patel@wdc.com>
    > >> Reviewed-by: Atish Patra <atish.patra@wdc.com>
    > >> ---
    > >>  arch/riscv/include/asm/sbi.h | 24 ++++++++++++++++++++++++
    > >>  arch/riscv/kernel/sbi.c      | 35 +++++++++++++++++++++++++++++++++++
    > >>  2 files changed, 59 insertions(+)
    > >>
    > >> diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h
    > >> index 0d42693cb65e..289621da4a2a 100644
    > >> --- a/arch/riscv/include/asm/sbi.h
    > >> +++ b/arch/riscv/include/asm/sbi.h
    > >> @@ -27,6 +27,7 @@ enum sbi_ext_id {
    > >>         SBI_EXT_IPI = 0x735049,
    > >>         SBI_EXT_RFENCE = 0x52464E43,
    > >>         SBI_EXT_HSM = 0x48534D,
    > >> +       SBI_EXT_SRST = 0x53525354,
    > >>  };
    > >>
    > >>  enum sbi_ext_base_fid {
    > >> @@ -70,6 +71,21 @@ enum sbi_hsm_hart_status {
    > >>         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,
    > >> +};
    > >> +
    > >>  #define SBI_SPEC_VERSION_DEFAULT       0x1
    > >>  #define SBI_SPEC_VERSION_MAJOR_SHIFT   24
    > >>  #define SBI_SPEC_VERSION_MAJOR_MASK    0x7f
    > >> @@ -148,6 +164,14 @@ static inline unsigned long sbi_minor_version(void)
    > >>         return sbi_spec_version & SBI_SPEC_VERSION_MINOR_MASK;
    > >>  }
    > >>
    > >> +/* Make SBI version */
    > >> +static inline unsigned long sbi_mk_version(unsigned long major,
    > >> +                                           unsigned long minor)
    > >> +{
    > >> +       return ((major & SBI_SPEC_VERSION_MAJOR_MASK) <<
    > >> +               SBI_SPEC_VERSION_MAJOR_SHIFT) | minor;
    > >> +}
    > >> +
    > >>  int sbi_err_map_linux_errno(int err);
    > >>  #else /* CONFIG_RISCV_SBI */
    > >>  static inline int sbi_remote_fence_i(const unsigned long *hart_mask) { return -1; }
    > >> diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c
    > >> index 7402a417f38e..9a84f0cb5175 100644
    > >> --- a/arch/riscv/kernel/sbi.c
    > >> +++ b/arch/riscv/kernel/sbi.c
    > >> @@ -7,6 +7,7 @@
    > >>
    > >>  #include <linux/init.h>
    > >>  #include <linux/pm.h>
    > >> +#include <linux/reboot.h>
    > >>  #include <asm/sbi.h>
    > >>  #include <asm/smp.h>
    > >>
    > >> @@ -501,6 +502,32 @@ int sbi_remote_hfence_vvma_asid(const unsigned long *hart_mask,
    > >>  }
    > >>  EXPORT_SYMBOL(sbi_remote_hfence_vvma_asid);
    > >>
    > >> +static void sbi_srst_reset(unsigned long type, unsigned long reason)
    > >> +{
    > >> +       sbi_ecall(SBI_EXT_SRST, SBI_EXT_SRST_RESET, type, reason,
    > >> +                 0, 0, 0, 0);
    > >> +       pr_warn("%s: type=0x%lx reason=0x%lx failed\n",
    > >> +               __func__, type, reason);
    > >> +}
    > >> +
    > >> +static int sbi_srst_reboot(struct notifier_block *this,
    > >> +                          unsigned long mode, void *cmd)
    > >> +{
    > >> +       sbi_srst_reset((mode == REBOOT_WARM || mode == REBOOT_SOFT) ?
    > >> +                      SBI_SRST_RESET_TYPE_WARM_REBOOT :
    > >> +                      SBI_SRST_RESET_TYPE_COLD_REBOOT,
    > >> +                      SBI_SRST_RESET_REASON_NONE);
    > >> +       return NOTIFY_DONE;
    > >> +}
    > >> +
    > >> +static struct notifier_block sbi_srst_reboot_nb;
    > >> +
    > >> +static void sbi_srst_power_off(void)
    > >> +{
    > >> +       sbi_srst_reset(SBI_SRST_RESET_TYPE_SHUTDOWN,
    > >> +                      SBI_SRST_RESET_REASON_NONE);
    > >> +}
    > >> +
    > >>  /**
    > >>   * sbi_probe_extension() - Check if an SBI extension ID is supported or not.
    > >>   * @extid: The extension ID to be probed.
    > >> @@ -608,6 +635,14 @@ void __init sbi_init(void)
    > >>                 } else {
    > >>                         __sbi_rfence    = __sbi_rfence_v01;
    > >>                 }
    > >> +               if ((sbi_spec_version >= sbi_mk_version(0, 3)) &&
    > >> +                   (sbi_probe_extension(SBI_EXT_SRST) > 0)) {
    > >> +                       pr_info("SBI SRST extension detected\n");
    > >> +                       pm_power_off = sbi_srst_power_off;
    > >> +                       sbi_srst_reboot_nb.notifier_call = sbi_srst_reboot;
    > >> +                       sbi_srst_reboot_nb.priority = 192;
    > >> +                       register_restart_handler(&sbi_srst_reboot_nb);
    > >> +               }
    > >>         } else {
    > >>                 __sbi_set_timer = __sbi_set_timer_v01;
    > >>                 __sbi_send_ipi  = __sbi_send_ipi_v01;
    > >> --
    > >> 2.25.1
    > >>


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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
@ 2021-07-10  5:01           ` Anup Patel
  0 siblings, 0 replies; 30+ messages in thread
From: Anup Patel @ 2021-07-10  5:01 UTC (permalink / raw)
  To: Anup Patel, Palmer Dabbelt
  Cc: Paul Walmsley, Albert Ou, Atish Patra, Alistair Francis,
	linux-riscv, linux-kernel@vger.kernel.org List



On 08/07/21, 9:22 AM, "Anup Patel" <anup@brainfault.org> wrote:

    On Wed, Jul 7, 2021 at 1:57 AM Palmer Dabbelt <palmerdabbelt@google.com> wrote:
    >
    > On Mon, 21 Jun 2021 21:46:46 PDT (-0700), anup@brainfault.org wrote:
    > > Hi Palmer,
    > >
    > > On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
    > >>
    > >> The SBI SRST extension provides a standard way to poweroff and
    > >> reboot the system irrespective to whether Linux RISC-V S-mode
    > >> is running natively (HS-mode) or inside Guest/VM (VS-mode).
    > >>
    > >> The SBI SRST extension is available in the SBI v0.3 specification.
    > >> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
    > >
    > > Can you please consider this patch for Linux-5.14-rc1 ?
    > >
    > > The SBI v0.3 spec is already frozen and this patch has been
    > > floating on LKML for quite a few months now.
    >
    > I didn't realize that SBI-0.3 had been frozed.  That link is to a RC,
    > the cooresponding v0.3.0 tag isn't in that repo.  Can you give me a
    > pointer to the frozen spec?

    Here's the link to SBI v0.3.0 tag:
    https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0

    We treat RC tags as frozen in SBI spec because no functional
    changes are done in SBI spec after it is tagged as RC. We only
    do typo fixes and clarifications on SBI spec RC release.

Can you take this patch for Linux-5.14 ??

Regards,
Anup

    Regards,
    Anup

    >
    > >
    > > Regards,
    > > Anup
    > >
    > >>
    > >> This patch extends Linux RISC-V SBI implementation to detect
    > >> and use SBI SRST extension.
    > >>
    > >> Signed-off-by: Anup Patel <anup.patel@wdc.com>
    > >> Reviewed-by: Atish Patra <atish.patra@wdc.com>
    > >> ---
    > >>  arch/riscv/include/asm/sbi.h | 24 ++++++++++++++++++++++++
    > >>  arch/riscv/kernel/sbi.c      | 35 +++++++++++++++++++++++++++++++++++
    > >>  2 files changed, 59 insertions(+)
    > >>
    > >> diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h
    > >> index 0d42693cb65e..289621da4a2a 100644
    > >> --- a/arch/riscv/include/asm/sbi.h
    > >> +++ b/arch/riscv/include/asm/sbi.h
    > >> @@ -27,6 +27,7 @@ enum sbi_ext_id {
    > >>         SBI_EXT_IPI = 0x735049,
    > >>         SBI_EXT_RFENCE = 0x52464E43,
    > >>         SBI_EXT_HSM = 0x48534D,
    > >> +       SBI_EXT_SRST = 0x53525354,
    > >>  };
    > >>
    > >>  enum sbi_ext_base_fid {
    > >> @@ -70,6 +71,21 @@ enum sbi_hsm_hart_status {
    > >>         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,
    > >> +};
    > >> +
    > >>  #define SBI_SPEC_VERSION_DEFAULT       0x1
    > >>  #define SBI_SPEC_VERSION_MAJOR_SHIFT   24
    > >>  #define SBI_SPEC_VERSION_MAJOR_MASK    0x7f
    > >> @@ -148,6 +164,14 @@ static inline unsigned long sbi_minor_version(void)
    > >>         return sbi_spec_version & SBI_SPEC_VERSION_MINOR_MASK;
    > >>  }
    > >>
    > >> +/* Make SBI version */
    > >> +static inline unsigned long sbi_mk_version(unsigned long major,
    > >> +                                           unsigned long minor)
    > >> +{
    > >> +       return ((major & SBI_SPEC_VERSION_MAJOR_MASK) <<
    > >> +               SBI_SPEC_VERSION_MAJOR_SHIFT) | minor;
    > >> +}
    > >> +
    > >>  int sbi_err_map_linux_errno(int err);
    > >>  #else /* CONFIG_RISCV_SBI */
    > >>  static inline int sbi_remote_fence_i(const unsigned long *hart_mask) { return -1; }
    > >> diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c
    > >> index 7402a417f38e..9a84f0cb5175 100644
    > >> --- a/arch/riscv/kernel/sbi.c
    > >> +++ b/arch/riscv/kernel/sbi.c
    > >> @@ -7,6 +7,7 @@
    > >>
    > >>  #include <linux/init.h>
    > >>  #include <linux/pm.h>
    > >> +#include <linux/reboot.h>
    > >>  #include <asm/sbi.h>
    > >>  #include <asm/smp.h>
    > >>
    > >> @@ -501,6 +502,32 @@ int sbi_remote_hfence_vvma_asid(const unsigned long *hart_mask,
    > >>  }
    > >>  EXPORT_SYMBOL(sbi_remote_hfence_vvma_asid);
    > >>
    > >> +static void sbi_srst_reset(unsigned long type, unsigned long reason)
    > >> +{
    > >> +       sbi_ecall(SBI_EXT_SRST, SBI_EXT_SRST_RESET, type, reason,
    > >> +                 0, 0, 0, 0);
    > >> +       pr_warn("%s: type=0x%lx reason=0x%lx failed\n",
    > >> +               __func__, type, reason);
    > >> +}
    > >> +
    > >> +static int sbi_srst_reboot(struct notifier_block *this,
    > >> +                          unsigned long mode, void *cmd)
    > >> +{
    > >> +       sbi_srst_reset((mode == REBOOT_WARM || mode == REBOOT_SOFT) ?
    > >> +                      SBI_SRST_RESET_TYPE_WARM_REBOOT :
    > >> +                      SBI_SRST_RESET_TYPE_COLD_REBOOT,
    > >> +                      SBI_SRST_RESET_REASON_NONE);
    > >> +       return NOTIFY_DONE;
    > >> +}
    > >> +
    > >> +static struct notifier_block sbi_srst_reboot_nb;
    > >> +
    > >> +static void sbi_srst_power_off(void)
    > >> +{
    > >> +       sbi_srst_reset(SBI_SRST_RESET_TYPE_SHUTDOWN,
    > >> +                      SBI_SRST_RESET_REASON_NONE);
    > >> +}
    > >> +
    > >>  /**
    > >>   * sbi_probe_extension() - Check if an SBI extension ID is supported or not.
    > >>   * @extid: The extension ID to be probed.
    > >> @@ -608,6 +635,14 @@ void __init sbi_init(void)
    > >>                 } else {
    > >>                         __sbi_rfence    = __sbi_rfence_v01;
    > >>                 }
    > >> +               if ((sbi_spec_version >= sbi_mk_version(0, 3)) &&
    > >> +                   (sbi_probe_extension(SBI_EXT_SRST) > 0)) {
    > >> +                       pr_info("SBI SRST extension detected\n");
    > >> +                       pm_power_off = sbi_srst_power_off;
    > >> +                       sbi_srst_reboot_nb.notifier_call = sbi_srst_reboot;
    > >> +                       sbi_srst_reboot_nb.priority = 192;
    > >> +                       register_restart_handler(&sbi_srst_reboot_nb);
    > >> +               }
    > >>         } else {
    > >>                 __sbi_set_timer = __sbi_set_timer_v01;
    > >>                 __sbi_send_ipi  = __sbi_send_ipi_v01;
    > >> --
    > >> 2.25.1
    > >>

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
  2021-07-10  5:01           ` Anup Patel
@ 2021-07-11 18:59             ` Palmer Dabbelt
  -1 siblings, 0 replies; 30+ messages in thread
From: Palmer Dabbelt @ 2021-07-11 18:59 UTC (permalink / raw)
  To: Anup Patel
  Cc: anup, Paul Walmsley, aou, Atish Patra, Alistair Francis,
	linux-riscv, linux-kernel

On Fri, 09 Jul 2021 22:01:02 PDT (-0700), Anup Patel wrote:
> 
> 
> On 08/07/21, 9:22 AM, "Anup Patel" <anup@brainfault.org> wrote:
> 
>     On Wed, Jul 7, 2021 at 1:57 AM Palmer Dabbelt <palmerdabbelt@google.com> wrote:
>     >
>     > On Mon, 21 Jun 2021 21:46:46 PDT (-0700), anup@brainfault.org wrote:
>     > > Hi Palmer,
>     > >
>     > > On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
>     > >>
>     > >> The SBI SRST extension provides a standard way to poweroff and
>     > >> reboot the system irrespective to whether Linux RISC-V S-mode
>     > >> is running natively (HS-mode) or inside Guest/VM (VS-mode).
>     > >>
>     > >> The SBI SRST extension is available in the SBI v0.3 specification.
>     > >> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
>     > >
>     > > Can you please consider this patch for Linux-5.14-rc1 ?
>     > >
>     > > The SBI v0.3 spec is already frozen and this patch has been
>     > > floating on LKML for quite a few months now.
>     >
>     > I didn't realize that SBI-0.3 had been frozed.  That link is to a RC,
>     > the cooresponding v0.3.0 tag isn't in that repo.  Can you give me a
>     > pointer to the frozen spec?
> 
>     Here's the link to SBI v0.3.0 tag:
>     https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0
> 
>     We treat RC tags as frozen in SBI spec because no functional
>     changes are done in SBI spec after it is tagged as RC. We only
>     do typo fixes and clarifications on SBI spec RC release.

Treating the 0.3.0-rc1 as frozen as soon as it's released is a 
terrifying policy: some of the fixes I sent in after I saw rc1 released 
change the actual meaning of the text, even if they were meant to change 
them to what I thought the intended meaning was supposed to be.  That 
means the actual text of 0.3.0-rc1 and 0.3.0 conflict with each other.  
Given that frozen comes with a guarntee of backwards compatibility, does 
that mean that the behavior allowed by 0.3.0-rc1 is compliant with the 
SBI, even if it was likely just allowed by a wording mistake?

If you're going to freeze things at rc1 then you really need to be quite 
explicit about that, as generally the point of RCs is to elicit 
review/testing.  Looks like I was the only person to have provided any 
review, so I guess I was the only one who assumed "We don't expect any 
significant functional changes. We will wait for any further feedback 
and release the official v0.3 in a month or so." actually meant "this is 
frozen".

> Can you take this patch for Linux-5.14 ??

No, sorry, it's way too late for that.  Please be specific about when 
you freeze specifications in the future, so we can all stay on the same 
page.

> 
> Regards,
> Anup
> 
>     Regards,
>     Anup
> 
>     >
>     > >
>     > > Regards,
>     > > Anup
>     > >
>     > >>
>     > >> This patch extends Linux RISC-V SBI implementation to detect
>     > >> and use SBI SRST extension.
>     > >>
>     > >> Signed-off-by: Anup Patel <anup.patel@wdc.com>
>     > >> Reviewed-by: Atish Patra <atish.patra@wdc.com>
>     > >> ---
>     > >>  arch/riscv/include/asm/sbi.h | 24 ++++++++++++++++++++++++
>     > >>  arch/riscv/kernel/sbi.c      | 35 +++++++++++++++++++++++++++++++++++
>     > >>  2 files changed, 59 insertions(+)
>     > >>
>     > >> diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h
>     > >> index 0d42693cb65e..289621da4a2a 100644
>     > >> --- a/arch/riscv/include/asm/sbi.h
>     > >> +++ b/arch/riscv/include/asm/sbi.h
>     > >> @@ -27,6 +27,7 @@ enum sbi_ext_id {
>     > >>         SBI_EXT_IPI = 0x735049,
>     > >>         SBI_EXT_RFENCE = 0x52464E43,
>     > >>         SBI_EXT_HSM = 0x48534D,
>     > >> +       SBI_EXT_SRST = 0x53525354,
>     > >>  };
>     > >>
>     > >>  enum sbi_ext_base_fid {
>     > >> @@ -70,6 +71,21 @@ enum sbi_hsm_hart_status {
>     > >>         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,
>     > >> +};
>     > >> +
>     > >>  #define SBI_SPEC_VERSION_DEFAULT       0x1
>     > >>  #define SBI_SPEC_VERSION_MAJOR_SHIFT   24
>     > >>  #define SBI_SPEC_VERSION_MAJOR_MASK    0x7f
>     > >> @@ -148,6 +164,14 @@ static inline unsigned long sbi_minor_version(void)
>     > >>         return sbi_spec_version & SBI_SPEC_VERSION_MINOR_MASK;
>     > >>  }
>     > >>
>     > >> +/* Make SBI version */
>     > >> +static inline unsigned long sbi_mk_version(unsigned long major,
>     > >> +                                           unsigned long minor)
>     > >> +{
>     > >> +       return ((major & SBI_SPEC_VERSION_MAJOR_MASK) <<
>     > >> +               SBI_SPEC_VERSION_MAJOR_SHIFT) | minor;
>     > >> +}
>     > >> +
>     > >>  int sbi_err_map_linux_errno(int err);
>     > >>  #else /* CONFIG_RISCV_SBI */
>     > >>  static inline int sbi_remote_fence_i(const unsigned long *hart_mask) { return -1; }
>     > >> diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c
>     > >> index 7402a417f38e..9a84f0cb5175 100644
>     > >> --- a/arch/riscv/kernel/sbi.c
>     > >> +++ b/arch/riscv/kernel/sbi.c
>     > >> @@ -7,6 +7,7 @@
>     > >>
>     > >>  #include <linux/init.h>
>     > >>  #include <linux/pm.h>
>     > >> +#include <linux/reboot.h>
>     > >>  #include <asm/sbi.h>
>     > >>  #include <asm/smp.h>
>     > >>
>     > >> @@ -501,6 +502,32 @@ int sbi_remote_hfence_vvma_asid(const unsigned long *hart_mask,
>     > >>  }
>     > >>  EXPORT_SYMBOL(sbi_remote_hfence_vvma_asid);
>     > >>
>     > >> +static void sbi_srst_reset(unsigned long type, unsigned long reason)
>     > >> +{
>     > >> +       sbi_ecall(SBI_EXT_SRST, SBI_EXT_SRST_RESET, type, reason,
>     > >> +                 0, 0, 0, 0);
>     > >> +       pr_warn("%s: type=0x%lx reason=0x%lx failed\n",
>     > >> +               __func__, type, reason);
>     > >> +}
>     > >> +
>     > >> +static int sbi_srst_reboot(struct notifier_block *this,
>     > >> +                          unsigned long mode, void *cmd)
>     > >> +{
>     > >> +       sbi_srst_reset((mode == REBOOT_WARM || mode == REBOOT_SOFT) ?
>     > >> +                      SBI_SRST_RESET_TYPE_WARM_REBOOT :
>     > >> +                      SBI_SRST_RESET_TYPE_COLD_REBOOT,
>     > >> +                      SBI_SRST_RESET_REASON_NONE);
>     > >> +       return NOTIFY_DONE;
>     > >> +}
>     > >> +
>     > >> +static struct notifier_block sbi_srst_reboot_nb;
>     > >> +
>     > >> +static void sbi_srst_power_off(void)
>     > >> +{
>     > >> +       sbi_srst_reset(SBI_SRST_RESET_TYPE_SHUTDOWN,
>     > >> +                      SBI_SRST_RESET_REASON_NONE);
>     > >> +}
>     > >> +
>     > >>  /**
>     > >>   * sbi_probe_extension() - Check if an SBI extension ID is supported or not.
>     > >>   * @extid: The extension ID to be probed.
>     > >> @@ -608,6 +635,14 @@ void __init sbi_init(void)
>     > >>                 } else {
>     > >>                         __sbi_rfence    = __sbi_rfence_v01;
>     > >>                 }
>     > >> +               if ((sbi_spec_version >= sbi_mk_version(0, 3)) &&
>     > >> +                   (sbi_probe_extension(SBI_EXT_SRST) > 0)) {
>     > >> +                       pr_info("SBI SRST extension detected\n");
>     > >> +                       pm_power_off = sbi_srst_power_off;
>     > >> +                       sbi_srst_reboot_nb.notifier_call = sbi_srst_reboot;
>     > >> +                       sbi_srst_reboot_nb.priority = 192;
>     > >> +                       register_restart_handler(&sbi_srst_reboot_nb);
>     > >> +               }
>     > >>         } else {
>     > >>                 __sbi_set_timer = __sbi_set_timer_v01;
>     > >>                 __sbi_send_ipi  = __sbi_send_ipi_v01;
>     > >> --
>     > >> 2.25.1
>     > >>
> 

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
@ 2021-07-11 18:59             ` Palmer Dabbelt
  0 siblings, 0 replies; 30+ messages in thread
From: Palmer Dabbelt @ 2021-07-11 18:59 UTC (permalink / raw)
  To: Anup Patel
  Cc: anup, Paul Walmsley, aou, Atish Patra, Alistair Francis,
	linux-riscv, linux-kernel

On Fri, 09 Jul 2021 22:01:02 PDT (-0700), Anup Patel wrote:
> 
> 
> On 08/07/21, 9:22 AM, "Anup Patel" <anup@brainfault.org> wrote:
> 
>     On Wed, Jul 7, 2021 at 1:57 AM Palmer Dabbelt <palmerdabbelt@google.com> wrote:
>     >
>     > On Mon, 21 Jun 2021 21:46:46 PDT (-0700), anup@brainfault.org wrote:
>     > > Hi Palmer,
>     > >
>     > > On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
>     > >>
>     > >> The SBI SRST extension provides a standard way to poweroff and
>     > >> reboot the system irrespective to whether Linux RISC-V S-mode
>     > >> is running natively (HS-mode) or inside Guest/VM (VS-mode).
>     > >>
>     > >> The SBI SRST extension is available in the SBI v0.3 specification.
>     > >> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
>     > >
>     > > Can you please consider this patch for Linux-5.14-rc1 ?
>     > >
>     > > The SBI v0.3 spec is already frozen and this patch has been
>     > > floating on LKML for quite a few months now.
>     >
>     > I didn't realize that SBI-0.3 had been frozed.  That link is to a RC,
>     > the cooresponding v0.3.0 tag isn't in that repo.  Can you give me a
>     > pointer to the frozen spec?
> 
>     Here's the link to SBI v0.3.0 tag:
>     https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0
> 
>     We treat RC tags as frozen in SBI spec because no functional
>     changes are done in SBI spec after it is tagged as RC. We only
>     do typo fixes and clarifications on SBI spec RC release.

Treating the 0.3.0-rc1 as frozen as soon as it's released is a 
terrifying policy: some of the fixes I sent in after I saw rc1 released 
change the actual meaning of the text, even if they were meant to change 
them to what I thought the intended meaning was supposed to be.  That 
means the actual text of 0.3.0-rc1 and 0.3.0 conflict with each other.  
Given that frozen comes with a guarntee of backwards compatibility, does 
that mean that the behavior allowed by 0.3.0-rc1 is compliant with the 
SBI, even if it was likely just allowed by a wording mistake?

If you're going to freeze things at rc1 then you really need to be quite 
explicit about that, as generally the point of RCs is to elicit 
review/testing.  Looks like I was the only person to have provided any 
review, so I guess I was the only one who assumed "We don't expect any 
significant functional changes. We will wait for any further feedback 
and release the official v0.3 in a month or so." actually meant "this is 
frozen".

> Can you take this patch for Linux-5.14 ??

No, sorry, it's way too late for that.  Please be specific about when 
you freeze specifications in the future, so we can all stay on the same 
page.

> 
> Regards,
> Anup
> 
>     Regards,
>     Anup
> 
>     >
>     > >
>     > > Regards,
>     > > Anup
>     > >
>     > >>
>     > >> This patch extends Linux RISC-V SBI implementation to detect
>     > >> and use SBI SRST extension.
>     > >>
>     > >> Signed-off-by: Anup Patel <anup.patel@wdc.com>
>     > >> Reviewed-by: Atish Patra <atish.patra@wdc.com>
>     > >> ---
>     > >>  arch/riscv/include/asm/sbi.h | 24 ++++++++++++++++++++++++
>     > >>  arch/riscv/kernel/sbi.c      | 35 +++++++++++++++++++++++++++++++++++
>     > >>  2 files changed, 59 insertions(+)
>     > >>
>     > >> diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h
>     > >> index 0d42693cb65e..289621da4a2a 100644
>     > >> --- a/arch/riscv/include/asm/sbi.h
>     > >> +++ b/arch/riscv/include/asm/sbi.h
>     > >> @@ -27,6 +27,7 @@ enum sbi_ext_id {
>     > >>         SBI_EXT_IPI = 0x735049,
>     > >>         SBI_EXT_RFENCE = 0x52464E43,
>     > >>         SBI_EXT_HSM = 0x48534D,
>     > >> +       SBI_EXT_SRST = 0x53525354,
>     > >>  };
>     > >>
>     > >>  enum sbi_ext_base_fid {
>     > >> @@ -70,6 +71,21 @@ enum sbi_hsm_hart_status {
>     > >>         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,
>     > >> +};
>     > >> +
>     > >>  #define SBI_SPEC_VERSION_DEFAULT       0x1
>     > >>  #define SBI_SPEC_VERSION_MAJOR_SHIFT   24
>     > >>  #define SBI_SPEC_VERSION_MAJOR_MASK    0x7f
>     > >> @@ -148,6 +164,14 @@ static inline unsigned long sbi_minor_version(void)
>     > >>         return sbi_spec_version & SBI_SPEC_VERSION_MINOR_MASK;
>     > >>  }
>     > >>
>     > >> +/* Make SBI version */
>     > >> +static inline unsigned long sbi_mk_version(unsigned long major,
>     > >> +                                           unsigned long minor)
>     > >> +{
>     > >> +       return ((major & SBI_SPEC_VERSION_MAJOR_MASK) <<
>     > >> +               SBI_SPEC_VERSION_MAJOR_SHIFT) | minor;
>     > >> +}
>     > >> +
>     > >>  int sbi_err_map_linux_errno(int err);
>     > >>  #else /* CONFIG_RISCV_SBI */
>     > >>  static inline int sbi_remote_fence_i(const unsigned long *hart_mask) { return -1; }
>     > >> diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c
>     > >> index 7402a417f38e..9a84f0cb5175 100644
>     > >> --- a/arch/riscv/kernel/sbi.c
>     > >> +++ b/arch/riscv/kernel/sbi.c
>     > >> @@ -7,6 +7,7 @@
>     > >>
>     > >>  #include <linux/init.h>
>     > >>  #include <linux/pm.h>
>     > >> +#include <linux/reboot.h>
>     > >>  #include <asm/sbi.h>
>     > >>  #include <asm/smp.h>
>     > >>
>     > >> @@ -501,6 +502,32 @@ int sbi_remote_hfence_vvma_asid(const unsigned long *hart_mask,
>     > >>  }
>     > >>  EXPORT_SYMBOL(sbi_remote_hfence_vvma_asid);
>     > >>
>     > >> +static void sbi_srst_reset(unsigned long type, unsigned long reason)
>     > >> +{
>     > >> +       sbi_ecall(SBI_EXT_SRST, SBI_EXT_SRST_RESET, type, reason,
>     > >> +                 0, 0, 0, 0);
>     > >> +       pr_warn("%s: type=0x%lx reason=0x%lx failed\n",
>     > >> +               __func__, type, reason);
>     > >> +}
>     > >> +
>     > >> +static int sbi_srst_reboot(struct notifier_block *this,
>     > >> +                          unsigned long mode, void *cmd)
>     > >> +{
>     > >> +       sbi_srst_reset((mode == REBOOT_WARM || mode == REBOOT_SOFT) ?
>     > >> +                      SBI_SRST_RESET_TYPE_WARM_REBOOT :
>     > >> +                      SBI_SRST_RESET_TYPE_COLD_REBOOT,
>     > >> +                      SBI_SRST_RESET_REASON_NONE);
>     > >> +       return NOTIFY_DONE;
>     > >> +}
>     > >> +
>     > >> +static struct notifier_block sbi_srst_reboot_nb;
>     > >> +
>     > >> +static void sbi_srst_power_off(void)
>     > >> +{
>     > >> +       sbi_srst_reset(SBI_SRST_RESET_TYPE_SHUTDOWN,
>     > >> +                      SBI_SRST_RESET_REASON_NONE);
>     > >> +}
>     > >> +
>     > >>  /**
>     > >>   * sbi_probe_extension() - Check if an SBI extension ID is supported or not.
>     > >>   * @extid: The extension ID to be probed.
>     > >> @@ -608,6 +635,14 @@ void __init sbi_init(void)
>     > >>                 } else {
>     > >>                         __sbi_rfence    = __sbi_rfence_v01;
>     > >>                 }
>     > >> +               if ((sbi_spec_version >= sbi_mk_version(0, 3)) &&
>     > >> +                   (sbi_probe_extension(SBI_EXT_SRST) > 0)) {
>     > >> +                       pr_info("SBI SRST extension detected\n");
>     > >> +                       pm_power_off = sbi_srst_power_off;
>     > >> +                       sbi_srst_reboot_nb.notifier_call = sbi_srst_reboot;
>     > >> +                       sbi_srst_reboot_nb.priority = 192;
>     > >> +                       register_restart_handler(&sbi_srst_reboot_nb);
>     > >> +               }
>     > >>         } else {
>     > >>                 __sbi_set_timer = __sbi_set_timer_v01;
>     > >>                 __sbi_send_ipi  = __sbi_send_ipi_v01;
>     > >> --
>     > >> 2.25.1
>     > >>
> 

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
  2021-07-11 18:59             ` Palmer Dabbelt
@ 2021-07-29  4:30               ` Palmer Dabbelt
  -1 siblings, 0 replies; 30+ messages in thread
From: Palmer Dabbelt @ 2021-07-29  4:30 UTC (permalink / raw)
  To: Anup Patel
  Cc: anup, Paul Walmsley, aou, Atish Patra, Alistair Francis,
	linux-riscv, linux-kernel

On Sun, 11 Jul 2021 11:59:33 PDT (-0700), Palmer Dabbelt wrote:
> On Fri, 09 Jul 2021 22:01:02 PDT (-0700), Anup Patel wrote:
>>
>>
>> On 08/07/21, 9:22 AM, "Anup Patel" <anup@brainfault.org> wrote:
>>
>>     On Wed, Jul 7, 2021 at 1:57 AM Palmer Dabbelt <palmerdabbelt@google.com> wrote:
>>     >
>>     > On Mon, 21 Jun 2021 21:46:46 PDT (-0700), anup@brainfault.org wrote:
>>     > > Hi Palmer,
>>     > >
>>     > > On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
>>     > >>
>>     > >> The SBI SRST extension provides a standard way to poweroff and
>>     > >> reboot the system irrespective to whether Linux RISC-V S-mode
>>     > >> is running natively (HS-mode) or inside Guest/VM (VS-mode).
>>     > >>
>>     > >> The SBI SRST extension is available in the SBI v0.3 specification.
>>     > >> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
>>     > >
>>     > > Can you please consider this patch for Linux-5.14-rc1 ?
>>     > >
>>     > > The SBI v0.3 spec is already frozen and this patch has been
>>     > > floating on LKML for quite a few months now.
>>     >
>>     > I didn't realize that SBI-0.3 had been frozed.  That link is to a RC,
>>     > the cooresponding v0.3.0 tag isn't in that repo.  Can you give me a
>>     > pointer to the frozen spec?
>>
>>     Here's the link to SBI v0.3.0 tag:
>>     https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0
>>
>>     We treat RC tags as frozen in SBI spec because no functional
>>     changes are done in SBI spec after it is tagged as RC. We only
>>     do typo fixes and clarifications on SBI spec RC release.
>
> Treating the 0.3.0-rc1 as frozen as soon as it's released is a
> terrifying policy: some of the fixes I sent in after I saw rc1 released
> change the actual meaning of the text, even if they were meant to change
> them to what I thought the intended meaning was supposed to be.  That
> means the actual text of 0.3.0-rc1 and 0.3.0 conflict with each other.
> Given that frozen comes with a guarntee of backwards compatibility, does
> that mean that the behavior allowed by 0.3.0-rc1 is compliant with the
> SBI, even if it was likely just allowed by a wording mistake?
>
> If you're going to freeze things at rc1 then you really need to be quite
> explicit about that, as generally the point of RCs is to elicit
> review/testing.  Looks like I was the only person to have provided any
> review, so I guess I was the only one who assumed "We don't expect any
> significant functional changes. We will wait for any further feedback
> and release the official v0.3 in a month or so." actually meant "this is
> frozen".
>
>> Can you take this patch for Linux-5.14 ??
>
> No, sorry, it's way too late for that.  Please be specific about when
> you freeze specifications in the future, so we can all stay on the same
> page.

I went and talked to Krste, and he says that there's a whole process for 
freezing extensions that this hasn't gone through.  They don't have 
anything written down that I can point to, but can you guys please just 
get on the same page about this?  It seems like every time I talk to 
someone from the RISC-V foundation I get a conflicting description of 
what's going on, and I'm entirely out of patience when it comes to 
getting blamed for all the chaos over there.

>
>>
>> Regards,
>> Anup
>>
>>     Regards,
>>     Anup
>>
>>     >
>>     > >
>>     > > Regards,
>>     > > Anup
>>     > >
>>     > >>
>>     > >> This patch extends Linux RISC-V SBI implementation to detect
>>     > >> and use SBI SRST extension.
>>     > >>
>>     > >> Signed-off-by: Anup Patel <anup.patel@wdc.com>
>>     > >> Reviewed-by: Atish Patra <atish.patra@wdc.com>
>>     > >> ---
>>     > >>  arch/riscv/include/asm/sbi.h | 24 ++++++++++++++++++++++++
>>     > >>  arch/riscv/kernel/sbi.c      | 35 +++++++++++++++++++++++++++++++++++
>>     > >>  2 files changed, 59 insertions(+)
>>     > >>
>>     > >> diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h
>>     > >> index 0d42693cb65e..289621da4a2a 100644
>>     > >> --- a/arch/riscv/include/asm/sbi.h
>>     > >> +++ b/arch/riscv/include/asm/sbi.h
>>     > >> @@ -27,6 +27,7 @@ enum sbi_ext_id {
>>     > >>         SBI_EXT_IPI = 0x735049,
>>     > >>         SBI_EXT_RFENCE = 0x52464E43,
>>     > >>         SBI_EXT_HSM = 0x48534D,
>>     > >> +       SBI_EXT_SRST = 0x53525354,
>>     > >>  };
>>     > >>
>>     > >>  enum sbi_ext_base_fid {
>>     > >> @@ -70,6 +71,21 @@ enum sbi_hsm_hart_status {
>>     > >>         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,
>>     > >> +};
>>     > >> +
>>     > >>  #define SBI_SPEC_VERSION_DEFAULT       0x1
>>     > >>  #define SBI_SPEC_VERSION_MAJOR_SHIFT   24
>>     > >>  #define SBI_SPEC_VERSION_MAJOR_MASK    0x7f
>>     > >> @@ -148,6 +164,14 @@ static inline unsigned long sbi_minor_version(void)
>>     > >>         return sbi_spec_version & SBI_SPEC_VERSION_MINOR_MASK;
>>     > >>  }
>>     > >>
>>     > >> +/* Make SBI version */
>>     > >> +static inline unsigned long sbi_mk_version(unsigned long major,
>>     > >> +                                           unsigned long minor)
>>     > >> +{
>>     > >> +       return ((major & SBI_SPEC_VERSION_MAJOR_MASK) <<
>>     > >> +               SBI_SPEC_VERSION_MAJOR_SHIFT) | minor;
>>     > >> +}
>>     > >> +
>>     > >>  int sbi_err_map_linux_errno(int err);
>>     > >>  #else /* CONFIG_RISCV_SBI */
>>     > >>  static inline int sbi_remote_fence_i(const unsigned long *hart_mask) { return -1; }
>>     > >> diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c
>>     > >> index 7402a417f38e..9a84f0cb5175 100644
>>     > >> --- a/arch/riscv/kernel/sbi.c
>>     > >> +++ b/arch/riscv/kernel/sbi.c
>>     > >> @@ -7,6 +7,7 @@
>>     > >>
>>     > >>  #include <linux/init.h>
>>     > >>  #include <linux/pm.h>
>>     > >> +#include <linux/reboot.h>
>>     > >>  #include <asm/sbi.h>
>>     > >>  #include <asm/smp.h>
>>     > >>
>>     > >> @@ -501,6 +502,32 @@ int sbi_remote_hfence_vvma_asid(const unsigned long *hart_mask,
>>     > >>  }
>>     > >>  EXPORT_SYMBOL(sbi_remote_hfence_vvma_asid);
>>     > >>
>>     > >> +static void sbi_srst_reset(unsigned long type, unsigned long reason)
>>     > >> +{
>>     > >> +       sbi_ecall(SBI_EXT_SRST, SBI_EXT_SRST_RESET, type, reason,
>>     > >> +                 0, 0, 0, 0);
>>     > >> +       pr_warn("%s: type=0x%lx reason=0x%lx failed\n",
>>     > >> +               __func__, type, reason);
>>     > >> +}
>>     > >> +
>>     > >> +static int sbi_srst_reboot(struct notifier_block *this,
>>     > >> +                          unsigned long mode, void *cmd)
>>     > >> +{
>>     > >> +       sbi_srst_reset((mode == REBOOT_WARM || mode == REBOOT_SOFT) ?
>>     > >> +                      SBI_SRST_RESET_TYPE_WARM_REBOOT :
>>     > >> +                      SBI_SRST_RESET_TYPE_COLD_REBOOT,
>>     > >> +                      SBI_SRST_RESET_REASON_NONE);
>>     > >> +       return NOTIFY_DONE;
>>     > >> +}
>>     > >> +
>>     > >> +static struct notifier_block sbi_srst_reboot_nb;
>>     > >> +
>>     > >> +static void sbi_srst_power_off(void)
>>     > >> +{
>>     > >> +       sbi_srst_reset(SBI_SRST_RESET_TYPE_SHUTDOWN,
>>     > >> +                      SBI_SRST_RESET_REASON_NONE);
>>     > >> +}
>>     > >> +
>>     > >>  /**
>>     > >>   * sbi_probe_extension() - Check if an SBI extension ID is supported or not.
>>     > >>   * @extid: The extension ID to be probed.
>>     > >> @@ -608,6 +635,14 @@ void __init sbi_init(void)
>>     > >>                 } else {
>>     > >>                         __sbi_rfence    = __sbi_rfence_v01;
>>     > >>                 }
>>     > >> +               if ((sbi_spec_version >= sbi_mk_version(0, 3)) &&
>>     > >> +                   (sbi_probe_extension(SBI_EXT_SRST) > 0)) {
>>     > >> +                       pr_info("SBI SRST extension detected\n");
>>     > >> +                       pm_power_off = sbi_srst_power_off;
>>     > >> +                       sbi_srst_reboot_nb.notifier_call = sbi_srst_reboot;
>>     > >> +                       sbi_srst_reboot_nb.priority = 192;
>>     > >> +                       register_restart_handler(&sbi_srst_reboot_nb);
>>     > >> +               }
>>     > >>         } else {
>>     > >>                 __sbi_set_timer = __sbi_set_timer_v01;
>>     > >>                 __sbi_send_ipi  = __sbi_send_ipi_v01;
>>     > >> --
>>     > >> 2.25.1
>>     > >>
>>

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
@ 2021-07-29  4:30               ` Palmer Dabbelt
  0 siblings, 0 replies; 30+ messages in thread
From: Palmer Dabbelt @ 2021-07-29  4:30 UTC (permalink / raw)
  To: Anup Patel
  Cc: anup, Paul Walmsley, aou, Atish Patra, Alistair Francis,
	linux-riscv, linux-kernel

On Sun, 11 Jul 2021 11:59:33 PDT (-0700), Palmer Dabbelt wrote:
> On Fri, 09 Jul 2021 22:01:02 PDT (-0700), Anup Patel wrote:
>>
>>
>> On 08/07/21, 9:22 AM, "Anup Patel" <anup@brainfault.org> wrote:
>>
>>     On Wed, Jul 7, 2021 at 1:57 AM Palmer Dabbelt <palmerdabbelt@google.com> wrote:
>>     >
>>     > On Mon, 21 Jun 2021 21:46:46 PDT (-0700), anup@brainfault.org wrote:
>>     > > Hi Palmer,
>>     > >
>>     > > On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
>>     > >>
>>     > >> The SBI SRST extension provides a standard way to poweroff and
>>     > >> reboot the system irrespective to whether Linux RISC-V S-mode
>>     > >> is running natively (HS-mode) or inside Guest/VM (VS-mode).
>>     > >>
>>     > >> The SBI SRST extension is available in the SBI v0.3 specification.
>>     > >> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
>>     > >
>>     > > Can you please consider this patch for Linux-5.14-rc1 ?
>>     > >
>>     > > The SBI v0.3 spec is already frozen and this patch has been
>>     > > floating on LKML for quite a few months now.
>>     >
>>     > I didn't realize that SBI-0.3 had been frozed.  That link is to a RC,
>>     > the cooresponding v0.3.0 tag isn't in that repo.  Can you give me a
>>     > pointer to the frozen spec?
>>
>>     Here's the link to SBI v0.3.0 tag:
>>     https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0
>>
>>     We treat RC tags as frozen in SBI spec because no functional
>>     changes are done in SBI spec after it is tagged as RC. We only
>>     do typo fixes and clarifications on SBI spec RC release.
>
> Treating the 0.3.0-rc1 as frozen as soon as it's released is a
> terrifying policy: some of the fixes I sent in after I saw rc1 released
> change the actual meaning of the text, even if they were meant to change
> them to what I thought the intended meaning was supposed to be.  That
> means the actual text of 0.3.0-rc1 and 0.3.0 conflict with each other.
> Given that frozen comes with a guarntee of backwards compatibility, does
> that mean that the behavior allowed by 0.3.0-rc1 is compliant with the
> SBI, even if it was likely just allowed by a wording mistake?
>
> If you're going to freeze things at rc1 then you really need to be quite
> explicit about that, as generally the point of RCs is to elicit
> review/testing.  Looks like I was the only person to have provided any
> review, so I guess I was the only one who assumed "We don't expect any
> significant functional changes. We will wait for any further feedback
> and release the official v0.3 in a month or so." actually meant "this is
> frozen".
>
>> Can you take this patch for Linux-5.14 ??
>
> No, sorry, it's way too late for that.  Please be specific about when
> you freeze specifications in the future, so we can all stay on the same
> page.

I went and talked to Krste, and he says that there's a whole process for 
freezing extensions that this hasn't gone through.  They don't have 
anything written down that I can point to, but can you guys please just 
get on the same page about this?  It seems like every time I talk to 
someone from the RISC-V foundation I get a conflicting description of 
what's going on, and I'm entirely out of patience when it comes to 
getting blamed for all the chaos over there.

>
>>
>> Regards,
>> Anup
>>
>>     Regards,
>>     Anup
>>
>>     >
>>     > >
>>     > > Regards,
>>     > > Anup
>>     > >
>>     > >>
>>     > >> This patch extends Linux RISC-V SBI implementation to detect
>>     > >> and use SBI SRST extension.
>>     > >>
>>     > >> Signed-off-by: Anup Patel <anup.patel@wdc.com>
>>     > >> Reviewed-by: Atish Patra <atish.patra@wdc.com>
>>     > >> ---
>>     > >>  arch/riscv/include/asm/sbi.h | 24 ++++++++++++++++++++++++
>>     > >>  arch/riscv/kernel/sbi.c      | 35 +++++++++++++++++++++++++++++++++++
>>     > >>  2 files changed, 59 insertions(+)
>>     > >>
>>     > >> diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h
>>     > >> index 0d42693cb65e..289621da4a2a 100644
>>     > >> --- a/arch/riscv/include/asm/sbi.h
>>     > >> +++ b/arch/riscv/include/asm/sbi.h
>>     > >> @@ -27,6 +27,7 @@ enum sbi_ext_id {
>>     > >>         SBI_EXT_IPI = 0x735049,
>>     > >>         SBI_EXT_RFENCE = 0x52464E43,
>>     > >>         SBI_EXT_HSM = 0x48534D,
>>     > >> +       SBI_EXT_SRST = 0x53525354,
>>     > >>  };
>>     > >>
>>     > >>  enum sbi_ext_base_fid {
>>     > >> @@ -70,6 +71,21 @@ enum sbi_hsm_hart_status {
>>     > >>         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,
>>     > >> +};
>>     > >> +
>>     > >>  #define SBI_SPEC_VERSION_DEFAULT       0x1
>>     > >>  #define SBI_SPEC_VERSION_MAJOR_SHIFT   24
>>     > >>  #define SBI_SPEC_VERSION_MAJOR_MASK    0x7f
>>     > >> @@ -148,6 +164,14 @@ static inline unsigned long sbi_minor_version(void)
>>     > >>         return sbi_spec_version & SBI_SPEC_VERSION_MINOR_MASK;
>>     > >>  }
>>     > >>
>>     > >> +/* Make SBI version */
>>     > >> +static inline unsigned long sbi_mk_version(unsigned long major,
>>     > >> +                                           unsigned long minor)
>>     > >> +{
>>     > >> +       return ((major & SBI_SPEC_VERSION_MAJOR_MASK) <<
>>     > >> +               SBI_SPEC_VERSION_MAJOR_SHIFT) | minor;
>>     > >> +}
>>     > >> +
>>     > >>  int sbi_err_map_linux_errno(int err);
>>     > >>  #else /* CONFIG_RISCV_SBI */
>>     > >>  static inline int sbi_remote_fence_i(const unsigned long *hart_mask) { return -1; }
>>     > >> diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c
>>     > >> index 7402a417f38e..9a84f0cb5175 100644
>>     > >> --- a/arch/riscv/kernel/sbi.c
>>     > >> +++ b/arch/riscv/kernel/sbi.c
>>     > >> @@ -7,6 +7,7 @@
>>     > >>
>>     > >>  #include <linux/init.h>
>>     > >>  #include <linux/pm.h>
>>     > >> +#include <linux/reboot.h>
>>     > >>  #include <asm/sbi.h>
>>     > >>  #include <asm/smp.h>
>>     > >>
>>     > >> @@ -501,6 +502,32 @@ int sbi_remote_hfence_vvma_asid(const unsigned long *hart_mask,
>>     > >>  }
>>     > >>  EXPORT_SYMBOL(sbi_remote_hfence_vvma_asid);
>>     > >>
>>     > >> +static void sbi_srst_reset(unsigned long type, unsigned long reason)
>>     > >> +{
>>     > >> +       sbi_ecall(SBI_EXT_SRST, SBI_EXT_SRST_RESET, type, reason,
>>     > >> +                 0, 0, 0, 0);
>>     > >> +       pr_warn("%s: type=0x%lx reason=0x%lx failed\n",
>>     > >> +               __func__, type, reason);
>>     > >> +}
>>     > >> +
>>     > >> +static int sbi_srst_reboot(struct notifier_block *this,
>>     > >> +                          unsigned long mode, void *cmd)
>>     > >> +{
>>     > >> +       sbi_srst_reset((mode == REBOOT_WARM || mode == REBOOT_SOFT) ?
>>     > >> +                      SBI_SRST_RESET_TYPE_WARM_REBOOT :
>>     > >> +                      SBI_SRST_RESET_TYPE_COLD_REBOOT,
>>     > >> +                      SBI_SRST_RESET_REASON_NONE);
>>     > >> +       return NOTIFY_DONE;
>>     > >> +}
>>     > >> +
>>     > >> +static struct notifier_block sbi_srst_reboot_nb;
>>     > >> +
>>     > >> +static void sbi_srst_power_off(void)
>>     > >> +{
>>     > >> +       sbi_srst_reset(SBI_SRST_RESET_TYPE_SHUTDOWN,
>>     > >> +                      SBI_SRST_RESET_REASON_NONE);
>>     > >> +}
>>     > >> +
>>     > >>  /**
>>     > >>   * sbi_probe_extension() - Check if an SBI extension ID is supported or not.
>>     > >>   * @extid: The extension ID to be probed.
>>     > >> @@ -608,6 +635,14 @@ void __init sbi_init(void)
>>     > >>                 } else {
>>     > >>                         __sbi_rfence    = __sbi_rfence_v01;
>>     > >>                 }
>>     > >> +               if ((sbi_spec_version >= sbi_mk_version(0, 3)) &&
>>     > >> +                   (sbi_probe_extension(SBI_EXT_SRST) > 0)) {
>>     > >> +                       pr_info("SBI SRST extension detected\n");
>>     > >> +                       pm_power_off = sbi_srst_power_off;
>>     > >> +                       sbi_srst_reboot_nb.notifier_call = sbi_srst_reboot;
>>     > >> +                       sbi_srst_reboot_nb.priority = 192;
>>     > >> +                       register_restart_handler(&sbi_srst_reboot_nb);
>>     > >> +               }
>>     > >>         } else {
>>     > >>                 __sbi_set_timer = __sbi_set_timer_v01;
>>     > >>                 __sbi_send_ipi  = __sbi_send_ipi_v01;
>>     > >> --
>>     > >> 2.25.1
>>     > >>
>>

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
  2021-07-29  4:30               ` Palmer Dabbelt
@ 2021-07-29  4:44                 ` Anup Patel
  -1 siblings, 0 replies; 30+ messages in thread
From: Anup Patel @ 2021-07-29  4:44 UTC (permalink / raw)
  To: Palmer Dabbelt
  Cc: Anup Patel, Paul Walmsley, Albert Ou, Atish Patra,
	Alistair Francis, linux-riscv, linux-kernel@vger.kernel.org List

On Thu, Jul 29, 2021 at 10:00 AM Palmer Dabbelt <palmer@dabbelt.com> wrote:
>
> On Sun, 11 Jul 2021 11:59:33 PDT (-0700), Palmer Dabbelt wrote:
> > On Fri, 09 Jul 2021 22:01:02 PDT (-0700), Anup Patel wrote:
> >>
> >>
> >> On 08/07/21, 9:22 AM, "Anup Patel" <anup@brainfault.org> wrote:
> >>
> >>     On Wed, Jul 7, 2021 at 1:57 AM Palmer Dabbelt <palmerdabbelt@google.com> wrote:
> >>     >
> >>     > On Mon, 21 Jun 2021 21:46:46 PDT (-0700), anup@brainfault.org wrote:
> >>     > > Hi Palmer,
> >>     > >
> >>     > > On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
> >>     > >>
> >>     > >> The SBI SRST extension provides a standard way to poweroff and
> >>     > >> reboot the system irrespective to whether Linux RISC-V S-mode
> >>     > >> is running natively (HS-mode) or inside Guest/VM (VS-mode).
> >>     > >>
> >>     > >> The SBI SRST extension is available in the SBI v0.3 specification.
> >>     > >> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
> >>     > >
> >>     > > Can you please consider this patch for Linux-5.14-rc1 ?
> >>     > >
> >>     > > The SBI v0.3 spec is already frozen and this patch has been
> >>     > > floating on LKML for quite a few months now.
> >>     >
> >>     > I didn't realize that SBI-0.3 had been frozed.  That link is to a RC,
> >>     > the cooresponding v0.3.0 tag isn't in that repo.  Can you give me a
> >>     > pointer to the frozen spec?
> >>
> >>     Here's the link to SBI v0.3.0 tag:
> >>     https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0
> >>
> >>     We treat RC tags as frozen in SBI spec because no functional
> >>     changes are done in SBI spec after it is tagged as RC. We only
> >>     do typo fixes and clarifications on SBI spec RC release.
> >
> > Treating the 0.3.0-rc1 as frozen as soon as it's released is a
> > terrifying policy: some of the fixes I sent in after I saw rc1 released
> > change the actual meaning of the text, even if they were meant to change
> > them to what I thought the intended meaning was supposed to be.  That
> > means the actual text of 0.3.0-rc1 and 0.3.0 conflict with each other.
> > Given that frozen comes with a guarntee of backwards compatibility, does
> > that mean that the behavior allowed by 0.3.0-rc1 is compliant with the
> > SBI, even if it was likely just allowed by a wording mistake?
> >
> > If you're going to freeze things at rc1 then you really need to be quite
> > explicit about that, as generally the point of RCs is to elicit
> > review/testing.  Looks like I was the only person to have provided any
> > review, so I guess I was the only one who assumed "We don't expect any
> > significant functional changes. We will wait for any further feedback
> > and release the official v0.3 in a month or so." actually meant "this is
> > frozen".
> >
> >> Can you take this patch for Linux-5.14 ??
> >
> > No, sorry, it's way too late for that.  Please be specific about when
> > you freeze specifications in the future, so we can all stay on the same
> > page.
>
> I went and talked to Krste, and he says that there's a whole process for
> freezing extensions that this hasn't gone through.  They don't have
> anything written down that I can point to, but can you guys please just
> get on the same page about this?  It seems like every time I talk to
> someone from the RISC-V foundation I get a conflicting description of
> what's going on, and I'm entirely out of patience when it comes to
> getting blamed for all the chaos over there.

The RISC-V SBI is a pure software specification and not a ISA specification.
In fact, this is not even non-ISA specification dealing with a MMIO
(or hardware) device. There is no process defined for RISC-V software
specifications.

The last SBI v0.2 release was done by you (Palmer). At that time, you
simply tagged the SBI v0.2 release and announced it everywhere.

Regards,
Anup

>
> >
> >>
> >> Regards,
> >> Anup
> >>
> >>     Regards,
> >>     Anup
> >>
> >>     >
> >>     > >
> >>     > > Regards,
> >>     > > Anup
> >>     > >
> >>     > >>
> >>     > >> This patch extends Linux RISC-V SBI implementation to detect
> >>     > >> and use SBI SRST extension.
> >>     > >>
> >>     > >> Signed-off-by: Anup Patel <anup.patel@wdc.com>
> >>     > >> Reviewed-by: Atish Patra <atish.patra@wdc.com>
> >>     > >> ---
> >>     > >>  arch/riscv/include/asm/sbi.h | 24 ++++++++++++++++++++++++
> >>     > >>  arch/riscv/kernel/sbi.c      | 35 +++++++++++++++++++++++++++++++++++
> >>     > >>  2 files changed, 59 insertions(+)
> >>     > >>
> >>     > >> diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h
> >>     > >> index 0d42693cb65e..289621da4a2a 100644
> >>     > >> --- a/arch/riscv/include/asm/sbi.h
> >>     > >> +++ b/arch/riscv/include/asm/sbi.h
> >>     > >> @@ -27,6 +27,7 @@ enum sbi_ext_id {
> >>     > >>         SBI_EXT_IPI = 0x735049,
> >>     > >>         SBI_EXT_RFENCE = 0x52464E43,
> >>     > >>         SBI_EXT_HSM = 0x48534D,
> >>     > >> +       SBI_EXT_SRST = 0x53525354,
> >>     > >>  };
> >>     > >>
> >>     > >>  enum sbi_ext_base_fid {
> >>     > >> @@ -70,6 +71,21 @@ enum sbi_hsm_hart_status {
> >>     > >>         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,
> >>     > >> +};
> >>     > >> +
> >>     > >>  #define SBI_SPEC_VERSION_DEFAULT       0x1
> >>     > >>  #define SBI_SPEC_VERSION_MAJOR_SHIFT   24
> >>     > >>  #define SBI_SPEC_VERSION_MAJOR_MASK    0x7f
> >>     > >> @@ -148,6 +164,14 @@ static inline unsigned long sbi_minor_version(void)
> >>     > >>         return sbi_spec_version & SBI_SPEC_VERSION_MINOR_MASK;
> >>     > >>  }
> >>     > >>
> >>     > >> +/* Make SBI version */
> >>     > >> +static inline unsigned long sbi_mk_version(unsigned long major,
> >>     > >> +                                           unsigned long minor)
> >>     > >> +{
> >>     > >> +       return ((major & SBI_SPEC_VERSION_MAJOR_MASK) <<
> >>     > >> +               SBI_SPEC_VERSION_MAJOR_SHIFT) | minor;
> >>     > >> +}
> >>     > >> +
> >>     > >>  int sbi_err_map_linux_errno(int err);
> >>     > >>  #else /* CONFIG_RISCV_SBI */
> >>     > >>  static inline int sbi_remote_fence_i(const unsigned long *hart_mask) { return -1; }
> >>     > >> diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c
> >>     > >> index 7402a417f38e..9a84f0cb5175 100644
> >>     > >> --- a/arch/riscv/kernel/sbi.c
> >>     > >> +++ b/arch/riscv/kernel/sbi.c
> >>     > >> @@ -7,6 +7,7 @@
> >>     > >>
> >>     > >>  #include <linux/init.h>
> >>     > >>  #include <linux/pm.h>
> >>     > >> +#include <linux/reboot.h>
> >>     > >>  #include <asm/sbi.h>
> >>     > >>  #include <asm/smp.h>
> >>     > >>
> >>     > >> @@ -501,6 +502,32 @@ int sbi_remote_hfence_vvma_asid(const unsigned long *hart_mask,
> >>     > >>  }
> >>     > >>  EXPORT_SYMBOL(sbi_remote_hfence_vvma_asid);
> >>     > >>
> >>     > >> +static void sbi_srst_reset(unsigned long type, unsigned long reason)
> >>     > >> +{
> >>     > >> +       sbi_ecall(SBI_EXT_SRST, SBI_EXT_SRST_RESET, type, reason,
> >>     > >> +                 0, 0, 0, 0);
> >>     > >> +       pr_warn("%s: type=0x%lx reason=0x%lx failed\n",
> >>     > >> +               __func__, type, reason);
> >>     > >> +}
> >>     > >> +
> >>     > >> +static int sbi_srst_reboot(struct notifier_block *this,
> >>     > >> +                          unsigned long mode, void *cmd)
> >>     > >> +{
> >>     > >> +       sbi_srst_reset((mode == REBOOT_WARM || mode == REBOOT_SOFT) ?
> >>     > >> +                      SBI_SRST_RESET_TYPE_WARM_REBOOT :
> >>     > >> +                      SBI_SRST_RESET_TYPE_COLD_REBOOT,
> >>     > >> +                      SBI_SRST_RESET_REASON_NONE);
> >>     > >> +       return NOTIFY_DONE;
> >>     > >> +}
> >>     > >> +
> >>     > >> +static struct notifier_block sbi_srst_reboot_nb;
> >>     > >> +
> >>     > >> +static void sbi_srst_power_off(void)
> >>     > >> +{
> >>     > >> +       sbi_srst_reset(SBI_SRST_RESET_TYPE_SHUTDOWN,
> >>     > >> +                      SBI_SRST_RESET_REASON_NONE);
> >>     > >> +}
> >>     > >> +
> >>     > >>  /**
> >>     > >>   * sbi_probe_extension() - Check if an SBI extension ID is supported or not.
> >>     > >>   * @extid: The extension ID to be probed.
> >>     > >> @@ -608,6 +635,14 @@ void __init sbi_init(void)
> >>     > >>                 } else {
> >>     > >>                         __sbi_rfence    = __sbi_rfence_v01;
> >>     > >>                 }
> >>     > >> +               if ((sbi_spec_version >= sbi_mk_version(0, 3)) &&
> >>     > >> +                   (sbi_probe_extension(SBI_EXT_SRST) > 0)) {
> >>     > >> +                       pr_info("SBI SRST extension detected\n");
> >>     > >> +                       pm_power_off = sbi_srst_power_off;
> >>     > >> +                       sbi_srst_reboot_nb.notifier_call = sbi_srst_reboot;
> >>     > >> +                       sbi_srst_reboot_nb.priority = 192;
> >>     > >> +                       register_restart_handler(&sbi_srst_reboot_nb);
> >>     > >> +               }
> >>     > >>         } else {
> >>     > >>                 __sbi_set_timer = __sbi_set_timer_v01;
> >>     > >>                 __sbi_send_ipi  = __sbi_send_ipi_v01;
> >>     > >> --
> >>     > >> 2.25.1
> >>     > >>
> >>

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
@ 2021-07-29  4:44                 ` Anup Patel
  0 siblings, 0 replies; 30+ messages in thread
From: Anup Patel @ 2021-07-29  4:44 UTC (permalink / raw)
  To: Palmer Dabbelt
  Cc: Anup Patel, Paul Walmsley, Albert Ou, Atish Patra,
	Alistair Francis, linux-riscv, linux-kernel@vger.kernel.org List

On Thu, Jul 29, 2021 at 10:00 AM Palmer Dabbelt <palmer@dabbelt.com> wrote:
>
> On Sun, 11 Jul 2021 11:59:33 PDT (-0700), Palmer Dabbelt wrote:
> > On Fri, 09 Jul 2021 22:01:02 PDT (-0700), Anup Patel wrote:
> >>
> >>
> >> On 08/07/21, 9:22 AM, "Anup Patel" <anup@brainfault.org> wrote:
> >>
> >>     On Wed, Jul 7, 2021 at 1:57 AM Palmer Dabbelt <palmerdabbelt@google.com> wrote:
> >>     >
> >>     > On Mon, 21 Jun 2021 21:46:46 PDT (-0700), anup@brainfault.org wrote:
> >>     > > Hi Palmer,
> >>     > >
> >>     > > On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
> >>     > >>
> >>     > >> The SBI SRST extension provides a standard way to poweroff and
> >>     > >> reboot the system irrespective to whether Linux RISC-V S-mode
> >>     > >> is running natively (HS-mode) or inside Guest/VM (VS-mode).
> >>     > >>
> >>     > >> The SBI SRST extension is available in the SBI v0.3 specification.
> >>     > >> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
> >>     > >
> >>     > > Can you please consider this patch for Linux-5.14-rc1 ?
> >>     > >
> >>     > > The SBI v0.3 spec is already frozen and this patch has been
> >>     > > floating on LKML for quite a few months now.
> >>     >
> >>     > I didn't realize that SBI-0.3 had been frozed.  That link is to a RC,
> >>     > the cooresponding v0.3.0 tag isn't in that repo.  Can you give me a
> >>     > pointer to the frozen spec?
> >>
> >>     Here's the link to SBI v0.3.0 tag:
> >>     https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0
> >>
> >>     We treat RC tags as frozen in SBI spec because no functional
> >>     changes are done in SBI spec after it is tagged as RC. We only
> >>     do typo fixes and clarifications on SBI spec RC release.
> >
> > Treating the 0.3.0-rc1 as frozen as soon as it's released is a
> > terrifying policy: some of the fixes I sent in after I saw rc1 released
> > change the actual meaning of the text, even if they were meant to change
> > them to what I thought the intended meaning was supposed to be.  That
> > means the actual text of 0.3.0-rc1 and 0.3.0 conflict with each other.
> > Given that frozen comes with a guarntee of backwards compatibility, does
> > that mean that the behavior allowed by 0.3.0-rc1 is compliant with the
> > SBI, even if it was likely just allowed by a wording mistake?
> >
> > If you're going to freeze things at rc1 then you really need to be quite
> > explicit about that, as generally the point of RCs is to elicit
> > review/testing.  Looks like I was the only person to have provided any
> > review, so I guess I was the only one who assumed "We don't expect any
> > significant functional changes. We will wait for any further feedback
> > and release the official v0.3 in a month or so." actually meant "this is
> > frozen".
> >
> >> Can you take this patch for Linux-5.14 ??
> >
> > No, sorry, it's way too late for that.  Please be specific about when
> > you freeze specifications in the future, so we can all stay on the same
> > page.
>
> I went and talked to Krste, and he says that there's a whole process for
> freezing extensions that this hasn't gone through.  They don't have
> anything written down that I can point to, but can you guys please just
> get on the same page about this?  It seems like every time I talk to
> someone from the RISC-V foundation I get a conflicting description of
> what's going on, and I'm entirely out of patience when it comes to
> getting blamed for all the chaos over there.

The RISC-V SBI is a pure software specification and not a ISA specification.
In fact, this is not even non-ISA specification dealing with a MMIO
(or hardware) device. There is no process defined for RISC-V software
specifications.

The last SBI v0.2 release was done by you (Palmer). At that time, you
simply tagged the SBI v0.2 release and announced it everywhere.

Regards,
Anup

>
> >
> >>
> >> Regards,
> >> Anup
> >>
> >>     Regards,
> >>     Anup
> >>
> >>     >
> >>     > >
> >>     > > Regards,
> >>     > > Anup
> >>     > >
> >>     > >>
> >>     > >> This patch extends Linux RISC-V SBI implementation to detect
> >>     > >> and use SBI SRST extension.
> >>     > >>
> >>     > >> Signed-off-by: Anup Patel <anup.patel@wdc.com>
> >>     > >> Reviewed-by: Atish Patra <atish.patra@wdc.com>
> >>     > >> ---
> >>     > >>  arch/riscv/include/asm/sbi.h | 24 ++++++++++++++++++++++++
> >>     > >>  arch/riscv/kernel/sbi.c      | 35 +++++++++++++++++++++++++++++++++++
> >>     > >>  2 files changed, 59 insertions(+)
> >>     > >>
> >>     > >> diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h
> >>     > >> index 0d42693cb65e..289621da4a2a 100644
> >>     > >> --- a/arch/riscv/include/asm/sbi.h
> >>     > >> +++ b/arch/riscv/include/asm/sbi.h
> >>     > >> @@ -27,6 +27,7 @@ enum sbi_ext_id {
> >>     > >>         SBI_EXT_IPI = 0x735049,
> >>     > >>         SBI_EXT_RFENCE = 0x52464E43,
> >>     > >>         SBI_EXT_HSM = 0x48534D,
> >>     > >> +       SBI_EXT_SRST = 0x53525354,
> >>     > >>  };
> >>     > >>
> >>     > >>  enum sbi_ext_base_fid {
> >>     > >> @@ -70,6 +71,21 @@ enum sbi_hsm_hart_status {
> >>     > >>         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,
> >>     > >> +};
> >>     > >> +
> >>     > >>  #define SBI_SPEC_VERSION_DEFAULT       0x1
> >>     > >>  #define SBI_SPEC_VERSION_MAJOR_SHIFT   24
> >>     > >>  #define SBI_SPEC_VERSION_MAJOR_MASK    0x7f
> >>     > >> @@ -148,6 +164,14 @@ static inline unsigned long sbi_minor_version(void)
> >>     > >>         return sbi_spec_version & SBI_SPEC_VERSION_MINOR_MASK;
> >>     > >>  }
> >>     > >>
> >>     > >> +/* Make SBI version */
> >>     > >> +static inline unsigned long sbi_mk_version(unsigned long major,
> >>     > >> +                                           unsigned long minor)
> >>     > >> +{
> >>     > >> +       return ((major & SBI_SPEC_VERSION_MAJOR_MASK) <<
> >>     > >> +               SBI_SPEC_VERSION_MAJOR_SHIFT) | minor;
> >>     > >> +}
> >>     > >> +
> >>     > >>  int sbi_err_map_linux_errno(int err);
> >>     > >>  #else /* CONFIG_RISCV_SBI */
> >>     > >>  static inline int sbi_remote_fence_i(const unsigned long *hart_mask) { return -1; }
> >>     > >> diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c
> >>     > >> index 7402a417f38e..9a84f0cb5175 100644
> >>     > >> --- a/arch/riscv/kernel/sbi.c
> >>     > >> +++ b/arch/riscv/kernel/sbi.c
> >>     > >> @@ -7,6 +7,7 @@
> >>     > >>
> >>     > >>  #include <linux/init.h>
> >>     > >>  #include <linux/pm.h>
> >>     > >> +#include <linux/reboot.h>
> >>     > >>  #include <asm/sbi.h>
> >>     > >>  #include <asm/smp.h>
> >>     > >>
> >>     > >> @@ -501,6 +502,32 @@ int sbi_remote_hfence_vvma_asid(const unsigned long *hart_mask,
> >>     > >>  }
> >>     > >>  EXPORT_SYMBOL(sbi_remote_hfence_vvma_asid);
> >>     > >>
> >>     > >> +static void sbi_srst_reset(unsigned long type, unsigned long reason)
> >>     > >> +{
> >>     > >> +       sbi_ecall(SBI_EXT_SRST, SBI_EXT_SRST_RESET, type, reason,
> >>     > >> +                 0, 0, 0, 0);
> >>     > >> +       pr_warn("%s: type=0x%lx reason=0x%lx failed\n",
> >>     > >> +               __func__, type, reason);
> >>     > >> +}
> >>     > >> +
> >>     > >> +static int sbi_srst_reboot(struct notifier_block *this,
> >>     > >> +                          unsigned long mode, void *cmd)
> >>     > >> +{
> >>     > >> +       sbi_srst_reset((mode == REBOOT_WARM || mode == REBOOT_SOFT) ?
> >>     > >> +                      SBI_SRST_RESET_TYPE_WARM_REBOOT :
> >>     > >> +                      SBI_SRST_RESET_TYPE_COLD_REBOOT,
> >>     > >> +                      SBI_SRST_RESET_REASON_NONE);
> >>     > >> +       return NOTIFY_DONE;
> >>     > >> +}
> >>     > >> +
> >>     > >> +static struct notifier_block sbi_srst_reboot_nb;
> >>     > >> +
> >>     > >> +static void sbi_srst_power_off(void)
> >>     > >> +{
> >>     > >> +       sbi_srst_reset(SBI_SRST_RESET_TYPE_SHUTDOWN,
> >>     > >> +                      SBI_SRST_RESET_REASON_NONE);
> >>     > >> +}
> >>     > >> +
> >>     > >>  /**
> >>     > >>   * sbi_probe_extension() - Check if an SBI extension ID is supported or not.
> >>     > >>   * @extid: The extension ID to be probed.
> >>     > >> @@ -608,6 +635,14 @@ void __init sbi_init(void)
> >>     > >>                 } else {
> >>     > >>                         __sbi_rfence    = __sbi_rfence_v01;
> >>     > >>                 }
> >>     > >> +               if ((sbi_spec_version >= sbi_mk_version(0, 3)) &&
> >>     > >> +                   (sbi_probe_extension(SBI_EXT_SRST) > 0)) {
> >>     > >> +                       pr_info("SBI SRST extension detected\n");
> >>     > >> +                       pm_power_off = sbi_srst_power_off;
> >>     > >> +                       sbi_srst_reboot_nb.notifier_call = sbi_srst_reboot;
> >>     > >> +                       sbi_srst_reboot_nb.priority = 192;
> >>     > >> +                       register_restart_handler(&sbi_srst_reboot_nb);
> >>     > >> +               }
> >>     > >>         } else {
> >>     > >>                 __sbi_set_timer = __sbi_set_timer_v01;
> >>     > >>                 __sbi_send_ipi  = __sbi_send_ipi_v01;
> >>     > >> --
> >>     > >> 2.25.1
> >>     > >>
> >>

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
  2021-07-29  4:30               ` Palmer Dabbelt
@ 2021-07-29  5:18                 ` Anup Patel
  -1 siblings, 0 replies; 30+ messages in thread
From: Anup Patel @ 2021-07-29  5:18 UTC (permalink / raw)
  To: Palmer Dabbelt
  Cc: Anup Patel, Paul Walmsley, Albert Ou, Atish Patra,
	Alistair Francis, linux-riscv, linux-kernel@vger.kernel.org List

On Thu, Jul 29, 2021 at 10:00 AM Palmer Dabbelt <palmer@dabbelt.com> wrote:
>
> On Sun, 11 Jul 2021 11:59:33 PDT (-0700), Palmer Dabbelt wrote:
> > On Fri, 09 Jul 2021 22:01:02 PDT (-0700), Anup Patel wrote:
> >>
> >>
> >> On 08/07/21, 9:22 AM, "Anup Patel" <anup@brainfault.org> wrote:
> >>
> >>     On Wed, Jul 7, 2021 at 1:57 AM Palmer Dabbelt <palmerdabbelt@google.com> wrote:
> >>     >
> >>     > On Mon, 21 Jun 2021 21:46:46 PDT (-0700), anup@brainfault.org wrote:
> >>     > > Hi Palmer,
> >>     > >
> >>     > > On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
> >>     > >>
> >>     > >> The SBI SRST extension provides a standard way to poweroff and
> >>     > >> reboot the system irrespective to whether Linux RISC-V S-mode
> >>     > >> is running natively (HS-mode) or inside Guest/VM (VS-mode).
> >>     > >>
> >>     > >> The SBI SRST extension is available in the SBI v0.3 specification.
> >>     > >> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
> >>     > >
> >>     > > Can you please consider this patch for Linux-5.14-rc1 ?
> >>     > >
> >>     > > The SBI v0.3 spec is already frozen and this patch has been
> >>     > > floating on LKML for quite a few months now.
> >>     >
> >>     > I didn't realize that SBI-0.3 had been frozed.  That link is to a RC,
> >>     > the cooresponding v0.3.0 tag isn't in that repo.  Can you give me a
> >>     > pointer to the frozen spec?
> >>
> >>     Here's the link to SBI v0.3.0 tag:
> >>     https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0
> >>
> >>     We treat RC tags as frozen in SBI spec because no functional
> >>     changes are done in SBI spec after it is tagged as RC. We only
> >>     do typo fixes and clarifications on SBI spec RC release.
> >
> > Treating the 0.3.0-rc1 as frozen as soon as it's released is a
> > terrifying policy: some of the fixes I sent in after I saw rc1 released
> > change the actual meaning of the text, even if they were meant to change
> > them to what I thought the intended meaning was supposed to be.  That
> > means the actual text of 0.3.0-rc1 and 0.3.0 conflict with each other.
> > Given that frozen comes with a guarntee of backwards compatibility, does
> > that mean that the behavior allowed by 0.3.0-rc1 is compliant with the
> > SBI, even if it was likely just allowed by a wording mistake?
> >
> > If you're going to freeze things at rc1 then you really need to be quite
> > explicit about that, as generally the point of RCs is to elicit
> > review/testing.  Looks like I was the only person to have provided any
> > review, so I guess I was the only one who assumed "We don't expect any
> > significant functional changes. We will wait for any further feedback
> > and release the official v0.3 in a month or so." actually meant "this is
> > frozen".
> >
> >> Can you take this patch for Linux-5.14 ??
> >
> > No, sorry, it's way too late for that.  Please be specific about when
> > you freeze specifications in the future, so we can all stay on the same
> > page.
>
> I went and talked to Krste, and he says that there's a whole process for
> freezing extensions that this hasn't gone through.  They don't have
> anything written down that I can point to, but can you guys please just
> get on the same page about this?  It seems like every time I talk to
> someone from the RISC-V foundation I get a conflicting description of
> what's going on, and I'm entirely out of patience when it comes to
> getting blamed for all the chaos over there.

For your information, the SBI spec is owned by the platform HSC so
feel free to talk to the chairs Kumar Sankarn and Atish Patra.

The SBI v0.3 release has been approved by the platform HSC.

There are many working groups in RISC-V International and a lot of
activities happening so for any specification you should talk to the
people who are owning the specification first.

Regards,
Anup

>
> >
> >>
> >> Regards,
> >> Anup
> >>
> >>     Regards,
> >>     Anup
> >>
> >>     >
> >>     > >
> >>     > > Regards,
> >>     > > Anup
> >>     > >
> >>     > >>
> >>     > >> This patch extends Linux RISC-V SBI implementation to detect
> >>     > >> and use SBI SRST extension.
> >>     > >>
> >>     > >> Signed-off-by: Anup Patel <anup.patel@wdc.com>
> >>     > >> Reviewed-by: Atish Patra <atish.patra@wdc.com>
> >>     > >> ---
> >>     > >>  arch/riscv/include/asm/sbi.h | 24 ++++++++++++++++++++++++
> >>     > >>  arch/riscv/kernel/sbi.c      | 35 +++++++++++++++++++++++++++++++++++
> >>     > >>  2 files changed, 59 insertions(+)
> >>     > >>
> >>     > >> diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h
> >>     > >> index 0d42693cb65e..289621da4a2a 100644
> >>     > >> --- a/arch/riscv/include/asm/sbi.h
> >>     > >> +++ b/arch/riscv/include/asm/sbi.h
> >>     > >> @@ -27,6 +27,7 @@ enum sbi_ext_id {
> >>     > >>         SBI_EXT_IPI = 0x735049,
> >>     > >>         SBI_EXT_RFENCE = 0x52464E43,
> >>     > >>         SBI_EXT_HSM = 0x48534D,
> >>     > >> +       SBI_EXT_SRST = 0x53525354,
> >>     > >>  };
> >>     > >>
> >>     > >>  enum sbi_ext_base_fid {
> >>     > >> @@ -70,6 +71,21 @@ enum sbi_hsm_hart_status {
> >>     > >>         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,
> >>     > >> +};
> >>     > >> +
> >>     > >>  #define SBI_SPEC_VERSION_DEFAULT       0x1
> >>     > >>  #define SBI_SPEC_VERSION_MAJOR_SHIFT   24
> >>     > >>  #define SBI_SPEC_VERSION_MAJOR_MASK    0x7f
> >>     > >> @@ -148,6 +164,14 @@ static inline unsigned long sbi_minor_version(void)
> >>     > >>         return sbi_spec_version & SBI_SPEC_VERSION_MINOR_MASK;
> >>     > >>  }
> >>     > >>
> >>     > >> +/* Make SBI version */
> >>     > >> +static inline unsigned long sbi_mk_version(unsigned long major,
> >>     > >> +                                           unsigned long minor)
> >>     > >> +{
> >>     > >> +       return ((major & SBI_SPEC_VERSION_MAJOR_MASK) <<
> >>     > >> +               SBI_SPEC_VERSION_MAJOR_SHIFT) | minor;
> >>     > >> +}
> >>     > >> +
> >>     > >>  int sbi_err_map_linux_errno(int err);
> >>     > >>  #else /* CONFIG_RISCV_SBI */
> >>     > >>  static inline int sbi_remote_fence_i(const unsigned long *hart_mask) { return -1; }
> >>     > >> diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c
> >>     > >> index 7402a417f38e..9a84f0cb5175 100644
> >>     > >> --- a/arch/riscv/kernel/sbi.c
> >>     > >> +++ b/arch/riscv/kernel/sbi.c
> >>     > >> @@ -7,6 +7,7 @@
> >>     > >>
> >>     > >>  #include <linux/init.h>
> >>     > >>  #include <linux/pm.h>
> >>     > >> +#include <linux/reboot.h>
> >>     > >>  #include <asm/sbi.h>
> >>     > >>  #include <asm/smp.h>
> >>     > >>
> >>     > >> @@ -501,6 +502,32 @@ int sbi_remote_hfence_vvma_asid(const unsigned long *hart_mask,
> >>     > >>  }
> >>     > >>  EXPORT_SYMBOL(sbi_remote_hfence_vvma_asid);
> >>     > >>
> >>     > >> +static void sbi_srst_reset(unsigned long type, unsigned long reason)
> >>     > >> +{
> >>     > >> +       sbi_ecall(SBI_EXT_SRST, SBI_EXT_SRST_RESET, type, reason,
> >>     > >> +                 0, 0, 0, 0);
> >>     > >> +       pr_warn("%s: type=0x%lx reason=0x%lx failed\n",
> >>     > >> +               __func__, type, reason);
> >>     > >> +}
> >>     > >> +
> >>     > >> +static int sbi_srst_reboot(struct notifier_block *this,
> >>     > >> +                          unsigned long mode, void *cmd)
> >>     > >> +{
> >>     > >> +       sbi_srst_reset((mode == REBOOT_WARM || mode == REBOOT_SOFT) ?
> >>     > >> +                      SBI_SRST_RESET_TYPE_WARM_REBOOT :
> >>     > >> +                      SBI_SRST_RESET_TYPE_COLD_REBOOT,
> >>     > >> +                      SBI_SRST_RESET_REASON_NONE);
> >>     > >> +       return NOTIFY_DONE;
> >>     > >> +}
> >>     > >> +
> >>     > >> +static struct notifier_block sbi_srst_reboot_nb;
> >>     > >> +
> >>     > >> +static void sbi_srst_power_off(void)
> >>     > >> +{
> >>     > >> +       sbi_srst_reset(SBI_SRST_RESET_TYPE_SHUTDOWN,
> >>     > >> +                      SBI_SRST_RESET_REASON_NONE);
> >>     > >> +}
> >>     > >> +
> >>     > >>  /**
> >>     > >>   * sbi_probe_extension() - Check if an SBI extension ID is supported or not.
> >>     > >>   * @extid: The extension ID to be probed.
> >>     > >> @@ -608,6 +635,14 @@ void __init sbi_init(void)
> >>     > >>                 } else {
> >>     > >>                         __sbi_rfence    = __sbi_rfence_v01;
> >>     > >>                 }
> >>     > >> +               if ((sbi_spec_version >= sbi_mk_version(0, 3)) &&
> >>     > >> +                   (sbi_probe_extension(SBI_EXT_SRST) > 0)) {
> >>     > >> +                       pr_info("SBI SRST extension detected\n");
> >>     > >> +                       pm_power_off = sbi_srst_power_off;
> >>     > >> +                       sbi_srst_reboot_nb.notifier_call = sbi_srst_reboot;
> >>     > >> +                       sbi_srst_reboot_nb.priority = 192;
> >>     > >> +                       register_restart_handler(&sbi_srst_reboot_nb);
> >>     > >> +               }
> >>     > >>         } else {
> >>     > >>                 __sbi_set_timer = __sbi_set_timer_v01;
> >>     > >>                 __sbi_send_ipi  = __sbi_send_ipi_v01;
> >>     > >> --
> >>     > >> 2.25.1
> >>     > >>
> >>

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
@ 2021-07-29  5:18                 ` Anup Patel
  0 siblings, 0 replies; 30+ messages in thread
From: Anup Patel @ 2021-07-29  5:18 UTC (permalink / raw)
  To: Palmer Dabbelt
  Cc: Anup Patel, Paul Walmsley, Albert Ou, Atish Patra,
	Alistair Francis, linux-riscv, linux-kernel@vger.kernel.org List

On Thu, Jul 29, 2021 at 10:00 AM Palmer Dabbelt <palmer@dabbelt.com> wrote:
>
> On Sun, 11 Jul 2021 11:59:33 PDT (-0700), Palmer Dabbelt wrote:
> > On Fri, 09 Jul 2021 22:01:02 PDT (-0700), Anup Patel wrote:
> >>
> >>
> >> On 08/07/21, 9:22 AM, "Anup Patel" <anup@brainfault.org> wrote:
> >>
> >>     On Wed, Jul 7, 2021 at 1:57 AM Palmer Dabbelt <palmerdabbelt@google.com> wrote:
> >>     >
> >>     > On Mon, 21 Jun 2021 21:46:46 PDT (-0700), anup@brainfault.org wrote:
> >>     > > Hi Palmer,
> >>     > >
> >>     > > On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
> >>     > >>
> >>     > >> The SBI SRST extension provides a standard way to poweroff and
> >>     > >> reboot the system irrespective to whether Linux RISC-V S-mode
> >>     > >> is running natively (HS-mode) or inside Guest/VM (VS-mode).
> >>     > >>
> >>     > >> The SBI SRST extension is available in the SBI v0.3 specification.
> >>     > >> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
> >>     > >
> >>     > > Can you please consider this patch for Linux-5.14-rc1 ?
> >>     > >
> >>     > > The SBI v0.3 spec is already frozen and this patch has been
> >>     > > floating on LKML for quite a few months now.
> >>     >
> >>     > I didn't realize that SBI-0.3 had been frozed.  That link is to a RC,
> >>     > the cooresponding v0.3.0 tag isn't in that repo.  Can you give me a
> >>     > pointer to the frozen spec?
> >>
> >>     Here's the link to SBI v0.3.0 tag:
> >>     https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0
> >>
> >>     We treat RC tags as frozen in SBI spec because no functional
> >>     changes are done in SBI spec after it is tagged as RC. We only
> >>     do typo fixes and clarifications on SBI spec RC release.
> >
> > Treating the 0.3.0-rc1 as frozen as soon as it's released is a
> > terrifying policy: some of the fixes I sent in after I saw rc1 released
> > change the actual meaning of the text, even if they were meant to change
> > them to what I thought the intended meaning was supposed to be.  That
> > means the actual text of 0.3.0-rc1 and 0.3.0 conflict with each other.
> > Given that frozen comes with a guarntee of backwards compatibility, does
> > that mean that the behavior allowed by 0.3.0-rc1 is compliant with the
> > SBI, even if it was likely just allowed by a wording mistake?
> >
> > If you're going to freeze things at rc1 then you really need to be quite
> > explicit about that, as generally the point of RCs is to elicit
> > review/testing.  Looks like I was the only person to have provided any
> > review, so I guess I was the only one who assumed "We don't expect any
> > significant functional changes. We will wait for any further feedback
> > and release the official v0.3 in a month or so." actually meant "this is
> > frozen".
> >
> >> Can you take this patch for Linux-5.14 ??
> >
> > No, sorry, it's way too late for that.  Please be specific about when
> > you freeze specifications in the future, so we can all stay on the same
> > page.
>
> I went and talked to Krste, and he says that there's a whole process for
> freezing extensions that this hasn't gone through.  They don't have
> anything written down that I can point to, but can you guys please just
> get on the same page about this?  It seems like every time I talk to
> someone from the RISC-V foundation I get a conflicting description of
> what's going on, and I'm entirely out of patience when it comes to
> getting blamed for all the chaos over there.

For your information, the SBI spec is owned by the platform HSC so
feel free to talk to the chairs Kumar Sankarn and Atish Patra.

The SBI v0.3 release has been approved by the platform HSC.

There are many working groups in RISC-V International and a lot of
activities happening so for any specification you should talk to the
people who are owning the specification first.

Regards,
Anup

>
> >
> >>
> >> Regards,
> >> Anup
> >>
> >>     Regards,
> >>     Anup
> >>
> >>     >
> >>     > >
> >>     > > Regards,
> >>     > > Anup
> >>     > >
> >>     > >>
> >>     > >> This patch extends Linux RISC-V SBI implementation to detect
> >>     > >> and use SBI SRST extension.
> >>     > >>
> >>     > >> Signed-off-by: Anup Patel <anup.patel@wdc.com>
> >>     > >> Reviewed-by: Atish Patra <atish.patra@wdc.com>
> >>     > >> ---
> >>     > >>  arch/riscv/include/asm/sbi.h | 24 ++++++++++++++++++++++++
> >>     > >>  arch/riscv/kernel/sbi.c      | 35 +++++++++++++++++++++++++++++++++++
> >>     > >>  2 files changed, 59 insertions(+)
> >>     > >>
> >>     > >> diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h
> >>     > >> index 0d42693cb65e..289621da4a2a 100644
> >>     > >> --- a/arch/riscv/include/asm/sbi.h
> >>     > >> +++ b/arch/riscv/include/asm/sbi.h
> >>     > >> @@ -27,6 +27,7 @@ enum sbi_ext_id {
> >>     > >>         SBI_EXT_IPI = 0x735049,
> >>     > >>         SBI_EXT_RFENCE = 0x52464E43,
> >>     > >>         SBI_EXT_HSM = 0x48534D,
> >>     > >> +       SBI_EXT_SRST = 0x53525354,
> >>     > >>  };
> >>     > >>
> >>     > >>  enum sbi_ext_base_fid {
> >>     > >> @@ -70,6 +71,21 @@ enum sbi_hsm_hart_status {
> >>     > >>         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,
> >>     > >> +};
> >>     > >> +
> >>     > >>  #define SBI_SPEC_VERSION_DEFAULT       0x1
> >>     > >>  #define SBI_SPEC_VERSION_MAJOR_SHIFT   24
> >>     > >>  #define SBI_SPEC_VERSION_MAJOR_MASK    0x7f
> >>     > >> @@ -148,6 +164,14 @@ static inline unsigned long sbi_minor_version(void)
> >>     > >>         return sbi_spec_version & SBI_SPEC_VERSION_MINOR_MASK;
> >>     > >>  }
> >>     > >>
> >>     > >> +/* Make SBI version */
> >>     > >> +static inline unsigned long sbi_mk_version(unsigned long major,
> >>     > >> +                                           unsigned long minor)
> >>     > >> +{
> >>     > >> +       return ((major & SBI_SPEC_VERSION_MAJOR_MASK) <<
> >>     > >> +               SBI_SPEC_VERSION_MAJOR_SHIFT) | minor;
> >>     > >> +}
> >>     > >> +
> >>     > >>  int sbi_err_map_linux_errno(int err);
> >>     > >>  #else /* CONFIG_RISCV_SBI */
> >>     > >>  static inline int sbi_remote_fence_i(const unsigned long *hart_mask) { return -1; }
> >>     > >> diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c
> >>     > >> index 7402a417f38e..9a84f0cb5175 100644
> >>     > >> --- a/arch/riscv/kernel/sbi.c
> >>     > >> +++ b/arch/riscv/kernel/sbi.c
> >>     > >> @@ -7,6 +7,7 @@
> >>     > >>
> >>     > >>  #include <linux/init.h>
> >>     > >>  #include <linux/pm.h>
> >>     > >> +#include <linux/reboot.h>
> >>     > >>  #include <asm/sbi.h>
> >>     > >>  #include <asm/smp.h>
> >>     > >>
> >>     > >> @@ -501,6 +502,32 @@ int sbi_remote_hfence_vvma_asid(const unsigned long *hart_mask,
> >>     > >>  }
> >>     > >>  EXPORT_SYMBOL(sbi_remote_hfence_vvma_asid);
> >>     > >>
> >>     > >> +static void sbi_srst_reset(unsigned long type, unsigned long reason)
> >>     > >> +{
> >>     > >> +       sbi_ecall(SBI_EXT_SRST, SBI_EXT_SRST_RESET, type, reason,
> >>     > >> +                 0, 0, 0, 0);
> >>     > >> +       pr_warn("%s: type=0x%lx reason=0x%lx failed\n",
> >>     > >> +               __func__, type, reason);
> >>     > >> +}
> >>     > >> +
> >>     > >> +static int sbi_srst_reboot(struct notifier_block *this,
> >>     > >> +                          unsigned long mode, void *cmd)
> >>     > >> +{
> >>     > >> +       sbi_srst_reset((mode == REBOOT_WARM || mode == REBOOT_SOFT) ?
> >>     > >> +                      SBI_SRST_RESET_TYPE_WARM_REBOOT :
> >>     > >> +                      SBI_SRST_RESET_TYPE_COLD_REBOOT,
> >>     > >> +                      SBI_SRST_RESET_REASON_NONE);
> >>     > >> +       return NOTIFY_DONE;
> >>     > >> +}
> >>     > >> +
> >>     > >> +static struct notifier_block sbi_srst_reboot_nb;
> >>     > >> +
> >>     > >> +static void sbi_srst_power_off(void)
> >>     > >> +{
> >>     > >> +       sbi_srst_reset(SBI_SRST_RESET_TYPE_SHUTDOWN,
> >>     > >> +                      SBI_SRST_RESET_REASON_NONE);
> >>     > >> +}
> >>     > >> +
> >>     > >>  /**
> >>     > >>   * sbi_probe_extension() - Check if an SBI extension ID is supported or not.
> >>     > >>   * @extid: The extension ID to be probed.
> >>     > >> @@ -608,6 +635,14 @@ void __init sbi_init(void)
> >>     > >>                 } else {
> >>     > >>                         __sbi_rfence    = __sbi_rfence_v01;
> >>     > >>                 }
> >>     > >> +               if ((sbi_spec_version >= sbi_mk_version(0, 3)) &&
> >>     > >> +                   (sbi_probe_extension(SBI_EXT_SRST) > 0)) {
> >>     > >> +                       pr_info("SBI SRST extension detected\n");
> >>     > >> +                       pm_power_off = sbi_srst_power_off;
> >>     > >> +                       sbi_srst_reboot_nb.notifier_call = sbi_srst_reboot;
> >>     > >> +                       sbi_srst_reboot_nb.priority = 192;
> >>     > >> +                       register_restart_handler(&sbi_srst_reboot_nb);
> >>     > >> +               }
> >>     > >>         } else {
> >>     > >>                 __sbi_set_timer = __sbi_set_timer_v01;
> >>     > >>                 __sbi_send_ipi  = __sbi_send_ipi_v01;
> >>     > >> --
> >>     > >> 2.25.1
> >>     > >>
> >>

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
  2021-07-29  4:30               ` Palmer Dabbelt
@ 2021-07-29  6:10                 ` Atish Patra
  -1 siblings, 0 replies; 30+ messages in thread
From: Atish Patra @ 2021-07-29  6:10 UTC (permalink / raw)
  To: Palmer Dabbelt
  Cc: Anup Patel, Anup Patel, Paul Walmsley, Albert Ou, Atish Patra,
	Alistair Francis, linux-riscv, linux-kernel@vger.kernel.org List,
	Philipp Tomsich, Greg Favor, Kumar Sankaran, Mark Himelstein

On Wed, Jul 28, 2021 at 9:30 PM Palmer Dabbelt <palmer@dabbelt.com> wrote:
>
> On Sun, 11 Jul 2021 11:59:33 PDT (-0700), Palmer Dabbelt wrote:
> > On Fri, 09 Jul 2021 22:01:02 PDT (-0700), Anup Patel wrote:
> >>
> >>
> >> On 08/07/21, 9:22 AM, "Anup Patel" <anup@brainfault.org> wrote:
> >>
> >>     On Wed, Jul 7, 2021 at 1:57 AM Palmer Dabbelt <palmerdabbelt@google.com> wrote:
> >>     >
> >>     > On Mon, 21 Jun 2021 21:46:46 PDT (-0700), anup@brainfault.org wrote:
> >>     > > Hi Palmer,
> >>     > >
> >>     > > On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
> >>     > >>
> >>     > >> The SBI SRST extension provides a standard way to poweroff and
> >>     > >> reboot the system irrespective to whether Linux RISC-V S-mode
> >>     > >> is running natively (HS-mode) or inside Guest/VM (VS-mode).
> >>     > >>
> >>     > >> The SBI SRST extension is available in the SBI v0.3 specification.
> >>     > >> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
> >>     > >
> >>     > > Can you please consider this patch for Linux-5.14-rc1 ?
> >>     > >
> >>     > > The SBI v0.3 spec is already frozen and this patch has been
> >>     > > floating on LKML for quite a few months now.
> >>     >
> >>     > I didn't realize that SBI-0.3 had been frozed.  That link is to a RC,
> >>     > the cooresponding v0.3.0 tag isn't in that repo.  Can you give me a
> >>     > pointer to the frozen spec?
> >>
> >>     Here's the link to SBI v0.3.0 tag:
> >>     https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0
> >>
> >>     We treat RC tags as frozen in SBI spec because no functional
> >>     changes are done in SBI spec after it is tagged as RC. We only
> >>     do typo fixes and clarifications on SBI spec RC release.
> >
> > Treating the 0.3.0-rc1 as frozen as soon as it's released is a
> > terrifying policy: some of the fixes I sent in after I saw rc1 released
> > change the actual meaning of the text, even if they were meant to change
> > them to what I thought the intended meaning was supposed to be.  That
> > means the actual text of 0.3.0-rc1 and 0.3.0 conflict with each other.
> > Given that frozen comes with a guarntee of backwards compatibility, does
> > that mean that the behavior allowed by 0.3.0-rc1 is compliant with the
> > SBI, even if it was likely just allowed by a wording mistake?
> >
> > If you're going to freeze things at rc1 then you really need to be quite
> > explicit about that, as generally the point of RCs is to elicit
> > review/testing.  Looks like I was the only person to have provided any
> > review, so I guess I was the only one who assumed "We don't expect any
> > significant functional changes. We will wait for any further feedback
> > and release the official v0.3 in a month or so." actually meant "this is
> > frozen".
> >
> >> Can you take this patch for Linux-5.14 ??
> >
> > No, sorry, it's way too late for that.  Please be specific about when
> > you freeze specifications in the future, so we can all stay on the same
> > page.
>
> I went and talked to Krste, and he says that there's a whole process for
> freezing extensions that this hasn't gone through.  They don't have
> anything written down that I can point to, but can you guys please just
> get on the same page about this?  It seems like every time I talk to

Absolutely. The freezing extensions process is documented right now[1]
but that is only meant
for ISA/hardware/platform specifications. There is no process defined
for a SBI specification which is purely
a software specification because SBI specification release
processes(v0.1 and v0.2) predate these documented processes.
The SBI specification is owned by the Platform HSC which falls under
the purview of software HC.
You can see a detailed chart of the RVI organization at [2]. All the
aspects of SBI specification are discussed
in platform meetings[3] and frozen only after public review[4] and
approval from the platform working group
and the software HC. The official SBI specification(v0.3) will also be
available along with all other RISC-V specifications
once they figure out how to structure non-ISA specifications.

I have cc'd Kumar (chair of the Platform HSC) and Philip (chair of the
software HC) in case they want to add anything.
I was not aware of the fact that Krste/Andrew are not aware of the
progress of the SBI specification.
I will raise this topic during the next meeting and make sure they are
in the loop as well.

> someone from the RISC-V foundation I get a conflicting description of
> what's going on, and I'm entirely out of patience when it comes to
> getting blamed for all the chaos over there.
>
I agree the RVI process has not been very clear in the past. However,
that has changed a lot in recent times thanks to Mark and
other working group chairs. I don't think anybody is blaming you for
the delay in ratification of the RVI specifications.
There is a clear path for all the specifications to be ratified e.g.
the AIA and H extensions are planned to be frozen by the end of this
year.
Let me know if you want to see the timeline of each specification and
I can point you to the correct sheet.

[1] https://docs.google.com/presentation/d/1nQ5uFb39KA6gvUi5SReWfIQSiRN7hp6z7ZPfctE4mKk/edit#slide=id.ga0a994c3c8_0_6
[2] https://docs.google.com/presentation/d/1eEVuu6lRZd9iiDnZQSZME7Q7svtTG3pGIKHPmZ79B8E/edit#slide=id.ga275a504df_0_9
[3] https://github.com/riscv/riscv-platform-specs/wiki
[4] https://lists.riscv.org/g/tech-unixplatformspec/message/1042

> >
> >>
> >> Regards,
> >> Anup
> >>
> >>     Regards,
> >>     Anup
> >>
> >>     >
> >>     > >
> >>     > > Regards,
> >>     > > Anup
> >>     > >
> >>     > >>
> >>     > >> This patch extends Linux RISC-V SBI implementation to detect
> >>     > >> and use SBI SRST extension.
> >>     > >>
> >>     > >> Signed-off-by: Anup Patel <anup.patel@wdc.com>
> >>     > >> Reviewed-by: Atish Patra <atish.patra@wdc.com>
> >>     > >> ---
> >>     > >>  arch/riscv/include/asm/sbi.h | 24 ++++++++++++++++++++++++
> >>     > >>  arch/riscv/kernel/sbi.c      | 35 +++++++++++++++++++++++++++++++++++
> >>     > >>  2 files changed, 59 insertions(+)
> >>     > >>
> >>     > >> diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h
> >>     > >> index 0d42693cb65e..289621da4a2a 100644
> >>     > >> --- a/arch/riscv/include/asm/sbi.h
> >>     > >> +++ b/arch/riscv/include/asm/sbi.h
> >>     > >> @@ -27,6 +27,7 @@ enum sbi_ext_id {
> >>     > >>         SBI_EXT_IPI = 0x735049,
> >>     > >>         SBI_EXT_RFENCE = 0x52464E43,
> >>     > >>         SBI_EXT_HSM = 0x48534D,
> >>     > >> +       SBI_EXT_SRST = 0x53525354,
> >>     > >>  };
> >>     > >>
> >>     > >>  enum sbi_ext_base_fid {
> >>     > >> @@ -70,6 +71,21 @@ enum sbi_hsm_hart_status {
> >>     > >>         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,
> >>     > >> +};
> >>     > >> +
> >>     > >>  #define SBI_SPEC_VERSION_DEFAULT       0x1
> >>     > >>  #define SBI_SPEC_VERSION_MAJOR_SHIFT   24
> >>     > >>  #define SBI_SPEC_VERSION_MAJOR_MASK    0x7f
> >>     > >> @@ -148,6 +164,14 @@ static inline unsigned long sbi_minor_version(void)
> >>     > >>         return sbi_spec_version & SBI_SPEC_VERSION_MINOR_MASK;
> >>     > >>  }
> >>     > >>
> >>     > >> +/* Make SBI version */
> >>     > >> +static inline unsigned long sbi_mk_version(unsigned long major,
> >>     > >> +                                           unsigned long minor)
> >>     > >> +{
> >>     > >> +       return ((major & SBI_SPEC_VERSION_MAJOR_MASK) <<
> >>     > >> +               SBI_SPEC_VERSION_MAJOR_SHIFT) | minor;
> >>     > >> +}
> >>     > >> +
> >>     > >>  int sbi_err_map_linux_errno(int err);
> >>     > >>  #else /* CONFIG_RISCV_SBI */
> >>     > >>  static inline int sbi_remote_fence_i(const unsigned long *hart_mask) { return -1; }
> >>     > >> diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c
> >>     > >> index 7402a417f38e..9a84f0cb5175 100644
> >>     > >> --- a/arch/riscv/kernel/sbi.c
> >>     > >> +++ b/arch/riscv/kernel/sbi.c
> >>     > >> @@ -7,6 +7,7 @@
> >>     > >>
> >>     > >>  #include <linux/init.h>
> >>     > >>  #include <linux/pm.h>
> >>     > >> +#include <linux/reboot.h>
> >>     > >>  #include <asm/sbi.h>
> >>     > >>  #include <asm/smp.h>
> >>     > >>
> >>     > >> @@ -501,6 +502,32 @@ int sbi_remote_hfence_vvma_asid(const unsigned long *hart_mask,
> >>     > >>  }
> >>     > >>  EXPORT_SYMBOL(sbi_remote_hfence_vvma_asid);
> >>     > >>
> >>     > >> +static void sbi_srst_reset(unsigned long type, unsigned long reason)
> >>     > >> +{
> >>     > >> +       sbi_ecall(SBI_EXT_SRST, SBI_EXT_SRST_RESET, type, reason,
> >>     > >> +                 0, 0, 0, 0);
> >>     > >> +       pr_warn("%s: type=0x%lx reason=0x%lx failed\n",
> >>     > >> +               __func__, type, reason);
> >>     > >> +}
> >>     > >> +
> >>     > >> +static int sbi_srst_reboot(struct notifier_block *this,
> >>     > >> +                          unsigned long mode, void *cmd)
> >>     > >> +{
> >>     > >> +       sbi_srst_reset((mode == REBOOT_WARM || mode == REBOOT_SOFT) ?
> >>     > >> +                      SBI_SRST_RESET_TYPE_WARM_REBOOT :
> >>     > >> +                      SBI_SRST_RESET_TYPE_COLD_REBOOT,
> >>     > >> +                      SBI_SRST_RESET_REASON_NONE);
> >>     > >> +       return NOTIFY_DONE;
> >>     > >> +}
> >>     > >> +
> >>     > >> +static struct notifier_block sbi_srst_reboot_nb;
> >>     > >> +
> >>     > >> +static void sbi_srst_power_off(void)
> >>     > >> +{
> >>     > >> +       sbi_srst_reset(SBI_SRST_RESET_TYPE_SHUTDOWN,
> >>     > >> +                      SBI_SRST_RESET_REASON_NONE);
> >>     > >> +}
> >>     > >> +
> >>     > >>  /**
> >>     > >>   * sbi_probe_extension() - Check if an SBI extension ID is supported or not.
> >>     > >>   * @extid: The extension ID to be probed.
> >>     > >> @@ -608,6 +635,14 @@ void __init sbi_init(void)
> >>     > >>                 } else {
> >>     > >>                         __sbi_rfence    = __sbi_rfence_v01;
> >>     > >>                 }
> >>     > >> +               if ((sbi_spec_version >= sbi_mk_version(0, 3)) &&
> >>     > >> +                   (sbi_probe_extension(SBI_EXT_SRST) > 0)) {
> >>     > >> +                       pr_info("SBI SRST extension detected\n");
> >>     > >> +                       pm_power_off = sbi_srst_power_off;
> >>     > >> +                       sbi_srst_reboot_nb.notifier_call = sbi_srst_reboot;
> >>     > >> +                       sbi_srst_reboot_nb.priority = 192;
> >>     > >> +                       register_restart_handler(&sbi_srst_reboot_nb);
> >>     > >> +               }
> >>     > >>         } else {
> >>     > >>                 __sbi_set_timer = __sbi_set_timer_v01;
> >>     > >>                 __sbi_send_ipi  = __sbi_send_ipi_v01;
> >>     > >> --
> >>     > >> 2.25.1
> >>     > >>
> >>
>
> _______________________________________________
> linux-riscv mailing list
> linux-riscv@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-riscv



-- 
Regards,
Atish

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
@ 2021-07-29  6:10                 ` Atish Patra
  0 siblings, 0 replies; 30+ messages in thread
From: Atish Patra @ 2021-07-29  6:10 UTC (permalink / raw)
  To: Palmer Dabbelt
  Cc: Anup Patel, Anup Patel, Paul Walmsley, Albert Ou, Atish Patra,
	Alistair Francis, linux-riscv, linux-kernel@vger.kernel.org List,
	Philipp Tomsich, Greg Favor, Kumar Sankaran, Mark Himelstein

On Wed, Jul 28, 2021 at 9:30 PM Palmer Dabbelt <palmer@dabbelt.com> wrote:
>
> On Sun, 11 Jul 2021 11:59:33 PDT (-0700), Palmer Dabbelt wrote:
> > On Fri, 09 Jul 2021 22:01:02 PDT (-0700), Anup Patel wrote:
> >>
> >>
> >> On 08/07/21, 9:22 AM, "Anup Patel" <anup@brainfault.org> wrote:
> >>
> >>     On Wed, Jul 7, 2021 at 1:57 AM Palmer Dabbelt <palmerdabbelt@google.com> wrote:
> >>     >
> >>     > On Mon, 21 Jun 2021 21:46:46 PDT (-0700), anup@brainfault.org wrote:
> >>     > > Hi Palmer,
> >>     > >
> >>     > > On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
> >>     > >>
> >>     > >> The SBI SRST extension provides a standard way to poweroff and
> >>     > >> reboot the system irrespective to whether Linux RISC-V S-mode
> >>     > >> is running natively (HS-mode) or inside Guest/VM (VS-mode).
> >>     > >>
> >>     > >> The SBI SRST extension is available in the SBI v0.3 specification.
> >>     > >> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
> >>     > >
> >>     > > Can you please consider this patch for Linux-5.14-rc1 ?
> >>     > >
> >>     > > The SBI v0.3 spec is already frozen and this patch has been
> >>     > > floating on LKML for quite a few months now.
> >>     >
> >>     > I didn't realize that SBI-0.3 had been frozed.  That link is to a RC,
> >>     > the cooresponding v0.3.0 tag isn't in that repo.  Can you give me a
> >>     > pointer to the frozen spec?
> >>
> >>     Here's the link to SBI v0.3.0 tag:
> >>     https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0
> >>
> >>     We treat RC tags as frozen in SBI spec because no functional
> >>     changes are done in SBI spec after it is tagged as RC. We only
> >>     do typo fixes and clarifications on SBI spec RC release.
> >
> > Treating the 0.3.0-rc1 as frozen as soon as it's released is a
> > terrifying policy: some of the fixes I sent in after I saw rc1 released
> > change the actual meaning of the text, even if they were meant to change
> > them to what I thought the intended meaning was supposed to be.  That
> > means the actual text of 0.3.0-rc1 and 0.3.0 conflict with each other.
> > Given that frozen comes with a guarntee of backwards compatibility, does
> > that mean that the behavior allowed by 0.3.0-rc1 is compliant with the
> > SBI, even if it was likely just allowed by a wording mistake?
> >
> > If you're going to freeze things at rc1 then you really need to be quite
> > explicit about that, as generally the point of RCs is to elicit
> > review/testing.  Looks like I was the only person to have provided any
> > review, so I guess I was the only one who assumed "We don't expect any
> > significant functional changes. We will wait for any further feedback
> > and release the official v0.3 in a month or so." actually meant "this is
> > frozen".
> >
> >> Can you take this patch for Linux-5.14 ??
> >
> > No, sorry, it's way too late for that.  Please be specific about when
> > you freeze specifications in the future, so we can all stay on the same
> > page.
>
> I went and talked to Krste, and he says that there's a whole process for
> freezing extensions that this hasn't gone through.  They don't have
> anything written down that I can point to, but can you guys please just
> get on the same page about this?  It seems like every time I talk to

Absolutely. The freezing extensions process is documented right now[1]
but that is only meant
for ISA/hardware/platform specifications. There is no process defined
for a SBI specification which is purely
a software specification because SBI specification release
processes(v0.1 and v0.2) predate these documented processes.
The SBI specification is owned by the Platform HSC which falls under
the purview of software HC.
You can see a detailed chart of the RVI organization at [2]. All the
aspects of SBI specification are discussed
in platform meetings[3] and frozen only after public review[4] and
approval from the platform working group
and the software HC. The official SBI specification(v0.3) will also be
available along with all other RISC-V specifications
once they figure out how to structure non-ISA specifications.

I have cc'd Kumar (chair of the Platform HSC) and Philip (chair of the
software HC) in case they want to add anything.
I was not aware of the fact that Krste/Andrew are not aware of the
progress of the SBI specification.
I will raise this topic during the next meeting and make sure they are
in the loop as well.

> someone from the RISC-V foundation I get a conflicting description of
> what's going on, and I'm entirely out of patience when it comes to
> getting blamed for all the chaos over there.
>
I agree the RVI process has not been very clear in the past. However,
that has changed a lot in recent times thanks to Mark and
other working group chairs. I don't think anybody is blaming you for
the delay in ratification of the RVI specifications.
There is a clear path for all the specifications to be ratified e.g.
the AIA and H extensions are planned to be frozen by the end of this
year.
Let me know if you want to see the timeline of each specification and
I can point you to the correct sheet.

[1] https://docs.google.com/presentation/d/1nQ5uFb39KA6gvUi5SReWfIQSiRN7hp6z7ZPfctE4mKk/edit#slide=id.ga0a994c3c8_0_6
[2] https://docs.google.com/presentation/d/1eEVuu6lRZd9iiDnZQSZME7Q7svtTG3pGIKHPmZ79B8E/edit#slide=id.ga275a504df_0_9
[3] https://github.com/riscv/riscv-platform-specs/wiki
[4] https://lists.riscv.org/g/tech-unixplatformspec/message/1042

> >
> >>
> >> Regards,
> >> Anup
> >>
> >>     Regards,
> >>     Anup
> >>
> >>     >
> >>     > >
> >>     > > Regards,
> >>     > > Anup
> >>     > >
> >>     > >>
> >>     > >> This patch extends Linux RISC-V SBI implementation to detect
> >>     > >> and use SBI SRST extension.
> >>     > >>
> >>     > >> Signed-off-by: Anup Patel <anup.patel@wdc.com>
> >>     > >> Reviewed-by: Atish Patra <atish.patra@wdc.com>
> >>     > >> ---
> >>     > >>  arch/riscv/include/asm/sbi.h | 24 ++++++++++++++++++++++++
> >>     > >>  arch/riscv/kernel/sbi.c      | 35 +++++++++++++++++++++++++++++++++++
> >>     > >>  2 files changed, 59 insertions(+)
> >>     > >>
> >>     > >> diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h
> >>     > >> index 0d42693cb65e..289621da4a2a 100644
> >>     > >> --- a/arch/riscv/include/asm/sbi.h
> >>     > >> +++ b/arch/riscv/include/asm/sbi.h
> >>     > >> @@ -27,6 +27,7 @@ enum sbi_ext_id {
> >>     > >>         SBI_EXT_IPI = 0x735049,
> >>     > >>         SBI_EXT_RFENCE = 0x52464E43,
> >>     > >>         SBI_EXT_HSM = 0x48534D,
> >>     > >> +       SBI_EXT_SRST = 0x53525354,
> >>     > >>  };
> >>     > >>
> >>     > >>  enum sbi_ext_base_fid {
> >>     > >> @@ -70,6 +71,21 @@ enum sbi_hsm_hart_status {
> >>     > >>         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,
> >>     > >> +};
> >>     > >> +
> >>     > >>  #define SBI_SPEC_VERSION_DEFAULT       0x1
> >>     > >>  #define SBI_SPEC_VERSION_MAJOR_SHIFT   24
> >>     > >>  #define SBI_SPEC_VERSION_MAJOR_MASK    0x7f
> >>     > >> @@ -148,6 +164,14 @@ static inline unsigned long sbi_minor_version(void)
> >>     > >>         return sbi_spec_version & SBI_SPEC_VERSION_MINOR_MASK;
> >>     > >>  }
> >>     > >>
> >>     > >> +/* Make SBI version */
> >>     > >> +static inline unsigned long sbi_mk_version(unsigned long major,
> >>     > >> +                                           unsigned long minor)
> >>     > >> +{
> >>     > >> +       return ((major & SBI_SPEC_VERSION_MAJOR_MASK) <<
> >>     > >> +               SBI_SPEC_VERSION_MAJOR_SHIFT) | minor;
> >>     > >> +}
> >>     > >> +
> >>     > >>  int sbi_err_map_linux_errno(int err);
> >>     > >>  #else /* CONFIG_RISCV_SBI */
> >>     > >>  static inline int sbi_remote_fence_i(const unsigned long *hart_mask) { return -1; }
> >>     > >> diff --git a/arch/riscv/kernel/sbi.c b/arch/riscv/kernel/sbi.c
> >>     > >> index 7402a417f38e..9a84f0cb5175 100644
> >>     > >> --- a/arch/riscv/kernel/sbi.c
> >>     > >> +++ b/arch/riscv/kernel/sbi.c
> >>     > >> @@ -7,6 +7,7 @@
> >>     > >>
> >>     > >>  #include <linux/init.h>
> >>     > >>  #include <linux/pm.h>
> >>     > >> +#include <linux/reboot.h>
> >>     > >>  #include <asm/sbi.h>
> >>     > >>  #include <asm/smp.h>
> >>     > >>
> >>     > >> @@ -501,6 +502,32 @@ int sbi_remote_hfence_vvma_asid(const unsigned long *hart_mask,
> >>     > >>  }
> >>     > >>  EXPORT_SYMBOL(sbi_remote_hfence_vvma_asid);
> >>     > >>
> >>     > >> +static void sbi_srst_reset(unsigned long type, unsigned long reason)
> >>     > >> +{
> >>     > >> +       sbi_ecall(SBI_EXT_SRST, SBI_EXT_SRST_RESET, type, reason,
> >>     > >> +                 0, 0, 0, 0);
> >>     > >> +       pr_warn("%s: type=0x%lx reason=0x%lx failed\n",
> >>     > >> +               __func__, type, reason);
> >>     > >> +}
> >>     > >> +
> >>     > >> +static int sbi_srst_reboot(struct notifier_block *this,
> >>     > >> +                          unsigned long mode, void *cmd)
> >>     > >> +{
> >>     > >> +       sbi_srst_reset((mode == REBOOT_WARM || mode == REBOOT_SOFT) ?
> >>     > >> +                      SBI_SRST_RESET_TYPE_WARM_REBOOT :
> >>     > >> +                      SBI_SRST_RESET_TYPE_COLD_REBOOT,
> >>     > >> +                      SBI_SRST_RESET_REASON_NONE);
> >>     > >> +       return NOTIFY_DONE;
> >>     > >> +}
> >>     > >> +
> >>     > >> +static struct notifier_block sbi_srst_reboot_nb;
> >>     > >> +
> >>     > >> +static void sbi_srst_power_off(void)
> >>     > >> +{
> >>     > >> +       sbi_srst_reset(SBI_SRST_RESET_TYPE_SHUTDOWN,
> >>     > >> +                      SBI_SRST_RESET_REASON_NONE);
> >>     > >> +}
> >>     > >> +
> >>     > >>  /**
> >>     > >>   * sbi_probe_extension() - Check if an SBI extension ID is supported or not.
> >>     > >>   * @extid: The extension ID to be probed.
> >>     > >> @@ -608,6 +635,14 @@ void __init sbi_init(void)
> >>     > >>                 } else {
> >>     > >>                         __sbi_rfence    = __sbi_rfence_v01;
> >>     > >>                 }
> >>     > >> +               if ((sbi_spec_version >= sbi_mk_version(0, 3)) &&
> >>     > >> +                   (sbi_probe_extension(SBI_EXT_SRST) > 0)) {
> >>     > >> +                       pr_info("SBI SRST extension detected\n");
> >>     > >> +                       pm_power_off = sbi_srst_power_off;
> >>     > >> +                       sbi_srst_reboot_nb.notifier_call = sbi_srst_reboot;
> >>     > >> +                       sbi_srst_reboot_nb.priority = 192;
> >>     > >> +                       register_restart_handler(&sbi_srst_reboot_nb);
> >>     > >> +               }
> >>     > >>         } else {
> >>     > >>                 __sbi_set_timer = __sbi_set_timer_v01;
> >>     > >>                 __sbi_send_ipi  = __sbi_send_ipi_v01;
> >>     > >> --
> >>     > >> 2.25.1
> >>     > >>
> >>
>
> _______________________________________________
> linux-riscv mailing list
> linux-riscv@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-riscv



-- 
Regards,
Atish

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
  2021-07-29  6:10                 ` Atish Patra
@ 2021-11-09 15:19                   ` Heinrich Schuchardt
  -1 siblings, 0 replies; 30+ messages in thread
From: Heinrich Schuchardt @ 2021-11-09 15:19 UTC (permalink / raw)
  To: Palmer Dabbelt, Anup Patel
  Cc: Anup Patel, Paul Walmsley, Albert Ou, Atish Patra,
	Alistair Francis, linux-riscv, linux-kernel@vger.kernel.org List,
	Philipp Tomsich, Greg Favor, Kumar Sankaran, Mark Himelstein,
	Atish Patra

On 7/29/21 08:10, Atish Patra wrote:
> On Wed, Jul 28, 2021 at 9:30 PM Palmer Dabbelt <palmer@dabbelt.com> wrote:
>>
>> On Sun, 11 Jul 2021 11:59:33 PDT (-0700), Palmer Dabbelt wrote:
>>> On Fri, 09 Jul 2021 22:01:02 PDT (-0700), Anup Patel wrote:
>>>>
>>>>
>>>> On 08/07/21, 9:22 AM, "Anup Patel" <anup@brainfault.org> wrote:
>>>>
>>>>      On Wed, Jul 7, 2021 at 1:57 AM Palmer Dabbelt <palmerdabbelt@google.com> wrote:
>>>>      >
>>>>      > On Mon, 21 Jun 2021 21:46:46 PDT (-0700), anup@brainfault.org wrote:
>>>>      > > Hi Palmer,
>>>>      > >
>>>>      > > On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
>>>>      > >>
>>>>      > >> The SBI SRST extension provides a standard way to poweroff and
>>>>      > >> reboot the system irrespective to whether Linux RISC-V S-mode
>>>>      > >> is running natively (HS-mode) or inside Guest/VM (VS-mode).
>>>>      > >>
>>>>      > >> The SBI SRST extension is available in the SBI v0.3 specification.
>>>>      > >> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
>>>>      > >
>>>>      > > Can you please consider this patch for Linux-5.14-rc1 ?
>>>>      > >
>>>>      > > The SBI v0.3 spec is already frozen and this patch has been
>>>>      > > floating on LKML for quite a few months now.
>>>>      >
>>>>      > I didn't realize that SBI-0.3 had been frozed.  That link is to a RC,
>>>>      > the cooresponding v0.3.0 tag isn't in that repo.  Can you give me a
>>>>      > pointer to the frozen spec?
>>>>
>>>>      Here's the link to SBI v0.3.0 tag:
>>>>      https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0
>>>>
>>>>      We treat RC tags as frozen in SBI spec because no functional
>>>>      changes are done in SBI spec after it is tagged as RC. We only
>>>>      do typo fixes and clarifications on SBI spec RC release.
>>>
>>> Treating the 0.3.0-rc1 as frozen as soon as it's released is a
>>> terrifying policy: some of the fixes I sent in after I saw rc1 released
>>> change the actual meaning of the text, even if they were meant to change
>>> them to what I thought the intended meaning was supposed to be.  That
>>> means the actual text of 0.3.0-rc1 and 0.3.0 conflict with each other.
>>> Given that frozen comes with a guarntee of backwards compatibility, does
>>> that mean that the behavior allowed by 0.3.0-rc1 is compliant with the
>>> SBI, even if it was likely just allowed by a wording mistake?
>>>
>>> If you're going to freeze things at rc1 then you really need to be quite
>>> explicit about that, as generally the point of RCs is to elicit
>>> review/testing.  Looks like I was the only person to have provided any
>>> review, so I guess I was the only one who assumed "We don't expect any
>>> significant functional changes. We will wait for any further feedback
>>> and release the official v0.3 in a month or so." actually meant "this is
>>> frozen".
>>>
>>>> Can you take this patch for Linux-5.14 ??
>>>
>>> No, sorry, it's way too late for that.  Please be specific about when
>>> you freeze specifications in the future, so we can all stay on the same
>>> page.
>>
>> I went and talked to Krste, and he says that there's a whole process for
>> freezing extensions that this hasn't gone through.  They don't have
>> anything written down that I can point to, but can you guys please just
>> get on the same page about this?  It seems like every time I talk to
> 
> Absolutely. The freezing extensions process is documented right now[1]
> but that is only meant
> for ISA/hardware/platform specifications. There is no process defined
> for a SBI specification which is purely
> a software specification because SBI specification release
> processes(v0.1 and v0.2) predate these documented processes.
> The SBI specification is owned by the Platform HSC which falls under
> the purview of software HC.
> You can see a detailed chart of the RVI organization at [2]. All the
> aspects of SBI specification are discussed
> in platform meetings[3] and frozen only after public review[4] and
> approval from the platform working group
> and the software HC. The official SBI specification(v0.3) will also be
> available along with all other RISC-V specifications
> once they figure out how to structure non-ISA specifications.
> 
> I have cc'd Kumar (chair of the Platform HSC) and Philip (chair of the
> software HC) in case they want to add anything.
> I was not aware of the fact that Krste/Andrew are not aware of the
> progress of the SBI specification.
> I will raise this topic during the next meeting and make sure they are
> in the loop as well.
> 
>> someone from the RISC-V foundation I get a conflicting description of
>> what's going on, and I'm entirely out of patience when it comes to
>> getting blamed for all the chaos over there.
>>
> I agree the RVI process has not been very clear in the past. However,
> that has changed a lot in recent times thanks to Mark and
> other working group chairs. I don't think anybody is blaming you for
> the delay in ratification of the RVI specifications.
> There is a clear path for all the specifications to be ratified e.g.
> the AIA and H extensions are planned to be frozen by the end of this
> year.
> Let me know if you want to see the timeline of each specification and
> I can point you to the correct sheet.
> 
> [1] https://docs.google.com/presentation/d/1nQ5uFb39KA6gvUi5SReWfIQSiRN7hp6z7ZPfctE4mKk/edit#slide=id.ga0a994c3c8_0_6
> [2] https://docs.google.com/presentation/d/1eEVuu6lRZd9iiDnZQSZME7Q7svtTG3pGIKHPmZ79B8E/edit#slide=id.ga275a504df_0_9
> [3] https://github.com/riscv/riscv-platform-specs/wiki
> [4] https://lists.riscv.org/g/tech-unixplatformspec/message/1042

https://github.com/riscv-non-isa/riscv-sbi-doc/releases/tag/v0.3.1-rc1
has:

"This tag the release candidate of version 0.3.1 of the RISC-V SBI 
specification. It doesn't have any significant changes other than typos.
A new release is created to adapt the ratification process for non-ISA 
specifications defined by RVI recently."

Has this patch to wait until release 0.3.1 of the SBI specification is 
ratified?
What is the timeline?

Could you, please, provide a link the the non-ISA ratification process 
description.

Best regards

Heinrich

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
@ 2021-11-09 15:19                   ` Heinrich Schuchardt
  0 siblings, 0 replies; 30+ messages in thread
From: Heinrich Schuchardt @ 2021-11-09 15:19 UTC (permalink / raw)
  To: Palmer Dabbelt, Anup Patel
  Cc: Anup Patel, Paul Walmsley, Albert Ou, Atish Patra,
	Alistair Francis, linux-riscv, linux-kernel@vger.kernel.org List,
	Philipp Tomsich, Greg Favor, Kumar Sankaran, Mark Himelstein,
	Atish Patra

On 7/29/21 08:10, Atish Patra wrote:
> On Wed, Jul 28, 2021 at 9:30 PM Palmer Dabbelt <palmer@dabbelt.com> wrote:
>>
>> On Sun, 11 Jul 2021 11:59:33 PDT (-0700), Palmer Dabbelt wrote:
>>> On Fri, 09 Jul 2021 22:01:02 PDT (-0700), Anup Patel wrote:
>>>>
>>>>
>>>> On 08/07/21, 9:22 AM, "Anup Patel" <anup@brainfault.org> wrote:
>>>>
>>>>      On Wed, Jul 7, 2021 at 1:57 AM Palmer Dabbelt <palmerdabbelt@google.com> wrote:
>>>>      >
>>>>      > On Mon, 21 Jun 2021 21:46:46 PDT (-0700), anup@brainfault.org wrote:
>>>>      > > Hi Palmer,
>>>>      > >
>>>>      > > On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
>>>>      > >>
>>>>      > >> The SBI SRST extension provides a standard way to poweroff and
>>>>      > >> reboot the system irrespective to whether Linux RISC-V S-mode
>>>>      > >> is running natively (HS-mode) or inside Guest/VM (VS-mode).
>>>>      > >>
>>>>      > >> The SBI SRST extension is available in the SBI v0.3 specification.
>>>>      > >> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
>>>>      > >
>>>>      > > Can you please consider this patch for Linux-5.14-rc1 ?
>>>>      > >
>>>>      > > The SBI v0.3 spec is already frozen and this patch has been
>>>>      > > floating on LKML for quite a few months now.
>>>>      >
>>>>      > I didn't realize that SBI-0.3 had been frozed.  That link is to a RC,
>>>>      > the cooresponding v0.3.0 tag isn't in that repo.  Can you give me a
>>>>      > pointer to the frozen spec?
>>>>
>>>>      Here's the link to SBI v0.3.0 tag:
>>>>      https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0
>>>>
>>>>      We treat RC tags as frozen in SBI spec because no functional
>>>>      changes are done in SBI spec after it is tagged as RC. We only
>>>>      do typo fixes and clarifications on SBI spec RC release.
>>>
>>> Treating the 0.3.0-rc1 as frozen as soon as it's released is a
>>> terrifying policy: some of the fixes I sent in after I saw rc1 released
>>> change the actual meaning of the text, even if they were meant to change
>>> them to what I thought the intended meaning was supposed to be.  That
>>> means the actual text of 0.3.0-rc1 and 0.3.0 conflict with each other.
>>> Given that frozen comes with a guarntee of backwards compatibility, does
>>> that mean that the behavior allowed by 0.3.0-rc1 is compliant with the
>>> SBI, even if it was likely just allowed by a wording mistake?
>>>
>>> If you're going to freeze things at rc1 then you really need to be quite
>>> explicit about that, as generally the point of RCs is to elicit
>>> review/testing.  Looks like I was the only person to have provided any
>>> review, so I guess I was the only one who assumed "We don't expect any
>>> significant functional changes. We will wait for any further feedback
>>> and release the official v0.3 in a month or so." actually meant "this is
>>> frozen".
>>>
>>>> Can you take this patch for Linux-5.14 ??
>>>
>>> No, sorry, it's way too late for that.  Please be specific about when
>>> you freeze specifications in the future, so we can all stay on the same
>>> page.
>>
>> I went and talked to Krste, and he says that there's a whole process for
>> freezing extensions that this hasn't gone through.  They don't have
>> anything written down that I can point to, but can you guys please just
>> get on the same page about this?  It seems like every time I talk to
> 
> Absolutely. The freezing extensions process is documented right now[1]
> but that is only meant
> for ISA/hardware/platform specifications. There is no process defined
> for a SBI specification which is purely
> a software specification because SBI specification release
> processes(v0.1 and v0.2) predate these documented processes.
> The SBI specification is owned by the Platform HSC which falls under
> the purview of software HC.
> You can see a detailed chart of the RVI organization at [2]. All the
> aspects of SBI specification are discussed
> in platform meetings[3] and frozen only after public review[4] and
> approval from the platform working group
> and the software HC. The official SBI specification(v0.3) will also be
> available along with all other RISC-V specifications
> once they figure out how to structure non-ISA specifications.
> 
> I have cc'd Kumar (chair of the Platform HSC) and Philip (chair of the
> software HC) in case they want to add anything.
> I was not aware of the fact that Krste/Andrew are not aware of the
> progress of the SBI specification.
> I will raise this topic during the next meeting and make sure they are
> in the loop as well.
> 
>> someone from the RISC-V foundation I get a conflicting description of
>> what's going on, and I'm entirely out of patience when it comes to
>> getting blamed for all the chaos over there.
>>
> I agree the RVI process has not been very clear in the past. However,
> that has changed a lot in recent times thanks to Mark and
> other working group chairs. I don't think anybody is blaming you for
> the delay in ratification of the RVI specifications.
> There is a clear path for all the specifications to be ratified e.g.
> the AIA and H extensions are planned to be frozen by the end of this
> year.
> Let me know if you want to see the timeline of each specification and
> I can point you to the correct sheet.
> 
> [1] https://docs.google.com/presentation/d/1nQ5uFb39KA6gvUi5SReWfIQSiRN7hp6z7ZPfctE4mKk/edit#slide=id.ga0a994c3c8_0_6
> [2] https://docs.google.com/presentation/d/1eEVuu6lRZd9iiDnZQSZME7Q7svtTG3pGIKHPmZ79B8E/edit#slide=id.ga275a504df_0_9
> [3] https://github.com/riscv/riscv-platform-specs/wiki
> [4] https://lists.riscv.org/g/tech-unixplatformspec/message/1042

https://github.com/riscv-non-isa/riscv-sbi-doc/releases/tag/v0.3.1-rc1
has:

"This tag the release candidate of version 0.3.1 of the RISC-V SBI 
specification. It doesn't have any significant changes other than typos.
A new release is created to adapt the ratification process for non-ISA 
specifications defined by RVI recently."

Has this patch to wait until release 0.3.1 of the SBI specification is 
ratified?
What is the timeline?

Could you, please, provide a link the the non-ISA ratification process 
description.

Best regards

Heinrich

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
  2021-11-09 15:19                   ` Heinrich Schuchardt
@ 2021-11-12 22:49                     ` Atish Patra
  -1 siblings, 0 replies; 30+ messages in thread
From: Atish Patra @ 2021-11-12 22:49 UTC (permalink / raw)
  To: Heinrich Schuchardt
  Cc: Palmer Dabbelt, Anup Patel, Anup Patel, Paul Walmsley, Albert Ou,
	Atish Patra, Alistair Francis, linux-riscv,
	linux-kernel@vger.kernel.org List, Philipp Tomsich, Greg Favor,
	Kumar Sankaran, Mark Himelstein

On Tue, Nov 9, 2021 at 10:19 AM Heinrich Schuchardt
<heinrich.schuchardt@canonical.com> wrote:
>
> On 7/29/21 08:10, Atish Patra wrote:
> > On Wed, Jul 28, 2021 at 9:30 PM Palmer Dabbelt <palmer@dabbelt.com> wrote:
> >>
> >> On Sun, 11 Jul 2021 11:59:33 PDT (-0700), Palmer Dabbelt wrote:
> >>> On Fri, 09 Jul 2021 22:01:02 PDT (-0700), Anup Patel wrote:
> >>>>
> >>>>
> >>>> On 08/07/21, 9:22 AM, "Anup Patel" <anup@brainfault.org> wrote:
> >>>>
> >>>>      On Wed, Jul 7, 2021 at 1:57 AM Palmer Dabbelt <palmerdabbelt@google.com> wrote:
> >>>>      >
> >>>>      > On Mon, 21 Jun 2021 21:46:46 PDT (-0700), anup@brainfault.org wrote:
> >>>>      > > Hi Palmer,
> >>>>      > >
> >>>>      > > On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
> >>>>      > >>
> >>>>      > >> The SBI SRST extension provides a standard way to poweroff and
> >>>>      > >> reboot the system irrespective to whether Linux RISC-V S-mode
> >>>>      > >> is running natively (HS-mode) or inside Guest/VM (VS-mode).
> >>>>      > >>
> >>>>      > >> The SBI SRST extension is available in the SBI v0.3 specification.
> >>>>      > >> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
> >>>>      > >
> >>>>      > > Can you please consider this patch for Linux-5.14-rc1 ?
> >>>>      > >
> >>>>      > > The SBI v0.3 spec is already frozen and this patch has been
> >>>>      > > floating on LKML for quite a few months now.
> >>>>      >
> >>>>      > I didn't realize that SBI-0.3 had been frozed.  That link is to a RC,
> >>>>      > the cooresponding v0.3.0 tag isn't in that repo.  Can you give me a
> >>>>      > pointer to the frozen spec?
> >>>>
> >>>>      Here's the link to SBI v0.3.0 tag:
> >>>>      https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0
> >>>>
> >>>>      We treat RC tags as frozen in SBI spec because no functional
> >>>>      changes are done in SBI spec after it is tagged as RC. We only
> >>>>      do typo fixes and clarifications on SBI spec RC release.
> >>>
> >>> Treating the 0.3.0-rc1 as frozen as soon as it's released is a
> >>> terrifying policy: some of the fixes I sent in after I saw rc1 released
> >>> change the actual meaning of the text, even if they were meant to change
> >>> them to what I thought the intended meaning was supposed to be.  That
> >>> means the actual text of 0.3.0-rc1 and 0.3.0 conflict with each other.
> >>> Given that frozen comes with a guarntee of backwards compatibility, does
> >>> that mean that the behavior allowed by 0.3.0-rc1 is compliant with the
> >>> SBI, even if it was likely just allowed by a wording mistake?
> >>>
> >>> If you're going to freeze things at rc1 then you really need to be quite
> >>> explicit about that, as generally the point of RCs is to elicit
> >>> review/testing.  Looks like I was the only person to have provided any
> >>> review, so I guess I was the only one who assumed "We don't expect any
> >>> significant functional changes. We will wait for any further feedback
> >>> and release the official v0.3 in a month or so." actually meant "this is
> >>> frozen".
> >>>
> >>>> Can you take this patch for Linux-5.14 ??
> >>>
> >>> No, sorry, it's way too late for that.  Please be specific about when
> >>> you freeze specifications in the future, so we can all stay on the same
> >>> page.
> >>
> >> I went and talked to Krste, and he says that there's a whole process for
> >> freezing extensions that this hasn't gone through.  They don't have
> >> anything written down that I can point to, but can you guys please just
> >> get on the same page about this?  It seems like every time I talk to
> >
> > Absolutely. The freezing extensions process is documented right now[1]
> > but that is only meant
> > for ISA/hardware/platform specifications. There is no process defined
> > for a SBI specification which is purely
> > a software specification because SBI specification release
> > processes(v0.1 and v0.2) predate these documented processes.
> > The SBI specification is owned by the Platform HSC which falls under
> > the purview of software HC.
> > You can see a detailed chart of the RVI organization at [2]. All the
> > aspects of SBI specification are discussed
> > in platform meetings[3] and frozen only after public review[4] and
> > approval from the platform working group
> > and the software HC. The official SBI specification(v0.3) will also be
> > available along with all other RISC-V specifications
> > once they figure out how to structure non-ISA specifications.
> >
> > I have cc'd Kumar (chair of the Platform HSC) and Philip (chair of the
> > software HC) in case they want to add anything.
> > I was not aware of the fact that Krste/Andrew are not aware of the
> > progress of the SBI specification.
> > I will raise this topic during the next meeting and make sure they are
> > in the loop as well.
> >
> >> someone from the RISC-V foundation I get a conflicting description of
> >> what's going on, and I'm entirely out of patience when it comes to
> >> getting blamed for all the chaos over there.
> >>
> > I agree the RVI process has not been very clear in the past. However,
> > that has changed a lot in recent times thanks to Mark and
> > other working group chairs. I don't think anybody is blaming you for
> > the delay in ratification of the RVI specifications.
> > There is a clear path for all the specifications to be ratified e.g.
> > the AIA and H extensions are planned to be frozen by the end of this
> > year.
> > Let me know if you want to see the timeline of each specification and
> > I can point you to the correct sheet.
> >
> > [1] https://docs.google.com/presentation/d/1nQ5uFb39KA6gvUi5SReWfIQSiRN7hp6z7ZPfctE4mKk/edit#slide=id.ga0a994c3c8_0_6
> > [2] https://docs.google.com/presentation/d/1eEVuu6lRZd9iiDnZQSZME7Q7svtTG3pGIKHPmZ79B8E/edit#slide=id.ga275a504df_0_9
> > [3] https://github.com/riscv/riscv-platform-specs/wiki
> > [4] https://lists.riscv.org/g/tech-unixplatformspec/message/1042
>
> https://github.com/riscv-non-isa/riscv-sbi-doc/releases/tag/v0.3.1-rc1
> has:
>
> "This tag the release candidate of version 0.3.1 of the RISC-V SBI
> specification. It doesn't have any significant changes other than typos.
> A new release is created to adapt the ratification process for non-ISA
> specifications defined by RVI recently."
>
> Has this patch to wait until release 0.3.1 of the SBI specification is
> ratified?

Not ratified, Frozen (officially as per newly defined RVI process)

> What is the timeline?
>

Probably, a few more weeks. We have already presented it to the chairs
meeting and got it approved.
We are waiting for the TSC votes and some conclusion about the version
of frozen->ratified spec.
RVI wants all the specifications to start with 1.0 while SBI
specification has legacy version numbers.

The specification will be frozen and sent to the public review once
those items are resolved.

> Could you, please, provide a link the the non-ISA ratification process
> description.

Here is the template for every non-ISA specification has to follow
https://docs.google.com/document/d/1-DZQ-5IzQlG1PLX8acic9SaLaU8SQIHRYewBrE1Zoxo/edit?usp=sharing

Here is the folder with all other specifications in pipeline
https://drive.google.com/drive/u/1/folders/11NFLODgCxTTORNrPhNT15cHV-fZLFn4U


>
> Best regards
>
> Heinrich




--
Regards,
Atish

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
@ 2021-11-12 22:49                     ` Atish Patra
  0 siblings, 0 replies; 30+ messages in thread
From: Atish Patra @ 2021-11-12 22:49 UTC (permalink / raw)
  To: Heinrich Schuchardt
  Cc: Palmer Dabbelt, Anup Patel, Anup Patel, Paul Walmsley, Albert Ou,
	Atish Patra, Alistair Francis, linux-riscv,
	linux-kernel@vger.kernel.org List, Philipp Tomsich, Greg Favor,
	Kumar Sankaran, Mark Himelstein

On Tue, Nov 9, 2021 at 10:19 AM Heinrich Schuchardt
<heinrich.schuchardt@canonical.com> wrote:
>
> On 7/29/21 08:10, Atish Patra wrote:
> > On Wed, Jul 28, 2021 at 9:30 PM Palmer Dabbelt <palmer@dabbelt.com> wrote:
> >>
> >> On Sun, 11 Jul 2021 11:59:33 PDT (-0700), Palmer Dabbelt wrote:
> >>> On Fri, 09 Jul 2021 22:01:02 PDT (-0700), Anup Patel wrote:
> >>>>
> >>>>
> >>>> On 08/07/21, 9:22 AM, "Anup Patel" <anup@brainfault.org> wrote:
> >>>>
> >>>>      On Wed, Jul 7, 2021 at 1:57 AM Palmer Dabbelt <palmerdabbelt@google.com> wrote:
> >>>>      >
> >>>>      > On Mon, 21 Jun 2021 21:46:46 PDT (-0700), anup@brainfault.org wrote:
> >>>>      > > Hi Palmer,
> >>>>      > >
> >>>>      > > On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
> >>>>      > >>
> >>>>      > >> The SBI SRST extension provides a standard way to poweroff and
> >>>>      > >> reboot the system irrespective to whether Linux RISC-V S-mode
> >>>>      > >> is running natively (HS-mode) or inside Guest/VM (VS-mode).
> >>>>      > >>
> >>>>      > >> The SBI SRST extension is available in the SBI v0.3 specification.
> >>>>      > >> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
> >>>>      > >
> >>>>      > > Can you please consider this patch for Linux-5.14-rc1 ?
> >>>>      > >
> >>>>      > > The SBI v0.3 spec is already frozen and this patch has been
> >>>>      > > floating on LKML for quite a few months now.
> >>>>      >
> >>>>      > I didn't realize that SBI-0.3 had been frozed.  That link is to a RC,
> >>>>      > the cooresponding v0.3.0 tag isn't in that repo.  Can you give me a
> >>>>      > pointer to the frozen spec?
> >>>>
> >>>>      Here's the link to SBI v0.3.0 tag:
> >>>>      https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0
> >>>>
> >>>>      We treat RC tags as frozen in SBI spec because no functional
> >>>>      changes are done in SBI spec after it is tagged as RC. We only
> >>>>      do typo fixes and clarifications on SBI spec RC release.
> >>>
> >>> Treating the 0.3.0-rc1 as frozen as soon as it's released is a
> >>> terrifying policy: some of the fixes I sent in after I saw rc1 released
> >>> change the actual meaning of the text, even if they were meant to change
> >>> them to what I thought the intended meaning was supposed to be.  That
> >>> means the actual text of 0.3.0-rc1 and 0.3.0 conflict with each other.
> >>> Given that frozen comes with a guarntee of backwards compatibility, does
> >>> that mean that the behavior allowed by 0.3.0-rc1 is compliant with the
> >>> SBI, even if it was likely just allowed by a wording mistake?
> >>>
> >>> If you're going to freeze things at rc1 then you really need to be quite
> >>> explicit about that, as generally the point of RCs is to elicit
> >>> review/testing.  Looks like I was the only person to have provided any
> >>> review, so I guess I was the only one who assumed "We don't expect any
> >>> significant functional changes. We will wait for any further feedback
> >>> and release the official v0.3 in a month or so." actually meant "this is
> >>> frozen".
> >>>
> >>>> Can you take this patch for Linux-5.14 ??
> >>>
> >>> No, sorry, it's way too late for that.  Please be specific about when
> >>> you freeze specifications in the future, so we can all stay on the same
> >>> page.
> >>
> >> I went and talked to Krste, and he says that there's a whole process for
> >> freezing extensions that this hasn't gone through.  They don't have
> >> anything written down that I can point to, but can you guys please just
> >> get on the same page about this?  It seems like every time I talk to
> >
> > Absolutely. The freezing extensions process is documented right now[1]
> > but that is only meant
> > for ISA/hardware/platform specifications. There is no process defined
> > for a SBI specification which is purely
> > a software specification because SBI specification release
> > processes(v0.1 and v0.2) predate these documented processes.
> > The SBI specification is owned by the Platform HSC which falls under
> > the purview of software HC.
> > You can see a detailed chart of the RVI organization at [2]. All the
> > aspects of SBI specification are discussed
> > in platform meetings[3] and frozen only after public review[4] and
> > approval from the platform working group
> > and the software HC. The official SBI specification(v0.3) will also be
> > available along with all other RISC-V specifications
> > once they figure out how to structure non-ISA specifications.
> >
> > I have cc'd Kumar (chair of the Platform HSC) and Philip (chair of the
> > software HC) in case they want to add anything.
> > I was not aware of the fact that Krste/Andrew are not aware of the
> > progress of the SBI specification.
> > I will raise this topic during the next meeting and make sure they are
> > in the loop as well.
> >
> >> someone from the RISC-V foundation I get a conflicting description of
> >> what's going on, and I'm entirely out of patience when it comes to
> >> getting blamed for all the chaos over there.
> >>
> > I agree the RVI process has not been very clear in the past. However,
> > that has changed a lot in recent times thanks to Mark and
> > other working group chairs. I don't think anybody is blaming you for
> > the delay in ratification of the RVI specifications.
> > There is a clear path for all the specifications to be ratified e.g.
> > the AIA and H extensions are planned to be frozen by the end of this
> > year.
> > Let me know if you want to see the timeline of each specification and
> > I can point you to the correct sheet.
> >
> > [1] https://docs.google.com/presentation/d/1nQ5uFb39KA6gvUi5SReWfIQSiRN7hp6z7ZPfctE4mKk/edit#slide=id.ga0a994c3c8_0_6
> > [2] https://docs.google.com/presentation/d/1eEVuu6lRZd9iiDnZQSZME7Q7svtTG3pGIKHPmZ79B8E/edit#slide=id.ga275a504df_0_9
> > [3] https://github.com/riscv/riscv-platform-specs/wiki
> > [4] https://lists.riscv.org/g/tech-unixplatformspec/message/1042
>
> https://github.com/riscv-non-isa/riscv-sbi-doc/releases/tag/v0.3.1-rc1
> has:
>
> "This tag the release candidate of version 0.3.1 of the RISC-V SBI
> specification. It doesn't have any significant changes other than typos.
> A new release is created to adapt the ratification process for non-ISA
> specifications defined by RVI recently."
>
> Has this patch to wait until release 0.3.1 of the SBI specification is
> ratified?

Not ratified, Frozen (officially as per newly defined RVI process)

> What is the timeline?
>

Probably, a few more weeks. We have already presented it to the chairs
meeting and got it approved.
We are waiting for the TSC votes and some conclusion about the version
of frozen->ratified spec.
RVI wants all the specifications to start with 1.0 while SBI
specification has legacy version numbers.

The specification will be frozen and sent to the public review once
those items are resolved.

> Could you, please, provide a link the the non-ISA ratification process
> description.

Here is the template for every non-ISA specification has to follow
https://docs.google.com/document/d/1-DZQ-5IzQlG1PLX8acic9SaLaU8SQIHRYewBrE1Zoxo/edit?usp=sharing

Here is the folder with all other specifications in pipeline
https://drive.google.com/drive/u/1/folders/11NFLODgCxTTORNrPhNT15cHV-fZLFn4U


>
> Best regards
>
> Heinrich




--
Regards,
Atish

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
  2021-11-12 22:49                     ` Atish Patra
@ 2022-01-11  9:32                       ` Aurelien Jarno
  -1 siblings, 0 replies; 30+ messages in thread
From: Aurelien Jarno @ 2022-01-11  9:32 UTC (permalink / raw)
  To: Atish Patra, Palmer Dabbelt
  Cc: Heinrich Schuchardt, Anup Patel, Anup Patel, Paul Walmsley,
	Albert Ou, Atish Patra, Alistair Francis, linux-riscv,
	linux-kernel@vger.kernel.org List, Philipp Tomsich, Greg Favor,
	Kumar Sankaran, Mark Himelstein

On 2021-11-12 17:49, Atish Patra wrote:
> On Tue, Nov 9, 2021 at 10:19 AM Heinrich Schuchardt
> <heinrich.schuchardt@canonical.com> wrote:
> >
> > On 7/29/21 08:10, Atish Patra wrote:
> > > On Wed, Jul 28, 2021 at 9:30 PM Palmer Dabbelt <palmer@dabbelt.com> wrote:
> > >>
> > >> On Sun, 11 Jul 2021 11:59:33 PDT (-0700), Palmer Dabbelt wrote:
> > >>> On Fri, 09 Jul 2021 22:01:02 PDT (-0700), Anup Patel wrote:
> > >>>>
> > >>>>
> > >>>> On 08/07/21, 9:22 AM, "Anup Patel" <anup@brainfault.org> wrote:
> > >>>>
> > >>>>      On Wed, Jul 7, 2021 at 1:57 AM Palmer Dabbelt <palmerdabbelt@google.com> wrote:
> > >>>>      >
> > >>>>      > On Mon, 21 Jun 2021 21:46:46 PDT (-0700), anup@brainfault.org wrote:
> > >>>>      > > Hi Palmer,
> > >>>>      > >
> > >>>>      > > On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
> > >>>>      > >>
> > >>>>      > >> The SBI SRST extension provides a standard way to poweroff and
> > >>>>      > >> reboot the system irrespective to whether Linux RISC-V S-mode
> > >>>>      > >> is running natively (HS-mode) or inside Guest/VM (VS-mode).
> > >>>>      > >>
> > >>>>      > >> The SBI SRST extension is available in the SBI v0.3 specification.
> > >>>>      > >> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
> > >>>>      > >
> > >>>>      > > Can you please consider this patch for Linux-5.14-rc1 ?
> > >>>>      > >
> > >>>>      > > The SBI v0.3 spec is already frozen and this patch has been
> > >>>>      > > floating on LKML for quite a few months now.
> > >>>>      >
> > >>>>      > I didn't realize that SBI-0.3 had been frozed.  That link is to a RC,
> > >>>>      > the cooresponding v0.3.0 tag isn't in that repo.  Can you give me a
> > >>>>      > pointer to the frozen spec?
> > >>>>
> > >>>>      Here's the link to SBI v0.3.0 tag:
> > >>>>      https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0
> > >>>>
> > >>>>      We treat RC tags as frozen in SBI spec because no functional
> > >>>>      changes are done in SBI spec after it is tagged as RC. We only
> > >>>>      do typo fixes and clarifications on SBI spec RC release.
> > >>>
> > >>> Treating the 0.3.0-rc1 as frozen as soon as it's released is a
> > >>> terrifying policy: some of the fixes I sent in after I saw rc1 released
> > >>> change the actual meaning of the text, even if they were meant to change
> > >>> them to what I thought the intended meaning was supposed to be.  That
> > >>> means the actual text of 0.3.0-rc1 and 0.3.0 conflict with each other.
> > >>> Given that frozen comes with a guarntee of backwards compatibility, does
> > >>> that mean that the behavior allowed by 0.3.0-rc1 is compliant with the
> > >>> SBI, even if it was likely just allowed by a wording mistake?
> > >>>
> > >>> If you're going to freeze things at rc1 then you really need to be quite
> > >>> explicit about that, as generally the point of RCs is to elicit
> > >>> review/testing.  Looks like I was the only person to have provided any
> > >>> review, so I guess I was the only one who assumed "We don't expect any
> > >>> significant functional changes. We will wait for any further feedback
> > >>> and release the official v0.3 in a month or so." actually meant "this is
> > >>> frozen".
> > >>>
> > >>>> Can you take this patch for Linux-5.14 ??
> > >>>
> > >>> No, sorry, it's way too late for that.  Please be specific about when
> > >>> you freeze specifications in the future, so we can all stay on the same
> > >>> page.
> > >>
> > >> I went and talked to Krste, and he says that there's a whole process for
> > >> freezing extensions that this hasn't gone through.  They don't have
> > >> anything written down that I can point to, but can you guys please just
> > >> get on the same page about this?  It seems like every time I talk to
> > >
> > > Absolutely. The freezing extensions process is documented right now[1]
> > > but that is only meant
> > > for ISA/hardware/platform specifications. There is no process defined
> > > for a SBI specification which is purely
> > > a software specification because SBI specification release
> > > processes(v0.1 and v0.2) predate these documented processes.
> > > The SBI specification is owned by the Platform HSC which falls under
> > > the purview of software HC.
> > > You can see a detailed chart of the RVI organization at [2]. All the
> > > aspects of SBI specification are discussed
> > > in platform meetings[3] and frozen only after public review[4] and
> > > approval from the platform working group
> > > and the software HC. The official SBI specification(v0.3) will also be
> > > available along with all other RISC-V specifications
> > > once they figure out how to structure non-ISA specifications.
> > >
> > > I have cc'd Kumar (chair of the Platform HSC) and Philip (chair of the
> > > software HC) in case they want to add anything.
> > > I was not aware of the fact that Krste/Andrew are not aware of the
> > > progress of the SBI specification.
> > > I will raise this topic during the next meeting and make sure they are
> > > in the loop as well.
> > >
> > >> someone from the RISC-V foundation I get a conflicting description of
> > >> what's going on, and I'm entirely out of patience when it comes to
> > >> getting blamed for all the chaos over there.
> > >>
> > > I agree the RVI process has not been very clear in the past. However,
> > > that has changed a lot in recent times thanks to Mark and
> > > other working group chairs. I don't think anybody is blaming you for
> > > the delay in ratification of the RVI specifications.
> > > There is a clear path for all the specifications to be ratified e.g.
> > > the AIA and H extensions are planned to be frozen by the end of this
> > > year.
> > > Let me know if you want to see the timeline of each specification and
> > > I can point you to the correct sheet.
> > >
> > > [1] https://docs.google.com/presentation/d/1nQ5uFb39KA6gvUi5SReWfIQSiRN7hp6z7ZPfctE4mKk/edit#slide=id.ga0a994c3c8_0_6
> > > [2] https://docs.google.com/presentation/d/1eEVuu6lRZd9iiDnZQSZME7Q7svtTG3pGIKHPmZ79B8E/edit#slide=id.ga275a504df_0_9
> > > [3] https://github.com/riscv/riscv-platform-specs/wiki
> > > [4] https://lists.riscv.org/g/tech-unixplatformspec/message/1042
> >
> > https://github.com/riscv-non-isa/riscv-sbi-doc/releases/tag/v0.3.1-rc1
> > has:
> >
> > "This tag the release candidate of version 0.3.1 of the RISC-V SBI
> > specification. It doesn't have any significant changes other than typos.
> > A new release is created to adapt the ratification process for non-ISA
> > specifications defined by RVI recently."
> >
> > Has this patch to wait until release 0.3.1 of the SBI specification is
> > ratified?
> 
> Not ratified, Frozen (officially as per newly defined RVI process)
> 
> > What is the timeline?
> >

According to this mail, the "SBI specification is considered as frozen
now as per the RISC-V International policies":
http://lists.infradead.org/pipermail/opensbi/2022-January/002357.html

Therefore can we get this patch queued for 5.17-rc1?

Thanks,
Aurelien

-- 
Aurelien Jarno                          GPG: 4096R/1DDD8C9B
aurelien@aurel32.net                 http://www.aurel32.net

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
@ 2022-01-11  9:32                       ` Aurelien Jarno
  0 siblings, 0 replies; 30+ messages in thread
From: Aurelien Jarno @ 2022-01-11  9:32 UTC (permalink / raw)
  To: Atish Patra, Palmer Dabbelt
  Cc: Heinrich Schuchardt, Anup Patel, Anup Patel, Paul Walmsley,
	Albert Ou, Atish Patra, Alistair Francis, linux-riscv,
	linux-kernel@vger.kernel.org List, Philipp Tomsich, Greg Favor,
	Kumar Sankaran, Mark Himelstein

On 2021-11-12 17:49, Atish Patra wrote:
> On Tue, Nov 9, 2021 at 10:19 AM Heinrich Schuchardt
> <heinrich.schuchardt@canonical.com> wrote:
> >
> > On 7/29/21 08:10, Atish Patra wrote:
> > > On Wed, Jul 28, 2021 at 9:30 PM Palmer Dabbelt <palmer@dabbelt.com> wrote:
> > >>
> > >> On Sun, 11 Jul 2021 11:59:33 PDT (-0700), Palmer Dabbelt wrote:
> > >>> On Fri, 09 Jul 2021 22:01:02 PDT (-0700), Anup Patel wrote:
> > >>>>
> > >>>>
> > >>>> On 08/07/21, 9:22 AM, "Anup Patel" <anup@brainfault.org> wrote:
> > >>>>
> > >>>>      On Wed, Jul 7, 2021 at 1:57 AM Palmer Dabbelt <palmerdabbelt@google.com> wrote:
> > >>>>      >
> > >>>>      > On Mon, 21 Jun 2021 21:46:46 PDT (-0700), anup@brainfault.org wrote:
> > >>>>      > > Hi Palmer,
> > >>>>      > >
> > >>>>      > > On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
> > >>>>      > >>
> > >>>>      > >> The SBI SRST extension provides a standard way to poweroff and
> > >>>>      > >> reboot the system irrespective to whether Linux RISC-V S-mode
> > >>>>      > >> is running natively (HS-mode) or inside Guest/VM (VS-mode).
> > >>>>      > >>
> > >>>>      > >> The SBI SRST extension is available in the SBI v0.3 specification.
> > >>>>      > >> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
> > >>>>      > >
> > >>>>      > > Can you please consider this patch for Linux-5.14-rc1 ?
> > >>>>      > >
> > >>>>      > > The SBI v0.3 spec is already frozen and this patch has been
> > >>>>      > > floating on LKML for quite a few months now.
> > >>>>      >
> > >>>>      > I didn't realize that SBI-0.3 had been frozed.  That link is to a RC,
> > >>>>      > the cooresponding v0.3.0 tag isn't in that repo.  Can you give me a
> > >>>>      > pointer to the frozen spec?
> > >>>>
> > >>>>      Here's the link to SBI v0.3.0 tag:
> > >>>>      https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0
> > >>>>
> > >>>>      We treat RC tags as frozen in SBI spec because no functional
> > >>>>      changes are done in SBI spec after it is tagged as RC. We only
> > >>>>      do typo fixes and clarifications on SBI spec RC release.
> > >>>
> > >>> Treating the 0.3.0-rc1 as frozen as soon as it's released is a
> > >>> terrifying policy: some of the fixes I sent in after I saw rc1 released
> > >>> change the actual meaning of the text, even if they were meant to change
> > >>> them to what I thought the intended meaning was supposed to be.  That
> > >>> means the actual text of 0.3.0-rc1 and 0.3.0 conflict with each other.
> > >>> Given that frozen comes with a guarntee of backwards compatibility, does
> > >>> that mean that the behavior allowed by 0.3.0-rc1 is compliant with the
> > >>> SBI, even if it was likely just allowed by a wording mistake?
> > >>>
> > >>> If you're going to freeze things at rc1 then you really need to be quite
> > >>> explicit about that, as generally the point of RCs is to elicit
> > >>> review/testing.  Looks like I was the only person to have provided any
> > >>> review, so I guess I was the only one who assumed "We don't expect any
> > >>> significant functional changes. We will wait for any further feedback
> > >>> and release the official v0.3 in a month or so." actually meant "this is
> > >>> frozen".
> > >>>
> > >>>> Can you take this patch for Linux-5.14 ??
> > >>>
> > >>> No, sorry, it's way too late for that.  Please be specific about when
> > >>> you freeze specifications in the future, so we can all stay on the same
> > >>> page.
> > >>
> > >> I went and talked to Krste, and he says that there's a whole process for
> > >> freezing extensions that this hasn't gone through.  They don't have
> > >> anything written down that I can point to, but can you guys please just
> > >> get on the same page about this?  It seems like every time I talk to
> > >
> > > Absolutely. The freezing extensions process is documented right now[1]
> > > but that is only meant
> > > for ISA/hardware/platform specifications. There is no process defined
> > > for a SBI specification which is purely
> > > a software specification because SBI specification release
> > > processes(v0.1 and v0.2) predate these documented processes.
> > > The SBI specification is owned by the Platform HSC which falls under
> > > the purview of software HC.
> > > You can see a detailed chart of the RVI organization at [2]. All the
> > > aspects of SBI specification are discussed
> > > in platform meetings[3] and frozen only after public review[4] and
> > > approval from the platform working group
> > > and the software HC. The official SBI specification(v0.3) will also be
> > > available along with all other RISC-V specifications
> > > once they figure out how to structure non-ISA specifications.
> > >
> > > I have cc'd Kumar (chair of the Platform HSC) and Philip (chair of the
> > > software HC) in case they want to add anything.
> > > I was not aware of the fact that Krste/Andrew are not aware of the
> > > progress of the SBI specification.
> > > I will raise this topic during the next meeting and make sure they are
> > > in the loop as well.
> > >
> > >> someone from the RISC-V foundation I get a conflicting description of
> > >> what's going on, and I'm entirely out of patience when it comes to
> > >> getting blamed for all the chaos over there.
> > >>
> > > I agree the RVI process has not been very clear in the past. However,
> > > that has changed a lot in recent times thanks to Mark and
> > > other working group chairs. I don't think anybody is blaming you for
> > > the delay in ratification of the RVI specifications.
> > > There is a clear path for all the specifications to be ratified e.g.
> > > the AIA and H extensions are planned to be frozen by the end of this
> > > year.
> > > Let me know if you want to see the timeline of each specification and
> > > I can point you to the correct sheet.
> > >
> > > [1] https://docs.google.com/presentation/d/1nQ5uFb39KA6gvUi5SReWfIQSiRN7hp6z7ZPfctE4mKk/edit#slide=id.ga0a994c3c8_0_6
> > > [2] https://docs.google.com/presentation/d/1eEVuu6lRZd9iiDnZQSZME7Q7svtTG3pGIKHPmZ79B8E/edit#slide=id.ga275a504df_0_9
> > > [3] https://github.com/riscv/riscv-platform-specs/wiki
> > > [4] https://lists.riscv.org/g/tech-unixplatformspec/message/1042
> >
> > https://github.com/riscv-non-isa/riscv-sbi-doc/releases/tag/v0.3.1-rc1
> > has:
> >
> > "This tag the release candidate of version 0.3.1 of the RISC-V SBI
> > specification. It doesn't have any significant changes other than typos.
> > A new release is created to adapt the ratification process for non-ISA
> > specifications defined by RVI recently."
> >
> > Has this patch to wait until release 0.3.1 of the SBI specification is
> > ratified?
> 
> Not ratified, Frozen (officially as per newly defined RVI process)
> 
> > What is the timeline?
> >

According to this mail, the "SBI specification is considered as frozen
now as per the RISC-V International policies":
http://lists.infradead.org/pipermail/opensbi/2022-January/002357.html

Therefore can we get this patch queued for 5.17-rc1?

Thanks,
Aurelien

-- 
Aurelien Jarno                          GPG: 4096R/1DDD8C9B
aurelien@aurel32.net                 http://www.aurel32.net

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
  2022-01-11  9:32                       ` Aurelien Jarno
@ 2022-01-11 18:40                         ` Palmer Dabbelt
  -1 siblings, 0 replies; 30+ messages in thread
From: Palmer Dabbelt @ 2022-01-11 18:40 UTC (permalink / raw)
  To: aurelien
  Cc: atishp, heinrich.schuchardt, anup, anup, Paul Walmsley, aou,
	Atish Patra, Alistair Francis, linux-riscv, linux-kernel,
	ptomsich, gfavor, ksankaran, markhimelstein

On Tue, 11 Jan 2022 01:32:24 PST (-0800), aurelien@aurel32.net wrote:
> On 2021-11-12 17:49, Atish Patra wrote:
>> On Tue, Nov 9, 2021 at 10:19 AM Heinrich Schuchardt
>> <heinrich.schuchardt@canonical.com> wrote:
>> >
>> > On 7/29/21 08:10, Atish Patra wrote:
>> > > On Wed, Jul 28, 2021 at 9:30 PM Palmer Dabbelt <palmer@dabbelt.com> wrote:
>> > >>
>> > >> On Sun, 11 Jul 2021 11:59:33 PDT (-0700), Palmer Dabbelt wrote:
>> > >>> On Fri, 09 Jul 2021 22:01:02 PDT (-0700), Anup Patel wrote:
>> > >>>>
>> > >>>>
>> > >>>> On 08/07/21, 9:22 AM, "Anup Patel" <anup@brainfault.org> wrote:
>> > >>>>
>> > >>>>      On Wed, Jul 7, 2021 at 1:57 AM Palmer Dabbelt <palmerdabbelt@google.com> wrote:
>> > >>>>      >
>> > >>>>      > On Mon, 21 Jun 2021 21:46:46 PDT (-0700), anup@brainfault.org wrote:
>> > >>>>      > > Hi Palmer,
>> > >>>>      > >
>> > >>>>      > > On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
>> > >>>>      > >>
>> > >>>>      > >> The SBI SRST extension provides a standard way to poweroff and
>> > >>>>      > >> reboot the system irrespective to whether Linux RISC-V S-mode
>> > >>>>      > >> is running natively (HS-mode) or inside Guest/VM (VS-mode).
>> > >>>>      > >>
>> > >>>>      > >> The SBI SRST extension is available in the SBI v0.3 specification.
>> > >>>>      > >> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
>> > >>>>      > >
>> > >>>>      > > Can you please consider this patch for Linux-5.14-rc1 ?
>> > >>>>      > >
>> > >>>>      > > The SBI v0.3 spec is already frozen and this patch has been
>> > >>>>      > > floating on LKML for quite a few months now.
>> > >>>>      >
>> > >>>>      > I didn't realize that SBI-0.3 had been frozed.  That link is to a RC,
>> > >>>>      > the cooresponding v0.3.0 tag isn't in that repo.  Can you give me a
>> > >>>>      > pointer to the frozen spec?
>> > >>>>
>> > >>>>      Here's the link to SBI v0.3.0 tag:
>> > >>>>      https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0
>> > >>>>
>> > >>>>      We treat RC tags as frozen in SBI spec because no functional
>> > >>>>      changes are done in SBI spec after it is tagged as RC. We only
>> > >>>>      do typo fixes and clarifications on SBI spec RC release.
>> > >>>
>> > >>> Treating the 0.3.0-rc1 as frozen as soon as it's released is a
>> > >>> terrifying policy: some of the fixes I sent in after I saw rc1 released
>> > >>> change the actual meaning of the text, even if they were meant to change
>> > >>> them to what I thought the intended meaning was supposed to be.  That
>> > >>> means the actual text of 0.3.0-rc1 and 0.3.0 conflict with each other.
>> > >>> Given that frozen comes with a guarntee of backwards compatibility, does
>> > >>> that mean that the behavior allowed by 0.3.0-rc1 is compliant with the
>> > >>> SBI, even if it was likely just allowed by a wording mistake?
>> > >>>
>> > >>> If you're going to freeze things at rc1 then you really need to be quite
>> > >>> explicit about that, as generally the point of RCs is to elicit
>> > >>> review/testing.  Looks like I was the only person to have provided any
>> > >>> review, so I guess I was the only one who assumed "We don't expect any
>> > >>> significant functional changes. We will wait for any further feedback
>> > >>> and release the official v0.3 in a month or so." actually meant "this is
>> > >>> frozen".
>> > >>>
>> > >>>> Can you take this patch for Linux-5.14 ??
>> > >>>
>> > >>> No, sorry, it's way too late for that.  Please be specific about when
>> > >>> you freeze specifications in the future, so we can all stay on the same
>> > >>> page.
>> > >>
>> > >> I went and talked to Krste, and he says that there's a whole process for
>> > >> freezing extensions that this hasn't gone through.  They don't have
>> > >> anything written down that I can point to, but can you guys please just
>> > >> get on the same page about this?  It seems like every time I talk to
>> > >
>> > > Absolutely. The freezing extensions process is documented right now[1]
>> > > but that is only meant
>> > > for ISA/hardware/platform specifications. There is no process defined
>> > > for a SBI specification which is purely
>> > > a software specification because SBI specification release
>> > > processes(v0.1 and v0.2) predate these documented processes.
>> > > The SBI specification is owned by the Platform HSC which falls under
>> > > the purview of software HC.
>> > > You can see a detailed chart of the RVI organization at [2]. All the
>> > > aspects of SBI specification are discussed
>> > > in platform meetings[3] and frozen only after public review[4] and
>> > > approval from the platform working group
>> > > and the software HC. The official SBI specification(v0.3) will also be
>> > > available along with all other RISC-V specifications
>> > > once they figure out how to structure non-ISA specifications.
>> > >
>> > > I have cc'd Kumar (chair of the Platform HSC) and Philip (chair of the
>> > > software HC) in case they want to add anything.
>> > > I was not aware of the fact that Krste/Andrew are not aware of the
>> > > progress of the SBI specification.
>> > > I will raise this topic during the next meeting and make sure they are
>> > > in the loop as well.
>> > >
>> > >> someone from the RISC-V foundation I get a conflicting description of
>> > >> what's going on, and I'm entirely out of patience when it comes to
>> > >> getting blamed for all the chaos over there.
>> > >>
>> > > I agree the RVI process has not been very clear in the past. However,
>> > > that has changed a lot in recent times thanks to Mark and
>> > > other working group chairs. I don't think anybody is blaming you for
>> > > the delay in ratification of the RVI specifications.
>> > > There is a clear path for all the specifications to be ratified e.g.
>> > > the AIA and H extensions are planned to be frozen by the end of this
>> > > year.
>> > > Let me know if you want to see the timeline of each specification and
>> > > I can point you to the correct sheet.
>> > >
>> > > [1] https://docs.google.com/presentation/d/1nQ5uFb39KA6gvUi5SReWfIQSiRN7hp6z7ZPfctE4mKk/edit#slide=id.ga0a994c3c8_0_6
>> > > [2] https://docs.google.com/presentation/d/1eEVuu6lRZd9iiDnZQSZME7Q7svtTG3pGIKHPmZ79B8E/edit#slide=id.ga275a504df_0_9
>> > > [3] https://github.com/riscv/riscv-platform-specs/wiki
>> > > [4] https://lists.riscv.org/g/tech-unixplatformspec/message/1042
>> >
>> > https://github.com/riscv-non-isa/riscv-sbi-doc/releases/tag/v0.3.1-rc1
>> > has:
>> >
>> > "This tag the release candidate of version 0.3.1 of the RISC-V SBI
>> > specification. It doesn't have any significant changes other than typos.
>> > A new release is created to adapt the ratification process for non-ISA
>> > specifications defined by RVI recently."
>> >
>> > Has this patch to wait until release 0.3.1 of the SBI specification is
>> > ratified?
>> 
>> Not ratified, Frozen (officially as per newly defined RVI process)
>> 
>> > What is the timeline?
>> >
>
> According to this mail, the "SBI specification is considered as frozen
> now as per the RISC-V International policies":
> http://lists.infradead.org/pipermail/opensbi/2022-January/002357.html
>
> Therefore can we get this patch queued for 5.17-rc1?

Thanks.  Atish had actually pointed this out last night, but I wasn't at 
the computer.  This in on for-next.

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

* Re: [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available
@ 2022-01-11 18:40                         ` Palmer Dabbelt
  0 siblings, 0 replies; 30+ messages in thread
From: Palmer Dabbelt @ 2022-01-11 18:40 UTC (permalink / raw)
  To: aurelien
  Cc: atishp, heinrich.schuchardt, anup, anup, Paul Walmsley, aou,
	Atish Patra, Alistair Francis, linux-riscv, linux-kernel,
	ptomsich, gfavor, ksankaran, markhimelstein

On Tue, 11 Jan 2022 01:32:24 PST (-0800), aurelien@aurel32.net wrote:
> On 2021-11-12 17:49, Atish Patra wrote:
>> On Tue, Nov 9, 2021 at 10:19 AM Heinrich Schuchardt
>> <heinrich.schuchardt@canonical.com> wrote:
>> >
>> > On 7/29/21 08:10, Atish Patra wrote:
>> > > On Wed, Jul 28, 2021 at 9:30 PM Palmer Dabbelt <palmer@dabbelt.com> wrote:
>> > >>
>> > >> On Sun, 11 Jul 2021 11:59:33 PDT (-0700), Palmer Dabbelt wrote:
>> > >>> On Fri, 09 Jul 2021 22:01:02 PDT (-0700), Anup Patel wrote:
>> > >>>>
>> > >>>>
>> > >>>> On 08/07/21, 9:22 AM, "Anup Patel" <anup@brainfault.org> wrote:
>> > >>>>
>> > >>>>      On Wed, Jul 7, 2021 at 1:57 AM Palmer Dabbelt <palmerdabbelt@google.com> wrote:
>> > >>>>      >
>> > >>>>      > On Mon, 21 Jun 2021 21:46:46 PDT (-0700), anup@brainfault.org wrote:
>> > >>>>      > > Hi Palmer,
>> > >>>>      > >
>> > >>>>      > > On Wed, Jun 9, 2021 at 5:43 PM Anup Patel <anup.patel@wdc.com> wrote:
>> > >>>>      > >>
>> > >>>>      > >> The SBI SRST extension provides a standard way to poweroff and
>> > >>>>      > >> reboot the system irrespective to whether Linux RISC-V S-mode
>> > >>>>      > >> is running natively (HS-mode) or inside Guest/VM (VS-mode).
>> > >>>>      > >>
>> > >>>>      > >> The SBI SRST extension is available in the SBI v0.3 specification.
>> > >>>>      > >> (Refer, https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0-rc1)
>> > >>>>      > >
>> > >>>>      > > Can you please consider this patch for Linux-5.14-rc1 ?
>> > >>>>      > >
>> > >>>>      > > The SBI v0.3 spec is already frozen and this patch has been
>> > >>>>      > > floating on LKML for quite a few months now.
>> > >>>>      >
>> > >>>>      > I didn't realize that SBI-0.3 had been frozed.  That link is to a RC,
>> > >>>>      > the cooresponding v0.3.0 tag isn't in that repo.  Can you give me a
>> > >>>>      > pointer to the frozen spec?
>> > >>>>
>> > >>>>      Here's the link to SBI v0.3.0 tag:
>> > >>>>      https://github.com/riscv/riscv-sbi-doc/releases/tag/v0.3.0
>> > >>>>
>> > >>>>      We treat RC tags as frozen in SBI spec because no functional
>> > >>>>      changes are done in SBI spec after it is tagged as RC. We only
>> > >>>>      do typo fixes and clarifications on SBI spec RC release.
>> > >>>
>> > >>> Treating the 0.3.0-rc1 as frozen as soon as it's released is a
>> > >>> terrifying policy: some of the fixes I sent in after I saw rc1 released
>> > >>> change the actual meaning of the text, even if they were meant to change
>> > >>> them to what I thought the intended meaning was supposed to be.  That
>> > >>> means the actual text of 0.3.0-rc1 and 0.3.0 conflict with each other.
>> > >>> Given that frozen comes with a guarntee of backwards compatibility, does
>> > >>> that mean that the behavior allowed by 0.3.0-rc1 is compliant with the
>> > >>> SBI, even if it was likely just allowed by a wording mistake?
>> > >>>
>> > >>> If you're going to freeze things at rc1 then you really need to be quite
>> > >>> explicit about that, as generally the point of RCs is to elicit
>> > >>> review/testing.  Looks like I was the only person to have provided any
>> > >>> review, so I guess I was the only one who assumed "We don't expect any
>> > >>> significant functional changes. We will wait for any further feedback
>> > >>> and release the official v0.3 in a month or so." actually meant "this is
>> > >>> frozen".
>> > >>>
>> > >>>> Can you take this patch for Linux-5.14 ??
>> > >>>
>> > >>> No, sorry, it's way too late for that.  Please be specific about when
>> > >>> you freeze specifications in the future, so we can all stay on the same
>> > >>> page.
>> > >>
>> > >> I went and talked to Krste, and he says that there's a whole process for
>> > >> freezing extensions that this hasn't gone through.  They don't have
>> > >> anything written down that I can point to, but can you guys please just
>> > >> get on the same page about this?  It seems like every time I talk to
>> > >
>> > > Absolutely. The freezing extensions process is documented right now[1]
>> > > but that is only meant
>> > > for ISA/hardware/platform specifications. There is no process defined
>> > > for a SBI specification which is purely
>> > > a software specification because SBI specification release
>> > > processes(v0.1 and v0.2) predate these documented processes.
>> > > The SBI specification is owned by the Platform HSC which falls under
>> > > the purview of software HC.
>> > > You can see a detailed chart of the RVI organization at [2]. All the
>> > > aspects of SBI specification are discussed
>> > > in platform meetings[3] and frozen only after public review[4] and
>> > > approval from the platform working group
>> > > and the software HC. The official SBI specification(v0.3) will also be
>> > > available along with all other RISC-V specifications
>> > > once they figure out how to structure non-ISA specifications.
>> > >
>> > > I have cc'd Kumar (chair of the Platform HSC) and Philip (chair of the
>> > > software HC) in case they want to add anything.
>> > > I was not aware of the fact that Krste/Andrew are not aware of the
>> > > progress of the SBI specification.
>> > > I will raise this topic during the next meeting and make sure they are
>> > > in the loop as well.
>> > >
>> > >> someone from the RISC-V foundation I get a conflicting description of
>> > >> what's going on, and I'm entirely out of patience when it comes to
>> > >> getting blamed for all the chaos over there.
>> > >>
>> > > I agree the RVI process has not been very clear in the past. However,
>> > > that has changed a lot in recent times thanks to Mark and
>> > > other working group chairs. I don't think anybody is blaming you for
>> > > the delay in ratification of the RVI specifications.
>> > > There is a clear path for all the specifications to be ratified e.g.
>> > > the AIA and H extensions are planned to be frozen by the end of this
>> > > year.
>> > > Let me know if you want to see the timeline of each specification and
>> > > I can point you to the correct sheet.
>> > >
>> > > [1] https://docs.google.com/presentation/d/1nQ5uFb39KA6gvUi5SReWfIQSiRN7hp6z7ZPfctE4mKk/edit#slide=id.ga0a994c3c8_0_6
>> > > [2] https://docs.google.com/presentation/d/1eEVuu6lRZd9iiDnZQSZME7Q7svtTG3pGIKHPmZ79B8E/edit#slide=id.ga275a504df_0_9
>> > > [3] https://github.com/riscv/riscv-platform-specs/wiki
>> > > [4] https://lists.riscv.org/g/tech-unixplatformspec/message/1042
>> >
>> > https://github.com/riscv-non-isa/riscv-sbi-doc/releases/tag/v0.3.1-rc1
>> > has:
>> >
>> > "This tag the release candidate of version 0.3.1 of the RISC-V SBI
>> > specification. It doesn't have any significant changes other than typos.
>> > A new release is created to adapt the ratification process for non-ISA
>> > specifications defined by RVI recently."
>> >
>> > Has this patch to wait until release 0.3.1 of the SBI specification is
>> > ratified?
>> 
>> Not ratified, Frozen (officially as per newly defined RVI process)
>> 
>> > What is the timeline?
>> >
>
> According to this mail, the "SBI specification is considered as frozen
> now as per the RISC-V International policies":
> http://lists.infradead.org/pipermail/opensbi/2022-January/002357.html
>
> Therefore can we get this patch queued for 5.17-rc1?

Thanks.  Atish had actually pointed this out last night, but I wasn't at 
the computer.  This in on for-next.

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

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

end of thread, other threads:[~2022-01-11 18:41 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-09 12:13 [PATCH v7 0/1] SBI SRST extension support Anup Patel
2021-06-09 12:13 ` Anup Patel
2021-06-09 12:13 ` [PATCH v7 1/1] RISC-V: Use SBI SRST extension when available Anup Patel
2021-06-09 12:13   ` Anup Patel
2021-06-22  4:46   ` Anup Patel
2021-06-22  4:46     ` Anup Patel
2021-07-06 20:27     ` Palmer Dabbelt
2021-07-06 20:27       ` Palmer Dabbelt
2021-07-07 15:49       ` Anup Patel
2021-07-07 15:49         ` Anup Patel
2021-07-10  5:01         ` Anup Patel
2021-07-10  5:01           ` Anup Patel
2021-07-11 18:59           ` Palmer Dabbelt
2021-07-11 18:59             ` Palmer Dabbelt
2021-07-29  4:30             ` Palmer Dabbelt
2021-07-29  4:30               ` Palmer Dabbelt
2021-07-29  4:44               ` Anup Patel
2021-07-29  4:44                 ` Anup Patel
2021-07-29  5:18               ` Anup Patel
2021-07-29  5:18                 ` Anup Patel
2021-07-29  6:10               ` Atish Patra
2021-07-29  6:10                 ` Atish Patra
2021-11-09 15:19                 ` Heinrich Schuchardt
2021-11-09 15:19                   ` Heinrich Schuchardt
2021-11-12 22:49                   ` Atish Patra
2021-11-12 22:49                     ` Atish Patra
2022-01-11  9:32                     ` Aurelien Jarno
2022-01-11  9:32                       ` Aurelien Jarno
2022-01-11 18:40                       ` Palmer Dabbelt
2022-01-11 18:40                         ` Palmer Dabbelt

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.