Messages in this thread | | | From | Lai Jiangshan <> | Date | Thu, 28 May 2020 08:33:03 +0800 | Subject | Re: [PATCH v2 2/2] workqueue: Convert the pool::lock and wq_mayday_lock to raw_spinlock_t |
| |
On Thu, May 28, 2020 at 3:47 AM Sebastian Andrzej Siewior <bigeasy@linutronix.de> wrote: > > The workqueue code has it's internal spinlocks (pool::lock), which > are acquired on most workqueue operations. These spinlocks are > converted to 'sleeping' spinlocks on a RT-kernel. > > Workqueue functions can be invoked from contexts which are truly atomic > even on a PREEMPT_RT enabled kernel. Taking sleeping locks from such > contexts is forbidden. > > The pool::lock hold times are bound and the code sections are > relatively short, which allows to convert pool::lock and as a > consequence wq_mayday_lock to raw spinlocks which are truly spinning > locks even on a PREEMPT_RT kernel. > > With the previous conversion of the manager waitqueue to a simple > waitqueue workqueues are now fully RT compliant. > > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> > --- > kernel/workqueue.c | 176 ++++++++++++++++++++++----------------------- > 1 file changed, 88 insertions(+), 88 deletions(-) >
Reviewed-by: Lai Jiangshan <jiangshanlai@gmail.com>
| |