Activity log for bug #2110175

Date Who What changed Old value New value Message
2025-05-08 01:49:55 MontyZhao bug added bug
2025-05-08 01:51:22 MontyZhao description 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 index 0b6d00ad..21e614a6 100644 --- a/src/acpi/madt/madt.c +++ b/src/acpi/madt/madt.c @@ -1083,7 +1083,8 @@ static int madt_gicc(fwts_framework *fw, "MADT %s reserved field properly set to zero.", madt_sub_names[hdr->type]); - madt_find_processor_uid(fw, gic->processor_uid, "GICC"); + if((gic->flags & 1) != 0) + madt_find_processor_uid(fw, gic->processor_uid, "GICC"); mask = 0xfffffffc; start = 2; 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 index 0b6d00ad..21e614a6 100644 --- a/src/acpi/madt/madt.c +++ b/src/acpi/madt/madt.c @@ -1083,7 +1083,8 @@ static int madt_gicc(fwts_framework *fw,                             "MADT %s reserved field properly set to zero.",                             madt_sub_names[hdr->type]); - madt_find_processor_uid(fw, gic->processor_uid, "GICC"); + if((gic->flags & 1) != 0) + madt_find_processor_uid(fw, gic->processor_uid, "GICC");         mask = 0xfffffffc;         start = 2;
2025-05-27 06:51:30 Ivan Hu fwts (Ubuntu): assignee Ivan Hu (ivan.hu)
2025-05-27 06:51:34 Ivan Hu fwts (Ubuntu): importance Undecided High
2025-05-27 06:51:36 Ivan Hu fwts (Ubuntu): status New In Progress
2025-05-27 06:51:40 Ivan Hu fwts (Ubuntu): status In Progress Fix Committed
2025-05-27 06:52:16 Ivan Hu fwts (Ubuntu): status Fix Committed Fix Released