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: 14014027 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7D30FC28B2E for ; Wed, 12 Mar 2025 23:00:45 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C607810E7D2; Wed, 12 Mar 2025 23:00:43 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="ZSg0QLXt"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.11]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6338710E7CB; Wed, 12 Mar 2025 23:00:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1741820442; x=1773356442; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=5ccflj1VHcKOfjyrDzXfdAlGhHFlKB+VxPgr21eKYJM=; b=ZSg0QLXtf6dfDQ2rJO5V+DaFL5UQL4+hOrACPkc0zSDeorOk1953c0tc q/bM6cxqMEc39vOmBTDFGy5oVk7DaqJPbPGjsf1y2QHMPND2+nvjc8QnP PmC0+OQOn5I8NqXUYUabJ+7hvcxwwLY1jl8/3718Mw8CU+VTGLvXHGW9N dfZNPWGiIwTU3Bvle8waxCykeyIY8njNgj1fTrJNsiFSGljCYriAwo9/+ fkOxqmx8PShHGlB+5CxIq3TNgOSJY7S009dxL627dzu5xmmjXKhXCdYX3 wXCFoRVP6v0EcuClEQ3coCHzVpTQ9lz/x4J0LOJ3PWyfFz1ujRaHmc12q Q==; X-CSE-ConnectionGUID: UXDApnDwQUuM9xtFco7nOA== X-CSE-MsgGUID: 75UveVrESmaWQADxI+yxNQ== X-IronPort-AV: E=McAfee;i="6700,10204,11371"; a="53571032" X-IronPort-AV: E=Sophos;i="6.14,243,1736841600"; d="scan'208";a="53571032" 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) 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 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" 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? */