On Fri 28-06-19 19:38:13, Juergen Gross wrote: > On 28.06.19 17:17, Michal Hocko wrote: > > On Thu 20-06-19 18:08:21, Juergen Gross wrote: > > > Commit 0e56acae4b4dd4a9 ("mm: initialize MAX_ORDER_NR_PAGES at a time > > > instead of doing larger sections") is causing a regression on some > > > systems when the kernel is booted as Xen dom0. > > > > > > The system will just hang in early boot. > > > > > > Reason is an endless loop in get_page_from_freelist() in case the first > > > zone looked at has no free memory. deferred_grow_zone() is always > > > > Could you explain how we ended up with the zone having no memory? Is > > xen "stealing" memblock memory without adding it to memory.reserved? > > In other words, how do we end up with an empty zone that has non zero > > end_pfn? > > Why do you think Xen is stealing the memory in an odd way? > > Doesn't deferred_init_mem_pfn_range_in_zone() return false when no free > memory is found? So exactly if the memory was added to memory.reserved > that will happen. You are right. I managed to confuse myself and thought that __next_mem_range return index to both memblock types. But I am wrong here and it excludes type_b regions. I should have read the documentation. My bad and sorry for the confusion. -- Michal Hocko SUSE Labs