From: "Mi, Dapeng" <dapeng1.mi@linux.intel.com>
To: Zide Chen <zide.chen@intel.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Ian Rogers <irogers@google.com>,
Adrian Hunter <adrian.hunter@intel.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Andi Kleen <ak@linux.intel.com>,
Eranian Stephane <eranian@google.com>
Cc: linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org
Subject: Re: [PATCH V2 5/7] perf/x86/intel/uncore: Move die_to_cpu() to uncore.c
Date: Thu, 28 May 2026 14:36:49 +0800 [thread overview]
Message-ID: <ee6c2d0b-3b59-4f87-8987-87f8defcb768@linux.intel.com> (raw)
In-Reply-To: <20260527151154.130505-5-zide.chen@intel.com>
Reviewed-by: Dapeng Mi <dapeng1.mi@linux.intel.com>
On 5/27/2026 11:11 PM, Zide Chen wrote:
> Move die_to_cpu() into uncore.c so it can be reused by the MSR
> initialization path, preparing for the introduction of an MSR global
> initialization callback.
>
> Move the cpus_read_{lock,unlock}() out of the API, in order to make
> it possible to be called when the lock is being held.
>
> Add the uncore_ prefix for consistency with other uncore APIs.
>
> Signed-off-by: Zide Chen <zide.chen@intel.com>
>
> V2:
> - Move cpus_read_{lock,unlock}() out of uncore_die_to_cpu() and rely
> on callers to manage the lock. (Sashiko)
> - Remove "No functional change intended" from the changelog.
> ---
> arch/x86/events/intel/uncore.c | 19 +++++++++++++++++++
> arch/x86/events/intel/uncore.h | 1 +
> arch/x86/events/intel/uncore_snbep.c | 23 +++--------------------
> 3 files changed, 23 insertions(+), 20 deletions(-)
>
> diff --git a/arch/x86/events/intel/uncore.c b/arch/x86/events/intel/uncore.c
> index e9cc1ba921c5..22256ded2d67 100644
> --- a/arch/x86/events/intel/uncore.c
> +++ b/arch/x86/events/intel/uncore.c
> @@ -83,6 +83,25 @@ int uncore_device_to_die(struct pci_dev *dev)
> return -1;
> }
>
> +/*
> + * Using cpus_read_lock() to ensure cpu is not going down between
> + * looking at cpu_online_mask.
> + *
> + * The lock must be held by the caller.
> + */
> +int uncore_die_to_cpu(int die)
> +{
> + int res = 0, cpu;
> +
> + for_each_online_cpu(cpu) {
> + if (topology_logical_die_id(cpu) == die) {
> + res = cpu;
> + break;
> + }
> + }
> + return res;
> +}
> +
> static void uncore_free_pcibus_map(void)
> {
> struct pci2phy_map *map, *tmp;
> diff --git a/arch/x86/events/intel/uncore.h b/arch/x86/events/intel/uncore.h
> index c35918c01afa..94c68e3417b6 100644
> --- a/arch/x86/events/intel/uncore.h
> +++ b/arch/x86/events/intel/uncore.h
> @@ -235,6 +235,7 @@ struct pci2phy_map *__find_pci2phy_map(int segment);
> int uncore_pcibus_to_dieid(struct pci_bus *bus);
> int uncore_die_to_segment(int die);
> int uncore_device_to_die(struct pci_dev *dev);
> +int uncore_die_to_cpu(int die);
>
> ssize_t uncore_event_show(struct device *dev,
> struct device_attribute *attr, char *buf);
> diff --git a/arch/x86/events/intel/uncore_snbep.c b/arch/x86/events/intel/uncore_snbep.c
> index c9ce206fcbb6..772b78237424 100644
> --- a/arch/x86/events/intel/uncore_snbep.c
> +++ b/arch/x86/events/intel/uncore_snbep.c
> @@ -3704,25 +3704,6 @@ static int skx_msr_cpu_bus_read(int cpu, u64 *topology)
> return 0;
> }
>
> -static int die_to_cpu(int die)
> -{
> - int res = 0, cpu, current_die;
> - /*
> - * Using cpus_read_lock() to ensure cpu is not going down between
> - * looking at cpu_online_mask.
> - */
> - cpus_read_lock();
> - for_each_online_cpu(cpu) {
> - current_die = topology_logical_die_id(cpu);
> - if (current_die == die) {
> - res = cpu;
> - break;
> - }
> - }
> - cpus_read_unlock();
> - return res;
> -}
> -
> enum {
> IIO_TOPOLOGY_TYPE,
> UPI_TOPOLOGY_TYPE,
> @@ -3794,8 +3775,9 @@ static int skx_pmu_get_topology(struct intel_uncore_type *type,
> int die, ret = -EPERM;
> u64 cpu_bus_msr;
>
> + cpus_read_lock();
> for (die = 0; die < uncore_max_dies(); die++) {
> - ret = skx_msr_cpu_bus_read(die_to_cpu(die), &cpu_bus_msr);
> + ret = skx_msr_cpu_bus_read(uncore_die_to_cpu(die), &cpu_bus_msr);
> if (ret)
> break;
>
> @@ -3807,6 +3789,7 @@ static int skx_pmu_get_topology(struct intel_uncore_type *type,
> if (ret)
> break;
> }
> + cpus_read_unlock();
>
> return ret;
> }
next prev parent reply other threads:[~2026-05-28 6:36 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-27 15:11 [PATCH V2 1/7] perf/x86/intel/uncore: Fix discovery unit lookup for multi-die systems Zide Chen
2026-05-27 15:11 ` [PATCH V2 2/7] perf/x86/intel/uncore: Guard against invalid box control address Zide Chen
2026-05-27 17:28 ` sashiko-bot
2026-05-29 18:30 ` Chen, Zide
2026-05-28 6:03 ` Mi, Dapeng
2026-05-27 15:11 ` [PATCH V2 3/7] perf/x86/intel/uncore: Fix PCI device refcount leak in UPI discovery Zide Chen
2026-05-28 6:34 ` Mi, Dapeng
2026-05-27 15:11 ` [PATCH V2 4/7] perf/x86/intel/uncore: Defer ADL global PMON enable to enable_box() Zide Chen
2026-05-27 18:17 ` sashiko-bot
2026-05-28 6:35 ` Mi, Dapeng
2026-05-28 18:07 ` Chen, Zide
2026-05-27 15:11 ` [PATCH V2 5/7] perf/x86/intel/uncore: Move die_to_cpu() to uncore.c Zide Chen
2026-05-28 6:36 ` Mi, Dapeng [this message]
2026-05-29 10:54 ` Peter Zijlstra
2026-05-27 15:11 ` [PATCH V2 6/7] perf/x86/intel/uncore: Fix uncore_die_to_cpu() for offline dies Zide Chen
2026-05-27 19:56 ` sashiko-bot
2026-05-28 6:38 ` Mi, Dapeng
2026-05-27 15:11 ` [PATCH V2 7/7] perf/x86/intel/uncore: Implement global init callback for GNR uncore Zide Chen
2026-05-27 20:45 ` sashiko-bot
2026-05-29 18:30 ` Chen, Zide
2026-05-28 6:46 ` Mi, Dapeng
2026-05-28 18:14 ` Chen, Zide
2026-05-29 8:47 ` Mi, Dapeng
2026-05-29 10:55 ` Peter Zijlstra
2026-05-29 15:03 ` Chen, Zide
2026-05-27 15:45 ` [PATCH V2 1/7] perf/x86/intel/uncore: Fix discovery unit lookup for multi-die systems sashiko-bot
2026-05-29 18:31 ` Chen, Zide
2026-05-28 6:01 ` Mi, Dapeng
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=ee6c2d0b-3b59-4f87-8987-87f8defcb768@linux.intel.com \
--to=dapeng1.mi@linux.intel.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=eranian@google.com \
--cc=irogers@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=zide.chen@intel.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: link
Be 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.