[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC v9 24/25] intel_iommu: process PASID-based Device-TLB invalidation
From: |
Liu Yi L |
Subject: |
[RFC v9 24/25] intel_iommu: process PASID-based Device-TLB invalidation |
Date: |
Mon, 27 Jul 2020 23:34:17 -0700 |
This patch adds an empty handling for PASID-based Device-TLB
invalidation. For now it is enough as it is not necessary to
propagate it to host for passthru device and also there is no
emulated device has device tlb.
Cc: Kevin Tian <kevin.tian@intel.com>
Cc: Jacob Pan <jacob.jun.pan@linux.intel.com>
Cc: Peter Xu <peterx@redhat.com>
Cc: Yi Sun <yi.y.sun@linux.intel.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Liu Yi L <yi.l.liu@intel.com>
---
hw/i386/intel_iommu.c | 18 ++++++++++++++++++
hw/i386/intel_iommu_internal.h | 1 +
2 files changed, 19 insertions(+)
diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
index db4460a..11f815d 100644
--- a/hw/i386/intel_iommu.c
+++ b/hw/i386/intel_iommu.c
@@ -3213,6 +3213,17 @@ static bool vtd_process_inv_iec_desc(IntelIOMMUState *s,
return true;
}
+static bool vtd_process_device_piotlb_desc(IntelIOMMUState *s,
+ VTDInvDesc *inv_desc)
+{
+ /*
+ * no need to handle it for passthru device, for emulated
+ * devices with device tlb, it may be required, but for now,
+ * return is enough
+ */
+ return true;
+}
+
static bool vtd_process_device_iotlb_desc(IntelIOMMUState *s,
VTDInvDesc *inv_desc)
{
@@ -3334,6 +3345,13 @@ static bool vtd_process_inv_desc(IntelIOMMUState *s)
}
break;
+ case VTD_INV_DESC_DEV_PIOTLB:
+ trace_vtd_inv_desc("device-piotlb", inv_desc.hi, inv_desc.lo);
+ if (!vtd_process_device_piotlb_desc(s, &inv_desc)) {
+ return false;
+ }
+ break;
+
case VTD_INV_DESC_DEVICE:
trace_vtd_inv_desc("device", inv_desc.hi, inv_desc.lo);
if (!vtd_process_device_iotlb_desc(s, &inv_desc)) {
diff --git a/hw/i386/intel_iommu_internal.h b/hw/i386/intel_iommu_internal.h
index 08ff58e..9b4fc67 100644
--- a/hw/i386/intel_iommu_internal.h
+++ b/hw/i386/intel_iommu_internal.h
@@ -405,6 +405,7 @@ typedef union VTDInvDesc VTDInvDesc;
#define VTD_INV_DESC_WAIT 0x5 /* Invalidation Wait Descriptor */
#define VTD_INV_DESC_PIOTLB 0x6 /* PASID-IOTLB Invalidate Desc */
#define VTD_INV_DESC_PC 0x7 /* PASID-cache Invalidate Desc */
+#define VTD_INV_DESC_DEV_PIOTLB 0x8 /* PASID-based-DIOTLB inv_desc*/
#define VTD_INV_DESC_NONE 0 /* Not an Invalidate Descriptor */
/* Masks for Invalidation Wait Descriptor*/
--
2.7.4
- [RFC v9 16/25] vfio: add bind stage-1 page table support, (continued)
- [RFC v9 16/25] vfio: add bind stage-1 page table support, Liu Yi L, 2020/07/28
- [RFC v9 17/25] intel_iommu: sync IOMMU nesting cap info for assigned devices, Liu Yi L, 2020/07/28
- [RFC v9 07/25] vfio: check VFIO_TYPE1_NESTING_IOMMU support, Liu Yi L, 2020/07/28
- [RFC v9 15/25] intel_iommu: add PASID cache management infrastructure, Liu Yi L, 2020/07/28
- [RFC v9 19/25] intel_iommu: replay pasid binds after context cache invalidation, Liu Yi L, 2020/07/28
- [RFC v9 18/25] intel_iommu: bind/unbind guest page table to host, Liu Yi L, 2020/07/28
- [RFC v9 20/25] intel_iommu: do not pass down pasid bind for PASID #0, Liu Yi L, 2020/07/28
- [RFC v9 21/25] vfio: add support for flush iommu stage-1 cache, Liu Yi L, 2020/07/28
- [RFC v9 22/25] intel_iommu: process PASID-based iotlb invalidation, Liu Yi L, 2020/07/28
- [RFC v9 08/25] hw/iommu: introduce HostIOMMUContext, Liu Yi L, 2020/07/28
- [RFC v9 24/25] intel_iommu: process PASID-based Device-TLB invalidation,
Liu Yi L <=
- [RFC v9 23/25] intel_iommu: propagate PASID-based iotlb invalidation to host, Liu Yi L, 2020/07/28
- [RFC v9 25/25] intel_iommu: modify x-scalable-mode to be string option, Liu Yi L, 2020/07/28