diff -r 9e463cb15658 xen/common/cpupool.c --- a/xen/common/cpupool.c Mon Feb 07 17:02:46 2011 +0000 +++ b/xen/common/cpupool.c Tue Feb 08 12:13:35 2011 +0000 @@ -297,6 +297,8 @@ { if ( d->cpupool != c ) continue; + /* Don't allow a cpu to be moved if there's a live + * domain still running on it */ if ( !d->is_dying ) { ret = -EBUSY; diff -r 9e463cb15658 xen/common/schedule.c --- a/xen/common/schedule.c Mon Feb 07 17:02:46 2011 +0000 +++ b/xen/common/schedule.c Tue Feb 08 12:13:35 2011 +0000 @@ -495,6 +495,8 @@ if ( v->processor == cpu ) { + printk("%s: Migrating d%dv%d from cpu %d\n", + __func__, d->domain_id, v->vcpu_id, cpu); set_bit(_VPF_migrating, &v->pause_flags); vcpu_schedule_unlock_irq(v); vcpu_sleep_nosync(v); @@ -511,7 +513,10 @@ * all locks. */ if ( v->processor == cpu ) + { + printk(" Migration failed, must retry later.\n"); ret = -EAGAIN; + } } if ( affinity_broken )