* [PATCH v1 0/2] Fix RAPL PMU access from non-lead CPUs
@ 2026-02-09 23:43 Kuppuswamy Sathyanarayanan
2026-02-09 23:43 ` [PATCH v1 1/2] powercap: intel_rapl: Remove incorrect CPU check in PMU context Kuppuswamy Sathyanarayanan
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Kuppuswamy Sathyanarayanan @ 2026-02-09 23:43 UTC (permalink / raw)
To: Rafael J . Wysocki; +Cc: Srinivas Pandruvada, linux-pm, linux-kernel
This series fixes issues with RAPL PMU event access when using CPUs
other than the package lead_cpu.
The problem was discovered when turbostat reported zero power values
when run on a non-lead CPU in the package.
Investigation revealed two issues:
1. The RAPL MSR driver incorrectly validated that the current CPU must
match the lead CPU of the package when reading from PMU context, even
though package-scoped MSRs are readable from any CPU in the package.
2. The RAPL PMU cpumask only exposed one CPU per package (the lead_cpu)
for both MSR and TPMI interfaces, forcing tools to use that specific
CPU even though package-scoped registers are readable from any CPU
in the package.
The perf tool avoided issue #1 by checking the cpumask before opening
events, but turbostat does not perform this validation. The restrictive
cpumask in issue #2 was unnecessary since both MSR and TPMI interfaces
support reads from any CPU in the package for package-scoped registers.
These patches:
- Remove the incorrect CPU validation check in PMU context
- Expand the PMU cpumask to include all CPUs in each package for both
MSR and TPMI RAPL interfaces
- Rename 'atomic' parameter to 'pmu_ctx' for clarity
After these changes, tools can successfully read RAPL events from any
CPU in the package, matching the architectural capability of the
hardware for both MSR and TPMI based RAPL implementations.
Testing (PTL & GNR platform):
- Verified turbostat --no-msr --show power works on all CPUs
- Verified perf stat -e power/energy-pkg/ works on all CPUs
- Confirmed /sys/bus/event_source/devices/power/cpumask shows all
package CPUs instead of just lead_cpu
- Tested on both MSR-based (PTL) and TPMI-based (GNR) RAPL system
Kuppuswamy Sathyanarayanan (2):
powercap: intel_rapl: Remove incorrect CPU check in PMU context
powercap: intel_rapl: Expose all package CPUs in PMU cpumask
drivers/powercap/intel_rapl_common.c | 21 ++++++++-------------
drivers/powercap/intel_rapl_msr.c | 12 +++++-------
include/linux/intel_rapl.h | 2 +-
3 files changed, 14 insertions(+), 21 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH v1 1/2] powercap: intel_rapl: Remove incorrect CPU check in PMU context 2026-02-09 23:43 [PATCH v1 0/2] Fix RAPL PMU access from non-lead CPUs Kuppuswamy Sathyanarayanan @ 2026-02-09 23:43 ` Kuppuswamy Sathyanarayanan 2026-02-14 16:19 ` Raag Jadav 2026-02-09 23:43 ` [PATCH v1 2/2] powercap: intel_rapl: Expose all package CPUs in PMU cpumask Kuppuswamy Sathyanarayanan 2026-02-10 17:53 ` [PATCH v1 0/2] Fix RAPL PMU access from non-lead CPUs srinivas pandruvada 2 siblings, 1 reply; 6+ messages in thread From: Kuppuswamy Sathyanarayanan @ 2026-02-09 23:43 UTC (permalink / raw) To: Rafael J . Wysocki; +Cc: Srinivas Pandruvada, linux-pm, linux-kernel The RAPL MSR read path incorrectly validates CPU context when called from the PMU subsystem: if (atomic) { if (unlikely(smp_processor_id() != cpu)) return -EIO; rdmsrq(ra->reg.msr, ra->value); } This check fails for package-scoped MSRs like RAPL energy counters, which are readable from any CPU within the package. The perf tool avoids hitting this check by validating against /sys/bus/event_source/devices/power/cpumask before opening events. However, turbostat does not perform this validation and may attempt reads from non-lead CPUs, causing the check to fail and return zero power values. Since package-scoped MSRs are architecturally accessible from any CPU in the package, remove the CPU matching check. Also rename 'atomic' to 'pmu_ctx' to clarify this indicates PMU context where rdmsrq() can be used directly instead of rdmsrl_safe_on_cpu(). Fixes: 748d6ba43afd ("powercap: intel_rapl: Enable MSR-based RAPL PMU support") Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com> Tested-by: Furquim Ulisses <ulisses.furquim@intel.com> --- drivers/powercap/intel_rapl_common.c | 6 +++--- drivers/powercap/intel_rapl_msr.c | 12 +++++------- include/linux/intel_rapl.h | 2 +- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/drivers/powercap/intel_rapl_common.c b/drivers/powercap/intel_rapl_common.c index 3ff6da3bf4e6..3705d0608a0f 100644 --- a/drivers/powercap/intel_rapl_common.c +++ b/drivers/powercap/intel_rapl_common.c @@ -254,7 +254,7 @@ static void rapl_init_domains(struct rapl_package *rp); static int rapl_read_data_raw(struct rapl_domain *rd, enum rapl_primitives prim, bool xlate, u64 *data, - bool atomic); + bool pmu_ctx); static int rapl_write_data_raw(struct rapl_domain *rd, enum rapl_primitives prim, unsigned long long value); @@ -832,7 +832,7 @@ prim_fixups(struct rapl_domain *rd, enum rapl_primitives prim) */ static int rapl_read_data_raw(struct rapl_domain *rd, enum rapl_primitives prim, bool xlate, u64 *data, - bool atomic) + bool pmu_ctx) { u64 value; enum rapl_primitives prim_fixed = prim_fixups(rd, prim); @@ -854,7 +854,7 @@ static int rapl_read_data_raw(struct rapl_domain *rd, ra.mask = rpi->mask; - if (rd->rp->priv->read_raw(get_rid(rd->rp), &ra, atomic)) { + if (rd->rp->priv->read_raw(get_rid(rd->rp), &ra, pmu_ctx)) { pr_debug("failed to read reg 0x%llx for %s:%s\n", ra.reg.val, rd->rp->name, rd->name); return -EIO; } diff --git a/drivers/powercap/intel_rapl_msr.c b/drivers/powercap/intel_rapl_msr.c index 9a7e150b3536..152893dca565 100644 --- a/drivers/powercap/intel_rapl_msr.c +++ b/drivers/powercap/intel_rapl_msr.c @@ -110,16 +110,14 @@ static int rapl_cpu_down_prep(unsigned int cpu) return 0; } -static int rapl_msr_read_raw(int cpu, struct reg_action *ra, bool atomic) +static int rapl_msr_read_raw(int cpu, struct reg_action *ra, bool pmu_ctx) { /* - * When called from atomic-context (eg PMU event handler) - * perform MSR read directly using rdmsrq(). + * When called from PMU context, perform MSR read directly using + * rdmsrq() without IPI overhead. Package-scoped MSRs are readable + * from any CPU in the package. */ - if (atomic) { - if (unlikely(smp_processor_id() != cpu)) - return -EIO; - + if (pmu_ctx) { rdmsrq(ra->reg.msr, ra->value); goto out; } diff --git a/include/linux/intel_rapl.h b/include/linux/intel_rapl.h index f479ef5b3341..fa1f328d6712 100644 --- a/include/linux/intel_rapl.h +++ b/include/linux/intel_rapl.h @@ -152,7 +152,7 @@ struct rapl_if_priv { union rapl_reg reg_unit; union rapl_reg regs[RAPL_DOMAIN_MAX][RAPL_DOMAIN_REG_MAX]; int limits[RAPL_DOMAIN_MAX]; - int (*read_raw)(int id, struct reg_action *ra, bool atomic); + int (*read_raw)(int id, struct reg_action *ra, bool pmu_ctx); int (*write_raw)(int id, struct reg_action *ra); void *defaults; void *rpi; -- 2.43.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v1 1/2] powercap: intel_rapl: Remove incorrect CPU check in PMU context 2026-02-09 23:43 ` [PATCH v1 1/2] powercap: intel_rapl: Remove incorrect CPU check in PMU context Kuppuswamy Sathyanarayanan @ 2026-02-14 16:19 ` Raag Jadav 0 siblings, 0 replies; 6+ messages in thread From: Raag Jadav @ 2026-02-14 16:19 UTC (permalink / raw) To: Kuppuswamy Sathyanarayanan Cc: Rafael J . Wysocki, Srinivas Pandruvada, linux-pm, linux-kernel On Mon, Feb 09, 2026 at 03:43:09PM -0800, Kuppuswamy Sathyanarayanan wrote: > The RAPL MSR read path incorrectly validates CPU context when called > from the PMU subsystem: > > if (atomic) { > if (unlikely(smp_processor_id() != cpu)) > return -EIO; > rdmsrq(ra->reg.msr, ra->value); > } > > This check fails for package-scoped MSRs like RAPL energy counters, > which are readable from any CPU within the package. > > The perf tool avoids hitting this check by validating against > /sys/bus/event_source/devices/power/cpumask before opening events. > However, turbostat does not perform this validation and may attempt > reads from non-lead CPUs, causing the check to fail and return zero > power values. > > Since package-scoped MSRs are architecturally accessible from any CPU > in the package, remove the CPU matching check. > > Also rename 'atomic' to 'pmu_ctx' to clarify this indicates PMU context > where rdmsrq() can be used directly instead of rdmsrl_safe_on_cpu(). > > Fixes: 748d6ba43afd ("powercap: intel_rapl: Enable MSR-based RAPL PMU support") > Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com> > Tested-by: Furquim Ulisses <ulisses.furquim@intel.com> This fixes a regression[1] in our test suite. Looks like the patch is already applied, but feel free to add my Tested-by: Raag Jadav <raag.jadav@intel.com> [1] https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/6935 > --- > drivers/powercap/intel_rapl_common.c | 6 +++--- > drivers/powercap/intel_rapl_msr.c | 12 +++++------- > include/linux/intel_rapl.h | 2 +- > 3 files changed, 9 insertions(+), 11 deletions(-) > > diff --git a/drivers/powercap/intel_rapl_common.c b/drivers/powercap/intel_rapl_common.c > index 3ff6da3bf4e6..3705d0608a0f 100644 > --- a/drivers/powercap/intel_rapl_common.c > +++ b/drivers/powercap/intel_rapl_common.c > @@ -254,7 +254,7 @@ static void rapl_init_domains(struct rapl_package *rp); > static int rapl_read_data_raw(struct rapl_domain *rd, > enum rapl_primitives prim, > bool xlate, u64 *data, > - bool atomic); > + bool pmu_ctx); > static int rapl_write_data_raw(struct rapl_domain *rd, > enum rapl_primitives prim, > unsigned long long value); > @@ -832,7 +832,7 @@ prim_fixups(struct rapl_domain *rd, enum rapl_primitives prim) > */ > static int rapl_read_data_raw(struct rapl_domain *rd, > enum rapl_primitives prim, bool xlate, u64 *data, > - bool atomic) > + bool pmu_ctx) > { > u64 value; > enum rapl_primitives prim_fixed = prim_fixups(rd, prim); > @@ -854,7 +854,7 @@ static int rapl_read_data_raw(struct rapl_domain *rd, > > ra.mask = rpi->mask; > > - if (rd->rp->priv->read_raw(get_rid(rd->rp), &ra, atomic)) { > + if (rd->rp->priv->read_raw(get_rid(rd->rp), &ra, pmu_ctx)) { > pr_debug("failed to read reg 0x%llx for %s:%s\n", ra.reg.val, rd->rp->name, rd->name); > return -EIO; > } > diff --git a/drivers/powercap/intel_rapl_msr.c b/drivers/powercap/intel_rapl_msr.c > index 9a7e150b3536..152893dca565 100644 > --- a/drivers/powercap/intel_rapl_msr.c > +++ b/drivers/powercap/intel_rapl_msr.c > @@ -110,16 +110,14 @@ static int rapl_cpu_down_prep(unsigned int cpu) > return 0; > } > > -static int rapl_msr_read_raw(int cpu, struct reg_action *ra, bool atomic) > +static int rapl_msr_read_raw(int cpu, struct reg_action *ra, bool pmu_ctx) > { > /* > - * When called from atomic-context (eg PMU event handler) > - * perform MSR read directly using rdmsrq(). > + * When called from PMU context, perform MSR read directly using > + * rdmsrq() without IPI overhead. Package-scoped MSRs are readable > + * from any CPU in the package. > */ > - if (atomic) { > - if (unlikely(smp_processor_id() != cpu)) > - return -EIO; > - > + if (pmu_ctx) { > rdmsrq(ra->reg.msr, ra->value); > goto out; > } > diff --git a/include/linux/intel_rapl.h b/include/linux/intel_rapl.h > index f479ef5b3341..fa1f328d6712 100644 > --- a/include/linux/intel_rapl.h > +++ b/include/linux/intel_rapl.h > @@ -152,7 +152,7 @@ struct rapl_if_priv { > union rapl_reg reg_unit; > union rapl_reg regs[RAPL_DOMAIN_MAX][RAPL_DOMAIN_REG_MAX]; > int limits[RAPL_DOMAIN_MAX]; > - int (*read_raw)(int id, struct reg_action *ra, bool atomic); > + int (*read_raw)(int id, struct reg_action *ra, bool pmu_ctx); > int (*write_raw)(int id, struct reg_action *ra); > void *defaults; > void *rpi; > -- > 2.43.0 > ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v1 2/2] powercap: intel_rapl: Expose all package CPUs in PMU cpumask 2026-02-09 23:43 [PATCH v1 0/2] Fix RAPL PMU access from non-lead CPUs Kuppuswamy Sathyanarayanan 2026-02-09 23:43 ` [PATCH v1 1/2] powercap: intel_rapl: Remove incorrect CPU check in PMU context Kuppuswamy Sathyanarayanan @ 2026-02-09 23:43 ` Kuppuswamy Sathyanarayanan 2026-02-10 17:53 ` [PATCH v1 0/2] Fix RAPL PMU access from non-lead CPUs srinivas pandruvada 2 siblings, 0 replies; 6+ messages in thread From: Kuppuswamy Sathyanarayanan @ 2026-02-09 23:43 UTC (permalink / raw) To: Rafael J . Wysocki; +Cc: Srinivas Pandruvada, linux-pm, linux-kernel Currently, the RAPL PMU cpumask only includes one CPU per package (typically the lead_cpu) for both MSR and TPMI interfaces. This forces tools to pin their operations to that specific CPU, even though package-scoped registers are readable from any CPU within the package. Change the cpumask to include all online CPUs in each package. This allows tools like perf and turbostat to read RAPL events from any CPU in the package without requiring special handling to find and use the designated lead_cpu. The change refactors get_pmu_cpu() into set_pmu_cpumask() which populates the cpumask with all CPUs belonging to each RAPL package instead of returning a single CPU. This improves flexibility for userspace tools while maintaining correctness since package-scoped RAPL MSRs are architecturally accessible from any CPU in the package. Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com> Tested-by: Furquim Ulisses <ulisses.furquim@intel.com> --- drivers/powercap/intel_rapl_common.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/drivers/powercap/intel_rapl_common.c b/drivers/powercap/intel_rapl_common.c index 3705d0608a0f..539625531709 100644 --- a/drivers/powercap/intel_rapl_common.c +++ b/drivers/powercap/intel_rapl_common.c @@ -1590,23 +1590,21 @@ static struct rapl_pmu rapl_pmu; /* PMU helpers */ -static int get_pmu_cpu(struct rapl_package *rp) +static void set_pmu_cpumask(struct rapl_package *rp, cpumask_var_t mask) { int cpu; if (!rp->has_pmu) - return nr_cpu_ids; + return; /* Only TPMI & MSR RAPL are supported for now */ if (rp->priv->type != RAPL_IF_TPMI && rp->priv->type != RAPL_IF_MSR) - return nr_cpu_ids; + return; /* TPMI/MSR RAPL uses any CPU in the package for PMU */ for_each_online_cpu(cpu) if (topology_physical_package_id(cpu) == rp->id) - return cpu; - - return nr_cpu_ids; + cpumask_set_cpu(cpu, mask); } static bool is_rp_pmu_cpu(struct rapl_package *rp, int cpu) @@ -1883,7 +1881,6 @@ static ssize_t cpumask_show(struct device *dev, { struct rapl_package *rp; cpumask_var_t cpu_mask; - int cpu; int ret; if (!alloc_cpumask_var(&cpu_mask, GFP_KERNEL)) @@ -1895,9 +1892,7 @@ static ssize_t cpumask_show(struct device *dev, /* Choose a cpu for each RAPL Package */ list_for_each_entry(rp, &rapl_packages, plist) { - cpu = get_pmu_cpu(rp); - if (cpu < nr_cpu_ids) - cpumask_set_cpu(cpu, cpu_mask); + set_pmu_cpumask(rp, cpu_mask); } cpus_read_unlock(); -- 2.43.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v1 0/2] Fix RAPL PMU access from non-lead CPUs 2026-02-09 23:43 [PATCH v1 0/2] Fix RAPL PMU access from non-lead CPUs Kuppuswamy Sathyanarayanan 2026-02-09 23:43 ` [PATCH v1 1/2] powercap: intel_rapl: Remove incorrect CPU check in PMU context Kuppuswamy Sathyanarayanan 2026-02-09 23:43 ` [PATCH v1 2/2] powercap: intel_rapl: Expose all package CPUs in PMU cpumask Kuppuswamy Sathyanarayanan @ 2026-02-10 17:53 ` srinivas pandruvada 2026-02-11 20:04 ` Rafael J. Wysocki 2 siblings, 1 reply; 6+ messages in thread From: srinivas pandruvada @ 2026-02-10 17:53 UTC (permalink / raw) To: Kuppuswamy Sathyanarayanan, Rafael J . Wysocki; +Cc: linux-pm, linux-kernel On Mon, 2026-02-09 at 15:43 -0800, Kuppuswamy Sathyanarayanan wrote: > This series fixes issues with RAPL PMU event access when using CPUs > other than the package lead_cpu. > > The problem was discovered when turbostat reported zero power values > when run on a non-lead CPU in the package. > > Investigation revealed two issues: > > 1. The RAPL MSR driver incorrectly validated that the current CPU > must > match the lead CPU of the package when reading from PMU context, > even > though package-scoped MSRs are readable from any CPU in the > package. > > 2. The RAPL PMU cpumask only exposed one CPU per package (the > lead_cpu) > for both MSR and TPMI interfaces, forcing tools to use that > specific > CPU even though package-scoped registers are readable from any CPU > in the package. > > The perf tool avoided issue #1 by checking the cpumask before opening > events, but turbostat does not perform this validation. The > restrictive > cpumask in issue #2 was unnecessary since both MSR and TPMI > interfaces > support reads from any CPU in the package for package-scoped > registers. > > These patches: > - Remove the incorrect CPU validation check in PMU context > - Expand the PMU cpumask to include all CPUs in each package for both > MSR and TPMI RAPL interfaces > - Rename 'atomic' parameter to 'pmu_ctx' for clarity > > After these changes, tools can successfully read RAPL events from any > CPU in the package, matching the architectural capability of the > hardware for both MSR and TPMI based RAPL implementations. > > Testing (PTL & GNR platform): > - Verified turbostat --no-msr --show power works on all CPUs > - Verified perf stat -e power/energy-pkg/ works on all CPUs > - Confirmed /sys/bus/event_source/devices/power/cpumask shows all > package CPUs instead of just lead_cpu > - Tested on both MSR-based (PTL) and TPMI-based (GNR) RAPL system > > Kuppuswamy Sathyanarayanan (2): > powercap: intel_rapl: Remove incorrect CPU check in PMU context > powercap: intel_rapl: Expose all package CPUs in PMU cpumask > Reviewed-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> > drivers/powercap/intel_rapl_common.c | 21 ++++++++------------- > drivers/powercap/intel_rapl_msr.c | 12 +++++------- > include/linux/intel_rapl.h | 2 +- > 3 files changed, 14 insertions(+), 21 deletions(-) ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v1 0/2] Fix RAPL PMU access from non-lead CPUs 2026-02-10 17:53 ` [PATCH v1 0/2] Fix RAPL PMU access from non-lead CPUs srinivas pandruvada @ 2026-02-11 20:04 ` Rafael J. Wysocki 0 siblings, 0 replies; 6+ messages in thread From: Rafael J. Wysocki @ 2026-02-11 20:04 UTC (permalink / raw) To: srinivas pandruvada Cc: Kuppuswamy Sathyanarayanan, Rafael J . Wysocki, linux-pm, linux-kernel On Tue, Feb 10, 2026 at 6:53 PM srinivas pandruvada <srinivas.pandruvada@linux.intel.com> wrote: > > On Mon, 2026-02-09 at 15:43 -0800, Kuppuswamy Sathyanarayanan wrote: > > This series fixes issues with RAPL PMU event access when using CPUs > > other than the package lead_cpu. > > > > The problem was discovered when turbostat reported zero power values > > when run on a non-lead CPU in the package. > > > > Investigation revealed two issues: > > > > 1. The RAPL MSR driver incorrectly validated that the current CPU > > must > > match the lead CPU of the package when reading from PMU context, > > even > > though package-scoped MSRs are readable from any CPU in the > > package. > > > > 2. The RAPL PMU cpumask only exposed one CPU per package (the > > lead_cpu) > > for both MSR and TPMI interfaces, forcing tools to use that > > specific > > CPU even though package-scoped registers are readable from any CPU > > in the package. > > > > The perf tool avoided issue #1 by checking the cpumask before opening > > events, but turbostat does not perform this validation. The > > restrictive > > cpumask in issue #2 was unnecessary since both MSR and TPMI > > interfaces > > support reads from any CPU in the package for package-scoped > > registers. > > > > These patches: > > - Remove the incorrect CPU validation check in PMU context > > - Expand the PMU cpumask to include all CPUs in each package for both > > MSR and TPMI RAPL interfaces > > - Rename 'atomic' parameter to 'pmu_ctx' for clarity > > > > After these changes, tools can successfully read RAPL events from any > > CPU in the package, matching the architectural capability of the > > hardware for both MSR and TPMI based RAPL implementations. > > > > Testing (PTL & GNR platform): > > - Verified turbostat --no-msr --show power works on all CPUs > > - Verified perf stat -e power/energy-pkg/ works on all CPUs > > - Confirmed /sys/bus/event_source/devices/power/cpumask shows all > > package CPUs instead of just lead_cpu > > - Tested on both MSR-based (PTL) and TPMI-based (GNR) RAPL system > > > > Kuppuswamy Sathyanarayanan (2): > > powercap: intel_rapl: Remove incorrect CPU check in PMU context > > powercap: intel_rapl: Expose all package CPUs in PMU cpumask > > > > Reviewed-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> Both patches applied as 7.0-rc material, thanks! ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-02-14 16:19 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-02-09 23:43 [PATCH v1 0/2] Fix RAPL PMU access from non-lead CPUs Kuppuswamy Sathyanarayanan 2026-02-09 23:43 ` [PATCH v1 1/2] powercap: intel_rapl: Remove incorrect CPU check in PMU context Kuppuswamy Sathyanarayanan 2026-02-14 16:19 ` Raag Jadav 2026-02-09 23:43 ` [PATCH v1 2/2] powercap: intel_rapl: Expose all package CPUs in PMU cpumask Kuppuswamy Sathyanarayanan 2026-02-10 17:53 ` [PATCH v1 0/2] Fix RAPL PMU access from non-lead CPUs srinivas pandruvada 2026-02-11 20:04 ` Rafael J. Wysocki
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox