iommu/vt-d: Save the right domain ID used by hardware
authorLu Baolu <[email protected]>
Wed, 20 Mar 2019 01:58:34 +0000 (09:58 +0800)
committerJoerg Roedel <[email protected]>
Fri, 22 Mar 2019 11:02:27 +0000 (12:02 +0100)
The driver sets a default domain id (FLPT_DEFAULT_DID) in the
first level only pasid entry, but saves a different domain id
in @sdev->did. The value saved in @sdev->did will be used to
invalidate the translation caches. Hence, the driver might
result in invalidating the caches with a wrong domain id.

Cc: Ashok Raj <[email protected]>
Cc: Jacob Pan <[email protected]>
Fixes: 1c4f88b7f1f92 ("iommu/vt-d: Shared virtual address in scalable mode")
Signed-off-by: Liu Yi L <[email protected]>
Signed-off-by: Lu Baolu <[email protected]>
Signed-off-by: Joerg Roedel <[email protected]>
drivers/iommu/intel-iommu.c

index f002d47d2f27a95438def0aa4d2c471e9ced9e4b..28cb713d728ceef9eb7f37caa746a546617e1dbb 100644 (file)
@@ -5335,7 +5335,7 @@ int intel_iommu_enable_pasid(struct intel_iommu *iommu, struct intel_svm_dev *sd
 
        ctx_lo = context[0].lo;
 
-       sdev->did = domain->iommu_did[iommu->seq_id];
+       sdev->did = FLPT_DEFAULT_DID;
        sdev->sid = PCI_DEVID(info->bus, info->devfn);
 
        if (!(ctx_lo & CONTEXT_PASIDE)) {