[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-3.1-testing] domain_shutdown() needs to vcpu_pause_nosync() rather than directly
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1206015850 0 # Node ID fea5a34271483e8f6be684932e0adbb885991715 # Parent ccdea325953468a5172f5b9124a050fcbea0a6a3 domain_shutdown() needs to vcpu_pause_nosync() rather than directly incrementing the pause_count field. The latter ensures that the VCPU gets descheduled --- synchronously in the case of the currently-running VCPU. Based on a bug report and proposed patch by Ben Guthro and Robert Phillips of Virtual Iron. Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx> xen-unstable changeset: 17234:b2a3fe7f5591e3358aede7d05a4e8705e49ae13d xen-unstable date: Tue Mar 18 15:23:25 2008 +0000 --- xen/common/domain.c | 8 ++------ 1 files changed, 2 insertions(+), 6 deletions(-) diff -r ccdea3259534 -r fea5a3427148 xen/common/domain.c --- a/xen/common/domain.c Thu Mar 20 12:23:14 2008 +0000 +++ b/xen/common/domain.c Thu Mar 20 12:24:10 2008 +0000 @@ -86,10 +86,6 @@ static void __domain_finalise_shutdown(s return; d->is_shut_down = 1; - - for_each_vcpu ( d, v ) - vcpu_sleep_nosync(v); - send_guest_global_virq(dom0, VIRQ_DOM_EXC); } @@ -102,7 +98,7 @@ static void vcpu_check_shutdown(struct v if ( d->is_shutting_down ) { if ( !v->paused_for_shutdown ) - atomic_inc(&v->pause_count); + vcpu_pause_nosync(v); v->paused_for_shutdown = 1; v->defer_shutdown = 0; __domain_finalise_shutdown(d); @@ -389,7 +385,7 @@ void domain_shutdown(struct domain *d, u { if ( v->defer_shutdown ) continue; - atomic_inc(&v->pause_count); + vcpu_pause_nosync(v); v->paused_for_shutdown = 1; } _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |