The Generic Initiator Affinity Structure in SRAT table uses device handle type field to indicate the device type. According to ACPI specification, the device handle type value of 1 represents PCI device, not 0. Fix this by defining explicit macros for device handle types and using the correct check for PCI devices: - ACPI_SRAT_ACPI_DEVICE_HANDLE (0): ACPI device handle - ACPI_SRAT_PCI_DEVICE_HANDLE (1): PCI device handle Fixes: 894c26a1c274 ("ACPI: Support Generic Initiator only domains") Reported-by: Wu Zongyong <wuzongyong@xxxxxxxxxxxxxxxxx> Signed-off-by: Shuai Xue <xueshuai@xxxxxxxxxxxxxxxxx> --- drivers/acpi/numa/srat.c | 2 +- include/acpi/actbl3.h | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/acpi/numa/srat.c b/drivers/acpi/numa/srat.c index 53816dfab645..de71b370a275 100644 --- a/drivers/acpi/numa/srat.c +++ b/drivers/acpi/numa/srat.c @@ -237,7 +237,7 @@ acpi_table_print_srat_entry(struct acpi_subtable_header *header) struct acpi_srat_generic_affinity *p = (struct acpi_srat_generic_affinity *)header; - if (p->device_handle_type == 0) { + if (p->device_handle_type == ACPI_SRAT_PCI_DEVICE_HANDLE) { /* * For pci devices this may be the only place they * are assigned a proximity domain diff --git a/include/acpi/actbl3.h b/include/acpi/actbl3.h index 79d3aa5a4bad..c8488614429c 100644 --- a/include/acpi/actbl3.h +++ b/include/acpi/actbl3.h @@ -284,6 +284,9 @@ struct acpi_srat_gic_its_affinity { * 6: ACPI_SRAT_TYPE_GENERIC_PORT_AFFINITY */ +#define ACPI_SRAT_APCI_DEVICE_HANDLE (0) +#define ACPI_SRAT_PCI_DEVICE_HANDLE (1) + #define ACPI_SRAT_DEVICE_HANDLE_SIZE 16 struct acpi_srat_generic_affinity { -- 2.39.3