[PATCH 0/2] Fix boot hang issue on Ampere Emag server

From: Jia He
Date: Mon Jan 30 2023 - 23:04:09 EST


I met a hung task warning and then kernel was hung forever with latest
kernel on an Ampere Emag server.

The root cause is kernel was hung when invoking an efi rts call to set
the RandomSeed variable during the booting stage. The arch_efi_call_virt
call (set_variable) was never returned and then caused the hung task error.

On the Emag server, efi_rt_services_supported(EFI_RT_SUPPORTED_SET_VARIABLE)
is returned with "true"

Fix it by introducing the efi_get_supported_rt_services() and then determine
to set or clear the runtime services bit of efi.flags.

Jia He (2):
efi: libstub: Fix the retriving of supported rutime services
efi: Introduce efi_get_supported_rt_services() to get the runtime
services mask

drivers/firmware/efi/arm-runtime.c | 5 ++++-
drivers/firmware/efi/efi.c | 28 +++++++++++++++++--------
drivers/firmware/efi/libstub/efi-stub.c | 2 ++
include/linux/efi.h | 1 +
4 files changed, 26 insertions(+), 10 deletions(-)

--
2.25.1