On Wed, 28 Nov 2018 16:36:34 +0800 Wei Yang <richard.weiyang@xxxxxxxxx> wrote: > When DEFERRED_STRUCT_PAGE_INIT is set, page struct will not be > initialized all at boot up. Some of them is postponed to defer stage. > While the global variable highest_memmap_pfn is still set to the highest > pfn at boot up, even some of them are not initialized. > > This patch adjust this behavior by update highest_memmap_pfn with the > exact pfn during each iteration. Since each node has a defer thread, > introduce a spin lock to protect it. > Does this solve any known problems? If so then I'm suspecting that those problems go deeper than this. Why use a spinlock rather than an atomic_long_t? Perhaps this check should instead be built into pfn_valid()?