[PATCH v13 17/25] platform/x86/intel/pmt: Register enumeration functions with resctrl

From: Tony Luck

Date: Mon Sep 28 2026 - 18:21:25 EST


resctrl exports register/unregister functions that the pmt_telemetry
driver should use to allow resctrl to call the Application Energy
Telemetry (AET) enumeration functions when this driver is configured
as a module.

By default module probe functions are called asynchronously. Change the
probe type to request synchronous execution to ensure that all probes
are complete before supplying the enumeration function to resctrl.

Unregister enumeration before beginning tear down of auxiliary devices
so that resctrl cannot attempt enumeration in parallel with unload of
the pmt_telemetry module.

Suggested-by: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Signed-off-by: Tony Luck <tony.luck@xxxxxxxxx>
---
v13:
Dropped empty line in pmt_telem_init()
Rewrote commit message with accurate context.
---
drivers/platform/x86/intel/pmt/telemetry.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/drivers/platform/x86/intel/pmt/telemetry.c b/drivers/platform/x86/intel/pmt/telemetry.c
index 953f35b6daec..57eb2967a4d0 100644
--- a/drivers/platform/x86/intel/pmt/telemetry.c
+++ b/drivers/platform/x86/intel/pmt/telemetry.c
@@ -427,16 +427,29 @@ static struct auxiliary_driver pmt_telem_aux_driver = {
.id_table = pmt_telem_id_table,
.remove = pmt_telem_remove,
.probe = pmt_telem_probe,
+ .driver = {
+ .probe_type = PROBE_FORCE_SYNCHRONOUS,
+ },
};

static int __init pmt_telem_init(void)
{
- return auxiliary_driver_register(&pmt_telem_aux_driver);
+ int ret;
+
+ ret = auxiliary_driver_register(&pmt_telem_aux_driver);
+ if (ret)
+ return ret;
+
+ intel_aet_register_enumeration(THIS_MODULE, intel_pmt_get_regions_by_feature,
+ intel_pmt_put_feature_group);
+
+ return 0;
}
module_init(pmt_telem_init);

static void __exit pmt_telem_exit(void)
{
+ intel_aet_unregister_enumeration();
auxiliary_driver_unregister(&pmt_telem_aux_driver);
xa_destroy(&telem_array);
}
--
2.55.0