Re: [PATCH 0/6] x86/efi/mixed: Decouple from legacy decompressor

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



* 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




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux