From patchwork Mon Apr 14 18:31:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 881130 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013051.outbound.protection.outlook.com [40.107.162.51]) (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 0A42828BA9D; Mon, 14 Apr 2025 18:31:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.51 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744655514; cv=fail; b=En4kbQb+IkonQjt7e67zkNdT3J1K/ksIppY8kcJHpnDOd6qHiG/M4QldrT6l6mMP4Vdl95NMEy0zFWUpiOq9Ivn2nfVL64fumhbbVMeezZkxRxJfm3pfB2n3sMCwFhjlRpXlcANKALTRbFFKSvVd0INC3xsr5hc3p4x5Ms6nmU8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744655514; c=relaxed/simple; bh=1rniyVcGag0eNeLrwWvT+jPUnbYZckhT5xHhMRAAH+k=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=osaIJUdyrbu1qGNgyAohdoxkOGc6MCaa7pEcCIW0io0CIpMWVIiYF6JlAi94qSAA02s9FuOP5JSTzVcPJco428L659i7q7JagzJsQ48cU/NQbOgSlOljJzEkII4hmnOamw59reVeKDyVwJby6W8sOxLecKw8vR6gtjA+CSb18jE= 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=gIeEkS57; arc=fail smtp.client-ip=40.107.162.51 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="gIeEkS57" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YfcUfU4BRFHwcJyv7iz0JGZYZF2zrdPIVswWAMgK5hkAdQh/3C21e1EmJ62WWXLYFbW8fZjXwVVDJscZ+mrO5Rzn4gTnOJNQBewDjij6G2nPpGqtxHfsTNBtfSjHzKKcRxo19OhPIDgShbXdP6upd0J5LUMIFzSmRJ4Rr1TisPLN+yRa+S4DrNs19sQE46Rr9YfulhswXBXw/HchP22piB9NJ+0OZ9oJV59WESLOdZqZV+bdPVtKCRBAH4v3XJgWyikVqlFqro0RyGwjET+/dZ/70LfG4K2FvXCM1qaM1BIH327ikiR4MY1CvsoqVd23gB31LhN33C5vPuuagcVPeg== 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=CV43Lv9xcy4k1Ss3c5nbEs7m6Hdf2yF4V9lxFdIqHso=; b=f42/jeqayDkDDZcVoopGnTLJ39boXpe9Vk14k1qEdjmXdviHgyMEqYzFsqnpoDoP8aDQHfajMqRfEEL3uUai3FWBIG41A/MTeEXFdjHm0cgI7X3s9lwXjI44fIgnHi7W5adCtQi9jn1K9VfIutcTJOJJfExXBdl+S/lmWdUAzfOAvMlULZW2K++73NaFibALWFJ9wNgmaiyYigVtIqiX9bN56aJhZhqqf7u1U20abYKKSxzTMmYALoTM9uNcnOKh1UUntzSlIXHKMsx9hdgljjBzRNGHmuy7nYi9xL2FYP3C3ZTFvu8yA9KzH3lRwXci5PM23TYSg8/OaWjHIsLG+Q== 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=CV43Lv9xcy4k1Ss3c5nbEs7m6Hdf2yF4V9lxFdIqHso=; b=gIeEkS57ujCOWbKAAQgBh+A3YXN5lOxert/gIMcIUUJamPD2+n0+4htexSoA/boGPxISIq9TEBJuZeqyfjfiDQ676vO/aM5P7rpFayXdrzODceMc4OrYIJosQBtS3vN5LaBlXKeY/9lqbdFrV7jWEXnKCkUS4cWwHc2wFtgZoPM48xfZmp0LCQJ04FWNokJvx9y9dJyGFU7hpo+idwA8Kyh2t7+9bkj1pTpU3gQfucz2eVP1D2uZkvInjg+CxCW+ZwMBHmFF4Cxkl491p1awOCu0pzphJMr/VDHlYSAWWUW2AE/BHlPIIVuJSUmL3Y6P28pUCoSmoaHo5yIjyh3tbQ== 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 GVXPR04MB10245.eurprd04.prod.outlook.com (2603:10a6:150:1bb::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.33; Mon, 14 Apr 2025 18:31:50 +0000 Received: from PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06]) by PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06%2]) with mapi id 15.20.8632.030; Mon, 14 Apr 2025 18:31:50 +0000 From: Frank Li Date: Mon, 14 Apr 2025 14:31:00 -0400 Subject: [PATCH v18 06/15] PCI: endpoint: Set ID and of_node for function driver Message-Id: <20250414-ep-msi-v18-6-f69b49917464@nxp.com> References: <20250414-ep-msi-v18-0-f69b49917464@nxp.com> In-Reply-To: <20250414-ep-msi-v18-0-f69b49917464@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 , Manivannan Sadhasivam , =?utf-8?q?Krzysz?= =?utf-8?q?tof_Wilczy=C5=84ski?= , 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 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=1744655465; l=2203; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=1rniyVcGag0eNeLrwWvT+jPUnbYZckhT5xHhMRAAH+k=; b=M3XttcIZE2pngOxFRfxV2aPLfa0RAPtnnD9lKF59WlR7mZzldABZFnoY5rwp7zgVNqaNLThtw dxECiC90i4uB9/02b7C+KkBk8wyiQw/LS16q7Z8+FkW4qMZ/wuvbkz/ X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: PH7PR17CA0021.namprd17.prod.outlook.com (2603:10b6:510:324::27) 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_|GVXPR04MB10245:EE_ X-MS-Office365-Filtering-Correlation-Id: 15b24752-751e-41d3-df3a-08dd7b829efc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|7416014|376014|52116014|1800799024|366016|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?q?MYynAiH47cSmmBHfuiBpad82sGkBF5Q?= =?utf-8?q?+2WgDlpmAtMJlBFPZeKciwIy8rCGm/yTs+vpLUBQ02Yw6iVPVYUG+31XNBAS0oYCL?= =?utf-8?q?cnxyag4tmS5J/U3FRbT2IKMv/GawvhDjeBVpylV0pdbMoMOYWDtQDRZVc6C+IZ67Y?= =?utf-8?q?SjELVy5x3ucD+vmLy43Bip4QyvaWCV6gLG5yXeSL1FvDaQcANUYPNabBV4jt5+Z0b?= =?utf-8?q?b/UFEuzTj4ck1YMfNz4YV6qCpskQfyyViYhMzfrwQCCx1GFMYwUmRfVQLUr4XMblP?= =?utf-8?q?POOnijfA+FUPyAvr2Hq13b8uAGvMYdPUR4PH0vUi9xcse2XhU9ViBod8gJOepwNfo?= =?utf-8?q?UusJRD1tKRnih7mEvkRiYbClH2GNG5ELur+kxOAWNC0f0GJ1agWs5689/1NeS59HA?= =?utf-8?q?ANmq2jPlfd7ypwVykQ17ATj1Jt+m61bFIkJ39zX6pfA8FPqgj1k79sX/zbzIOG4hH?= =?utf-8?q?YVXK+x54XM2ZS1YzpkY5Mr8dlVwL8M2OWZEcvJ1U4BoE2U0zloUrql5q036QnYKsZ?= =?utf-8?q?HRF3FIYzCyA5Zj454ozdy2YmOMqrTL/WCiY/hoJeLf7P0hRhGEWBvpcYASsBdIVls?= =?utf-8?q?xRaYby6SQgVVfl2AI+y8yT/CMDumOL61v6HTeTa9jCYVxsYIc5v8OWG4oQcfmWg4R?= =?utf-8?q?sBMRKVIKzuyCKVcQboy9id8paQ6y7z5jUdT3djg0Fn0kSM8q3IZffy2gYNKC1UkCC?= =?utf-8?q?SEqWlZvIstq5uxWvk61+iCttrvUHy54ku10jdhWZKmhTjdIDZoE+nLohztWURUpGp?= =?utf-8?q?VUPAnLhmL/KwvngK+MNzgPanaplJmcaP0B0/wDdAA76jaCyRh1ofKlMmHp6OO1cNe?= =?utf-8?q?lo/O+a6CYVzkuZ5pSwHW05E3zqP8DZwty/C7CSO3gEyH+xJdqq8Jlvl9FhNqCItlu?= =?utf-8?q?8uGRg75vvTq5ZZ5vzQuYYcA2Rp4S++EKI+/sVPnHua4X7g/mwvToktUENtXIQgNZE?= =?utf-8?q?W44BpxttvEOqCzidHBM/n5iB1A5ezesG5j00bjZBcr59v9HzvoLbVTEgs7E3HU0ww?= =?utf-8?q?w+2623UKSjyTtcNCvkX/HWTJ+AFJCVVrSd2rmjf0x4Fpzhg0R6SkUb4GCvfK105+J?= =?utf-8?q?jt2DOgoUDM47eNk2gu0Fwb5u0M9sbP5Uda1ShqOi8Du8tG0zZdpbLDuBF+W9zCOGe?= =?utf-8?q?qGAJrIBrvZFOD5Bcg4uyn3wE/xIQGL1wVf3CuBfDpgryH51TelgxVeLNy4KfY8hoc?= =?utf-8?q?zTE6a995WcJJT/b4ID5ZRN7JvWD51TpIcW0I9ay2FYcSIw3oMbzNexIlU8Cldg1z+?= =?utf-8?q?BDIWb58iXcFux0te+TuAoyG8dVXeJdXleXenmXHXuOSShESOk25CuOWhXTYheAj7U?= =?utf-8?q?Ht0irjfhz/V3j325g5JpE4f3kYLalaRrmGl9JFOsmvVDEDCf+hZ0fabxnXTL+6LkC?= =?utf-8?q?tXeJ3qnQXQQq5G4VEO7OX4WezB2p5xIzfv+29UQFK19tPRsR9yzYOw=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)(7416014)(376014)(52116014)(1800799024)(366016)(38350700014)(921020); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?h6XxuTFhQ9ipkQdzUhiXzHL+fT8c?= =?utf-8?q?H3hNPdAr2h335XISWh30loGhQ/5a9H/A9nS95fSgi4Wf4uox+GYXVbn6udWMEMf9p?= =?utf-8?q?KB8a6e0EHSY57ImuHfF63Yx/NXOuMVOQHEhVK9oYHoeXAo/9ueHGPZ38I6fomZ6UB?= =?utf-8?q?qznskOcdR1CpIetNbq91/mo8RBp1XOeEBp5AXUDVBXFviI0GW9Xj8jO2UQ8PLUchC?= =?utf-8?q?HAHvENGOf0b2GoL/HrrrJUgkmv8Zr3VQEh2652K7eU6AMb4ciD1ODEb15cvMcktjo?= =?utf-8?q?/pYcMEldEq2EwK2BQKnJerp3uGQFMmqZ2N07uIAiUQm5QizWc0O3uAUcCz2hxwghi?= =?utf-8?q?o/oyxpPk1zfdanN91pn5q8Hd6bChte6FQ3fphRh6Jhk0iCKkjlgrEEh8nNEuhiEuv?= =?utf-8?q?uQNYrtAQFizYRS1zR9/s0xm8Gwn6bgwZddVs45uW+uaKh5FoUmgzX/sNzG0d7CEHt?= =?utf-8?q?rc8OQ7yAoyWzO3TxP959WhNkDSkyTZSbdSiZNNxXWabmx4PKqQX0d9/PX0O17NXWH?= =?utf-8?q?xeM0khTbaLw/X27cJ/1zOpeuheWM4U5QL8rMVQdvU3wpJmHf0ylr8MjGYPpOFRujh?= =?utf-8?q?5eDjncEGROssZ+NXzN8b7JmkP+CHuu/i9UDAeO3IkbOwkcyudEeHAHCXBcZcVkdJc?= =?utf-8?q?T+14ne14wvpV+jfblV9iLp9vbhYY7jEhtZIbTkCAGj4QfwfQrM7c5XRVwLazIa5PO?= =?utf-8?q?2RI4BzYII34QvLraxJFcYrxuFT+7DJans5tfOKmmILdbS+sOjdyOmwxiMibQSdj/q?= =?utf-8?q?bF8OSVyuw7pL8N6MsKqJFDW9jSyYL9Ce9rTgnlMdcLJe6JA0DAP2kgBbBCOTzUrIP?= =?utf-8?q?nQktw5XLiLP7eEs+DAmY5aqj4oaZVKwRT3FdS3syB6Kh7J+FT2OH+uAul7DHveNew?= =?utf-8?q?s9sPHG9El2VKb52xzwCNY4co586fYZPvT6iRYDk2g/J+HPXf+84cO4xNAgSqxR5zq?= =?utf-8?q?GxqENbQ+kjy7bZlModd+AprCaNQNdlJfccSzYIgjrfynyBBilzqeVJTISzgjqv8pa?= =?utf-8?q?uWmF9JWHtfUos7lzKHEM8nBQuxBFdD25CV5LYEsTKAHaf+BrLye5b4WQx3x4QrjUY?= =?utf-8?q?2TyV0wobLu2Ele1qCu76Fua19XMvHMbskC9DTInx+zizPlzTQbQxPXhUGhAqNGNGh?= =?utf-8?q?Mjt1m4cX2UwFQ27gsSQhJycXySz1mqrM7leQlh8Zw1T9iW4Hu7Wzw5MKsTytHDTI2?= =?utf-8?q?MoysC3sJ/+hyQs0pXmt6l1dbswzYPQNPSyTovNt6nV0tpmaYMxPeE6nqzfA2DghWK?= =?utf-8?q?rcXmX3td/mKJ9E0J3a1er7T0rlBf/+71cTpNZgLuX8y4V9ULhZEo51IHjeQwY82Rt?= =?utf-8?q?EL4dphAiciNB2qHdAAXQjlvQNAKQMRKiWC88UOfeLCmtpTOdBW3dfvEA15GASdFM0?= =?utf-8?q?E0RK4Szva1mXqHlckHCqq+uW9nlYaTyCbYLrJk7iLujK1DaNARujPwS26QdNF9vNl?= =?utf-8?q?nxHTocDWqkTMTZtYCBrc3UCj5nPeYn8v5qbPdI6YVhBNCvx7F26G4C3I=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 15b24752-751e-41d3-df3a-08dd7b829efc X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9642.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Apr 2025 18:31:50.1408 (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: 3Eoz48DY+soC5H9I965MBtDeBDwC4/MSGBTCb8eiwPXXRhJzy6piwFHkjc2+UOIroCky1qDxTN9jMcVZcBK3kA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR04MB10245 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 394395c7f8dec..d04224b8e1631 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 879d19cebd4fc..1040d83740f9a 100644 --- a/include/linux/pci-epf.h +++ b/include/linux/pci-epf.h @@ -213,6 +213,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,