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