Re: [PATCH v9 07/12] x86/resctrl: Add PMT registration API for AET enumeration callbacks
From: Luck, Tony
Date: Tue Jul 14 2026 - 11:41:51 EST
On Tue, Jul 14, 2026 at 08:18:47AM -0700, Reinette Chatre wrote:
> Hi Tony,
>
> On 7/10/26 1:54 PM, Luck, Tony wrote:
> > On Wed, Jul 08, 2026 at 03:51:22PM -0700, Reinette Chatre wrote:
> >> On 7/1/26 2:35 PM, Tony Luck wrote:
> >>> resctrl is always built-in; INTEL_PMT_TELEMETRY may be a module. Add, and
> >>> export, register/unregister functions so the PMT module can supply/clear
> >>> enumeration callback functions when loaded/unloaded.
> >>>
> >>> Suggested-by: Christoph Hellwig <hch@xxxxxxxxxxxxx>
> >>> Signed-off-by: Tony Luck <tony.luck@xxxxxxxxx>
> >>> ---
> >>> arch/x86/include/asm/resctrl.h | 22 ++++++++++++++++
> >>> arch/x86/kernel/cpu/resctrl/intel_aet.c | 34 +++++++++++++++++++++++++
> >>> 2 files changed, 56 insertions(+)
> >>>
> >>> diff --git a/arch/x86/include/asm/resctrl.h b/arch/x86/include/asm/resctrl.h
> >>> index a9f481b7a8ed..48ad55bcda66 100644
> >>> --- a/arch/x86/include/asm/resctrl.h
> >>> +++ b/arch/x86/include/asm/resctrl.h
> >>> @@ -4,6 +4,8 @@
> >>>
> >>> #ifdef CONFIG_X86_CPU_RESCTRL
> >>>
> >>> +#include <linux/intel_pmt_features.h>
> >>> +#include <linux/intel_vsec.h>
> >>> #include <linux/jump_label.h>
> >>> #include <linux/percpu.h>
> >>> #include <linux/resctrl_types.h>
> >>> @@ -189,11 +191,31 @@ static inline void resctrl_arch_mon_ctx_free(struct rdt_resource *r,
> >>>
> >>> void resctrl_cpu_detect(struct cpuinfo_x86 *c);
> >>>
> >>> +#ifdef CONFIG_X86_CPU_RESCTRL_INTEL_AET
> >>> +void intel_aet_register_enumeration(struct module *module,
> >>> + struct pmt_feature_group *(*get)(enum pmt_feature_id id),
> >>> + void (*put)(struct pmt_feature_group *p));
> >>> +void intel_aet_unregister_enumeration(void);
> >>> #else
> >>> +static inline void intel_aet_register_enumeration(struct module *module,
> >>> + struct pmt_feature_group *(*get)(enum pmt_feature_id id),
> >>> + void (*put)(struct pmt_feature_group *p)) { }
> >>> +static inline void intel_aet_unregister_enumeration(void) { }
> >>> +#endif /* CONFIG_X86_CPU_RESCTRL_INTEL_AET */
> >>> +
> >>> +#else
> >>> +
> >>> +#include <linux/intel_pmt_features.h>
> >>> +#include <linux/intel_vsec.h>
> >>
> >> Are we sure we want to include these in arch/x86/kernel/process_32.c and
> >> arch/x86/kernel/process_64.c when resctrl is not built in?
> >
> > I'll look at this some more. Maybe this code needs some X86_64 checks?
> >
> Some forward declarations for the needed parameters may be simplest. Another
> alternative may be for include/linux/resctrl.h to get a section for definitions
> for when resctrl is not built in?
I'm trying out the option to move these declarations to <linux/intel_vsec.h>
where all the structures needed are defined. This header seems like a
logical link between intel_aet.c (which defines the functions) and
drivers/platform/x86/intel/pmt/telemetry.c which calls them. Both C
files already include this header.
>
> Reinette
-Tony