* EFI/x86 backports for v6.1
@ 2024-02-25 10:02 Ard Biesheuvel
2024-03-04 10:35 ` Greg KH
0 siblings, 1 reply; 3+ messages in thread
From: Ard Biesheuvel @ 2024-02-25 10:02 UTC (permalink / raw)
To: # 3.4.x, Dimitri John Ledkov, jan.setjeeilers
Please consider the patches below for backporting to v6.1. They should
all apply cleanly in the given order.
These are prerequisites for NX compat support on x86, but the
remaining changes do not apply cleanly and will be sent as a patch
series at a later date.
By themselves, these changes not only constitute a reasonable cleanup,
they are also needed for future support of x86s [0] CPUs that are no
longer able to transition out of long mode.
Documentation/x86/boot.rst | 2 +-
arch/x86/Kconfig | 17 +
arch/x86/boot/compressed/Makefile | 8 +-
arch/x86/boot/compressed/efi_mixed.S | 383 +++++++++++++++++++
arch/x86/boot/compressed/efi_thunk_64.S | 195 ----------
arch/x86/boot/compressed/head_32.S | 25 +-
arch/x86/boot/compressed/head_64.S | 566 ++++++-----------------------
arch/x86/boot/compressed/mem_encrypt.S | 152 +++++++-
arch/x86/boot/compressed/misc.c | 34 +-
arch/x86/boot/compressed/misc.h | 2 -
arch/x86/boot/compressed/pgtable.h | 10 +-
arch/x86/boot/compressed/pgtable_64.c | 87 ++---
arch/x86/boot/header.S | 2 +-
arch/x86/boot/tools/build.c | 2 +
drivers/firmware/efi/efi.c | 22 ++
drivers/firmware/efi/libstub/alignedmem.c | 5 +-
drivers/firmware/efi/libstub/arm64-stub.c | 6 +-
drivers/firmware/efi/libstub/efistub.h | 6 +-
drivers/firmware/efi/libstub/mem.c | 3 +-
drivers/firmware/efi/libstub/randomalloc.c | 5 +-
drivers/firmware/efi/libstub/x86-stub.c | 53 ++-
drivers/firmware/efi/vars.c | 13 +-
include/linux/decompress/mm.h | 2 +-
23 files changed, 805 insertions(+), 795 deletions(-)
[0] https://www.intel.com/content/www/us/en/developer/articles/technical/envisioning-future-simplified-architecture.html
9cf42bca30e9 efi: libstub: use EFI_LOADER_CODE region when moving the
kernel in memory
cb8bda8ad443 x86/boot/compressed: Rename efi_thunk_64.S to efi-mixed.S
e2ab9eab324c x86/boot/compressed: Move 32-bit entrypoint code into .text section
5c3a85f35b58 x86/boot/compressed: Move bootargs parsing out of 32-bit
startup code
91592b5c0c2f x86/boot/compressed: Move efi32_pe_entry into .text section
73a6dec80e2a x86/boot/compressed: Move efi32_entry out of head_64.S
7f22ca396778 x86/boot/compressed: Move efi32_pe_entry() out of head_64.S
4b52016247ae x86/boot/compressed, efi: Merge multiple definitions of
image_offset into one
630f337f0c4f x86/boot/compressed: Simplify IDT/GDT preserve/restore in
the EFI thunk
6aac80a8da46 x86/boot/compressed: Avoid touching ECX in
startup32_set_idt_entry()
d73a257f7f86 x86/boot/compressed: Pull global variable reference into
startup32_load_idt()
c6355995ba47 x86/boot/compressed: Move startup32_load_idt() into .text section
9ea813be3d34 x86/boot/compressed: Move startup32_load_idt() out of head_64.S
b5d854cd4b6a x86/boot/compressed: Move startup32_check_sev_cbit() into .text
9d7eaae6a071 x86/boot/compressed: Move startup32_check_sev_cbit() out
of head_64.S
30c9ca16a527 x86/boot/compressed: Adhere to calling convention in
get_sev_encryption_bit()
61de13df9590 x86/boot/compressed: Only build mem_encrypt.S if AMD_MEM_ENCRYPT=y
bad267f9e18f efi: verify that variable services are supported
0217a40d7ba6 efi: efivars: prevent double registration
cc3fdda2876e x86/efi: Make the deprecated EFI handover protocol optional
7734a0f31e99 x86/boot: Robustify calling startup_{32,64}() from the
decompressor code
d2d7a54f69b6 x86/efistub: Branch straight to kernel entry point from C code
df9215f15206 x86/efistub: Simplify and clean up handover entry code
127920645876 x86/decompressor: Avoid magic offsets for EFI handover entrypoint
d7156b986d4c x86/efistub: Clear BSS in EFI handover protocol entrypoint
8b63cba746f8 x86/decompressor: Store boot_params pointer in callee save register
00c6b0978ec1 x86/decompressor: Assign paging related global variables earlier
e8972a76aa90 x86/decompressor: Call trampoline as a normal function
918a7a04e717 x86/decompressor: Use standard calling convention for trampoline
bd328aa01ff7 x86/decompressor: Avoid the need for a stack in the
32-bit trampoline
64ef578b6b68 x86/decompressor: Call trampoline directly from C code
f97b67a773cd x86/decompressor: Only call the trampoline when changing
paging levels
cb83cece57e1 x86/decompressor: Pass pgtable address to trampoline directly
03dda95137d3 x86/decompressor: Merge trampoline cleanup with switching code
24388292e2d7 x86/decompressor: Move global symbol references to C code
8217ad0a435f decompress: Use 8 byte alignment
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: EFI/x86 backports for v6.1
2024-02-25 10:02 EFI/x86 backports for v6.1 Ard Biesheuvel
@ 2024-03-04 10:35 ` Greg KH
2024-03-04 10:50 ` Ard Biesheuvel
0 siblings, 1 reply; 3+ messages in thread
From: Greg KH @ 2024-03-04 10:35 UTC (permalink / raw)
To: Ard Biesheuvel; +Cc: # 3.4.x, Dimitri John Ledkov, jan.setjeeilers
On Sun, Feb 25, 2024 at 11:02:50AM +0100, Ard Biesheuvel wrote:
> Please consider the patches below for backporting to v6.1. They should
> all apply cleanly in the given order.
>
> These are prerequisites for NX compat support on x86, but the
> remaining changes do not apply cleanly and will be sent as a patch
> series at a later date.
> By themselves, these changes not only constitute a reasonable cleanup,
> they are also needed for future support of x86s [0] CPUs that are no
> longer able to transition out of long mode.
>
> Documentation/x86/boot.rst | 2 +-
> arch/x86/Kconfig | 17 +
> arch/x86/boot/compressed/Makefile | 8 +-
> arch/x86/boot/compressed/efi_mixed.S | 383 +++++++++++++++++++
> arch/x86/boot/compressed/efi_thunk_64.S | 195 ----------
> arch/x86/boot/compressed/head_32.S | 25 +-
> arch/x86/boot/compressed/head_64.S | 566 ++++++-----------------------
> arch/x86/boot/compressed/mem_encrypt.S | 152 +++++++-
> arch/x86/boot/compressed/misc.c | 34 +-
> arch/x86/boot/compressed/misc.h | 2 -
> arch/x86/boot/compressed/pgtable.h | 10 +-
> arch/x86/boot/compressed/pgtable_64.c | 87 ++---
> arch/x86/boot/header.S | 2 +-
> arch/x86/boot/tools/build.c | 2 +
> drivers/firmware/efi/efi.c | 22 ++
> drivers/firmware/efi/libstub/alignedmem.c | 5 +-
> drivers/firmware/efi/libstub/arm64-stub.c | 6 +-
> drivers/firmware/efi/libstub/efistub.h | 6 +-
> drivers/firmware/efi/libstub/mem.c | 3 +-
> drivers/firmware/efi/libstub/randomalloc.c | 5 +-
> drivers/firmware/efi/libstub/x86-stub.c | 53 ++-
> drivers/firmware/efi/vars.c | 13 +-
> include/linux/decompress/mm.h | 2 +-
> 23 files changed, 805 insertions(+), 795 deletions(-)
>
> [0] https://www.intel.com/content/www/us/en/developer/articles/technical/envisioning-future-simplified-architecture.html
>
>
> 9cf42bca30e9 efi: libstub: use EFI_LOADER_CODE region when moving the
> kernel in memory
> cb8bda8ad443 x86/boot/compressed: Rename efi_thunk_64.S to efi-mixed.S
> e2ab9eab324c x86/boot/compressed: Move 32-bit entrypoint code into .text section
> 5c3a85f35b58 x86/boot/compressed: Move bootargs parsing out of 32-bit
> startup code
> 91592b5c0c2f x86/boot/compressed: Move efi32_pe_entry into .text section
> 73a6dec80e2a x86/boot/compressed: Move efi32_entry out of head_64.S
> 7f22ca396778 x86/boot/compressed: Move efi32_pe_entry() out of head_64.S
> 4b52016247ae x86/boot/compressed, efi: Merge multiple definitions of
> image_offset into one
> 630f337f0c4f x86/boot/compressed: Simplify IDT/GDT preserve/restore in
> the EFI thunk
> 6aac80a8da46 x86/boot/compressed: Avoid touching ECX in
> startup32_set_idt_entry()
> d73a257f7f86 x86/boot/compressed: Pull global variable reference into
> startup32_load_idt()
> c6355995ba47 x86/boot/compressed: Move startup32_load_idt() into .text section
> 9ea813be3d34 x86/boot/compressed: Move startup32_load_idt() out of head_64.S
> b5d854cd4b6a x86/boot/compressed: Move startup32_check_sev_cbit() into .text
> 9d7eaae6a071 x86/boot/compressed: Move startup32_check_sev_cbit() out
> of head_64.S
> 30c9ca16a527 x86/boot/compressed: Adhere to calling convention in
> get_sev_encryption_bit()
> 61de13df9590 x86/boot/compressed: Only build mem_encrypt.S if AMD_MEM_ENCRYPT=y
> bad267f9e18f efi: verify that variable services are supported
> 0217a40d7ba6 efi: efivars: prevent double registration
> cc3fdda2876e x86/efi: Make the deprecated EFI handover protocol optional
> 7734a0f31e99 x86/boot: Robustify calling startup_{32,64}() from the
> decompressor code
> d2d7a54f69b6 x86/efistub: Branch straight to kernel entry point from C code
> df9215f15206 x86/efistub: Simplify and clean up handover entry code
> 127920645876 x86/decompressor: Avoid magic offsets for EFI handover entrypoint
> d7156b986d4c x86/efistub: Clear BSS in EFI handover protocol entrypoint
> 8b63cba746f8 x86/decompressor: Store boot_params pointer in callee save register
> 00c6b0978ec1 x86/decompressor: Assign paging related global variables earlier
> e8972a76aa90 x86/decompressor: Call trampoline as a normal function
> 918a7a04e717 x86/decompressor: Use standard calling convention for trampoline
> bd328aa01ff7 x86/decompressor: Avoid the need for a stack in the
> 32-bit trampoline
> 64ef578b6b68 x86/decompressor: Call trampoline directly from C code
> f97b67a773cd x86/decompressor: Only call the trampoline when changing
> paging levels
> cb83cece57e1 x86/decompressor: Pass pgtable address to trampoline directly
> 03dda95137d3 x86/decompressor: Merge trampoline cleanup with switching code
> 24388292e2d7 x86/decompressor: Move global symbol references to C code
> 8217ad0a435f decompress: Use 8 byte alignment
For some reason, not all of these applied cleanly. But they still build
with just a subset :)
Here are the ones that failed for me:
0217a40d7ba6 ("efi: efivars: prevent double registration")
df9215f15206 ("x86/efistub: Simplify and clean up handover entry code")
127920645876 ("x86/decompressor: Avoid magic offsets for EFI handover entrypoint")
d7156b986d4c ("x86/efistub: Clear BSS in EFI handover protocol entrypoint")
Can you provide working backports for these 4? Everything else is now
queued up.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: EFI/x86 backports for v6.1
2024-03-04 10:35 ` Greg KH
@ 2024-03-04 10:50 ` Ard Biesheuvel
0 siblings, 0 replies; 3+ messages in thread
From: Ard Biesheuvel @ 2024-03-04 10:50 UTC (permalink / raw)
To: Greg KH; +Cc: # 3.4.x, Dimitri John Ledkov, jan.setjeeilers
On Mon, 4 Mar 2024 at 11:37, Greg KH <greg@kroah.com> wrote:
>
> On Sun, Feb 25, 2024 at 11:02:50AM +0100, Ard Biesheuvel wrote:
> > Please consider the patches below for backporting to v6.1. They should
> > all apply cleanly in the given order.
> >
...
> For some reason, not all of these applied cleanly. But they still build
> with just a subset :)
>
> Here are the ones that failed for me:
> 0217a40d7ba6 ("efi: efivars: prevent double registration")
> df9215f15206 ("x86/efistub: Simplify and clean up handover entry code")
> 127920645876 ("x86/decompressor: Avoid magic offsets for EFI handover entrypoint")
> d7156b986d4c ("x86/efistub: Clear BSS in EFI handover protocol entrypoint")
>
> Can you provide working backports for these 4? Everything else is now
> queued up.
>
OK. I'll do those 4 as well as the remaining ones that didn't apply
cleanly to begin with.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-03-04 10:50 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-25 10:02 EFI/x86 backports for v6.1 Ard Biesheuvel
2024-03-04 10:35 ` Greg KH
2024-03-04 10:50 ` Ard Biesheuvel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox