[PATCH v3 1/4] of/fdt: factor out assignment of initrd_start/initrd_end

Will Deacon will.deacon at arm.com
Mon Feb 22 08:49:58 PST 2016


On Fri, Feb 12, 2016 at 03:57:23PM +0100, Ard Biesheuvel wrote:
> Since architectures may not yet have their linear mapping up and running
> when the initrd address is discovered from the DT, factor out the
> assignment of initrd_start and initrd_end, so that an architecture can
> override it and use the translation it needs.
> 
> Cc: Rob Herring <robh at kernel.org>
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel at linaro.org>
> ---
>  drivers/of/fdt.c | 14 +++++++++++---
>  1 file changed, 11 insertions(+), 3 deletions(-)

Mark, Rob, any comments on this?

Will

> diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
> index 1f98156f8996..3e90bce70545 100644
> --- a/drivers/of/fdt.c
> +++ b/drivers/of/fdt.c
> @@ -760,6 +760,16 @@ const void * __init of_flat_dt_match_machine(const void *default_match,
>  }
>  
>  #ifdef CONFIG_BLK_DEV_INITRD
> +#ifndef __early_init_dt_declare_initrd
> +static void __early_init_dt_declare_initrd(unsigned long start,
> +					   unsigned long end)
> +{
> +	initrd_start = (unsigned long)__va(start);
> +	initrd_end = (unsigned long)__va(end);
> +	initrd_below_start_ok = 1;
> +}
> +#endif
> +
>  /**
>   * early_init_dt_check_for_initrd - Decode initrd location from flat tree
>   * @node: reference to node containing initrd location ('chosen')
> @@ -782,9 +792,7 @@ static void __init early_init_dt_check_for_initrd(unsigned long node)
>  		return;
>  	end = of_read_number(prop, len/4);
>  
> -	initrd_start = (unsigned long)__va(start);
> -	initrd_end = (unsigned long)__va(end);
> -	initrd_below_start_ok = 1;
> +	__early_init_dt_declare_initrd(start, end);
>  
>  	pr_debug("initrd_start=0x%llx  initrd_end=0x%llx\n",
>  		 (unsigned long long)start, (unsigned long long)end);
> -- 
> 2.5.0
> 



More information about the linux-arm-kernel mailing list