[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 3/3] VMX: Remove the vcpu from the per-cpu blocking list after domain termination
> From: Wu, Feng > Sent: Friday, May 20, 2016 4:54 PM > > We need to make sure the bocking vcpu is not in any per-cpu blocking list > when the associated domain is going to be destroyed. > > Signed-off-by: Feng Wu <feng.wu@xxxxxxxxx> > --- > xen/arch/x86/hvm/vmx/vmx.c | 32 > ++++++++++++++++++++++++++++++++ > 1 file changed, 32 insertions(+) > > diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c > index 4862b13..e74b3e7 100644 > --- a/xen/arch/x86/hvm/vmx/vmx.c > +++ b/xen/arch/x86/hvm/vmx/vmx.c > @@ -248,6 +248,36 @@ void vmx_pi_hooks_deassign(struct domain *d) > d->arch.hvm_domain.vmx.pi_switch_to = NULL; > } > > +static void vmx_pi_blocking_list_cleanup(struct domain *d) Is it more natural to move such cleanup under vcpu destroy? > +{ > + unsigned int cpu; > + > + for_each_online_cpu ( cpu ) > + { > + struct vcpu *v; > + unsigned long flags; > + struct arch_vmx_struct *vmx, *tmp; > + spinlock_t *lock = &per_cpu(vmx_pi_blocking, cpu).lock; > + struct list_head *blocked_vcpus = &per_cpu(vmx_pi_blocking, > cpu).list; > + > + spin_lock_irqsave(lock, flags); > + > + list_for_each_entry_safe(vmx, tmp, blocked_vcpus, pi_blocking.list) > + { > + v = container_of(vmx, struct vcpu, arch.hvm_vmx); > + > + if (v->domain == d) > + { > + list_del(&vmx->pi_blocking.list); > + ASSERT(vmx->pi_blocking.lock == lock); > + vmx->pi_blocking.lock = NULL; > + } > + } > + > + spin_unlock_irqrestore(lock, flags); > + } > +} > + > static int vmx_domain_initialise(struct domain *d) > { > int rc; > @@ -265,6 +295,8 @@ static int vmx_domain_initialise(struct domain *d) > > static void vmx_domain_destroy(struct domain *d) > { > + vmx_pi_blocking_list_cleanup(d); > + > if ( !has_vlapic(d) ) > return; > > -- > 2.1.0 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |