[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC v6 05/25] intel_iommu: add get_iommu_attr() callback
From: |
Liu Yi L |
Subject: |
[RFC v6 05/25] intel_iommu: add get_iommu_attr() callback |
Date: |
Thu, 11 Jun 2020 05:54:04 -0700 |
Return vIOMMU attribute to caller. e.g. VFIO call via PCI layer.
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>
Signed-off-by: Liu Yi L <yi.l.liu@intel.com>
---
hw/i386/intel_iommu.c | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
index 4b22910..a8b7627 100644
--- a/hw/i386/intel_iommu.c
+++ b/hw/i386/intel_iommu.c
@@ -3436,6 +3436,28 @@ VTDAddressSpace *vtd_find_add_as(IntelIOMMUState *s,
PCIBus *bus, int devfn)
return vtd_dev_as;
}
+static int vtd_dev_get_iommu_attr(PCIBus *bus, void *opaque, int32_t devfn,
+ IOMMUAttr attr, void *data)
+{
+ int ret = 0;
+
+ assert(0 <= devfn && devfn < PCI_DEVFN_MAX);
+
+ switch (attr) {
+ case IOMMU_WANT_NESTING:
+ {
+ bool *pdata = data;
+
+ /* return false until vSVA is ready */
+ *pdata = false;
+ break;
+ }
+ default:
+ ret = -ENOENT;
+ }
+ return ret;
+}
+
static uint64_t get_naturally_aligned_size(uint64_t start,
uint64_t size, int gaw)
{
@@ -3731,6 +3753,7 @@ static AddressSpace *vtd_host_dma_iommu(PCIBus *bus, void
*opaque, int devfn)
static PCIIOMMUOps vtd_iommu_ops = {
.get_address_space = vtd_host_dma_iommu,
+ .get_iommu_attr = vtd_dev_get_iommu_attr,
};
static bool vtd_decide_config(IntelIOMMUState *s, Error **errp)
--
2.7.4
- [RFC v6 12/25] vfio: init HostIOMMUContext per-container, (continued)
- [RFC v6 12/25] vfio: init HostIOMMUContext per-container, Liu Yi L, 2020/06/11
- [RFC v6 02/25] header file update VFIO/IOMMU vSVA APIs kernel 5.7-rc4, Liu Yi L, 2020/06/11
- [RFC v6 14/25] intel_iommu: process PASID cache invalidation, Liu Yi L, 2020/06/11
- [RFC v6 20/25] intel_iommu: do not pass down pasid bind for PASID #0, Liu Yi L, 2020/06/11
- [RFC v6 15/25] intel_iommu: add PASID cache management infrastructure, Liu Yi L, 2020/06/11
- [RFC v6 03/25] hw/pci: modify pci_setup_iommu() to set PCIIOMMUOps, Liu Yi L, 2020/06/11
- [RFC v6 09/25] hw/pci: introduce pci_device_set/unset_iommu_context(), Liu Yi L, 2020/06/11
- [RFC v6 16/25] vfio: add bind stage-1 page table support, Liu Yi L, 2020/06/11
- [RFC v6 23/25] intel_iommu: propagate PASID-based iotlb invalidation to host, Liu Yi L, 2020/06/11
- [RFC v6 13/25] intel_iommu: add virtual command capability support, Liu Yi L, 2020/06/11
- [RFC v6 05/25] intel_iommu: add get_iommu_attr() callback,
Liu Yi L <=
- [RFC v6 17/25] intel_iommu: sync IOMMU nesting cap info for assigned devices, Liu Yi L, 2020/06/11
- [RFC v6 11/25] vfio/common: provide PASID alloc/free hooks, Liu Yi L, 2020/06/11
- [RFC v6 18/25] intel_iommu: bind/unbind guest page table to host, Liu Yi L, 2020/06/11
- [RFC v6 25/25] intel_iommu: modify x-scalable-mode to be string option, Liu Yi L, 2020/06/11
- [RFC v6 21/25] vfio: add support for flush iommu stage-1 cache, Liu Yi L, 2020/06/11
- [RFC v6 10/25] intel_iommu: add set/unset_iommu_context callback, Liu Yi L, 2020/06/11
- [RFC v6 04/25] hw/pci: introduce pci_device_get_iommu_attr(), Liu Yi L, 2020/06/11
- [RFC v6 22/25] intel_iommu: process PASID-based iotlb invalidation, Liu Yi L, 2020/06/11
- [RFC v6 24/25] intel_iommu: process PASID-based Device-TLB invalidation, Liu Yi L, 2020/06/11
- Re: [RFC v6 00/25] intel_iommu: expose Shared Virtual Addressing to VMs, no-reply, 2020/06/11