<html xmlns:v="urn:schemas-microsoft-com:vml" 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:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Segoe UI";
        panose-1:2 11 5 2 4 2 4 2 2 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin-top:0in;
        margin-right:0in;
        margin-bottom:8.0pt;
        margin-left:0in;
        line-height:106%;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Hi Christian,<o:p></o:p></p>
<p class="MsoNormal">As you know, we’re working on the HMM enablement. Im working on the dGPU page table entries invalidation on the userptr mapping case. Currently, the MMU notifiers handle stops all user mode queues, schedule a delayed worker to re-validate
 userptr mappings and restart the queues. <o:p></o:p></p>
<p class="MsoNormal">Part of the HMM functionality, we need to invalidate the page table entries instead of stopping the queues. At the same time we need to move the revalidation of the userptr mappings into the page fault handler.<o:p></o:p></p>
<p class="MsoNormal">We’re seeing a deadlock warning after we try to invalidate the PTEs inside the MMU notifier handler. More specific, when we try to update the BOs to invalidate PTEs using amdgpu_vm_bo_update. This uses kmalloc on the amdgpu_job_alloc which
 seems to be causing this problem.<o:p></o:p></p>
<p class="MsoNormal">Based on <a id="OWAAMBC6F9A316D814AE993661FC111776926" href="mailto:Felix.Kuehling@amd.com">
<span style="font-family:"Calibri",sans-serif;text-decoration:none">@Kuehling, Felix</span></a> comments,
<span style="font-size:10.5pt;line-height:106%;font-family:"Segoe UI",sans-serif">
kmalloc without any special flags can cause memory reclaim. Doing that inside an MMU notifier is problematic, because an MMU notifier may be called inside a memory-reclaim operation itself. That would result in recursion. Also, reclaim shouldn't be done while
 holding a lock that can be taken in an MMU notifier for the same reason. If you cause a reclaim while holding that lock, then an MMU notifier called by the reclaim can deadlock trying to take the same lock.<o:p></o:p></span></p>
<p class="MsoNormal">Please let us know if you have any advice to enable this the right way<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks in advanced,<o:p></o:p></p>
<p class="MsoNormal">Alejandro<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>