On 1/10/19 9:12 PM, Pingfan Liu wrote: > Although kaslr-kernel can avoid to stain the movable node. [1] Can you explain what staining is, or perhaps try to use some more standard nomenclature? There are exactly 0 instances of the word "stain" in arch/x86/ or mm/. > But the > pgtable can still stain the movable node. That is a probability problem, > although low, but exist. This patch tries to make it certainty by > allocating pgtable on unmovable node, instead of following kernel end. Anyway, can you read my suggested summary in the earlier patch and see if it fits or if I missed anything? This description is really hard to read. ...> +#ifdef CONFIG_X86_32 > + > +static unsigned long min_pfn_mapped; > + > static unsigned long __init get_new_step_size(unsigned long step_size) > { > /* > @@ -653,6 +655,32 @@ static void __init memory_map_bottom_up(unsigned long map_start, > } > } > > +static unsigned long __init init_range_memory_mapping32( > + unsigned long r_start, unsigned long r_end) > +{ Why is this returning a value which is not used? Did you compile this? Didn't you get a warning that you're not returning a value from a function returning non-void? Also, I'd much rather see something like this written: static __init unsigned long init_range_memory_mapping32(unsigned long r_start, unsigned long r_end) than what you have above. But, if you get rid of the 'unsigned long', it will look much more sane in the first place.