[U-Boot] [PATCH] libfdt: Add option to disable arch_fixup_fdt() calls

Simon Glass sjg at chromium.org
Fri Jun 10 18:44:39 CEST 2016


Hi Michal,

On 9 June 2016 at 08:23, Michal Simek <michal.simek at xilinx.com> wrote:
> Disable arch_fixup_fdt() calls for cases where U-Boot shouldn't update
> memory setup in DTB file.
> One example of usage of this option is to boot OS with different memory
> setup than U-Boot use.
>
> Signed-off-by: Michal Simek <michal.simek at xilinx.com>
> ---
>
>  Kconfig                  | 8 ++++++++
>  arch/arm/lib/bootm-fdt.c | 2 ++
>  common/image-fdt.c       | 3 +++
>  3 files changed, 13 insertions(+)
>
> diff --git a/Kconfig b/Kconfig
> index 4b4621666560..3efba624ecff 100644
> --- a/Kconfig
> +++ b/Kconfig
> @@ -291,6 +291,14 @@ config SYS_CLK_FREQ
>         help
>           TODO: Move CONFIG_SYS_CLK_FREQ for all the architecture
>
> +config DISABLE_ARCH_FIXUP_FDT
> +       bool "Disable arch_fixup_fdt() call"
> +       depends on ARM
> +       help
> +         Disable FDT memory map syncup before OS boot. This feature can be
> +         used for booting OS with different memory setup where the part of
> +         the memory location should be used for different purpose.
> +
>  endmenu                # Boot images
>

I think this would be better as a positive Kconfig - ARCH_FIXUP_FDT.

Also this is pretty ugly - with a weak function that gets #ifdefed
out. How about changing it so that the function is only called if the
Kconfig is set, and then it does not have to be weak?

>  source "common/Kconfig"
> diff --git a/arch/arm/lib/bootm-fdt.c b/arch/arm/lib/bootm-fdt.c
> index 7677358742e1..a873b778ade9 100644
> --- a/arch/arm/lib/bootm-fdt.c
> +++ b/arch/arm/lib/bootm-fdt.c
> @@ -24,6 +24,7 @@
>
>  DECLARE_GLOBAL_DATA_PTR;
>
> +#ifndef CONFIG_DISABLE_ARCH_FIXUP_FDT
>  int arch_fixup_fdt(void *blob)
>  {
>         bd_t *bd = gd->bd;
> @@ -50,3 +51,4 @@ int arch_fixup_fdt(void *blob)
>  #endif
>         return ret;
>  }
> +#endif
> diff --git a/common/image-fdt.c b/common/image-fdt.c
> index 6cac7dbb7f8b..9e05becd464a 100644
> --- a/common/image-fdt.c
> +++ b/common/image-fdt.c
> @@ -460,6 +460,9 @@ __weak int ft_verify_fdt(void *fdt)
>
>  __weak int arch_fixup_fdt(void *blob)
>  {
> +#ifdef CONFIG_DISABLE_ARCH_FIXUP_FDT
> +       printf("## Disable arch_fixup_fdt()\n");
> +#endif
>         return 0;
>  }
>
> --
> 1.9.1
>

Regards,
Simon


More information about the U-Boot mailing list