From nobody Wed Oct 8 18:13:31 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 5D1A325BF02; Wed, 25 Jun 2025 11:18:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750850293; cv=none; b=m5JXoD7Q4xhe+956uFSv8WrMSCwTwAQ+OIakcPyHsNBmKYkq2DB01SK3N+PFFEjYYNIxBL+hMcRNVEYtYb00EujDuQE8CsTc8DZG/31QAJ9n6PD4PpVH1mz2AyxqDa//1RMsLErP0KQh1ypu0JjUA8LR8WADgelr6wF6f8trp8c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750850293; c=relaxed/simple; bh=WsJdVrVj4ofp0/SbGBVzpnHuyNRsJKf/ry9C4XCbF/Y=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Ek7up7bUvno5ki+CQcxHtZp6apmRv/aSsYLzTSaFvte5olP4iJFKz8JJoRJYLth47II9ndPWN88BcDFbxb6dSZzJznAvTN30zKMKP1SaMF/tbnIApOZkQMakspydKRjDQ5Bp6ruSAcVC980/vxibDUpvKdkb5orPCcmM/HTYxEc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=dAC/31ew; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="dAC/31ew" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0192BC4CEEE; Wed, 25 Jun 2025 11:18:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1750850293; bh=WsJdVrVj4ofp0/SbGBVzpnHuyNRsJKf/ry9C4XCbF/Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dAC/31ewbo3QRxuZFSw8EzTDwqv0ipowojGvEixFYHuMktkG6s2giUtNp0SuPPF0a DrXI3ppULXIh3Q2V9TLEvSvxuf/ib4r7cQuxas3i2YkzYNoB2XWQd3J9Cnq6dURVtK cqntZn7fgXL0HBGHU606I8Bm07dTzggoSFNrOg3/LAozktKiE68S9AC4DSS3D99C77 kSMn8Br/yMqbOr5JRsFgklnN3JldxafPjV4rvyahmGY98oALjhs+7mfi+PFNGGUhj0 M+w8s5qXide6KXAUU7grkP7XmQVBExYXUJ82YwxBehgTi+5rrAyTgTT4uSEm1L4wLy Iaq7eMRlKAguQ== Received: from sofa.misterjones.org ([185.219.108.64] helo=valley-girl.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1uUO8o-009qM2-Us; Wed, 25 Jun 2025 12:18:11 +0100 From: Marc Zyngier To: Bjorn Helgaas Cc: Alyssa Rosenzweig , Rob Herring , Manivannan Sadhasivam , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Janne Grunau , Geert Uytterhoeven , linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/3] PCI: host-generic: Set driver_data before calling gen_pci_init() Date: Wed, 25 Jun 2025 12:18:04 +0100 Message-Id: <20250625111806.4153773-2-maz@kernel.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20250625111806.4153773-1-maz@kernel.org> References: <20250625111806.4153773-1-maz@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: bhelgaas@google.com, alyssa@rosenzweig.io, robh@kernel.org, mani@kernel.org, lpieralisi@kernel.org, kwilczynski@kernel.org, j@jannau.net, geert+renesas@glider.be, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Content-Type: text/plain; charset="utf-8" From: Geert Uytterhoeven On MicroChip MPFS Icicle: microchip-pcie 2000000000.pcie: host bridge /soc/pcie@2000000000 ranges: microchip-pcie 2000000000.pcie: Parsing ranges property... microchip-pcie 2000000000.pcie: MEM 0x2008000000..0x2087ffffff -> = 0x0008000000 Unable to handle kernel NULL pointer dereference at virtual address 000= 0000000000368 Current swapper/0 pgtable: 4K pagesize, 39-bit VAs, pgdp=3D0x0000000081= 4f1000 [0000000000000368] pgd=3D0000000000000000, p4d=3D0000000000000000, pud= =3D0000000000000000 Oops [#1] Modules linked in: CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.15.0-rc1-icicle-0000= 3-gafc0a570bb61 #232 NONE Hardware name: Microchip PolarFire-SoC Icicle Kit (DT) [...] [] plda_pcie_setup_iomems+0xe/0x78 [] mc_platform_init+0x80/0x1d2 [] pci_ecam_create+0x104/0x1e2 [] pci_host_common_init+0x120/0x228 [] pci_host_common_probe+0x7c/0x8a The initialization of driver_data was moved after the call to gen_pci_init(), while the pci_ecam_ops.init() callback mc_platform_init() expects it has already been initialized. Fix this by moving the initialization of driver_data up. Fixes: afc0a570bb613871 ("PCI: host-generic: Extract an ECAM bridge creatio= n helper from pci_host_common_probe()") Signed-off-by: Geert Uytterhoeven Link: https://lore.kernel.org/r/774290708a6f0f683711914fda110742c18a7fb2.17= 50787223.git.geert+renesas@glider.be Signed-off-by: Marc Zyngier --- drivers/pci/controller/pci-host-common.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/pci/controller/pci-host-common.c b/drivers/pci/control= ler/pci-host-common.c index b0992325dd65f..b370528638471 100644 --- a/drivers/pci/controller/pci-host-common.c +++ b/drivers/pci/controller/pci-host-common.c @@ -64,13 +64,13 @@ int pci_host_common_init(struct platform_device *pdev, =20 of_pci_check_probe_only(); =20 + platform_set_drvdata(pdev, bridge); + /* Parse and map our Configuration Space windows */ cfg =3D gen_pci_init(dev, bridge, ops); if (IS_ERR(cfg)) return PTR_ERR(cfg); =20 - platform_set_drvdata(pdev, bridge); - bridge->sysdata =3D cfg; bridge->ops =3D (struct pci_ops *)&ops->pci_ops; bridge->enable_device =3D ops->enable_device; --=20 2.39.2 From nobody Wed Oct 8 18:13:31 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 CB4132BCF72; Wed, 25 Jun 2025 11:18:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750850293; cv=none; b=ELWauIj9NKj5sNKeM+CBD1BnG8JquOBEiAGzTrrsVElwmGNIYY1hOPt/F5MUfES5BXShbc5vLrcmJBAUWH9ceq/a8BTYVZCzHJA1yUwSBI5NIv+ioOfbHsJ42tMrbFJD6w8IFhfzNP9wfPH27pJqxkcoFn4Y3hiupqggnOpvjd0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750850293; c=relaxed/simple; bh=gLYaNgAZuxDXE2XrENbyIyyl/VKE48uI7zW50LW8qC8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=CR1RGAwzaK6Th/+IdIBSib2QxGyQV2gjOWQzb5m/ddH9M3XB/yNUTLYh0I1zypgQfGRDRtzOEZIGZ+vX0xcMrudVT4izf29YJw9Mpo4M2jP0G9uFBPqMsOa+GkVmMOxcg7KDUt6r7He/4Y0RmMEWfZQkN5tKFyMjNq8ey8lwtus= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=TLqOBvfB; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="TLqOBvfB" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3ED69C4CEF7; Wed, 25 Jun 2025 11:18:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1750850293; bh=gLYaNgAZuxDXE2XrENbyIyyl/VKE48uI7zW50LW8qC8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TLqOBvfB6N8p+vlU3KWt7GkA1uZ/xntkHNvXFi1CcNfZbGlt3QyP2K8GtBpq7CJQs K+McshF92vdpZpsGfqOP4/yijvY1yYrannvex/UVQrfN78IEgQ5vJeItz5RK2z7ISp Cg35w/yDANBYSFYgCK5iw1Dx7dttT3M83D+FudDcz8Pw423ZmJcRzsMLvAJ9TaWD3+ Nt4G5/vyXahOzmmWKA+9AahEnAVDtNrrQ17Q1BpBFM0Jy0Qp/pMNToLU9MrYQP3Ytu 5TfGiRWnjC9CefbmRntnzbuwmr5bkV9wkh0+2UVeBZi+/KYe/LJ5DSAz3dizGpJv36 /NcNHB92reeCQ== Received: from sofa.misterjones.org ([185.219.108.64] helo=valley-girl.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1uUO8p-009qM2-64; Wed, 25 Jun 2025 12:18:11 +0100 From: Marc Zyngier To: Bjorn Helgaas Cc: Alyssa Rosenzweig , Rob Herring , Manivannan Sadhasivam , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Janne Grunau , Geert Uytterhoeven , linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/3] PCI: apple: Add tracking of probed root ports Date: Wed, 25 Jun 2025 12:18:05 +0100 Message-Id: <20250625111806.4153773-3-maz@kernel.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20250625111806.4153773-1-maz@kernel.org> References: <20250625111806.4153773-1-maz@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: bhelgaas@google.com, alyssa@rosenzweig.io, robh@kernel.org, mani@kernel.org, lpieralisi@kernel.org, kwilczynski@kernel.org, j@jannau.net, geert+renesas@glider.be, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Content-Type: text/plain; charset="utf-8" The apple driver relies on being able to directly find the matching root port structure from the platform device that represents this port. A previous hack stashed a pointer to the root port structure in the config window private pointer, but that ended up relying on assumptions that break other drivers. Instead, bite the bullet and track the association as part of the driver itself as a list of probed root ports. Signed-off-by: Marc Zyngier Reviewed-by: Geert Uytterhoeven --- drivers/pci/controller/pcie-apple.c | 53 ++++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 4 deletions(-) diff --git a/drivers/pci/controller/pcie-apple.c b/drivers/pci/controller/p= cie-apple.c index 77fe739766548..0380d300adca6 100644 --- a/drivers/pci/controller/pcie-apple.c +++ b/drivers/pci/controller/pcie-apple.c @@ -187,6 +187,7 @@ struct apple_pcie { const struct hw_info *hw; unsigned long *bitmap; struct list_head ports; + struct list_head entry; struct completion event; struct irq_fwspec fwspec; u32 nvecs; @@ -205,6 +206,9 @@ struct apple_pcie_port { int idx; }; =20 +static LIST_HEAD(pcie_list); +static DEFINE_MUTEX(pcie_list_lock); + static void rmw_set(u32 set, void __iomem *addr) { writel_relaxed(readl_relaxed(addr) | set, addr); @@ -720,13 +724,45 @@ static int apple_msi_init(struct apple_pcie *pcie) return 0; } =20 +static void apple_pcie_register(struct apple_pcie *pcie) +{ + guard(mutex)(&pcie_list_lock); + + list_add_tail(&pcie->entry, &pcie_list); +} + +static void apple_pcie_unregister(struct apple_pcie *pcie) +{ + guard(mutex)(&pcie_list_lock); + + list_del(&pcie->entry); +} + +static struct apple_pcie *apple_pcie_lookup(struct device *dev) +{ + struct apple_pcie *pcie; + + guard(mutex)(&pcie_list_lock); + + list_for_each_entry(pcie, &pcie_list, entry) { + if (pcie->dev =3D=3D dev) + return pcie; + } + + return NULL; +} + static struct apple_pcie_port *apple_pcie_get_port(struct pci_dev *pdev) { struct pci_config_window *cfg =3D pdev->sysdata; - struct apple_pcie *pcie =3D cfg->priv; + struct apple_pcie *pcie; struct pci_dev *port_pdev; struct apple_pcie_port *port; =20 + pcie =3D apple_pcie_lookup(cfg->parent); + if (WARN_ON(!pcie)) + return NULL; + /* Find the root port this device is on */ port_pdev =3D pcie_find_root_port(pdev); =20 @@ -806,10 +842,14 @@ static void apple_pcie_disable_device(struct pci_host= _bridge *bridge, struct pci =20 static int apple_pcie_init(struct pci_config_window *cfg) { - struct apple_pcie *pcie =3D cfg->priv; struct device *dev =3D cfg->parent; + struct apple_pcie *pcie; int ret; =20 + pcie =3D apple_pcie_lookup(dev); + if (WARN_ON(!pcie)) + return -ENOENT; + for_each_available_child_of_node_scoped(dev->of_node, of_port) { ret =3D apple_pcie_setup_port(pcie, of_port); if (ret) { @@ -852,13 +892,18 @@ static int apple_pcie_probe(struct platform_device *p= dev) =20 mutex_init(&pcie->lock); INIT_LIST_HEAD(&pcie->ports); - dev_set_drvdata(dev, pcie); =20 ret =3D apple_msi_init(pcie); if (ret) return ret; =20 - return pci_host_common_init(pdev, &apple_pcie_cfg_ecam_ops); + apple_pcie_register(pcie); + + ret =3D pci_host_common_init(pdev, &apple_pcie_cfg_ecam_ops); + if (ret) + apple_pcie_unregister(pcie); + + return ret; } =20 static const struct of_device_id apple_pcie_of_match[] =3D { --=20 2.39.2 From nobody Wed Oct 8 18:13:31 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 ECF062BE7B1; Wed, 25 Jun 2025 11:18:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750850294; cv=none; b=m/+nwjhAamb9OhQi76MgfisUOwNrDslwYh/ot5tAJRNuE1TUHkxco6tdvgq2l4qU5SSzR6Hl9KTUaw2WXO20e9VPbqWbtlR7ImXffckRpyRLSH56pIqXJAGBpmSVQc4dK5TM+9xnFRTC6+9Qmy/5s1c+d3djg/kFsQfIqQzMuyY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750850294; c=relaxed/simple; bh=ynGFjdcNjSc6sRsTsuXQoAEgvgF/ccNZ82PF3o/rowk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=WDZiQwQh7uq28L0I3++srWw6WZR+//JAjgtEMkKFSwyEpVQyymbDU1aRT2fVBNnPVmWLt4M3MwYftfLSE8Ye+4tSfoI+iWeh0sy2c4qIgAeFlBWxS5cMr7C2VkuN1YKubrjz28n2lc55LKhCRtbbhGkLeo6MJtVXmady14QIeyI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=MKHGkbpN; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="MKHGkbpN" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8FFEFC4CEEA; Wed, 25 Jun 2025 11:18:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1750850293; bh=ynGFjdcNjSc6sRsTsuXQoAEgvgF/ccNZ82PF3o/rowk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MKHGkbpNcCQqSAO3nLNRYXJFMSVUynxv+ueAOjnW3dDZbAHJp4nn+7mG0km6oXAHl ebvnd0Zr+u723V4d07pXU48zI+1lecFSJq8Tbj+43p+/ZPDY4Ol7QZKOSimJ9XKLT7 LQYz9ckXor4Fv0G5H4FV+r01aG9RaRCuAnQdF9a3hu61O9R6xkY5N6670aQAhZQfY8 f35i6KA0VaNsLhTOeGZpdghIDd1K5Hvdicr3RowGWjhJTwC6KBBrqv9owum63q7Q7N pVWatgm+Alx909RPYmtNaFZkQBwNvt0LyMNelPJAK3MpSeq1P/tvr3QA+W9QkXO4kr fF+cq86F73dLg== Received: from sofa.misterjones.org ([185.219.108.64] helo=valley-girl.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1uUO8p-009qM2-D6; Wed, 25 Jun 2025 12:18:11 +0100 From: Marc Zyngier To: Bjorn Helgaas Cc: Alyssa Rosenzweig , Rob Herring , Manivannan Sadhasivam , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Janne Grunau , Geert Uytterhoeven , linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/3] Revert "PCI: ecam: Allow cfg->priv to be pre-populated from the root port device" Date: Wed, 25 Jun 2025 12:18:06 +0100 Message-Id: <20250625111806.4153773-4-maz@kernel.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20250625111806.4153773-1-maz@kernel.org> References: <20250625111806.4153773-1-maz@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: bhelgaas@google.com, alyssa@rosenzweig.io, robh@kernel.org, mani@kernel.org, lpieralisi@kernel.org, kwilczynski@kernel.org, j@jannau.net, geert+renesas@glider.be, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Content-Type: text/plain; charset="utf-8" This reverts commit 4900454b4f819e88e9c57ed93542bf9325d7e161. Now that nobody relies of cfg->priv containing anything useful before the .init() callback is used, restore the previous behaviour. Signed-off-by: Marc Zyngier Reviewed-by: Geert Uytterhoeven --- drivers/pci/ecam.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/pci/ecam.c b/drivers/pci/ecam.c index 2c5e6446e00ee..260b7de2dbd57 100644 --- a/drivers/pci/ecam.c +++ b/drivers/pci/ecam.c @@ -84,8 +84,6 @@ struct pci_config_window *pci_ecam_create(struct device *= dev, goto err_exit_iomap; } =20 - cfg->priv =3D dev_get_drvdata(dev); - if (ops->init) { err =3D ops->init(cfg); if (err) --=20 2.39.2