From nobody Fri Dec 19 10:44:41 2025 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010058.outbound.protection.outlook.com [52.101.69.58]) (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 3D4532741CB; Thu, 9 Oct 2025 20:55:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.69.58 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760043302; cv=fail; b=c04oPsGHTdUxZFhtCb2Azx6BlO5Uu6udWhgL3P49WEqlV9ooZSVtFiHwbTD0C9irLZowVPgUwL3/8vViON5bJQXiVodXdRqQBHJAzjmGliHLpdrT6Ha3ApRcbrlD93vMFdCEf25q9EFH0aqYPlBIC7O7BQIsUBi2IgAHwKy9EWA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760043302; c=relaxed/simple; bh=LOMfi+sIP0ExKFoZ+4SuzecTW90e8Olxw78NTpYmXeE=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Vfo+f5uTkCVCEQkHdkWuGfDaXgmKHu0683X7PFXkCtY/59AUMpIwfNS+SMe5oXjA6DFQKJPYnqgG5EjEGnVhC8aA88UFSZku3M0291zOWfb4GpnaMzdO5QC4Q/0Y17L+PiWtb+I/NWtLidjEH7rb4/19ZovU+RT/xMgD4m2oWtg= 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=mOTekuW7; arc=fail smtp.client-ip=52.101.69.58 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="mOTekuW7" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CTdkm1o6wuPum4BPTG9om7S+3PvctEgGLIzoplUmxrgwcWUOHRM/r/2+V5xIw80gCnzNb6aqYiys/ZHGhTywiwkjct1HEwLcsMzb8QmtqIyOOI4ERBk9emoOiwnDBfGGG5cpBGHCkGiWgXf3gRlqnvDemLiTIsPQ948ehO86DNWBE5O7zP1tovZl7oQVDwcDwjTmds14ciLAFPlAem49c4/ml8KPIrahS/R0SPlhtpPe30gcAUKfGLaoeKgsjHxS+XxcLlucqM8iv9kD2P1QYQe+d8naOI46Jim/t9RuLcYaY/5yOSjCviI/W8OmupezaUXLiBTulYsRoFal707+uA== 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=mJMukrZPwXdqBRQQg9U/et+AgIHnCosZFldeNeqiHFg=; b=H7SZFPtjQSq4+q/AjyNmCttpd/a11/TayVXvacvRskGzGzdi0dDx6i1LQw4WK9F99shxHT1HlSb4c7EyKjk7ofuk3PZfhswNwEOmirGB3z6exGOMYbxH/Qnt/agNrCc6B7M9mfRWlV//aVT6DVvILmxNx+9/qUSntJCaVlPY+xgKV8kIh1B96vu/bs5O2hEKdmEhjOoUFtK4KaWt1WIMoONBgd/esVAz2Xaa3uRm9VacWzQ1nDoGSa1xDyHXC6RoGEgFfthHzbeU4J86fkM8NNxe6+roJZZwwF3QzmXPzKGNCmvkFaYJvyh5DaCR6/LBhcOqEZ+ZYPvLFpBJu6UM6g== 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=mJMukrZPwXdqBRQQg9U/et+AgIHnCosZFldeNeqiHFg=; b=mOTekuW7AbaIWmbzpPdqAAVjKFbxuokfKRksRpODrxWzy+l/fZ4ONH/zK9oCckYFoKlMMj9iKSWikuJ9Cvxi2wLgBNR29NLQ2RtSUoYjTpTTtB0hpdahQHOKbgNTeO/lN/ycg/2JlON2rKKjOXAFeYnP/CC/4adXy7Yj5DpOUXG9h3JPSnx2q5jbV5mpnlZWaZHGOfFRi5AU5AtFJcbio3t35zCUE1WzzKpsgmvhZCAWsHjcu2s57/pZ60aH35L/6LI5RyePNKj+QXCBAbcANd29u2F//yJEW397r/Mr4vOAXkc9x/CduHNxWUG56Ptcvq33mvR+5TqUfsqFHFOb6w== 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 VI1PR04MB9906.eurprd04.prod.outlook.com (2603:10a6:800:1e1::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9182.20; Thu, 9 Oct 2025 20:54: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.9203.007; Thu, 9 Oct 2025 20:54:57 +0000 From: Frank Li Date: Thu, 09 Oct 2025 16:54:35 -0400 Subject: [PATCH v5 1/4] PCI: endpoint: Rename aligned_size to mem_size Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251009-vntb_msi_doorbell-v5-1-4cfb7b6c4be1@nxp.com> References: <20251009-vntb_msi_doorbell-v5-0-4cfb7b6c4be1@nxp.com> In-Reply-To: <20251009-vntb_msi_doorbell-v5-0-4cfb7b6c4be1@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=1760043291; l=3721; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=LOMfi+sIP0ExKFoZ+4SuzecTW90e8Olxw78NTpYmXeE=; b=3NMLv0leNY5puHhaIX0xvKmSCHRFdtQfnKHTsMNFWQEiRjHpNWRG5IUSzwKph4KBKzuqbhYhM md8mhDosxGDDSK8UNVZO+jivRZkoJwmV5UcJJNIiEfzvK5oGL30Ri1C X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: PH5P220CA0004.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:34a::16) 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_|VI1PR04MB9906:EE_ X-MS-Office365-Filtering-Correlation-Id: c8d21b17-1416-42c7-e2e1-08de07761ac9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|52116014|376014|366016|1800799024|19092799006|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?R05KQWRsRnkzbUJBSHlmeU0wQUJJcVJDdEx4QnBoV21NVVBKaVd2YzI5ZURI?= =?utf-8?B?SFBRMDdXVEVMWGZ4WTk3Y09EMGN6dkJjaG5uZTFXV3lXd09DNG85YXNmZGxF?= =?utf-8?B?ZlFLTGlVSmF1bFFkT2VhZGpOS05wSVFIT2FPUzNueFI2c0pSektkaE4xaW9r?= =?utf-8?B?cTk0N0NodVdVMVYzampRRUpBNDNJclFTWFIzYlF1NFNjSmd3V1pBOERhZzNl?= =?utf-8?B?WmhpM1IxL3FJTjZxZWdRRlpkQ3lLeVcrR0xJcUpJU2FITDF4cG56bnpsNVpM?= =?utf-8?B?clphT3hmdGNwOUZ6MWtWQmRuYWZQdXg2LzN6c3BYbis3OGVEMmpRTHFwT1c3?= =?utf-8?B?VzJZT0wzY3VWanZ1MHNwUTJOWVUyRHVWN01Dc0VLS0tPMVVTTkc1UlVQQVNt?= =?utf-8?B?b29YcDJZN05tdVM1VWxiMkpZZlVHSGd5TzZESXpnK0V6djNQOE9ySmNKUU10?= =?utf-8?B?QjQ2cjFhNnFyWWdoNjd2dFBub0dtd1JIU0RkRTlpR2JDUWFqbDlMUG1yMk5w?= =?utf-8?B?SCtXbTVwWVd4UTZCazN2Mlc4MVRlOXNVZndSVFIzejNkWm9DYlhZakxKOVM1?= =?utf-8?B?NGpLTjdLREl4V0M3VUV6UXhhZjRRRzJ3c01RNVJheGl3U1NscjN1ZWxXTDAz?= =?utf-8?B?aGRFRUlBUXU1ang1cGFJOEZEQkMwcWFmQXArWHRhd0dES1lUUkgxTVdTTTRF?= =?utf-8?B?Z2l5UU14MGhzdjM5dnJYRnlTbkNKWHpTa0pWQk5oSXk3Mm5CVzRxVlNRb09P?= =?utf-8?B?dGwyRUVhVGtGbElaYS9OODZRL2NvMExRNWh1cTlodkN6b2xNaVFReThFVmQr?= =?utf-8?B?VHFmWnppcEU4R1lLZVFsSlVUTER5TjRRQkh1dURTWG8zMEdJNzYrL1A2OWFK?= =?utf-8?B?TDdrdk1jeVJPUEZ2TUswZmQ5YnZ6blhDd2pxcnJqZ0s4OTRuZ2RGT3liUlMv?= =?utf-8?B?OUlVYUh2elJzRnJKT21rWDBCak1EUW8rOWxRZFREZ3U2U2xUalV2N01vR096?= =?utf-8?B?djdjR1dHQUh6RXFiVTNRZ3Z3K3ZxVEpvRHN1OHR1QWhRT3ZYajRhd1RUeXhw?= =?utf-8?B?Qk1FK3pnRm1Mb0pLczQwa215REpJWlViR2wxemZtVVJudnljdkJyTXNsUEgy?= =?utf-8?B?TlpDdTZyYVhwbU81RmJRUzhZMWFaK3I2LzRUTTlUd0lGZDk2WC9pcU5RRUxk?= =?utf-8?B?QkVOQzBLZXMwZW8xMnpTRjg5VTVSamdabHk5SFRGZllzMUkyUll3ZTBpVVh1?= =?utf-8?B?c2ZzbzZMQXg5aGliQXB2RHFMTzVJQmJHZ2QwWDg0RG9icHJhK2hacWV1SVFi?= =?utf-8?B?Ym4wTlQ2TnIvK1drcjFsTk1NOXVPbmZJL29SUjkyQWI4UmFKVWhMeTdBaVJS?= =?utf-8?B?K1BQNzFPYUtqMGNvTmxDdkUxWVJTT1pFVFMwenBjcm4wRkd6MS9YS2g1bThy?= =?utf-8?B?bEptbThjTFoxMHlEZzA5Rm9MOFNvUGVMSzRDMmp2WmJTUGhWZ1ZoaTQxL3RC?= =?utf-8?B?K3EveU5KL1pHTGRMYUpWNzczbGVPOFdnSGhTVlJ1ZWE2VVh2VlRLczBqYTNM?= =?utf-8?B?cFpGemp4U2plQXNxVXBKV2hTRFFtYVNUNG9IbjJVV244MStFem5zTHpSd2E4?= =?utf-8?B?MDY3KzVkMVJsTHo5dXFLY3JhbVVPM0xyL21LcTJ2SjJUYWQwVk9xeGNYSGxk?= =?utf-8?B?ZkRDbUdKeUg4TEJIUEpmOGk3b2FoUCtDMC9qOFBMeHVNdWdpNUt3KzVpbUd4?= =?utf-8?B?S0J1Ylc3VUJmN0ZBSEk0aFFPQ2VXRjBWNkNSZThzN2xocnVsU2Vua1lzNmto?= =?utf-8?B?Y05PTmYzZDNnb3lXaDY1eFFTMmltNFE3VUQ2ME5MaTNyZ3d0b1FUK1lkcEU2?= =?utf-8?B?emZzS0dJS00rV20zQlEvcE9ESzdDUHJva0lsZ0Q5dDRqdjhGaDlKajVjR3dL?= =?utf-8?B?NFVjR0FXUm9sZFdhdHlLOGZidkxvWk9xait3NmVqZWM3czRaWHMzdTFnZGtN?= =?utf-8?B?aHE1QXlsRmhYbklOSTl5OWVzSHFvSmg3Z3FZWVJjcTZndXRVNTZVVHRRTUx2?= =?utf-8?Q?azGR7L?= 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)(7416014)(52116014)(376014)(366016)(1800799024)(19092799006)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dDEwbVBWTDlsZy85WWRkd2FZRGl3bkZkOEJwS1o4ZjRxZWFqWTYxZFFpbDlX?= =?utf-8?B?ZXo5dnE5VnQzSThTaVREVGR0KzVpMkNOOEZ3NTBrczNvSEdIN2F5RFFXUVJw?= =?utf-8?B?b3JBVDBOaVp5QXJoV0V3VnMwMTNvL0t2d05jWTUybC9uTC9PRUVYNmtmSzFE?= =?utf-8?B?RnRMV0plZldCbUJ6cWhjYUJ3dE8va0VpQTkyc3gvOWpRY2d1Zkp3UThMSkRw?= =?utf-8?B?L20zY1k1OWpjNVFFanl1UWVadWpyMFJKaWp2R0l0WldiWVI2KytjR3lacGdH?= =?utf-8?B?cEljRVZkeTJOKzJjYzlmUHpINkJadXM1VFlmMWRDYTNFVnlXVVVIVlBhRDNx?= =?utf-8?B?eENQQlk0UUNxbkxrSnFQRkN4NHlwZFpLUFNPcGM5dHNPOGt5Q2dBUTFNQ3Nr?= =?utf-8?B?czgzRlIvaE16UEdPRXZ3T0JhRThrYm0wQmhjcXd5cWNOZE01YnROa0xzSmJu?= =?utf-8?B?T2k0ZWZuNHJsNEg4MU4wcWUrY0VxQ2lSQm5ySDR5ZXd4NkxibUlPYm52bHJa?= =?utf-8?B?c2VJMTZWTXVFL2M5R2JFZjA3SS81N2RWVlJFRUNYZXBEYWJ1ZGRaNXBOMUpO?= =?utf-8?B?WjR4RXJmUlFOZDhKaG5UNDZjNTRuV2E4cE5zcVRDQnI5QWhEbFdqaVYrQU1Y?= =?utf-8?B?VThoU3JrL3pCOG51ZDBYalpCWlpQeGt3L0VrMlc3MVJxUzNDTVg4VnNHUWVh?= =?utf-8?B?dUxEcmlVWWNTYXBiODROWDNMYzNiektXN0gzL2xtdUtKU2NhSS82a3BWdnND?= =?utf-8?B?MThYcE1KTjAybmQvZnRBNmpIemNMb1Q5RkV2YlFxMFFBK3FUYjNZN3hSUU01?= =?utf-8?B?a2hZN0RReXNFbk91ZEFsQmRRbVJCQnpaWlozbC83di9yUEdzZ09nQUd1RWZp?= =?utf-8?B?V2NuR25tQkdTM1ErSEJuSnpMcmwwdWlxeFN3N1poY0hna2dCQWtkeVZPdkRw?= =?utf-8?B?YjVwaEc3UzBFK1lnWDlpT0t5eExsVEpTelVEVlBuNlc1K25JYlVvWG00ZHEr?= =?utf-8?B?MWJzeXJ5RnBQMmJmRFJUaWdWcm1KYXQwVTUwTk9XelFKM0RQZGlDU3R3S3or?= =?utf-8?B?U082RU5FV3JZL2I3blg3S2RacDVkQVBlM3dmQWRiSFNxSUlIRnh5eUlLdHcz?= =?utf-8?B?SnFOTW45K29XOUoxaUN5d0JQYWZDenFKZ2E4cmZBaFZTNFREdkxqVFNTUG9x?= =?utf-8?B?ZDRuK05xMlRUYTZ0WmRTRjdKc3phejFNL3BCdVZOanJBelR6L0V2UTZUWUFU?= =?utf-8?B?dFF6Z2NCcG9YS1JMNW1QMlU2U3RySDN1L3dnc2F4K2FXQ1Nyd1EreTJ5WktB?= =?utf-8?B?d2xoK3JQMTcwaFJSdWxJdm9Kd2RORTIyaVU5RktNczNGYUgrMkFNWGhxVURU?= =?utf-8?B?M2lWTjZWd0RnNDhMNEtoVGRNZ0JoYXhEZ0pVL25QM0FBTmhaNjlhV3pYMEd4?= =?utf-8?B?QTJiMlpkZ0d6QjNGZ0dKWkNlOU1KbTlNRVZRTUhWMnVEbDNoS0JJOWNIK3FY?= =?utf-8?B?bHJSQ1lramRVZW5kUFk1Rk9SbG9SdEtzb1NucEQvUVhWVGE4QzA5Wm9HblJ5?= =?utf-8?B?cnNWMzIzaFBGakxtV2ZQOHY2bkx4UGpwK1B3K2lKQi92cDBZSVVWMDNGQUk4?= =?utf-8?B?R0tEeFVBYXppZFdFME9uMU1sWTdVUkpoOE1qMVRwVEkrTGJuTis4YlBnV21m?= =?utf-8?B?UmdET0tpSjhwZXB0SU9pVVVZZEl5a3FTd2xudmF3UHJmOGY4VHNjdDhHeUxY?= =?utf-8?B?SC9XKzdKV0hYajVNOHVNczdYcVNHUzkvQ09QaWpwZk44cU11Q1kyaFVSRzdy?= =?utf-8?B?K0hhbXJ6cmxEdjJzYk94UkJiOXNQenE5YXB3SWJXNUpDRzNPb0R4OEtVRDNo?= =?utf-8?B?ODZMWkt3dXJVUDJheWhZeWdybE5qdHBxVDc1NVJ3cUNCZHdnbWNJNEp4ZDYw?= =?utf-8?B?dEhBTXNMTy9xMXFWZ0JLNWNRMDBSdGRFNVV3M2JHcDQxRW9LSVlzczQxdmpP?= =?utf-8?B?cHN5b3V1MW1MZ2I3bUZqN2NkWW9JMWhPVTd3L2I4WEM5K2I0R0QvNDRxRUNI?= =?utf-8?B?ZmtHd1VsVVpsam1raUdDaEJCYzNpMlcwSTU2TUxCR0VVYmtOaStEV2RvemRM?= =?utf-8?Q?9OhDASQuJXRq1/zF4cJqW/7xx?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: c8d21b17-1416-42c7-e2e1-08de07761ac9 X-MS-Exchange-CrossTenant-AuthSource: PAXSPRMB0053.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2025 20:54:57.2057 (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: wx7duqAF3wkEp28xA6mYJpJa/J3wOK71ALd+ckTB/OG6oaGJWd2DHe0BfXo6HQ3DbAvvCNcDe/6LiGmtgrjegA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB9906 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. Signed-off-by: Frank Li Reviewed-by: Niklas Cassel --- 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 Fri Dec 19 10:44:41 2025 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010058.outbound.protection.outlook.com [52.101.69.58]) (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 88C5A274B22; Thu, 9 Oct 2025 20:55:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.69.58 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760043304; cv=fail; b=f//x+vraSAEBt3NWB7jZUtMPh/tEFGNVy/4V/1k7+dCPvb0YqhmNOxYIzMKGaEGkmx+jR7mC9v8e50UTnMJMDDM/qYGzBp4kbx8NTMCIKQzH+51bD2HE0dzaxh7Pbt0/g9D9dsliID1nWqSCJiPr/1281Q2vhop18cgHpmjEJ9M= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760043304; c=relaxed/simple; bh=YJ0UBVfDSrJ/g5efRs9S2lD0X1Dr6V8TYsPoQFvWbw8=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Y4O6TszG+ZXuw4RXmYMBYbXxQpmWhvXem3HiBFWJPACPi6wLvP0JuDowLW3IWVdOhqs/azSODoawpZt3YiwlGad6LRaqQoPZyMD5urZLBdQnGrYIVdyLjGX8+JR3cqwv9MuZHijGTCIbVpem2fghkmGwkWdxM6doEveuwram0Tw= 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=hVOWyMZW; arc=fail smtp.client-ip=52.101.69.58 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="hVOWyMZW" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pFMiOdW+0uFgLpmxzH+F59K0fSAOeAa/7n2qDjwd4HobqHiMpGZp4TvJFE/LTmAV7vPH5APnfGv3jywxYoeLCif8Rq1aj9hedoJr/Pkj6W8uIZsII4F5mwdI7S0WcPA/yBl1apzXkHqPoKsILh7BmdzyVvaPtaL2li0d4vIj9H/B+p0KAltpXELu/ddcOM3dDRNKWFkwu7p0hGYcP8tXpCUOrB/ukGVQzzIwHd+71sV3XP1s3n8dyfvZxlYVyXJYfzRRBbQEhLTsGXiDoGxnoVl97f6eTDYW3QHkT/jv0AF1CaVoP+k4SFGgOVNFZ7VpTxWkEIiPQi/fsS22becepA== 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=McvAIrF6Nla4nUxGDP4EFkswJiFKbcala8l5tO65Pak=; b=mJ8Vb9Lf90gaHJQQIpWS+tmb3t9sFY+nqm7RzQqSNT2WdxRtra/r1uVAomaSspuVAQ6lyq1P7vMXQKZGOdGjCQwYzWoJ/YerTLN36FuxLaVdHf5q4ci/drnDFnKAjw09zjgVLNPTZlNlUc+c5Hcu7R8RWdd/h1A4fRpVt9mGqi/s6SooQQwfqFLtC45Fzxd2NBaLtLvsMr1HMAECubnbQ/isj3Q7VFd9+ptokCUEKPYzbDTwzmmgdPzZxz5sppci1O11slTqmZUBKrxGd7XYfs+rSwqGpwKvQgOq5yFx+IlpLeYyc/uoRmsZOVtr8M9qdYWNj3BGlm1dUqmz74kVCw== 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=McvAIrF6Nla4nUxGDP4EFkswJiFKbcala8l5tO65Pak=; b=hVOWyMZWNTW7ag4yXGlJF7oXzUXTzM83ZMOOecI8UYFdCBs6+9kQqW6A8XCvHELsxa0/+owd4XmV+QeBw4hirw815mL2eldvnhi91YI0/d/MTU1btkR6GaLpvPVPhEsaIhXHUWg/f+S7MDfvWJVHND2PEZIljj+IpPBd/N438Vg6jmC6oCIJLFfUgSogyJsFq8d2IzmzpVt4uPivlGnSFobT8QFJBxGuqyMA9ZZFwyNufyk/PJnK9Zp+b+h79nyF4Ag37YDJVKxY9Lk8Utk6YTvkHwncNz+ooro71ExQB9rGkf1xcPuPPGAwainPlmIPWit3M0am686aamc5ApPfig== 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 VI1PR04MB9906.eurprd04.prod.outlook.com (2603:10a6:800:1e1::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9182.20; Thu, 9 Oct 2025 20:55:00 +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.9203.007; Thu, 9 Oct 2025 20:55:00 +0000 From: Frank Li Date: Thu, 09 Oct 2025 16:54:36 -0400 Subject: [PATCH v5 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: <20251009-vntb_msi_doorbell-v5-2-4cfb7b6c4be1@nxp.com> References: <20251009-vntb_msi_doorbell-v5-0-4cfb7b6c4be1@nxp.com> In-Reply-To: <20251009-vntb_msi_doorbell-v5-0-4cfb7b6c4be1@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=1760043291; l=4288; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=YJ0UBVfDSrJ/g5efRs9S2lD0X1Dr6V8TYsPoQFvWbw8=; b=qbjLSa8U1ftTX/wxBsWCcztxs5g8GbU7XkIs0VLA+LAhxD85uPGfrgXZnc/jHNCNcI+mWh3EI 4LHdiFJl+CtCsloaCP6s0bxYHnYSFst2w0i9/ExOmNxxjT/deqIOc9n X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: PH5P220CA0004.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:34a::16) 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_|VI1PR04MB9906:EE_ X-MS-Office365-Filtering-Correlation-Id: 68b7c94b-063b-4bf6-e4ff-08de07761c91 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|52116014|376014|366016|1800799024|19092799006|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?UTVVdHNZQUUwMDlUak80b0krL0hiYWpHZWpNQXdUOG5jNDBlTUVPYnIzMzJK?= =?utf-8?B?OGg3NVdXdEdManZodCt6L1U3YkdPR25vd3BqTzE2TVpZUXBXQk9XNjI1YlVX?= =?utf-8?B?TDJKMjJmTXZBTXZrM0EzVUo1QjVyek9Md3VmVkNZSzhveGxkb2NGYzhZRG1K?= =?utf-8?B?N1EwaE13WVFXT1J4WmdNNDZCUVVoSmIrQjIvZFNLZ1J6SWEzRDhZa0wzdklH?= =?utf-8?B?YXJQTXduMjdVb2Q3YkVlSThicXF3YnpRVXIrclR4WUFrNUpSMFRIVmlQZUFX?= =?utf-8?B?bExpZWF5WEJLUUovNzhwRmpRaURVa2E2VlNGaDAwSVB6MGhTZ0I5V2Q0UHFE?= =?utf-8?B?UVpEQkRkRnJmcTYrUU5aSzJqRXhtRTI5aEpNWnZnZHROTzNEZkVzdStPdnU5?= =?utf-8?B?azZKWlRNcFJQc09hNFdLd3pjVElweHpMQ00ydHJ3eWZUVWZDVmtpNGw3STdZ?= =?utf-8?B?cUppZnlCcDRtZ0ZUeFBQSUxHcDVVRVUybkR6YkpnYUhnbDk0OWI4cm8wamZ6?= =?utf-8?B?NFAzSzR1NHdjMjZrQ2lnT25TUFh3amZSYnpCNUV6RUs4cmx1WnBkOGczSktO?= =?utf-8?B?RDhHUVFueTFIVEU0MDk5cTNKTStlbVFvYmFOZzFwYXFzb05iM2pZUWVmNzZF?= =?utf-8?B?dFUzTTlJN0Z0bmhGQnIwR2tHMVZvT21TdW5qNEtUZy9yMUsxd1ZGdnVLRlVZ?= =?utf-8?B?NzRodDdWUXRLSUlDM2xDWHA2ZnZiNElFaVJKc01jMUp2KzBDa09IV3BaZ1dB?= =?utf-8?B?SFFEYnk4cEJWa1FSZDFqT1J4WDlKZDBSTXhUMFhDY3pwTHdVTzhoQ0RHbC9t?= =?utf-8?B?TEw4UTZtVlVyRHlBelhXSVozdndNa0lMWERLQmQrVGI1YkZ4UURHZ0krLzBH?= =?utf-8?B?TGhZem9TL3BwaTYraDBBY2QzQW16aEc4LzZMN20xZ2hxU0J5b3Y1UUFUOFhW?= =?utf-8?B?VElDRHZoT0RJQVFESWF1bHhVNHltUDFMN3o2dXZhbnZFWlhTT2dyaWpYSGxK?= =?utf-8?B?SXF6YkpjR0Q0ZWRVS1Y4VnlNTVVQTDlCRzc4NEUvYnpIUHlpbHVZdUYyQlBm?= =?utf-8?B?U3VnRnMwMjVUWHRZZEZsR2lyNldvNGJzdG85WngveEpKNjVGd1BIQ0FTSzQ0?= =?utf-8?B?R0ZLSW85amt6TUZoWCtRbkFscHMwVWcvSVdySU00YmtWc1NDSkd2cFR0NXFE?= =?utf-8?B?OVQ3WksrWCtDM3FHSU1Qc21xeHF5NzMwRG1DTW8yRXh2WVorOFE4SEVlcFJh?= =?utf-8?B?c3ZxaFhpRjh2b2pkMmtTdmZlU0Q5UWMwcGpjRXl2R203dHo5VXBZVSs5ZWFH?= =?utf-8?B?eG1NQmtQRS9SbmpLajJsQXZzUlpFZ1o4KzNuU3ZmYzFRTTBXQkJxZmZNTFM3?= =?utf-8?B?TkFWUDA4SjU2dTVOeExYN3dPRldUbExESGV4dlV2MEczZ1dUR21WVFk5cURB?= =?utf-8?B?cjZ4NlB6RWJGc3FFSThPUUE0NU5aTjRJMUNtc0J4T1RXck1xLzM4dlpCNCtu?= =?utf-8?B?U3orWDFneHZ4dmtTZUtUcFlMRWhKekVyQS81VGRDaGxIamNTQkVPWHhzVUF2?= =?utf-8?B?NVJIRHFNUUZNU3lPSkN4d2lFMzdCTUFpMy9FSEF4azgrZkhaWEc0UEl4bkdu?= =?utf-8?B?cGkwWERhaWlsTXR3MS9rK1llVzVJZndKMFN5NWxjYVZvWUpuVng2ZHQ4OWJk?= =?utf-8?B?NmkyVkVOZDZQQ2lRNG45aVI5eWd4NG8wcVRWcUVDTjVsejIvRmxTQW9nWEJt?= =?utf-8?B?dWIyZWp4QlJFYU13NFdpbmNzUFloTmdVbWVWKzJKZ1ZZYkIvLzIzcnFnSVUz?= =?utf-8?B?Qzdzbks0bjJpSlJYUlFVL2xSZkRpREhzY1llWnVkM2xNNVpDNWJHV1hJZ1lw?= =?utf-8?B?VFZLenJ2MGVuWmVNejdXVnJLK3Q3V1FQRTFjVmJzajY1TUVDb0ZJczlLdm5x?= =?utf-8?B?Q1ZBMDVjb0tXZWpXTGwxTFEzdFhFU1JNTENSQlhDZlFGN08zODc1eithU3lu?= =?utf-8?B?NGxHcXJkY29SRDlaU085VDMycUc1TVlQRGVocGRNZFd1bGRhc29ZRHhEMEx2?= =?utf-8?Q?XBq/jf?= 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)(7416014)(52116014)(376014)(366016)(1800799024)(19092799006)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NFlLakl4WWVUYTYrY0pJaEVKY2l0NjlGbCtvQW1oS2RlYWZ5N1I2bm1ZRGh5?= =?utf-8?B?MEdYQ1IrZEEwdHl3UERxbGN6a01xTW82SCtLWWwxNTI3eVZNSTFhVDFReVFE?= =?utf-8?B?bnc4K2RjRWY1djR3bnhXVWF6WCtWQ0svZC9UalVjREYrMmlhOUlKSms5MEFi?= =?utf-8?B?dmtaWXdwbFU1N0RIa2h2aU1Rekc4aTA0eW96QWE1clhxb2REbFI4L25lUXYr?= =?utf-8?B?SWZIcDRCNzdYa3ZUMWRvREk2YmJIY2wvOUIrWVg0Z1RBZjl1RUd4ZlZSOG9D?= =?utf-8?B?ZnpDa3VkdWpZaDJrWG50YlVSVE1UcGNVT1BlajZTMnFrajU5OFNUb3B0a3hv?= =?utf-8?B?Tml6T2VMRk55ZkdvR25ONk1rRVBROU5SQk5kRXBoajZ4MkJUc2REalBEakRo?= =?utf-8?B?NGNZQjdUcWxnWFNGNTdxYlljNVV0RExxak1DZ0NJelFScllCbWkwYWthYkxL?= =?utf-8?B?M1dGbUZjbW1lSU1lejdLMVNuTDE0Vyt1UlRhdmpaZGhOTmlVRzlZQ0diSHI3?= =?utf-8?B?NlNldXRraW5RcnY2ZEVCdDRZeUhyU0MyMnRsQkVRMXlRQlhQcnNTMEtUYnp6?= =?utf-8?B?YldQZHp3NEN6cncvOVdzdFh6ZGd3UjQ1emEveXpDMmE3bWVCbTRoUE5ucHFm?= =?utf-8?B?aGxIRkFvdTlNTzBiaDR0b3EzbUFrMUI1WkNOQWNncDdRZ2h2anlaUnpqRXlT?= =?utf-8?B?QityaW41QS8wZGNsVWtPZHl6U1VYOWZpQ1RXbktEblFzMFkvKzE4YW5ZRERo?= =?utf-8?B?TS9JMmtjRTBVVStIdmJtTFB0WDFpT3cxSGR6aVBmL2g2a0MxQVA4TkRYazVy?= =?utf-8?B?cjIxZlhuTkgxUE5EMjA5VmpNQWRUNEZQQ2JCd1RwQWljTkRVUk1FY0dyaU42?= =?utf-8?B?ZVcza29URXpIdWVyV2RpS3BQakhsTzVVMHRhMGZpcnpvSmxEN2x2aFNOejBs?= =?utf-8?B?OUZrTWpvQTRGaCs3ZkR2dzFqQ0Z2QkF1ay8wVXVtWkRLRk1zWEpDRWxWdTB0?= =?utf-8?B?SmtvVW1HRUNVRHBrZXV6aHZsVTc2S1JPanFMVTNnZkUzcXhIcExiYitiVzVN?= =?utf-8?B?WkcvTHo1U3ZVOC9qbCtHYllqMzV4aVg4TVNmYXZ5TUtZQi9HemNlQXlwMHAy?= =?utf-8?B?L0J3aWNjeVFGY2JzK0hKcFcrNUhRaEJCbGZKWVdnam1PVlBsM05WS2pZQkhM?= =?utf-8?B?aWR2cm1UbnV4NzFPaWtaM3c5V1oxVmdMSWE5dU1yNjFmZmZzbWdvN3NVYno1?= =?utf-8?B?VnV3Z1VhZVpla1FNc2tqVVlCMXA1Z0tGVVVNRTcrM2VnYjdkeG1XU1ZKaW1w?= =?utf-8?B?ZzBab2hoS240S291enMxcUYweCtyZ1NQUGlqVFBZeGJ2TDIrSmsrcVJnK1Fz?= =?utf-8?B?UkppNUxNRWx1WmJnUHBRdDQrWXQySnp6ZmRldzN4VSsxK21OeHRYdmd6bVNj?= =?utf-8?B?RDVsU2NBeWNPOU81MW5OY2U0Njg3UmVLU2J1d29vemJaQ2pkMWhMbkR2ek04?= =?utf-8?B?T21XeWxGM2lzQjRzL05hd2lwN1VtWXU1dFp3U2tpSHBkRlA5WGFxalZXRHFy?= =?utf-8?B?VG01czlRRmZBRzBmQkx1ZDdKNkF2VTEzZ3ltM0tzcDFpSnQ2MU5zbHZycWFQ?= =?utf-8?B?WGZnZ1llcHA1aGlEdXJ5QTdkcUFwNi9kQjlCNVUvbGpTUEFuSURyZVB3L3Zh?= =?utf-8?B?b1R0WGgyQzhuai93MlVidjg5N2EveVJYZnJteDJJcDNnY3ZqZytoZFNrcGo5?= =?utf-8?B?OHljNElkOWp3WmFnSUw3ZHBBSFFycnpzSFhhaWJiS2VqeEdlMkN6SUNndFk4?= =?utf-8?B?RURORzVNelYzaG1PNW5LNVZta2tDTEhMS3ZWQXB0TjBLc3Q1cWtaS3RmSHl2?= =?utf-8?B?dUZwRENlanlTWnZkdys1K2tXU2pHQ1Zsc1V3cVFxZTdLNVhlM0IrL1dNMzVl?= =?utf-8?B?SEUxOXd6RVNkR1RZLzY2dVhoQ2cyRjRlNWlMc3lnS3FjVXlRc3NmSWZoclJs?= =?utf-8?B?alNTK1g0VnZiajJiSDI3QVBIdGI1YThUdlp2OFFEVkx4Q3l5VTNrRGdwMWlO?= =?utf-8?B?WVpEOGtiMkRMdno5dmdxSGMyQkpoVm4xKytHNDk3WTFORHozVFJnNjY2VUZ2?= =?utf-8?Q?665VB4Sfqss2jjdTlCHbcdpjy?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 68b7c94b-063b-4bf6-e4ff-08de07761c91 X-MS-Exchange-CrossTenant-AuthSource: PAXSPRMB0053.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2025 20:55:00.1812 (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: rJJ7MoEBphDBhcZFWOXoG6txhUzwVwc6dneGrNmRRQnMazMIImEI9njnEYoygNxFMfdUt58K29aShIxwpfTMAw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB9906 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 'size' and 'aligned_mem_size' to avoid confuse. No functional changes. Signed-off-by: Frank Li Reviewed-by: Niklas Cassel --- 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 Fri Dec 19 10:44:41 2025 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013013.outbound.protection.outlook.com [40.107.162.13]) (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 DE38C2765CD; Thu, 9 Oct 2025 20:55:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.13 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760043309; cv=fail; b=C8EKTeg4Z7IRoCzK3/N4nG1AT+1fg+XwutYEiRfoAY1B0gp8icac8tP5EzIpy+ZCrHEGS3xMqRw4vJsIy3N0UGBv60ji4IekkNwHxwU3sTugVcqFlAdJSTrhkV8/aoKclOoc4iSUeIZzDfDVVoUdMT55NNb0bYz0Ez6UENfwIHQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760043309; c=relaxed/simple; bh=uuWJTyw995bIGlgoLpOyEfFcEHk+Dn9is5g61+XdMWc=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=TEdC2bJ6zexmAUByRMwesLc88kezwHLABX/PySnSjMgENbEnp3KMIzDHEWbw6ZK+9KLVWZ4+A+1+eQhnFuuL4jMS84mQf91BrZg3Y82293GyrY0zST4isSAQLgSaVvS2FgBKunrIZHzAAEpwTh9IF6qdbPjXGNcFgibta1K0hL8= 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=mxxjrPg5; arc=fail smtp.client-ip=40.107.162.13 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="mxxjrPg5" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SCiCg1xwakbgeue50f1paQ/QZat82a7fqh58qyTnmajDWdL7p0v267gZjno/IpgK9JgwLhmt9gtzIORkBWDwz9Naz3anqG7CL2qSemBOCL6BI+qtguQ91LosR+nZ8h5A8OMrjW490UqcRAhVgiMbBjmkGJiwuljv3fKODHQ1snmbpCn+7RARLvIZWaSjxC/3TMTwPQ7nhzWnsckW5/FuE3uDchAZD9vB7l9r0xUSKVVnqnDJO5QC4oIYeYNmbgnv2+ZkYo7Oj/DPYuiRTB7LhtNubd/mZ0F2iMF0h7G/bdVAc51FNqFjRJaT+OIQbvrgeCQPQRZEKYp02bLX6Gzj+Q== 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=BMOhYkM5MRZAGeSAc0j0lEVF2B4k1ENE1Iv87t2tLlwZgZH7OLjGQsC+wckx3JqAhxtG1497e3ghuTAS2HvfUMv+uTqVqUOjjX352uxC0N7GnF2T6aQdX2vHYFC10Ogbclclzf0+nWROLUNYIv77MPRoTHbf5CPTtW57Mx9J6056KbG/8iFkBYhWeG3GS6J3SA+t8/lmnSWy+Bg3eJ6OHBXuKuGUXdN67EK3P4jgWjU+bYMSgO+bNGOc0TkLgeuzmJS7TmG3prGDnRu6CgieNme513LYK0cAqZxWLZu89frLFrdIFcNhjaJ8AAUOnvHOIhFiNqKqC9XhRUdcR+1ZPQ== 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=mxxjrPg58X6oPvo/XaONfA8skk6duqQGQEFeuCHoq6i1rdzsG5y1d1J0vqwjLRdYMKJE2XjIdTG+41nGryMAo0dOQ7LlBRmkJ4dv37JTKTakjfFjxSER96UfMb0UHt/CoNvWAqw9AWHxpOeTsYN11JDFQtxqK58xXQIZZZG9uwOuk+EQDrRq4Bi7Czu9Wc55MgYLo+733xkbDhpQrLKFFtO9TTSYbfMYfj+yDTWZyhA3J/8KWqJvh5giPCMWCuKKfE9ghWIO/Aef9C9K5Hb9e8KRuPBh4Fh58ch9ZF5RiapQcOZdJ8V/1WGLdh2lxUl0UNt57bZ/wFe9Bn3z9jdRuA== 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 VI1PR04MB9906.eurprd04.prod.outlook.com (2603:10a6:800:1e1::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9182.20; Thu, 9 Oct 2025 20:55:04 +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.9203.007; Thu, 9 Oct 2025 20:55:04 +0000 From: Frank Li Date: Thu, 09 Oct 2025 16:54:37 -0400 Subject: [PATCH v5 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: <20251009-vntb_msi_doorbell-v5-3-4cfb7b6c4be1@nxp.com> References: <20251009-vntb_msi_doorbell-v5-0-4cfb7b6c4be1@nxp.com> In-Reply-To: <20251009-vntb_msi_doorbell-v5-0-4cfb7b6c4be1@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=1760043291; l=4979; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=uuWJTyw995bIGlgoLpOyEfFcEHk+Dn9is5g61+XdMWc=; b=RK+1u8ducrH80hfRx2m8EY87VLamggbmPmo651TFrOpKPZ4YYH0pBEqymvvahHFZyNPtDBMNe zvEysHJH3P3ActiguCi9SnlIaB6vMA0T5l94f9eMnl0/cBGAzbCcPLt X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: PH5P220CA0004.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:34a::16) 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_|VI1PR04MB9906:EE_ X-MS-Office365-Filtering-Correlation-Id: 5356c982-6370-4d50-1bec-08de07761e6c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|52116014|376014|366016|1800799024|19092799006|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SlRRNDFEMUNiMFVqQ1RyN250QlVYb0htTldZQWh6MjBwMGdGeWdCWTVhOEp6?= =?utf-8?B?dDQ0WmRpbXZQVWdYNGRrZXc3VEVwU0wvNVpiRjN4SldQY1p2UGI1VUxzc3Bw?= =?utf-8?B?MVhjWGltREx5c3lHTjVvVG9vNmlZekVPUjZRWHFjQ2h5WUZOQ29IVTg3KzJq?= =?utf-8?B?cTM3Tjg5MnIyOTJrd0ZERk1NNlJiZVplbThLRVY1eFpCcXBEZTU0cExYWTFZ?= =?utf-8?B?ckFUcUlkc3NVRGtmS1hqaDhweVVXcGZGbUhicGVnVWRqN2tNYVJqaHlpMW5H?= =?utf-8?B?YnpCNjdFOHdVZmcvOHlnVkpWUDBHQ0M5RzJlQmp3c3pqQ0ZIbk1BbGQ4OHFJ?= =?utf-8?B?QytxKzF4L0hBcldMVURZc0hORStRWmpmcEFDYVZwRHdQWmNqK0dVbFc5bndO?= =?utf-8?B?OVd4Vk5oZ3o5R3g2THlSSmc5WTFWdXFyaHFiNWFzSUxmREltQ0dhNmx1ZkV2?= =?utf-8?B?S2NBeFFRM2pQYXoyRGE0YU84Yko1ODhaOU9VTklwRkVFRGdhcVVDalZ6TjJ4?= =?utf-8?B?UnVtc2MrV1VURU5xbGdxY205L3FRSXd4V2JsNGFNSWJPSUF5WWxrSGE1TE8v?= =?utf-8?B?S3JDZEFsUkJwN1BiVjdpMTZ2WjB3dnRjZVNINzJVTHlVN2VwbEpMdFZ2QUxB?= =?utf-8?B?R0NsKzY3MDBuaUIzQ3NDVm1RQlkyYmdIenNmQkpEOWF0SjhwMjBsWDZob21n?= =?utf-8?B?Ni9uOWE4R2JtN2xKZUpHSUNSaEVlSHI5elhUQlJiOXEwM2ZhbDhvZjRJMU1l?= =?utf-8?B?bVY2OWI2NHVoZHZ6TW0vWUtaR3NJRHQ1U295aDJkMVFHNEQrQU9IK0V6clB0?= =?utf-8?B?SVRGOE5VeVRMNVhFSTR4Z2tMSHVuSmxVUWxxaURJZXdxNktHK0VMUjVFU2d0?= =?utf-8?B?MUVOR2hZK21yM2t2OUVRcFBrSldySGIrRC9lUCtrR3NxL1REcnhVNGxodHpI?= =?utf-8?B?MzF2a2ZLZnFQdXZIM3AwSkMzb3pjQmw1djJYVFdpYUZzUXYrS3g5MkZJRDAy?= =?utf-8?B?KzVMK05YTmlnOEV4dUw0OWppZkIrTW5DcFV2WW56MFVsSGMrWWZleHFsTkl2?= =?utf-8?B?R2JkWlZ6YVVjd3BNRkNGUUZjdldMQUVDOFdFZ1F2UFljVmdVUGhiak1sVnRD?= =?utf-8?B?ekxZUloxcDVoSjE4YURJSzdCbjdPU0oyWVB5YUh2SkFPUENoWXdFRzFaeG1B?= =?utf-8?B?UGtMZjYzSmhGNkZLajQvZ0ZOcWRvUGl3YkpoV0NqWUJTQmNIa20wOFVNY0g3?= =?utf-8?B?MEx5YzlPdVJ0SGtDYTlqQlVEdkgreG51QitHRkxaOGtzcXNNcDBHL2YzSkNJ?= =?utf-8?B?aUNsSy93aWptNWhBNFkxeldyWWlDYm0zak8rR1BHWFVveTEwQUN2bTdMM2s3?= =?utf-8?B?enZFKzJkVjRYZmozcWNxYy9HdTNCQXIyRkFCcDhnL0hvMTR1N05sQk5tNFpQ?= =?utf-8?B?dGlEdzNLdHJpcng3bE9DQkVpVUJzNXlkSHFjUWQ5UldsQVpQcnlnRzAyT01N?= =?utf-8?B?ckR4ZVdxZkFNK3FNemhqZW94TkJIMTlITHMyWjRkVlhwNHZ0d3NGY3NDRXpm?= =?utf-8?B?OGdmdFVscjdoUE11NjNqRWMwNVdIU1Z4czlKc1JvbEd5WmsvTGQ4a0FxbTJL?= =?utf-8?B?S1dyNjMwWkR0bW5jUWU1emZ1bFRsQUJqRUFkRU5Rajkzb1duQkJiZ0dWeGRt?= =?utf-8?B?TXZFekhTOTF1c0VZVVkrdlZTejFadEVxOEF1L2gwM2ZVOXZ1bXEzNzlrZ2FI?= =?utf-8?B?dWlObVYveVpaRjBETXIvNEhmbi90T0J5cFV3QTVFVDhsSHlnZTJld1NXY1BL?= =?utf-8?B?VTJYZDFVRDR6N1ZZQ3hISmN4MHo4TmY1NzdWQUoyUFlIWjdUdmx3RDY4aGZG?= =?utf-8?B?WUY4NlBUQ0dyM3JEU1VmdUtDNHBDR1VYY1B3ejlqcXVSakRTd2Q4cWNHdFhi?= =?utf-8?B?OUhQZTQrYVpXV1FUQ045eXE5dGtTYm43ZUdnbEg4ZCsyUE9vS3ptcWlFMnRi?= =?utf-8?B?eU9iZXcxWnBiczVpWDJVeVJGM3k0WWJuNVlJZlEvMm1yL1pMWTJYb2h3V052?= =?utf-8?Q?OQ/o+i?= 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)(7416014)(52116014)(376014)(366016)(1800799024)(19092799006)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ejBkYlBVSWZMbWlvWUU5WVpTNVpLemtjQUpVdDBxY2JSdCtwRTNIWThDanNN?= =?utf-8?B?aEpnNnRHcEdzVGZ4aEthem9DV3VLVWpFOUxqZ05ZcWt3Um8yN291R1R3VWZF?= =?utf-8?B?KzEwR1NQUE51L0JaSXNRYlRHN2M3bXE2ZVVOVk9HYjVFZ2FPdm84bFZ2R3NQ?= =?utf-8?B?ZmRoSzRaVDdYOTRRSnJibzhXZkR3REo0NTVWTnF6SFZOS2YxbVRwak9nbXhC?= =?utf-8?B?YytuelZHZ0JEaFYwTzFYZkgwb0lmR2hjbXdIbGs0MTNIUnlnYzdyeUU3UzZG?= =?utf-8?B?SEhGb0FQcWtpMkJoODR3ZUNvcEVMcG4vV25Pb1ZQS2hEcUg1UHoyMzZJR2JN?= =?utf-8?B?QzJvc3RIZG9ER2JudHBrak1pdGN3UGwwUVMrTFVNU1ZEd1hRWFZqVzg1NnBG?= =?utf-8?B?RFZWT1pvckk1Z1JWdXphVlNCeTVvTGxTNmVVNi8xRytPQnZVdHZKczUzakpJ?= =?utf-8?B?YkJZcWxKTG9tMmxiVE5TK0ViTmd1N0hrWEQvYlhhODFPR3k2YmdRQURhdnNI?= =?utf-8?B?eG8yMVZxekk2VGhDY3hRRUZEOVVaQmNwa2k5anBvT2xobGt3RjcycERLdVI0?= =?utf-8?B?L1FzQXplSUtBRU5hM2Z0NDJycVhwalZPdnNRcXI2V3FsR3lzQ3M5VmJ5c1dx?= =?utf-8?B?TUx5QnYxR0lwRVdQT3dnM3JTQldDOGlJY0N5c0pMSTFLbFlaRlBvTG1tdm5y?= =?utf-8?B?d3UyVVVZTFd6ZUNYZ2ZiQkZjQ2FIWUJKSXZUOFdra2dCVEROTEY4VFlxdUtt?= =?utf-8?B?bzhzUTFvZlQydFpXd0M5SHdBdG1FWkt2SUJVUkVvYXlYUHJGV1JObHhTMkwz?= =?utf-8?B?dXc4L3NBVWdPaXVsZkc4cnJsL0Iwczh0dG45TmVncTNTbjVzSmg5SXMzQUNa?= =?utf-8?B?OVVuUlc0aldRV2tFRDFLV0taUmt0M3JvVk56bnJQNVh1UWlvaEJzS1k2eGdi?= =?utf-8?B?VnNzYnd2eGY1Ym9WMWpudWFVa2lhZDBVNVhna0c2MXNhN1JNcTZSUjdIM2l0?= =?utf-8?B?eEVoK0JkMWExWEdmQy9VZkxrV2ZBRFlJUERJVmF4SWZMaUJJd1hYZEEvODZz?= =?utf-8?B?ZzhIRFJJMnJyL3BlL3NTMXV1Mlg5OFIvbmZOcUd2blhsVXhLRDB2UFBRamFU?= =?utf-8?B?U2xJTStvU2RoMWsxem5MREJQU3hlSjc0THpwaTU5djN1WGd4SE83N2ZGbHhi?= =?utf-8?B?TGVSWjk3ZWFCZUFGMEc2UGNIUEs0bzJyeTQwSk9kemRBODM0TUJCY01uTzZT?= =?utf-8?B?NFdoOXFHR0lRRzA2Y2tqR1U4MWd3S0tqa3VpWSt2L2tYN24xa2NlSU9BWFVp?= =?utf-8?B?N1o2UkZxQmtycFJNRkF5WW0ydC9Ca0hQT282Q3NUeGNPNGNnaUtnbm13bEln?= =?utf-8?B?Z29ya2tLMUhwS2IxeHhrYzhFQ01yazIvdzkvTmI0eUFBblVVeEtjTjJuSHc5?= =?utf-8?B?aDFNb2M4eUF3Yk9OWGVtR1pGNXRjZ3hIbzEyWm5UQlNHbHBaZUlDY1dCcVdN?= =?utf-8?B?OWpvNUV0UDVSUVBVbnJYcmp1cHI3NzlzMWxTSHFqbjBQWGtHeGIxUlhvOW0z?= =?utf-8?B?bVhCaVdkd0R2c29idFJudU5tQ3AxMGJWaXA1eWpHek16NFV5TVNWUkE2THRL?= =?utf-8?B?NFFNbFV2djNiczNzY1B3WVJseWJCOUZINk9hd0hsZEpWODYxTndoeUd2YURw?= =?utf-8?B?OGcvZndSczM5OTR3dmxobFBBUTJVMDBPdWNMWlBIWXhSOUlvRmR2ZTAwZ0FF?= =?utf-8?B?MHpxOVErNzV3NGFoQWhyMm1sRUdxVjdrVVlzTnp6ZnhrY05iVU9oMHo3UXNq?= =?utf-8?B?QkhZMk12K2lmeTUrR0Q1UlNlQ2xtQXhNcDQ4T0JRNEJPN0J6VXhjOXZJL2VD?= =?utf-8?B?dzRadjE3bENyZFV0VUc3eFNDV3dSS0ZuU2VVS3lCVEpNMWZ5ZVFiandYVldX?= =?utf-8?B?SjU4eXpQU0xadU5aaDZ1bXdWbEhTOE9jdWxOdHRiWHBiU01xYlo0M3VxZHVT?= =?utf-8?B?YTJHaWxIZGRKQlVVaCtqUGRoQWxBdGl1YjBNM1haM3ZvblFJMTBaVVdrNTVD?= =?utf-8?B?cnNLQS9ienhZM1p1UUFuRERKS3ZYOVp5RCs1RzRjd0JHdk5PRVQydmxCTTAv?= =?utf-8?Q?tlBC2oMM7dTkJy2judvEHYZvE?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5356c982-6370-4d50-1bec-08de07761e6c X-MS-Exchange-CrossTenant-AuthSource: PAXSPRMB0053.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2025 20:55:04.0711 (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: TXHj2/9Sc05QH1eKIZ4Cc+p2uhAjiV0Us9XMreciSgh1xjkssLkh14v1aHeH6Ss1Tc/IrkIjTBtMHJVIAogt2w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB9906 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 Fri Dec 19 10:44:41 2025 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013013.outbound.protection.outlook.com [40.107.162.13]) (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 7BFC82741D1; Thu, 9 Oct 2025 20:55:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.13 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760043312; cv=fail; b=rM+3h6GP2lULfya4Gnq0NrnI0Fhu95Fs0PaGtL1tv+SFF0r7BfKAAuYCoAStfTMMGp5fHJAP9MFXgDrPd+DJzu4DhgEkcuZ3zQf/r1xidxL5TjTbz7A+KSWRQ6Cj8i8DTT/wtwmH3slA/6I9QALcgJgO+0fAh/tgTvxaxCpvNl0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760043312; c=relaxed/simple; bh=d0jjuVYo95icEyMMHbl1KpYVYqWEhYeox4Hu6bQaCUA=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=byPlUUfxslE84jScld/PAAjezeupcOoj2RPiXkdJMQaaltD5yeFJYF8tAjEB/MazaKtjaHybjIZ3OOwvtKcji8NVbiVVRWSk/h1H6q2evFAZk/6O9CAI5FPQ9Tnimb5w8ILAx1Kl45UCHt/KJ06iYjDmQaD1EH4dG0FNFgZrGVM= 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=G8gLNZtj; arc=fail smtp.client-ip=40.107.162.13 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="G8gLNZtj" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bHnpfnpzXCNKXRNu3KnfFeduQYErnIb56yWxu42Dy/HwV9vm7iVf6cSucxYSMX66deH5vi37s8m8ioA/Zt8Ki+a8ImVQ+pFGe9ylqmsQWMG+wmfhMy9l0YjX1PnQ5rrOcZxOI4mx8H9kWe75s4OTmfDqvD7BGAw8PMDZiDNTZKFvt4UtXdEKebGjGXdH9JhRkFVCef/Clyz1k7jkPgLRKJ0EWhLci9DkasQBc0cbymPW+U+3ssnGBQID/CEJUuic7wyvn7kDnjOxoL41cdOMCafHgbR1B8krOlzYE/cg4NJ84XbdTlBc09HuPnAAx8vL3wDKMiOm5SmYCVGazxT1fw== 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=xsyBn/2Nw85EOpQFqF2d6FsplJziKXiF+tFg8Sr8b4R751At+6g1evO6beoyd71cnRfvht+CwBubmVwQ2TdPxJLMZr1QMjUEugUc8iO0RNZ9NYWp4n+U5qnD705EQpzntZN3iobKd2o4Ya2Y4OUDDvRNPJPuJnicFQEv38sBwUjdIySJKyMA4hrH1m5QlOXp13wppiFK336Z4LgwSPuItSvoU8Bq81qaKIkJutbQ9jrQ6ROocz1xpmVuh1RdvvvaDS7YHSJUtmvGS20/afMSVxQP2xuaZGr9xASVXlwTmi5rd855UsZUFmSXt7bq8vt/Vj+aW6BDaeIrM0fvcW0/mw== 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=G8gLNZtjrbQ/hK+38QWqXX7u8hz92GBNVFclsFSZpP4WTCbuNwt7xgWXE2KMtypasL22IZIFg3+vr5cMZuEiQlxs/BdkLcyPTmXo9MxiDph63s3Ypn0cPsTVf6vv5b+mSnCaTvymAywzHSvHtGsdoeYtiovOEDbhqsQPv5nJIa0tXSysiImd6EFpnwfFCUGqaHcVusfqjH+M+drvWKOAvDsOm2zSCpPNjVvbgm/SMIBg09iVJRyfsCoU2FlyFWS2aiF4kUEQMWBcqC7tYcSAepPaMUq5DGsH5qzYfGU6K6kqA8FoRjuhdBbtrG0HKtdiDjqEWn3917mk14p2KhBu2Q== 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 VI1PR04MB9906.eurprd04.prod.outlook.com (2603:10a6:800:1e1::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9182.20; Thu, 9 Oct 2025 20:55:07 +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.9203.007; Thu, 9 Oct 2025 20:55:07 +0000 From: Frank Li Date: Thu, 09 Oct 2025 16:54:38 -0400 Subject: [PATCH v5 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: <20251009-vntb_msi_doorbell-v5-4-4cfb7b6c4be1@nxp.com> References: <20251009-vntb_msi_doorbell-v5-0-4cfb7b6c4be1@nxp.com> In-Reply-To: <20251009-vntb_msi_doorbell-v5-0-4cfb7b6c4be1@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=1760043291; l=7571; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=d0jjuVYo95icEyMMHbl1KpYVYqWEhYeox4Hu6bQaCUA=; b=x1uJdVUi/XziUX4sy3QHK75pzEVnu8ptVk/sGp+9PirhWyVPi9oQcWCyR8fEcJyesQaxNPpWM JUKj8EyXSPECi2cuFEaGXAtvOTbA5LDWmLtvvNplQvD3H7IQtHd9zxm X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: PH5P220CA0004.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:34a::16) 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_|VI1PR04MB9906:EE_ X-MS-Office365-Filtering-Correlation-Id: 12111187-6993-40db-979a-08de077620ab X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|52116014|376014|366016|1800799024|19092799006|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?a1AyUTFqL2RXaDBQUFVFV280OUtjTVdTMkUyZUdhL3FzWFhSS2dld3dDQjBx?= =?utf-8?B?cVN3R3dqc3lDTFI2NHp2VDR2RGJoZHllZWkrUU5zUDV4Nmw0WDd3czdKcSth?= =?utf-8?B?RklEYTlBajJaNHpza2FXNnREN1pyeGlUYUFLZ0R0ZGszaGVqZHJjcTUyMC9O?= =?utf-8?B?QWo3TkhOTml3d2lXWlJxS1Y0Z0k0QTBvVzRVaEJNSnN2L2p6eDRvbWI2ZUNa?= =?utf-8?B?OXN2SGkyRTJsTGRrcGc3TmZ6VUdpNll6NHNKNHJRSU9lZjljekJEekNVSnlD?= =?utf-8?B?SXNlQVM2WmxoSjRpWWpobUdHb2ZBWWdDS3Z2V3M1M2x2Q1RBcEJwTm9kcVRm?= =?utf-8?B?VVp6OVpheHdHYnIvN1VUckN5TWZ0U3VqZ1hzSlNwSmJVSC9DYVJOMWplSlMx?= =?utf-8?B?NjRHYWhvcWdEd2xUb2hQWVJvMjhBci9uYTY1M015UjVLU0sydjZVWHBqL0lI?= =?utf-8?B?RFZXV016WTJoZ0lZQXNHaW1kc1lOQ3FJcDJHamhlcDdRWUdsWTZGcFROeURW?= =?utf-8?B?RFlJOGowT3Yra3ZDR0NhL1Y2Mi83My9TSkJzMXVWZnBCYklvcVlKQTd2TXQ2?= =?utf-8?B?Rll3eEFLYU1XVDhacFpTbmlvSVUvd0dibUdTVk8zc0dyRmN0a2ExMkRRczZL?= =?utf-8?B?ZjlWUkVPb1ZUazJnNDdnSm1QWDZOcDhNY3I5SWlLTmVWSk9obVhucmZJSnlh?= =?utf-8?B?YjFyOFdCQkNSTW55azBuV2UzQVZ0N00vQXI3QWluNXRkaGNVTy82eWY4czRu?= =?utf-8?B?N1RRYXFiZ0pITjV6M2ZZK0pSMHl1b3dQM1I3Ymx1M3hYUzRaSmExMzNhSEoz?= =?utf-8?B?UmVvcmJyVHloSjg3bm5UZGtucFJsOXNqcDNERHJuanNNVndGRlh0bUxybGtE?= =?utf-8?B?eEdXczE0UVpGKzliRTN5QzB3UVJ4Y2ROWW5NN1FXbk1wL3g3eWlJdGtWWHBl?= =?utf-8?B?RStHSEFldEQycGtBTERxeVZFaVU4enlRMGZ2SU42NHhLaHZ2VHFmcXJ3Z0M2?= =?utf-8?B?elMvMnRQZGVPOWxtMW1rWENhOTg5MzZEeVp3M2pobTNNZnhZZ0NLc2k4NWNq?= =?utf-8?B?NVhFM2ZJKzdPa2xHWHRzL0RqLy9La2loU3VJeHVXZzNtc2I4dU1Jb29NNWwv?= =?utf-8?B?M2VZV2tMR0NKZHN5TDdEK1RXdHJCc1VkZmVGeUVjV3JUTmJZcno3Q01tNUtt?= =?utf-8?B?RmdEd05rZ3JCTFNkMFZjR25qZmR3SUNJN3RMekE1azMxNDRWaENsekM5cXZa?= =?utf-8?B?RFVCUTBELzNRWXBONVF2UklVN0x3WXRhMGpmbEcwN0RVdS94bGlyblFuYkNx?= =?utf-8?B?QmJLL2h6NDhtMGtReXVNb3gybnBkQW9wdWtXbVZSYjB6MmJaVjhrdmtUMksw?= =?utf-8?B?WnovQ0NjbkFJRE1mbVdWelhzL1QvZXVjWFI5d21MaHZiZ29XZkZVdDFQTGg2?= =?utf-8?B?am5GNUxwc1M1Z24yODROWWdNM2ZINExJbzhHbHlTb3hmSENGMThOSGZmSWta?= =?utf-8?B?Snp4YUwwcFhGcUJUQ0N0NGVYYjRSOUFCelVsWnB1ZDZ0bWo1QW5jOVBQazd2?= =?utf-8?B?c2VndTZmUFRtYlRrdjcrWnk1ZmJ0dkhLS1dDU1IwSldOTGk5ck9zRlNlL3Y4?= =?utf-8?B?ekdiTTllc0hVNjZsUmpFZ201dXQyenh2Sys0Wm43R3pscHltYUFhaFQzOW1a?= =?utf-8?B?UEpScm9vdGZoZUQyRDcyOTNCUzNGa3dOdkFSaE1ES0phcktmTlUxUW05Uk93?= =?utf-8?B?YVd2NkU0TUdvTUYxZHhYN0poNFV1WnZXaHMrc2d0b3grbTNrdWVMZ2dTSm13?= =?utf-8?B?dlFiek5QMzFpdVlLKyt0UnhrUXZxNkQwYTZGdWM1K1huWEdncCtuZVg5UWYv?= =?utf-8?B?SDkxM2tDVW1RRTRIYVN2MEFncEtJRXVDazBkK0VQQkVJSVQwdVJKL2U4aSth?= =?utf-8?B?VENoUHQwTG5CSmw3UWFIV1pqNWQwVmNkTGxzRE4yQUZTdlpvRVhubkRXV1dp?= =?utf-8?B?V3hnTE5zaHdsSllhYTllT1pGYVFjOHZ0cTVyWE5iUlh4c0F0TjVQUUp5LzBD?= =?utf-8?Q?0W0YoR?= 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)(7416014)(52116014)(376014)(366016)(1800799024)(19092799006)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TUU0dWNDZ1JISHhQKzdYcE9ZWlVlRnAyWncwUmgzUjltUWRxNVZFN2VOM3Aw?= =?utf-8?B?Q1loZEUwa2lGQlRsTE1qd1dDRXBDQnRja1djVWJ2NlhTRGRiQmU1VHJLZkdQ?= =?utf-8?B?Y1ZYc1hPUHV0bk9tYUZCd0krY3N4ekVNVnA5QzBuQ213RnZ0OHkvUFRudFdz?= =?utf-8?B?Z1lObnhlbWlnNDc0cTQ5WFl2K1k2Sk84dzFvSlYwVHJWUGVIZjhQZ1B3RFNt?= =?utf-8?B?L29SQlpWUjQxczdSZlRrdnJ1UTBndFhFTVhCZ1lZdkpSaVh6UTFxMmZ6a3FP?= =?utf-8?B?Nm1QeHozOUMwaXh1OEZaTng2ZUIvUFhncmpkTCtEcytmN3lLTDgzRGpsdGtY?= =?utf-8?B?bk40RnVtUzczV3BCYjk1MW9rVWpJbEV0OEpaWERtQVBsVVlQbDlsYjI4TUpW?= =?utf-8?B?WnlCa01aS20zNlJrRHkvWEovZ01KTmVBdkVieUt6NXRDakVwWm1nUStDUDFQ?= =?utf-8?B?Vnk3c3VueERXQy8veUhOd3ZlQ3praTgyVG9UQlFVdVJUQThOYzh4TW95UmEx?= =?utf-8?B?MzI5WjI5RFRVYVdUU2pOZ3JsQTB0RFdHWGJjQ1FZZWM5STRhblAyUEhLSDUw?= =?utf-8?B?aGtXUzJEZ2tWNFNaWW9neFFjdzE3M1ZNdTRncFFhWWVValRjenZoaElvdi94?= =?utf-8?B?NWE5UXplMGo5Zno4bnpmaTRubzBNMlQvUlVtbk1WdHNibitJYURiMklGQ1hL?= =?utf-8?B?NjBJam5WOVRid2g0a3FVdGIzRXZKZnIwRXZiaElpdXl1TmVjYkpxakZOUDZi?= =?utf-8?B?YWk2NzlrWTdPQnJMcDFqWE9KcFlnRzJ5R0I4VnVCdXdnWDViSDdTZ3Jvd2dU?= =?utf-8?B?NUM2a0pxRFpkNXJkM3BwT3IrSXdhL0xsN0FKSWlvY2ppWkJxMXhnODh2LzJH?= =?utf-8?B?dnA2QU5saVlGbDZ6L0RJb01SUHVYVEZXa1FtUUFvZUJIaEhMNHh0Q2VmQTJm?= =?utf-8?B?V0NrRkJwUFJHN1hPVmxRTnNzMXVnK1VUamd2ZHdJVFFTUWc4cGE3RlVMdUpQ?= =?utf-8?B?RXhFaERGRGZKQUg0ekh5N2x4ZVduL3JsYWx2MUU3MHZBN0E3VW8xeHBsQzhl?= =?utf-8?B?T2hqUFRjWGc0T3NEdE0rTm84eE9oQUIydGhsWHZkNjJGYUV2OThkemZFa0tW?= =?utf-8?B?K3RHMVRDVGh4d2hDa1gxVTlmNDNoRjVWWG9vMS9HR0I5b2psd2VQdm1qRENO?= =?utf-8?B?cGZKaERVWG4wYlBzWklOMDBXOW8wTGlUcmNzVlNxYkFlTWs0V2lVMlAvMTdy?= =?utf-8?B?ejVDKzZ5UzlSUWlrMjV4T0E3aXdJYWlTdXdpUGMwaHBrLzFXMHBibW5EWjRO?= =?utf-8?B?THQ1clNtSUtBekx6WDQyTlF4aWo3Vm9SczBNNnY5N3dqa0VvUXI5SWpwejAy?= =?utf-8?B?TnVTZDdmUEtlYSs5VlVNVWM1bW1YcldBWDlPUnhqaWZkaFlzbXdUOXEzbTdE?= =?utf-8?B?K3c3d1QyMVhkZnl3OXFtT1RnUUxmejdIY0J0YS9DMGRUODRvRG9QSDRrTklw?= =?utf-8?B?V0tOWk1HZkVXTHdqNkJDOU8wUmQvdElvM2NIdURDMzJDYmV2L0VJMVp5blk4?= =?utf-8?B?NlZXTThZZjJIaTYxZGcrdTJEVFg1RkUrUmdOclJiVkdtT3RuRkExMDA5M3Rt?= =?utf-8?B?NzBoNkN5cWRibXZRc2RoNFo4ZzI4bDNBWmJqV0MrVVpDWm9sNEkxVThBRTU1?= =?utf-8?B?UW9nYi9pRkFvdXRsc2Z4SHBHRWY0RW55blRFYTJNVHNiNW96djVmbG5XL3Nk?= =?utf-8?B?UVlNR0VSMXYvUzZzb3k3WEsvUEZiUUplUkRzRktQU3ZDZlJ2Snl4cVJsd1hG?= =?utf-8?B?OUJyV2dWdExoaU1RSGIzWHBnWXp3NlhPR0FIUndBcEd2TTBOcEt1c0hGYXBm?= =?utf-8?B?ME4xUHBENVdrdXFrcFVIeVo4VEJ0cjd6R0kyTGg2bWM4RHZNWGMyMENWV015?= =?utf-8?B?WFFkMTJZcUttYmhkTHl0OGtubzN2VEVTUVFvNXQ2ZFRtbTB0cnk4V2gyOC9R?= =?utf-8?B?T3QvN003clNpRlN3Vm1JbEVYN2VmbE1yUTNpVXlOUldmVzYrVUF4WU12ZDlN?= =?utf-8?B?djJZU2tlUzlvbmoySnZZVXdRQTczL2RZSVFveC9ZelVzZnpqcVRyQ094a3gx?= =?utf-8?Q?zdNjn9sowxNdn8EnckLoIDt+q?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 12111187-6993-40db-979a-08de077620ab X-MS-Exchange-CrossTenant-AuthSource: PAXSPRMB0053.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2025 20:55:07.0140 (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: PQ8kTSGN4/IOfITa5fa1mJxA9Er0HySxdSq/vF5MxevV1jnstnJMs0hZjHCspU3IXKgNSkXt9HeTHYqgS5DF9Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB9906 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