On Sun, Dec 13, 2020 at 11:45:34PM +0800, Muchun Song wrote: > static inline unsigned int free_vmemmap_pages_per_hpage(struct hstate *h) > { > - return h->nr_free_vmemmap_pages; > + return h->nr_free_vmemmap_pages && is_power_of_2(sizeof(struct page)); This is wrong as it will return either true or false, but not what we want: static inline unsigned long free_vmemmap_pages_size_per_hpage(struct hstate *h) { return (unsigned long)free_vmemmap_pages_per_hpage(h) << PAGE_SHIFT; } the above will compute to 4096, which is wrong for obvious reasons. -- Oscar Salvador SUSE L3