Hi Bin, On Sun, 2018-11-04 at 22:39 +0800, Bin Meng wrote: > Hi Lukas, > > On Tue, Oct 30, 2018 at 8:57 PM Lukas Auer > <lukas.a...@aisec.fraunhofer.de> wrote: > > > > QEMU embeds the location of the kernel image in the device tree. > > Store > > this address in the environment as variable kernel_start and use it > > in > > CONFIG_BOOTCOMMAND to boot the kernel. Use the device tree passed > > by the > > prior boot stage to boot Linux. > > > > Signed-off-by: Lukas Auer <lukas.a...@aisec.fraunhofer.de> > > --- > > > > Changes in v2: > > - Rebase onto u-boot-dm/next > > - Boot Linux with the device tree provided by the prior boot stage > > > > board/emulation/qemu-riscv/Kconfig | 1 + > > board/emulation/qemu-riscv/qemu-riscv.c | 29 > > +++++++++++++++++++++++++ > > configs/qemu-riscv32_defconfig | 1 + > > configs/qemu-riscv64_defconfig | 1 + > > include/configs/qemu-riscv.h | 10 ++++++++- > > 5 files changed, 41 insertions(+), 1 deletion(-) > > > > diff --git a/board/emulation/qemu-riscv/Kconfig > > b/board/emulation/qemu-riscv/Kconfig > > index 37a80db6a9..be5839b7db 100644 > > --- a/board/emulation/qemu-riscv/Kconfig > > +++ b/board/emulation/qemu-riscv/Kconfig > > @@ -29,5 +29,6 @@ config BOARD_SPECIFIC_OPTIONS # dummy > > imply CMD_EXT2 > > imply CMD_EXT4 > > imply CMD_FAT > > + imply BOARD_LATE_INIT > > > > endif > > diff --git a/board/emulation/qemu-riscv/qemu-riscv.c > > b/board/emulation/qemu-riscv/qemu-riscv.c > > index 2ce093e19a..ee20983095 100644 > > --- a/board/emulation/qemu-riscv/qemu-riscv.c > > +++ b/board/emulation/qemu-riscv/qemu-riscv.c > > @@ -19,3 +19,32 @@ int board_init(void) > > > > return 0; > > } > > + > > +int board_late_init(void) > > +{ > > + ulong kernel_start; > > + ofnode chosen_node; > > + int ret; > > + > > + chosen_node = ofnode_path("/chosen"); > > + if (!ofnode_valid(chosen_node)) { > > + printf("No chosen node found\n"); > > + return 0; > > + } > > + > > +#ifdef CONFIG_ARCH_RV64I > > + ret = ofnode_read_u64(chosen_node, "riscv,kernel-start", > > + (u64 *)&kernel_start); > > +#else > > + ret = ofnode_read_u32(chosen_node, "riscv,kernel-start", > > + (u32 *)&kernel_start); > > +#endif > > + if (ret) { > > + printf("Can't find kernel start address in device > > tree\n"); > > I think we need use 'debug' instead of 'printf' here, for situation > that kernel is not passed to QEMU. >
Yes, you are right. What is the current best-practice here? Should I use one of the pr_* functions or just debug? Looking at the function, I am also not sure how useful the printf above is (no chosen node found). I could replace it with the same text as in the last printf. What do you think? Thanks, Lukas > > + return 0; > > + } > > + > > + env_set_hex("kernel_start", kernel_start); > > + > > + return 0; > > +} > > [snip] > > Regards, > Bin _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot