Message ID | 20140522230755.2856.19714.stgit@bling.home (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
Tested-by: George Spelvin <linux@horizon.com>
(I'm running the whole series, but 1b4b:9172 are the devices I have.)
--
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
On Thu, May 22, 2014 at 05:07:55PM -0600, Alex Williamson wrote: > Several Marvell devices and a JMicron device have a similar DMA > requester ID problem to Ricoh, except they use function 1 as the > PCIe requester ID. Add a quirk for these to populate the DMA > function alias bitmap. What's the DMA function alias bitmap? > Signed-off-by: Alex Williamson <alex.williamson@redhat.com> > --- > drivers/pci/quirks.c | 36 ++++++++++++++++++++++++++++++++++++ > 1 file changed, 36 insertions(+) > > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c > index bc8ebd9..923689f 100644 > --- a/drivers/pci/quirks.c > +++ b/drivers/pci/quirks.c > @@ -3349,6 +3349,42 @@ static void quirk_dma_func0_alias(struct pci_dev *dev) > DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_RICOH, 0xe832, quirk_dma_func0_alias); > DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_RICOH, 0xe476, quirk_dma_func0_alias); > > +static void quirk_dma_func1_alias(struct pci_dev *dev) > +{ > + if (PCI_FUNC(dev->devfn) != 1) { > + dev->dma_alias_devfn = PCI_DEVFN(PCI_SLOT(dev->devfn), 1); > + dev->dev_flags |= PCI_DEV_FLAGS_DMA_ALIAS_DEVFN; > + } > +} > + > +/* > + * Marvell 88SE9123 uses function 1 as the requester ID for DMA. In some > + * SKUs function 1 is present and is a legacy IDE controller, in other > + * SKUs this function is not present, making this a ghost requester. > + * https://bugzilla.kernel.org/show_bug.cgi?id=42679 > + */ > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9123, > + quirk_dma_func1_alias); > +/* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c14 */ > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9130, > + quirk_dma_func1_alias); > +/* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c47 + c57 */ > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9172, > + quirk_dma_func1_alias); > +/* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c59 */ > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x917a, > + quirk_dma_func1_alias); > +/* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c46 */ > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x91a0, > + quirk_dma_func1_alias); > +/* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c49 */ > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9230, > + quirk_dma_func1_alias); > +/* https://bugs.gentoo.org/show_bug.cgi?id=497630 */ > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_JMICRON, > + PCI_DEVICE_ID_JMICRON_JMB388_ESD, > + quirk_dma_func1_alias); > + > static struct pci_dev *pci_func_0_dma_source(struct pci_dev *dev) > { > if (!PCI_FUNC(dev->devfn)) > -- 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
On Wed, 2014-05-28 at 11:55 -0600, Bjorn Helgaas wrote: > On Thu, May 22, 2014 at 05:07:55PM -0600, Alex Williamson wrote: > > Several Marvell devices and a JMicron device have a similar DMA > > requester ID problem to Ricoh, except they use function 1 as the > > PCIe requester ID. Add a quirk for these to populate the DMA > > function alias bitmap. > > What's the DMA function alias bitmap? Guess I missed updating this comment for v4. Let me know if you have other comments and I can either resend this individually or respin the series. Thanks, Alex > > Signed-off-by: Alex Williamson <alex.williamson@redhat.com> > > --- > > drivers/pci/quirks.c | 36 ++++++++++++++++++++++++++++++++++++ > > 1 file changed, 36 insertions(+) > > > > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c > > index bc8ebd9..923689f 100644 > > --- a/drivers/pci/quirks.c > > +++ b/drivers/pci/quirks.c > > @@ -3349,6 +3349,42 @@ static void quirk_dma_func0_alias(struct pci_dev *dev) > > DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_RICOH, 0xe832, quirk_dma_func0_alias); > > DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_RICOH, 0xe476, quirk_dma_func0_alias); > > > > +static void quirk_dma_func1_alias(struct pci_dev *dev) > > +{ > > + if (PCI_FUNC(dev->devfn) != 1) { > > + dev->dma_alias_devfn = PCI_DEVFN(PCI_SLOT(dev->devfn), 1); > > + dev->dev_flags |= PCI_DEV_FLAGS_DMA_ALIAS_DEVFN; > > + } > > +} > > + > > +/* > > + * Marvell 88SE9123 uses function 1 as the requester ID for DMA. In some > > + * SKUs function 1 is present and is a legacy IDE controller, in other > > + * SKUs this function is not present, making this a ghost requester. > > + * https://bugzilla.kernel.org/show_bug.cgi?id=42679 > > + */ > > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9123, > > + quirk_dma_func1_alias); > > +/* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c14 */ > > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9130, > > + quirk_dma_func1_alias); > > +/* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c47 + c57 */ > > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9172, > > + quirk_dma_func1_alias); > > +/* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c59 */ > > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x917a, > > + quirk_dma_func1_alias); > > +/* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c46 */ > > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x91a0, > > + quirk_dma_func1_alias); > > +/* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c49 */ > > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9230, > > + quirk_dma_func1_alias); > > +/* https://bugs.gentoo.org/show_bug.cgi?id=497630 */ > > +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_JMICRON, > > + PCI_DEVICE_ID_JMICRON_JMB388_ESD, > > + quirk_dma_func1_alias); > > + > > static struct pci_dev *pci_func_0_dma_source(struct pci_dev *dev) > > { > > if (!PCI_FUNC(dev->devfn)) > > -- 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
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index bc8ebd9..923689f 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -3349,6 +3349,42 @@ static void quirk_dma_func0_alias(struct pci_dev *dev) DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_RICOH, 0xe832, quirk_dma_func0_alias); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_RICOH, 0xe476, quirk_dma_func0_alias); +static void quirk_dma_func1_alias(struct pci_dev *dev) +{ + if (PCI_FUNC(dev->devfn) != 1) { + dev->dma_alias_devfn = PCI_DEVFN(PCI_SLOT(dev->devfn), 1); + dev->dev_flags |= PCI_DEV_FLAGS_DMA_ALIAS_DEVFN; + } +} + +/* + * Marvell 88SE9123 uses function 1 as the requester ID for DMA. In some + * SKUs function 1 is present and is a legacy IDE controller, in other + * SKUs this function is not present, making this a ghost requester. + * https://bugzilla.kernel.org/show_bug.cgi?id=42679 + */ +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9123, + quirk_dma_func1_alias); +/* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c14 */ +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9130, + quirk_dma_func1_alias); +/* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c47 + c57 */ +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9172, + quirk_dma_func1_alias); +/* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c59 */ +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x917a, + quirk_dma_func1_alias); +/* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c46 */ +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x91a0, + quirk_dma_func1_alias); +/* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c49 */ +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9230, + quirk_dma_func1_alias); +/* https://bugs.gentoo.org/show_bug.cgi?id=497630 */ +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_JMICRON, + PCI_DEVICE_ID_JMICRON_JMB388_ESD, + quirk_dma_func1_alias); + static struct pci_dev *pci_func_0_dma_source(struct pci_dev *dev) { if (!PCI_FUNC(dev->devfn))
Several Marvell devices and a JMicron device have a similar DMA requester ID problem to Ricoh, except they use function 1 as the PCIe requester ID. Add a quirk for these to populate the DMA function alias bitmap. Signed-off-by: Alex Williamson <alex.williamson@redhat.com> --- drivers/pci/quirks.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) -- 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