Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1407306
| From | Joonsoo Kim <iamjoonsoo.kim@lge.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH] mm: use early_pfn_to_nid in register_page_bootmem_info_node |
| Date | 2016-05-26 02:40 +0200 |
| Message-ID | <rCRvb-7ID-5@gated-at.bofh.it> (permalink) |
| References | <rCOxk-5WN-39@gated-at.bofh.it> <rCPtp-6wo-43@gated-at.bofh.it> <rCQIN-7bB-1@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
Ccing Mel. On Wed, May 25, 2016 at 03:36:48PM -0700, Shi, Yang wrote: > On 5/25/2016 3:23 PM, Andrew Morton wrote: > >On Wed, 25 May 2016 14:00:07 -0700 Yang Shi <yang.shi@linaro.org> wrote: > > > >>register_page_bootmem_info_node() is invoked in mem_init(), so it will be > >>called before page_alloc_init_late() if CONFIG_DEFERRED_STRUCT_PAGE_INIT > >>is enabled. But, pfn_to_nid() depends on memmap which won't be fully setup > >>until page_alloc_init_late() is done, so replace pfn_to_nid() by > >>early_pfn_to_nid(). > > > >What are the runtime effects of this fix? > > I didn't experience any problem without the fix. During working on > the page_ext_init() fix (replace to early_pfn_to_nid()), I added > printk before each pfn_to_nid() calls to check which one might be > called before page_alloc_init_late(), then this one is caught. > > From the code perspective, it sounds not right since > register_page_bootmem_info_section() may miss some pfns when > CONFIG_DEFERRED_STRUCT_PAGE_INIT is enabled, just like the problem > happened in page_ext_init(). Hello, Mel. There was an issue in page_ext [1] due to your deferred struct page init feature. Before your change, we assumed that we can use pfn_to_nid() after memmap init is called. But, after your change, we can use pfn_to_nid() after page_alloc_init_late(). Yang found two call sites that uses pfn_to_nid() before page_alloc_init_late() and they could be fixed by using early_pfn_to_nid(). I guess that there are more problems due to this change so it's better to check it by patch author. One thing I have noticed is that dirty_limit could be set wrongly. It is intialized by using freepage count. Since it is intialized before page_alloc_init_late(), freepages are not initialized yet and it could be wrong. If my analysis is correct, please fix it. And, could you check again that there is no more problem? Thanks. [1] http://lkml.kernel.org/r/CAAmzW4OUmyPwQjvd7QUfc6W1Aic__TyAuH80MLRZNMxKy0-wPQ@mail.gmail.com
Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread
[PATCH] mm: use early_pfn_to_nid in register_page_bootmem_info_node Yang Shi <yang.shi@linaro.org> - 2016-05-25 23:30 +0200
Re: [PATCH] mm: use early_pfn_to_nid in register_page_bootmem_info_node Andrew Morton <akpm@linux-foundation.org> - 2016-05-26 00:30 +0200
Re: [PATCH] mm: use early_pfn_to_nid in register_page_bootmem_info_node "Shi, Yang" <yang.shi@linaro.org> - 2016-05-26 01:50 +0200
Re: [PATCH] mm: use early_pfn_to_nid in register_page_bootmem_info_node Joonsoo Kim <iamjoonsoo.kim@lge.com> - 2016-05-26 02:40 +0200
csiph-web