[PATCH] Minor numa memory code cleanup
Nathan Lynch
ntl at pobox.com
Tue Nov 29 12:25:31 EST 2005
Mike Kravetz wrote:
> -static int __init get_mem_size_cells(void)
> -{
> - struct device_node *memory = NULL;
> - int rc;
> -
> - memory = of_find_node_by_type(memory, "memory");
> - if (!memory)
> - return 0; /* it won't matter */
> - rc = prom_n_size_cells(memory);
> - return rc;
> + if (memory) {
> + *n_addr_cells = prom_n_addr_cells(memory);
> + *n_size_cells = prom_n_size_cells(memory);
> + of_node_put(memory);
> + }
> + /* if (!memory) we are in trouble, let other code error out */
> }
Except the caller below doesn't sanity-check the values returned and
we'll have some mysterious crash or something later in boot.
Mind calling panic or some such in the (granted, unlikely) case of
memory == NULL here?
Or are sane default values for these defined by the OF or IBM
architecture docs?
> static unsigned long __init read_n_cells(int n, unsigned int **buf)
> @@ -386,7 +374,7 @@ static int __init parse_numa_properties(
> {
> struct device_node *cpu = NULL;
> struct device_node *memory = NULL;
> - int addr_cells, size_cells;
> + int n_addr_cells, n_size_cells;
> int max_domain;
> unsigned long i;
>
> @@ -425,8 +413,7 @@ static int __init parse_numa_properties(
> }
> }
>
> - addr_cells = get_mem_addr_cells();
> - size_cells = get_mem_size_cells();
> + get_n_mem_cells(&n_addr_cells, &n_size_cells);
> memory = NULL;
> while ((memory = of_find_node_by_type(memory, "memory")) != NULL) {
> unsigned long start;
> @@ -443,8 +430,8 @@ static int __init parse_numa_properties(
> ranges = memory->n_addrs;
> new_range:
> /* these are order-sensitive, and modify the buffer pointer */
> - start = read_n_cells(addr_cells, &memcell_buf);
> - size = read_n_cells(size_cells, &memcell_buf);
> + start = read_n_cells(n_addr_cells, &memcell_buf);
> + size = read_n_cells(n_size_cells, &memcell_buf);
>
> numa_domain = of_node_numa_domain(memory);
Thanks,
Nathan
More information about the Linuxppc64-dev
mailing list