1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00

drm/amd/display: Disable migration to ensure consistency of per-CPU variable

[why]
Since the variable fpu_recursion_depth is per-CPU type, it has one copy
on each CPU, thread migration causes data consistency issue, then the
call trace shows up. And preemption disabling can't prevent migration.

[how]
Disable migration to ensure consistency of fpu_recursion_depth.

Reviewed-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Signed-off-by: Tianci Yin <tianci.yin@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Tianci Yin 2023-02-06 15:58:46 +08:00 committed by Alex Deucher
parent 2a66c0c9d2
commit 0c316556d1

View file

@ -89,6 +89,7 @@ void dc_fpu_begin(const char *function_name, const int line)
if (*pcpu == 1) { if (*pcpu == 1) {
#if defined(CONFIG_X86) #if defined(CONFIG_X86)
migrate_disable();
kernel_fpu_begin(); kernel_fpu_begin();
#elif defined(CONFIG_PPC64) #elif defined(CONFIG_PPC64)
if (cpu_has_feature(CPU_FTR_VSX_COMP)) { if (cpu_has_feature(CPU_FTR_VSX_COMP)) {
@ -129,6 +130,7 @@ void dc_fpu_end(const char *function_name, const int line)
if (*pcpu <= 0) { if (*pcpu <= 0) {
#if defined(CONFIG_X86) #if defined(CONFIG_X86)
kernel_fpu_end(); kernel_fpu_end();
migrate_enable();
#elif defined(CONFIG_PPC64) #elif defined(CONFIG_PPC64)
if (cpu_has_feature(CPU_FTR_VSX_COMP)) { if (cpu_has_feature(CPU_FTR_VSX_COMP)) {
disable_kernel_vsx(); disable_kernel_vsx();