@@ -3349,6 +3349,42 @@ static void quirk_dma_func0_alias(struct pci_dev *dev)
3349
3349
DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_RICOH , 0xe832 , quirk_dma_func0_alias );
3350
3350
DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_RICOH , 0xe476 , quirk_dma_func0_alias );
3351
3351
3352
+ static void quirk_dma_func1_alias (struct pci_dev * dev )
3353
+ {
3354
+ if (PCI_FUNC (dev -> devfn ) != 1 ) {
3355
+ dev -> dma_alias_devfn = PCI_DEVFN (PCI_SLOT (dev -> devfn ), 1 );
3356
+ dev -> dev_flags |= PCI_DEV_FLAGS_DMA_ALIAS_DEVFN ;
3357
+ }
3358
+ }
3359
+
3360
+ /*
3361
+ * Marvell 88SE9123 uses function 1 as the requester ID for DMA. In some
3362
+ * SKUs function 1 is present and is a legacy IDE controller, in other
3363
+ * SKUs this function is not present, making this a ghost requester.
3364
+ * https://bugzilla.kernel.org/show_bug.cgi?id=42679
3365
+ */
3366
+ DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_MARVELL_EXT , 0x9123 ,
3367
+ quirk_dma_func1_alias );
3368
+ /* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c14 */
3369
+ DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_MARVELL_EXT , 0x9130 ,
3370
+ quirk_dma_func1_alias );
3371
+ /* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c47 + c57 */
3372
+ DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_MARVELL_EXT , 0x9172 ,
3373
+ quirk_dma_func1_alias );
3374
+ /* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c59 */
3375
+ DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_MARVELL_EXT , 0x917a ,
3376
+ quirk_dma_func1_alias );
3377
+ /* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c46 */
3378
+ DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_MARVELL_EXT , 0x91a0 ,
3379
+ quirk_dma_func1_alias );
3380
+ /* https://bugzilla.kernel.org/show_bug.cgi?id=42679#c49 */
3381
+ DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_MARVELL_EXT , 0x9230 ,
3382
+ quirk_dma_func1_alias );
3383
+ /* https://bugs.gentoo.org/show_bug.cgi?id=497630 */
3384
+ DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_JMICRON ,
3385
+ PCI_DEVICE_ID_JMICRON_JMB388_ESD ,
3386
+ quirk_dma_func1_alias );
3387
+
3352
3388
static struct pci_dev * pci_func_0_dma_source (struct pci_dev * dev )
3353
3389
{
3354
3390
if (!PCI_FUNC (dev -> devfn ))
0 commit comments