From patchwork Tue Oct 8 19:53:58 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 13826887 X-Patchwork-Delegate: manivannanece23@gmail.com Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011055.outbound.protection.outlook.com [52.101.70.55]) (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 4AF92213EFB; Tue, 8 Oct 2024 19:54:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.55 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728417272; cv=fail; b=oAzxqKfD7nPXfgHKkHchdyTCyqy1OhOE2rVqpMl/ngkt4UFKslT5t4IffYzms3na0Q7aytacpD82N219S4zHnTs1PeUkhUyw3QV1YH2vr+a0w1jf0PZHtyG4STjKW/jXpHM9XZVo6TgbUVYi0OcMmHSaQVyI40/lvWD4OQI8EOg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728417272; c=relaxed/simple; bh=6lzXCmq3a0nuDAFW89s/3o0ihCyVHX43B4MeidRoOSk=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Xacquz0oNBxRVlsj2/ppW8ETsW0uHvaZUZ4c3mT2rXeOZN+ja197Fgsx6ZMa8fT+DRO7QyieNnfN1oKmD3heQlpPvQ1RBH7kzZNHvV4Bo9rxrVsTjZ2TNUunY4WCW0FHNg0bE+7iQwSRfZYVWMcj77+6p6qyOPmeT16fQNEOe+8= 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=LwYHvNR5; arc=fail smtp.client-ip=52.101.70.55 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="LwYHvNR5" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MHFZK2cYIVChOGZd4oig+D50cGf64cvl6Ya9atQXEQ8fpSGala58NMc7FMG9EccVO4X8vZc6TItxYVyVKS/XoimhFXd26D7nGutGYuq5u3IThel1s8jZNUKzpXOQskfw65yI3Nne1s1rvOM23uW9eiizNMe/q3tPSzY0LjtDS7n7ceLbNVhgAtpPrWyDFpWpTIj85xfXIy4ei0wlbyTpvKmqhtWbySjNj4bxwN8/0vSyeX6UAlNSMjP75uYARFJA2orEH3KVaqZ2p9fCq5i2Gq7yq4b76ojP+zPRlkx13yxmwsW1OTGMSlulrVYuSwqdx73Tq//BP9RMsqoAPbUC9g== 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=33uAPZwvH7h5pgdZmtVwE3KTxsUxxUoGDbfjmVnW3NE=; b=JNN7f2gK5sHcx+OR7FaE980t7x0Wa78Z7GRCd7OhyOGC/RIHXdmvXYfLhQZV7mR4RSFxlBEIDmzCPftL90B1VQ+ZNTp170E1m9tU/Qxb/z9VeWDZ60MoRVJY7qX0ZXO7QcNCe5jKIgPyVIuTaJKxJN/k4vDpl8F/r9mvubuvHKNV//nHKQhSgxv8Xgr/FzBe7ZkT3W4bvQMLgrrg2i8P1x+Eu+dVdaPfPtBfnFmON7HlKAMvOZOOpcouEUKtChQpZYtu1UyztVgrr0AnARVIhZ7W1dG4jwf1k1uumNRfOibLyKZip7E0qtdHa7iGd7W420T2gR/eSU6oSCrmA9Crmw== 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=33uAPZwvH7h5pgdZmtVwE3KTxsUxxUoGDbfjmVnW3NE=; b=LwYHvNR5Et7Jy50c8YCBwgHZffigIH0+kwc77VVMkyi10o3m9JO+YL+TKxdgr6abnp4c9sozlhc20C/BQh4Gtj9Zze1TIxiyDKnNgOnwJ5jEOIFI7KIbAV27M0wJAiYekqrMSgF8lMH0ErDX2TU+4m4+3GTrbfLXkYkiH7abMWBXrSpfekHavRj6CxFEg6zCdY8XwyMfqYoC7bRZkVWgTAq+2ZwvaLoH9suuyHiuu+lvCJQ+phMgONuAgM8sj3bk7MdvdDzq8xVwcSrqmDiEdDNJ9sseJU/pEY0I1K61OaQ5rCaypgiQDlGseuhZvd1g44xJwRL/KELuHk7YGv4Trw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DB9PR04MB9626.eurprd04.prod.outlook.com (2603:10a6:10:309::18) by PA1PR04MB10577.eurprd04.prod.outlook.com (2603:10a6:102:493::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Tue, 8 Oct 2024 19:54:29 +0000 Received: from DB9PR04MB9626.eurprd04.prod.outlook.com ([fe80::e81:b393:ebc5:bc3d]) by DB9PR04MB9626.eurprd04.prod.outlook.com ([fe80::e81:b393:ebc5:bc3d%3]) with mapi id 15.20.8026.019; Tue, 8 Oct 2024 19:54:29 +0000 From: Frank Li Date: Tue, 08 Oct 2024 15:53:58 -0400 Subject: [PATCH v4 1/3] of: address: Add parent_bus_addr to struct of_pci_range Message-Id: <20241008-pci_fixup_addr-v4-1-25e5200657bc@nxp.com> References: <20241008-pci_fixup_addr-v4-0-25e5200657bc@nxp.com> In-Reply-To: <20241008-pci_fixup_addr-v4-0-25e5200657bc@nxp.com> To: Rob Herring , Saravana Kannan , Jingoo Han , Manivannan Sadhasivam , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy?= =?utf-8?q?=C5=84ski?= , Bjorn Helgaas , Richard Zhu , Lucas Stach , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, Frank Li X-Mailer: b4 0.13-dev-e586c X-Developer-Signature: v=1; a=ed25519-sha256; t=1728417259; l=4582; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=6lzXCmq3a0nuDAFW89s/3o0ihCyVHX43B4MeidRoOSk=; b=l47AOoAmiJoxrDG5/o4piSsM3sOyKS5HTVtwlyfdahw1RGw5bzy1NEL6FKAIS6md/pN2jNFLU 6dKtMIieij+DiKgmDTsWQ6qfQA5WB0e/9ocaj3fKfu/md2yijG5h/RT X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SJ0PR05CA0195.namprd05.prod.outlook.com (2603:10b6:a03:330::20) To AS4PR04MB9621.eurprd04.prod.outlook.com (2603:10a6:20b:4ff::22) Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB9PR04MB9626:EE_|PA1PR04MB10577:EE_ X-MS-Office365-Filtering-Correlation-Id: afaceb21-3007-4e12-1eba-08dce7d304fa X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|52116014|376014|7416014|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?q?Daz3n9rYVwee6oAtzWG86mcTRuxP6G0?= =?utf-8?q?QPU+qJuBjFM6qFEqBC7Wpuvnuqy8kH0n6+v4eJiJx45AIqIaUDkF8vkvNVDzJRyRI?= =?utf-8?q?aDiJuqyB2qaR7sopxFTQklrwId+an7ZwxxI+ujvoO6L7Ed4cPGb5RlDKhA3Rcpqto?= =?utf-8?q?rZm44NgEEnQpoi/V/MtewOx3JIcFp8ouV6IM5vKzffZ4vjbI2+Hx7tKUlkt3cM1G6?= =?utf-8?q?KrMXCRZdSvat01f8oF5Qn4MXvFU4ywPcSsVblcp4AlEkblchS33jxGaGW2SmpAFor?= =?utf-8?q?wPG64ZvVntALpJg0xHdjGzAvKgxX5oQCAEvQVrWFT1qwIEg3t/Xb40+VoUcLoknU8?= =?utf-8?q?FM9a8LLQk8508TcikuYYiV8tb3oJvWJGTW1zGkgVXEjcUcvfPjxzYd7JCJZWrONgX?= =?utf-8?q?4mMaKCj808L53ZBfaxiG6FObrFUQ6ZUFkJVh+nt9Icvcc3VFRbTR7VDvATQdr97sY?= =?utf-8?q?D6uypHhhpq2TqHUNgUleXZMN5Qqu0BJKKrUbSNDyDxu6Cl119zdHKXSHymeclAesk?= =?utf-8?q?1vo937cuveweD1nF2pGlYmn+GY33INGUJh3qRWrK1k8c8xPJJuG6ZW6Wq1cw9u0yN?= =?utf-8?q?0b9xLlp1P5+gah9dqyPH4ldtLB00hP8juynieYaIE9099/VbbM9Lwg1/v004hNIJ5?= =?utf-8?q?mbNAaJRsFTLRpx4x12txIUtpqsWgz1RK5lujgV9fBgTJ3XccsAdPW6J4MRdB8ekAb?= =?utf-8?q?gZrpdLXJAC0/0Vvnzl4x6S/fK5FhmbAY01LuK85FqgEFHtm4Wvf2xA/9tr2BEleuS?= =?utf-8?q?qdY7NjI1EdZJ+ffhnN/wIigt14ZnnvJ7HAnxkgDzIb1BpyuMokEgWursI6adYosFg?= =?utf-8?q?HAIsjrPzWa+RknVK0ALx/S70mCDZjaN01eXKhraItzXhmBpquRqff97cHLbmramaP?= =?utf-8?q?rNEZmdHd2NgfEwB0NS1143d0mg5zcX2n6dfgNGXSRTjMjRRypMTuxJFcK6JA5Icl+?= =?utf-8?q?ozhu3/2vPfj0HRYKzGE5cqBJPTJp5UdUqstUXeG4VAmCczbGb2aIKhJt/FcqkwoU9?= =?utf-8?q?Bp8/KdljQhPF9PB75+K/QM1kdil3amrvuA3OsvaQmWDdbQmCAexisBUxJ5qiOgNwx?= =?utf-8?q?kv30ZiTHCrEZTGSBW4GPftCjGokqQQrjuPJZM7ZsLfOnXrI1HVOza5FXsdp16j+i+?= =?utf-8?q?cTodN/PP0kcGgW6yIo5Z3vuf3kL7Io1Ae9UP29UuTdj8mK52S36sYdK/cYbP5oOSe?= =?utf-8?q?r2qN67eHLs5msakq5PSfmElFqEamWV3ElVxj9VO8po5F1lfx113IabCNl7xx9e3bZ?= =?utf-8?q?D+dzX6Gr7vLBBzM5ufzDTvgzKU5WPYGqqmQbLpUCeedGVqN8CpWRa0gg=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9PR04MB9626.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(52116014)(376014)(7416014)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?iJPju0w2qHDYggT9f4FH/R94kkzX?= =?utf-8?q?gsC6X29/bZZIlEUtGdhQJxOfyEtf5PPZvEHTR8J8sIpm/i0vFyCqAuZ8hcFOYZq8L?= =?utf-8?q?EbFgaPfv88DxzBowp+BNVgMKoM9eO1Xb1awtzcIZTo6GNnGHs4GFU7vo6v7uZd1XU?= =?utf-8?q?6y/9x3fAjPfD30KSFIVedczUuWhNJKaVJOTZw14kpDItCrj8q2O9JRXD8uzSP+91U?= =?utf-8?q?fsgP5k/8aYAjyRIfF1ZBzDFpVkDyha4JV/3KZdaJdFaWeNfEa39He828n/ZD5QAPY?= =?utf-8?q?dCLRTngKWxIk31g6SuBKHUEbkx40WNZbYc7ffCnQfP0v0eTpBDPl3dXlCCPkHf3Cf?= =?utf-8?q?Eg6Q6YZxZHj5Ku/HpJomTZcO5Y0BhnhzJokJh9Zb6zsCJElyvmPIydhu8d8cPmydv?= =?utf-8?q?nULVtFoGhgTvp7VMV9XwS2dNOWMkN40DQaxQVdGlitwfBA/dzi8SSIzhUlNt7EYz8?= =?utf-8?q?A1eaL8HUdlXZyNmKF+jjIyjMKXMGPHKObZwVeny6TNMmRlg/to/3jByN55Radt4OY?= =?utf-8?q?HRzkAJ5m2gmHHEC8vsVln4quTx50O4bzwcQSxFXT5Q7XWz3PuQrYR0SjpCxQJKLTp?= =?utf-8?q?Q+rACjUwKaKu7fPCmfAMA69MQUJJ0YFujRveizs+RxE3tgrBa3T7pUYQ2+3mgqyyH?= =?utf-8?q?HYepRobc1icOexWlMh8xI5FWrsaDhUolfI1N7WmOQT2jZAqIzEYvaJxZp0gNeQL/9?= =?utf-8?q?SRTZWogkEnGUdaSxb9javEdgNoyW1rG1k7nu+YqC3SX3sSrjIur3K97X8jWr6T7SQ?= =?utf-8?q?cshPeX6ZPMJMoKVXsgsA7FKrLhGJ/RnEcR3m9zQN1JAdjGF1jA9GmRM4VouPJ9pXr?= =?utf-8?q?60FZI8Nv1hnD99EnJPZQ00B49FRzePHlVRw1Q4aJFqLVhOA0iH1rn0MWNwAxTEMfU?= =?utf-8?q?bToxfpVa6CnLta+wZrUf88BUjIhU1uUXQ6ub+TLDqoXZLlX8qprUKqrAa8otAaczW?= =?utf-8?q?FFVsq9g824SFz6slIwwkRj8FU0A6JhILzqDbotQQIv6mi3YwvLCbNDOtytJJuxoP8?= =?utf-8?q?RSGTasESJ7x/sMQATOayqrbmvCktQrkiaYt2UNQoRt5QxM67S0ItBG6kZYWQFDiRU?= =?utf-8?q?t8I8lf6cj/hIJ4vgt8MAGuzMzUkXaDLhevlCZ2MSoeHKD6YN8/ihqwiD7NAt1dVVY?= =?utf-8?q?PpCA24lyYuNnlR0o6/mGASc2fV541c+lcxpoUzy4CbPbMlJy1FnjdpgumR+D3fcWR?= =?utf-8?q?sMKlYQa9kMn//yPSQoUvu1UjbusHmigwxn1pnjn1cFh+QzdZntHrOdXvFwIdHgvw2?= =?utf-8?q?F9wglZrT36XdxAzxUFwPJ7U4uNCol+7m6ww93hjIS0RvM3r9dfM5NJsppj1gxA81T?= =?utf-8?q?v96ujgU133vMvmIDjlFD7jIBx0hfVIcnkI9a4qojc0LfpGqcRSbvl+Za6dloPbLyY?= =?utf-8?q?VPEn/xI94wcV0wi/ea3yxaPFOOBqFFObYcKCON/wvIOC58aRhStOnI2mNJsAT5u5G?= =?utf-8?q?R2JT8wQ4vLlBdaSxgnEIOu/rXJeazRKM2jAcbFfCM3mUyh7OdG6bqrMyS/7RdkJh1?= =?utf-8?q?kEgIapT4HOzL?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: afaceb21-3007-4e12-1eba-08dce7d304fa X-MS-Exchange-CrossTenant-AuthSource: AS4PR04MB9621.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 19:54:29.0133 (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: qVcQNdLmntIybsrBmYkwFNESf9oKZzm0DzcKQOveY8w/JOsppZzRO96nDmWxcwUUkYrRlCiPJH9lbQNx6xfTlg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR04MB10577 Introduce field 'parent_bus_addr' in of_pci_range to retrieve untranslated CPU address information. Refer to the diagram below to understand that the bus fabric in some systems (like i.MX8QXP) does not use a 1:1 address map between input and output. Currently, many controller drivers use .cpu_addr_fixup() callback hardcodes that translation in the code, e.g., "cpu_addr & CDNS_PLAT_CPU_TO_BUS_ADDR" (drivers/pci/controller/cadence/pcie-cadence-plat.c), "cpu_addr + BUS_IATU_OFFSET"(drivers/pci/controller/dwc/pcie-intel-gw.c), etc, even though those translations *should* be described via DT. The .cpu_addr_fixup() can be eliminated if DT correct reflect hardware behavior and driver use 'parent_bus_addr' in of_pci_range. ┌─────────┐ ┌────────────┐ ┌─────┐ │ │ IA: 0x8ff0_0000 │ │ │ CPU ├───►│ ┌────►├─────────────────┐ │ PCI │ └─────┘ │ │ │ IA: 0x8ff8_0000 │ │ │ CPU Addr │ │ ┌─►├─────────────┐ │ │ Controller │ 0x7ff0_0000─┼───┘ │ │ │ │ │ │ │ │ │ │ │ │ │ PCI Addr 0x7ff8_0000─┼──────┘ │ │ └──► CfgSpace ─┼────────────► │ │ │ │ │ 0 0x7000_0000─┼────────►├─────────┐ │ │ │ └─────────┘ │ └──────► IOSpace ─┼────────────► BUS Fabric │ │ │ 0 │ │ │ └──────────► MemSpace ─┼────────────► IA: 0x8000_0000 │ │ 0x8000_0000 └────────────┘ bus@5f000000 { compatible = "simple-bus"; #address-cells = <1>; #size-cells = <1>; ranges = <0x5f000000 0x0 0x5f000000 0x21000000>, <0x80000000 0x0 0x70000000 0x10000000>; pcie@5f010000 { compatible = "fsl,imx8q-pcie"; reg = <0x5f010000 0x10000>, <0x8ff00000 0x80000>; reg-names = "dbi", "config"; #address-cells = <3>; #size-cells = <2>; device_type = "pci"; bus-range = <0x00 0xff>; ranges = <0x81000000 0 0x00000000 0x8ff80000 0 0x00010000>, <0x82000000 0 0x80000000 0x80000000 0 0x0ff00000>; ... }; }; 'parent_bus_addr' in of_pci_range can indicate above diagram internal address (IA) address information. Reviewed-by: Rob Herring (Arm) Signed-off-by: Frank Li --- Change from v3 to v4 - improve commit message by driver source code path. Change from v2 to v3 - cpu_untranslate_addr -> parent_bus_addr - Add Rob's review tag I changed commit message base on Bjorn, if you have concern about review added tag, let me know. Change from v1 to v2 - add parent_bus_addr in of_pci_range, instead adding new API. --- drivers/of/address.c | 2 ++ include/linux/of_address.h | 1 + 2 files changed, 3 insertions(+) diff --git a/drivers/of/address.c b/drivers/of/address.c index 286f0c161e332..1a0229ee4e0b2 100644 --- a/drivers/of/address.c +++ b/drivers/of/address.c @@ -811,6 +811,8 @@ struct of_pci_range *of_pci_range_parser_one(struct of_pci_range_parser *parser, else range->cpu_addr = of_translate_address(parser->node, parser->range + na); + + range->parent_bus_addr = of_read_number(parser->range + na, parser->pna); range->size = of_read_number(parser->range + parser->pna + na, ns); parser->range += np; diff --git a/include/linux/of_address.h b/include/linux/of_address.h index 26a19daf0d092..13dd79186d02c 100644 --- a/include/linux/of_address.h +++ b/include/linux/of_address.h @@ -26,6 +26,7 @@ struct of_pci_range { u64 bus_addr; }; u64 cpu_addr; + u64 parent_bus_addr; u64 size; u32 flags; }; From patchwork Tue Oct 8 19:53:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 13826893 X-Patchwork-Delegate: manivannanece23@gmail.com Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010061.outbound.protection.outlook.com [52.101.69.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B48262141D3; Tue, 8 Oct 2024 19:54:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.69.61 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728417284; cv=fail; b=u5VQsDLzBJiHTIFBiYMzLWEggtWIXrvi0Ez8mJtvBomjhQvMmGaUvhVFNZAUkaClOfTt3hYSGcQ+2NWqeHLSxeymLSmPGaC9bob+htIgSlV6fMHSEC8RyJ/hyCXktkOvdTF/D7rkQIOHP09u5qjlwIv3Pre//bWDkpJ9+2Ne/U0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728417284; c=relaxed/simple; bh=0L3qEl/+gpp3mZUPcyNe82/HxmZU/2VbLozR9pKpTKU=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=NVmCjx0gdMO9yLv8knpOJGARp+wkkz0NxuyJBM4EvCiEVWYphT0qDIdLRUFUoNfoA0ZpUz0mkfho5nr9eR3nVmDEx5AOOs8TRKdMLLS7UON3Bx+MMtZeAxvA1MvB/K95bCmM74xEuncTNpNqgvjLyxQ+jHUnjwSRYtAQucxDd+Y= 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=DmahCHvh; arc=fail smtp.client-ip=52.101.69.61 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="DmahCHvh" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=oF1fy1nC/nB8sVE/JSLHi3VG8sqR1fRPNRsbIDKKNPKnu8s98sgaunToCdLbMPmDu+cv335hHfOXse3Y/T7RutwAOFIUc8hn9nSy80sj8TqxOMEQypmaP2TiUbuCDRDJwgnxLmKyDf/ZCBY2FEBu03ITsWexVtM4kCxOtxoFwJmHKpF2hFutYBqCQ0Q1rNprjCz3XQvRZd5P2T2/FdOKkzTjHPaIO7eQURaarhHQPsxRJ95hIQ2Ys0d5r8HaG7ieLN75ciZWKGq2VlnQlTMSnQBmTH9j9GN/wARraygSHOARnNCucC/T0SRQa50fdPUCEsto0vaX1jKbpipSLL+c8g== 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=/xjmrzgXUr8SnuZoLtkR/dSps1HgUaXdt6njq7Rjbfk=; b=Ffw0a3Rk8zzbct/F8/KbAAcdTeJb7L9OhUmHuwxPxie3l4dJSxNqteA9voHNIQj9wOzJymBlZmR8QqVo8Q+k24Ik8UHaiONXQvTTTBfk1eiO6Iex6TKFjkezfor4IuKSXqJAYVGF/Jhh7Yp4n0sfL2wvVzezK8Glsw+3wsXnCXTH2+lx8/PUwfYMzRcE/5lRELGTTM0HiP9dRyc8CH/0AV3L1KxuWAgoFfLGXTWN6R9pQDaj6sStdxVgoPPQ9wWBKcDEu0ty4Soum1nCg+kSwkZPDEYzLokFYzEpeeyN+sOG/7Z07djPOAINMoewXjXdJs+m/+ReRzy0m7buic0xSA== 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=/xjmrzgXUr8SnuZoLtkR/dSps1HgUaXdt6njq7Rjbfk=; b=DmahCHvhgtb+V5Vz5hArhx0iOoSSdzT8z9cNxin07q0cX38bDCPIun3DkpkT19qMEsUYjlLpO7tPWWlAy4btQeKfT0M3EISAyZcIKmPxAWwJQoOhL1JuGtDa+g78IGk42pjL6Mr/SjP/Khp0A38cJhlW5NoxCYY3xDA3QY1LqMWhZKawMhuA2RITTQfon448mV0zQz67+5B6NtskTlzTfKdtGJ0BGgJcfhNnq+cWMbCzpCtTF+ojWHCoHVBclYPS87GW53kcAL6Uy5VID5mkvsIyLqOoFLhmtsi2/8D5zcm38GdNIkdwWkSyGtkyvWfn6pGgW+rZd1B8sdBOvWnamg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DB9PR04MB9626.eurprd04.prod.outlook.com (2603:10a6:10:309::18) by PA1PR04MB10577.eurprd04.prod.outlook.com (2603:10a6:102:493::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Tue, 8 Oct 2024 19:54:34 +0000 Received: from DB9PR04MB9626.eurprd04.prod.outlook.com ([fe80::e81:b393:ebc5:bc3d]) by DB9PR04MB9626.eurprd04.prod.outlook.com ([fe80::e81:b393:ebc5:bc3d%3]) with mapi id 15.20.8026.019; Tue, 8 Oct 2024 19:54:34 +0000 From: Frank Li Date: Tue, 08 Oct 2024 15:53:59 -0400 Subject: [PATCH v4 2/3] PCI: dwc: Using parent_bus_addr in of_range to eliminate cpu_addr_fixup() Message-Id: <20241008-pci_fixup_addr-v4-2-25e5200657bc@nxp.com> References: <20241008-pci_fixup_addr-v4-0-25e5200657bc@nxp.com> In-Reply-To: <20241008-pci_fixup_addr-v4-0-25e5200657bc@nxp.com> To: Rob Herring , Saravana Kannan , Jingoo Han , Manivannan Sadhasivam , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy?= =?utf-8?q?=C5=84ski?= , Bjorn Helgaas , Richard Zhu , Lucas Stach , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, Frank Li X-Mailer: b4 0.13-dev-e586c X-Developer-Signature: v=1; a=ed25519-sha256; t=1728417259; l=6492; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=0L3qEl/+gpp3mZUPcyNe82/HxmZU/2VbLozR9pKpTKU=; b=+c0mkhqtxDyYANK7fl7oYdK3Me3oM0gAyo894gvHfYjTl8GLgpijvOtaIRqiycPXA/sOpVG75 9GurMMaIJn9BMlBknOqG382vuZLJmj5KStQv/+V37il1wpVVXv80ZA2 X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SJ0PR05CA0195.namprd05.prod.outlook.com (2603:10b6:a03:330::20) To AS4PR04MB9621.eurprd04.prod.outlook.com (2603:10a6:20b:4ff::22) Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB9PR04MB9626:EE_|PA1PR04MB10577:EE_ X-MS-Office365-Filtering-Correlation-Id: 1c889615-f9d1-49d9-75f6-08dce7d307f5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|52116014|376014|7416014|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?q?O9QSZyplGq4Y+D1YUVk9oEPb+PM7mF/?= =?utf-8?q?NupjM4mi9wq7SXPU8zHGJ2zNxiFAWh9HP62R+Jmg8GCJWnVToTlgn0Vyj51Uc5507?= =?utf-8?q?QJJV5EgI+4HBqlEz4mA9PHACn8k46rwn1HrXFMwSqz2rsn277kn4cPtP6KrFrkN6G?= =?utf-8?q?aeI3C/s25s6Qt5kGTMUUMcyAbAfqlGEUufBW7WhDhHlLr+42a9FHCK+VwupO1tgzj?= =?utf-8?q?tkfNrVgVkp+pTr1rSzIcWYy67n7snyBpQBRqS54nLAscSY1bIgQQ0ORkBU3GDLrXz?= =?utf-8?q?7ERuQB9JPFDp8MfdlidDc0hXACuZCokNwa/C/qIK4ely7/cTgGGEuako1QNVT/Pdb?= =?utf-8?q?mJpGRrdkI8UHEQdTMSoYJRpDTYg6XnyRlL4ARQIr4CpEASvbLIoitS+hZjxexfgCe?= =?utf-8?q?9W8yHNsVFYeM8qBvA5Uas3P57XtRf8iKQ6ECgSjEnOKRGdYNe1j8fzUAGIZ0oZ6Pz?= =?utf-8?q?SmDdbfXrmOZ5yvMK2tGoCB0Pwgkk2liDAhiL465IR11Gs+lHG1sqj0OU99kWqDO4p?= =?utf-8?q?8ibiK6lLNJJa/zkEQuEzYdtYD07Tz7lmSnrrrW+6JTSsuuDUytYmfDoP5pET1jPh3?= =?utf-8?q?jx/RSp6eCKuHq53yQZWACzsdfReojUnhZ9dojNJ2WG8mHP8ntlpYbofdTqEjfV0cx?= =?utf-8?q?zQzZUIlme1CgVSwlSZL3X7/naqhJTVI4gw+q+anHRFBIQC+pIP7Mrv3B88fvQGqr5?= =?utf-8?q?2KD/EhJLz4lXQL6oUt7gFdeiMbQM5d7hokbk5vVPgBcB1LxAQQVKmikKOLjrtbE1y?= =?utf-8?q?AuCzXfCxrmvS9x68OJ2xKrZfTcip72fujm/OP009m2+EW6hvdknY3xLc9rkhRfGjx?= =?utf-8?q?oocwLmnbiN1ghPSkIsDJcg+4CgFrvNvn82F97c3LOLZ0JP5GXqI2ceNZNCpiJrU9Q?= =?utf-8?q?KZqsrLK6zJBiYYth1BoF6wqyn5lqyo4AnqbcFdaVWwMBFSz955IiAANmyl4w3pnr9?= =?utf-8?q?54de443si19wtUQMKf+8BCjlf0HSKFssHxNyAWcljqUBntQCNsYtWx8hRnxdclpKN?= =?utf-8?q?TFRFmr69fyKOG+NrBNjQgDTJ8v8lTb2qit7Esrf8wSpPz6lZyEfEWw3LJyVoQ3N1I?= =?utf-8?q?u5LNftewUNdCDepMpKSRkWffkBHum5PEp3+FoCEalF74GNd9MP7RQfcZ8gO+oHy/M?= =?utf-8?q?mnV6OwJ6Q6P7K4KtgXTQEfTfbpv66G1XJ0CM+jYZFuSeRAKt9I2Qk3+0dKMe0vYEQ?= =?utf-8?q?ueAsph9CqvWfqNcZ8mNGlyv0yL4veHDjBTU1Gbapu6cV/GC4aEkq5Qte+/uGiekWa?= =?utf-8?q?we5DVj9oy9niI+MECfWTriFrPD9xETHl5Isz2g7t7vMuHqecfBLM+4Ag=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9PR04MB9626.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(52116014)(376014)(7416014)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?/FKMr26aqOGOVH0LojKsqhoGM2dY?= =?utf-8?q?bwxlRLSYwRSoKK3D+Z3B/j2S9t3jR/TPrurJxUNDPiOG7R4wDAdxA89pNYMQ8+YYq?= =?utf-8?q?9tnzXNzGJUXGrasG/AJSc5L+x1H7CW1uRowwJEYqJbLP/XbZ7jQtbVRrfdDnmlnzb?= =?utf-8?q?fiUVwMKJ6cSK9jVfVRPeqwayAXSd771ea/j+5Fhxrz8kAd+gmNrrQteYynwTXYiem?= =?utf-8?q?vw1z9wH/JQnK+PR/1x7emryGGotzHXvDdvnLuR+Ipcu3PFMk0lebIiaLF5MB/JYVf?= =?utf-8?q?vXLS9usWSZfk5kFsgf47crl3rgOQbR5LfGyhypizk5lG/DQetkUhzaebSxQemaroy?= =?utf-8?q?Osg58t4mTlEJ74TOP4y559t0IzLyCge3pVhNrwor+ocQmFeG1PkDnfwSmVj06VJ3s?= =?utf-8?q?aPT87sqhB90PE/k1WsYatiYtAqpUylxdHOB/SBdDERDAUI/VADed+7xm9eMOuHIEC?= =?utf-8?q?1FLhi+Es/hwq0+TV0weSDpJupoNRl/vfI6990v5E9dQeYbwaYaXigrq2dMzichzPi?= =?utf-8?q?ssbr5e2beIKNv7ewuHR4MDx/QQOqJLe6N4QxpQdQGQ9qu4YLaK0vdW/8meUvR6DwM?= =?utf-8?q?zLxq7at6rMm+KT/SwuM79amANwtpACQvTsLz2/hZTTBVANoEQDOkdT4u7+ZN0jWs9?= =?utf-8?q?0eF+lDMarQbudOMzq5flTzm8v4IwyVv766BWq7ar9wO0eDC3sNNWtnpbfGvzFyu9b?= =?utf-8?q?g8mro52qw3Cd7namMOt4cwShhd4jjbMqtNFxncGmzk1kbXqMmxXuLoXwMJf4yOYqz?= =?utf-8?q?KYrbmzTqUtwiuVxdiCSa+hrvj0fyVyw+iY2IM8X9f+7DmRn/lYdxBHYJ7f0TMn3Rk?= =?utf-8?q?audJDT08blgROs1eR3ZVSqZNXtjpxLN8FkSvc4z5rZUYOlWEnpwlmASpdpfJvVow7?= =?utf-8?q?eWXcxnDWBZ3ERR39CaV0WUTlx4sK41ulhB4DcHb5aCJi6KXGJtMynAmy0ggsCPq5p?= =?utf-8?q?D+WJBZaNBojqnkPLSBS3g0ipo5Dput08oEO+JmGbZQo4Xh8Hj0OZ3P6v9oNxlHWZw?= =?utf-8?q?5rhwrsZ9HbiWh7YjJj0/+jv4kN+UEo9TuSazi4R/yvZQNl8pLdqnOzXLX5/n8jknN?= =?utf-8?q?nBAVZnvl34xv7oOaulOZYF7/wn+ioBplO6zPCY0rt6hBcF1XkVT/j52LvICYOdYou?= =?utf-8?q?VIP4MQ9EHaPouQMB5eqS476cmQSqQN0Nn2Pd5eMe1nYvLKjmZjUlA/jFYFjZEGWP6?= =?utf-8?q?b10l99l7EFGR/ZAd6UbdwRw7O544WsPOg4fojxlNfIX/5M0OzhoxGCQCKMCKor/hZ?= =?utf-8?q?7YzDu1NEkAyhxWtF943VnU9Etux0dFc73Em43LRyGP0ITG/bJHtHlIAivGf3sj0Eg?= =?utf-8?q?9MXmnUaxSCfjPLbTU+M9NJ858kXyRRhAxRU9yitLDlSj9RSlOnR4Cbjj7uFWmLy/Q?= =?utf-8?q?nLKbhk9u+xxBEcPJqyBvNpdS0cMihu86qUMiivAF0z5hnYgQmBS8FJgoDsy/QnNB+?= =?utf-8?q?F1hl6wE+WdA9MuKwlwhO+JVW6gF0lzUT+r3XoN+d++HLqcYqGgBxEE5M7OX0u3Q4N?= =?utf-8?q?EbQ0n40b3XTk?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1c889615-f9d1-49d9-75f6-08dce7d307f5 X-MS-Exchange-CrossTenant-AuthSource: AS4PR04MB9621.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 19:54:34.0340 (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: ZnHuMhiainRCtcHtCZtm8JgbC0hH2mKqjnASiKuwO0aDMoxR/ixYwllynxCi5IXocCAf+X1OsYaoG7MJ1/CKuQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR04MB10577 parent_bus_addr in struct of_range can indicate address information just ahead of PCIe controller. Most system's bus fabric use 1:1 map between input and output address. but some hardware like i.MX8QXP doesn't use 1:1 map. See below diagram: ┌─────────┐ ┌────────────┐ ┌─────┐ │ │ IA: 0x8ff0_0000 │ │ │ CPU ├───►│ ┌────►├─────────────────┐ │ PCI │ └─────┘ │ │ │ IA: 0x8ff8_0000 │ │ │ CPU Addr │ │ ┌─►├─────────────┐ │ │ Controller │ 0x7ff0_0000─┼───┘ │ │ │ │ │ │ │ │ │ │ │ │ │ PCI Addr 0x7ff8_0000─┼──────┘ │ │ └──► CfgSpace ─┼────────────► │ │ │ │ │ 0 0x7000_0000─┼────────►├─────────┐ │ │ │ └─────────┘ │ └──────► IOSpace ─┼────────────► BUS Fabric │ │ │ 0 │ │ │ └──────────► MemSpace ─┼────────────► IA: 0x8000_0000 │ │ 0x8000_0000 └────────────┘ bus@5f000000 { compatible = "simple-bus"; #address-cells = <1>; #size-cells = <1>; ranges = <0x5f000000 0x0 0x5f000000 0x21000000>, <0x80000000 0x0 0x70000000 0x10000000>; pcie@5f010000 { compatible = "fsl,imx8q-pcie"; reg = <0x5f010000 0x10000>, <0x8ff00000 0x80000>; reg-names = "dbi", "config"; #address-cells = <3>; #size-cells = <2>; device_type = "pci"; bus-range = <0x00 0xff>; ranges = <0x81000000 0 0x00000000 0x8ff80000 0 0x00010000>, <0x82000000 0 0x80000000 0x80000000 0 0x0ff00000>; ... }; }; Term internal address (IA) here means the address just before PCIe controller. After ATU use this IA instead CPU address, cpu_addr_fixup() can be removed. Signed-off-by: Frank Li --- Change from v3 to v4 - none Change from v2 to v3 - %s/cpu_untranslate_addr/parent_bus_addr/g - update diagram. - improve commit message. Change from v1 to v2 - update because patch1 change get untranslate address method. - add using_dtbus_info in case break back compatibility for exited platform. --- drivers/pci/controller/dwc/pcie-designware-host.c | 42 +++++++++++++++++++++++ drivers/pci/controller/dwc/pcie-designware.h | 8 +++++ 2 files changed, 50 insertions(+) diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c index 3e41865c72904..823ff42c2e2c9 100644 --- a/drivers/pci/controller/dwc/pcie-designware-host.c +++ b/drivers/pci/controller/dwc/pcie-designware-host.c @@ -418,6 +418,34 @@ static void dw_pcie_host_request_msg_tlp_res(struct dw_pcie_rp *pp) } } +static int dw_pcie_get_untranslate_addr(struct dw_pcie *pci, resource_size_t pci_addr, + resource_size_t *i_addr) +{ + struct device *dev = pci->dev; + struct device_node *np = dev->of_node; + struct of_range_parser parser; + struct of_range range; + int ret; + + if (!pci->using_dtbus_info) { + *i_addr = pci_addr; + return 0; + } + + ret = of_range_parser_init(&parser, np); + if (ret) + return ret; + + for_each_of_pci_range(&parser, &range) { + if (pci_addr == range.bus_addr) { + *i_addr = range.parent_bus_addr; + break; + } + } + + return 0; +} + int dw_pcie_host_init(struct dw_pcie_rp *pp) { struct dw_pcie *pci = to_dw_pcie_from_pp(pp); @@ -427,6 +455,7 @@ int dw_pcie_host_init(struct dw_pcie_rp *pp) struct resource_entry *win; struct pci_host_bridge *bridge; struct resource *res; + int index; int ret; raw_spin_lock_init(&pp->lock); @@ -440,6 +469,13 @@ int dw_pcie_host_init(struct dw_pcie_rp *pp) pp->cfg0_size = resource_size(res); pp->cfg0_base = res->start; + if (pci->using_dtbus_info) { + index = of_property_match_string(np, "reg-names", "config"); + if (index < 0) + return -EINVAL; + of_property_read_reg(np, index, &pp->cfg0_base, NULL); + } + pp->va_cfg0_base = devm_pci_remap_cfg_resource(dev, res); if (IS_ERR(pp->va_cfg0_base)) return PTR_ERR(pp->va_cfg0_base); @@ -462,6 +498,9 @@ int dw_pcie_host_init(struct dw_pcie_rp *pp) pp->io_base = pci_pio_to_address(win->res->start); } + if (dw_pcie_get_untranslate_addr(pci, pp->io_bus_addr, &pp->io_base)) + return -ENODEV; + /* Set default bus ops */ bridge->ops = &dw_pcie_ops; bridge->child_ops = &dw_child_pcie_ops; @@ -733,6 +772,9 @@ static int dw_pcie_iatu_setup(struct dw_pcie_rp *pp) atu.cpu_addr = entry->res->start; atu.pci_addr = entry->res->start - entry->offset; + if (dw_pcie_get_untranslate_addr(pci, atu.pci_addr, &atu.cpu_addr)) + return -EINVAL; + /* Adjust iATU size if MSG TLP region was allocated before */ if (pp->msg_res && pp->msg_res->parent == entry->res) atu.size = resource_size(entry->res) - diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/controller/dwc/pcie-designware.h index c189781524fb8..e22d32b5a5f19 100644 --- a/drivers/pci/controller/dwc/pcie-designware.h +++ b/drivers/pci/controller/dwc/pcie-designware.h @@ -464,6 +464,14 @@ struct dw_pcie { struct reset_control_bulk_data core_rsts[DW_PCIE_NUM_CORE_RSTS]; struct gpio_desc *pe_rst; bool suspended; + /* + * Use device tree 'ranges' property of bus node instead using + * cpu_addr_fixup(). Some old platform dts 'ranges' in bus node may not + * reflect real hardware's behavior. In case break these platform back + * compatibility, add below flags. Set it true if dts already correct + * indicate bus fabric address convert. + */ + bool using_dtbus_info; }; #define to_dw_pcie_from_pp(port) container_of((port), struct dw_pcie, pp) From patchwork Tue Oct 8 19:54:00 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 13826894 X-Patchwork-Delegate: manivannanece23@gmail.com Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010061.outbound.protection.outlook.com [52.101.69.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1EA6A215007; Tue, 8 Oct 2024 19:54:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.69.61 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728417287; cv=fail; b=CmXAfdI6d2ws/V5lMNUF+KDIBuVEjo1Nx92VpRjs6mJuY6NWyalpVH//hbuo6lHRQR92ud1BeG/aUCqSML2hkhYctvGK9xbHg7GvyfOtObhM5lSYE84L/JzzxjaXjrgVn9vYXSO5mTooTQ7g44qErhJsIKI8ISwhSvXtYxH+vE8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728417287; c=relaxed/simple; bh=MSaZLUc5PtP8YnYAS2wnuP2FJ1mAuEYhZZgffyYJ450=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Fs77h+lWEmtaTz9vb+G4MndKynGMc+2C0N1fhst/S2I1dqWJCQApZCAHTd5DBczlILZavyMuXl+DSY3DSH6EM9/R92KHd6TUrS2DTr+fvk429Z0+9weMj3lktK2C9v0ce/N6Ec1s2SqlS472C+Nq6tziXm3a+z4v/KkYW+8Y+HM= 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=M7d1AgAr; arc=fail smtp.client-ip=52.101.69.61 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nxp.com header.i=@nxp.com header.b="M7d1AgAr" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Pygt9Dsp0bHKz3QMbU7AKJB2OYsa0Y/skkVDnvyJAgjj/wvRJfnQ4XoeQeBK/oMg4eLgJEVTA2ndp3HQ+V/dJYAm35P0zQ2IyA5JDp3A9L8K79lemppxGchQrpDZhLKkCXraC50NTxNhf8w7kGiVL3W6RpGFw3A8N9VHiBjvlYdZhToKnYX81ck6oWjHYBjf37BbJt38iJTkVDIlB7sO2dnuyvBlvmxlUJVYIkW5HD/nytSHokRaf2KnnzeJG+Q3Ih8oA4hiNnWNqJiCAkgWq3xOXDurQB3nKQEqZAJxTTl7Gfauu/cgy9/EG5g6SP+0FqNUlq9wnJ/CaOt894M/hw== 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=VXHYIwoka3iYigA8Wm0ay+xHwGBdoHK3DHRGpBMZUZ0=; b=TVTvqHVex77kYewmtiE3vSfPgwPb9eqdsSq6EnNqwpKFgFnlBc1LIMYQTTSJvDxEtX2kvTYPLP11kpPF4MGweVbubNYKqgj+arN1cDfSSNKJVHln9w61WbsuQYPQjGbBe3Z8WqZ5KYNqexuwg/81dlDhXaiU/n3NJJ3om3y3HuqU3IW9g74LH0cpm98wgkw0Etazrn1Wku5VUUDGNQ87MkVMLqiNTVxlulNaMWkrr2IFTLTyWwjjFTMi1LKVMPPyEO/9Cleqfwpu7aYQTLjf5oh8Camzazf99smRIWQn0DXWp5BCPytyXrnFzb71BrvkNW8ElHOL5lEbcYLhTHb0ig== 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=VXHYIwoka3iYigA8Wm0ay+xHwGBdoHK3DHRGpBMZUZ0=; b=M7d1AgArY3fSWzBAnzBN1GDkrlBjZjQtxUltB/xlHOV0IaNDaFeyeXCn3izOW1KwSLHviVoAJzfqOaR4XqAuJkB59JV1cnq7tD783WTW+ViWpMd1WVZn5y5NYGIdUfE2YuhlFNChRI6J3Wm4EMtYZZl5xT7RT1t2/GRBgBaxD+yIqz2dh5NwdHDOAEEeCbhfEIEUFzD3mYiSko0pdMMEBiGNnUna3w9QSUmTg7eBAvr20jTBTQWgsadB4vo5Th085OAWfOOXfoXWOkJiBoqUoOTWpeDjKsygF2VqidiE4okzygdK2PWoxUGGKVYZKBWkJCwe+TBfMWYlodYiID6Ypg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from DB9PR04MB9626.eurprd04.prod.outlook.com (2603:10a6:10:309::18) by PA1PR04MB10577.eurprd04.prod.outlook.com (2603:10a6:102:493::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Tue, 8 Oct 2024 19:54:39 +0000 Received: from DB9PR04MB9626.eurprd04.prod.outlook.com ([fe80::e81:b393:ebc5:bc3d]) by DB9PR04MB9626.eurprd04.prod.outlook.com ([fe80::e81:b393:ebc5:bc3d%3]) with mapi id 15.20.8026.019; Tue, 8 Oct 2024 19:54:39 +0000 From: Frank Li Date: Tue, 08 Oct 2024 15:54:00 -0400 Subject: [PATCH v4 3/3] PCI: imx6: Remove cpu_addr_fixup() Message-Id: <20241008-pci_fixup_addr-v4-3-25e5200657bc@nxp.com> References: <20241008-pci_fixup_addr-v4-0-25e5200657bc@nxp.com> In-Reply-To: <20241008-pci_fixup_addr-v4-0-25e5200657bc@nxp.com> To: Rob Herring , Saravana Kannan , Jingoo Han , Manivannan Sadhasivam , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy?= =?utf-8?q?=C5=84ski?= , Bjorn Helgaas , Richard Zhu , Lucas Stach , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, Frank Li X-Mailer: b4 0.13-dev-e586c X-Developer-Signature: v=1; a=ed25519-sha256; t=1728417259; l=2455; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=MSaZLUc5PtP8YnYAS2wnuP2FJ1mAuEYhZZgffyYJ450=; b=2BbU2aQgzOxJ1q4XsiXSgRbKVGk+ZRGBAI/9m1Nmljg4YUiqIrzbXe2gsNLEaPCgmlshWIC32 Juf0XOnGXaWDIPSjMcFRUFLw7JCd/VjY3jiolhfnB7TfwFpXc2imZDK X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SJ0PR05CA0195.namprd05.prod.outlook.com (2603:10b6:a03:330::20) To AS4PR04MB9621.eurprd04.prod.outlook.com (2603:10a6:20b:4ff::22) Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB9PR04MB9626:EE_|PA1PR04MB10577:EE_ X-MS-Office365-Filtering-Correlation-Id: 84d3e4b2-6370-4bae-2cb8-08dce7d30af6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|52116014|376014|7416014|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?q?dkUWsbKhfoQ4xn56remGYcWdnTdprT7?= =?utf-8?q?xwSjqyVBhjGvMqWpL7sRMKMXj7rWUQM4k2E56BjshH+dNllzDkud4HvF4XSIwYz+a?= =?utf-8?q?qFHjhf9t57YwOIvrRrlMiNrUzyWT5iiKZI7+BuBEzljzmQ0bk159SC3kxOo+ZfnLa?= =?utf-8?q?37201u7Jz1iYaZDJjPh3VhnkN/qDnSuUgW7+XP/GeXmTUMfH+r5nyaxZGm0cUjelS?= =?utf-8?q?xHKCsZ7RUcsqxTxXlmRWUp4lPH+aG/uHqYs1dSUgUqQMm/emrx6ATrnXqVfIXebC5?= =?utf-8?q?qfdLkAyOI2ZmfAWyj175+eMaaWsHqQlCUOfwwMHSbQu5QmhDy1XFm3rT3IoN2Fp/G?= =?utf-8?q?xMsWpkgW/zh53n7Sqnc43JsZYUn9myplothxPLdHkv7VQx1YhUiqhoVMV8ems7t9F?= =?utf-8?q?12pd7ko6nfscSU0Sg35mU/ZYtDQSevkRTuMqdPYynPVqWEJMuh4gWQ9JZNT6lctg8?= =?utf-8?q?RPS4C+amDbbVGAjpx0Aq7MlKeSWPHL9Xh+iGyK0b+nFpgpRoi7WKuz6JMm+j7EvV5?= =?utf-8?q?KiQilOG/mYgjijhOFHAF7HwfQ5f7sEwTCoBa2mh5tcwkKdHNK3wro6xOZLBVtMCie?= =?utf-8?q?pW93+qglCm7YMe0GE4FKPqA7Vg2KgKAOekIQRr+J3N+Xq0tKDrKWiYTlJekLPNRfb?= =?utf-8?q?cPbu750L0OSEUbie/H287++pKrF72kXIsorAjE+SiKxwDuhpui6qq3iykwiLTnlzV?= =?utf-8?q?BpcpVBPPqZLLNvJlfJxEbbXtyc42jbdxPzFKQaSWyCI9GQLWLWbCZTmqhFUhXrSOX?= =?utf-8?q?0HYatomdPdxV2e6ksNtDo+scq6YnR8l3c/v8R6+WT2ysV9JSublkIhL3l70hlXqh3?= =?utf-8?q?5eIp1jDv5bOfdGAH9KdFEngNVuSaYRAY7+yyfe/gajHwIBMns0y2sMA9sRk2w3tP4?= =?utf-8?q?+wyjqa4NdsNLZiklrYRSyAQSW3sRdMH7i/H27CWLa5wH6YQ3i8kgV6k3PZuaVC/61?= =?utf-8?q?0N0qKtSsyeVS5jAZX3m7ReWFA9w3hALYKBbp9kK9xZi4NO3OHrVnd1N5WFFeeJH8g?= =?utf-8?q?rifYz8GO7JMdrEYedAk8hKI4iLbG0hUjWTTC4+XnUh9BDPTkKVmISzDi4yZUW6FXq?= =?utf-8?q?CLnr6PFa2M31Jgkb+wvKAYyiU5kxwHp8nTT2A96v6htnmzki2U4yhJVbSgJI+FyHn?= =?utf-8?q?Z5XTBnWUoNJwEnlEOrFGuTjjnajURMKtRRbhAveEVRGvAx+sbU4vM17m7IGDESykX?= =?utf-8?q?thoQesdfSEA5xobfEfSPv8tplY6k6OJL7W53OXJQ9lUAnADwhkx+jIKyQtkaJuEjy?= =?utf-8?q?tY7gPk4xG6WlJfVkA8G6/fifYeM3176yVtjH0YTIDCxEhYbYhvBk+sKo=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9PR04MB9626.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(52116014)(376014)(7416014)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?EVSp7zNDjtTXVed/SYOixtgl1sgt?= =?utf-8?q?zmv0+YUQZdm/gGTGA5gSk3amyHV4KKplrHymPaC19rNtb8XOlTDU363NNqf+LChC6?= =?utf-8?q?OFygqecYauQ3hZhcc+UaODU58vrfbYUI/xbHh1ToN5QLk9n+rFKf8ZYlkFxx6tSue?= =?utf-8?q?3r589wJRUqn348N3wj+lH2qf7RwWQM6caCNLPVtMceFjZyRriLhBQKeh+iS6Tvl7S?= =?utf-8?q?olMi25QD/5GIxNj318C9aNwfcpIO3rIW7f8SE/a1nDQkB/1Ivqi6TJ02nOPyAYIR+?= =?utf-8?q?1clwBr1ZUJkA1XxqfCYcr5mWumpJGjIqAs2SBXiUXa0tnKC89bUyR+WyRCCpOS8aU?= =?utf-8?q?+y1snmR3L4RFQIxTeh0OCy2Kf91pOZ5aiOeGoIqCoGbJB1XRZY+r21vYP5kRKjRZE?= =?utf-8?q?hJpTvYb4Fv9JlfWTHOcJ0iaV3d5C2GxAleOh/NK2jklWKlHyQrOffmgElcd+Nfz2W?= =?utf-8?q?2dx/LlOCbAjKuIn3g/FI6LEddxak6AXE0EHzPOxi7rvBG9h2DdQR8UVl8Vkp3ion3?= =?utf-8?q?kzm/JxvDt4aADSCoiPyK7ESlht398mVVRBki8CGq6TRhTGgtCUbJ+v4HQqWSDBNu4?= =?utf-8?q?8kaQZG42L60LDBPZhqLMS5QGMw77G2HapPNZRFrPCnF1xyBbWUFy9gE4Da2+Wvrz/?= =?utf-8?q?qRLFXNg1eOlcXZAJWp/qG+m/lsznsTeQymQk+c4flIS7U6a8jEtvLHyNmjmVeuPvF?= =?utf-8?q?34ts0IDGnc3N2joRYKLpZAh/uKMVhP4BR2X0gD9sAd3Ahjy538vFkWuUzROScYL29?= =?utf-8?q?hdkpVjP+lV70xspKQ0rp4KLj2WvKzCGkUleEvU99UKk29mq9Utbkmu4wslCpV3ifk?= =?utf-8?q?8k1Iz8B+wCsZiV+aJqMpy1uN10R3VuYCAWIqZpTWjJpoeTK0zsi0sAHl53a+2y1yk?= =?utf-8?q?cWJWTmdDmK5a3stMqdqwhu9c8T6xAwL5wBHgW7jN9Rq5eTv+Ej2qkmbWY6MvdqZjG?= =?utf-8?q?IrOnW9FcMBVM/LcqjsOTSgtG7+ivmP1NT700E+K8i5B/ZdTfqofsi0uo+53nLAkYm?= =?utf-8?q?Rb3xsUDwdJdfPdHdAyjfmBWXNQ32Yc6SIEA0sjTj3wvvsrQHdUXrpaxkgxyCJCrMb?= =?utf-8?q?Nl8M0TgXhSD0eMZTGxNh20mUBtjhIb9yycXHsoC2pC91ka0U7YgCnZkp7uNOxIqwq?= =?utf-8?q?rFImzxkQ5/5NrDgLxrQOPNgF3hB1QDNUrPu8YJBiUfW24r9la7Ny3qEmwg5hJ8i+8?= =?utf-8?q?MM9aX+Xl5HRPz7+nAoErLBEM1YVgcevNNbbt2YgLY3AxsG0WHfPmegdQjuhbzB+BI?= =?utf-8?q?Z8X9w+AORxF7MDY9s1eQrowS3rpq1pN337WIze5P2MNUZOjCrveKGP3sntdEOxBFQ?= =?utf-8?q?QFW2CIBdHaRbJnCqvRHg/OszuqGp58X78kKAF2MO4FYRUoNiDpxsjLjx6jVSmA5WT?= =?utf-8?q?KgSGBd5XICGBndxXAbtd87T4uLLlK7A41j2J5hVylDShExMLTtKSSJPbkRDc/thhx?= =?utf-8?q?JpdeEC+IGSNLoHyR3EnW3cBQwskBGBBL2WlkMmy1DzdrZyYQVY7BcUzfmc5+jOVj8?= =?utf-8?q?3/un8TiiGbyK?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 84d3e4b2-6370-4bae-2cb8-08dce7d30af6 X-MS-Exchange-CrossTenant-AuthSource: AS4PR04MB9621.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 19:54:39.0406 (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: 2Nmtj3Z+h5FgNr/9f/Mp9YY3mXJFj+Sh1YD7pjTwvhpGtGrN3TyjFpz8NujOkJHD5NA/2wxZUTc0mLpWKmeK6A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR04MB10577 Remove cpu_addr_fixup() because dwc common driver already handle address translate. Signed-off-by: Frank Li --- Change from v2 to v4 - none Change from v1 to v2 - set using_dtbus_info true --- drivers/pci/controller/dwc/pci-imx6.c | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c index 1e58c24137e7f..94f3411352bf0 100644 --- a/drivers/pci/controller/dwc/pci-imx6.c +++ b/drivers/pci/controller/dwc/pci-imx6.c @@ -82,7 +82,6 @@ enum imx_pcie_variants { #define IMX_PCIE_FLAG_HAS_PHY_RESET BIT(5) #define IMX_PCIE_FLAG_HAS_SERDES BIT(6) #define IMX_PCIE_FLAG_SUPPORT_64BIT BIT(7) -#define IMX_PCIE_FLAG_CPU_ADDR_FIXUP BIT(8) #define imx_check_flag(pci, val) (pci->drvdata->flags & val) @@ -1015,22 +1014,6 @@ static void imx_pcie_host_exit(struct dw_pcie_rp *pp) regulator_disable(imx_pcie->vpcie); } -static u64 imx_pcie_cpu_addr_fixup(struct dw_pcie *pcie, u64 cpu_addr) -{ - struct imx_pcie *imx_pcie = to_imx_pcie(pcie); - struct dw_pcie_rp *pp = &pcie->pp; - struct resource_entry *entry; - - if (!(imx_pcie->drvdata->flags & IMX_PCIE_FLAG_CPU_ADDR_FIXUP)) - return cpu_addr; - - entry = resource_list_first_type(&pp->bridge->windows, IORESOURCE_MEM); - if (!entry) - return cpu_addr; - - return cpu_addr - entry->offset; -} - static const struct dw_pcie_host_ops imx_pcie_host_ops = { .init = imx_pcie_host_init, .deinit = imx_pcie_host_exit, @@ -1039,7 +1022,6 @@ static const struct dw_pcie_host_ops imx_pcie_host_ops = { static const struct dw_pcie_ops dw_pcie_ops = { .start_link = imx_pcie_start_link, .stop_link = imx_pcie_stop_link, - .cpu_addr_fixup = imx_pcie_cpu_addr_fixup, }; static void imx_pcie_ep_init(struct dw_pcie_ep *ep) @@ -1459,6 +1441,7 @@ static int imx_pcie_probe(struct platform_device *pdev) if (ret) return ret; + pci->using_dtbus_info = true; if (imx_pcie->drvdata->mode == DW_PCIE_EP_TYPE) { ret = imx_add_pcie_ep(imx_pcie, pdev); if (ret < 0) @@ -1598,8 +1581,7 @@ static const struct imx_pcie_drvdata drvdata[] = { }, [IMX8Q] = { .variant = IMX8Q, - .flags = IMX_PCIE_FLAG_HAS_PHYDRV | - IMX_PCIE_FLAG_CPU_ADDR_FIXUP, + .flags = IMX_PCIE_FLAG_HAS_PHYDRV, .clk_names = imx8q_clks, .clks_cnt = ARRAY_SIZE(imx8q_clks), },