[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] 3.0.4: Soft lockup in netfront in SMP build


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • From: "Graham, Simon" <Simon.Graham@xxxxxxxxxxx>
  • Date: Sat, 21 Apr 2007 17:45:34 -0400
  • Delivery-date: Sat, 21 Apr 2007 14:44:13 -0700
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>
  • Thread-index: AceEXmQbVpZcSzczQ7SLQWqGyxSkMg==
  • Thread-topic: 3.0.4: Soft lockup in netfront in SMP build

Just run into a (real) soft lockup running 3.0.4 - stack is at the end of this, 
but basically:

. network_open acquires the rx spin lock with spin_lock() and then checks for
  work on the queue and calls (I think) netif_rx_schedule with the lock still 
held which
  can call into the hypervisor.
. An interrupt is delivered to the bottom half of netfront which ends up 
calling netif_poll
  which blocks attempting to acquire the rx spin lock.

Oops! 

I see from the unstable tree that this code was recently modified to use 
spin_lock_bh() instead of spin_lock() as part of a mega-merge of IA64 code - 
clearly we cant merge this changeset into 3.0.4.

I haven't looked too closely at all of the code yet, but I'm wondering if a 
judicious change of spin_lock to spin_lock_bh in netfront would be the best 
approach?

Simon

BUG: soft lockup detected on CPU#0!
Pid: 2973, comm:            ifconfig
EIP: 0061:[<c035868a>] CPU: 0
EIP is at _spin_lock+0xa/0x20
 EFLAGS: 00000286    Tainted: GF      (2.6.16.38-xen #1)
EAX: c13b840c EBX: c13b8000 ECX: 00000040 EDX: cf783dc0
ESI: 00000000 EDI: c1233274 EBP: cf783d28 DS: 007b ES: 007b
CR0: 8005003b CR2: b7eea198 CR3: 103f2000 CR4: 00000660
 [<c010595d>] show_trace+0xd/0x10
 [<c010344f>] show_regs+0x18f/0x1c0
 [<c01491f4>] softlockup_tick+0xe4/0x100
 [<c012c713>] do_timer+0x43/0xf0
 [<c010936a>] timer_interrupt+0x1fa/0x670
 [<c01494da>] handle_IRQ_event+0x6a/0xb0
 [<c01495a9>] __do_IRQ+0x89/0xf0
 [<c0106ee8>] do_IRQ+0x38/0x70
 [<c028dee0>] evtchn_do_upcall+0x90/0x110
 [<c01056a1>] hypervisor_callback+0x3d/0x48
 [<c02a5db2>] netif_poll+0x32/0x630
 [<c02dace8>] net_rx_action+0x148/0x230
 [<c01279d5>] __do_softirq+0x95/0x130
 [<c0127af5>] do_softirq+0x85/0xa0
 [<c0127bda>] irq_exit+0x3a/0x50
 [<c0106eed>] do_IRQ+0x3d/0x70
 [<c028dee0>] evtchn_do_upcall+0x90/0x110
 [<c01056a1>] hypervisor_callback+0x3d/0x48
 [<c02a461b>] network_open+0x13b/0x210
 [<c02d9564>] dev_open+0x74/0x90
 [<c02db482>] dev_change_flags+0x52/0x110
 [<c0320187>] devinet_ioctl+0x4f7/0x5a0
 [<c0322174>] inet_ioctl+0x94/0xc0
 [<c02cf84d>] sock_ioctl+0xed/0x250
 [<c01842d6>] do_ioctl+0x76/0x90
 [<c0184479>] vfs_ioctl+0x59/0x1d0
 [<c0184657>] sys_ioctl+0x67/0x80
 [<c01054cd>] syscall_call+0x7/0xb
crash>

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.