Am 13. Februar 2026 12:05:26 MEZ schrieb Aswin Murugan <[email protected]>: >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 <[email protected]> >--- >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"

