Re: [PATCH v3 1/2] firmware: psci: Refactor EFI runtime PSCI reset handling

Heinrich Schuchardt xypron.glpk at gmx.de
Tue Feb 17 21:14:03 CET 2026


Am 13. Februar 2026 12:05:26 MEZ schrieb Aswin Murugan <aswin.murugan at oss.qualcomm.com>:
>The current PSCI-based EFI runtime reset implementation is always enabled
>when CONFIG_PSCI_RESET is set, but it does not support the extra arguments
>required for specialized reset modes. As a result, reboot requests such as
>bootloader mode or EDL mode are ignored and fall back to a normal reboot.

Are the "specialized" reset modes defined in the PSCI specification or at least compliant to it? Where can I find the description of these reset modes.

If you don't want to use U-Boot's PSCI implementation, why don't you simply disable the PSCI driver?

>
>Add CONFIG_EFI_PSCI_RESET_RUNTIME to give platforms explicit control over
>the PSCI-specific EFI runtime reset path. This allows a platform to disable
>U-Boot's PSCI reset handler when needed so that the kernel can perform the
>reset with the correct arguments for special reboot modes.
>
>The option defaults to enabled to maintain backward compatibility with the
>existing behavior.
>
>Signed-off-by: Aswin Murugan <aswin.murugan at oss.qualcomm.com>
>---
>Changes in v3:
>- Commit message has been updated, no change in code
>
>Changes in v2:
>- As per review comments made default y for EFI_PSCI_RESET_RUNTIME config
>---
> drivers/firmware/psci.c | 4 ++--
> lib/efi_loader/Kconfig  | 8 ++++++++
> 2 files changed, 10 insertions(+), 2 deletions(-)
>
>diff --git a/drivers/firmware/psci.c b/drivers/firmware/psci.c
>index 2e3223e1c32..009c6153d0c 100644
>--- a/drivers/firmware/psci.c
>+++ b/drivers/firmware/psci.c
>@@ -244,7 +244,7 @@ static void __maybe_unused do_psci_probe(void)
> 	uclass_get_device_by_name(UCLASS_FIRMWARE, DRIVER_NAME, &dev);
> }
> 
>-#if IS_ENABLED(CONFIG_EFI_LOADER) && IS_ENABLED(CONFIG_PSCI_RESET)
>+#if IS_ENABLED(CONFIG_EFI_PSCI_RESET_RUNTIME)
> efi_status_t efi_reset_system_init(void)
> {
> 	do_psci_probe();
>@@ -266,7 +266,7 @@ void __efi_runtime EFIAPI efi_reset_system(enum efi_reset_type reset_type,
> 	while (1)
> 		;
> }
>-#endif /* IS_ENABLED(CONFIG_EFI_LOADER) && IS_ENABLED(CONFIG_PSCI_RESET) */
>+#endif /* IS_ENABLED(CONFIG_EFI_PSCI_RESET_RUNTIME) */
> 
> #ifdef CONFIG_PSCI_RESET
> void reset_misc(void)
>diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig
>index 13e44be1d06..3882de273bb 100644
>--- a/lib/efi_loader/Kconfig
>+++ b/lib/efi_loader/Kconfig
>@@ -106,6 +106,14 @@ config EFI_HAVE_RUNTIME_RESET
> 	depends on ARCH_BCM283X || FSL_LAYERSCAPE || PSCI_RESET || \
> 		   SANDBOX || SYSRESET_SBI || SYSRESET_X86
> 
>+config EFI_PSCI_RESET_RUNTIME
>+	bool "EFI Runtime PSCI Reset Support"
>+	default y if EFI_LOADER && PSCI_RESET
>+	depends on ARM_PSCI_FW
>+	help
>+	  Enable PSCI-based reset implementation for EFI runtime services.
>+	  This allows the OS to reset the system through EFI runtime calls.
>+
> endmenu
> 
> menu "UEFI Variables"



More information about the U-Boot mailing list