> > +/* > + * 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. -- Thanks, David / dhildenb