On Fri, Jul 02, 2021 at 01:48:14PM +0200, Varad Gautam wrote: > This series brings EFI support to a reduced subset of kvm-unit-tests > on x86_64. I'm sending it out for early review since it covers enough > ground to allow adding KVM testcases for EFI-only environments. > > EFI support works by changing the test entrypoint to a stub entry > point for the EFI loader to jump to in long mode, where the test binary > exits EFI boot services, performs the remaining CPU bootstrapping, > and then calls the testcase main(). > > Since the EFI loader only understands PE objects, the first commit > introduces a `configure --efi` mode which builds each test as a shared > lib. This shared lib is repackaged into a PE via objdump. > > Commit 2-4 take a trip from the asm entrypoint to C to exit EFI and > relocate ELF .dynamic contents. > > Commit 5 adds post-EFI long mode x86_64 setup and calls the testcase. > > Commit 6 patches out some broken tests for EFI. Testcases that refuse > to build as shared libs are also left disabled, these need some massaging. > > git tree: https://github.com/varadgautam/kvm-unit-tests/commits/efi-stub Hi Varad, Thanks for this. I haven't reviewed it in detail yet (I just got back from vacation), but this looks like the right approach. In fact, I had started going down the efi stub approach for AArch64 a while back as well, but the effort got preempted by other work [again]. I'll try to allocate time to play with this for x86 and to build on it for AArch64 in the coming weeks. drew > > Varad Gautam (6): > x86: Build tests as PE objects for the EFI loader > x86: Call efi_main from _efi_pe_entry > x86: efi_main: Get EFI memory map and exit boot services > x86: efi_main: Self-relocate ELF .dynamic addresses > cstart64.S: x86_64 bootstrapping after exiting EFI > x86: Disable some breaking tests for EFI and modify vmexit test > > .gitignore | 2 + > Makefile | 16 ++- > configure | 11 ++ > lib/linux/uefi.h | 337 ++++++++++++++++++++++++++++++++++++++++++++ > x86/Makefile.common | 45 ++++-- > x86/Makefile.x86_64 | 43 +++--- > x86/cstart64.S | 78 ++++++++++ > x86/efi.lds | 67 +++++++++ > x86/efi_main.c | 167 ++++++++++++++++++++++ > x86/vmexit.c | 7 + > 10 files changed, 741 insertions(+), 32 deletions(-) > create mode 100644 lib/linux/uefi.h > create mode 100644 x86/efi.lds > create mode 100644 x86/efi_main.c > > -- > 2.30.2 > _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization