[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC v2 22/22] intel_iommu: process PASID-based Device-TLB invalidation
From: |
Liu Yi L |
Subject: |
[RFC v2 22/22] intel_iommu: process PASID-based Device-TLB invalidation |
Date: |
Thu, 24 Oct 2019 08:34:43 -0400 |
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 <address@hidden>
Cc: Jacob Pan <address@hidden>
Cc: Peter Xu <address@hidden>
Cc: Yi Sun <address@hidden>
Signed-off-by: Liu Yi L <address@hidden>
---
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 5ca9ee1..1c00e9c 100644
--- a/hw/i386/intel_iommu.c
+++ b/hw/i386/intel_iommu.c
@@ -3285,6 +3285,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)
{
@@ -3406,6 +3417,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 6a83f6c..714dc09 100644
--- a/hw/i386/intel_iommu_internal.h
+++ b/hw/i386/intel_iommu_internal.h
@@ -390,6 +390,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 v2 12/22] intel_iommu: add present bit check for pasid table entries, (continued)
- [RFC v2 12/22] intel_iommu: add present bit check for pasid table entries, Liu Yi L, 2019/10/24
- [RFC v2 14/22] vfio/pci: add iommu_context notifier for pasid bind/unbind, Liu Yi L, 2019/10/24
- [RFC v2 13/22] intel_iommu: add PASID cache management infrastructure, Liu Yi L, 2019/10/24
- [RFC v2 15/22] intel_iommu: bind/unbind guest page table to host, Liu Yi L, 2019/10/24
- [RFC v2 17/22] intel_iommu: replay pasid binds after context cache invalidation, Liu Yi L, 2019/10/24
- [RFC v2 16/22] intel_iommu: replay guest pasid bindings to host, Liu Yi L, 2019/10/24
- [RFC v2 18/22] intel_iommu: do not passdown pasid bind for PASID #0, Liu Yi L, 2019/10/24
- [RFC v2 19/22] vfio/pci: add iommu_context notifier for PASID-based iotlb flush, Liu Yi L, 2019/10/24
- [RFC v2 20/22] intel_iommu: process PASID-based iotlb invalidation, Liu Yi L, 2019/10/24
- [RFC v2 21/22] intel_iommu: propagate PASID-based iotlb invalidation to host, Liu Yi L, 2019/10/24
- [RFC v2 22/22] intel_iommu: process PASID-based Device-TLB invalidation,
Liu Yi L <=
- Re: [RFC v2 00/22] intel_iommu: expose Shared Virtual Addressing to VM, no-reply, 2019/10/25
- Re: [RFC v2 00/22] intel_iommu: expose Shared Virtual Addressing to VM, no-reply, 2019/10/25
- Re: [RFC v2 00/22] intel_iommu: expose Shared Virtual Addressing to VM, Jason Wang, 2019/10/25