RE: [PATCH] drm/amd/display: Disable migration to ensure consistency of per-CPU variable

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[AMD Official Use Only - General]


Loop  Charlie.

 

Thanks,

Rico

 

Sent from Mail for Windows

 

From: Tianci Yin
Sent: Monday, February 6, 2023 3:59 PM
To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx
Cc: Wentland, Harry; Siqueira, Rodrigo; Pillai, Aurabindo; Yin, Tianci (Rico)
Subject: [PATCH] drm/amd/display: Disable migration to ensure consistency of per-CPU variable

 

From: tiancyin <tianci.yin@xxxxxxx>

[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.yin@xxxxxxx>
---
 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

 


[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux