[PATCH v8 00/16] Allow AET to use PMT as loadable module

Tony Luck posted 16 patches 23 hours ago
Documentation/filesystems/resctrl.rst      |   7 +-
include/linux/resctrl.h                    |  47 ++-
arch/x86/include/asm/resctrl.h             |  21 +-
arch/x86/kernel/cpu/resctrl/internal.h     |  24 +-
arch/x86/kernel/cpu/resctrl/core.c         |  69 ++-
arch/x86/kernel/cpu/resctrl/intel_aet.c    |  91 +++-
arch/x86/kernel/cpu/resctrl/monitor.c      |   6 -
drivers/platform/x86/intel/pmt/telemetry.c |   9 +
drivers/resctrl/mpam_resctrl.c             |   9 +
fs/resctrl/monitor.c                       |  93 +++--
fs/resctrl/rdtgroup.c                      | 464 ++++++++++++---------
arch/x86/Kconfig                           |  15 +-
arch/x86/kernel/cpu/resctrl/Makefile       |   2 +-
13 files changed, 565 insertions(+), 292 deletions(-)
[PATCH v8 00/16] Allow AET to use PMT as loadable module
Posted by Tony Luck 23 hours ago
Requiring INTEL_PMT_TELEMETRY=y to enable AET is a functional workaround
to enable enumeration of Application Energy Telemetry (AET) events, but
unacceptable to many users. It results in increased configration complexity,
increased kernel memory footprint and inability to patch problems by unloading
a module and loading an updated version.

Add a registration function to the AET code that can be used by
INTEL_PMT_TELEMETRY to provide the enumeration functions.

INTEL_PMT_TELEMETRY can be loaded/unloaded independently of
resctrl file system mount/unmount. Perform enumeration on
every mount and cleanup on every unmount.

Signed-off-by: Tony Luck <tony.luck@intel.com>

---

Changes since v7:
Link: https://lore.kernel.org/all/20260601195632.15876-1-tony.luck@intel.com/

Rebased to v7.1

Patches 1-4 updated from latest (v5) series from Reinette:
Link: https://lore.kernel.org/all/cover.1781029125.git.reinette.chatre@intel.co
Those four patches had their own review and (hopefully) will be included
in TIP tree during this v7.2-rc* cycle.

Patch 5 is new to resolve the issue that the PMT driver could be unbound
from the pmt_telemtry module which would unmap all the MMIO register
space. Discussed offline with David Box, but needs his Ack/Review tag
here.

Patches 6-14 and 16 all have updates based on review comments see the
individual patches for change log after the "---"

Reinette Chatre (1):
  fs/resctrl: Fix deadlock on errors during mount

Tony Luck (15):
  fs/resctrl: Move functions to avoid forward references in subsequent
    fixes
  fs/resctrl: Free mon_data structures on rdt_get_tree() failure
  fs/resctrl: Fix use-after-free during unmount
  platform/x86/intel/pmt: Prevent unbind of PMT telemetry driver
  fs/resctrl: Remove redundant calls to resctrl_arch_mon_capable()
  x86/resctrl: Honor rdt=perf option to force enable AET perf events
  fs/resctrl: Add interface to disable a monitor event
  x86/resctrl: Drop global 'rdt_mon_capable' flag
  arm,x86,fs/resctrl: Handle change in number of RMIDs on each mount
  x86/resctrl: Add PMT registration API for AET enumeration callbacks
  platform/x86/intel/pmt: Register enumeration functions with resctrl
  arm,x86/resctrl: Resolve INTEL_PMT_TELEMETRY symbols at runtime
  fs/resctrl: Call architecture hooks for every mount/unmount
  x86/resctrl: Simplify Kconfig options for resctrl
  Documentation/filesystems/resctrl: Add footnote for telemetry fstab
    mount caveat

 Documentation/filesystems/resctrl.rst      |   7 +-
 include/linux/resctrl.h                    |  47 ++-
 arch/x86/include/asm/resctrl.h             |  21 +-
 arch/x86/kernel/cpu/resctrl/internal.h     |  24 +-
 arch/x86/kernel/cpu/resctrl/core.c         |  69 ++-
 arch/x86/kernel/cpu/resctrl/intel_aet.c    |  91 +++-
 arch/x86/kernel/cpu/resctrl/monitor.c      |   6 -
 drivers/platform/x86/intel/pmt/telemetry.c |   9 +
 drivers/resctrl/mpam_resctrl.c             |   9 +
 fs/resctrl/monitor.c                       |  93 +++--
 fs/resctrl/rdtgroup.c                      | 464 ++++++++++++---------
 arch/x86/Kconfig                           |  15 +-
 arch/x86/kernel/cpu/resctrl/Makefile       |   2 +-
 13 files changed, 565 insertions(+), 292 deletions(-)


base-commit: 8cd9520d35a6c38db6567e97dd93b1f11f185dc6
-- 
2.54.0
Re: [PATCH v8 00/16] Allow AET to use PMT as loadable module
Posted by Luck, Tony 28 minutes ago
On Mon, Jun 15, 2026 at 11:24:41AM -0700, Tony Luck wrote:
> Requiring INTEL_PMT_TELEMETRY=y to enable AET is a functional workaround
> to enable enumeration of Application Energy Telemetry (AET) events, but
> unacceptable to many users. It results in increased configration complexity,
> increased kernel memory footprint and inability to patch problems by unloading
> a module and loading an updated version.
> 
> Add a registration function to the AET code that can be used by
> INTEL_PMT_TELEMETRY to provide the enumeration functions.
> 
> INTEL_PMT_TELEMETRY can be loaded/unloaded independently of
> resctrl file system mount/unmount. Perform enumeration on
> every mount and cleanup on every unmount.

Sashiko complained about some patches.
https://sashiko.dev/#/patchset/20260615182457.14725-1-tony.luck%40intel.com


Patch 4: Complains about hotplug and worker threads. Dealt with by other
patches in Reinette's series that I didn't include.

Patch 5: Question on whether unbinding the parent of the pmt_telemetry driver
(intel_vsec) will cause problems. I'll check this.

Patch 6: Repeat of patch 4 worker thread issue, handled by Reinette.

Patch 8: Race between unmount and subsequent mount relating to disabling
events. Will investigate.

Patch 9: Same unbind intel_vsec issue as reported for patch 5

Patch 10: Same worker thread issue reported for patch 4, 6

Patch 12: Sashiko concerned about multiple telemetry devices (which there
are). But for the resctrl use case it doesn't matter if some subset are offline,
or broken. Resctrl needs all of the, to work. I think I just need commit and
code comments to document that it is okay for first .remove() to unregister etc.

Patch 13: My atomic operations in resctrl_arch_pre_mount() and
resctrl_arch_unmount() are garbage (sashiko was more polite, just pointing
out the obvious race). I'll drop these from next version and handle the
nested mount case in intel_aet_pre_mount().

Repeat of patch 12 complaint about single PMT devices being removed.

Patch 14: Repeat of patch 13 race condition complaint.

Patch 15: Repeat of patch 12 complaint about handling mutliple telemetry devices.

Complaint they stubs for intel_aet_try_module_get() and intel_aet_module_put()
don't handle out-of-tree telemetry enumeration modules - Linux in general
doesn't care about out
of tree code.

-Tony