From: Zhang Rui <rui.zhang@intel.com>
To: rafael.j.wysocki@intel.com, peterz@infradead.org
Cc: mingo@redhat.com, kan.liang@linux.intel.com,
linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org,
x86@kernel.org
Subject: [PATCH 0/5] intel_rapl & perf rapl: combine PMU support
Date: Wed, 31 Jan 2024 22:23:30 +0800 [thread overview]
Message-ID: <20240131142335.84218-1-rui.zhang@intel.com> (raw)
This patch series is made based on the patch series posted at
https://lore.kernel.org/all/20240131113713.74779-1-rui.zhang@intel.com/
Problem statement
-----------------
MSR RAPL powercap sysfs is done in drivers/powercap/intel_rapl_msr.c.
MSR RAPL PMU is done in arch/x86/events/rapl.c.
They maintain two separate CPU model lists, describing the same feature
available on the same set of hardware. This increases unnecessary
maintenance burden a lot.
Now we need to introduce TPMI RAPL PMU support, which again shares most
of the logic with MSR RAPL PMU.
Solution
--------
Introducing PMU support as part of RAPL framework and remove current MSR
RAPL PMU code.
The idea is that, if a RAPL Package device is registered to RAPL
framework, and is ready for energy reporting and control via powercap
sysfs, then it is also ready for PMU.
So introducing PMU support in RAPL framework that works for all
registered RAPL Package devices. With this, we can remove current MSR
RAPL PMU completely.
Given that MSR RAPL and TPMI RAPL driver won't funtion on the same
platform, the new RAPL PMU can be fully compatible with current MSR RAPL
PMU, including using the same PMU name and events name/id/unit/scale.
For example, on platforms use either MSR or TPMI, use the same command
perf stat -e power/energy-pkg/ -e power/energy-ram/ -e power/energy-cores/ FOO
to get the energy consumption when the events are in "perf list" output.
Notes
-----
There are indeed some functional changes introduced, due to the
divergency between the two CPU model lists. This includes,
1. Fix BROADWELL_D in intel_rapl driver to use fixed Dram domain energy
unit.
2. Enable PMU for some Intel platforms, which were missing in
arch/x86/events/rapl.c. This includes
ICELAKE_NNPI
ROCKETLAKE
LUNARLAKE_M
LAKEFIELD
ATOM_SILVERMONT
ATOM_SILVERMONT_MID
ATOM_AIRMONT
ATOM_AIRMONT_MID
ATOM_TREMONT
ATOM_TREMONT_D
ATOM_TREMONT_L
3. Change the logic for enumerating AMD/HYGON platforms
Previously, it was
X86_MATCH_FEATURE(X86_FEATURE_RAPL, &model_amd_hygon)
And now it is
X86_MATCH_VENDOR_FAM(AMD, 0x17, &rapl_defaults_amd)
X86_MATCH_VENDOR_FAM(AMD, 0x19, &rapl_defaults_amd)
X86_MATCH_VENDOR_FAM(HYGON, 0x18, &rapl_defaults_amd)
Any comments/concerns are welcome.
thanks,
rui
----------------------------------------------------------------
Zhang Rui (5):
powercap: intel_rapl: Sort header files
powercap: intel_rapl: Add PMU support
powercap: intel_rapl_tpmi: Enable PMU support for TPMI RAPL
powercap: intel_rapl: Fix BROADWELL_D
powercap: intel_rapl_msr: Enable PMU support for MSR RAPL
arch/x86/events/Kconfig | 8 -
arch/x86/events/Makefile | 1 -
arch/x86/events/rapl.c | 871 -----------------------------------
drivers/powercap/intel_rapl_common.c | 562 +++++++++++++++++++++-
drivers/powercap/intel_rapl_msr.c | 2 +
drivers/powercap/intel_rapl_tpmi.c | 1 +
include/linux/intel_rapl.h | 17 +
7 files changed, 569 insertions(+), 893 deletions(-)
delete mode 100644 arch/x86/events/rapl.c
next reply other threads:[~2024-01-31 14:23 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-31 14:23 Zhang Rui [this message]
2024-01-31 14:23 ` [PATCH 1/5] powercap: intel_rapl: Sort header files Zhang Rui
2024-01-31 14:23 ` [PATCH 2/5] powercap: intel_rapl: Add PMU support Zhang Rui
2024-01-31 14:23 ` [PATCH 3/5] powercap: intel_rapl_tpmi: Enable PMU support for TPMI RAPL Zhang Rui
2024-01-31 14:23 ` [PATCH 4/5] powercap: intel_rapl: Fix BROADWELL_D Dram energy unit Zhang Rui
2024-01-31 14:23 ` [PATCH 5/5] powercap: intel_rapl_msr: Enable PMU support for MSR RAPL Zhang Rui
2024-01-31 14:40 ` [PATCH 0/5] intel_rapl & perf rapl: combine PMU support Rafael J. Wysocki
2024-02-01 5:35 ` Zhang, Rui
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=20240131142335.84218-1-rui.zhang@intel.com \
--to=rui.zhang@intel.com \
--cc=kan.liang@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=rafael.j.wysocki@intel.com \
--cc=x86@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox