]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/commit
MFC r265900:
authornwhitehorn <nwhitehorn@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Mon, 26 May 2014 01:37:43 +0000 (01:37 +0000)
committernwhitehorn <nwhitehorn@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Mon, 26 May 2014 01:37:43 +0000 (01:37 +0000)
commitd40abaeea232c5cbd173bb4a03bfb0d8201f86d7
treec1a2f2fc1eb9efab2fef16ec267c64cc07f8556a
parent0482bdb210e44c3f90b012a466c9f7f4c1377abe
MFC r265900:

Repair some races in IPI handling:
1. Make sure IPI mask is set before sending the IPI
2. Operate atomically on PS3 PIC outstanding interrupt list
3. Make sure IPIs are EOI'ed before, not after, processing. Without this,
   a second IPI could be sent partway through processing the first one,
   get erroneously acknowledge by the EOI to the first, and be lost. In
   particular in the case of smp_rendezvous(), this can be fatal.

In combination, this makes the PS3 boot SMP again. It probably also fixes
some latent bugs elsewhere.

git-svn-id: svn://svn.freebsd.org/base/stable/10@266676 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/powerpc/powerpc/intr_machdep.c
sys/powerpc/powerpc/mp_machdep.c
sys/powerpc/ps3/ps3pic.c