Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bf92df30 authored by Yu Zhao's avatar Yu Zhao Committed by David Woodhouse
Browse files

intel-iommu: Only avoid flushing device IOTLB for domain ID 0 in caching mode



In caching mode, domain ID 0 is reserved for non-present to present
mapping flush. Device IOTLB doesn't need to be flushed in this case.

Previously we were avoiding the flush for domain zero, even if the IOMMU 
wasn't in caching mode and domain zero wasn't special.

Signed-off-by: default avatarYu Zhao <yu.zhao@intel.com>
Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
parent a679128d
Loading
Loading
Loading
Loading
+6 −1
Original line number Original line Diff line number Diff line
@@ -1054,7 +1054,12 @@ static void iommu_flush_iotlb_psi(struct intel_iommu *iommu, u16 did,
	else
	else
		iommu->flush.flush_iotlb(iommu, did, addr, mask,
		iommu->flush.flush_iotlb(iommu, did, addr, mask,
						DMA_TLB_PSI_FLUSH);
						DMA_TLB_PSI_FLUSH);
	if (did)

	/*
	 * In caching mode, domain ID 0 is reserved for non-present to present
	 * mapping flush. Device IOTLB doesn't need to be flushed in this case.
	 */
	if (!cap_caching_mode(iommu->cap) || did)
		iommu_flush_dev_iotlb(iommu->domains[did], addr, mask);
		iommu_flush_dev_iotlb(iommu->domains[did], addr, mask);
}
}