>>> On 01.10.18 at 09:16, <jgr...@suse.com> wrote: > In the following situation a vcpu waiting for a lock might not be > woken up from xen_poll_irq(): > > CPU 1: CPU 2: CPU 3: > takes a spinlock > tries to get lock > -> xen_qlock_wait() > -> xen_clear_irq_pending()
Doesn't the last line above ... > frees the lock > -> xen_qlock_kick(cpu2) ... need to be below here? > takes lock again > tries to get lock > -> *lock = _Q_SLOW_VAL > -> *lock == _Q_SLOW_VAL ? > -> xen_poll_irq() > frees the lock > -> xen_qlock_kick(cpu3) > > And cpu 2 will sleep forever. > > This can be avoided easily by modifying xen_qlock_wait() to call > xen_poll_irq() only if the related irq was not pending and to call > xen_clear_irq_pending() only if it was pending. > > Cc: sta...@vger.kernel.org > Cc: waiman.l...@hp.com > Cc: pet...@infradead.org > Signed-off-by: Juergen Gross <jgr...@suse.com> Patch itself Reviewed-by: Jan Beulich <jbeul...@suse.com> Jan _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel