|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 7/9] arm: vgic: fix race between evtchn upcall and evtchnop_send
On Tue, 2013-03-19 at 16:18 +0000, Stefano Stabellini wrote:
> On Wed, 6 Mar 2013, Ian Campbell wrote:
> > From: Ian Campbell <ian.campbell@xxxxxxxxxx>
> >
> > On ARM the evtchn upcall is done by using a local PPI interrupt. However the
> > guest will clear the evtchn_upcall_pending bit before it EOIs that PPI
> > (which
> > happens late). This means vgic_vcpu_inject_irq (called via
> > vcpu_mark_events_pending) sees the PPI as in flight and ends up not
> > reinjecting
> > it, if this happens after the guest has finished its event channel
> > processing
> > loop but before the EOI then we have lost the upcall.
> >
> > We therefore also need to call gic_restore_pending_irqs on the exit to guest
> > path in order to pickup any newly inject IRQ and propagate it into a free
> > LR.
>
> You forgot to mention that on exit to guest, before calling
> gic_restore_pending_irqs, we check whether we need to reinject the PPI.
I inserted before "We therefore..."
To fix this we need to check if an evtchn upcall is pending when returning
the guest and if so reinject the PPI.
> Aside from this, the patch is fine.
And then I took this as an Acked-by and applied. Thanks
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |