From: Greg Kroah-Hartman Date: Mon, 9 Mar 2026 15:20:10 +0000 (+0100) Subject: 6.18-stable patches X-Git-Tag: v6.19.7~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=46762e145cee5c4ebeab8004579699e84cb7689f;p=thirdparty%2Fkernel%2Fstable-queue.git 6.18-stable patches added patches: bluetooth-fix-cis-host-feature-condition.patch drm-amd-display-use-gfp_atomic-in-dc_create_stream_for_sink.patch net-stmmac-remove-support-for-lpi_intr_o.patch --- diff --git a/queue-6.18/bluetooth-fix-cis-host-feature-condition.patch b/queue-6.18/bluetooth-fix-cis-host-feature-condition.patch new file mode 100644 index 0000000000..d9548e79ff --- /dev/null +++ b/queue-6.18/bluetooth-fix-cis-host-feature-condition.patch @@ -0,0 +1,42 @@ +From 7cff9a40c6b0f72ccefdaf0ffe03cfac30348f51 Mon Sep 17 00:00:00 2001 +From: Mariusz Skamra +Date: Thu, 12 Feb 2026 14:46:46 +0100 +Subject: Bluetooth: Fix CIS host feature condition + +From: Mariusz Skamra + +commit 7cff9a40c6b0f72ccefdaf0ffe03cfac30348f51 upstream. + +This fixes the condition for sending the LE Set Host Feature command. +The command is sent to indicate host support for Connected Isochronous +Streams in this case. It has been observed that the system could not +initialize BIS-only capable controllers because the controllers do not +support the command. + +As per Core v6.2 | Vol 4, Part E, Table 3.1 the command shall be +supported if CIS Central or CIS Peripheral is supported; otherwise, +the command is optional. + +Fixes: 709788b154ca ("Bluetooth: hci_core: Fix using {cis,bis}_capable for current settings") +Cc: stable@vger.kernel.org +Signed-off-by: Mariusz Skamra +Reviewed-by: Paul Menzel +Signed-off-by: Luiz Augusto von Dentz +[ iso_capable() => cis_capable() ] +Signed-off-by: Sasha Levin +Signed-off-by: Greg Kroah-Hartman +--- + net/bluetooth/hci_sync.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/net/bluetooth/hci_sync.c ++++ b/net/bluetooth/hci_sync.c +@@ -4546,7 +4546,7 @@ static int hci_le_set_host_feature_sync( + { + struct hci_cp_le_set_host_feature cp; + +- if (!iso_capable(hdev)) ++ if (!cis_capable(hdev)) + return 0; + + memset(&cp, 0, sizeof(cp)); diff --git a/queue-6.18/drm-amd-display-use-gfp_atomic-in-dc_create_stream_for_sink.patch b/queue-6.18/drm-amd-display-use-gfp_atomic-in-dc_create_stream_for_sink.patch new file mode 100644 index 0000000000..6f7a4bdae0 --- /dev/null +++ b/queue-6.18/drm-amd-display-use-gfp_atomic-in-dc_create_stream_for_sink.patch @@ -0,0 +1,37 @@ +From 28dfe4317541e57fe52f9a290394cd29c348228b Mon Sep 17 00:00:00 2001 +From: Natalie Vock +Date: Mon, 23 Feb 2026 12:45:37 +0100 +Subject: drm/amd/display: Use GFP_ATOMIC in dc_create_stream_for_sink + +From: Natalie Vock + +commit 28dfe4317541e57fe52f9a290394cd29c348228b upstream. + +This can be called while preemption is disabled, for example by +dcn32_internal_validate_bw which is called with the FPU active. + +Fixes "BUG: scheduling while atomic" messages I encounter on my Navi31 +machine. + +Signed-off-by: Natalie Vock +Signed-off-by: Alex Deucher +(cherry picked from commit b42dae2ebc5c84a68de63ec4ffdfec49362d53f1) +Cc: stable@vger.kernel.org +[ Context ] +Signed-off-by: Sasha Levin +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c ++++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c +@@ -169,7 +169,7 @@ struct dc_stream_state *dc_create_stream + if (sink == NULL) + return NULL; + +- stream = kzalloc(sizeof(struct dc_stream_state), GFP_KERNEL); ++ stream = kzalloc(sizeof(struct dc_stream_state), GFP_ATOMIC); + if (stream == NULL) + goto alloc_fail; + diff --git a/queue-6.18/net-stmmac-remove-support-for-lpi_intr_o.patch b/queue-6.18/net-stmmac-remove-support-for-lpi_intr_o.patch new file mode 100644 index 0000000000..f7888b35e6 --- /dev/null +++ b/queue-6.18/net-stmmac-remove-support-for-lpi_intr_o.patch @@ -0,0 +1,211 @@ +From 14eb64db8ff07b58a35b98375f446d9e20765674 Mon Sep 17 00:00:00 2001 +From: "Russell King (Oracle)" +Date: Tue, 3 Feb 2026 16:50:41 +0000 +Subject: net: stmmac: remove support for lpi_intr_o + +From: Russell King (Oracle) + +commit 14eb64db8ff07b58a35b98375f446d9e20765674 upstream. + +The dwmac databook for v3.74a states that lpi_intr_o is a sideband +signal which should be used to ungate the application clock, and this +signal is synchronous to the receive clock. The receive clock can run +at 2.5, 25 or 125MHz depending on the media speed, and can stop under +the control of the link partner. This means that the time it takes to +clear is dependent on the negotiated media speed, and thus can be 8, +40, or 400ns after reading the LPI control and status register. + +It has been observed with some aggressive link partners, this clock +can stop while lpi_intr_o is still asserted, meaning that the signal +remains asserted for an indefinite period that the local system has +no direct control over. + +The LPI interrupts will still be signalled through the main interrupt +path in any case, and this path is not dependent on the receive clock. + +This, since we do not gate the application clock, and the chances of +adding clock gating in the future are slim due to the clocks being +ill-defined, lpi_intr_o serves no useful purpose. Remove the code which +requests the interrupt, and all associated code. + +Reported-by: Ovidiu Panait +Tested-by: Ovidiu Panait # Renesas RZ/V2H board +Signed-off-by: Russell King (Oracle) +Link: https://patch.msgid.link/E1vnJbt-00000007YYN-28nm@rmk-PC.armlinux.org.uk +Signed-off-by: Jakub Kicinski +Signed-off-by: Ovidiu Panait +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/ethernet/stmicro/stmmac/common.h | 1 + drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c | 4 -- + drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c | 7 --- + drivers/net/ethernet/stmicro/stmmac/stmmac.h | 2 - + drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 36 ------------------ + drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 8 ---- + include/linux/stmmac.h | 1 + 7 files changed, 59 deletions(-) + +--- a/drivers/net/ethernet/stmicro/stmmac/common.h ++++ b/drivers/net/ethernet/stmicro/stmmac/common.h +@@ -381,7 +381,6 @@ enum request_irq_err { + REQ_IRQ_ERR_SFTY, + REQ_IRQ_ERR_SFTY_UE, + REQ_IRQ_ERR_SFTY_CE, +- REQ_IRQ_ERR_LPI, + REQ_IRQ_ERR_WOL, + REQ_IRQ_ERR_MAC, + REQ_IRQ_ERR_NO, +--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c ++++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c +@@ -759,7 +759,6 @@ static int intel_mgbe_common_data(struct + + /* Setup MSI vector offset specific to Intel mGbE controller */ + plat->msi_mac_vec = 29; +- plat->msi_lpi_vec = 28; + plat->msi_sfty_ce_vec = 27; + plat->msi_sfty_ue_vec = 26; + plat->msi_rx_base_vec = 0; +@@ -1217,8 +1216,6 @@ static int stmmac_config_multi_msi(struc + res->irq = pci_irq_vector(pdev, plat->msi_mac_vec); + if (plat->msi_wol_vec < STMMAC_MSI_VEC_MAX) + res->wol_irq = pci_irq_vector(pdev, plat->msi_wol_vec); +- if (plat->msi_lpi_vec < STMMAC_MSI_VEC_MAX) +- res->lpi_irq = pci_irq_vector(pdev, plat->msi_lpi_vec); + if (plat->msi_sfty_ce_vec < STMMAC_MSI_VEC_MAX) + res->sfty_ce_irq = pci_irq_vector(pdev, plat->msi_sfty_ce_vec); + if (plat->msi_sfty_ue_vec < STMMAC_MSI_VEC_MAX) +@@ -1334,7 +1331,6 @@ static int intel_eth_pci_probe(struct pc + */ + plat->msi_mac_vec = STMMAC_MSI_VEC_MAX; + plat->msi_wol_vec = STMMAC_MSI_VEC_MAX; +- plat->msi_lpi_vec = STMMAC_MSI_VEC_MAX; + plat->msi_sfty_ce_vec = STMMAC_MSI_VEC_MAX; + plat->msi_sfty_ue_vec = STMMAC_MSI_VEC_MAX; + plat->msi_rx_base_vec = STMMAC_MSI_VEC_MAX; +--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c ++++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c +@@ -465,13 +465,6 @@ static int loongson_dwmac_dt_config(stru + res->wol_irq = res->irq; + } + +- res->lpi_irq = of_irq_get_byname(np, "eth_lpi"); +- if (res->lpi_irq < 0) { +- dev_err(&pdev->dev, "IRQ eth_lpi not found\n"); +- ret = -ENODEV; +- goto err_put_node; +- } +- + ret = device_get_phy_mode(&pdev->dev); + if (ret < 0) { + dev_err(&pdev->dev, "phy_mode not found\n"); +--- a/drivers/net/ethernet/stmicro/stmmac/stmmac.h ++++ b/drivers/net/ethernet/stmicro/stmmac/stmmac.h +@@ -29,7 +29,6 @@ struct stmmac_resources { + void __iomem *addr; + u8 mac[ETH_ALEN]; + int wol_irq; +- int lpi_irq; + int irq; + int sfty_irq; + int sfty_ce_irq; +@@ -291,7 +290,6 @@ struct stmmac_priv { + int wol_irq; + u32 gmii_address_bus_config; + struct timer_list eee_ctrl_timer; +- int lpi_irq; + u32 tx_lpi_timer; + bool tx_lpi_clk_stop; + bool eee_enabled; +--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c ++++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +@@ -3579,10 +3579,6 @@ static void stmmac_free_irq(struct net_d + free_irq(priv->sfty_ce_irq, dev); + fallthrough; + case REQ_IRQ_ERR_SFTY_CE: +- if (priv->lpi_irq > 0 && priv->lpi_irq != dev->irq) +- free_irq(priv->lpi_irq, dev); +- fallthrough; +- case REQ_IRQ_ERR_LPI: + if (priv->wol_irq > 0 && priv->wol_irq != dev->irq) + free_irq(priv->wol_irq, dev); + fallthrough; +@@ -3640,24 +3636,6 @@ static int stmmac_request_irq_multi_msi( + } + } + +- /* Request the LPI IRQ in case of another line +- * is used for LPI +- */ +- if (priv->lpi_irq > 0 && priv->lpi_irq != dev->irq) { +- int_name = priv->int_name_lpi; +- sprintf(int_name, "%s:%s", dev->name, "lpi"); +- ret = request_irq(priv->lpi_irq, +- stmmac_mac_interrupt, +- 0, int_name, dev); +- if (unlikely(ret < 0)) { +- netdev_err(priv->dev, +- "%s: alloc lpi MSI %d (error: %d)\n", +- __func__, priv->lpi_irq, ret); +- irq_err = REQ_IRQ_ERR_LPI; +- goto irq_error; +- } +- } +- + /* Request the common Safety Feature Correctible/Uncorrectible + * Error line in case of another line is used + */ +@@ -3797,19 +3775,6 @@ static int stmmac_request_irq_single(str + } + } + +- /* Request the IRQ lines */ +- if (priv->lpi_irq > 0 && priv->lpi_irq != dev->irq) { +- ret = request_irq(priv->lpi_irq, stmmac_interrupt, +- IRQF_SHARED, dev->name, dev); +- if (unlikely(ret < 0)) { +- netdev_err(priv->dev, +- "%s: ERROR: allocating the LPI IRQ %d (%d)\n", +- __func__, priv->lpi_irq, ret); +- irq_err = REQ_IRQ_ERR_LPI; +- goto irq_error; +- } +- } +- + /* Request the common Safety Feature Correctible/Uncorrectible + * Error line in case of another line is used + */ +@@ -7445,7 +7410,6 @@ int stmmac_dvr_probe(struct device *devi + + priv->dev->irq = res->irq; + priv->wol_irq = res->wol_irq; +- priv->lpi_irq = res->lpi_irq; + priv->sfty_irq = res->sfty_irq; + priv->sfty_ce_irq = res->sfty_ce_irq; + priv->sfty_ue_irq = res->sfty_ue_irq; +--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c ++++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +@@ -761,14 +761,6 @@ int stmmac_get_platform_resources(struct + stmmac_res->wol_irq = stmmac_res->irq; + } + +- stmmac_res->lpi_irq = +- platform_get_irq_byname_optional(pdev, "eth_lpi"); +- if (stmmac_res->lpi_irq < 0) { +- if (stmmac_res->lpi_irq == -EPROBE_DEFER) +- return -EPROBE_DEFER; +- dev_info(&pdev->dev, "IRQ eth_lpi not found\n"); +- } +- + stmmac_res->sfty_irq = + platform_get_irq_byname_optional(pdev, "sfty"); + if (stmmac_res->sfty_irq < 0) { +--- a/include/linux/stmmac.h ++++ b/include/linux/stmmac.h +@@ -296,7 +296,6 @@ struct plat_stmmacenet_data { + int int_snapshot_num; + int msi_mac_vec; + int msi_wol_vec; +- int msi_lpi_vec; + int msi_sfty_ce_vec; + int msi_sfty_ue_vec; + int msi_rx_base_vec; diff --git a/queue-6.18/series b/queue-6.18/series index 1a8f832f36..a98fbd924a 100644 --- a/queue-6.18/series +++ b/queue-6.18/series @@ -199,3 +199,6 @@ asoc-fsl_xcvr-provide-regmap-names.patch ipmi-fix-use-after-free-and-list-corruption-on-sender-error.patch ksmbd-call-ksmbd_vfs_kern_path_end_removing-on-some-error-paths.patch platform-x86-hp-bioscfg-support-allocations-of-larger-data.patch +net-stmmac-remove-support-for-lpi_intr_o.patch +bluetooth-fix-cis-host-feature-condition.patch +drm-amd-display-use-gfp_atomic-in-dc_create_stream_for_sink.patch