From: Sudeep Holla <sudeep.holla@arm.com> To: linux-acpi@vger.kernel.org, "Rafael J . Wysocki" <rjw@rjwysocki.net>, Catalin Marinas <catalin.marinas@arm.com>, Jeremy Linton <jeremy.linton@arm.com> Cc: Sudeep Holla <sudeep.holla@arm.com>, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Hanjun Guo <hanjun.guo@linaro.org>, Geert Uytterhoeven <geert@linux-m68k.org>, Will Deacon <will.deacon@arm.com> Subject: [PATCH 1/3] Revert "arm64: topology: divorce MC scheduling domain from core_siblings" Date: Tue, 5 Jun 2018 14:55:36 +0100 [thread overview] Message-ID: <1528206938-2702-1-git-send-email-sudeep.holla@arm.com> (raw) In-Reply-To: <CAMuHMdWJWj3a0MZgEi7VJTUJRNoeR+X3eoN8A-sW6fwimEr6Fg@mail.gmail.com> This reverts commit 37c3ec2d810f87eac73822f76b30391a83bded19. Currently on ARM64 platforms, we don't update the CPU topology masks on each hotplug operation. However, the updates to cpu_coregroup_mask done as part of ACPI PPTT support, in particular the commit being reverted makes use of cpumask_of_node which returns the cpu_oneline_mask instead of core_sibling as core_sibling masks are not updated for CPU hotplug operations and the comparision to find NUMA in package or LLC siblings fails. The original commit is technically correct and since it depends on the not yet supported feature, let's revert this for now. We can put it back once we have the support for CPU topology masks update on hotplug merged. Reported-by: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will.deacon@arm.com> Signed-off-by: Sudeep Holla <sudeep.holla@arm.com> --- arch/arm64/include/asm/topology.h | 2 -- arch/arm64/kernel/topology.c | 36 +----------------------------------- 2 files changed, 1 insertion(+), 37 deletions(-) diff --git a/arch/arm64/include/asm/topology.h b/arch/arm64/include/asm/topology.h index df48212f767b..6b10459e6905 100644 --- a/arch/arm64/include/asm/topology.h +++ b/arch/arm64/include/asm/topology.h @@ -8,10 +8,8 @@ struct cpu_topology { int thread_id; int core_id; int package_id; - int llc_id; cpumask_t thread_sibling; cpumask_t core_sibling; - cpumask_t llc_siblings; }; extern struct cpu_topology cpu_topology[NR_CPUS]; diff --git a/arch/arm64/kernel/topology.c b/arch/arm64/kernel/topology.c index 7415c166281f..047d98e68502 100644 --- a/arch/arm64/kernel/topology.c +++ b/arch/arm64/kernel/topology.c @@ -13,7 +13,6 @@ #include <linux/acpi.h> #include <linux/arch_topology.h> -#include <linux/cacheinfo.h> #include <linux/cpu.h> #include <linux/cpumask.h> #include <linux/init.h> @@ -215,19 +214,7 @@ EXPORT_SYMBOL_GPL(cpu_topology); const struct cpumask *cpu_coregroup_mask(int cpu) { - const cpumask_t *core_mask = cpumask_of_node(cpu_to_node(cpu)); - - /* Find the smaller of NUMA, core or LLC siblings */ - if (cpumask_subset(&cpu_topology[cpu].core_sibling, core_mask)) { - /* not numa in package, lets use the package siblings */ - core_mask = &cpu_topology[cpu].core_sibling; - } - if (cpu_topology[cpu].llc_id != -1) { - if (cpumask_subset(&cpu_topology[cpu].llc_siblings, core_mask)) - core_mask = &cpu_topology[cpu].llc_siblings; - } - - return core_mask; + return &cpu_topology[cpu].core_sibling; } static void update_siblings_masks(unsigned int cpuid) @@ -239,9 +226,6 @@ static void update_siblings_masks(unsigned int cpuid) for_each_possible_cpu(cpu) { cpu_topo = &cpu_topology[cpu]; - if (cpuid_topo->llc_id == cpu_topo->llc_id) - cpumask_set_cpu(cpu, &cpuid_topo->llc_siblings); - if (cpuid_topo->package_id != cpu_topo->package_id) continue; @@ -307,10 +291,6 @@ static void __init reset_cpu_topology(void) cpu_topo->core_id = 0; cpu_topo->package_id = -1; - cpu_topo->llc_id = -1; - cpumask_clear(&cpu_topo->llc_siblings); - cpumask_set_cpu(cpu, &cpu_topo->llc_siblings); - cpumask_clear(&cpu_topo->core_sibling); cpumask_set_cpu(cpu, &cpu_topo->core_sibling); cpumask_clear(&cpu_topo->thread_sibling); @@ -331,8 +311,6 @@ static int __init parse_acpi_topology(void) is_threaded = read_cpuid_mpidr() & MPIDR_MT_BITMASK; for_each_possible_cpu(cpu) { - int i, cache_id; - topology_id = find_acpi_cpu_topology(cpu, 0); if (topology_id < 0) return topology_id; @@ -347,18 +325,6 @@ static int __init parse_acpi_topology(void) } topology_id = find_acpi_cpu_topology_package(cpu); cpu_topology[cpu].package_id = topology_id; - - i = acpi_find_last_cache_level(cpu); - - if (i > 0) { - /* - * this is the only part of cpu_topology that has - * a direct relationship with the cache topology - */ - cache_id = find_acpi_cpu_cache_topology(cpu, i); - if (cache_id > 0) - cpu_topology[cpu].llc_id = cache_id; - } } return 0; -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: sudeep.holla@arm.com (Sudeep Holla) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 1/3] Revert "arm64: topology: divorce MC scheduling domain from core_siblings" Date: Tue, 5 Jun 2018 14:55:36 +0100 [thread overview] Message-ID: <1528206938-2702-1-git-send-email-sudeep.holla@arm.com> (raw) In-Reply-To: <CAMuHMdWJWj3a0MZgEi7VJTUJRNoeR+X3eoN8A-sW6fwimEr6Fg@mail.gmail.com> This reverts commit 37c3ec2d810f87eac73822f76b30391a83bded19. Currently on ARM64 platforms, we don't update the CPU topology masks on each hotplug operation. However, the updates to cpu_coregroup_mask done as part of ACPI PPTT support, in particular the commit being reverted makes use of cpumask_of_node which returns the cpu_oneline_mask instead of core_sibling as core_sibling masks are not updated for CPU hotplug operations and the comparision to find NUMA in package or LLC siblings fails. The original commit is technically correct and since it depends on the not yet supported feature, let's revert this for now. We can put it back once we have the support for CPU topology masks update on hotplug merged. Reported-by: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will.deacon@arm.com> Signed-off-by: Sudeep Holla <sudeep.holla@arm.com> --- arch/arm64/include/asm/topology.h | 2 -- arch/arm64/kernel/topology.c | 36 +----------------------------------- 2 files changed, 1 insertion(+), 37 deletions(-) diff --git a/arch/arm64/include/asm/topology.h b/arch/arm64/include/asm/topology.h index df48212f767b..6b10459e6905 100644 --- a/arch/arm64/include/asm/topology.h +++ b/arch/arm64/include/asm/topology.h @@ -8,10 +8,8 @@ struct cpu_topology { int thread_id; int core_id; int package_id; - int llc_id; cpumask_t thread_sibling; cpumask_t core_sibling; - cpumask_t llc_siblings; }; extern struct cpu_topology cpu_topology[NR_CPUS]; diff --git a/arch/arm64/kernel/topology.c b/arch/arm64/kernel/topology.c index 7415c166281f..047d98e68502 100644 --- a/arch/arm64/kernel/topology.c +++ b/arch/arm64/kernel/topology.c @@ -13,7 +13,6 @@ #include <linux/acpi.h> #include <linux/arch_topology.h> -#include <linux/cacheinfo.h> #include <linux/cpu.h> #include <linux/cpumask.h> #include <linux/init.h> @@ -215,19 +214,7 @@ EXPORT_SYMBOL_GPL(cpu_topology); const struct cpumask *cpu_coregroup_mask(int cpu) { - const cpumask_t *core_mask = cpumask_of_node(cpu_to_node(cpu)); - - /* Find the smaller of NUMA, core or LLC siblings */ - if (cpumask_subset(&cpu_topology[cpu].core_sibling, core_mask)) { - /* not numa in package, lets use the package siblings */ - core_mask = &cpu_topology[cpu].core_sibling; - } - if (cpu_topology[cpu].llc_id != -1) { - if (cpumask_subset(&cpu_topology[cpu].llc_siblings, core_mask)) - core_mask = &cpu_topology[cpu].llc_siblings; - } - - return core_mask; + return &cpu_topology[cpu].core_sibling; } static void update_siblings_masks(unsigned int cpuid) @@ -239,9 +226,6 @@ static void update_siblings_masks(unsigned int cpuid) for_each_possible_cpu(cpu) { cpu_topo = &cpu_topology[cpu]; - if (cpuid_topo->llc_id == cpu_topo->llc_id) - cpumask_set_cpu(cpu, &cpuid_topo->llc_siblings); - if (cpuid_topo->package_id != cpu_topo->package_id) continue; @@ -307,10 +291,6 @@ static void __init reset_cpu_topology(void) cpu_topo->core_id = 0; cpu_topo->package_id = -1; - cpu_topo->llc_id = -1; - cpumask_clear(&cpu_topo->llc_siblings); - cpumask_set_cpu(cpu, &cpu_topo->llc_siblings); - cpumask_clear(&cpu_topo->core_sibling); cpumask_set_cpu(cpu, &cpu_topo->core_sibling); cpumask_clear(&cpu_topo->thread_sibling); @@ -331,8 +311,6 @@ static int __init parse_acpi_topology(void) is_threaded = read_cpuid_mpidr() & MPIDR_MT_BITMASK; for_each_possible_cpu(cpu) { - int i, cache_id; - topology_id = find_acpi_cpu_topology(cpu, 0); if (topology_id < 0) return topology_id; @@ -347,18 +325,6 @@ static int __init parse_acpi_topology(void) } topology_id = find_acpi_cpu_topology_package(cpu); cpu_topology[cpu].package_id = topology_id; - - i = acpi_find_last_cache_level(cpu); - - if (i > 0) { - /* - * this is the only part of cpu_topology that has - * a direct relationship with the cache topology - */ - cache_id = find_acpi_cpu_cache_topology(cpu, i); - if (cache_id > 0) - cpu_topology[cpu].llc_id = cache_id; - } } return 0; -- 2.7.4
next prev parent reply other threads:[~2018-06-05 13:55 UTC|newest] Thread overview: 185+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-05-11 23:57 [PATCH v9 00/12] Support PPTT for ARM64 Jeremy Linton 2018-05-11 23:57 ` Jeremy Linton 2018-05-11 23:57 ` Jeremy Linton 2018-05-11 23:57 ` [PATCH v9 01/12] drivers: base: cacheinfo: move cache_setup_of_node() Jeremy Linton 2018-05-11 23:57 ` Jeremy Linton 2018-05-11 23:57 ` Jeremy Linton 2018-05-11 23:57 ` [PATCH v9 02/12] drivers: base: cacheinfo: setup DT cache properties early Jeremy Linton 2018-05-11 23:57 ` Jeremy Linton 2018-05-11 23:57 ` Jeremy Linton 2018-05-11 23:57 ` Jeremy Linton 2018-05-15 17:15 ` Jeremy Linton 2018-05-15 17:15 ` Jeremy Linton 2018-05-15 17:15 ` Jeremy Linton 2018-05-15 19:32 ` Andy Shevchenko 2018-05-15 19:32 ` Andy Shevchenko 2018-05-15 19:32 ` Andy Shevchenko 2018-05-15 19:32 ` Andy Shevchenko 2018-05-16 10:56 ` Sudeep Holla 2018-05-16 10:56 ` Sudeep Holla 2018-05-16 10:56 ` Sudeep Holla 2018-05-16 10:56 ` Sudeep Holla 2018-05-17 15:47 ` Sudeep Holla 2018-05-17 15:47 ` Sudeep Holla 2018-05-17 15:47 ` Sudeep Holla 2018-05-17 15:47 ` Sudeep Holla 2018-05-18 21:50 ` Andy Shevchenko 2018-05-18 21:50 ` Andy Shevchenko 2018-05-18 21:50 ` Andy Shevchenko 2018-05-18 21:50 ` Andy Shevchenko 2018-05-21 9:27 ` Sudeep Holla 2018-05-21 9:27 ` Sudeep Holla 2018-05-21 9:27 ` Sudeep Holla 2018-05-21 9:27 ` Sudeep Holla 2018-05-21 10:15 ` Sudeep Holla 2018-05-21 10:15 ` Sudeep Holla 2018-05-21 10:15 ` Sudeep Holla 2018-05-21 10:15 ` Sudeep Holla 2018-05-21 10:32 ` [PATCH] drivers: base: cacheinfo: use OF property_read_u64 instead of get_property,read_number Sudeep Holla 2018-05-21 10:32 ` [PATCH] drivers: base: cacheinfo: use OF property_read_u64 instead of get_property, read_number Sudeep Holla 2018-05-21 12:53 ` [PATCH v2] drivers: base: cacheinfo: use OF property_read_u32 instead of get_property,read_number Sudeep Holla 2018-05-21 12:53 ` [PATCH v2] drivers: base: cacheinfo: use OF property_read_u32 instead of get_property, read_number Sudeep Holla 2018-06-05 16:21 ` [PATCH v2] drivers: base: cacheinfo: use OF property_read_u32 instead of get_property,read_number Andy Shevchenko 2018-06-05 16:21 ` Andy Shevchenko 2018-06-05 16:26 ` Sudeep Holla 2018-06-05 16:26 ` Sudeep Holla 2018-06-05 16:34 ` Andy Shevchenko 2018-06-05 16:34 ` Andy Shevchenko 2018-05-17 6:54 ` [PATCH v9 02/12] drivers: base: cacheinfo: setup DT cache properties early Greg KH 2018-05-17 6:54 ` Greg KH 2018-05-17 6:54 ` Greg KH 2018-05-17 9:08 ` Sudeep Holla 2018-05-17 9:08 ` Sudeep Holla 2018-05-17 9:08 ` Sudeep Holla 2018-05-17 9:35 ` Greg KH 2018-05-17 9:35 ` Greg KH 2018-05-17 9:35 ` Greg KH 2018-05-11 23:57 ` [PATCH v9 03/12] cacheinfo: rename of_node to fw_token Jeremy Linton 2018-05-11 23:57 ` Jeremy Linton 2018-05-11 23:57 ` Jeremy Linton 2018-05-11 23:57 ` [PATCH v9 04/12] arm64/acpi: Create arch specific cpu to acpi id helper Jeremy Linton 2018-05-11 23:57 ` Jeremy Linton 2018-05-11 23:57 ` Jeremy Linton 2018-05-14 14:41 ` Sudeep Holla 2018-05-14 14:41 ` Sudeep Holla 2018-05-14 14:41 ` Sudeep Holla 2018-05-11 23:58 ` [PATCH v9 05/12] ACPI/PPTT: Add Processor Properties Topology Table parsing Jeremy Linton 2018-05-11 23:58 ` Jeremy Linton 2018-05-11 23:58 ` Jeremy Linton 2018-05-12 10:09 ` Rafael J. Wysocki 2018-05-12 10:09 ` Rafael J. Wysocki 2018-05-12 10:09 ` Rafael J. Wysocki 2018-05-12 10:09 ` Rafael J. Wysocki 2018-05-15 21:42 ` Jeremy Linton 2018-05-15 21:42 ` Jeremy Linton 2018-05-15 21:42 ` Jeremy Linton 2018-05-15 21:42 ` Jeremy Linton 2018-05-16 8:24 ` Rafael J. Wysocki 2018-05-16 8:24 ` Rafael J. Wysocki 2018-05-16 8:24 ` Rafael J. Wysocki 2018-05-16 8:24 ` Rafael J. Wysocki 2018-05-11 23:58 ` [PATCH v9 06/12] ACPI: Enable PPTT support on ARM64 Jeremy Linton 2018-05-11 23:58 ` Jeremy Linton 2018-05-11 23:58 ` Jeremy Linton 2018-05-11 23:58 ` [PATCH v9 07/12] drivers: base cacheinfo: Add support for ACPI based firmware tables Jeremy Linton 2018-05-11 23:58 ` Jeremy Linton 2018-05-11 23:58 ` Jeremy Linton 2018-05-11 23:58 ` [PATCH v9 08/12] arm64: " Jeremy Linton 2018-05-11 23:58 ` Jeremy Linton 2018-05-11 23:58 ` Jeremy Linton 2018-05-11 23:58 ` [PATCH v9 09/12] arm64: topology: rename cluster_id Jeremy Linton 2018-05-11 23:58 ` Jeremy Linton 2018-05-11 23:58 ` Jeremy Linton 2018-05-11 23:58 ` [PATCH v9 10/12] arm64: topology: enable ACPI/PPTT based CPU topology Jeremy Linton 2018-05-11 23:58 ` Jeremy Linton 2018-05-11 23:58 ` Jeremy Linton 2018-05-11 23:58 ` [PATCH v9 11/12] ACPI: Add PPTT to injectable table list Jeremy Linton 2018-05-11 23:58 ` Jeremy Linton 2018-05-11 23:58 ` Jeremy Linton 2018-05-12 10:10 ` Rafael J. Wysocki 2018-05-12 10:10 ` Rafael J. Wysocki 2018-05-12 10:10 ` Rafael J. Wysocki 2018-05-12 10:10 ` Rafael J. Wysocki 2018-05-11 23:58 ` [PATCH v9 12/12] arm64: topology: divorce MC scheduling domain from core_siblings Jeremy Linton 2018-05-11 23:58 ` Jeremy Linton 2018-05-11 23:58 ` Jeremy Linton 2018-05-17 17:05 ` [PATCH v9 00/12] Support PPTT for ARM64 Catalin Marinas 2018-05-17 17:05 ` Catalin Marinas 2018-05-17 17:05 ` Catalin Marinas 2018-05-29 10:48 ` Geert Uytterhoeven 2018-05-29 10:48 ` Geert Uytterhoeven 2018-05-29 10:48 ` Geert Uytterhoeven 2018-05-29 10:48 ` Geert Uytterhoeven 2018-05-29 11:14 ` Sudeep Holla 2018-05-29 11:14 ` Sudeep Holla 2018-05-29 11:14 ` Sudeep Holla 2018-05-29 11:14 ` Sudeep Holla 2018-05-29 11:56 ` Geert Uytterhoeven 2018-05-29 11:56 ` Geert Uytterhoeven 2018-05-29 11:56 ` Geert Uytterhoeven 2018-05-29 11:56 ` Geert Uytterhoeven 2018-05-29 13:18 ` Sudeep Holla 2018-05-29 13:18 ` Sudeep Holla 2018-05-29 13:18 ` Sudeep Holla 2018-05-29 13:18 ` Sudeep Holla 2018-05-29 15:08 ` Will Deacon 2018-05-29 15:08 ` Will Deacon 2018-05-29 15:08 ` Will Deacon 2018-05-29 15:08 ` Will Deacon 2018-05-29 15:51 ` Geert Uytterhoeven 2018-05-29 15:51 ` Geert Uytterhoeven 2018-05-29 15:51 ` Geert Uytterhoeven 2018-05-29 15:51 ` Geert Uytterhoeven 2018-05-29 17:08 ` Robin Murphy 2018-05-29 17:08 ` Robin Murphy 2018-05-29 17:08 ` Robin Murphy 2018-05-29 17:08 ` Robin Murphy 2018-05-29 17:18 ` Geert Uytterhoeven 2018-05-29 17:18 ` Geert Uytterhoeven 2018-05-29 17:18 ` Geert Uytterhoeven 2018-05-29 17:18 ` Geert Uytterhoeven 2018-05-29 17:31 ` Sudeep Holla 2018-05-29 17:31 ` Sudeep Holla 2018-05-29 17:31 ` Sudeep Holla 2018-05-29 17:31 ` Sudeep Holla 2018-05-29 20:16 ` Will Deacon 2018-05-29 20:16 ` Will Deacon 2018-05-29 20:16 ` Will Deacon 2018-05-29 20:16 ` Will Deacon 2018-05-29 20:48 ` Jeremy Linton 2018-05-29 20:48 ` Jeremy Linton 2018-05-29 20:48 ` Jeremy Linton 2018-05-29 20:48 ` Jeremy Linton 2018-05-29 21:52 ` Jeremy Linton 2018-05-29 21:52 ` Jeremy Linton 2018-05-29 21:52 ` Jeremy Linton 2018-05-29 21:52 ` Jeremy Linton 2018-05-30 13:24 ` Sudeep Holla 2018-05-30 13:24 ` Sudeep Holla 2018-05-30 13:24 ` Sudeep Holla 2018-05-30 13:24 ` Sudeep Holla 2018-05-29 15:23 ` Jeremy Linton 2018-05-29 15:23 ` Jeremy Linton 2018-05-29 15:23 ` Jeremy Linton 2018-05-29 15:23 ` Jeremy Linton 2018-05-29 15:50 ` Geert Uytterhoeven 2018-05-29 15:50 ` Geert Uytterhoeven 2018-05-29 15:50 ` Geert Uytterhoeven 2018-05-29 15:50 ` Geert Uytterhoeven 2018-05-30 8:52 ` Morten Rasmussen 2018-05-30 8:52 ` Morten Rasmussen 2018-05-30 8:52 ` Morten Rasmussen 2018-05-30 8:52 ` Morten Rasmussen 2018-06-05 13:55 ` Sudeep Holla [this message] 2018-06-05 13:55 ` [PATCH 1/3] Revert "arm64: topology: divorce MC scheduling domain from core_siblings" Sudeep Holla 2018-06-05 13:55 ` [PATCH 2/3] ACPI / PPTT: fix build when CONFIG_ACPI_PPTT is not enabled Sudeep Holla 2018-06-05 13:55 ` Sudeep Holla 2018-06-05 13:55 ` [PATCH 3/3] arm64: disable ACPI PPTT support temporarily Sudeep Holla 2018-06-05 13:55 ` Sudeep Holla 2018-06-05 14:09 ` [PATCH 1/3] Revert "arm64: topology: divorce MC scheduling domain from core_siblings" Geert Uytterhoeven 2018-06-05 14:09 ` Geert Uytterhoeven 2018-06-05 14:12 ` Sudeep Holla 2018-06-05 14:12 ` Sudeep Holla 2018-06-04 15:12 ` [PATCH v9 00/12] Support PPTT for ARM64 Catalin Marinas 2018-06-04 15:12 ` Catalin Marinas 2018-06-04 15:12 ` Catalin Marinas
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=1528206938-2702-1-git-send-email-sudeep.holla@arm.com \ --to=sudeep.holla@arm.com \ --cc=catalin.marinas@arm.com \ --cc=geert@linux-m68k.org \ --cc=hanjun.guo@linaro.org \ --cc=jeremy.linton@arm.com \ --cc=linux-acpi@vger.kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=rjw@rjwysocki.net \ --cc=will.deacon@arm.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.