Skip to content

Commit 3099803

Browse files
sudeep-hollarafaeljw
authored andcommitted
ACPI / PPTT: use ACPI ID whenever ACPI_PPTT_ACPI_PROCESSOR_ID_VALID is set
Currently, we use the ACPI processor ID only for the leaf/processor nodes as the specification states it must match the value of the ACPI processor ID field in the processor’s entry in the MADT. However, if a PPTT structure represents a processors group, it matches a processor container UID in the namespace and the ACPI_PPTT_ACPI_PROCESSOR_ID_VALID flag indicates whether the ACPI processor ID is valid. Let's use UID whenever ACPI_PPTT_ACPI_PROCESSOR_ID_VALID is set to be consistent instead of using table offset as it's currently done for non-leaf nodes. Fixes: 2bd00bc (ACPI/PPTT: Add Processor Properties Topology Table parsing) Signed-off-by: Sudeep Holla <[email protected]> Acked-by: Jeremy Linton <[email protected]> [ rjw: Changelog (minor) ] Signed-off-by: Rafael J. Wysocki <[email protected]>
1 parent 021c917 commit 3099803

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

drivers/acpi/pptt.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -481,8 +481,14 @@ static int topology_get_acpi_cpu_tag(struct acpi_table_header *table,
481481
if (cpu_node) {
482482
cpu_node = acpi_find_processor_package_id(table, cpu_node,
483483
level, flag);
484-
/* Only the first level has a guaranteed id */
485-
if (level == 0)
484+
/*
485+
* As per specification if the processor structure represents
486+
* an actual processor, then ACPI processor ID must be valid.
487+
* For processor containers ACPI_PPTT_ACPI_PROCESSOR_ID_VALID
488+
* should be set if the UID is valid
489+
*/
490+
if (level == 0 ||
491+
cpu_node->flags & ACPI_PPTT_ACPI_PROCESSOR_ID_VALID)
486492
return cpu_node->acpi_processor_id;
487493
return ACPI_PTR_DIFF(cpu_node, table);
488494
}

0 commit comments

Comments
 (0)