DynamicTablesPkg: Remove GIC Distributor Id field

This patch was originally merged in edk2 master at
d3a15f435f. However, this was
later reverted at 82c4426a17
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>
This commit is contained in:
Sami Mujawar 2019-02-19 11:22:17 +00:00
parent 1018bd4c79
commit 24534823b2
2 changed files with 4 additions and 5 deletions

View File

@ -1,6 +1,6 @@
/** @file
Copyright (c) 2017 - 2018, ARM Limited. All rights reserved.
Copyright (c) 2017 - 2019, 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
@ -166,9 +166,6 @@ typedef struct CmArmGicCInfo {
GIC Distributor information for the Platform.
*/
typedef struct CmArmGicDInfo {
/// The GIC Distributor ID.
UINT32 GicId;
/// The Physical Base address for the GIC Distributor.
UINT64 PhysicalBaseAddress;

View File

@ -192,7 +192,9 @@ AddGICD (
// UINT16 Reserved
Gicd->Reserved1 = EFI_ACPI_RESERVED_WORD;
// UINT32 Identifier
Gicd->GicId = GicDInfo->GicId;
// One, and only one, GIC distributor structure must be present
// in the MADT for an ARM based system
Gicd->GicId = 0;
// UINT64 PhysicalBaseAddress
Gicd->PhysicalBaseAddress = GicDInfo->PhysicalBaseAddress;
// UINT32 VectorBase