mbox series

[00/18] efi: clean up contents of struct efi

Message ID 20200216182334.8121-1-ardb@kernel.org (mailing list archive)
Headers show
Series efi: clean up contents of struct efi | expand

Message

Ard Biesheuvel Feb. 16, 2020, 6:23 p.m. UTC
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@alum.mit.edu
Cc: x86@kernel.org

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(-)

Comments

Ard Biesheuvel Feb. 16, 2020, 6:31 p.m. UTC | #1
(+ Tony and Fenghua)

On Sun, 16 Feb 2020 at 19:23, Ard Biesheuvel <ardb@kernel.org> 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@alum.mit.edu
> Cc: x86@kernel.org
>

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@kernel.org/

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
>
Tony Luck Feb. 18, 2020, 7:46 p.m. UTC | #2
On Sun, Feb 16, 2020 at 07:31:58PM +0100, Ard Biesheuvel wrote:
> (+ Tony and Fenghua)
> 
> Apologies to the IA64 maintainers for forgetting to cc you.

No worries.
> 
> The whole series can be found at
> https://lore.kernel.org/linux-efi/20200216182334.8121-1-ardb@kernel.org/
> 
> Please let me know if you need me to resend with the missing cc's added.

Thanks to get-lore-mbox.py I don't. It picked up all the pieces.

It all builds and boots with no issues.

Looks like a nice cleanup.

Tested-by: Tony Luck <tony.luck@intel.com> # arch/ia64

-Tony
Ard Biesheuvel Feb. 18, 2020, 10:08 p.m. UTC | #3
On Tue, 18 Feb 2020 at 20:46, Luck, Tony <tony.luck@intel.com> wrote:
>
> On Sun, Feb 16, 2020 at 07:31:58PM +0100, Ard Biesheuvel wrote:
> > (+ Tony and Fenghua)
> >
> > Apologies to the IA64 maintainers for forgetting to cc you.
>
> No worries.
> >
> > The whole series can be found at
> > https://lore.kernel.org/linux-efi/20200216182334.8121-1-ardb@kernel.org/
> >
> > Please let me know if you need me to resend with the missing cc's added.
>
> Thanks to get-lore-mbox.py I don't. It picked up all the pieces.
>
> It all builds and boots with no issues.
>
> Looks like a nice cleanup.
>
> Tested-by: Tony Luck <tony.luck@intel.com> # arch/ia64
>

Thanks Tony.