Re: [PATCH v2 3/6] ACPI: NUMA: Add handler for SRAT RINTC affinity structure
From: Sunil V L
Date: Mon Apr 01 2024 - 02:56:46 EST
On Thu, Mar 07, 2024 at 04:47:55PM +0800, Haibo Xu wrote:
> Add RINTC affinity structure handler during parsing SRAT table.
>
> Signed-off-by: Haibo Xu <haibo1.xu@xxxxxxxxx>
> ---
> drivers/acpi/numa/srat.c | 32 +++++++++++++++++++++++++++++++-
> 1 file changed, 31 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/acpi/numa/srat.c b/drivers/acpi/numa/srat.c
> index 0214518fc582..1946431c0eef 100644
> --- a/drivers/acpi/numa/srat.c
> +++ b/drivers/acpi/numa/srat.c
> @@ -165,6 +165,19 @@ acpi_table_print_srat_entry(struct acpi_subtable_header *header)
> }
> }
> break;
> +
> + case ACPI_SRAT_TYPE_RINTC_AFFINITY:
> + {
> + struct acpi_srat_rintc_affinity *p =
> + (struct acpi_srat_rintc_affinity *)header;
> + pr_debug("SRAT Processor (acpi id[0x%04x]) in proximity domain %d %s\n",
> + p->acpi_processor_uid,
> + p->proximity_domain,
> + (p->flags & ACPI_SRAT_RINTC_ENABLED) ?
> + "enabled" : "disabled");
> + }
> + break;
> +
> default:
> pr_warn("Found unsupported SRAT entry (type = 0x%x)\n",
> header->type);
> @@ -448,6 +461,21 @@ acpi_parse_gi_affinity(union acpi_subtable_headers *header,
> }
> #endif /* defined(CONFIG_X86) || defined (CONFIG_ARM64) */
>
> +static int __init
> +acpi_parse_rintc_affinity(union acpi_subtable_headers *header,
> + const unsigned long end)
> +{
> + struct acpi_srat_rintc_affinity *rintc_affinity;
> +
> + rintc_affinity = (struct acpi_srat_rintc_affinity *)header;
> + acpi_table_print_srat_entry(&header->common);
> +
> + /* let architecture-dependent part to do it */
> + acpi_numa_rintc_affinity_init(rintc_affinity);
> +
> + return 0;
> +}
> +
> static int __initdata parsed_numa_memblks;
>
> static int __init
> @@ -501,7 +529,7 @@ int __init acpi_numa_init(void)
>
> /* SRAT: System Resource Affinity Table */
> if (!acpi_table_parse(ACPI_SIG_SRAT, acpi_parse_srat)) {
> - struct acpi_subtable_proc srat_proc[4];
> + struct acpi_subtable_proc srat_proc[5];
>
> memset(srat_proc, 0, sizeof(srat_proc));
> srat_proc[0].id = ACPI_SRAT_TYPE_CPU_AFFINITY;
> @@ -512,6 +540,8 @@ int __init acpi_numa_init(void)
> srat_proc[2].handler = acpi_parse_gicc_affinity;
> srat_proc[3].id = ACPI_SRAT_TYPE_GENERIC_AFFINITY;
> srat_proc[3].handler = acpi_parse_gi_affinity;
> + srat_proc[4].id = ACPI_SRAT_TYPE_RINTC_AFFINITY;
> + srat_proc[4].handler = acpi_parse_rintc_affinity;
>
> acpi_table_parse_entries_array(ACPI_SIG_SRAT,
> sizeof(struct acpi_table_srat),
LGTM. Thanks!
Reviewed-by: Sunil V L <sunilvl@xxxxxxxxxxxxxxxx>