From patchwork Wed Mar 12 22:59:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Micha=C5=82_Winiarski?= X-Patchwork-Id: 14014021 X-Patchwork-Delegate: bhelgaas@google.com Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F029D1D5CC6; Wed, 12 Mar 2025 23:00:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=198.175.65.18 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741820442; cv=fail; b=jUPF2Sn9GEytKQw418YMciGe69Zybvt+fGu5Eij1XsBLfh3fqgS1hBTP+4wSci5EMjIrX9uJjuRoNf45ocpYJ+yygksu0b4R00tlAKaeCL1ipvPFu43+jXfVBSGUVEewYrvCCrbeZoa5J6040sSak660rf7kg+aaflT72X7cH8k= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741820442; c=relaxed/simple; bh=qtnCioYzMCkom9EPC/STqqRZo/KsY0KgZyXS6FSiysc=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=R9Hq31F5SEghn7xFytgjLCbvjHxf7nJjRsEfRm4GsI0B/Ll1o+obwRomYs/+xdYYF5XzmFAHjJRPGEtw88G86irmQ4fnDbRyCzZPMC3qsxvTumaArwEKY3MIfgM9k8HuWlzVsGqE3+wd2Z6/ZWvOtl2yU893xXszusgW+FrHEjc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=gfh9fdDB; arc=fail smtp.client-ip=198.175.65.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="gfh9fdDB" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741820441; x=1773356441; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=qtnCioYzMCkom9EPC/STqqRZo/KsY0KgZyXS6FSiysc=; b=gfh9fdDBXoZnVcyp95tQTdfAZzRdZVj+bkmP3xJqk1xM3G/jz6H6bkZV fDESmjV6tzHfD9KLWBvah9SZ75lqA9iRP39gngWO3bIb6fngQWKVVuIz6 CBNvnUHiFjr1bUla7r+f2ZpiONKOW7zXHjjG6PJnMoFF2RW2ld5b1pNZt s8J6fSwLRHBELC4scLb5TZxNlhgpEXFvbDq0i3cvY5XXO10oJkzVMERR7 Ki53ZrLOSs70NgC/50FZ7/oWPmdw57rz8H4q7jGNmgDYGXzgjaWkqdQ1r 5TZ0v2oH/V2uI3BhYnhvoO3vuE1uqfjM3Dr8i2K8lTtZ4/+xPLe9H7Pc0 w==; X-CSE-ConnectionGUID: vKyrfepwRq2lIMWjIEDJ3Q== X-CSE-MsgGUID: DpqHHlEgSmGmaIF8dQErEw== X-IronPort-AV: E=McAfee;i="6700,10204,11371"; a="43103745" X-IronPort-AV: E=Sophos;i="6.14,243,1736841600"; d="scan'208";a="43103745" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by orvoesa110.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Mar 2025 16:00:35 -0700 X-CSE-ConnectionGUID: nHQvRjleRk+71qeDcOZhZQ== X-CSE-MsgGUID: 0q1+Px1KSBSL4uTmvz7yjw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,243,1736841600"; d="scan'208";a="151604445" Received: from orsmsx902.amr.corp.intel.com ([10.22.229.24]) by orviesa002.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Mar 2025 16:00:35 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Wed, 12 Mar 2025 16:00:34 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14 via Frontend Transport; Wed, 12 Mar 2025 16:00:34 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.44) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.44; Wed, 12 Mar 2025 16:00:34 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CQgYaLqw3HCUjAngPkghZcXCOozcIwnW32pXmSnGxJuU4bHlxfJs+JdO1jXMkBCvEIOcSzHmbHLICgTy8iUQE9DrAhoSojKhgvIdSdpHFLvAKUAgjYGiJVyvnJMiHcCYdm2/1otBjHwUs/ZNFBrMw5WpoG3w/DwynqKish/HLGDQoWsOqrZA7lS3+TdwJuSvU0ASKnEvOvCkz+FTMKPr4jr1U7ZTvfYSwI/0vKIbzlGoY6qTV3Vk9baifUc8l/6wAIDZes2zeBeVMSTq8TsYH2/FRJtnTk6pTd52mzbEWka2QtulxMK+N3qQMYkCu2tJmWaxneqFNHJ/PXodfh73Pw== 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=zU4+soR73AbeVtWJ9o1ctMXYyUuJ1z7e0Y6XZTGEFWw=; b=jeiKn2D+pSTfXvG5eV8JbC5DxfOsHYJ7tg5c6k7y7UJpCSaxqWjAv2qFH8fhXeN2nMXbIvPkfvjzIux7I/kjY6NncZyD6FDqiZnWzhKyXAWNy/802tOLpfziG0/QzsbsQVGaQMHtlW54OYfC/WsYDEkCYrYdQrbtJ4GCloYcGyVtMYSX5IBwOdumLwE4XFHf2f6mIiGxvHPtV6grj5NSa21c0m4KFphZVZEcVSHUtW/G+oZ/iLMWlZm4NL2Ro0H/nrheZmkcrW/pDf5R6lG5tKiwFUnNn3pgqsWzNI+EuyZbaYirxzcNb0hQnnuB6dPuJXGW/DAONbIM/7GpzP8haw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by SA1PR11MB6735.namprd11.prod.outlook.com (2603:10b6:806:25e::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.27; Wed, 12 Mar 2025 23:00:32 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%6]) with mapi id 15.20.8511.026; Wed, 12 Mar 2025 23:00:32 +0000 From: =?utf-8?q?Micha=C5=82_Winiarski?= To: , , , , "Bjorn Helgaas" , =?utf-8?q?Christian_K=C3=B6nig?= , =?utf-8?q?Krzy?= =?utf-8?q?sztof_Wilczy=C5=84ski?= , =?utf-8?q?Ilpo_J=C3=A4rvi?= =?utf-8?q?nen?= CC: Rodrigo Vivi , Michal Wajdeczko , Lucas De Marchi , =?utf-8?q?Thomas_Hellstr=C3=B6m?= , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Matt Roper , =?utf-8?q?Micha=C5=82_Winiarski?= Subject: [PATCH v5 1/6] PCI/IOV: Restore VF resizable BAR state after reset Date: Wed, 12 Mar 2025 23:59:44 +0100 Message-ID: <20250312225949.969716-2-michal.winiarski@intel.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250312225949.969716-1-michal.winiarski@intel.com> References: <20250312225949.969716-1-michal.winiarski@intel.com> X-ClientProxiedBy: MI0P293CA0012.ITAP293.PROD.OUTLOOK.COM (2603:10a6:290:44::20) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|SA1PR11MB6735:EE_ X-MS-Office365-Filtering-Correlation-Id: cdcdc688-0f49-4352-ec3b-08dd61b9b0e3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?8/FKPZ6oIndLA+/INhedlwkvE3hxjU5?= =?utf-8?q?JBawuPzKT2e+agHdh3rGtqCqD86peEuGtm9Eo7ciWKwkuPTxjA0ba2B+xw+kUFGxX?= =?utf-8?q?e5F5Gg1wWsNlZHXg/OYrokVGIZhIidEOVR0eYl7unhqdHURUkm68Q0Q2W2EOuHGRb?= =?utf-8?q?FRfRs79sxqCKkeA147PsIvmH3M3PYs5KDiTn6/1poHiCRsmk9a1HdOtJiu3XUSfu9?= =?utf-8?q?axv/dKmIHgStO0kcwZF71L0KAmnyLbhOEr+q5B8GXEpFxq18EvvrhZdTzJOnfmgNC?= =?utf-8?q?7UE+cNSg2sj5pgIg+CY4JIUEy0XivPYHkMWXTCu3OGn+hDAcptRPeLoSzGrQNLuiF?= =?utf-8?q?YdvNfXa3TZYzNur6Ek0JtJJNANNamlU9ZoNk+s/kRaQuq19JSIVpniJr+L1c5TWjb?= =?utf-8?q?56e1uHpC83HWAUjl8IdBQLcNJ30ZesCiaL16Ue0ptMzUV3DuZOGTmOAFWBW8AYFQL?= =?utf-8?q?PI9mmf3TwvMrxyno9h1NxplbgAOrU8+14t4kTzN2SOw5QFUOX1yxYJONY4765NwqK?= =?utf-8?q?NwkaZeDz1+kcKQSjABzvOgsT/qrqA8UikmBay+kIpKt9mPKo3k3ZsBv84GZ1Ew34u?= =?utf-8?q?7yn3CzL4RcTPBy2MLthwU/puNskdYSjcHzomy6sSSn3JwpRwBiSy+qlKdiPO0zKGt?= =?utf-8?q?1YWnPb7yeGjar/dWleq2BpIYPrl40ElwWkVjJm8x5Kfn2+Hjzv8aVTRRdKIZkiv1w?= =?utf-8?q?Jka2AdxTSCamHmK5F8SuRg5EVS5IZl4NPWy/4flt9SgE7MkyXrTquAy6NyZwOj2xC?= =?utf-8?q?mMeYNRfjtuL0zo8cix6WL6WVzCQXosi6Yt+mv8qDihhEt1i92t3xmFuaDWvUNbhAd?= =?utf-8?q?Dq3olhL0UiXrN7FTbeRv04A8LO+nFGWcGyzbOII5KkO5Q98cMo27XLoJJm3PfgL7N?= =?utf-8?q?WGoxMDAZCvkZncEUiD4O5FbosNbpUHDNEO8ELOIqM9Dtjh+1XpDy++o/2QCSl0U2l?= =?utf-8?q?gGnYo76w+dbtMNNTgEb5OTScK5ttYmecTVt0+Eq7vakdk0V9p3nRzc6oln9uByLg1?= =?utf-8?q?suN/xM7Nnz0HOu2duhI9yvWLeVUO2DKavGbox8V83Dl4j7Kc1PN0C6c0BLkl5vW+t?= =?utf-8?q?CllbCQWgpTOzB0iOkKVvgEs2hQO8zFyjA0qHqdtMWT/uMAKk61LgvujBbW1gqHoXv?= =?utf-8?q?PszaxgC4U+g/S/XHxN/FbdQjRMvAmoAzgKXb+eWPTeAu4z3mWl7UdyKNfH1DYXzOi?= =?utf-8?q?B9bppK9I3Tec4+Js2JSfb3d2aPsA3kwZxIDepkHzJpZnoIeN5qQ2SveMAtLcCsKg1?= =?utf-8?q?sfWsyVNsRJpcy4G18Wl2hYwUUOf8M4mYbGspnyeafyQO2XsILZ6jr6A13TkGmxURW?= =?utf-8?q?iiaw4ix1kW49?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?zfLmD/4KFcyy+3wEFxaBELLi8NAg?= =?utf-8?q?OFjRou1p8idpeAgZyb5+wWtjkAhmJzOwclYm2DxNbpDirpLotVfZfd1aKFKgtO4He?= =?utf-8?q?zHBWhEgSMKAqWqM8/aq+9IagyyBtYxOti14DpxBk0TFWlD1PVp/M6obaV4zjAaZxw?= =?utf-8?q?ThvGYeLoS/JmdoDk7/87yjSCKA7PxodfUNDqFV1wX5HtCzI2uMlUq2/t262eUBso0?= =?utf-8?q?rh4/fgoGXfBeXGKU0K+hYZwe52w7/XKLBZTs6kC/Og92p7s9WN0UdJsmeBlyNfJpY?= =?utf-8?q?QMxFH1Y8x2InbLfQTFrpSlm8nWTo8sJidd/F0LrFNbeo58ExOY1iXYbqPk5t/nU+t?= =?utf-8?q?QuZmb3om1pNXed43wUBcOA2nQWgHO5fc7iNxAX+s+vJDFcw7Z8d9H9RxsdvNJtWS7?= =?utf-8?q?ePxDtzYkCQnqiVHORR2h9VJsoBDQHXAwjaSKhQVZssv0SGum0b2OPz9wfTBeNcoLG?= =?utf-8?q?ZOPEvSLJ8Q1d0W1wplh2QPHIqKrd546AcX4RKYkM7X/UVAv5Mz+Kv6IQUdEROqxbz?= =?utf-8?q?nefGQ1cycRAKh8IrEg6X8cB4sQY8V2rX8Vlk2AaC/T36NFDiNc1Daj6ti+7UWAW+d?= =?utf-8?q?u6GIVgoh3HRTdx0JBTlcjmxNvi+G2qZbQtNpeAT/ELBNTZWYoMiCUlHl4/9ReYdQ+?= =?utf-8?q?iuoeQQd3wRSC+S8MkclRDc5v6uNasFIi4QL5fPq2hXYEYXMklOjsYM+q6Lt+AAh6/?= =?utf-8?q?OtiLXSW/ehwGTgDdltBEdb8zxYHrsHT1bVmZvIc09kFzaRKsDEUiF7B1EqnBO+oO/?= =?utf-8?q?BC6ZcRzBhXgQYpLddEMWlrXAm0cnSjKf6rgV/NERxE9fv7ISQOCoElYr0OZ94rz4r?= =?utf-8?q?ribJp5mGiHiNG7lvoTDgtT4RyrGi5POqXgCg3OWJPby1QE7aeZbRKwUxGQW7GO1zX?= =?utf-8?q?TxQdGJ1zOMjC14y2OixvRJT1W4ahkAspDAuGweuA8gX11+rlybzLhmNHThgx8e6ku?= =?utf-8?q?eZA84LzVpGGIjgX6eNYxIAw/ruR9mc2emPL7zX5XcrxRGYuyjjjfH7rg59RBSJbgr?= =?utf-8?q?e8MTaZ1csXD9CUsMwBWeGZN+nqNictr5e7yKuFDvLn1R1VxOEun7UiHnTs2BvwhTS?= =?utf-8?q?9FQ495Xrz9NDUWw63/XVGlCjNDR/ntjliaDj5H68P7Swif4qASyGpKGWZDBpc8ItU?= =?utf-8?q?lWV1VBoQ+oKW7zMf9cVywakY2w5+UeEpA9ccSCGcpVKkt/qG5XLceMN/KXHiQ/peC?= =?utf-8?q?IOfH0RRgMTeK3nbjwVgRK9minhki+dpMk2MF9gk0WItklFvf0vhW+xeoNlWakdTPd?= =?utf-8?q?QwAxNqpdf98K8wUxLGuhrShZGYHLyzAtYh1iiO94zFTPniq/XndMtNHdCmPa+42L+?= =?utf-8?q?o5D+y9at3eyXg5cxpimnf6hqs/tU+TijdbpQ1TJ4jC9QKndmH+LV/sX4vlWUCXJqx?= =?utf-8?q?HLRLg501/RqnrnM8otQ/PtozO94IQDdq39hbBLY8B0rpXMuEpSEqovIBqNJybJT34?= =?utf-8?q?IYtcjtDX6u/Y5WSv5GwRuXO7Wg3BWtv0FnR2icAewSOnMWUvsRqC/WUK5KyChopD/?= =?utf-8?q?1WGPnVHSoewsHK7V86RYjDplKimFTHqR/Q=3D=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: cdcdc688-0f49-4352-ec3b-08dd61b9b0e3 X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Mar 2025 23:00:32.2175 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 3xQMAcNwVmqicNT0lNKLDh7hq0s7EgJIOwgdhhlbpjTVWuwsB5ly5/bvC/i70ueGkhmaLKFalQTAUl6XynCC0PsazadpJ0QK34897ctYYfo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR11MB6735 X-OriginatorOrg: intel.com Similar to regular resizable BAR, VF BAR can also be resized, e.g. by the system firmware or the PCI subsystem itself. Add the capability ID and restore it as a part of IOV state. See PCIe r4.0, sec 9.3.7.4. Signed-off-by: Michał Winiarski Reviewed-by: Ilpo Järvinen Reviewed-by: Christian König --- drivers/pci/iov.c | 29 ++++++++++++++++++++++++++++- include/uapi/linux/pci_regs.h | 1 + 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c index 121540f57d4bf..eb4d33eacacb8 100644 --- a/drivers/pci/iov.c +++ b/drivers/pci/iov.c @@ -7,6 +7,7 @@ * Copyright (C) 2009 Intel Corporation, Yu Zhao */ +#include #include #include #include @@ -868,6 +869,30 @@ static void sriov_release(struct pci_dev *dev) dev->sriov = NULL; } +static void sriov_restore_vf_rebar_state(struct pci_dev *dev) +{ + unsigned int pos, nbars, i; + u32 ctrl; + + pos = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_VF_REBAR); + if (!pos) + return; + + pci_read_config_dword(dev, pos + PCI_REBAR_CTRL, &ctrl); + nbars = FIELD_GET(PCI_REBAR_CTRL_NBAR_MASK, ctrl); + + for (i = 0; i < nbars; i++, pos += 8) { + int bar_idx, size; + + pci_read_config_dword(dev, pos + PCI_REBAR_CTRL, &ctrl); + bar_idx = FIELD_GET(PCI_REBAR_CTRL_BAR_IDX, ctrl); + size = pci_rebar_bytes_to_size(dev->sriov->barsz[bar_idx]); + ctrl &= ~PCI_REBAR_CTRL_BAR_SIZE; + ctrl |= FIELD_PREP(PCI_REBAR_CTRL_BAR_SIZE, size); + pci_write_config_dword(dev, pos + PCI_REBAR_CTRL, ctrl); + } +} + static void sriov_restore_state(struct pci_dev *dev) { int i; @@ -1027,8 +1052,10 @@ resource_size_t pci_sriov_resource_alignment(struct pci_dev *dev, int resno) */ void pci_restore_iov_state(struct pci_dev *dev) { - if (dev->is_physfn) + if (dev->is_physfn) { + sriov_restore_vf_rebar_state(dev); sriov_restore_state(dev); + } } /** diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h index 3c2558b98d225..aadd483c47d6f 100644 --- a/include/uapi/linux/pci_regs.h +++ b/include/uapi/linux/pci_regs.h @@ -744,6 +744,7 @@ #define PCI_EXT_CAP_ID_L1SS 0x1E /* L1 PM Substates */ #define PCI_EXT_CAP_ID_PTM 0x1F /* Precision Time Measurement */ #define PCI_EXT_CAP_ID_DVSEC 0x23 /* Designated Vendor-Specific */ +#define PCI_EXT_CAP_ID_VF_REBAR 0x24 /* VF Resizable BAR */ #define PCI_EXT_CAP_ID_DLF 0x25 /* Data Link Feature */ #define PCI_EXT_CAP_ID_PL_16GT 0x26 /* Physical Layer 16.0 GT/s */ #define PCI_EXT_CAP_ID_NPEM 0x29 /* Native PCIe Enclosure Management */ From patchwork Wed Mar 12 22:59:45 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Micha=C5=82_Winiarski?= X-Patchwork-Id: 14014022 X-Patchwork-Delegate: bhelgaas@google.com Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B19271F130B; Wed, 12 Mar 2025 23:00:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.11 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741820444; cv=fail; b=u5o51X07xuS2Yw3UeS0rkI18W+2UN6HTfPU9qdJyd2btOZUt9XJcdI/TUmKGqNxZJI3k/RkkjUTet1K+LpJHckC9ydS8OxmSyT6j7CcrTQpCN+vjBy2EGUpnsL6HxVvGlukFSgEZttRrd+aQ3jFQ96PP9cvzaLZU777mzBfhLJA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741820444; c=relaxed/simple; bh=5ccflj1VHcKOfjyrDzXfdAlGhHFlKB+VxPgr21eKYJM=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=igqP9krep/+uB69tJoBUlYuyixZWLUT3sOCNgpU6sDZHLuZI37MRiAL9ud89gGHrSAWTiCxu+paNF93z3c2m272keQpf04ifBaGXnJivHwXjZrtrYGeOGdPYUOZO0wr3e3l6j8oOQBnzMZb3WIxlRSBZHpcwz8sJYKScBzDEmHQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=bHlxDrbe; arc=fail smtp.client-ip=192.198.163.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="bHlxDrbe" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741820443; x=1773356443; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=5ccflj1VHcKOfjyrDzXfdAlGhHFlKB+VxPgr21eKYJM=; b=bHlxDrbeHLXWfl2dG2B9n1lWXWYB8t9bCPql6IU59p3thC9CpgJZ6duQ RFd1CsgvKQLv4WRvj0Th3M/heg3k3xrWuTiILcFWLhp3J2jSB8ZhCTwcr AWi1AdNC2ub0kW8wkNvnFE8oi49WrkgJuwQR1NggFIo8IzHKwwSyYVPnP Xn4SjpDB2Qr3DVmPrpdLntPmno83vCuk83t4iRN2+gRyi1JcSS+hBSWD7 1Vqp7txAgHG//uql3owjNCeY0an95lfzHR1u8YiUVooGtmzhGxsgQrePU WLKdVGo+zyOjUoYdgh/dI26RsCtSi3ymmZ3QFvT2NLGTk1euHNMbYlin1 A==; X-CSE-ConnectionGUID: 9B11XG1DSdWueA5yu+0yhg== X-CSE-MsgGUID: TLU9vld+SkyEb8NB950ABA== X-IronPort-AV: E=McAfee;i="6700,10204,11371"; a="53571026" X-IronPort-AV: E=Sophos;i="6.14,243,1736841600"; d="scan'208";a="53571026" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by fmvoesa105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Mar 2025 16:00:42 -0700 X-CSE-ConnectionGUID: y2s00q0SQsWJ++jEYv+qPA== X-CSE-MsgGUID: iRKHZwduQRSy9hSFMjx78A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,243,1736841600"; d="scan'208";a="120580723" Received: from orsmsx903.amr.corp.intel.com ([10.22.229.25]) by fmviesa006.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Mar 2025 16:00:41 -0700 Received: from ORSMSX902.amr.corp.intel.com (10.22.229.24) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Wed, 12 Mar 2025 16:00:40 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14 via Frontend Transport; Wed, 12 Mar 2025 16:00:40 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.171) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.44; Wed, 12 Mar 2025 16:00:40 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mY1puAY4ajnyNScfVXl+vKY1bnqNV30ws6GWPloEcRKy2lDCv+Y+BWwdBtDrytTNQLe9QlucpNhmEFspSlUQLSgRwygRpEfwux+ujg5qUknnEyi8/Gcz4xEMuDKlDvNOHnHqIbPL//e4aT/fRlx0Cut3k0LXh3BxKbuIio/BCawtEVxVU+/PQDrfgGaF9RIC72t+3t2AI0yGI7a0us94re8tVgSMthV9fPifhUeQ/3EeUKTouZi3Lojvr7GlAkaOdU0350FlCEUebePwelvP/rQkOPVnU/YVBaa+Lxc4VrpP7WZftcszUdcc9tvEDa9mXqAztGG5zd74QBBW4PcOWw== 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=wD7N/oBNhQfQouJCQNMO5q6eGdIdS73B7N3eQJ+g7Tg=; b=FligDR/E21bLwkpxzjaO/FlmxSZRT5AKP0R8fkKbW5rNOXsoBH2zGupmjz/kf7ECm5/pGD+hUjJzuuKpm3zOulnv30wSLYtIAe9/wQUaFC3LssFJ9jdnxL12rOYrNcurAmmCJkvKiNFk0ypWAYznKKCENUdJkKmDOPI8wcG4HFYAdKCRzTwiBzwvCfA3bDom8VXNk7mYqJAn+lZQXUyzwn0XTTnxiw7WnVOQMhrdcZEZpF+AwxC2c3BMA1kOscsC9j29cydkaQGUzKMbnbVFGZD9qQ9H/5i3F+XiHxPsJM6d7In1ug+avaKQl6/qLMfuEUZnysBtmOFkPY+M35OooQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by SA1PR11MB6735.namprd11.prod.outlook.com (2603:10b6:806:25e::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.27; Wed, 12 Mar 2025 23:00:37 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%6]) with mapi id 15.20.8511.026; Wed, 12 Mar 2025 23:00:37 +0000 From: =?utf-8?q?Micha=C5=82_Winiarski?= To: , , , , "Bjorn Helgaas" , =?utf-8?q?Christian_K=C3=B6nig?= , =?utf-8?q?Krzy?= =?utf-8?q?sztof_Wilczy=C5=84ski?= , =?utf-8?q?Ilpo_J=C3=A4rvi?= =?utf-8?q?nen?= CC: Rodrigo Vivi , Michal Wajdeczko , Lucas De Marchi , =?utf-8?q?Thomas_Hellstr=C3=B6m?= , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Matt Roper , =?utf-8?q?Micha=C5=82_Winiarski?= Subject: [PATCH v5 2/6] PCI: Add a helper to convert between VF BAR number and IOV resource Date: Wed, 12 Mar 2025 23:59:45 +0100 Message-ID: <20250312225949.969716-3-michal.winiarski@intel.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250312225949.969716-1-michal.winiarski@intel.com> References: <20250312225949.969716-1-michal.winiarski@intel.com> X-ClientProxiedBy: MI1P293CA0005.ITAP293.PROD.OUTLOOK.COM (2603:10a6:290:2::12) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|SA1PR11MB6735:EE_ X-MS-Office365-Filtering-Correlation-Id: aa883bac-7b1f-41a0-f900-08dd61b9b3cc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?gNJE7//YOwB+Wia/hUpCpDJna/cRZLY?= =?utf-8?q?zJ8LuosuUJ0Qor7oZkIyxGLfZ9626tlYwg8nyx+gkeWLT2mHaYaoPI1LoMv/MOcR7?= =?utf-8?q?YuI/feD6E4I4+1isTxSjmwKb46UpW90bVEMp2rm+ZKEJhHkPfm88rdKdkxIDzChOA?= =?utf-8?q?AsDmH12oQlvUxTf+/x4iCOZZCnbc1Vh/vS9/ntXfybwp/zPO3u1m3xsB5/kuNZkrn?= =?utf-8?q?e5JY9CZRrKiONr5JCHEPjBS/nCxCW+Bq9zJwm64eRELr23loaE2qwTIL4YAX2xzQh?= =?utf-8?q?kLa+DotwrEYkRAqq0gjwIjLc2nm87gQ+3Nb1F53syrTfhdFlNiyGmnASM6pGfvCKe?= =?utf-8?q?+oPEnvuYGAUeUYVm/gyUU5OLQNBG+VH0xD6jrzJ4wHLOl+dJcEp+uwod85PFmX6+j?= =?utf-8?q?HChCE3/4qOpgy5dKV+VzdXEVasBWawgsahc1PMt+U+IF/sQVGzRYoeYUeheOBNIiL?= =?utf-8?q?qxcJVKlsGLUA5nFxwonZHHwktxONnBR/t5l7byT4iBiM5P7CjfuEs0lPKXAPjELND?= =?utf-8?q?VNdJhR7+MCWQbeyFtke+RnO+zYWsH5TCbU9Qnp/2srwEQ7FnDGZKgSItWQ91G7NUN?= =?utf-8?q?CRxhJFgQNXG0/Q25FQmmzo7dST/DApBfIpJpVhGpPvxyRzdJ3eZFw3MIt5bLMmrA5?= =?utf-8?q?gS2KUzo1zpOScfLRL4sBsRolYwuerEu+9AeoLwsbi9mN1RUFafYv7itFTMgj+1Epf?= =?utf-8?q?cUaR6aGC+v18z1xPvdIiLKa70QN3UcqTkKd1UsdLe2ww356s9iaQVeku/rBCBNbd6?= =?utf-8?q?8I60dQsKwXZdQqy6QYOLT6Q7KQlTJQp8+VukCmm+XiLkFtTW4lAwMuFfAIO9GiqPT?= =?utf-8?q?b31ZgKwDfofgh5jP9anyG56ipig9AgNESYpO6XI5zNGOIrqbY7RXNgqII4q+3ohl+?= =?utf-8?q?WLx28y3nje9FBEGqLSAZfJGKauYovyscSYGWYSNzHND28wNSmjlvgshMoPFViECss?= =?utf-8?q?kgfyRtmMHD7+hzerQwF9ro/Ek84tj9HHutpSJJvfppG8ux1tsuOje8HqmnVETjpwj?= =?utf-8?q?dO8wfotg6dkrruoat62Ror7yCq41h4n2pxaftJnn7KBTHU5beOTVpthhQq/33oLPR?= =?utf-8?q?nN0jegWwC6KiQp8qpPjulr9diJcZR76Bhd8U91cIQ68mkyRnWusLcFSeTtlEx/r4E?= =?utf-8?q?yjxJ8UksBOm5VAWrM+A1ppM0g+W1SqRd+EaNpK8yMi33evYzt/VEbaz3jcymueBiS?= =?utf-8?q?miH4XdwfDh14PWCZcc4bnYHJZE448J2kM+a/yTP3xOcdn+BJqyJbdhP3FVuT01q0S?= =?utf-8?q?S05oeut6hChdWxMD4rSKqS0PCV1dQOGtgjfKU88KEmnHWHma/JKReZk55qMOOxGvX?= =?utf-8?q?LfKl8bcUjmsN?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?5g+r7xc/PzTJgQaov3iSPygo5fs7?= =?utf-8?q?r0B3kPWqXksmLTym3ktsygzU+OcHxdVOy+A0yukLFlVslNpAeDKB3J4G+SpZgSgxv?= =?utf-8?q?fEEGm4QpqUyer8N1gKnn2BwVSG5pK177cg+4SH9FdPQSWaTvMUJstZ0nNWl5/41gf?= =?utf-8?q?YhXBgT2kNxet81HXYsGTzyDDH2WjTGphLXIUPIAfe3fGWSrBZjDrgwo0TJC1okjEF?= =?utf-8?q?LB8Sm2BSAXQtL0j8s4gsqK2ICwziUf4TSff0f5CwxDzXK+ld8YOpFnc3y986ax1/O?= =?utf-8?q?coAhfwdXYwodjmB86pdFT7CETrmLdJnYoziWH9JIjQnQLoIp9TXWoxfY/ecJrFkTe?= =?utf-8?q?Oc9d5eF9l0Qr0VYyoobNosdWZR/atR00qnRt1T669lnxX7HzHExggJium/0y9WHmk?= =?utf-8?q?fYG+NwG54AT2nZZWEp1mo1deqrMnGVujqqI9vqtydxwHcgLbdDJ501JvT3bzqUluj?= =?utf-8?q?ZClHojKgQhWdFTxUbnbYKVY8miQ7/VMxf1gIAnhB/YiNiC2kezQ617LCROCFKcDVL?= =?utf-8?q?KS9JYVJXzK2xpSuvvVpadOTyDmopbjGksb2m2vPxN+ZwiDFFQ85g2N7jf4fqN4XFF?= =?utf-8?q?IYEtpWR+pyrTETDcrfYmhfoAkPIZJbX9kOHRICRSrJWXjtPL7uwSuxtlOCD7k89aO?= =?utf-8?q?wHy2nDUma53+bUVwS7DbQuA46jxwuLkKt68e3/FyIain72rwIdamBrYsfXO9xU+w5?= =?utf-8?q?U8D6DfH/BgA/BaBERLjvWSD3VgftsPosUf8BmLsRpIi9I+mApyntbvaA5k0qnaz6h?= =?utf-8?q?SyzihMk7G3lzi3ITquIm0Oe4XKjBF6bt4n7XAwJU0y3NvLqnZMQKvFpmK8NAfzIHW?= =?utf-8?q?VjLv4HUC65mntxOa4/SHoA9n0Y/t7Sv9EkVQLJ5IUi4957K/qpqkrPgJKenWJjxur?= =?utf-8?q?fgBE8puuNUOdFBpXWDJxyHLig1BxlcH+qfKKsxfnhSxDoy9OU/TEOPj103iFyvhHI?= =?utf-8?q?MEC/8jFkK189h0+DvgD9Gzn2zE+LwS0wKAnwjOWcUB++yHBYyxRiNm7oU/ecD1oVo?= =?utf-8?q?BBdRzcjNbIuO5y0HLAbuCGAiB2Xuj8USuztmkUlrWZu8trYnxRnZNWUOPE8x7XMib?= =?utf-8?q?i5pigvznKI1ZWME0ucIMvkvpk0D8K197GV7x3rA1mrbbOMlrd9n80TK+vU+HrLsAK?= =?utf-8?q?y22hoj7fNoE9xfTLfEBYElm1A4NC8yWe9CS5gF718zczGO50znzUVkrGzU6MTA6LG?= =?utf-8?q?j/HneRXZAOXWhlCEFZszPU3vlJttcUjzTsinyEzL0LF+z6dYxgrcULgiEYoRyPbW3?= =?utf-8?q?QvUYqauclLH58KQMjJDkIgRb+H8NO+t9/wtlubq8Mx1G7Uh8rdBzsWGGHj+RnIS5k?= =?utf-8?q?zdx/5WD/ct9bs6BzOMDSmEFR71dGPgr7MQ9/Ju8kJCac/cPlpj/grGOJACmHSJ0g6?= =?utf-8?q?vpPUh1+RBSfTnqdPxGPtUnzk4Eks55wmRpNeRyqv85Z0R2D5x5Vf+mX+3QFjLx2HT?= =?utf-8?q?bG3rZgql6/G1oADrQNipliW6WEZ+lp3pG6onjPAXcP4Yjmt4Iy7kRenoyZXke0LVB?= =?utf-8?q?dGGGP0K4Mql4Na2PFtV0+Rnk11kI8Mciew=3D=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: aa883bac-7b1f-41a0-f900-08dd61b9b3cc X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Mar 2025 23:00:37.1657 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: AuG4wKqWjO0NMhdjKwjr20JEDUWc3ohv1Lj0osjh8c1n7dIuuwqOWsmbi0qbCzVPi+CfAUOYYhGNXRkH2Ky0Zi993Dz/A5sm/jJTbsJrkLs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR11MB6735 X-OriginatorOrg: intel.com There are multiple places where conversions between IOV resources and corresponding VF BAR numbers are done. Extract the logic to pci_resource_num_from_vf_bar() and pci_resource_num_to_vf_bar() helpers. Suggested-by: Ilpo Järvinen Signed-off-by: Michał Winiarski --- drivers/pci/iov.c | 22 ++++++++++++---------- drivers/pci/pci.h | 19 +++++++++++++++++++ drivers/pci/setup-bus.c | 3 ++- 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c index eb4d33eacacb8..23c741e9ede89 100644 --- a/drivers/pci/iov.c +++ b/drivers/pci/iov.c @@ -151,7 +151,7 @@ resource_size_t pci_iov_resource_size(struct pci_dev *dev, int resno) if (!dev->is_physfn) return 0; - return dev->sriov->barsz[resno - PCI_IOV_RESOURCES]; + return dev->sriov->barsz[pci_resource_num_to_vf_bar(resno)]; } static void pci_read_vf_config_common(struct pci_dev *virtfn) @@ -322,12 +322,13 @@ int pci_iov_add_virtfn(struct pci_dev *dev, int id) virtfn->multifunction = 0; for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) { - res = &dev->resource[i + PCI_IOV_RESOURCES]; + res = &dev->resource[pci_resource_num_from_vf_bar(i)]; if (!res->parent) continue; virtfn->resource[i].name = pci_name(virtfn); virtfn->resource[i].flags = res->flags; - size = pci_iov_resource_size(dev, i + PCI_IOV_RESOURCES); + size = pci_iov_resource_size(dev, + pci_resource_num_from_vf_bar(i)); resource_set_range(&virtfn->resource[i], res->start + size * id, size); rc = request_resource(res, &virtfn->resource[i]); @@ -624,8 +625,8 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn) nres = 0; for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) { - bars |= (1 << (i + PCI_IOV_RESOURCES)); - res = &dev->resource[i + PCI_IOV_RESOURCES]; + bars |= (1 << pci_resource_num_from_vf_bar(i)); + res = &dev->resource[pci_resource_num_from_vf_bar(i)]; if (res->parent) nres++; } @@ -791,8 +792,9 @@ static int sriov_init(struct pci_dev *dev, int pos) nres = 0; for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) { - res = &dev->resource[i + PCI_IOV_RESOURCES]; - res_name = pci_resource_name(dev, i + PCI_IOV_RESOURCES); + res = &dev->resource[pci_resource_num_from_vf_bar(i)]; + res_name = pci_resource_name(dev, + pci_resource_num_from_vf_bar(i)); /* * If it is already FIXED, don't change it, something @@ -850,7 +852,7 @@ static int sriov_init(struct pci_dev *dev, int pos) dev->is_physfn = 0; failed: for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) { - res = &dev->resource[i + PCI_IOV_RESOURCES]; + res = &dev->resource[pci_resource_num_from_vf_bar(i)]; res->flags = 0; } @@ -912,7 +914,7 @@ static void sriov_restore_state(struct pci_dev *dev) pci_write_config_word(dev, iov->pos + PCI_SRIOV_CTRL, ctrl); for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) - pci_update_resource(dev, i + PCI_IOV_RESOURCES); + pci_update_resource(dev, pci_resource_num_from_vf_bar(i)); pci_write_config_dword(dev, iov->pos + PCI_SRIOV_SYS_PGSIZE, iov->pgsz); pci_iov_set_numvfs(dev, iov->num_VFs); @@ -978,7 +980,7 @@ void pci_iov_update_resource(struct pci_dev *dev, int resno) { struct pci_sriov *iov = dev->is_physfn ? dev->sriov : NULL; struct resource *res = pci_resource_n(dev, resno); - int vf_bar = resno - PCI_IOV_RESOURCES; + int vf_bar = pci_resource_num_to_vf_bar(resno); struct pci_bus_region region; u16 cmd; u32 new; diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index 4e2ac06db3c47..e3cd9b8f9b734 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h @@ -659,6 +659,15 @@ static inline bool pci_resource_is_iov(int resno) { return resno >= PCI_IOV_RESOURCES && resno <= PCI_IOV_RESOURCE_END; } +static inline int pci_resource_num_from_vf_bar(int resno) +{ + return resno + PCI_IOV_RESOURCES; +} + +static inline int pci_resource_num_to_vf_bar(int resno) +{ + return resno - PCI_IOV_RESOURCES; +} extern const struct attribute_group sriov_pf_dev_attr_group; extern const struct attribute_group sriov_vf_dev_attr_group; #else @@ -683,6 +692,16 @@ static inline bool pci_resource_is_iov(int resno) { return false; } +static inline int pci_resource_num_from_vf_bar(int resno) +{ + WARN_ON_ONCE(1); + return -ENODEV; +} +static inline int pci_resource_num_to_vf_bar(int resno) +{ + WARN_ON_ONCE(1); + return -ENODEV; +} #endif /* CONFIG_PCI_IOV */ #ifdef CONFIG_PCIE_TPH diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c index 58f28e4e24b31..384d53be3a5e7 100644 --- a/drivers/pci/setup-bus.c +++ b/drivers/pci/setup-bus.c @@ -1885,7 +1885,8 @@ static int iov_resources_unassigned(struct pci_dev *dev, void *data) bool *unassigned = data; for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) { - struct resource *r = &dev->resource[i + PCI_IOV_RESOURCES]; + struct resource *r = + &dev->resource[pci_resource_num_from_vf_bar(i)]; struct pci_bus_region region; /* Not assigned or rejected by kernel? */ From patchwork Wed Mar 12 22:59:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Micha=C5=82_Winiarski?= X-Patchwork-Id: 14014023 X-Patchwork-Delegate: bhelgaas@google.com Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8B85E1F192E; Wed, 12 Mar 2025 23:00:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=198.175.65.18 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741820450; cv=fail; b=LYempoQGMdL0YKRuuNXmGrz95uwxZJ9K8ToK57Wzb9/tO9tot1E80XMEn8gLmxsAsXxpHecYnTunozVjvg1jY5AQQpAwtT1qboWftuw30Ev8KM1cJgRnn4C9hTrHDJeDPzghXQDieH4L1bHnFxEj9Scdg+Bacmz8LPXPXIkZVi0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741820450; c=relaxed/simple; bh=TtMSUusmWmjB1rwNvgEx+sIgB1ocbc17jU5tWGuzdu8=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=s89P3aJyU4lzBvGc7rI4EqQwsSsQLhKqlAVZqGs7WCu41Od5BoFOC3XAjgLmNPlFeuHD8vP36o3ZZ81DcfmC5r2lHPadz4U3goftz2qtYnmIpJCMfye4+z6mMqoVd8myy5oofMzk3N33fgDuMiBIZFtikewaCQpayxMymkTzfbY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=TgiIqU+M; arc=fail smtp.client-ip=198.175.65.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="TgiIqU+M" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741820448; x=1773356448; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=TtMSUusmWmjB1rwNvgEx+sIgB1ocbc17jU5tWGuzdu8=; b=TgiIqU+Mi9upenxvEzb8X5oi0xHi3D+N169d+aO5yyaaSaG6g3/JxTE4 a6DEIZanDuPqrrwf6i/fotZnfyx54U4guGe2kTi2XrI74AJ7P2ujtshB+ qRUvNSJMaf3glGnvdryJCDMkkz56kORJWMVHjPNEJPDZZksOdHDZl+iiB P4YJooUcoqm+6/4HloGai+ZcFSG6c0AzwG9SuoJgiVStOhCJYoeR3Bb8u WDlZ1kOXjsQAkRyWAkRkBdbbyCe6GeqjQjnW/hspC/SVwb4cPnXSRsA0V 3CmAqvdP+a/4WFnxU0LrU9tnFnsZdGCgCepJ9ejFsRHSLgGgm6UJBu2bS Q==; X-CSE-ConnectionGUID: r/r4C0S8QhO99AfuGszZ4w== X-CSE-MsgGUID: wVRt8He6Tauxl/zHs27LaA== X-IronPort-AV: E=McAfee;i="6700,10204,11371"; a="43103786" X-IronPort-AV: E=Sophos;i="6.14,243,1736841600"; d="scan'208";a="43103786" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by orvoesa110.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Mar 2025 16:00:48 -0700 X-CSE-ConnectionGUID: hZOL3AeRTLOnZdUja6Z0Kg== X-CSE-MsgGUID: U8Cg4+C3TrCBOnv23X0RIA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,243,1736841600"; d="scan'208";a="151604547" Received: from orsmsx902.amr.corp.intel.com ([10.22.229.24]) by orviesa002.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Mar 2025 16:00:48 -0700 Received: from ORSMSX903.amr.corp.intel.com (10.22.229.25) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Wed, 12 Mar 2025 16:00:47 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14 via Frontend Transport; Wed, 12 Mar 2025 16:00:47 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.47) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.44; Wed, 12 Mar 2025 16:00:45 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=A6S2VM2pWqVLpH99LGbvelWuPGRRdPHHRhFCfEQLqcwVghNqlDQXVptVNVdO81Sir7HUQsH6TJU+D4ck7px3emj6/dYwPLAtkK2GNjGtTOQfOfqp88ucHafQCrUy+4/0gIouKZpyn1HQuSIBqlUEydIrvIbBkodtfTK5kXFWfyNEEdv2M43Oi3VkOoK9GF8zkLf1POrjccRsqGesaBmBJKUTMPeB3e180RTpL/jEis+8/IicoWCsuESrDREn1ZvlRgNTnhxu1GXpJ2QgeFa3m+SxCnEbWDtD2yGVhKn+NaE4xYFnRFQtnAxTJrMocraQqPRwWsI+KUW3ssA0V6ffxw== 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=ZfIWIC/7sl2+W7J/a5Gjhp+3q+DCpTS4//M8bZQbVWU=; b=QvYeeAsg0yejhO123Rwr/Zk1UFUG+ABVTAyUzNSzkVwD2AM8ue1wsiVzbbxEtZ/hT9BYZMtWaMqG4lwgbf8DwhCTUXT7zgaqpGQfaHEbuXsTUxmR39nfc+ZaATAXwTWYkgMcEyEV4XojWBKU13MjICc2cuXiO/lodg5NsPf3KsYP2TxlrMp4lTUL2CNunX+yCgrlOZCWlA6Jt7m+2/StVs9g05/fUIEomgfpz2Nl/D6nq6lIaIlsAv9VDgrNf05t2iK7WcDPHg7snYD4pivowrCE+W8JoPykNDmp8KN/q53nc28H+kE7uCWHd4kULGEVmlhDN6Ky5N05ia1Ev2lCbA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by SA1PR11MB6735.namprd11.prod.outlook.com (2603:10b6:806:25e::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.27; Wed, 12 Mar 2025 23:00:42 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%6]) with mapi id 15.20.8511.026; Wed, 12 Mar 2025 23:00:42 +0000 From: =?utf-8?q?Micha=C5=82_Winiarski?= To: , , , , "Bjorn Helgaas" , =?utf-8?q?Christian_K=C3=B6nig?= , =?utf-8?q?Krzy?= =?utf-8?q?sztof_Wilczy=C5=84ski?= , =?utf-8?q?Ilpo_J=C3=A4rvi?= =?utf-8?q?nen?= CC: Rodrigo Vivi , Michal Wajdeczko , Lucas De Marchi , =?utf-8?q?Thomas_Hellstr=C3=B6m?= , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Matt Roper , =?utf-8?q?Micha=C5=82_Winiarski?= Subject: [PATCH v5 3/6] PCI: Allow IOV resources to be resized in pci_resize_resource() Date: Wed, 12 Mar 2025 23:59:46 +0100 Message-ID: <20250312225949.969716-4-michal.winiarski@intel.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250312225949.969716-1-michal.winiarski@intel.com> References: <20250312225949.969716-1-michal.winiarski@intel.com> X-ClientProxiedBy: MI1P293CA0004.ITAP293.PROD.OUTLOOK.COM (2603:10a6:290:2::13) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|SA1PR11MB6735:EE_ X-MS-Office365-Filtering-Correlation-Id: 330bd5ed-34f6-470e-8ae6-08dd61b9b6b0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?s2XxyBX8WIIVbgB9pKhma6xuLMCaFya?= =?utf-8?q?8nGIvby1rpPn11VEMW8pJ30aAUz2gZyq4LqtTzbIoYPWJqHMgoZufTKxOebxnzTmF?= =?utf-8?q?UBEz9/ZJ3nZQ59+sfAMyLRVHctsu3LpmNXo4rSCFWdKlHz3DuyP8IdI1Wne5zg/qt?= =?utf-8?q?M3FQO+Jb4z7Bt66kvmiGfkpbnPc/oifblA877c4dEPTN/GgywbZXzTQdewhQ332FR?= =?utf-8?q?9n2zbIm5WN2x4q9WynmYgzH4T3MjttZZhMZemt6ZIoCorZOF6e08hq+5HUKGwBonJ?= =?utf-8?q?Q0MzQZAX3Cj6vKIDhs9e7qBBnsAhzu9qV/VgNgi8gtDJIzQyFm/MHcIxR1R31tjvt?= =?utf-8?q?Fq9sar7OnjuKND73QW+8ppcJafKfunFcyHugLpq6gCB7NPgjZp1mAydHuebXGCxCE?= =?utf-8?q?zy1Cs9rCQg49ntOo4mUVg5F1XHBR0eE+ypWfe6wQzIRff7ljkzTmEIhWuy0FB9ONc?= =?utf-8?q?EPgv4hO/79coHrHNGFZ7CE6nx6SGoNK4QPOfs6QP0DXtg/lu8nDMRD379V2HkPBwv?= =?utf-8?q?E5eF74NpmwrbTJPt3a1XcLFmuR7G4whBsyHvi448x5rRua+zzo/0S4LpxRLNQcrmd?= =?utf-8?q?quKNro0CLlfm0b7MzAnejPPsVecGVwwpJJsSM5ddzVfe3ttJvDI+oAjBusJ8XNJk8?= =?utf-8?q?mgePjnkoNunvfgU7hQOILccRlueBDYrawHRL8YPVX89F/sPk0dVzgMWg2OQeG3T8O?= =?utf-8?q?6h1e/z1ZgCOZUo1npP01vyt6giGRXSE56BllbV1KsBjAMm67RHBbEWwbbhQIP5O5T?= =?utf-8?q?mzJWB5OnuYyuc2nin6yVNTHybWnpJSbBXn/Tr4pfjA9/JpbpzVurby279Ya/H8J9K?= =?utf-8?q?IkG8UHN9KiL777V3PkbstYbzu7h+T+0h94F+DK7OmxkoMaZmEnU+OVoAwSZbT/KAJ?= =?utf-8?q?4y2BTVODOFdXipKRj4GOQxKD9JW0GfnysMNU3GOocOXI8AkCPwGutmdO379GzpiSs?= =?utf-8?q?Wh8Zow2NWO+7Ybf3mved0uRBZwelPJaVIGyORS7B98fw4E04e9/dv0QZ5/xDVzplJ?= =?utf-8?q?bwo8CdIIfaKPVxDor+uF4EVuVCxF2FyTU0VTnnT1vWvfVDR5u0w2u6aX6+2eGJHaS?= =?utf-8?q?9O7A7dwQzGzf159qnLh8USFBAMqY4roVIo7mw4pGzAxyyezMxGBPvDskYgzl6xHU5?= =?utf-8?q?lkxdXu80QqI5URGg2ba3/wU9/dQksGN9/klvtZ5JxsBj04OVs9vXluyF3VEDMkM8H?= =?utf-8?q?IXMDeOa1fqPNkZ+b9Q+LbB3Sg9zYqv6hWNKbExRl+iKExUOVJfmep6eUUac4BdcpA?= =?utf-8?q?91MQCSc3k/Shzi0L7T+STU3LQb3NRG1qToFM76lhZ4XfifurH/Qw8ZPGizDHV7Teo?= =?utf-8?q?iI5j3yZHijLT?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?JRwPzHf/YR1u1MxD2CWqVgR9voN7?= =?utf-8?q?vapld36+u4415noYim5mWMQ8xkNOhDTe98UeSjOVzqqZeN/4OEHa5XUbZGDeIN1PD?= =?utf-8?q?NoXiLYeWSXPi/dTe/lnn5JfJ9zjD55gGhNVrOTcAWfmr6qsQUHLsKMPeBR4AvKXN9?= =?utf-8?q?XdDTDc7NqDVIa69Pj/T0d430safstcv5e9b5UrRBPxJ7irDuzn3ME67jT+2loDxv9?= =?utf-8?q?cT1XZljq98XeDzPc3XH1UPLFrNM1wjWEFWMuaHkh+XvB3asp3/bgT6O5D7mPMcezO?= =?utf-8?q?V+lT2eGvHvqTT2zuuseFfhkui+yApcbEKsixfFY/1wUsGwg07k+RyGHEDiq44gPGW?= =?utf-8?q?J8Uno5m4YZL6+rB4N2vkeDc43+A1K7V3rE2GYiGOkBx2+1T249tuDXpibkBQTEh4Y?= =?utf-8?q?AjAA/yPiGEbbQluppZ1D3FoTYxoWjdC3ZPECtMLARcMg+j8AxQDshXE/Gl66R/6U8?= =?utf-8?q?d5ucLl+2gEYATkgs+7fUen3TtLfa3GJ6rMWLyUidX/+t5TC+ron6FZK32BFjlufNR?= =?utf-8?q?1GGGOe3K9vy0pX1YPtri/cfU5bULL/sj/jRnocJehviFvlQMCZT2Y54+3uKeiunOl?= =?utf-8?q?hPROlgDyRaoK+4tc0C1l/nA1xsjmHHPMNa1zbLFWEg3rrp1i3up5p9a/YaACiWi3l?= =?utf-8?q?zrCeDj9ncwiPNtKhCxojWH4GtkNaCoUL2diEo5/oRsKrlRYO5h9//DiF4Tj/sPWsi?= =?utf-8?q?dDbv387qWxeNvL5bhNnfAw75U19c3ayBnQpQV9/74bC6cpUyJjPkKvdq7ZA8qkVzu?= =?utf-8?q?qnZxMep+k9M/yX+nK6ZzpHJ1Cqv5LohykJ4tYJdxbrf3I0odX9xvavTGEzOkzxpM5?= =?utf-8?q?9AA69i4jBAQNea1amdENQlOLcfZYKVkhjDrOju/RGiyZwbmHXSk7pMcHNVme/PHat?= =?utf-8?q?KAdZXzTZNcgFOiCp7cnwWKI7tbNecjNTs731NJShfBvmyA+AzPkadAa9tTH0KTlP+?= =?utf-8?q?NwRhT2bmZsWArrTR83RVGymfux6at7kUQkpeLcZJXqhaUxSVxNTF2WDS02qFscpIF?= =?utf-8?q?EpBlVHD9+CGTvUWbjCz1OHqNBYmYKwWKwY+dANTCWJFZBSBram1nzVJmecnhF8sQZ?= =?utf-8?q?iuF62nTGnHwmr6Je+u24mZI3KesILzMQR9kjiD58wHJGN8qfoqvGNa1SFmdXXu5aY?= =?utf-8?q?1Uiqc2hoWcsEmTISE4o77ia56LS0WFqBkCPMAvswJIqTMErFBYTHJY4BxngwdlgDJ?= =?utf-8?q?ZQRT5+6J4hiVFCfBktiahMDx5JYRuNjOGmQfhSSCXQCFDnJw7Zp4+OgSr+0xzukVf?= =?utf-8?q?LXz9sZX8iagfCJx3UwPKkamw91mEHmMRaKxg7bIi4WluC0s+GsaWsVoq6HnP7F4SY?= =?utf-8?q?Q3GSqZnUXCUJIsI7bZ3tSHbBXCMe5MJL2pooJ3xuoy0yHWStMOJ6jwEF5+dJZTs+b?= =?utf-8?q?UFGS2oN1vKOkiYWq4IenIm2/WcCtqIixc8ypLnyGO/5wDA0F85TZD/v2vRuZTsMR4?= =?utf-8?q?N0P6tx16nv4NtaYuSOBDOvEL95PiCxKUsTeXv60aG9OU9ly9IUOZYcT91mKlakNL4?= =?utf-8?q?l5jXJlL3HDqfuX55m1AZr32li12YkFFWUA=3D=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: 330bd5ed-34f6-470e-8ae6-08dd61b9b6b0 X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Mar 2025 23:00:41.9580 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: QD2mj7Fow11/Xq6k17oSiwRudqAsQswxlNCAqBwez6MF3R9FnteLiFjvmfTWQL2WKZ7VflcKOxdi94AvBwqUdpw2u+UExvBE8uSS6b90RdQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR11MB6735 X-OriginatorOrg: intel.com Similar to regular resizable BAR, VF BAR can also be resized. The structures are very similar, which means we can reuse most of the implementation. Extend the pci_resize_resource() function to accept IOV resources. See PCIe r4.0, sec 9.3.7.4. Signed-off-by: Michał Winiarski --- drivers/pci/iov.c | 21 +++++++++++++++++++++ drivers/pci/pci.c | 10 +++++++++- drivers/pci/pci.h | 9 +++++++++ drivers/pci/setup-res.c | 35 ++++++++++++++++++++++++++++++----- 4 files changed, 69 insertions(+), 6 deletions(-) diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c index 23c741e9ede89..7cc17e898cea7 100644 --- a/drivers/pci/iov.c +++ b/drivers/pci/iov.c @@ -154,6 +154,27 @@ resource_size_t pci_iov_resource_size(struct pci_dev *dev, int resno) return dev->sriov->barsz[pci_resource_num_to_vf_bar(resno)]; } +void pci_iov_resource_set_size(struct pci_dev *dev, int resno, + resource_size_t size) +{ + if (!pci_resource_is_iov(resno)) { + pci_warn(dev, "%s is not an IOV resource\n", + pci_resource_name(dev, resno)); + return; + } + + dev->sriov->barsz[pci_resource_num_to_vf_bar(resno)] = size; +} + +bool pci_iov_is_memory_decoding_enabled(struct pci_dev *dev) +{ + u16 cmd; + + pci_read_config_word(dev, dev->sriov->pos + PCI_SRIOV_CTRL, &cmd); + + return cmd & PCI_SRIOV_CTRL_MSE; +} + static void pci_read_vf_config_common(struct pci_dev *virtfn) { struct pci_dev *physfn = virtfn->physfn; diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 72ac91e359aaf..e6a986ad24d61 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -3731,8 +3731,16 @@ static int pci_rebar_find_pos(struct pci_dev *pdev, int bar) { unsigned int pos, nbars, i; u32 ctrl; + int cap; - pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_REBAR); + if (pci_resource_is_iov(bar)) { + cap = PCI_EXT_CAP_ID_VF_REBAR; + bar = pci_resource_num_to_vf_bar(bar); + } else { + cap = PCI_EXT_CAP_ID_REBAR; + } + + pos = pci_find_ext_capability(pdev, cap); if (!pos) return -ENOTSUPP; diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index e3cd9b8f9b734..af41f6c24451f 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h @@ -655,6 +655,9 @@ void pci_iov_update_resource(struct pci_dev *dev, int resno); resource_size_t pci_sriov_resource_alignment(struct pci_dev *dev, int resno); void pci_restore_iov_state(struct pci_dev *dev); int pci_iov_bus_range(struct pci_bus *bus); +void pci_iov_resource_set_size(struct pci_dev *dev, int resno, + resource_size_t size); +bool pci_iov_is_memory_decoding_enabled(struct pci_dev *dev); static inline bool pci_resource_is_iov(int resno) { return resno >= PCI_IOV_RESOURCES && resno <= PCI_IOV_RESOURCE_END; @@ -688,6 +691,12 @@ static inline int pci_iov_bus_range(struct pci_bus *bus) { return 0; } +static inline void pci_iov_resource_set_size(struct pci_dev *dev, int resno, + resource_size_t size) { } +static inline bool pci_iov_is_memory_decoding_enabled(struct pci_dev *dev) +{ + return false; +} static inline bool pci_resource_is_iov(int resno) { return false; diff --git a/drivers/pci/setup-res.c b/drivers/pci/setup-res.c index c6657cdd06f67..6cce3e19f22b0 100644 --- a/drivers/pci/setup-res.c +++ b/drivers/pci/setup-res.c @@ -423,13 +423,39 @@ void pci_release_resource(struct pci_dev *dev, int resno) } EXPORT_SYMBOL(pci_release_resource); +static bool pci_resize_is_memory_decoding_enabled(struct pci_dev *dev, + int resno) +{ + u16 cmd; + + if (pci_resource_is_iov(resno)) + return pci_iov_is_memory_decoding_enabled(dev); + + pci_read_config_word(dev, PCI_COMMAND, &cmd); + + return cmd & PCI_COMMAND_MEMORY; +} + +static void pci_resize_resource_set_size(struct pci_dev *dev, int resno, + int size) +{ + resource_size_t res_size = pci_rebar_size_to_bytes(size); + struct resource *res = dev->resource + resno; + + if (!pci_resource_is_iov(resno)) { + resource_set_size(res, res_size); + } else { + resource_set_size(res, res_size * pci_sriov_get_totalvfs(dev)); + pci_iov_resource_set_size(dev, resno, res_size); + } +} + int pci_resize_resource(struct pci_dev *dev, int resno, int size) { struct resource *res = pci_resource_n(dev, resno); struct pci_host_bridge *host; int old, ret; u32 sizes; - u16 cmd; /* Check if we must preserve the firmware's resource assignment */ host = pci_find_host_bridge(dev->bus); @@ -440,8 +466,7 @@ int pci_resize_resource(struct pci_dev *dev, int resno, int size) if (!(res->flags & IORESOURCE_UNSET)) return -EBUSY; - pci_read_config_word(dev, PCI_COMMAND, &cmd); - if (cmd & PCI_COMMAND_MEMORY) + if (pci_resize_is_memory_decoding_enabled(dev, resno)) return -EBUSY; sizes = pci_rebar_get_possible_sizes(dev, resno); @@ -459,7 +484,7 @@ int pci_resize_resource(struct pci_dev *dev, int resno, int size) if (ret) return ret; - resource_set_size(res, pci_rebar_size_to_bytes(size)); + pci_resize_resource_set_size(dev, resno, size); /* Check if the new config works by trying to assign everything. */ if (dev->bus->self) { @@ -471,7 +496,7 @@ int pci_resize_resource(struct pci_dev *dev, int resno, int size) error_resize: pci_rebar_set_size(dev, resno, old); - resource_set_size(res, pci_rebar_size_to_bytes(old)); + pci_resize_resource_set_size(dev, resno, old); return ret; } EXPORT_SYMBOL(pci_resize_resource); From patchwork Wed Mar 12 22:59:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Micha=C5=82_Winiarski?= X-Patchwork-Id: 14014024 X-Patchwork-Delegate: bhelgaas@google.com Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1E6101F2B87; Wed, 12 Mar 2025 23:00:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.11 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741820454; cv=fail; b=MbpnGSLH2PdLMdPokoD5xwruR0njB5iS1qFCs5jGPbYogGHxcnMymyETkeIEId70GXy6k2eQ5P0+qqG7FN996xyLCCkAPi9rgIRt6cd7poBFDCgDRQfHUN97FWoh1dcyBlvM2cQGHUHspAXHm27qCJ07DxVMdk1W8XwqXF/wUvQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741820454; c=relaxed/simple; bh=Pl/A6OZOzP1FciVNappVWkmGksNokHBdNIeBXZtzVCQ=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=cCOv9Ve2ZBCkSmLJqps4T2/z3ABub0V2mkvUwCiJsR0BGrgeaTEy+Ja2e361xhc+cdfEIol437H5ysOOCPsDfEXmQ3iLS5FPZb9Vv9RRqCFK9IiaQheueGBff50QAOOO2+KDRwE1sauf+EdqG24pqWOy0eXW8wA8F03aEKsl82U= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=IN0VT4vR; arc=fail smtp.client-ip=192.198.163.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="IN0VT4vR" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741820453; x=1773356453; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=Pl/A6OZOzP1FciVNappVWkmGksNokHBdNIeBXZtzVCQ=; b=IN0VT4vRjt7XYvFxEKIQHmmD5iiglovET5/cz1/yzQBKwzGyodX+OsAj bAduJLn6AnyCOe+E63P3wcvBCX2UgPiH5et30yaYilJD4wU0u4VUth2uM qeValu4lLpSA8+1f8zcE9YeA7sqeYV9MoMajXsOu7RiaBDO78/FpsIS9B N0yC5eznXljDokNQlGo8cVKhdDRottI9zbnQNjpx+tIBExCzLAhtK+IBm yQwu4iYLRJfabPXTrIEbWI4YTu9jHhx9aIEX3xkAsighZ10h6wxyIcVMf 7ljepoE3yUOq3FYrSZ5V3KbM6Vd3rWV9dxECLA8NGV1eUGhnVS6l8IyXS Q==; X-CSE-ConnectionGUID: H4vxfpRwSHqq8QROoFLIGg== X-CSE-MsgGUID: bsgmZXioSDe7k2YKlCPk0Q== X-IronPort-AV: E=McAfee;i="6700,10204,11371"; a="53571060" X-IronPort-AV: E=Sophos;i="6.14,243,1736841600"; d="scan'208";a="53571060" Received: from fmviesa006.fm.intel.com ([10.60.135.146]) by fmvoesa105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Mar 2025 16:00:53 -0700 X-CSE-ConnectionGUID: yWAf2mh8TjCXIrLixs7JwA== X-CSE-MsgGUID: XT43lK2sRPi2XAKMvvJvyw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,243,1736841600"; d="scan'208";a="120580837" Received: from orsmsx903.amr.corp.intel.com ([10.22.229.25]) by fmviesa006.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Mar 2025 16:00:52 -0700 Received: from orsmsx603.amr.corp.intel.com (10.22.229.16) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.1544.14; Wed, 12 Mar 2025 16:00:51 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.44 via Frontend Transport; Wed, 12 Mar 2025 16:00:51 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.177) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.44; Wed, 12 Mar 2025 16:00:51 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Phrw/IIG7b9TzRjSbg6y9Ed+945wNZwdz8m1PmbOKWeSJgxCrM9Ik89DZGk9DUmx8GNvYIG1gReEH7ByF2cb447b1M2p1r8JhmFi59qN0n8Ne9UU4SOs0jKOYWbgTk80H7E32p6/NNVCoMU7TdmHHTzoMdbil0YfTikNpnsmUS6gNzXLq+bsOjHfaOgxq2zXpt0bfq1ZUtzwM68B0THxLgW33BShfh6fPtwzBcr7uisT8x2N9+l0TT+QsFO2G00WPtR1xQW5nL+tL2Ar1ISRyaBPPEhJ1JlH8tW1vEn9ptV8/Y0MaEM4IxtlAX6dJsUaGrdJ7IFGnRu1iwTd9xec9A== 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=1K0+Ijt/56IoawP/qq7xkL5uj/o67iq36TByQongDKY=; b=cCnP3d+LxOorpFZBu+0id6lCZLDhrv7e5+3P4W56d1uGjwtRKf9bkoJGY5CAyXwzu7ikOmnG89oZ0hchYQnccrYZB35xa0kfAs49kEhHZ57QV99WVCoH4f8MBTNjChS5X+GhPA5MHKtFlmd2oi8pO/td7j7sZAxx1rVsGeyie5in//Lpi/8KNP0CjqgfNVNlLPC2G16BF7KIbXbBplMA0/SzRLhlrZLJofGy5KpGv8XkMAUXtMaguS5mpnE1t/qh+SxDsSXrE8tW6JockAdroD6rmFIhISOauhOmP75vM3MmlyZy/JmSvQT7Y80DLPzC/uEVe51hosTy/x4uqkTwow== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by SA1PR11MB6735.namprd11.prod.outlook.com (2603:10b6:806:25e::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.27; Wed, 12 Mar 2025 23:00:48 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%6]) with mapi id 15.20.8511.026; Wed, 12 Mar 2025 23:00:48 +0000 From: =?utf-8?q?Micha=C5=82_Winiarski?= To: , , , , "Bjorn Helgaas" , =?utf-8?q?Christian_K=C3=B6nig?= , =?utf-8?q?Krzy?= =?utf-8?q?sztof_Wilczy=C5=84ski?= , =?utf-8?q?Ilpo_J=C3=A4rvi?= =?utf-8?q?nen?= CC: Rodrigo Vivi , Michal Wajdeczko , Lucas De Marchi , =?utf-8?q?Thomas_Hellstr=C3=B6m?= , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Matt Roper , =?utf-8?q?Micha=C5=82_Winiarski?= Subject: [PATCH v5 4/6] PCI/IOV: Check that VF BAR fits within the reservation Date: Wed, 12 Mar 2025 23:59:47 +0100 Message-ID: <20250312225949.969716-5-michal.winiarski@intel.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250312225949.969716-1-michal.winiarski@intel.com> References: <20250312225949.969716-1-michal.winiarski@intel.com> X-ClientProxiedBy: VI1PR09CA0177.eurprd09.prod.outlook.com (2603:10a6:800:120::31) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|SA1PR11MB6735:EE_ X-MS-Office365-Filtering-Correlation-Id: 971794af-d29d-4f92-5cf5-08dd61b9ba60 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?v4mR60wkgw+zQ4MmesoSQrR8Lq7ohHE?= =?utf-8?q?porMvP5n92RMO/xlynvN29NU5IOUvu2jEy0uHF6pFSiVVr+QR7D3CsaLJVUf7/Q5a?= =?utf-8?q?H6QFj9+4ggG7z3Dyms3Xt4E8Vlp9tprUJIMc7lMGt2kIBCycHY9AwEX9yOiol9X3e?= =?utf-8?q?mK+soHNOQozmPC7S+psntaKkCAmATb0naRdMr5fLmZMj7HHzfs45ic03RjofEaq2c?= =?utf-8?q?outSlgFTCEE9oY8cHm1ZkDrLxhLt72Dy48kOtgsDKjxvaLIybD8DjfidJ1be7nvc6?= =?utf-8?q?P6uXiN8Idp9yecwa7HNp3h+P7X54+izXwb+KCryVwLLdx96jPxpCWjbu2nHG7u3aT?= =?utf-8?q?wmgwBHNUB7pTmZxyhsQTqgc+z1Wd95Bu4CoMPjPXtb9L6TGd4CbMogE4DPBQ6u2+2?= =?utf-8?q?WHfAy7UyCt+iPUg9o81lrObTRPJikM1107/PDwN0jLq0c8XpiA6qGaRSiBLgcoCXa?= =?utf-8?q?Q6JEKQ2fxDO8qTWa2Hn00IQBbj9GXGWIT1BSmsFvkFVILjD9e7ohGvRxNTXopOoWY?= =?utf-8?q?12GOKiyEXuTe/Y66Rki7RYIDAlLvZlfPy4Cma4VnqsovHuM8oA14u2Pvlh1Il+j6t?= =?utf-8?q?PR4OLvHLLB3LPPvpmovOEFfs6rNwEzIwAVaI0L6AG1025ncvZAqrVuw3yVphMXgWZ?= =?utf-8?q?AxYnugWHmeRf6+QJ/rcRCCHPwXQ2M89go6Pl2P/aKym77ipZmxF+zcrPEbJd8OTuT?= =?utf-8?q?yrrkenuvrYE0LRcb9nTluajAncYjeCaXZH5iZBveK/1XzjdH3FMd0lfaRJOycuigS?= =?utf-8?q?0p838iV42S/diSKKRaDrsJOgP5eYlnxCrwxJWwHd42f6Z0Rpd0+4CBhcdZdNf0OH+?= =?utf-8?q?b6ylevMq7M5U6m21gBvvig3mOCYK77xnHUXjqc9U6CRUNbwp2iJ8QgUjT4ZWtrtJl?= =?utf-8?q?rOU/+dHEmbN5Hu1vooDWu24Z8BNuT34qvF2Uch86z394R0pkaED4cK3Cbhuj7ostl?= =?utf-8?q?tSue0fuxPX4cvtQ9ts89XAUd2fNVYxl8EA+VoV6H9wlryyTRlUsk2W1kgpWP8A1AG?= =?utf-8?q?v+zbXLevIZ3TrVx+2EgOHhl0lSsIgi37aT+78gp97Kt0BinmkT0qB3c1Dex5sFulm?= =?utf-8?q?t5kPXT6JmXW3UQv137vmeT4U1s13P1BcDElvbxUBwW4ZfCnN3Hu4g9WmuaPGyXtZa?= =?utf-8?q?ldSpIXz3y+Itf2IGTAux17rHpIOIgbZ38nDdLc69CaveaFvSeJw+ALqbPojM+bpN8?= =?utf-8?q?+ya0AdUrrW8mbQsdw00KA5s8CJFZ/mGx51ilNdedxGOJvj32SzbXj7FtO5ZGZBPsZ?= =?utf-8?q?LJfRiuauyuQT0OyU7LnbMZ9Kgp211VQhpge/Cib6a902oC5/ld9xmWpPKlbYP/8xs?= =?utf-8?q?VADQtOfVfS96?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?E/6QifM9dF02bK4D+0kG8hbgCB34?= =?utf-8?q?v1yE3MDwUVLE1bbFW1ebM7QR5rouonOVNl0CB8YiOvs/xSOTBo3Rmv6UPtiLbaXHJ?= =?utf-8?q?UYkEahWKSkUEqGYsm39R8X9ZSPZZ+Kq89MNUVFJuGT6sKM4aawrkiW74tbU/nMsMY?= =?utf-8?q?vZlZAI7TjKctk0m+pdl39LU1rHyJv1OMBz4mJAGTiH/hTDWJuUzMfeGmONRforz7x?= =?utf-8?q?oswy+v6vkuK3fn11ZKz++nZGjW0sxHELj1vxtkZriZGCKURGt7xQaiRJ2wnyR1hoI?= =?utf-8?q?G4BOclqnwV+5dELCHqHZMUua2FFeiXxSyxaPqXFxIW7EJBhfnlyV7E/QTaeJ108zM?= =?utf-8?q?fi7sqfO0A7NHwmfMdKBPOdGqFtL9sE7CjeS5rvfMDn4W9uV5BAOGPL4bbQTJRKVRu?= =?utf-8?q?x24T92JgoT+XoZWIQUOFUtD/IYUGFCTSDqI3ElnxqILxCYo7uh9L7vjJlDFO7qhs6?= =?utf-8?q?k51x0WxfrewleZIWR1T2fTGjVXW9IMkK3ikjU6MjeHv3CNRbr+K11E4fPYbl1+97Z?= =?utf-8?q?5ITICOi9gWTJarHKNwj+/W+fhkHMvnucmieVUROqPWZCTq9haKZ77vCmg/HRumkPe?= =?utf-8?q?7JQfAIpWLr87n+4queHNNHRMwZUdmUKaAZgoYDzVPGurcaSApZytVN54yLQ38QBYv?= =?utf-8?q?AHDPSdvcESF/iUEF+425SIYMF/NDqyEHpEpe64uD6zT+BqMvE9SQcRfXv/wmCfZji?= =?utf-8?q?2xYcffBmw5gKgJ+wKMfmT2/13QU/aFt/PAIxxwDbVV2Ea4OWNkeRHQrw2wxpofvir?= =?utf-8?q?IUX4I/rWyRNSoikz4O8Pj1DVCB4IpGY/Fox5WFj9rgkyUUHOyjto97uQi0A8zR0jz?= =?utf-8?q?h2YJiiohqQGwQPNagK5FRxzRyUf/QC9JjvSMxuyn1je1Thy6MEWc3UwO8q/Sd0ouK?= =?utf-8?q?WPdLYplGr2DpRzjQ+LKV7N39s/P3jZ7Zf93wKmV9PEtfNyYWC2C8bdginb7QxLP/w?= =?utf-8?q?DXV3oxUMPqRDUZGyG/XZW57Up7v/rLXInvfrChNudzhOgpKdMmGZ/iAyUo7vwbKNM?= =?utf-8?q?/MkRO2Ongut/NVTJtpg1T5nCjn0yJ8x3LC2l4fnHn2qjlC2G/hECPn0pnsVqDTDFD?= =?utf-8?q?cUkUOGyzHBliA433W3zGf0MdIFz5T4Cace9X/T7uLiGBrypo/7nQe1rpPhf27Smwk?= =?utf-8?q?Tmdw7Dvp8Ibmsnq+Q37kS11M4FogSJMoLk696kujvfvJCv8KMKP9DNRx9eHTGATbD?= =?utf-8?q?emWAblG32RLtmUcMuw49q7+KR8tcAKPbQD5kLqbXuefQV9GY/WsGJkvAbtftk7DRM?= =?utf-8?q?rVuac5k5l9C4ij3Tz1PaQScfKfSXprkJ4U7xCMrlhh8KDjAv/mnht8yTJmOWtdsrb?= =?utf-8?q?pZ9KAfLXVs8fENvgEpJI9H2KOqmpI0J/GYeh0H0IYyEvPd6tEfKwx8HMs2pxCVnl6?= =?utf-8?q?uocc4647AzG9ZokaccQY35sMvgsKiAonKGG22FYRTVFpYFHkqL2vxSiWPpzSvQzvU?= =?utf-8?q?zcRLO5egMac72BQ3Wsbckv9mpaVETPoy/80b5a4g02Q/4/NG6BvVMOkgZq8BnVJmx?= =?utf-8?q?g68+MBO3QkdfKkkPEOc7hWLnf5jg5pLF0w=3D=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: 971794af-d29d-4f92-5cf5-08dd61b9ba60 X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Mar 2025 23:00:48.1870 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: mYXAPKpn7Y2XwZRNWMx+lekYmkWxYJmqt6Q9SU3LS56lKRlXpsGh9k1L6+7+WBOAvvjvQFq3/QoLqK/Y08AK+hKiUm2PuyELUPJZ/4zBbAs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR11MB6735 X-OriginatorOrg: intel.com When the resource representing VF MMIO BAR reservation is created, its size is always large enough to accommodate the BAR of all SR-IOV Virtual Functions that can potentially be created (total VFs). If it's not possible to accommodate all VFs - the resource is not assigned and no VFs can be created. The following patch will allow VF BAR size to be modified by drivers at a later point in time, which means that the check for resource assignment is no longer sufficient. Add an additional check that verifies that VF BAR for all enabled VFs fits within the underlying reservation resource. Signed-off-by: Michał Winiarski --- drivers/pci/iov.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c index 7cc17e898cea7..d6d63083884e6 100644 --- a/drivers/pci/iov.c +++ b/drivers/pci/iov.c @@ -646,8 +646,13 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn) nres = 0; for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) { + resource_size_t vf_bar_sz = + pci_iov_resource_size(dev, + pci_resource_num_from_vf_bar(i)); bars |= (1 << pci_resource_num_from_vf_bar(i)); res = &dev->resource[pci_resource_num_from_vf_bar(i)]; + if (vf_bar_sz * nr_virtfn > resource_size(res)) + continue; if (res->parent) nres++; } From patchwork Wed Mar 12 22:59:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Micha=C5=82_Winiarski?= X-Patchwork-Id: 14014033 X-Patchwork-Delegate: bhelgaas@google.com Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EA79C1B0406; Wed, 12 Mar 2025 23:01:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=198.175.65.18 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741820473; cv=fail; b=B0saY4x8haxYGN078xKgjEKQS26ifoOdQRd+AgnEyQPtow1rM4780hi30ZPZkqbigz+NFNnnhy58Fb7NudumXwlItRVJUWdpJExiIgL6CRqKlYBqMlC6uVO0saCodSySC83fJ+5YnmTpCPv5cLFAi8Ih+eAXd3tw35QfdyYs4fc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741820473; c=relaxed/simple; bh=b5CME6Kq0cM6eI0ZSaR5Sq4qPyAWwrsOUsqySK1L34M=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=PSAzzaJD8GgzV0Bo8OjailQT7ecRJHLN9m4Ovy+Fcg2OgeLVq16tOh0GbVPYc+PqTadVkNiw9vNPbULVnBv4icBwOesOwI9pPp/0qkanWoQq/DibHECLHizh3kYeeT7T4twcRxLaoxlnsKQcPEXMunGExG6iBuDNNjmtChNoXss= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=IFcJRqZA; arc=fail smtp.client-ip=198.175.65.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="IFcJRqZA" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741820472; x=1773356472; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=b5CME6Kq0cM6eI0ZSaR5Sq4qPyAWwrsOUsqySK1L34M=; b=IFcJRqZA6C7DP7II+A7ISWPAVyOQRhBnHSsXhiJYzeN8pnkXR/ydRF1C WgsFNkHi846Tc9Jyac1dCzJZhynznA27zOY/wtYSJ/7JbZbYlCcXkSful FOAJ9NYwm6FBrtFTqmmy2kb1caTZ7k7zkIlV1mk2RAX0RqPbWgWSVclPN CePqjxp4aRMMvhD4IZ9pIQsceDasrcDJUUaQ0eQwddVzOOxBqF9n2BUuE vvbKHq+8AyNxjiTEvX0PXywub/d1WhjZ8zliZMR9A9aJhX2f/d4bmIi/m wJNsumpLECzFYRDv1JuvckWaB268z1OeJVeR+l6uu6LT72uEKUrfNdn+H g==; X-CSE-ConnectionGUID: eJTywGsiRuytuxv6oYACmw== X-CSE-MsgGUID: FPbJL9yzS9GNsHbh1UFaDQ== X-IronPort-AV: E=McAfee;i="6700,10204,11371"; a="43103855" X-IronPort-AV: E=Sophos;i="6.14,243,1736841600"; d="scan'208";a="43103855" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by orvoesa110.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Mar 2025 16:01:11 -0700 X-CSE-ConnectionGUID: WtPSxywVSGym2PGt3NC3ZQ== X-CSE-MsgGUID: 89ftNNQXQNGd/wS8rM+hOg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,243,1736841600"; d="scan'208";a="151604654" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orviesa002.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 12 Mar 2025 16:01:11 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.44; Wed, 12 Mar 2025 16:01:10 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14 via Frontend Transport; Wed, 12 Mar 2025 16:01:10 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.175) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.44; Wed, 12 Mar 2025 16:01:09 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wV3v6hM2K2sHjYeOdElEUdNFGwGZ6YMEJvd1ZU6hoSPPDWgwktmgmGY1SicbrMfRpR8JGkZiMpPpyMZ9ZCpKbcNb0XqEqnzpBdw1JSuZDBhUa51NhJZwv1fNLe4leKtQFfOyY4wkc3+Mm56cEd9BK8utJqo/NtSB0Ph3kdfI1k/REAGFXwSSnk+fwfBcj6S5352K2u9Sh7qhx+WJ30pZ2smKhYsc4+Rw5QdvL8F/NvwlIUKrqAy9oiFdB3Vg6e/3kayqDd8HzZoKL7ZJoPHqabsisrxcxQdsdQGPRZW+MdaLisodWZwOakjCD/CzU994gpT1KeJNpmN2umwqMAzMew== 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=VVwLgLV93AcvNgBV82/WCwJUu1K2L/gGXe2Dnc4Ak04=; b=Sxu9KmLNgO+SWTNROsKEPxpGqQSE82JMcsrbMM7mXfvhst6J0TtmvdHTyG02LhOWW7BdhCAHsSym0O6iNTpTHMLo72LvFrCAClWkJbGEseT82tICAOwQNSG09UG+kCnwMweV4TDUsoEivfIEglzcZkZQSAPFZ4T/SuC5BPEoohgMwo/SofVPsZUyjTiS41i8R+bZ0SjwFyxi14078GQGE2rNj2ObkMjiKhcgEhCyvSuUbQTRwnppL3k8UvDobz3WCRF+EE/PWEY1MQJrNqnG5M7lDqwB8nwue8CFpyRQwmaPX26y1Z0XGkox211icMwyIcxJB/ywT0nScVguTFW2Fg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by SA1PR11MB6735.namprd11.prod.outlook.com (2603:10b6:806:25e::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.27; Wed, 12 Mar 2025 23:00:52 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%6]) with mapi id 15.20.8511.026; Wed, 12 Mar 2025 23:00:52 +0000 From: =?utf-8?q?Micha=C5=82_Winiarski?= To: , , , , "Bjorn Helgaas" , =?utf-8?q?Christian_K=C3=B6nig?= , =?utf-8?q?Krzy?= =?utf-8?q?sztof_Wilczy=C5=84ski?= , =?utf-8?q?Ilpo_J=C3=A4rvi?= =?utf-8?q?nen?= CC: Rodrigo Vivi , Michal Wajdeczko , Lucas De Marchi , =?utf-8?q?Thomas_Hellstr=C3=B6m?= , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Matt Roper , =?utf-8?q?Micha=C5=82_Winiarski?= Subject: [PATCH v5 5/6] PCI: Allow drivers to control VF BAR size Date: Wed, 12 Mar 2025 23:59:48 +0100 Message-ID: <20250312225949.969716-6-michal.winiarski@intel.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250312225949.969716-1-michal.winiarski@intel.com> References: <20250312225949.969716-1-michal.winiarski@intel.com> X-ClientProxiedBy: MI0P293CA0006.ITAP293.PROD.OUTLOOK.COM (2603:10a6:290:44::17) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|SA1PR11MB6735:EE_ X-MS-Office365-Filtering-Correlation-Id: f687b3ce-4af6-431f-daa7-08dd61b9bd00 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?j35cT0AORDfXE05UUiV7eG1dB7RwTWC?= =?utf-8?q?QHFmPaRBmVdKtlnRNFgoWLvdkNnw7lrQjT25ihpJR4wIOvx+t/xVQa1UWvlYlOfRD?= =?utf-8?q?9wDvxF7aD3fyJImaARKFtUO91KIlqCi6CDBG+AkeDQTCYXQEwNM7uHJRPbfHqtF5S?= =?utf-8?q?FdZzHi+ZMzTXZx4/zj9ApPcSA/+6e0nIsI1TTN5JtdspsZoXZW6yBySQhMYkmXA7+?= =?utf-8?q?OKgokMNj1EowW91l3lBWrWw73egGsTrlLKbvsYXyvnjQ264NKIT1DVlE51SCYAOY8?= =?utf-8?q?QFcjYphgT+sgZEsMZ+mJUnCaWoQr5cVsgqdMFdL67lMRlaualeGhA5NWnWHzdZMDJ?= =?utf-8?q?OBJeAJ56vq8AN5d8ZJ/d5Vi/gw/lUheGU3vtiFi5P6vvfM1x7oBv11uUr5dy4eaEv?= =?utf-8?q?PsxU1uL8ygiApd8bUDILGr/gIAORjRMB9LYFbIFmVlefb0iXBVEWWN4J1/WTVMSgx?= =?utf-8?q?5yOHNYa4kPQT7gAit7g/ZtcUP6URU+6woKH4ku5HUn591rvY1+TYVhLuFTYBL4Ozr?= =?utf-8?q?dZKDGzngmn1VGnBG2ROMUB5pyHIaZi4UbzpltUyrFryLFMDky3TCp+E2YvN1YCQpT?= =?utf-8?q?EPA8IUiEQuDX9EtbF+LfCz76svmI4vcXBE3Xu77S14WnkATAKuDQdSJ/SzMHdhFyo?= =?utf-8?q?tP36kmZtam4+fWHHuhoUODHZObTQCLYEROiLQpB6rflokKWkFQYusG+NjzSdI0Rf5?= =?utf-8?q?gauIhawGedZWM1k7q4xKnV1pfBMTdJ+uuAFQlgBBoJq+alVkECOs5CMsN8LVbN7PT?= =?utf-8?q?Q4UrlaKDOyvlRB2bYnNMs22GrXYCM4EAxH6gj242j2+H9uOJGoCzWOuu1xsMVWjM2?= =?utf-8?q?/zcIH5+lbmtSSZpZIspEZ/I2H1qXL6TuKQ4duO+0LqcotzQ4ixnHI5pt87Pi2EZE8?= =?utf-8?q?0y/iFpDEKTIhI+4r2UVe6ZHtJu08JjW47+My2GLSvCDC2c3uHJtbI+hm+OHfPm5Bp?= =?utf-8?q?Nf9quyBfSIxhXjmziYLM5zZ1V+QW2po5ixJvTGfAUBVlLyi617eVNwb246srM6gPS?= =?utf-8?q?4NfjTJ/5Tuvn+JKKv4HT7PHWieFPZSFIKxkLUle5Y3yx9FAECLaITxi1rYaXDWuD+?= =?utf-8?q?8MH2HOskJoTmAM/V88g8u9dr1KCZkIMRMhZXXZYWuonZw97pzGSCAsO8SwK/NhtsA?= =?utf-8?q?yj/iSequqgCIcFRX6zpEFCDbZbKkBIgJ6NY9KnlBwkjm01KJACiPBo1GRYAay/7Qi?= =?utf-8?q?kgyYHWySEwCwfKQoPTBbHNo1suP4YA1CzbEPdz1q6USZ9PmgFuIALvLa9MytRY8QA?= =?utf-8?q?zDace9mKAPwdk8AMkjEmHsszOZDySvEzSD9YWn6+JRtJLjBg8J421PoMjZl+FmIZL?= =?utf-8?q?Bv+Yb+AYafXq?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?hqwtvcpzRR5gd5Dfz849XcMw+JWE?= =?utf-8?q?f4DwUD79hRLzvuwIhM80oRRdYjpGKSpz17iRCIFdcn52GLFBNSICvzxcCWNJsUlxB?= =?utf-8?q?94X5PP//sZ9c4u3rHhaH6VawzUUd90lo9gedhJ3DQT6gAVZ7bDxF5v2l+4XpgadPN?= =?utf-8?q?qdnmnGGw7/5rOZEoxUGElSGKu1CJDDGCE8QZLX+IwS8HOcOlN7qwgX6SXW8Q335wq?= =?utf-8?q?gkr80iWV2esnwCh2Rv9ImdPgZGVm3R7C+9jHFlGzOwAZmIBfhq+ustvtilrAEMRUF?= =?utf-8?q?seNYZCSR1QP+iY4vlfKlqP4ErVx9bFoiHeJRe2x4OfWkGt2Nyz+lU7p0EUxwYFM70?= =?utf-8?q?yZUG5/v9FaPNoWLSF0oqWel1azlD1YeLrafsSNhEKRkBqggnwm5fSL6RHJgO28HJ/?= =?utf-8?q?BUN3pQr55gLM8+cyQNQp5JyY+yHcPCcu+dBFmOGfVb31IaTukij4ncGs8EZe5WLBK?= =?utf-8?q?4VJCB7l22Vbj1dLQo/S1lygpM7uxjIre+pKGrilaS3f8krtp+0UZ5JXzZG35iLcJq?= =?utf-8?q?7Que4tL7djAPci3tGgI5QpNkQrqe76BByKva43+f1psjfDJmsLSHb5F5vBtfXcGSl?= =?utf-8?q?6JY38Ps0AWBP/k+g3D8JIK9pooxNPHywENnGSSRq1ky3wDHSeRc/kQS/Q5aBqk0nX?= =?utf-8?q?LVM0xHKJWcxEMiAvd9cxp10DIBO8021srTgbYCnjuqKwXdXYwexBstw44QPSXLcZU?= =?utf-8?q?M4IWRpAw3fWCGk4MDi4n8nbCFdIHdzh46X7iy3jaBEfdJd3BEorlRFsQazDva/Ysy?= =?utf-8?q?Et4SZJylcu058bkX6q1E4xJbVi5nvXAOJS9sPITv/X6WPbi72HVWGXJuKD2cVrpyC?= =?utf-8?q?WvY5jvc+uDPAqi/l3HIeJqunbt5VYmuzr9QS9Y0skebvsmfv1TWFHC1EXvIJ5Y4Vf?= =?utf-8?q?XFccdkEa44PE0dC9ThbCeUDrhWSy2s6G3h4KQx0JVwfbvbuqv1niAnLJSIFrMhSRT?= =?utf-8?q?IYS9+qB3RsRoyTmH3R0q28qBHmaEwKXjuEGdCT1tJE6641sPkGNTz5BL7PmE6+Fhb?= =?utf-8?q?ifHPi15m/qTormEkvSa0K8Z5UhYTfBRe4aAzmP36aH0ZcwEsxRs4D123OLIsSrR85?= =?utf-8?q?z9c0i1NBASG+G6iFsoV5x4er10eT4SftBNu5rOpCCuvYZVE4Cf6n1auF2yVn9/7G2?= =?utf-8?q?FRj5LZXZv3iAcW1KVczc9kS1TJgRlKlcCu6iUvuZICDsyJV+qV96MxRaivkKrILCz?= =?utf-8?q?ibS+DgZbPWAs1lDqBZVUFY60AyHM18A4Rlcjs/S+rcPxUPnqsiqZwIUvXhidw2Vow?= =?utf-8?q?C2PuXCkVqoFYY0rlKAOIpfC6zw/M0kPx6qc76R0nCkEVrgp4aqjQilPNCQkwleVQq?= =?utf-8?q?FnCFNtfThCrH0DAOw/8B8mC/AVWQEXXN8joerOdrAZ4/pl3L9EU7SAbWEYs/xs/YQ?= =?utf-8?q?8P7jL1IMXMqnHmYE8dU2xoJvG68gqi6w9JSnUbpmPbSPvCx/Iw6xqqdWUso73PqXs?= =?utf-8?q?OHOhKbWubT9StMdDtm7WlO2gvKvdNn5sFCytygtSaBoXWg7+jtzMY8bo+n8ImTWZG?= =?utf-8?q?k7pgiPLTk7DoVJlFxdnJT8C92b2uzhTLug=3D=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: f687b3ce-4af6-431f-daa7-08dd61b9bd00 X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Mar 2025 23:00:52.5437 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: AzuDcTMj8GAvFCzxsaYLnygQdTpWhKmQrmJHfO1N5iaxc7YJh7Vv0ES3NFdKJErMWTg4pNL6/222frwEl62IuvJwYXmn/0q/mT/ke2UbcTg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR11MB6735 X-OriginatorOrg: intel.com Drivers could leverage the fact that the VF BAR MMIO reservation is created for total number of VFs supported by the device by resizing the BAR to larger size when smaller number of VFs is enabled. Add a pci_iov_vf_bar_set_size() function to control the size and a pci_iov_vf_bar_get_sizes() helper to get the VF BAR sizes that will allow up to num_vfs to be successfully enabled with the current underlying reservation size. Signed-off-by: Michał Winiarski --- drivers/pci/iov.c | 78 +++++++++++++++++++++++++++++++++++++++++++++ include/linux/pci.h | 6 ++++ 2 files changed, 84 insertions(+) diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c index d6d63083884e6..76846df2a26d8 100644 --- a/drivers/pci/iov.c +++ b/drivers/pci/iov.c @@ -1290,3 +1290,81 @@ int pci_sriov_configure_simple(struct pci_dev *dev, int nr_virtfn) return nr_virtfn; } EXPORT_SYMBOL_GPL(pci_sriov_configure_simple); + +/** + * pci_iov_vf_bar_set_size - set a new size for a VF BAR + * @dev: the PCI device + * @resno: the resource number + * @size: new size as defined in the spec (0=1MB, 31=128TB) + * + * Set the new size of a VF BAR that supports VF resizable BAR capability. + * Unlike pci_resize_resource(), this does not cause the resource that + * reserves the MMIO space (originally up to total_VFs) to be resized, which + * means that following calls to pci_enable_sriov() can fail if the resources + * no longer fit. + * + * Returns 0 on success, or negative on failure. + */ +int pci_iov_vf_bar_set_size(struct pci_dev *dev, int resno, int size) +{ + int ret; + u32 sizes; + + if (!pci_resource_is_iov(resno)) + return -EINVAL; + + if (pci_iov_is_memory_decoding_enabled(dev)) + return -EBUSY; + + sizes = pci_rebar_get_possible_sizes(dev, resno); + if (!sizes) + return -ENOTSUPP; + + if (!(sizes & BIT(size))) + return -EINVAL; + + ret = pci_rebar_set_size(dev, resno, size); + if (ret) + return ret; + + pci_iov_resource_set_size(dev, resno, pci_rebar_size_to_bytes(size)); + + return 0; +} +EXPORT_SYMBOL_GPL(pci_iov_vf_bar_set_size); + +/** + * pci_iov_vf_bar_get_sizes - get VF BAR sizes allowing to create up to num_vfs + * @dev: the PCI device + * @resno: the resource number + * @num_vfs: number of VFs + * + * Get the sizes of a VF resizable BAR that can be accommodated within the + * resource that reserves the MMIO space if num_vfs are enabled. + * + * Returns 0 if BAR isn't resizable, otherwise returns a bitmask in format + * defined in the spec (bit 0=1MB, bit 31=128TB). + */ +u32 pci_iov_vf_bar_get_sizes(struct pci_dev *dev, int resno, int num_vfs) +{ + resource_size_t size; + u32 sizes; + int i; + + sizes = pci_rebar_get_possible_sizes(dev, resno); + if (!sizes) + return 0; + + while (sizes > 0) { + i = __fls(sizes); + size = pci_rebar_size_to_bytes(i); + + if (size * num_vfs <= pci_resource_len(dev, resno)) + break; + + sizes &= ~BIT(i); + } + + return sizes; +} +EXPORT_SYMBOL_GPL(pci_iov_vf_bar_get_sizes); diff --git a/include/linux/pci.h b/include/linux/pci.h index 7192b9d78d7e3..76de900c652f8 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -2393,6 +2393,8 @@ int pci_sriov_set_totalvfs(struct pci_dev *dev, u16 numvfs); int pci_sriov_get_totalvfs(struct pci_dev *dev); int pci_sriov_configure_simple(struct pci_dev *dev, int nr_virtfn); resource_size_t pci_iov_resource_size(struct pci_dev *dev, int resno); +int pci_iov_vf_bar_set_size(struct pci_dev *dev, int resno, int size); +u32 pci_iov_vf_bar_get_sizes(struct pci_dev *dev, int resno, int num_vfs); void pci_vf_drivers_autoprobe(struct pci_dev *dev, bool probe); /* Arch may override these (weak) */ @@ -2445,6 +2447,10 @@ static inline int pci_sriov_get_totalvfs(struct pci_dev *dev) #define pci_sriov_configure_simple NULL static inline resource_size_t pci_iov_resource_size(struct pci_dev *dev, int resno) { return 0; } +static inline int pci_iov_vf_bar_set_size(struct pci_dev *dev, int resno, int size) +{ return -ENODEV; } +static inline u32 pci_iov_vf_bar_get_sizes(struct pci_dev *dev, int resno, int num_vfs) +{ return 0; } static inline void pci_vf_drivers_autoprobe(struct pci_dev *dev, bool probe) { } #endif From patchwork Wed Mar 12 22:59:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Micha=C5=82_Winiarski?= X-Patchwork-Id: 14014034 X-Patchwork-Delegate: bhelgaas@google.com Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 942261F151C; Wed, 12 Mar 2025 23:01:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.19 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741820476; cv=fail; b=JsNIRerpHnVxnkBSPQT+OAO+29tkS3y234CaJmvQ3Na1jxnm6iYA2SHDkim+Ob0yjmEDZjFIHzoPgN7u7YMoA5CGSkXY/FVHsRI8a+MYkbZBwXlMRhUmkHDGLYRMP7rfi3r0uAA44cZ/t13fobXzdaPLnp3CfkN38Ymb8Xnzhsw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741820476; c=relaxed/simple; bh=BisXOnZ5cEvZI+ssx95p+8hjk5ouP7x3ssYTV+BBEos=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=qwVWsqSZzKPbrpHpeNnmSy5+sFhR92Usuq++GV1J91bbzQ7Y67zRZsgwExXSvJl33y/hS6nsPvFQzjntnDaRoAhwgovuEmhXuny97vHvYsGXSzpj99yDFma5+rVhXShkB7r2YIJcreZNOw/+p8P9cclYJnxj1S4zyF9EPr3ZtiA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=FRLmUANv; arc=fail smtp.client-ip=192.198.163.19 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="FRLmUANv" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741820474; x=1773356474; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=BisXOnZ5cEvZI+ssx95p+8hjk5ouP7x3ssYTV+BBEos=; b=FRLmUANvArsCv8tsC/SfVkHVqe8Pgla8DMBJLiYTdRHvQhz7/ZbaCpZp fjDFKdotIwwI7ue7YqJT0NpcwByD6pAgSKhv/TdenZvwvnJnk05kxr2Is Iu8FNKpyRNbZdMJQMuJgHodEEjGIG6fKH5A4WPDvnpmHIIG0CkTGQaHLz 969cy28nXS/7p3fPJGt7yYyDnON0CFChm58AKlyM+WRoMKwnYolw/Kx/K qcybsvV6M29GyZlUKZm6cpVCKsskx4tgtXqdAJxZtriLINme0sc8lURZQ DoapToJQ2NAEYbSYNuVLA7BZD1/oQ9tkzICsru+aO5rJsTLo2zBPQKWTN g==; X-CSE-ConnectionGUID: 2LGk4rd+RpeBusjB0Iyl7A== X-CSE-MsgGUID: NnioZ5SXSg2FoLS8W7OWgA== X-IronPort-AV: E=McAfee;i="6700,10204,11371"; a="42088706" X-IronPort-AV: E=Sophos;i="6.14,243,1736841600"; d="scan'208";a="42088706" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Mar 2025 16:01:13 -0700 X-CSE-ConnectionGUID: 5Wr/6eFKTWuBVLOipHRLDw== X-CSE-MsgGUID: Ubc7HvXHSBOOmvKfazc20Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,243,1736841600"; d="scan'208";a="121006911" Received: from orsmsx902.amr.corp.intel.com ([10.22.229.24]) by fmviesa008.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Mar 2025 16:01:13 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Wed, 12 Mar 2025 16:01:12 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14 via Frontend Transport; Wed, 12 Mar 2025 16:01:12 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.175) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.44; Wed, 12 Mar 2025 16:01:11 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eYHVXrABm3fEWjKMWhwTCnI1Mb1rQlcZpaxSK/Mj97O9pF74EZLJ3niG1+awlay3n8EqPsvfaVGKrrPwKfLIipzeC3ktalzAmRCrIpp7hlTOgliM5tZ5Ntua4WBojha8mq1WY3XvDuPY4HgGgc6w1zmFLeaQfkW08dWrCp3c4roQ02vFBev0TqzIioe1qvYtALaGUHxy94Zcy0eIdIU7T6GooK4LvbLiqdsvrMcOVaPBPDbZnBXCwy+GLLNlze6GT/jqtYUSIJTh3+GwMFPRGn8NQQwuq6ltHvEuxtA9uqzYYhan+/Ok+I+ScaqBoOA3jjaBHFb9Ch+wG1YVmRC60g== 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=U0OxEcu+K2ART199oOw5i/HpMIa5ejIljMcmNngQLbA=; b=ELM101RQe2DYokK9J530ZKuciAy8YynworeRV1skQAe88D9q9RgfaAc+lTJY8shky0xRJHbtDv+xNJzqGfK3JsJ/mU4te25urMuk8BJvCDpNWWxNXCXzUj5i7T0AQ3u4/AawjP4bPu+MfmtQAMZVMejRgRA1t1oUgsHQM3Nvs/HX+mZ15iyxB8n+sWqZccli5CwtE+XFww8OImF/SqsOP+6L3iKNlf662d5D1NWmJ4gOJ7HiGUUxWRNnq1bA7yM1BzUzxwO0xyKQ3Ol/6U6JZhHSsK3XvLJE8xYbEUkOLTW3BRjsCbG0C49ZIOhOUoo+DZ7HP8ICtTzjfnKUXojUXw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) by SA1PR11MB6735.namprd11.prod.outlook.com (2603:10b6:806:25e::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.27; Wed, 12 Mar 2025 23:00:57 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%6]) with mapi id 15.20.8511.026; Wed, 12 Mar 2025 23:00:57 +0000 From: =?utf-8?q?Micha=C5=82_Winiarski?= To: , , , , "Bjorn Helgaas" , =?utf-8?q?Christian_K=C3=B6nig?= , =?utf-8?q?Krzy?= =?utf-8?q?sztof_Wilczy=C5=84ski?= , =?utf-8?q?Ilpo_J=C3=A4rvi?= =?utf-8?q?nen?= CC: Rodrigo Vivi , Michal Wajdeczko , Lucas De Marchi , =?utf-8?q?Thomas_Hellstr=C3=B6m?= , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Matt Roper , =?utf-8?q?Micha=C5=82_Winiarski?= Subject: [PATCH v5 6/6] drm/xe/pf: Set VF LMEM BAR size Date: Wed, 12 Mar 2025 23:59:49 +0100 Message-ID: <20250312225949.969716-7-michal.winiarski@intel.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250312225949.969716-1-michal.winiarski@intel.com> References: <20250312225949.969716-1-michal.winiarski@intel.com> X-ClientProxiedBy: MI2P293CA0014.ITAP293.PROD.OUTLOOK.COM (2603:10a6:290:45::13) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|SA1PR11MB6735:EE_ X-MS-Office365-Filtering-Correlation-Id: 50750f3f-792b-40d9-f8bb-08dd61b9bfca X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?Eyt1csQlah3tVJ7+6rMG42URsnWnpHO?= =?utf-8?q?4CeH3n4LRae2dFNAB06fV7HZHDNdUwsWHsdyymkYPfcjUbKonagVzYlrp+JZu3kre?= =?utf-8?q?O2Q/GAAQHQd5/uiX8ETHoe6RWGkl3KQ+pbWKIWmLhQRM1Pg5o3qxU2UDMz8xbfPR1?= =?utf-8?q?q61x4L0js1xrtXXpQTWUQ2Gyfss8/Fs2qFJm9zvD0cKVerCnr0SJR2SNFchbAFki9?= =?utf-8?q?DzS/6L3aejOtyPNp7Ei5G+YcOzR7BKAhZQGulH++oRnKnKnCL96WOX0rs3qwxPnTL?= =?utf-8?q?2c2lMDqkz7rfTcg63008/mGP4jplpv2LpOguyTYNXw01QVXHadB0xesb3uKjSsNzk?= =?utf-8?q?mhnqifUWjI2OEvMay3bDKq8Oj+uQTS8GSUfrmtDuRmPRQ6U2AkJZ8ZZVTinxYeYF9?= =?utf-8?q?OcGt6IfcgI1JRLxZkJlOvrQ0tSHt7DNQ77qTGZ2TswnIJL+BCJd/7XCAxOISzb/aD?= =?utf-8?q?ySxPMvbRUEWVGUoZncwQVHanupWgPCZVQc+UD1mGlMOKmAXq9Na5NhLoPNDmsZqaS?= =?utf-8?q?VYwvOb++P3CfnVYQHBVMx32/g/+Z0F5kCj7XEZGNmpsyculuCiTmIyNFp9L8kmKwX?= =?utf-8?q?AbXAsOwMvyHWGK2+/bDxpH3vAVrrMgXHGi3UmNv5buMjfFWzbKRjw37wU/vGJNkZU?= =?utf-8?q?olqqjW8BVesLff8/PCynjKXAX5tvAel9PNN7iT4i6xIvrmts3+OIqo5yDooXoRjN4?= =?utf-8?q?Bk+h9UEON1C4oOfFc74cVMd5vP0mgqMh/bFDu3gcsDyTMB0kc4DSZCuXn4fBl6dHW?= =?utf-8?q?y1tGnrMAn6D9WsWTZp4AwbYNMmQfmnAGs8BpqdVwp8bHNL+4Im61UjjTg8ZiAEsBi?= =?utf-8?q?vNV3sLJDBmteguCcoBxYnGmGJx29TBjh2ggE0/Fw/49dzpd1oG+pazbrfsA3Cr8k8?= =?utf-8?q?xgH4HfK71yuFnF2DsdM+XuctlTOpar2DSXrzitPG8haf7wnOEXhCLwS38hZEXOeYK?= =?utf-8?q?pSKN8oiWxSH9Khj+aGT9krraJjFVDpp7tnfsv4WyRLRJmz/rPrGTB2iMi8hkq6eWj?= =?utf-8?q?GNiRwKZhmeLL1nV55mqywgC5pi8KeCteObI90wj22snFzUw3WCOoIBciUIB7NT7KT?= =?utf-8?q?+YcW9cA6Ss0bu9+uB1DjwYDLijCk2D4rFn1sdq0umCPljpGZ0PKwqaI0JpzVEMkNo?= =?utf-8?q?kNTSvRcvVHfqdVvo7rh5rOh9qYaptGK3XD89Fer+XLfEIw/29Ae5ys4PEdzb3wUQl?= =?utf-8?q?sNQyAtEe/u/ewsHv+eDj2L+AffR4BU+0JQ/p+MEjivSLErhlcQ7Dxg/vrKOelXGc4?= =?utf-8?q?AxU8Uj4BBH/cK5rxrnRbd8iwY3ozTGfQv/NOMpM1WV24LN/Jo9+t17FrNPneIQK3M?= =?utf-8?q?n0hgwXpEDKXx?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5373.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?lqLOWcyh68iismY+fhAYhn45Rq4L?= =?utf-8?q?F9BkKsBU1kvndHrN2sUNKmDi3uKowQWpWX3VM3C6UEVFTB0ydHr5AUPkWsYIuoBgF?= =?utf-8?q?XSlG8Wv1MLO2ZGaZPS0kNEdXMuf54vnRWpFMalqBhPMy8gG4pvd4X745Ee/FHCVV8?= =?utf-8?q?m+chVGI7s20dV2MxxKX8JvYQHGPJnE8lMpbCTHK4VKvdEy8hzIPKareNHD6/QfTXT?= =?utf-8?q?TWoX2tl0KudA6pUKOvv5eEQIYENAMLJSf1SwiZuUh4A1RBvFOPzjTBW4TO/8s7n3j?= =?utf-8?q?AfkZoKP9vPUWR+863uut9e270mLwH2BF/5MmwXIz7MwZpYrfrweKf/Z9rJ+1i2S6R?= =?utf-8?q?lqIRDTKR9gWGFQTAOAxDxSeRptpq0F6rNiM2ZW1xJ+LTcN8VHTFPr0tZgnKOHpg/r?= =?utf-8?q?/3UDLLN29/Sb9WRSLrxUt9BMhTbt0Kw+NQM5StoW79ZtxfvbzNNDOv91pi3vQ7wfU?= =?utf-8?q?d5R3aEF+gXtyQ8cxvsa+qr6OOybBkFDkVWUomp/fYdIR6RyoOn6ylZZPQADiL805d?= =?utf-8?q?73vHHEpmAh7K2Yau/TQ4+4H2DspG3QfzGMm8eCtXF4U+uEWoo1ihjye0rWoNBM8G9?= =?utf-8?q?of496UM/QdpVMh4eqAwGSB7Gljb0r7DKSeM1PY5XcoKDVKYTTENXCTEluF/Wyq1LP?= =?utf-8?q?BHNMSA0eitxrkt7HlRpO4Mx4pmvMRciJD8FSOTfRH3tMiNUQaRyITMi3V+j50jFmR?= =?utf-8?q?BSdKFjenwq4cS0yOU+bipnYluWqMkrgKu39wXIFHatc6vkCdlSLCq3mmlscwUAMnK?= =?utf-8?q?1tSrH/w7ou/ZARUYRmjqs6w6Zbz3f1zXp5xl5qBI2TFkPmqyIAaF7fZ4uWOzOQoch?= =?utf-8?q?blGkJetXoBCK1oop8LW5M+R62BYOjB4UQe5C3z5dgTz3S742G7Slio4fbrjbdUVK7?= =?utf-8?q?WV71UdKWFaVU6gT5EIrac6f2gFv/Zil842Mjd98km0FTOxtuFieaX44ghq05YrECm?= =?utf-8?q?eqJdqeFEkibY7nigqkCwG+QbWej9G/KPaTqS8Fnh8iZg3lXbMWynlfoTwfkywqm87?= =?utf-8?q?YPYu/yVnWGsAfAkS3ZajGF65uGqU52VkEBNL/3ueFPCybi314zUpCMmijAzhYPIJ8?= =?utf-8?q?BrO7MWujkg1/whcgd5hn1QTHjZY7cNtqqvpaHLmHcjgnbHkpCZl/uZ6+12K6SwRL3?= =?utf-8?q?AkQw2Di+7//PPee2VvAZmkYrxXRQQTAffDmCH8vZdhWLSpURfexpfn+SX97s80QuX?= =?utf-8?q?enmv+O9gWpvwFzTiZUggmQp7u5ueDYA4vKWMi6OeypMGNIsRb52vfGPMKBApSaVfb?= =?utf-8?q?c4hzs/bBGaTv51lSCWy2d03NbcoRH64eF+QpI7oycLH3SCTYWCFgIU03Cz2RWOUQN?= =?utf-8?q?FbPP1++458MxJ8mleYji9GppZbmSQUuZt/WHjOO3bUSBBUAWwfUp0dpbHS2r9ATZp?= =?utf-8?q?wGBT0fMFZi/K+/ZCQLNLmtUKtATd1FlZwKBbbzEHlqqgL6Ri7mkSVzmdG1LT5GeNL?= =?utf-8?q?Ag2Pz+jM/EQ5pM2G2ml8yHhG6vfB5d+c2QHOXGQVZQSnLHeGmXitFm5A9QX/Th1fg?= =?utf-8?q?NmaVPxSAHqPrKdWjWIcJvTLl4vXfkzY//g=3D=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: 50750f3f-792b-40d9-f8bb-08dd61b9bfca X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Mar 2025 23:00:57.2471 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 4BoS0Jhgo86TTXMdSX/W/vsIKg+2+nFYeiryfHk86C44w3NMAEpmtIf/o8hgtDJ2dzRhIPrVvWnfTXyA48EEPAeVzZs1WhaWK9xyj4/ARyA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR11MB6735 X-OriginatorOrg: intel.com LMEM is partitioned between multiple VFs and we expect that the more VFs we have, the less LMEM is assigned to each VF. This means that we can achieve full LMEM BAR access without the need to attempt full VF LMEM BAR resize via pci_resize_resource(). Always set the largest possible BAR size that allows to fit the number of enabled VFs. Signed-off-by: Michał Winiarski --- drivers/gpu/drm/xe/regs/xe_bars.h | 1 + drivers/gpu/drm/xe/xe_pci_sriov.c | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/drivers/gpu/drm/xe/regs/xe_bars.h b/drivers/gpu/drm/xe/regs/xe_bars.h index ce05b6ae832f1..880140d6ccdca 100644 --- a/drivers/gpu/drm/xe/regs/xe_bars.h +++ b/drivers/gpu/drm/xe/regs/xe_bars.h @@ -7,5 +7,6 @@ #define GTTMMADR_BAR 0 /* MMIO + GTT */ #define LMEM_BAR 2 /* VRAM */ +#define VF_LMEM_BAR 9 /* VF VRAM */ #endif diff --git a/drivers/gpu/drm/xe/xe_pci_sriov.c b/drivers/gpu/drm/xe/xe_pci_sriov.c index aaceee748287e..57cdeb41ef1d9 100644 --- a/drivers/gpu/drm/xe/xe_pci_sriov.c +++ b/drivers/gpu/drm/xe/xe_pci_sriov.c @@ -3,6 +3,10 @@ * Copyright © 2023-2024 Intel Corporation */ +#include +#include + +#include "regs/xe_bars.h" #include "xe_assert.h" #include "xe_device.h" #include "xe_gt_sriov_pf_config.h" @@ -62,6 +66,18 @@ static void pf_reset_vfs(struct xe_device *xe, unsigned int num_vfs) xe_gt_sriov_pf_control_trigger_flr(gt, n); } +static int resize_vf_vram_bar(struct xe_device *xe, int num_vfs) +{ + struct pci_dev *pdev = to_pci_dev(xe->drm.dev); + u32 sizes; + + sizes = pci_iov_vf_bar_get_sizes(pdev, VF_LMEM_BAR, num_vfs); + if (!sizes) + return 0; + + return pci_iov_vf_bar_set_size(pdev, VF_LMEM_BAR, __fls(sizes)); +} + static int pf_enable_vfs(struct xe_device *xe, int num_vfs) { struct pci_dev *pdev = to_pci_dev(xe->drm.dev); @@ -88,6 +104,12 @@ static int pf_enable_vfs(struct xe_device *xe, int num_vfs) if (err < 0) goto failed; + if (IS_DGFX(xe)) { + err = resize_vf_vram_bar(xe, num_vfs); + if (err) + xe_sriov_info(xe, "Failed to set VF LMEM BAR size: %d\n", err); + } + err = pci_enable_sriov(pdev, num_vfs); if (err < 0) goto failed;