[ARM] 5440/1: Fix VFP state corruption due to preemption during VFP exceptions
authorGeorge G. Davis <gdavis@mvista.com>
Wed, 1 Apr 2009 19:27:18 +0000 (20:27 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Wed, 1 Apr 2009 21:17:50 +0000 (22:17 +0100)
commitf2255be8126e86142901c61dd482c1c2a5ffdda7
treea59ff8fecbbf30a7a1e33f97b59e1ed3cd38c018
parentfe68e68f6a379d317a87ae24de050a65b11ea1fb
[ARM] 5440/1: Fix VFP state corruption due to preemption during VFP exceptions

We've observed that ARM VFP state can be corrupted during VFP exception
handling when PREEMPT is enabled.  The exact conditions are difficult
to reproduce but appear to occur during VFP exception handling when a
task causes a VFP exception which is handled via VFP_bounce and is then
preempted by yet another task which in turn causes yet another VFP
exception.  Since the VFP_bounce code is not preempt safe, VFP state then
becomes corrupt.  In order to prevent preemption from occuring while
handling a VFP exception, this patch disables preemption while handling
VFP exceptions.

Signed-off-by: George G. Davis <gdavis@mvista.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/vfp/entry.S
arch/arm/vfp/vfphw.S
arch/arm/vfp/vfpmodule.c