[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 0/6] efi: Implement generic EFI boot for x86
From: |
Ard Biesheuvel |
Subject: |
[PATCH v2 0/6] efi: Implement generic EFI boot for x86 |
Date: |
Thu, 11 May 2023 14:06:34 +0200 |
Switch the i386-efi and x86_64-efi builds to the generic EFI loader,
which enters the Linux kernel via the EFI stub and provides the initrd
via the LoadFile2 protocol. This unifies x86 with other EFI
architectures, and removes the dependency on the setup header and struct
bootparams.
Do some preparatory cleanup first, so we no longer need to rely on the
MS to SysV calling convention translation code.
Changes since v1:
- drop Itanium support, which is a maintenance burden as it shares the
EFI code with other architectures, but does not have a EFI stub in
Linux, and there is no way to test whether our changes break the boot
for it or not;
- enable generic EFI for i386 as well
- wire up the existing x86 code as a fallback for kernels that lack EFI
stub or LoadFile2 support. This removes the need for additional
changes to support v5.8 or older kernels.
Ard Biesheuvel (6):
ia64: Remove support
efi: Make EFI PXE protocol methods non-callable
efi: Add calling convention annotation to all prototypes
efi: Drop all uses of efi_call_XX wrappers
efi: Remove x86_64 call wrappers
efi: Use generic EFI loader for x86_64 and i386
.travis.yml | 7 +-
Makefile.util.def | 1 -
configure.ac | 8 -
docs/grub-dev.texi | 2 +-
docs/grub.texi | 2 +-
gentpl.py | 6 +-
grub-core/Makefile.am | 6 -
grub-core/Makefile.core.def | 21 +-
grub-core/commands/acpi.c | 8 +-
grub-core/commands/efi/efitextmode.c | 8 +-
grub-core/commands/efi/lsefi.c | 5 +-
grub-core/commands/efi/tpm.c | 21 +-
grub-core/commands/file.c | 33 -
grub-core/disk/efi/efidisk.c | 7 +-
grub-core/kern/arm/efi/init.c | 12 +-
grub-core/kern/dl.c | 12 -
grub-core/kern/efi/efi.c | 56 +-
grub-core/kern/efi/init.c | 15 +-
grub-core/kern/efi/mm.c | 17 +-
grub-core/kern/emu/cache.c | 4 +-
grub-core/kern/emu/cache_s.S | 2 +-
grub-core/kern/emu/lite.c | 3 -
grub-core/kern/i386/efi/tsc.c | 2 +-
grub-core/kern/ia64/cache.c | 35 -
grub-core/kern/ia64/dl.c | 150 -----
grub-core/kern/ia64/dl_helper.c | 241 -------
grub-core/kern/ia64/efi/init.c | 80 ---
grub-core/kern/ia64/efi/startup.S | 44 --
grub-core/kern/misc.c | 2 +-
grub-core/kern/x86_64/efi/callwrap.S | 129 ----
grub-core/lib/efi/datetime.c | 9 +-
grub-core/lib/efi/halt.c | 6 +-
grub-core/lib/efi/relocator.c | 6 +-
grub-core/lib/ia64/longjmp.S | 162 -----
grub-core/lib/ia64/setjmp.S | 177 ------
grub-core/lib/setjmp.S | 3 -
grub-core/loader/efi/appleloader.c | 8 +-
grub-core/loader/efi/chainloader.c | 20 +-
grub-core/loader/efi/linux.c | 51 +-
grub-core/loader/i386/linux.c | 8 +
grub-core/loader/ia64/efi/linux.c | 607 ------------------
grub-core/mmap/efi/mmap.c | 16 +-
grub-core/net/drivers/efi/efinet.c | 26 +-
grub-core/term/efi/console.c | 29 +-
grub-core/term/efi/serial.c | 18 +-
grub-core/video/efi_gop.c | 18 +-
grub-core/video/efi_uga.c | 8 +-
include/grub/cache.h | 2 +-
include/grub/dl.h | 12 +-
include/grub/efi/api.h | 666 +++++++++-----------
include/grub/efi/efi.h | 2 +-
include/grub/efi/pe32.h | 2 -
include/grub/efi/tpm.h | 149 +++--
include/grub/elf.h | 109 ----
include/grub/ia64/efi/memory.h | 6 -
include/grub/ia64/efi/time.h | 23 -
include/grub/ia64/kernel.h | 25 -
include/grub/ia64/reloc.h | 44 --
include/grub/ia64/setjmp.h | 28 -
include/grub/ia64/time.h | 28 -
include/grub/ia64/types.h | 32 -
include/grub/misc.h | 2 +-
include/grub/util/install.h | 1 -
include/grub/util/mkimage.h | 2 -
tests/core_compress_test.in | 2 +-
util/grub-install-common.c | 1 -
util/grub-install.c | 16 -
util/grub-mkimage.c | 1 -
util/grub-mkimagexx.c | 175 +----
util/grub-mknetdir.c | 1 -
util/grub-mkrescue.c | 7 -
util/grub-module-verifier.c | 22 -
util/mkimage.c | 17 -
73 files changed, 610 insertions(+), 2876 deletions(-)
delete mode 100644 grub-core/kern/ia64/cache.c
delete mode 100644 grub-core/kern/ia64/dl.c
delete mode 100644 grub-core/kern/ia64/dl_helper.c
delete mode 100644 grub-core/kern/ia64/efi/init.c
delete mode 100644 grub-core/kern/ia64/efi/startup.S
delete mode 100644 grub-core/kern/x86_64/efi/callwrap.S
delete mode 100644 grub-core/lib/ia64/longjmp.S
delete mode 100644 grub-core/lib/ia64/setjmp.S
delete mode 100644 grub-core/loader/ia64/efi/linux.c
delete mode 100644 include/grub/ia64/efi/memory.h
delete mode 100644 include/grub/ia64/efi/time.h
delete mode 100644 include/grub/ia64/kernel.h
delete mode 100644 include/grub/ia64/reloc.h
delete mode 100644 include/grub/ia64/setjmp.h
delete mode 100644 include/grub/ia64/time.h
delete mode 100644 include/grub/ia64/types.h
--
2.39.2
- [PATCH v2 0/6] efi: Implement generic EFI boot for x86,
Ard Biesheuvel <=
- [PATCH v2 2/6] efi: Make EFI PXE protocol methods non-callable, Ard Biesheuvel, 2023/05/11
- [PATCH v2 3/6] efi: Add calling convention annotation to all prototypes, Ard Biesheuvel, 2023/05/11
- [PATCH v2 5/6] efi: Remove x86_64 call wrappers, Ard Biesheuvel, 2023/05/11
- [PATCH v2 1/6] ia64: Remove support, Ard Biesheuvel, 2023/05/11
- Re: [PATCH v2 1/6] ia64: Remove support, John Paul Adrian Glaubitz, 2023/05/11
- Re: [PATCH v2 1/6] ia64: Remove support, Ard Biesheuvel, 2023/05/11
- Re: [PATCH v2 1/6] ia64: Remove support, Steve McIntyre, 2023/05/11
- Re: [PATCH v2 1/6] ia64: Remove support, John Paul Adrian Glaubitz, 2023/05/11
- Re: [PATCH v2 1/6] ia64: Remove support, Ard Biesheuvel, 2023/05/11
- Re: [PATCH v2 1/6] ia64: Remove support, matoro, 2023/05/11