From: Ganapatrao Kulkarni <gkulkarni@caviumnetworks.com> To: linux-arm-kernel@lists.infradead.org, linux-acpi@vger.kernel.org, Will.Deacon@arm.com, catalin.marinas@arm.com, grant.likely@linaro.org, leif.lindholm@linaro.org, rfranz@cavium.com, ard.biesheuvel@linaro.org, msalter@redhat.com, robh+dt@kernel.org, steve.capper@linaro.org, hanjun.guo@linaro.org, al.stone@linaro.org, arnd@arndb.de, pawel.moll@arm.com, mark.rutland@arm.com, ijc+devicetree@hellion.org.uk, galak@codeaurora.org, rjw@rjwysocki.net, lenb@kernel.org, marc.zyngier@arm.com, lorenzo.pieralisi@arm.com, tn@semihalf.com, rrichter@cavium.com, Prasun.Kapoor@caviumnetworks.com Cc: gpkulkarni@gmail.com Subject: [PATCH v2 4/4] acpi, numa: Enable ACPI based NUMA on ARM64 Date: Tue, 17 Nov 2015 23:55:33 +0530 [thread overview] Message-ID: <1447784733-10419-5-git-send-email-gkulkarni@caviumnetworks.com> (raw) In-Reply-To: <1447784733-10419-1-git-send-email-gkulkarni@caviumnetworks.com> Add function needed for cpu to node mapping, and enable ACPI based NUMA for ARM64 in Kconfig Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> --- drivers/acpi/Kconfig | 4 ++-- drivers/acpi/numa.c | 35 +++++++++++++++++++++++++++++++++++ include/linux/acpi.h | 15 +++++++++++++++ 3 files changed, 52 insertions(+), 2 deletions(-) diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig index 25dbb76..06ea7dc 100644 --- a/drivers/acpi/Kconfig +++ b/drivers/acpi/Kconfig @@ -280,8 +280,8 @@ config ACPI_THERMAL config ACPI_NUMA bool "NUMA support" depends on NUMA - depends on (X86 || IA64) - default y if IA64_GENERIC || IA64_SGI_SN2 + depends on (X86 || IA64 || ARM64) + default y if IA64_GENERIC || IA64_SGI_SN2 || ARM64 config ACPI_CUSTOM_DSDT_FILE string "Custom DSDT Table file to include" diff --git a/drivers/acpi/numa.c b/drivers/acpi/numa.c index 36683d0..807083a 100644 --- a/drivers/acpi/numa.c +++ b/drivers/acpi/numa.c @@ -175,6 +175,18 @@ acpi_table_print_srat_entry(struct acpi_subtable_header *header) } break; + case ACPI_SRAT_TYPE_GICC_AFFINITY: + { + struct acpi_srat_gicc_affinity *p = + (struct acpi_srat_gicc_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_GICC_ENABLED) ? + "enabled" : "disabled"); + } + break; + default: pr_warn("Found unsupported SRAT entry (type = 0x%x)\n", header->type); @@ -260,6 +272,24 @@ acpi_parse_processor_affinity(struct acpi_subtable_header *header, return 0; } +static int __init +acpi_parse_gicc_affinity(struct acpi_subtable_header *header, + const unsigned long end) +{ + struct acpi_srat_gicc_affinity *processor_affinity; + + processor_affinity = (struct acpi_srat_gicc_affinity *)header; + if (!processor_affinity) + return -EINVAL; + + acpi_table_print_srat_entry(header); + + /* let architecture-dependent part to do it */ + acpi_numa_gicc_affinity_init(processor_affinity); + + return 0; +} + static int __initdata parsed_numa_memblks; static int __init @@ -304,6 +334,9 @@ int __init acpi_numa_init(void) { int cnt = 0; + if (acpi_disabled) + return -EINVAL; + /* * Should not limit number with cpu num that is from NR_CPUS or nr_cpus= * SRAT cpu entries could have different order with that in MADT. @@ -316,6 +349,8 @@ int __init acpi_numa_init(void) acpi_parse_x2apic_affinity, 0); acpi_table_parse_srat(ACPI_SRAT_TYPE_CPU_AFFINITY, acpi_parse_processor_affinity, 0); + acpi_table_parse_srat(ACPI_SRAT_TYPE_GICC_AFFINITY, + acpi_parse_gicc_affinity, 0); cnt = acpi_table_parse_srat(ACPI_SRAT_TYPE_MEMORY_AFFINITY, acpi_parse_memory_affinity, NR_NODE_MEMBLKS); diff --git a/include/linux/acpi.h b/include/linux/acpi.h index 0548339..ff56702 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h @@ -170,8 +170,23 @@ void acpi_table_print_madt_entry (struct acpi_subtable_header *madt); /* the following four functions are architecture-dependent */ void acpi_numa_slit_init (struct acpi_table_slit *slit); + +#if defined(CONFIG_X86) || defined(CONFIG_IA64) void acpi_numa_processor_affinity_init (struct acpi_srat_cpu_affinity *pa); +#else +static inline void +acpi_numa_processor_affinity_init(struct acpi_srat_cpu_affinity *pa) { } +#endif + void acpi_numa_x2apic_affinity_init(struct acpi_srat_x2apic_cpu_affinity *pa); + +#ifdef CONFIG_ARM64 +void acpi_numa_gicc_affinity_init(struct acpi_srat_gicc_affinity *pa); +#else +static inline void +acpi_numa_gicc_affinity_init(struct acpi_srat_gicc_affinity *pa) { } +#endif + int acpi_numa_memory_affinity_init (struct acpi_srat_mem_affinity *ma); void acpi_numa_arch_fixup(void); -- 1.8.1.4
WARNING: multiple messages have this Message-ID (diff)
From: gkulkarni@caviumnetworks.com (Ganapatrao Kulkarni) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 4/4] acpi, numa: Enable ACPI based NUMA on ARM64 Date: Tue, 17 Nov 2015 23:55:33 +0530 [thread overview] Message-ID: <1447784733-10419-5-git-send-email-gkulkarni@caviumnetworks.com> (raw) In-Reply-To: <1447784733-10419-1-git-send-email-gkulkarni@caviumnetworks.com> Add function needed for cpu to node mapping, and enable ACPI based NUMA for ARM64 in Kconfig Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> --- drivers/acpi/Kconfig | 4 ++-- drivers/acpi/numa.c | 35 +++++++++++++++++++++++++++++++++++ include/linux/acpi.h | 15 +++++++++++++++ 3 files changed, 52 insertions(+), 2 deletions(-) diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig index 25dbb76..06ea7dc 100644 --- a/drivers/acpi/Kconfig +++ b/drivers/acpi/Kconfig @@ -280,8 +280,8 @@ config ACPI_THERMAL config ACPI_NUMA bool "NUMA support" depends on NUMA - depends on (X86 || IA64) - default y if IA64_GENERIC || IA64_SGI_SN2 + depends on (X86 || IA64 || ARM64) + default y if IA64_GENERIC || IA64_SGI_SN2 || ARM64 config ACPI_CUSTOM_DSDT_FILE string "Custom DSDT Table file to include" diff --git a/drivers/acpi/numa.c b/drivers/acpi/numa.c index 36683d0..807083a 100644 --- a/drivers/acpi/numa.c +++ b/drivers/acpi/numa.c @@ -175,6 +175,18 @@ acpi_table_print_srat_entry(struct acpi_subtable_header *header) } break; + case ACPI_SRAT_TYPE_GICC_AFFINITY: + { + struct acpi_srat_gicc_affinity *p = + (struct acpi_srat_gicc_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_GICC_ENABLED) ? + "enabled" : "disabled"); + } + break; + default: pr_warn("Found unsupported SRAT entry (type = 0x%x)\n", header->type); @@ -260,6 +272,24 @@ acpi_parse_processor_affinity(struct acpi_subtable_header *header, return 0; } +static int __init +acpi_parse_gicc_affinity(struct acpi_subtable_header *header, + const unsigned long end) +{ + struct acpi_srat_gicc_affinity *processor_affinity; + + processor_affinity = (struct acpi_srat_gicc_affinity *)header; + if (!processor_affinity) + return -EINVAL; + + acpi_table_print_srat_entry(header); + + /* let architecture-dependent part to do it */ + acpi_numa_gicc_affinity_init(processor_affinity); + + return 0; +} + static int __initdata parsed_numa_memblks; static int __init @@ -304,6 +334,9 @@ int __init acpi_numa_init(void) { int cnt = 0; + if (acpi_disabled) + return -EINVAL; + /* * Should not limit number with cpu num that is from NR_CPUS or nr_cpus= * SRAT cpu entries could have different order with that in MADT. @@ -316,6 +349,8 @@ int __init acpi_numa_init(void) acpi_parse_x2apic_affinity, 0); acpi_table_parse_srat(ACPI_SRAT_TYPE_CPU_AFFINITY, acpi_parse_processor_affinity, 0); + acpi_table_parse_srat(ACPI_SRAT_TYPE_GICC_AFFINITY, + acpi_parse_gicc_affinity, 0); cnt = acpi_table_parse_srat(ACPI_SRAT_TYPE_MEMORY_AFFINITY, acpi_parse_memory_affinity, NR_NODE_MEMBLKS); diff --git a/include/linux/acpi.h b/include/linux/acpi.h index 0548339..ff56702 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h @@ -170,8 +170,23 @@ void acpi_table_print_madt_entry (struct acpi_subtable_header *madt); /* the following four functions are architecture-dependent */ void acpi_numa_slit_init (struct acpi_table_slit *slit); + +#if defined(CONFIG_X86) || defined(CONFIG_IA64) void acpi_numa_processor_affinity_init (struct acpi_srat_cpu_affinity *pa); +#else +static inline void +acpi_numa_processor_affinity_init(struct acpi_srat_cpu_affinity *pa) { } +#endif + void acpi_numa_x2apic_affinity_init(struct acpi_srat_x2apic_cpu_affinity *pa); + +#ifdef CONFIG_ARM64 +void acpi_numa_gicc_affinity_init(struct acpi_srat_gicc_affinity *pa); +#else +static inline void +acpi_numa_gicc_affinity_init(struct acpi_srat_gicc_affinity *pa) { } +#endif + int acpi_numa_memory_affinity_init (struct acpi_srat_mem_affinity *ma); void acpi_numa_arch_fixup(void); -- 1.8.1.4
next prev parent reply other threads:[~2015-11-17 18:25 UTC|newest] Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-11-17 18:25 [PATCH v2 0/4] ACPI based NUMA support for ARM64 Ganapatrao Kulkarni 2015-11-17 18:25 ` Ganapatrao Kulkarni 2015-11-17 18:25 ` [PATCH v2 1/4] acpi, numa: Use pr_fmt() instead of printk Ganapatrao Kulkarni 2015-11-17 18:25 ` Ganapatrao Kulkarni 2015-11-17 18:25 ` [PATCH v2 2/4] acpi, numa: Replace ACPI_DEBUG_PRINT() with pr_debug() Ganapatrao Kulkarni 2015-11-17 18:25 ` Ganapatrao Kulkarni 2015-11-17 18:25 ` [PATCH v2 3/4] arm64, acpi, numa: NUMA support based on SRAT and SLIT Ganapatrao Kulkarni 2015-11-17 18:25 ` Ganapatrao Kulkarni 2015-11-27 7:54 ` Shannon Zhao 2015-11-27 7:54 ` Shannon Zhao 2016-01-13 23:04 ` Robert Richter 2016-01-13 23:04 ` Robert Richter 2016-01-14 3:48 ` Hanjun Guo 2016-01-14 3:48 ` Hanjun Guo 2015-12-18 16:23 ` Lorenzo Pieralisi 2015-12-18 16:23 ` Lorenzo Pieralisi 2015-12-22 12:34 ` Hanjun Guo 2015-12-22 12:34 ` Hanjun Guo 2015-12-22 13:08 ` Ganapatrao Kulkarni 2015-12-22 13:08 ` Ganapatrao Kulkarni 2015-11-17 18:25 ` Ganapatrao Kulkarni [this message] 2015-11-17 18:25 ` [PATCH v2 4/4] acpi, numa: Enable ACPI based NUMA on ARM64 Ganapatrao Kulkarni 2015-11-27 9:25 ` [PATCH v2 0/4] ACPI based NUMA support for ARM64 Shannon Zhao 2015-11-27 9:25 ` Shannon Zhao 2015-11-27 13:28 ` Hanjun Guo 2015-11-27 13:28 ` Hanjun Guo 2016-01-17 5:13 ` Jon Masters 2016-01-17 5:13 ` Jon Masters 2016-01-18 6:47 ` Ganapatrao Kulkarni 2016-01-18 6:47 ` Ganapatrao Kulkarni
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1447784733-10419-5-git-send-email-gkulkarni@caviumnetworks.com \ --to=gkulkarni@caviumnetworks.com \ --cc=Prasun.Kapoor@caviumnetworks.com \ --cc=Will.Deacon@arm.com \ --cc=al.stone@linaro.org \ --cc=ard.biesheuvel@linaro.org \ --cc=arnd@arndb.de \ --cc=catalin.marinas@arm.com \ --cc=galak@codeaurora.org \ --cc=gpkulkarni@gmail.com \ --cc=grant.likely@linaro.org \ --cc=hanjun.guo@linaro.org \ --cc=ijc+devicetree@hellion.org.uk \ --cc=leif.lindholm@linaro.org \ --cc=lenb@kernel.org \ --cc=linux-acpi@vger.kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=lorenzo.pieralisi@arm.com \ --cc=marc.zyngier@arm.com \ --cc=mark.rutland@arm.com \ --cc=msalter@redhat.com \ --cc=pawel.moll@arm.com \ --cc=rfranz@cavium.com \ --cc=rjw@rjwysocki.net \ --cc=robh+dt@kernel.org \ --cc=rrichter@cavium.com \ --cc=steve.capper@linaro.org \ --cc=tn@semihalf.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.