From patchwork Wed Apr 2 14:11:16 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: 14036082 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.20]) (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 41AF8239584; Wed, 2 Apr 2025 14:12:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=198.175.65.20 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743603129; cv=fail; b=nU2TsvEAyXWqIW4smZhz4O4s1Swos2NrLPftl93xM0m062Si/GFmKUPN4CNv0FpS+HFHMfhI27mb5hEpmOMQm6PC3Lvrqi+zzc6zYPEeQlmKReguXfCVD4ZGHZ376PQd28de+Gm1TYFmPXrnKEJ407WE5qcxvxDb8QbngfE0Sy4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743603129; c=relaxed/simple; bh=4g1mXxS1UnrkeyGG03/I6qOwewcYytI6aBo/gt50ano=; h=From:To:CC:Subject:Date:Message-ID:Content-Type:MIME-Version; b=BCS0LKkaL9Te9aORjoNkenC6rCOzAEWDAfe+KnkLSUafDonhf9vxPbhozxkFqmlAy0PD1m0KOTaaI6HRLEOxSVlFJDXv3JU+gWKPF8xsdhSCz/Bb79Re9DJfKxx36Aoq5wYkkRgxNxQNoAcQcUJGL+0qSYEEIIoiZ59CwWDaEEY= 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=TxscjTEx; arc=fail smtp.client-ip=198.175.65.20 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="TxscjTEx" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1743603127; x=1775139127; h=from:to:cc:subject:date:message-id: content-transfer-encoding:mime-version; bh=4g1mXxS1UnrkeyGG03/I6qOwewcYytI6aBo/gt50ano=; b=TxscjTExnZgXehN9dx5KvwH+eH176QIriNCNayjSATz8JIny5PRa6s3t xbJkrVhpSPMj/EbLkYqgy7Yd7FSDTv39JtjZnVd2s46PNyK/psF3a2hqY i4CYGZcJXN1eL84LlZ1yNsOH0fJ8oK+vJz7//Ya24deY4D1UvQL4qgVcL lIR7MbDcYEmsXAOBsVBC8k5m1k4IZhECd1fGckVQDnQnOW5Tr205ecwL/ J4BQNL9R2BuMkQjRxE3BRGZZ8pAylGgDwv7HKwFw4CzlYKbVFEBEpIKNn WiYsjGfBtmAmyVCqKV20hGdVSGb2BDSOMZO1czlYkQZW8sgxS2rgGG5sT w==; X-CSE-ConnectionGUID: Q/iXY5FaQF6AL074F0Xr4w== X-CSE-MsgGUID: 7gD/6jN8TsKbmHgb4aAzTg== X-IronPort-AV: E=McAfee;i="6700,10204,11392"; a="44677128" X-IronPort-AV: E=Sophos;i="6.15,182,1739865600"; d="scan'208";a="44677128" Received: from orviesa008.jf.intel.com ([10.64.159.148]) by orvoesa112.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Apr 2025 07:12:04 -0700 X-CSE-ConnectionGUID: XCy/7D3bTPmDKdAC/KLNPg== X-CSE-MsgGUID: 8mn3qrd6Sw+MmhENbZS0sQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,182,1739865600"; d="scan'208";a="127620411" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orviesa008.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 02 Apr 2025 07:12:03 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) 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; Wed, 2 Apr 2025 07:12:02 -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, 2 Apr 2025 07:12:02 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.169) 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, 2 Apr 2025 07:12:01 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jc7lz6WkwJYNDBsvd2e2uOO593Ya/2IUXy2O4ZXEXArUgd459tmkNmByQhCLWfx8EDaqIAvwSDwqNT/IVPEDpmyyQYroRva3uUBGstLgddjpLsBkfPeh15mMKm0KYqQOfApwrr759uycjvuudChAvs3VrJ+a6zeXq5A3xyImVPpL5E+F+VvT0v7lcwfEmFXSmxltKYgjMTRNUoFbKX7kQkjHSH9jb32CegKrdaafXyC6IfSNm6HNqEGpGRkJuC5o2VJrJ6/KqpVzsjCT0kYj4E06Xhz5drIV8RN6rKJg3MH4LhsjA6UR6sYRDjyo0WC6atefy+n6uwNKjslrb2wTfA== 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=MjY325o6EIxc0M4imdLhGWOR8hLsO4zfRLH7PKZQjAY=; b=Emq2jyVZVc15nmesrYMmhSF3aQfQ29r9w1k0deyehRizcN8fQ7At7S6f6dpnxClNK+tMRYSlLW9J0tLVbxcvLDXMWD2RUAFL8sizEugsTSCf1MKbmaWDe1M1Tj4+E+pRhH7fxBvyLNwujqq02c9+KnSJTJrdvgtzgIeUtEjns31r4pqlz71RY8i21bjwLItvQs4DzXty8/SL38G23eUOj1XUDVwgiSDjg6XOowddONPjo3PZ/ubXitSd7wm3UwvV4YZf4hfiCNG400NLd2VHafYZHm92UHvtxdP5tnE0s44BHzXIMOFfDgyKAbB8hEDNzFiP3lc489iM56X0h4MQjg== 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 SJ0PR11MB5213.namprd11.prod.outlook.com (2603:10b6:a03:2da::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.48; Wed, 2 Apr 2025 14:11: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%4]) with mapi id 15.20.8583.041; Wed, 2 Apr 2025 14:11: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 v7 0/6] PCI: VF resizable BAR Date: Wed, 2 Apr 2025 16:11:16 +0200 Message-ID: <20250402141122.2818478-1-michal.winiarski@intel.com> X-Mailer: git-send-email 2.49.0 X-ClientProxiedBy: VI1PR09CA0108.eurprd09.prod.outlook.com (2603:10a6:803:78::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_|SJ0PR11MB5213:EE_ X-MS-Office365-Filtering-Correlation-Id: c5cc71d4-38dc-46a1-2262-08dd71f044fa X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|1800799024|366016|376014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?jHPJp8Z1PgFi1PV8XBHCUBwmhinKrIz?= =?utf-8?q?SUKYnkgL6wLpgPeH2csRgBeTAsT//PbMTWfVeOI/WOwzEJOv91pTesv7L8nUEwwFT?= =?utf-8?q?Cud2IuaBODDIdFMGkzZ0oBGS0LG68n1k3MkCx0CVkmHrl5Ije8GouN10AMsGn/GZn?= =?utf-8?q?JLaP3dyR2/gmPAIhIrMrwjnvrDYQiOWn/X+2NfbQGhwLI8wbvrKrEF4MaYa1GWhyg?= =?utf-8?q?RTPFLD6N5mPKCam8WiyZLej0go8bJRmGVdtYut0E4BE09oC/jWwiFGPeHtSj9AI56?= =?utf-8?q?Pq29DY4Xax4scdxk7CNwEZAAk1N2YjxrxhmISjrvpp5LUyOd+vU/xHKkGWSymgfgO?= =?utf-8?q?ACqGnKaY4KhzfZmC+GI12tb5Uw8Gkq2Gq3xSzwlIsLf7gebW9jW2a8qcmDYEdiGtm?= =?utf-8?q?1wHPoXWeYQpGc66Xc831avP+o+y3X2TiBnCi3dEE/KYMIiJXWQdg2QJ7etOh3hUee?= =?utf-8?q?+HcxFInVqk2uBbnDnfOc1tPPHEGdLBkLP9zh8iBrRPeR1jh8GAbZrzpc/ySVZdXVf?= =?utf-8?q?xL+Y9rgZvcG0nxUJU8JVF/BNN5PAacNfkgEtWrzitYx9LPJxnArjbShdAk8KMwUdY?= =?utf-8?q?oNDc1Lwjsm/1ezA8EnceUYt6H41pPW6bfB5H7d71JGTOcqqLbKQsFAWmTeheFHP+C?= =?utf-8?q?gzS9TAs0YQQZKofQDH8JDGA8Y9QdCMdLsz372Knd3oS/H5EpwtWm/cHmWcViai8LY?= =?utf-8?q?fjecomvcN/OB/iwocGECmfcPuoM/M5N4GxD4aXjF/373k9wBLX0sAXVEkI+tQf40z?= =?utf-8?q?2zQFJd+p8QUEITTWrILPY99Q7WCntdZv1nUaxfcqO0n/azlEohfCXq8J7NijAHD01?= =?utf-8?q?BMSqtEhRYa9oVvkucAcQf56m+/EcOI8tWz92wvCJ2f6cXirgc/TFJ3bVel7A4CrLe?= =?utf-8?q?FRDl44BfWMJKjvwNn+AvBDJaValNdiwAj2efbuG2dtAzKkRUh0P9Co+RoWifJZPjc?= =?utf-8?q?84PXKtB711ZFZr/5rFhgIw0aVkP2Hv/J4Y+y2Rcc8jP8AcBNxI7poJM5NoVo2I076?= =?utf-8?q?vDxvU/eoquJVlgUtKzhvpWFfXLKFCZlG2UA7aCb2r0EOUNX4k7k+l4W4EdpxWHCmK?= =?utf-8?q?NLwbEX58NhtG7EH5814OM67l+CSdErE+Jymqs3lEnxdOJM/jewL/fxFW0NH0hP8vA?= =?utf-8?q?cG93wVm6EOZgdpt7GvbzPAw+qhgdVkJqJcphnyOfBNQ6krhqzf0tM8G3JzJMpVgJh?= =?utf-8?q?47CZ8kjEUmbYUyfLe3nmgI54Zq9ijmxyZhXZKBzyrfRyd81l65Pb9mOOlJx2SAKsL?= =?utf-8?q?xYzWLXTkBa1BZBOTaC6uqIKAQPrHKArOUGEei7er+K6opTYJlI0QGS/rEJUUnyu43?= =?utf-8?q?bFPYSjR6YPYk?= 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)(7416014)(1800799024)(366016)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?QwUs9oirNBYxAILwOCDzoi3S380R?= =?utf-8?q?7SZnwg1wgzFHu81BcEaLAL0/n8OyKo5zljTrm43mqLhM5lRsfYlyRZ26CeKwpP834?= =?utf-8?q?Ch8NePzLqK9J37lxkCoThcUbBkRNb37ohyzyBVo/oP5uSyL9suWo4Cce4dx+6Mqzf?= =?utf-8?q?SA3H5QJmYESPRNy53+9HzAEOBtB1rEdAL9lShjcrARorDlEwKiTVUBn1U1KXdKnMY?= =?utf-8?q?Ygj2NmzCxd/hJ5P5BUnnisyt0chb5OKyitI+bZoCF4Qd9lWZqMyQWWGzqYhT2Szbt?= =?utf-8?q?OaKA7iFkGUSm+CqiOz74YrNXoVvVTqmrq2+vqif1vUd+9JlpdZyXBCrEWaIqbELoS?= =?utf-8?q?fEJdw2E+a9ksEoMUf4GBjKchwACn7x3iXFxfDiZDD+gfxFCkO4/sn3a63K14oqv9N?= =?utf-8?q?iy0YYR+T1JGeYGzxah2MHfMSrt7pKSaRxWP0ZTWxv9vqA9em5iF4AJN6q31C2iDqw?= =?utf-8?q?//imVNf9+wXacX+KC2aY6UsldC7+ibJsd7FTGulhENBtQP91Ak3/G2xqibFwlpk1W?= =?utf-8?q?k2t05LuKiL4H4CQORCkDHz/Da4VhrKQ3rWv1U1jdkklHKBpHwuswo8Yk21WLeq1Ce?= =?utf-8?q?eO088PkU/MUfowBFGlDvJ6BgiIg3gzbXFzAXFu/4FDd1BDmhHGYgHMr3YOBYMxPVD?= =?utf-8?q?6p8Z0HLzIBIFZiZyVXc8QmutjZIR7Qp0t8g2byzgAvncAwadUzaj/VH9m8QISnP3Z?= =?utf-8?q?X42OIWrObHnsv+T6E81cM2CotNv3dD3Je7AJrIZmUMlK9m772vWxp/qqLGrIWgxOw?= =?utf-8?q?8pNbp6RmmASUwD/eXmkdcqPpWnAqiPIiT0HdS8UzZKA6Gi8dz5QZ9GjrpK03y2PU8?= =?utf-8?q?zj0UqEvNjGuvt1KU1HxTuTApAVfoPj8rFxFV4GJAmqltwB/FDoklOTEdUaGGjTwLV?= =?utf-8?q?HyXAhm+56gX6NY4UHi+aQaxCK8Vcl95Ks2JQXRQBCRD5CWbn/CORmsI6ti1RtVOGN?= =?utf-8?q?6Gf5zG7p0ZriM+EhORNjvcqTQHSlp7/6Wo9xbXz1kOZvqb59/QXDimpQQ/m7wbhEq?= =?utf-8?q?1VJ3bagIb1vOQ7Ca0TFHHsmwtBcHju2psm44gbQJYd568wc14cjX8SLpTMt/KFUen?= =?utf-8?q?hlKaUiA14NB4TVStIEGXBSrjVKa3/V9nOvqPomSB8kpd8W5RYUSM9JvEXAN5QhhdW?= =?utf-8?q?M+BC1lU7V1FNHvR2KRqt8Cz2XrBa4l3YBYnJ74tk1hCadJFhc88EUpBxSRnjAWmCu?= =?utf-8?q?YZo6AEGdRDpW3iDNOalfKwhcYeb+nLRe9YJGfxaxKfU/EE8x/F+3TEPKR6A5/iDkT?= =?utf-8?q?zSQ1D/x+hO1roxewaQX4vK6d24X5+QKj2qb58Gjid1qOcPppYx/OmYaJL3wsCgqqm?= =?utf-8?q?He0nVRY6wrtiNCo3KbC5Q07yMoRhSGQbBeWluyyUFGyV3F4oaqFOjLmiVXbIeKAII?= =?utf-8?q?3y4FMQPktM81QUJfdKqNCASfiP9I94hBQUt2Brj1tT/KG+0APIebN1Gh1P1i/UDAp?= =?utf-8?q?+VfsJaPLehgKedj+jUjsv2Bm1oTOYpAHZto+4j94KyfqfkPtzCoRYJqqig8ytNczS?= =?utf-8?q?WBfA9AjrE/TXrozkSeGLoJsjdktYrZMpGg=3D=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: c5cc71d4-38dc-46a1-2262-08dd71f044fa X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2025 14:11:32.2985 (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: RwpbR8AZjVoFz3TN1NROj4BphMWcFOFINpqZhzzQVYLGeygVsy09rZdV+qVaa3rIVpjHiQ1B2WtJJvHgg9eLP9rewfZqv75GXGG1tysmoDk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB5213 X-OriginatorOrg: intel.com Hi, Another revision after the feedback from Ilpo. Few tweaks here and there, the biggest change is the removal of the loop in pci_iov_vf_bar_get_sizes(). v6 can be found here: https://lore.kernel.org/linux-pci/20250320110854.3866284-1-michal.winiarski@intel.com/ For regular BAR, drivers can use pci_resize_resource to resize it to the desired size provided that it is supported by the hardware, which the driver can query using pci_rebar_get_possible_sizes. This series expands the API to work with IOV BAR as well. It also adds the additional API for drivers to change the VF BAR size without resizing the entire underlying reservation (within the original resource boundary). Thanks, -Michał v6 -> v7: - Eliminate the loop in pci_iov_vf_bar_get_sizes() (Ilpo) - Use helper variable for indexes (Ilpo) - Kerneldoc formatting (Ilpo) - Refer to latest PCI spec (Ilpo) - Commit message wording (Ilpo) v5 -> v6: - Rebased on latest pci/next - Cache the VF resizable BAR capability position to avoid multiple lookups (Ilpo) - Use pci_resource_n helper (Ilpo) v4 -> v5: - Rename pci_resource_to/from_iov helpers and add WARN if called without CONFIG_PCI_IOV (Ilpo) - Reword kerneldoc for pci_iov_vf_bar_get_sizes (Bjorn) - Reword commit message for VF BAR size check, extract the additional size check to separate conditional (Bjorn) v3 -> v4: - Change the approach to extending the BAR (Christian) - Tidy the commit messages, use 80 line limit where necessary (Bjorn) - Add kerneldocs to exported functions (Bjorn) - Add pci_resource_to_iov() / pci_resource_from_iov() helpers (Ilpo) - Use FIELD_GET(), tidy whitespace (Ilpo) v2 -> v3: - Extract introducing pci_resource_is_iov to separate commit and use it elsewhere in PCI subsystem (Christian) - Extract restoring VF rebar state to separate commit (Christian) - Reorganize memory decoding check (Christian) - Don't use dev_WARN (Ilpo) - Fix build without CONFIG_PCI_IOV (CI) v1 -> v2: - Add pci_iov_resource_extend() and usage in Xe driver - Reduce the number of ifdefs (Christian) - Drop patch 2/2 from v1 (Christian) - Add a helper to avoid upsetting static analysis tools (Krzysztof) Michał Winiarski (6): PCI/IOV: Restore VF resizable BAR state after reset PCI: Add a helper to convert between VF BAR number and IOV resource PCI: Allow IOV resources to be resized in pci_resize_resource() PCI/IOV: Check that VF BAR fits within the reservation PCI: Allow drivers to control VF BAR size drm/xe/pf: Set VF LMEM BAR size drivers/gpu/drm/xe/regs/xe_bars.h | 1 + drivers/gpu/drm/xe/xe_pci_sriov.c | 22 +++++ drivers/pci/iov.c | 149 +++++++++++++++++++++++++++--- drivers/pci/pci.c | 10 +- drivers/pci/pci.h | 29 ++++++ drivers/pci/setup-bus.c | 3 +- drivers/pci/setup-res.c | 35 ++++++- include/linux/pci.h | 6 ++ include/uapi/linux/pci_regs.h | 9 ++ 9 files changed, 246 insertions(+), 18 deletions(-)