<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:DengXian;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@DengXian";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="#954F72" style="word-wrap:break-word">
<p style="font-family:Arial;font-size:10pt;color:#0000FF;margin:5pt;" align="Left">
[AMD Official Use Only - General]<br>
</p>
<br>
<div>
<div class="WordSection1">
<p class="MsoNormal"><span style="mso-fareast-language:ZH-CN">Loop  Charlie.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:ZH-CN"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:ZH-CN">Thanks,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:ZH-CN">Rico</span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">
Mail</a> for Windows</p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="border:none;padding:0in"><b>From: </b><a href="mailto:tianci.yin@amd.com">Tianci Yin</a><br>
<b>Sent: </b>Monday, February 6, 2023 3:59 PM<br>
<b>To: </b><a href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a><br>
<b>Cc: </b><a href="mailto:Harry.Wentland@amd.com">Wentland, Harry</a>; <a href="mailto:Rodrigo.Siqueira@amd.com">
Siqueira, Rodrigo</a>; <a href="mailto:Aurabindo.Pillai@amd.com">Pillai, Aurabindo</a>;
<a href="mailto:Tianci.Yin@amd.com">Yin, Tianci (Rico)</a><br>
<b>Subject: </b>[PATCH] drm/amd/display: Disable migration to ensure consistency of per-CPU variable</p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-bottom:12.0pt">From: tiancyin <tianci.yin@amd.com><br>
<br>
[why]<br>
Since the variable fpu_recursion_depth is per-CPU type, it has one copy<br>
on each CPU, thread migration causes data consistency issue, then the<br>
call trace shows up. And preemption disabling can't prevent migration.<br>
<br>
[how]<br>
Disable migration to ensure consistency of fpu_recursion_depth.<br>
<br>
Signed-off-by: tiancyin <tianci.yin@amd.com><br>
---<br>
 amdgpu_dm/dc_fpu.c | 2 ++<br>
 1 file changed, 2 insertions(+)<br>
<br>
diff --git a/amdgpu_dm/dc_fpu.c b/amdgpu_dm/dc_fpu.c<br>
index 1743ca0a36..c42aa947c9 100644<br>
--- a/amdgpu_dm/dc_fpu.c<br>
+++ b/amdgpu_dm/dc_fpu.c<br>
@@ -89,6 +89,7 @@ void dc_fpu_begin(const char *function_name, const int line)<br>
 <br>
         if (*pcpu == 1) {<br>
 #if defined(CONFIG_X86)<br>
+               migrate_disable();<br>
                 kernel_fpu_begin();<br>
 #elif defined(CONFIG_PPC64)<br>
                 if (cpu_has_feature(CPU_FTR_VSX_COMP)) {<br>
@@ -129,6 +130,7 @@ void dc_fpu_end(const char *function_name, const int line)<br>
         if (*pcpu <= 0) {<br>
 #if defined(CONFIG_X86)<br>
                 kernel_fpu_end();<br>
+               migrate_enable();<br>
 #elif defined(CONFIG_PPC64)<br>
                 if (cpu_has_feature(CPU_FTR_VSX_COMP)) {<br>
                         disable_kernel_vsx();<br>
-- <br>
2.34.1<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</body>
</html>