[U-Boot] bootm does not work if netconsole is enabled
Joe Hershberger
joe.hershberger at gmail.com
Wed Apr 10 03:51:23 CEST 2013
Hi Michael,
I just tested this on my Zynq target and it worked. However, you make
a good point that it is possible for there to be more traces after the
eth_halt call. I can't imagine the stack would like that in all
situations (since eth_init() will not be called again by netconsole).
I think the solution to this is probably to disable netconsole somehow
before the eth_halt command, so subsequent prints do not try to use
Ethernet again. However, most of the things you might switch to are
conditional, such as a nulldev or silent. Any thoughts on how you
would like to see it solved?
Cheers,
-Joe
On Tue, Apr 9, 2013 at 5:21 PM, Michael Walle <michael at walle.cc> wrote:
>
> Hi Joe, Hi Tom,
>
> If i have the netconsole enabled i cannot boot linux using the bootm command.
> This bug exists at least in 2013.01.01 and 2013.04-rc2 :/
>
>
> Here is the output of the serial console of a successful startup:
>
> ## Booting kernel from Legacy Image at 00100000 ...
> Image Name: Linux-3.8.0-rc1-00004-g270c0a0-d
> Image Type: ARM Linux Kernel Image (uncompressed)
> Data Size: 2799632 Bytes = 2.7 MiB
> Load Address: 00008000
> Entry Point: 00008000
> Verifying Checksum ... OK
> ## Loading init Ramdisk from Legacy Image at 00800000 ...
> Image Name:
> Image Type: ARM Linux RAMDisk Image (uncompressed)
> Data Size: 636966 Bytes = 622 KiB
> Load Address: 00000000
> Entry Point: 00000000
> Verifying Checksum ... OK
> ## Flattened Device Tree blob at 00700000
> Booting using the fdt blob at 0x00700000
> Loading Kernel Image ... OK
> OK
> Loading Ramdisk to 03aad000, end 03b48826 ... OK
> Loading Device Tree to 03aa8000, end 03aacedd ... OK
>
> Starting kernel ...
>
> [.. more linux kernel output ..]
>
>
> If the netconsole is enabled, eg. "stdin = stdout = stderr = nc", i see only
> the following output on the netconsole and then nothing more happens:
>
> ## Booting kernel from Legacy Image at 00100000 ...
> Image Name: Linux-3.8.0-rc1-00004-g270c0a0-d
> Image Type: ARM Linux Kernel Image (uncompressed)
> Data Size: 2799632 Bytes = 2.7 MiB
> Load Address: 00008000
> Entry Point: 00008000
> Verifying Checksum ... OK
> ## Loading init Ramdisk from Legacy Image at 00800000 ...
> Image Name:
> Image Type: ARM Linux RAMDisk Image (uncompressed)
> Data Size: 636966 Bytes = 622 KiB
> Load Address: 00000000
> Entry Point: 00000000
> Verifying Checksum ... OK
> ## Flattened Device Tree blob at 00700000
> Booting using the fdt blob at 0x00700000
>
>
> I've tracked this down to the eth_halt() call in cmd_bootm.c:647. What is the
> purpose of this call? I guess the NIC should be shut down prior to booting
> linux. OTOH, there are still messages printed after this call, and i suppose
> the netconsole tries to bring the network back up. If i remove this call,
> everything works as expected.
> Anyway, i can definitely say, that the linux kernel is not starting. Eg. it is
> not only the output that stops working.
>
> FYI, i'm using the mvgbe driver.
>
> Let me know if i can do some more debugging or provide more information.
> Hopefully this will be fixed in 2013.04 :)
>
> --
> Michael
More information about the U-Boot
mailing list