diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/powerpc/mm/numa.c | 35 |
1 files changed, 11 insertions, 24 deletions
diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c index ba7a3055a9fc..30b5d6a1d838 100644 --- a/arch/powerpc/mm/numa.c +++ b/arch/powerpc/mm/numa.c | |||
@@ -254,29 +254,17 @@ static int __init find_min_common_depth(void) | |||
254 | return depth; | 254 | return depth; |
255 | } | 255 | } |
256 | 256 | ||
257 | static int __init get_mem_addr_cells(void) | 257 | static void __init get_n_mem_cells(int *n_addr_cells, int *n_size_cells) |
258 | { | 258 | { |
259 | struct device_node *memory = NULL; | 259 | struct device_node *memory = NULL; |
260 | int rc; | ||
261 | 260 | ||
262 | memory = of_find_node_by_type(memory, "memory"); | 261 | memory = of_find_node_by_type(memory, "memory"); |
263 | if (!memory) | 262 | if (memory) { |
264 | return 0; /* it won't matter */ | 263 | *n_addr_cells = prom_n_addr_cells(memory); |
265 | 264 | *n_size_cells = prom_n_size_cells(memory); | |
266 | rc = prom_n_addr_cells(memory); | 265 | of_node_put(memory); |
267 | return rc; | 266 | } |
268 | } | 267 | /* if (!memory) we are in trouble, let other code error out */ |
269 | |||
270 | static int __init get_mem_size_cells(void) | ||
271 | { | ||
272 | struct device_node *memory = NULL; | ||
273 | int rc; | ||
274 | |||
275 | memory = of_find_node_by_type(memory, "memory"); | ||
276 | if (!memory) | ||
277 | return 0; /* it won't matter */ | ||
278 | rc = prom_n_size_cells(memory); | ||
279 | return rc; | ||
280 | } | 268 | } |
281 | 269 | ||
282 | static unsigned long __init read_n_cells(int n, unsigned int **buf) | 270 | static unsigned long __init read_n_cells(int n, unsigned int **buf) |
@@ -386,7 +374,7 @@ static int __init parse_numa_properties(void) | |||
386 | { | 374 | { |
387 | struct device_node *cpu = NULL; | 375 | struct device_node *cpu = NULL; |
388 | struct device_node *memory = NULL; | 376 | struct device_node *memory = NULL; |
389 | int addr_cells, size_cells; | 377 | int n_addr_cells, n_size_cells; |
390 | int max_domain; | 378 | int max_domain; |
391 | unsigned long i; | 379 | unsigned long i; |
392 | 380 | ||
@@ -425,8 +413,7 @@ static int __init parse_numa_properties(void) | |||
425 | } | 413 | } |
426 | } | 414 | } |
427 | 415 | ||
428 | addr_cells = get_mem_addr_cells(); | 416 | get_n_mem_cells(&n_addr_cells, &n_size_cells); |
429 | size_cells = get_mem_size_cells(); | ||
430 | memory = NULL; | 417 | memory = NULL; |
431 | while ((memory = of_find_node_by_type(memory, "memory")) != NULL) { | 418 | while ((memory = of_find_node_by_type(memory, "memory")) != NULL) { |
432 | unsigned long start; | 419 | unsigned long start; |
@@ -443,8 +430,8 @@ static int __init parse_numa_properties(void) | |||
443 | ranges = memory->n_addrs; | 430 | ranges = memory->n_addrs; |
444 | new_range: | 431 | new_range: |
445 | /* these are order-sensitive, and modify the buffer pointer */ | 432 | /* these are order-sensitive, and modify the buffer pointer */ |
446 | start = read_n_cells(addr_cells, &memcell_buf); | 433 | start = read_n_cells(n_addr_cells, &memcell_buf); |
447 | size = read_n_cells(size_cells, &memcell_buf); | 434 | size = read_n_cells(n_size_cells, &memcell_buf); |
448 | 435 | ||
449 | numa_domain = of_node_numa_domain(memory); | 436 | numa_domain = of_node_numa_domain(memory); |
450 | 437 | ||