When certain CPU cores are disabled (i.e., their _STA value is changed from 0xF to 0x0), FWTS correctly skips these cores. However, it still checks whether the _UID in the MADT GIC entries matches the UID of the cores, which causes the test to FAIL.
log like this:
madt: GICC has no matching processor UID x.
This behavior is not compliant with the ACPI specification, as the correct way to indicate whether a GIC is used by the OS is through the Flags field in the MADT GICC entries, not the _STA value.
When certain CPU cores are disabled (i.e., their _STA value is changed from 0xF to 0x0), FWTS correctly skips these cores. However, it still checks whether the _UID in the MADT GIC entries matches the UID of the cores, which causes the test to FAIL.
log like this:
madt: GICC has no matching processor UID x.
This behavior is not compliant with the ACPI specification, as the correct way to indicate whether a GIC is used by the OS is through the Flags field in the MADT GICC entries, not the _STA value.
URL:https:/ /uefi.org/ htmlspecs/ ACPI_Spec_ 6_4_html/ 05_ACPI_ Software_ Programming_ Model/ACPI_ Software_ Programming_ Model.html? highlight= madt#gicc- cpu-interface- flags
We've made a little modification to fix this:
diff --git a/src/acpi/ madt/madt. c b/src/acpi/ madt/madt. c madt/madt. c madt/madt. c fwts_framework *fw,
"MADT %s reserved field properly set to zero.",
madt_sub_ names[hdr- >type]) ;
index 0b6d00ad..21e614a6 100644
--- a/src/acpi/
+++ b/src/acpi/
@@ -1083,7 +1083,8 @@ static int madt_gicc(
- madt_find_ processor_ uid(fw, gic->processor_uid, "GICC"); processor_ uid(fw, gic->processor_uid, "GICC");
+ if((gic->flags & 1) != 0)
+ madt_find_
mask = 0xfffffffc;
start = 2;