]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
kernel: bump 6.18 to 6.18.38 24083/head
authorJohn Audia <therealgraysky@proton.me>
Sun, 5 Jul 2026 20:17:55 +0000 (16:17 -0400)
committerHauke Mehrtens <hauke@hauke-m.de>
Tue, 7 Jul 2026 00:01:46 +0000 (02:01 +0200)
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.18.38

Removed upstreamed:
  linux/generic/backport-6.18/300-v7.2-MIPS-smp-report-dying-CPU-to-RCU-in-stop_this_cpu.patch[1]

All other patches automatically rebased via update_kernel.sh

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.18.38&id=f9b57a0015c241274651f4b36627f56b1b5a8651

Build system: x86/64
Build-tested: x86/64-glibc
Run-tested: x86/64-glibc

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/24083
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
target/linux/generic/backport-6.18/300-v7.2-MIPS-smp-report-dying-CPU-to-RCU-in-stop_this_cpu.patch [deleted file]
target/linux/generic/kernel-6.18
target/linux/generic/pending-6.18/454-block-add-support-for-notifications.patch
target/linux/generic/pending-6.18/710-bridge-add-knob-for-filtering-rx-tx-BPDU-pack.patch
target/linux/ipq40xx/patches-6.18/900-PCI-qcom-add-hack-compatible-for-ipq4019-Lantiq-DSL.patch
target/linux/starfive/patches-6.18/0010-uart-8250-add-reset-operation-in-runtime-PM.patch
target/linux/starfive/patches-6.18/1002-serial-8250_dw-Add-starfive-jh7100-hsuart-compatible.patch

diff --git a/target/linux/generic/backport-6.18/300-v7.2-MIPS-smp-report-dying-CPU-to-RCU-in-stop_this_cpu.patch b/target/linux/generic/backport-6.18/300-v7.2-MIPS-smp-report-dying-CPU-to-RCU-in-stop_this_cpu.patch
deleted file mode 100644 (file)
index 8f419e2..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-From 9f3f3bdc6d9dac1a5a8262ee7ad0f2ff1527a7e7 Mon Sep 17 00:00:00 2001
-From: Jonas Jelonek <jelonek.jonas@gmail.com>
-Date: Mon, 8 Jun 2026 09:37:29 +0000
-Subject: MIPS: smp: report dying CPU to RCU in stop_this_cpu()
-
-smp_send_stop() parks all secondary CPUs in stop_this_cpu(). The function
-marks the CPU offline for the scheduler via set_cpu_online(false) but
-never informs RCU, so RCU keeps expecting a quiescent state from CPUs
-that are now spinning forever with interrupts disabled.
-
-As long as nothing waits for an RCU grace period after smp_send_stop()
-this is harmless, which is why it went unnoticed. Since commit
-91840be8f710 ("irq_work: Fix use-after-free in irq_work_single() on PREEMPT_RT")
-however, irq_work_sync() calls synchronize_rcu() on architectures without
-an irq_work self-IPI, i.e. where arch_irq_work_has_interrupt() returns
-false. That is the asm-generic default used by MIPS. Any irq_work_sync()
-issued in the reboot/shutdown path after smp_send_stop() then blocks on
-a grace period that can never complete, hanging the reboot:
-
-  WARNING: CPU: 0 PID: 15 at kernel/irq_work.c:144 irq_work_queue_on
-  ...
-  rcu: INFO: rcu_sched detected stalls on CPUs/tasks:
-  rcu: Offline CPU 1 blocking current GP.
-  rcu: Offline CPU 2 blocking current GP.
-  rcu: Offline CPU 3 blocking current GP.
-
-This issue was noticed on several Realtek MIPS switch SoCs (MIPS
-interAptiv) and came up during kernel bump downstream in OpenWrt from
-6.18.33 to 6.18.34, after the backport of the patch to the 6.18 stable
-branch. The patch also has been backported all the way back to 6.1.
-
-Call rcutree_report_cpu_dead() once interrupts are disabled, mirroring the
-generic CPU-hotplug offline path, so RCU stops waiting on the parked CPUs
-and grace periods can still complete. MIPS shuts down all CPUs here
-without going through the CPU-hotplug mechanism, so this report is not
-otherwise issued. Reporting a dying CPU to RCU outside the regular hotplug
-offline path is not unprecedented: arm64 does the same in cpu_die_early().
-There it is an exception for a CPU that was coming online and is aborting
-bringup, rather than the default shutdown action as on MIPS.
-
-Fixes: 91840be8f710 ("irq_work: Fix use-after-free in irq_work_single() on PREEMPT_RT")
-CC: stable@vger.kernel.org
-Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
-Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
----
- arch/mips/kernel/smp.c | 2 ++
- 1 file changed, 2 insertions(+)
-
---- a/arch/mips/kernel/smp.c
-+++ b/arch/mips/kernel/smp.c
-@@ -20,6 +20,7 @@
- #include <linux/sched/mm.h>
- #include <linux/cpumask.h>
- #include <linux/cpu.h>
-+#include <linux/rcupdate.h>
- #include <linux/err.h>
- #include <linux/ftrace.h>
- #include <linux/irqdomain.h>
-@@ -422,6 +423,7 @@ static void stop_this_cpu(void *dummy)
-       set_cpu_online(smp_processor_id(), false);
-       calculate_cpu_foreign_map();
-       local_irq_disable();
-+      rcutree_report_cpu_dead();
-       while (1);
- }
index efbfe514334d0ec7ea223dfd217ee03a9842c8e3..4c51e5d02ca54006f03ac8e4c97fd5fe2de3cb2c 100644 (file)
@@ -1,2 +1,2 @@
-LINUX_VERSION-6.18 = .37
-LINUX_KERNEL_HASH-6.18.37 = a83cd200e6646db52866b8309e9137b9e9048b613cbda10ced2b811aae125255
+LINUX_VERSION-6.18 = .38
+LINUX_KERNEL_HASH-6.18.38 = ac26e508abd56e9f8b89872b6e10c49fc823bcc70d8068a5d8504c1a7c4ff045
index b6ee4b53bd111e8715d5d77728983c7fed843948..b537bff35993b95903d17163e83a83faa48f9f99 100644 (file)
@@ -149,7 +149,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 +device_initcall(blk_notifications_init);
 --- a/include/linux/blkdev.h
 +++ b/include/linux/blkdev.h
-@@ -1875,4 +1875,12 @@ static inline int bio_split_rw_at(struct
+@@ -1871,4 +1871,12 @@ static inline int bio_split_rw_at(struct
  
  #define DEFINE_IO_COMP_BATCH(name)    struct io_comp_batch name = { }
  
index 034675f951186728c971748ec26baf79a2c14e80..48cf504d5a6af01f536b087ee51ba370a5d3d40b 100644 (file)
@@ -161,7 +161,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
  struct rtnl_link {
        rtnl_doit_func          doit;
-@@ -5332,7 +5332,9 @@ int ndo_dflt_bridge_getlink(struct sk_bu
+@@ -5340,7 +5340,9 @@ int ndo_dflt_bridge_getlink(struct sk_bu
            brport_nla_put_flag(skb, flags, mask,
                                IFLA_BRPORT_MCAST_FLOOD, BR_MCAST_FLOOD) ||
            brport_nla_put_flag(skb, flags, mask,
index bfd9e4459ed9404ca84828f655728ea8293f7e3e..42a010b88391025b5b8291ff384318c5e693d54d 100644 (file)
@@ -43,7 +43,7 @@ Signed-off-by: Florian Maurer <f.maurer@outlook.com>
  };
  
  #define QCOM_PCIE_2_7_0_MAX_SUPPLIES          2
-@@ -732,12 +745,65 @@ static int qcom_pcie_post_init_2_3_2(str
+@@ -727,12 +740,65 @@ static int qcom_pcie_post_init_2_3_2(str
        return 0;
  }
  
@@ -110,7 +110,7 @@ Signed-off-by: Florian Maurer <f.maurer@outlook.com>
        int ret;
  
        res->num_clks = devm_clk_bulk_get_all(dev, &res->clks);
-@@ -776,6 +842,17 @@ static void qcom_pcie_deinit_2_4_0(struc
+@@ -771,6 +837,17 @@ static void qcom_pcie_deinit_2_4_0(struc
        clk_bulk_disable_unprepare(res->num_clks, res->clks);
  }
  
@@ -128,7 +128,7 @@ Signed-off-by: Florian Maurer <f.maurer@outlook.com>
  static int qcom_pcie_init_2_4_0(struct qcom_pcie *pcie)
  {
        struct qcom_pcie_resources_2_4_0 *res = &pcie->res.v2_4_0;
-@@ -1384,6 +1461,16 @@ static const struct qcom_pcie_ops ops_2_
+@@ -1379,6 +1456,16 @@ static const struct qcom_pcie_ops ops_2_
        .ltssm_enable = qcom_pcie_2_3_2_ltssm_enable,
  };
  
@@ -145,7 +145,7 @@ Signed-off-by: Florian Maurer <f.maurer@outlook.com>
  /* Qcom IP rev.: 2.3.3        Synopsys IP rev.: 4.30a */
  static const struct qcom_pcie_ops ops_2_3_3 = {
        .get_resources = qcom_pcie_get_resources_2_3_3,
-@@ -1462,6 +1549,10 @@ static const struct qcom_pcie_cfg cfg_2_
+@@ -1457,6 +1544,10 @@ static const struct qcom_pcie_cfg cfg_2_
        .ops = &ops_2_4_0,
  };
  
@@ -156,7 +156,7 @@ Signed-off-by: Florian Maurer <f.maurer@outlook.com>
  static const struct qcom_pcie_cfg cfg_2_7_0 = {
        .ops = &ops_2_7_0,
  };
-@@ -2021,6 +2112,7 @@ static const struct of_device_id qcom_pc
+@@ -2016,6 +2107,7 @@ static const struct of_device_id qcom_pc
        { .compatible = "qcom,pcie-apq8064", .data = &cfg_2_1_0 },
        { .compatible = "qcom,pcie-apq8084", .data = &cfg_1_0_0 },
        { .compatible = "qcom,pcie-ipq4019", .data = &cfg_2_4_0 },
index 26b3bfbfa11d785c4041678693196a097c07c426..7798360b1d5c79ea2cc2334ff245d99d17d5e346 100644 (file)
@@ -12,7 +12,7 @@ Signed-off-by: William Qiu <william.qiu@starfivetech.com>
 
 --- a/drivers/tty/serial/8250/8250_dw.c
 +++ b/drivers/tty/serial/8250/8250_dw.c
-@@ -903,6 +903,8 @@ static int dw8250_runtime_suspend(struct
+@@ -905,6 +905,8 @@ static int dw8250_runtime_suspend(struct
  {
        struct dw8250_data *data = dev_get_drvdata(dev);
  
@@ -21,7 +21,7 @@ Signed-off-by: William Qiu <william.qiu@starfivetech.com>
        clk_disable_unprepare(data->clk);
  
        clk_disable_unprepare(data->pclk);
-@@ -925,6 +927,8 @@ static int dw8250_runtime_resume(struct
+@@ -927,6 +929,8 @@ static int dw8250_runtime_resume(struct
                return ret;
        }
  
index fffbc009e9eed9fbff626ce2aa41d48afcc62593..856c0beb88e10c3fcb5f5d2fd6e7db728e379826 100644 (file)
@@ -15,7 +15,7 @@ Signed-off-by: Emil Renner Berthing <kernel@esmil.dk>
 
 --- a/drivers/tty/serial/8250/8250_dw.c
 +++ b/drivers/tty/serial/8250/8250_dw.c
-@@ -973,6 +973,7 @@ static const struct of_device_id dw8250_
+@@ -975,6 +975,7 @@ static const struct of_device_id dw8250_
        { .compatible = "marvell,armada-38x-uart", .data = &dw8250_armada_38x_data },
        { .compatible = "renesas,rzn1-uart", .data = &dw8250_renesas_rzn1_data },
        { .compatible = "sophgo,sg2044-uart", .data = &dw8250_skip_set_rate_data },