DynamicTablesPkg: Remove GIC Distributor Id field
authorSami Mujawar <sami.mujawar@arm.com>
Tue, 19 Feb 2019 11:22:17 +0000 (11:22 +0000)
committerSami Mujawar <sami.mujawar@arm.com>
Wed, 20 Mar 2019 11:00:44 +0000 (11:00 +0000)
This patch was originally merged in edk2 master at
d3a15f435f9716aa2f2ea5e9b35fcda04f267ab4. However, this was
later reverted at 82c4426a176c271d24915b403b267a431bdc52f5
as it was merged during the Soft Feature Freeze for
edk2-stable201903.

Resubmitting this patch as the edk2 merge window is now open.

According to ACPI 6.2 Specification - Errata A, 'One,
and only one, GIC distributor structure must be present
in the MADT for an ARM based system'. Therefore,
the GIC Distributor ID field in the ACPI MADT GICD
substructure can be set to zero and there is no need
for the Configuration Manager to provide this information.

Update the CM_ARM_GICD_INFO structure to remove the GicId
field. Similarly update the MADT Generator to set the GicId
field in the GICD substructure to zero.

Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Alexei Fedorov <alexei.fedorov@arm.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
Reviewed-by: Alexei Fedorov <alexei.fedorov@arm.com>
DynamicTablesPkg/Include/ArmNameSpaceObjects.h
DynamicTablesPkg/Library/Acpi/Arm/AcpiMadtLibArm/MadtGenerator.c

index 2adaa78..73139eb 100644 (file)
@@ -1,6 +1,6 @@
 /** @file\r
 \r
-  Copyright (c) 2017 - 2018, ARM Limited. All rights reserved.\r
+  Copyright (c) 2017 - 2019, ARM Limited. All rights reserved.\r
 \r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
@@ -166,9 +166,6 @@ typedef struct CmArmGicCInfo {
     GIC Distributor information for the Platform.\r
 */\r
 typedef struct CmArmGicDInfo {\r
-  /// The GIC Distributor ID.\r
-  UINT32  GicId;\r
-\r
   /// The Physical Base address for the GIC Distributor.\r
   UINT64  PhysicalBaseAddress;\r
 \r
index 1ee0b9e..6b89c3f 100644 (file)
@@ -192,7 +192,9 @@ AddGICD (
   // UINT16 Reserved\r
   Gicd->Reserved1 = EFI_ACPI_RESERVED_WORD;\r
   // UINT32 Identifier\r
-  Gicd->GicId = GicDInfo->GicId;\r
+  // One, and only one, GIC distributor structure must be present\r
+  // in the MADT for an ARM based system\r
+  Gicd->GicId = 0;\r
   // UINT64 PhysicalBaseAddress\r
   Gicd->PhysicalBaseAddress = GicDInfo->PhysicalBaseAddress;\r
   // UINT32 VectorBase\r