linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Keith Busch <keith.busch@intel.com>
To: Sinan Kaya <okaya@codeaurora.org>
Cc: Linux PCI <linux-pci@vger.kernel.org>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Oza Pawandeep <poza@codeaurora.org>
Subject: Re: [PATCH 1/7] PCI/DPC: Leave interrupts enabled while handling event
Date: Wed, 20 Jun 2018 15:54:42 -0600	[thread overview]
Message-ID: <20180620215442.GA25124@localhost.localdomain> (raw)
In-Reply-To: <801facdf-dbdf-12c1-c470-a97db065b232@codeaurora.org>

On Wed, Jun 20, 2018 at 05:42:51PM -0400, Sinan Kaya wrote:
> On 6/20/2018 5:38 PM, Keith Busch wrote:
> > Now that the DPC driver clears the interrupt status before exiting the
> > irq handler, we don't need to abuse the DPC control register to know if
> > a shared interrupt is for a new DPC event: a DPC port can not trigger
> > a second interrupt until the host clears the trigger status later in the
> > work queue handler.
> > 
> > Signed-off-by: Keith Busch <keith.busch@intel.com>
> 
> Isn't this a problem with legacy interrupts on the root ports with no MSI?
> (can be tested with pci=nomsi)
> 
> DPC interrupt handler gets called for all service driver interrupts like AER, PME and
> HP.

According to PCIe spec, the DPC level-triggered interrupt requires
these:

  The Interrupt Disable bit in Comand register is 0b
  The value of DPC Interrupt Enable bit is 1b
  The value of the DPC Interrupt Status bit is 1b

We now clear DPC Interrupt Status bit prior to exiting the IRQ handler,
so that should satisfy clearing INTx messages, making the DPC Interrupt
Enable control toggling redundant. We weren't doing that before, so this
would have been a problem back then.

If a shared interrupt occurs for another service (say, AER) before DPC's
bottom half handler runs, the DPC Interrupt Status won't be set, so the
DPC driver will return IRQ_NONE.

  reply	other threads:[~2018-06-20 21:51 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-20 21:38 [PATCH 1/7] PCI/DPC: Leave interrupts enabled while handling event Keith Busch
2018-06-20 21:38 ` [PATCH 2/7] PCI/DPC: Defer event handling to work queue Keith Busch
2018-06-21  7:27   ` Christoph Hellwig
2018-06-21  7:28     ` Christoph Hellwig
2018-06-21 13:58       ` Keith Busch
2018-06-20 21:38 ` [PATCH 3/7] PCI/DPC: Remove rp_pio_status from dpc struct Keith Busch
2018-06-20 21:38 ` [PATCH 4/7] PCI/AER: API for obtaining AER information Keith Busch
2018-06-20 21:38 ` [PATCH 5/7] PCI/DPC: Print AER status in DPC event handling Keith Busch
2018-06-21  9:16   ` poza
2018-06-21 14:05     ` Keith Busch
2018-06-22  5:25       ` poza
2018-06-22 10:11       ` poza
2018-06-22 14:10         ` Keith Busch
2018-06-20 21:38 ` [PATCH 6/7] PCI/DPC: Use threaded IRQ for bottom half handling Keith Busch
2018-06-21  7:29   ` Christoph Hellwig
2018-06-20 21:38 ` [PATCH 7/7] PCI/DPC: Remove indirection waiting for inactive link Keith Busch
2018-06-20 21:42 ` [PATCH 1/7] PCI/DPC: Leave interrupts enabled while handling event Sinan Kaya
2018-06-20 21:54   ` Keith Busch [this message]
2018-06-20 21:59     ` Sinan Kaya
2018-06-22  5:26 ` poza
2018-07-16 22:07 ` Bjorn Helgaas

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=20180620215442.GA25124@localhost.localdomain \
    --to=keith.busch@intel.com \
    --cc=bhelgaas@google.com \
    --cc=linux-pci@vger.kernel.org \
    --cc=okaya@codeaurora.org \
    --cc=poza@codeaurora.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).