SVN r15420 ("OvmfPkg: AcpiPlatformDxe: download ACPI tables from QEMU")
depends on the "etc/acpi/tables" fw_cfg file name. I've been made aware
that this file name is not considered stable guest ABI -- the name could
change, and/or further fw_cfg files with different names but similar
ACPI payload could be introduced.

Thus there's apparently no way around parsing the higher-level
"etc/table-loader" file, which *is* considered stable guest ABI. We'll
ignore most of it (see patch #3 for details) and only collect the names
of fw_cfg files that we need to parse ACPI contents from.

Nonetheless, this exposes us to payload that doesn't come with the usual
System Description Table Header; namely, the RSD PTR structure (which we
must skip because edk2 handles it automatically). It has a unique header
format, hence it requires separate probing / parsing. The cost is a bit
more complexity in patch #2.

Sample log (EFI_D_VERBOSE except the last line, which is EFI_D_INFO):

InstallQemuLinkedTables: "etc/acpi/rsdp" offset 0x0000000000000000: RSD PTR 
Length=0x00000014
InstallQemuLinkedTables: "etc/acpi/tables" offset 0x0000000000000000: 
Signature="FACS" Length=0x00000040
InstallQemuLinkedTables: "etc/acpi/tables" offset 0x0000000000000040: 
Signature="DSDT" Length=0x00001137
InstallQemuLinkedTables: "etc/acpi/tables" offset 0x0000000000001177: 
Signature="FACP" Length=0x00000074
InstallQemuLinkedTables: "etc/acpi/tables" offset 0x00000000000011EB: 
Signature="SSDT" Length=0x00000899
InstallQemuLinkedTables: "etc/acpi/tables" offset 0x0000000000001A84: 
Signature="APIC" Length=0x00000080
InstallQemuLinkedTables: "etc/acpi/tables" offset 0x0000000000001B04: 
Signature="RSDT" Length=0x00000034
InstallAllQemuLinkedTables: installed 5 tables

Here RSD PTR and RSDT are ignored (explaining the 5 tables: FACS, DSDT,
FACP, SSDT, APIC),

Laszlo Ersek (3):
  OvmfPkg: AcpiPlatformDxe: pass FwCfgFile to InstallQemuLinkedTables()
  OvmfPkg: AcpiPlatformDxe: exclude RSD PTR from QEMU's fw_cfg payload
  OvmfPkg: AcpiPlatformDxe: don't rely on unstable QEMU interface

 OvmfPkg/AcpiPlatformDxe/AcpiPlatform.h |   2 +-
 OvmfPkg/AcpiPlatformDxe/QemuLoader.h   |  86 ++++++++++
 OvmfPkg/AcpiPlatformDxe/AcpiPlatform.c |   2 +-
 OvmfPkg/AcpiPlatformDxe/Qemu.c         | 291 ++++++++++++++++++++++++++++-----
 4 files changed, 340 insertions(+), 41 deletions(-)
 create mode 100644 OvmfPkg/AcpiPlatformDxe/QemuLoader.h

-- 
1.8.3.1


------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to