Hello peter, On 10/07/2013 08:00 AM, H. Peter Anvin wrote: > On 10/03/2013 07:00 PM, Zhang Yanfei wrote: >> From: Tang Chen <tangchen@xxxxxxxxxxxxxx> >> >> The Linux kernel cannot migrate pages used by the kernel. As a >> result, kernel pages cannot be hot-removed. So we cannot allocate >> hotpluggable memory for the kernel. >> >> In a memory hotplug system, any numa node the kernel resides in >> should be unhotpluggable. And for a modern server, each node could >> have at least 16GB memory. So memory around the kernel image is >> highly likely unhotpluggable. >> >> ACPI SRAT (System Resource Affinity Table) contains the memory >> hotplug info. But before SRAT is parsed, memblock has already >> started to allocate memory for the kernel. So we need to prevent >> memblock from doing this. >> >> So direct memory mapping page tables setup is the case. init_mem_mapping() >> is called before SRAT is parsed. To prevent page tables being allocated >> within hotpluggable memory, we will use bottom-up direction to allocate >> page tables from the end of kernel image to the higher memory. >> >> Acked-by: Tejun Heo <tj@xxxxxxxxxx> >> Signed-off-by: Tang Chen <tangchen@xxxxxxxxxxxxxx> >> Signed-off-by: Zhang Yanfei <zhangyanfei@xxxxxxxxxxxxxx> > > I'm still seriously concerned about this. This unconditionally > introduces new behavior which may very well break some classes of Well, this new behaviour is not unconditional, if user doesn't specify the movable_node option, the kernel will act as before, allocating memory top-down. > systems -- the whole point of creating the page tables top down is > because the kernel tends to be allocated in lower memory, which is also > the memory that some devices need for DMA. How much memory does these devices needed for DMA? And you mean memory under 16MB or 4GB? > > +#ifdef CONFIG_X86 > + kernel_end = __pa_symbol(_end); > +#else > + kernel_end = __pa(RELOC_HIDE((unsigned long)(_end), 0)); > +#endif > > We really should make __pa_symbol() available everywhere by putting > something like the above in a global define (under #ifndef __pa_symbol). Hmmmm...in include/asm-generic/page.h? > > Is RELOC_HIDE() even correct here? Sorry, could you explain a bit? -- Thanks. Zhang Yanfei -- 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>