On Sun, 2010-04-18 at 11:56 +0900, Tejun Heo wrote: > On 04/17/2010 01:46 AM, Christoph Lameter wrote: > > Maybe provide a generic function to set the node for cpu X? > > Yeap, seconded. Also, why not use numa_node_id() in > common.c::cpu_init()? Tejun: do you mean: #ifdef CONFIG_NUMA if (cpu != 0 && percpu_read(numa_node) == 0 && ........................^ here? early_cpu_to_node(cpu) != NUMA_NO_NODE) set_numa_node(early_cpu_to_node(cpu)); #endif Looks like 'numa_node_id()' would work there. But, I wonder what the "cpu != 0 && percpu_read(numa_node) == 0" is trying to do? E.g., is "cpu != 0" testing "cpu != boot_cpu_id"? Is there an implicit assumption that the boot cpu is zero? Or just a non-zero cpuid is obviously initialized? And the "percpu_read(numa_node) == 0" is testing that this cpu's 'numa_node' MAY not be initialized? 0 is a valid node id for !0 cpu ids. But it's OK to reinitialize numa_node in that case. Just trying to grok the intent. Maybe someone will chime in. Anyway, if the intent is to test the percpu 'numa_node' for initialization, using numa_node_id() might obscure this even more. Lee -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>