mirror of
https://github.com/tianocore/edk2
synced 2026-08-27 00:23:19 -04:00
DynamicTablesPkg: MadtGenerator: make GICD info as option
GICD information is not a mandatory in the platform where use the GicV5 interrupt controller. Therefore, make GICD information as optional one. Signed-off-by: Yeoreum Yun <yeoreum.yun@arm.com>
This commit is contained in:
parent
499e6a8cc2
commit
4639733287
1 changed files with 32 additions and 15 deletions
|
|
@ -815,7 +815,10 @@ BuildMadtTable (
|
|||
&GicDInfo,
|
||||
&GicDCount
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
if (EFI_ERROR (Status) &&
|
||||
((AcpiTableInfo->AcpiTableRevision < EFI_ACPI_6_7_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION) ||
|
||||
(Status != EFI_NOT_FOUND)))
|
||||
{
|
||||
DEBUG ((
|
||||
DEBUG_ERROR,
|
||||
"ERROR: MADT: Failed to get GICD Info. Status = %r\n",
|
||||
|
|
@ -824,16 +827,6 @@ BuildMadtTable (
|
|||
goto error_handler;
|
||||
}
|
||||
|
||||
if (GicDCount == 0) {
|
||||
DEBUG ((
|
||||
DEBUG_ERROR,
|
||||
"ERROR: MADT: GIC Distributor information not provided.\n"
|
||||
));
|
||||
ASSERT (GicDCount != 0);
|
||||
Status = EFI_INVALID_PARAMETER;
|
||||
goto error_handler;
|
||||
}
|
||||
|
||||
if (GicDCount > 1) {
|
||||
DEBUG ((
|
||||
DEBUG_ERROR,
|
||||
|
|
@ -936,6 +929,28 @@ BuildMadtTable (
|
|||
goto error_handler;
|
||||
}
|
||||
|
||||
if (((GicIrsCount == 0) && (GicDCount == 0)) ||
|
||||
((GicIrsCount > 0) && (GicDCount > 0)))
|
||||
{
|
||||
Status = EFI_INVALID_PARAMETER;
|
||||
DEBUG ((
|
||||
DEBUG_ERROR,
|
||||
"ERROR: MADT: No GicIrs and GicD Info or have both. Status = %r\n",
|
||||
Status
|
||||
));
|
||||
goto error_handler;
|
||||
}
|
||||
|
||||
if ((GicItsV5Count != 0) && (GicItsV5Count > GicItsV5TransFrameCount)) {
|
||||
Status = EFI_INVALID_PARAMETER;
|
||||
DEBUG ((
|
||||
DEBUG_ERROR,
|
||||
"ERROR: MADT: Each GicItsV5 should have at least 1 Translate Frame. Status = %r\n",
|
||||
Status
|
||||
));
|
||||
goto error_handler;
|
||||
}
|
||||
|
||||
TableSize = sizeof (EFI_ACPI_6_7_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER);
|
||||
|
||||
GicCOffset = TableSize;
|
||||
|
|
@ -1019,10 +1034,12 @@ BuildMadtTable (
|
|||
goto error_handler;
|
||||
}
|
||||
|
||||
AddGICD (
|
||||
(EFI_ACPI_6_5_GIC_DISTRIBUTOR_STRUCTURE *)((UINT8 *)Madt + GicDOffset),
|
||||
GicDInfo
|
||||
);
|
||||
if (GicDCount != 0) {
|
||||
AddGICD (
|
||||
(EFI_ACPI_6_5_GIC_DISTRIBUTOR_STRUCTURE *)((UINT8 *)Madt + GicDOffset),
|
||||
GicDInfo
|
||||
);
|
||||
}
|
||||
|
||||
if (GicMSICount != 0) {
|
||||
AddGICMsiFrameInfoList (
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue