For the 64-bit kernel, we do not need to setup a GDT in efi_main, as the next step in the boot, startup_64, will set one up. This series factors out the GDT setup into a separate function and restricts it to the 32-bit kernel. The memory allocation for the GDT is also changed from allocating a full page via efi_alloc_low to the required space (32 bytes) from alloc_pool boot service. The final two patches are doc fixes to clarify that the 32-bit EFI handover entry point also requires segments/GDT to be setup, and that for 64-bit mode we don't have any special segment requirements (the 64-bit doc currently is just a copy of the 32-bit doc which isn't right). Arvind Sankar (8): efi/x86: Use C wrapper instead of inline assembly efi/x86: Allocate the GDT pointer on the stack efi/x86: Factor GDT setup code into a function efi/x86: Only setup the GDT for 32-bit kernel efi/x86: Allocate only the required 32 bytes for the GDT efi/x86: Change __KERNEL_{CS,DS} to __BOOT_{CS,DS} Documentation/x86/boot: Clarify segment requirements for EFI handover Documentation/x86/boot: Correct segment requirements for 64-bit boot Documentation/x86/boot.rst | 15 +- arch/x86/boot/compressed/eboot.c | 174 ++++++++++-------------- arch/x86/boot/compressed/efi_thunk_64.S | 4 +- 3 files changed, 85 insertions(+), 108 deletions(-) -- 2.24.1