(+ Tony and Fenghua) On Sun, 16 Feb 2020 at 19:23, Ard Biesheuvel <ardb@xxxxxxxxxx> wrote: > > The generic r/w singleton object 'struct efi efi' is currently being used > as a dumping ground for memory addresses of firmware tables that only have > significance for a single architecture, or only at boot time [whereas > struct efi is an object with indefinite lifetime, and which is exported > to modules] > > Since we're expecting a new arrival that does affect all architectures, > which will need to be added to struct efi as well, let's do a cleanup > pass, and move out all the per-arch pieces and other stuff that does not > need to live in a global r/w struct. > > As a side effect, I ran into some other things that can be refactored > so that more code is shared between architectures, or made x86 specific > if it is something that should maybe not have existed in the first place, > and x86 is the only architecture where we cannot remove it for compatibility > reasons. > > Finally, we get rid of the struct efi::systab member, which we only need > at runtime to get at the 'runtime' pointer, so let's store that instead. > This allows us to drop some ugly handling of the remapped systab address, > which we cannot discover as easily as the remapped 'runtime' pointer. > > Cc: nivedita@xxxxxxxxxxxx > Cc: x86@xxxxxxxxxx > Apologies to the IA64 maintainers for forgetting to cc you. The whole series can be found at https://lore.kernel.org/linux-efi/20200216182334.8121-1-ardb@xxxxxxxxxx/ Please let me know if you need me to resend with the missing cc's added. > Ard Biesheuvel (18): > efi: drop handling of 'boot_info' configuration table > efi/ia64: move HCDP and MPS table handling into IA64 arch code > efi: move UGA and PROP table handling to x86 code > efi: make rng_seed table handling local to efi.c > efi: move mem_attr_table out of struct efi > efi: make memreserve table handling local to efi.c > efi: merge EFI system table revision and vendor checks > efi/ia64: use existing helpers to locate ESI table > efi/ia64: use local variable for EFI system table address > efi/ia64: switch to efi_config_parse_tables() > efi: make efi_config_init() x86 only > efi: clean up config_parse_tables() > efi/x86: remove runtime table address from kexec EFI setup data > efi/x86: make fw_vendor, config_table and runtime sysfs nodes x86 > specific > efi/x86: merge assignments of efi.runtime_version > efi: add 'runtime' pointer to struct efi > efi/arm: drop unnecessary references to efi.systab > efi/x86: drop 'systab' member from struct efi > > arch/ia64/kernel/efi.c | 55 ++-- > arch/ia64/kernel/esi.c | 21 +- > arch/x86/include/asm/efi.h | 6 +- > arch/x86/kernel/asm-offsets_32.c | 5 + > arch/x86/kernel/kexec-bzimage64.c | 5 +- > arch/x86/platform/efi/efi.c | 262 ++++++++++---------- > arch/x86/platform/efi/efi_32.c | 13 +- > arch/x86/platform/efi/efi_64.c | 14 +- > arch/x86/platform/efi/efi_stub_32.S | 21 +- > arch/x86/platform/efi/quirks.c | 2 +- > drivers/firmware/efi/arm-init.c | 68 ++--- > drivers/firmware/efi/arm-runtime.c | 18 -- > drivers/firmware/efi/efi.c | 237 ++++++++---------- > drivers/firmware/efi/memattr.c | 13 +- > drivers/firmware/efi/runtime-wrappers.c | 4 +- > drivers/firmware/pcdp.c | 8 +- > include/linux/efi.h | 76 +++--- > 17 files changed, 379 insertions(+), 449 deletions(-) > > -- > 2.17.1 >