diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2022-03-14 12:10:15 +0300 |
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2022-03-14 12:10:15 +0300 |
| commit | 1f1893d78180c0c8bd4f53405420aa31eabfb263 (patch) | |
| tree | 95dcece73d404446f2a064227b55e07de0a8501d /include/linux | |
| parent | 58dedf0a4782ce42b4d31f1f62e5ad80a1b73d72 (diff) | |
| parent | f96272a90d9eaea9933aaab704ddbd258feb3841 (diff) | |
| download | linux-1f1893d78180c0c8bd4f53405420aa31eabfb263.tar.xz | |
Merge branch 'timers/core' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks into timers/core
Pull tick/NOHZ updates from Frederic Weisbecker:
- A fix for rare jiffies update stalls that were reported by Paul McKenney
- Tick side cleanups after RCU_FAST_NO_HZ removal
- Handle softirqs on idle more gracefully
Link: https://lore.kernel.org/all/20220307233034.34550-1-frederic@kernel.org
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/interrupt.h | 11 | ||||
| -rw-r--r-- | include/linux/rcutiny.h | 3 | ||||
| -rw-r--r-- | include/linux/rcutree.h | 2 |
3 files changed, 12 insertions, 4 deletions
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index 9367f1cb2e3c..f40754caaefa 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h @@ -579,7 +579,16 @@ enum NR_SOFTIRQS }; -#define SOFTIRQ_STOP_IDLE_MASK (~(1 << RCU_SOFTIRQ)) +/* + * 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) | BIT(IRQ_POLL_SOFTIRQ)) /* map softirq index to softirq name. update 'softirq_to_name' in * kernel/softirq.c when adding a new softirq. 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); /* |
