On Fri, 2017-10-20 at 08:34 +0200, Thomas Gleixner wrote: > On Thu, 19 Oct 2017, Bart Van Assche wrote: > > Are there any completion objects for which the cross-release checking is > > useful? > > All of them by definition. Sorry but I'm not sure that's the best possible answer. In my opinion avoiding that completion objects have dependencies on other lock objects, e.g. by avoiding to wait on a completion object while holding a mutex, is a far superior strategy over adding cross-release checking to completion objects. The former strategy namely makes it unnecessary to add cross-release checking to completion objects because that strategy ensures that these completion objects cannot get involved in a deadlock. The latter strategy can lead to false positive deadlock reports by the lockdep code, something none of us wants. A possible alternative strategy could be to enable cross-release checking only for those completion objects for which waiting occurs inside a critical section. > > Are there any wait_for_completion() callers that hold a mutex or > > other locking object? > > Yes, there are also cross completion dependencies. There have been such > bugs and I expect more to be unearthed. > > I really have to ask what your motiviation is to fight the lockdep coverage > of synchronization objects tooth and nail? As explained in another e-mail thread, unlike the lock inversion checking performed by the <= v4.13 lockdep code, cross-release checking is a heuristic that does not have a sound theoretical basis. The lock validator is an important tool for kernel developers. It is important that it produces as few false positives as possible. Since the cross-release checks are enabled automatically when enabling lockdep, I think it is normal that I, as a kernel developer, care that the cross-release checks produce as few false positives as possible. Bart.