On Thu, Dec 17, 2020 at 6:32 PM Oscar Salvador <osalvador@xxxxxxx> wrote: > > 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: Yeah, very thanks for pointing that out. > > 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. You are right. It is my mistake. Thanks Oscar. > > -- > Oscar Salvador > SUSE L3 -- Yours, Muchun