<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p><br>
</p>
<div class="moz-cite-prefix">On 6/9/20 7:21 PM, Koenig, Christian
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:f36c1fa1-bbee-477a-9cb2-ed2726f27eef@email.android.com">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<div dir="auto">
<div><br>
<div class="gmail_extra"><br>
<div class="gmail_quote">Am 09.06.2020 18:37 schrieb
"Grodzovsky, Andrey" <a class="moz-txt-link-rfc2396E" href="mailto:Andrey.Grodzovsky@amd.com"><Andrey.Grodzovsky@amd.com></a>:<br
type="attribution">
<blockquote class="quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><font size="2"><span style="font-size:11pt">
<div><br>
On 6/5/20 2:40 PM, Christian König wrote:<br>
> Am 05.06.20 um 16:29 schrieb Andrey
Grodzovsky:<br>
>><br>
>> On 5/11/20 2:45 AM, Christian König
wrote:<br>
>>> Am 09.05.20 um 20:51 schrieb Andrey
Grodzovsky:<br>
>>>> Signed-off-by: Andrey
Grodzovsky <a class="moz-txt-link-rfc2396E" href="mailto:andrey.grodzovsky@amd.com"><andrey.grodzovsky@amd.com></a><br>
>>>> ---<br>
>>>>
drivers/gpu/drm/ttm/ttm_bo.c | 22
+++++++++++++++++++++-<br>
>>>>
include/drm/ttm/ttm_bo_driver.h | 2 ++<br>
>>>> 2 files changed, 23
insertions(+), 1 deletion(-)<br>
>>>><br>
>>>> diff --git
a/drivers/gpu/drm/ttm/ttm_bo.c <br>
>>>> b/drivers/gpu/drm/ttm/ttm_bo.c<br>
>>>> index c5b516f..eae61cc 100644<br>
>>>> ---
a/drivers/gpu/drm/ttm/ttm_bo.c<br>
>>>> +++
b/drivers/gpu/drm/ttm/ttm_bo.c<br>
>>>> @@ -1750,9 +1750,29 @@ void
ttm_bo_unmap_virtual(struct <br>
>>>> ttm_buffer_object *bo)<br>
>>>>
ttm_bo_unmap_virtual_locked(bo);<br>
>>>> ttm_mem_io_unlock(man);<br>
>>>> }<br>
>>>>
+EXPORT_SYMBOL(ttm_bo_unmap_virtual);<br>
>>>> +void
ttm_bo_unmap_virtual_address_space(struct
ttm_bo_device *bdev)<br>
>>>> +{<!-- --><br>
>>>> + struct
ttm_mem_type_manager *man;<br>
>>>> + int i;<br>
>>>>
-EXPORT_SYMBOL(ttm_bo_unmap_virtual);<br>
>>><br>
>>>> + for (i = 0; i <
TTM_NUM_MEM_TYPES; i++) {<!-- --><br>
>>>> + man =
&bdev->man[i];<br>
>>>> + if (man->has_type
&& man->use_type)<br>
>>>> +
ttm_mem_io_lock(man, false);<br>
>>>> + }<br>
>>><br>
>>> You should drop that it will just
result in a deadlock warning for <br>
>>> Nouveau and has no effect at all.<br>
>>><br>
>>> Apart from that looks good to me,<br>
>>> Christian.<br>
>><br>
>><br>
>> As I am considering to re-include this
in V2 of the patchsets, can <br>
>> you clarify please why this will have
no effect at all ?<br>
><br>
> The locks are exclusive for Nouveau to
allocate/free the io address <br>
> space.<br>
><br>
> Since we don't do this here we don't need
the locks.<br>
><br>
> Christian.<br>
<br>
<br>
So basically calling unmap_mapping_range doesn't
require any extra <br>
locking around it and whatever locks are taken
within the function <br>
should be enough ?<br>
</div>
</span></font></div>
</blockquote>
</div>
</div>
</div>
<div dir="auto"><br>
</div>
<div dir="auto">
<div class="gmail_extra">
<div class="gmail_quote">
<blockquote class="quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><font size="2"><span style="font-size:11pt">
</span></font></div>
</blockquote>
</div>
</div>
</div>
<div dir="auto"><br>
</div>
<div dir="auto">I think so, yes.</div>
<div dir="auto"><br>
</div>
<div dir="auto">Christian.</div>
</div>
</blockquote>
<p>Yes, that's true. However, without the bo reservation, nothing
stops a PTE from being immediately re-faulted back again. Even
while unmap_mapping_range() is running. So the device removed flag
needs to be advertized before this function is run, (perhaps with
a memory barrier pair). That should probably be added to the
function documentation. <br>
</p>
<p>(Other than that, please add a commit message if respinning).</p>
<p>/Thomas</p>
<p><br>
</p>
<p><br>
</p>
</body>
</html>