From: Yuanyuan Zhong Date: Wed, 30 Oct 2013 16:31:49 +0000 (+0100) Subject: ARM: 7873/1: vfp: clear vfp_current_hw_state for dying cpu X-Git-Tag: next-20131105~115^2 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=384b38b66947b06999b3e39a596d4f2fb94f77e4;p=karo-tx-linux.git 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 Signed-off-by: Russell King --- diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c index 52b8f40b1c73..2f37e1d6cb45 100644 --- a/arch/arm/vfp/vfpmodule.c +++ b/arch/arm/vfp/vfpmodule.c @@ -642,9 +642,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; }