Re: [PATCH 1/2] efi: libstub: Fix the retriving of supported rutime services

From: Ard Biesheuvel
Date: Tue Jan 31 2023 - 02:05:15 EST


On Tue, 31 Jan 2023 at 05:04, Jia He <justin.he@xxxxxxx> wrote:
>
> If retrieving UEFI configuration table is failed, the supported runtime
> services mask should be regarded as 0 instead of EFI_RT_SUPPORTED_ALL.
> Otherwise efi_novamap might be incorrectly assigned to "false" on the
> Ampere Emag server.
>
> Signed-off-by: Jia He <justin.he@xxxxxxx>
> ---
> drivers/firmware/efi/libstub/efi-stub.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/firmware/efi/libstub/efi-stub.c b/drivers/firmware/efi/libstub/efi-stub.c
> index 2955c1ac6a36..f24b5436729c 100644
> --- a/drivers/firmware/efi/libstub/efi-stub.c
> +++ b/drivers/firmware/efi/libstub/efi-stub.c
> @@ -111,6 +111,8 @@ static u32 get_supported_rt_services(void)
> rt_prop_table = get_efi_config_table(EFI_RT_PROPERTIES_TABLE_GUID);
> if (rt_prop_table)
> supported &= rt_prop_table->runtime_services_supported;
> + else
> + supported = 0;
>
> return supported;
> }

Hello Justin,

This is not how things are supposed to work. On systems that do not
implement the RT properties table, all runtime services are assumed to
be implemented.

Note that this table is informational only - the runtime services
themselves must be callable and return EFI_UNSUPPORTED if they are
marked as unavailable in the RT properties table.