Subject: Re: problems attempting remote NFS root
To: Christian Limpach <chris@pin.lu>
From: Neil Ludban <nludban@columbus.rr.com>
List: port-xen
Date: 04/11/2004 15:22:58
Christian Limpach wrote:
> Hi!

Hello,

Thanks for the quick reply.

>>It never returns from tsleep:
>>[1] nfs_boot: root=192.168.1.17:/export/xen31
>>[1] nfs_boot_setaddress: sleeping (150)
> 
> 
> Next thing to check is if timer interrupts happen, could you enable the code
> in arch/xen/xen/clock.c's xen_timer_handler which is disabled with #if 0.
> It should then print a message to the console every second.  Additionally it
> would be good to check if events/interrupts are enable before going to
> sleep.  Could you add the following:
>         {
>                 extern unsigned long event_mask;
>                 extern unsigned long *HYPERVISOR_shared_info;
> 
>                 printf("pending %08lx mask1 %08lx mask2 %08lx\n",
>                     HYPERVISOR_shared_info[0], HYPERVISOR_shared_info[1],
>                     event_mask);
>         }
>         /* give the link some time to get up */
>         tsleep(nfs_boot_setaddress, PZERO, "nfsbtd", 3 * hz);
> 
> It should then print the following:
> [7] nfs_boot: root=172.20.4.13:/netboot/qube
> [7] pending 00000000 mask1 80000012 mask2 00000012
> [7] ping!!! hz=50 regs 0xc03fcc7c level 12 ipending 00000000
> [7] ping!!! hz=50 regs 0xc03fcce0 level 12 ipending 00000000
> [7] ping!!! hz=50 regs 0xc03fcce0 level 12 ipending 00000000
> [7] nfs_boot: mountd `172.20.4.13:/netboot/qube', error=13
> [7] no file system for xennet0
> 
> The 8 in mask1 is the master event enable bit, the 1 in mask1/2 is network
> interrupts and the 2 in mask1/2 is timer interrupts.


[1] xennet0 at mainbus0: Xen Virtual Network Driver
[1] xennet0: MAC address aa:00:00:c9:24:fd
[1] npx0 at mainbus0: using exception 16
[1] ping!!! hz=50 regs 0xc035ad0c level 12 ipending 00000000
[1] IPsec: Initialized Security Association Processing.
[1] boot device: xennet0
[1] root on xennet0
[1] mountroot: trying nfs...
[1] nfs_boot: trying static
[1] nfs_boot: client_addr=192.168.1.31
[1] nfs_boot: gateway=192.168.1.42
[1] nfs_boot: netmask=255.255.255.0
[1] nfs_boot: server=192.168.1.17
[1] nfs_boot: root=192.168.1.17:/export/xen31
[1] pending 00000000 mask1 80000012 mask2 00000012
[1] nfs_boot_setaddress: sleeping (150)

It hangs here, no ping!!! messages except the one that slipped in
before IPSec, and no ICMP pings (not responding to ARP requests).

I disabled tsleep() in nfs_boot_setaddress() just to see what
happens, and it's a bit different:

[2] xennet0 at mainbus0: Xen Virtual Network Driver
[2] xennet0: MAC address aa:00:00:c9:24:fd
[2] npx0 at mainbus0: using exception 16
[2] ping!!! hz=50 regs 0xc035ad0c level 12 ipending 00000000
[2] IPsec: Initialized Security Association Processing.
[2] boot device: xennet0
[2] root on xennet0
[2] mountroot: trying nfs...
[2] nfs_boot: trying static
[2] nfs_boot: client_addr=192.168.1.31
[2] nfs_boot: gateway=192.168.1.42
[2] nfs_boot: netmask=255.255.255.0
[2] nfs_boot: server=192.168.1.17
[2] nfs_boot: root=192.168.1.17:/export/xen31
[2] pending 00000000 mask1 80000012 mask2 00000012
[2] nfs_boot_setaddress: sleeping (150)
[2] nfs_boot_setaddress: awake
[2] nfs_boot: mountd `192.168.1.17:/export/xen31', error=13
[2] no file system for xennet0
[2] cannot mount root, error = 79
[2] root device (default xennet0):
[2] ping!!! hz=50 regs 0xc035ac6c level 12 ipending 00000000
[2] ping!!! hz=50 regs 0xc035ac6c level 12 ipending 00000000
[2] ping!!! hz=50 regs 0xc035ac6c level 12 ipending 00000000

These messages continue once a second until the VM is killed,
and the network is again unresponsive.

-Neil