]> CyberLeo.Net >> Repos - FreeBSD/stable/9.git/commit
MFC: r245850
authormarius <marius@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Sun, 27 Jan 2013 23:21:47 +0000 (23:21 +0000)
committermarius <marius@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Sun, 27 Jan 2013 23:21:47 +0000 (23:21 +0000)
commitcb48c4a48dc8d53443cef46261b3eba7b706604f
tree8e2f9011fa76dc29adbaba736a957ed7b5e14eca
parentc99cd4f004eefffa7b91a457a717db1ed2246ff6
MFC: r245850

Revert the part of r239864 (MFC'ed to stable/9 in r241681) which removed
obtaining the SMP mutex around reading registers from other CPUs. As it
turns out, the hardware doesn't really like concurrent IPI'ing causing
adverse effects. Also the thought deadlock when using this spin lock here
and the targeted CPU(s) are also holding or in case of nested locks can't
actually happen. This is due to the fact that on sparc64, spinlock_enter()
only raises the PIL but doesn't disable interrupts completely. Thus direct
cross calls as used for the register reading (and all other MD IPI needs)
still will be executed by the targeted CPU(s) in that case.

git-svn-id: svn://svn.freebsd.org/base/stable/9@246014 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/sparc64/include/smp.h
sys/sparc64/sparc64/tick.c