diff options
author | Liu Yi L <yi.l.liu@intel.com> | 2020-07-24 04:49:18 +0300 |
---|---|---|
committer | Joerg Roedel <jroedel@suse.de> | 2020-07-24 11:51:21 +0300 |
commit | 0fa1a15fa9b37be3899d7fec552c77b67baa8ac7 (patch) | |
tree | 3b17e38cbc379c9cefc8a8def13f31f75fafe00e /block | |
parent | 288d08e78008828416ffaa85ef274b4e29ef3dae (diff) | |
download | linux-0fa1a15fa9b37be3899d7fec552c77b67baa8ac7.tar.xz |
iommu/vt-d: Fix devTLB flush for vSVA
For guest SVA usage, in order to optimize for less VMEXIT, guest request
of IOTLB flush also includes device TLB.
On the host side, IOMMU driver performs IOTLB and implicit devTLB
invalidation. When PASID-selective granularity is requested by the guest
we need to derive the equivalent address range for devTLB instead of
using the address information in the UAPI data. The reason for that is,
unlike IOTLB flush, devTLB flush does not support PASID-selective
granularity. This is to say, we need to set the following in the PASID
based devTLB invalidation descriptor:
- entire 64 bit range in address ~(0x1 << 63)
- S bit = 1 (VT-d CH 6.5.2.6).
Without this fix, device TLB flush range is not set properly for PASID
selective granularity. This patch also merged devTLB flush code for both
implicit and explicit cases.
Fixes: 6ee1b77ba3ac ("iommu/vt-d: Add svm/sva invalidate function")
Signed-off-by: Liu Yi L <yi.l.liu@intel.com>
Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Link: https://lore.kernel.org/r/20200724014925.15523-6-baolu.lu@linux.intel.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Diffstat (limited to 'block')
0 files changed, 0 insertions, 0 deletions