ARM: mvebu: Fix bug in coherency fabric low level init function
authorNadav Haklai <nadavh@marvell.com>
Thu, 23 May 2013 08:54:02 +0000 (10:54 +0200)
committerJason Cooper <jason@lakedaemon.net>
Tue, 28 May 2013 14:50:08 +0000 (14:50 +0000)
commitb60b61d41220c8d34e2c62a748bc78bc5d40585e
tree577e002b7826bd271580a6e34c41028895ec1d2b
parente89b4058096569c999fa599370162022a5a2b3d2
ARM: mvebu: Fix bug in coherency fabric low level init function

When adding CPU to the SMP group and enabling the coherency on this
CPU we must protect the register access.
The previous implementation claims to be atomic but doesn't provide
any protection against parallel access to the coherency fabric control
and configuration registers.

This patch fixes this by using the ldrex and strex mechanism.
This method should be used in all accesses to those registers.

[gregory.clement@free-electrons.com: fixed the commit's topic]
Signed-off-by: Nadav Haklai <nadavh@marvell.com>
Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
arch/arm/mach-mvebu/coherency_ll.S