On Tue, May 03, 2022 at 10:21:03PM +0200, David Hildenbrand wrote: > > > > > +/* > > + * Page acceptance can be very slow. Do not call under critical locks. > > + */ > > +static void accept_page(struct page *page, unsigned int order) > > +{ > > + phys_addr_t start = page_to_phys(page); > > + int i; > > + > > + accept_memory(start, start + (PAGE_SIZE << order)); > > + > > + for (i = 0; i < (1 << order); i++) { > > + if (PageUnaccepted(page + i)) > > + __ClearPageUnaccepted(page + i); > > + } > > +} > > What was the rationale of leaving PageUnaccepted() set on sub-pages when > merging pages? > > I'd just clear the flag when merging and avoid the loop here. You could > even assert here that we don't have any PageUnaccepted() on tail pages. Okay, fair enough. I will change the code. -- Kirill A. Shutemov