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 <j...@ziepe.ca> > Cc: Chris Wilson <ch...@chris-wilson.co.uk> > Cc: Andrew Morton <a...@linux-foundation.org> > Cc: David Rientjes <rient...@google.com> > Cc: "Jérôme Glisse" <jgli...@redhat.com> > Cc: Michal Hocko <mho...@suse.com> > Cc: "Christian König" <christian.koe...@amd.com> > Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org> > Cc: Daniel Vetter <daniel.vet...@ffwll.ch> > Cc: Mike Rapoport <r...@linux.vnet.ibm.com> > Cc: linux...@kvack.org > Signed-off-by: Daniel Vetter <daniel.vet...@intel.com> > 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 <j...@mellanox.com> Jason