Re: [PATCH] mm: move page_ext_init after all struct pages are initialized

From: Shi, Yang
Date: Thu May 19 2016 - 19:26:18 EST


On 5/19/2016 4:21 PM, Andrew Morton wrote:
On Thu, 19 May 2016 15:35:15 -0700 "Shi, Yang" <yang.shi@xxxxxxxxxx> wrote:

On 5/19/2016 3:30 PM, Andrew Morton wrote:
On Thu, 19 May 2016 14:29:05 -0700 Yang Shi <yang.shi@xxxxxxxxxx> wrote:

When DEFERRED_STRUCT_PAGE_INIT is enabled, just a subset of memmap at boot
are initialized, then the rest are initialized in parallel by starting one-off
"pgdatinitX" kernel thread for each node X.

If page_ext_init is called before it, some pages will not have valid extension,
so move page_ext_init() after it.


<stdreply>When fixing a bug, please fully describe the end-user impact
of that bug</>

The kernel ran into the below oops which is same with the oops reported
in
http://ozlabs.org/~akpm/mmots/broken-out/mm-page_is_guard-return-false-when-page_ext-arrays-are-not-allocated-yet.patch.

So this patch makes
mm-page_is_guard-return-false-when-page_ext-arrays-are-not-allocated-yet.patch
obsolete?

Actually, no. Checking the return value for lookup_page_ext() is still needed. But, the commit log need to be amended since that bootup oops won't happen anymore with this patch applied.

Thanks,
Yang