All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Robin Murphy <robin.murphy@arm.com>
Cc: Dave Jiang <dave.jiang@intel.com>,
	linux-cxl@vger.kernel.org, linux-perf-users@vger.kernel.org,
	will@kernel.org, mark.rutland@arm.com, dave@stgolabs.net,
	sashiko-bot@kernel.org
Subject: Re: [PATCH v2 5/9] perf/cxl: Keep the overflow interrupt pinned to the managed CPU
Date: Thu, 30 Jul 2026 19:55:23 +0100	[thread overview]
Message-ID: <20260730195523.6cf9dd2b@jic23-huawei> (raw)
In-Reply-To: <778b651c-ab2e-41d6-a0d6-5da144989df7@arm.com>

On Thu, 30 Jul 2026 12:46:24 +0100
Robin Murphy <robin.murphy@arm.com> wrote:

> On 29/07/2026 3:55 pm, Dave Jiang wrote:
> > The PMU pins its overflow interrupt to info->on_cpu in the hotplug
> > online/offline callbacks, but requests it with only IRQF_SHARED |
> > IRQF_NO_THREAD. Without IRQF_NOBALANCING, irqbalance or a userspace
> > smp_affinity write can move the interrupt to another CPU. cxl_pmu_irq()
> > then runs cxl_pmu_read() there, doing local64_cmpxchg()/local64_add() on
> > hwc->prev_count and event->count concurrently with the managing CPU;
> > local64_t is only atomic against same-CPU access, so counts get
> > corrupted.
> > 
> > Add IRQF_NOBALANCING so the pinning done in the hotplug callbacks holds,
> > matching other uncore-style PMU drivers.
> > 
> > Fixes: 5d7107c72796 ("perf: CXL Performance Monitoring Unit driver")
> > Reported-by: sashiko-bot@kernel.org
> > Closes: https://sashiko.dev/#/patchset/20260715191454.459673-1-dave@stgolabs.net?part=1
> > Assisted-by: Claude:claude-opus-4-8
> > Signed-off-by: Dave Jiang <dave.jiang@intel.com>
> > ---
> >   drivers/perf/cxl_pmu.c | 3 ++-
> >   1 file changed, 2 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/perf/cxl_pmu.c b/drivers/perf/cxl_pmu.c
> > index d1e810601e36..8b89db8f4d68 100644
> > --- a/drivers/perf/cxl_pmu.c
> > +++ b/drivers/perf/cxl_pmu.c
> > @@ -888,7 +888,8 @@ static int cxl_pmu_probe(struct device *dev)
> >   	if (!irq_name)
> >   		return -ENOMEM;
> >   
> > -	rc = devm_request_irq(dev, irq, cxl_pmu_irq, IRQF_SHARED | IRQF_NO_THREAD,
> > +	rc = devm_request_irq(dev, irq, cxl_pmu_irq,
> > +			      IRQF_SHARED | IRQF_NO_THREAD | IRQF_NOBALANCING,  
> 
> Bah, sorry, now I see I misspoke just now on the other patch - PMUs 
> really _shouldn't_ permit shared IRQs, but this one does :(
> 
> Thus it's all well and good to prevent userspace changing affinity, but 
> it doesn't help _all_ that much if other drivers can still legitimately 
> change it behind our backs...

We do in theory know what drivers might do that (and today I don't think
any but this one do).  In practice though I think two instances of this
on same device could foul things up.

As per other suggestion, Dave would you mind just dropping shared support
for now?  Can revisit if anyone built that insane hardware.

J
> 
> Thanks,
> Robin.
> 
> >   			      irq_name, info);
> >   	if (rc)
> >   		return rc;  
> 


  reply	other threads:[~2026-07-30 18:55 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-29 14:55 [PATCH v2 0/9] perf/cxlpmu: Misc sashiko raised issues fixes Dave Jiang
2026-07-29 14:55 ` [PATCH v2 1/9] perf/cxl: Program the requested event group on configurable counters Dave Jiang
2026-07-29 15:06   ` sashiko-bot
2026-07-29 22:29   ` Jonathan Cameron
2026-07-30 15:50     ` Dave Jiang
2026-07-29 14:55 ` [PATCH v2 2/9] perf/cxl: Clear stale event fields before reprogramming a counter Dave Jiang
2026-07-29 15:08   ` sashiko-bot
2026-07-29 22:25   ` Jonathan Cameron
2026-07-30 15:45     ` Dave Jiang
2026-07-29 14:55 ` [PATCH v2 3/9] perf/cxl: Fix the counter overflow delta fixup Dave Jiang
2026-07-29 15:13   ` sashiko-bot
2026-07-29 22:21   ` Jonathan Cameron
2026-07-30 16:56     ` Dave Jiang
2026-07-30 17:19       ` Dave Jiang
2026-07-30 19:00       ` Jonathan Cameron
2026-07-29 14:55 ` [PATCH v2 4/9] perf/cxl: Accept an overflow interrupt on MSI message number 0 Dave Jiang
2026-07-29 19:28   ` Jonathan Cameron
2026-07-29 19:59   ` Davidlohr Bueso
2026-07-30 12:18   ` Robin Murphy
2026-07-30 17:57     ` Dave Jiang
2026-07-30 18:57     ` Jonathan Cameron
2026-07-30 21:32       ` Dave Jiang
2026-07-29 14:55 ` [PATCH v2 5/9] perf/cxl: Keep the overflow interrupt pinned to the managed CPU Dave Jiang
2026-07-29 15:23   ` sashiko-bot
2026-07-29 19:25   ` Jonathan Cameron
2026-07-29 20:27   ` Davidlohr Bueso
2026-07-30 11:46   ` Robin Murphy
2026-07-30 18:55     ` Jonathan Cameron [this message]
2026-07-30 21:34       ` Dave Jiang
2026-07-30 22:19     ` Dave Jiang
2026-07-29 14:55 ` [PATCH v2 6/9] perf/cxl: Unfreeze counters after handling an overflow interrupt Dave Jiang
2026-07-29 19:24   ` Jonathan Cameron
2026-07-30 12:04   ` Robin Murphy
2026-07-30 18:53     ` Jonathan Cameron
2026-07-30 23:00       ` Dave Jiang
2026-07-29 14:55 ` [PATCH v2 7/9] perf/cxl: Validate the hardware-reported counter width Dave Jiang
2026-07-29 15:11   ` sashiko-bot
2026-07-29 19:21   ` Jonathan Cameron
2026-07-29 14:55 ` [PATCH v2 8/9] perf/cxl: Don't use pmu.dev in IRQ and hotplug callbacks after unregister Dave Jiang
2026-07-29 15:34   ` sashiko-bot
2026-07-29 19:17   ` Jonathan Cameron
2026-07-30 11:38   ` Robin Murphy
2026-07-30 18:51     ` Jonathan Cameron
2026-07-29 14:55 ` [PATCH v2 9/9] perf/cxl: Avoid cpumask_of(-1) when no CPU is assigned Dave Jiang
2026-07-29 15:19   ` sashiko-bot
2026-07-29 19:14   ` Jonathan Cameron
2026-07-30  9:36     ` Robin Murphy

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=20260730195523.6cf9dd2b@jic23-huawei \
    --to=jic23@kernel.org \
    --cc=dave.jiang@intel.com \
    --cc=dave@stgolabs.net \
    --cc=linux-cxl@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=robin.murphy@arm.com \
    --cc=sashiko-bot@kernel.org \
    --cc=will@kernel.org \
    /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.