|
@@ -618,10 +618,8 @@ int sve_set_vector_length(struct task_struct *task,
|
|
|
task->thread.sve_vl = vl;
|
|
|
|
|
|
out:
|
|
|
- if (flags & PR_SVE_VL_INHERIT)
|
|
|
- set_tsk_thread_flag(task, TIF_SVE_VL_INHERIT);
|
|
|
- else
|
|
|
- clear_tsk_thread_flag(task, TIF_SVE_VL_INHERIT);
|
|
|
+ update_tsk_thread_flag(task, TIF_SVE_VL_INHERIT,
|
|
|
+ flags & PR_SVE_VL_INHERIT);
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
@@ -910,12 +908,12 @@ void fpsimd_thread_switch(struct task_struct *next)
|
|
|
* the TIF_FOREIGN_FPSTATE flag so the state will be loaded
|
|
|
* upon the next return to userland.
|
|
|
*/
|
|
|
- if (__this_cpu_read(fpsimd_last_state.st) ==
|
|
|
- &next->thread.uw.fpsimd_state
|
|
|
- && next->thread.fpsimd_cpu == smp_processor_id())
|
|
|
- clear_tsk_thread_flag(next, TIF_FOREIGN_FPSTATE);
|
|
|
- else
|
|
|
- set_tsk_thread_flag(next, TIF_FOREIGN_FPSTATE);
|
|
|
+ bool wrong_task = __this_cpu_read(fpsimd_last_state.st) !=
|
|
|
+ &next->thread.uw.fpsimd_state;
|
|
|
+ bool wrong_cpu = next->thread.fpsimd_cpu != smp_processor_id();
|
|
|
+
|
|
|
+ update_tsk_thread_flag(next, TIF_FOREIGN_FPSTATE,
|
|
|
+ wrong_task || wrong_cpu);
|
|
|
}
|
|
|
}
|
|
|
|