Li Zhong bf5a71d538 KVM: PPC: Book 3S: XICS: Fix potential issue with duplicate IRQ resends
It is possible that in the following order, one irq is resent twice:

        CPU 1                                   CPU 2

ics_check_resend()
  lock ics_lock
    see resend set
  unlock ics_lock
                                       /* change affinity of the irq */
                                       kvmppc_xics_set_xive()
                                         write_xive()
                                           lock ics_lock
                                             see resend set
                                           unlock ics_lock

                                         icp_deliver_irq() /* resend */

  icp_deliver_irq() /* resend again */

It doesn't have any user-visible effect at present, but needs to be avoided
when the following patch implementing the P/Q stuff is applied.

This patch clears the resend flag before releasing the ics lock, when we
know we will do a re-delivery after checking the flag, or setting the flag.

Signed-off-by: Li Zhong <zhong@linux.vnet.ibm.com>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2017-01-27 10:26:09 +11:00
..
2014-09-24 14:07:58 +02:00
2014-09-22 10:11:32 +02:00
2016-01-15 17:56:32 -08:00
2016-01-15 17:56:32 -08:00
2016-09-09 16:26:19 +10:00
2014-07-28 19:29:15 +02:00
2014-07-28 19:29:15 +02:00
2016-01-15 17:56:32 -08:00