rcu-tasks: Move RTGS_WAIT_CBS to beginning of rcu_tasks_kthread() loop
[ Upstream commit 0db7c32ad3160ae06f497d48a74bd46a2a35e6bf ] Early in debugging, it made some sense to differentiate the first iteration from subsequent iterations, but now this just causes confusion. This commit therefore moves the "set_tasks_gp_state(rtp, RTGS_WAIT_CBS)" statement to the beginning of the "for" loop in rcu_tasks_kthread(). Reported-by: Neeraj Upadhyay <neeraju@codeaurora.org> Signed-off-by: Paul E. McKenney <paulmck@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
8d433ab5c8
commit
02ddf26d84
@ -197,6 +197,7 @@ static int __noreturn rcu_tasks_kthread(void *arg)
|
|||||||
* This loop is terminated by the system going down. ;-)
|
* This loop is terminated by the system going down. ;-)
|
||||||
*/
|
*/
|
||||||
for (;;) {
|
for (;;) {
|
||||||
|
set_tasks_gp_state(rtp, RTGS_WAIT_CBS);
|
||||||
|
|
||||||
/* Pick up any new callbacks. */
|
/* Pick up any new callbacks. */
|
||||||
raw_spin_lock_irqsave(&rtp->cbs_lock, flags);
|
raw_spin_lock_irqsave(&rtp->cbs_lock, flags);
|
||||||
@ -236,8 +237,6 @@ static int __noreturn rcu_tasks_kthread(void *arg)
|
|||||||
}
|
}
|
||||||
/* Paranoid sleep to keep this from entering a tight loop */
|
/* Paranoid sleep to keep this from entering a tight loop */
|
||||||
schedule_timeout_idle(rtp->gp_sleep);
|
schedule_timeout_idle(rtp->gp_sleep);
|
||||||
|
|
||||||
set_tasks_gp_state(rtp, RTGS_WAIT_CBS);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user