Messages in this thread | | | Date | Wed, 22 Feb 2023 14:36:14 +0100 | From | Peter Zijlstra <> | Subject | Re: [PATCH] sched: Consider task_struct::saved_state in wait_task_inactive(). |
| |
On Fri, Feb 17, 2023 at 03:53:02PM +0100, Sebastian Andrzej Siewior wrote: > wait_task_inactive() waits for thread to unschedule in a certain task state. > On PREEMPT_RT that state may be stored in task_struct::saved_state while the > thread, that is being waited for, blocks on a sleeping lock and > task_struct::__state is set to TASK_RTLOCK_WAIT. > It is not possible to check only for TASK_RTLOCK_WAIT to be sure that the task > is blocked on a sleeping lock because during wake up (after the sleeping lock > has been acquired) the task state is set TASK_RUNNING. After the task in on CPU > and acquired the pi_lock it will reset the state accordingly but until then > TASK_RUNNING will be observed (with the desired state is saved in saved_state). > > Check also for task_struct::saved_state if the desired match was not found in > task_struct::__state on PREEMPT_RT. If the state was found in saved_state, wait > until the task is idle and state is visible in task_struct::__state. > > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> > Reviewed-by: Valentin Schneider <vschneid@redhat.com> > ---
Which if the very few wait_task_inactive() users requires this?
| |