From 5aa3bb406b0c4c9b081ce586e394ba13a63c5da4 Mon Sep 17 00:00:00 2001 From: jc_gargma Date: Sat, 14 May 2022 20:24:12 -0700 Subject: Updated to 5.17.7 --- ...l-Declare-IRQ_POLL-softirq-vector-as-ksof.patch | 55 ++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 0006-lib-irq_poll-Declare-IRQ_POLL-softirq-vector-as-ksof.patch (limited to '0006-lib-irq_poll-Declare-IRQ_POLL-softirq-vector-as-ksof.patch') 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 0000000..b1eaa84 --- /dev/null +++ b/0006-lib-irq_poll-Declare-IRQ_POLL-softirq-vector-as-ksof.patch @@ -0,0 +1,55 @@ +From dfa7dabce4f075d5883f2b95ef925b6edc10ca29 Mon Sep 17 00:00:00 2001 +From: Frederic Weisbecker +Date: Tue, 8 Feb 2022 17:16:35 +0100 +Subject: [PATCH 6/8] 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 +Signed-off-by: Frederic Weisbecker +Cc: Thomas Gleixner +Cc: Peter Zijlstra +Cc: Paul E. McKenney +Cc: Paul Menzel +--- + 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 + -- cgit v1.2.1