Hi Laszlo, On 25/11/18 11:01, Laszlo Ersek wrote: > QEMU's test suite includes a set of cases called "BIOS tables test". Among > other things, it locates the RSD PTR ACPI table in guest RAM, and then > (chasing pointers to other ACPI tables) performs various sanity checks on > the QEMU-generated and firmware-installed tables. > > Currently this set of test cases doesn't work with UEFI guests, because > the ACPI spec's definition for locating the RSD PTR in UEFI guests is a > lot harder to implement from the hypervisor side -- just with raw guest > memory access -- than it is when scraping the memory of BIOS guests. > > Introduce a signature GUID, and a small, MB-aligned structure, identified > by the GUID. The hypervisor should loop over all MB-aligned pages in guest > RAM until one matches the signature GUID at offset 0, at which point the > hypervisor can fetch the RSDP address field(s) from the structure. > > QEMU's test logic currently spins on a pre-determined guest address, until > that address assumes a magic value. The method described in this patch is > conceptually the same ("busy loop until match is found"), except there is > no hard-coded address. This plays a lot more nicely with UEFI guest > firmware (we'll be able to use the normal page allocation UEFI service). > Given the size of EFI_GUID (16 bytes -- 128 bits), mismatches should be > astronomically unlikely. In addition, given the typical guest RAM size for > such tests (128 MB), there are 128 locations to check in one iteration of > the "outer" loop, which shouldn't introduce an intolerable delay after the > guest stores the RSDP address(es), and then the GUID.
I applied/build your series, but keep failing trying to test it with QEMU :/ I modified a bit tests/bios-tables-test.c to use the OVMF.fd build for the Q35 machine tests, but still pass the "OnRootBridgesConnected: root bridges have been connected, installing ACPI tables". Do you have a QEMU companion patch for this series? > > The GUID that the hypervisor should search for is > > AB87A6B1-2034-BDA0-71BD-375007757785 > > Expressed as a byte array: > > { > 0xb1, 0xa6, 0x87, 0xab, > 0x34, 0x20, > 0xa0, 0xbd, > 0x71, 0xbd, 0x37, 0x50, 0x07, 0x75, 0x77, 0x85 > } _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel