On 12.12.16 17:53:02, Yisheng Xie wrote: > It seems that memblock_is_memory() is also too strict for early_pfn_valid, > so what about this patch, which use common pfn_valid as early_pfn_valid > when CONFIG_HAVE_ARCH_PFN_VALID=y: > ------------ > diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h > index 0f088f3..9d596f3 100644 > --- a/include/linux/mmzone.h > +++ b/include/linux/mmzone.h > @@ -1200,7 +1200,17 @@ static inline int pfn_present(unsigned long pfn) > #define pfn_to_nid(pfn) (0) > #endif > > +#ifdef CONFIG_HAVE_ARCH_PFN_VALID > +static inline int early_pfn_valid(unsigned long pfn) > +{ > + if (pfn_to_section_nr(pfn) >= NR_MEM_SECTIONS) > + return 0; > + return valid_section(__nr_to_section(pfn_to_section_nr(pfn))); > +} I sent a V2 patch that uses pfn_present(). This only initilizes sections with memory. -Robert > +#define early_pfn_valid early_pfn_valid > +#else > #define early_pfn_valid(pfn) pfn_valid(pfn) > +#endif > void sparse_init(void); > #else > #define sparse_init() do {} while (0) > > > -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>