From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59687) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XQqwn-0003Xy-Ql for qemu-devel@nongnu.org; Mon, 08 Sep 2014 00:53:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XQqwb-0004vX-Ir for qemu-devel@nongnu.org; Mon, 08 Sep 2014 00:53:01 -0400 Received: from e23smtp03.au.ibm.com ([202.81.31.145]:43918) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XQqwa-0004tA-Uc for qemu-devel@nongnu.org; Mon, 08 Sep 2014 00:52:49 -0400 Received: from /spool/local by e23smtp03.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 8 Sep 2014 14:52:44 +1000 Received: from d23relay07.au.ibm.com (d23relay07.au.ibm.com [9.190.26.37]) by d23dlp01.au.ibm.com (Postfix) with ESMTP id E93932CE804D for ; Mon, 8 Sep 2014 14:52:41 +1000 (EST) Received: from d23av02.au.ibm.com (d23av02.au.ibm.com [9.190.235.138]) by d23relay07.au.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id s884roVS31785174 for ; Mon, 8 Sep 2014 14:53:51 +1000 Received: from d23av02.au.ibm.com (localhost [127.0.0.1]) by d23av02.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id s884qeah014786 for ; Mon, 8 Sep 2014 14:52:40 +1000 From: Gavin Shan Date: Mon, 8 Sep 2014 14:52:39 +1000 Message-Id: <1410151960-18199-2-git-send-email-gwshan@linux.vnet.ibm.com> In-Reply-To: <1410151960-18199-1-git-send-email-gwshan@linux.vnet.ibm.com> References: <1410151960-18199-1-git-send-email-gwshan@linux.vnet.ibm.com> Subject: [Qemu-devel] [RFC PATCH v3 1/2] VFIO: Drop vfio_container_do_ioctl() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: aik@ozlabs.ru, alex.williamson@redhat.com, Gavin Shan 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 --- 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