Platforms/ARM/Juno/ACPI: Fix MADT table
Declaration of MULTIPLE_APIC_DESCRIPTION_TABLE used for building the
MADT table for ACPI revision 5.1 or higher includes the stucture
EFI_ACPI_5_0_GIC_DISTRIBUTOR_STRUCTURE type.
EFI_ACPI_5_0_GIC_DISTRIBUTOR_STRUCTURE is not compatible with
EFI_ACPI_5_1_GIC_DISTRIBUTOR_STRUCTURE and
EFI_ACPI_6_0_GIC_DISTRIBUTOR_STRUCTURE types which both have
GicVersion field added:
UINT8 GicVersion;
UINT8 Reserved2[3];
compared with 5.0 revision table which has 4 bytes reserved:
UINT32 Reserved2;
This commit changes the structure
EFI_ACPI_5_0_GIC_DISTRIBUTOR_STRUCTURE type to
EFI_ACPI_5_1_GIC_DISTRIBUTOR_STRUCTURE and replaces the GIC Distributor
initialisation macro EFI_ACPI_5_0_GIC_DISTRIBUTOR_INIT() with
EFI_ACPI_6_0_GIC_DISTRIBUTOR_INIT() setting GicVersion to 2 (GICv2)
The name EFI_ACPI_6_0_GIC_DISTRIBUTOR_INIT() is used for ACPI 5.1
builds because there is no definition of a relevant
EFI_ACPI_5_1_GIC_DISTRIBUTOR_INIT() in EmbeddedPkg\Include\Library\AcpiLib.h
but the GIC Distributor structures of 5.1 and 6.0 are identical.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Alexei Fedorov <alexei.fedorov@arm.com>
Signed-off-by: Evan Lloyd <evan.lloyd@arm.com>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
diff --git a/Platforms/ARM/Juno/AcpiTables/Madt.aslc b/Platforms/ARM/Juno/AcpiTables/Madt.aslc
index 37c06da..78531d2 100644
--- a/Platforms/ARM/Juno/AcpiTables/Madt.aslc
+++ b/Platforms/ARM/Juno/AcpiTables/Madt.aslc
@@ -70,7 +70,7 @@
typedef struct {
EFI_ACPI_5_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER Header;
EFI_ACPI_5_1_GIC_STRUCTURE GicInterfaces[FixedPcdGet32 (PcdCoreCount)];
- EFI_ACPI_5_0_GIC_DISTRIBUTOR_STRUCTURE GicDistributor;
+ EFI_ACPI_5_1_GIC_DISTRIBUTOR_STRUCTURE GicDistributor;
EFI_ACPI_6_0_GIC_MSI_FRAME_STRUCTURE MsiFrame;
} MULTIPLE_APIC_DESCRIPTION_TABLE;
@@ -118,7 +118,7 @@
1, 5, GET_MPID(0, 1), EFI_ACPI_5_0_GIC_ENABLED, 38, FixedPcdGet32 (PcdGicInterruptInterfaceBase),
0x2C06F000, 0x2C04F000, 25, 0 /* GicRBase */),
},
- EFI_ACPI_5_0_GIC_DISTRIBUTOR_INIT(0, FixedPcdGet32 (PcdGicDistributorBase), 0),
+ EFI_ACPI_6_0_GIC_DISTRIBUTOR_INIT(0, FixedPcdGet32 (PcdGicDistributorBase), 0, 2),
// Format: EFI_ACPI_6_0_GIC_MSI_FRAME_INIT(GicMsiFrameId, PhysicalBaseAddress, Flags, SPICount, SPIBase)
EFI_ACPI_6_0_GIC_MSI_FRAME_INIT(0, ARM_JUNO_GIV2M_MSI_BASE, 0, ARM_JUNO_GIV2M_MSI_SPI_COUNT, ARM_JUNO_GIV2M_MSI_SPI_BASE)
};