From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.openvz.org (mail.openvz.org [69.168.225.77]) by lore.virtuozzo.com (Postfix) with ESMTPS id 1AF9B8017D for ; Thu, 5 Nov 2026 12:19:11 +0000 (UTC) Received: from mail.openvz.org (localhost [127.0.0.1]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 6A5CHqlA004649; Thu, 5 Nov 2026 15:17:53 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 6A5CHqlA004649 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="jvVN3mT/" Received: from mail-yw1-f198.google.com (mail-yw1-f198.google.com [209.85.128.198]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 6A5CHk7O004632 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Thu, 5 Nov 2026 15:17:46 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 6A5CHk7O004632 Received: by mail-yw1-f198.google.com with SMTP id 00721157ae682-8b2fd108b28so27110287b3.1 for ; Thu, 05 Nov 2026 04:17:46 -0800 (PST) X-Gm-Message-State: APuU4Z/k1Mkt6DNtd1GhiXsp/YWU+cvd4vxiMVrnhbD5ZVQkw/Vh2NZP bcO3X3/My1/nC3JP5dOBWF8Pzo7DIn/558GBZBDnnWbCIqUXRbrZWg9xEoUHPHSTbcOT+jLh6hR ZonAcRd8W4T/0oWmFz2KTHZTn8RvIGzaWqHqGPrSeXybwMezu7e45WQ== X-Gm-Gg: AYBFou2grndxyWVAJ6AtD3I92Qa0M3mecb9kOYFOc0iXArpi4qkaW9zy/aW2Na959Li FsWs9HCY5TAMnhnIPJb/7tej2cWZ3cYAJ/hQv54u39OX4bvcJYq5dRY04MVjvdxlWAKT6/5KK9K rpPeQ03L95CfhnU6mJsBbE4fj+Qqmdw7Hm9BU8oho8z9VygiE5QYcyP0bwEEWAra38frop7tH8f eE5z0YxCZ4aui33JraSPLxqb308zUnMZTdbUPWGA5EObnM8yhjFNOUS9NnEgAFpHxB4WZ7VTxig tqe3XyNJ5vBnpPJjiErnYwKR9tmQX89ZCfF4xAjnY1RwlBkUnmR+9nKwRBLc/5jcsePDrVWQSsL BwkqmLXKDm3428+Q4/GuuyjwtOtuysY+v2dDPB7Zvxqt0HzQKeZM2F0tnL2wL9TDlFYuPVrCh38 kR9FXQir8ib1mxDxtYtY+gSCcSMwajUP8c5Lg= X-Received: by 2002:a05:690c:3384:b0:8b3:a11:fff9 with SMTP id 00721157ae682-8b30a120e2emr30374167b3.27.1793881065789; Thu, 05 Nov 2026 04:17:45 -0800 (PST) X-Received: by 2002:a05:690c:3384:b0:8b3:a11:fff9 with SMTP id 00721157ae682-8b30a120e2emr30374097b3.27.1793881065257; Thu, 05 Nov 2026 04:17:45 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1793881065; cv=pass; d=google.com; s=arc-20260327; b=lZrhxpCATOeA4XlB9Wjc9U504lXLy12RqyqTuKFPiBceDh0MQbbQHnKRwrxCBUmbRX FLxQX1fcrvqL07gVHM04VovS2IA+SUd1YZaeSk/Qk0CXbzvy6HGYLsiqeYPzkmajotYh +grMJC1CVldinmtHedWoJu0Upx42Cg0orqGuoKtegGSNIIY6sY3J3DJFcOZqvqpi2Vto Mcm0UuG83jDzAFfEHQAoFN2erThnGfh1/LoJwHgj87m5GH/2h7GUiNEXhZNkqST2mEsu gEp87defVSJUgbCVK895/LPv210nlLF4swCTw7y47lhWi+ODQnKypeDC8pPlzerVQXE0 fBDQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=mime-version:content-transfer-encoding:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=MEKscvcqOz91rfPc9DbAiXibgcKKJkkCG8EzHg8nwW4=; fh=+bcAEjp//7O3A4WDIzCdqY8p87h3NsxnWABfa5VgzUs=; b=X96a7pf8E2KxhTRxrBPTYqpnThQqKnvnrD0qpn5e8U3qJclD0AphTClhHu01uD+ItQ 1OhKJuuv1xhLdpB0M++6G7uPRRNMeK4qUXubYp+hY5DvaK3IaxO66gwdfS2ju/Y067x6 UBJm4yz6o+QPnzhyo/SBiWUS9a7O9pw6s7tvVAOLktnYMpQuokF/IPXuer5iu0sSFQv7 RqNbXdamG1A+yk55bLG+56NYzyNq5fQNkq3aAgXCsU839V74K7BqZIQP7TuMLpM+igIk rghcSOW6yTj9IVcfWPVtw48jRmVAeMhY7iPeJlh1bl46XVYx6Wmbr8ikHzv++MxsoZo8 2IUg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=selector2 header.b="jvVN3mT/"; arc=pass (i=1 spf=pass spfdomain=virtuozzo.com dkim=pass dkdomain=virtuozzo.com dmarc=pass fromdomain=virtuozzo.com); spf=pass (google.com: domain of andrey.drobyshev@virtuozzo.com designates 2a01:111:f403:c20a::7 as permitted sender) smtp.mailfrom=andrey.drobyshev@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazlp170130007.outbound.protection.outlook.com. [2a01:111:f403:c20a::7]) by mx.google.com with ESMTPS id 00721157ae682-8b30999a3cesi38163017b3.150.2026.11.05.04.17.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2026 04:17:45 -0800 (PST) Received-SPF: pass (google.com: domain of andrey.drobyshev@virtuozzo.com designates 2a01:111:f403:c20a::7 as permitted sender) client-ip=2a01:111:f403:c20a::7; Authentication-Results: mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=selector2 header.b="jvVN3mT/"; arc=pass (i=1 spf=pass spfdomain=virtuozzo.com dkim=pass dkdomain=virtuozzo.com dmarc=pass fromdomain=virtuozzo.com); spf=pass (google.com: domain of andrey.drobyshev@virtuozzo.com designates 2a01:111:f403:c20a::7 as permitted sender) smtp.mailfrom=andrey.drobyshev@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=BLGFI0KDNN0bfwaPA7ODGX856whuWnFRbqhsb0GuPtioyMMeqptZjKiW6+eX2V2LGqssTwQtzUsUxSp6/TVkwUSAI/CqjY5QZSw894ngl304SLRtV2a/tGEtMk6c91vVJfZ4IJj80IWdlRApgC0FDXLXVL7cbGp72Qq+/jynHyEHnP30o3SqdLjlYSossKPowmBvPEs38NQ5s1od8RPD55SW1BlLJ5MSSHKPxLqnY64eS9lUWrYtvuuz81ql21YXo8JhwbxAZFtunDRapb+y7AAHyk+2vpmcywSCLRlqeU3658ngnqBi+XX8AvYmAl8pmc///R7fk8Sf2d/FGuT66w== 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=MEKscvcqOz91rfPc9DbAiXibgcKKJkkCG8EzHg8nwW4=; b=R/I6T8c/h30xv1cWdcEoqCC5GnCRLf/8deGClzTKdwXIvFI9+qk7RQMb1CIBoNWX/SSVG2P73P7AC+PczAQE9anNysFTP3UBXkH3aNSQydHKzeZZ+fcTyXKU/k37IPT4oHFIlChBhI2UpNhVXPXLTzFbxKsXfhCyUMgcEGRHUIPBIuwsrtT/yPbF0rJ1aaIdPUYkPOR7Fkh7dR19Bp3lYtgs/Knf3FaV0xu+Cz0Mm1P5YVt6B3U5x4ZAxJUjtKVSuHuD4quOh2aUM1mB4/ZOKiwT3GiLf5eulC8nyhM7TRfk2nkFCI6xPdxgMUaYzHocCkT5lbAsR2h63wy01+44iQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MEKscvcqOz91rfPc9DbAiXibgcKKJkkCG8EzHg8nwW4=; b=jvVN3mT/1PRYnSUCd9n/eh/Ag5Z2Oa3rAzTxKzrGP93oNo82kSx/Zgr7RoGU9HdquR9gV/QK6A28o1UiB7bFJNCP0SiojTlNntRwsS6RdpH/LMg6vNAIGuOTAHCjQbWUwMc0xFZ1N4v29NHJU0JnWVnvIdIir/z8pZmnNArtp99gvmKagrngM/OTryKUuQHOCIAcCBuO+U07rwKep+azzgPm+TwMJeJN9tLHEXkjohhi1fXZUcqKItuBIm/D5UGav1VTlUuTtxwz0sx8wJrN4Y0qyiA8Umrnb4N+qdBHmcrjxD99MLT4u1+WS7sUVGMP/FQVBzsYNIe1pAsYDuu31A== Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) by DBBPR08MB6121.eurprd08.prod.outlook.com (2603:10a6:10:204::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.10; Thu, 5 Nov 2026 12:17:41 +0000 Received: from VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8]) by VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8%4]) with mapi id 15.21.0592.009; Thu, 5 Nov 2026 12:17:41 +0000 From: Andrey Drobyshev To: devel@openvz.org Date: Thu, 5 Nov 2026 14:17:32 +0200 Message-ID: <20261105121733.643754-2-andrey.drobyshev@virtuozzo.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20261105121733.643754-1-andrey.drobyshev@virtuozzo.com> References: <20261105121733.643754-1-andrey.drobyshev@virtuozzo.com> X-ClientProxiedBy: VIVP296CA0033.AUTP296.PROD.OUTLOOK.COM (2603:10a6:800:356::14) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|DBBPR08MB6121:EE_ X-MS-Office365-Filtering-Correlation-Id: 584b45ed-b885-466b-faf4-08df3b36ca14 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|1800799024|23010399003|376014|52116014|38350700014|261026140227099003|56012099006|261021123027099003|261102123227099003|261021121427099003|261026121527099003|261022105027099003|261009223027099003|261028144727099003|10067099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: KgFinuMeen/79aIROaI/vKOVTMow8ojWoJXSWbiPWylIdyUwzNkoL2BHZUzX/2d/dp3H//w30I8dxhUnDFT/4tYJqZ0Rk3G2pwrQuOUuT93lERfStnICLSB5xCzLfTIfUq9Mft3bOaStZMI2n9Mp0Km4gDZP4JufeIAmTkUlLaZKEhF7YIzgswBHiu/Ohqb3XMPEuXnHLpGjDVB5ZnQVoOSKASpKS1WxlyLFHWv2qVkU0QuY0r6n+9w3ZgiWFSBKowG4p/XHior49tfpXBgsft3OCq4RO7lTM+Lc44vwwT2/P9JMiyY+G5EbJBevnLfQr94G2UTNpmgaubgreQjNs2aCrP7AjPxNumMNFFa9qQRke0n32DL2dTFmhBJdoVez+3DLYoVBtmxn00u66N+hkCzQn/CyHHPQ8APGSsJ57rZKgP2MmRZRr0KYKPD1XZuRhq5KfVz7T7iDfcyxlM+wyb6SFieovBreulBcsQ4PGNKompeII5IGZO05AaGSP3S4WW37Y2cKodnKFs5xMbC5JdcDR3c/PXtaa2x9ecx1OMMtcvPsBqnLi7tG+ilHym8oaAXqzCLTXasUrHEdxl9PWy8Ss33aTcCs9HRGrzYXJO5WJgAecz4zl+hrbqwwiX7MFUUPWc/NOJasLl9vH5PoArV+vJrEVuj9NAObU/fUUCc= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI0PR08MB10656.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(23010399003)(376014)(52116014)(38350700014)(261026140227099003)(56012099006)(261021123027099003)(261102123227099003)(261021121427099003)(261026121527099003)(261022105027099003)(261009223027099003)(261028144727099003)(10067099003)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2+elCKmWDv3AakyvoUOBtHa0fzGi9Qknp/By6qXBBjiWthfnLIGUiGvizrG/?= =?us-ascii?Q?vwvXcX3Xr/r8Sludz+nINbVDzmc19djtcoXHIo6H/ncbpLRIf5VQnXbmqlZe?= =?us-ascii?Q?+Q8U8EseeSiOkzFrl1rxczfFvYhGxzbBppVLjDvj4legSB3ECkJFRawptPVz?= =?us-ascii?Q?ZbqyWjOuiJxAFMpNr8wqwg+d3xD2Glt9xwx5aonCeiqlw27nc/lqcbvZItw1?= =?us-ascii?Q?ISaYOL5JzdjqMPfFFsZHrsJdRkoGhZ19zNYWx08oiKTa5CJyFuAI4JsuSufT?= =?us-ascii?Q?dUbrSRhJQrdyTHQOLnNokB14Ii1qXYJpbuNb9X1LpOzCzpSabjNaw8fSvYZC?= =?us-ascii?Q?niHzBWY7S/kMLm7dPDK7qoTfekSRuLd3iDeZkzW/BGzxdfI0AdnJsxnCPX3y?= =?us-ascii?Q?Do+3xrw89Gqb4actgcDOsZr/Fi9I9N6tLJCteQppaurwDpdH0KrKFWedxfMg?= =?us-ascii?Q?d8f89lbv5FyRR5RvcBkzv4EIEDy7BY+FP6jur+gP8T1s99FMJ2QnWZL+7j8b?= =?us-ascii?Q?QXZrboL2RjA+5GIn34DFdFvNpNd8bqH/3Ea91xdONQE85x2BcIUBjcWfpYEQ?= =?us-ascii?Q?X+IrgnuIgW8SlTVKNt58zhnsIk+9tl3/XVv50R/WqSJTJCwmQs1Zp1e9XA7A?= =?us-ascii?Q?5v5I0h0ETOtW8h/8jsyvUmAccDmE4PmQaqQxaFIxWzaYu/294fuo6/eNvvnZ?= =?us-ascii?Q?nl1whsoJ2Bn2kx/Zhw2T3QzYRSbJzOLSntn3bDxw8VQUKYurRLdFgM7TO4yn?= =?us-ascii?Q?0g0DFfvrJglP22+FwdWWDCEsL8Iu3GqGxIdQUqTib2Ef89aR29/wWj2bRH9J?= =?us-ascii?Q?utchB6Q5PYV6dIwkPErznU1Wnot91Arl5q8Mpo0eCsqyKoKIPPG3pbgFvyBJ?= =?us-ascii?Q?Obcnx8QfjWE+bDGNFMFz+jTf3nrDVmZlCqhfRcbjSYgHU6QuN/aSzJs76Njl?= =?us-ascii?Q?hB/tV1IlbsOVbUWJv91baejyPi0JCotBwckWW70O9VNOfA3/tNnBL6zRFYId?= =?us-ascii?Q?/7PcUrlzrsbNEB4/3mohVLKyvAEoJ0bu0cyygF7P3u8QcaTJaP6z4YMNmMH9?= =?us-ascii?Q?NwvozBcbUpxJHyJLExO2jJ97JSBbc4SSw+qs/5Kw+/YJ/aFlJcD1kP2qtVSC?= =?us-ascii?Q?c2Jz/hIApiAciXkQjf1GtY89tvAKv/0oUpo8i+GFRANWwFA/GwbWPK2D4C6d?= =?us-ascii?Q?6qDn/09M+0KLCvIL2WR1BR5hC8hZ6MgFeBTwAIMK3w1f/rujhzCmJWb0LBR5?= =?us-ascii?Q?jhYJ619eObnMFW8yISJ+C4PRpDqrBtmlIJSY00f1vVQsuh8tcc+ep6RwsFdp?= =?us-ascii?Q?IvgC/w/H71WwHh4EYTGMw3e2LBJmNHtTWEJnF71557av/m2Xu4rRR399pAId?= =?us-ascii?Q?hwVoGgI9IvU6DYNcXMnHugyNHT8oFPONmKiQWV35+BT6KWPfQ8z3NYBhs04V?= =?us-ascii?Q?IFxTdr5w/dwZPstFRdazW3DeWUp+NY1sUoiggXSEvvbnOpNKQtHjcIw7Bsu8?= =?us-ascii?Q?kB69EBVqQZiKca7lwgWdFE6ainJ6iAoQLDjoi/WcKCa/o+G52EpZaRTpeLvX?= =?us-ascii?Q?pYNgTHjvSueEvMr5HWZLbthT5hc69cPsoQIhHl2T8TBhjzWAYlzrKW4QsaCo?= =?us-ascii?Q?1hltgwXZ4Nj+ByMYkRNSJNrECv6DMJFoagvZRSlB+Vfbj7HNCm0cm6KBnmRf?= =?us-ascii?Q?5HyLCOazfkRJK9fGMTgOK2ecwBDj3AkNIkusSqLhYR56kUEZV8uJIIFHStVn?= =?us-ascii?Q?K9cwDIVLoaiAqHsZ6CPDdUN5L/5kCcA=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 584b45ed-b885-466b-faf4-08df3b36ca14 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 12:17:41.5504 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: f1ixWYEThWaNppumrDsv/wpZab9hX5fnDHNNy5OCcRx09fauv6zvLEX/ALdUoEKxQxSk8JFbZWE9XNqGKqyyIV7Lh7SXH1VjZ9FAZz901bY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB6121 X-OZ-Fwd: true Subject: [Devel] [PATCH hci-8.1 1/2] vfio: take the kvm reference only for drivers that read device->kvm X-BeenThere: devel@openvz.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: OpenVZ development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: devel-bounces@openvz.org Errors-To: devel-bounces@openvz.org A device takes a reference to its group's kvm at the first open and drops it at the last close, so that device->kvm stays valid for the driver in between. QEMU's cpr-exec and cpr-transfer keep the device open while the VM is re-created, so the first VM stays referenced for as long as the device is: its vcpus, mm and in-kernel PIT thread with it. Seen as a second KVM instance in debugfs after a live update of a vGPU VM. Only three drivers read device->kvm after open_device(): KVMGT, vfio_ap and vfio-pci's zdev support. Let them say so with needs_kvm_ref, and take no reference for the others, which then can't keep a VM alive. Tested with nvidia-vgpu-vfio 595.71.03 on RTX 6000 Ada SR-IOV VFs, a vfio-pci variant driver that doesn't read the pointer. Fixes: 2b48f52f2bff ("vfio: fix deadlock between group lock and kvm lock") https://virtuozzo.atlassian.net/browse/VSTOR-150597 Feature: fix ms/vfio Assisted-by: LLM Signed-off-by: Andrey Drobyshev --- drivers/gpu/drm/i915/gvt/kvmgt.c | 1 + drivers/s390/crypto/vfio_ap_ops.c | 1 + drivers/vfio/pci/vfio_pci_core.c | 1 + drivers/vfio/vfio_main.c | 6 ++++-- include/linux/vfio.h | 6 ++++++ 5 files changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/gvt/kvmgt.c b/drivers/gpu/drm/i915/gvt/kvmgt.c index 96d23717684f..a0d2f9f4b720 100644 --- a/drivers/gpu/drm/i915/gvt/kvmgt.c +++ b/drivers/gpu/drm/i915/gvt/kvmgt.c @@ -1418,6 +1418,7 @@ static int intel_vgpu_init_dev(struct vfio_device *vfio_dev) int ret; vgpu->gvt = kdev_to_i915(mdev->type->parent->dev)->gvt; + vfio_dev->needs_kvm_ref = true; ret = intel_gvt_create_vgpu(vgpu, type->conf); if (ret) return ret; diff --git a/drivers/s390/crypto/vfio_ap_ops.c b/drivers/s390/crypto/vfio_ap_ops.c index 766557547f83..78e8566a9ced 100644 --- a/drivers/s390/crypto/vfio_ap_ops.c +++ b/drivers/s390/crypto/vfio_ap_ops.c @@ -779,6 +779,7 @@ static int vfio_ap_mdev_init_dev(struct vfio_device *vdev) container_of(vdev, struct ap_matrix_mdev, vdev); matrix_mdev->mdev = to_mdev_device(vdev->dev); + vdev->needs_kvm_ref = true; vfio_ap_matrix_init(&matrix_dev->info, &matrix_mdev->matrix); matrix_mdev->pqap_hook = handle_pqap; vfio_ap_matrix_init(&matrix_dev->info, &matrix_mdev->shadow_apcb); diff --git a/drivers/vfio/pci/vfio_pci_core.c b/drivers/vfio/pci/vfio_pci_core.c index 7e360f6f89eb..1b02c2fb6c20 100644 --- a/drivers/vfio/pci/vfio_pci_core.c +++ b/drivers/vfio/pci/vfio_pci_core.c @@ -2094,6 +2094,7 @@ int vfio_pci_core_init_dev(struct vfio_device *core_vdev) vdev->pdev = to_pci_dev(core_vdev->dev); vdev->irq_type = VFIO_PCI_NUM_IRQS; + core_vdev->needs_kvm_ref = IS_ENABLED(CONFIG_VFIO_PCI_ZDEV_KVM); mutex_init(&vdev->igate); spin_lock_init(&vdev->irqlock); mutex_init(&vdev->ioeventfds_lock); diff --git a/drivers/vfio/vfio_main.c b/drivers/vfio/vfio_main.c index bf01fc64ee64..dfeee692c2a4 100644 --- a/drivers/vfio/vfio_main.c +++ b/drivers/vfio/vfio_main.c @@ -441,7 +441,8 @@ void vfio_device_get_kvm_safe(struct vfio_device *device, struct kvm *kvm) lockdep_assert_held(&device->dev_set->lock); - if (!kvm) + /* Only a driver that reads device->kvm needs the KVM referenced */ + if (!kvm || !device->needs_kvm_ref) return; pfn = symbol_get(kvm_put_kvm); @@ -1505,7 +1506,8 @@ static void vfio_device_file_set_kvm(struct file *file, struct kvm *kvm) * @kvm: KVM to link * * When a VFIO device is first opened the KVM will be available in - * device->kvm if one was associated with the file. + * device->kvm if one was associated with the file and the driver set + * needs_kvm_ref. */ void vfio_file_set_kvm(struct file *file, struct kvm *kvm) { diff --git a/include/linux/vfio.h b/include/linux/vfio.h index e90859956514..96a09843e0a6 100644 --- a/include/linux/vfio.h +++ b/include/linux/vfio.h @@ -52,6 +52,12 @@ struct vfio_device { struct vfio_device_set *dev_set; struct list_head dev_set_list; unsigned int migration_flags; + /* + * Set before registration by a driver that reads device->kvm after + * open_device(): the core then keeps the KVM the device was opened + * with referenced until close_device(). + */ + bool needs_kvm_ref; struct kvm *kvm; /* Members below here are private, not for driver use */ -- 2.47.1 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel