Re: [PATCH 00/18] efi: clean up contents of struct efi
From: Ard Biesheuvel
Date: Sun Feb 16 2020 - 13:32:15 EST
(+ 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
>