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