[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