From: Robin Murphy <robin.murphy@xxxxxxx>
Sent: Wednesday, November 23, 2022 1:49 AM
+
+/* Impacted QAT device IDs ranging from 0x4940 to 0x4943 */
+#define BUGGY_QAT_DEVID_MASK 0x494c
+static bool dev_needs_extra_dtlb_flush(struct pci_dev *pdev)
+{
+ if (pdev->vendor != PCI_VENDOR_ID_INTEL)
+ return false;
+
+ if ((pdev->device & 0xfffc) != BUGGY_QAT_DEVID_MASK)
+ return false;
+
+ if (risky_device(pdev))
+ return false;
Hmm, I'm not sure that that makes much sense to me - what privilege can
the device gain from being told to invalidate things twice? Why would we
want to implicitly *allow* a device to potentially keep using a stale
translation if for some bizarre reason firmware has marked it as
external, surely that's worse?
ATS is disabled for such device hence no dtlb at all.
bool pci_ats_supported(struct pci_dev *dev)
{
if (!dev->ats_cap)
return false;
return (dev->untrusted == 0);
}
So above check doesn't make things worse. It's kind of meaningless
but according to Baolu he wants that check in every quirk...