I'm seeing problems booting the kernel in EFI mixed mode (tested latest torvalds/master, 83a7eefedc9b). I'm attempting to boot the 32-bit compat entry point, not the handover protocol. It seems decompression is failing, and some print debugging pointed me at [1], free_mem_ptr is not initialized to zero so that branch is not taken. I figured that might imply BSS isn't getting zeroed, which led me to where the BSS is conditionally zeroed in efi_pe_entry [2]. That conditional was added in df7ecce842b8 "x86/efistub: Don't clear BSS twice in mixed mode". I verified that prior to that commit I can boot successfully in mixed mode, after I cannot. The commit message says that "efi_pe_entry() is also used as an entrypoint by the mixed mode startup code, in which case BSS will already have been cleared", but I couldn't find where that would occur. I do see a BSS clear in efi_mixed.S, but it's gated on CONFIG_EFI_HANDOVER_PROTOCOL [3]. [1]: https://elixir.bootlin.com/linux/latest/source/arch/x86/boot/compressed/misc.c#L360 [2]: https://elixir.bootlin.com/linux/latest/source/drivers/firmware/efi/libstub/x86-stub.c#L479 [3]: https://elixir.bootlin.com/linux/latest/source/arch/x86/boot/compressed/efi_mixed.S#L156