From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg0-x242.google.com (mail-pg0-x242.google.com [IPv6:2607:f8b0:400e:c05::242]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id E25C821BC6A24 for ; Wed, 29 Mar 2017 00:50:27 -0700 (PDT) Received: by mail-pg0-x242.google.com with SMTP id 81so1644922pgh.3 for ; Wed, 29 Mar 2017 00:50:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=philjordan-eu.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=wm3c2ZREYr7Ialn9+XoAHvhkZAVjNnRP0MfskHZNFCE=; b=H04iK8+NyRHsNhI1ItjXP+OqJYBvwJsmJoxIQyfmWN2KVTcZo27e/Km14roBW/9skI sjGwXuVT3YSTei3UchtPfPUCcwLZwuDYegIdxROQNEv4zRWghmQl0Ch/pOyrg5s3ON07 ymo8TwtyP96xKOowRzJjPxINtl2bR8p4GeJyJZONjJeo8sL91gxSURHnOnrD0OXnbg0x aeRVnIVgbMPIYZyhTBUzGi8zKxP/pLjIp3gIQ7ErgFu+zZf+5IMde4f0YPDQN6FfIAPz aAwbmr+HR5ue/sSnpmDdb9CA3f1GkRzfyYCn/fvdDQUf2siqUrl7mXJYCn8RaZch+yB+ AyZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=wm3c2ZREYr7Ialn9+XoAHvhkZAVjNnRP0MfskHZNFCE=; b=JE0hTahxD8lk6Z/IIp8TgE1JZfdyQx3YDlhReNqf0VKWJkC39IdWXDaN+WYfznBoDA aNVsYXb6bTmDit3Spcgdlq2hulBULiZ/A+fdBJvCiBeqfPO3vjmmJuhNiiqKVz4Xr9oz NWR02KTvYTr2KdzZHHKhr9YPHOjQVu8wvGVQuFufyefHDDfJ9l58PelUJGioa3c2VH3X EVSgzkphvV7TvV6suql/iXz0WRpOb3/pe6MbUtDho7AnZT1pu+t/foDU4QzsrR4vAr3X zLMulTQtQJPnmRxP3hekIYN/RlSZjJEm0KJmbKYay9lPh9re+GpNXYWgElnovlKWqYt8 P5Pg== X-Gm-Message-State: AFeK/H2xANWXgdz3+SzDg3HMI62u48ntMlDJUrcMWDUjENoqxe4hEV8risEkDQUBUxIAPQ== X-Received: by 10.99.111.138 with SMTP id k132mr35105516pgc.138.1490773827551; Wed, 29 Mar 2017 00:50:27 -0700 (PDT) Received: from localhost.localdomain ([118.82.182.58]) by smtp.gmail.com with ESMTPSA id q23sm11629946pfg.63.2017.03.29.00.50.23 (version=TLS1 cipher=AES128-SHA bits=128/128); Wed, 29 Mar 2017 00:50:26 -0700 (PDT) From: Phil Dennis-Jordan To: edk2-devel@lists.01.org Cc: Phil Dennis-Jordan Date: Wed, 29 Mar 2017 20:50:11 +1300 Message-Id: <1490773812-23839-1-git-send-email-lists@philjordan.eu> X-Mailer: git-send-email 2.3.2 (Apple Git-55) Subject: [PATCH v1 0/1] OvmfPkg/AcpiPlatformDxe: Fix bug 368, multiply pointed-to tables X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Mar 2017 07:50:28 -0000 From: Phil Dennis-Jordan This fixes the bug in OVMF's Qemu ACPI table linker which caused it to fail when multiple fields point to the same table. Previously, each pointer caused the pointed-to table to be installed via the EFI_ACPI_TABLE_PROTOCOL. However, each table must only be installed once via this mechanism. The patch fixes this (as previously suggested by Laszlo) via memoisation of the pointers. If it encounters the same pointer twice, it will no longer try to re-install it. I hope I got the implementation details right. I've tested it successfully with Windows 10, a recent Ubuntu version, and OS X as guest OSes. (further OVMF patches required for booting the latter) I found this bug while trying to patch Qemu to generate a Rev3 FADT (as per ACPI 2.0) instead of a Rev1 FADT (ACPI 1.0). Said patch has missed the Qemu 2.9 merge window, but has been provisionally accepted for 2.10 (save for some minor tweaks) and will break the ACPI table linker on unpatched OVMF. (When this bug is triggered, OVMF reverts to its built-in ACPI tables, ignoring those provided by Qemu.) Previous discussion: https://lists.gnu.org/archive/html/qemu-devel/2017-01/msg06679.html Qemu patch: https://lists.gnu.org/archive/html/qemu-devel/2017-03/msg02837.html Bugzilla: https://bugzilla.tianocore.org/show_bug.cgi?id=368 Github feature branch: https://github.com/pmj/edk2/tree/bug_368_v1 Phil Dennis-Jordan (1): OvmfPkg: Allow multiple add-pointer linker commands to same ACPI table OvmfPkg/AcpiPlatformDxe/QemuFwCfgAcpi.c | 109 ++++++++++++++++---- 1 file changed, 89 insertions(+), 20 deletions(-) -- 2.3.2 (Apple Git-55)