[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