[PATCH v3 0/7] Allow AET to use PMT/TPMI as loadable modules

Tony Luck posted 7 patches 5 days, 13 hours ago
There is a newer version of this series
include/linux/resctrl.h                    |  12 ++-
arch/x86/kernel/cpu/resctrl/internal.h     |  10 +-
arch/x86/kernel/cpu/resctrl/core.c         |  16 +++-
arch/x86/kernel/cpu/resctrl/intel_aet.c    | 106 ++++++++++++++++++---
drivers/platform/x86/intel/pmt/telemetry.c |   4 +-
fs/resctrl/monitor.c                       |  12 +++
fs/resctrl/rdtgroup.c                      |  20 +++-
arch/x86/Kconfig                           |   2 +-
8 files changed, 155 insertions(+), 27 deletions(-)
[PATCH v3 0/7] Allow AET to use PMT/TPMI as loadable modules
Posted by Tony Luck 5 days, 13 hours ago
The resctrl subsystem is always built into the base kernel. Currently,
enumerating Application Event Tracing (AET) features requires functions
from INTEL_PMT_TELEMETRY and INTEL_TPMI. Because resctrl makes direct calls
to these functions, it enforces a strict dependency requiring both PMT and
TPMI to be built-in.

This is overly restrictive. Use the symbol_get() mechanism to allow resctrl
to resolve these symbols at runtime, whether they reside in the base kernel
or in loadable modules.

Update the exports for intel_pmt_get_regions_by_feature() and
intel_pmt_put_feature_group() to be accessible via symbol_get(). Replace
the direct calls with indirect calls using function pointers.

Add extra hooks from filesystem to architecture code so that every
mount/unmount can be tracked. AET now does a complete cleanup on
unmount and a full enumeration on each mount.

Finally, adjust the Kconfig dependencies to allow X86_CPU_RESCTRL_INTEL_AET
to be enabled even when INTEL_PMT_TELEMETRY and INTEL_TPMI are configured
as modules.

Signed-off-by: Tony Luck <tony.luck@intel.com>
AI-review-of-v2: https://sashiko.dev/#/patchset/20260325171738.12207-1-tony.luck%40intel.com

---
Changes since version 2:
Link: https://lore.kernel.org/all/20260325171738.12207-1-tony.luck@intel.com/

Refactor so that AET can completely cleanup on unmount. This fixes the
existing minor problem, that the pmt_feature_group structures allocated
by INTEL_PMT are never freed. But it solves the bigger issue introduced
in v2 of this patch that the hold on the INTEL_PMT module is never
released.

Tony Luck (7):
  x86/resctrl: Drop setting of event_group::force_off when insufficient
    RMIDs
  fs/resctrl: Add interface to disable a monitor event
  fs,x86/resctrl: Add architecture hooks for every mount/unmount
  platform/x86/intel/pmt: Export PMT enumeration functions as GPL
  x86/resctrl: Allow AET to use PMT/TPMI as loadable modules
  x86/resctrl: Delete intel_aet_exit()
  x86/resctrl: Downgrade dependency of AET on INTEL_PMT

 include/linux/resctrl.h                    |  12 ++-
 arch/x86/kernel/cpu/resctrl/internal.h     |  10 +-
 arch/x86/kernel/cpu/resctrl/core.c         |  16 +++-
 arch/x86/kernel/cpu/resctrl/intel_aet.c    | 106 ++++++++++++++++++---
 drivers/platform/x86/intel/pmt/telemetry.c |   4 +-
 fs/resctrl/monitor.c                       |  12 +++
 fs/resctrl/rdtgroup.c                      |  20 +++-
 arch/x86/Kconfig                           |   2 +-
 8 files changed, 155 insertions(+), 27 deletions(-)


base-commit: c369299895a591d96745d6492d4888259b004a9e
-- 
2.53.0