linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Dan Williams <dan.j.williams@intel.com>
To: Wei Yang <richard.weiyang@linux.alibaba.com>
Cc: Michal Hocko <mhocko@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	 Oscar Salvador <osalvador@suse.de>,
	Linux MM <linux-mm@kvack.org>, Baoquan He <bhe@redhat.com>,
	 Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	David Hildenbrand <david@redhat.com>
Subject: Re: [PATCH] mm/spase: never partially remove memmap for early section
Date: Wed, 24 Jun 2020 15:20:59 -0700	[thread overview]
Message-ID: <CAPcyv4iHM2d0qZFsznwv20Z+rTcj-8CZTDBQv1kJ50FwZuM90Q@mail.gmail.com> (raw)
In-Reply-To: <20200624220552.GA15016@L-31X9LVDL-1304.local>

On Wed, Jun 24, 2020 at 3:06 PM Wei Yang
<richard.weiyang@linux.alibaba.com> wrote:
>
> On Wed, Jun 24, 2020 at 09:10:09AM -0700, Dan Williams wrote:
> >On Tue, Jun 23, 2020 at 11:14 PM Wei Yang
> ><richard.weiyang@linux.alibaba.com> wrote:
> >>
> >> On Tue, Jun 23, 2020 at 05:18:28PM +0200, Michal Hocko wrote:
> >> >On Tue 23-06-20 17:42:58, Wei Yang wrote:
> >> >> For early sections, we assumes its memmap will never be partially
> >> >> removed. But current behavior breaks this.
> >> >>
> >> >> Let's correct it.
> >> >>
> >> >> Fixes: ba72b4c8cf60 ("mm/sparsemem: support sub-section hotplug")
> >> >> Signed-off-by: Wei Yang <richard.weiyang@linux.alibaba.com>
> >> >
> >> >Can a user trigger this or is this a theoretical bug?
> >>
> >> Let me rewrite the changelog a little. Look forward any comments.
> >>
> >>    For early sections, its memmap is handled specially even sub-section is
> >>    enabled. The memmap could only be populated as a whole.
> >>
> >>    Quoted from the comment of section_activate():
> >>
> >>        * The early init code does not consider partially populated
> >>        * initial sections, it simply assumes that memory will never be
> >>        * referenced.  If we hot-add memory into such a section then we
> >>        * do not need to populate the memmap and can simply reuse what
> >>        * is already there.
> >>
> >>    While current section_deactivate() breaks this rule. When hot-remove a
> >>    sub-section, section_deactivate() would depopulate its memmap. The
> >>    consequence is if we hot-add this subsection again, its memmap never get
> >>    proper populated.
> >
> >Ok, forgive the latency as re-fetched this logic into my mental cache.
> >So what I was remembering was the initial state of the code that
> >special cased early sections, and that still seems to be the case in
> >pfn_valid(). IIRC early_sections / bootmem are blocked from being
> >removed entirely. Partial / subsection removals are ok.
>
> Would you mind giving more words? Partial subsection removal is ok, so no need
> to fix this?

Early sections establish a memmap for the full section. There's
conceptually nothing wrong with unplugging the non-system-RAM portion
of the memmap, but it would need to be careful, at least on x86, to
map the partial section with PTEs instead of PMDs.

So, you are right that there is a mismatch here, but I think the
comprehensive fix is to allow early sections to be partially
depopulated/repopulated rather than have section_activate() and
section_deacticate() special case early sections. The special casing
is problematic in retrospect as section_deactivate() can't be
maintained without understand special rules in section_activate().


  reply	other threads:[~2020-06-24 22:21 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-23  9:42 Wei Yang
2020-06-23 12:44 ` David Hildenbrand
2020-06-23 13:02   ` Wei Yang
2020-06-23 13:16     ` David Hildenbrand
2020-06-23 15:18 ` Michal Hocko
2020-06-23 21:48   ` Wei Yang
2020-06-24  6:13   ` Wei Yang
2020-06-24 16:10     ` Dan Williams
2020-06-24 22:05       ` Wei Yang
2020-06-24 22:20         ` Dan Williams [this message]
2020-06-24 22:44           ` Wei Yang
2020-06-24 23:47             ` Dan Williams
2020-06-25  5:53               ` David Hildenbrand
2020-06-25 19:46                 ` Dan Williams
2020-06-25 22:29                   ` Wei Yang
2020-06-29  8:34                   ` Wei Yang
2020-06-29 22:13                     ` Dan Williams
2020-06-29 22:58                       ` Wei Yang
2020-06-30  7:16                         ` David Hildenbrand
2020-06-25 22:39                 ` Wei Yang
2020-06-26  4:59                   ` David Hildenbrand
2020-06-24  7:48   ` David Hildenbrand
2020-06-24  8:04     ` David Hildenbrand
2020-06-24  8:13     ` Wei Yang
2020-06-24  8:41       ` David Hildenbrand
2020-06-24  8:50         ` Michal Hocko
2020-06-24 22:27         ` Wei Yang
2020-06-24  0:21 ` Dan Williams
2020-06-24  1:11   ` Wei Yang
2020-06-24  1:47   ` Baoquan He
2020-06-24  2:14     ` Baoquan He
2020-06-24  3:46     ` Wei Yang
2020-06-24  3:52       ` Baoquan He
2020-06-24  3:56         ` Wei Yang
2020-06-24  8:51           ` David Hildenbrand
2020-06-24 22:08             ` Wei Yang

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=CAPcyv4iHM2d0qZFsznwv20Z+rTcj-8CZTDBQv1kJ50FwZuM90Q@mail.gmail.com \
    --to=dan.j.williams@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=bhe@redhat.com \
    --cc=david@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@kernel.org \
    --cc=osalvador@suse.de \
    --cc=richard.weiyang@linux.alibaba.com \
    /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