From: Greg Kroah-Hartman Date: Mon, 13 Jul 2026 13:24:30 +0000 (+0200) Subject: 6.12-stable patches X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=050204b2dd19f5a62bad339b0b152b57394c33bc;p=thirdparty%2Fkernel%2Fstable-queue.git 6.12-stable patches added patches: pci-host-common-request-bus-reassignment-when-not-probe-only.patch pci-imx6-fix-imx6sx_gpr12_pcie_test_powerdown-handling.patch --- diff --git a/queue-6.12/pci-host-common-request-bus-reassignment-when-not-probe-only.patch b/queue-6.12/pci-host-common-request-bus-reassignment-when-not-probe-only.patch new file mode 100644 index 0000000000..3414ccdd84 --- /dev/null +++ b/queue-6.12/pci-host-common-request-bus-reassignment-when-not-probe-only.patch @@ -0,0 +1,47 @@ +From fda8749ba73638f5bbca3ffb39bc6861eb3b23fa Mon Sep 17 00:00:00 2001 +From: Ratheesh Kannoth +Date: Tue, 14 Apr 2026 13:47:30 +0530 +Subject: PCI: host-common: Request bus reassignment when not probe-only + +From: Ratheesh Kannoth + +commit fda8749ba73638f5bbca3ffb39bc6861eb3b23fa upstream. + +pci_host_common_init() is used by several generic ECAM host drivers. +After PCI core changes around pci_flags and preserve_config, these hosts +no longer opted into full bus number reassignment the way they did +before, which broke enumeration of devices on a Marvell CN106XX board. + +When PCI_PROBE_ONLY is not set, add PCI_REASSIGN_ALL_BUS so +pci_scan_bridge_extend() takes the reassignment path: bus numbers can be +assigned from firmware EA data (e.g. pci_ea_fixed_busnrs()). Skip the +flag in probe-only mode so existing assignments are not overridden. + +Fixes: 7246a4520b4b ("PCI: Use preserve_config in place of pci_flags") +Closes: https://lore.kernel.org/all/abkqm_LCd9zAM8cW@rkannoth-OptiPlex-7090/ +Signed-off-by: Ratheesh Kannoth +[mani: added stable tag] +Signed-off-by: Manivannan Sadhasivam +[bhelgaas: add problem report link] +Signed-off-by: Bjorn Helgaas +Cc: stable@vger.kernel.org +Cc: Vidya Sagar +Link: https://patch.msgid.link/20260414081730.3864372-1-rkannoth@marvell.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/pci/controller/pci-host-common.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/drivers/pci/controller/pci-host-common.c ++++ b/drivers/pci/controller/pci-host-common.c +@@ -73,6 +73,10 @@ int pci_host_common_probe(struct platfor + if (IS_ERR(cfg)) + return PTR_ERR(cfg); + ++ /* Do not reassign bus numbers if probe only */ ++ if (!pci_has_flag(PCI_PROBE_ONLY)) ++ pci_add_flags(PCI_REASSIGN_ALL_BUS); ++ + bridge->sysdata = cfg; + bridge->ops = (struct pci_ops *)&ops->pci_ops; + bridge->msi_domain = true; diff --git a/queue-6.12/pci-imx6-fix-imx6sx_gpr12_pcie_test_powerdown-handling.patch b/queue-6.12/pci-imx6-fix-imx6sx_gpr12_pcie_test_powerdown-handling.patch new file mode 100644 index 0000000000..c38c61c5cc --- /dev/null +++ b/queue-6.12/pci-imx6-fix-imx6sx_gpr12_pcie_test_powerdown-handling.patch @@ -0,0 +1,65 @@ +From aad953fb4eed0df5486cd54ccad80ac197678e01 Mon Sep 17 00:00:00 2001 +From: Richard Zhu +Date: Thu, 19 Mar 2026 17:08:44 +0800 +Subject: PCI: imx6: Fix IMX6SX_GPR12_PCIE_TEST_POWERDOWN handling + +From: Richard Zhu + +commit aad953fb4eed0df5486cd54ccad80ac197678e01 upstream. + +The IMX6SX_GPR12_PCIE_TEST_POWERDOWN bit does not control the PCIe +reference clock on i.MX6SX. Instead, it is part of i.MX6SX PCIe core +reset sequence. + +Move the IMX6SX_GPR12_PCIE_TEST_POWERDOWN assertion/deassertion into +the core reset functions to properly reflect its purpose. Remove the +.enable_ref_clk() callback for i.MX6SX since it was incorrectly +manipulating this bit. + +Fixes: e3c06cd063d6 ("PCI: imx6: Add initial imx6sx support") +Signed-off-by: Richard Zhu +Signed-off-by: Manivannan Sadhasivam +Signed-off-by: Bjorn Helgaas +Reviewed-by: Frank Li +Cc: stable@vger.kernel.org +Link: https://patch.msgid.link/20260319090844.444987-1-hongxing.zhu@nxp.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/pci/controller/dwc/pci-imx6.c | 12 +++--------- + 1 file changed, 3 insertions(+), 9 deletions(-) + +--- a/drivers/pci/controller/dwc/pci-imx6.c ++++ b/drivers/pci/controller/dwc/pci-imx6.c +@@ -612,14 +612,6 @@ static int imx_pcie_attach_pd(struct dev + return 0; + } + +-static int imx6sx_pcie_enable_ref_clk(struct imx_pcie *imx_pcie, bool enable) +-{ +- regmap_update_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR12, +- IMX6SX_GPR12_PCIE_TEST_POWERDOWN, +- enable ? 0 : IMX6SX_GPR12_PCIE_TEST_POWERDOWN); +- return 0; +-} +- + static int imx6q_pcie_enable_ref_clk(struct imx_pcie *imx_pcie, bool enable) + { + if (enable) { +@@ -702,6 +694,9 @@ static int imx6sx_pcie_core_reset(struct + if (assert) + regmap_set_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR12, + IMX6SX_GPR12_PCIE_TEST_POWERDOWN); ++ else ++ regmap_clear_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR12, ++ IMX6SX_GPR12_PCIE_TEST_POWERDOWN); + + /* Force PCIe PHY reset */ + regmap_update_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR5, IMX6SX_GPR5_PCIE_BTNRST_RESET, +@@ -1578,7 +1573,6 @@ static const struct imx_pcie_drvdata drv + .mode_off[0] = IOMUXC_GPR12, + .mode_mask[0] = IMX6Q_GPR12_DEVICE_TYPE, + .init_phy = imx6sx_pcie_init_phy, +- .enable_ref_clk = imx6sx_pcie_enable_ref_clk, + .core_reset = imx6sx_pcie_core_reset, + }, + [IMX6QP] = { diff --git a/queue-6.12/series b/queue-6.12/series index e9f31952f0..593c44aa8e 100644 --- a/queue-6.12/series +++ b/queue-6.12/series @@ -100,3 +100,5 @@ usb-xhci-fix-sleep-in-atomic-context-in-xhci_free_streams.patch usb-typec-tcpci_rt1711h-unregister-tcpci-port-with-devres.patch pci-loongson-override-pcie-bridge-supported-speeds-for-loongson-3c6000-series.patch pci-altera-do-not-dispose-parent-irq-mapping.patch +pci-host-common-request-bus-reassignment-when-not-probe-only.patch +pci-imx6-fix-imx6sx_gpr12_pcie_test_powerdown-handling.patch