On 12/26/18 5:14 AM, Fengguang Wu wrote: > +static unsigned long __get_dram_free_pages(gfp_t gfp_mask) > +{ > + struct page *page; > + > + page = __alloc_pages(GFP_KERNEL_ACCOUNT, 0, numa_node_id()); > + if (!page) > + return 0; > + return (unsigned long) page_address(page); > +} There seems to be a ton of *policy* baked into these patches. For instance: thou shalt not allocate page tables pages from PMEM. That's surely not a policy we want to inflict on every Linux user until the end of time. I think the more important question is how we can have the specific policy that this patch implements, but also leave open room for other policies, such as: "I don't care how slow this VM runs, minimize the amount of fast memory it eats."