Skip to content

Commit 39494ae

Browse files
xiaobo55xpalmer-dabbelt
authored andcommitted
ACPI: NUMA: Add handler for SRAT RINTC affinity structure
Add RINTC affinity structure handler during parsing SRAT table. Signed-off-by: Haibo Xu <[email protected]> Reviewed-by: Sunil V L <[email protected]> Reviewed-by: Hanjun Guo <[email protected]> Link: https://lore.kernel.org/r/e076514d78d92f104a5f2d8c82b8921f6aa26fdd.1718268003.git.haibo1.xu@intel.com Signed-off-by: Palmer Dabbelt <[email protected]>
1 parent eabd9db commit 39494ae

File tree

1 file changed

+31
-1
lines changed

1 file changed

+31
-1
lines changed

drivers/acpi/numa/srat.c

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,19 @@ acpi_table_print_srat_entry(struct acpi_subtable_header *header)
167167
}
168168
}
169169
break;
170+
171+
case ACPI_SRAT_TYPE_RINTC_AFFINITY:
172+
{
173+
struct acpi_srat_rintc_affinity *p =
174+
(struct acpi_srat_rintc_affinity *)header;
175+
pr_debug("SRAT Processor (acpi id[0x%04x]) in proximity domain %d %s\n",
176+
p->acpi_processor_uid,
177+
p->proximity_domain,
178+
(p->flags & ACPI_SRAT_RINTC_ENABLED) ?
179+
"enabled" : "disabled");
180+
}
181+
break;
182+
170183
default:
171184
pr_warn("Found unsupported SRAT entry (type = 0x%x)\n",
172185
header->type);
@@ -450,6 +463,21 @@ acpi_parse_gi_affinity(union acpi_subtable_headers *header,
450463
}
451464
#endif /* defined(CONFIG_X86) || defined (CONFIG_ARM64) */
452465

466+
static int __init
467+
acpi_parse_rintc_affinity(union acpi_subtable_headers *header,
468+
const unsigned long end)
469+
{
470+
struct acpi_srat_rintc_affinity *rintc_affinity;
471+
472+
rintc_affinity = (struct acpi_srat_rintc_affinity *)header;
473+
acpi_table_print_srat_entry(&header->common);
474+
475+
/* let architecture-dependent part to do it */
476+
acpi_numa_rintc_affinity_init(rintc_affinity);
477+
478+
return 0;
479+
}
480+
453481
static int __init acpi_parse_srat(struct acpi_table_header *table)
454482
{
455483
struct acpi_table_srat *srat = (struct acpi_table_srat *)table;
@@ -485,7 +513,7 @@ int __init acpi_numa_init(void)
485513

486514
/* SRAT: System Resource Affinity Table */
487515
if (!acpi_table_parse(ACPI_SIG_SRAT, acpi_parse_srat)) {
488-
struct acpi_subtable_proc srat_proc[4];
516+
struct acpi_subtable_proc srat_proc[5];
489517

490518
memset(srat_proc, 0, sizeof(srat_proc));
491519
srat_proc[0].id = ACPI_SRAT_TYPE_CPU_AFFINITY;
@@ -496,6 +524,8 @@ int __init acpi_numa_init(void)
496524
srat_proc[2].handler = acpi_parse_gicc_affinity;
497525
srat_proc[3].id = ACPI_SRAT_TYPE_GENERIC_AFFINITY;
498526
srat_proc[3].handler = acpi_parse_gi_affinity;
527+
srat_proc[4].id = ACPI_SRAT_TYPE_RINTC_AFFINITY;
528+
srat_proc[4].handler = acpi_parse_rintc_affinity;
499529

500530
acpi_table_parse_entries_array(ACPI_SIG_SRAT,
501531
sizeof(struct acpi_table_srat),

0 commit comments

Comments
 (0)