On Tue, Aug 20, 2019 at 10:19:00AM +0200, Daniel Vetter wrote: > We want to teach lockdep that mmu notifiers can be called from direct > reclaim paths, since on many CI systems load might never reach that > level (e.g. when just running fuzzer or small functional tests). > > Motivated by a discussion with Jason. > > I've put the annotation into mmu_notifier_register since only when we > have mmu notifiers registered is there any point in teaching lockdep > about them. Also, we already have a kmalloc(, GFP_KERNEL), so this is > safe. > > Cc: Jason Gunthorpe <jgg@xxxxxxxx> > Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Cc: David Rientjes <rientjes@xxxxxxxxxx> > Cc: "Jérôme Glisse" <jglisse@xxxxxxxxxx> > Cc: Michal Hocko <mhocko@xxxxxxxx> > Cc: "Christian König" <christian.koenig@xxxxxxx> > Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> > Cc: Mike Rapoport <rppt@xxxxxxxxxxxxxxxxxx> > Cc: linux-mm@xxxxxxxxx > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxxx> > mm/mmu_notifier.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/mm/mmu_notifier.c b/mm/mmu_notifier.c > index d12e3079e7a4..538d3bb87f9b 100644 > +++ b/mm/mmu_notifier.c > @@ -256,6 +256,13 @@ static int do_mmu_notifier_register(struct mmu_notifier *mn, > > BUG_ON(atomic_read(&mm->mm_users) <= 0); > > + if (IS_ENABLED(CONFIG_LOCKDEP)) { > + fs_reclaim_acquire(GFP_KERNEL); > + lock_map_acquire(&__mmu_notifier_invalidate_range_start_map); > + lock_map_release(&__mmu_notifier_invalidate_range_start_map); > + fs_reclaim_release(GFP_KERNEL); > + } Lets try it out at least Reviewed-by: Jason Gunthorpe <jgg@xxxxxxxxxxxx> Jason