On 1 April 2016 at 11:14, Ard Biesheuvel ard.biesheuvel@linaro.org wrote:
(+ Al)
On 1 April 2016 at 12:14, Evan Lloyd Evan.Lloyd@arm.com wrote:
Hi Ard. The FACS does expose the "GlobalLock" field. I'm not aware of anything that uses it right now, but it might conceivably break somebody's board driver.
GlobalLock is not available in Hardware Reduced Mode.
See ACPI 6.1 section 4.1 Hardware-Reduced ACPI (and equivalent in previous editions).
Graeme
Evan
-----Original Message----- From: Ard Biesheuvel [mailto:ard.biesheuvel@linaro.org] Sent: 31 March 2016 11:29 To: linaro-uefi@lists.linaro.org; leif.lindholm@linaro.org Cc: ryan.harkin@linaro.org; graeme.gregory@linaro.org; Evan Lloyd; Ard Biesheuvel Subject: [PATCH] Platforms/Juno: drop FACS table
The FACS table does not expose anything meaningful on AArch64, and since the Tianocore ACPI table handling code insists on locating FACS below 4 GB, which may fail since since AArch64 platforms may not have any system RAM below 4 GB to begin with.
The reason for this behavior is to ensure that a 32-bit PEI can access the FACS table on an otherwise 64-bit system, but this is a concern that does not apply to AArch64, since PEI always runs in 64-bit mode in that case. The PI spec currently does not provide any means for PEI to convey its bitness or how much system RAM it can access, so a permanent fix requires a spec update first.
So simply remove the FACS table until the PIWG clarifies the spec in this regard.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel ard.biesheuvel@linaro.org
Platforms/ARM/Juno/AcpiTables/AcpiTables.inf | 1 - Platforms/ARM/Juno/AcpiTables/Facs.aslc | 62 ---------------------------- 2 files changed, 63 deletions(-) delete mode 100644 Platforms/ARM/Juno/AcpiTables/Facs.aslc
diff --git a/Platforms/ARM/Juno/AcpiTables/AcpiTables.inf b/Platforms/ARM/Juno/AcpiTables/AcpiTables.inf index 3159d7d37c4a..039cff0a743a 100644 --- a/Platforms/ARM/Juno/AcpiTables/AcpiTables.inf +++ b/Platforms/ARM/Juno/AcpiTables/AcpiTables.inf @@ -25,7 +25,6 @@ Dsdt.asl Dbg2.asl Spcr.asl
- Facs.aslc Fadt.aslc Gtdt.aslc Madt.aslc
diff --git a/Platforms/ARM/Juno/AcpiTables/Facs.aslc b/Platforms/ARM/Juno/AcpiTables/Facs.aslc deleted file mode 100644 index 137ead77c199..000000000000 --- a/Platforms/ARM/Juno/AcpiTables/Facs.aslc +++ /dev/null @@ -1,62 +0,0 @@ -/** @file -* Firmware ACPI Control Structure (FACS) -* -* Copyright (c) 2012 - 2014, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/
-#include <IndustryStandard/Acpi.h>
-EFI_ACPI_5_0_FIRMWARE_ACPI_CONTROL_STRUCTURE Facs = {
- EFI_ACPI_5_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE, //
UINT32 Signature
- sizeof (EFI_ACPI_5_0_FIRMWARE_ACPI_CONTROL_STRUCTURE), // UINT32
Length
- 0xA152, // UINT32 HardwareSignature
- 0, // UINT32 FirmwareWakingVector
- 0, // UINT32 GlobalLock
- 0, // UINT32 Flags
- 0, // UINT64 XFirmwareWakingVector
- EFI_ACPI_5_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION, // UINT8
Version;
- { EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved0[0]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved0[1]
EFI_ACPI_RESERVED_BYTE }, // UINT8 Reserved0[2]
- 0, // UINT32 OspmFlags "Platform firmware
must
// initialize this field to zero."
- { EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[0]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[1]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[2]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[3]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[4]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[5]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[6]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[7]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[8]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[9]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[10]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[11]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[12]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[13]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[14]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[15]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[16]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[17]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[18]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[19]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[20]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[21]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[22]
EFI_ACPI_RESERVED_BYTE }, // UINT8 Reserved1[23]
-};
-// -// Reference the table being generated to prevent the optimizer from removing the -// data structure from the executable -//
-VOID* CONST ReferenceAcpiTable = &Facs;
2.5.0
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.