@@ -5507,6 +5507,12 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0420, quirk_no_ext_tags);
5507
5507
DECLARE_PCI_FIXUP_EARLY (PCI_VENDOR_ID_SERVERWORKS , 0x0422 , quirk_no_ext_tags );
5508
5508
5509
5509
#ifdef CONFIG_PCI_ATS
5510
+ static void quirk_no_ats (struct pci_dev * pdev )
5511
+ {
5512
+ pci_info (pdev , "disabling ATS\n" );
5513
+ pdev -> ats_cap = 0 ;
5514
+ }
5515
+
5510
5516
/*
5511
5517
* Some devices require additional driver setup to enable ATS. Don't use
5512
5518
* ATS for those devices as ATS will be enabled before the driver has had a
@@ -5520,14 +5526,10 @@ static void quirk_amd_harvest_no_ats(struct pci_dev *pdev)
5520
5526
(pdev -> subsystem_device == 0xce19 ||
5521
5527
pdev -> subsystem_device == 0xcc10 ||
5522
5528
pdev -> subsystem_device == 0xcc08 ))
5523
- goto no_ats ;
5524
- else
5525
- return ;
5529
+ quirk_no_ats ( pdev ) ;
5530
+ } else {
5531
+ quirk_no_ats ( pdev ) ;
5526
5532
}
5527
-
5528
- no_ats :
5529
- pci_info (pdev , "disabling ATS\n" );
5530
- pdev -> ats_cap = 0 ;
5531
5533
}
5532
5534
5533
5535
/* AMD Stoney platform GPU */
@@ -5550,6 +5552,25 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x7347, quirk_amd_harvest_no_ats);
5550
5552
DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_ATI , 0x734f , quirk_amd_harvest_no_ats );
5551
5553
/* AMD Raven platform iGPU */
5552
5554
DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_ATI , 0x15d8 , quirk_amd_harvest_no_ats );
5555
+
5556
+ /*
5557
+ * Intel IPU E2000 revisions before C0 implement incorrect endianness
5558
+ * in ATS Invalidate Request message body. Disable ATS for those devices.
5559
+ */
5560
+ static void quirk_intel_e2000_no_ats (struct pci_dev * pdev )
5561
+ {
5562
+ if (pdev -> revision < 0x20 )
5563
+ quirk_no_ats (pdev );
5564
+ }
5565
+ DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_INTEL , 0x1451 , quirk_intel_e2000_no_ats );
5566
+ DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_INTEL , 0x1452 , quirk_intel_e2000_no_ats );
5567
+ DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_INTEL , 0x1453 , quirk_intel_e2000_no_ats );
5568
+ DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_INTEL , 0x1454 , quirk_intel_e2000_no_ats );
5569
+ DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_INTEL , 0x1455 , quirk_intel_e2000_no_ats );
5570
+ DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_INTEL , 0x1457 , quirk_intel_e2000_no_ats );
5571
+ DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_INTEL , 0x1459 , quirk_intel_e2000_no_ats );
5572
+ DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_INTEL , 0x145a , quirk_intel_e2000_no_ats );
5573
+ DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_INTEL , 0x145c , quirk_intel_e2000_no_ats );
5553
5574
#endif /* CONFIG_PCI_ATS */
5554
5575
5555
5576
/* Freescale PCIe doesn't support MSI in RC mode */
0 commit comments