Hello, This patch series refactors the x86_64 UEFI set up process, fixes the `run-tests.sh` script to run under UEFI, and improves the boot speed under UEFI. The patches are organized as four parts. The first part (patches 1-3) refactors the x86_64 UEFI set up process. The previous UEFI setup calls arch-specific setup functions twice and generates arch-specific data structure. As Andrew suggested [1], we refactor this process to make only one call to the arch-specific function and generate arch-neutral data structures. This simplifies the set up process and makes it easier to develop UEFI support for other architectures. The second part (patch 4) converts several x86 test cases to position-independent code (PIC) to run under UEFI. This patch is ported from the initial UEFI support patchset [2] with fixes to the 32-bit compilation. The third part (patches 5-8) fixes the UEFI runner scripts. Patch 5 sets UEFI OVMF image as read-only. Patch 6 fixes test cases' return code under UEFI, enabling Patch 7-8 to fix the `run-tests.sh` script under UEFI. The fourth part (patches 9-10) improves the boot speed under UEFI. Patch 9 renames the EFI executables to EFI/BOOT/BOOTX64.EFI. UEFI OVMF recognizes this file by default and skips the 5-second user input waiting. Patch 10 makes `run-tests.sh` work with this new EFI executable filename. This patchset is based on the `uefi` branch. Changes since V1: V2 Patch # Changes ---------- ------- 03/10 (New patch from Sean) Skip SEV-ES setup if SEV is not available 04/10 Add more details to the commit message 06/10 Add UEFI shutdown in case exit() doesn't work 07/10 Simplify variable usages in scripts 08/10 Simplify variable usages in scripts 09/10 (New patch) Improve UEFI boot speed 10/10 (New patch) Update run-tests.sh Best regards, Zixuan Wang and Marc Orr [1] https://lore.kernel.org/kvm/20211005060549.clar5nakynz2zecl@xxxxxxxxxx/ [2] https://lore.kernel.org/kvm/20211004204931.1537823-1-zxwang42@xxxxxxxxx/ Marc Orr (3): scripts: Generalize EFI check x86 UEFI: Make run_tests.sh (mostly) work under UEFI x86 UEFI: Make _NO_FILE_4Uhere_ work w/ BOOTX64.EFI Sean Christopherson (1): x86 AMD SEV: Skip SEV-ES if SEV is unsupported Zixuan Wang (6): x86 UEFI: Remove mixed_mode x86 UEFI: Refactor set up process x86 UEFI: Convert x86 test cases to PIC x86 UEFI: Set UEFI OVMF as readonly x86 UEFI: Exit QEMU with return code x86 UEFI: Improve Boot Speed lib/efi.c | 63 +++++++-- lib/efi.h | 19 ++- lib/linux/efi.h | 317 ++++++++++++++----------------------------- lib/x86/acpi.c | 36 +++-- lib/x86/acpi.h | 5 +- lib/x86/asm/setup.h | 16 +-- lib/x86/setup.c | 145 +++++++++----------- lib/x86/usermode.c | 3 +- scripts/runtime.bash | 14 +- x86/Makefile.common | 10 +- x86/Makefile.x86_64 | 7 +- x86/access.c | 9 +- x86/cet.c | 8 +- x86/efi/run | 45 +++--- x86/emulator.c | 5 +- x86/eventinj.c | 8 ++ x86/run | 6 +- x86/smap.c | 13 +- x86/umip.c | 26 +++- 19 files changed, 361 insertions(+), 394 deletions(-) -- 2.33.0