mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Luck, Tony" <tony.luck@intel.com>
To: Reinette Chatre <reinette.chatre@intel.com>
Cc: Fenghua Yu <fenghuay@nvidia.com>,
	Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>,
	Peter Newman <peternewman@google.com>,
	James Morse <james.morse@arm.com>,
	Babu Moger <babu.moger@amd.com>,
	"Drew Fustini" <dfustini@baylibre.com>,
	Dave Martin <Dave.Martin@arm.com>, Chen Yu <yu.c.chen@intel.com>,
	David E Box <david.e.box@intel.com>, <x86@kernel.org>,
	Christoph Hellwig <hch@infradead.org>,
	<linux-kernel@vger.kernel.org>, <patches@lists.linux.dev>
Subject: Re: [PATCH v7 10/14] platform/x86/intel/pmt: Register enumeration functions with resctrl
Date: Mon, 22 Jun 2026 16:00:29 -0700	[thread overview]
Message-ID: <ajm-jVzj7TUeJkY-@agluck-desk3> (raw)
In-Reply-To: <ddc91d49-c861-4737-98ed-9b5d2e583449@intel.com>

On Mon, Jun 22, 2026 at 08:46:31AM -0700, Reinette Chatre wrote:
> Hi Tony,
> 
> On 6/18/26 2:15 PM, Luck, Tony wrote:
> > On Mon, Jun 08, 2026 at 04:22:27PM -0700, Reinette Chatre wrote:
> >> Hi Tony,
> >>
> >> On 6/1/26 12:56 PM, Tony Luck wrote:
> >>> INTEL_PMT_TELEMETRY is a loadable module, but resctrl is built-in and cannot
> >>> call PMT functions directly.  Register the telemetry enumeration function
> >>> pointers at pmt_telemetry module init, and unregister them at module exit.
> >>
> >> To ensure intel_pmt_get_regions_by_feature() has access to complete data, could
> >> it be more accurate to register at the end of PMT's .probe() and similarly
> >> unregister during .remove()?
> > 
> > I agreed with this. But on further reflection I'm going to dissent.
> > 
> > There are multiple devices (at least one per socket). So .probe() is
> > called for each. Registering with resctrl at the end of .probe() sets
> 
> Thanks for highlighting this.
> 
> > up for a race with a mount of the resctrl file system:
> > 
> > modprobe				mount
> > .init()
> >  auxiliary_driver_register()
> >   .probe() for socket 0 device		rdt_get_tree()
> >     intel_aet_register_enumeration()	  resctrl_arch_pre_mount()
> >       mutex_lock(aet_register_lock)	    intel_aet_pre_mount()
> > 	get_feature = get;		      mutex_lock(aet_register_lock)
> > 	...					... blocks ...
> >       mutex_unlock(aet_register_lock)
> > 						... runs ...
> >    .probe() for socket 1 device			Does enumeration with socket 0 complete
> > 						but races with socket 1 .probe()
> 
> Could you please elaborate the details being the "race with socket 1"? Wouldn't
> moving registration to init() experience the same? That is, if registered during init() then
> at the time of resctrl mount socket 0's probe could be complete but not socket 1's? The
> move to .init() has additional scenario where resctrl mounts when neither socket's
> probe has completed.

See '*' paragraph below. At end of pmt_telemetry .init() all probes have run and completed.

> Are you referring to how user needs to remount resctrl to obtain all of AET that
> the doc patch refers to or is the race more serious?
>  
> > I may keep the unregister call in the .remove() because as soon as the first
> > device goes away, resctrl can't usefully run. So it seems a good idea to
> > handle that right away.
> 
> The "resctrl can't usefully run" is not clear to me since resctrl mount seems to be
> ok to let mount succeed without all devices probed (per above). So it is ok to mount
> resctrl with partial telemetry enumeration but once all is enumerated this will not
> be supported?

No. Mount shouldn't run unless all devices have been probed.

> > 
> > I will provide details on the reason for the asymmetric .init() vs. .remove()
> > in the commit comment (and in code).
> > 
> > Ok?
> 
> I seem to be missing a few details to understand this solution.

For AET telemetry to be useful all aggregators must be enumerated.
Running with some subset would only provide data for some subset of
the cores on a system.

So now I'm trending back to registering in module .init() after
all probes have run, and unregistering in .exit() before doing
anything else.

Some experimentation has shown that the asynchronous part enumeration
is just the intel_vsec driver kicking of auxilliary device probes.

 * Looking just at the pmt_telemetry .init() routine, the .probe()
 * calls for each device are run sequentially and synchronously. So
 * when .init() returns all of the AET enumeration is complete.

Today I dug into the problem that mount initiated automatically
by systemd from an entry in /etc/fstab occurs before pmt_telemetry
is loaded. I asked AI (Gemini) if there was a way to let systemd
know it must wait for enumeration to complete before invoking
mount(2). There are MANY options to do this. After cycling through
several that either didn't work, or seemed overly complex or fragile,
I've settled on this one. I can add to the resctrl.rst documentation.

It uses a systemd service to mount resctrl triggered by a udev rule on the
load of the pmt_telemetry module.

The udev rule:
$ cat /etc/udev/rules.d/99-rmid-telemetry.rules
SUBSYSTEM=="module", KERNEL=="intel_pmt", ACTION=="add", RUN+="/usr/bin/systemctl start mount-resctrl.service"

The systemd service descriptor:
$ cat /etc/systemd/system/mount-resctrl.service
[Unit]
Description=Mount resctrl pseudo-filesystem after Intel PMT loads
After=local-fs.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/mount -t resctrl resctrl /sys/fs/resctrl

[Install]
WantedBy=multi-user.target

> 
> Reinette

-Tony

  reply	other threads:[~2026-06-22 23:00 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-01 19:56 [PATCH v7 00/14] Allow AET to use PMT as loadable module Tony Luck
2026-06-01 19:56 ` [PATCH v7 01/14] fs/resctrl: Move functions to avoid forward references in subsequent fixes Tony Luck
2026-06-01 19:56 ` [PATCH v7 02/14] fs/resctrl: Free mon_data structures on rdt_get_tree() failure Tony Luck
2026-06-01 19:56 ` [PATCH v7 03/14] fs/resctrl: Fix use-after-free during unmount Tony Luck
2026-06-01 19:56 ` [PATCH v7 04/14] fs/resctrl: Fix deadlock for errors during mount Tony Luck
2026-06-01 19:56 ` [PATCH v7 05/14] x86/resctrl: Stop setting event_group::force_off on RMID shortage Tony Luck
2026-06-08 23:16   ` Reinette Chatre
2026-06-09 16:51     ` Luck, Tony
2026-06-09 23:02       ` Reinette Chatre
2026-06-10 20:01         ` Luck, Tony
2026-06-01 19:56 ` [PATCH v7 06/14] fs/resctrl: Add interface to disable a monitor event Tony Luck
2026-06-08 23:18   ` Reinette Chatre
2026-06-09 17:21     ` Luck, Tony
2026-06-09 23:02       ` Reinette Chatre
2026-06-10 20:56         ` Luck, Tony
2026-06-10 22:26           ` Reinette Chatre
2026-06-10 23:19             ` Luck, Tony
2026-06-11 21:22               ` Reinette Chatre
2026-06-01 19:56 ` [PATCH v7 07/14] x86/resctrl: Maintain a count of enabled monitor features Tony Luck
2026-06-08 23:18   ` Reinette Chatre
2026-06-09 18:46     ` Luck, Tony
2026-06-09 23:03       ` Reinette Chatre
2026-06-11 17:27         ` Luck, Tony
2026-06-01 19:56 ` [PATCH v7 08/14] fs,x86,mpam/resctrl: Handle change in number of RMIDs on each mount Tony Luck
2026-06-08 23:21   ` Reinette Chatre
2026-06-09 21:58     ` Luck, Tony
2026-06-09 23:35       ` Reinette Chatre
2026-06-11 17:40         ` Luck, Tony
2026-06-01 19:56 ` [PATCH v7 09/14] x86/resctrl: Add PMT registration API for AET enumeration callbacks Tony Luck
2026-06-08 23:21   ` Reinette Chatre
2026-06-01 19:56 ` [PATCH v7 10/14] platform/x86/intel/pmt: Register enumeration functions with resctrl Tony Luck
2026-06-08 23:22   ` Reinette Chatre
2026-06-09 22:11     ` Luck, Tony
2026-06-18 21:15     ` Luck, Tony
2026-06-22 15:46       ` Reinette Chatre
2026-06-22 23:00         ` Luck, Tony [this message]
2026-06-23 15:45           ` Reinette Chatre
2026-06-23 18:24             ` Luck, Tony
2026-06-01 19:56 ` [PATCH v7 11/14] mpam,x86/resctrl: Resolve INTEL_PMT_TELEMETRY symbols at runtime Tony Luck
2026-06-08 23:25   ` Reinette Chatre
2026-06-10  0:08     ` Luck, Tony
2026-06-10 15:27       ` Reinette Chatre
2026-06-10 15:49         ` Luck, Tony
2026-06-10 16:21           ` Reinette Chatre
2026-06-10 16:34             ` Luck, Tony
2026-06-10 16:46               ` Reinette Chatre
2026-06-10 17:24                 ` Luck, Tony
2026-06-10 17:58                   ` Reinette Chatre
2026-06-10 22:09                     ` Luck, Tony
2026-06-11 18:01                       ` Luck, Tony
2026-06-11 21:22                         ` Reinette Chatre
2026-06-11 22:27                           ` Luck, Tony
2026-06-12 18:04                             ` Luck, Tony
2026-06-01 19:56 ` [PATCH v7 12/14] fs/resctrl: Call architecture hooks for every mount/unmount Tony Luck
2026-06-08 23:26   ` Reinette Chatre
2026-06-10 16:16     ` Luck, Tony
2026-06-01 19:56 ` [PATCH v7 13/14] x86/resctrl: Simplify Kconfig options for resctrl Tony Luck
2026-06-01 19:56 ` [PATCH v7 14/14] Documentation/filesystems/resctrl: Add footnote for telemetry fstab mount caveat Tony Luck
2026-06-08 23:26   ` Reinette Chatre
2026-06-10 16:19     ` Luck, Tony

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ajm-jVzj7TUeJkY-@agluck-desk3 \
    --to=tony.luck@intel.com \
    --cc=Dave.Martin@arm.com \
    --cc=babu.moger@amd.com \
    --cc=david.e.box@intel.com \
    --cc=dfustini@baylibre.com \
    --cc=fenghuay@nvidia.com \
    --cc=hch@infradead.org \
    --cc=james.morse@arm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maciej.wieczor-retman@intel.com \
    --cc=patches@lists.linux.dev \
    --cc=peternewman@google.com \
    --cc=reinette.chatre@intel.com \
    --cc=x86@kernel.org \
    --cc=yu.c.chen@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome