OSDN Git Service

iommu/vt-d: Fix ineffective devTLB invalidation for subdevices
authorLiu Yi L <yi.l.liu@intel.com>
Wed, 6 Jan 2021 16:03:57 +0000 (00:03 +0800)
committerWill Deacon <will@kernel.org>
Thu, 7 Jan 2021 14:38:15 +0000 (14:38 +0000)
commit7c29ada5e70083805bc3a68daa23441df421fbee
tree762d8fe765d706fd1eabd794ecfc1bc2b0e80c3e
parent18abda7a2d555783d28ea1701f3ec95e96237a86
iommu/vt-d: Fix ineffective devTLB invalidation for subdevices

iommu_flush_dev_iotlb() is called to invalidate caches on a device but
only loops over the devices which are fully-attached to the domain. For
sub-devices, this is ineffective and can result in invalid caching
entries left on the device.

Fix the missing invalidation by adding a loop over the subdevices and
ensuring that 'domain->has_iotlb_device' is updated when attaching to
subdevices.

Fixes: 67b8e02b5e76 ("iommu/vt-d: Aux-domain specific domain attach/detach")
Signed-off-by: Liu Yi L <yi.l.liu@intel.com>
Acked-by: Lu Baolu <baolu.lu@linux.intel.com>
Link: https://lore.kernel.org/r/1609949037-25291-4-git-send-email-yi.l.liu@intel.com
Signed-off-by: Will Deacon <will@kernel.org>
drivers/iommu/intel/iommu.c