From patchwork Tue Oct 26 17:57:30 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Gunthorpe X-Patchwork-Id: 12585391 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 40883C433EF for ; Tue, 26 Oct 2021 17:57:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1BE1E60295 for ; Tue, 26 Oct 2021 17:57:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237996AbhJZSAF (ORCPT ); Tue, 26 Oct 2021 14:00:05 -0400 Received: from mail-bn8nam11on2062.outbound.protection.outlook.com ([40.107.236.62]:57056 "EHLO NAM11-BN8-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S236745AbhJZSAC (ORCPT ); Tue, 26 Oct 2021 14:00:02 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KM/dBmweed9r6oqE8LC6K7DWegMpGvhV14JtA1markeaKZmskbvPHBtid5K3AuUvBa0gP9xSO25e5aVLFRpige0geewpxanC7/0XyNSeoc9SudBjElIG+iqll5g96fw3MGIsW98mOCBh6FiD5R2hcBgagl7vzVRTsCDnmgyECeFMtmQYMZNk9RyA5f219L3zrWm0ZCfWL8uKvdiFOqZG89gZkegHBthInv28h4AH57KgkFqUo6ciaq7fVDg281Bf5HMoOCXvK4OFhXfQPsdw5JjM72aLWIKI+yR4eN2L4jfPDlmzEfKzAxoLQf0fcmeiY/4nsiVepDXY/lNTgS0Fng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=QC3K0ZTNLQY2XuYTQ4Y6FNyW26O+62P1rFjKjED6bQs=; b=jlxfY1N8sbjmikjHXXFnBqcaBStl48jILjalhDrY+vF+64BtB3ooiGoJtSjmbZlDAB1dqfkhhO45v1lbIaaz1Dp8DFam8hyvPbZg7tgT0Q6B4oRg0Y44jEBko1Qs0D3jk+W1KkTI3EE6WV83jBp48Kio+L9+GTzI/KNfkGT6EDrex/0WEK7yq3OQfY1JTL4Y525G0uSjPjjV262UwBXTq0iUqYRtONNF6e8abwWbZVZziNXwrfWifWFctYTPlw45sVyJXS3TmvyjLT4Y4Nu9QEWlaA888CpctFeRLErwHuSuIUyM3Vj09mkzmWEqgAKeYnpx/nPjhGeIhxduHRLB7A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QC3K0ZTNLQY2XuYTQ4Y6FNyW26O+62P1rFjKjED6bQs=; b=cRQzs2cAtIfu9K5e86MrYsk14CxskKkTAx4LJn7Rc3MRdwoBGdAT6optOAML8ifUsL4s+j7owRK7sUY14+L16mP3ow1oKl1cHyDyUQgkAzFHOCgObysu8cy3VW+Bg6HQ5bZ/b86vPnuqQL5UAnAIjkj0FUZwrHLdVDKuc7FvByDbPEnOKqLr71OIqYmUE/jDqaL4mToHBchbt64FRFVC0ml7KK80scpha+CUNmOMztmC8nrn9g9kRVGuYIdl5Lrj7sXAlY0YC5MNNU5pX+kuTLtgPR47OWI+EPA9bOK1gSHbVsunhPm1+JYIEuWLfcRUsKdpLh9kTYLwAzH2wSis4A== Authentication-Results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=nvidia.com; Received: from BL0PR12MB5506.namprd12.prod.outlook.com (2603:10b6:208:1cb::22) by BL1PR12MB5048.namprd12.prod.outlook.com (2603:10b6:208:30a::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.13; Tue, 26 Oct 2021 17:57:35 +0000 Received: from BL0PR12MB5506.namprd12.prod.outlook.com ([fe80::e8af:232:915e:2f95]) by BL0PR12MB5506.namprd12.prod.outlook.com ([fe80::e8af:232:915e:2f95%8]) with mapi id 15.20.4649.014; Tue, 26 Oct 2021 17:57:35 +0000 From: Jason Gunthorpe To: Alex Williamson , Christian Borntraeger , Cornelia Huck , Vasily Gorbik , Heiko Carstens , kvm@vger.kernel.org, linux-s390@vger.kernel.org, Matthew Rosato , Peter Oberparleiter , Halil Pasic , Vineeth Vijayan Cc: Eric Farman , Christoph Hellwig Subject: [PATCH v4 1/4] vfio/ccw: Remove unneeded GFP_DMA Date: Tue, 26 Oct 2021 14:57:30 -0300 Message-Id: <1-v4-cea4f5bd2c00+b52-ccw_mdev_jgg@nvidia.com> In-Reply-To: <0-v4-cea4f5bd2c00+b52-ccw_mdev_jgg@nvidia.com> References: X-ClientProxiedBy: YT3PR01CA0103.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:85::18) To BL0PR12MB5506.namprd12.prod.outlook.com (2603:10b6:208:1cb::22) MIME-Version: 1.0 Received: from mlx.ziepe.ca (206.223.160.26) by YT3PR01CA0103.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:85::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.13 via Frontend Transport; Tue, 26 Oct 2021 17:57:35 +0000 Received: from jgg by mlx with local (Exim 4.94) (envelope-from ) id 1mfQhZ-002BJs-Fe; Tue, 26 Oct 2021 14:57:33 -0300 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e6e5bcc2-6dac-4077-4ef1-08d998aa1735 X-MS-TrafficTypeDiagnostic: BL1PR12MB5048: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2089; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: w92Z+Vj+XmodbK8ft0CyKFtruTTkzHm2SGoB1ix+peeyJiWhK2TeLEe4D8lc0sq3AGsLyjYz2ZKGhITI8PIT88YNVXeZnebrv0xMmyhWyrFngHYxNrt5keaSN4cZxTTuubc2AhFRufSH/QmK+4PhxgFqPCWxMCcyjDydsaKphNBybFH6XOl3cwNUBOEz2KQ+JATm8S8DjIz6NaP9gXvcp8FS4vfytzTVBEIU+fE21dHZKhaUxdu0/ljyR6t/wNjve+Cvp/Ge3M2iPyJHeEyxF6jwWhQLdS7cWkp4jHCTaB3yfzvtAOoWR0jsXPtI3hmGrAg7rjwGoL0qo9kXIDaZ5Td6Ek9PpHTHgXA8Z3l1dyX0NMZTnce6SC7w70sLVKPguDpizyrkEExmqPgMvZ90WxBYi7+Iz0y6x3O6p/ml91Jm73TasGe9sHvZnH5asF62W04slEDrZ1LAjTRuKYSBmuL9hSk5WZtomTsSGTMmgns3Qql6qookFr9wzKJT6sGTpEM2sPuMItWNYMFkdcLHviS5qUV2yiA6OLYz8D4xsy+CJVdv3BT1CrEpuJp32k1ghf9Q1MtfVTpZ4YwxmkL+nBtFjAvw2rO1lFT9sLw/pAepUYXfYntLby94rQqqyRattjV69WITcdyZrkMHqV3o2rtFs8rScbYRrBEPbhRIrNTk8g6vyOYzVV2GQJrzmBZCJqjw1X+LkMYQTqfSoiw/QTEfiBUnZaJ79258xixAAiE= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR12MB5506.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(110136005)(54906003)(2906002)(36756003)(508600001)(2616005)(9746002)(316002)(921005)(426003)(4744005)(8676002)(66556008)(83380400001)(8936002)(86362001)(26005)(5660300002)(186003)(38100700002)(66946007)(4326008)(66476007)(9786002)(7416002)(4216001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: aS1nV1OYizwRwYa05I0yOiLTIbBRBeo0/LWUqd5ICmswe5oy+JEFfM6U9sracliAdlepHeyBzd5AJKmmErBTxwgbQGd0YRlZc34dvkUFb/mcj3ZJ/QlzuMWhKOsfHrAAR7mEurwbVBAEoSgG7wZDMrrzKGNfxGYN7qS+S4Cc07hWTX8dGRmqM1zkGq0L63tzNs4WmI2yyk0gQ5spY5s63IZHCzV+Ap1AbiaRRvRRqgRGBZEY3R2CJJEfnk1Ci+Rv4uLB2B9rsRWa9KoBtyAu/mRyJ8KPtDNKa1fWR1m0BVb5MOq/RpgEQBJS4AJH/FzPVhqi4so/bPtF+QpjT2HjABJp51+cYj71DAdLA2/PxK62qCf2JFPGzf6QTxnznBl/03jWfvMyjzZNdY0Dl244dpP9UKqcKQFjBwhF+JLu1/m82Ebb/v/cmDtQB8wTTfVvY1Yl6X+4aARIWGkCKI+1hHtn27LtCD7z1q5bbzg3SaZ48XlBcoDwWe8mku0nBJ8zXjAabH+xNHkmUweX2v9ENi575km9MCqbOLpGArNWMckJj6IgQYksIg1hXZeD4R5ByTEQflWLRNnRydU2fWGBkjV2wP7D64QXLm1GRtQqgVPNE4sZ7bbmAVpKSaIwpyBWfLkKU7dPd7wK22bLQ97V9SjmWTNA7VLAHegXSgbYAbMX7byDX1rRi23fcAzxtXKzN/6CayL76rsRtI8/xv6nWsHu/1m9889t4BVOGKOkxfoZ6Jb3IxoTUqk7AZHVbpcohA30cVlHaaHYXsTxBLfknhMNo4KOyTA+8BRMSZRmJcbkLUCoTY+g8G4ZB/+DpgxEPIzPs4ruCPwAMmyXMFoO9UzfPJPzqpcSjX1goZXrOtk4BlvRiD2PFLdVxQHncGOyWg0wCqfiVXubYxnlHRyWqzoS8C4vTF0MlNQnd/1oL/LUvJwFYIxlC6ln8vK1/EQjyVM7ZTWjR4/FWdd0ZaNhEJpmGCcWOiLwcoDPW4zKE08QlJBNJ1HnOeQ9lZqP94FYXZguoDDRnIhlgVfI+mBSq/ceESC4hRjwOj1rBBUu6sioUX440lpleIhDMDlyjjOfW3OwQFzfJrs4iT5PHhaOg/zNq2s1v/nbpKz9ExLw9QiKHXwM4sKnJkzqOvrNwcP+CEiMu8OIzztNm2g6Px2j1u9bzEl+Y5fR7FHRvbHdArOhnAqMkjCysGZijgpPP6rmO0dpecAztm2nTCsG1LEqLZFXqQumcTP5QpSGfUuGSLNwubiLBbL0675TVDLKnY0rYCfoSdnrYzvgH+FIxvk+ds4xOpJPO53A+CC5FrXRIwS4PHH8q6gbvKW+x0p13C8+3BZ2soreMqPf1A65L5D8Va7B3ln+dKWN0NO1xZF/Ym3L88vOzLynmc3DaPZUnXs7m9x45PT3L96c38K+5hoL5ag/zXNUuHtEc+ZWsOQpdWTlV7Ez9YNUmN0mmEpk2Sqx+AfdItx+SKNmYgEigHwGZFFk81mRlzmtdatBoRXdfCyTeRw8FtMyutRAbWjkFAKXz5JWdUjLvUqYCTQwxiaLB/eSL03+d+ijAVPROqKbUhg= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: e6e5bcc2-6dac-4077-4ef1-08d998aa1735 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB5506.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2021 17:57:35.2819 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: PN5MzekhUioanBAonF8E9VjDr20WZhIx9u1xZTPoHwWpamEuSup5m3h0P4ctQ86H X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5048 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Since the ccw_io_region was split out of the private the allocation no longer needs the GFP_DMA. Remove it. Reported-by: Christoph Hellwig Fixes: c98e16b2fa12 ("s390/cio: Convert ccw_io_region to pointer") Reviewed-by: Matthew Rosato Reviewed-by: Eric Farman Signed-off-by: Jason Gunthorpe --- drivers/s390/cio/vfio_ccw_drv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/s390/cio/vfio_ccw_drv.c b/drivers/s390/cio/vfio_ccw_drv.c index 76099bcb765b45..371558ec92045d 100644 --- a/drivers/s390/cio/vfio_ccw_drv.c +++ b/drivers/s390/cio/vfio_ccw_drv.c @@ -161,7 +161,7 @@ static int vfio_ccw_sch_probe(struct subchannel *sch) return -ENODEV; } - private = kzalloc(sizeof(*private), GFP_KERNEL | GFP_DMA); + private = kzalloc(sizeof(*private), GFP_KERNEL); if (!private) return -ENOMEM; From patchwork Tue Oct 26 17:57:31 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Gunthorpe X-Patchwork-Id: 12585395 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 42FF5C433F5 for ; Tue, 26 Oct 2021 17:57:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2367E610A0 for ; Tue, 26 Oct 2021 17:57:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238003AbhJZSAI (ORCPT ); Tue, 26 Oct 2021 14:00:08 -0400 Received: from mail-co1nam11on2068.outbound.protection.outlook.com ([40.107.220.68]:12137 "EHLO NAM11-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S237991AbhJZSAD (ORCPT ); Tue, 26 Oct 2021 14:00:03 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EO32wazu2L5kzq/ovdKh0AlFlAgBdu5RmkKDmXuBNCHRpvMQ6KO0nnMRz77wy6AQZ9QnmhWVJZqQ0ERX2JLo79sp4lh2ov2M8P9CshsWKmtop9ZTeIhrHafGaAdn82HnGLvncu9zC27GPzcDn9M+TU/UNeZlurIC7WBrbUmC2IGryD1X2tKSQRMz2CL3NvvprDpsNGYBJ1Q7a6qnVRsVHAo2l/8vbhvPIKFvdLhDZ17YfjLxjQl3Nr2+wa5cQHnpWWrSSMIcl6auFbpSiScLxXXjm7hGBrV8Yt4MBH/7xjL4SJRXWEFx/j9KB6L9XiwWiV2g38CbTr7zbYn4PSd2uA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=YTh6ZUm2PrgORCNyCbn+2r3MpGIT/x7JNE9sdNM2aA8=; b=X+U+beuG7/+4eS9vI6khWLZ0qgIWT5TjbG4oDsTl5U4qztyg7T4GIFATHUzig+PHRmMnVl3Z+fJLDsyEVcq+61xqp1hjy60kiGyXaNfnJyY5YQ6OoCBU7b3iOqkTHfohgwNjQp/1btotxWgbsVsEFL0GPgivDceNm51TDKaSKYN3NnSa6WWTv1odzmqRto7AnKcXFL3UUaCe61hSGkvFW4WoMs1ergrcpZJho2WKavxvFpRFf1TUEYyteBDrXktJpPREqBmoBrQDwbDeJipywgKmWu0tBH5G4tR95TiXtRa2ztt3QIOQcSYDdNRlFjB5YG6eBYQ7zFSS+NtdHFmtUg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YTh6ZUm2PrgORCNyCbn+2r3MpGIT/x7JNE9sdNM2aA8=; b=J/N1VGsg9n9dzgH7ma1MmoCxJrYYVpYpDGyGB36rg/wiwxoBH/J/BEq5wHKhNLbbgn8MMZUmrWcDFYip3z4niPDTTJ8L2nIvGQtQacIR6Py4jVny7OEMD/IzvGEM+1T8nxpZa+sdPVwyV2x9DmBlcUXk01VAecDHC4c9j1hFfvBR1MTDbVZuLkmaT+oujzrTx2EjrLCzLS0PLR2hXQd2AMRLF3gVCF3wrnd8DAWI4C0MhHylyxjnpTBIdDx4S5PdLdVLaqezQxhPIt6Dm2uj4hIqo2c7oW0Isvh5w8IqXaHjtRKEbTsSpSyCYJGP1M13mdTWW1p8CgKdtzbDhWTzaQ== Authentication-Results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=nvidia.com; Received: from BL0PR12MB5506.namprd12.prod.outlook.com (2603:10b6:208:1cb::22) by BL1PR12MB5077.namprd12.prod.outlook.com (2603:10b6:208:310::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4628.16; Tue, 26 Oct 2021 17:57:37 +0000 Received: from BL0PR12MB5506.namprd12.prod.outlook.com ([fe80::e8af:232:915e:2f95]) by BL0PR12MB5506.namprd12.prod.outlook.com ([fe80::e8af:232:915e:2f95%8]) with mapi id 15.20.4649.014; Tue, 26 Oct 2021 17:57:37 +0000 From: Jason Gunthorpe To: Alex Williamson , Christian Borntraeger , Cornelia Huck , Vasily Gorbik , Heiko Carstens , kvm@vger.kernel.org, linux-s390@vger.kernel.org, Matthew Rosato , Peter Oberparleiter , Halil Pasic , Vineeth Vijayan Cc: Eric Farman , Christoph Hellwig Subject: [PATCH v4 2/4] vfio/ccw: Use functions for alloc/free of the vfio_ccw_private Date: Tue, 26 Oct 2021 14:57:31 -0300 Message-Id: <2-v4-cea4f5bd2c00+b52-ccw_mdev_jgg@nvidia.com> In-Reply-To: <0-v4-cea4f5bd2c00+b52-ccw_mdev_jgg@nvidia.com> References: X-ClientProxiedBy: YT1PR01CA0122.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:2c::31) To BL0PR12MB5506.namprd12.prod.outlook.com (2603:10b6:208:1cb::22) MIME-Version: 1.0 Received: from mlx.ziepe.ca (206.223.160.26) by YT1PR01CA0122.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:2c::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.13 via Frontend Transport; Tue, 26 Oct 2021 17:57:36 +0000 Received: from jgg by mlx with local (Exim 4.94) (envelope-from ) id 1mfQhZ-002BJv-GS; Tue, 26 Oct 2021 14:57:33 -0300 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 14f1b6a6-0f25-4caf-7bb5-08d998aa1857 X-MS-TrafficTypeDiagnostic: BL1PR12MB5077: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:785; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: dAZt9mqavBvszAKsQ4SXYWaj/KPwfYvh0Y5ua1+psRwdxOJ2YNhZQN08t7nPwHhn0odqKgkR/D8xLGHAdL8MGTJrZtAfthOMI4W7PqAQnASfe5q5vSk8OJsZXXEJAI3slLg4IET7JBwqYsUDyZ7sKdt2fk9nnaTLsJTXaZZ3l5pcrpqUBdTgewlK6TZXANJ8QVv9Qwu25rdnukS+/iY4X6v/4tvCr+ixUyO5sB8fJRhpWL2QmzLbCAamp2snUrNY398Sf3pUQFnluRqco4Gy1W0wbW/AtYgDI61o/kHkDxTpJWQdrAFVnQI8ji8JbFsWRD3w/fDfa2KO0N0O7jOCkedYsYRojvq8a42/ks82ovlWngXYQSIosCKH6D2ECk4bz24WIb2OjDwzarVEb9gJp82vfb/CcnDS+yrsFvT8yhlMzRpf6b/D3SVwERdmafiT7fVDlr7vtaMJUjCmVQgWIr73iHmiFUfWUIg0wyFOQ0/5BfFoeCwey+Y35tMT9MHf2wmFCKkg/8gxeKwklvmCiPM2+AiEQ/X4Lfuen+Xrx6xR18jH8dldZyJYF9Bx9qg7tN36e40IKAYIbDDXFiuufu6wn9e44UsHS9+tFEQDIO8LaZtcJQHfDre92+AQTwlfYTkf5yPd7v0rnb9ZkxIaqmUCYk/ZBFEKVXytYHtc8sdtLky4fkQ413z3yUlu+dZCbBqafimhfwpO5bC5Og57Cw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR12MB5506.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(66946007)(5660300002)(66476007)(66556008)(7416002)(186003)(83380400001)(26005)(508600001)(4326008)(36756003)(9746002)(38100700002)(9786002)(426003)(54906003)(110136005)(2906002)(8676002)(2616005)(316002)(86362001)(8936002)(921005)(4216001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: SiF9IDGbCT4fm4GcG5OVOH99W4zj9iLneonGuQdGPRnf8aF92r1dqQ5sD33HqtOmDo8oy/GYaraUmBWmQEMvSTcWnIipoPa2Zg/xA593NgtoUuPyQX7wHyK7rNA7y/mwDTVfsb/LgiNb5I0DNExFxHLSG4AHRz7ZY7hRmKwBRPm4RqWgaRrz3SHt2w0DFGhzIfdG+P8DpQo9J1iv/Lmc0OZuG8xGrN9CFQYzCGYhWMhfcVoLA0GQnUGgioYUoOfhi0pzuC9gOJtyWXLHyEjZKx0YqAmp0YvVhzr0V4HmB29hFo/2GeBEk1QvOT6c2T9JlQJe3l/ud8o6wES9nRQ4qBj42I8CpZc4XLgR21TqCFqvAi33T+++TE3XMFRDFwzvY83PGpFNskLeiifz7TZobR9/g5p8rUcDc0gcpd/c8db19HKL+rqlIxwA7wK+R3xGPziiqVfja4aCbMdkSG2J6qVqHK+Ctasf3OUo+6sROjBIZSkMyYSUgwKHytN6QnfGaL/vj3uHvPFgiMpMyYf3P99O2Xb8uCBqT2BcUOlxnoH+jxLLusq5JW2vCRk74iiWO7JMUAQTyRKxHBgiWRezwpLk4JcjVBk6EDS5q2kGxvMfsAUxhC5mqG5PDZjHtp1m+1nAu09YNY8R9ItqdFKhZh25AiGJeQf+5lYWtaU3mDevA1XQZ9bT8cosEzwESee6OhSG2E1W10s3rzOzygjc3Ip9X8FRrqU3z8R88xL+JiMufZQ+Rp2QFqhADGMIMKi0uwwCYnXZOok799Z1uMtGO6/nA3OVpLb24oD5Gq5qahI8u0kxyzFkfUQXvIRERNTDUrNK5g8M5pziunJ5p24U02LmMhAlH0BOdj1AyflTWAcONobJ9sGTPRPntw4Hso+gQzhymUqMToZb5YLoRIaKxq8GLuVjWCv42XO/KhII77Htp9nz42wC6z16Kw+P8ZPw2So3qTBown22QLsegKeTS6MA7an+MNw+Ju+l1UeNhxMEM9afI6oTjOCzbE80d+jAxLqtTvzxaWQUM40eUJEPKId0dEBUC1jaR3j2duge+Wq2d6MfNfY/YnOcN4iD35A5tMqVflzOzP7aYwqUfBFwc4xEN19KnWea46wy2ArDPfTVKUnhztiyNtImBM5vjip7H0eUt0qvHGrTn1BGPKjFmfYXtVPclVP8EPex4O6wHU3OR4qXlDN2jlLRHpvsd0AhXag3G8v+M7BR/gQusnyWf7NDvR/q/JT16U3VdvGIkRibf9RX9N18rYB1s+1lK5XbwyuLxjleVFl7+nDGGGsMrjWm8G7GlS2ofSgR1V0LBsTnNfJPLrYGA8rS3zgLzhfOmr6zyy86fCbE7KFjXF/MyPgjz8IxrdTt5Enpnku9w2Cly+Zi9F2/UQrKinrDEwhEudbPDbnliFEjmwDw9XUegrNGLOMK0oRNYpHpl2//5iOBgU4nAVr2IIjqiXdoXWWj2WRGDwYrwYDfXBkabR790GL8zpdcMRZ15nutANHXnPQDHajYdowyLmBO8ukh31Qy7w/oMFD2ZaBbAnl9uEvH+yfPx1027ipq3lYW9sjJYLE= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 14f1b6a6-0f25-4caf-7bb5-08d998aa1857 X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB5506.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2021 17:57:37.2005 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 8f/MAHlQe1FZTaxFWSeMH3AHkb7XS/c1aLgliFv+rRsjuTtVLAmz+EOwA17x/L2y X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5077 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Makes the code easier to understand what is memory lifecycle and what is other stuff. Reviewed-by: Eric Farman Signed-off-by: Jason Gunthorpe --- drivers/s390/cio/vfio_ccw_drv.c | 137 ++++++++++++++++++-------------- 1 file changed, 78 insertions(+), 59 deletions(-) diff --git a/drivers/s390/cio/vfio_ccw_drv.c b/drivers/s390/cio/vfio_ccw_drv.c index 371558ec92045d..e32678a71644fb 100644 --- a/drivers/s390/cio/vfio_ccw_drv.c +++ b/drivers/s390/cio/vfio_ccw_drv.c @@ -137,16 +137,80 @@ static void vfio_ccw_sch_irq(struct subchannel *sch) vfio_ccw_fsm_event(private, VFIO_CCW_EVENT_INTERRUPT); } -static void vfio_ccw_free_regions(struct vfio_ccw_private *private) +static struct vfio_ccw_private *vfio_ccw_alloc_private(struct subchannel *sch) { - if (private->crw_region) - kmem_cache_free(vfio_ccw_crw_region, private->crw_region); - if (private->schib_region) - kmem_cache_free(vfio_ccw_schib_region, private->schib_region); - if (private->cmd_region) - kmem_cache_free(vfio_ccw_cmd_region, private->cmd_region); - if (private->io_region) - kmem_cache_free(vfio_ccw_io_region, private->io_region); + struct vfio_ccw_private *private; + + private = kzalloc(sizeof(*private), GFP_KERNEL); + if (!private) + return ERR_PTR(-ENOMEM); + + private->sch = sch; + mutex_init(&private->io_mutex); + private->state = VFIO_CCW_STATE_NOT_OPER; + INIT_LIST_HEAD(&private->crw); + INIT_WORK(&private->io_work, vfio_ccw_sch_io_todo); + INIT_WORK(&private->crw_work, vfio_ccw_crw_todo); + atomic_set(&private->avail, 1); + + private->cp.guest_cp = kcalloc(CCWCHAIN_LEN_MAX, sizeof(struct ccw1), + GFP_KERNEL); + if (!private->cp.guest_cp) + goto out_free_private; + + private->io_region = kmem_cache_zalloc(vfio_ccw_io_region, + GFP_KERNEL | GFP_DMA); + if (!private->io_region) + goto out_free_cp; + + private->cmd_region = kmem_cache_zalloc(vfio_ccw_cmd_region, + GFP_KERNEL | GFP_DMA); + if (!private->cmd_region) + goto out_free_io; + + private->schib_region = kmem_cache_zalloc(vfio_ccw_schib_region, + GFP_KERNEL | GFP_DMA); + + if (!private->schib_region) + goto out_free_cmd; + + private->crw_region = kmem_cache_zalloc(vfio_ccw_crw_region, + GFP_KERNEL | GFP_DMA); + + if (!private->crw_region) + goto out_free_schib; + return private; + +out_free_schib: + kmem_cache_free(vfio_ccw_schib_region, private->schib_region); +out_free_cmd: + kmem_cache_free(vfio_ccw_cmd_region, private->cmd_region); +out_free_io: + kmem_cache_free(vfio_ccw_io_region, private->io_region); +out_free_cp: + kfree(private->cp.guest_cp); +out_free_private: + mutex_destroy(&private->io_mutex); + kfree(private); + return ERR_PTR(-ENOMEM); +} + +static void vfio_ccw_free_private(struct vfio_ccw_private *private) +{ + struct vfio_ccw_crw *crw, *temp; + + list_for_each_entry_safe(crw, temp, &private->crw, next) { + list_del(&crw->next); + kfree(crw); + } + + kmem_cache_free(vfio_ccw_crw_region, private->crw_region); + kmem_cache_free(vfio_ccw_schib_region, private->schib_region); + kmem_cache_free(vfio_ccw_cmd_region, private->cmd_region); + kmem_cache_free(vfio_ccw_io_region, private->io_region); + kfree(private->cp.guest_cp); + mutex_destroy(&private->io_mutex); + kfree(private); } static int vfio_ccw_sch_probe(struct subchannel *sch) @@ -161,53 +225,19 @@ static int vfio_ccw_sch_probe(struct subchannel *sch) return -ENODEV; } - private = kzalloc(sizeof(*private), GFP_KERNEL); - if (!private) - return -ENOMEM; + private = vfio_ccw_alloc_private(sch); + if (IS_ERR(private)) + return PTR_ERR(private); - private->cp.guest_cp = kcalloc(CCWCHAIN_LEN_MAX, sizeof(struct ccw1), - GFP_KERNEL); - if (!private->cp.guest_cp) - goto out_free; - - private->io_region = kmem_cache_zalloc(vfio_ccw_io_region, - GFP_KERNEL | GFP_DMA); - if (!private->io_region) - goto out_free; - - private->cmd_region = kmem_cache_zalloc(vfio_ccw_cmd_region, - GFP_KERNEL | GFP_DMA); - if (!private->cmd_region) - goto out_free; - - private->schib_region = kmem_cache_zalloc(vfio_ccw_schib_region, - GFP_KERNEL | GFP_DMA); - - if (!private->schib_region) - goto out_free; - - private->crw_region = kmem_cache_zalloc(vfio_ccw_crw_region, - GFP_KERNEL | GFP_DMA); - - if (!private->crw_region) - goto out_free; - - private->sch = sch; dev_set_drvdata(&sch->dev, private); - mutex_init(&private->io_mutex); spin_lock_irq(sch->lock); - private->state = VFIO_CCW_STATE_NOT_OPER; sch->isc = VFIO_CCW_ISC; ret = cio_enable_subchannel(sch, (u32)(unsigned long)sch); spin_unlock_irq(sch->lock); if (ret) goto out_free; - INIT_LIST_HEAD(&private->crw); - INIT_WORK(&private->io_work, vfio_ccw_sch_io_todo); - INIT_WORK(&private->crw_work, vfio_ccw_crw_todo); - atomic_set(&private->avail, 1); private->state = VFIO_CCW_STATE_STANDBY; ret = vfio_ccw_mdev_reg(sch); @@ -228,31 +258,20 @@ static int vfio_ccw_sch_probe(struct subchannel *sch) cio_disable_subchannel(sch); out_free: dev_set_drvdata(&sch->dev, NULL); - vfio_ccw_free_regions(private); - kfree(private->cp.guest_cp); - kfree(private); + vfio_ccw_free_private(private); return ret; } static void vfio_ccw_sch_remove(struct subchannel *sch) { struct vfio_ccw_private *private = dev_get_drvdata(&sch->dev); - struct vfio_ccw_crw *crw, *temp; vfio_ccw_sch_quiesce(sch); - - list_for_each_entry_safe(crw, temp, &private->crw, next) { - list_del(&crw->next); - kfree(crw); - } - vfio_ccw_mdev_unreg(sch); dev_set_drvdata(&sch->dev, NULL); - vfio_ccw_free_regions(private); - kfree(private->cp.guest_cp); - kfree(private); + vfio_ccw_free_private(private); VFIO_CCW_MSG_EVENT(4, "unbound from subchannel %x.%x.%04x\n", sch->schid.cssid, sch->schid.ssid, From patchwork Tue Oct 26 17:57:32 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Gunthorpe X-Patchwork-Id: 12585393 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 72677C43219 for ; Tue, 26 Oct 2021 17:57:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 58864610A0 for ; Tue, 26 Oct 2021 17:57:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237997AbhJZSAH (ORCPT ); Tue, 26 Oct 2021 14:00:07 -0400 Received: from mail-bn8nam11on2062.outbound.protection.outlook.com ([40.107.236.62]:57056 "EHLO NAM11-BN8-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S237988AbhJZSAC (ORCPT ); Tue, 26 Oct 2021 14:00:02 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=F49NpBfTyGkjxY9w6+QUlzjXrbDJ0SPBwbglqRBNxqKcwVlI3xfQVCn9VYu7VvoaLYuKXIBN859+yhrtTroyXa1ddhPdploPA+JN1a7vqjhUbzSZh/vd+HrxIP4AOz0XX7ekfdrf7svhPbzgJ/sAYmnQxhnT1b+A/ivPV/iHU1dZwJbNX+dZOVSbDPzgBbpbaB5hGDz1J5HlkYEjso8xOicGlYbO1YtUttPyYo30E4ifwVsCyBYZOY/YorLDQ4VtdCUHVJPRqgcm/dZdNnyUjELNsH4R/xVnqOQlde/veF/OtD0wO+VW2qXbtGFt5r+nE/vr1T/FiaVIK3EP+j/FlA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=IYcXEm6RVhMLVup7gQaCrlAlylWOGFSxlS3RrQwdBjY=; b=ligw5zzyoTDt3tW0ckRDPPMm+jOQIrCG22UBWTf5/NzXgPnUjFqSP7i+1vM5FUD0OZ3r9QCQpGmjxgwohjnlrpNIjjw5TvAT3ezWL2YUKkXu8wb1wqIj/C/0o8MqAXvloScGFTFgHuIbTlSOs6HTntZ+RHGYmLg9ycx85MkG1NnTV8V/jj9dLdADILquSQJJhLVHmefwtRwr+l5kNtYs2BgO7LsmNHdgrtQwAkUJnKTajTOAHRlplZ+HBQA9T+9vIft6D66QyWhwoNProEDtj9G5ibiy2jNW7ejGRWQY9fWEkOfaJ+QpjIqvRHuaSo5wp6tVoJzSsckJLrhnKhz/Tw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IYcXEm6RVhMLVup7gQaCrlAlylWOGFSxlS3RrQwdBjY=; b=G6iF2TUGB+6W9M8fNu2Ruy89HDIqbnuRV5KhX2qZ+3OIc/PTuRzrMTX1bCTEBqgUbUeE+1mey0GgyiJ9TswQid8EYfHOV1MHw4o0338jklwEQEsJnem2tTvtrBiGpI4DMt0TWgzZRTH6QA7Es1BKU1Ts6NZ/XWd1nIYlat98Hon7MDA2eibhN5WLv1sQxxugc604KJ07xYHqYHH9WJzJP4kUVkdCydeFQiQM2AmnOCVT8n3ysvbZ2FKxY6livsWHKQt0vff6qlnJw1SrQ3+BGNqN7DsM+mRRxlI7/Cjtijqh372+pOvgfvLApCmoD+3jQajAT9JE2b0RH9DxBycvzA== Authentication-Results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=nvidia.com; Received: from BL0PR12MB5506.namprd12.prod.outlook.com (2603:10b6:208:1cb::22) by BL1PR12MB5048.namprd12.prod.outlook.com (2603:10b6:208:30a::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.13; Tue, 26 Oct 2021 17:57:36 +0000 Received: from BL0PR12MB5506.namprd12.prod.outlook.com ([fe80::e8af:232:915e:2f95]) by BL0PR12MB5506.namprd12.prod.outlook.com ([fe80::e8af:232:915e:2f95%8]) with mapi id 15.20.4649.014; Tue, 26 Oct 2021 17:57:36 +0000 From: Jason Gunthorpe To: Alex Williamson , Christian Borntraeger , Cornelia Huck , Vasily Gorbik , Heiko Carstens , kvm@vger.kernel.org, linux-s390@vger.kernel.org, Matthew Rosato , Peter Oberparleiter , Halil Pasic , Vineeth Vijayan Cc: Eric Farman , Christoph Hellwig Subject: [PATCH v4 3/4] vfio/ccw: Pass vfio_ccw_private not mdev_device to various functions Date: Tue, 26 Oct 2021 14:57:32 -0300 Message-Id: <3-v4-cea4f5bd2c00+b52-ccw_mdev_jgg@nvidia.com> In-Reply-To: <0-v4-cea4f5bd2c00+b52-ccw_mdev_jgg@nvidia.com> References: X-ClientProxiedBy: YTOPR0101CA0022.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b00:15::35) To BL0PR12MB5506.namprd12.prod.outlook.com (2603:10b6:208:1cb::22) MIME-Version: 1.0 Received: from mlx.ziepe.ca (206.223.160.26) by YTOPR0101CA0022.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b00:15::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.14 via Frontend Transport; Tue, 26 Oct 2021 17:57:35 +0000 Received: from jgg by mlx with local (Exim 4.94) (envelope-from ) id 1mfQhZ-002BK1-Ha; Tue, 26 Oct 2021 14:57:33 -0300 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6cb06bc1-7ea8-43fc-9366-08d998aa173e X-MS-TrafficTypeDiagnostic: BL1PR12MB5048: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5236; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ESun+9LqGhuDx71rGyc0dnRJSTCrPpJJLmWiSvEJg5OndSk0ddY+PvBFDBIpOLZ2/wo3IPA3aXn+0AALQZtTWLHTIWSGtm7GeKZBX/14PZQGa82dNv3krUzXy12oSMCkGvzExTZWsEogEKHjxIN7sMtsmzPtERA7SMjvRYyYv2l7tQm6enSJ4SKSY1pkKLmrtuR78HTm1eo79PLX4Ta+gRA7Z0b4Vi/OwKksx+xp0JHmKnOfnczoq5AaeNbwIfmcfJBZj9LWPw+Uv3WC9YVD0MhDQKO8sE8B549FWLRwSaZcRK1e1GOebxPUMHZCLZqrEViuuJbQAm9wdHr5FL7IJys6l6yn33g50IGzpgguqiw/U75gAmIeVvN0asCIy5P9Ufjo+ro0OW8f4WhaObvSjWob78jy4PiWFhOM7LA6bu+6VYkvc51ic7/eb4qtZOT8ipHpcdyy1BBj13VZD0Yn86Q2uKTey0kGNAVzkhAaN64DTM8ty6ZX0i7FrdKy39gtAtCmTQdBm/uUlD86OUr8l6bgreITeICaWOUHY8LuO6mKQ8bml4f/dxzAdc2FvXdDzsIUzrF6ip8Ct3/hC7TETwZD8boeTrCneWrwSiby9kp4xMsp9wazp5BoazLszMK3RUX93P0XWUtazBj3FaisMGA+/uYj/nevp73yTqFXVbOL04ZkxElmIoohX0SEVYflBn5CXfSEi8p8feuPskIXAu+1CHv75dZ0gKl2dzKMqjA= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR12MB5506.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(110136005)(54906003)(2906002)(36756003)(508600001)(2616005)(9746002)(316002)(921005)(426003)(8676002)(66556008)(83380400001)(8936002)(86362001)(26005)(5660300002)(186003)(38100700002)(66946007)(4326008)(66476007)(9786002)(7416002)(4216001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: MTpr1HtwYT0tjMEsy40pFVmr3+JouiDEIbKdlXbJMokljDoSSMNBH8nNoEqPyA9O1kfDFScP1+u3ibP+F09wsqGoThmlxQRWxt5mjaWvasIXTah7tbV723fuoxQukpp5ea0oDqL5838NrJ4JhhsZRJFblmmkeZgbvjYhr7wHnrgoMoOxwUa+7rXRQsphf+iBTy0YR+3XdCON4Bxy8Vs6TsQ+QB1wQ/TUuw4JgGzXCL+mgyW9Hlel8QRYKiuFweun843lOrXS5ZtuSXHHbqCr1eud1wChcImYW0ViJ+mhbUak11SDgRvMfgkB1Pbd6Xy12XwAgHix9fmtK1KPgHpZ32FWWqiBUbhVk7k3lnTUC0SK5on/Z413IURSZ4GPWA588nirBXBUgPSAeZ4OcS6eroWT07tmoCXBKHDBWMdVowKWjeH9BaoUbNANWv+EpL3Q/S3pyFbEF8Q+2HM2iagA+Mqz9PsmSOij6/YSye5dHDW2O2ZWEKMtyc8jBJA7nIlWtoWWS+Owyg/ytGpPzuFJR+TWoZNhoPyRDEY8rBICXZSPKYoxyTvzqQbLaz+einxp13jpxhDJdycqWAXlJP8PbD4a/o7hvSw+2iZ5Aqe6ZIOrEvp5ORZ73mWmOZ1UMVSGfKBfN7CPYPTc98uQgWdza7oLEERaMdcWcnNEx4CQb4bsNAS6MJIHvKD+n/8bPeSnY0HO52ghm94j7HW5L1q9y9Yhr+FzNAVIJC85mhN+9cN1/rLxHYSjXT55J9aOaB9LYwleyCBS+crg7CzrIPB8kvaGPBp3dxk2wkJm95WRBKeE7N5L/imCVZljQJVsHajfQu91Atb8cGDGB+zuf5JmnHNousx9PkU9Lyf1mfeDee9adv/rXMWBMOcxUiQ484RlitO+a7QgUiUSrj6iXFyEXITlVoYvM6V6y05RAayqLoMDTAo+KbZnGkDtSYMMJ7tV7foxDhcGQDfJ706UgnKHeeA0wn3FAmvtmlaXdu7XVFjt8sU2PxvBdFif1w/YSuCHZpDyo1RtNFOKJIqPx3/8JHCiFf5h7QYM4LjR1S9VJEKq8asgBM9Leg5SFxrNblKsaNTQFHu116/NImPFUQIls6zCMm60kohRNw29K61xtGwRYyDQ2sUSBw5DqS1BLezJQx1w+14HmMwvTL8pSJnSHOHARpDlyNsjz4MVCcYLZ7XJVjooNmd9neyboAGB3SAh49lEhh7HTHJ04MAaEf+JCOdtLfG5zobOx6+v7xKxxzM1ThKRBhnE7pzguUPS+9MTSXgLYyYqi1GZb7czsiHUJj/0LiZ0ITG4j/Gdid1OEUTmzRcmaUZJMLNS0EIxBi21SV0M5TJp5/izWefdsh6eW6DTUIsB0gCOZlRw4FBZ7+tJpor8wKNuV/dI99iXnHgc2kKRdhOH4ljjJt+8RvV6KhQS7hPU6BUWmviy0Zgujb+85845bzRVg/gXxCCsulEM7pQp53QUep07y3Zxar+XA53YAJXX/TX6t1OnVL5tKkP2IAzeSxpOZv5wOZ82z0iQsf9mxJ+Vg4/5R84dwCqlvx8Qtp+C2so0h46zjlBDNx0= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6cb06bc1-7ea8-43fc-9366-08d998aa173e X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB5506.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2021 17:57:35.3466 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: K2dE3HAD2cwyWq4OXWcbhU5pfiEdcXb6x58sdwZJ67QG1WnoEfCJ4E6CAbqr7LO0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5048 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org mdev_device should only be used in functions assigned to ops callbacks, interior functions should use the struct vfio_ccw_private instead of repeatedly trying to get it from the mdev. Reviewed-by: Christoph Hellwig Reviewed-by: Cornelia Huck Reviewed-by: Eric Farman Signed-off-by: Jason Gunthorpe --- drivers/s390/cio/vfio_ccw_ops.c | 37 +++++++++++++-------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/drivers/s390/cio/vfio_ccw_ops.c b/drivers/s390/cio/vfio_ccw_ops.c index 7f540ad0b568bc..1edbea9de0ec42 100644 --- a/drivers/s390/cio/vfio_ccw_ops.c +++ b/drivers/s390/cio/vfio_ccw_ops.c @@ -17,13 +17,11 @@ #include "vfio_ccw_private.h" -static int vfio_ccw_mdev_reset(struct mdev_device *mdev) +static int vfio_ccw_mdev_reset(struct vfio_ccw_private *private) { - struct vfio_ccw_private *private; struct subchannel *sch; int ret; - private = dev_get_drvdata(mdev_parent_dev(mdev)); sch = private->sch; /* * TODO: @@ -61,7 +59,7 @@ static int vfio_ccw_mdev_notifier(struct notifier_block *nb, if (!cp_iova_pinned(&private->cp, unmap->iova)) return NOTIFY_OK; - if (vfio_ccw_mdev_reset(private->mdev)) + if (vfio_ccw_mdev_reset(private)) return NOTIFY_BAD; cp_free(&private->cp); @@ -201,7 +199,7 @@ static void vfio_ccw_mdev_close_device(struct mdev_device *mdev) if ((private->state != VFIO_CCW_STATE_NOT_OPER) && (private->state != VFIO_CCW_STATE_STANDBY)) { - if (!vfio_ccw_mdev_reset(mdev)) + if (!vfio_ccw_mdev_reset(private)) private->state = VFIO_CCW_STATE_STANDBY; /* The state will be NOT_OPER on error. */ } @@ -311,12 +309,9 @@ static ssize_t vfio_ccw_mdev_write(struct mdev_device *mdev, return -EINVAL; } -static int vfio_ccw_mdev_get_device_info(struct vfio_device_info *info, - struct mdev_device *mdev) +static int vfio_ccw_mdev_get_device_info(struct vfio_ccw_private *private, + struct vfio_device_info *info) { - struct vfio_ccw_private *private; - - private = dev_get_drvdata(mdev_parent_dev(mdev)); info->flags = VFIO_DEVICE_FLAGS_CCW | VFIO_DEVICE_FLAGS_RESET; info->num_regions = VFIO_CCW_NUM_REGIONS + private->num_regions; info->num_irqs = VFIO_CCW_NUM_IRQS; @@ -324,14 +319,12 @@ static int vfio_ccw_mdev_get_device_info(struct vfio_device_info *info, return 0; } -static int vfio_ccw_mdev_get_region_info(struct vfio_region_info *info, - struct mdev_device *mdev, +static int vfio_ccw_mdev_get_region_info(struct vfio_ccw_private *private, + struct vfio_region_info *info, unsigned long arg) { - struct vfio_ccw_private *private; int i; - private = dev_get_drvdata(mdev_parent_dev(mdev)); switch (info->index) { case VFIO_CCW_CONFIG_REGION_INDEX: info->offset = 0; @@ -406,19 +399,16 @@ static int vfio_ccw_mdev_get_irq_info(struct vfio_irq_info *info) return 0; } -static int vfio_ccw_mdev_set_irqs(struct mdev_device *mdev, +static int vfio_ccw_mdev_set_irqs(struct vfio_ccw_private *private, uint32_t flags, uint32_t index, void __user *data) { - struct vfio_ccw_private *private; struct eventfd_ctx **ctx; if (!(flags & VFIO_IRQ_SET_ACTION_TRIGGER)) return -EINVAL; - private = dev_get_drvdata(mdev_parent_dev(mdev)); - switch (index) { case VFIO_CCW_IO_IRQ_INDEX: ctx = &private->io_trigger; @@ -524,6 +514,8 @@ static ssize_t vfio_ccw_mdev_ioctl(struct mdev_device *mdev, unsigned int cmd, unsigned long arg) { + struct vfio_ccw_private *private = + dev_get_drvdata(mdev_parent_dev(mdev)); int ret = 0; unsigned long minsz; @@ -540,7 +532,7 @@ static ssize_t vfio_ccw_mdev_ioctl(struct mdev_device *mdev, if (info.argsz < minsz) return -EINVAL; - ret = vfio_ccw_mdev_get_device_info(&info, mdev); + ret = vfio_ccw_mdev_get_device_info(private, &info); if (ret) return ret; @@ -558,7 +550,7 @@ static ssize_t vfio_ccw_mdev_ioctl(struct mdev_device *mdev, if (info.argsz < minsz) return -EINVAL; - ret = vfio_ccw_mdev_get_region_info(&info, mdev, arg); + ret = vfio_ccw_mdev_get_region_info(private, &info, arg); if (ret) return ret; @@ -603,10 +595,11 @@ static ssize_t vfio_ccw_mdev_ioctl(struct mdev_device *mdev, return ret; data = (void __user *)(arg + minsz); - return vfio_ccw_mdev_set_irqs(mdev, hdr.flags, hdr.index, data); + return vfio_ccw_mdev_set_irqs(private, hdr.flags, hdr.index, + data); } case VFIO_DEVICE_RESET: - return vfio_ccw_mdev_reset(mdev); + return vfio_ccw_mdev_reset(private); default: return -ENOTTY; } From patchwork Tue Oct 26 17:57:33 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Gunthorpe X-Patchwork-Id: 12585397 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E6276C4332F for ; Tue, 26 Oct 2021 17:57:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D0BE26109D for ; Tue, 26 Oct 2021 17:57:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238007AbhJZSAJ (ORCPT ); Tue, 26 Oct 2021 14:00:09 -0400 Received: from mail-bn8nam11on2062.outbound.protection.outlook.com ([40.107.236.62]:57056 "EHLO NAM11-BN8-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S236589AbhJZSAD (ORCPT ); Tue, 26 Oct 2021 14:00:03 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ybdd2Ak23I8iczv1BWDPMIs/bBysL4Fsutn0O1XLp2RwlFe7mPQZE2Rk0Qo+AtPIDOh4yQcSNKNT10uKaDwMDsDgwypR6iEKB7TOj+4jnZj1hEv5c3MlFThftDsgi1IyClO+EGlAxDZgrzjOuNmRV4uiplDVwDtk18A3Ffaopg0tCHihFl0tvViuH7rpOryCxkC42ILuX0vb1Xh5EEk82Z1wP2bvvnGaOr76i+wxvotoyP+2Fsz4cJs9k2gYCcDBtA9IQHV4VvsYD94gDuWCY3cAgGXpmhRQuXNYNDMkc06cbKr/Kso4vEf2RVGlwSGBRzBUO755Haa3msFfwDTYNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=W4VL6PuHi5a5+MX1ro02IDczVKwAYeaIkjY305cS1kI=; b=LeN8zvN5qAt7K/0LOz4fXhTqssx5jqgtvMQ0uGMxcOIh6PpCKrC7GsXoOp4cb0GpEVwvIEYDpCQl2jQTxW8B9z0d2b8KkHABJ+upMXcEFzYRggpX75pfnF5kXGYtSZKvKzPVn9y6aNPFPz1u4qH3y0Xh7Xikd8mLHTigGaod5Sh7Q2z5F7aORRjhYfjWdIgBQGkjI3A4oLAqMWFNPEagUaGSHfXYgsKeYJ1lq9Q2Hzqq+DdwZgdsIc2iSrw1Q6rhflGuYxyrA8CSwAtfqw4sFrnfKFN6ln1J2Y4gOmB5RsaAltrHWRvtN9WssHv+Qw2fJtpUpCFG3uXt/nh7X1Spsw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=W4VL6PuHi5a5+MX1ro02IDczVKwAYeaIkjY305cS1kI=; b=CYerfw/I7UzFkWwvrg38DtvqJpzaIrBPzdVsEhVwCxSrkiJkvagHjdayIadNjPE2dMJ09jfXQsG5vx3uzl9fkDl4pdx45MGI2xLC/OCBl4hd/wR0X0Cbs7zva1caB0XeY9YhfyRw2ESs6XafmXB3nSdODmJMOX69hnnzlhJLoYoWRuhQF0OGgyg7iud7VPHdlx8mk+MBMQtwmkDp9RpaWgz0VxjL9OsvTcPT7sDV9Hh2Aq34SqPmEnjENKUijiZUnHsPVXDqD8WOHeTbhwWtIVMCe5o1wjyfDAtW7EBkZWIJa9rzEz2ZJH+cht9vBtWf827M6SVs6WT2yiUen4A9Ww== Authentication-Results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=nvidia.com; Received: from BL0PR12MB5506.namprd12.prod.outlook.com (2603:10b6:208:1cb::22) by BL1PR12MB5048.namprd12.prod.outlook.com (2603:10b6:208:30a::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.13; Tue, 26 Oct 2021 17:57:37 +0000 Received: from BL0PR12MB5506.namprd12.prod.outlook.com ([fe80::e8af:232:915e:2f95]) by BL0PR12MB5506.namprd12.prod.outlook.com ([fe80::e8af:232:915e:2f95%8]) with mapi id 15.20.4649.014; Tue, 26 Oct 2021 17:57:37 +0000 From: Jason Gunthorpe To: Alex Williamson , Christian Borntraeger , Cornelia Huck , Vasily Gorbik , Heiko Carstens , kvm@vger.kernel.org, linux-s390@vger.kernel.org, Matthew Rosato , Peter Oberparleiter , Halil Pasic , Vineeth Vijayan Cc: Eric Farman , Christoph Hellwig Subject: [PATCH v4 4/4] vfio/ccw: Convert to use vfio_register_emulated_iommu_dev() Date: Tue, 26 Oct 2021 14:57:33 -0300 Message-Id: <4-v4-cea4f5bd2c00+b52-ccw_mdev_jgg@nvidia.com> In-Reply-To: <0-v4-cea4f5bd2c00+b52-ccw_mdev_jgg@nvidia.com> References: X-ClientProxiedBy: YT3PR01CA0114.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:85::31) To BL0PR12MB5506.namprd12.prod.outlook.com (2603:10b6:208:1cb::22) MIME-Version: 1.0 Received: from mlx.ziepe.ca (206.223.160.26) by YT3PR01CA0114.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:85::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4628.22 via Frontend Transport; Tue, 26 Oct 2021 17:57:36 +0000 Received: from jgg by mlx with local (Exim 4.94) (envelope-from ) id 1mfQhZ-002BK5-IV; Tue, 26 Oct 2021 14:57:33 -0300 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b6262367-d3ac-42a0-6cda-08d998aa182b X-MS-TrafficTypeDiagnostic: BL1PR12MB5048: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3044; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: EzgobSZ43RsI9TVwi8wrqynHAiiLeZaNmk5CvJ/AGw6iiz0JysyZaWW3a92F9cdINSHC/FvYFr0y/5by1W1/vhY5JJlLsXf2Jvc4EHuD9fjY8QcBBFwVSsj8WObi4HCIlkpBksJoG1GJkOEieVIUJYa81fSL7+AE/OYxXB3j1lEt9N1ZNO0sRfDaBJnYvzMerg/TAk97JyBNuZvzuw0Fivm9pD39l5MlHE/yXeixb97geGuhDA8khVQEekYc4gK2LKNbNvn+HVa4AnPtTc9vV3O7VEq5PCOZUO3GkSGeomw0YSoe0/8Ufe487ufJPtKcIxp7d6Qn31wNAXhHZhfJs041jnEAkPgAYCh7b16cuDULe9Il0GO9XJf0DEnulHm5qyVujkdjqZzebgSIYKy6m9jU5VQcwZRNKylpTVixz8TsZG93Cv32sSMGEZfdy/jH3i4kybBNL1WTpCXBXCdoJKzc+uVPFMn3vrxCkfGGFccZm7/aRuVkvjp16Pagcys9RWvAQKrPAOnU5LCOvjhAwHuO5YPfsej37fvIDjRv0SdG4fXDpkR3emKholPL11+Y6PlUF654rBKRmRZ0uLGekQriBCj7NBnLl5VVF8pqieGfve5BEAfTxYDUvaDoBOoZTjFBxES552q9pMMJpLVkLbozH3G6cFOZJ1o8UhFmpEoEkcELNc7Y4ZfMEjM55unXR6xLGrltxh6aHdf1gFS0sVDEfziQyjxMpbMLvUlx1ws= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL0PR12MB5506.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(110136005)(54906003)(2906002)(36756003)(508600001)(2616005)(9746002)(316002)(921005)(426003)(30864003)(8676002)(66556008)(83380400001)(8936002)(86362001)(26005)(5660300002)(186003)(38100700002)(66946007)(4326008)(66476007)(9786002)(7416002)(4216001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: xhiO+cPM5SpBiA+ZHmxqVq1mV90PMaGltqqU3ELs5FFgV8TlfTU++zYeH31tRLE+x1cTOvLq/KELqGMTGOVACcnLLFNRyTgmhl4OTBfTPJNLFqpcXqWSsLiaelZlwFW/KawtZusr4T2pkqE0/14XSuqToj49d4syLepqWSTbh9PSXbZqkX/Pmm4aO7O7tMA0JVFnilc64LCNbC8je4AQogWFnheYpoIQUVetG5lvbR8GgPS3SGSFbxvvT6ZMMx81sbri+nzIhp75Zkblkju5vOJAWnTx/qI0drr8uGZfZdSkG0c9d/AYlR8j5SZkFNslfvNPVtwC1cnVfVBkWxKbf24WSDVaf3g6Pfc8BDnnw9dP0+TukWvGhbxn62sP9BljtYCF4x2uzzX7NZtK4DOqeIXPMfQZfXLrThVLcJEmerrQCpOIWNHexYLlkv6BXm2VQHNw6iNmMZIPZ8Fx58G4H071488eEmgI+OiysQJ7qso+17PEP4Y2kWLyBuckwyrmna+cKJ0ZjatOKenE9MVJ3RaH0WQUpYjsT6E/969iMJYB65vQDt5w6hAFhHylvNU6C7eCk8O5v06yiAdEVabdaJq51hJBkM50wtqxhV5WFgwnfp8ncz6PXhD+/8BeIfYpvbyCLy2SIqeF6807sWs69yrg2bcSNpLCXlaUJoMgcgteEGBEATRLGdKbEc1umTCbL9vDNAVmGzgZNcWMphOVW32xNWfzYKXBjr1GVPnCDAUuO1s8Abv1xNpHPW/NfGo1+uVMZ9flQVFfAYiaR+xmA2cD17dwRlkH7fuop/stbaR2BJc+/6VA06fRflQGDya9ZbpR1kCF8LAyGA1DqV8XUenF/upY7jOtwNshRMy38ippQmFl9fTN8zUZ50cvCo3s0RD+t8Z9fGFOtq5cy90qICDkT5w0UYCVjVQJu5PLd/UJAFcYW+F9UUTJ+L8JDEoHeEFa1hlmHaWWl9KyqiuJjuTZ1K/Xwn7n0bCZj+cRIkfKSOEuwmItuwN/dDGtNrJJcF9mOaAllSMM/fidnZZtxg0ovZbEXNsq5KnmjxCpTwSsQpigUye9F5e1JasfFqFLM3VXWsi7EC9Wg2gFUczbaM/shXhIH32X2bJ29dyuMUp82FVL45/ZSNwz20q07T+C8Y5zIIBJ8lgrFCWskh0sUclK3XOghMNNW+Acyz707RlETvPfWucpE8U2gjeVUCeMCw6RymbPXICKmZ6p3eTvlPiqgzPHy9GAZ8udadPbvazNAuFio6b61Ad8oVoXqRQq0WciFi/hZW0RS5DMpV+twwddsCxfNc8y4dABZdJG+rT09/Te1Vor5eRzFi8SGoOi/+ZvOyjdChJBl6nEtlyCa5Ks3ZnXWjF/ti/QjPxMMFr3SZ7FUSTP4tXcqNzAYrf/1u2WDHXPkUqNY+fGLznCKJW93pwx9p/Av3nc6l/K2f/Q1mt1D53DFtAw6iXUoVn55RbVXs6MGG9QRASUURmwh3iXu1KyUliZ6VEYMSjBtEJ+8QtGHo8kJQq01Nb9CmzKKvK+rgWN9lGqpc0cKq7bpdTt+eXdqYYVQDETcZCVj2I= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: b6262367-d3ac-42a0-6cda-08d998aa182b X-MS-Exchange-CrossTenant-AuthSource: BL0PR12MB5506.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2021 17:57:36.9804 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: CEyFQX/tpsc5Z1/1Q8gC3zOM5vv8OEY1wjtJe0BiaXn8WYczy6gyNdNRomcTw4/h X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5048 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org This is a more complicated conversion because vfio_ccw is sharing the vfio_device between both the mdev_device, its vfio_device and the css_driver. The mdev is a singleton, and the reason for this sharing is so the extra css_driver function callbacks to be delivered to the vfio_device implementation. This keeps things as they are, with the css_driver allocating the singleton, not the mdev_driver. Embed the vfio_device in the vfio_ccw_private and instantiate it as a vfio_device when the mdev probes. The drvdata of both the css_device and the mdev_device point at the private, and container_of is used to get it back from the vfio_device. Reviewed-by: Eric Farman Signed-off-by: Jason Gunthorpe --- drivers/s390/cio/vfio_ccw_drv.c | 21 ++++-- drivers/s390/cio/vfio_ccw_ops.c | 107 +++++++++++++++++----------- drivers/s390/cio/vfio_ccw_private.h | 5 ++ 3 files changed, 85 insertions(+), 48 deletions(-) diff --git a/drivers/s390/cio/vfio_ccw_drv.c b/drivers/s390/cio/vfio_ccw_drv.c index e32678a71644fb..0407427770955d 100644 --- a/drivers/s390/cio/vfio_ccw_drv.c +++ b/drivers/s390/cio/vfio_ccw_drv.c @@ -468,7 +468,7 @@ static int __init vfio_ccw_sch_init(void) vfio_ccw_work_q = create_singlethread_workqueue("vfio-ccw"); if (!vfio_ccw_work_q) { ret = -ENOMEM; - goto out_err; + goto out_regions; } vfio_ccw_io_region = kmem_cache_create_usercopy("vfio_ccw_io_region", @@ -477,7 +477,7 @@ static int __init vfio_ccw_sch_init(void) sizeof(struct ccw_io_region), NULL); if (!vfio_ccw_io_region) { ret = -ENOMEM; - goto out_err; + goto out_regions; } vfio_ccw_cmd_region = kmem_cache_create_usercopy("vfio_ccw_cmd_region", @@ -486,7 +486,7 @@ static int __init vfio_ccw_sch_init(void) sizeof(struct ccw_cmd_region), NULL); if (!vfio_ccw_cmd_region) { ret = -ENOMEM; - goto out_err; + goto out_regions; } vfio_ccw_schib_region = kmem_cache_create_usercopy("vfio_ccw_schib_region", @@ -496,7 +496,7 @@ static int __init vfio_ccw_sch_init(void) if (!vfio_ccw_schib_region) { ret = -ENOMEM; - goto out_err; + goto out_regions; } vfio_ccw_crw_region = kmem_cache_create_usercopy("vfio_ccw_crw_region", @@ -506,19 +506,25 @@ static int __init vfio_ccw_sch_init(void) if (!vfio_ccw_crw_region) { ret = -ENOMEM; - goto out_err; + goto out_regions; } + ret = mdev_register_driver(&vfio_ccw_mdev_driver); + if (ret) + goto out_regions; + isc_register(VFIO_CCW_ISC); ret = css_driver_register(&vfio_ccw_sch_driver); if (ret) { isc_unregister(VFIO_CCW_ISC); - goto out_err; + goto out_driver; } return ret; -out_err: +out_driver: + mdev_unregister_driver(&vfio_ccw_mdev_driver); +out_regions: vfio_ccw_destroy_regions(); destroy_workqueue(vfio_ccw_work_q); vfio_ccw_debug_exit(); @@ -528,6 +534,7 @@ static int __init vfio_ccw_sch_init(void) static void __exit vfio_ccw_sch_exit(void) { css_driver_unregister(&vfio_ccw_sch_driver); + mdev_unregister_driver(&vfio_ccw_mdev_driver); isc_unregister(VFIO_CCW_ISC); vfio_ccw_destroy_regions(); destroy_workqueue(vfio_ccw_work_q); diff --git a/drivers/s390/cio/vfio_ccw_ops.c b/drivers/s390/cio/vfio_ccw_ops.c index 1edbea9de0ec42..d8589afac272f1 100644 --- a/drivers/s390/cio/vfio_ccw_ops.c +++ b/drivers/s390/cio/vfio_ccw_ops.c @@ -17,6 +17,8 @@ #include "vfio_ccw_private.h" +static const struct vfio_device_ops vfio_ccw_dev_ops; + static int vfio_ccw_mdev_reset(struct vfio_ccw_private *private) { struct subchannel *sch; @@ -111,10 +113,10 @@ static struct attribute_group *mdev_type_groups[] = { NULL, }; -static int vfio_ccw_mdev_create(struct mdev_device *mdev) +static int vfio_ccw_mdev_probe(struct mdev_device *mdev) { - struct vfio_ccw_private *private = - dev_get_drvdata(mdev_parent_dev(mdev)); + struct vfio_ccw_private *private = dev_get_drvdata(mdev->dev.parent); + int ret; if (private->state == VFIO_CCW_STATE_NOT_OPER) return -ENODEV; @@ -122,6 +124,10 @@ static int vfio_ccw_mdev_create(struct mdev_device *mdev) if (atomic_dec_if_positive(&private->avail) < 0) return -EPERM; + memset(&private->vdev, 0, sizeof(private->vdev)); + vfio_init_group_dev(&private->vdev, &mdev->dev, + &vfio_ccw_dev_ops); + private->mdev = mdev; private->state = VFIO_CCW_STATE_IDLE; @@ -130,19 +136,31 @@ static int vfio_ccw_mdev_create(struct mdev_device *mdev) private->sch->schid.ssid, private->sch->schid.sch_no); + ret = vfio_register_emulated_iommu_dev(&private->vdev); + if (ret) + goto err_atomic; + dev_set_drvdata(&mdev->dev, private); return 0; + +err_atomic: + vfio_uninit_group_dev(&private->vdev); + atomic_inc(&private->avail); + private->mdev = NULL; + private->state = VFIO_CCW_STATE_IDLE; + return ret; } -static int vfio_ccw_mdev_remove(struct mdev_device *mdev) +static void vfio_ccw_mdev_remove(struct mdev_device *mdev) { - struct vfio_ccw_private *private = - dev_get_drvdata(mdev_parent_dev(mdev)); + struct vfio_ccw_private *private = dev_get_drvdata(mdev->dev.parent); VFIO_CCW_MSG_EVENT(2, "mdev %pUl, sch %x.%x.%04x: remove\n", mdev_uuid(mdev), private->sch->schid.cssid, private->sch->schid.ssid, private->sch->schid.sch_no); + vfio_unregister_group_dev(&private->vdev); + if ((private->state != VFIO_CCW_STATE_NOT_OPER) && (private->state != VFIO_CCW_STATE_STANDBY)) { if (!vfio_ccw_sch_quiesce(private->sch)) @@ -150,23 +168,22 @@ static int vfio_ccw_mdev_remove(struct mdev_device *mdev) /* The state will be NOT_OPER on error. */ } + vfio_uninit_group_dev(&private->vdev); cp_free(&private->cp); private->mdev = NULL; atomic_inc(&private->avail); - - return 0; } -static int vfio_ccw_mdev_open_device(struct mdev_device *mdev) +static int vfio_ccw_mdev_open_device(struct vfio_device *vdev) { struct vfio_ccw_private *private = - dev_get_drvdata(mdev_parent_dev(mdev)); + container_of(vdev, struct vfio_ccw_private, vdev); unsigned long events = VFIO_IOMMU_NOTIFY_DMA_UNMAP; int ret; private->nb.notifier_call = vfio_ccw_mdev_notifier; - ret = vfio_register_notifier(mdev_dev(mdev), VFIO_IOMMU_NOTIFY, + ret = vfio_register_notifier(vdev->dev, VFIO_IOMMU_NOTIFY, &events, &private->nb); if (ret) return ret; @@ -187,15 +204,15 @@ static int vfio_ccw_mdev_open_device(struct mdev_device *mdev) out_unregister: vfio_ccw_unregister_dev_regions(private); - vfio_unregister_notifier(mdev_dev(mdev), VFIO_IOMMU_NOTIFY, + vfio_unregister_notifier(vdev->dev, VFIO_IOMMU_NOTIFY, &private->nb); return ret; } -static void vfio_ccw_mdev_close_device(struct mdev_device *mdev) +static void vfio_ccw_mdev_close_device(struct vfio_device *vdev) { struct vfio_ccw_private *private = - dev_get_drvdata(mdev_parent_dev(mdev)); + container_of(vdev, struct vfio_ccw_private, vdev); if ((private->state != VFIO_CCW_STATE_NOT_OPER) && (private->state != VFIO_CCW_STATE_STANDBY)) { @@ -206,8 +223,7 @@ static void vfio_ccw_mdev_close_device(struct mdev_device *mdev) cp_free(&private->cp); vfio_ccw_unregister_dev_regions(private); - vfio_unregister_notifier(mdev_dev(mdev), VFIO_IOMMU_NOTIFY, - &private->nb); + vfio_unregister_notifier(vdev->dev, VFIO_IOMMU_NOTIFY, &private->nb); } static ssize_t vfio_ccw_mdev_read_io_region(struct vfio_ccw_private *private, @@ -231,15 +247,14 @@ static ssize_t vfio_ccw_mdev_read_io_region(struct vfio_ccw_private *private, return ret; } -static ssize_t vfio_ccw_mdev_read(struct mdev_device *mdev, +static ssize_t vfio_ccw_mdev_read(struct vfio_device *vdev, char __user *buf, size_t count, loff_t *ppos) { + struct vfio_ccw_private *private = + container_of(vdev, struct vfio_ccw_private, vdev); unsigned int index = VFIO_CCW_OFFSET_TO_INDEX(*ppos); - struct vfio_ccw_private *private; - - private = dev_get_drvdata(mdev_parent_dev(mdev)); if (index >= VFIO_CCW_NUM_REGIONS + private->num_regions) return -EINVAL; @@ -284,15 +299,14 @@ static ssize_t vfio_ccw_mdev_write_io_region(struct vfio_ccw_private *private, return ret; } -static ssize_t vfio_ccw_mdev_write(struct mdev_device *mdev, +static ssize_t vfio_ccw_mdev_write(struct vfio_device *vdev, const char __user *buf, size_t count, loff_t *ppos) { + struct vfio_ccw_private *private = + container_of(vdev, struct vfio_ccw_private, vdev); unsigned int index = VFIO_CCW_OFFSET_TO_INDEX(*ppos); - struct vfio_ccw_private *private; - - private = dev_get_drvdata(mdev_parent_dev(mdev)); if (index >= VFIO_CCW_NUM_REGIONS + private->num_regions) return -EINVAL; @@ -510,12 +524,12 @@ void vfio_ccw_unregister_dev_regions(struct vfio_ccw_private *private) private->region = NULL; } -static ssize_t vfio_ccw_mdev_ioctl(struct mdev_device *mdev, +static ssize_t vfio_ccw_mdev_ioctl(struct vfio_device *vdev, unsigned int cmd, unsigned long arg) { struct vfio_ccw_private *private = - dev_get_drvdata(mdev_parent_dev(mdev)); + container_of(vdev, struct vfio_ccw_private, vdev); int ret = 0; unsigned long minsz; @@ -606,37 +620,48 @@ static ssize_t vfio_ccw_mdev_ioctl(struct mdev_device *mdev, } /* Request removal of the device*/ -static void vfio_ccw_mdev_request(struct mdev_device *mdev, unsigned int count) +static void vfio_ccw_mdev_request(struct vfio_device *vdev, unsigned int count) { - struct vfio_ccw_private *private = dev_get_drvdata(mdev_parent_dev(mdev)); - - if (!private) - return; + struct vfio_ccw_private *private = + container_of(vdev, struct vfio_ccw_private, vdev); + struct device *dev = vdev->dev; if (private->req_trigger) { if (!(count % 10)) - dev_notice_ratelimited(mdev_dev(private->mdev), + dev_notice_ratelimited(dev, "Relaying device request to user (#%u)\n", count); eventfd_signal(private->req_trigger, 1); } else if (count == 0) { - dev_notice(mdev_dev(private->mdev), + dev_notice(dev, "No device request channel registered, blocked until released by user\n"); } } +static const struct vfio_device_ops vfio_ccw_dev_ops = { + .open_device = vfio_ccw_mdev_open_device, + .close_device = vfio_ccw_mdev_close_device, + .read = vfio_ccw_mdev_read, + .write = vfio_ccw_mdev_write, + .ioctl = vfio_ccw_mdev_ioctl, + .request = vfio_ccw_mdev_request, +}; + +struct mdev_driver vfio_ccw_mdev_driver = { + .driver = { + .name = "vfio_ccw_mdev", + .owner = THIS_MODULE, + .mod_name = KBUILD_MODNAME, + }, + .probe = vfio_ccw_mdev_probe, + .remove = vfio_ccw_mdev_remove, +}; + static const struct mdev_parent_ops vfio_ccw_mdev_ops = { .owner = THIS_MODULE, + .device_driver = &vfio_ccw_mdev_driver, .supported_type_groups = mdev_type_groups, - .create = vfio_ccw_mdev_create, - .remove = vfio_ccw_mdev_remove, - .open_device = vfio_ccw_mdev_open_device, - .close_device = vfio_ccw_mdev_close_device, - .read = vfio_ccw_mdev_read, - .write = vfio_ccw_mdev_write, - .ioctl = vfio_ccw_mdev_ioctl, - .request = vfio_ccw_mdev_request, }; int vfio_ccw_mdev_reg(struct subchannel *sch) diff --git a/drivers/s390/cio/vfio_ccw_private.h b/drivers/s390/cio/vfio_ccw_private.h index b2c762eb42b9bb..7272eb78861244 100644 --- a/drivers/s390/cio/vfio_ccw_private.h +++ b/drivers/s390/cio/vfio_ccw_private.h @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -67,6 +68,7 @@ struct vfio_ccw_crw { /** * struct vfio_ccw_private + * @vdev: Embedded VFIO device * @sch: pointer to the subchannel * @state: internal state of the device * @completion: synchronization helper of the I/O completion @@ -90,6 +92,7 @@ struct vfio_ccw_crw { * @crw_work: work for deferral process of CRW handling */ struct vfio_ccw_private { + struct vfio_device vdev; struct subchannel *sch; int state; struct completion *completion; @@ -121,6 +124,8 @@ extern void vfio_ccw_mdev_unreg(struct subchannel *sch); extern int vfio_ccw_sch_quiesce(struct subchannel *sch); +extern struct mdev_driver vfio_ccw_mdev_driver; + /* * States of the device statemachine. */