On 6/4/19 12:56 PM, Pingfan Liu wrote:
The PF_MEMALLOC_NOCMA is set by memalloc_nocma_save(), which is finally cast to ~_GFP_MOVABLE. So __get_user_pages_locked() will get pages from non CMA area and pin them. There is no need to check_and_migrate_cma_pages().
That is not completely correct. We can fault in that pages outside get_user_pages_longterm at which point those pages can get allocated from CMA region. memalloc_nocma_save() as added as an optimization to avoid unnecessary page migration.
-aneesh