From: Laszlo Ersek <lersek@redhat.com>
To: edk2-devel-01 <edk2-devel@lists.01.org>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>,
Leif Lindholm <leif.lindholm@linaro.org>
Subject: [PATCH v4 01/12] Revert "ArmVirtPkg/FdtClientDxe: make DT table installation !ACPI dependent"
Date: Tue, 28 Mar 2017 15:50:22 +0200 [thread overview]
Message-ID: <20170328135033.24238-2-lersek@redhat.com> (raw)
In-Reply-To: <20170328135033.24238-1-lersek@redhat.com>
This reverts commit 78c41ff519b187d8979cda7074f007a6323f9acd.
We realized that DXE drivers that are independent of AcpiPlatformDxe (that
is, independent of QEMU's ACPI generation), such as RamDiskDxe and
BootGraphicsResourceTableDxe, may produce and/or manipulate ACPI tables,
at driver dispatch or even at Ready To Boot.
This makes it unsafe for us to check for ACPI presence in the UEFI system
config table in a Ready To Boot callback, in order to decide about
exposing the DT.
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Leif Lindholm <leif.lindholm@linaro.org>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
Notes:
v3:
- pick up Ard's R-b
ArmVirtPkg/ArmVirtPkg.dec | 10 ++++++++++
ArmVirtPkg/ArmVirtQemu.dsc | 5 +++++
ArmVirtPkg/FdtClientDxe/FdtClientDxe.inf | 5 +++--
ArmVirtPkg/FdtClientDxe/FdtClientDxe.c | 16 +++++-----------
4 files changed, 23 insertions(+), 13 deletions(-)
diff --git a/ArmVirtPkg/ArmVirtPkg.dec b/ArmVirtPkg/ArmVirtPkg.dec
index efe83a383d55..a5ec42166445 100644
--- a/ArmVirtPkg/ArmVirtPkg.dec
+++ b/ArmVirtPkg/ArmVirtPkg.dec
@@ -58,3 +58,13 @@ [PcdsFixedAtBuild, PcdsPatchableInModule]
# EFI_VT_100_GUID.
#
gArmVirtTokenSpaceGuid.PcdTerminalTypeGuidBuffer|{0x65, 0x60, 0xA6, 0xDF, 0x19, 0xB4, 0xD3, 0x11, 0x9A, 0x2D, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D}|VOID*|0x00000007
+
+[PcdsFeatureFlag]
+ #
+ # Pure ACPI boot
+ #
+ # Inhibit installation of the FDT as a configuration table if this feature
+ # PCD is TRUE. Otherwise, the OS is presented with both a DT and an ACPI
+ # description of the platform, and it is up to the OS to choose.
+ #
+ gArmVirtTokenSpaceGuid.PcdPureAcpiBoot|FALSE|BOOLEAN|0x0000000a
diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc
index 4f686faa559c..4b556f309a6c 100644
--- a/ArmVirtPkg/ArmVirtQemu.dsc
+++ b/ArmVirtPkg/ArmVirtQemu.dsc
@@ -34,6 +34,7 @@ [Defines]
# -D FLAG=VALUE
#
DEFINE SECURE_BOOT_ENABLE = FALSE
+ DEFINE PURE_ACPI_BOOT_ENABLE = FALSE
!include ArmVirtPkg/ArmVirt.dsc.inc
@@ -94,6 +95,10 @@ [PcdsFeatureFlag.common]
gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|TRUE
gEfiMdeModulePkgTokenSpaceGuid.PcdConOutUgaSupport|FALSE
+!if $(PURE_ACPI_BOOT_ENABLE) == TRUE
+ gArmVirtTokenSpaceGuid.PcdPureAcpiBoot|TRUE
+!endif
+
[PcdsFixedAtBuild.common]
gArmPlatformTokenSpaceGuid.PcdCoreCount|1
!if $(ARCH) == AARCH64
diff --git a/ArmVirtPkg/FdtClientDxe/FdtClientDxe.inf b/ArmVirtPkg/FdtClientDxe/FdtClientDxe.inf
index 9861f41e968b..00017727c32c 100644
--- a/ArmVirtPkg/FdtClientDxe/FdtClientDxe.inf
+++ b/ArmVirtPkg/FdtClientDxe/FdtClientDxe.inf
@@ -37,16 +37,17 @@ [LibraryClasses]
HobLib
UefiBootServicesTableLib
UefiDriverEntryPoint
- UefiLib
[Protocols]
gFdtClientProtocolGuid ## PRODUCES
[Guids]
- gEfiAcpi20TableGuid
gEfiEventReadyToBootGuid
gFdtHobGuid
gFdtTableGuid
+[FeaturePcd]
+ gArmVirtTokenSpaceGuid.PcdPureAcpiBoot
+
[Depex]
TRUE
diff --git a/ArmVirtPkg/FdtClientDxe/FdtClientDxe.c b/ArmVirtPkg/FdtClientDxe/FdtClientDxe.c
index 21c1074e331c..4cf79f70cb2a 100644
--- a/ArmVirtPkg/FdtClientDxe/FdtClientDxe.c
+++ b/ArmVirtPkg/FdtClientDxe/FdtClientDxe.c
@@ -17,11 +17,9 @@
#include <Library/DebugLib.h>
#include <Library/UefiDriverEntryPoint.h>
#include <Library/UefiBootServicesTableLib.h>
-#include <Library/UefiLib.h>
#include <Library/HobLib.h>
#include <libfdt.h>
-#include <Guid/Acpi.h>
#include <Guid/EventGroup.h>
#include <Guid/Fdt.h>
#include <Guid/FdtHob.h>
@@ -318,16 +316,12 @@ OnReadyToBoot (
)
{
EFI_STATUS Status;
- VOID *Table;
- //
- // Only install the FDT as a configuration table if we are not exposing
- // ACPI 2.0 (or later) tables. Note that the legacy ACPI table GUID has
- // no meaning on ARM since we need at least ACPI 5.0 support, and the
- // 64-bit ACPI 2.0 table GUID is mandatory in that case.
- //
- Status = EfiGetSystemConfigurationTable (&gEfiAcpi20TableGuid, &Table);
- if (EFI_ERROR (Status) || Table == NULL) {
+ if (!FeaturePcdGet (PcdPureAcpiBoot)) {
+ //
+ // Only install the FDT as a configuration table if we want to leave it up
+ // to the OS to decide whether it prefers ACPI over DT.
+ //
Status = gBS->InstallConfigurationTable (&gFdtTableGuid, mDeviceTreeBase);
ASSERT_EFI_ERROR (Status);
}
--
2.9.3
next prev parent reply other threads:[~2017-03-28 13:50 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-28 13:50 [PATCH v4 00/12] ArmVirtPkg: don't forward the DT to the OS if QEMU provides ACPI Laszlo Ersek
2017-03-28 13:50 ` Laszlo Ersek [this message]
2017-03-28 13:50 ` [PATCH v4 02/12] Revert "ArmVirtPkg/FdtClientDxe: install DT configuration table at ReadyToBoot" Laszlo Ersek
2017-03-28 13:50 ` [PATCH v4 03/12] ArmVirtPkg/XenAcpiPlatformDxe: don't cast UINT64 to pointer directly Laszlo Ersek
2017-03-28 13:50 ` [PATCH v4 04/12] EmbeddedPkg: introduce EDKII Platform Has ACPI GUID Laszlo Ersek
2017-03-28 13:50 ` [PATCH v4 05/12] EmbeddedPkg: introduce PlatformHasAcpiLib Laszlo Ersek
2017-03-28 13:50 ` [PATCH v4 06/12] EmbeddedPkg: introduce EDKII Platform Has Device Tree GUID Laszlo Ersek
2017-03-28 13:50 ` [PATCH v4 07/12] ArmVirtPkg: add PlatformHasAcpiDtDxe Laszlo Ersek
2017-03-28 13:50 ` [PATCH v4 08/12] ArmVirtPkg: add XenPlatformHasAcpiDtDxe Laszlo Ersek
2017-03-28 13:50 ` [PATCH v4 09/12] ArmVirtPkg: enable AcpiTableDxe and EFI_ACPI_TABLE_PROTOCOL dynamically Laszlo Ersek
2017-03-28 13:50 ` [PATCH v4 10/12] ArmVirtPkg/FdtClientDxe: install DT as sysconfig table in protocol notify Laszlo Ersek
2017-03-28 13:50 ` [PATCH v4 11/12] ArmVirtPkg/PlatformHasAcpiDtDxe: don't expose DT if QEMU provides ACPI Laszlo Ersek
2017-03-28 13:50 ` [PATCH v4 12/12] ArmVirtPkg: remove PURE_ACPI_BOOT_ENABLE and PcdPureAcpiBoot Laszlo Ersek
2017-03-28 13:57 ` [PATCH v4 00/12] ArmVirtPkg: don't forward the DT to the OS if QEMU provides ACPI Ard Biesheuvel
2017-03-28 14:09 ` Laszlo Ersek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170328135033.24238-2-lersek@redhat.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox