kern/135421: FreeBSD Xen PVM DomU network failure - netfronc.c driver crashes when downloading/uploading files

Mukosi Abraham Mukwevho mukosi at gmail.com
Tue Jun 9 19:40:03 UTC 2009


>Number:         135421
>Category:       kern
>Synopsis:       FreeBSD Xen PVM DomU network failure - netfronc.c driver crashes when downloading/uploading files
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Jun 09 19:40:02 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator:     Mukosi Abraham Mukwevho
>Release:        8.0-CURRENT-200905 (May 5th)
>Organization:
University of South Africa
>Environment:
FreeBSD Environment:

# uname -a
FreeBSD  8.0-CURRENT-200905 FreeBSD 8.0-CURRENT-200905 #1: Mon Jun  8 21:11:26 SAST 2009     root@:/usr/obj/usr/src/sys/XEN  i386
# 

Dom0 is a Linux CentOS 5.3 x86_64 as follows:
[root at viNEX ~]# uname -a
Linux viNEX.net 2.6.18.8-xen #1 SMP Sat Jun 6 22:01:16 SAST 2009 x86_64 x86_64 x86_64 GNU/Linux
[root at viNEX ~]# 
>Description:
I booted a Xen PVM DomU kernel using the latest FreeBSD-8.0-CURRENT cd, all seemed fine until I tried to configure networking on interface xn0 to connect direct with Dom0. The interface was up and I managed to connect using sftp to the Dom0. I tried to download a 4.9MB file to the dom0 and noticed the xn0 failing. It started with bandwidth of about 1.8MB/s and it fell down slowly until in reached about 6KB/s and then the interface crashed. The interface xn0 failed with the following error message: 

# 
# sftp root at 10.0.1.1
Connecting to 10.0.1.1...
root at 10.0.1.1's password: 
sftp> put kernel
Uploading kernel to /root/kernel
kernel                                         65% 2880KB   6.5KB/s   03:49 ETAKernel page fault with the following non-sleepable locks held:
exclusive sleep mutex xennetif_rx (network receive lock) r = 0 (0xc18560b4) locked @ /usr/src/sys/dev/xen/netfront/netfront.c:1123
KDB: stack backtrace:
X_db_sym_numargs(c035d3eb,cbe5eaf0,c0111c65,c037f573,463,...) at X_db_sym_numargs+0x146
kdb_backtrace(c037f573,463,ffffffff,c050ce0c,cbe5eb28,...) at kdb_backtrace+0x29
witness_display_spinlock(c035f708,cbe5eb3c,4,1,0,...) at witness_display_spinlock+0x75
witness_warn(5,0,c0387853,c0880108,c,...) at witness_warn+0x1fd
trap(cbe5ebc4) at trap+0x10e
alltraps(c1856000,cbe5ecc8,c00c39a4,c03d0bc0,c1704ab8,...) at alltraps+0x1b
intr_event_execute_handlers(c17077ec,c1704a80,c035601d,4dd,c1704af0,...) at intr_event_execute_handlers+0x125
intr_event_add_handler(c1766460,cbe5ed38,c0355d8c,32d,c17077ec,...) at intr_event_add_handler+0x41f
fork_exit(c00afe30,c1766460,cbe5ed38) at fork_exit+0xb8
fork_trampoline() at fork_trampoline+0x8
--- trap 0, eip = 0, esp = 0xcbe5ed70, ebp = 0 ---

Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address   = 0x0
fault code              = supervisor write, page not present
instruction pointer     = 0x21:0xc0300f27
stack pointer           = 0x29:0xcbe5ec04
frame pointer           = 0x29:0xcbe5eca0
code segment            = base 0x0, limit 0xf9800, type 0x1b
                        = DPL 1, pres 1, def32 1, gran 1
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 12 (irq134: xn)
[thread pid 12 tid 100023 ]
Stopped at      xlvbd_add+0x3747:       movl    %edx,0(%esi)
db> 
 
>How-To-Repeat:
(1) Boot a FreeBSD XEN DomU and logon to it and configure networking between DomU and Dom0

(2) Inside the DomU Locate a file which is reasonably bigger, it this case I used the "kernel" file which was about 4.7MB. 

(3) From inside the DomU, connect to Dom0 using a file transferring tool such as 'sftp'.

(4) Upload the file using the put command.

(5) The speed shown by sftp fall down sharply from 1.8MB/s down to about 6KB/s and then the network interface crashes with the following error message:

kernel                                         65% 2880KB   6.5KB/s   03:49 ETAKernel page fault with the following non-sleepable locks held:
exclusive sleep mutex xennetif_rx (network receive lock) r = 0 (0xc18560b4) locked @ /usr/src/sys/dev/xen/netfront/netfront.c:1123
KDB: stack backtrace:
X_db_sym_numargs(c035d3eb,cbe5eaf0,c0111c65,c037f573,463,...) at X_db_sym_numargs+0x146
kdb_backtrace(c037f573,463,ffffffff,c050ce0c,cbe5eb28,...) at kdb_backtrace+0x29
witness_display_spinlock(c035f708,cbe5eb3c,4,1,0,...) at witness_display_spinlock+0x75
witness_warn(5,0,c0387853,c0880108,c,...) at witness_warn+0x1fd
trap(cbe5ebc4) at trap+0x10e
alltraps(c1856000,cbe5ecc8,c00c39a4,c03d0bc0,c1704ab8,...) at alltraps+0x1b
intr_event_execute_handlers(c17077ec,c1704a80,c035601d,4dd,c1704af0,...) at intr_event_execute_handlers+0x125
intr_event_add_handler(c1766460,cbe5ed38,c0355d8c,32d,c17077ec,...) at intr_event_add_handler+0x41f
fork_exit(c00afe30,c1766460,cbe5ed38) at fork_exit+0xb8
fork_trampoline() at fork_trampoline+0x8
--- trap 0, eip = 0, esp = 0xcbe5ed70, ebp = 0 ---

Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address   = 0x0
fault code              = supervisor write, page not present
instruction pointer     = 0x21:0xc0300f27
stack pointer           = 0x29:0xcbe5ec04
frame pointer           = 0x29:0xcbe5eca0
code segment            = base 0x0, limit 0xf9800, type 0x1b
                        = DPL 1, pres 1, def32 1, gran 1
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 12 (irq134: xn)
[thread pid 12 tid 100023 ]
Stopped at      xlvbd_add+0x3747:       movl    %edx,0(%esi)
db> 
 


>Fix:


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list