[PATCH v2 1/2] firmware: psci: Refactor EFI runtime PSCI reset handling
Casey Connolly
casey.connolly at linaro.org
Wed Jan 14 15:10:56 CET 2026
Hi Aswin,
On 14/01/2026 12:16, Aswin Murugan wrote:
> 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,
Be imperative rather than descriptive: "Introduce a new configuration
option". See
https://docs.kernel.org/process/submitting-patches.html#describe-your-changes
> `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 <aswin.murugan at oss.qualcomm.com>
> ---
> 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.
The last 4 lines could be simplified to something like "This allows the
OS to reset the system through EFI runtime calls"
Kind regards,> +
> endmenu
>
> menu "UEFI Variables"
--
// Casey (she/her)
More information about the U-Boot
mailing list