aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuanyuan Zhong <zyy@motorola.com>2013-10-30 17:31:49 +0100
committerChristian Neumüller <cn00@gmx.at>2014-12-30 12:53:34 +0100
commit52530c8366da6d957ad6096f862dc3a833e25891 (patch)
tree53b684a4935aa71364f80e5ee6b29634c64c3780
parentb49f57f5db5d65e3d7e3b097f0c3138730c19356 (diff)
downloadkernel_samsung_smdk4412-52530c8366da6d957ad6096f862dc3a833e25891.zip
kernel_samsung_smdk4412-52530c8366da6d957ad6096f862dc3a833e25891.tar.gz
kernel_samsung_smdk4412-52530c8366da6d957ad6096f862dc3a833e25891.tar.bz2
ARM: 7873/1: vfp: clear vfp_current_hw_state for dying cpu
The CPU_DYING notifier is called by cpu stopper task which does not own the context held in the VFP hardware. Calling vfp_force_reload() has no effect. Replace it with clearing vfp_current_hw_state. Change-Id: If6ea6b94e04dc4588c5bf2ec0fad4d0dcc49ffd6 Signed-off-by: Yuanyuan Zhong <zyy@motorola.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Lanchon <lanchon@gmail.com>
-rw-r--r--arch/arm/vfp/vfpmodule.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c
index 6c80b61..2541b9b 100644
--- a/arch/arm/vfp/vfpmodule.c
+++ b/arch/arm/vfp/vfpmodule.c
@@ -639,9 +639,9 @@ int vfp_restore_user_hwstate(struct user_vfp __user *ufp,
static int vfp_hotplug(struct notifier_block *b, unsigned long action,
void *hcpu)
{
- if (action == CPU_DYING || action == CPU_DYING_FROZEN) {
- vfp_force_reload((long)hcpu, current_thread_info());
- } else if (action == CPU_STARTING || action == CPU_STARTING_FROZEN)
+ if (action == CPU_DYING || action == CPU_DYING_FROZEN)
+ vfp_current_hw_state[(long)hcpu] = NULL;
+ else if (action == CPU_STARTING || action == CPU_STARTING_FROZEN)
vfp_enable(NULL);
return NOTIFY_OK;
}