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 <[email protected]> > Cc: Chris Wilson <[email protected]> > Cc: Andrew Morton <[email protected]> > Cc: David Rientjes <[email protected]> > Cc: "Jérôme Glisse" <[email protected]> > Cc: Michal Hocko <[email protected]> > Cc: "Christian König" <[email protected]> > Cc: Greg Kroah-Hartman <[email protected]> > Cc: Daniel Vetter <[email protected]> > Cc: Mike Rapoport <[email protected]> > Cc: [email protected] > Signed-off-by: Daniel Vetter <[email protected]> > 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 <[email protected]> Jason
