Message ID | 20220608144517.507286638@infradead.org |
---|---|
State | Accepted |
Commit | e3ee5e66f78e9950b9ada276700abd95e9b144d7 |
Headers | show |
Series | cpuidle,rcu: Cleanup the mess | expand |
On Wed, Jun 08, 2022 at 04:27:48PM +0200, Peter Zijlstra wrote: > No callers left that have already disabled RCU. > > Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Acked-by: Mark Rutland <mark.rutland@arm.com> Mark. > --- > kernel/time/tick-broadcast-hrtimer.c | 29 ++++++++++++----------------- > 1 file changed, 12 insertions(+), 17 deletions(-) > > --- a/kernel/time/tick-broadcast-hrtimer.c > +++ b/kernel/time/tick-broadcast-hrtimer.c > @@ -56,25 +56,20 @@ static int bc_set_next(ktime_t expires, > * hrtimer callback function is currently running, then > * hrtimer_start() cannot move it and the timer stays on the CPU on > * which it is assigned at the moment. > + */ > + hrtimer_start(&bctimer, expires, HRTIMER_MODE_ABS_PINNED_HARD); > + /* > + * The core tick broadcast mode expects bc->bound_on to be set > + * correctly to prevent a CPU which has the broadcast hrtimer > + * armed from going deep idle. > * > - * As this can be called from idle code, the hrtimer_start() > - * invocation has to be wrapped with RCU_NONIDLE() as > - * hrtimer_start() can call into tracing. > + * As tick_broadcast_lock is held, nothing can change the cpu > + * base which was just established in hrtimer_start() above. So > + * the below access is safe even without holding the hrtimer > + * base lock. > */ > - RCU_NONIDLE( { > - hrtimer_start(&bctimer, expires, HRTIMER_MODE_ABS_PINNED_HARD); > - /* > - * The core tick broadcast mode expects bc->bound_on to be set > - * correctly to prevent a CPU which has the broadcast hrtimer > - * armed from going deep idle. > - * > - * As tick_broadcast_lock is held, nothing can change the cpu > - * base which was just established in hrtimer_start() above. So > - * the below access is safe even without holding the hrtimer > - * base lock. > - */ > - bc->bound_on = bctimer.base->cpu_base->cpu; > - } ); > + bc->bound_on = bctimer.base->cpu_base->cpu; > + > return 0; > } > > >
--- a/kernel/time/tick-broadcast-hrtimer.c +++ b/kernel/time/tick-broadcast-hrtimer.c @@ -56,25 +56,20 @@ static int bc_set_next(ktime_t expires, * hrtimer callback function is currently running, then * hrtimer_start() cannot move it and the timer stays on the CPU on * which it is assigned at the moment. + */ + hrtimer_start(&bctimer, expires, HRTIMER_MODE_ABS_PINNED_HARD); + /* + * The core tick broadcast mode expects bc->bound_on to be set + * correctly to prevent a CPU which has the broadcast hrtimer + * armed from going deep idle. * - * As this can be called from idle code, the hrtimer_start() - * invocation has to be wrapped with RCU_NONIDLE() as - * hrtimer_start() can call into tracing. + * As tick_broadcast_lock is held, nothing can change the cpu + * base which was just established in hrtimer_start() above. So + * the below access is safe even without holding the hrtimer + * base lock. */ - RCU_NONIDLE( { - hrtimer_start(&bctimer, expires, HRTIMER_MODE_ABS_PINNED_HARD); - /* - * The core tick broadcast mode expects bc->bound_on to be set - * correctly to prevent a CPU which has the broadcast hrtimer - * armed from going deep idle. - * - * As tick_broadcast_lock is held, nothing can change the cpu - * base which was just established in hrtimer_start() above. So - * the below access is safe even without holding the hrtimer - * base lock. - */ - bc->bound_on = bctimer.base->cpu_base->cpu; - } ); + bc->bound_on = bctimer.base->cpu_base->cpu; + return 0; }
No callers left that have already disabled RCU. Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> --- kernel/time/tick-broadcast-hrtimer.c | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-)