]> git.baikalelectronics.ru Git - kernel.git/commit
powerpc/icswx: Fix race condition with IPI setting ACOP
authorJimi Xenidis <jimix@pobox.com>
Tue, 28 Feb 2012 13:27:07 +0000 (13:27 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Wed, 7 Mar 2012 06:06:09 +0000 (17:06 +1100)
commitc9dad034cf8346ec06601f9b8beb9f80e22eee1b
treef1850331426e3c1d4b0e7a20e633095f2546bf8f
parent49f21b1f058528c4ce27eb53c6cc943c1ea5514c
powerpc/icswx: Fix race condition with IPI setting ACOP

There is a race where a thread causes a coprocessor type to be valid
in its own ACOP _and_ in the current context, but it does not
propagate to the ACOP register of other threads in time for them to
use it.  The original code tries to solve this by sending an IPI to
all threads on the system, which is heavy handed, but unfortunately
still provides a window where the icswx is issued by other threads and
the ACOP is not up to date.

This patch detects that the ACOP DSI fault was a "false positive" and
syncs the ACOP and causes the icswx to be replayed.

Signed-off-by: Jimi Xenidis <jimix@pobox.com>
Cc: Anton Blanchard <anton@samba.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/mm/icswx.c
arch/powerpc/mm/icswx.h