summaryrefslogtreecommitdiffstats
path: root/OvmfPkg/Library
diff options
context:
space:
mode:
authorPhil Dennis-Jordan <phil@philjordan.eu>2017-03-30 23:40:57 +1300
committerLaszlo Ersek <lersek@redhat.com>2017-03-30 21:53:13 +0200
commit072060a6f81b3e43473b9e5dcba7049ad9de4b18 (patch)
tree7c4c2229ff4c19aadf6b38e1d5d8430ff28f3bc0 /OvmfPkg/Library
parentf663ed8a328a6d5007d3f03685f08cfceb506105 (diff)
downloadedk2-072060a6f81b3e43473b9e5dcba7049ad9de4b18.tar.gz
edk2-072060a6f81b3e43473b9e5dcba7049ad9de4b18.tar.bz2
edk2-072060a6f81b3e43473b9e5dcba7049ad9de4b18.zip
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>
Diffstat (limited to 'OvmfPkg/Library')
0 files changed, 0 insertions, 0 deletions