On Thu, 23 Jan 2025 at 07:36, Dave Young <[email protected]> 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/[email protected]/ > > Ard suggests to skip the efi memattr table in kexec, this makes sense because > those memattr fixups are not critical. > > Reported-by: Breno Leitao <[email protected]> > Reported-and-tested-by: Usama Arif <[email protected]> > Suggested-by: Ard Biesheuvel <[email protected]> > Signed-off-by: Dave Young <[email protected]> > > 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.
