• Home
  • Help
  • Search
  • Login
  • Register
Pages: [1]
Author Topic: NFS booting hangs on firmware load  (Read 3506 times)
panachoi
Newbie
*

Karma: 0
Posts: 9


View Profile
« on: June 29, 2010, 10:09:18 PM »

I've managed to get my GPS+ to boot via NFS, but its hanging after it actually mounts its root file system at the stage where its attempting to load firmware:

Code:
eth0: link up, 100 Mb/s, full duplex, flow control disabled                                                                                     
. OK                                                                                                                                           
IP-Config: Got DHCP answer from 192.168.141.30, my address is 192.168.141.152                                                                   
IP-Config: Complete:                                                                                                                           
     device=eth0, addr=192.168.141.152, mask=255.255.255.0, gw=192.168.141.253,                                                                 
     host=guruplug, domain=whack.me, nis-domain=(none),                                                                                       
     bootserver=192.168.141.30, rootserver=192.168.141.2, rootpath=/usr/virtimages/plugroot                                                     
libertas: can't load helper firmware                                                                                                           
libertas: failed to load helper firmware                                                                                                       
libertas_sdio: probe of mmc0:0001:1 failed with error -2                                                                                       
Looking up port of RPC 100003/2 on 192.168.141.2                                                                                               
Looking up port of RPC 100005/1 on 192.168.141.2                                                                                               
VFS: Mounted root (nfs filesystem) on device 0:12.                                                                                             
Freeing init memory: 140K                                                                                                                       
NET: Registered protocol family 10                                                                                                             
NET: Registered protocol family 5                                                                                                               
uap_probe: vendor=0x02DF device=0x9104 class=0 function=1                                                                                       
uap_sdio mmc0:0001:1: firmware: requesting mrvl/helper_sd.bin                                                                                   
uap_sdio: probe of mmc0:0001:1 failed with error -1                                                                                             

The root filesystem is a copy of whats currently installed and working (Debian SID kernel 2.6.32-5-kirkwood) on the sd card (I'm normally booting via NAND, with the root filesystem on the SD). I'd really like to get this working, as this would allow me to easily test new kernels before trying to flash them....

This is with the 2.6.34 kernel from http://sheeva.with-linux.com/sheeva/
« Last Edit: June 29, 2010, 10:24:31 PM by panachoi » Logged

cbxbiker61
Global Moderator
Sr. Member
*****

Karma: 38
Posts: 497


View Profile
« Reply #1 on: June 29, 2010, 11:10:08 PM »

You'll probably have to use an initrd.

google "initrd driver firmware" and you'll come up with some hits such as the following that are pertinent.

https://bugzilla.redhat.com/show_bug.cgi?id=240105

Logged

fragfutter
Sr. Member
****

Karma: 12
Posts: 280


View Profile
« Reply #2 on: June 30, 2010, 12:25:28 AM »

It looks like the plug is attached with a cable, and the driver for the ethernet interface is in the kernel, isn't it? So NFS boot should be possible and in the output posted the mount succeeded. Wireles then fails, but this could be moved to a seperate startscript.
Logged

panachoi
Newbie
*

Karma: 0
Posts: 9


View Profile
« Reply #3 on: June 30, 2010, 02:20:26 AM »

The problem is not with NFS booting per se -- as you can see that works just fine (thanks to all the information in the posts). The problem is this:

Code:
uap_probe: vendor=0x02DF device=0x9104 class=0 function=1                                                                                                                                                                                       
uap_sdio mmc0:0001:1: firmware: requesting mrvl/helper_sd.bin                                                                                                                                                                                   
uap_sdio: probe of mmc0:0001:1 failed with error -1                                                                                 

I'm pretty sure that this is because the LIBERTAS_SDIO  is compiled into this particular kernel, and I'm normally blacklisting it, and using the uap8xxx loadable module.

I was really hoping I wasn't going to have to compile my own kernels, but it looks as though I would have to. The standard debian sid/squeeze kernel does not have CONFIG_IP_PNP set, so its not possible to NFS boot it.

The problem above is that the kernel just hangs at this point, and never continues.....
Logged

fragfutter
Sr. Member
****

Karma: 12
Posts: 280


View Profile
« Reply #4 on: June 30, 2010, 02:44:42 AM »

just compile a kernel. After all it's an embedded system and you can and should customize it to your needs.
Logged

cbxbiker61
Global Moderator
Sr. Member
*****

Karma: 38
Posts: 497


View Profile
« Reply #5 on: June 30, 2010, 03:06:33 AM »


I'm pretty sure that this is because the LIBERTAS_SDIO  is compiled into this particular kernel, and I'm normally blacklisting it, and using the uap8xxx loadable module.

I was really hoping I wasn't going to have to compile my own kernels, but it looks as though I would have to. The standard debian sid/squeeze kernel does not have CONFIG_IP_PNP set, so its not possible to NFS boot it.

The problem above is that the kernel just hangs at this point, and never continues.....


To make the kernel more generally useful, I just rebuild 2.6.34 with libertas_sdio as a module.  I can't think of a good reason libertas_sdio would "have" to be built into the kernel anyway.  So if you don't mind, try the new version and report back.
Logged

panachoi
Newbie
*

Karma: 0
Posts: 9


View Profile
« Reply #6 on: July 05, 2010, 01:20:55 AM »

Thanks, this works. In the meantime, I've managed to (re)build a 2.6.34 kernel from which I can NFS boot. But there's still something very strange going on. I've had the same problem with your kernel, and at first I thought it was something wrong in the kernel, but now I'm wondering.

I can only NFS boot on every other (i.e. 2nd) reboot. My  boot environment variables look like this:

Code:
nfsrootpath=/usr/virtimages/plugroot
nfsimage_name=guru/sheeva-2.6.34-uImage
filesize=29E148
fileaddr=2000000
ipaddr=192.168.141.152
serverip=192.168.141.22
nfsrootsrv=192.168.141.2
console_nfs=console=ttyS0,115200 mtdparts=:0x100000@0x000000(u-boot),0x300000@0x100000(uImage),0x1fc00000@0x400000(rootfs)rw
bootargs_nfs=root=/dev/nfs rw nfsroot=192.168.141.2:/usr/virtimages/plugroot
nfsinitrd_name=guru/uInitrd-2.6.34
initrdtftp=tftpboot 0x01100000 guru/uInitrd-2.6.34                                                                                                                 
bootcmd_nfs=run boottftp;run initrdtftp;setenv bootargs $(console_nfs) $(bootargs_nfs) ip=$(ipaddr):$(serverip)$(bootargs_end);bootm 0x00800000 0x01100000         
boottftp=tftpboot 0x00800000 guru/uImage-2.6.34 
           

When I reset the plug, and type "run bootcmd_nfs" it will only reboot properly every second reboot/reset. Its getting the proper information via DHCP, but then somehow hangs in the middle of the boot process, trying to mount /.

 
Code:
eth0: link up, 100 Mb/s, full duplex, flow control disabled                                                                                                       
. OK                                                                                                                                                               
IP-Config: Got DHCP answer from 192.168.141.30, my address is 192.168.141.152                                                                                     
IP-Config: Complete:                                                                                                                                               
     device=eth0, addr=192.168.141.152, mask=255.255.255.0, gw=192.168.141.253,                                                                                   
     host=guruplug, domain=(none), nis-domain=(none),                                                                                                         
     bootserver=192.168.141.30, rootserver=192.168.141.2, rootpath=/usr/virtimages/plugroot                                                                       
Freeing init memory: 140K                                                                                                                                         
Loading, please wait...                                                                                                                                           
mount: mounting none on /dev failed: No such device
               sata_mv sata_mv.0: version 1.28                                                                                                                                   
sata_mv sata_mv.0: slots 32 ports 1                                                                                                                               
scsi1 : sata_mv                                                                                                                                                   
ata1: SATA max UDMA/133 irq 21                                                                                                                                     
ata1: SATA link down (SStatus 0 SControl F300)                                                                                                                     
Begin: Loading essential drivers ... done.                                                                                                                         
Begin: Running /scripts/init-premount ... done.                                                                                                                   
Begin: Mounting root file system ... Begin: Running /scripts/nfs-top ... done.                                                                                     
IP-Config: eth0 hardware address 02:50:43:2e:7c:cf mtu 1500 DHCP RARP                                                                                             
IP-Config: eth0 guessed netmask 255.255.255.0                                                                                                                     
IP-Config: eth0 guessed broadcast address 192.168.141.255                                                                                                         
IP-Config: eth0 guessed nameserver address 192.168.141.22                                                                                                         
IP-Config: eth0 complete (from 192.168.141.22):                                                                                                                   
 address: 192.168.141.152  broadcast: 192.168.141.255  netmask: 255.255.255.0                                                                                     
 gateway: 0.0.0.0          dns0     : 192.168.141.22   dns1   : 0.0.0.0                                                                                           
 rootserver: 192.168.141.22 rootpath:                                                                                                                             
 filename  :                                                                                                                                                       
IP-Config: eth1 hardware address 02:50:43:51:7e:82 mtu 1500 DHCP RARP                                                                                             
IP-Config: eth1 guessed netmask 255.255.255.0                                                                                                                     
IP-Config: eth1 guessed broadcast address 192.168.141.255                                                                                                         
IP-Config: eth1 guessed nameserver address 192.168.141.22                                                                                                         
IP-Config: eth1 complete (from 192.168.141.22):                                                                                                                   
 address: 192.168.141.152  broadcast: 192.168.141.255  netmask: 255.255.255.0                                                                                     
 gateway: 0.0.0.0          dns0     : 192.168.141.22   dns1   : 0.0.0.0                                                                                           
 rootserver: 192.168.141.22 rootpath:                                                                                                                             
 filename  :                                                                                                                                                       
Begin: Running /scripts/nfs-premount ... done.                                                                                                                     
done.                                                                                                                                                             
Begin: Running /scripts/nfs-bottom ... done.                                                                                                                       
done.                                                                                                                                                             
Begin: Running /scripts/init-bottom ... done.                                                                                                                     
INIT: version 2.88 booting                                                                                                                                         
Using makefile-style concurrent boot in runlevel S.                                                                                                               
Starting the hotplug events dispatcher: udevdudev: starting version 157
     .                                                                                                                                                                 
Synthesizing the initial hotplug events...done.                                                                                                                   
Waiting for /dev to be fully populated...Bluetooth: Core ver 2.15                                                                                                 
NET: Registered protocol family 31                                                                                                                                 
Bluetooth: HCI device and connection manager initialized                                                                                                           
Bluetooth: HCI socket layer initialized                                                                                                                           
uap_probe: vendor=0x02DF device=0x9104 class=0 function=1                                                                                                         
uap_sdio mmc0:0001:1: firmware: requesting mrvl/helper_sd.bin                                                                                                     
uap_sdio mmc0:0001:1: firmware: requesting mrvl/sd8688_ap.bin                                                                                                     
dib0700: loaded with support for 14 different device-types                                                                                                         
dvb-usb: found a 'Hauppauge Nova-T Stick' in cold state, will try to load a firmware                                                                               
usb 1-1.3: firmware: requesting dvb-usb-dib0700-1.20.fw                                                                                                           
UAP FW is active                                                                                                                                                   
Bluetooth: vendor=0x2df, device=0x9105, class=255, fn=2                                                                                                           
nfs: server 192.168.141.2 not responding, still trying                                                                                                             
nfs: server 192.168.141.2 not responding, still trying                                                                                                             
nfs: server 192.168.141.2 not responding, still trying                                                                                                                                                                                                                                                                             

If I then do a SysRq reboot, and run bootcmd_nfs again, it will boot properly. This behavior is reproducable. Any ideas ?
Logged

Pages: [1]
Print
Jump to: