[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH v2 1/2] VFIO: Drop vfio_container_do_ioctl()
From: |
Gavin Shan |
Subject: |
[Qemu-devel] [RFC PATCH v2 1/2] VFIO: Drop vfio_container_do_ioctl() |
Date: |
Mon, 1 Sep 2014 10:53:31 +1000 |
The patch drops vfio_container_do_ioctl() and merges its logic to
parent function call vfio_container_ioctl() so that the subsequent
patches can reused the found VFIO group in vfio_container_ioctl().
Signed-off-by: Gavin Shan <address@hidden>
---
hw/misc/vfio.c | 33 +++++++++++++++------------------
1 file changed, 15 insertions(+), 18 deletions(-)
diff --git a/hw/misc/vfio.c b/hw/misc/vfio.c
index 7d5f1bb..1a3e7eb 100644
--- a/hw/misc/vfio.c
+++ b/hw/misc/vfio.c
@@ -4419,8 +4419,8 @@ static void register_vfio_pci_dev_type(void)
type_init(register_vfio_pci_dev_type)
-static int vfio_container_do_ioctl(AddressSpace *as, int32_t groupid,
- int req, void *param)
+int vfio_container_ioctl(AddressSpace *as, int32_t groupid,
+ int req, void *param)
{
VFIOGroup *group;
VFIOContainer *container;
@@ -4433,22 +4433,11 @@ static int vfio_container_do_ioctl(AddressSpace *as,
int32_t groupid,
}
container = group->container;
- if (group->container) {
- ret = ioctl(container->fd, req, param);
- if (ret < 0) {
- error_report("vfio: failed to ioctl container: ret=%d, %s",
- ret, strerror(errno));
- }
+ if (!container) {
+ error_report("vfio: no container for group %d\n", groupid);
+ goto out;
}
- vfio_put_group(group);
-
- return ret;
-}
-
-int vfio_container_ioctl(AddressSpace *as, int32_t groupid,
- int req, void *param)
-{
/* We allow only certain ioctls to the container */
switch (req) {
case VFIO_CHECK_EXTENSION:
@@ -4458,8 +4447,16 @@ int vfio_container_ioctl(AddressSpace *as, int32_t
groupid,
default:
/* Return an error on unknown requests */
error_report("vfio: unsupported ioctl %X", req);
- return -1;
+ goto out;
}
- return vfio_container_do_ioctl(as, groupid, req, param);
+ ret = ioctl(container->fd, req, param);
+ if (ret < 0) {
+ error_report("vfio: failed to ioctl container: ret=%d, %s",
+ ret, strerror(errno));
+ }
+
+out:
+ vfio_put_group(group);
+ return ret;
}
--
1.8.3.2