From: Greg Kroah-Hartman Date: Mon, 13 Jul 2026 13:28:09 +0000 (+0200) Subject: 6.1-stable patches X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=46e54694fd72995936be616479da0339964228ff;p=thirdparty%2Fkernel%2Fstable-queue.git 6.1-stable patches added patches: pci-altera-do-not-dispose-parent-irq-mapping.patch pci-host-common-request-bus-reassignment-when-not-probe-only.patch --- diff --git a/queue-6.1/pci-altera-do-not-dispose-parent-irq-mapping.patch b/queue-6.1/pci-altera-do-not-dispose-parent-irq-mapping.patch new file mode 100644 index 0000000000..0a71b0ae75 --- /dev/null +++ b/queue-6.1/pci-altera-do-not-dispose-parent-irq-mapping.patch @@ -0,0 +1,46 @@ +From 5ef4bac02189bee0b7c170e352d7a38e13fe9678 Mon Sep 17 00:00:00 2001 +From: Mahesh Vaidya +Date: Thu, 30 Apr 2026 13:43:29 -0700 +Subject: PCI: altera: Do not dispose parent IRQ mapping + +From: Mahesh Vaidya + +commit 5ef4bac02189bee0b7c170e352d7a38e13fe9678 upstream. + +altera_pcie_irq_teardown() calls irq_dispose_mapping() on pcie->irq. +However, pcie->irq is the parent IRQ returned by platform_get_irq(), not +the mapping created by Altera INTx irq_domain. + +The Altera driver only sets the chained handler on the parent IRQ. It +should detach that handler during teardown, but it should not dispose the +parent IRQ mapping, which belongs to the parent interrupt controller's +irq_domain. + +Drop irq_dispose_mapping(pcie->irq) from the teardown path. + +Note that during irqchip remove(), the child IRQs should've disposed. But +since the chained handler itself is removed, there is no way the stale +child IRQs (if exists) could fire. So it is safe here. + +Fixes: ec15c4d0d5d2 ("PCI: altera: Allow building as module") +Signed-off-by: Mahesh Vaidya +[mani: added a note about IRQ disposal] +Signed-off-by: Manivannan Sadhasivam +Reviewed-by: Subhransu S. Prusty +Cc: stable@vger.kernel.org +Link: https://patch.msgid.link/20260430204330.3121003-2-mahesh.vaidya@altera.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/pci/controller/pcie-altera.c | 1 - + 1 file changed, 1 deletion(-) + +--- a/drivers/pci/controller/pcie-altera.c ++++ b/drivers/pci/controller/pcie-altera.c +@@ -685,7 +685,6 @@ static void altera_pcie_irq_teardown(str + { + irq_set_chained_handler_and_data(pcie->irq, NULL, NULL); + irq_domain_remove(pcie->irq_domain); +- irq_dispose_mapping(pcie->irq); + } + + static int altera_pcie_parse_dt(struct altera_pcie *pcie) diff --git a/queue-6.1/pci-host-common-request-bus-reassignment-when-not-probe-only.patch b/queue-6.1/pci-host-common-request-bus-reassignment-when-not-probe-only.patch new file mode 100644 index 0000000000..64f0f50ac4 --- /dev/null +++ b/queue-6.1/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 +@@ -77,6 +77,10 @@ int pci_host_common_probe(struct platfor + if (!pci_has_flag(PCI_PROBE_ONLY)) + pci_add_flags(PCI_REASSIGN_ALL_BUS); + ++ /* 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.1/series b/queue-6.1/series index bda301a7e8..70aa7314dd 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -91,3 +91,5 @@ bluetooth-btusb-fix-wakeup-source-leak-on-probe-failure.patch binder-fix-uaf-in-binder_thread_release.patch binder-fix-uaf-in-binder_free_transaction.patch usb-xhci-fix-sleep-in-atomic-context-in-xhci_free_streams.patch +pci-altera-do-not-dispose-parent-irq-mapping.patch +pci-host-common-request-bus-reassignment-when-not-probe-only.patch