From patchwork Mon Jun 9 16:34:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 894963 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010009.outbound.protection.outlook.com [52.101.69.9]) (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 9AC2421A43B; Mon, 9 Jun 2025 16:34:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.69.9 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749486882; cv=fail; b=Q+2T+aYlDY6/JRughLqw6oaWth5NVQED0svSU8hNV+DB2CZLaRxkspjG7KvDTNFwtfTpL6OwU14LYphPE1GlioyllXganAHQyRBcvziXLnLQwaZ76GA9rM+i4BNHoZonxRWgP7wrwdIx5lqy2h+SqOQvtEzMY888ZjJu7b+PffM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749486882; c=relaxed/simple; bh=29jELxy+tM5exRX1qIoQL5ZH7cxLaiYDa75RWhw/ctw=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=LbyiliF2DqLhzZcjXGkb4tlykhfntaKhosfkpECELMEquBdOOlY7mwJetQg4CxieJiTU7NxE27s9s5/aBQ7hXw9+2SIk82AMvM+sstjUc1tCYoX1jmmUpvqfPLYtEVxjHOY18kyD9GebFOJ6sFwSZP7qWsu4SrNnzNeQkGLJ5DQ= 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=Jodat9U6; arc=fail smtp.client-ip=52.101.69.9 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="Jodat9U6" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ihyJTk7onCHUCPR7WViyZ0iqlsM8ho4eHsU9XOhI7UctFrEgmpuCtz51ZwNSK993oiLWjz9xp7wGjEjQQadMVpu6KortdDk7kY3kpmrCVvCV6Ge6ggGC8f8tGtY/UTEFGyUx5eYHhoXWUEUp7JDeXGo871Yq4n+vH+hhGyKiWHRFn+TcVIzAeer/a8w4tpT1F9ZmxD3Ni66t0hlL/UPQR3YZPYh1L+u9FRJ7ihPoPvHi/KqiN6FtKgW+0l87JvaK2ihkW2GdCWV6m6I3ZbAati00ps3UIT4LEjDbP3yupKjS3+6kW0zSCA67QYxX/SMV/XgBnpmRU9kKZDlZzt/uQg== 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=0CbIqwMkZB92S1LrZFSA/KdAkKOVehkPJdrtyx9POoY=; b=Hn2Fsf8PJSNBi2uGJAHYxS8Q8IxJ78ykqSNcIDtwiBqVZAP+7+kDrPs/gbc/sngKJZKu3yDx23rPH0aS8VSmf6jYcu3QQhCF7wCuQ4nahO+4EZ1O9Zuf+w6Q16W80v37MfPdrnnosq9tDRUFCw7nhI0A/zTYr1X2c89jLwo/T8+HuF8XwG14E1iVM6a0Zc+dJ7zLgLccR53FQMB6216GbPE60VzTqvpDZps5bx3DjNfOvXGEOhEpMwF4zU13sFVZ37c9+6nEvP2h1vPYtfzyOqPW9MlH+Md5V+c9twvQj+cEY573R0cCQHSUCXEOI60f6Bgj/Ds2BgTMiWWElgXA0A== 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=0CbIqwMkZB92S1LrZFSA/KdAkKOVehkPJdrtyx9POoY=; b=Jodat9U6SUtqqmGzv3TjVNYJ8yZ0aVLFatz7cz1c5n9uOA2ePBZIqtGlLyp+72DdY/LmjqOmFCKqPObIbvR7vlVvEPyNHmj2DzAjd25Vb9uv5IETFP3Who7/tq3+mz2dCBIFp+s2kxHG5Uuip9PxgEynjRfVEqAva5nVYh0F0pdYYIPwQTJH73/Kzmwezy4290qe03S3wQ0oJEUJ8RpyFJLmGHOhEnKGDxkJlEpB+gL0OLR7SmKo+t9FfcFRDc/8XMFLBAtJyqE0ftGT9FbwuKXj0icnwx6QSE0BAS2zaCZ4YD2C6NRl5uCSxyGKIl/9PgW1suphe3arSVWBJPnU0Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) by AS8PR04MB9062.eurprd04.prod.outlook.com (2603:10a6:20b:445::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8813.30; Mon, 9 Jun 2025 16:34:38 +0000 Received: from PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06]) by PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06%7]) with mapi id 15.20.8813.024; Mon, 9 Jun 2025 16:34:38 +0000 From: Frank Li Date: Mon, 09 Jun 2025 12:34:13 -0400 Subject: [PATCH v19 01/10] PCI: endpoint: Set ID and of_node for function driver Message-Id: <20250609-ep-msi-v19-1-77362eaa48fa@nxp.com> References: <20250609-ep-msi-v19-0-77362eaa48fa@nxp.com> In-Reply-To: <20250609-ep-msi-v19-0-77362eaa48fa@nxp.com> To: Kishon Vijay Abraham I , "Rafael J. Wysocki" , Thomas Gleixner , Anup Patel , Kishon Vijay Abraham I , Marc Zyngier , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Kishon Vijay Abraham I , Bjorn Helgaas , Arnd Bergmann , Shuah Khan , Richard Zhu , Lucas Stach , Lorenzo Pieralisi , Rob Herring , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= Cc: Niklas Cassel , dlemoal@kernel.org, jdmason@kudzu.us, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org, linux-kselftest@vger.kernel.org, imx@lists.linux.dev, devicetree@vger.kernel.org, Frank Li X-Mailer: b4 0.13-dev-e586c X-Developer-Signature: v=1; a=ed25519-sha256; t=1749486867; l=2203; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=29jELxy+tM5exRX1qIoQL5ZH7cxLaiYDa75RWhw/ctw=; b=F73B0oqNAKL68Ia7GJo8sFRgapx88X4KOJbQXge07K66pkaB8Z4cae1MieaD04V+LysawaG05 N+5xS4HGrIDAy1odnmxRPBfOKH/Dq79UdsLPtJco/zNwHn7Ny4s7PT3 X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: AS4P192CA0010.EURP192.PROD.OUTLOOK.COM (2603:10a6:20b:5da::17) To PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9642:EE_|AS8PR04MB9062:EE_ X-MS-Office365-Filtering-Correlation-Id: abd41355-4216-473a-266e-08dda7738698 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|1800799024|52116014|7416014|376014|921020|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?Tk31QqVxDofvPqrAPT3BPcsn048AhxU?= =?utf-8?q?KfT23pnkD28+nmg8e/tz6lggTP21+CeBTvbJKLSS7U7qybzx2TLA3flEtnc24dyqa?= =?utf-8?q?HCoUVguO4KtymonLOgdnKxw/UAZBJxqtFnTfPJO/eMScRgINv9AE5t+p5d0HV4qtb?= =?utf-8?q?vICAp1l+XeZIca44s2chfAqV1XzzIYJ55rDY5o6xLsklt8DiDpr1BTKfC1tQ+VO/Y?= =?utf-8?q?2BTS6CFrjN3vIuuABmka2R0JV/lMAvx+2gsY2FvY1dgj6mK7zSPb15uIefHWGt2PF?= =?utf-8?q?O3gBCeinbVc66Lr+T/xh9TgkdTGA+VYsHiTVuCMAetihve2yGJmiEFi2/YPfMVdNt?= =?utf-8?q?8yj6qPo79jkdRgvyp4g5PcCZwNZLvympSkPOh15XcktUWKTf8leouDrqCUZ28Kjyx?= =?utf-8?q?QbIw7xXoisSbxDkaY8HUdMuimLZu/Wz28Sf2HUKqnXPonVSu49Xwywg9YQHUdw1k3?= =?utf-8?q?Ust+tNkDTLylQdTeumVD5beusmMXWdXC2gyND+zBGOhpH3GlRmfxpUtK43V3GuEx9?= =?utf-8?q?YmYGKgHpgDswp/oRGCIhJzHRl9jt62LYS2H6+HgpoqKANamZfbmdVE64z9dMr+wJ7?= =?utf-8?q?oXHgBfS3uNgWXwNsPbnL/t7w/NXp9NGmfM4x87orjj4OivoqxSWyKgVZZBV/szl2L?= =?utf-8?q?8ojWGL9sdMg1KBTdo7QBEbaKJk1Rv6AsnQC5aKJLjvS5BesKMkGNl1kkOTfC+YCV2?= =?utf-8?q?c3DIC/TMz07bgzY3QazlyY+eSYzBZVR5mTnQpftlnAmesGlPnwoAHWf1/h5+zjK18?= =?utf-8?q?JEBKNC5oJqhEqdXJz4xz4MKRiDQynBIa+pGLPgVm916pVD/Hqs40P1GjkN1djVv5b?= =?utf-8?q?KFHncMRxpSgLjdHz0a/6E0pPYa4bwg+yQjTEaOWlVzP0cxhjSUa0K+b6//F6cgbqf?= =?utf-8?q?3jr7Wc1KhVxaSWjXcjgJd4q11znnhz4LWcjGfwCe9DwIu0c15cbSe2TOtkXflJUrS?= =?utf-8?q?Fzoi98RMxFjur8EcsXr/Um6jPQ1h5vjrgsN1nv/xLJUfFcPCDqI/EyyWqJ2jn72ug?= =?utf-8?q?oHuc+P5xdzCl2gyyORN7tIZvcIDsfYRp3Jnb87MSKPvNEg62CmYBdTlTFaBDQA1PT?= =?utf-8?q?omY/euyezfLykBB54qIstzkeMGED6mEporna++FdgAFz14mDU6dyKeDL0D3ivFsry?= =?utf-8?q?OvipAH4feCT2OLovn+/byQe77tqPo0CbeRnbJf2HuwPS42ATHZ/McK0BHLw5qxl7b?= =?utf-8?q?2htP7TlQm7R2fBjnxgG9JNAVzXf5n9ssewDXS6xHNPbKzJwCklAgcdvLVJw+SCnDB?= =?utf-8?q?6qCxcx+Z/jP3RALBmX9sYM2q22VRQRJSoq1xIqYcsgUtQuvJ9EZKJo//fGgmobku+?= =?utf-8?q?fC1yis5ewzYA0yHke3HZ9p5FaZTyDDfIFNHAWnx0gcV6GDDmGO2DL3ERb2qJ+ITOS?= =?utf-8?q?ETEpQbXKMfsqX/iwkdhREAMZ4tJTpXblqElgkMhv7HKEKdJWTwDd5A=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9642.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(52116014)(7416014)(376014)(921020)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?ifDDE2GOifiH+wQtNWHiXR5E/+7c?= =?utf-8?q?TzsZ2MxtVFCE5cwtEcu/feOTVbTMOJpMvdwxXXPjzYhpblekv7ZGZSthPRiJ0RzvW?= =?utf-8?q?/iWQrjHNOgNhrpQ9IUyjbmawPyMn2wIpVOotBWxmgXRdFaDT/ismUjwZVlpiFM30m?= =?utf-8?q?1s5Q1trficpbc/let9emTH4MKDG90ZfX4174C3Zjap2V3QzbXnYMHPUxD+hS4nNIm?= =?utf-8?q?PNEgCrkGQp7p4TfsGIzuAzfqf1Kjod2W/F7z/vzXHx09QDkBmQaLQMUappBx6dd/k?= =?utf-8?q?XNEEZrygJnVxaOS7aF3c7HjGHXR7c3wc1WRvPYErVSNyWn+qNbhRjROnw3Tw7yYdT?= =?utf-8?q?3LvCPkufppsTRMwYwAyJMhVuJc3o+2juIi6fN3sDlUEnLkbEg0VxDoLwZU8dF7qMT?= =?utf-8?q?A+W2kLLJZQcZ4iVknbdP8u3ESS7Q7T2amAxevu0LHHPJgjkrbXl6aI4oNNAGRa86V?= =?utf-8?q?8FrmkqkcS6VwJ1CDzhkeWIOWumxNRjNmH85ShGGzlqp1UobapkGEAFE+qhc9+xB9B?= =?utf-8?q?FPvofbZezE4BQfzUqxCCkaUUhydyAdAeWQKZVJ7eYdl5PfGymm8zw8DrHGF6iUt+3?= =?utf-8?q?YucT8KMTptTV+dcRhtWXD+k+zQ1wlgDx0wsKEmAmOsFlghicrl/QnE7QS3O7za4wv?= =?utf-8?q?+7TYh/TM/eRumbNAqwzd71mvglVoS/HPPdu5FoTNx10a7GpUXZyixylNKhof/x0Cu?= =?utf-8?q?YR747N9gmU3Olwt1HRqyAJ2Zyq3Xg5DIDXNnvLv9x4XyjIE1NRxYLsFctJk+TNq0L?= =?utf-8?q?JkdlFER6u0C1SV9g/3o2DwI/9PR/js9ZeU2hV78Yfl89ALN0wsq29YN31tEQKEV4Z?= =?utf-8?q?gmf8w2d5TjGPvyHywXplcetSyaj5i0y+5oRUzi8E5o0f/4JZZ6eLkprQVrLecb+ye?= =?utf-8?q?/U2n5cjT3w3wadr3lZkeXU/iO9XtaBOggEzy3Zz3Kp8O6Gr3U9Jhd/qezeFerKWW+?= =?utf-8?q?npWJURlTkEfe8WC8PLTlDxG7ugKg8hvZ+k39apFzLMmW/SIZaWWuikVdK6N5w8kpU?= =?utf-8?q?enQF5O3hJK2xRdYiqN/0dz4rRVgUr3g4K9g+9y7FHprl0HlAXmqGQ8pXNXpwytoYB?= =?utf-8?q?RHUX6BYiudjhNAeynwnu76lb+/IXegnoF/BVzqJeVOopwSfSeSiJz/SytprCB4Pzs?= =?utf-8?q?P8hOSXCDGD9UH2FvKNC9lmFzRWahWgHc4O67JWphpYSlfuWuyW0hJVw7cWDEz1N4h?= =?utf-8?q?+pjl0BP8EOVZDfXPpDzalVPnNa1REZxfKlvR68OiSmoI0nFDwSWVnMF3WMROEwaJM?= =?utf-8?q?i2zDcgVNlOjL4hPWr3QhnmedmzXa1d0QCCON51BO4pSpCUG/l+iIJl2v4MGK1zq7j?= =?utf-8?q?z2XgXzqxaBLEepCpzhY5KATcvGoCuen6et2qUQDVmyFgq8GjkNPQlHD5X0MHvvkhp?= =?utf-8?q?2NDL/wGdyeJppL2hZJWO1O0ZNRTNmonASLBtR5w6w7HfApGvV262n8A+Ad87ieImu?= =?utf-8?q?NgS5+yLNIxEAdT0met/87SlogulsOpbXxbdDZb2sPSIcXrNxh4PnrOdOzPz5BfXxl?= =?utf-8?q?/+j6cms9p2Zf?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: abd41355-4216-473a-266e-08dda7738698 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9642.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2025 16:34:37.9354 (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: lpfYD3MyOtwpCnwzk2EC+b5Xa5+Jla6ZBKHxKDU3hBlFbUknuyZbdh0rKrrV45FYoo8/l5jwGuuD5C+g30iZVg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB9062 Set device ID as 'vfunc_no << 3 | func_no' and use 'device_set_of_node_from_dev()' to set 'of_node' the same as the EPC parent device. Currently, EPF 'of_node' is NULL, but many functions depend on 'of_node' settings, such as DMA, IOMMU, and MSI. At present, all DMA allocation functions use the EPC's device node, but they should use the EPF one. For multiple function drivers, IOMMU/MSI should be different for each function driver. If multiple function devices share the same EPC device, there will be no isolation between them. Setting the ID and 'of_node' prepares for proper support. Signed-off-by: Frank Li --- change from v14 to v16 - none change from v13 to v14 new patch --- drivers/pci/endpoint/pci-epf-core.c | 4 ++++ include/linux/pci-epf.h | 2 ++ 2 files changed, 6 insertions(+) diff --git a/drivers/pci/endpoint/pci-epf-core.c b/drivers/pci/endpoint/pci-epf-core.c index 577a9e490115c..95fb3d7c1d45e 100644 --- a/drivers/pci/endpoint/pci-epf-core.c +++ b/drivers/pci/endpoint/pci-epf-core.c @@ -120,12 +120,16 @@ int pci_epf_bind(struct pci_epf *epf) epf_vf->sec_epc_func_no = epf->sec_epc_func_no; epf_vf->epc = epf->epc; epf_vf->sec_epc = epf->sec_epc; + epf_vf->dev.id = PCI_EPF_DEVID(epf->func_no, vfunc_no); + device_set_of_node_from_dev(&epf_vf->dev, epc->dev.parent); ret = epf_vf->driver->ops->bind(epf_vf); if (ret) goto ret; epf_vf->is_bound = true; } + epf->dev.id = PCI_EPF_DEVID(epf->func_no, 0); + device_set_of_node_from_dev(&epf->dev, epc->dev.parent); ret = epf->driver->ops->bind(epf); if (ret) goto ret; diff --git a/include/linux/pci-epf.h b/include/linux/pci-epf.h index 749cee0bcf2cc..c0864935c6864 100644 --- a/include/linux/pci-epf.h +++ b/include/linux/pci-epf.h @@ -216,6 +216,8 @@ static inline void *epf_get_drvdata(struct pci_epf *epf) return dev_get_drvdata(&epf->dev); } +#define PCI_EPF_DEVID(func_no, vfunc_no) ((vfunc_no) << 3 | (func_no)) + struct pci_epf *pci_epf_create(const char *name); void pci_epf_destroy(struct pci_epf *epf); int __pci_epf_register_driver(struct pci_epf_driver *driver, From patchwork Mon Jun 9 16:34:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 894962 Received: from AS8PR03CU001.outbound.protection.outlook.com (mail-westeuropeazon11012008.outbound.protection.outlook.com [52.101.71.8]) (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 B3AEF2192F3; Mon, 9 Jun 2025 16:34:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.71.8 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749486892; cv=fail; b=EI9t8hSwWwRi+FGaqMikAoJCcOLTMN/eJsKOEcbAMmhydnRwHVGnLbOElX2vpQCmQ41Ww087GU/XhaDgARqnGXf+WYZsegDfTaoM67UFbn90haMgq9eh+lDNFi0Ziemoo2NTs0zNbbUMTd0uhmLvbl7hqP12QcHWUXQ/UEj1F+g= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749486892; c=relaxed/simple; bh=KBtuF8miMtkby9wBmV/5EQTm1CzbNkKTi323WUC3f6Q=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=eoiG/5zyavCSgpef4BP4cVQ4OrX3o8fulBH8vYgFyuOihWcjA+3/DqjnK7ovrQ2H0ZJ/lSYp8ZVXh85IrlAeFrV9F/H2wm+povggSeIECvccmINY5JthtizYUBQrnmyOMG4BokKKF8kw/c8GaIU6LbA1qDtbJZwkzBYwgxOwtuc= 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=Xlg1+bJi; arc=fail smtp.client-ip=52.101.71.8 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="Xlg1+bJi" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=a5yfiKhFF4MS/HZ/tTqkFPx4FYjwwiPiq0bBnB/hsB04qL08ijVCAv/FOlk3xwXT8JMwzO2dY8ypGewgj4Ar76qflLfSqYE51f/E8xuxAmJYo/qQ3X2Tdh2bomU7MCmnn2mzjLds8E4+nWcWIAbQl3y67Hs0RojaaNFvDtgtdNtBV6veNFXPA7QDPgWy1Ge+OnP0Scf78jYhM3bIB02W9skr7MW0SFvIx6smxqum/OzHZ57YueUWt0larNPPCn8cY6fwf+xWT1cZR7ZvOMDW425uoDVUrxI47ev9lTjvKCaCSAWDzyBCGavyBVBVyC/fOUuLoCjyc40HrIvKEmwb7Q== 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=XjTxygeOethmpgmU8zeL27rZ+uIJQAxjOYpjcexzjvg=; b=dgRkqqOcaXhIVe9wmx4u0usHwi6lb9G6MWgJKbfXC6bvovlOmsOuvJmOcah3P0MxaYyuWK/KPQJyiGugeEBxydesl+o4AjMTACBf9jiSmdy+1kD+YxaQ3Z87dqDDjsnUP7d3rfuGhZs5AoQmN2AwTcUG57r4O1Fx53yY1479AxNMRcHfEsnhLdEImRLn3HaB/K6xR1bni5UY/ikd1B+wcNm7jl81U3GifHyf8sEPyeQmcRgoCNqmX8BCZg8eLaQ/DF5D4HGTMdP/fVwr9o9f2g/VozUK9nxXVv/TcEvBb1Yk+6+t9HmXcot+va7557Cfq9B/aEVw1icNKOcrr4W9XA== 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=XjTxygeOethmpgmU8zeL27rZ+uIJQAxjOYpjcexzjvg=; b=Xlg1+bJi9keVdlSBp4DrmZENRxN3TsFiAraS3YsxHs5P/J50iNKpIc6YLkKVB3ApeDumDCKFwNJNFDNNvuq2OySBhx9X0sGSmyvgZfR3PDxu0In2y+ni4MZiuVIbgWrS2mj/+zc17CXuqaGyULrapZYhOdB5tLhPdc66YlgTFH1SVR55BZXRHa4MiMexInKl3BjMXOoqGgeWfNJaI8J1HmkhwNTS3Ly5isqBMaMCrCWBrB8jXyhcafGcGOuSkaXY5Se0D8z9NlOMbk523diaotIkQW3mZvZlzKXDogwJekLqCeCEBT1QVc5N1/90VhzVclY4ni+xEPf8tm3VEgt8ZQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) by AS8PR04MB9062.eurprd04.prod.outlook.com (2603:10a6:20b:445::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8813.30; Mon, 9 Jun 2025 16:34:48 +0000 Received: from PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06]) by PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06%7]) with mapi id 15.20.8813.024; Mon, 9 Jun 2025 16:34:48 +0000 From: Frank Li Date: Mon, 09 Jun 2025 12:34:15 -0400 Subject: [PATCH v19 03/10] PCI: endpoint: pci-ep-msi: Add MSI address/data pair mutable check Message-Id: <20250609-ep-msi-v19-3-77362eaa48fa@nxp.com> References: <20250609-ep-msi-v19-0-77362eaa48fa@nxp.com> In-Reply-To: <20250609-ep-msi-v19-0-77362eaa48fa@nxp.com> To: Kishon Vijay Abraham I , "Rafael J. Wysocki" , Thomas Gleixner , Anup Patel , Kishon Vijay Abraham I , Marc Zyngier , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Kishon Vijay Abraham I , Bjorn Helgaas , Arnd Bergmann , Shuah Khan , Richard Zhu , Lucas Stach , Lorenzo Pieralisi , Rob Herring , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= Cc: Niklas Cassel , dlemoal@kernel.org, jdmason@kudzu.us, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org, linux-kselftest@vger.kernel.org, imx@lists.linux.dev, devicetree@vger.kernel.org, Frank Li X-Mailer: b4 0.13-dev-e586c X-Developer-Signature: v=1; a=ed25519-sha256; t=1749486867; l=1204; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=KBtuF8miMtkby9wBmV/5EQTm1CzbNkKTi323WUC3f6Q=; b=pGs4ODVQNxu9xPJes726sq8T4tTaBNWu+bX59FuX3YSynVkCANiqq6WJ56RWIzM9GmYRWYNI4 n0QU8v3ZbgDCqwe4kkxGHQwpPIVKLrZobBbKuZQyGbU3sMS/MbpNd0y X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: AS4P192CA0010.EURP192.PROD.OUTLOOK.COM (2603:10a6:20b:5da::17) To PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9642:EE_|AS8PR04MB9062:EE_ X-MS-Office365-Filtering-Correlation-Id: 6d2a0d4f-c1b1-4198-3038-08dda7738c9a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|1800799024|52116014|7416014|376014|921020|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?t6K4IwXVPtEetOWoa0XrDsApdIVM27l?= =?utf-8?q?ACsyyeDSALWdX+U1XkUP0TNDozZo4GC0g1gNrAZntdL+NZJj4Fn1HdTkN2UkKa06a?= =?utf-8?q?KeRxDkq9TYVj/auuUrMSe+NQyb96YO0CNugevNpn0NJ8ck7lUTQTa7Jw+KzAc005d?= =?utf-8?q?+A63J32tOZYelP7LROMBAV7dPJu7ZleIuR1aR+o4rtZujoQJUhMQW43QrlUcvKsnB?= =?utf-8?q?QGcLeRR3qDHLCx8fEWA+UfPVDE8ET/cH0RDALrjmMhwAmR5Lp/s5ox9g1JNODQoqa?= =?utf-8?q?CRblwCOrREY5wC7mvs3VT2J7gzpG7dG2lpf3OX3ucUadz7xXILl520SSxKH9CtHCn?= =?utf-8?q?yuk6PASPFlajStgJ4JDruogwXC6FN0GhZuGWKpft0ntdYFRJbtTioDW7iZ7zi5uSJ?= =?utf-8?q?7vHRNgENJJksCDhoJbbXke1278XbbF3h8rvaw6bISSL479H18t9sxvqGHOAeQk6z3?= =?utf-8?q?/j0CJA+q4yLKhL82NNbat4LPKoNnzmaWpWI14P7t/sNfLgsODXFuxhwfJTOnA+41+?= =?utf-8?q?5D322+fWnlLfDwBLPvusCB2s3pYYP8UXRMz4mnfILaG+qFo30t2+6BU03pXAz+5Ue?= =?utf-8?q?5L+nZVmEYgr8froQqb3ww3MGwv0YmhmMdklX1Ed1alczxZw91o+8yHt5qK+Ua/U7s?= =?utf-8?q?/NUkGgdvsM0kyeLBFIGsejPR2jw/13KaOhdY7u4H5u8Yxc83vLpAhBwMPFpMGTGdG?= =?utf-8?q?Ui6NkJkIRcsU70eG/grZ7NTNBPJrIC0EH2RvJYd2u31eIYUQv/IR6L97vhQiSWrY6?= =?utf-8?q?3TtmwS2cJSHalI4Z8I1WmGVgObbwCv/bHJUSmXfljqKvRcc4S5YRVHOnJeZF6IhJq?= =?utf-8?q?IoNtbaQOQW6gXD+IM1XzkfNAfs+IxZ0SLLu1tS4fs45Qisemv3dS2wq11RereboWo?= =?utf-8?q?xeFSH4VQJQuEyl0nhrOBU/KvClIyFOqFK8hbSri9xLcBFezYSKXQj51Gum6DxRgff?= =?utf-8?q?Amzg8RkoTaECuQa6z1zM6bwssx6KmjYpbxfen00luFt97QF/VTzjq8SVfQ817ob83?= =?utf-8?q?MBAOxnt+7zzXRR+5I/qpAPa2a9tuJ3cbW26kOY1cnEVzl4Q2TRYqk3qNHHE7Aaqsr?= =?utf-8?q?0C0xsCIY9qXdf392TKveOsT0r/G5+2N1RyzdoLcQSDCYjiI5hNrFVP7sD86ONu8QP?= =?utf-8?q?AsY/8+6qQigcQ07i//2vBY2H7J9k28+Z+gFFs/4ExN0wYwDQim2KEPmKq5muKOIk+?= =?utf-8?q?SI/ol+4QuaqHo5VC8i7PzaYgAJQsHrsVQRobzBftcNJZEd6fHLUQTpr/QqRLfwQ+p?= =?utf-8?q?v7SxV5l6y6+dA88uWEpP/gUBrrqzye4/BLSdoz9StIWFIUrjFCjZ2i+FG4WMAtFdc?= =?utf-8?q?aOKKsG32hPkHYd22sbdKlTVVRjMquswyQI2XJIMa5bZv3V1QqOorfgMt8+4Zg4wXK?= =?utf-8?q?rTBYqvQeV1B6FtkuhFlRfGBAt+XNCQUAMNSt/3imXtBS+uw8e8HASQ=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9642.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(52116014)(7416014)(376014)(921020)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?5lGQSPS3bc0rY7EQjgo8iUk8A4w2?= =?utf-8?q?/WnKUEDa32FIxyM2lKJwpalIqZ9+HvfbOSG+b226xQZm+PAGyltyh0vwkk6tUpuCF?= =?utf-8?q?dJ1/SQydMpUL3tSxWaCzlOv/XDqIcUgatLTB7kZunIN09SydaS+jw1VwY4aQaap8j?= =?utf-8?q?IoMIfarPx6EGurrkKpHDxQ6hTz4k5PychGWqmTqoRRYBjoptT+l0IeRDcnnJ3Dpsv?= =?utf-8?q?CxHMvQYZwP8UxeiOHDshNo9nSDDEVsoZy17+1nsI3cXe0pQL+Iz+FjVIKmlERH1qc?= =?utf-8?q?9IYq/jvOe9D9/XIgfCN1wMZkA1V/9O9P36paLpwZv7I63D9mUGueQ1rGZ47lUCpQI?= =?utf-8?q?oBtdIhBwim3u3EmjbAa7PRA3K9OAlUHwmbbNQ2S4ON/84iHf/RSkOayCPfv/qCJj2?= =?utf-8?q?Z3iGdV/DsP1Nejxtkv+Edz3qkuKD3Qt4SVW9gFx+M513FGWI5qGKta3SiJipA6V2y?= =?utf-8?q?TjAGvJPckqwjgOZh6xWElgnrKn/wfMX68Gtn+dT3ennR8G/2UNJVZ52UzFfH9684G?= =?utf-8?q?tAo8V2zK4QilB/nYRLTkmt2bG5zZazVx0a+bIz7alWzM9YM+dj0pijSwfw1C6foS0?= =?utf-8?q?AlBZNZCcEu+Da1kbf7aTUBgygK0HH9hRl82LbeyXCRCvjJJMMRQic0PKE8iAjxo9n?= =?utf-8?q?yGfa6p1tBS4l9N6EusAeBW5Yl9QPutU539+wi99LDiuX7W+Z3UvQEwlp8oB+KYD2z?= =?utf-8?q?RNI48wMqVm1Y6eVs0E/2iA1J5bjFnB3FM6s3+zpMvgYDa8iTCawhxjU7daK5LXJah?= =?utf-8?q?eNlKs8F4Byd7aLkjqj9VdTXCvUxrUrWAhCKsD8Eo8CIVRBajpsiouKYyv5DNWbUxF?= =?utf-8?q?C/0GUoJBfcOQallJGIQpg5eZ4LrOaAYwZEj57qUawGs57kOBoIS3+Wg5g5tYspima?= =?utf-8?q?A6XkjQpyQBb9mzlOM9DbGzFIxjhvT0/hSfAQsFctzHM9AmIKflimsjJkLcLvd0Gbn?= =?utf-8?q?GKVSaGrHvzRSL8xOlQ3bCvYLI3ygl3NnwJEgNSrLUBYOKnd0VIe6MGryZZwocuhjM?= =?utf-8?q?e2EzCgb3lMVG3cNS06TNDPuK4FjsVtBcYYOQ9W7R6K9P2GhL1lXdQWXO0aO/0tBRb?= =?utf-8?q?o9HWUO4rivyRXrlrEulRx9g9C1Mh4R5DUohaUbBkegz2zCX1EIvyJdpumngZHHABh?= =?utf-8?q?jhsyW+b3tjsUDocErDstdEHDoaqffWAFtkm3WpJyJtKTCK9DJkJmcIRws2LWIA/Os?= =?utf-8?q?fqFgd9l2bPMZnVlh2MUxywY8ymC6HV7gMTyz1t1Jn2htmDt667fMn0XnamBG1jNyK?= =?utf-8?q?y38mWIe2knL50LAa1e6SSP+dU44UUaP1rqZDR5FVIXbq+btVtSglu0fqe/FFDweTf?= =?utf-8?q?dhCeju6ZLm+gaVaRGDDwkv4NruLCiQyRWE/b25cgCcUbsaTe9gv7q9/jsP7kSe5AP?= =?utf-8?q?p0srudxPz+fs7uc2JSDhD5Ye776uhOFbeMNePDB16I3nAU0WEQBKWxWpSiYAGVVKj?= =?utf-8?q?v/hxMTPKtJBjbFCG9qEirerOJq+6BxFpQC8qiyHseyNz6Af0k2lhCeMzU8Mh4c+Xe?= =?utf-8?q?IZI8kd7VMgIm?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6d2a0d4f-c1b1-4198-3038-08dda7738c9a X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9642.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2025 16:34:48.0012 (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: Whl+8i3eQ6c0ngGkAmI04vhId+z5MYSxGqPosys8plvG6KgZPd03w2Ve3n1tnC+EQ/tTMPfzln5/Eda8s66T2Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB9062 Some MSI controller change address/data pair when irq_set_affinity(). Current PCI endpoint can't support this type MSI controller. Call irq_domain_is_msi_immutable() check if address/data pair immutable. Signed-off-by: Frank Li --- change in v18 - update commit message. remove 'include/linux/msi.h' part. change from v14 to v17 - none change from v13 to v14 - bring v10 back Change from v9 to v10 - new patch --- drivers/pci/endpoint/pci-ep-msi.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/pci/endpoint/pci-ep-msi.c b/drivers/pci/endpoint/pci-ep-msi.c index 549b55b864d0e..c0e2d806ee658 100644 --- a/drivers/pci/endpoint/pci-ep-msi.c +++ b/drivers/pci/endpoint/pci-ep-msi.c @@ -44,6 +44,14 @@ int pci_epf_alloc_doorbell(struct pci_epf *epf, u16 num_db) dev_set_msi_domain(dev, dom); + if (!irq_domain_is_msi_parent(dom)) + return -EINVAL; + + if (!irq_domain_is_msi_immutable(dom)) { + dev_err(dev, "Can't support mutable address/data pair MSI controller\n"); + return -EINVAL; + } + msg = kcalloc(num_db, sizeof(struct pci_epf_doorbell_msg), GFP_KERNEL); if (!msg) return -ENOMEM; From patchwork Mon Jun 9 16:34:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 894961 Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010033.outbound.protection.outlook.com [52.101.69.33]) (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 5399E21D3D9; Mon, 9 Jun 2025 16:35:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.69.33 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749486902; cv=fail; b=Z2pwF/ktlIgIqDGujdwyCqCTkFdaAE9tMd1031vs6Emf5u1WVXcTtjzaWrGYEsdjLAJPD9Re4exsLIJGX+KgMJ9g+TKENVVxn+7YJyT+B8SGhKhxkCxM5mwVaw4i05mlVjNacggkeAWivh3ME5Qy/zJTY1I2IIn8eDGSHzhm4JI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749486902; c=relaxed/simple; bh=GZxnLuC67KA9+f1ZFFupamn6BH671XQaImre37vE7/Q=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=V/yeyKRJOQ2GRaI7W65K3EtG0gvtIn7mjb/UMbiSrAtCdDbcn13VmkY4wsGvCQ5uaD6KGaqIfAAwJCBGmr1uAGlKuOq/1kWziUkuzGxaBnU6+mMfJBZRnPztJJpLepw+NiczLz3D4Tmx2WQc84AfYQrXep5IEdm26cyptzCSKrA= 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=RXxUYk/K; arc=fail smtp.client-ip=52.101.69.33 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="RXxUYk/K" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jl6NT3bVVkz2VMxNdYF8zKVgO+vZC2HQ2jJP7ni1P9hcnjoDKYXvbEAQ64VyChju+/VlUHv7URQgCdFiW22woha8lZNa4dqN0SkJ7ptksP4mGhw8nOWXwQ5SuVJXR6KeN7VPnRIQelDK5slIw7pmQPPIHwa+i9Xrlg/wAVixiDwnnC6gDA1D6u5mXeCpUIBNzqqVNikFRDYvSWVe8r88dtAt9RmC7kdTvaTbTzAHr8Oi0v29Sg3Mq7eudef4duLUDh30ND1LHw/9HX90tatgRgs/CSrXjosKrMkJ6OHU3PDNTO/+zSOhYm47XFNs4FWv425OnzOo1X6FwC3kxFTtlw== 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=kKlGqegoRweF1++Jqh2S5594pr64Kj2EekHsAJSq3y8=; b=VXsWR+AAewlgVIwNEJ5V7kDTjPzKtBzSnRCTeuiOaCA14xBNY4cejc7NoWQFdTzpsGD39mz1qpbzELAmGE6Ba/FkFWA0ttmJ+CqYRDgWRVQ5VtJWIIhlQZSJIpkFD0l5mdwz8OIL7GYVOHU28EjVbs57u/5fI6x3Tmh3iP1nrd8FqBkRmn+d29rHZsev3bm7NquHEI+m8cg1clPcfH1Sz30ioU4Cymd53AysD7bRHK9YizRzRoKx7IKDRnro2F4IT6cS0JsiDOmfNAk5EyrevcWGZqEedPOiszP3FxOogQtTywmWCywCrx3Hdww19kdgRq4Z0V1o35PYrslQN7XBoQ== 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=kKlGqegoRweF1++Jqh2S5594pr64Kj2EekHsAJSq3y8=; b=RXxUYk/K2mKYcD3LqtGfToiSDtJdss71/qC30ecVbHEVdqtV5ru6jXZKcw3CaZnXphg5IWsIokl4vFeGOqwIVtDFtJsEP5mslqTnyXo93JfX2p8ci1VJa4bgVYdj/NMW2YHRklS7ADLxWCSrFh+K4UjtQTzwGixmtUP8aMmXDNQPpV1YChD9qwpfvAR+Z2QTed2buUwAzEej3MKpf/d92TikbDFQsmRL8DsWqZ8ZtSThK/s8xMPnKFPe3+cUxvUubC8hLHh+HZU53RBdyDpNmZ5CDIS2bUZHVMEcZuxyHdVdFGPA6sdI3f/3Idkx5huuwg7pdJv5utdwPr/aW4VrHQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) by DB9PR04MB9751.eurprd04.prod.outlook.com (2603:10a6:10:4ce::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8813.25; Mon, 9 Jun 2025 16:34:58 +0000 Received: from PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06]) by PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06%7]) with mapi id 15.20.8813.024; Mon, 9 Jun 2025 16:34:58 +0000 From: Frank Li Date: Mon, 09 Jun 2025 12:34:17 -0400 Subject: [PATCH v19 05/10] PCI: endpoint: pci-epf-test: Add doorbell test support Message-Id: <20250609-ep-msi-v19-5-77362eaa48fa@nxp.com> References: <20250609-ep-msi-v19-0-77362eaa48fa@nxp.com> In-Reply-To: <20250609-ep-msi-v19-0-77362eaa48fa@nxp.com> To: Kishon Vijay Abraham I , "Rafael J. Wysocki" , Thomas Gleixner , Anup Patel , Kishon Vijay Abraham I , Marc Zyngier , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Kishon Vijay Abraham I , Bjorn Helgaas , Arnd Bergmann , Shuah Khan , Richard Zhu , Lucas Stach , Lorenzo Pieralisi , Rob Herring , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= Cc: Niklas Cassel , dlemoal@kernel.org, jdmason@kudzu.us, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org, linux-kselftest@vger.kernel.org, imx@lists.linux.dev, devicetree@vger.kernel.org, Frank Li X-Mailer: b4 0.13-dev-e586c X-Developer-Signature: v=1; a=ed25519-sha256; t=1749486867; l=8739; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=GZxnLuC67KA9+f1ZFFupamn6BH671XQaImre37vE7/Q=; b=Jb6LEzik+KYNB19zeEljCPCu3Cp8Rfwhn+4+3+NA1ypVf1ik0/G1VhzTOcf5fXOR2FPO+YHHa pSEIwjtnpN8Aad8klEs+nQjMpRDwmAU3tl7s+zYdzkRqfUACSctquv+ X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: AS4P192CA0010.EURP192.PROD.OUTLOOK.COM (2603:10a6:20b:5da::17) To PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9642:EE_|DB9PR04MB9751:EE_ X-MS-Office365-Filtering-Correlation-Id: 4d80a9f4-5fdf-4e19-c79b-08dda7739295 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|7416014|366016|52116014|921020|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?RMO9FhoTW8fQ0QoGg4cFhj6FZ4Fkc3w?= =?utf-8?q?cIsZUMKiFbffGhDUUBTi30ou5L4T+qKXE21wnqGC72SMckjG7Rlx0ab2p92OmAvQM?= =?utf-8?q?B9cXlrOHyp9UNjl9TT6xQu1TlhTpU/HjU4qi4dJnFgin8/kwC+gtCwCb86yk3Rq3s?= =?utf-8?q?FrDi+R/JcK6LvAicgkpDdoUNRAUOVhwJ+yWOyhLrdByvKD99C5fz703NJT2Hl1tiX?= =?utf-8?q?XJwReMj47N5bKnTC9iCyT0y4adspQiT64Yew4NgtdwLradAPHE3Fkw/YhSuGudHyU?= =?utf-8?q?YpPAHPrUvSuTXAw9X4eeiZjS/jRQDhHdEuiHXAH8Jvo4HL0g+YmHCrLtJmv4c+QcF?= =?utf-8?q?qhalBxMUp9OTFAg67VMU4tk8LzKtk87jZ/PPMNAvPvaLyrSsyNTXKe3TlP2+ILwop?= =?utf-8?q?GH9gmgznraIzE8YfqgS/KbvZf+NEdSxYAyK1UkEPW3Ss93IUBb8/5eKrVOrun5ViY?= =?utf-8?q?kNOm7uAWB9ijMWhWKnGc5OsgBQuvJKoRWx6iWu+Vq/QGScwcd6petWbpQ+ufsUCtW?= =?utf-8?q?SvLnx20s7gsdtCRjm/Pn19p4jTisTb5TSCHEvXsxOjT1hwJmJQ38Z8Niw/t9KEnGp?= =?utf-8?q?qS55gV4Ix0ilydI1/81jvbUE/Tnvt4Z1DFpDCgL+uqjeH9sqe4U1/Eh/3tuPR+wcg?= =?utf-8?q?GclwfMvlxDxRlvnV0w1daCcQSDLUzYO59tTYWvhwvZzcE3IG0STkM5izn9Uof7ktJ?= =?utf-8?q?/qIYSZuuX+S3oczja/aQoRh7TRyH0THFGVD8DXsfl9Hmyrzy/zF/jUY+eB099m4RT?= =?utf-8?q?MfI8YeWzBmz1lWBKYASCUh9p4SrlWqZqghzaz/lxX0lKgMdKC5ZoEMSHqzuR8eyku?= =?utf-8?q?InjkkWUWDIrld3FlxdEeTb4Hhe7N4t9/KmAVEGWNJue3+iLacTuTSsnkvn0e5fISi?= =?utf-8?q?aig8bDqGxuSBL03LtmdujBNk2gxppQ/85696Cawi/Fgue5O5Ztdz1UGC4KF6k2rvJ?= =?utf-8?q?ovt0NQelyd0RCzPMqsL188gVZB9u2tINKn2s7EeliP6Z6phsNfEdWdvM00szvhKO+?= =?utf-8?q?sHd/HcW8zmjNqJ3kGi+olTRKLhKBEsyNJ6AJNgWGe+EAnxr/BxtNfI1mWDbV2TC2S?= =?utf-8?q?LOWoGYv9ab2m4EHYjYxCTreZa8OX2VIrH7CdFhn6ZsIR0pbV+9/IaFKba92f14u+b?= =?utf-8?q?WNaREktZB1D69Qdqgq3CFlRvD0OIGHkuExTpoRegDL+h38xnUUrOZrmCz8KH+UiBa?= =?utf-8?q?zYFKDJrYNje1XAurd50e2zi6zI7rSV4Kxx/IKE+IYu/tiJVtRSYg/UP95vbVmyxID?= =?utf-8?q?W/cKHwpLsXjknT604ThHt/KwxJpEb3KFkDtahuE7gyrJGah9Y4y+mRzs2zXMRdnbM?= =?utf-8?q?pukX91hWc/XIwusgjzkMtbB7RchITxkD12CdrxzaM5f31CzcH8uVIEnJD85tugBeu?= =?utf-8?q?jXvC27ISa+04vHt/oVZ7LkcCqAJHiSxK2Vb1BfPYey7teXeYU+/0aw=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9642.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(7416014)(366016)(52116014)(921020)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?mMNbf8Lq4Ur96EgG7ZhSAK8jgSfM?= =?utf-8?q?R0hM0M/9BfwjabHENfgNivKp4VdTNeEe6WMfe8DnyyqcBgQeCgDW3C1p/ySgX6RRI?= =?utf-8?q?31Lricir31PVMoEsAiQwTpYdXbfA1zLvLu/pvSeao1LaY1RkAT+GZe5dvCpvNo2Vi?= =?utf-8?q?AXmcNHWd2QamNuLiwV09/sZEfPUm5GvCaQGXMJPRYjGONmx6BtMTKVyw4T4RH+EZx?= =?utf-8?q?735Ko/EunWSUUSiZw1BX1EZuX+ug96KzQH5PDqxAdb/0BZ0xnPG49YLZR6Fq5HtmK?= =?utf-8?q?GjE2u1LHvLAkS/Nx3JM0bDpelN+fU2awSFIET92XeYK8CCzIFZycfELNu6qcp0Lgu?= =?utf-8?q?ggjHp2fgR9g8BuYmR6ffEFzoWfPolipv4OZ58PnusOZ9yrxt52keoWIMEDJFLLAiw?= =?utf-8?q?fW/HSkFcwLItFvgioIi+TWR7YXcs2g6A3FwxFpgbSZqcVlUu8nmvCK4tsAaXO5qdx?= =?utf-8?q?kOxH9Q7xL+a8a2ZPH8RK916bNGH59QICllv64WzxZlNd1F4tHGC6M6smNhYF3EbvS?= =?utf-8?q?yAZpV18jrBX12KuYJcXDaJjpQ3dIqbmP9K3K3O8ANs944Fav/u2jd7bAPFeafKXNU?= =?utf-8?q?4D5UtvXVNK7wYSSK6Mmscem5aPc4KatntnldYPml/0MV21bAXRr1fBcQ32PdT4sXJ?= =?utf-8?q?ApEHuGzB1WjkBVJbHq7yQioDg9vM7zR9h+G6uGUW///NYbi2j+IPnxJcMQQDj1fwX?= =?utf-8?q?QjwAOFe5lQFkGZ8U0D/72rsSE0vDc6f+WmrcgyRfd9RacgHFAv69WFgvvA1egAkaM?= =?utf-8?q?vuTf2v81CgD5KgIBh8Yk6EuLNUh8aF63tCtBzNmlRCDROpxmZTZiseeOCZ6089t//?= =?utf-8?q?FcZW5MY+yqlQzqdIipt7jdHnwZhBU3GOkA7mzS83m+u33n3YKjPuZDc2++CXoqWM4?= =?utf-8?q?XWx2Hpgkjp+CzJzdTagxJjTOCMV7QMHkbkW+dRGDgi+ZCkl4a3XxQ1D228qihpjLw?= =?utf-8?q?1naAS6EdenTXB5VIgGl3AP+jAqp4GIhKTElN+PSVVuaaUsiZ3VxqCFilFBpLLsXV7?= =?utf-8?q?P0T1EtDeSW41et9cnXIZ0SkDUjsnvpgW7GtO79YqK0sFfuRJU0Uo4q/UB+7ewr2cm?= =?utf-8?q?+w9Ku66lWbFSCHxGbzKr0R7hdnP7qpgcAePb6kBLOMT38PT0TnG3AR5oCu9afa+gB?= =?utf-8?q?W8M38kngcuV5wDOfPyyjtrhRCNGF6OXJXFnW6mWY6vKLjCddvQbztm5HY1W3bk5Zb?= =?utf-8?q?4VE/mlpLdU2GurVBGFKs4abuCDrgxQpTzh2MZ34QY1oZlFWqRFh2+C3RjxpV9A9dV?= =?utf-8?q?DtZkN9XXJandjvCqGf2NEShyqkr+plegc2TzQVfmXhk65RF7WVc7X7hIZDDWpm9Mm?= =?utf-8?q?4FhG4OgFgggEI8vZozrQHwYLdbOCn0Z/hG+FEXrUkbtXYBhK7HLE3AeAEHo9vHiYO?= =?utf-8?q?W2BBlhyGBHnrBPB2eElJR5agniqMlSKGA1JrDv4xQziURUM2yCc1SH/1JlhSDK4sg?= =?utf-8?q?fZYTnM7pvWhMbyOnXJsn+WuZjET3+yVIVopsc2ZAyt+l/KcexL5CABzVpPw9ITUu9?= =?utf-8?q?0Daz9859GqX1?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4d80a9f4-5fdf-4e19-c79b-08dda7739295 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9642.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2025 16:34:58.0436 (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: woKXSKuLrRBZSuHjDun3y1i560OCL/96+pKyIvQT0Kj6LcH84Un0sY4dlvi5pFRJdd+YpMgdO+443FjDcoJEpQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB9751 Add three registers: doorbell_bar, doorbell_addr, and doorbell_data. Use pci_epf_alloc_doorbell() to allocate a doorbell address space. Enable the Root Complex (RC) side driver to trigger pci-epc-test's doorbell callback handler by writing doorbell_data to the mapped doorbell_bar's address space. Set STATUS_DOORBELL_SUCCESS in the doorbell callback to indicate completion. Avoid breaking compatibility between host and endpoint, add new command COMMAND_ENABLE_DOORBELL and COMMAND_DISABLE_DOORBELL. Host side need send COMMAND_ENABLE_DOORBELL to map one bar's inbound address to MSI space. the command COMMAND_DISABLE_DOORBELL to recovery original inbound address mapping. Host side new driver Host side old driver EP: new driver S F EP: old driver F F S: If EP side support MSI, 'pci_endpoint_test -f pcie_ep_doorbell' return success. If EP side doesn't support MSI, the same to 'F'. F: 'pci_endpoint_test -f pcie_ep_doorbell' return failure, other case as usual. Tested-by: Niklas Cassel Signed-off-by: Frank Li --- change from v15 to v16 - use le32 for doorbell_* register and use cpu_to_le32() and le32_to_cpu() when use it. change from v14 to v15 - none Change from v9 to v14 - update commit message by use pci_endpoint_test -f pcie_ep_doorbell Change from v8 to v9 - move pci_epf_alloc_doorbell() into pci_epf_{enable/disable}_doorbell(). - remove doorbell_done in commit message. - rename pci_epf_{enable/disable}_doorbell() to pci_epf_test_{enable/disable}_doorbell() to align corrent code style. Change from v7 to v8 - rename to pci_epf_align_inbound_addr_lo_hi() Change from v6 to v7 - use help function pci_epf_align_addr_lo_hi() Change from v5 to v6 - rename doorbell_addr to doorbell_offset Chagne from v4 to v5 - Add doorbell free at unbind function. - Move msi irq handler to here to more complex user case, such as differece doorbell can use difference handler function. - Add Niklas's code to handle fixed bar's case. If need add your signed-off tag or co-developer tag, please let me know. change from v3 to v4 - remove revid requirement - Add command COMMAND_ENABLE_DOORBELL and COMMAND_DISABLE_DOORBELL. - call pci_epc_set_bar() to map inbound address to MSI space only at COMMAND_ENABLE_DOORBELL. --- drivers/pci/endpoint/functions/pci-epf-test.c | 142 ++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) diff --git a/drivers/pci/endpoint/functions/pci-epf-test.c b/drivers/pci/endpoint/functions/pci-epf-test.c index 50eb4106369f4..b9cb1ab218f2b 100644 --- a/drivers/pci/endpoint/functions/pci-epf-test.c +++ b/drivers/pci/endpoint/functions/pci-epf-test.c @@ -11,12 +11,14 @@ #include #include #include +#include #include #include #include #include #include +#include #include #define IRQ_TYPE_INTX 0 @@ -29,6 +31,8 @@ #define COMMAND_READ BIT(3) #define COMMAND_WRITE BIT(4) #define COMMAND_COPY BIT(5) +#define COMMAND_ENABLE_DOORBELL BIT(6) +#define COMMAND_DISABLE_DOORBELL BIT(7) #define STATUS_READ_SUCCESS BIT(0) #define STATUS_READ_FAIL BIT(1) @@ -39,6 +43,11 @@ #define STATUS_IRQ_RAISED BIT(6) #define STATUS_SRC_ADDR_INVALID BIT(7) #define STATUS_DST_ADDR_INVALID BIT(8) +#define STATUS_DOORBELL_SUCCESS BIT(9) +#define STATUS_DOORBELL_ENABLE_SUCCESS BIT(10) +#define STATUS_DOORBELL_ENABLE_FAIL BIT(11) +#define STATUS_DOORBELL_DISABLE_SUCCESS BIT(12) +#define STATUS_DOORBELL_DISABLE_FAIL BIT(13) #define FLAG_USE_DMA BIT(0) @@ -66,6 +75,7 @@ struct pci_epf_test { bool dma_supported; bool dma_private; const struct pci_epc_features *epc_features; + struct pci_epf_bar db_bar; }; struct pci_epf_test_reg { @@ -80,6 +90,9 @@ struct pci_epf_test_reg { __le32 irq_number; __le32 flags; __le32 caps; + __le32 doorbell_bar; + __le32 doorbell_offset; + __le32 doorbell_data; } __packed; static struct pci_epf_header test_header = { @@ -667,6 +680,126 @@ static void pci_epf_test_raise_irq(struct pci_epf_test *epf_test, } } +static irqreturn_t pci_epf_test_doorbell_handler(int irq, void *data) +{ + struct pci_epf_test *epf_test = data; + enum pci_barno test_reg_bar = epf_test->test_reg_bar; + struct pci_epf_test_reg *reg = epf_test->reg[test_reg_bar]; + u32 status = le32_to_cpu(reg->status); + + status |= STATUS_DOORBELL_SUCCESS; + reg->status = cpu_to_le32(status); + pci_epf_test_raise_irq(epf_test, reg); + + return IRQ_HANDLED; +} + +static void pci_epf_test_doorbell_cleanup(struct pci_epf_test *epf_test) +{ + struct pci_epf_test_reg *reg = epf_test->reg[epf_test->test_reg_bar]; + struct pci_epf *epf = epf_test->epf; + + if (le32_to_cpu(reg->doorbell_bar) > 0) { + free_irq(epf->db_msg[0].virq, epf_test); + reg->doorbell_bar = cpu_to_le32(NO_BAR); + } + + if (epf->db_msg) + pci_epf_free_doorbell(epf); +} + +static void pci_epf_test_enable_doorbell(struct pci_epf_test *epf_test, + struct pci_epf_test_reg *reg) +{ + u32 status = le32_to_cpu(reg->status); + struct pci_epf *epf = epf_test->epf; + struct pci_epc *epc = epf->epc; + struct msi_msg *msg; + enum pci_barno bar; + size_t offset; + int ret; + + ret = pci_epf_alloc_doorbell(epf, 1); + if (ret) { + status |= STATUS_DOORBELL_ENABLE_FAIL; + goto set_status; + } + + msg = &epf->db_msg[0].msg; + bar = pci_epc_get_next_free_bar(epf_test->epc_features, epf_test->test_reg_bar + 1); + if (bar < BAR_0 || bar == epf_test->test_reg_bar || !epf->db_msg) { + status |= STATUS_DOORBELL_ENABLE_FAIL; + goto set_status; + } + + ret = request_irq(epf->db_msg[0].virq, pci_epf_test_doorbell_handler, 0, + "pci-test-doorbell", epf_test); + if (ret) { + dev_err(&epf->dev, + "Failed to request irq %d, doorbell feature is not supported\n", + epf->db_msg[0].virq); + status |= STATUS_DOORBELL_ENABLE_FAIL; + pci_epf_test_doorbell_cleanup(epf_test); + goto set_status; + } + + reg->doorbell_data = cpu_to_le32(msg->data); + reg->doorbell_bar = cpu_to_le32(bar); + + msg = &epf->db_msg[0].msg; + ret = pci_epf_align_inbound_addr(epf, bar, ((u64)msg->address_hi << 32) | msg->address_lo, + &epf_test->db_bar.phys_addr, &offset); + + if (ret) { + status |= STATUS_DOORBELL_ENABLE_FAIL; + pci_epf_test_doorbell_cleanup(epf_test); + goto set_status; + } + + reg->doorbell_offset = cpu_to_le32(offset); + + epf_test->db_bar.barno = bar; + epf_test->db_bar.size = epf->bar[bar].size; + epf_test->db_bar.flags = epf->bar[bar].flags; + + ret = pci_epc_set_bar(epc, epf->func_no, epf->vfunc_no, &epf_test->db_bar); + if (ret) { + status |= STATUS_DOORBELL_ENABLE_FAIL; + pci_epf_test_doorbell_cleanup(epf_test); + } else { + status |= STATUS_DOORBELL_ENABLE_SUCCESS; + } + +set_status: + reg->status = cpu_to_le32(status); +} + +static void pci_epf_test_disable_doorbell(struct pci_epf_test *epf_test, + struct pci_epf_test_reg *reg) +{ + enum pci_barno bar = le32_to_cpu(reg->doorbell_bar); + u32 status = le32_to_cpu(reg->status); + struct pci_epf *epf = epf_test->epf; + struct pci_epc *epc = epf->epc; + int ret; + + if (bar < BAR_0 || bar == epf_test->test_reg_bar || !epf->db_msg) { + status |= STATUS_DOORBELL_DISABLE_FAIL; + goto set_status; + } + + ret = pci_epc_set_bar(epc, epf->func_no, epf->vfunc_no, &epf->bar[bar]); + if (ret) + status |= STATUS_DOORBELL_DISABLE_FAIL; + else + status |= STATUS_DOORBELL_DISABLE_SUCCESS; + + pci_epf_test_doorbell_cleanup(epf_test); + +set_status: + reg->status = cpu_to_le32(status); +} + static void pci_epf_test_cmd_handler(struct work_struct *work) { u32 command; @@ -714,6 +847,14 @@ static void pci_epf_test_cmd_handler(struct work_struct *work) pci_epf_test_copy(epf_test, reg); pci_epf_test_raise_irq(epf_test, reg); break; + case COMMAND_ENABLE_DOORBELL: + pci_epf_test_enable_doorbell(epf_test, reg); + pci_epf_test_raise_irq(epf_test, reg); + break; + case COMMAND_DISABLE_DOORBELL: + pci_epf_test_disable_doorbell(epf_test, reg); + pci_epf_test_raise_irq(epf_test, reg); + break; default: dev_err(dev, "Invalid command 0x%x\n", command); break; @@ -987,6 +1128,7 @@ static void pci_epf_test_unbind(struct pci_epf *epf) pci_epf_test_clean_dma_chan(epf_test); pci_epf_test_clear_bar(epf); } + pci_epf_test_doorbell_cleanup(epf_test); pci_epf_test_free_space(epf); } From patchwork Mon Jun 9 16:34:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 894960 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013068.outbound.protection.outlook.com [40.107.162.68]) (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 126C121FF28; Mon, 9 Jun 2025 16:35:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.68 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749486915; cv=fail; b=eiveNlxEcRAAjvggwsvLQwmDenMjIgOuvATmsD6Fa8pNCG38xl1ZxE1olmuMu8SlJ30ql6kSHh5QxVOEM+3cw/aeqaccT+La38svLFjy01F1zwiS4XRbbaBUwZXZXYqrN0qPzPkokuSypWxvPo0bHOw6D/oyUBIFawin6EMi/qQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749486915; c=relaxed/simple; bh=+SgZEl+0x0mkZbAhvLt5Evhno7zgilVYjrIje6KjXVc=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=lJ5svssJHXUV5amwuiyRZoqB/8Z71IwoPu4M8Mzex/phZkUtqrx2hBvtq3+8MDlaJG2aVLJR+okTTdUIoFPge2uu35j3bgloaMcGqoGgJAcUVlNhQhVRSos5E5VFifXML1BMh9vysJ0ZAExSLq4KC15Tg0yOVbEtaf6jFnKmV3o= 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=fmpqA4aY; arc=fail smtp.client-ip=40.107.162.68 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="fmpqA4aY" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FzWf0q3FW4kzv2eOAdratNJv2rZ8AWT+i0VZoLQ2UrfIKIXhV7XJBwKtJwle9WNfRDEUFRvJu/oUWmE+MVyhkfzk5uGCMF7+wWniu9amEBjwbMNmSf1Cz6Pz34mfHn6MopTJm98+P9QsJpuBE5b0YTqs87EU0IYUhu6UxCA016RxI8LHLvpwYLZMWjvJecxFgygbFLW10B/MXdY2UbCMrE/PVnEHK8YN+FD+RyWpvrJKuMBrRCzamlvfY7AcMdIXcltfcsSQiwzdLkT0g8/zxUtGAOGpEEzZ2ccqPs7M+WjS8/9sRCm7BYMWP3l16Up6sjW8bA97You4nCMnnqIv0g== 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=mO0i/b34tXG//kvU4HGnKVOSOCmwct33MArJWNqY/sY=; b=v6EBa0rIVgu8zUFzGgBtlraCqG7mA79N8Ou9Y9XzfJpY2OxU2u9KA4r1Ia+r4qbE16bwqVqOHW+EkUjqqaJScuTBM5kM6+LBHIlBkQMfT9v9N81fm1oX7JiH72OpZhz7fZMSbcTsPeQVgfrIec5M6FHEIJA2uUhuSYeFhp2Z6oB8PI5/dM84GaJaHdERv+WuwttBH0ZoUROqKh637IM6tZ/pcuV4YXnWO4IHid2xsVpnFtLdz+Rnho9H0ZiK8DP90abFkrt/i+n/OeNNYLAptJoIS4rTGI5AOqImSVj7tN9iW6e0uo1jx2nFOYJRg/N18zMSCKHG7nojqFome8gChA== 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=mO0i/b34tXG//kvU4HGnKVOSOCmwct33MArJWNqY/sY=; b=fmpqA4aYSdi+kQH/nX1qHbhHBdhctdxtS3YsJZWZHjOGgs7Sow6+Twycjq4tUblS1X6ZdPgpiDTTv6DyeKFMk4isjb3dU5m924XPkNxCz3jmexfzV+XyJBWLdfVuszDJnBM/pZtBZNALbpxEs8AECeRD1gKyZabgu06JEaFK4FYViSGwvXfqjoZutCpHwuTpBuc9RVaou0gpjS5ULe7XBiQU6/kCiwg3GJ4nz9grUU+V+KFWQpjQuUxYBYjVPTdIdDqakj8BFjEZyoGMklgYGLVLwpMxT3IWLfDaC0wuYCwXfjUFDCbIkOt7OzyXEgNMixatfEohrvSCErUF981dsg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) by DB9PR04MB9751.eurprd04.prod.outlook.com (2603:10a6:10:4ce::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8813.25; Mon, 9 Jun 2025 16:35:08 +0000 Received: from PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06]) by PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06%7]) with mapi id 15.20.8813.024; Mon, 9 Jun 2025 16:35:08 +0000 From: Frank Li Date: Mon, 09 Jun 2025 12:34:19 -0400 Subject: [PATCH v19 07/10] selftests: pci_endpoint: Add doorbell test case Message-Id: <20250609-ep-msi-v19-7-77362eaa48fa@nxp.com> References: <20250609-ep-msi-v19-0-77362eaa48fa@nxp.com> In-Reply-To: <20250609-ep-msi-v19-0-77362eaa48fa@nxp.com> To: Kishon Vijay Abraham I , "Rafael J. Wysocki" , Thomas Gleixner , Anup Patel , Kishon Vijay Abraham I , Marc Zyngier , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Kishon Vijay Abraham I , Bjorn Helgaas , Arnd Bergmann , Shuah Khan , Richard Zhu , Lucas Stach , Lorenzo Pieralisi , Rob Herring , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= Cc: Niklas Cassel , dlemoal@kernel.org, jdmason@kudzu.us, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org, linux-kselftest@vger.kernel.org, imx@lists.linux.dev, devicetree@vger.kernel.org, Frank Li X-Mailer: b4 0.13-dev-e586c X-Developer-Signature: v=1; a=ed25519-sha256; t=1749486867; l=1300; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=+SgZEl+0x0mkZbAhvLt5Evhno7zgilVYjrIje6KjXVc=; b=svZGkixayD4MrwVtGvpOEp4c1DiMKR+Tk907IpbIVngGjigCE+A6pTh5xVYngOizGT/75L0CC R/x+rytx97OBhI74dphKTW2migkAbpYPNqtuckqWWeIh9NSYZRhEl7J X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: AS4P192CA0010.EURP192.PROD.OUTLOOK.COM (2603:10a6:20b:5da::17) To PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9642:EE_|DB9PR04MB9751:EE_ X-MS-Office365-Filtering-Correlation-Id: 71febb08-9e28-4acc-d42e-08dda77398a2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|7416014|366016|52116014|921020|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?+6GIDNq4RsFuQMIEyig1EbRS+WnnYEz?= =?utf-8?q?vBlacNtlLzfbqHeegFnKODIRGLRFt48Z1tEu6AKIccLXVgtfGw1EXpSEPEiMgReHH?= =?utf-8?q?6592Pt4G3Bye23WLDqXvA5qofTltmp6bTOu2w1oGLiNoqkGlTb9Bx1W/lKW7lQsZ7?= =?utf-8?q?DJ3Nf9mT2YkEkIv8IMErXU2dqph2JPrVZUYxVgkqstsRXQ1MyT/S7WPQ1A+zH6++k?= =?utf-8?q?wRH/AacIW16slMDXQUCKny6v0DATNY9n1dB/mzUp7IQAfyXYSciA4RoSK77fCDhMX?= =?utf-8?q?rNpYjdiSXebh9VQwGJcgC7G2hRktJP4en3SiA2cxQGPpwWzN/VdnDeo/jUSHxxoCL?= =?utf-8?q?IGU+0PhAVKt82aKvOGC/PXITFwU7WH0AgFalA7cKuio9IT1QHOGQeNRB0ibb39Gn1?= =?utf-8?q?H4ay1yvUxWwRL8YoOZkGxqwDSR2XSso0iPX3hstSSxmtoZIK9EGWPHlfSmndyK7kT?= =?utf-8?q?yfQtS/MWJg3nmPJjhQ8mNCcX8f5ESemQeSgvKFEqEbryT6XjXuOHNZ7ODJF6CRyzd?= =?utf-8?q?4xbUVHTVeqTLp0TQakkZyJI6WRU97epJ4xoLbMOTWDD7QcqxaRm4Dpmj4PIWKAQ4w?= =?utf-8?q?onoj/ky5E0QQ0vBFFCZhJ1pTnbsa0vJNtSbeFJK5DAK4UPJ3bBBFcb8sCZy893AhA?= =?utf-8?q?pvhaw3240HYxVwaC40IcaoqjYG5z1S/5Xblp8KFwr3GWbd299IPP2U9bd8Icc5qxf?= =?utf-8?q?Pr+hcnPooar130pwy5ECvHgceYUZGVinUQkHoKckGsjIChIXRa6WQHvb01KzphT9N?= =?utf-8?q?S3/ARpSscvViyy4U0pZmvKfFCaKKrLa1+9gYrbnQS6OrJXcKaLaS86z1zwehoeQdM?= =?utf-8?q?j/7VGWR2ozUtM92fljwcYhzx3C9BsPzbKX15vI3KJ1Z0jsY+xvIQNwScy2vlTxKd6?= =?utf-8?q?Yd1suOSVw2XIRI9C/bBcnzlmcAve+g/ZL30ux46RiLS6NlSW4WveorYSiAoYmLALf?= =?utf-8?q?DLmDwZJsLs8uVwxUzGzFWCaN5rvsN80VhqF3E+BSd4oXMzI1ZExC8+1Xz6qwA+bTI?= =?utf-8?q?sB/s+o3nLSeTRh9YfYzTktUHhZZe8Osvo/koy5cjlMTf5VQ3XzW0t9eBoJ3W9b/vV?= =?utf-8?q?QQX97cKN1uG/2gAeLxQLWY5qd2g+hFVu5ryOF9Q9JXtMxYnbkzH+lhnjT9oEt/NTP?= =?utf-8?q?GJ8Kz8Aq7qrFbiiXieI3Ek1xWuenjKwLg3bBmYk2cJf+8uX93+kNRwzpD7JHiCD5A?= =?utf-8?q?9rpzBRQZfldOORA01oPUt08JOuAMxA/Gz+7Scld26bT0eDx+8U+ylxkE7XSpfJGTF?= =?utf-8?q?b57V20p7966TR9O1p7vwU/j85XSPjZY4jAVXReGjHzNO7Bn8LKw6qZbsA+qvoZKc4?= =?utf-8?q?kzZ0eMeK17ITjVE9+SVT2s3nFeWzbilXpNsaQVgelF0CUMqOK9qGeFVP7Dd+CpNvc?= =?utf-8?q?4cV9sDjIAPbBnhDvN4wT9Cu1PGS0tU/aier5xoF9WcEraIH8uOrnmQ=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9642.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(7416014)(366016)(52116014)(921020)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?dCBnIOa8TXhDTOBjfr8vwMwYSAmr?= =?utf-8?q?zzlNmV4/fQzWGqNRGRPhtWorgqbhGJSZL1nnwrvlhGFZrM231RvLjBQkwCBDEeUV2?= =?utf-8?q?OSIR3eY+U4P5tuufilS7zlUbrUa89lLSZ68vDZCXMb80sGbLeC73ATTbSKWH6cJM4?= =?utf-8?q?cOGEanne9E6xA2SQTFoEyFscYp+cjlGNIKD+QWcEUahlmC3u6rLeNfryCyeUEMCxy?= =?utf-8?q?k7QiYmEuU9/G5Icqb3VOya5FSbMcPkHkt5hOneAUA6vx+6eSPcFGvSppf1OKg8JoG?= =?utf-8?q?rCbbeGadDuykvFCul4nbr2BKNwRMzuzarf90DRNHqpyyss/nnVDRC188XdDnIhO5j?= =?utf-8?q?WrL2Tk3Mvq/f0552/PJwrEwMW8V3TlhatWMMy04pJn0XDgtrTZh8WqhuMHWDv4Ar0?= =?utf-8?q?vRA04blsPVEMZU7Kk8K9Mup6cpJIqEenPFfLFAZN4b58mY0w14YQnMQHT7iV2x5ui?= =?utf-8?q?4OsfMSOfayN2xeTQPVgQTjr8rUIpCNdVokajnxtERnuA37HMv0Jq/UWU+UqEXeKLq?= =?utf-8?q?Amu0T5suTQPR/rhHKkxSK+aBjFY1p5RWF+k8AjTIHFVBVc+cHTHrQNZZSMIzSNv2g?= =?utf-8?q?JZVroXRjKIQJkcv2eoc11R+wLa90PezJtHYRBk5Oqf2Rxh3NVBuLLweUo2+KeBEU4?= =?utf-8?q?9vw9yn0wWo5hYIcr8hQhURqX/BO+j1Yy2xojM6rZsThr3eq0fXe9eD49t7cFORcYn?= =?utf-8?q?upOxcEmfcF92/8JvFLezjmKRqkk7LoI7a0ETFn3dhVevR8ljaEyL1gU20Z/Bitnv8?= =?utf-8?q?R7fVyx9uL+vbgO40Ix9vBbW2GmEL0Qm3ADm6ErFs2B7USb3gGEJnwx0usFqZpVYtQ?= =?utf-8?q?b9az2EP0cv+f7S9rXRFgKp/4tldz1YnIiONdH4CJY9PHXI8us3yWyc50r8u31yqur?= =?utf-8?q?idD2VDTCNNPaluTsPRRtEkQJEiTqGcHhY9lEdm5iE2Q2tP32AI56Rv1ay5Y5CLkYT?= =?utf-8?q?NbAGlZ51X81KslasT2aErAln2LMdd73Ywd2UlAlY+Q56DqU2Ezskh0HJgXyNwR8pV?= =?utf-8?q?IHlytzd03l9s9SF9GYiOM1RLM20tlu1XuURkxpVjWTBjRWxRgfo6+PNK2teMEjSKl?= =?utf-8?q?Q1gclitB6MY4dtrcaLFzlKhgObf/D939HC0Y7jfUBtKyMcXtxxXTV1Da0/M13xLtn?= =?utf-8?q?g87uwxnZiCTqEwbjm2be9EJG4aALd4stu2jFGPjHIN79/oaIdc5GfOMYv6fSxDPp4?= =?utf-8?q?1rDgxA+sK1bG6z38K0/+XibZfXQa1Si9Knkq7SlNkRsyvIDiIhRID267Ii0SGEIdb?= =?utf-8?q?RJ5HpxKtG7yZ8TEwdE8dugF4Vsglk6ACyEv7etZNyqiPcb50M4bUxzz7Prk28Qnhv?= =?utf-8?q?+/ZlT3on38wS5yVX//Nhs97lthG5e2n8rTQvPPPz46RAxLLKsG7++Cdvu6WEFbm83?= =?utf-8?q?Q3Ft6DMZWgQxKCAnSia+Y7wcDzBE9g3i4VOmSsUru/hNcJq6JMnCzocgbysxA1qya?= =?utf-8?q?IRZDJ9fFLrs+U81hdm+lCx9GQTQ+Bcece0Sb/G993Y2Ko8PqGuLxih4i/qGmMQ+XP?= =?utf-8?q?3MoaEcIJuUHT?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 71febb08-9e28-4acc-d42e-08dda77398a2 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9642.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2025 16:35:08.2923 (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: Ky6cFvuCmAZhB78DbanN9Q0cvDBKLd9xWmDk/uSkGOdVXPWc8WyPLQW4/RzRj6nhmtbt42og9b8Z9F7eYWKbCQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB9751 Add doorbell test case. Signed-off-by: Frank Li --- change from v14 to v16 - Add set IRQ type change from v13 to v14 - merge to selftests framework --- .../selftests/pci_endpoint/pci_endpoint_test.c | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tools/testing/selftests/pci_endpoint/pci_endpoint_test.c b/tools/testing/selftests/pci_endpoint/pci_endpoint_test.c index ac26481d29d9d..da0db0e7c9693 100644 --- a/tools/testing/selftests/pci_endpoint/pci_endpoint_test.c +++ b/tools/testing/selftests/pci_endpoint/pci_endpoint_test.c @@ -229,4 +229,32 @@ TEST_F(pci_ep_data_transfer, COPY_TEST) test_size[i]); } } + +FIXTURE(pcie_ep_doorbell) +{ + int fd; +}; + +FIXTURE_SETUP(pcie_ep_doorbell) +{ + self->fd = open(test_device, O_RDWR); + + ASSERT_NE(-1, self->fd) TH_LOG("Can't open PCI Endpoint Test device"); +}; + +FIXTURE_TEARDOWN(pcie_ep_doorbell) +{ + close(self->fd); +}; + +TEST_F(pcie_ep_doorbell, DOORBELL_TEST) +{ + int ret; + + pci_ep_ioctl(PCITEST_SET_IRQTYPE, PCITEST_IRQ_TYPE_AUTO); + ASSERT_EQ(0, ret) TH_LOG("Can't set AUTO IRQ type"); + + pci_ep_ioctl(PCITEST_DOORBELL, 0); + EXPECT_FALSE(ret) TH_LOG("Test failed for Doorbell\n"); +} TEST_HARNESS_MAIN From patchwork Mon Jun 9 16:34:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 894959 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11010027.outbound.protection.outlook.com [52.101.84.27]) (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 6873A2206B5; Mon, 9 Jun 2025 16:35:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.27 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749486923; cv=fail; b=fkYpleb+bOHesUP6/AsSJXZ5uM1GoGf6xvYHA6wu6fqegofpqG+UeI/wL4EU53sKLP8h3uJjGeYgYV2uOo+KPD4TZKoIDByi15mI1Rav4tN9iHrvWfUe/zuHTeLcY3q/9Lnm80UaBXzFhC8jBHHxecgGgmKPHW6++ROFvpeJwyM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749486923; c=relaxed/simple; bh=u6PeQ+E4pLV4IUPib75on3phclu7KzXci5Cv7UMA7Lw=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=PEQcJySiKj5K84dcY7vym4yGub7+skRdAWijK/tORluSv0LE+SfYL/smmf6qxRYCkAcbTS35pI8oJepMzHSY9RnbuV65rsTYgySlrjB6hJpxgdibAN+3XJ3lozsPgwRscgvYa4OfbOwFPKjwijVM8cfpoMZDlndWweU9SnnO0q0= 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=gZSpfAAk; arc=fail smtp.client-ip=52.101.84.27 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="gZSpfAAk" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QdzNd5O6AOM55QZUBW+grgayKardF+MFbhmgQz48brwpkDh0V91AIisNGR9OHd/clfTCPO7G+P9HvDB2vu0TwXSAHDYhuy5pT2bqCHJ/S1k+Wd0apFcSHVHeJvN2X2N7htfRW4bzcIkvbF0KPyRt2iB3UowvRKQLMYw+LxnnKjVvgOSvh+53u3a9cjAX+HcmW6705zLHmqH4zgkkx3WlVY5ex0z9eIfCdqL/VZR+6c4CPjcmYSnQ6zjmeSDnRxece+UlzIVeF4LZS7EKnR3/meUFhsvoB2NMA6CLTr9ZL0DNpwbNUpaYUzNTB3lQGtuaBPfzozBHw42CSCZstZzH0A== 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=PLcL4vUWRfRvGnIfFwSRSx97iMB4Ecq8byfMn2B4AlU=; b=mIg9kq9WgbHBmv7ge9t8rx9Gjuzcy1peRKLESqn4dbtAHO5OdHnxqgJMtztEpsoj7N7okgdUE4jYQ133r2YP5k2sfvGKXs/jf4/U+amnj9j+3pKKksTfhdetiPoxKPJd3cIkr5Y1SFrum+bEB56Y41N22QUQzQY4pGYKXhO3N5CZ9TmfDvVvBsZkksIr6VI4PBjL/ZZECX++UCnCZ1rlpjP6GOtUuCx+lHrPzTKV2S/3aJsUjOOMa5g8RRgQT4xfmRFMDXBDrMHFH7usUmdLElLz9ZNLR5jBBG53OiN8QERSP9pTz+JXBCFERLZcRbPNGXnupFpLxS9v7RKR7RLaXw== 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=PLcL4vUWRfRvGnIfFwSRSx97iMB4Ecq8byfMn2B4AlU=; b=gZSpfAAkFpH1odXvtSR+nLdSZEn20ovlYcxT5KCqNPxkhDSIYEevBY6RlsEhc8ppg1hwXV2KZyJUS3dEOpnlaoux/PtKvEcavS/jfahFa1tZiS1gYB3JMNkhW5T9mNb2atEesSXzbW+R139sBRG1+17A+NuR9RoY2PIEoPZ50+raFvW3fkxY3NsgpULBxpCnLS70xIzyYRngCFrxa33VzpZKy+wr/Jrumw6BHFcUauo8HqdwNH0N4UmcgorHPn3nwrkPo54pRE54DNR7hQ5aBteCO1PY4wYBk429TQKrwj/7ThF2rK9oyWjGQhVXdagCShIeAd89MrcmZZEeaXxkpg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) by DB9PR04MB9751.eurprd04.prod.outlook.com (2603:10a6:10:4ce::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8813.25; Mon, 9 Jun 2025 16:35:19 +0000 Received: from PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06]) by PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06%7]) with mapi id 15.20.8813.024; Mon, 9 Jun 2025 16:35:18 +0000 From: Frank Li Date: Mon, 09 Jun 2025 12:34:21 -0400 Subject: [PATCH v19 09/10] pci: imx6: Add LUT setting for MSI/IOMMU in Endpoint mode Message-Id: <20250609-ep-msi-v19-9-77362eaa48fa@nxp.com> References: <20250609-ep-msi-v19-0-77362eaa48fa@nxp.com> In-Reply-To: <20250609-ep-msi-v19-0-77362eaa48fa@nxp.com> To: Kishon Vijay Abraham I , "Rafael J. Wysocki" , Thomas Gleixner , Anup Patel , Kishon Vijay Abraham I , Marc Zyngier , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Kishon Vijay Abraham I , Bjorn Helgaas , Arnd Bergmann , Shuah Khan , Richard Zhu , Lucas Stach , Lorenzo Pieralisi , Rob Herring , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= Cc: Niklas Cassel , dlemoal@kernel.org, jdmason@kudzu.us, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org, linux-kselftest@vger.kernel.org, imx@lists.linux.dev, devicetree@vger.kernel.org, Frank Li X-Mailer: b4 0.13-dev-e586c X-Developer-Signature: v=1; a=ed25519-sha256; t=1749486867; l=1488; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=u6PeQ+E4pLV4IUPib75on3phclu7KzXci5Cv7UMA7Lw=; b=MYX7SJwmLtl7IWeV/rjWRHytIKCfHYMpUKtE5oR9afnkKsS/26srhO03F5y36wLoLd3G2N+Zj MDPhCTyEyfAA9wP3XGLbYIF5zO7a0qLlOQaEoeAdWIqLNcKrvb8WQcO X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: AS4P192CA0010.EURP192.PROD.OUTLOOK.COM (2603:10a6:20b:5da::17) To PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9642:EE_|DB9PR04MB9751:EE_ X-MS-Office365-Filtering-Correlation-Id: f9987081-c058-42a9-fc38-08dda7739efc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|7416014|366016|52116014|921020|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?b3iD9BacfEw5Jx7vNM9z0iKnWTMjlsC?= =?utf-8?q?JBiFGOsave5MicCQNnSVtTdJYfJuz1WQ1dM4ALyvNLfZyS2e+1NaeJVc7mlh8KI6A?= =?utf-8?q?mKUdnIuOacG+EsXxxnKUjqn5exsUYCVgkoEWbd6pGZuyeMWrnVrL41PHlJ5jy720s?= =?utf-8?q?iWP1rlm/xjWQo0gOzmBq5rxscsVqMrbPPDWnFf5e1QqgtWVd845IRinWmHuq/uSJy?= =?utf-8?q?sdwTpk/MVdN8lYgYKrYu8BreSLovor1ap6qJWQy4iHE9KZq4E7t42JjtrQTzjVzlF?= =?utf-8?q?Lgw3a2L+oEyE38POHDHe50eQFdOtOCx6aKJfk8n4CGa2+b6AV802GzuFt8PmxHbCy?= =?utf-8?q?C0+nX83zF5Ds0IVFKKfEJButqK/kjssoy2FnTyqvVFnHN6KS1GbgNyhvAMxtEZWFJ?= =?utf-8?q?13+TSeSY0JmDqTvr1MsLGb5JbpEqR/ULJsCAs9ha3JP4loSs65gjAvMUANEpknaUj?= =?utf-8?q?Itq1Wy7cgww9SMhyVpijPeErt20jkkoACQ8YqJSXsDRgjENH1/Oz4MV/nYjSKou10?= =?utf-8?q?pIvTo5YFIfLio6uT5YTy84U287X5IZQuf2GR82YNF5sJpeN6MEJ7Eb8qKhuZZW6wv?= =?utf-8?q?wSQXISof/owJF+pPoxkySy64lNUObbHESozdDEdMaXiJe9gY7uZWMwACfTJaM5h14?= =?utf-8?q?HEQk7u7dq8o8YqGrYSrQAg9t+94JEW4470/K8UeoAwV+SzYxu9j2wktDMqMS/ahJv?= =?utf-8?q?A7P6ymQvP90zD6Ip/gKIl1uYoaAXC9ZMBDRVeW3cdL3Qu1IwQO7ruXQs+ltalD+Rt?= =?utf-8?q?G3dM7O7B9PcLP9mGIBLCYeOFRNWKWOJztiG0HcgHZ541UV9EoqJfn6TeLdhWPzbH6?= =?utf-8?q?1Wd6EYrsdHLJ2FDNkYUXdy9MMQIwxhiIlGC4RIpK2Gl2I+Ngk9+6glpUipAfV2hzH?= =?utf-8?q?bXNwgIvtFuSdXJIN/YPjLZYth0i3x9MpqyCeaCe6eO0QTyWfURwxj8gqTFuqGf0gj?= =?utf-8?q?+B89b2LKpEMC4P/rFfaW+yD7QogjKOz0eTA/+UfiW5ik4grlcbQ4+bzG/hRp4jYeB?= =?utf-8?q?Nim08R76L5PNYSJrG2R81+92dUEu8ZQ2vK4kJ+lD5K4dPAs+PlLl3lyf0d33TIlOb?= =?utf-8?q?f2rZqkPkcQjmpaw32/dULdD8Al9injhBg3+LKBNsI0TatyyUoUSFRcmxf9mSB0KEn?= =?utf-8?q?qWkEwadbT6NG/I/kdgUhylJyddB2odqQMHUIurc7p3EbibX5fTC5lQCPhslFnncnd?= =?utf-8?q?sm9wKcVDG/Hp6s5pXvLBQ9MsctnrOwjLZz87742prQGkVRBdV3ZFfjfJ8QWT1jN4F?= =?utf-8?q?/gKYR7gqGcSxjoJDQZ8QPq3/GeIKG0z63SwWX590Qq5X+WbibbO+dxIJqdlatdQUG?= =?utf-8?q?rvb1Ylbni7EEw0kKVbWZuIJBmVHmjsfbBZBf10LiAAtDRBmnQG4BOraHt2M3J58Uz?= =?utf-8?q?ViU3cmEIVxpCrx8pBPK3YFIgLuY6XoXHvDEu54YkQnRfkvS7/5uafI=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9642.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(7416014)(366016)(52116014)(921020)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?lby3RsI3cKwZfnTmNP5NkgAZXiUS?= =?utf-8?q?leDvTYlbFQIgCj2wnKIbCrlVxBHTcKk+iTukvNwyBtpAOq9bn/OjSg4bP1UBcwKZN?= =?utf-8?q?eer7dtmJ/MewmirHaCzZJr3DlHdU60+vR2EwNJoFUyShTjMjRmjZN2zUHq3OXRaAQ?= =?utf-8?q?Omnf2TsbhCXHyzzsyQwL5RgdGIRLJeW2lyzgCbnmTrcrsy7snwK6odVLyyn4MTsGe?= =?utf-8?q?3vSOONsx+39k3ZxEah+2zc0Nanf/ne4Oh4JQ8JeiRKTHVdE0CYbTXLxy8JrVbfnsp?= =?utf-8?q?Hzq6w6FIfOPbv+2SYD5INs0tjjxbwZo4H5wvAJQ2U64SNxXwkmQCiktb4wJ/MK7Ld?= =?utf-8?q?wM8ZYpHySo1OgOQsUD9WZWiHOzHZdprsLwscbd/Vy/Ki/Qk9N73ZwkNRjYn4QxdCL?= =?utf-8?q?lJgwpRpidRiihxjFGCeLh/1WM22I9her56x9WydUXvepgGZK0b0SoOMJEGsVdYv1a?= =?utf-8?q?h5cCnODAGBHvIyf63V46tuiEgxfMMxl3k6/Xx+jOuKUnB7EevlyZPRZ7G7QyKdkeB?= =?utf-8?q?BjKSxAOf4f+D1CxgmiyKgloNHVIhJ8c8Ai9z35ZCUOVCHRe6y3HAkWViSfo3NLHf0?= =?utf-8?q?xVVJvakUYvOjso+EHpMrQEgac7ZoZFdBQDVwE6ClqISMVHZ9RXQEgKAqkOJ8LYn+l?= =?utf-8?q?+elNfxx0fnroyZjWLjoqrPAKBxuZ2xQ0loyifG/6S8jv451sX/a41dtf0tWL6Zd3w?= =?utf-8?q?h8vc60+wjYaXmuJPBchH9QfrGeD88zdJXjh7zpLrzdyVPoqk9hnkm98R360HsRNAY?= =?utf-8?q?QqZmx6OrXtbVluDLEGz7ybnsTnvqcDhwR8ZeE1os89JTn8uPhA7dQSDgEx5Sw80d+?= =?utf-8?q?0NLGQkKacb+VZDu9gman2fFKQVSBw5XvO69cV5H7H2BgU1S+rYqm6eFkT2O+JvinA?= =?utf-8?q?YzCdGtlVx2A/RogmuHNBvOMgCRKA+tC6EYb6xYmvswvC7gG2W8eBXgQMcyz4XqO5h?= =?utf-8?q?0VymJK7mCa3Y3gxhaW2EjY5Oml1F/n6OU6B2QabbLhr1tI5AVuC2xDtbyHJPzI4d5?= =?utf-8?q?ZKsVJyT+czvAQqMtb1VMzRAcisRvW9fEBM++2npsBfK1ARrQddwRNlLM1WFrSvf7H?= =?utf-8?q?SlBy49VORIocWH9iwPN5tGpuChnGR4PbbUnJmWRC1gHSuXbtKN02+e/OGNp9G6hG8?= =?utf-8?q?ljWjEtDbcBEkcEBw5vHbvU1ExvvGrxL02AYXlvQzrUWoeY1mDmfTKEfU1Z1/Mrmze?= =?utf-8?q?mDuNnnDq5JKzwBlkKFL7jNkJ5SH6CdHasPMPi/05U7clGNy8lt1bJYCZwOPGOXAXq?= =?utf-8?q?JaBrzYhV6bqRsR85ETJnDtWCGD3FXJikwXOxML6rLvPpBoHh0bJB5O5XRZXqWeZJe?= =?utf-8?q?zRLfQYBV1UG74BffWbPT+FO1/BvxAUYOkvSvgM6w1mfvup/Ke9TP5ZZVOZANqmAok?= =?utf-8?q?1Nrq52jgr4udMw4ECDas8p/4lUcKHV/ikUn7vTL/6GnvxprTmazyIOwK5Po0jHZNk?= =?utf-8?q?9clbS6pUoMuQUfFNdYLqvLVXbp3cXKTAoy890mk7yrY3iJj7Cu9HrLWV9FEBUNG4v?= =?utf-8?q?pzRzz3f2hFQv?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: f9987081-c058-42a9-fc38-08dda7739efc X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9642.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2025 16:35:18.8422 (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: M3MKv5cqHq+ri49s5+Axq93wSyHjMEYGTsImneen7uOOcHNmnGClPEWRnTp8rlQNeC3iw0xK4CSOrw+nQ17LLQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB9751 Support only one physical function, so call imx_pcie_add_lut_by_rid(0) to add a single LUT entry when operating in EP mode. Signed-off-by: Frank Li --- change from v14 to v16 - none change from v13 to v14 - new patch --- drivers/pci/controller/dwc/pci-imx6.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c index 032b906c44dfa..3123bf49e209c 100644 --- a/drivers/pci/controller/dwc/pci-imx6.c +++ b/drivers/pci/controller/dwc/pci-imx6.c @@ -1063,7 +1063,10 @@ static int imx_pcie_add_lut(struct imx_pcie *imx_pcie, u16 rid, u8 sid) data1 |= IMX95_PE0_LUT_VLD; regmap_write(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_DATA1, data1); - data2 = IMX95_PE0_LUT_MASK; /* Match all bits of RID */ + if (imx_pcie->drvdata->mode == DW_PCIE_EP_TYPE) + data2 = 0x7; /* EP side's RID from RC, only 'D' is meansful */ + else + data2 = IMX95_PE0_LUT_MASK; /* Match all bits of RID */ data2 |= FIELD_PREP(IMX95_PE0_LUT_REQID, rid); regmap_write(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_DATA2, data2); @@ -1767,6 +1770,9 @@ static int imx_pcie_probe(struct platform_device *pdev) ret = imx_add_pcie_ep(imx_pcie, pdev); if (ret < 0) return ret; + + /* Only support one physical function */ + imx_pcie_add_lut_by_rid(imx_pcie, 0); } else { pci->pp.use_atu_msg = true; ret = dw_pcie_host_init(&pci->pp);