Messages in this thread |  | | Date | Thu, 3 Dec 2015 11:00:18 +0100 | | From | Peter Zijlstra <> | | Subject | Re: [PATCH 1/2] watchdog: introduce touch_softlockup_watchdog_sched() |
| |
On Thu, Dec 03, 2015 at 10:33:50AM +0100, Peter Zijlstra wrote: > On Wed, Dec 02, 2015 at 07:28:10PM -0500, Tejun Heo wrote: > > Hello, > > > > There haven't been too many workqueue stall bugs; however, good part > > of them have been pretty painful to track down because there's no > > lockup detection mechanism for workqueue and it isn't easy to tell > > what's going on with workqueues; furthermore, some requirements are > > tricky to get right - e.g. it's not too difficult to miss > > WQ_MEM_RECLAIM for a workqueue which runs a work item which is flushed > > by something which sits in the reclaim path. > > have you considered something as simple as: > > WARN_ON(current->reclaim_state && !WQ_MEM_RECLAIM); > > ?
Alternatively, you can 'abuse' the lockdep reclaim bits by marking !MEM_RECLAIM workqueue 'locks' with lockdep_trace_alloc(GFP_KERNEL), that way lockdep will yell if they get used in a reclaim context.
This might be a tad tricky in that you need 2 sets of (lockdep) keys for things.
|  |