arm64: alternatives: ensure secondary CPUs execute ISB after patching
authorWill Deacon <will.deacon@arm.com>
Tue, 4 Aug 2015 17:52:09 +0000 (18:52 +0100)
committerWill Deacon <will.deacon@arm.com>
Tue, 4 Aug 2015 17:52:09 +0000 (18:52 +0100)
commit04b8637be92f284409651088f3856f4290a931d8
treeaee6f9d734c0893139664f38d6438e3897dd568b
parent7f08a414f29e7daea661d03231998625257ed3f1
arm64: alternatives: ensure secondary CPUs execute ISB after patching

In order to guarantee that the patched instruction stream is visible to
a CPU, that CPU must execute an isb instruction after any related cache
maintenance has completed.

The instruction patching routines in kernel/insn.c get this right for
things like jump labels and ftrace, but the alternatives patching omits
it entirely leaving secondary cores in a potential limbo between the old
and the new code.

This patch adds an isb following the secondary polling loop in the
altenatives patching.

Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/kernel/alternative.c