]> git.proxmox.com Git - mirror_edk2.git/commit
OvmfPkg: Allow multiple add-pointer linker commands to same ACPI table
authorPhil Dennis-Jordan <phil@philjordan.eu>
Thu, 30 Mar 2017 10:40:57 +0000 (23:40 +1300)
committerLaszlo Ersek <lersek@redhat.com>
Thu, 30 Mar 2017 19:53:13 +0000 (21:53 +0200)
commit072060a6f81b3e43473b9e5dcba7049ad9de4b18
tree7c4c2229ff4c19aadf6b38e1d5d8430ff28f3bc0
parentf663ed8a328a6d5007d3f03685f08cfceb506105
OvmfPkg: Allow multiple add-pointer linker commands to same ACPI table

ACPI tables may contain multiple fields which point to the same
destination table. For example, in some revisions, the FADT contains
both DSDT and X_DSDT fields, and they may both point to the DSDT.

Previously, if Qemu created QEMU_LOADER_ADD_POINTER linker commands for
such instances, the linking process would attempt to install the same
pointed-to table repeatedly. For tables of which there must only be one
instance, the call to AcpiProtocol->InstallAcpiTable() would fail during
the second linker command pointing to the same table, thus entirely
aborting the ACPI table linking process. In the case of tables of which
there may be multiple instances, the table would end up duplicated.

This change adds a memoisation data structure which tracks the table
pointers that have already been processed; even if the same pointer is
encountered multiple times, it is only processed once.

Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Phil Dennis-Jordan <phil@philjordan.eu>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
[lersek@redhat.com: DSDT<->XSDT typo, debug msg, and coding style fixups]
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=368
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
OvmfPkg/AcpiPlatformDxe/QemuFwCfgAcpi.c