Re: [PATCH/RFC] ARM: dts: kzm9g: Extend DTS with hints on how to build

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

 



Hi Geert,

On Sun, Mar 21, 2021 at 11:03 PM Geert Uytterhoeven
<geert@xxxxxxxxxxxxxx> wrote:
>
> Hi Magnus,
>
> On Sun, Mar 21, 2021 at 1:06 PM Magnus Damm <damm@xxxxxxxxxxxxx> wrote:
> > From: Magnus Damm <damm+renesas@xxxxxxxxxxxxx>
> > Include hints in the DTS for KZM9G on how to build a kernel that may be booted
> > using the old on-board boot loader. Special handling includes:
> >  - The DTB needs to be appended to the zImage before generating the uImage
> >  - LOADADDR needs to be set to 0x48008000 to be able to generate an uImage
> >  - CONFIG_ATAGS=n is needed for the board to boot
> >
> > Perhaps there is a better place where this kind of information should be
> > placed? Many years ago the LOADADDR information used to be part of the kernel
> > makefiles (and make uImage just worked out of the box) but when going DTS
> > and zImage this seems to have been dropped. So these days special care is
> > needed to build a uImage file which is required by the boot loader.
> >
> > Not-Yet-Signed-off-by: Magnus Damm <damm+renesas@xxxxxxxxxxxxx>
>
> Thanks for your patch!

Thanks for your review!

> > --- 0001/arch/arm/boot/dts/sh73a0-kzm9g.dts
> > +++ work/arch/arm/boot/dts/sh73a0-kzm9g.dts     2021-03-21 18:10:53.515741849 +0900
> > @@ -2,9 +2,24 @@
> >  /*
> >   * Device Tree Source for the KZM-A9-GT board
> >   *
> > - * Copyright (C) 2012 Horms Solutions Ltd.
> > + * The KZM9G board comes with on-board out-of-tree U-Boot from 2012 with:
> > + *  uImage support but without zImage support
>
> Funny, mine (which I never upgraded) has:
>
>     U-Boot 2013.01.-rc1 (Nov 15 2012 - 11:13:00)
>
> and does boot zImage, with appended DTB.

My board has serial number k0000019 and gives the following printout at boot:

U-Boot 2012.04.01-00384-g4398d55-dirty (June 05 2012 - 19:45:48)

This is also the original bootloader, but it might just happen to be
an early development snapshot.

In the U-Boot git repo I notice the files and directory
"configs/kzm9g/defconfig" and "board/kmc/kzm9g". Maybe those can be
used to improve the situation.

Perhaps this is a good opportunity to hook up J-Link/ST-Link/Olimex to
OpenOCD and update the boot loader?

> > + *  one way or the other busted ATAGs
> > + *
> > + * Generate an uImage at the correct load address with apppended DTB like this:
>
> appended

Indeed, thanks.

> > + *  make ARCH=arm CROSS_COMPILE=_ uImage LOADADDR=0x48008000
> > + *  rm arch/arm/boot/zImage
> > + *  make ARCH=arm CROSS_COMPILE=_ dtbs zImage
> > + *  cat arch/arm/boot/dts/sh73a0-kzm9g.dtb >> arch/arm/boot/zImage
> > + *  $(cut -f 3- -d ' ' < arch/arm/boot/.uImage.cmd)
> > + *
> > + * For a working recent kernel (v5.10+) the following configuration is needed:
> > + *  CONFIG_ARM_APPENDED_DTB=y
> > + *  CONFIG_ATAGS=n
> >   *
> > - * Based on sh73a0-kzm9g.dts
> > + * The shmobile_defconfig works well after setting CONFIG_ATAGS=n
>
> Why CONFIG_ATAGS=n? I have CONFIG_ATAGS=y in my .config.

I tried various boot-related options to see if it would unbreak the
situation. And deselecting ATAGS happened to fix the issue.

By the way, on this board it seems the bootloader environment comes
without bootargs set.

> IIRC, shmobile_defconfig works, if I change CONFIG_CMDLINE to match
> what I need, as U-Boot cannot update chosen/cmdline in an appended DTB.

So I've locally modified .config from shmobile_defconfig default:
CONFIG_CMDLINE=""
to:
CONFIG_CMDLINE="ignore_loglevel"
CONFIG_CMDLINE_FROM_BOOTLOADER=y

This also seems to fix the issue - thank you!

Related to ATAGS or not, on the console I get the following on v5.10:
[   0.000000] OF: fdt: Ignoring memory range 0x40000000 - 0x4800000

This is similar to the output on from the old v3.18 kernel I happen to
have around:
Ignoring memory range 0x41000000 - 0x48000000

Does the kzm9g boot all the way to user space for you? Perhaps my
board is busted but I seem to get some oopses and freeze.

For anyone with an old bootloader, what do you think about documenting
the LOADADDR and how to build an uImage?

Is there some way we can make the kernel boot out-of-the-box with
shmobile_defconfig?

Cheers,

/ magnus



[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux