[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