Re: [PATCH 2/3] of/fdt: avoid re-parsing '#{address,size}-cells' in of_fdt_limit_memory

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 08/30/18 12:05, Rob Herring wrote:
> Now that we initialize dt_root_addr_cells and dt_root_size_cells earlier,
> use them and simplify of_fdt_limit_memory.
> 
> Cc: Frank Rowand <frowand.list@xxxxxxxxx>
> Signed-off-by: Rob Herring <robh@xxxxxxxxxx>
> ---
>  drivers/of/fdt.c | 23 +----------------------
>  1 file changed, 1 insertion(+), 22 deletions(-)
> 
> diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
> index 49abe18f1bde..fef4b2c8a171 100644
> --- a/drivers/of/fdt.c
> +++ b/drivers/of/fdt.c

As kbuild test robot noted, of_fdt_limit_memory() will access
__initdata dt_root_addr_cells and __initdata dt_root_size_cells.
A possible (untested) fix would be:

- void of_fdt_limit_memory(int limit)
- {

+ void __init of_fdt_limit_memory(int limit)
+ {


> @@ -44,28 +44,7 @@ void of_fdt_limit_memory(int limit)
>  	int memory;
>  	int len;
>  	const void *val;
> -	int nr_address_cells = OF_ROOT_NODE_ADDR_CELLS_DEFAULT;
> -	int nr_size_cells = OF_ROOT_NODE_SIZE_CELLS_DEFAULT;
> -	const __be32 *addr_prop;
> -	const __be32 *size_prop;
> -	int root_offset;
> -	int cell_size;
> -
> -	root_offset = fdt_path_offset(initial_boot_params, "/");
> -	if (root_offset < 0)
> -		return;
> -
> -	addr_prop = fdt_getprop(initial_boot_params, root_offset,
> -				"#address-cells", NULL);
> -	if (addr_prop)
> -		nr_address_cells = fdt32_to_cpu(*addr_prop);
> -
> -	size_prop = fdt_getprop(initial_boot_params, root_offset,
> -				"#size-cells", NULL);
> -	if (size_prop)
> -		nr_size_cells = fdt32_to_cpu(*size_prop);
> -
> -	cell_size = sizeof(uint32_t)*(nr_address_cells + nr_size_cells);
> +	int cell_size = sizeof(uint32_t)*(dt_root_addr_cells + dt_root_size_cells);
>  
>  	memory = fdt_path_offset(initial_boot_params, "/memory");
>  	if (memory > 0) {
> 




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux