<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xmlns="http://www.w3.org/TR/REC-html40" xmlns:st1 = 
"urn:schemas-microsoft-com:office:smarttags" xmlns:w = 
"urn:schemas-microsoft-com:office:word" xmlns:o = 
"urn:schemas-microsoft-com:office:office"><HEAD><!--[if !mso]> 
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<STYLE>st1\:* {
        BEHAVIOR: url(#default#ieooui)
}
</STYLE>
<![endif]-->
<STYLE>@page Section1 {size: 612.0pt 792.0pt; margin: 72.0pt 77.95pt 72.0pt 77.95pt; }
P.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
LI.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
DIV.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
A:link {
        COLOR: blue; TEXT-DECORATION: underline
}
SPAN.MsoHyperlink {
        COLOR: blue; TEXT-DECORATION: underline
}
A:visited {
        COLOR: purple; TEXT-DECORATION: underline
}
SPAN.MsoHyperlinkFollowed {
        COLOR: purple; TEXT-DECORATION: underline
}
P.MsoPlainText {
        FONT-SIZE: 10pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Courier New"
}
LI.MsoPlainText {
        FONT-SIZE: 10pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Courier New"
}
DIV.MsoPlainText {
        FONT-SIZE: 10pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Courier New"
}
DIV.Section1 {
        page: Section1
}
</STYLE>

<META content="MSHTML 6.00.6000.16587" name=GENERATOR></HEAD>
<BODY lang=EN-US vLink=purple link=blue>
<DIV>
<DIV><FONT face=Arial size=2><SPAN class=394483108-17072008>Hi 
Slava,</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=394483108-17072008></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=394483108-17072008><SPAN 
class=252425610-17072008>It would be nice if the guids can be byte swapped so 
they will fit the guids that are reported by vstat and 
opensm.</SPAN></SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=394483108-17072008></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=394483108-17072008>I have tried to work 
with the new partition code but with no real success.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=394483108-17072008>As a meter of fact, 
applying the code that you have sent prevents on many cases the machine from 
going up.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=394483108-17072008>This is true for 
Connectx cards as well as Infinihost III cards (a.k.a. 
Sinai)</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=394483108-17072008></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=394483108-17072008>The main problem 
that I was able to discover is that if the function __ib_mgr_init() returns 
IB_NOT_FOUND we get into a state that we can never came out of. That is the port 
will never come up / or stay down.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=394483108-17072008>Getting into this 
situation can happen very easily if you are not connected to a managment switch 
( or probably not connected to a cable at all). </SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=394483108-17072008>In this case, the 
check if( ca_attr->p_port_attr->link_state == IB_LINK_ACTIVE) will always 
fail, and the result will be that we will always be stacked with returning 
IB_NOT_FOUND.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=394483108-17072008></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=394483108-17072008>Please note that 
before your checkin in the case that the state was not up, we have continued in 
creating in the normal running of this function.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=394483108-17072008></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=394483108-17072008>After I have fixed 
that the machine can go up, but parti<SPAN class=252425610-17072008>ti</SPAN>on 
doesn't still work. I reach the code</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=394483108-17072008>  for(index = 0; index < 
ca_attr->p_port_attr->num_pkeys; 
index++)<BR>  {<BR>   if(cl_hton16(p_port->p_adapter->guids.port_guid.pkey) 
== 
ca_attr->p_port_attr->p_pkey_table[index])<BR>    break;<BR>  }</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=394483108-17072008>but 
ca_attr->p_port_attr->p_pkey_table seems to contain only 0xffff and 
0x0000. I don't see the pkeys that I have added on the card.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=394483108-17072008></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=394483108-17072008>After more checks I 
have came to conclusion that even before applying your patch ipoib partions have 
stopped working on the current version of the stack.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=394483108-17072008></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=394483108-17072008><SPAN 
class=252425610-17072008>Thanks</SPAN></SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=394483108-17072008><SPAN 
class=252425610-17072008>Tzachi</SPAN></SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=394483108-17072008></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=394483108-17072008>And one last thing: 
while running with your patch, and trying to disable the ibbus, I have 
also reached the following bugcheck. (not 100% sure if it is related to your 
changes or not).</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>MODULE_NAME: ibbus</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>FAULTING_MODULE: 80800000 nt</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>DEBUG_FLR_IMAGE_TIMESTAMP:  
487eecc5</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - The 
instruction at "0x%08lx" referenced memory at "0x%08lx". The memory could not be 
"%s".</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>FAULTING_IP: 
<BR>nt!IoInvalidateDeviceRelations+13<BR>8080cd0f 8b86b0000000    
mov     eax,dword ptr [esi+0B0h]</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>EXCEPTION_RECORD:  f78e6958 -- (.exr 
fffffffff78e6958)<BR>ExceptionAddress: 8080cd0f 
(nt!IoInvalidateDeviceRelations+0x00000013)<BR>   ExceptionCode: 
c0000005 (Access violation)<BR>  ExceptionFlags: 
00000000<BR>NumberParameters: 2<BR>   Parameter[0]: 
00000000<BR>   Parameter[1]: 004600e1<BR>Attempt to read from address 
004600e1</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>CONTEXT:  f78e6654 -- (.cxr 
fffffffff78e6654)<BR>eax=89c39d78 ebx=89cbac30 ecx=00000000 edx=89c730b8 
esi=00460031 edi=89cbace8<BR>eip=8080cd0f esp=f78e6a20 ebp=f78e6a24 
iopl=0         nv up ei pl nz na po 
nc<BR>cs=0008  ss=0010  ds=0023  es=0023  fs=0030  
gs=0000             
efl=00010202<BR>nt!IoInvalidateDeviceRelations+0x13:<BR>8080cd0f 
8b86b0000000    mov     eax,dword ptr 
[esi+0B0h] ds:0023:004600e1=????????<BR>Resetting default scope</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>DEFAULT_BUCKET_ID:  WRONG_SYMBOLS</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>BUGCHECK_STR:  0x7E</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>LAST_CONTROL_TRANSFER:  from ba81a6f5 to 
8080cd0f</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>STACK_TEXT:  <BR>WARNING: Stack unwind 
information not available. Following frames may be wrong.<BR>f78e6a24 ba81a6f5 
00460031 00000000 00000000 nt!IoInvalidateDeviceRelations+0x13<BR>f78e6a50 
ba821e5e 89d66008 00000001 00000001 ibbus!free_port_mgr+0x325 
[q:\openib\trunk\core\bus\kernel\bus_port_mgr.c @ 400]<BR>f78e6a74 ba821b38 
89d66028 f78e6a90 00000001 ibbus!__destroy_cb+0xfe 
[q:\openib\trunk\core\complib\cl_obj.c @ 779]<BR>f78e6a94 ba8213f4 89d66008 
00000001 00000002 ibbus!__destroy_obj+0x108 
[q:\openib\trunk\core\complib\cl_obj.c @ 709]<BR>f78e6aa8 ba8e80d1 89d66008 
00000001 00000001 ibbus!cl_obj_destroy+0x54 
[q:\openib\trunk\core\complib\cl_obj.c @ 313]<BR>f78e6ac4 ba81f93e 8a0dd5f0 
8a0dd6a8 f78e6af0 ibbus!fdo_release_resources+0x131 
[q:\openib\trunk\core\bus\kernel\bus_pnp.c @ 384]<BR>f78e6ad8 ba8f8474 8a0dd5f0 
89cbac30 f78e6b9c ibbus!cl_do_remove+0xde 
[q:\openib\trunk\core\complib\kernel\cl_pnp_po.c @ 693]<BR>f78e6af8 ba8f54c4 
8a0dd5f0 89cbac30 f78e6b9c ibbus!__remove+0x104 
[q:\openib\trunk\core\complib\kernel\cl_pnp_po.c @ 661]<BR>f78e6ba4 8083f9d0 
8a0dd5f0 89cbac30 f78e6c34 ibbus!cl_pnp+0xe44 
[q:\openib\trunk\core\complib\kernel\cl_pnp_po.c @ 260]<BR>f78e6bb8 808f6a25 
8a3ad280 8a3ad280 8a3ad130 nt!IofCallDriver+0x38<BR>f78e6be4 808e20b5 8a0dd5f0 
f78e6c10 00000000 nt!ObMakeTemporaryObject+0x549<BR>f78e6c38 8080beae 8a3ad280 
00000002 00000000 nt!IoForwardIrpSynchronously+0x1414<BR>f78e6c60 808e149b 
e1614330 00000016 e22e34d8 nt!IoDetachDevice+0xcd<BR>f78e6c78 808e18cc 8a3ad130 
00000002 e22e34d8 nt!IoForwardIrpSynchronously+0x7fa<BR>f78e6cac 808e1732 
8a3ad280 022e34d8 00000002 nt!IoForwardIrpSynchronously+0xc2b<BR>f78e6d40 
808e19b6 f78e6d7c 8a37544c e2292868 
nt!IoForwardIrpSynchronously+0xa91<BR>f78e6d5c 808e7879 f78e6d7c 8a38b660 
808b70dc nt!IoForwardIrpSynchronously+0xd15<BR>f78e6d80 8083f72e 88351230 
00000000 8a38b660 nt!ExCreateCallback+0x258<BR>f78e6dac 8092ccff 88351230 
00000000 00000000 nt!KeRemoveQueue+0x2cb<BR>f78e6ddc 80841a96 8083f671 00000001 
00000000 nt!ObAssignSecurity+0x228<BR>00000000 00000000 00000000 00000000 
00000000 
nt!PsGetCurrentThreadWin32ThreadAndEnterCriticalRegion+0xd5</FONT></DIV>
<DIV> </DIV><FONT face=Arial size=2>
<DIV><BR>FOLLOWUP_IP: <BR>ibbus!free_port_mgr+325 
[q:\openib\trunk\core\bus\kernel\bus_port_mgr.c @ 400]<BR>ba81a6f5 
8b55f8          
mov     edx,dword ptr [ebp-8]</DIV>
<DIV> </DIV>
<DIV>FAULTING_SOURCE_CODE:  <BR>   396: 
   IoInvalidateDeviceRelations(<BR>   397: 
    p_ext->h_ca->obj.p_ci_ca->verbs.p_hca_dev, 
BusRelations );<BR>   398: <BR>   399:    /* 
Release the reference on the CA object. */<BR>>  400: 
   deref_al_obj( &p_ext->h_ca->obj );<BR>   
401:   }<BR>   402:   BUS_TRACE( BUS_DBG_PNP, 
("Deleted device %s: PDO %p, ext %p\n",<BR>   403: 
   p_ext->cl_ext.vfptr_pnp_po->identity, 
p_ext->cl_ext.p_self_do, p_ext ) );<BR>   404: 
  IoDeleteDevice( p_ext->cl_ext.p_self_do );<BR>   405: 
 }</DIV>
<DIV> </DIV>
<DIV><BR>SYMBOL_STACK_INDEX:  1</DIV>
<DIV> </DIV>
<DIV>SYMBOL_NAME:  ibbus!free_port_mgr+325</DIV>
<DIV> </DIV>
<DIV>FOLLOWUP_NAME:  MachineOwner</DIV>
<DIV> </DIV>
<DIV>IMAGE_NAME:  ibbus.sys</DIV>
<DIV> </DIV>
<DIV>STACK_COMMAND:  .cxr 0xfffffffff78e6654 ; kb</DIV>
<DIV> </DIV>
<DIV>BUCKET_ID:  WRONG_SYMBOLS</DIV>
<DIV> </DIV>
<DIV>Followup: MachineOwner<BR>---------<BR></FONT></DIV></DIV><BR>
<BLOCKQUOTE dir=ltr 
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
  <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
  <HR tabIndex=-1>
  <FONT face=Tahoma size=2><B>From:</B> Slava Strebkov 
  [mailto:slavas@voltaire.com] <BR><B>Sent:</B> Thursday, July 17, 2008 8:37 
  AM<BR><B>To:</B> Tzachi Dar<BR><B>Cc:</B> 
  ofw@lists.openfabrics.org<BR><B>Subject:</B> RE: [ofw] RE: IPoIB partition 
  patch<BR></FONT><BR></DIV>
  <DIV></DIV>
  <DIV class=Section1>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">Hi Tzachi,<o:p></o:p></SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">Please see my answers 
  below.<o:p></o:p></SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p> </o:p></SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">-----Original Message-----<BR>From: Tzachi Dar 
  [mailto:tzachid@mellanox.co.il] <BR>Sent: Wednesday, July 16, 2008 11:48 
  PM<BR>To: <st1:PersonName w:st="on">Slava Strebkov</st1:PersonName><BR>Cc: 
  ofw@lists.openfabrics.org<BR>Subject: RE: [ofw] RE: IPoIB partition 
  patch</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p> </o:p></SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt"> <o:p></o:p></SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">Hi Slava,<o:p></o:p></SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p> </o:p></SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">I have been looking at the partition patch and I have 
  two questions:<o:p></o:p></SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p> </o:p></SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">1) The function bus_add_pkey can be called twice. Once 
  from proxy_ioctl<o:p></o:p></SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">and once from ioc_ioctl. I guess that one of them is 
  redundant. Is that<o:p></o:p></SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">true?<o:p></o:p></SPAN></FONT></P>
  <P class=MsoPlainText><B><FONT face="Courier New" size=2><SPAN 
  style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: black">Yes, proxy_ioctl is 
  redundant, sorry I forgot to remove. <o:p></o:p></SPAN></FONT></B></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p> </o:p></SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">2) I have noticed that when entering guids I have to 
  do a byte swap of<o:p></o:p></SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">the GUID. That is if I look at the GUID as it is 
  printed by vstat than I<o:p></o:p></SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">have to do the swap manually. Is there any reason for 
  that?<o:p></o:p></SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt"><o:p> </o:p></SPAN></FONT></P>
  <P class=MsoPlainText><B><FONT face="Courier New" size=2><SPAN 
  style="FONT-WEIGHT: bold; FONT-SIZE: 10pt">I took GUID from Device manager 
  (device ID). That’s the only reason for byte 
  swap.<o:p></o:p></SPAN></FONT></B></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: black"><o:p> </o:p></SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">Thanks<o:p></o:p></SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">Tzachi<o:p></o:p></SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt; COLOR: black"><o:p> </o:p></SPAN></FONT></P>
  <P class=MsoPlainText><B><FONT face="Courier New" size=2><SPAN 
  style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: black">Thanks<o:p></o:p></SPAN></FONT></B></P>
  <P class=MsoPlainText><B><FONT face="Courier New" size=2><SPAN 
  style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: black">Slava<o:p></o:p></SPAN></FONT></B></P></DIV></BLOCKQUOTE></BODY></HTML>