On Tue, 5 May 2015, Ian Campbell wrote:
> On Mon, 2015-04-27 at 17:32 +0100, Julien Grall wrote:
> > >> diff --git a/xen/include/asm-arm/event.h b/xen/include/asm-arm/event.h
> > >> index 5330dfe..0149d06 100644
> > >> --- a/xen/include/asm-arm/event.h
> > >> +++ b/xen/include/asm-arm/event.h
> > >> @@ -39,7 +39,12 @@ static inline int 
> > >> local_events_need_delivery_nomask(void)
> > >>  
> > >>  static inline int local_events_need_delivery(void)
> > >>  {
> > >> -    if ( !vcpu_event_delivery_is_enabled(current) )
> > >> +    struct vcpu *v = current;
> > >> +
> > >> +    if ( unlikely(is_idle_vcpu(v)) )
> > >> +        return 0;
> > >> +
> > >> +    if ( !vcpu_event_delivery_is_enabled(v) )
> > >>          return 0;
> > >>      return local_events_need_delivery_nomask();
> > >>  }
> > > 
> > > Is it actually considered correct in Xen to call hypercall_preempt_check
> > > and/or local_events_need_delivery on the idle vcpu?
> > 
> > It seems that the x86 version of hypercall_preempt_check is able to cope
> > with idle VCPU. 
> 
> AFAICT that's just a coincidence, since an idle vcpu won't ever have a
> pending up call.
> 
> > Although, I'm not sure if there is path where
> > hypercall_preempt_check can be called on an idle VCPU (cc x86
> > maintainers for this purpose).
> > 
> > > Shouldn't it be avoided and maybe a BUG_ON added here instead?
> > 
> > This patch was the simple way to fix the bug. I have other ideas in mind
> > which require some rework in apply_p2m_changes.
> > 
> > I'll wait to see what x86 maintainers think.
> 
> I'm inclined to just go with this patch for now, unless Stefano is
> nacking it.

I won't nack it.


> One question first: What aspect of local_events_need_delivery relies on
> the vcpu not being an idle one? I suppose something is not initialised,
> but what.
> 
> Ian.
> 
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

Reply via email to