[U-Boot] [PATCH v2 15/21] Refactor the bootm command to reduce code duplication
Simon Glass
sjg at chromium.org
Thu Jun 27 21:51:35 CEST 2013
Hi Stefan,
On Thu, Jun 27, 2013 at 6:40 AM, Stefan Roese <sr at denx.de> wrote:
> Hi Simon,
>
> On 06/11/2013 08:14 PM, Simon Glass wrote:
> > At present the bootm code is mostly duplicated for the plain 'bootm'
> > command and its sub-command variant. This makes the code harder to
> > maintain and means that changes must be made to several places.
> >
> > Introduce do_bootm_states() which performs selected portions of the bootm
> > work, so that both plain 'bootm' and 'bootm <sub_command>' can use the
> > same code.
> >
> > Additional duplication exists in bootz, so tidy that up as well. This
> > is not intended to change behaviour, apart from minor fixes where the
> > previously-duplicated code missed some chunks of code.
> >
> > Signed-off-by: Simon Glass <sjg at chromium.org>
>
> Simon, this patch breaks bootm (at least on powerpc), while booting an
> compressed uImage (with DT). It just hangs while decompressing the
> kernel image:
>
> ## Booting kernel from Legacy Image at 01000000 ...
> Image Name: Linux-3.5.7
> Image Type: PowerPC Linux Kernel Image (gzip compressed)
> Data Size: 2203312 Bytes = 2.1 MiB
> Load Address: 00000000
> Entry Point: 00000000
> ## Flattened Device Tree blob at 01800000
> Booting using the fdt blob at 0x1800000
> Uncompressing Kernel Image ...
>
> I bisected mainline and this patch is the one that breaks booting:
>
> [stefan at ubuntu-2012 u-boot ((983c72f...)|BISECTING)]$ git bisect good
> 35fc84fa1ff51e15ecd3e464dac87eb105ffed30 is the first bad commit
> commit 35fc84fa1ff51e15ecd3e464dac87eb105ffed30
> Author: Simon Glass <sjg at chromium.org>
> Date: Tue Jun 11 11:14:47 2013 -0700
>
> Refactor the bootm command to reduce code duplication
>
>
> I already looked what might be wrong but I couldn't find any problem
> upon a quick glance. You know this code may better. Perhaps you could
> take look at it and give it a try as well.
>
I thought I had a repro, but it turned out to be that I was using
kernel_noload so it was decompressing onto itself:
Uncompressing Kernel Image (no loading done) ... LZO: uncompress or
overwrite error -6 - must RESET board to recover
When I give a load address, it seems to work:
Bytes transferred = 3953092 (3c51c4 hex)
## Loading kernel from FIT Image at 40008000 ...
Using 'conf at 8' configuration
Trying 'kernel at 1' kernel subimage
Description: unavailable
Type: Kernel Image
Compression: gzip compressed
Data Start: 0x400080c8
Data Size: 3633253 Bytes = 3.5 MiB
Architecture: ARM
OS: Linux
Load Address: 0x20008000
Entry Point: 0x20008000
Verifying Hash Integrity ... OK
## Loading fdt from FIT Image at 40008000 ...
Using 'conf at 8' configuration
Trying 'fdt at 8' fdt subimage
Description: exynos5420-peach-pit-rev3.dtb
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x403b19e0
Data Size: 43298 Bytes = 42.3 KiB
Architecture: ARM
Hash algo: sha1
Hash value: 097dda51183eed6948ab942c57b14581c77ea22f
Verifying Hash Integrity ... sha1+ OK
Booting using the fdt blob at 0x403b19e0
Uncompressing Kernel Image ... OK
Loading Device Tree to 3ffed000, end 3ffff921 ... OK
So I think it might be something to do with the load address. I'm going to
fall back to code inspection...
Regards,
Simon
More information about the U-Boot
mailing list