[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 06/12] vfio/pci: provide vfio_pci_sva_ops instanc
From: |
Liu, Yi L |
Subject: |
[Qemu-devel] [PATCH v3 06/12] vfio/pci: provide vfio_pci_sva_ops instance |
Date: |
Thu, 1 Mar 2018 18:31:56 +0800 |
VFIO is the bridge for vIOMMU and host IOMMU. Needs to provide API
for vIOMMU emulator to set configs to host IOMMU. In this patchset,
such API is exposed in hw/pci.
Signed-off-by: Liu, Yi L <address@hidden>
---
hw/vfio/pci.c | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
index 033cc8d..a60a4d7 100644
--- a/hw/vfio/pci.c
+++ b/hw/vfio/pci.c
@@ -2775,6 +2775,34 @@ static void vfio_unregister_req_notifier(VFIOPCIDevice
*vdev)
vdev->req_enabled = false;
}
+static void vfio_pci_device_sva_bind_pasid_table(PCIBus *bus,
+ int32_t devfn, uint64_t pasidt_addr, uint32_t size)
+{
+ /* Propagate the guest pasid table pointer to host IOMMU, and
+ enable nested translation accordingly. Depends on HW design.
+ So far, Intel VT-d and AMD IOMMU requires it. */
+}
+
+static void vfio_pci_device_sva_register_notifier(PCIBus *bus,
+ int32_t devfn, IOMMUSVAContext *sva_ctx)
+{
+ /* Register notifier for TLB invalidation propagation
+ */
+}
+
+static void vfio_pci_device_sva_unregister_notifier(PCIBus *bus,
+ int32_t devfn, IOMMUSVAContext *sva_ctx)
+{
+ /* Unregister notifier for TLB invalidation propagation
+ */
+}
+
+static PCISVAOps vfio_pci_sva_ops = {
+ .sva_bind_pasid_table = vfio_pci_device_sva_bind_pasid_table,
+ .sva_register_notifier = vfio_pci_device_sva_register_notifier,
+ .sva_unregister_notifier = vfio_pci_device_sva_unregister_notifier,
+};
+
static void vfio_realize(PCIDevice *pdev, Error **errp)
{
VFIOPCIDevice *vdev = DO_UPCAST(VFIOPCIDevice, pdev, pdev);
@@ -3019,6 +3047,8 @@ static void vfio_realize(PCIDevice *pdev, Error **errp)
vfio_register_req_notifier(vdev);
vfio_setup_resetfn_quirk(vdev);
+ pci_setup_sva_ops(pdev, &vfio_pci_sva_ops);
+
return;
out_teardown:
--
1.9.1
- [Qemu-devel] [PATCH v3 00/12] Introduce new iommu notifier framework for virt-SVA, Liu, Yi L, 2018/03/01
- [Qemu-devel] [PATCH v3 02/12] vfio: rename GuestIOMMU to be GuestIOMMUMR, Liu, Yi L, 2018/03/01
- [Qemu-devel] [PATCH v3 04/12] vfio/pci: add notify framework based on IOMMUSVAContext, Liu, Yi L, 2018/03/01
- [Qemu-devel] [PATCH v3 05/12] hw/pci: introduce PCISVAOps to PCIDevice, Liu, Yi L, 2018/03/01
- [Qemu-devel] [PATCH v3 03/12] hw/core: introduce IOMMUSVAContext for virt-SVA, Liu, Yi L, 2018/03/01
- [Qemu-devel] [PATCH v3 01/12] memory: rename existing iommu notifier to be iommu mr notifier, Liu, Yi L, 2018/03/01
- [Qemu-devel] [PATCH v3 06/12] vfio/pci: provide vfio_pci_sva_ops instance,
Liu, Yi L <=
- [Qemu-devel] [PATCH v3 07/12] vfio/pci: register sva notifier, Liu, Yi L, 2018/03/01
- [Qemu-devel] [PATCH v3 09/12] intel_iommu: record assigned devices in a list, Liu, Yi L, 2018/03/01
- [Qemu-devel] [PATCH v3 10/12] intel_iommu: bind guest pasid table to host, Liu, Yi L, 2018/03/01
- [Qemu-devel] [PATCH v3 11/12] intel_iommu: add framework for PASID AddressSpace management, Liu, Yi L, 2018/03/01
- [Qemu-devel] [PATCH v3 08/12] hw/pci: introduce pci_device_notify_iommu(), Liu, Yi L, 2018/03/01
- [Qemu-devel] [PATCH v3 12/12] intel_iommu: bind device to PASID tagged AddressSpace, Liu, Yi L, 2018/03/01
- Re: [Qemu-devel] [PATCH v3 00/12] Introduce new iommu notifier framework for virt-SVA, Michael S. Tsirkin, 2018/03/01