]> git.baikalelectronics.ru Git - kernel.git/commit
xen/events: mask events when changing their VCPU binding
authorDavid Vrabel <david.vrabel@citrix.com>
Thu, 15 Aug 2013 12:21:07 +0000 (13:21 +0100)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Tue, 20 Aug 2013 14:13:04 +0000 (10:13 -0400)
commit5e0f247e7290f049665693dc5d73414e6b56ca3c
treef8077a8a802f8cbc6247d13111eba3be45e04a65
parent8723dc4cebf641f5b1cbc7b2e238d0276437852e
xen/events: mask events when changing their VCPU binding

When a event is being bound to a VCPU there is a window between the
EVTCHNOP_bind_vpcu call and the adjustment of the local per-cpu masks
where an event may be lost.  The hypervisor upcalls the new VCPU but
the kernel thinks that event is still bound to the old VCPU and
ignores it.

There is even a problem when the event is being bound to the same VCPU
as there is a small window beween the clear_bit() and set_bit() calls
in bind_evtchn_to_cpu().  When scanning for pending events, the kernel
may read the bit when it is momentarily clear and ignore the event.

Avoid this by masking the event during the whole bind operation.

Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
CC: stable@vger.kernel.org
drivers/xen/events.c