All of lore.kernel.org
 help / color / mirror / Atom feed
From: Shaikh Kamaluddin <shaikhkamal2012@gmail.com>
To: Jonathan Cameron <jic23@kernel.org>
Cc: Davidlohr Bueso <dave@stgolabs.net>,
	Dave Jiang <dave.jiang@intel.com>,
	Alison Schofield <alison.schofield@intel.com>,
	Vishal Verma <vishal.l.verma@intel.com>,
	Dan Williams <djbw@kernel.org>, Ira Weiny <iweiny@kernel.org>,
	Li Ming <ming.li@zohomail.com>,
	linux-cxl@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] cxl/events: Return IRQ_NONE when no event is pending
Date: Wed, 9 Sep 2026 21:43:13 +0530	[thread overview]
Message-ID: <aqGFmaOMKMdInTWN@acer-nitro-anv15-41> (raw)
In-Reply-To: <20260907194824.615e47ff@jic23-huawei>

On Mon, Sep 07, 2026 at 07:48:24PM +0100, Jonathan Cameron wrote:
> On Sun,  6 Sep 2026 21:27:05 +0530
> Shaikh Kamaluddin <shaikhkamal2012@gmail.com> wrote:
> 
> > CXL event interrupts may share an MSI/MSI-X vector with other event
> > logs or device features. Consequently, cxl_event_thread() is registered
> > with IRQF_SHARED and must determine whether an interrupt belongs to the
> > event-log facility.
> > 
> > The handler masks the Device Event Status register to the event logs
> > supported by the driver. However, when no supported status bit is set,
> > it exits the processing loop and still returns IRQ_HANDLED.
> > 
> > Track whether at least one supported event status bit was observed.
> > Return IRQ_NONE when there was no event to service, while continuing to
> > return IRQ_HANDLED after processing one or more event logs.
> 
> What is the practical result of this change?  
> I think it will only affect the spurious interrupt detection so
> to me it looks like a cleanup rather than a fix.  Is there
> any path by which we actually lose interrupts as a result of this?
>
Hi Jonathan,
No interrupts are lost. I agree that it only affects spurious
interrupt detection.

When note_interrupt() receives IRQ_WAKE_THREAD, it sets
SPURIOUS_DEFERRED and checks on the next interrupt whether
desc->threads_handled changed. Currently, cxl_event_thread() returns
IRQ_HANDLED even for zero event status, incrementing that counter and
making an unrelated interrupt appear handled.

Returning IRQ_NONE for zero status leaves the counter unchanged. Another
handler sharing the vector can still claim the interrupt; otherwise,
note_interrupt() can account it as unhandled. Normal CXL event handling
is unchanged, so I agree this should be presented as a cleanup without a Fixes tag.

> > 
> > Fixes: a49aa8141b65 ("cxl/mem: Wire up event interrupts")
> > 
> 
> No blank lines in tag blocks.  There are a number of tools that rely
> on there not being any and as such there are also scripts that run
> on various upstream trees that will send us annoying emails if this
> blank line is still here!  I'm not sure why this mistake in patch
> formatting is so common as there are plenty of docs without the
> blank lines!
>

Sorry It was my mistake

> > Signed-off-by: Shaikh Kamaluddin <shaikhkamal2012@gmail.com>
> 
> A suggestion for an alternative implementation below.
> 
> > ---
> >  drivers/cxl/pci.c | 5 ++++-
> >  1 file changed, 4 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/cxl/pci.c b/drivers/cxl/pci.c
> > index c7c91e8dc51d..8b560cae91f2 100644
> > --- a/drivers/cxl/pci.c
> > +++ b/drivers/cxl/pci.c
> > @@ -515,6 +515,7 @@ static irqreturn_t cxl_event_thread(int irq, void *id)
> >  	struct cxl_dev_id *dev_id = id;
> >  	struct cxl_dev_state *cxlds = dev_id->cxlds;
> >  	struct cxl_memdev_state *mds = to_cxl_memdev_state(cxlds);
> > +	bool handled = false;
> >  	u32 status;
> >  
> >  	do {
> > @@ -527,11 +528,13 @@ static irqreturn_t cxl_event_thread(int irq, void *id)
> >  		status &= CXLDEV_EVENT_STATUS_ALL;
> >  		if (!status)
> 
> 			return IRQ_NONE;
> 
> And don't need the other changes.
> 
> >  			break;
> > +
> > +		handled = true;
> >  		cxl_mem_get_event_records(mds, status);
> >  		cond_resched();
> >  	} while (status);
> >  
> > -	return IRQ_HANDLED;
> > +	return handled ? IRQ_HANDLED : IRQ_NONE;
> >  }
> >  
> >  static int cxl_event_req_irq(struct cxl_dev_state *cxlds, u8 setting)
> > 
> > base-commit: 7098e9cd98a05c0c5de2fae0c2465f9d966fdd07
> > prerequisite-patch-id: 92e40cd60a697020faac475dcc77ba63b33434ea
> > prerequisite-patch-id: 10027ad5d9aed85806047f807b3a76273b6c4a77
> 

  parent reply	other threads:[~2026-09-09 16:13 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-06 15:57 [PATCH] cxl/events: Return IRQ_NONE when no event is pending Shaikh Kamaluddin
2026-09-06 16:09 ` sashiko-bot
2026-09-07 18:44   ` Jonathan Cameron
2026-09-07 18:48 ` Jonathan Cameron
2026-09-09  2:08   ` Li Ming
2026-09-09 19:11     ` Jonathan Cameron
2026-09-09 16:13   ` Shaikh Kamaluddin [this message]
2026-09-08 18:22 ` Anisa Su
2026-09-09 16:55   ` Shaikh Kamaluddin
2026-09-09 18:43     ` Anisa Su
2026-09-10 16:22       ` Shaikh Kamaluddin

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=aqGFmaOMKMdInTWN@acer-nitro-anv15-41 \
    --to=shaikhkamal2012@gmail.com \
    --cc=alison.schofield@intel.com \
    --cc=dave.jiang@intel.com \
    --cc=dave@stgolabs.net \
    --cc=djbw@kernel.org \
    --cc=iweiny@kernel.org \
    --cc=jic23@kernel.org \
    --cc=linux-cxl@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ming.li@zohomail.com \
    --cc=vishal.l.verma@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.