All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Hildenbrand <david@redhat.com>
To: Wei Yang <richard.weiyang@gmail.com>
Cc: Wei Yang <richardw.yang@linux.intel.com>,
	akpm@linux-foundation.org, osalvador@suse.de,
	dan.j.williams@intel.com, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org, bhe@redhat.com
Subject: Re: [PATCH] mm/sparsemem: pfn_to_page is not valid yet on SPARSEMEM
Date: Thu, 6 Feb 2020 14:59:50 +0100	[thread overview]
Message-ID: <185d502e-d5a8-9149-18fc-1ef9b251843e@redhat.com> (raw)
In-Reply-To: <20200206135742.454wgna4ta76yv5w@master>

On 06.02.20 14:57, Wei Yang wrote:
> On Thu, Feb 06, 2020 at 02:28:53PM +0100, David Hildenbrand wrote:
>> On 06.02.20 13:53, Wei Yang wrote:
>>> When we use SPARSEMEM instead of SPARSEMEM_VMEMMAP, pfn_to_page()
>>> doesn't work before sparse_init_one_section() is called. This leads to a
>>> crash when hotplug memory.
>>>
>>> We should use memmap as it did.
>>>
>>> Fixes: ba72b4c8cf60 ("mm/sparsemem: support sub-section hotplug")
>>> Signed-off-by: Wei Yang <richardw.yang@linux.intel.com>
>>> CC: Dan Williams <dan.j.williams@intel.com>
>>> ---
>>>  mm/sparse.c | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/mm/sparse.c b/mm/sparse.c
>>> index 5a8599041a2a..2efb24ff8f96 100644
>>> --- a/mm/sparse.c
>>> +++ b/mm/sparse.c
>>> @@ -882,7 +882,7 @@ int __meminit sparse_add_section(int nid, unsigned long start_pfn,
>>>  	 * Poison uninitialized struct pages in order to catch invalid flags
>>>  	 * combinations.
>>>  	 */
>>> -	page_init_poison(pfn_to_page(start_pfn), sizeof(struct page) * nr_pages);
>>> +	page_init_poison(memmap, sizeof(struct page) * nr_pages);
>>
>> If you add sub-sections that don't fall onto the start of the section,
>>
>> pfn_to_page(start_pfn) != memmap
>>
>> and your patch would break that under SPARSEMEM_VMEMMAP if I am not wrong.
>>
>> Instead of memmap, there would have to be something like
>>
>> memmap + (start_pfn - SECTION_ALIGN_DOWN(start_pfn))
>>
>> If I am not wrong :)
> 
> Hi, David, Thanks for your comment.
> 
> To be hones, I am not familiar with SPARSEMEM_VMEMMAP. Here is my
> understanding about section_activate() when SPARSEMEM_VMEMMAP is set.
> 
>   section_activate(nid, start_pfn, nr_pages, altmap)
>     populate_section_mmemap(start_pfn, nr_pages, nid, altmap)
>       __populate_section_mmemap(start_pfn, nr_pages, nid, altmap)
>         return pfn_to_page(start_pfn)
> 
> So the memmap is the page struct for start_pfn when SPARSEMEM_VMEMMAP is set.
> 
> Maybe I missed some critical part?

I was assuming that memmap is the memmap of the section, not of the
sub-section. (judging from the change in the original patch)

If the right memmap pointer to the sub-section is returned, then we are
fine. Will double check :)

-- 
Thanks,

David / dhildenb


  reply	other threads:[~2020-02-06 13:59 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-06 12:53 [PATCH] mm/sparsemem: pfn_to_page is not valid yet on SPARSEMEM Wei Yang
2020-02-06 13:28 ` David Hildenbrand
2020-02-06 13:50   ` Baoquan He
2020-02-06 13:55     ` David Hildenbrand
2020-02-06 14:07       ` Baoquan He
2020-02-06 14:37         ` David Hildenbrand
2020-02-06 22:15           ` Wei Yang
2020-02-07  7:23           ` Baoquan He
2020-02-06 14:15     ` Wei Yang
2020-02-06 13:57   ` Wei Yang
2020-02-06 13:59     ` David Hildenbrand [this message]
2020-02-06 14:14       ` Wei Yang
2020-02-09 10:36 ` Baoquan He

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=185d502e-d5a8-9149-18fc-1ef9b251843e@redhat.com \
    --to=david@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=bhe@redhat.com \
    --cc=dan.j.williams@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=osalvador@suse.de \
    --cc=richard.weiyang@gmail.com \
    --cc=richardw.yang@linux.intel.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.