All of lore.kernel.org
 help / color / mirror / Atom feed
From: Baoquan He <bhe@redhat.com>
To: Dave Hansen <dave.hansen@intel.com>
Cc: linux-kernel@vger.kernel.org, akpm@linux-foundation.org,
	pagupta@redhat.com, linux-mm@kvack.org,
	kirill.shutemov@linux.intel.com
Subject: Re: [PATCH v3 2/4] mm/sparsemem: Defer the ms->section_mem_map clearing
Date: Sun, 8 Apr 2018 14:50:55 +0800	[thread overview]
Message-ID: <20180408065055.GA19345@localhost.localdomain> (raw)
In-Reply-To: <8e147320-50f5-f809-31d2-992c35ecc418@intel.com>

Hi Dave,

Thanks a lot for your careful reviewing!

On 04/06/18 at 07:23am, Dave Hansen wrote:
> On 02/27/2018 07:26 PM, Baoquan He wrote:
> > In sparse_init(), if CONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER=y, system
> > will allocate one continuous memory chunk for mem maps on one node and
> > populate the relevant page tables to map memory section one by one. If
> > fail to populate for a certain mem section, print warning and its
> > ->section_mem_map will be cleared to cancel the marking of being present.
> > Like this, the number of mem sections marked as present could become
> > less during sparse_init() execution.
> > 
> > Here just defer the ms->section_mem_map clearing if failed to populate
> > its page tables until the last for_each_present_section_nr() loop. This
> > is in preparation for later optimizing the mem map allocation.
> > 
> > Signed-off-by: Baoquan He <bhe@redhat.com>
> > ---
> >  mm/sparse-vmemmap.c |  1 -
> >  mm/sparse.c         | 12 ++++++++----
> >  2 files changed, 8 insertions(+), 5 deletions(-)
> > 
> > diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c
> > index bd0276d5f66b..640e68f8324b 100644
> > --- a/mm/sparse-vmemmap.c
> > +++ b/mm/sparse-vmemmap.c
> > @@ -303,7 +303,6 @@ void __init sparse_mem_maps_populate_node(struct page **map_map,
> >  		ms = __nr_to_section(pnum);
> >  		pr_err("%s: sparsemem memory map backing failed some memory will not be available\n",
> >  		       __func__);
> > -		ms->section_mem_map = 0;
> >  	}
> 
> I think you might have been trying to say this in the description, but I
> was not able to parse it out of there.  What is in ms->section_mem_map
> that needs to get cleared?
> 
> It *looks* like memory_present() uses ms->section_mem_map to just mark
> which sections are online relatively early in boot.  We need this
> clearing to mark that they are effectively *not* present any longer.
> Correct?
> 
> I guess the concern here is that if you miss any of the error sites,
> we'll end up with a bogus, non-null ms->section_mem_map.  Do we handle
> that nicely?
> 
> Should the " = 0" instead be clearing SECTION_MARKED_PRESENT or
> something?  That would make it easier to match the code up with the code
> that it is effectively undoing.


Not sure if I understand your question correctly. From memory_present(),
information encoded into ms->section_mem_map including numa node,
SECTION_IS_ONLINE and SECTION_MARKED_PRESENT. Not sure if it's OK to only
clear SECTION_MARKED_PRESENT.  People may wrongly check SECTION_IS_ONLINE
and do something on this memory section?

Thanks
Baoquan

  reply	other threads:[~2018-04-08  6:51 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-28  3:26 [PATCH v3 0/4] mm/sparse: Optimize memmap allocation during sparse_init() Baoquan He
2018-02-28  3:26 ` Baoquan He
2018-02-28  3:26 ` [PATCH v3 1/4] mm/sparse: Add a static variable nr_present_sections Baoquan He
2018-02-28  3:26   ` Baoquan He
2018-02-28  3:26 ` [PATCH v3 2/4] mm/sparsemem: Defer the ms->section_mem_map clearing Baoquan He
2018-02-28  3:26   ` Baoquan He
2018-04-06 14:23   ` Dave Hansen
2018-04-08  6:50     ` Baoquan He [this message]
2018-04-09 16:02       ` Dave Hansen
2018-04-10  0:26         ` Baoquan He
2018-02-28  3:26 ` [PATCH v3 3/4] mm/sparse: Add a new parameter 'data_unit_size' for alloc_usemap_and_memmap Baoquan He
2018-02-28  3:26   ` Baoquan He
2018-02-28  3:26 ` [PATCH v3 4/4] mm/sparse: Optimize memmap allocation during sparse_init() Baoquan He
2018-02-28  3:26   ` Baoquan He
2018-04-06 14:50   ` Dave Hansen
2018-04-08  8:20     ` Baoquan He
2018-04-09  2:07       ` Baoquan He
2018-04-11 15:48       ` Dave Hansen
2018-04-15  2:19         ` Baoquan He
2018-04-16  4:36           ` Dave Hansen
2018-04-05 22:08 ` [PATCH v3 0/4] " Andrew Morton
2018-04-06 11:05   ` Kirill A. Shutemov

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=20180408065055.GA19345@localhost.localdomain \
    --to=bhe@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=dave.hansen@intel.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=pagupta@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.