[AMD Official Use Only - General] Loop Charlie.
Thanks, Rico Sent from Mail<https://go.microsoft.com/fwlink/?LinkId=550986> for Windows From: Tianci Yin<mailto:tianci....@amd.com> Sent: Monday, February 6, 2023 3:59 PM To: amd-gfx@lists.freedesktop.org<mailto:amd-gfx@lists.freedesktop.org> Cc: Wentland, Harry<mailto:harry.wentl...@amd.com>; Siqueira, Rodrigo<mailto:rodrigo.sique...@amd.com>; Pillai, Aurabindo<mailto:aurabindo.pil...@amd.com>; Yin, Tianci (Rico)<mailto:tianci....@amd.com> Subject: [PATCH] drm/amd/display: Disable migration to ensure consistency of per-CPU variable From: tiancyin <tianci....@amd.com> [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. Signed-off-by: tiancyin <tianci....@amd.com> --- amdgpu_dm/dc_fpu.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/amdgpu_dm/dc_fpu.c b/amdgpu_dm/dc_fpu.c index 1743ca0a36..c42aa947c9 100644 --- a/amdgpu_dm/dc_fpu.c +++ b/amdgpu_dm/dc_fpu.c @@ -89,6 +89,7 @@ void dc_fpu_begin(const char *function_name, const int line) if (*pcpu == 1) { #if defined(CONFIG_X86) + migrate_disable(); kernel_fpu_begin(); #elif defined(CONFIG_PPC64) 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 defined(CONFIG_X86) kernel_fpu_end(); + migrate_enable(); #elif defined(CONFIG_PPC64) if (cpu_has_feature(CPU_FTR_VSX_COMP)) { disable_kernel_vsx(); -- 2.34.1