diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index 178687d9e289..0cb79f0fec4f 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h @@ -613,6 +613,7 @@ extern void raise_softirq_irqoff(unsigned int nr); extern void raise_softirq(unsigned int nr); #ifdef CONFIG_PREEMPT_RT +DECLARE_PER_CPU(struct task_struct *, timersd); extern void raise_timer_softirq(void); extern void raise_hrtimer_softirq(void); diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c index 57046b1b0159..8f12719a38ba 100644 --- a/kernel/rcu/rcutorture.c +++ b/kernel/rcu/rcutorture.c @@ -2410,6 +2410,12 @@ static int rcutorture_booster_init(unsigned int cpu) WARN_ON_ONCE(!t); sp.sched_priority = 2; sched_setscheduler_nocheck(t, SCHED_FIFO, &sp); +#ifdef CONFIG_PREEMPT_RT + t = per_cpu(timersd, cpu); + WARN_ON_ONCE(!t); + sp.sched_priority = 2; + sched_setscheduler_nocheck(t, SCHED_FIFO, &sp); +#endif } /* Don't allow time recalculation while creating a new task. */ diff --git a/kernel/softirq.c b/kernel/softirq.c index 307858228485..a9b6f8a65d27 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c @@ -631,7 +631,7 @@ static inline void tick_irq_exit(void) } #ifdef CONFIG_PREEMPT_RT -static DEFINE_PER_CPU(struct task_struct *, timersd); +DEFINE_PER_CPU(struct task_struct *, timersd); static DEFINE_PER_CPU(unsigned long, pending_timer_softirq); static unsigned int local_pending_timers(void)