[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC/RFT][PATCH 0 of 3] rework locking in sched_adjust
On Tue, Dec 6, 2011 at 8:38 AM, Juergen Gross <juergen.gross@xxxxxxxxxxxxxx> wrote: > (XEN) Xen BUG at spinlock.c:47 [snip] > (XEN) Xen call trace: > (XEN) [<ffff82c480124e84>] check_lock+0x44/0x50 > (XEN) [<ffff82c480124ec1>] _spin_lock+0x11/0x5d > (XEN) [<ffff82c48012c085>] xmem_pool_alloc+0x138/0x4d2 > (XEN) [<ffff82c48012c557>] _xmalloc+0x138/0x230 > (XEN) [<ffff82c48012c660>] _xzalloc+0x11/0x2d > (XEN) [<ffff82c48011f8ab>] sedf_adjust+0x37c/0x9b2 > (XEN) [<ffff82c480120fec>] sched_adjust+0x5f/0xb7 > (XEN) [<ffff82c4801037e3>] do_domctl+0xf32/0x1a9f > (XEN) [<ffff82c48021f128>] syscall_enter+0xc8/0x122 Hmm, looks like the problem is that we assert that locks must be called with IRQs enabled all the time, or never. From xen/common/spinlock.c: * We partition locks into IRQ-safe (always held with IRQs disabled) and * IRQ-unsafe (always held with IRQs enabled) types. The convention for * every lock must be consistently observed else we can deadlock in * IRQ-context rendezvous functions (a rendezvous which gets every CPU * into IRQ context before any CPU is released from the rendezvous). sedf_adj() grabs the private lock with irqs disabled, then calls sedf_adjust_weights(), which calls xmalloc to allocate some local scratch space, which ultimately grabs a non-IRQ spinlock. Not sure the best thing to do here... -George _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |