Add support for N_COHERENT_MEMORY by marking nodes compatible with ibm,coherent-device-memory as coherent nodes. The code sets N_COHERENT_MEMORY before the system has had a chance to set N_MEMORY. Signed-off-by: Balbir Singh <bsingharora@xxxxxxxxx> --- arch/powerpc/mm/numa.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c index 371792e..c977de8 100644 --- a/arch/powerpc/mm/numa.c +++ b/arch/powerpc/mm/numa.c @@ -652,6 +652,7 @@ static void __init parse_drconf_memory(struct device_node *memory) unsigned long lmb_size, base, size, sz; int nid; struct assoc_arrays aa = { .arrays = NULL }; + int coherent = 0; n = of_get_drconf_memory(memory, &dm); if (!n) @@ -696,6 +697,10 @@ static void __init parse_drconf_memory(struct device_node *memory) size = read_n_cells(n_mem_size_cells, &usm); } nid = of_drconf_to_nid_single(&drmem, &aa); + coherent = of_device_is_compatible(memory, + "ibm,coherent-device-memory"); + if (coherent) + node_set_state(nid, N_COHERENT_MEMORY); fake_numa_create_new_node( ((base + size) >> PAGE_SHIFT), &nid); @@ -713,6 +718,7 @@ static int __init parse_numa_properties(void) struct device_node *memory; int default_nid = 0; unsigned long i; + int coherent = 0; if (numa_enabled == 0) { printk(KERN_WARNING "NUMA disabled by user\n"); @@ -785,6 +791,10 @@ static int __init parse_numa_properties(void) fake_numa_create_new_node(((start + size) >> PAGE_SHIFT), &nid); node_set_online(nid); + coherent = of_device_is_compatible(memory, + "ibm,coherent-device-memory"); + if (coherent) + node_set_state(nid, N_COHERENT_MEMORY); size = numa_enforce_memory_limit(start, size); if (size) -- 2.9.3 -- 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>