aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuanyuan Zhong <zyy@motorola.com>2013-10-30 12:31:49 -0400
committerNitin Garg <nitin.garg@freescale.com>2014-04-16 09:57:23 -0400
commit0edba910e3cad4413bee815e3acaafe8f10fe03f (patch)
tree8f09361635b7ae72cbe970d39a057e7dad3ce518
parente52cd55b42b08eff0d22830782226acb076d5a81 (diff)
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. Signed-off-by: Yuanyuan Zhong <zyy@motorola.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> (cherry picked from commit 384b38b66947b06999b3e39a596d4f2fb94f77e4)
-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 5dfbb0b8e7f4..076c2f43a859 100644
--- a/arch/arm/vfp/vfpmodule.c
+++ b/arch/arm/vfp/vfpmodule.c
@@ -641,9 +641,9 @@ int vfp_restore_user_hwstate(struct user_vfp __user *ufp,
641static int vfp_hotplug(struct notifier_block *b, unsigned long action, 641static int vfp_hotplug(struct notifier_block *b, unsigned long action,
642 void *hcpu) 642 void *hcpu)
643{ 643{
644 if (action == CPU_DYING || action == CPU_DYING_FROZEN) { 644 if (action == CPU_DYING || action == CPU_DYING_FROZEN)
645 vfp_force_reload((long)hcpu, current_thread_info()); 645 vfp_current_hw_state[(long)hcpu] = NULL;
646 } else if (action == CPU_STARTING || action == CPU_STARTING_FROZEN) 646 else if (action == CPU_STARTING || action == CPU_STARTING_FROZEN)
647 vfp_enable(NULL); 647 vfp_enable(NULL);
648 return NOTIFY_OK; 648 return NOTIFY_OK;
649} 649}