Previously, U-Boot’s PSCI-based implementation of `efi_reset_system()` was always enabled when `CONFIG_PSCI_RESET` was set, but it did not handle additional arguments required for specialized reset modes. This caused issues where special reboot requests (e.g., bootloader, EDL) were ignored, resulting in a normal reboot.
This change introduces a new configuration option, `CONFIG_EFI_PSCI_RESET_RUNTIME`, to explicitly control whether the runtime PSCI-specific EFI reset implementation is enabled. By default, the PSCI EFI reset is enabled, it can be disabled at platform defconfig allowing the kernel to handle the reset logic and pass the necessary arguments for the intended reset mode correctly. Signed-off-by: Aswin Murugan <[email protected]> --- 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 | 11 +++++++++++ 2 files changed, 13 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..712905a56eb 100644 --- a/lib/efi_loader/Kconfig +++ b/lib/efi_loader/Kconfig @@ -106,6 +106,17 @@ 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 EFI runtime to perform system resets and power-off + operations using the ARM Power State Coordination Interface (PSCI) + firmware interface, providing a standardized method for system + power management across different ARM platforms. + endmenu menu "UEFI Variables" -- 2.34.1

