On Fri, Aug 20, 2021 at 5:01 PM Sean Christopherson <seanjc@xxxxxxxxxx> wrote: > > On Thu, Aug 19, 2021, Varad Gautam wrote: > > This series brings EFI support to kvm-unit-tests on x86_64. > > > > 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 from Zixuan [1] fixes up some testcases with non-PIC inline > > asm stubs which allows building these as PIC. > > > > Changes in v2: > > - Add Zixuan's patch to enable more testcases. > > - Fix TSS setup in cstart64.S for CONFIG_EFI. > > > > [1]: https://lore.kernel.org/r/20210818000905.1111226-10-zixuanwang@xxxxxxxxxx/ > > git tree: https://github.com/varadgautam/kvm-unit-tests/tree/efi-stub-v2 > > > > Varad Gautam (5): > > 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 > > Zixuan and Varad, are your two series complimentary or do they conflict? E.g. > can Zixuan's series be applied on top with little-to-no change to Varad's patches, > or are both series trying to do the same things in different ways? > > And if they conflict, are the conflicts largely superficial, or are there > fundamental differences in how the problems are being solved? > > Thanks! I’m currently building my patches on top of Varad’s. This does not require too many changes to my patches: I just need to (1) replace the GNU-EFI function calls with Varad’s approach; (2) copy more EFI-related definitions from Linux to implement several additional UEFI service calls, e.g. a reset_system() call to shutdown the guest VM; and (3) remove some duplicated code from Varad’s patches, e.g. I remove Varad’s modifications in x86/cstart64.S because I implement similar setup code in lib/x86/setup.c. This migration affects only the first part of my patch series, and I’m currently working on it. Hopefully I can send out the second version where I take Varad’s patches as the foundation of mine. Regards, Zixuan