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