
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@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