From patchwork Wed Aug 20 09:52:07 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gavin Shan X-Patchwork-Id: 381598 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 9578E14009B for ; Wed, 20 Aug 2014 19:53:15 +1000 (EST) Received: from localhost ([::1]:54823 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XK2Zt-0004Uj-IE for incoming@patchwork.ozlabs.org; Wed, 20 Aug 2014 05:53:13 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42513) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XK2ZI-0003iP-UA for qemu-devel@nongnu.org; Wed, 20 Aug 2014 05:52:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XK2Z9-0007g5-Sb for qemu-devel@nongnu.org; Wed, 20 Aug 2014 05:52:36 -0400 Received: from e28smtp02.in.ibm.com ([122.248.162.2]:51316) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XK2Z8-0007e4-Ol for qemu-devel@nongnu.org; Wed, 20 Aug 2014 05:52:27 -0400 Received: from /spool/local by e28smtp02.in.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 20 Aug 2014 15:22:21 +0530 Received: from d28dlp02.in.ibm.com (9.184.220.127) by e28smtp02.in.ibm.com (192.168.1.132) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Wed, 20 Aug 2014 15:22:18 +0530 Received: from d28relay02.in.ibm.com (d28relay02.in.ibm.com [9.184.220.59]) by d28dlp02.in.ibm.com (Postfix) with ESMTP id F3D293940043 for ; Wed, 20 Aug 2014 15:22:17 +0530 (IST) Received: from d28av03.in.ibm.com (d28av03.in.ibm.com [9.184.220.65]) by d28relay02.in.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id s7K9qhH434930750 for ; Wed, 20 Aug 2014 15:22:43 +0530 Received: from d28av03.in.ibm.com (localhost [127.0.0.1]) by d28av03.in.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id s7K9qEVG021406 for ; Wed, 20 Aug 2014 15:22:14 +0530 Received: from shangw (shangw.cn.ibm.com [9.125.213.208]) by d28av03.in.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with SMTP id s7K9qD3G021345; Wed, 20 Aug 2014 15:22:13 +0530 Received: by shangw (Postfix, from userid 1000) id 566F13E0270; Wed, 20 Aug 2014 19:52:09 +1000 (EST) From: Gavin Shan To: qemu-devel@nongnu.org Date: Wed, 20 Aug 2014 19:52:07 +1000 Message-Id: <1408528328-11560-2-git-send-email-gwshan@linux.vnet.ibm.com> X-Mailer: git-send-email 1.8.3.2 In-Reply-To: <1408528328-11560-1-git-send-email-gwshan@linux.vnet.ibm.com> References: <1408528328-11560-1-git-send-email-gwshan@linux.vnet.ibm.com> X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 14082009-0005-0000-0000-000000972BFE X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 122.248.162.2 Cc: aik@ozlabs.ru, alex.williamson@redhat.com, Gavin Shan Subject: [Qemu-devel] [RFC PATCH 1/2] VFIO: Drop vfio_container_do_ioctl() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org 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; }