From nobody Wed Dec 17 10:49:46 2025 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011061.outbound.protection.outlook.com [52.101.65.61]) (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 C53E42FCBEB; Wed, 15 Oct 2025 15:27:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.61 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760542077; cv=fail; b=DnNiCCewehpVDjDBT4hCHb56zyWGZSgDZTEveZaKoeClHivO7UcJZDTXzjOv9WweigQYt5D31Y5QzBfMBh03rWgOTKEL7D8TrsORnLcFt/fCPFx9ltz+ByJB5zv8OC8w7wHt2qwSkmrFKhNf9C2vRSSok2kiBgXJ7DxyY4OFEqo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760542077; c=relaxed/simple; bh=pzLcGLIsPRWguor8y1/TSOPrkBJvAnX7+40O3Kn5TDY=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=ZyTGxSNh667W2j28zuGSxOjRtrAcSpKDpXe4IwLakBK7wtwNnO1gnogmgqPXENf3OSQxJLHx8pInnVOzdZCxbsaxJqiZp3nFfDqnQgYRIU61h8ROWYZBiOnNovl0Nu1tddeTrKDwClfTq9ddqJL5Ab6FIXPoOz0IVZNt32EC71Y= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=BoCr2Drx; arc=fail smtp.client-ip=52.101.65.61 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="BoCr2Drx" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=a0MPcV6uxGprr+T4kHdUZqBl9RThLmQ2i9IPUGHvr/VDisVIXCSAHgb4bc8GKYAiIeeqg1WZBuAoFfv3p+890ljGev5VlTCE9gXRWboGk8+BDd3GjRTDxFJI2a/e5M31GTH44YapDiusIMOC6Ob5w5A2rCPUSPEmD+wfh+HeNPcgpiG3aWAN8NwkVU69P19qOoawZLw2PRfC2b9CDEDcZdbYaP8PLlQVG0kYi5iiiIB1jrKdYJJem3qkS/rTX7sgAr1BQSsVvkihT4MfAG/Fbb8hNPjKTPE03pwQFxouradWdzkhrcZ0rYmK5CTIQiOcjXd2P9U5zXE9WN6OcCA5LA== 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=3gZrYiWqtpd9/KrCTTrkyrQLR1Og3EO7JmzTqwHlFyc=; b=rCIU86nQz0hrCORIHZ5kn60VHQhBQe0n7uuHwed52X4QaRam9UfIRArpALmyl1770FgW68yqt9HF0BZdHI6n/2Q3KV6gFGWnjlFIVx62VonIeTXdw4KYq9jRO2HEAu1B4f4dF4BGiCQAhxx5JTwt4wdm5L+qfwaZx2+3y1KHsKSPOLrIUGk+y1SOnsGKIEXjZ0er/JznnPgMc93df9pjpEBxmaIG9fUQVPbtePp8slFpqmJCELXcEQVm80JSiAHnjIV4kvwp18+7cvVEvRzJBEb9OWGvs82lV71ismZby9rxqYkISVR3uzvJn729q3u3jrAG4PLSntgDszXi44GKIg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3gZrYiWqtpd9/KrCTTrkyrQLR1Og3EO7JmzTqwHlFyc=; b=BoCr2Drxyz35/n9nUJ0ddVl2TPYB8bRgzYo6WyfhxPFxGBE6aG0ZBIPLqgAkYxhgsFe+TIOjNy2aaWs1BGGmyiVE3QhrfLVYAlPYAP7i4+zGX2UINvle8ILV8/RtydHh0xL2dbzrsMHPbKt1TOIKYtds12DlFVxbXUujcX30pslOvPUPlJyr7C6a7mTf7pPq4pY1mjPR+/qNz58mzn2/BP+/yLz7TSykawtA5mU5K6SPkTFCoJjQXR5kKpGBk7UVNbQ+TyselAjqTWJZPzX/EpirzRQsoZlYXQhmG9LUzmc/ULJ2HfE4jPHeBj62CYi2M0KLDP6cSg2arMCZ/UPgSA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXSPRMB0053.eurprd04.prod.outlook.com (2603:10a6:102:23f::21) by AM0PR04MB6993.eurprd04.prod.outlook.com (2603:10a6:208:17d::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.10; Wed, 15 Oct 2025 15:27:50 +0000 Received: from PAXSPRMB0053.eurprd04.prod.outlook.com ([fe80::504f:2a06:4579:5f15]) by PAXSPRMB0053.eurprd04.prod.outlook.com ([fe80::504f:2a06:4579:5f15%6]) with mapi id 15.20.9228.010; Wed, 15 Oct 2025 15:27:50 +0000 From: Frank Li Date: Wed, 15 Oct 2025 11:27:28 -0400 Subject: [PATCH v6 1/4] PCI: endpoint: Rename aligned_size to mem_size Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251015-vntb_msi_doorbell-v6-1-9230298b1910@nxp.com> References: <20251015-vntb_msi_doorbell-v6-0-9230298b1910@nxp.com> In-Reply-To: <20251015-vntb_msi_doorbell-v6-0-9230298b1910@nxp.com> To: Manivannan Sadhasivam , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Jon Mason , Dave Jiang , Allen Hubbe Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, ntb@lists.linux.dev, imx@lists.linux.dev, Frank Li , Niklas Cassel X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1760542064; l=3769; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=pzLcGLIsPRWguor8y1/TSOPrkBJvAnX7+40O3Kn5TDY=; b=fyUZuxRJgcW5hZntNyhw2vCGIPt0d+VfTDXTzSBTYX0WnZprQIOOCK41vo3HHt7/IDN0euITo zXASBUHrzLLC7x83MWX6ePY2r32AygrC2lX0ofRZeEgd3bpFQADKlnm X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BY3PR04CA0007.namprd04.prod.outlook.com (2603:10b6:a03:217::12) To PAXSPRMB0053.eurprd04.prod.outlook.com (2603:10a6:102:23f::21) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXSPRMB0053:EE_|AM0PR04MB6993:EE_ X-MS-Office365-Filtering-Correlation-Id: 8c5dafa5-5cea-4223-c98a-08de0bff671d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|376014|7416014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?cXNVWThmWGtUSUt5UTFxN2VtdTZibDVmS2RnbU14NWtSSVhmYXZnUklic1R0?= =?utf-8?B?Ynl2SGFZdkE5STM0UFpuY2JobU4xYUZXc2hkL1RCSG82WUFtYnJmcFFMSklF?= =?utf-8?B?NXRuZVZRVUF0QktQZ0dkUWhrTjM0MWlHU3VlWi9pa29GQWJRQlpWS2MrSSto?= =?utf-8?B?U3NVQjZtaTV1b04yWG8wdzE3Nm0wUklRWWUvcGQyVmtMWkJlajdVWmxqUkZp?= =?utf-8?B?QUpyeXBVV3lsYm1MVjl1cHd6WkI3dXJDVlFURGtLbDBna1djdHhDYjhPQUJM?= =?utf-8?B?WmVDQ1pPTGdXV0tIdGxmSTdtZHE4N1c3WXR5UkdhQlRCajFXN2sxUG1DM0lP?= =?utf-8?B?eU1zRUM4MHNONGlTUStmZ0x1Rit6UVhZcHF1bW9FOWRsaDMrYUtVTjJuWE5X?= =?utf-8?B?eHp4VmVzYlQxRlB4YmNZL3V6eDFWYm1PV2VmNHRpZVFxRW1wVWdTaE0vQWt4?= =?utf-8?B?MndndUtmUTNrRkwzRVlnR1QwblZkY0tGWUFyNWxDK1kyTGd3SkJlYndZQ09h?= =?utf-8?B?VHFQeUh2a1Y1WFB1MWFRcGp0dFhXTmZjZDU5amVZS2dybVBrNVBxOHc1aDk1?= =?utf-8?B?UGhqZFcyVmRUZUt3TTJVVmlUWmJCOHpHb0pJUUlhcTZwek1GZXEwemt1aDEv?= =?utf-8?B?YndyR2hiQTZYWnZVNTlxQmEva0hoZjhWRzJKeU9KVUpJTkRnK3o0V3lUbi9E?= =?utf-8?B?QUtYT0c3UFhNWk9mNjlLUGlCMXA5RjBFNGRqSGVSbkpYNWNFRm1UeUtBb2Rj?= =?utf-8?B?Q1hkajRHMXFaYU9xWGJZSTNIQTdWdngyODhVVE5VK0pmT256ckROU2ROR0RS?= =?utf-8?B?aHpMKzgvOXV6Kzg3aDZpdDBSbUlIVWtKdllDS0NkN3RCNjFId2FjVmZva0cz?= =?utf-8?B?N1FEQzVGQlZua0F3ZFJyQ1IwNFQ0cjNYWmtVWjA4cGE4MXZRWUhEc2FNVkVQ?= =?utf-8?B?cEZzMDdlcEhmUWdCenJQblRwSmpocHM0ZHJxMGpqcTdVZG0xSkVxaHljaTBL?= =?utf-8?B?UG9RYUZDWDcyb0dUUnNCTm1oZUU2VmJEY3RYYlJnUWR2UW1sajZscmprby8x?= =?utf-8?B?Q2dFWm9tdk9VVUtrZlU1R0p6RnQyV0wzb3YxTzl2ODQ0RzZsUWNPMjBYTS9n?= =?utf-8?B?MElnSnZOS2ZodGMxRGxzQ3hnSDM0b0JPQnJoL3JrTDlDVURjZFJ4cWhyQ2ds?= =?utf-8?B?ZkIweXB5VnFZVkI4ZzRmVENab1AvSFkxaDdiNk42b1M2SUVOMk45SXdHRVZI?= =?utf-8?B?ZTJ1OHc3QXV2aXB2d3FCc1B3T25Zd1hmcHlVQ3hKdWFpeHZNcXoyd2pQQ3R3?= =?utf-8?B?Rkg0MUkwNFJvMFFFU005RnZxem01SVhWbURjc2FoTURxRTdWL1ZQQkFyQWhK?= =?utf-8?B?cEdGTFRBdVZMM21ycWtveVM1dnFOVGVMZnFSMndtdXZ4SDVMMjRtWkV4Uy9O?= =?utf-8?B?bHZtQTdBbm9MVGYrUjUxSUFKTkdGSld6MkxsMHplNzd3M0V2VG5qeWkyYW1L?= =?utf-8?B?V0VxR3lGT2xaT1hhWXdKZWV4TkJTR2pvKzRObEZYOUo3bUtBSE9OUDNKV1lU?= =?utf-8?B?YTlVaUwrRHg1V1I2K1JrWjNaeDBGb05qTmhpdnpsMDVwY0d4S1FYRXZkYXRV?= =?utf-8?B?eU02UnQ3RFZtaHd0Ui9IWU1ZZy9IYUY5bTJiRGJmYVhOOEVsdHRMWEs4amhZ?= =?utf-8?B?VGVzY3BvZ0ZSVktGTkhicG15Z1EzZHg1TnFiVzBORHl1TXRoSUpZZ1h3bHBp?= =?utf-8?B?RnB3czZwN1E3YkI3VlY4OFpCSVE3UDFMOHpvU2pwMmhZWm4xN05rQkxFbmFu?= =?utf-8?B?T3VsWDM5ZmNzUHZQZTdscURrTDJDY2NLU1l6dlk5MGdrNjBhM1VFMzJOOE84?= =?utf-8?B?Y3EvcDBVOEU5RE9ZTHIvNk9IS0VvZGpRZDhjc0lZOVQ1RG5EUk92QzhpK1Bq?= =?utf-8?B?dzVjUXo1ZVRYeWYrWUpCR2E3SXNjUmFkT3FhLzBnNmRpN2tiNHNRWExySk9h?= =?utf-8?B?d2Urbm5WaEUya2tJMTBpLzRnNUExTlk0WFIxb2hlMGduVE5HaHpBdVlrM3NS?= =?utf-8?Q?BYUlO8?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXSPRMB0053.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(376014)(7416014)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZEhoS1VNNnFyRXU0SHllaFBiSjFpQzNJUEdTc3UwZnhjNmxtQWpPK2x5MGRX?= =?utf-8?B?OGd2NGhRY3FxRGJWN3VVRkwrTGRzYXVZdlR6TjlCZTBiN1ZrSkhSbXlMaGQ1?= =?utf-8?B?L1c0L0lCMkh6bmF5aWJnWXl2bUF4MTZVemgyNW1wTHdxN0prTFcyQ3VwVlZD?= =?utf-8?B?MlJwU1lsZW5iWW9yZE9EVzVmTS95djA5NEVtZHZPc1h2TW5uTmJhdmtEbm9R?= =?utf-8?B?akpWWWtpQmZuN2dJSHpzMW9SNXhIbWNSY056MVRZb3luMnN0SzFtQVFvNEhx?= =?utf-8?B?NVIxbmZxZHRVd0dROG9QQ0IvdFhiUmxuYmlxZjkyWlVYMnlTT0tNczVZcURl?= =?utf-8?B?TmpMZ0UwRjhxaGVUaFBUbnkzOXU2Y1pOaFlJZVdhS3F5cU5hSlk4L3hqeUps?= =?utf-8?B?MWRsT3RRYTRVUEdjZFB3dVFTUCtaMngrSTZLazlQTVdDZlJxREdrVFpsNlBB?= =?utf-8?B?RXZ0L0xKUXV6WlVjN2JaUHZyelZZZHcrcmRFTnVZQzZuZFhNVy9RU3VqWHg3?= =?utf-8?B?REN6NkEwK2ZxYk40ZlE0eE1XMHNlSUN6empPUE5LZGJzTlZtQksrTUNoZDhw?= =?utf-8?B?Rm9ZYVRTbmxla0orU2hxeUdqTnlZcHhDcGxlcnBGdG44LytEQmcxZDUrbnEv?= =?utf-8?B?Yk9hZUkwc243ZEloY2wwRnMxSEg0OEYvQW81UVQ0WEVJdUgvOWxsV2M2eEls?= =?utf-8?B?bEs5RkVMaWFlUHZRekk3bnVEVXhsa1hUeTFpRGFQMFgzMUlOSmErTXNlejE0?= =?utf-8?B?OUlkdVdFR1Arb0lNMDh0WkQ0WnVaaTBKanBLeDhxamdWNGRlakU0dy9Pb2RT?= =?utf-8?B?U0xTcVYrdFRKbWlRZzRjTmJrbFZ1MjZBQU9FZmRwd2V0em5iVytuL3Yzbm5G?= =?utf-8?B?QTh4cnhnNVVkTmlIckN3aGpSODUybVd1OEFBRkh0WjQ2aGdoNTRHZ2cwZUVa?= =?utf-8?B?U1IyVVFWaVJGWWM3a01UK1Vrc0ViZytxNHlDZlQweFhHa3hNV2ZTbDVhYWF0?= =?utf-8?B?SkpFbTJvNE9UTTFWR3F0TXJzbW5PcnoxTUVsU1NhSXZvTzJIMmlqSVBybms4?= =?utf-8?B?RkowNWRTanBvWE1ON2JtckwvQlJEb2thcWwxWVgzUlB6emxIYUhac0grYncx?= =?utf-8?B?Tk10dDhVTHpTZkEwOGNFUEhQWlltalRKVXU2dkVJdXVoVEdVNEU2dmw3NW1O?= =?utf-8?B?ZXZSc1VDNkZqbWJpSDZvUGoyd0E5ekRUbmdDTy9pbncyTHFKWG9TK2crK0V2?= =?utf-8?B?dXVZd01CVUh3MytjVjA1TGR4aEdOeFNYQndzTlhicDVnSUNscFdlOC92SjBU?= =?utf-8?B?TkZTTEtXTXBiVyszcUNJUUVLSXlIZVhGMXlCNndyZTVSMVhxRGFxZkp6SEpC?= =?utf-8?B?eFpvd1FLMkZJT1Y1c0VPdk9aYjdJRW5NSWdjVG91ei9CWFNLd2hTL0dnSEt0?= =?utf-8?B?MnRpay9aOXArYzRUYnB0QU9nOWJ6Vnllclp6Mm4wVkdIYVM0bk1OL3ErdWRI?= =?utf-8?B?YWJiOHMwZUZyNFRQWXB5RHhlZWE5R0VpRzYrNDJVYTM2WUNhV0tzaTJydlJ5?= =?utf-8?B?VGJOOXMzWVZZcGdCT2lnWHorZys3RGdHR0c5UTFqZkF4d01KTTR4dWtsSHJm?= =?utf-8?B?eUhsWTlxZVVyNkRscW5seXRXV25HVE5zNlFnQll5ZGVQZ2pRZXZtck4xQlY5?= =?utf-8?B?MVh1cVNGS25yUmUzQktyUjlFWnZpdDBiQ2dheUp5bTJ5c1gyK3VFelArSEdj?= =?utf-8?B?QlB5SVlBdDF1clFQLzRMU093ZnkxZDl4ZmxHMVg2VW5BQzJxK2huSHhtbkxy?= =?utf-8?B?ajg0aENVcVZSTzlQUWxTQ1AvdUNLV3RUdnEwQW5jSCtOdXIvSUlFY3VJcXNv?= =?utf-8?B?RUNOOVVNdFNob3pYVzAyd1dPejhZNnBRdnN6QnJDU2piOTVxZkVKZlF3ZmI5?= =?utf-8?B?OSs3SlVMV0dBN1JRc21SNlgrb0M1UFZrZENJamhBWTRQL2Y1QXluQjNyaDZI?= =?utf-8?B?VGFBa3VPRnhReXI2Z0RVSktVd2NqTnVPQURaQStjcEJkbzVWcVl4bjhDQm1v?= =?utf-8?B?d0tsbUREOWFjak5TVUtma3hRV3pPTjJRN2t4MHVIU215aDFvbXZCRVUxVGor?= =?utf-8?Q?Wp5WQK03kySqkZH8BNagso7T1?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8c5dafa5-5cea-4223-c98a-08de0bff671d X-MS-Exchange-CrossTenant-AuthSource: PAXSPRMB0053.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Oct 2025 15:27:50.8860 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: jNAKtYXZ1qB2McUoH810kwxJXAwrd7ianC6YlfWrLrPcOBhViiTxR1N81Lf/+a7kMqYoo/0HMv1e7PNDML3hmg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB6993 Rename the variable aligned_size to mem_size to better reflect its purpose. 'aligned_size' was misleading, as it actually represents the backing memory size allocated for the BAR rather than an alignment value. Reviewed-by: Niklas Cassel Signed-off-by: Frank Li --- change in v5 - new patch --- drivers/pci/endpoint/pci-epf-core.c | 12 ++++++------ include/linux/pci-epf.h | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/pci/endpoint/pci-epf-core.c b/drivers/pci/endpoint/pci= -epf-core.c index d54e18872aefc07c655c94c104a347328ff7a432..214e3f6e6d0d5a216c3469b8ff4= 7908414cd1286 100644 --- a/drivers/pci/endpoint/pci-epf-core.c +++ b/drivers/pci/endpoint/pci-epf-core.c @@ -236,13 +236,13 @@ void pci_epf_free_space(struct pci_epf *epf, void *ad= dr, enum pci_barno bar, } =20 dev =3D epc->dev.parent; - dma_free_coherent(dev, epf_bar[bar].aligned_size, addr, + dma_free_coherent(dev, epf_bar[bar].mem_size, addr, epf_bar[bar].phys_addr); =20 epf_bar[bar].phys_addr =3D 0; epf_bar[bar].addr =3D NULL; epf_bar[bar].size =3D 0; - epf_bar[bar].aligned_size =3D 0; + epf_bar[bar].mem_size =3D 0; epf_bar[bar].barno =3D 0; epf_bar[bar].flags =3D 0; } @@ -265,7 +265,7 @@ void *pci_epf_alloc_space(struct pci_epf *epf, size_t s= ize, enum pci_barno bar, enum pci_epc_interface_type type) { u64 bar_fixed_size =3D epc_features->bar[bar].fixed_size; - size_t aligned_size, align =3D epc_features->align; + size_t mem_size, align =3D epc_features->align; struct pci_epf_bar *epf_bar; dma_addr_t phys_addr; struct pci_epc *epc; @@ -297,7 +297,7 @@ void *pci_epf_alloc_space(struct pci_epf *epf, size_t s= ize, enum pci_barno bar, * it might be different if, for example, the fixed size of a BAR * is smaller than align. */ - aligned_size =3D align ? ALIGN(size, align) : size; + mem_size =3D align ? ALIGN(size, align) : size; =20 if (type =3D=3D PRIMARY_INTERFACE) { epc =3D epf->epc; @@ -308,7 +308,7 @@ void *pci_epf_alloc_space(struct pci_epf *epf, size_t s= ize, enum pci_barno bar, } =20 dev =3D epc->dev.parent; - space =3D dma_alloc_coherent(dev, aligned_size, &phys_addr, GFP_KERNEL); + space =3D dma_alloc_coherent(dev, mem_size, &phys_addr, GFP_KERNEL); if (!space) { dev_err(dev, "failed to allocate mem space\n"); return NULL; @@ -317,7 +317,7 @@ void *pci_epf_alloc_space(struct pci_epf *epf, size_t s= ize, enum pci_barno bar, epf_bar[bar].phys_addr =3D phys_addr; epf_bar[bar].addr =3D space; epf_bar[bar].size =3D size; - epf_bar[bar].aligned_size =3D aligned_size; + epf_bar[bar].mem_size =3D mem_size; epf_bar[bar].barno =3D bar; if (upper_32_bits(size) || epc_features->bar[bar].only_64bit) epf_bar[bar].flags |=3D PCI_BASE_ADDRESS_MEM_TYPE_64; diff --git a/include/linux/pci-epf.h b/include/linux/pci-epf.h index 2e85504ba2baf93827224884ca19ae2bd0e6906b..4022dd080e20f2959f3a5faf4cf= e054ddb5856a7 100644 --- a/include/linux/pci-epf.h +++ b/include/linux/pci-epf.h @@ -115,8 +115,8 @@ struct pci_epf_driver { * @phys_addr: physical address that should be mapped to the BAR * @addr: virtual address corresponding to the @phys_addr * @size: the size of the address space present in BAR - * @aligned_size: the size actually allocated to accommodate the iATU alig= nment - * requirement + * @mem_size: the size actually allocated to accommodate the iATU alignment + * requirement * @barno: BAR number * @flags: flags that are set for the BAR */ @@ -124,7 +124,7 @@ struct pci_epf_bar { dma_addr_t phys_addr; void *addr; size_t size; - size_t aligned_size; + size_t mem_size; enum pci_barno barno; int flags; }; --=20 2.34.1 From nobody Wed Dec 17 10:49:46 2025 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011061.outbound.protection.outlook.com [52.101.65.61]) (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 4F82E2FE079; Wed, 15 Oct 2025 15:27:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.61 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760542079; cv=fail; b=DCDS4igWycktJNmlzKqxnog13iac5eqHwHk5c3ie9J3mKUfLLlpdws8qAyKdJLuSJEixDW5USP4lLNQcId6OItRmcO6+iGrJokQ46l/In8L5GkaUZ69q2er+qSda9Wd8v1EQSvK6XgQBoH5TG/lYuSQ4cGuljM2396+X3tJYW7U= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760542079; c=relaxed/simple; bh=r6ns8gA5dVzj7cxbi57O2UUNci+ulCXDLc3ggV07Usk=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=DJhMf5FL5z0VJcYkdVGUZa32J7LaK1HHe2jKTakf88aCZL/wVXhkxUusHqrNtA+2AcyfbRC6GCjwASPI7Kh/ic1j0Wx+3vIjYq2ZCQ6VQWaGCJ2akkMGOYg9RUKMBM/v8iJJJUlyy9CrAPfeCymEeUiC3sXNcutgBeclYd6MjwE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=ckGsthPf; arc=fail smtp.client-ip=52.101.65.61 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="ckGsthPf" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lyQKk91mJGSGWW6FdGNWKu/UYlPitb0IGXKjmr7aaIZL2qM3Pnw10Ucfc+xwXjUl6ViU2f6BvOdUXNBW9XbGljH/o2amh6MVbndSGE1lWO5v462+Df+lio48bKc1ovvUKjy8jIxeYYA9IbkV5m00WyjoCHPo3LPYkVythOuSxq0q5npKi2RTlv5r+cVmvu2vyDkh2Q1DeXuDPkwgsplQsMPaeCVFcz5aCqWzxFlDNXZtAYgwU3LyqI+X4xUf97XasyvQ19Foh4omAZX6hWatanlarQDSDDnFckSuHS3CWY6bG7st0w7nQTculud8GbXlSgwyrv8r88bvuz6cU2nNHw== 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=bG+oFqeA6XxM+o0H9V/VL3px4cByIkzFClpvL6poNro=; b=XhB++pb3XTQp7USs121gYJGvT+bU+fH7L+/8IRtTDU6caTcgaVRjGXscNlb3cdFvIXiRbFsbkE2QykAvD0SE3wm9kJLJEl/BbB9BwOtiwOEOVt6qMmSnX82VMwzv0mzVK39YExnOKgGgJdTTfuOOfZQ3seN5ktAxNBeBw4A330ehGNs54NspmgwVXChg9yTSwNonMJjekuxTVdZsnOCV1SYqHYG/RzF/6SRjqa/dX54MNH16b6JkWW55HjUILQmHei74o+HTTsmaS6mdK2p4HrxIYOGCnVxoT5I8eUQ3RwLexsSUBdK9ajNz9z1v+c5KdASppPBXjPfPTgSvcZgF7A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bG+oFqeA6XxM+o0H9V/VL3px4cByIkzFClpvL6poNro=; b=ckGsthPfhnos+fVKqWRueb5yUf0iyJHVQVl4GIVDoG107vCKJeVm4syvSvohIRxUSHq3S/beIPihFzUGMFF8eiaTEYGLZ/g9NWpAeBAf9JRIXjJfqTyf9JAh+dUmeLUFsE+++xcPdVh0QXK+2cO4ZwbNl345lOjKU3frU2TP0JTzW64oJlvIoNc0f68i+er2BBRm17qxG0B4g4ieqgki0t6+0eq59KnPAvoT4bxLWKBnBKReSvltWzkkUcXdwlLzt8kd2ffi6bQREu6bEupdTYT9+xdOQwoPAjmRIh/EeqZWCm0kWiAOsuc6hhk+96nANVJQ0ujRyL9As2StzkLlIg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXSPRMB0053.eurprd04.prod.outlook.com (2603:10a6:102:23f::21) by AM0PR04MB6993.eurprd04.prod.outlook.com (2603:10a6:208:17d::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.10; Wed, 15 Oct 2025 15:27:54 +0000 Received: from PAXSPRMB0053.eurprd04.prod.outlook.com ([fe80::504f:2a06:4579:5f15]) by PAXSPRMB0053.eurprd04.prod.outlook.com ([fe80::504f:2a06:4579:5f15%6]) with mapi id 15.20.9228.010; Wed, 15 Oct 2025 15:27:54 +0000 From: Frank Li Date: Wed, 15 Oct 2025 11:27:29 -0400 Subject: [PATCH v6 2/4] PCI: endpoint: Add helper function pci_epf_get_bar_required_size() Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251015-vntb_msi_doorbell-v6-2-9230298b1910@nxp.com> References: <20251015-vntb_msi_doorbell-v6-0-9230298b1910@nxp.com> In-Reply-To: <20251015-vntb_msi_doorbell-v6-0-9230298b1910@nxp.com> To: Manivannan Sadhasivam , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Jon Mason , Dave Jiang , Allen Hubbe Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, ntb@lists.linux.dev, imx@lists.linux.dev, Frank Li , Niklas Cassel X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1760542064; l=4440; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=r6ns8gA5dVzj7cxbi57O2UUNci+ulCXDLc3ggV07Usk=; b=84JeZlR5zRzoJOLcwOjJ9k0ALaCeWsBkLTGnZV+HGpoDznfGFUGh0hhjZZHNl+9AimI8nPejG GxKqFor9127BWZ3Juy7Gb9OPdqVYUgYAfXLEt/7ExNm8fn/aTfFaThl X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BY3PR04CA0007.namprd04.prod.outlook.com (2603:10b6:a03:217::12) To PAXSPRMB0053.eurprd04.prod.outlook.com (2603:10a6:102:23f::21) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXSPRMB0053:EE_|AM0PR04MB6993:EE_ X-MS-Office365-Filtering-Correlation-Id: 9731deb4-0e6f-4fe4-fa95-08de0bff6934 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|376014|7416014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?cEhsbnJZMXlja1ZQRmRFSzk5RnE2dFh2emRnaFl6T1VROWZzaldkYnJSUHg5?= =?utf-8?B?UEY0MEF6KzJIS3NOSXZBSVdIS3pFWlZBOG5SV1VZOE5hVis3TDlIU0JGdUJ2?= =?utf-8?B?R0QrSFVxZWx5UHpyR1lFMU9BSDdFbUJsSlhoajZJTkRSUUpBYnVrU1h0SytP?= =?utf-8?B?ajJ1b0lsSkh5TXRhYTFuYnlLRXRXcnN5SGNuN2p3NFJJdFNiTlI0YVRWYVc0?= =?utf-8?B?MW1ya2l3SGhET1dMVVRqMTRIaDVwNW5kSEI3OVh5UktFVHduSDBBdkNmaUxw?= =?utf-8?B?MXoxeXZiczYxUG81Lzk4MWxveU1mbCs2UUJnL1ZVd2l6R3VUL05XTnVaaHhO?= =?utf-8?B?WTMwdkdldk96ZEVFK1V1c1lTTWRaUkcwRXp1WnQ0QXR4azV3bEhTMW9UK0Vk?= =?utf-8?B?LzRkczdKT0lldXg5TkdETTA4N1NwRVkwWURGeWFFOWxvS0JtaXBIeFNZdGN0?= =?utf-8?B?REdvTXBYQWV3bnZhdDNCOVZNZW1FblN5KzZaT3NOZm9jazc1QmpzTWlaQk95?= =?utf-8?B?K0Y5dlRsTVZUbTRjRnRZTFBES2JaTldMOXVjaGN6VHhvNTJMNjZFeU9zbm9P?= =?utf-8?B?VTVscEt0Q0JaOGwrTE1Na28wWi8rUDA0ME01NHFBbFhtQzN2RUdEOGdxRFZQ?= =?utf-8?B?VTg5WmpmbGZWUXdveExsRk9mZ0pReGpLV3p0ampBWjhGRSsrZ0FRYkRKclJG?= =?utf-8?B?T0FhQzlYVldzbnlIRWpMWjdtV1lGOXBPSEVxTkcwZDlxY1krWFRsUUh2UFFB?= =?utf-8?B?S0VFSmNBblorMEplTE1ZSDkyVENqVERTeXhydUFGblhLNDc1WjRRN1ZhN0Ji?= =?utf-8?B?NWhhWmI5cWU2WDBqb1FvQlN4SVovRFptcnNvTWtKMHRMc2FFUkd2d1VPMm9S?= =?utf-8?B?WVRJOXRDMHcxemlaMm9YSjFWcENIUXBIbkJxL3l2STBNb3MwcGJBSEhYT0dW?= =?utf-8?B?ejkrTmhaUGdNeUpOV3lTQUFnREEvSnRoR0pEU2VYU0dCcnRZTFRuVmZTSjY4?= =?utf-8?B?S3NZOXZlRUV6ZldYY0Y2aU5Cb0thVGlsZkZoUXQ4UFR0TWhqQ05ZTFFxcm1q?= =?utf-8?B?MHp5WTArQWhzYWNya2Mzd3huQlNIQnhhcFkvbW41ZG1QaEdNdzhITTk2YnpT?= =?utf-8?B?M0E3ZkNtZXhFamJRV05Tb3lsUXBXa2ZlQ0FEYjlYYmtkdnduRkpwOW1pZ1Ns?= =?utf-8?B?b05sSTBCaWRIYXJwWmt1eGkwM0dpNHBZM3djSFFHU1JaUkVVSXFRRVJiTy9r?= =?utf-8?B?TmhaWk1TVnUwWk83TmhnL2JReUpmaTdhM0t3T2ROSXRJMHcyQkxpWUdnM3V2?= =?utf-8?B?ZFErbXFDYjFROFMrYXlVaEZtZXdMa0MyOElIU1I0eVd3TmFndWdmYkk3SytM?= =?utf-8?B?Ry95K1dsL3lIb244bzVEQjNkczFZYURRMmw0d1B6WlNCb2ZnUE4yNHBMYW5N?= =?utf-8?B?OWlITlNLcHJYOGMxUHdqRDQrZmwwM2JsdzIwUnhHcXRXUnRnOUhSN1ZSc0J6?= =?utf-8?B?eldtZi9YM3ZFY0RUZlhld1pLWVVxVkpEOHYwakk1VEZWTFN3Z2hlUktpKzl4?= =?utf-8?B?blI1bWJVR0Y0djdRa3lOOS9aWDd5UGVpaDJjUmtRdEwxZ0IvY2pMS0FEYkI5?= =?utf-8?B?b3ZLbUIxNDFJWUxGWDBPSE0yeXBoZko3MGE1bkJjclVxQTJUU1hKL3M1SjJS?= =?utf-8?B?Wktyci8xSmpsR1hrd29pY2NWbGR5ekF4TlF0NHBUUnd3K0VWK2RhN25pOGFY?= =?utf-8?B?TkJ3N3VJTko0Z3I4aWxsK3NvQUFpcGFLNFJMSzEzd3pXbGk5aGYzWXZrT21h?= =?utf-8?B?SUNENm1TVENSNGRMWThxdkcvNkJTL0dGZndmMk52YXVVR3RaN3grdE1pbWxE?= =?utf-8?B?d2ZCdi8yYzdBaHdKQmZyakxVbFFrRStMM1hiVzBMVllQSGY5N1p6TVR2Q3I0?= =?utf-8?B?SDVyRTQ3Y28zcEQ1RlFVd0dlRlc4cDFrdEppS3JQbnVramRoUHFvSXVlajN2?= =?utf-8?B?RFI3Vis0ZEJQZk5KSnJBZmVwdGVubm9XQWpXckpWaVJvaCt6b2gySXpLTnpt?= =?utf-8?Q?lfsNao?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXSPRMB0053.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(376014)(7416014)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ellHK05FUTJSYUlsSGdqaFEzeHkyeTJ6NU9FaDI0eEVEUUZzQ0FhOHVIRzlo?= =?utf-8?B?Zmp2UTFKQUdaYTFaYUYwYTlMd3FqTmdOZG9CZ3U5VGJudkRQUk9hOTVZNDlK?= =?utf-8?B?SVM4M3owNmQvWExTd2tGRzl0U3c4Q2d6ODZBNzF5cVRQVGtPYXFyQm1qZ3hE?= =?utf-8?B?anlUM2RyL1hqNjJJcjNOWUxmNEhPc1JpL0VxVEtneHNDdjdqSmJ1L0VudnQ0?= =?utf-8?B?OXJvdlFUZ1U4MEN5MDRhU003VkFLTjFjM3BoZmhySTNNSVJZTW1uQmZwMFJV?= =?utf-8?B?U3FKVkJtZ1Y2Rm40OXNOL3NlN3A5cEhqNDhjaWVhMHBCZlA4NmZnejFVM2FU?= =?utf-8?B?WHNxOXVZV0lvUjFrVTZGNVAxeVJhL1BIa0dKYWJtTlZDZ09lN1pzTXh3SkY2?= =?utf-8?B?aEVScFRWZmdtNGxvZUFhVGJsaHZsa1VSL2dUOTZuNkRrRXdvc2tuMFBHQmwv?= =?utf-8?B?cWtyOS9iY2NQcC9GSUtoY00wN29CZlgxOG9VMWVXYS9SbTlpczF6YmVSWHh3?= =?utf-8?B?UFlMNXFMRlpIWWpPYUpGSWdpdXpmbTdiZEVmaHd1Y2JsemVGM2tjaHdkY2xy?= =?utf-8?B?SnVKWUpISitXOWNrRXA1Wm52SVhvekplam5nMThDQXN0YWhEWnJzV1l2S25P?= =?utf-8?B?aG5mTnErck9BMGI0Szd3dWhobWsxTFNYenllZUtid0RQV2dqZ2ErU25lU0hY?= =?utf-8?B?YXY2WFE4a1N2NkkzMG9lcXNMWlRUOHN5MHRETXRqNHM1NURrSzBpaDBySVZH?= =?utf-8?B?UzVGeTR0cVdDOThoQXVib1RnU0pUN1Mza2ZMenRFbFFLQ2ZOb0tUMHpDUmVT?= =?utf-8?B?aytlbm5vVnk3ZHh1Ny9hN21tZURlRjdBQlFPenBMeTVSSTFYNVJGVWRWTC9q?= =?utf-8?B?elpHQXZKWmxNQlJTZU9mU01qbkdtdU10eHJZT042bWpuTCsvV2lQdGVPZFla?= =?utf-8?B?ckhZbHVjU2Z3MXhhUTNjdmlRRUFhTnF3T0pKZTFMenN0VlhwRWN6Y1NIK1FF?= =?utf-8?B?YmQwUGRNL0QzaHlGMnFaR05ta212R0dublJXWTdOWHo5VU1CK1hkemFMWUx2?= =?utf-8?B?NlZsVWhScmFCWWJTcE1JYm5XbDRVQVhzVWtkdXdWM0hxL3RKSVc2bkJNSjlK?= =?utf-8?B?clhqZlVRWlJmSTRkM1Z4T2Q5cC9rdlhyQVArMHg3YjJSbkNPY2I2bGtSUmNX?= =?utf-8?B?Z2dFSldpZkIxZW03UmozQnRwS29BMFVjdEtrQTVjWkVodGZkbTE5OEpRQ2VS?= =?utf-8?B?ZXRYOTg0emwwRkhYZGdpYnNxakF2YmhTUHNiNHh6L1N0RWE3OVphNGVucngv?= =?utf-8?B?bHFGTUF2eWlKNXRldHlJZDFZSDN1N3BmaVJocHhiSU5EdVM4NzRZazg3WWJw?= =?utf-8?B?Ykd5aDBOV0VQWjczUjQxUDFBdU5Valp2Y2dvSnRtNzMzSkw3STNPUTFWUXVI?= =?utf-8?B?a3Z3YUtVWU1ncmRYZmlDYVdZYUZJZ3BTeVpmMXpWQ3lOdjhScUhjd0liUndk?= =?utf-8?B?Z3VBcDVmc0Z1L25mZmR5MysyUDNXSDVjdjl6Q0VaMVB6dURoK2dlY0h5bkpP?= =?utf-8?B?K0ZITnM1dklJSWRxWHhNVFdwNWN2OEtUOTdXaG80OTUyMGYwWFkrWkxUaVcr?= =?utf-8?B?MGdPYVgzdFlpbU41bEZOcFAxd3JVUDVxeUEwZ3A0RWFHLzFIVm9iSE9pSUVC?= =?utf-8?B?S0xqZGtDQ2dQN3J0NTczZVVvemFmZnRTWUZCV01QMGoxY3JOZER0MDZRZitQ?= =?utf-8?B?Vm42TU1yQmJ5bi9aZXI3cXVCbGJVZUZZZEVtTnJibmZsWndtc3YvWnY0R21T?= =?utf-8?B?SytpWDh6T0FUOW5FamRRdk1RSTQvWFZFMHkyVE1sZ3R0T2VZYVlKQUdYRFhD?= =?utf-8?B?cCtVYlFvWjYvK0c1a1pqQ1FSZ2pqQi9pL3lIdm9ad3dsSUU3c2NyU3NKSG1I?= =?utf-8?B?ZmIyZnRwYU1zLzV0dm11bC9RbW9Xc2F2U0dTaXllYlJsWE1tKzc2SHdjZmYv?= =?utf-8?B?d0JCekNwa0hObkJtNFRuMGZLaUI5cThUY0VIa0VVc1BwMnNzcDZFVk53N1Yw?= =?utf-8?B?R2lXb2s2ZjRHc1hwSDUrRG9aaGN6MnFhQm4xNXJtODdZeks3Ukd5MDFPbllL?= =?utf-8?Q?tISIQWUCW8b+KwiRqDef8cW9F?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9731deb4-0e6f-4fe4-fa95-08de0bff6934 X-MS-Exchange-CrossTenant-AuthSource: PAXSPRMB0053.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Oct 2025 15:27:54.4582 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: KNyvXxvccHms51YyaLjMxWfrCgTr0jjzVfColfNPjQ+FFznyZimiaTPZ6fuTepxYUXrFUNaKlJR6HPMGsSSVrA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB6993 Introduce pci_epf_get_bar_required_size() to retrieve the required BAR size and memory size. Prepare for adding support to set an MMIO address to a specific BAR. Use two variables 'bar_size' and 'aligned_mem_size' to avoid confuse. No functional changes. Reviewed-by: Niklas Cassel Signed-off-by: Frank Li --- change in v6 - update commit message by using bar_size - collect Niklas Cassel reviewed-by tag change in v5 - update commit message. change in v4 - use size_t *bar_size as in/out arugment. change in v3 - change return value to int. - use two pointers return bar size aligned and memory start address aligned - update comments about why need memory align size. Actually iATU require start address match aligned requirement. Since kernel return align to size's address. - use two varible aligned_bar_size and aligned_mem_size to avoid confuse use 'size'. change in v2 - new patch --- drivers/pci/endpoint/pci-epf-core.c | 75 +++++++++++++++++++++++----------= ---- 1 file changed, 47 insertions(+), 28 deletions(-) diff --git a/drivers/pci/endpoint/pci-epf-core.c b/drivers/pci/endpoint/pci= -epf-core.c index 214e3f6e6d0d5a216c3469b8ff47908414cd1286..38c4fd06e9693ceaa0c86f67090= faa6e390425e1 100644 --- a/drivers/pci/endpoint/pci-epf-core.c +++ b/drivers/pci/endpoint/pci-epf-core.c @@ -208,6 +208,49 @@ void pci_epf_remove_vepf(struct pci_epf *epf_pf, struc= t pci_epf *epf_vf) } EXPORT_SYMBOL_GPL(pci_epf_remove_vepf); =20 +static int +pci_epf_get_bar_required_size(struct pci_epf *epf, size_t *bar_size, + size_t *aligned_mem_size, + enum pci_barno bar, + const struct pci_epc_features *epc_features, + enum pci_epc_interface_type type) +{ + u64 bar_fixed_size =3D epc_features->bar[bar].fixed_size; + size_t align =3D epc_features->align; + size_t size =3D *bar_size; + + if (size < 128) + size =3D 128; + + /* According to PCIe base spec, min size for a resizable BAR is 1 MB. */ + if (epc_features->bar[bar].type =3D=3D BAR_RESIZABLE && size < SZ_1M) + size =3D SZ_1M; + + if (epc_features->bar[bar].type =3D=3D BAR_FIXED && bar_fixed_size) { + if (size > bar_fixed_size) { + dev_err(&epf->dev, + "requested BAR size is larger than fixed size\n"); + return -ENOMEM; + } + size =3D bar_fixed_size; + } else { + /* BAR size must be power of two */ + size =3D roundup_pow_of_two(size); + } + + *bar_size =3D size; + + /* + * The EPC's BAR start address must meet alignment requirements. In most + * cases, the alignment will match the BAR size. However, differences + * can occur=E2=80=94for example, when the fixed BAR size (e.g., 128 byte= s) is + * smaller than the required alignment (e.g., 4 KB). + */ + *aligned_mem_size =3D align ? ALIGN(size, align) : size; + + return 0; +} + /** * pci_epf_free_space() - free the allocated PCI EPF register space * @epf: the EPF device from whom to free the memory @@ -264,40 +307,16 @@ void *pci_epf_alloc_space(struct pci_epf *epf, size_t= size, enum pci_barno bar, const struct pci_epc_features *epc_features, enum pci_epc_interface_type type) { - u64 bar_fixed_size =3D epc_features->bar[bar].fixed_size; - size_t mem_size, align =3D epc_features->align; struct pci_epf_bar *epf_bar; dma_addr_t phys_addr; struct pci_epc *epc; struct device *dev; + size_t mem_size; void *space; =20 - if (size < 128) - size =3D 128; - - /* According to PCIe base spec, min size for a resizable BAR is 1 MB. */ - if (epc_features->bar[bar].type =3D=3D BAR_RESIZABLE && size < SZ_1M) - size =3D SZ_1M; - - if (epc_features->bar[bar].type =3D=3D BAR_FIXED && bar_fixed_size) { - if (size > bar_fixed_size) { - dev_err(&epf->dev, - "requested BAR size is larger than fixed size\n"); - return NULL; - } - size =3D bar_fixed_size; - } else { - /* BAR size must be power of two */ - size =3D roundup_pow_of_two(size); - } - - /* - * Allocate enough memory to accommodate the iATU alignment - * requirement. In most cases, this will be the same as .size but - * it might be different if, for example, the fixed size of a BAR - * is smaller than align. - */ - mem_size =3D align ? ALIGN(size, align) : size; + if (pci_epf_get_bar_required_size(epf, &size, &mem_size, bar, + epc_features, type)) + return NULL; =20 if (type =3D=3D PRIMARY_INTERFACE) { epc =3D epf->epc; --=20 2.34.1 From nobody Wed Dec 17 10:49:46 2025 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011061.outbound.protection.outlook.com [52.101.65.61]) (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 D9515302755; Wed, 15 Oct 2025 15:27:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.61 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760542082; cv=fail; b=MYWMIh6g4a5PnufzTI4ieuhiOtt29MGTj+FJvpWYCUHiNGwpNoisbA09GULBnu1IZiGh65UPSjeYgYL0gYr/MY0X/oRD7ZPCz9b2Ouc5L7Y16z6lSehw35Rh5ytEtE1TJMcGrklZYzt1AVz2oNwHmAhkZboRVeJqmoUNeWOgF5I= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760542082; c=relaxed/simple; bh=uuWJTyw995bIGlgoLpOyEfFcEHk+Dn9is5g61+XdMWc=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=UBGkkE2Dtn3B1+dzPDgtcz55JYXZgKxmhfpKa12tRG7Ub1M8W08UpB97QncMemvlcqJQsZlEDPHC/g/6nDnBmTx6m3IY+OJNO43LnTF6HwpsDrRsLGrJw0YZ2XBbx0/FEx2+MtYh8OOgCGpWOobSy7srCyGcaWuZthpIo4Gy7ag= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=oXSvks78; arc=fail smtp.client-ip=52.101.65.61 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="oXSvks78" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kGy1lJAsSER3Wm1kWdTgZG9huwuB4Iq9VV0edoKGKDwE+jOCXXdKQgaLtXGMPrujB5Hz9CJryp3Qx2GDEnXnLA7Ib0m3/myxq/ugjUt8OP5cyVw9LaIX5+XMuFdrMhV8fDVzYqGIvaMx2RmZjx6bjUk/JTTyxGxpKY3OTC7v3oOr4e4wMjA6vBzAeFChfmKxHAf0N9ptbnSaiLdARcqVsH4bRI80RYKEXibNUkqYZQRsUOAE7/eZCpcKoF/9jj7pn5V2nlEVidrVzGqlzHgDvN7ji/T6+daIp+XQqWuFB7vFMA6J1KHwyiJ7YNdpOPZD4vbTjQIaqzPg2G56ELDmKQ== 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=rzU9JICq+Qe7zYlVwBVK0h2pGRjAFccSsyhQbzao8Nw=; b=WxIW3cqsZZXagCH2qwc45K6gaKm0ckyMMBq+RQcc8Z7KiL4PzftLCoXtZCe9y9I9YUZmDFY4y9D7NvtFyvghJoLrze5oiX88Mm9yxi++Vf/1dvaNp72Iq4vZqLCPETn4W4NdPKylS7Iv2eyxP49Ek74fHP3kTAVhjGmUAUmgw1Ev5zae80MXOY1BrLL1YtuvmOKub4EbgQtLSnPTMsTk5xKIhCRpgIPzoJ61bIFb2bOH+4t3TfyCAWCuPNA0Cg3/s5Fy0taZVzc+tD/sryE4WXVvfov3i3Jj03kRh+LkH17fQ+8qK6FZdABWZlGD/u//NO/ODA0CL4rC9SB+HxYyyQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rzU9JICq+Qe7zYlVwBVK0h2pGRjAFccSsyhQbzao8Nw=; b=oXSvks78jqXSiEhCpKGyA39vR7Rwz6TIDh+b0zncNnclFgpd3nKbTMvdsVHYC3oonxuQgesAeYpYj26SrtTunqNsVJQDBRnjNTIHD81+veFL8J0KgsNlEJyLDFoK48LSmy3V7MqvyFfIAROR7Y54E9TcfaL/jSqtBsR6h+Te/a/dDsZOIMT42vdSEx7Z5UJY9cmD5APDtntDWjWcqMXdr+IXrKH5VGFbTfSfmASDGptQ06GwyYjumowRwltxzO9UFzsFJ0dsGiWEA61RDEa1fuH2jtDQFuApe4osPAJpkoXWqNyAP4m1q7mIQYpCdWEgMhaDIU4bZvbUTUe9J0AV5w== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXSPRMB0053.eurprd04.prod.outlook.com (2603:10a6:102:23f::21) by AM0PR04MB6993.eurprd04.prod.outlook.com (2603:10a6:208:17d::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.10; Wed, 15 Oct 2025 15:27:57 +0000 Received: from PAXSPRMB0053.eurprd04.prod.outlook.com ([fe80::504f:2a06:4579:5f15]) by PAXSPRMB0053.eurprd04.prod.outlook.com ([fe80::504f:2a06:4579:5f15%6]) with mapi id 15.20.9228.010; Wed, 15 Oct 2025 15:27:57 +0000 From: Frank Li Date: Wed, 15 Oct 2025 11:27:30 -0400 Subject: [PATCH v6 3/4] PCI: endpoint: Add API pci_epf_assign_bar_space() Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251015-vntb_msi_doorbell-v6-3-9230298b1910@nxp.com> References: <20251015-vntb_msi_doorbell-v6-0-9230298b1910@nxp.com> In-Reply-To: <20251015-vntb_msi_doorbell-v6-0-9230298b1910@nxp.com> To: Manivannan Sadhasivam , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Jon Mason , Dave Jiang , Allen Hubbe Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, ntb@lists.linux.dev, imx@lists.linux.dev, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1760542064; l=4979; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=uuWJTyw995bIGlgoLpOyEfFcEHk+Dn9is5g61+XdMWc=; b=Q0r1iN6R3aiaxdFNu6l/cWqIfyUmmt0zqmRCiJeVaG3bhwVhEknFJLNQnKv7s6iRRhgvmCUpp RdbBNBHAHjKAM/xL7vlckUp7/ZIw8jCiQh8Ii8zXkj74KsVW1DCENRG X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BY3PR04CA0007.namprd04.prod.outlook.com (2603:10b6:a03:217::12) To PAXSPRMB0053.eurprd04.prod.outlook.com (2603:10a6:102:23f::21) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXSPRMB0053:EE_|AM0PR04MB6993:EE_ X-MS-Office365-Filtering-Correlation-Id: b1b02b86-141e-4c9a-74b7-08de0bff6b35 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|376014|7416014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?RndmWGlSVk92VGs4cFhoWHg3c3BrWk4vVm96TStYblFXVGMybjA2QkJQbVJz?= =?utf-8?B?bS9qdFkxeTRwODlyY2htSFV2djQrVlhna3hybEhoTkhaMFUzNGtUQ2hiYTQv?= =?utf-8?B?SVhBSmVsL1ZTMTMySHZWLy9waGl3UFVrd20rbHpMcUNJa0xZaU9ueWw5ZFJJ?= =?utf-8?B?djNFUmsya1lodlBpcnZyOXFKdXVVY2FYSERWZDlIRnRQaU9IdVY3a3FZa3RN?= =?utf-8?B?YkNaQ01oQW5CM2JLS1VFd2hFa0NZZDc0REJTbUlQc0U0dHpRUWNzWS9ndW1z?= =?utf-8?B?cnNLOXFWbjNkbVZHcGpCVGovM1k5Z0YrZXBEdnlrVlg3WXlyc3FEMzNtWVlU?= =?utf-8?B?MW5ENW9jUEFoaEEvRzU4TDBRQU9kbWhneVY0VkxndUwrNzVkZ0FLMldYSnRa?= =?utf-8?B?Y1ptYXJmdXU4TEkxOGYzbk9mSnBRcHhMdWpwZzJ3TU1mdDJLVjlzTTkvc2Ft?= =?utf-8?B?cmlycEx2bkF5UWp2d2dkNk9NWVdENDdyTUNNSmhDY0JJWS9JYmhubUY2WXhB?= =?utf-8?B?V2pmdWtwbWhDL0t5YjZPSnlFY21hRURIR1JTTitCN0dyNVZoU3BpTUY2am9K?= =?utf-8?B?M0FBdXhJeDQ5WkFpTEYzeWZZaExJL2xaRHg2cGF1L3ZSTEVrR0JzZFJoRERY?= =?utf-8?B?dE11clpTZlozZTdiUlRHSFF3Yk1KaG53RTU3NkFlek13WjFCZzZjZFdkckNS?= =?utf-8?B?NXJRNnRkdE1tYWQ0VG9ORzlTT01KWXVsWU90SzZaYXM4YjE1VXA0R3UrZHpM?= =?utf-8?B?azloK0F4cGd0NjNiWEhKSU1QSUU5V1RIWW80KzZRdUU1Q0JPajJrUmJmOEJ6?= =?utf-8?B?WlVOcytPWk1lZGZxZktsWVN1MTd2QS9ZZXUwakRHSEF3emxkM3R0eCtNOVVN?= =?utf-8?B?ZFFmOHlXQTcxaS96WDZLSyt1aGVMdzVvUE9teU5Kd2Z5SVBhNk9VK3hmS2gv?= =?utf-8?B?b21KYmYvT3dmbXJaR0V4dGpKMUpsY2srdStydk1WaWVxblpZdHUzYTIrOFVz?= =?utf-8?B?VkxMRFFyaXppcFFIbWJmV1RXNnFLVVVNUm14Uk9GMGtsSWhGSHZEUm5CRGdz?= =?utf-8?B?cjMxTXRPL2hUbzk4b1lRUmpSTkRtMlRXSFdlcERTanRtYmJaTXVHUUx5azc2?= =?utf-8?B?ZXZYekZaWGFYSWdIRCtnNHN6TFpVdlY0bU9PUFN2UVpUMldvcExWMndRYkFZ?= =?utf-8?B?Y1ZCaHlKb0k3bm9NWDJyRTdXNGxNTGtzUHlIamtiTFd5aGZ5OWV4Tkt4YTNy?= =?utf-8?B?WDVpdEhFcmQ3RjVZc3RCc1RWNDJ4RVdybkdBZHpHWVh5UDhUMURob0p2Z2Nn?= =?utf-8?B?aDVpYTNkNVorc2RiRjZuQW5GRFkya0VzNitYRmMrZWgrYlhZdHp5YU16cGJB?= =?utf-8?B?OVRUazZFQ2RNeHgrcW12TGNJRFUyblhRQUhvMVhzTzNwZ1cxMHlXeFJFUGho?= =?utf-8?B?Wk84YU1zcWF3Q3B3OXFDb21nZVVvY3hoK2o1S1p1MmRvaTcycWIxNXdjWFpB?= =?utf-8?B?L0l0bTE3dWNlRDJaUWFpSk5DYi9uSU5SbndqQmpzamxNWHBKVWN6VnRMRzJX?= =?utf-8?B?c1p5WThvRDY5VGdYSnpFOWs2Q0VoZEN2eG83amhxMCtmWXpjQmxlNXE5NkYy?= =?utf-8?B?dFVrYlZDSmRXT1psc3NWbk02QjFpWFBNOHRXajBaQTk3dXdzTGZiNnVJWXN0?= =?utf-8?B?bjJZQXR6clV0dXIzZzBSUlNFM1dwUHlmTkkxaytHTzlWTXpyQnNuakFMbS9m?= =?utf-8?B?eExoTjVSTE5sYmVvc0t4bjd5MU4wRk15NkVrL245U3VTWHNKS3BSNHZiWUk5?= =?utf-8?B?QVpZMEcza21MUkM2R0hBcVZCRVQ2L0crL09hZU9BNVMwcHUwMG9xblVtSzRx?= =?utf-8?B?cmtGQ1ZaeFlxbTI0cUJtSDhONnZNVzdYRzFXNEtOOWJuWllwWENDU0ZrNFU0?= =?utf-8?B?NFZsVjgzTVE0ZjdzR1ZNQklhdTlsNjR2YTJwKzhJN29nNGo5dzJCRlZBNVY3?= =?utf-8?B?dUFXdm40T0VveVo3bDhwWWVlUHp0Z0ZPdm5zR0xSMEoyT25hSkh0dFZad2Yr?= =?utf-8?Q?zXdApS?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXSPRMB0053.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(376014)(7416014)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RG8xM3RCN3g1RW9NUlVQdDZSWWx1d2FBSjUxekJHTjczNXhGdjdiNTdNQUpw?= =?utf-8?B?cWZhUDY1SCtXbXlhekk3ZGJ1VHUvQmRud3lObUx6emJrek50MWRKbStzK09G?= =?utf-8?B?K3MycndQTnd0QVdUSUlTVTlMVEg4Nzl0Y0hPNVhmZndGVG15dmlDdHJJVi9G?= =?utf-8?B?YURLUE5zcnZYaU1GTWMvc2JoclJXUm0zaUJQMitRSmhCczZ5Uk9NQ1FvWU1q?= =?utf-8?B?clducXhSWUlZUFdFb2s4UEkyUlFWUVBtcmg0LzBTUWhNKzRZQURaM3VURzBU?= =?utf-8?B?UHlCaXM1S0xoZ3hQeE1HcEs1aWdDK2MyMHBWM1pJT2laVFl1TDEwN1gvQW53?= =?utf-8?B?aisvQzdvNUZOVkhlYVlTaXJBK2RhNHNpd1ZZQ3VXWFQydlFhdlo3dDVOdXF5?= =?utf-8?B?VEFJekpFcGtya09hMSs5SlZ5ekdEa2l0RjBncXhqajRhWXU2MVJpSlZMWTlX?= =?utf-8?B?NEErUU1qS2p6TzF3NHdVZzdCNkx1R1VqS0ZvRnVDak02dmE2Z21CYThQZ0Fx?= =?utf-8?B?aXE1Q2dPaWhXMUxxblNQWEFRcHVrbWlFQ0s4NkpJdkV4Ty9kR2VWUmFIZm9x?= =?utf-8?B?MHUrSDllZHh4Skg5bWluSzd1RjR1UGI1bGZHT3VYTWMvK0JwTjdWQXNxamhF?= =?utf-8?B?UG9SY3FxYXpKcXYvcHppcjlSeTdvT3dkVlhMU0NUb3VBZVFUdEtNcTYwd1la?= =?utf-8?B?ZW1ybGxJaFVmS2R5T0FhQlh6b2NtcE8yNlN6UjNiSkZscld1TjFnMzZPbm56?= =?utf-8?B?bVFsWGxwZ3c3U25vNFRxeHBMS1NqQWM5NkRMOVBSVzFJMmdac1JiT05rdlNE?= =?utf-8?B?SXRqeUp5RVFTWjh2OUZqUTBCeFMrcGdIbFp5VkJ4Y2I0ZnNERzZqME9GN2h5?= =?utf-8?B?ZllubHRPT01PVjlaQTZqK1ZvT3QyNFVqd3pncGF0dFZTRllldGYvWWUxWW9L?= =?utf-8?B?eVRrUWRyMzBublBieUxsbUlJR0dBVUs1M3dDMDIyUFRBNUNOa0JLelZBQlR2?= =?utf-8?B?OTdWekJCZEs1V2FoZjZJbEVwVXljaGtuQ0JiZUtKbmoxbFhDa1pIY1FZbzYz?= =?utf-8?B?YnR0bDBSdDRaMXVrU3oxZTlJbko3bm54UUtEanVBNjA5K1d6SEVoalVnWFJp?= =?utf-8?B?NEZYUGNkVVJ2ZjdqRUFubnFBQmdFdGh3RmE4TVpFMXNPaHhvcitITnFyY3NN?= =?utf-8?B?R3hOSi8wdENtdTJpQzQ0NTlrajNqTDkvQ1hacmZhdnFXakxieDBnZE5YanNG?= =?utf-8?B?MVBDc1BiMGR2MGVpeDdWTHEySDdPZWtPT245cmtEKzlGZndoeUtBajRXVnVx?= =?utf-8?B?T3VRd215ckVkZHdkRnhWOHRjZ0FVeDJOY2QydXA0WmxOcmhGNytsaDFndFEr?= =?utf-8?B?cldpT1ZUaTdnL0gvek9uVWlqckVLbnhMOUhOTmxLaFVaemRyZWVFSnZmczNy?= =?utf-8?B?WVBWYkJyK01KUzBsZElpUXRVamdOK3VGRUF5ZUNNdHk4TUtTem14QitldTR4?= =?utf-8?B?b0FsTDJ1b0l6SVJQaTJybXNjbFlZdUFNSGtFL2l2cExMVlNHdHh0T0FFMng3?= =?utf-8?B?YXY0U1NHczZ5dkhMQjkyblZ3QkI3QnJUSlB1R21XN1VEcEFzMkw4WnhiVjYy?= =?utf-8?B?Nm13NW50cDJzTWhKY0lzd3dKdTJ5TTFJbXdsdGlsWVlpSXVBNkJDTjRPWGRR?= =?utf-8?B?bitMZGtiYi9EMEtSL2kvVTQ1Z0F0elA0QjIyREROQjFGcHdmMjlHeDJPOS85?= =?utf-8?B?Z2kzK0FKN1dESUVOQm9YQzRVbysvRTdURWRaODI3RFAvOHVFNDZ4RFF6emxX?= =?utf-8?B?ZkpFVGJrWUVJUko4c1RTMW9aWStmYlhmb21MTURFZ0NvS3VhclY3T2tNSXRW?= =?utf-8?B?OUZIYkNmQVVFaEthWnF2T3NIcHNqN05vaHNlc2gxSzBUYWQ4OE9QNFVVaDJT?= =?utf-8?B?YjhBS2V3U1c5cTMzRUNQTjkrdWNqRjhIK2ZBVXV1a2N5OGFDdmU0Z05OOE52?= =?utf-8?B?Sjlza2NkR1pBL0tGMGI5L3BSblJUSGUyQ2FDM3kxaG4rRC9Mb2JZSS9FM3FQ?= =?utf-8?B?L0FaOWFDKzE2ZVJWT0xMY05aWWhpZ2tVbVFzeTFQYytTSUtvWXFJUUdvT2Rm?= =?utf-8?Q?X1UbMyo/sFfh7WgMhtQVYHgG3?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: b1b02b86-141e-4c9a-74b7-08de0bff6b35 X-MS-Exchange-CrossTenant-AuthSource: PAXSPRMB0053.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Oct 2025 15:27:57.7585 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: FFXMwR0GoXgZcTcqeM89fSxr98AASV3FHOLiOpr5hVaGDFT/S0VBC93d2VJnnev2hS1zRuZMGEfd1uRMCDNAOA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB6993 Add pci_epf_assign_bar_space() to allow setting any physical address as inbound memory space, such as an MSI message base address. Since PCI BAR size must be a power of two, the input MMIO range [inbound_addr, inbound_addr + size) is mapped by finding n such that [base, base + 2^n) covers the range. The base address is also required to be aligned to 2^n. Signed-off-by: Frank Li --- change in v5 - use bar_addr in head file to align function define change in v4 - use size for bar size. chagne in v3. - update function name to pci_epf_assign_bar_space() - s/allocated/assigned/ - add check when align down input address to memory align require, may not bar's size can't cover required ragion. change in v2 - add new API pci_epf_set_inbound_space() - fix bits 8 * size_of(dma_addr_t); --- drivers/pci/endpoint/pci-epf-core.c | 80 +++++++++++++++++++++++++++++++++= ++++ include/linux/pci-epf.h | 6 +++ 2 files changed, 86 insertions(+) diff --git a/drivers/pci/endpoint/pci-epf-core.c b/drivers/pci/endpoint/pci= -epf-core.c index 38c4fd06e9693ceaa0c86f67090faa6e390425e1..1c64d69556e6c7c4841ef8a6086= 6515a1f68333b 100644 --- a/drivers/pci/endpoint/pci-epf-core.c +++ b/drivers/pci/endpoint/pci-epf-core.c @@ -347,6 +347,86 @@ void *pci_epf_alloc_space(struct pci_epf *epf, size_t = size, enum pci_barno bar, } EXPORT_SYMBOL_GPL(pci_epf_alloc_space); =20 +/** + * pci_epf_assign_bar_space() - Assign PCI EPF BAR space + * @epf: the EPF device to whom allocate the memory + * @size: the size of the memory that has to be assigned + * @bar: the BAR number corresponding to the assigned register space + * @epc_features: the features provided by the EPC specific to this EPF + * @type: Identifies if the assignment is for primary EPC or secondary EPC + * @bar_addr: Address to be assigned for the @bar + * + * Invoke to assigned memory for the PCI EPF register space. + * Flag PCI_BASE_ADDRESS_MEM_TYPE_64 will automatically get set if the BAR + * can only be a 64-bit BAR, or if the requested size is larger than 2 GB. + */ +int pci_epf_assign_bar_space(struct pci_epf *epf, size_t size, + enum pci_barno bar, + const struct pci_epc_features *epc_features, + enum pci_epc_interface_type type, + dma_addr_t bar_addr) +{ + size_t bar_size, aligned_mem_size; + struct pci_epf_bar *epf_bar; + struct pci_epc *epc; + dma_addr_t limit; + int pos; + + if (!size) + return -EINVAL; + + limit =3D bar_addr + size - 1; + + /* + * Bits: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 + * bar_addr: U U U U U U 0 X X X X X X X X X + * limit: U U U U U U 1 X X X X X X X X X + * + * U means address bits have not change in Range [bar_addr, limit] + * X means bit 0 or 1. + * + * bar_addr^limit 0 0 0 0 0 0 1 X X X X X X X X X + * Find first bit 1 pos from MSB, 2 ^ pos windows will cover + * [bar_Addr, limit] range. + */ + for (pos =3D 8 * sizeof(dma_addr_t) - 1; pos > 0; pos--) + if ((limit ^ bar_addr) & BIT_ULL(pos)) + break; + + if (pos =3D=3D 8 * sizeof(dma_addr_t) - 1) + return -EINVAL; + + bar_size =3D BIT_ULL(pos + 1); + if (pci_epf_get_bar_required_size(epf, &bar_size, &aligned_mem_size, + bar, epc_features, type)) + return -ENOMEM; + + if (type =3D=3D PRIMARY_INTERFACE) { + epc =3D epf->epc; + epf_bar =3D epf->bar; + } else { + epc =3D epf->sec_epc; + epf_bar =3D epf->sec_epc_bar; + } + + epf_bar[bar].phys_addr =3D ALIGN_DOWN(bar_addr, aligned_mem_size); + + if (epf_bar[bar].phys_addr + bar_size < limit) + return -ENOMEM; + + epf_bar[bar].addr =3D NULL; + epf_bar[bar].size =3D bar_size; + epf_bar[bar].mem_size =3D aligned_mem_size; + epf_bar[bar].barno =3D bar; + if (upper_32_bits(size) || epc_features->bar[bar].only_64bit) + epf_bar[bar].flags |=3D PCI_BASE_ADDRESS_MEM_TYPE_64; + else + epf_bar[bar].flags |=3D PCI_BASE_ADDRESS_MEM_TYPE_32; + + return 0; +} +EXPORT_SYMBOL_GPL(pci_epf_assign_bar_space); + static void pci_epf_remove_cfs(struct pci_epf_driver *driver) { struct config_group *group, *tmp; diff --git a/include/linux/pci-epf.h b/include/linux/pci-epf.h index 4022dd080e20f2959f3a5faf4cfe054ddb5856a7..48f68c4dcfa5e2e3bb97963c6b0= f47effe87f53b 100644 --- a/include/linux/pci-epf.h +++ b/include/linux/pci-epf.h @@ -242,6 +242,12 @@ void *pci_epf_alloc_space(struct pci_epf *epf, size_t = size, enum pci_barno bar, void pci_epf_free_space(struct pci_epf *epf, void *addr, enum pci_barno ba= r, enum pci_epc_interface_type type); =20 +int pci_epf_assign_bar_space(struct pci_epf *epf, size_t size, + enum pci_barno bar, + const struct pci_epc_features *epc_features, + enum pci_epc_interface_type type, + dma_addr_t bar_addr); + int pci_epf_align_inbound_addr(struct pci_epf *epf, enum pci_barno bar, u64 addr, dma_addr_t *base, size_t *off); int pci_epf_bind(struct pci_epf *epf); --=20 2.34.1 From nobody Wed Dec 17 10:49:46 2025 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011050.outbound.protection.outlook.com [52.101.65.50]) (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 74125308F1F; Wed, 15 Oct 2025 15:28:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.50 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760542088; cv=fail; b=kiZDc56l8w0n34FZo1jPiS1CukwpPkfnX7PvLrFE0/ROjkGr385FwGKYuwYK2gCBy+f1xuInEJQ0gnBMLmo4pnKe6kdkpXHLNsMMOznoxp13kf30fo6qXlDrBqmv0pyd1ml4v13tp6mxEXswK45MXuAO/HgklcJGxFiuDTI1ZTE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760542088; c=relaxed/simple; bh=d0jjuVYo95icEyMMHbl1KpYVYqWEhYeox4Hu6bQaCUA=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=r6qmtQticAjiXNUj9Bm0Bw9CH6XizgClmazvMYtgLqiCeKblsEG/YzP05GnyyMnJpa8I5jbmELdLYc8ibTxWq+6oe1dW260lDziytBLJwVElwyGJA+WYeQbkWITCNq2r1HvliJoJKwOdgLEsMfc73Yvn8XtfYVT+1XFWnbzfof8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com; spf=pass smtp.mailfrom=nxp.com; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b=Kvff5rIL; arc=fail smtp.client-ip=52.101.65.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="Kvff5rIL" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=sRwB37FDKAYHZOeke3x3NDN086cdoUtAFDZq+Y3rUnKxF6Z2SixU6jdHRIdmp3XTfojSSCP6TxPsFetbI9Fdz4qXvAdBBtL8STb5pghHI+9u0dYzXexccJA+klFt0MULsgouhMsaSANyunStcrcsW8EphhxgGWOt+87nIwfsB86ZWwuY9v3xQIICkACdX6gZd+FRH/kTmZrQ0WB6Rw0UQr+H36hmOW6DM/fRfIR4JoMGcz/md/YUHXizKwvfPZbUOC+1skyeOdUEfXBsXqZY5ttWhKwrKLwX8K1USTXos6FAONMgLWPQqQ01SQBjixpjDOc4pW/yXyOKKUlapX9Iaw== 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=8y4e4S+bLanAvLAqO9fT65YPozTC12pO5ZF5Aywb35Y=; b=FfGXR/5NQWu+aCPW6nlZhbmXvXi3T7abonLqSg0RiUBl7ejFam+HM/CE1znq7iX53GJ1fvdnaIVTEwt3NgHnh+usFZLzj2zwdzRos0VG9/808VVhe9qHQDh4Bz5zyNeieCYV6xC9UKcSaBH4WjeaShhpYWhuzbYNRhP3dIzN4TjTd/JF3j2tZURuna8ne1BUfQ3fOSVrfA5sS22gzrXJyxfjNX2w0BGP15O/+9MQQWoQZHeRLgq0zTWbfOa4YVqFeXZRpLNFBDaRDHHZqRYpeitf1dJXkbPUSDIcpmERM/xQfynSNGf2HPWsVYijk3SBnbM9X7YgmqFmamuadeVvxQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8y4e4S+bLanAvLAqO9fT65YPozTC12pO5ZF5Aywb35Y=; b=Kvff5rIL2WJizWbcBoCAs/bFr7t0pssBTwG7CkkxyZrPdjI3osFHOBATww2qRrkTb5+9iY8UMCWqalcDbsnVVK0EjeQnfujSdQ9envX5Sw/3SqyZL1z2AuEDKjzQCVIXW0+01BduBdzWdJ8ZGhQK4w3sab/+Ku/CDp17r38KEfurt+rDortXc4kwDnGe3n6gDOUY64Z4BwpbrjxLwb1m6vu2uFFgV0ld7bbnJQ6STU6VDdNuX+0YObzv79U4kM0ioBRR0Y+5NhpHj+yGRqi4Dxqd50wkcQVxGGyp24CnS1SideThzLRU5+hIGGfZF92j9WGaLw47odgnfZ3IIieJ9w== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXSPRMB0053.eurprd04.prod.outlook.com (2603:10a6:102:23f::21) by AM0PR04MB6993.eurprd04.prod.outlook.com (2603:10a6:208:17d::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9203.10; Wed, 15 Oct 2025 15:28:01 +0000 Received: from PAXSPRMB0053.eurprd04.prod.outlook.com ([fe80::504f:2a06:4579:5f15]) by PAXSPRMB0053.eurprd04.prod.outlook.com ([fe80::504f:2a06:4579:5f15%6]) with mapi id 15.20.9228.010; Wed, 15 Oct 2025 15:28:01 +0000 From: Frank Li Date: Wed, 15 Oct 2025 11:27:31 -0400 Subject: [PATCH v6 4/4] PCI: endpoint: pci-epf-vntb: Add MSI doorbell support Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251015-vntb_msi_doorbell-v6-4-9230298b1910@nxp.com> References: <20251015-vntb_msi_doorbell-v6-0-9230298b1910@nxp.com> In-Reply-To: <20251015-vntb_msi_doorbell-v6-0-9230298b1910@nxp.com> To: Manivannan Sadhasivam , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas , Jon Mason , Dave Jiang , Allen Hubbe Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, ntb@lists.linux.dev, imx@lists.linux.dev, Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1760542064; l=7571; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=d0jjuVYo95icEyMMHbl1KpYVYqWEhYeox4Hu6bQaCUA=; b=a53/3QQ81UfnM8JhoDLyunCetJpxWnNOI8HqOfs3ru6F/sHYdwdMf+FRA/o53l0KeQ0cZHDm2 7L2D0o+zZ1VCWwaJRH0NvW6+u/JDiW7X6o8k9oFh4oP0WrvTgf40CEm X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: BY3PR04CA0007.namprd04.prod.outlook.com (2603:10b6:a03:217::12) To PAXSPRMB0053.eurprd04.prod.outlook.com (2603:10a6:102:23f::21) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXSPRMB0053:EE_|AM0PR04MB6993:EE_ X-MS-Office365-Filtering-Correlation-Id: 0ec723ee-3b8b-4249-b1ff-08de0bff6d2e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|19092799006|366016|376014|7416014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?ZFAwMkI1OXZWNHdsQ2J3ZU1ZdEYwTG1sTk8vYnBKV1U4eDZJRHNkdVF4VmhG?= =?utf-8?B?ZEpuK0xVNnpqbW5LMnFnN3llOXVwK1JPejg1Sm5Sa0t6ZjExV1JjTVdyQUxj?= =?utf-8?B?d3pwZFJnMUpqNFVJcHFoSXdLdXdicktMQTFaQzJtcnBhVy82amVXMU9hK0lS?= =?utf-8?B?ZmdTTmE1Mnd1Rk5FZ1VMUHYxZ0huanVFcURvQk8wUkczQ3NIL3FVM3lFbzV1?= =?utf-8?B?WE5qdG1nZjRMcW03QVdiY1hLZTJZcldHUTl4Q21NZG9GK1RMcmZZTU5Fdkcx?= =?utf-8?B?Wi95cWlBTEJYanc0bUY2NUZPNjVlbkxrMUlESjBBeFh1MW1LdkVRcFcvUjZ4?= =?utf-8?B?M3NTYmlVTzVMcklBalExbDRtK25NblRlRERKa2JDb1VRWTh2TldWNzlIWnhN?= =?utf-8?B?RnFEVmZZQ09rUjFvMG9iNVdYYnFDOWVvbGpDZllaOTl5ZFQyNzVnaUhlNmQ1?= =?utf-8?B?UCs2ZjZtU2RRenVrWWM1bzVqTkpiU0VWbm5pSWRXVmYxamZlNzFyS2Y2R1po?= =?utf-8?B?ZWhhcGo4YW1XN2hGZmd0Z1dPRHhrNUdlOEhSK2tEVjd2N2RUQlpJTlVKa3Bo?= =?utf-8?B?MktqUGNXRXVCRjY3alJMK0ZnQkV0NnY1QmJETkNKTGE4NTIxWWhxM3JWWGxj?= =?utf-8?B?amNEZTM5R3dxbDlnTEJyL1BKcjRDV1hsMkIzVjhwWU9YRkZNS21Db1doQUdM?= =?utf-8?B?aXpYaTFyOVRRWGhiSHRrWDRBVFpSbjZsY1ZmOTlYYWV6Qnk3ekhpNi9FNnY5?= =?utf-8?B?V3FZTGJUazF5KzM3QVlpdGVXTGFoNzBNMkRXN0ZlaXQ4SnBLMzJuN20yT3Bl?= =?utf-8?B?Si9iYlYxendtaVFLdk9oaHFyY2dEaVpLOVQ5dytWQ2l6OGRrSmlmTlVBYllH?= =?utf-8?B?VnJwNktwS1hteGZ2QXFTZU1WSjJCSWdtR29ndHh2MmdOajlRbGlVMFkwb29s?= =?utf-8?B?TFNUSGUxNmFPSEZlVmR1NDBsTlMxcXZ2cDdqdGo2aHBmQ05GdXZuaTB6NWdH?= =?utf-8?B?V1VycEpOelBGdEdMSVJJV01kTTcxWWRQQnNMeE9Bb25ZSVU5OU0wcFJDS2dO?= =?utf-8?B?WVQvODNrTGNDL1hEZmxleHJJZ1pGTHZOTEE5c1NmOE1aZWNGMlVDWVFheEoz?= =?utf-8?B?R1cxQTRLdEdGQUFxbjJRQzFPcU5RdU4rRlhDLzliMVFWNU5MYVIxaXlTWXM2?= =?utf-8?B?QVIzNklPQnhLSU1xWkhkOFJqSG8yRGNjS2RJL0JyUEdSY0tHb3VSbXFDa3pi?= =?utf-8?B?WWhLYm1BOHBhT3hub2lQTTBsU1BvVktxdmMzcTVTZy8raFBhbi83VTlENnRH?= =?utf-8?B?ajJFOStmUDY3MmVjR3RaMEZ5U3VYdmJnUysweWd1VWZhVytYVzFteDhQOXRi?= =?utf-8?B?RkdxcVczUkNXUUdoVzJKSllZT0RLMnQ5U1ZCdnpuZGxncUIrSytNSnNmandE?= =?utf-8?B?OWd2OXZYOCs5NXR0bWl6SXo3RkhyandJbVhlR3hRNWI3dXJhWGJCWk9jVmRD?= =?utf-8?B?bEdIZm04bFVpZy9RR3BpODA3clRLMloxZGljS3hTK3JHVUxVT0RQTFppazZh?= =?utf-8?B?MUliSjB6L1luMkppTkJEeHpEVXphbTc3bWdocnBDTkVrQXRnOW9Ca3NzOGRs?= =?utf-8?B?THlJTGJMQW1taUh5a2FRYnNEUURUS3cvenRxSjJTVGZJTVN0d2xzTU55U1Ro?= =?utf-8?B?N293Qy9XbC92eVk4UTM4MERJY3hJcTZIbENqSHM5TU9Nc0MvREluVTQ3b1FJ?= =?utf-8?B?Tys1QzM2WlQ3MHpPL1ArTFhUdE83U3FJLzV3OFEwY3lnM2ZGYmlCeU9zUjBi?= =?utf-8?B?THJRN0NtRTE5NEdFZlBZZTc1YzVsc1FuM2dXVEJGTHdnWnp1ZkhTZS9LMDMy?= =?utf-8?B?VzhKZXI2YWZjYjQ0NG5ZK0x3VHBKcllycFRYcmNuQWhSS0lvRVZualZSWVpH?= =?utf-8?B?dzNNREc3T2wzbTU4aGFROEt3MzY0SE53VUsraG02RzhyT2prMEpGdld1NlVi?= =?utf-8?B?dUJBQWRDTy96MzhxN0pETC9zdWdYNVFiVjRxVXVkQ21BZ0cxaHZtbDZKVUdr?= =?utf-8?Q?7NNiXS?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXSPRMB0053.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(366016)(376014)(7416014)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Zi9ZbW10MUk0aTRSMnNhdVNQTVBPZXFMeWE0WHZhVU9TVUNpVWppYjdzbUxH?= =?utf-8?B?SlRGRmNyWFMvNGpxOFlFeTVLK0N1dTNvVWFmL0tCeDZVbDRheHYyd091Y0Vi?= =?utf-8?B?VjFFK1o5a0p6Vkw2Q1FvenBsR2g2aFRLWS80N2lCTXUzZTZNc0ZKUnpVbk8y?= =?utf-8?B?WFpIb0grdDRJakhrajc3V28vbkZYaWlIVHhiTkEwV2VUN3oxSmNneDh1SE9j?= =?utf-8?B?VjhPMklKM290RHRWL1ZjTTI5K2dneTRjWkpCZ0lxbklnMFBucW5OS0xzNEV2?= =?utf-8?B?bk5IWTlubFNXVVBtS2hESk5CcDJDUVVYVnBmMk11YmQyTmljVVhzNzRUcXd0?= =?utf-8?B?Y3RtMlF0cTRrVHowWk05cXI5MXNtbXVqRW9hbnd1aGltK01lamlLT2lRYytG?= =?utf-8?B?UHROdWp3SmwvaWJwOHZQVXROOFpPcUdSbVBkNFQrUjBLbk1zN2NyUkxrTGxK?= =?utf-8?B?U05Sdktwd0VRSHlaRHJHdzFMNUVxMVZoQ05tRExERGVQdGp4ZnNqMS9MWVpS?= =?utf-8?B?S3ZDVXRocGtib0FkZDljcXpQVEdDU3o0cFUrY1hmSjdpdjdFeFd4N2p6MTVE?= =?utf-8?B?V2RxK3cydmtDMW9zbHc3ZFQ2SEdUeEVFQkQ4MzFtRk1mb2lpa2ZrL1VySGNk?= =?utf-8?B?VUFtdkN4T1RWMGdsa1YrRSthSFlYbWhjWGxBejNhMFpEU3hsbW9RT014eW0w?= =?utf-8?B?Yzk3Z0lPRnVTd3BhaFJGTGREaFA3NHVrVXBXbk14ck5paHNlS3o3STlFRzZH?= =?utf-8?B?OEhuN2dCZDcvQXd0MjhtQlAxb0NiSDMrbjROWFN5OUwyYkxnZ1lKV2E2Q3lJ?= =?utf-8?B?ODgyMlVSaEFqYmxFK0Uvc2xVTzQ5U3c0L0g1R0MvQU9XOE9pSFMrb0s0SHVS?= =?utf-8?B?VFZ0aVd4TURKVkd3K1Z5bXRyRGVWbXZLOGZ2djFMeGN2ckdWcHBNVUpNVW5E?= =?utf-8?B?WVhOMUtrNzZ4WENrOURhTWM4MWcydWZGYmFiRXhCaFJQWmNuUlJBKzUrRTQy?= =?utf-8?B?R1VJU3Y4RXNodWIwSDI2TVdMTVJPaTBSU09zVFJ5TytKaDM4cis2NEJGY3RD?= =?utf-8?B?Y3c4Mnp6S3VBNStFdmh1OEsyOXhYOHQzRUZEVzEzejVGMnJSRUF1NW5sWE15?= =?utf-8?B?L04yUlF1NnIwa2VHb2ZzYUswMm8wYmZ4MWI4c0tFU2hHZS9uTC8xWktHWjNy?= =?utf-8?B?ZW5RazJLK2NjUjVTZ01UVmI5cUNwUUY1d0hUN0x2MDBtK1NCNjJldyt5MWE2?= =?utf-8?B?YlhPQ0VzUy9lWjcxV0QvUFI2RWkzNkVQRzB3S1U2K093cHhRMHlMUkdQUWQy?= =?utf-8?B?YVdQODh1dTZGa2JReUN5TzA0dXlPc2dhanludGJVZGlUWXN5QVVvK25mOXJy?= =?utf-8?B?bS9vQXc5M1NDdFRvWXVIZ2FwZmhyOE9heko2RENQVHh6aXZmZytFcGFyVnZB?= =?utf-8?B?czZjT2Y5Q0JUZ2E5RnpZNk51dU9XOUtzaTg1amlEZ3BkOFRIZndjZ2diT0sv?= =?utf-8?B?VmFPUkF5YS9HWDBHS0M4UytrcXlmVmJaV09MSnZidGZkWUNSS0l2bkZUZVdx?= =?utf-8?B?bCtXZlJEa2tjczYzTVRpM0Zkc3NaVHpzRTBRcFl3TXhLTmJwTlc2RS9WTDN1?= =?utf-8?B?NnAycHR3SFJHaGVzVHgzUmxBcC9wMzA1aE1STUZ5bkZJUjN3YmtZeERrdUFI?= =?utf-8?B?ZUtpZmpBOGpJekF0OHlpUWNub0NTcEYzdktJelUrWmo1VVNuM1hPYmVVdmg3?= =?utf-8?B?OXRYWTRyOSt0NndpNHdLNTVjdFRiU2s3eTdUYWtrZDJoMldqbTBOZ0VhRHcv?= =?utf-8?B?VkkxcmdweWpmOTNuNE11K1RTc08reVVUdTBvZW9YOVVjdEgrMEZCZWtRMlIr?= =?utf-8?B?TGFUQjdSdXcrNUlsZVc5d29wNmJmT0gvcmoyc1dmUzhuckhWN1phbldqYVl6?= =?utf-8?B?N1hZZUh1SlpURGRCMVdZZFZsS2RPdUVHcFJ0dS9tU0IvWVNTWTY3c1hVcHhi?= =?utf-8?B?b2VvcEsra2Z5VkZzMzdwcFNweThpVW1kd21CZkJuQngxVkFoVm5kZXg5ZVVS?= =?utf-8?B?ZDhyNzY0dVh5NDhSRTBnMHRzOHNTQzRpbG1EUHJWM3R0Sk90NFF4SkxmZGth?= =?utf-8?Q?C38uwOKF0rvYEkaZOkPa2KPbM?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0ec723ee-3b8b-4249-b1ff-08de0bff6d2e X-MS-Exchange-CrossTenant-AuthSource: PAXSPRMB0053.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Oct 2025 15:28:01.0981 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: PddskSLsA9TMqpCUtMdXN5GtuhOdq/cowX0gh/VKalSgRI640JdJdS4O2pcINYKAz550db9lxTrkClD2I6jtHQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB6993 Add MSI doorbell support to reduce latency between PCI host and EP. Before this change: ping 169.254.172.137 64 bytes from 169.254.172.137: icmp_seq=3D1 ttl=3D64 time=3D0.575 ms 64 bytes from 169.254.172.137: icmp_seq=3D2 ttl=3D64 time=3D1.80 ms 64 bytes from 169.254.172.137: icmp_seq=3D3 ttl=3D64 time=3D8.19 ms 64 bytes from 169.254.172.137: icmp_seq=3D4 ttl=3D64 time=3D2.00 ms After this change: ping 169.254.144.71 64 bytes from 169.254.144.71: icmp_seq=3D1 ttl=3D64 time=3D0.215 ms 64 bytes from 169.254.144.71: icmp_seq=3D2 ttl=3D64 time=3D0.456 ms 64 bytes from 169.254.144.71: icmp_seq=3D3 ttl=3D64 time=3D0.448 ms Change u64 db to atomic_64 because difference doorbell may happen at the same time. Signed-off-by: Frank Li --- change in v5 - none change in v4 - add check of return value pci_epf_assign_bar_space() change in v3 - update api pci_epf_assign_bar_space - remove dead code for db 0. change in v2 - update api pci_epf_set_inbound_space - atomic_64 should be enough, which just record doorbell events, which is similar with W1C irq status register. --- drivers/pci/endpoint/functions/pci-epf-vntb.c | 152 ++++++++++++++++++++++= +--- 1 file changed, 135 insertions(+), 17 deletions(-) diff --git a/drivers/pci/endpoint/functions/pci-epf-vntb.c b/drivers/pci/en= dpoint/functions/pci-epf-vntb.c index 83e9ab10f9c4fc2b485d5463faa2172500f12999..6e48a1efe1eb267c4c80c7c09fe= 1c6f73c7ccf44 100644 --- a/drivers/pci/endpoint/functions/pci-epf-vntb.c +++ b/drivers/pci/endpoint/functions/pci-epf-vntb.c @@ -36,11 +36,13 @@ * PCIe Root Port PCI EP */ =20 +#include #include #include #include #include =20 +#include #include #include #include @@ -126,12 +128,13 @@ struct epf_ntb { u32 db_count; u32 spad_count; u64 mws_size[MAX_MW]; - u64 db; + atomic64_t db; u32 vbus_number; u16 vntb_pid; u16 vntb_vid; =20 bool linkup; + bool msi_doorbell; u32 spad_size; =20 enum pci_barno epf_ntb_bar[VNTB_BAR_NUM]; @@ -258,9 +261,9 @@ static void epf_ntb_cmd_handler(struct work_struct *wor= k) =20 ntb =3D container_of(work, struct epf_ntb, cmd_handler.work); =20 - for (i =3D 1; i < ntb->db_count; i++) { + for (i =3D 1; i < ntb->db_count && !ntb->msi_doorbell; i++) { if (ntb->epf_db[i]) { - ntb->db |=3D 1 << (i - 1); + atomic64_or(1 << (i - 1), &ntb->db); ntb_db_event(&ntb->ntb, i); ntb->epf_db[i] =3D 0; } @@ -319,7 +322,21 @@ static void epf_ntb_cmd_handler(struct work_struct *wo= rk) =20 reset_handler: queue_delayed_work(kpcintb_workqueue, &ntb->cmd_handler, - msecs_to_jiffies(5)); + ntb->msi_doorbell ? msecs_to_jiffies(500) : msecs_to_jiffies(5)); +} + +static irqreturn_t epf_ntb_doorbell_handler(int irq, void *data) +{ + struct epf_ntb *ntb =3D data; + int i =3D 0; + + for (i =3D 1; i < ntb->db_count; i++) + if (irq =3D=3D ntb->epf->db_msg[i].virq) { + atomic64_or(1 << (i - 1), &ntb->db); + ntb_db_event(&ntb->ntb, i); + } + + return IRQ_HANDLED; } =20 /** @@ -500,6 +517,93 @@ static int epf_ntb_configure_interrupt(struct epf_ntb = *ntb) return 0; } =20 +static int epf_ntb_db_bar_init_msi_doorbell(struct epf_ntb *ntb, + struct pci_epf_bar *db_bar, + const struct pci_epc_features *epc_features, + enum pci_barno barno) +{ + struct pci_epf *epf =3D ntb->epf; + dma_addr_t low, high; + struct msi_msg *msg; + size_t sz; + int ret; + int i; + + ret =3D pci_epf_alloc_doorbell(epf, ntb->db_count); + if (ret) + return ret; + + for (i =3D 0; i < ntb->db_count; i++) { + ret =3D request_irq(epf->db_msg[i].virq, epf_ntb_doorbell_handler, + 0, "vntb_db", ntb); + + if (ret) { + dev_err(&epf->dev, + "Failed to request doorbell IRQ: %d\n", + epf->db_msg[i].virq); + goto err_request_irq; + } + } + + msg =3D &epf->db_msg[0].msg; + + high =3D 0; + low =3D (u64)msg->address_hi << 32 | msg->address_lo; + + for (i =3D 0; i < ntb->db_count; i++) { + struct msi_msg *msg =3D &epf->db_msg[i].msg; + dma_addr_t addr =3D (u64)msg->address_hi << 32 | msg->address_lo; + + low =3D min(low, addr); + high =3D max(high, addr); + } + + sz =3D high - low + sizeof(u32); + + ret =3D pci_epf_assign_bar_space(epf, sz, barno, epc_features, 0, low); + if (ret) { + dev_err(&epf->dev, "Doorbell BAR assign space failed\n"); + goto err_request_irq; + } + + ret =3D pci_epc_set_bar(ntb->epf->epc, ntb->epf->func_no, ntb->epf->vfunc= _no, db_bar); + if (ret) { + dev_err(&epf->dev, "Doorbell BAR set failed\n"); + goto err_request_irq; + } + + for (i =3D 0; i < ntb->db_count; i++) { + struct msi_msg *msg =3D &epf->db_msg[i].msg; + dma_addr_t addr; + size_t offset; + + ret =3D pci_epf_align_inbound_addr(epf, db_bar->barno, + ((u64)msg->address_hi << 32) | msg->address_lo, + &addr, &offset); + + if (ret) { + ntb->msi_doorbell =3D false; + goto err_request_irq; + } + + ntb->reg->db_data[i] =3D msg->data; + ntb->reg->db_offset[i] =3D offset; + } + + ntb->reg->db_entry_size =3D 0; + + ntb->msi_doorbell =3D true; + + return 0; + +err_request_irq: + for (i--; i >=3D 0; i--) + free_irq(epf->db_msg[i].virq, ntb); + + pci_epf_free_doorbell(ntb->epf); + return ret; +} + /** * epf_ntb_db_bar_init() - Configure Doorbell window BARs * @ntb: NTB device that facilitates communication between HOST and VHOST @@ -520,21 +624,25 @@ static int epf_ntb_db_bar_init(struct epf_ntb *ntb) ntb->epf->func_no, ntb->epf->vfunc_no); barno =3D ntb->epf_ntb_bar[BAR_DB]; - - mw_addr =3D pci_epf_alloc_space(ntb->epf, size, barno, epc_features, 0); - if (!mw_addr) { - dev_err(dev, "Failed to allocate OB address\n"); - return -ENOMEM; - } - - ntb->epf_db =3D mw_addr; - epf_bar =3D &ntb->epf->bar[barno]; =20 - ret =3D pci_epc_set_bar(ntb->epf->epc, ntb->epf->func_no, ntb->epf->vfunc= _no, epf_bar); + ret =3D epf_ntb_db_bar_init_msi_doorbell(ntb, epf_bar, epc_features, barn= o); if (ret) { - dev_err(dev, "Doorbell BAR set failed\n"); + /* fall back to polling mode */ + mw_addr =3D pci_epf_alloc_space(ntb->epf, size, barno, epc_features, 0); + if (!mw_addr) { + dev_err(dev, "Failed to allocate OB address\n"); + return -ENOMEM; + } + + ntb->epf_db =3D mw_addr; + + ret =3D pci_epc_set_bar(ntb->epf->epc, ntb->epf->func_no, + ntb->epf->vfunc_no, epf_bar); + if (ret) { + dev_err(dev, "Doorbell BAR set failed\n"); goto err_alloc_peer_mem; + } } return ret; =20 @@ -554,6 +662,16 @@ static void epf_ntb_db_bar_clear(struct epf_ntb *ntb) { enum pci_barno barno; =20 + if (ntb->msi_doorbell) { + int i; + + for (i =3D 0; i < ntb->db_count; i++) + free_irq(ntb->epf->db_msg[i].virq, ntb); + } + + if (ntb->epf->db_msg) + pci_epf_free_doorbell(ntb->epf); + barno =3D ntb->epf_ntb_bar[BAR_DB]; pci_epf_free_space(ntb->epf, ntb->epf_db, barno, 0); pci_epc_clear_bar(ntb->epf->epc, @@ -1268,7 +1386,7 @@ static u64 vntb_epf_db_read(struct ntb_dev *ndev) { struct epf_ntb *ntb =3D ntb_ndev(ndev); =20 - return ntb->db; + return atomic64_read(&ntb->db); } =20 static int vntb_epf_mw_get_align(struct ntb_dev *ndev, int pidx, int idx, @@ -1308,7 +1426,7 @@ static int vntb_epf_db_clear(struct ntb_dev *ndev, u6= 4 db_bits) { struct epf_ntb *ntb =3D ntb_ndev(ndev); =20 - ntb->db &=3D ~db_bits; + atomic64_and(~db_bits, &ntb->db); return 0; } =20 --=20 2.34.1