On Tue, Apr 13, 2021 at 03:40:18PM +0200, Michal Hocko wrote: > > + /* > > + * Call __prep_new_huge_page() to construct the hugetlb page, and > > + * enqueue it then to place it in the freelists. After this, > > + * counters are back on track. Free hugepages have a refcount of 0, > > + * so we need to decrease new_page's count as well. > > + */ > > + __prep_new_huge_page(new_page); > > + __prep_account_new_huge_page(h, nid); > > I think it would help to put something like the following into the > comment above this really strange construct. > > /* > * new_page needs to be initialized with the standard > * hugetlb state. This is normally done by > * prep_new_huge_page but that takes hugetlb_lock which > * is already held so we need to open code it here. > * Reference count trick is needed because allocator > * gives us referenced page but the pool requires pages > * with 0 refcount. > */ Ok, I will try to add more info, thanks Michal! -- Oscar Salvador SUSE L3