On 30.10.18 14:44, Auer, Lukas wrote: > On Tue, 2018-10-30 at 14:19 +0100, Alexander Graf wrote: >> >> On 30.10.18 13:55, Lukas Auer wrote: >>> The device tree passed by the prior boot stage can be used to boot >>> Linux. Store it as environment variable "prior_stage_dtb", so that >>> it >>> can be used as part of the boot command. >>> >>> Signed-off-by: Lukas Auer <lukas.a...@aisec.fraunhofer.de> >>> --- >>> >>> Changes in v2: >>> - New patch >>> >>> arch/Kconfig | 1 + >>> arch/riscv/cpu/cpu.c | 7 +++++++ >>> arch/riscv/include/asm/u-boot-riscv.h | 1 + >>> 3 files changed, 9 insertions(+) >>> >>> diff --git a/arch/Kconfig b/arch/Kconfig >>> index 9fdd2f7e66..883e4a9308 100644 >>> --- a/arch/Kconfig >>> +++ b/arch/Kconfig >>> @@ -74,6 +74,7 @@ config RISCV >>> imply MTD >>> imply TIMER >>> imply CMD_DM >>> + imply ARCH_MISC_INIT >>> >>> config SANDBOX >>> bool "Sandbox" >>> diff --git a/arch/riscv/cpu/cpu.c b/arch/riscv/cpu/cpu.c >>> index d9f820c44c..e06a8c6bab 100644 >>> --- a/arch/riscv/cpu/cpu.c >>> +++ b/arch/riscv/cpu/cpu.c >>> @@ -53,3 +53,10 @@ int print_cpuinfo(void) >>> >>> return 0; >>> } >>> + >>> +int arch_misc_init(void) >>> +{ >>> + env_set_hex("prior_stage_dtb", prior_stage_fdt_address); >> >> Please reuse one of the many other variable names we have for this >> already, such as "fdtaddr". >> > > I will change the variable name. > >> One thing I would always recommend is that if you have a prior stage >> DT >> passed on to U-Boot is that U-Boot makes use of that >> (CONFIG_OF_BOARD). >> That again means that the DT is already available in $fdtcontroladdr >> and >> there is very little use for yet another env variable. >> >> >> Alex >> > > We are actually using the device tree passed to U-Boot (using > CONFIG_OF_PRIOR_STAGE). The reason I'm adding the device tree address > to the environment is so that it can be used to boot Linux. RISC-V > Linux does not include any device trees, they are instead stored > directly on the SoC (though this might change). This is therefore > important to have and this is the best way I could think of, of > implementing it.
Oh, I'm in 100% agreement that this is the right choice. I'm just surprised we have 2 Kconfig options to basically do the same thing. The RPi uses CONFIG_OF_BOARD while newer BCM chips seem to use CONFIG_PRIOR_STAGE. It's slightly counterintuitive :). What I was saying is that U-Boot should be a consumer of said "platform device tree" and thus exposes it as $fdtcontroladdr into the environment. So instead of # bootefi $kernel_addr_r $fdtaddr you could as well just use # bootefi $kernel_addr_r $fdtcontroladdr which the distro scripts automatically do for you, so you already have what you asked for :). Alex _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot