[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20190628184729.GJ2751@dhcp22.suse.cz>
Date: Fri, 28 Jun 2019 20:47:29 +0200
From: Michal Hocko <mhocko@...nel.org>
To: Juergen Gross <jgross@...e.com>
Cc: linux-mm@...ck.org,
Alexander Duyck <alexander.h.duyck@...ux.intel.com>,
xen-devel@...ts.xenproject.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] mm: fix regression with deferred struct page init
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
Powered by blists - more mailing lists