diff options
-rw-r--r-- | .SRCINFO | 28 | ||||
-rw-r--r-- | 0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch | 4 | ||||
-rw-r--r-- | 0002-random-treat-bootloader-trust-toggle-the-same-way-as.patch | 8 | ||||
-rw-r--r-- | 0003-tick-Detect-and-fix-jiffies-update-stall.patch | 86 | ||||
-rw-r--r-- | 0004-tick-rcu-Remove-obsolete-rcu_needs_cpu-parameters.patch | 101 | ||||
-rw-r--r-- | 0005-tick-rcu-Stop-allowing-RCU_SOFTIRQ-in-idle.patch | 119 | ||||
-rw-r--r-- | 0006-lib-irq_poll-Declare-IRQ_POLL-softirq-vector-as-ksof.patch | 55 | ||||
-rw-r--r-- | PKGBUILD | 22 | ||||
-rw-r--r-- | config | 5 |
9 files changed, 403 insertions, 25 deletions
@@ -1,5 +1,5 @@ pkgbase = linux-rc - pkgver = 5.17.2rc2 + pkgver = 5.17.3rc1 pkgrel = 1 url = https://www.kernel.org/ arch = x86_64 @@ -12,24 +12,32 @@ pkgbase = linux-rc makedepends = tar makedepends = xz options = !strip - source = https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.17.2-rc2.xz - source = https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.17.2-rc2.sign - source = https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.17.1.tar.xz - source = https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.17.1.tar.sign + source = https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.17.3-rc1.xz + source = https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.17.3-rc1.sign + source = https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.17.2.tar.xz + source = https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.17.2.tar.sign source = config source = 0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch source = 0002-random-treat-bootloader-trust-toggle-the-same-way-as.patch + source = 0003-tick-Detect-and-fix-jiffies-update-stall.patch + source = 0004-tick-rcu-Remove-obsolete-rcu_needs_cpu-parameters.patch + source = 0005-tick-rcu-Stop-allowing-RCU_SOFTIRQ-in-idle.patch + source = 0006-lib-irq_poll-Declare-IRQ_POLL-softirq-vector-as-ksof.patch validpgpkeys = ABAF11C65A2970B130ABE3C479BE3E4300411886 validpgpkeys = 647F28654894E3BD457199BE38DBBDC86092693E validpgpkeys = A2FF3A36AAA56654109064AB19802F8B0D70FC30 validpgpkeys = C7E7849466FE2358343588377258734B41C31549 - b2sums = 254d82d42bc9e38c2dd8a101be3e01b0314e7fb6475fc70885a1d42063f869ca4de5ba320c4c304ce7ec32d3dd6e47f67c4d75e8eb457f011852007c05bf08d3 + b2sums = 810d9f49d3a1f2120c18b5e5a8205bd477dd433c38176ff14b5794cf68107e1de1a1a434a02e871689b2c022e79ce07fdb53285d3a555eaf5ccab66dbd6016cd b2sums = SKIP - b2sums = 1275903955f014d0a0b4cad9074710d36825b274814cde457cf9e1f9acc188b21da7de01100f99cfe9644fb7fd182a95257d124a6992ac3be47adb907e230616 + b2sums = d3fce962b0243ad30a4385626cf90da2f04a6b8e745bcedd1d6f2e01fdd9c32beb443b2ae7979bcee32c730461cb4653ff726432ea28f2a5ab5c12e63ef4b6b4 b2sums = SKIP - b2sums = 000ab21fc39af4ba189881fd1ad0997043a166488ae73affd6ecb7c621ae4f71f2e8778b4112569309da4c937e045a53240a44be08808d8ef6853d02e0a28448 - b2sums = e01ccd70d0180fb6d270505fbc8cb2bd4815b334b3366365d931e758ebcad14fabd13644f5adf79be2d85f44dde39542c5318fa135cd18366d38eed85ebb01d7 - b2sums = b48d97933d3ff496c0ee3aba369f2a671df4fb56a21c800d47871f9b78513f1ab5a997cd6be7affd2421cb83adb2a17a8a57ed76f42a4dcf81d4b66bb75137d5 + b2sums = 3d1e2c1dff1e828c655b449962fb47c49fdf77d58c65c8af41ee8c56fbb2d8fdb7d0b963c775b26ac4022c6e0f9c8d19c11bc1e0e358580396520e9261bc8eeb + b2sums = 80bb7cc9c21721c6db0180f094cd6fa0bc441ee9103d81b203c76028752041504fa53f57f066cd79937623ae4d4f7d05ad6cc18a59b544cc0ce689675a483432 + b2sums = c1187ed81fc89682679fb9968f7f02a81c5cb748d87e16b4f5cf733c02df64c1e1cb58f7a028e79c31d7f8ca6fdb814932da66835bde321676ea8afe3e1b4ae1 + b2sums = a1a258341cc1b0b27b036a2ef701ae3e3ac202b24647b845a1df1f3cc87756f610b81cd93d442b412beaeef1e4ccff21f7b5ef77efb06db5dd245a32b70823a1 + b2sums = 1d763f9a80fc0d5c15a2b6d9fcfa1d5702f6b53786129332f8cc110f91fdecc234f6ded6337fd9afffd70afac01fb317ae9f1f25032eb2ae72d523c38520088c + b2sums = 556227cebb817d7b3f98ea3118c912cfd57d712c5695ec893d0837184f89a7b8848030e1f8519e7bc4119fbd45041902f1fcc04b7901701e6c384889b0b001b2 + b2sums = 992b3665a33a181581d5beaec5b68ac8de4590f606550a816d5d6bc9621cd13e7d89c6e46378f0fda3ad263d3a9172a9bb6c5a8eacf9aee1ffe17f89f80d4bf9 pkgname = linux-rc pkgdesc = The release candidate kernel and modules diff --git a/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch b/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch index 434746fbd598..5cf889020950 100644 --- a/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch +++ b/0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch @@ -1,7 +1,7 @@ -From ba9638ad03df373965160a5bdb4173b544381767 Mon Sep 17 00:00:00 2001 +From 452993f7fd308f9da6d8db8757851949031ab633 Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com> Date: Mon, 16 Sep 2019 04:53:20 +0200 -Subject: [PATCH 1/4] ZEN: Add sysctl and CONFIG to disallow unprivileged +Subject: [PATCH 1/9] ZEN: Add sysctl and CONFIG to disallow unprivileged CLONE_NEWUSER Our default behavior continues to match the vanilla kernel. diff --git a/0002-random-treat-bootloader-trust-toggle-the-same-way-as.patch b/0002-random-treat-bootloader-trust-toggle-the-same-way-as.patch index e3afef7dc011..98c834e9d373 100644 --- a/0002-random-treat-bootloader-trust-toggle-the-same-way-as.patch +++ b/0002-random-treat-bootloader-trust-toggle-the-same-way-as.patch @@ -1,7 +1,7 @@ -From 22365749abd27f2cb582a049da42b7c7a02b6bfe Mon Sep 17 00:00:00 2001 +From 7245d2b84aa844b071b833e25d49cf5138b822a3 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" <Jason@zx2c4.com> Date: Wed, 23 Mar 2022 23:09:30 -0600 -Subject: [PATCH 2/4] random: treat bootloader trust toggle the same way as cpu +Subject: [PATCH 2/9] random: treat bootloader trust toggle the same way as cpu trust toggle If CONFIG_RANDOM_TRUST_CPU is set, the RNG initializes using RDRAND. @@ -29,10 +29,10 @@ Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt -index 7123524a86b8..973e1de5f29e 100644 +index 59f881f36779..bdc733c2561d 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt -@@ -4356,6 +4356,12 @@ +@@ -4355,6 +4355,12 @@ fully seed the kernel's CRNG. Default is controlled by CONFIG_RANDOM_TRUST_CPU. diff --git a/0003-tick-Detect-and-fix-jiffies-update-stall.patch b/0003-tick-Detect-and-fix-jiffies-update-stall.patch new file mode 100644 index 000000000000..be56c710811d --- /dev/null +++ b/0003-tick-Detect-and-fix-jiffies-update-stall.patch @@ -0,0 +1,86 @@ +From e3fb9a238974e20ab8a7b56e9f6a19e2acdc9b87 Mon Sep 17 00:00:00 2001 +From: Frederic Weisbecker <frederic@kernel.org> +Date: Wed, 2 Feb 2022 01:01:07 +0100 +Subject: [PATCH 3/9] tick: Detect and fix jiffies update stall + +On some rare cases, the timekeeper CPU may be delaying its jiffies +update duty for a while. Known causes include: + +* The timekeeper is waiting on stop_machine in a MULTI_STOP_DISABLE_IRQ + or MULTI_STOP_RUN state. Disabled interrupts prevent from timekeeping + updates while waiting for the target CPU to complete its + stop_machine() callback. + +* The timekeeper vcpu has VMEXIT'ed for a long while due to some overload + on the host. + +Detect and fix these situations with emergency timekeeping catchups. + +Original-patch-by: Paul E. McKenney <paulmck@kernel.org> +Signed-off-by: Frederic Weisbecker <frederic@kernel.org> +Cc: Thomas Gleixner <tglx@linutronix.de> +--- + kernel/time/tick-sched.c | 17 +++++++++++++++++ + kernel/time/tick-sched.h | 4 ++++ + 2 files changed, 21 insertions(+) + +diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c +index 17a283ce2b20..c89f50a7e690 100644 +--- a/kernel/time/tick-sched.c ++++ b/kernel/time/tick-sched.c +@@ -169,6 +169,8 @@ static ktime_t tick_init_jiffy_update(void) + return period; + } + ++#define MAX_STALLED_JIFFIES 5 ++ + static void tick_sched_do_timer(struct tick_sched *ts, ktime_t now) + { + int cpu = smp_processor_id(); +@@ -196,6 +198,21 @@ static void tick_sched_do_timer(struct tick_sched *ts, ktime_t now) + if (tick_do_timer_cpu == cpu) + tick_do_update_jiffies64(now); + ++ /* ++ * If jiffies update stalled for too long (timekeeper in stop_machine() ++ * or VMEXIT'ed for several msecs), force an update. ++ */ ++ if (ts->last_tick_jiffies != jiffies) { ++ ts->stalled_jiffies = 0; ++ ts->last_tick_jiffies = READ_ONCE(jiffies); ++ } else { ++ if (++ts->stalled_jiffies == MAX_STALLED_JIFFIES) { ++ tick_do_update_jiffies64(now); ++ ts->stalled_jiffies = 0; ++ ts->last_tick_jiffies = READ_ONCE(jiffies); ++ } ++ } ++ + if (ts->inidle) + ts->got_idle_tick = 1; + } +diff --git a/kernel/time/tick-sched.h b/kernel/time/tick-sched.h +index d952ae393423..504649513399 100644 +--- a/kernel/time/tick-sched.h ++++ b/kernel/time/tick-sched.h +@@ -49,6 +49,8 @@ enum tick_nohz_mode { + * @timer_expires_base: Base time clock monotonic for @timer_expires + * @next_timer: Expiry time of next expiring timer for debugging purpose only + * @tick_dep_mask: Tick dependency mask - is set, if someone needs the tick ++ * @last_tick_jiffies: Value of jiffies seen on last tick ++ * @stalled_jiffies: Number of stalled jiffies detected across ticks + */ + struct tick_sched { + struct hrtimer sched_timer; +@@ -77,6 +79,8 @@ struct tick_sched { + u64 next_timer; + ktime_t idle_expires; + atomic_t tick_dep_mask; ++ unsigned long last_tick_jiffies; ++ unsigned int stalled_jiffies; + }; + + extern struct tick_sched *tick_get_tick_sched(int cpu); +-- +2.35.1 + diff --git a/0004-tick-rcu-Remove-obsolete-rcu_needs_cpu-parameters.patch b/0004-tick-rcu-Remove-obsolete-rcu_needs_cpu-parameters.patch new file mode 100644 index 000000000000..6b98e1038739 --- /dev/null +++ b/0004-tick-rcu-Remove-obsolete-rcu_needs_cpu-parameters.patch @@ -0,0 +1,101 @@ +From eac08058c1c52741e03fd82c98db336a5f4190da Mon Sep 17 00:00:00 2001 +From: Frederic Weisbecker <frederic@kernel.org> +Date: Tue, 8 Feb 2022 17:16:33 +0100 +Subject: [PATCH 4/9] tick/rcu: Remove obsolete rcu_needs_cpu() parameters + +With the removal of CONFIG_RCU_FAST_NO_HZ, the parameters in +rcu_needs_cpu() are not necessary anymore. Simply remove them. + +Signed-off-by: Frederic Weisbecker <frederic@kernel.org> +Cc: Thomas Gleixner <tglx@linutronix.de> +Cc: Peter Zijlstra <peterz@infradead.org> +Cc: Paul E. McKenney <paulmck@kernel.org> +Cc: Paul Menzel <pmenzel@molgen.mpg.de> +--- + include/linux/rcutiny.h | 3 +-- + include/linux/rcutree.h | 2 +- + kernel/rcu/tree.c | 3 +-- + kernel/time/tick-sched.c | 10 ++++------ + 4 files changed, 7 insertions(+), 11 deletions(-) + +diff --git a/include/linux/rcutiny.h b/include/linux/rcutiny.h +index 858f4d429946..5fed476f977f 100644 +--- a/include/linux/rcutiny.h ++++ b/include/linux/rcutiny.h +@@ -64,9 +64,8 @@ static inline void rcu_softirq_qs(void) + rcu_tasks_qs(current, (preempt)); \ + } while (0) + +-static inline int rcu_needs_cpu(u64 basemono, u64 *nextevt) ++static inline int rcu_needs_cpu(void) + { +- *nextevt = KTIME_MAX; + return 0; + } + +diff --git a/include/linux/rcutree.h b/include/linux/rcutree.h +index 53209d669400..6cc91291d078 100644 +--- a/include/linux/rcutree.h ++++ b/include/linux/rcutree.h +@@ -19,7 +19,7 @@ + + void rcu_softirq_qs(void); + void rcu_note_context_switch(bool preempt); +-int rcu_needs_cpu(u64 basem, u64 *nextevt); ++int rcu_needs_cpu(void); + void rcu_cpu_stall_reset(void); + + /* +diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c +index 73a4c9d07b86..5dae0da879ae 100644 +--- a/kernel/rcu/tree.c ++++ b/kernel/rcu/tree.c +@@ -1086,9 +1086,8 @@ void rcu_irq_enter_irqson(void) + * Just check whether or not this CPU has non-offloaded RCU callbacks + * queued. + */ +-int rcu_needs_cpu(u64 basemono, u64 *nextevt) ++int rcu_needs_cpu(void) + { +- *nextevt = KTIME_MAX; + return !rcu_segcblist_empty(&this_cpu_ptr(&rcu_data)->cblist) && + !rcu_rdp_is_offloaded(this_cpu_ptr(&rcu_data)); + } +diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c +index c89f50a7e690..566ad5bd83e9 100644 +--- a/kernel/time/tick-sched.c ++++ b/kernel/time/tick-sched.c +@@ -785,7 +785,7 @@ static inline bool local_timer_softirq_pending(void) + + static ktime_t tick_nohz_next_event(struct tick_sched *ts, int cpu) + { +- u64 basemono, next_tick, next_tmr, next_rcu, delta, expires; ++ u64 basemono, next_tick, delta, expires; + unsigned long basejiff; + unsigned int seq; + +@@ -808,7 +808,7 @@ static ktime_t tick_nohz_next_event(struct tick_sched *ts, int cpu) + * minimal delta which brings us back to this place + * immediately. Lather, rinse and repeat... + */ +- if (rcu_needs_cpu(basemono, &next_rcu) || arch_needs_cpu() || ++ if (rcu_needs_cpu() || arch_needs_cpu() || + irq_work_needs_cpu() || local_timer_softirq_pending()) { + next_tick = basemono + TICK_NSEC; + } else { +@@ -819,10 +819,8 @@ static ktime_t tick_nohz_next_event(struct tick_sched *ts, int cpu) + * disabled this also looks at the next expiring + * hrtimer. + */ +- next_tmr = get_next_timer_interrupt(basejiff, basemono); +- ts->next_timer = next_tmr; +- /* Take the next rcu event into account */ +- next_tick = next_rcu < next_tmr ? next_rcu : next_tmr; ++ next_tick = get_next_timer_interrupt(basejiff, basemono); ++ ts->next_timer = next_tick; + } + + /* +-- +2.35.1 + diff --git a/0005-tick-rcu-Stop-allowing-RCU_SOFTIRQ-in-idle.patch b/0005-tick-rcu-Stop-allowing-RCU_SOFTIRQ-in-idle.patch new file mode 100644 index 000000000000..0c3f3a6a423b --- /dev/null +++ b/0005-tick-rcu-Stop-allowing-RCU_SOFTIRQ-in-idle.patch @@ -0,0 +1,119 @@ +From 894c674f70127b8fe02878ada383f534a1c63beb Mon Sep 17 00:00:00 2001 +From: Frederic Weisbecker <frederic@kernel.org> +Date: Tue, 8 Feb 2022 17:16:34 +0100 +Subject: [PATCH 5/9] tick/rcu: Stop allowing RCU_SOFTIRQ in idle + +RCU_SOFTIRQ used to be special in that it could be raised on purpose +within the idle path to prevent from stopping the tick. Some code still +prevents from unnecessary warnings related to this specific behaviour +while entering in dynticks-idle mode. + +However the nohz layout has changed quite a bit in ten years, and the +removal of CONFIG_RCU_FAST_NO_HZ has been the final straw to this +safe-conduct. Now the RCU_SOFTIRQ vector is expected to be raised from +sane places. + +A remaining corner case is admitted though when the vector is invoked +in fragile hotplug path. + +Signed-off-by: Frederic Weisbecker <frederic@kernel.org> +Cc: Thomas Gleixner <tglx@linutronix.de> +Cc: Peter Zijlstra <peterz@infradead.org> +Cc: Paul E. McKenney <paulmck@kernel.org> +Cc: Paul Menzel <pmenzel@molgen.mpg.de> +--- + include/linux/interrupt.h | 8 ++++++- + kernel/time/tick-sched.c | 50 +++++++++++++++++++++++++++++++-------- + 2 files changed, 47 insertions(+), 11 deletions(-) + +diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h +index 9367f1cb2e3c..9613326d2f8a 100644 +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h +@@ -579,7 +579,13 @@ enum + NR_SOFTIRQS + }; + +-#define SOFTIRQ_STOP_IDLE_MASK (~(1 << RCU_SOFTIRQ)) ++/* ++ * Ignoring the RCU vector after ksoftirqd is parked is fine ++ * because: ++ * 1) rcutree_migrate_callbacks() takes care of the queue. ++ * 2) rcu_report_dead() reports the final quiescent states. ++ */ ++#define SOFTIRQ_HOTPLUG_SAFE_MASK (BIT(RCU_SOFTIRQ)) + + /* map softirq index to softirq name. update 'softirq_to_name' in + * kernel/softirq.c when adding a new softirq. +diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c +index 566ad5bd83e9..2d76c91b85de 100644 +--- a/kernel/time/tick-sched.c ++++ b/kernel/time/tick-sched.c +@@ -999,6 +999,45 @@ static void tick_nohz_full_update_tick(struct tick_sched *ts) + __tick_nohz_full_update_tick(ts, ktime_get()); + } + ++/* ++ * A pending softirq outside an IRQ (or softirq disabled section) context ++ * should be waiting for ksoftirqd to handle it. Therefore we shouldn't ++ * reach here due to the need_resched() early check in can_stop_idle_tick(). ++ * ++ * However if we are between CPUHP_AP_SMPBOOT_THREADS and CPU_TEARDOWN_CPU on the ++ * cpu_down() process, softirqs can still be raised while ksoftirqd is parked, ++ * triggering the below since wakep_softirqd() is ignored. ++ * ++ */ ++static bool report_idle_softirq(void) ++{ ++ static int ratelimit; ++ unsigned int pending = local_softirq_pending(); ++ ++ if (likely(!pending)) ++ return false; ++ ++ /* Some softirqs claim to be safe against hotplug and ksoftirqd parking */ ++ if (!cpu_active(smp_processor_id())) { ++ pending &= ~SOFTIRQ_HOTPLUG_SAFE_MASK; ++ if (!pending) ++ return false; ++ } ++ ++ if (ratelimit < 10) ++ return false; ++ ++ /* On RT, softirqs handling may be waiting on some lock */ ++ if (!local_bh_blocked()) ++ return false; ++ ++ pr_warn("NOHZ tick-stop error: local softirq work is pending, handler #%02x!!!\n", ++ pending); ++ ratelimit++; ++ ++ return true; ++} ++ + static bool can_stop_idle_tick(int cpu, struct tick_sched *ts) + { + /* +@@ -1025,17 +1064,8 @@ static bool can_stop_idle_tick(int cpu, struct tick_sched *ts) + if (need_resched()) + return false; + +- if (unlikely(local_softirq_pending())) { +- static int ratelimit; +- +- if (ratelimit < 10 && !local_bh_blocked() && +- (local_softirq_pending() & SOFTIRQ_STOP_IDLE_MASK)) { +- pr_warn("NOHZ tick-stop error: Non-RCU local softirq work is pending, handler #%02x!!!\n", +- (unsigned int) local_softirq_pending()); +- ratelimit++; +- } ++ if (unlikely(report_idle_softirq())) + return false; +- } + + if (tick_nohz_full_enabled()) { + /* +-- +2.35.1 + diff --git a/0006-lib-irq_poll-Declare-IRQ_POLL-softirq-vector-as-ksof.patch b/0006-lib-irq_poll-Declare-IRQ_POLL-softirq-vector-as-ksof.patch new file mode 100644 index 000000000000..2be273d5c3c7 --- /dev/null +++ b/0006-lib-irq_poll-Declare-IRQ_POLL-softirq-vector-as-ksof.patch @@ -0,0 +1,55 @@ +From 43a520143b091d79168ca3284aa23501c09f711e Mon Sep 17 00:00:00 2001 +From: Frederic Weisbecker <frederic@kernel.org> +Date: Tue, 8 Feb 2022 17:16:35 +0100 +Subject: [PATCH 6/9] lib/irq_poll: Declare IRQ_POLL softirq vector as + ksoftirqd-parking safe + +The following warning may appear while setting a CPU down: + + NOHZ tick-stop error: Non-RCU local softirq work is pending, handler #20!!! + +The IRQ_POLL_SOFTIRQ vector can be raised during the hotplug cpu_down() +path after ksoftirqd is parked and before the CPU actually dies. However +this is handled afterward at the CPUHP_IRQ_POLL_DEAD stage where the +queue gets migrated. + +Hence this warning can be considered spurious and the vector can join +the "hotplug-safe" list. + +Reported-and-tested-by: Paul Menzel <pmenzel@molgen.mpg.de> +Signed-off-by: Frederic Weisbecker <frederic@kernel.org> +Cc: Thomas Gleixner <tglx@linutronix.de> +Cc: Peter Zijlstra <peterz@infradead.org> +Cc: Paul E. McKenney <paulmck@kernel.org> +Cc: Paul Menzel <pmenzel@molgen.mpg.de> +--- + include/linux/interrupt.h | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h +index 9613326d2f8a..f40754caaefa 100644 +--- a/include/linux/interrupt.h ++++ b/include/linux/interrupt.h +@@ -580,12 +580,15 @@ enum + }; + + /* +- * Ignoring the RCU vector after ksoftirqd is parked is fine +- * because: +- * 1) rcutree_migrate_callbacks() takes care of the queue. ++ * The following vectors can be safely ignored after ksoftirqd is parked: ++ * ++ * _ RCU: ++ * 1) rcutree_migrate_callbacks() migrates the queue. + * 2) rcu_report_dead() reports the final quiescent states. ++ * ++ * _ IRQ_POLL: irq_poll_cpu_dead() migrates the queue + */ +-#define SOFTIRQ_HOTPLUG_SAFE_MASK (BIT(RCU_SOFTIRQ)) ++#define SOFTIRQ_HOTPLUG_SAFE_MASK (BIT(RCU_SOFTIRQ) | BIT(IRQ_POLL_SOFTIRQ)) + + /* map softirq index to softirq name. update 'softirq_to_name' in + * kernel/softirq.c when adding a new softirq. +-- +2.35.1 + @@ -7,12 +7,12 @@ _srcname=linux-5.17 _major=5.17 ### on initial release this is null otherwise it is the current stable subversion ### ie 1,2,3 corresponding $_major.1, $_major.3 etc -_minor=1 +_minor=2 _minorc=$((_minor+1)) ### on initial release this is just $_major [[ -z $_minor ]] && _fullver=$_major || _fullver=$_major.$_minor #_fullver=$_major.$_minor -_rcver=2 +_rcver=1 _rcpatch=patch-${_major}.${_minorc}-rc${_rcver} pkgver=${_major}.${_minorc}rc${_rcver} arch=(x86_64) @@ -31,6 +31,10 @@ source=( config # the main kernel config file 0001-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch 0002-random-treat-bootloader-trust-toggle-the-same-way-as.patch + 0003-tick-Detect-and-fix-jiffies-update-stall.patch + 0004-tick-rcu-Remove-obsolete-rcu_needs_cpu-parameters.patch + 0005-tick-rcu-Stop-allowing-RCU_SOFTIRQ-in-idle.patch + 0006-lib-irq_poll-Declare-IRQ_POLL-softirq-vector-as-ksof.patch ) validpgpkeys=( 'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds @@ -38,13 +42,17 @@ validpgpkeys=( 'A2FF3A36AAA56654109064AB19802F8B0D70FC30' # Jan Alexander Steffens (heftig) 'C7E7849466FE2358343588377258734B41C31549' # David Runge <dvzrv@archlinux.org> ) -b2sums=('254d82d42bc9e38c2dd8a101be3e01b0314e7fb6475fc70885a1d42063f869ca4de5ba320c4c304ce7ec32d3dd6e47f67c4d75e8eb457f011852007c05bf08d3' +b2sums=('810d9f49d3a1f2120c18b5e5a8205bd477dd433c38176ff14b5794cf68107e1de1a1a434a02e871689b2c022e79ce07fdb53285d3a555eaf5ccab66dbd6016cd' 'SKIP' - '1275903955f014d0a0b4cad9074710d36825b274814cde457cf9e1f9acc188b21da7de01100f99cfe9644fb7fd182a95257d124a6992ac3be47adb907e230616' + 'd3fce962b0243ad30a4385626cf90da2f04a6b8e745bcedd1d6f2e01fdd9c32beb443b2ae7979bcee32c730461cb4653ff726432ea28f2a5ab5c12e63ef4b6b4' 'SKIP' - '000ab21fc39af4ba189881fd1ad0997043a166488ae73affd6ecb7c621ae4f71f2e8778b4112569309da4c937e045a53240a44be08808d8ef6853d02e0a28448' - 'e01ccd70d0180fb6d270505fbc8cb2bd4815b334b3366365d931e758ebcad14fabd13644f5adf79be2d85f44dde39542c5318fa135cd18366d38eed85ebb01d7' - 'b48d97933d3ff496c0ee3aba369f2a671df4fb56a21c800d47871f9b78513f1ab5a997cd6be7affd2421cb83adb2a17a8a57ed76f42a4dcf81d4b66bb75137d5') + '3d1e2c1dff1e828c655b449962fb47c49fdf77d58c65c8af41ee8c56fbb2d8fdb7d0b963c775b26ac4022c6e0f9c8d19c11bc1e0e358580396520e9261bc8eeb' + '80bb7cc9c21721c6db0180f094cd6fa0bc441ee9103d81b203c76028752041504fa53f57f066cd79937623ae4d4f7d05ad6cc18a59b544cc0ce689675a483432' + 'c1187ed81fc89682679fb9968f7f02a81c5cb748d87e16b4f5cf733c02df64c1e1cb58f7a028e79c31d7f8ca6fdb814932da66835bde321676ea8afe3e1b4ae1' + 'a1a258341cc1b0b27b036a2ef701ae3e3ac202b24647b845a1df1f3cc87756f610b81cd93d442b412beaeef1e4ccff21f7b5ef77efb06db5dd245a32b70823a1' + '1d763f9a80fc0d5c15a2b6d9fcfa1d5702f6b53786129332f8cc110f91fdecc234f6ded6337fd9afffd70afac01fb317ae9f1f25032eb2ae72d523c38520088c' + '556227cebb817d7b3f98ea3118c912cfd57d712c5695ec893d0837184f89a7b8848030e1f8519e7bc4119fbd45041902f1fcc04b7901701e6c384889b0b001b2' + '992b3665a33a181581d5beaec5b68ac8de4590f606550a816d5d6bc9621cd13e7d89c6e46378f0fda3ad263d3a9172a9bb6c5a8eacf9aee1ffe17f89f80d4bf9') export KBUILD_BUILD_HOST=archlinux @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 5.17.0-arch1 Kernel Configuration +# Linux/x86 5.17.2-arch1 Kernel Configuration # CONFIG_CC_VERSION_TEXT="gcc (GCC) 11.2.0" CONFIG_CC_IS_GCC=y @@ -3073,6 +3073,7 @@ CONFIG_NET_DSA_XRS700X=m CONFIG_NET_DSA_XRS700X_I2C=m CONFIG_NET_DSA_XRS700X_MDIO=m CONFIG_NET_DSA_QCA8K=m +CONFIG_NET_DSA_REALTEK=m CONFIG_NET_DSA_REALTEK_SMI=m CONFIG_NET_DSA_SMSC_LAN9303=m CONFIG_NET_DSA_SMSC_LAN9303_I2C=m @@ -6582,7 +6583,7 @@ CONFIG_DUMMY_CONSOLE_ROWS=25 CONFIG_FRAMEBUFFER_CONSOLE=y # CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION is not set CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y -# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y # end of Console display driver support |