Newer
Older
memcell_buf = of_get_property(memory, "reg", &len);
if (!memcell_buf || len <= 0)
continue;
/* ranges in cell */
ranges = (len >> 2) / (n_mem_addr_cells + n_mem_size_cells);
ha_new_range:
start = read_n_cells(n_mem_addr_cells, &memcell_buf);
size = read_n_cells(n_mem_size_cells, &memcell_buf);
nid = of_node_to_nid_single(memory);
Nathan Fontenot
committed
if (valid_hot_add_scn(&nid, start, size, scn_addr)) {
of_node_put(memory);
Nathan Fontenot
committed
return nid;
}
if (--ranges) /* process all ranges in cell */
goto ha_new_range;
}
BUG(); /* section address should be found above */
}
#endif /* CONFIG_MEMORY_HOTPLUG */