<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">When adding fences to a reservation
object all newly added fences must be created after all existing
fences.<br>
<br>
In other words when adding a shared fence the caller must
guarantee that all existing fences of the same context must be
completed before this new one. Because of this we can safely
replace the existing fence with the new one.<br>
<br>
When adding an exclusive fence the caller must guarantee that all
existing fences of that reservation object must complete before
this new one. Because of this we can safely throw away all
existing fences as well as the old exclusive fence.<br>
<br>
Regards,<br>
Christian.<br>
<br>
Am 06.03.2018 um 11:10 schrieb Liu, Monk:<br>
</div>
<blockquote type="cite"
cite="mid:BLUPR12MB0449D4275DF065F8BBB9E77684D90@BLUPR12MB0449.namprd12.prod.outlook.com">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="Generator" content="Microsoft Word 15 (filtered
medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]-->
<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:"Microsoft YaHei";
panose-1:2 11 5 3 2 2 4 2 2 4;}
@font-face
{font-family:"Microsoft YaHei";}
@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:0cm;
margin-bottom:.0001pt;
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;}
p.msonormal0, li.msonormal0, div.msonormal0
{mso-style-name:msonormal;
margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
span.EmailStyle20
{mso-style-type:personal-reply;
font-family:DengXian;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;}
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]-->
<div class="WordSection1">
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:DengXian" lang="EN-US">Oh,
I see
<o:p></o:p></span></p>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> </span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#C586C0" lang="EN-US">for</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> (i = </span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#B5CEA8" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#B5CEA8" lang="EN-US">0</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US">; i < fobj-></span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#9CDCFE" lang="EN-US">shared_count</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US">; ++i) {<o:p></o:p></span></p>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> </span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#569CD6" lang="EN-US">struct</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> dma_fence *old_fence;<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:DengXian" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:DengXian" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:DengXian" lang="EN-US">Since
it use I < fobj->shared_count, then the wild pointer
access won’t hit, please ignore question 1<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:DengXian" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:DengXian" lang="EN-US">The
only valuable is question 2: how we treat excl fence and
shared fence?
<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:DengXian" lang="EN-US">e.g.
when we add an excl fence to resv, how to deal with shared ?
current logic is just put the all
<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:DengXian" lang="EN-US">do
we need to wait on their signaling before putting them ?<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:DengXian" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:DengXian" lang="EN-US">thanks
<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:DengXian" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:DengXian" lang="EN-US">/Monk<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:DengXian" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:DengXian" lang="EN-US"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1
1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US">From:</span></b><span
lang="EN-US"> Liu, Monk
<br>
<b>Sent:</b> 2018</span><span
style="font-family:"微软雅黑",sans-serif">年</span><span
lang="EN-US">3</span><span
style="font-family:"微软雅黑",sans-serif">月</span><span
lang="EN-US">6</span><span
style="font-family:"微软雅黑",sans-serif">日</span><span
lang="EN-US"> 17:57<br>
<b>To:</b> <a class="moz-txt-link-abbreviated" href="mailto:dri-devel@lists.freedesktop.org">dri-devel@lists.freedesktop.org</a>; Chris Wilson
<a class="moz-txt-link-rfc2396E" href="mailto:chris@chris-wilson.co.uk"><chris@chris-wilson.co.uk></a>; Koenig, Christian
<a class="moz-txt-link-rfc2396E" href="mailto:Christian.Koenig@amd.com"><Christian.Koenig@amd.com></a><br>
<b>Subject:</b> Re: reservation questions <o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<div id="divtagdefaultwrapper">
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><br>
</span><span style="font-size:12.0pt;color:red"
lang="EN-US">sorry, I have some mistake in previous
thread, correct it as followings.</span><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">1) considering
below sequence:<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">call
reservation_object_add_shared_fence,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">now
assume old->shared_count is now 3<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">call
reservation_object_add_shared_fence,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">now
assume old->shared_count is now 4,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">call
reservation_object_reserve_shared,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">now
obj->staged is new allocated, and its shared_max = 8,
but not<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">used
by far.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">call
reservation_object_add_excl_fence,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">it set
obj->fence->shared_count to 0, <b>and put all
shared fence from obj->fence without waiting
signaling.</b><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">(this
action looks inappropriate, I think at least before put
all those shared fences<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">we
should dma_wait_fence() on them to make sure they are
signaled)<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">call
reservation_object_reserve_shared,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><b><span
style="font-size:12.0pt;color:black" lang="EN-US">this
time obj->staged isn't NULL, and it is freed</span></b><span
style="font-size:12.0pt;color:black" lang="EN-US"> (nothing
bad now<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">since
obj->fence points to other place),<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">and
obj->staged set to NULL,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:#006FC9" lang="EN-US">call
reservation_object_add_shared_fence,</span><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:#006FC9" lang="EN-US">this
time should going through
<b>reservation_object_add_shared_inplace</b>,</span><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:#006FC9" lang="EN-US">since
old->shared_count is 1 now, during <b>reservation_object_add_shared_inplace</b>()</span><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:#006FC9" lang="EN-US">it
would go through the shared list, but the fence in
shared list is now wild pointer:</span><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p></o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> </span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#C586C0" lang="EN-US">for</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> (i = </span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#B5CEA8" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#B5CEA8" lang="EN-US">0</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US">; i <
fobj-></span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#9CDCFE" lang="EN-US">shared_count</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US">; ++i) {<o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> </span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#569CD6" lang="EN-US">struct</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> dma_fence
*old_fence;<o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><br>
<br>
<o:p></o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><b><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> old_fence
=
</span></b><b><span
style="font-size:10.5pt;font-family:"Courier
New";color:#DCDCAA" lang="EN-US">rcu_dereference_protected</span></b><b><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US">(fobj-></span></b><b><span
style="font-size:10.5pt;font-family:"Courier
New";color:#9CDCFE" lang="EN-US">shared</span></b><b><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US">[i],</span></b><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><b><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> </span></b><b><span
style="font-size:10.5pt;font-family:"Courier
New";color:#DCDCAA" lang="EN-US">reservation_object_held</span></b><b><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US">(obj));</span></b><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><br>
<br>
<o:p></o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> </span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#C586C0" lang="EN-US">if</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US">
(old_fence-></span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#9CDCFE" lang="EN-US">context</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> == fence-></span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#9CDCFE" lang="EN-US">context</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> &&<o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> </span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#DCDCAA" lang="EN-US">dma_fence_is_later</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US">(fence,
old_fence)) {<o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> </span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#608B4E" lang="EN-US">/* memory
barrier is added by write_seqcount_begin */</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> </span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#DCDCAA" lang="EN-US">RCU_INIT_POINTER</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US">(fobj-></span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#9CDCFE" lang="EN-US">shared</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US">[i], fence);<o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> </span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#DCDCAA" lang="EN-US">write_seqcount_end</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US">(&obj-></span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#9CDCFE" lang="EN-US">seq</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US">);<o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> </span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#DCDCAA" lang="EN-US">preempt_enable</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US">();<o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><br>
<br>
<o:p></o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> </span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#DCDCAA" lang="EN-US">dma_fence_put</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US">(old_fence);<o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> </span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#C586C0" lang="EN-US">return</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US">;<o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> }<o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><br>
<br>
<o:p></o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> </span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#C586C0" lang="EN-US">if</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> (!signaled
&& </span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#DCDCAA" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#DCDCAA" lang="EN-US">dma_fence_is_signaled</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US">(old_fence)) {<o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> signaled
= old_fence;<o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> signaled_idx
= i;<o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> }<o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> }<o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
</div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">see
that old_fence is get from fobj, and fobj is from </span><span
style="font-size:10.5pt;font-family:"Courier
New";color:black" lang="EN-US">reservation_object_get_list(obj)</span><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:"Courier
New";color:black" lang="EN-US">in outside, which is
obj->fence, and in add_excl_fence, all dma_fence in</span><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:10.5pt;font-family:"Courier
New";color:black" lang="EN-US">obj->fence is
already put.</span><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">/Monk<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<div class="MsoNormal" style="text-align:center" align="center"><span
lang="EN-US">
<hr align="center" size="3" width="98%">
</span></div>
<div id="divRplyFwdMsg">
<p class="MsoNormal"><b><span style="color:black" lang="EN-US">From:</span></b><span
style="color:black" lang="EN-US"> Liu, Monk<br>
<b>Sent:</b> Tuesday, March 6, 2018 5:45:19 PM<br>
<b>To:</b> <a
href="mailto:dri-devel@lists.freedesktop.org"
moz-do-not-send="true">dri-devel@lists.freedesktop.org</a>;
Chris Wilson; Koenig, Christian<br>
<b>Subject:</b> reservation questions </span><span
lang="EN-US"><o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span lang="EN-US"> <o:p></o:p></span></p>
</div>
</div>
<div>
<div id="x_divtagdefaultwrapper">
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">Hi
Christian & Chris<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">two
question regarding resv:<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">1) considering
below sequence:<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">call
reservation_object_add_shared_fence,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">now
assume old->shared_count is now 3<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">call
reservation_object_add_shared_fence,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">now
assume old->shared_count is now 4,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">call
reservation_object_reserve_shared,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">now
obj->staged is new allocated, and its shared_max =
8, but not<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">used
by far.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">call
reservation_object_add_excl_fence,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">it
set obj->fence->shared_count to 0,
<b>and put all shared fence from obj->fence without
waiting signaling.</b><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">(this
action looks inappropriate, I think at least before
put all those shared fences<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">we
should dma_wait_fence() on them to make sure they are
signaled)<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">call
reservation_object_reserve_shared,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><b><span
style="font-size:12.0pt;color:black" lang="EN-US">this
time obj->staged isn't NULL, and it is freed</span></b><span
style="font-size:12.0pt;color:black" lang="EN-US">
(nothing bad now<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">since
obj->fence points to other place),<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">and
obj->staged set to NULL,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">call
reservation_object_add_shared_fence,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">this
time should going through
reservation_object_add_shared_inplace,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><b><span
style="font-size:12.0pt;color:black" lang="EN-US">But
BUG_ON(old->shared_count >=
old->shared_max) will hit !</span></b><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">This
looks a design flaw in reservation object, shouldn't
we fix it ?<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">2) in
add_excl_fence(), it simply set old->shared_count
to 0, and put all shared fences of old<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">is
that correct? if excl fence is really exclusively
used, why we still consider both shared fence and<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">excl
fence on wait_timeout_rcu() routine, see blew
description of this routine<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><br>
<br>
<o:p></o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#608B4E" lang="EN-US">/**</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#608B4E" lang="EN-US">*
reservation_object_wait_timeout_rcu - Wait on
reservation's objects</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#608B4E" lang="EN-US">* shared
and/or exclusive fences.</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#608B4E" lang="EN-US">* @obj: the
reservation object</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#608B4E" lang="EN-US">* @wait_all:
if true, wait on all fences, else wait on just
exclusive fence</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#608B4E" lang="EN-US">* @intr: if
true, do interruptible wait</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#608B4E" lang="EN-US">* @timeout:
timeout value in jiffies or zero to return
immediately</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#608B4E" lang="EN-US">*</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#608B4E" lang="EN-US">* RETURNS</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#608B4E" lang="EN-US">* Returns
-ERESTARTSYS if interrupted, 0 if the wait timed
out, or</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#608B4E" lang="EN-US">* greater
than zer on success.</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#608B4E" lang="EN-US">*/</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#569CD6" lang="EN-US">long</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US">
</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#DCDCAA" lang="EN-US">reservation_object_wait_timeout_rcu</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US">(</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#569CD6" lang="EN-US">struct</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US">
reservation_object *obj,<o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US">
</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#569CD6" lang="EN-US">bool</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> wait_all,
</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#569CD6" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#569CD6" lang="EN-US">bool</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> intr,<o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US">
</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#569CD6" lang="EN-US">unsigned</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US">
</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#569CD6" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#569CD6" lang="EN-US">long</span><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"> timeout)<o:p></o:p></span></p>
</div>
<p class="MsoNormal"
style="line-height:14.25pt;background:#1E1E1E"><span
style="font-size:10.5pt;font-family:"Courier
New";color:#D4D4D4" lang="EN-US"><o:p> </o:p></span></p>
</div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"> <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">thanks<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US">/Monk<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
<p class="MsoNormal"><span
style="font-size:12.0pt;color:black" lang="EN-US"><o:p> </o:p></span></p>
</div>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
dri-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:dri-devel@lists.freedesktop.org">dri-devel@lists.freedesktop.org</a>
<a class="moz-txt-link-freetext" href="https://lists.freedesktop.org/mailman/listinfo/dri-devel">https://lists.freedesktop.org/mailman/listinfo/dri-devel</a>
</pre>
</blockquote>
<br>
</body>
</html>