[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] Mem event: don't leave zombie domains if there are wait-queued vcpus
# HG changeset patch # User Tim Deegan <tim@xxxxxxx> # Date 1331809964 0 # Node ID 2144deeb3da12aa85169ac4b1a445343418ac799 # Parent 17dd1004c4b99176a1ee190fd33b051fb5df38f8 Mem event: don't leave zombie domains if there are wait-queued vcpus Vcpus in wait queues retain a domain reference. Upon domain destruction, we were not taking care of draining the wait queues. Signed-off-by: Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx> Acked-by: Tim Deegan <tim@xxxxxxx> Committed-by: Tim Deegan <tim@xxxxxxx> --- diff -r 17dd1004c4b9 -r 2144deeb3da1 xen/arch/x86/mm/mem_event.c --- a/xen/arch/x86/mm/mem_event.c Thu Mar 15 10:09:03 2012 +0000 +++ b/xen/arch/x86/mm/mem_event.c Thu Mar 15 11:12:44 2012 +0000 @@ -489,12 +489,25 @@ /* Clean up on domain destruction */ void mem_event_cleanup(struct domain *d) { - if ( d->mem_event->paging.ring_page ) + if ( d->mem_event->paging.ring_page ) { + /* Destroying the wait queue head means waking up all + * queued vcpus. This will drain the list, allowing + * the disable routine to complete. It will also drop + * all domain refs the wait-queued vcpus are holding. + * Finally, because this code path involves previously + * pausing the domain (domain_kill), unpausing the + * vcpus causes no harm. */ + destroy_waitqueue_head(&d->mem_event->paging.wq); (void)mem_event_disable(d, &d->mem_event->paging); - if ( d->mem_event->access.ring_page ) + } + if ( d->mem_event->access.ring_page ) { + destroy_waitqueue_head(&d->mem_event->access.wq); (void)mem_event_disable(d, &d->mem_event->access); - if ( d->mem_event->share.ring_page ) + } + if ( d->mem_event->share.ring_page ) { + destroy_waitqueue_head(&d->mem_event->share.wq); (void)mem_event_disable(d, &d->mem_event->share); + } } int mem_event_domctl(struct domain *d, xen_domctl_mem_event_op_t *mec, _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |