]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.18-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 9 Mar 2026 15:20:10 +0000 (16:20 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 9 Mar 2026 15:20:10 +0000 (16:20 +0100)
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

queue-6.18/bluetooth-fix-cis-host-feature-condition.patch [new file with mode: 0644]
queue-6.18/drm-amd-display-use-gfp_atomic-in-dc_create_stream_for_sink.patch [new file with mode: 0644]
queue-6.18/net-stmmac-remove-support-for-lpi_intr_o.patch [new file with mode: 0644]
queue-6.18/series

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 (file)
index 0000000..d9548e7
--- /dev/null
@@ -0,0 +1,42 @@
+From 7cff9a40c6b0f72ccefdaf0ffe03cfac30348f51 Mon Sep 17 00:00:00 2001
+From: Mariusz Skamra <mariusz.skamra@codecoup.pl>
+Date: Thu, 12 Feb 2026 14:46:46 +0100
+Subject: Bluetooth: Fix CIS host feature condition
+
+From: Mariusz Skamra <mariusz.skamra@codecoup.pl>
+
+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 <mariusz.skamra@codecoup.pl>
+Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>
+Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
+[ iso_capable() => cis_capable() ]
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 (file)
index 0000000..6f7a4bd
--- /dev/null
@@ -0,0 +1,37 @@
+From 28dfe4317541e57fe52f9a290394cd29c348228b Mon Sep 17 00:00:00 2001
+From: Natalie Vock <natalie.vock@gmx.de>
+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 <natalie.vock@gmx.de>
+
+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 <natalie.vock@gmx.de>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+(cherry picked from commit b42dae2ebc5c84a68de63ec4ffdfec49362d53f1)
+Cc: stable@vger.kernel.org
+[ Context ]
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 (file)
index 0000000..f7888b3
--- /dev/null
@@ -0,0 +1,211 @@
+From 14eb64db8ff07b58a35b98375f446d9e20765674 Mon Sep 17 00:00:00 2001
+From: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>
+Date: Tue, 3 Feb 2026 16:50:41 +0000
+Subject: net: stmmac: remove support for lpi_intr_o
+
+From: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
+
+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 <ovidiu.panait.rb@renesas.com>
+Tested-by: Ovidiu Panait <ovidiu.panait.rb@renesas.com> # Renesas RZ/V2H board
+Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
+Link: https://patch.msgid.link/E1vnJbt-00000007YYN-28nm@rmk-PC.armlinux.org.uk
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Ovidiu Panait <ovidiu.panait.rb@renesas.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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;
index 1a8f832f36bcdc742ce2adb6d3dc37c30ce44f40..a98fbd924a02b516271c3e40ec13168956180a74 100644 (file)
@@ -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