From: Scott Wood <scottwood@freescale.com>
To: Shengzhou Liu <Shengzhou.Liu@freescale.com>
Cc: <bhelgaas@google.com>, <linux-pci@vger.kernel.org>,
<linuxppc-dev@lists.ozlabs.org>
Subject: Re: [PATCH 1/2 v2] PCI: Add PCI_DEV_FLAGS_USE_NON_MSI_INTX_IRQ to enable non MSI/INTx interrupt
Date: Mon, 16 Jul 2012 10:47:28 -0500 [thread overview]
Message-ID: <50043790.6090605@freescale.com> (raw)
In-Reply-To: <1342409487-28256-1-git-send-email-Shengzhou.Liu@freescale.com>
On 07/15/2012 10:31 PM, Shengzhou Liu wrote:
> On some platforms, in RC mode, root port has neither MSI/MSI-X nor INTx
> interrupt generated, which are available only in EP mode on those platform.
> In this case, we try to use other interrupt for port service driver to have
> AER, Hot-plug, etc, services to work.
>
> Signed-off-by: Shengzhou Liu <Shengzhou.Liu@freescale.com>
> ---
> v2: separated platform-specific part to arch/powerpc/sysdev.
>
> drivers/pci/pcie/portdrv_core.c | 10 ++++++++--
> drivers/pci/quirks.c | 9 +++++++++
> include/linux/pci.h | 5 +++++
> 3 files changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/pci/pcie/portdrv_core.c b/drivers/pci/pcie/portdrv_core.c
> index 75915b3..837ad15 100644
> --- a/drivers/pci/pcie/portdrv_core.c
> +++ b/drivers/pci/pcie/portdrv_core.c
> @@ -212,8 +212,14 @@ static int init_service_irqs(struct pci_dev *dev, int *irqs, int mask)
> if (!pcie_port_enable_msix(dev, irqs, mask))
> return 0;
>
> - /* We're not going to use MSI-X, so try MSI and fall back to INTx */
> - if (!pci_enable_msi(dev) || dev->pin)
> + /*
> + * We're not going to use MSI-X, so try MSI and fall back to INTx.
> + * Eventually, if neither MSI/MSI-X nor INTx available, try other
> + * interrupt. (On some platforms, root port doesn't support generating
> + * MSI/MSI-X/INTx in RC mode)
> + */
> + if (!pci_enable_msi(dev) || dev->pin || ((dev->dev_flags &
> + PCI_DEV_FLAGS_USE_NON_MSI_INTX_IRQ) && dev->irq))
> irq = dev->irq;
I didn't see a response on the question about what would happen if we
did this unconditionally (i.e. just s/dev->pin/dev->irq/ in the original
code). We should avoid introducing flags like this unless there's a
good reason.
Maybe submit a patch that does it unconditionally, and see if that draws
a complaint.
-Scott
WARNING: multiple messages have this Message-ID (diff)
From: Scott Wood <scottwood@freescale.com>
To: Shengzhou Liu <Shengzhou.Liu@freescale.com>
Cc: bhelgaas@google.com, linux-pci@vger.kernel.org,
linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH 1/2 v2] PCI: Add PCI_DEV_FLAGS_USE_NON_MSI_INTX_IRQ to enable non MSI/INTx interrupt
Date: Mon, 16 Jul 2012 10:47:28 -0500 [thread overview]
Message-ID: <50043790.6090605@freescale.com> (raw)
In-Reply-To: <1342409487-28256-1-git-send-email-Shengzhou.Liu@freescale.com>
On 07/15/2012 10:31 PM, Shengzhou Liu wrote:
> On some platforms, in RC mode, root port has neither MSI/MSI-X nor INTx
> interrupt generated, which are available only in EP mode on those platform.
> In this case, we try to use other interrupt for port service driver to have
> AER, Hot-plug, etc, services to work.
>
> Signed-off-by: Shengzhou Liu <Shengzhou.Liu@freescale.com>
> ---
> v2: separated platform-specific part to arch/powerpc/sysdev.
>
> drivers/pci/pcie/portdrv_core.c | 10 ++++++++--
> drivers/pci/quirks.c | 9 +++++++++
> include/linux/pci.h | 5 +++++
> 3 files changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/pci/pcie/portdrv_core.c b/drivers/pci/pcie/portdrv_core.c
> index 75915b3..837ad15 100644
> --- a/drivers/pci/pcie/portdrv_core.c
> +++ b/drivers/pci/pcie/portdrv_core.c
> @@ -212,8 +212,14 @@ static int init_service_irqs(struct pci_dev *dev, int *irqs, int mask)
> if (!pcie_port_enable_msix(dev, irqs, mask))
> return 0;
>
> - /* We're not going to use MSI-X, so try MSI and fall back to INTx */
> - if (!pci_enable_msi(dev) || dev->pin)
> + /*
> + * We're not going to use MSI-X, so try MSI and fall back to INTx.
> + * Eventually, if neither MSI/MSI-X nor INTx available, try other
> + * interrupt. (On some platforms, root port doesn't support generating
> + * MSI/MSI-X/INTx in RC mode)
> + */
> + if (!pci_enable_msi(dev) || dev->pin || ((dev->dev_flags &
> + PCI_DEV_FLAGS_USE_NON_MSI_INTX_IRQ) && dev->irq))
> irq = dev->irq;
I didn't see a response on the question about what would happen if we
did this unconditionally (i.e. just s/dev->pin/dev->irq/ in the original
code). We should avoid introducing flags like this unless there's a
good reason.
Maybe submit a patch that does it unconditionally, and see if that draws
a complaint.
-Scott
next prev parent reply other threads:[~2012-07-16 15:47 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-16 3:31 [PATCH 1/2 v2] PCI: Add PCI_DEV_FLAGS_USE_NON_MSI_INTX_IRQ to enable non MSI/INTx interrupt Shengzhou Liu
2012-07-16 3:31 ` Shengzhou Liu
2012-07-16 3:31 ` [PATCH 2/2 v2] powerpc/fsl: PCI: add quirk_enable_non_msi_intx_interrupt Shengzhou Liu
2012-07-16 3:31 ` Shengzhou Liu
2012-07-16 15:47 ` Scott Wood [this message]
2012-07-16 15:47 ` [PATCH 1/2 v2] PCI: Add PCI_DEV_FLAGS_USE_NON_MSI_INTX_IRQ to enable non MSI/INTx interrupt Scott Wood
2012-07-17 3:01 ` Liu Shengzhou-B36685
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=50043790.6090605@freescale.com \
--to=scottwood@freescale.com \
--cc=Shengzhou.Liu@freescale.com \
--cc=bhelgaas@google.com \
--cc=linux-pci@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.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.