diff options
author | Yuanyuan Zhong <zyy@motorola.com> | 2013-10-30 12:31:49 -0400 |
---|---|---|
committer | Nitin Garg <nitin.garg@freescale.com> | 2014-04-16 09:57:23 -0400 |
commit | 0edba910e3cad4413bee815e3acaafe8f10fe03f (patch) | |
tree | 8f09361635b7ae72cbe970d39a057e7dad3ce518 | |
parent | e52cd55b42b08eff0d22830782226acb076d5a81 (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.c | 6 |
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, | |||
641 | static int vfp_hotplug(struct notifier_block *b, unsigned long action, | 641 | static 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 | } |