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

Reply via email to