[PATCH] arm: vfp: always clear vfp_current_hw_state when forcing reload
Russell King - ARM Linux
linux at arm.linux.org.uk
Fri Oct 11 08:07:29 EDT 2013
On Thu, Oct 10, 2013 at 11:00:18AM -0500, Yuanyuan ZHONG wrote:
> Hi Russell, et al
>
> If there is no further comments, I'll submit it to patch system.
> Thanks.
No, I still don't agree with your patch as being the correct fix. Look
at the code that you're creating:
if (vfp_state_in_hw(cpu, thread)) {
fmxr(FPEXC, fmrx(FPEXC) & ~FPEXC_EN);
vfp_current_hw_state[cpu] = NULL;
}
#ifdef CONFIG_SMP
thread->vfpstate.hard.cpu = NR_CPUS;
vfp_current_hw_state[cpu] = NULL;
#endif
So when SMP is enabled we unconditionally blat out the vfp_current_hw_state
pointer for this CPU?
What actually needs fixing is the call to this function in the hotplug
thread:
vfp_force_reload((long)hcpu, current_thread_info());
I'd suggest this becomes:
unsigned cpu = (long)hcpu;
if (vfp_current_hw_state[cpu])
vfp_force_reload(cpu, vfp_current_hw_state[cpu]);
That will force the right hw_state to be forced to reload, rather than
passing in the wrong thread state.
More information about the linux-arm-kernel
mailing list