From patchwork Thu Mar 20 11:08:50 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: 14023714 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 44595C36000 for ; Thu, 20 Mar 2025 11:09:48 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B17C310E5E8; Thu, 20 Mar 2025 11:09:47 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="lyCL7tFO"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.10]) by gabe.freedesktop.org (Postfix) with ESMTPS id E08A610E5E8; Thu, 20 Mar 2025 11:09:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1742468987; x=1774004987; h=from:to:cc:subject:date:message-id:in-reply-to: references:content-transfer-encoding:mime-version; bh=5xPmGW6vZT3dvZqGhB4QHYZw15uhwdothZz9LmvDgeA=; b=lyCL7tFOI64JISMpvsk4y+uuqHVHr8sNx9koQro1SH65zWKCyEMPXbz7 GALPlFYS+8OCqwvgiQvsUcDuVJ20vbK+3lRnArawYSiHv9uekJ/oirOmA oEEA99v8KVlkDSfD0yxyHYE+ENOvJGCXuqz7w3JhNc5KLoZ6S2sX4eZcu I+PhmLsGVx3vyQVfd2MGS1W0PItmfDIye1sc6c4ucfuoovzC/GTBi5ofb I2XaTtEPGBoHJMhCXdtJShrrlXmfo9B4tSrNv9vnnAsWRcw61woW6w0aH PI0RuSNAgm2AJNIdgIkjpZLW6hBp0MkEZrWQny5GJFz7YJK0XeOQun41L g==; X-CSE-ConnectionGUID: ZNfSBra1RLuaJXcxZUuvug== X-CSE-MsgGUID: mmAmqQp+TSyhgH60Zb0u6g== X-IronPort-AV: E=McAfee;i="6700,10204,11378"; a="55070839" X-IronPort-AV: E=Sophos;i="6.14,261,1736841600"; d="scan'208";a="55070839" Received: from fmviesa002.fm.intel.com ([10.60.135.142]) by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Mar 2025 04:09:47 -0700 X-CSE-ConnectionGUID: LATMQMPDRiKWI3GDu6FoEA== X-CSE-MsgGUID: wmx/RYbiS6mi76Zaj8/zqw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.14,261,1736841600"; d="scan'208";a="146265532" Received: from orsmsx901.amr.corp.intel.com ([10.22.229.23]) by fmviesa002.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Mar 2025 04:09:46 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) 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; Thu, 20 Mar 2025 04:09:46 -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; Thu, 20 Mar 2025 04:09:45 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.42) 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; Thu, 20 Mar 2025 04:09:45 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MkHkgYmeslg6462C3D8Gp600CIai9BRbATA4LlCqhjP4+r+Zpur7JImkD7cvfLwe+Vx6ncxgQExGo3pGUrpsPYabJpbtV3u89CpM4bQ8Hkmw4LOJeF96Ws3ZtWnpIE2me+uyuDV357dZrwonXVbtit/heuPWXGO7Q+wVa3ANBnveQLGYwxkTtnpPN5e1kv44RpopV0hEOqNXdQL0PI2cKBE6D6/BtjVpAEqN14xosAwnO8alAsmQHDT5UKqVhRoE0P1obnSGmA85dG6t3kH0oZbF2t/s+C7y7GjzgJmPyNtZzvrdjGa1Us24cyYJSYzVV7igc75vHspP9TCy0a98Xw== 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=aUPMBI+d4z8hOisADQ3OBoMr7nDKCGRSxyWJUhw22eQ=; b=S8pK0TRg718xIrZZ1/hCDabSRBRzSr03VrhcTmN/SVjTp1jB99rB7ERX5PfQVYQSSn/lzRfANIaaVuQo2qWJ/iO+0Aj2Opt/31ZAqZztFvzPHnfcdpFpQPzcghISwE/HGopAIsCv7dEb8ScKTX8nNvGW2gltFMjl2oWB3arsvMozuSftz7r4XMXBqOB0wLyw4KQe4/5W6NifDbLdIFsKC49mTWWx5CpRiWs/RRsBj6UckDX9mr/b/hHFYzU+viPb5zMalxuRKU3xbHF38S0bpa4Mj37CjlwuNuSnxeKdoWX0b+gv2T8kJuswbcVYup/RUURs0sR/Rt/jCDUIek94YQ== 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 SN7PR11MB6875.namprd11.prod.outlook.com (2603:10b6:806:2a6::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.34; Thu, 20 Mar 2025 11:09:43 +0000 Received: from DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39]) by DM4PR11MB5373.namprd11.prod.outlook.com ([fe80::927a:9c08:26f7:5b39%7]) with mapi id 15.20.8534.036; Thu, 20 Mar 2025 11:09:43 +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 v6 2/6] PCI: Add a helper to convert between VF BAR number and IOV resource Date: Thu, 20 Mar 2025 12:08:50 +0100 Message-ID: <20250320110854.3866284-3-michal.winiarski@intel.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250320110854.3866284-1-michal.winiarski@intel.com> References: <20250320110854.3866284-1-michal.winiarski@intel.com> X-ClientProxiedBy: VI1PR09CA0096.eurprd09.prod.outlook.com (2603:10a6:803:78::19) To DM4PR11MB5373.namprd11.prod.outlook.com (2603:10b6:5:394::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR11MB5373:EE_|SN7PR11MB6875:EE_ X-MS-Office365-Filtering-Correlation-Id: 1d72259e-9b5f-4ad8-110c-08dd679fb79c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?utf-8?q?W5Iwf8EvLFsm3MqC4Udi9rH4tdpFPal?= =?utf-8?q?uW1x/1s7Zb2wFGRb2EU9e+AXiTltKVZMe9oSV8XMvbEjgVbfdpeawM5ldjrlXqlg3?= =?utf-8?q?3cXo52ZoO92DvSvINdO7CXy6Fz4ids4f+XnDnskCfz8oTcNSlUaK3HGF0BEVFtPpT?= =?utf-8?q?9ZIvLaLjga7t2atB3QM72JPiL6kGq5RoJRANOLTASVIfgjI1tTFs7kwAqERFy5lz2?= =?utf-8?q?AepKhcAbYk5iUOMLjwR7rSQiO0IoJVnkFF4RnTQ/shRjdgNfanrrItlxbXU/MfNR/?= =?utf-8?q?P8viGvPHLWpemsFlxrKOCphFvkKoWdhIoRpcut7yJBbzlOyZiQOsYuX7jKeBca7Z0?= =?utf-8?q?SNBP9ibUTyqurQs6UA7IF8bV05/bo6LFISuXFoXy8J55REleZrIdQ2fc7y01kCrYp?= =?utf-8?q?fPPLQ8vRVpAEI6y9BFXVRcivQRGE3PZNEzdSqA+VfD5bUBDQUMKDs8ws0C5vD/DZi?= =?utf-8?q?jy8ht6TvG8YSfKnav1o/4IlHMedCKT7y/Jal0AGacF/bqcl/s/YnA8SPYWl6qESuf?= =?utf-8?q?pENZ7i2hkWFYNE/R9KTtKEHkkSMfJaL3US3mN0AFDDTj8yz6TE0ladtg2wO6vrjDx?= =?utf-8?q?7/rETGSgSX/Nbu+sFBSpMZKMRme3HNfNrRMhdbv1oRs1FFASGDZ3qXmiJi5EHN9S2?= =?utf-8?q?hCv6hLcXZ8SNzSNKSiGJk2/aNYyDZ7t5GHqy7Jk3iA+mCQP8DOPfAti0FRkdShvfX?= =?utf-8?q?U5vB0s4VO9SrW38oQ+zGc4rF3b6NFu5788OeBfdX0u+fiEZooXpnxQoEsJoQYguh7?= =?utf-8?q?hQcs/J/uMlaQ42DzaPqc+ew5Fi+sTChU9hBSTKt+knqQ1+zdRDo6MHiFdhVYWuPK7?= =?utf-8?q?zU9YUBArltoVu61CoB8zAuwoccKLO8ht9uCs4lQBw9TlWHXc20TYtsqrbzpV6cG1a?= =?utf-8?q?NWKI3VGFuzff3N2RBFy/lXiioN+0uIBvoTWE7L0SzhlKWmdTOT/6MezQhDifCyufa?= =?utf-8?q?rIS77EeeN9MLw58xuoBwTP5Fb6hE0xC3cU06JsaMt96LJoVZUCXDVn+gJ0VOuFTTn?= =?utf-8?q?AoNuF92lbfL6VHhgOX82IHPJlJC96Fyobr24rj5iZaJ89AfpCsxHEqBmfnuY6u2ug?= =?utf-8?q?M9DiAsmpOQBssITH2PG0VtJsnxrHe19OS5zNopP3MVkuPILjxk5GKjAx606Nvxccm?= =?utf-8?q?BWATTETHvhHhZI3S/8PJFaV8ki26W19S1suiT83As/BseaEeySoekv5NXHZNxYnad?= =?utf-8?q?qLz7j/T/0+m7cHQUEYF6jvaQAiPEK3fy/IdwWsRl67DOBjct1chZdMyNwLdArwzyV?= =?utf-8?q?JnSNZAE9EUvxrZlRRiqIGjdjg2IWmgDbtIMU5eNIxOdfDQo6gQ3NhEEmftVwDxgbY?= =?utf-8?q?Ch/iIa9fKtmQ?= 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)(376014)(7416014)(1800799024)(366016); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?nGHX+wPJZVIGlVanAej3YG6Gaoa/?= =?utf-8?q?/sFYLd1mrqSW8QFJiZXhpJrp8sCoYdOgcPbU3eiOz783/Ske2+V/q4ZoJjHjDXHJ2?= =?utf-8?q?Dho1NAurn/FGTR3dKwlZeijJ/1XCF8Y6sUAKwRYe8SuD6W/hZ9LbwtvVVhsko8/d6?= =?utf-8?q?ziHGsEhoxLOSFKcNtHqCh2pukowC4Zv60BJ37qS1YMClPfR84lpdSQ+bYjmpx2XEE?= =?utf-8?q?cDbyfsSSmF89+P+pURgZz0rJ51Q5dNc8FO7j1tMZbH3PytKeIHTvByp83BfijHqgy?= =?utf-8?q?6+gCW6RKUvUyJtd+6yhbtyCYspqR2pCX9KTHKIatXpP3riDC0BCkRd9mZz3GOcz7G?= =?utf-8?q?FEboO+Rb5L4kxYyPsmjqrLeaI2Z9AvjZJJwSq1cKuM6wk2hxVBHKmR9t2Tf+9594H?= =?utf-8?q?UhIccmyIuX9S+bL+vtBhU1k939olwJ1SDvRYSJIPg6TSMPOXnUDGQ7zZVoYoYo7Wz?= =?utf-8?q?FVuMWPC2aXQVsdlG57QMhr6k9+9d1dsjNqSJI6BdK2/+87amkxq0bXJqMhzua47NK?= =?utf-8?q?MOLdNn+QrS5yvQPObCARWqwTDlPyYtTpPCi0UpFXMbETrXcF2LqlmU2FVcNkWlePt?= =?utf-8?q?paXkaD6pA7t8mAU9UXxvWyJVe6IynkNn/uqekLo+uxXMbji5RsIX+WfGAnjD9znD0?= =?utf-8?q?/NeIvpgKBWUpDKjBF08Js1b9ZcaUu5zvSWC+OlrJuyPtJr+BxoV/51L4w5/V4Ofxb?= =?utf-8?q?8QqPcdFvmRPHGUzd0S6c6kbRywIAN8e5BZO07xaJmXhSC4tXozEyejRK/C8O3yayk?= =?utf-8?q?iifSX9ZS2B9Q3nv3IU8oNzkC6ORYc/n67MGK2tM88zl5vMCXWTdqXcfLPKDMIpwtD?= =?utf-8?q?KyuVRwh8YDD0lv53Bdw8YFK3R2eeQg1j+enUmUWtGirZSrXrZk/7/oFLyILl96wAy?= =?utf-8?q?xch4SzmxAIHydqEuqkHhfLJcefxMxQrwC+G1Dfa1L9SS9vnJHnfDDM1h+G6/gc90G?= =?utf-8?q?J1EpyYcKWr05FsnMI0IPGrqObhyQTrTvb0/a69k91/vNFQAP1tQ794l5WUDOB6efr?= =?utf-8?q?RIynEGh/6rcB6S7UdN9tWX9l2eiFNLEmDZfbcl9xOetQBXygVsyRwUFGfU7KAHiXy?= =?utf-8?q?pFcTTFNM6Oy98XaRp/NJlXxlRqhHPV2pZ6EmyvhlBlhmwXBH0yAFRKqQO7rfCcas7?= =?utf-8?q?+ra14SyBkOFyUQtVfyn1zcrk4b1YOEyAgyHXS1zg3C8Fm8YzpHRebEqN3RSbjP5dv?= =?utf-8?q?3ZgIdssNFCelDnp5ibw0U9BDkz6HUN865kpcw/ttp2RymujG0YE++Bnf5jzlfCLKl?= =?utf-8?q?SFcHYWEHhh07g488eBFhpwSku7QRB50fstXrZUBqni/My5IjxOcHlUKMPjakuH+8m?= =?utf-8?q?nIZLZwOkvbWkXUHiwq9gjD3yoEYk59aO6RFiMCLh2irjQRXDFxyTfR3GU6OYc9U9J?= =?utf-8?q?z8uYL3djqoeK/zo0XIGUk8Hj69pwi5a4eOFB2lKlQinUWaZ/tUB0VrMEbkv8ZjOIs?= =?utf-8?q?vD4Hm0ZecSYTTy/2r73lPQ6/t0PwjWVxAnF2YPvEwatCE6+sJ+O0hzl34nHtg/P+2?= =?utf-8?q?7HigA7T0UPvCbK0Y8Mg5JWOpER3vLTJJeg=3D=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: 1d72259e-9b5f-4ad8-110c-08dd679fb79c X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2025 11:09:43.6413 (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: tkzYlhnoTKA9FZBcMw62mxG/zvmol5efqhAXPUpFC5CnhEC3RumxR8imdUb3WesVmvmouCjlrxtvVFAeWcYeGB8zZam8I167lJZEGrFZQZE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR11MB6875 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 Acked-by: Christian König --- 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 bf95387993cd5..985ea11339c45 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 @@ -851,7 +853,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; } @@ -913,7 +915,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); @@ -979,7 +981,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 adc54bb2c8b34..f44840ee3c327 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h @@ -693,6 +693,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 @@ -717,6 +726,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 54d6f4fa3ce16..55e91ba1e74a2 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? */