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 6CD4F80E7E for ; Thu, 5 Nov 2026 14:19:45 +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 6A5EIH5e005614; Thu, 5 Nov 2026 17:18:18 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 6A5EIH5e005614 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="QurRJ3XS" Received: from mail-ed1-f72.google.com (mail-ed1-f72.google.com [209.85.208.72]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 6A5EIAkc005603 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Thu, 5 Nov 2026 17:18:10 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 6A5EIAkc005603 Received: by mail-ed1-f72.google.com with SMTP id 4fb4d7f45d1cf-6b1d6c10725so2332697a12.3 for ; Thu, 05 Nov 2026 06:18:10 -0800 (PST) X-Gm-Message-State: APuU4Z+b/WJ3lk21Zx5nxSAr0aEtcI9cnT3S+lklhDdXQuwXDZzocmJo QmJEkq18MIXlAt9iDi7gp2/QcyeA2XEwpPUst5tR83GQ9evIouXUTHNwPOXNZT1bOTNEyj80/cn vfcFzdbSW9tbVeXgPwPvjzlYESfB0LqYOG3QYtRUvzu3XFw+h+bJHsg== X-Gm-Gg: AYBFou18WR2u0DyeMnMyq+z0noK3VtIVviu3xVAL/WQD/3qLUwKCGTsuHGkkbVtP03d 16H6g/r/Sj6MbqbClK3I1fAgnH3yMyPryBnbCmzQ8W8X9myJhvJQMz8XTpDB+MGESj+bSpwCIJo Ap6cVBJgbAMUdPkssA9K3dEYLeIuYPxbOzc3cLquGpiKC5nmhF2U0x7v7Va95W5mWHcfJ3pMm1/ e/LXTVOK3aYmiM3l1oNx+s4Yi8sG9GBBT/35XSsLcyKRw+8luheuIJbq4vP0FT4JIj8yEJ62jsT X3KFIYRYyQcD1pmdnjzMVkDziFWNwly773K1e3si59yCgm8c8zTvVkxgohLgb60EsDmIEQ53Vbf XkaFW9B0rmn66GZe89Ea9iR0cnfn/dSR9N9tNCEkp6+1G36ScRupP5Y1e2O01DIz1cHZ7IuMXDQ jEkbHBj4+G0bH3sds6Cs8rYiVVH7GV5RIkaQ== X-Received: by 2002:a05:6402:15:b0:6b3:a1ad:ef6d with SMTP id 4fb4d7f45d1cf-6b4d33c6910mr11705652a12.6.1793888289832; Thu, 05 Nov 2026 06:18:09 -0800 (PST) X-Received: by 2002:a05:6402:15:b0:6b3:a1ad:ef6d with SMTP id 4fb4d7f45d1cf-6b4d33c6910mr11705637a12.6.1793888289350; Thu, 05 Nov 2026 06:18:09 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1793888289; cv=pass; d=google.com; s=arc-20260327; b=aaonmrXfWaECXt7H1oHqOtjEQBtVWKLDPXqdT+W2Dw7uMXIO2UGzf3/EV78GCBs6kr FyYKBz1OpdL7uq5m4fT+r8cK62Wy+v9xmD/J04EeAHMnTaRgvLWoMGPN+6nNS02UutJt HEEusUHMGluiPOR+DFByNQ+YTgCnp6+uVqFQg4imxNc6A9lD3tX3Q5C5OJGsAKeOSR4I Klg0XeT6h/OqFgE/IV+8S8dy9X/2IyrjXg80H/7uw+XoNBNGVj+4jroVQ7m112T/2gCE sSOUhL3CKHLBZLTVQIGHjXN4PXj+5Y8fspMfNLH+NIlG/VvQkWy3NSEJsoXVm14X5VVI FR4A== 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=UdQsgl8ORKqftH5xHP4XK/gjh2NtQX0vdfdQUCu1RJs=; fh=+bcAEjp//7O3A4WDIzCdqY8p87h3NsxnWABfa5VgzUs=; b=pYjMV34W0a8bkMw1W5Ex/7DwZ8afnLAnO418B4eMKKXmUmCah/Yu2IQtuV0xs5QSU6 naou20MJQBMMfZuCu1Es7RmZRG0qKVyHYfbIINgO37ZnlPCcx2h0jQ8livY8qDYki6vc fBStj4jpbus4Y31LF8XtrKO8AFA2Fp2qof69HwARUk2vMEP/2mcitFW2lTyiaPWw15bH OuRPqHounTIX9KW2s0crdz6+uGv5C0Q4GMfNzTUuJHvPXXICvp/F2t1aF+/FPBG0jWqz 1gqwW9aqbp8WtbEBcHKMdI81pWOTQ9IQTCdUOjSK3eI82MKKWiWirtRbL1XaB7Pl7FZj T+6g==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=selector2 header.b=QurRJ3XS; 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:c200::1 as permitted sender) smtp.mailfrom=andrey.drobyshev@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazlp170100001.outbound.protection.outlook.com. [2a01:111:f403:c200::1]) by mx.google.com with ESMTPS id 4fb4d7f45d1cf-6b566073c26si3882743a12.248.2026.11.05.06.18.09 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2026 06:18:09 -0800 (PST) Received-SPF: pass (google.com: domain of andrey.drobyshev@virtuozzo.com designates 2a01:111:f403:c200::1 as permitted sender) client-ip=2a01:111:f403:c200::1; Authentication-Results: mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=selector2 header.b=QurRJ3XS; 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:c200::1 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=bpH6bTjPg8O3ptxmJnUTzpglv/LtEAJvgZiCxQDXNxPh+bZyeXDtp/tRP1fTTKk+Q174oXSrDV+IVfVm1TgwyBV7eaZEflTjJ2fIKx0V6J5SheajssD5IsMXRMNHdW0b7uLbcCwqztxmV5rICvrCeR3jo4Dwg3dD79l93IwHSU/F6/lCD1SxuoN6/62R+XPrEDBBf+kaPBVwTzNESUz/O5T5QXb/0GINukJOf6JA9nqTS5qxP0Yw7Hkf8VBf52acvE2/QKFP6d3C5+XJGR2awIq64iKZqP+UZ78WmAZp99ZdhokqqZAQVBrtdkclm0Ab0dnQUOkPeCdKVNwkeIwpPg== 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=UdQsgl8ORKqftH5xHP4XK/gjh2NtQX0vdfdQUCu1RJs=; b=bOzdlawaY7CieTI0/d4xdRuc/onU8JjXKEXY1FFwOc+84vctviFjbBuyMZEZKCcOxVm7/5nQMp0Pk903k9aVyLdlTgGbGByhUGg47ZsS3vRWbJ1COBBabVNOlgwAjMeEqRtChJgD4+/ZOaMHEb62YHNS10ZDxWLnKtmpxZCoJ27NEmiJJYQZWG87KUbSShd6TyszgwMW8T6Elc+dpI97YBYRXzezGgHy1FCA+J/oQD0RwuqK6Fw9DwWplYpuM8HFCvxlJaUXApsTbViLDNGrd79z7s4+yTr6qZhFk7nLReR+p9SwAIc68YnsOhN8rugbCwZnY7VBJzWVFEgK6DQv4g== 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=UdQsgl8ORKqftH5xHP4XK/gjh2NtQX0vdfdQUCu1RJs=; b=QurRJ3XS0AwLXlgWFdiFT73mqjayl6ri8i9cLXL/OWkdMfW6SnoVeBNB635gerDZZXFS/ydMmVong55eeDN/g4C4aSZUo+cIwrsNWSbOBVpuxmLd2cY3R0VyATzGhw8xL+kB7+90Cm0xnodYcaSp1Y6FAk3HX6G1ek76Iej413eGQAScm97BR5lr5aAeuHKq+dxyKQ/Z3+/UkW1JV2U7xauOfD3u2tayDoWkmGzx1R0c51mSulB9H3wOxsjsZJ74d4db0Hp7916Pk7Qzxk6xJFWHV1HIQ7qDjUfGKiuiMMylzpG+eaiTuWel4Hq41FjyVmNW0Qf/1fiyrtptPpsVPw== 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 AS8PR08MB8062.eurprd08.prod.outlook.com (2603:10a6:20b:54b::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.592.8; Thu, 5 Nov 2026 14:18:07 +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 14:18:07 +0000 From: Andrey Drobyshev To: devel@openvz.org Date: Thu, 5 Nov 2026 16:17:59 +0200 Message-ID: <20261105141759.750676-2-andrey.drobyshev@virtuozzo.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20261105141759.750676-1-andrey.drobyshev@virtuozzo.com> References: <20261105141759.750676-1-andrey.drobyshev@virtuozzo.com> X-ClientProxiedBy: VIVP296CA0122.AUTP296.PROD.OUTLOOK.COM (2603:10a6:800:358::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_|AS8PR08MB8062:EE_ X-MS-Office365-Filtering-Correlation-Id: 00d7a0e6-193d-4548-35de-08df3b479cc8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|52116014|1800799024|23010399003|366016|18002099003|22082099003|10067099003|56012099006|38350700014|261022105027099003|261028144727099003|261026121527099003|261026140227099003|261009223027099003|261021121427099003|261021123027099003|261102123227099003; X-Microsoft-Antispam-Message-Info: FhL7CcHgFfCCn0NC70NSOmxML4oTDjMf9+NCoXlX7D5lQgT+34bIBL2nGcKy85n+iGHM9TIfWFRD7kMYFtcGN2vI5tKM/zBgReofOYz7hcOn9kqMhwl9GS5lDf53l3/rGsEJYbhEFVXwDaXdbdP3tGVaXqEDFJCLYofKrKHwucQmsm8+K1CH9bBkRnMotT2+EOW0Nn2TvRaslr1iL4lBFmjyOS97MDh/tnnrSp6HSJa/Mkx5VS7wSXtojAVTyHk01/YHAiHJeNSXyrtontw+TfzaKVwXrBQY2VjUMizOc1lZQjIsuwvez/SUQeE2X08Kv6TXgZJL4LdaCG5q1+QdPuCe92J89Ls4ZBQNeaQdWw1s2gzSq0hBuU8X24WyTSb6YbkO8NBEBEqSso2z1ehlN2WFHaUcNv2TN1brAj+Whhr4QBWROmRK6fyMqCjWzXDDmipG8CPou2Tq1/bV4E6iGBUxwyfpMKyW8zNlyac8UcBa45eO37Q977znVtWeadXmfryVz46QmRX0C+HEzCouMB4sR8tVerttSuQjkeQ/wX11aHeIMpTV0sN6ElI2O7np6iP6ATaAQA1iS7KBQv1TWA26e6tOWU1RdO9wU4RIQ/A8opQ2EokgwfL/wepRrr+C/Ryb/oCh1L7QsAQSGviZHeuuSziI5vCIeTnDDdYmgdA= 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)(376014)(52116014)(1800799024)(23010399003)(366016)(18002099003)(22082099003)(10067099003)(56012099006)(38350700014)(261022105027099003)(261028144727099003)(261026121527099003)(261026140227099003)(261009223027099003)(261021121427099003)(261021123027099003)(261102123227099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2NB8iViBOoyVbrdBwHWPOLEaFtQmQtfIV1DIdKPGYTTov/xL0/CLmZMpliqs?= =?us-ascii?Q?puE/h2RDjCM+HLL0zIHNxLVZRZxH7MVs1EiOOa5eIYSDXcmxS6+w2G+H47UC?= =?us-ascii?Q?4Azny10YxKpdumKq1rOXbOAXkxkQFWY7ODkoTohuUwm/6SBYfM1jPBfI1c/V?= =?us-ascii?Q?AfIUdr/tuh08UgaVueIuxGF6JvQ+i1cXFiPRRaq1wR9Rl1f/+Ax7KYbSA8n8?= =?us-ascii?Q?rc2mapuBGjhYBzT3Nj6cC0vm1VkGmAU1D83ygCJGbz8Srv/D50pi4BgMpQ4s?= =?us-ascii?Q?CGllbCl7LRlw1wBLmko4krIjcmD8Z5qNo2pR4ZBjCx7+Vlg3asho4wvqeUUB?= =?us-ascii?Q?6aRr7DEcHrY8AbaYzJjVLvl3rqUJ7RN0rDfSO40rD41MHr+yKY2Z+EwhnEe2?= =?us-ascii?Q?k2U0RbAlmj9p4t6mHXziOJwm4Bf0xLZ/pGPLZk4uOPWQOL20BP0wdF914irc?= =?us-ascii?Q?058CEODMyOrVIJ4x5DO4ETgSO8jQfxExy9VBuHGB4AZZdMaSNl+I9w8f5rYY?= =?us-ascii?Q?DfKBdy7MdyIt+4iFCVjunUKP3+WdAiYH1ipUqtzyghC6CGVIS0geCXutJAM5?= =?us-ascii?Q?v0V9VLsOtm+JAFgYTtaYDyAk0XiUyxADuuzesYfJRugQNwjN/7N9x7xH2TMi?= =?us-ascii?Q?uukm1xsJWNBbolw4H7aMQElSqPxSgFioYtTl3lqmeKxB4lIDJLoDOljzD75t?= =?us-ascii?Q?FrG9WOWPr27tnPCO61q7+FOGohBE/b1IwdmnlMh+eB7MdWx4ny+w7yPsuyCP?= =?us-ascii?Q?oWdTYGFzVNcVvZNyZHq3WE5UEzqXV+uI603UVujnISOyK3HWKAAjQCkQlvyv?= =?us-ascii?Q?Ax3Suh+3ucVA/i3BJbaGzOgtgx/kB8qqD+3T6W0C+FVN/8upMpxdcd8dn0s4?= =?us-ascii?Q?HcwAlaeEQdrGy58V/DkaSr7vVKq5OHAYx789QDxl/lefyEkH927PNiHVbv3X?= =?us-ascii?Q?WmU76xozs4RIB5j5BHYgNDoytQ9SHLMwLAgRV1HMH5xXccDhBob2+3/v/OSY?= =?us-ascii?Q?zwgxkYhY06olAMViQKBaG4Nv3JpZkzZorIZb/mQsf7Q3xvNu2x/e7Z0a2Oyh?= =?us-ascii?Q?tUUXFN+Sx52FAlULiTS92GKYxbyjhUFuQXSO7SR+OiMdMfHPCynHSABzgyxP?= =?us-ascii?Q?3C4u8dajUJ0W9fa9qFc3UULUfkUZtlc1ZwznOJ54jtZDc9rMYDy4cGev6WtI?= =?us-ascii?Q?a8Oa8Kks5Ah9BZ7FSm6EeZu/y8gQVAJ90KyMndadyUZyuIRrLWpaGRUyWAgJ?= =?us-ascii?Q?HLuTcIM2H0pt+zYbNV9+6m8eFS7uNFcpxLUqG9H/ElH7F2GRrnlyEIcwGO7o?= =?us-ascii?Q?rp+jCd4amd75NH7ze+B2U44Z2SJMXV+qkabRxiY6PLGWkwXsz9pBeyn0NjRU?= =?us-ascii?Q?ukkkrPlJRpjZwTNVhX5r86OVrz5wg8HpCoM9ozqasHIH/aLZQGm/B7/x3YUK?= =?us-ascii?Q?dzCCJhpX6mGmcV9I/RheSEWAEX5rlsTRy3m4Acn6uFGOjKv3wMjuY2vm9U67?= =?us-ascii?Q?qSM7Ha9gnARTaOuLuRUjM/AJM6FWJ7G1Iky/WEifMc1eTX4/R6/nNLwRAODI?= =?us-ascii?Q?MhVjG/5ksHGQsfTdZ3W5MifX8/fweAtkPpvlV5zi2n1Xhq2Wtp4/ZG/E1HNN?= =?us-ascii?Q?Kk6jMPgEp7IhPpaJQAAP6kvmbvALhP8rsO/ubJpehxe06OxWC2/cAOgfFQS4?= =?us-ascii?Q?wacEJxsmmWhDPJDnP+us7Fr5AAeLnpBLSvP4jajDBwiWZnrYQ7/G7mhdZ+9+?= =?us-ascii?Q?GYiThfUp9jLjkNVrRSB4S//IB6dOHdI=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 00d7a0e6-193d-4548-35de-08df3b479cc8 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Nov 2026 14:18:07.1338 (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: O1QeYAwf+2I72fiRIREyimiB7j1jfhk/vPX5L68qr+9uTwCGtggNjaIfGIYP0kmr2wVvgNFDQNEXLBb2672ks8DrIr/uSnFRLMbxrfzcF5g= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB8062 X-OZ-Fwd: true Subject: [Devel] [PATCH hci-8.1 v3 1/1] 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: KVMGT, vfio_ap and vfio-pci's zdev support, all in open_device(), the first and the last at close too. Let them say so with needs_kvm_ref. Without it device->kvm stays NULL and no reference is taken, so the device 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: a grep for kvm over its sources (nvidia-595.71.03/nvidia-vgpu-vfio) finds only the kvm_host.h include and a comment. Fixes: 2b48f52f2bff ("vfio: fix deadlock between group lock and kvm lock") https://virtuozzo.atlassian.net/browse/VSTOR-150597 Feature: fix ms/vfio 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 | 7 +++++++ 5 files changed, 14 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..9236058fc4b8 100644 --- a/include/linux/vfio.h +++ b/include/linux/vfio.h @@ -52,6 +52,13 @@ 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 in + * open_device(): the core then keeps the KVM the device was opened + * with referenced until close_device(). Without it device->kvm + * stays NULL. + */ + 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