alloc_migrate_target() is called from migrate_pages(), so the page is always from user space, so why not add __GFP_HIGHMEM directly, instead of the following code.
if (PageHighMem(page)) // it always return false in x86_64
gfp_mask |= __GFP_HIGHMEM;
Another question, when we do migration, why should split THP
first?
e.g. 2M(512*4kb) should flush 512 times TLB, and 2M(2M*1) only need one.
I find flush TLB takes a lot of time, especially multithreaded app.
Thanks,
Xishi Qiu

