aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/mm
diff options
context:
space:
mode:
authorMike Kravetz <kravetz@us.ibm.com>2005-11-30 16:47:23 -0500
committerPaul Mackerras <paulus@samba.org>2006-01-08 22:51:34 -0500
commit84c9fdd11e40f46028ff4669bfe5177ce9521266 (patch)
tree478142189490f6a959691de2026c6a16c836ea06 /arch/powerpc/mm
parent54c233102f3680c7f08b6f06d229cc48503b79c4 (diff)
[PATCH] powerpc: Minor numa memory code cleanup
Here is an updated version of the patch that panics if no memory is found as Nathan suggested. I'm still concerned that panic strings (not just the one added here) at this stage of booting do not show up on my system. But, that is an issue separate from this patch. Combine get_mem_*_cells() routines to avoid multiple memory node lookups. Added missing of_node_put() call. Changed variable names to help with some confusion as to meaning. Signed-off-by: Mike Kravetz <kravetz@us.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/mm')
-rw-r--r--arch/powerpc/mm/numa.c31
1 files changed, 9 insertions, 22 deletions
diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
index ba7a3055a9fc..e812d3d0d6ae 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
257static int __init get_mem_addr_cells(void) 257static 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 panic("numa.c: No memory nodes found!");
265 264
266 rc = prom_n_addr_cells(memory); 265 *n_addr_cells = prom_n_addr_cells(memory);
267 return rc; 266 *n_size_cells = prom_n_size_cells(memory);
268} 267 of_node_put(memory);
269
270static 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
282static unsigned long __init read_n_cells(int n, unsigned int **buf) 270static 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;
444new_range: 431new_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