Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1424082 > unrolled thread
| Started by | Bjorn Helgaas <helgaas@kernel.org> |
|---|---|
| First post | 2016-06-16 16:00 +0200 |
| Last post | 2016-06-17 05:40 +0200 |
| Articles | 2 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: [PATCH v2 2/2] pci/aer: interrupt fixup in the quirk Bjorn Helgaas <helgaas@kernel.org> - 2016-06-16 16:00 +0200
RE: [PATCH v2 2/2] pci/aer: interrupt fixup in the quirk Po Liu <po.liu@nxp.com> - 2016-06-17 05:40 +0200
| From | Bjorn Helgaas <helgaas@kernel.org> |
|---|---|
| Date | 2016-06-16 16:00 +0200 |
| Subject | Re: [PATCH v2 2/2] pci/aer: interrupt fixup in the quirk |
| Message-ID | <rKFZU-Cr-23@gated-at.bofh.it> |
On Tue, Jun 14, 2016 at 02:12:27PM +0800, Po Liu wrote:
> On some platforms, root port doesn't support MSI/MSI-X/INTx in RC mode.
> When chip support the aer interrupt with none MSI/MSI-X/INTx mode,
> maybe there is interrupt line for aer pme etc. Search the interrupt
> number in the fdt file. Then fixup the dev->irq with it.
>
> Signed-off-by: Po Liu <po.liu@nxp.com>
> ---
> changes for V2:
> - Move to the quirk file
>
> drivers/pci/quirks.c | 23 +++++++++++++++++++++++
> 1 file changed, 23 insertions(+)
>
> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> index ee72ebe..909d479 100644
> --- a/drivers/pci/quirks.c
> +++ b/drivers/pci/quirks.c
Is there any possibility of this part being used on different arches,
or will it only ever be on arm64 (or whatever it is)? If the latter,
it could go somewhere like arch/arm64/kernel/quirks.c (which doesn't
exist yet).
> @@ -25,6 +25,7 @@
> #include <linux/sched.h>
> #include <linux/ktime.h>
> #include <linux/mm.h>
> +#include <linux/of_irq.h>
> #include <asm/dma.h> /* isa_dma_bridge_buggy */
> #include "pci.h"
>
> @@ -4419,3 +4420,25 @@ static void quirk_intel_qat_vf_cap(struct pci_dev *pdev)
> }
> }
> DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x443, quirk_intel_qat_vf_cap);
> +
> +/* If root port doesn't support MSI/MSI-X/INTx in RC mode,
> + * but use standalone irq. Read the device tree for the aer
> + * interrupt number.
> + */
> +static void quirk_aer_interrupt(struct pci_dev *dev)
> +{
> + int ret;
> + struct device_node *np = NULL;
> +
> + if (dev->bus->dev.of_node)
> + np = dev->bus->dev.of_node;
> +
> + if (IS_ENABLED(CONFIG_OF_IRQ) && np) {
> + ret = of_irq_get_byname(np, "aer");
> + if (ret > 0) {
> + dev->no_msi = 1;
> + dev->irq = ret;
> + }
> + }
What does this mean for the other PCIe services, e.g., PME? I
guess this makes the existing AER code work unchanged. But I thought
PME had a similar situation and was connected up to a different
interrupt than AER was.
> +}
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_FREESCALE, PCI_ANY_ID, quirk_aer_interrupt);
> --
> 2.1.0.27.g96db324
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-pci" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
[toc] | [next] | [standalone]
| From | Po Liu <po.liu@nxp.com> |
|---|---|
| Date | 2016-06-17 05:40 +0200 |
| Message-ID | <rKSNr-19K-9@gated-at.bofh.it> |
| In reply to | #1424082 |
> -----Original Message-----
> From: Bjorn Helgaas [mailto:helgaas@kernel.org]
> Sent: Thursday, June 16, 2016 9:54 PM
> To: Po Liu
> Cc: linux-pci@vger.kernel.org; linux-arm-kernel@lists.infradead.org;
> linux-kernel@vger.kernel.org; devicetree@vger.kernel.org; Bjorn Helgaas;
> Shawn Guo; Marc Zyngier; Rob Herring; Roy Zang; Mingkai Hu; Stuart Yoder;
> Yang-Leo Li; Arnd Bergmann; Minghuan Lian; Murali Karicheri
> Subject: Re: [PATCH v2 2/2] pci/aer: interrupt fixup in the quirk
>
> On Tue, Jun 14, 2016 at 02:12:27PM +0800, Po Liu wrote:
> > On some platforms, root port doesn't support MSI/MSI-X/INTx in RC mode.
> > When chip support the aer interrupt with none MSI/MSI-X/INTx mode,
> > maybe there is interrupt line for aer pme etc. Search the interrupt
> > number in the fdt file. Then fixup the dev->irq with it.
> >
> > Signed-off-by: Po Liu <po.liu@nxp.com>
> > ---
> > changes for V2:
> > - Move to the quirk file
> >
> > drivers/pci/quirks.c | 23 +++++++++++++++++++++++
> > 1 file changed, 23 insertions(+)
> >
> > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index
> > ee72ebe..909d479 100644
> > --- a/drivers/pci/quirks.c
> > +++ b/drivers/pci/quirks.c
>
> Is there any possibility of this part being used on different arches, or
> will it only ever be on arm64 (or whatever it is)? If the latter, it
> could go somewhere like arch/arm64/kernel/quirks.c (which doesn't exist
> yet).
NXP Layerscape1 is base on the arm 32bit design. Also need the fixup.
>
> > @@ -25,6 +25,7 @@
> > #include <linux/sched.h>
> > #include <linux/ktime.h>
> > #include <linux/mm.h>
> > +#include <linux/of_irq.h>
> > #include <asm/dma.h> /* isa_dma_bridge_buggy */
> > #include "pci.h"
> >
> > @@ -4419,3 +4420,25 @@ static void quirk_intel_qat_vf_cap(struct
> pci_dev *pdev)
> > }
> > }
> > DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x443,
> > quirk_intel_qat_vf_cap);
> > +
> > +/* If root port doesn't support MSI/MSI-X/INTx in RC mode,
> > + * but use standalone irq. Read the device tree for the aer
> > + * interrupt number.
> > + */
> > +static void quirk_aer_interrupt(struct pci_dev *dev) {
> > + int ret;
> > + struct device_node *np = NULL;
> > +
> > + if (dev->bus->dev.of_node)
> > + np = dev->bus->dev.of_node;
> > +
> > + if (IS_ENABLED(CONFIG_OF_IRQ) && np) {
> > + ret = of_irq_get_byname(np, "aer");
> > + if (ret > 0) {
> > + dev->no_msi = 1;
> > + dev->irq = ret;
> > + }
> > + }
>
> What does this mean for the other PCIe services, e.g., PME? I guess
> this makes the existing AER code work unchanged. But I thought PME had
> a similar situation and was connected up to a different interrupt than
> AER was.
Yes, PME is similar, HP is not support. I think better to disable the PME service irq in the quirk.
But seems it is no use because quirk fixup is only running in init phase time(except suspend, resume).
>
> > +}
> > +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_FREESCALE, PCI_ANY_ID,
> > +quirk_aer_interrupt);
> > --
> > 2.1.0.27.g96db324
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-pci"
> > in the body of a message to majordomo@vger.kernel.org More majordomo
> > info at http://vger.kernel.org/majordomo-info.html
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web