x86_64 32-bit EFI mixed mode boot broken

From: Clayton Craft
Date: Thu Mar 21 2024 - 18:05:25 EST


I've been chasing a problem with 32-bit EFI mixed mode booting on two different
(x86_64) Intel Bay Trail platforms, where the system reboots or hangs seemingly
very early somewhere before or after loading the kernel. I've not been able to
get any output from the kernel or stub over efifb when the issue happens[0], and
do not have serial console access on these systems.

v6.8 fails for me, and presumably so does everything back to v6.2. v6.1 is able
to boot OK on these platforms with mixed mode, and it looks like there are a lot
of changes from 6.1..6.2 for EFI/mixed mode booting. I did managed to bisect the
issue to:

commit e2ab9eab324cdf240de89741e4a1aa79919f0196
Author: Ard Biesheuvel <ardb@xxxxxxxxxx>
Date: Tue Nov 22 17:10:02 2022 +0100

x86/boot/compressed: Move 32-bit entrypoint code into .text section

However I'm not sure how to proceed from here, or if my bisect is all that
useful since the commit seems to be in the middle of a bunch of changes I do not
understand. I've been using systemd-boot to test this (both the full bootloader
and UKI w/ the sd-boot stub). Is 32-bit mixed mode on x86_64 working for others?

Thanks,
Clayton

0. Using "debug ignore_loglevel earlycon=efifb earlyprintk=efi,keep efi=debug"

Attachment: signature.asc
Description: PGP signature