> Index: linux-2.6/mm/page_alloc.c > =================================================================== > --- linux-2.6.orig/mm/page_alloc.c > +++ linux-2.6/mm/page_alloc.c > @@ -1963,10 +1963,13 @@ __alloc_pages_nodemask(gfp_t gfp_mask, u > page = get_page_from_freelist(gfp_mask|__GFP_HARDWALL, nodemask, order, > zonelist, high_zoneidx, ALLOC_WMARK_LOW|ALLOC_CPUSET, > preferred_zone, migratetype); > - if (unlikely(!page)) > + if (unlikely(!page)) { > + mm_lock_suspend(gfp_mask); > page = __alloc_pages_slowpath(gfp_mask, order, > zonelist, high_zoneidx, nodemask, > preferred_zone, migratetype); > + mm_unlock_suspend(gfp_mask); > + } > > trace_mm_page_alloc(page, order, gfp_mask, migratetype); > return page; I think we don't need read side lock at all. generally, no lock might makes race. But in this case, changing gfp_allowed_mask and nvidia suspend method should be serialized higher level. Why the above two code need to run concurrently? _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm