From mboxrd@z Thu Jan 1 00:00:00 1970 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 223AED3C927 for ; Sun, 20 Oct 2024 01:44:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:In-Reply-To:Content-Type: MIME-Version:References:Message-ID:Subject:CC:To:From:Date:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=kWiZbkWmdu8MT73103i1Awce8BjSeBiSTkmYi6mkycU=; b=z03Zl6h+7QPlCKOViYaYvNa+hU iwTXpX6BRyyxXUtk++T4GlXcnjr/nDMio5fHgqhrIKUBp67XDVRgU9GiiYTc83e9lWd7BeavvMrcY YqnBx5BEaD0pbwjoBWu9Wezb0Gblzzt1JKQ3nWDOHH3P1+6RVeuTr2sKHynOIg46H5jSI327ssOtX OHhi/GaBx6sSg0SKtuBoVmG2VSVcGVx5yOK7BnzZAuFudKMhkPYS0Mo8TcsvWO7/J7M/npzPEx/MY B7zHHuqiHrHKmJHlza7g49cvE+Pcs0AYFTVpcnqyDHnvG85soAQ3jVUsP0/Uj8s3IwuBfvPB34aPQ GP4w9cwQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t2KzM-00000004EgI-3AeV; Sun, 20 Oct 2024 01:44:12 +0000 Received: from mail-co1nam11on20600.outbound.protection.outlook.com ([2a01:111:f403:2416::600] helo=NAM11-CO1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1t2Kxs-00000004ERu-2Xtt for linux-arm-kernel@lists.infradead.org; Sun, 20 Oct 2024 01:42:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lFF6S+smRBEQss4FuTX4CSB3rdEaSvExLHRdTF5/KuF8rAmW6IXM3bKUJig0pd9s6cNK4xBh3oP0ts2WtkqJKWQ56DgjB2O8RW7qy80nf+fzWcg94Y+LikfTp/xsiwl7C7drGkLlp4loIMl8NtTvzov00jwCTh/TcNJBMk7UW5g3cP4sRk/YurTOWTdnFRO97xF0vyOganc+EUCbSEXhBICMII9DORqjlvf+mAaTa122M31Dhcnn7DksuHqd+gJKG4//0AvP2rcfRVw93goud1w3DYRA3/dTl9xLw23MAlzul7xGrd9HUDSXLLtXvpENppOZSkyM9Pw6WY1aRtG7oQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=kWiZbkWmdu8MT73103i1Awce8BjSeBiSTkmYi6mkycU=; b=MJPNvwuy0xfKsZWMUfKTtYhnyfkwNyWEv95xdpVkitOXgvfXlfLBfIypD3yTqngh5TDYtmjmFkBjyMdztAHmhLgcELVdvTzbeHET0xa0LE0/B2dpjI6HUPCVdcdFVLFA1bM3MRtjiM63fVSo+dsWqRBxUQsiz6mqVUFKCN7fDxXoSVlWe79pRsuoYw+AJABIXSBwVexUXDCKrCcgiubLMnoJ9i1WAjY6PS1fZ5HGKyBVFNnsRgWsrAgDzpu7hnvKXYklFrdcgvyCT0gpp9ImawU692kByKmUHYZUzd/vnRy7Cd+VB4I/JG0LaOduNkrKr03UaoSeyrELVfidyOqF5Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.232) smtp.rcpttodomain=intel.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) 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=kWiZbkWmdu8MT73103i1Awce8BjSeBiSTkmYi6mkycU=; b=V5IUMy6egUuc3yzgVLWFjb2hr0aoTOM+gtg5PZQ91Jp2gkfwsd8GxeTpiVHb5EKAp5o2Isa2MgzXfV7zYNUUzC76ifgIwIBoQ6vMAEuJ05T8wad8mLx8FLDgSfR4y8aO1IMqdMZBrcysUkdWAxRyrlpMg4s/qUCqlJUuOsc/QUFipxxVmQ7AqW1brcJrUOQ3SwYgX6Bl9ZWqAE1oojAlEDsQR87Tg97B7obF6Jyr7rNakJRbk5Z9iMYteJuHuM8xNrdkzXT7JNvc3EQF6TQVTbhWueT29OhJdenrX0y2zN5vO7+ae39EdDzU4Ic0fkhYKCTLc5CTvJsCesJIIU8snQ== Received: from MW4PR04CA0387.namprd04.prod.outlook.com (2603:10b6:303:81::32) by DS7PR12MB8370.namprd12.prod.outlook.com (2603:10b6:8:eb::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.18; Sun, 20 Oct 2024 01:42:35 +0000 Received: from SN1PEPF00036F3E.namprd05.prod.outlook.com (2603:10b6:303:81:cafe::87) by MW4PR04CA0387.outlook.office365.com (2603:10b6:303:81::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.23 via Frontend Transport; Sun, 20 Oct 2024 01:42:34 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.232) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.232 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.232; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.232) by SN1PEPF00036F3E.mail.protection.outlook.com (10.167.248.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.17 via Frontend Transport; Sun, 20 Oct 2024 01:42:34 +0000 Received: from drhqmail203.nvidia.com (10.126.190.182) by mail.nvidia.com (10.127.129.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Sat, 19 Oct 2024 18:42:33 -0700 Received: from drhqmail202.nvidia.com (10.126.190.181) by drhqmail203.nvidia.com (10.126.190.182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Sat, 19 Oct 2024 18:42:32 -0700 Received: from Asurada-Nvidia (10.127.8.11) by mail.nvidia.com (10.126.190.181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4 via Frontend Transport; Sat, 19 Oct 2024 18:42:31 -0700 Date: Sat, 19 Oct 2024 18:42:30 -0700 From: Nicolin Chen To: Jason Gunthorpe CC: , , , , , , , , , , , , , , , , , , , , Subject: Re: [PATCH v3 03/16] iommufd/viommu: Add IOMMU_VDEVICE_ALLOC ioctl Message-ID: References: <20241017185230.GS3559746@nvidia.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20241017185230.GS3559746@nvidia.com> X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF00036F3E:EE_|DS7PR12MB8370:EE_ X-MS-Office365-Filtering-Correlation-Id: 9bcf9822-7226-491c-8f92-08dcf0a87872 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|376014|7416014|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?iwff4q/yJaIMonKoUd/ZK2XU/F03vVtXDt9VJhGxpJUk9LNJ21Xkke2jWrMF?= =?us-ascii?Q?6x/MvSJbBv+2M75if5BowAE+DUFUmoUwmlR9/IHjYDaidNxvQYZShUmes+qZ?= =?us-ascii?Q?au4I4HDJYmFEPzt1OJBL4vdMpVcXBhstneUqgfXfLEGu/HArTObt9QiEupNO?= =?us-ascii?Q?3o7EGy6FXDkcURH1VE3oGZb1KS6ADsMHqd8MwQmzLaXNw7nlLM8OMnyuA/A5?= =?us-ascii?Q?Pz3oiRL0o2D8XOyHmufiV5IrW5HBvaabNqK3quwl/jMkLItN9nIqecAK+ysF?= =?us-ascii?Q?CqoLGcPjkOsfA0WQ6Nz2JPYvfAIv/dKhxa5gEBG0Zr08+SJGBFdiRwKmmalM?= =?us-ascii?Q?uQRfmZ8jjpwwuQ+TPIFUOHEseQhsev62GgevdOlMMSn0RZY7+Dj9k4htEhLx?= =?us-ascii?Q?Coxp6ZyTUnuPTBlXnPjAOHzMvE/1NVESHtv7O81KnZ43L0Ydo3afxMZJTRAF?= =?us-ascii?Q?aJaNNtCQhnzJwHyOfo/UVdfUPikzYH5oDdS3EbeqtpWy0+QXB7KwGOqtL2vA?= =?us-ascii?Q?DRDnqs0maVIXuHDJWTJqQrITszbECxvO/YoWVGER2u/XpQIEI6kUgKZFk1Jw?= =?us-ascii?Q?Ryupbz65LIDOCtM1x0uil5NWs02JxwPsat6GzvwZv0nme4LhJLW3weJsM9mv?= =?us-ascii?Q?5EVbnbzPK+jd9K32ugqbIo9CUashYiDb7Ods59VFQkbF7sFqHz1Blx9PLcjX?= =?us-ascii?Q?/lmYI6fa3Hyjgc9d2RYQphCguj0vFiyJ7V04VaxavDF5HGvx/z4+hcL+ZmtJ?= =?us-ascii?Q?y9TSrzftaopIRqnu2gDpJhBQhAkAeASgJbQAHzh6Xb0Yw7bAmLo3b46UDv3X?= =?us-ascii?Q?9ewykSfdxmKGsvhjBPWLcfBwoTtyERbU8JMuyP/m/gDqJd0kEKMcfQgod2zi?= =?us-ascii?Q?40GXmwFGHOuyUaJ68AMFSLW846KHDeBqXT55odTeGn+lTLQROMRzFsAJDgpg?= =?us-ascii?Q?G8f6TJLybfU3PWpg0S5c+akGbOJ/yiuAXTyDF9XfNvxHICDIpF4sQTPx2+rF?= =?us-ascii?Q?5k2mFk8lgcpeh98ShYFtY6VJud3xtZGzyBOfAc9+EAXntucqhLk4cHqfQFuc?= =?us-ascii?Q?phrUSivcvbkSg9Bt7byHrRPa+iz+WiWkKQybz91VbNuoCHGBMBw7BYTYbVYn?= =?us-ascii?Q?g74wnywatSOye0U5AW2HI/TNvWCLwe6OgKJp0/lsSZFbsz0dOFODOjIbhpbu?= =?us-ascii?Q?kPQZAYM4KPLWImSLh2ooqbX2H7iYzVSHbd7O3xhJVFs6uApWO2roN5BlJxRg?= =?us-ascii?Q?rlGuXfbwnwW7tId7m+BQlhUlQYmKJ6ioIoDMBOqR5O+SQhRv9A1gox0npdYi?= =?us-ascii?Q?gSNN4q83SaKqjMgSOUs7O1RVCqTVXnJXGjIAlkgByZh9czW2brHfj9YEQlCz?= =?us-ascii?Q?M19+APR7d+eaTDAO9Bp0epsF8v8PlqJKlGlQVYavY3gSg13R5Q=3D=3D?= X-Forefront-Antispam-Report: CIP:216.228.118.232;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge1.nvidia.com;CAT:NONE;SFS:(13230040)(82310400026)(376014)(7416014)(1800799024)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2024 01:42:34.4619 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9bcf9822-7226-491c-8f92-08dcf0a87872 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.232];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF00036F3E.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB8370 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241019_184240_659811_6D35F51B X-CRM114-Status: GOOD ( 13.50 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Thu, Oct 17, 2024 at 03:52:30PM -0300, Jason Gunthorpe wrote: > > + if (viommu->ops && viommu->ops->vdevice_alloc) > > + vdev = viommu->ops->vdevice_alloc(viommu, idev->dev, virt_id); > > + else > > + vdev = __iommufd_vdevice_alloc(ucmd->ictx, sizeof(*vdev)); > > + if (IS_ERR(vdev)) { > > + rc = PTR_ERR(vdev); > > + goto out_unlock_igroup; > > + } > > + > > + vdev->idev = idev; > > + vdev->id = virt_id; > > + vdev->viommu = viommu; > > + > > + idev->vdev = vdev; > > + refcount_inc(&idev->obj.users); > > + refcount_inc(&viommu->obj.users); > > + > > + curr = xa_cmpxchg(&viommu->vdevs, virt_id, NULL, vdev, GFP_KERNEL); > > + if (curr) { > > + rc = xa_err(curr) ? : -EBUSY; > > + goto out_abort; > > + } > > + > > + cmd->out_vdevice_id = vdev->obj.id; > > + rc = iommufd_ucmd_respond(ucmd, sizeof(*cmd)); > > + if (rc) > > + goto out_abort; > > + iommufd_object_finalize(ucmd->ictx, &vdev->obj); > > + goto out_unlock_igroup; > > + > > +out_abort: > > + iommufd_object_abort_and_destroy(ucmd->ictx, &vdev->obj); > > But be mindful of this abort, it doesn't want to be inside the lock if > it also gets the lock.. fail_nth should be updated to cover these new > ioctls to look for tricky things like that I added an abort() beside destroy(): +void iommufd_vdevice_abort(struct iommufd_object *obj) +{ + struct iommufd_vdevice *old, *vdev = + container_of(obj, struct iommufd_vdevice, obj); + struct iommufd_viommu *viommu = vdev->viommu; + struct iommufd_device *idev = vdev->idev; + + lockdep_assert_not_held(&idev->igroup->lock); + + if (viommu->ops && viommu->ops->vdevice_free) + viommu->ops->vdevice_free(vdev); + + old = xa_cmpxchg(&viommu->vdevs, vdev->id, vdev, NULL, GFP_KERNEL); + if (old) + WARN_ON(old != vdev); + + refcount_dec(&viommu->obj.users); + refcount_dec(&idev->obj.users); + idev->vdev = NULL; +} + +void iommufd_vdevice_destroy(struct iommufd_object *obj) +{ + struct iommufd_vdevice *vdev = + container_of(obj, struct iommufd_vdevice, obj); + + mutex_lock(&vdev->idev->igroup->lock); + iommufd_vdevice_abort(obj); + mutex_unlock(&vdev->idev->igroup->lock); +} ---------------------------------------------------------- And I added fail_nth coverage for IOMMU_VIOMMU/VDEVICE_ALLOC cmds. Thanks Nicolin