qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v8 3/4] VFIO: Introduce helper vfio_pci_container_io


From: Gavin Shan
Subject: [Qemu-devel] [PATCH v8 3/4] VFIO: Introduce helper vfio_pci_container_ioctl()
Date: Thu, 5 Jun 2014 16:53:40 +1000

The patch introduces helper function vfio_pci_container_ioctl() to
pass ioctl commands to the specified VFIO container that is identified
by IOMMU group id. On sPAPR platform, each container only has one
IOMMU group.

Signed-off-by: Gavin Shan <address@hidden>
---
 hw/misc/vfio.c         | 31 +++++++++++++++++++++++++++++++
 include/hw/misc/vfio.h |  2 ++
 2 files changed, 33 insertions(+)

diff --git a/hw/misc/vfio.c b/hw/misc/vfio.c
index 0796abf..999d97d 100644
--- a/hw/misc/vfio.c
+++ b/hw/misc/vfio.c
@@ -4310,3 +4310,34 @@ put_group_exit:
 
     return n;
 }
+
+int vfio_pci_container_ioctl(int iommu_group_id, int req, int opt)
+{
+    VFIOGroup *group;
+    int ret, fd = 0;
+
+    /* Search container's fd */
+    QLIST_FOREACH(group, &group_list, next) {
+        if (group->groupid == iommu_group_id) {
+            fd = group->container ? group->container->fd : 0;
+            break;
+        }
+    }
+
+    if (fd <= 0) {
+        return -ENOENT;
+    }
+
+    switch (req) {
+    case VFIO_EEH_PE_OP: {
+       struct vfio_eeh_pe_op op = { .argsz = sizeof(op), .op = opt };
+
+        ret = ioctl(fd, req, &op);
+        break;
+    }
+    default:
+        ret = -EINVAL;
+    }
+
+    return ret;
+}
diff --git a/include/hw/misc/vfio.h b/include/hw/misc/vfio.h
index 53ec665..dc92fae 100644
--- a/include/hw/misc/vfio.h
+++ b/include/hw/misc/vfio.h
@@ -30,4 +30,6 @@ static inline long vfio_kvm_notify(Notifier *n, unsigned 
request, void *data)
     return p.ret;
 }
 
+extern int vfio_pci_container_ioctl(int iommu_group_id, int req, int opt);
+
 #endif
-- 
1.8.3.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]