<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:st1="urn:schemas-microsoft-com:office:smarttags" 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 11 (filtered medium)">
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
 name="place"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
 name="State"/>
<!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 77.95pt 1.0in 77.95pt;}
div.Section1
        {page:Section1;}
 /* List Definitions */
 @list l0
        {mso-list-id:1183662237;
        mso-list-type:hybrid;
        mso-list-template-ids:381452790 -1554903060 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-start-at:2;
        mso-level-text:"%1\)";
        mso-level-tab-stop:1.25in;
        mso-level-number-position:left;
        margin-left:1.25in;
        text-indent:-.75in;}
@list l1
        {mso-list-id:1847397450;
        mso-list-type:hybrid;
        mso-list-template-ids:1828340426 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l1:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        margin-left:1.0in;
        text-indent:-.25in;
        font-family:Symbol;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>Hi,<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'><o:p> </o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>Our driver product is based on WinOF1.1. Recently I saw a problem that
Windows cannot shut down. The procedure and observation are as follows:<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'><o:p> </o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>Install the driver, when there is still some traffic going on, reboot
the system.<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'><o:p> </o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>We do the following in our driver, and everything seems working until
reboot.<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'><o:p> </o:p></span></font></p>

<p class=MsoPlainText style='margin-left:1.0in;text-indent:-.25in;mso-list:
l1 level1 lfo1'><![if !supportLists]><font size=2 face=Symbol><span
style='font-size:10.0pt;font-family:Symbol'><span style='mso-list:Ignore'>·<font
size=1 face="Times New Roman"><span style='font:7.0pt "Times New Roman"'>        
</span></font></span></span></font><![endif]>create_cq() :   one
receive queue and one send queue, and set the callback function<o:p></o:p></p>

<p class=MsoPlainText style='margin-left:.5in'><font size=2 face="Courier New"><span
style='font-size:10.0pt'><o:p> </o:p></span></font></p>

<p class=MsoPlainText style='margin-left:1.0in;text-indent:-.25in;mso-list:
l1 level1 lfo1'><![if !supportLists]><font size=2 face=Symbol><span
style='font-size:10.0pt;font-family:Symbol'><span style='mso-list:Ignore'>·<font
size=1 face="Times New Roman"><span style='font:7.0pt "Times New Roman"'>        
</span></font></span></span></font><![endif]>create_qp() with the above created
queues, and set init state IB_QPS_INIT<o:p></o:p></p>

<p class=MsoPlainText style='margin-left:.5in'><font size=2 face="Courier New"><span
style='font-size:10.0pt'><o:p> </o:p></span></font></p>

<p class=MsoPlainText style='margin-left:1.0in;text-indent:-.25in;mso-list:
l1 level1 lfo1'><![if !supportLists]><font size=2 face=Symbol><span
style='font-size:10.0pt;font-family:Symbol'><span style='mso-list:Ignore'>·<font
size=1 face="Times New Roman"><span style='font:7.0pt "Times New Roman"'>        
</span></font></span></span></font><![endif]>cm_req() with the QP and correct
connection path<o:p></o:p></p>

<p class=MsoPlainText style='margin-left:.5in'><font size=2 face="Courier New"><span
style='font-size:10.0pt'><o:p> </o:p></span></font></p>

<p class=MsoPlainText style='margin-left:1.0in;text-indent:-.25in;mso-list:
l1 level1 lfo1'><![if !supportLists]><font size=2 face=Symbol><span
style='font-size:10.0pt;font-family:Symbol'><span style='mso-list:Ignore'>·<font
size=1 face="Times New Roman"><span style='font:7.0pt "Times New Roman"'>        
</span></font></span></span></font><![endif]>post_recv() with 100 package
buffer for receiving data<o:p></o:p></p>

<p class=MsoPlainText style='margin-left:.5in'><font size=2 face="Courier New"><span
style='font-size:10.0pt'><o:p> </o:p></span></font></p>

<p class=MsoPlainText style='margin-left:1.0in;text-indent:-.25in;mso-list:
l1 level1 lfo1'><![if !supportLists]><font size=2 face=Symbol><span
style='font-size:10.0pt;font-family:Symbol'><span style='mso-list:Ignore'>·<font
size=1 face="Times New Roman"><span style='font:7.0pt "Times New Roman"'>        
</span></font></span></span></font><![endif]>post_send() when necessary<o:p></o:p></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'><o:p> </o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'> <o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>Receive and send are fine with the respective callback invoked,
whenever there is data activity.<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'><o:p> </o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>At certain point during shutdown, when we try to do cm_dreq() to
initialize a disconnecting, the 100 receiving workitems are never being
released, callback functions are never being called. If we continue to destroy
QP, the final result is IB stack can’t do its clean up work because it
still holds some extra reference counter. Message similar to the following line
shows up in debug version:<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'><o:p> </o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>[<st1:State w:st="on">AL</st1:State>]print_al_obj() !ERROR!: <st1:State
w:st="on"><st1:place w:st="on">AL</st1:place></st1:State> object
fffffadf379c8280(AL_OBJ_TYPE_H_AL),<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'><o:p> </o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'><o:p> </o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>It seems the <st1:State w:st="on"><st1:place w:st="on">AL</st1:place></st1:State>
handle we open can’t be destroyed. But I doubt maybe we already are in a
bad state before that.<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'><o:p> </o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>Winddbg stack, this is on x64 Win2003 server:<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>        fffffadf`2664e880
fffff800`01027682 nt!KiSwapContext+0x85<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>        fffffadf`2664ea00
fffff800`0102828e nt!KiSwapThread+0x3c9<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>        fffffadf`2664ea60
fffffadf`25ac7a3d nt!KeWaitForSingleObject+0x5a6<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>        fffffadf`2664eae0 fffffadf`25b5fca8
ibbus!cl_event_wait_on+0x11d
[c:\windows-openib\src\winib-1176g\core\complib\kernel\cl_event.c @ 59]<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>        fffffadf`2664eb40
fffffadf`25b0013b ibbus!sync_destroy_obj+0x228
[c:\windows-openib\src\winib-1176g\core\al\al_common.c @ 513]<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>        fffffadf`2664ebb0
fffffadf`25a1f8c7 ibbus!ib_close_al+0x3bb
[c:\windows-openib\src\winib-1176g\core\al\al.c @ 89]<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>        fffffadf`2664ec10
fffffadf`25a1b23f MyDriver!IBAccessLayer::Close+0x77 <o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'><o:p> </o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>The al handle ref_cnt is 1 here.<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'><o:p> </o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>Can anyone shed some light on this? Is this a known issue which is
fixed in WinOF2.0 or is it an unknown problem?<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'><o:p> </o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>Thanks,<o:p></o:p></span></font></p>

<p class=MsoPlainText><font size=2 face="Courier New"><span style='font-size:
10.0pt'>James<o:p></o:p></span></font></p>

</div>

</body>

</html>