This series strives to implement a client for QEMU's ACPI loader fw_cfg interface as completely as I can imagine at this point. The only shortcut it takes is that it equates the FSeg allocation hint with the affected blob containing the RSD PTR table at the beginning, which Michael (CC'd) has suggested before.
Some UEFI-specific notes for Michael that may not be obvious immediately: - All blobs are allocated in EfiACPIMemoryNVS type memory. In theory, most tables could be allocated in EfiACPIReclaimMemory too (which the OS can release and reuse after it enables ACPI) except eg. the FACS, but the fw_cfg interface doesn't allow distinguishing these two, hence OVMF follows what SeaBIOS does: allocates tables in memory that is permanently reserved from the OS. - All tables are allocated under 4GB. The Zone member of the Allocate command is ignored (beyond the RSD PTR determination above). - The RSD PTR is not allocated at a particularly low address; under UEFI the RSD PTR is detected by checking for one of two special GUIDs in the EFI Configuration Table. The actual GUID found corresponds to the version number of the RSD PTR. - All blobs are allocated in areas that are whole multiples of pages. Alignment requests greater than a page are not supported. (At the moment edk2 has no memory allocation interface that supports *all* of: alignment specification, memory type, and max address.) The series depends on OrderedCollectionLib, which I had posted as: [edk2] [PATCH v3 0/3] MdePkg: ordered collections, AppPkg: unit tester <http://thread.gmane.org/gmane.comp.bios.tianocore.devel/8269> <https://github.com/lersek/edk2/commits/rbtree_v3> Tested as follows: - Fedora 20 guest, checked tables in dmesg, S3 suspend/resume works, ACPI shutdown (virtual power button) works; - RHEL-7, ditto; - Windows Server 2008 R2 with QXL driver, S3 suspend/resume works (bound to ACPI power button). Public branch: <https://github.com/lersek/edk2/commits/acpi_full> Thanks Laszlo Laszlo Ersek (4): OvmfPkg: resolve OrderedCollectionLib with base red-black tree instance OvmfPkg: AcpiPlatformDxe: actualize QemuLoader.h comments OvmfPkg: AcpiPlatformDxe: remove current ACPI table loader OvmfPkg: AcpiPlatformDxe: implement QEMU's full ACPI table loader interface OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf | 3 + OvmfPkg/AcpiPlatformDxe/AcpiPlatform.h | 2 +- OvmfPkg/AcpiPlatformDxe/QemuLoader.h | 6 +- OvmfPkg/AcpiPlatformDxe/AcpiPlatform.c | 2 +- OvmfPkg/AcpiPlatformDxe/Qemu.c | 593 +++++++++++++++++----------- OvmfPkg/OvmfPkgIa32.dsc | 1 + OvmfPkg/OvmfPkgIa32X64.dsc | 1 + OvmfPkg/OvmfPkgX64.dsc | 1 + 8 files changed, 362 insertions(+), 247 deletions(-) -- 1.8.3.1 ------------------------------------------------------------------------------ _______________________________________________ edk2-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-devel
