From: Vlastimil Babka <vbabka@suse.cz>
To: Mike Rapoport <rppt@linux.ibm.com>
Cc: "Mike Rapoport" <rppt@kernel.org>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Andrea Arcangeli" <aarcange@redhat.com>,
"Baoquan He" <bhe@redhat.com>, "Borislav Petkov" <bp@alien8.de>,
"Chris Wilson" <chris@chris-wilson.co.uk>,
"David Hildenbrand" <david@redhat.com>,
"H. Peter Anvin" <hpa@zytor.com>,
"Ingo Molnar" <mingo@redhat.com>,
"Linus Torvalds" <torvalds@linux-foundation.org>,
"Łukasz Majczak" <lma@semihalf.com>,
"Mel Gorman" <mgorman@suse.de>,
"Michal Hocko" <mhocko@kernel.org>, "Qian Cai" <cai@lca.pw>,
"Sarvela, Tomi P" <tomi.p.sarvela@intel.com>,
"Thomas Gleixner" <tglx@linutronix.de>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
stable@vger.kernel.org, x86@kernel.org
Subject: Re: [PATCH v7 1/1] mm/page_alloc.c: refactor initialization of struct page for holes in memory layout
Date: Thu, 25 Feb 2021 19:38:44 +0100 [thread overview]
Message-ID: <a458a933-91c7-9fb5-d7f8-b9a7af93a11c@suse.cz> (raw)
In-Reply-To: <20210225180521.GH1854360@linux.ibm.com>
On 2/25/21 7:05 PM, Mike Rapoport wrote:
> On Thu, Feb 25, 2021 at 06:51:53PM +0100, Vlastimil Babka wrote:
>> >
>> > unset zone link in struct page will trigger
>> >
>> > VM_BUG_ON_PAGE(!zone_spans_pfn(page_zone(page), pfn), page);
>>
>> ... in set_pfnblock_flags_mask() when called with a struct page from the
>> "Unknown E820 type" range.
>
> "... in set_pfnblock_flags_mask() when called with a struct page from a range
> other than E820_TYPE_RAM"
>
> then :)
Better :)
>> > because there are pages in both ZONE_DMA32 and ZONE_DMA (unset zone link
>> > in struct page) in the same pageblock.
>>
>> I would say "there are apparently pages" ... "and ZONE_DMA does not span this range"
>
> I'd rephrase it differently, something like
>
> "because there are pages in the range of ZONE_DMA32 but the unset zone link
> in struct page makes them appear as a part of ZONE_DMA"
Much better, thanks!
>> > Interleave initialization of the unavailable pages with the normal
>> > initialization of memory map, so that zone and node information will be
>> > properly set on struct pages that are not backed by the actual memory.
>> >
>> > With this change the pages for holes inside a zone will get proper
>> > zone/node links and the pages that are not spanned by any node will get
>> > links to the adjacent zone/node.
>>
>> What if two zones are adjacent? I.e. if the hole was at a boundary between two
>> zones.
>
> What do you mean by "adjacent zones"? If there is a hole near the zone
> boundary, zone span would be clamped to exclude the hole.
Yeah, zone span should exclude those pages, but you still somehow handle them?
That's how I read "pages that are not spanned by any node will get links to the
adjacent zone/node."
So is it always a unique zone/node can be determined?
Let's say we have:
<memory on node 0>
---- pageblock boundary ----
<more memory on node 0>
<a hole>
<memory on node 1>
---- pageblock boundary ----
Now I hope such configurations don't really exist :) But if we simulated them in
QEMU, what would be the linkage in struct pages in that hole?
next prev parent reply other threads:[~2021-02-25 18:38 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-24 15:39 [PATCH v7 0/1] mm: fix " Mike Rapoport
2021-02-24 15:39 ` [PATCH v7 1/1] mm/page_alloc.c: refactor " Mike Rapoport
2021-02-25 15:59 ` David Hildenbrand
2021-02-25 17:06 ` Mike Rapoport
2021-02-25 17:54 ` David Hildenbrand
2021-02-25 17:54 ` Linus Torvalds
2021-02-25 18:09 ` Mike Rapoport
2021-02-25 17:51 ` Vlastimil Babka
2021-02-25 18:05 ` Mike Rapoport
2021-02-25 18:38 ` Vlastimil Babka [this message]
2021-02-26 10:59 ` Mike Rapoport
2021-02-26 11:08 ` Vlastimil Babka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=a458a933-91c7-9fb5-d7f8-b9a7af93a11c@suse.cz \
--to=vbabka@suse.cz \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=bhe@redhat.com \
--cc=bp@alien8.de \
--cc=cai@lca.pw \
--cc=chris@chris-wilson.co.uk \
--cc=david@redhat.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lma@semihalf.com \
--cc=mgorman@suse.de \
--cc=mhocko@kernel.org \
--cc=mingo@redhat.com \
--cc=rppt@kernel.org \
--cc=rppt@linux.ibm.com \
--cc=stable@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=tomi.p.sarvela@intel.com \
--cc=torvalds@linux-foundation.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox