public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Tom Rini <trini@konsulko.com>
To: Joost van Zwieten <joost@diskos.nl>
Cc: u-boot@lists.denx.de
Subject: Re: kernel doesn't start on Odroid U2 unless setting initrd_high
Date: Tue, 10 Jan 2023 18:08:24 -0500	[thread overview]
Message-ID: <20230110230824.GR3787616@bill-the-cat> (raw)
In-Reply-To: <YALAOR.537R5TSSH3P13@diskos.nl>

[-- Attachment #1: Type: text/plain, Size: 9612 bytes --]

On Wed, Jan 11, 2023 at 12:01:46AM +0100, Joost van Zwieten wrote:
> 
> 
> On Tue, Jan 10, 2023 at 13:41, Tom Rini <trini@konsulko.com> wrote:
> > On Tue, Jan 10, 2023 at 09:13:32AM +0100, Joost van Zwieten wrote:
> > 
> > >  Dear maintainers,
> > > 
> > >  As of commit 4963f63fe61f15329d77472a762b1d8bf754d24b U-Boot fails
> > > to start
> > >  a kernel (with `bootz`) on my Odroid U2 unless I force
> > > `initrd_high`, e.g.
> > >  to `0x50000000`. With commit 4963f63f and `initrd_high` *unset* I
> > > get the
> > >  following output:
> > > 
> > >     U-Boot 2020.10-rc2-00314-g4963f63fe6 (Jan 09 2023 - 23:59:31
> > > +0100)
> > > 
> > >     CPU: Exynos4412 @ 1 GHz
> > >     Model: Odroid based on Exynos4412
> > >     Type: u3
> > >     DRAM: 2 GiB
> > >     LDO20@VDDQ_EMMC_1.8V: set 1800000 uV; enabling
> > >     LDO22@VDDQ_EMMC_2.8V: set 2800000 uV; enabling
> > >     LDO21@TFLASH_2.8V: set 2800000 uV; enabling
> > >     MMC: SAMSUNG SDHCI: 2, EXYNOS DWMMC: 0
> > >     Loading Environment from MMC... *** Warning - bad CRC, using
> > > default
> > >  environment
> > > 
> > >     In: serial
> > >     Out: serial
> > >     Err: serial
> > >     Boot device: MMC(2)
> > >     Net: No ethernet found.
> > >     Hit any key to stop autoboot: 0
> > >     Odroid # env set fk_kvers 5.10.0-20-armmp
> > >     Odroid # load mmc ${mmcbootdev}:${mmcbootpart} ${fdt_addr_r}
> > >  /boot/dtbs/${fk_kvers}/exynos4412-odroidu3.dtb
> > >     53440 bytes read in 50 ms (1 MiB/s)
> > >     Odroid # load mmc ${mmcbootdev}:${mmcbootpart} ${kernel_addr_r}
> > >  /boot/vmlinuz-${fk_kvers}
> > >     4973056 bytes read in 182 ms (26.1 MiB/s)
> > >     Odroid # load mmc ${mmcbootdev}:${mmcbootpart} ${ramdisk_addr_r}
> > >  /boot/initrd.img-${fk_kvers}
> > >     22231585 bytes read in 777 ms (27.3 MiB/s)
> > >     Odroid # env set bootargs console=ttySAC1,115200n8
> > >     Odroid # bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize}
> > >  ${fdt_addr_r}
> > >     Kernel image @ 0x41000000 [ 0x000000 - 0x4be200 ]
> > >     ## Flattened Device Tree blob at 40800000
> > >        Booting using the fdt blob at 0x40800000
> > >        Loading Ramdisk to b9947000, end bae7aa21 ... OK
> > >        Loading Device Tree to b9936000, end b99460bf ... OK
> > > 
> > >     Starting kernel ...
> > > 
> > >  And that's all I ever see. Normally the initrd loads a module that
> > > causes an
> > >  LED on the Odroid to blink, and this is not happening either, so
> > > I'm pretty
> > >  confident the kernel doesn't start or at least crashes before
> > > producing
> > >  output. If I set `initrd_high` to `0x50000000` (or something in the
> > >  neighborhood) the kernel starts just fine:
> > > 
> > >     U-Boot 2020.10-rc2-00314-g4963f63fe6 (Jan 09 2023 - 23:59:31
> > > +0100)
> > > 
> > >     CPU: Exynos4412 @ 1 GHz
> > >     Model: Odroid based on Exynos4412
> > >     Type: u3
> > >     DRAM: 2 GiB
> > >     LDO20@VDDQ_EMMC_1.8V: set 1800000 uV; enabling
> > >     LDO22@VDDQ_EMMC_2.8V: set 2800000 uV; enabling
> > >     LDO21@TFLASH_2.8V: set 2800000 uV; enabling
> > >     MMC: SAMSUNG SDHCI: 2, EXYNOS DWMMC: 0
> > >     Loading Environment from MMC... *** Warning - bad CRC, using
> > > default
> > >  environment
> > > 
> > >     In: serial
> > >     Out: serial
> > >     Err: serial
> > >     Boot device: MMC(2)
> > >     Net: No ethernet found.
> > >     Hit any key to stop autoboot: 0
> > >     Odroid # env set fk_kvers 5.10.0-20-armmp
> > >     Odroid # load mmc ${mmcbootdev}:${mmcbootpart} ${fdt_addr_r}
> > >  /boot/dtbs/${fk_kvers}/exynos4412-odroidu3.dtb
> > >     53440 bytes read in 49 ms (1 MiB/s)
> > >     Odroid # load mmc ${mmcbootdev}:${mmcbootpart} ${kernel_addr_r}
> > >  /boot/vmlinuz-${fk_kvers}
> > >     4973056 bytes read in 181 ms (26.2 MiB/s)
> > >     Odroid # load mmc ${mmcbootdev}:${mmcbootpart} ${ramdisk_addr_r}
> > >  /boot/initrd.img-${fk_kvers}
> > >     22231585 bytes read in 777 ms (27.3 MiB/s)
> > >     Odroid # env set bootargs console=ttySAC1,115200n8
> > >     Odroid # env set initrd_high 0x50000000
> > >     Odroid # bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize}
> > >  ${fdt_addr_r}
> > >     Kernel image @ 0x41000000 [ 0x000000 - 0x4be200 ]
> > >     ## Flattened Device Tree blob at 40800000
> > >        Booting using the fdt blob at 0x40800000
> > >        Loading Ramdisk to 4eacc000, end 4ffffa21 ... OK
> > >        Loading Device Tree to bae6a000, end bae7a0bf ... OK
> > > 
> > >     Starting kernel ...
> > > 
> > >     [ 0.000000] Booting Linux on physical CPU 0xa00
> > >     <truncated>
> > > 
> > >  The difference between those two runs is the location where U-Boot
> > > loads the
> > >  initrd. The parent commit of 4963f63f boots fine without setting
> > >  `initrd_high`:
> > > 
> > >     U-Boot 2020.10-rc2-00313-gdfaf6a5797 (Jan 10 2023 - 00:13:19
> > > +0100)
> > > 
> > >     CPU: Exynos4412 @ 1 GHz
> > >     Model: Odroid based on Exynos4412
> > >     Type: u3
> > >     DRAM: 2 GiB
> > >     LDO20@VDDQ_EMMC_1.8V: set 1800000 uV; enabling
> > >     LDO22@VDDQ_EMMC_2.8V: set 2800000 uV; enabling
> > >     LDO21@TFLASH_2.8V: set 2800000 uV; enabling
> > >     MMC: SAMSUNG SDHCI: 2, EXYNOS DWMMC: 0
> > >     Loading Environment from MMC... *** Warning - bad CRC, using
> > > default
> > >  environment
> > > 
> > >     In: serial
> > >     Out: serial
> > >     Err: serial
> > >     Boot device: MMC(2)
> > >     Net: No ethernet found.
> > >     Hit any key to stop autoboot: 0
> > >     Odroid # env set fk_kvers 5.10.0-20-armmp
> > >     Odroid # load mmc ${mmcbootdev}:${mmcbootpart} ${fdt_addr_r}
> > >  /boot/dtbs/${fk_kvers}/exynos4412-odroidu3.dtb
> > >     53440 bytes read in 49 ms (1 MiB/s)
> > >     Odroid # load mmc ${mmcbootdev}:${mmcbootpart} ${kernel_addr_r}
> > >  /boot/vmlinuz-${fk_kvers}
> > >     4973056 bytes read in 181 ms (26.2 MiB/s)
> > >     Odroid # load mmc ${mmcbootdev}:${mmcbootpart} ${ramdisk_addr_r}
> > >  /boot/initrd.img-${fk_kvers}
> > >     22231585 bytes read in 776 ms (27.3 MiB/s)
> > >     Odroid # env set bootargs console=ttySAC1,115200n8
> > >     Odroid # bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize}
> > >  ${fdt_addr_r}
> > >     Kernel image @ 0x41000000 [ 0x000000 - 0x4be200 ]
> > >     ## Flattened Device Tree blob at 40800000
> > >        Booting using the fdt blob at 0x40800000
> > >        Loading Ramdisk to 4eacc000, end 4ffffa21 ... OK
> > >        Loading Device Tree to 4eabb000, end 4eacb0bf ... OK
> > > 
> > >     Starting kernel ...
> > > 
> > >     [ 0.000000] Booting Linux on physical CPU 0xa00
> > >     <truncated>
> > > 
> > >  I've tested two different kernels from Debian (buster and bullseye)
> > > and both
> > >  have the same problem. I'm building U-Boot using the default config
> > > for
> > >  board `odroid` and boot the Odroid from an SD card with firmware
> > > (`bl1`,
> > >  `bl2` and `tzsw`) from Hardkernel's clone of the u-boot repository
> > > [1].
> > >  There are no peripherals connected apart from the SD card and the
> > > serial
> > >  console. Please let me know if you need more information.
> > 
> > Interesting. So what does "bdi" show, both in the older good and
> > then current tree? Specifically the information about where DRAM is, and
> > how large it is? Thanks.
> > 
> > --
> > Tom
> 
> Both 4963f63f (not working) and its parent (working) produce the same
> output:
> 
>    boot_params = 0x40000100
>    DRAM bank   = 0x00000000
>    -> start    = 0x40000000
>    -> size     = 0x10000000
>    DRAM bank   = 0x00000001
>    -> start    = 0x50000000
>    -> size     = 0x10000000
>    DRAM bank   = 0x00000002
>    -> start    = 0x60000000
>    -> size     = 0x10000000
>    DRAM bank   = 0x00000003
>    -> start    = 0x70000000
>    -> size     = 0x10000000
>    DRAM bank   = 0x00000004
>    -> start    = 0x80000000
>    -> size     = 0x10000000
>    DRAM bank   = 0x00000005
>    -> start    = 0x90000000
>    -> size     = 0x10000000
>    DRAM bank   = 0x00000006
>    -> start    = 0xa0000000
>    -> size     = 0x10000000
>    DRAM bank   = 0x00000007
>    -> start    = 0xb0000000
>    -> size     = 0x0ff00000
>    memstart    = 0x40000000
>    memsize     = 0x7ff00000
>    flashstart  = 0x00000000
>    flashsize   = 0x00000000
>    flashoffset = 0x00000000
>    baudrate    = 115200 bps
>    relocaddr   = 0xbfe83000
>    reloc off   = 0x7c083000
>    Build       = 32-bit
>    current eth = unknown
>    ethaddr     = (not set)
>    IP addr     = <NULL>
>    fdt_blob    = 0xbae7bf00
>    new_fdt     = 0xbae7bf00
>    fdt_size    = 0x00002fa0
>    lmb_dump_all:
>        memory.cnt             = 0x1
>        memory.size            = 0x0
>        memory.reg[0x0].base   = 0x40000000
>                       .size   = 0x7ff00000
> 
>        reserved.cnt           = 0x1
>        reserved.size          = 0x0
>        reserved.reg[0x0].base = 0xbae7acd0
>                         .size = 0x5085330
>    arch_number = 0x000010c1
>    TLB addr    = 0xbfef0000
>    irq_sp      = 0xbae7bef0
>    sp start    = 0xbae7bee0
>    Board Type  = 0
>    Early malloc usage: f0 / 400
> 
> I'm not sure if this is relevant, but with the failing commit I can get the
> kernel to start with `initrd_high` set to `0x70000000` or lower, but not
> higher.

OK, so 8 whole banks, of 256MB each. Does this platform have 2GB of
memory for real?

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]

  reply	other threads:[~2023-01-10 23:08 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-10  8:13 kernel doesn't start on Odroid U2 unless setting initrd_high Joost van Zwieten
2023-01-10 18:41 ` Tom Rini
2023-01-10 23:01   ` Joost van Zwieten
2023-01-10 23:08     ` Tom Rini [this message]
2023-01-10 23:10       ` Joost van Zwieten
2023-01-10 23:29         ` Tom Rini
2023-01-11 20:28           ` Joost van Zwieten
2023-01-11 20:38             ` Tom Rini
2023-01-11 21:08               ` Joost van Zwieten
2023-01-12  0:10                 ` Tom Rini
2023-01-12 22:32                   ` Joost van Zwieten
2023-01-13 15:01                     ` Tom Rini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230110230824.GR3787616@bill-the-cat \
    --to=trini@konsulko.com \
    --cc=joost@diskos.nl \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox