All of lore.kernel.org
 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 v9 01/12] platform/x86/intel/{pmt,vsec}: Prevent unbind via sysfs
Date: Fri, 10 Jul 2026 13:24:58 -0700	[thread overview]
Message-ID: <alFVGpIUl2Fh0ZLG@agluck-desk3> (raw)
In-Reply-To: <alElbgUs0ntsmiKm@agluck-desk3>

On Fri, Jul 10, 2026 at 10:01:34AM -0700, Luck, Tony wrote:
> On Thu, Jul 09, 2026 at 02:12:58PM -0700, Luck, Tony wrote:
> > On Thu, Jul 09, 2026 at 01:48:12PM -0700, Reinette Chatre wrote:
> > > Hi Tony,
> > > 
> > > On 7/9/26 10:41 AM, Luck, Tony wrote:
> > > > On Wed, Jul 08, 2026 at 03:45:03PM -0700, Reinette Chatre wrote:
> > > >> Hi Tony,
> > > >>
> > > >> On 7/1/26 2:35 PM, Tony Luck wrote:
> ...
> > > 
> > > A simpler solution would be ideal. It is not clear to me that there would be
> > > a page fault though. I looked around at what other drivers do and it seems that
> > > readq() may return all 1s in this scenario? Consider for example, how
> > > IXGBE_FAILED_READ_REG, PCI_ERROR_RESPONSE (note the comments above its definition),
> > > and PCI_POSSIBLE_ERROR are used. Some drivers just straight compare against -1 like
> > > the "if (readl(dev->bar + NVME_REG_CSTS) == -1)" in nvme_pci_enable().
> > > There is also this related snippet in Documentation/PCI/pci.rst: "Most x86 platforms
> > > will allow MMIO reads to master abort (a.k.a. "Soft Fail") and return garbage
> > > (e.g. ~0)." Handling ~0 may be even simpler?
> > 
> > The return of all 1s happens in the case that the underlying h/w has gone,
> > so the PCIe request to read the data is aborted. That's not what happens
> > here. When Linux uses ioremap() to set up a virtual address to access an
> > MMIO range the virtual address is allocated from the same virtual space
> > that vmalloc() uses. When that range is iounmap()'d the page tables are
> > invalidated. So any subsequent access gets a page fault (confirmed by my test).
> > 
> > But ... I ran my patch past an AI review and it pointed out the flaw.  The old
> > virtual address may be reallocated by a subsequent ioremap() or vmalloc()
> > call, at which point AET would begin accessing whatever memory/device was
> > now mapped to the virtual address.
> 
> New scheme. Change intel_pmt_get_regions_by_feature() enumeration to
> pass the physical address of the MMIO region instead of the virtual
> address mapping created by intel_pmt_dev_register().
> 
> Then intel_aet.c can use ioremap() to create an independent virtual
> mapping to the AET register region in MMIO space.
> 
> Then it doesn't matter if some unbind or remove operation tears down
> the virtual mapping. Resctrl can keep accessing the MMIO registers.
> 
> The MMIO space is "on package", so can't be physically removed in a
> hot plug operation. The PCIe device could be disabled, but that would
> only result in the 0xfffffffffffffff return value when trying to read
> the registers.
> 
> There's a flaw in every approach. The problem in this one is if Linux
> reprograms the PCIe device BAR registers to move to a different physical
> address, resctrl would be left using mappings to a stale physical
> address. I don't know how to judge if this is a real problem on
> production servers.

Digging back at my earlier assertion about complexity of handling
unbind from the parent driver of pmt_telemetry, some experimentation
showed that when unbind happens at that level, cleanup includes calling
pmt_telem_remove().

So I plan to add a new exported function from the AET code:

	intel_aet_pmt_notify_remove();

The pmt_telemetry driver will call this to let AET know that all the
MMIO virtual pointers are stale. When this happens reading any of the
AET event files will return -EINVAL (and the user will see "unavailable").

Initial PoC code for this seems to work. I'll clean it up and drop the
patches that set .suppress_bind_attrs = true;

> > 
> > > 
> > > Reinette
> > 
> > -Tony
> 
> -Tony

-Tony

  reply	other threads:[~2026-07-10 20:25 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-01 21:35 [PATCH v9 00/12] Allow AET to use PMT as loadable module Tony Luck
2026-07-01 21:35 ` [PATCH v9 01/12] platform/x86/intel/{pmt,vsec}: Prevent unbind via sysfs Tony Luck
2026-07-08 22:45   ` Reinette Chatre
2026-07-09 17:41     ` Luck, Tony
2026-07-09 20:48       ` Reinette Chatre
2026-07-09 21:12         ` Luck, Tony
2026-07-10 17:01           ` Luck, Tony
2026-07-10 20:24             ` Luck, Tony [this message]
2026-07-01 21:35 ` [PATCH v9 02/12] fs/resctrl: Remove redundant calls to resctrl_arch_mon_capable() Tony Luck
2026-07-01 21:35 ` [PATCH v9 03/12] x86/resctrl: Honor rdt=perf option to force enable AET perf events Tony Luck
2026-07-08 22:46   ` Reinette Chatre
2026-07-10 20:29     ` Luck, Tony
2026-07-01 21:35 ` [PATCH v9 04/12] fs/resctrl: Add interface to disable a monitor event Tony Luck
2026-07-01 21:35 ` [PATCH v9 05/12] x86/resctrl: Drop global 'rdt_mon_capable' flag Tony Luck
2026-07-08 22:47   ` Reinette Chatre
2026-07-10 20:31     ` Luck, Tony
2026-07-01 21:35 ` [PATCH v9 06/12] arm,x86,fs/resctrl: Handle change in number of RMIDs on each mount Tony Luck
2026-07-08 22:50   ` Reinette Chatre
2026-07-10 20:51     ` Luck, Tony
2026-07-14 15:18       ` Reinette Chatre
2026-07-14 16:01         ` Luck, Tony
2026-07-14 16:45           ` Reinette Chatre
2026-07-14 17:50             ` Luck, Tony
2026-07-14 18:16               ` Reinette Chatre
2026-07-01 21:35 ` [PATCH v9 07/12] x86/resctrl: Add PMT registration API for AET enumeration callbacks Tony Luck
2026-07-08 22:51   ` Reinette Chatre
2026-07-10 20:54     ` Luck, Tony
2026-07-14 15:18       ` Reinette Chatre
2026-07-14 15:41         ` Luck, Tony
2026-07-01 21:35 ` [PATCH v9 08/12] platform/x86/intel/pmt: Register enumeration functions with resctrl Tony Luck
2026-07-01 21:35 ` [PATCH v9 09/12] arm,x86/resctrl: Resolve INTEL_PMT_TELEMETRY symbols at runtime Tony Luck
2026-07-08 22:52   ` Reinette Chatre
2026-07-10 20:59     ` Luck, Tony
2026-07-01 21:35 ` [PATCH v9 10/12] fs/resctrl: Call architecture hooks for every mount/unmount Tony Luck
2026-07-08 22:53   ` Reinette Chatre
2026-07-10 21:01     ` Luck, Tony
2026-07-01 21:35 ` [PATCH v9 11/12] x86/resctrl: Simplify Kconfig options for resctrl Tony Luck
2026-07-08 23:01   ` Reinette Chatre
2026-07-10 21:08     ` Luck, Tony
2026-07-01 21:35 ` [PATCH v9 12/12] Documentation/filesystems/resctrl: Document telemetry mount timing caveat Tony Luck

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=alFVGpIUl2Fh0ZLG@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.