Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1710860 > unrolled thread

Re: [v6 02/15] x86/mm: setting fields in deferred pages

Started byMichal Hocko <mhocko@kernel.org>
First post2017-08-14 13:50 +0200
Last post2017-08-14 15:40 +0200
Articles 2 — 2 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: [v6 02/15] x86/mm: setting fields in deferred pages Michal Hocko <mhocko@kernel.org> - 2017-08-14 13:50 +0200
    Re: [v6 02/15] x86/mm: setting fields in deferred pages Pasha Tatashin <pasha.tatashin@oracle.com> - 2017-08-14 15:40 +0200

#1710860 — Re: [v6 02/15] x86/mm: setting fields in deferred pages

FromMichal Hocko <mhocko@kernel.org>
Date2017-08-14 13:50 +0200
SubjectRe: [v6 02/15] x86/mm: setting fields in deferred pages
Message-ID<uem2B-3DE-7@gated-at.bofh.it>
On Fri 11-08-17 11:39:41, Pasha Tatashin wrote:
> >AFAIU register_page_bootmem_info_node is only about struct pages backing
> >pgdat, usemap and memmap. Those should be in reserved memblocks and we
> >do not initialize those at later times, they are not relevant to the
> >deferred initialization as your changelog suggests so the ordering with
> >get_page_bootmem shouldn't matter. Or am I missing something here?
> 
> The pages for pgdata, usemap, and memmap are part of reserved, and thus
> getting initialized when free_all_bootmem() is called.
> 
> So, we have something like this in mem_init()
> 
> register_page_bootmem_info
>  register_page_bootmem_info_node
>   get_page_bootmem
>    .. setting fields here ..
>    such as: page->freelist = (void *)type;
> 
> free_all_bootmem()
>  free_low_memory_core_early()
>   for_each_reserved_mem_region()
>    reserve_bootmem_region()
>     init_reserved_page() <- Only if this is deferred reserved page
>      __init_single_pfn()
>       __init_single_page()
>           memset(0) <-- Loose the set fields here!

OK, I have missed that part. Please make it explicit in the changelog.
It is quite easy to get lost in the deep call chains.
-- 
Michal Hocko
SUSE Labs

[toc] | [next] | [standalone]


#1710925

FromPasha Tatashin <pasha.tatashin@oracle.com>
Date2017-08-14 15:40 +0200
Message-ID<uenL4-4Jh-15@gated-at.bofh.it>
In reply to#1710860

On 08/14/2017 07:43 AM, Michal Hocko wrote:
>> register_page_bootmem_info
>>   register_page_bootmem_info_node
>>    get_page_bootmem
>>     .. setting fields here ..
>>     such as: page->freelist = (void *)type;
>>
>> free_all_bootmem()
>>   free_low_memory_core_early()
>>    for_each_reserved_mem_region()
>>     reserve_bootmem_region()
>>      init_reserved_page() <- Only if this is deferred reserved page
>>       __init_single_pfn()
>>        __init_single_page()
>>            memset(0) <-- Loose the set fields here!
> OK, I have missed that part. Please make it explicit in the changelog.
> It is quite easy to get lost in the deep call chains.

Ok, will update comment.

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web