Re: [Xen-devel] [PATCH 1/4] xen/events: Clear cpu_evtchn_mask before resuming

From: Boris Ostrovsky
Date: Wed Apr 29 2015 - 14:29:08 EST


On 04/29/2015 01:59 PM, David Vrabel wrote:
On 29/04/15 17:54, Boris Ostrovsky wrote:
On 04/29/2015 12:32 PM, David Vrabel wrote:
On 28/04/15 19:29, Boris Ostrovsky wrote:
On 04/28/2015 12:28 PM, David Vrabel wrote:
From the commit log the evtchn_2l_resume() fucntion that's added
sounds
like it fixes the problem on its own?
It in fact makes this problem worse since now that cpu_evtchn_mask is
cleared during resume we cannot process the interrupt anymore in
evtchn_2l_handle_events(): irqs have to be bound to a cpu in order for
an interrupt to be processed.
Perhaps evtchn_2l_resume() should set the local cpu mask for any bound
event channels? And then you wouldn't need IRQ_MOVE_PCNTX.
But then (at least in 2-level case) more than one VCPUs may pick the
same interrupt, won't they? Because the local cpu mask is what tells a
VCPU that it is allowed to claim an interrupt.

We know that all event channels at this point are on VCPU0 (right?) so
we only set the bit in that VCPU's mask.

This is pretty much what I was suggesting since setting the mask is done via bind_evtchn_to_cpu(). Except that I also want to call EVTCHNOP_bind_vcpu before that, just in case.

-boris
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/