[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC v11 06/25] intel_iommu: add get_iommu_attr() callback
From: |
Liu Yi L |
Subject: |
[RFC v11 06/25] intel_iommu: add get_iommu_attr() callback |
Date: |
Wed, 3 Mar 2021 04:38:08 +0800 |
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 dd11248b6b..d89d6d7dd5 100644
--- a/hw/i386/intel_iommu.c
+++ b/hw/i386/intel_iommu.c
@@ -3462,6 +3462,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)
{
@@ -3758,6 +3780,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.25.1
- [RFC v11 00/25] intel_iommu: expose Shared Virtual Addressing to VMs, Liu Yi L, 2021/03/02
- [RFC v11 01/25] scripts/update-linux-headers: Import iommu.h, Liu Yi L, 2021/03/02
- [RFC v11 02/25] scripts/update-linux-headers: Import ioasid.h, Liu Yi L, 2021/03/02
- [RFC v11 03/25] header file update VFIO/IOMMU vSVA APIs kernel 5.12-rc1, Liu Yi L, 2021/03/02
- [RFC v11 04/25] hw/pci: modify pci_setup_iommu() to set PCIIOMMUOps, Liu Yi L, 2021/03/02
- [RFC v11 05/25] hw/pci: introduce pci_device_get_iommu_attr(), Liu Yi L, 2021/03/02
- [RFC v11 06/25] intel_iommu: add get_iommu_attr() callback,
Liu Yi L <=
- [RFC v11 07/25] vfio: pass nesting requirement into vfio_get_group(), Liu Yi L, 2021/03/02
- [RFC v11 08/25] vfio: check VFIO_TYPE1_NESTING_IOMMU support, Liu Yi L, 2021/03/02
- [RFC v11 09/25] hw/iommu: introduce HostIOMMUContext, Liu Yi L, 2021/03/02
- [RFC v11 10/25] hw/pci: introduce pci_device_set/unset_iommu_context(), Liu Yi L, 2021/03/02
- [RFC v11 11/25] intel_iommu: add set/unset_iommu_context callback, Liu Yi L, 2021/03/02
- [RFC v11 12/25] vfio: add HostIOMMUContext support, Liu Yi L, 2021/03/02
- [RFC v11 13/25] vfio: init HostIOMMUContext per-container, Liu Yi L, 2021/03/02
- [RFC v11 14/25] intel_iommu: sync IOMMU nesting cap info for assigned devices, Liu Yi L, 2021/03/02
- [RFC v11 15/25] intel_iommu: add virtual command capability support, Liu Yi L, 2021/03/02
- [RFC v11 16/25] intel_iommu: process PASID cache invalidation, Liu Yi L, 2021/03/02