public inbox for linux-efi@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86/efi: skip memattr table on kexec boot
@ 2025-01-23  6:36 Dave Young
  2025-01-23  9:17 ` Ard Biesheuvel
  0 siblings, 1 reply; 2+ messages in thread
From: Dave Young @ 2025-01-23  6:36 UTC (permalink / raw)
  To: Ard Biesheuvel, Usama Arif
  Cc: linux-kernel, linux-efi, Breno Leitao, kexec, x86

efi_memattr_init() added a sanity check to avoid firmware caused corruption.
The check is based on efi memmap entry numbers, but kexec only takes the
runtime related memmap entries thus this caused many false warnings, see
below thread for details:

https://lore.kernel.org/all/20250108215957.3437660-2-usamaarif642@gmail.com/

Ard suggests to skip the efi memattr table in kexec, this makes sense because
those memattr fixups are not critical.

Reported-by: Breno Leitao <leitao@debian.org>
Reported-and-tested-by: Usama Arif <usamaarif642@gmail.com>
Suggested-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Dave Young <dyoung@redhat.com>

diff --git a/arch/x86/platform/efi/quirks.c b/arch/x86/platform/efi/quirks.c
index 846bf49f2508..553f330198f2 100644
--- a/arch/x86/platform/efi/quirks.c
+++ b/arch/x86/platform/efi/quirks.c
@@ -561,6 +561,11 @@ int __init efi_reuse_config(u64 tables, int nr_tables)
 
 		if (!efi_guidcmp(guid, SMBIOS_TABLE_GUID))
 			((efi_config_table_64_t *)p)->table = data->smbios;
+
+		/* Do not bother to play with mem attr table across kexec */
+		if (!efi_guidcmp(guid, EFI_MEMORY_ATTRIBUTES_TABLE_GUID))
+			((efi_config_table_64_t *)p)->table = EFI_INVALID_TABLE_ADDR;
+
 		p += sz;
 	}
 	early_memunmap(tablep, nr_tables * sz);


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] x86/efi: skip memattr table on kexec boot
  2025-01-23  6:36 [PATCH] x86/efi: skip memattr table on kexec boot Dave Young
@ 2025-01-23  9:17 ` Ard Biesheuvel
  0 siblings, 0 replies; 2+ messages in thread
From: Ard Biesheuvel @ 2025-01-23  9:17 UTC (permalink / raw)
  To: Dave Young; +Cc: Usama Arif, linux-kernel, linux-efi, Breno Leitao, kexec, x86

On Thu, 23 Jan 2025 at 07:36, Dave Young <dyoung@redhat.com> wrote:
>
> efi_memattr_init() added a sanity check to avoid firmware caused corruption.
> The check is based on efi memmap entry numbers, but kexec only takes the
> runtime related memmap entries thus this caused many false warnings, see
> below thread for details:
>
> https://lore.kernel.org/all/20250108215957.3437660-2-usamaarif642@gmail.com/
>
> Ard suggests to skip the efi memattr table in kexec, this makes sense because
> those memattr fixups are not critical.
>
> Reported-by: Breno Leitao <leitao@debian.org>
> Reported-and-tested-by: Usama Arif <usamaarif642@gmail.com>
> Suggested-by: Ard Biesheuvel <ardb@kernel.org>
> Signed-off-by: Dave Young <dyoung@redhat.com>
>
> diff --git a/arch/x86/platform/efi/quirks.c b/arch/x86/platform/efi/quirks.c
> index 846bf49f2508..553f330198f2 100644
> --- a/arch/x86/platform/efi/quirks.c
> +++ b/arch/x86/platform/efi/quirks.c
> @@ -561,6 +561,11 @@ int __init efi_reuse_config(u64 tables, int nr_tables)
>
>                 if (!efi_guidcmp(guid, SMBIOS_TABLE_GUID))
>                         ((efi_config_table_64_t *)p)->table = data->smbios;
> +
> +               /* Do not bother to play with mem attr table across kexec */
> +               if (!efi_guidcmp(guid, EFI_MEMORY_ATTRIBUTES_TABLE_GUID))
> +                       ((efi_config_table_64_t *)p)->table = EFI_INVALID_TABLE_ADDR;
> +
>                 p += sz;
>         }
>         early_memunmap(tablep, nr_tables * sz);
>

Thanks. I've queued this up now.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2025-01-23  9:18 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-23  6:36 [PATCH] x86/efi: skip memattr table on kexec boot Dave Young
2025-01-23  9:17 ` Ard Biesheuvel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox