* Ard Biesheuvel <ardb+git@xxxxxxxxxx> wrote: > From: Ard Biesheuvel <ardb@xxxxxxxxxx> > > Since commit > > a1b87d54f4e4 ("x86/efistub: Avoid legacy decompressor when doing EFI boot") > > booting via the EFI stub no longer relies on the legacy decompressor, > and instead, the kernel proper is decompressed by code executing in the > context of the EFI boot services, and subsequently invoked directly. > > The only remaining dependency is the EFI mixed mode startup code, which > makes a detour via the legacy decompressor's 32-bit entrypoint, in order > to obtain a 1:1 mapping of memory, which is a prerequisite for 64-bit > execution on x86. > > This detour requires some fiddly setup on the part of the mixed mode > startup code, which has to stash the firmware stack pointer and boot > arguments in memory, and create a fake struct boot_params to trick the > code in startup_32 to behave as intended. > > This dependency also impedes reuse of the EFI stub code in other > contexts, such as generic EFI zboot, which will reuse the EFI stub but > not the legacy decompressor. > > So remove this dependency, by replacing this detour with a minimal > reimplementation of the 1:1 mapping code. With some further cleanup > applied on top, the line count barely changes, but the resulting code > can operate independently from the legacy decompressor, and is therefore > moved out of arch/x86/boot/compressed and into the EFI libstub/ > directory. > > Ard Biesheuvel (6): > x86/efi/mixed: Check CPU compatibility without relying on verify_cpu() > x86/efi/mixed: Remove dependency on legacy startup_32 code > x86/efi/mixed: Don't bother preserving 64-bit mode segment selectors > x86/efi/mixed: Simplify and document thunking logic > x86/efi/mixed: Reduce padding by moving some code around > x86/efi/mixed: Move mixed mode startup code into libstub > > arch/x86/boot/compressed/Makefile | 1 - > arch/x86/boot/compressed/head_64.S | 7 - > drivers/firmware/efi/libstub/Makefile | 3 + > arch/x86/boot/compressed/efi_mixed.S => drivers/firmware/efi/libstub/x86-mixed.S | 320 ++++++++++---------- > 4 files changed, 169 insertions(+), 162 deletions(-) > rename arch/x86/boot/compressed/efi_mixed.S => drivers/firmware/efi/libstub/x86-mixed.S (54%) A belated: Acked-by: Ingo Molnar <mingo@xxxxxxxxxx> Thanks, Ingo