<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xmlns="http://www.w3.org/TR/REC-html40" xmlns:m = 
"http://schemas.microsoft.com/office/2004/12/omml" xmlns:w = 
"urn:schemas-microsoft-com:office:word" xmlns:o = 
"urn:schemas-microsoft-com:office:office" xmlns:v = 
"urn:schemas-microsoft-com:vml"><HEAD><TITLE>RE: [ofw] WDK build environment migration thoughts</TITLE>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<STYLE>@font-face {
        font-family: Cambria Math;
}
@font-face {
        font-family: Calibri;
}
@font-face {
        font-family: Tahoma;
}
@page Section1 {size: 8.5in 11.0in; margin: 1.0in 1.0in 1.0in 1.0in; }
P.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: "Times New Roman","serif"
}
LI.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: "Times New Roman","serif"
}
DIV.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: "Times New Roman","serif"
}
A:link {
        COLOR: blue; TEXT-DECORATION: underline; mso-style-priority: 99
}
SPAN.MsoHyperlink {
        COLOR: blue; TEXT-DECORATION: underline; mso-style-priority: 99
}
A:visited {
        COLOR: purple; TEXT-DECORATION: underline; mso-style-priority: 99
}
SPAN.MsoHyperlinkFollowed {
        COLOR: purple; TEXT-DECORATION: underline; mso-style-priority: 99
}
P {
        FONT-SIZE: 12pt; MARGIN-LEFT: 0in; MARGIN-RIGHT: 0in; FONT-FAMILY: "Times New Roman","serif"; mso-style-priority: 99; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto
}
SPAN.EmailStyle18 {
        COLOR: #1f497d; FONT-FAMILY: "Calibri","sans-serif"; mso-style-type: personal-reply
}
.MsoChpDefault {
        FONT-SIZE: 10pt; mso-style-type: export-only
}
DIV.Section1 {
        page: Section1
}
</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]-->
<META content="MSHTML 6.00.6000.16587" name=GENERATOR></HEAD>
<BODY lang=EN-US vLink=purple link=blue>
<DIV><FONT face=Arial color=#0000ff size=2></FONT> </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> ofw-bounces@lists.openfabrics.org 
  [mailto:ofw-bounces@lists.openfabrics.org] <B>On Behalf Of </B>Alex 
  Estrin<BR><B>Sent:</B> Wednesday, April 30, 2008 10:40 PM<BR><B>To:</B> Fab 
  Tillier; Alex Naslednikov; Smith, Stan; Ishai Rabinovitz<BR><B>Cc:</B> 
  ofw@lists.openfabrics.org<BR><B>Subject:</B> RE: [ofw] WDK build environment 
  migration thoughts<BR></FONT><BR></DIV>
  <DIV></DIV>
  <DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN 
  class=948112219-30042008>Couple more questions regarding the 
  patch:</SPAN></FONT></DIV>
  <DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN 
  class=948112219-30042008></SPAN></FONT> </DIV>
  <DIV dir=ltr align=left><SPAN class=948112219-30042008><FONT face=Arial><FONT 
  color=#0000ff><FONT size=2>1. Why 4 different definitions to replace 
  the same __ptr64? Seem confusing, not mentioning m<SPAN 
  class=948112219-30042008>acro TO_LONG_PTR broke "IntelliSence" feature in 
  VS.<SPAN 
  class=135114120-30042008> </SPAN></SPAN></FONT></FONT></FONT></SPAN></DIV>
  <DIV dir=ltr align=left><SPAN class=948112219-30042008><FONT 
  face=Arial><FONT><FONT color=#ff0000 size=2><SPAN 
  class=948112219-30042008><SPAN 
  class=135114120-30042008></SPAN></SPAN></FONT></FONT></FONT></SPAN> </DIV>
  <DIV dir=ltr align=left><SPAN class=948112219-30042008><FONT 
  face=Arial><FONT><FONT color=#ff0000 size=2><SPAN 
  class=948112219-30042008><SPAN class=135114120-30042008>3 of them are actually 
  defined as nothing and are actually just comments. We will be able to delete 
  them once we fill all issues are solved. The TO_LONG_PTR() macro can be 
  replaced, but this will break things on Itanium (If there is a real need to 
  support Itanium on 32/64 
  applications).</SPAN></SPAN></FONT></FONT></FONT></SPAN></DIV>
  <DIV dir=ltr align=left><SPAN class=948112219-30042008><FONT 
  face=Arial><FONT><FONT color=#ff0000 size=2><SPAN 
  class=948112219-30042008><SPAN 
  class=135114120-30042008></SPAN></SPAN></FONT></FONT></FONT></SPAN><SPAN 
  class=948112219-30042008><FONT face=Arial><FONT color=#0000ff><FONT 
  size=2><SPAN class=948112219-30042008><SPAN 
  class=135114120-30042008> </SPAN></SPAN></FONT></FONT></FONT></SPAN></DIV>
  <DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN 
  class=948112219-30042008></SPAN></FONT><FONT face=Arial color=#0000ff 
  size=2><SPAN class=948112219-30042008>2. Still not clear why 
  using PtrToPtr64 was not appropriate?</SPAN></FONT></DIV>
  <DIV dir=ltr align=left><SPAN class=948112219-30042008><FONT face=Arial><FONT 
  size=2><FONT color=#ff0000><SPAN class=135114120-30042008> In one 
  sentence  </SPAN>PtrToPtr64 <SPAN 
  class=135114120-30042008> simply doesn't work. If your pointer is 
  big enough it will be converted to a wrong value. See also <A 
  href="http://blogs.msdn.com/texblog/archive/2005/10/31/487436.aspx">http://blogs.msdn.com/texblog/archive/2005/10/31/487436.aspx</A></SPAN></FONT></FONT></FONT></SPAN></DIV>
  <DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN 
  class=948112219-30042008></SPAN></FONT> </DIV>
  <DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN 
  class=948112219-30042008>I would also suggest to move 
  *_PTR64 definitions from ib_types.h  to cl_types_osd.h, where it 
  belong.</SPAN></FONT></DIV>
  <DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN 
  class=948112219-30042008></SPAN></FONT> </DIV>
  <DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN 
  class=948112219-30042008>Thanks,</SPAN></FONT></DIV>
  <DIV dir=ltr align=left><FONT face=Arial color=#0000ff size=2><SPAN 
  class=948112219-30042008>Alex</SPAN></FONT></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> ofw-bounces@lists.openfabrics.org 
    [mailto:ofw-bounces@lists.openfabrics.org] <B>On Behalf Of </B>Fab 
    Tillier<BR><B>Sent:</B> Wednesday, April 30, 2008 3:20 PM<BR><B>To:</B> Alex 
    Naslednikov; Smith, Stan; Ishai Rabinovitz<BR><B>Cc:</B> 
    ofw@lists.openfabrics.org<BR><B>Subject:</B> RE: [ofw] WDK build environment 
    migration thoughts<BR></FONT><BR></DIV>
    <DIV></DIV>
    <DIV class=Section1>
    <P class=MsoNormal><SPAN 
    style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'">Yikes!  
    You disable warning C4305 for everyone including ib_types.h?  Do you 
    really think this is appropriate???<o:p></o:p></SPAN></P>
    <P class=MsoNormal><SPAN 
    style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'"><o:p> </o:p></SPAN></P>
    <P class=MsoNormal><SPAN 
    style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'">The 
    more I look at the patch, the more I think it should be rolled back, 
    sorry.<o:p></o:p></SPAN></P>
    <P class=MsoNormal><SPAN 
    style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'"><o:p> </o:p></SPAN></P>
    <P class=MsoNormal><SPAN 
    style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'">-Fab<o:p></o:p></SPAN></P>
    <P class=MsoNormal><SPAN 
    style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'"><o:p> </o:p></SPAN></P>
    <DIV>
    <DIV 
    style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: #b5c4df 1pt solid; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; BORDER-LEFT: medium none; PADDING-TOP: 3pt; BORDER-BOTTOM: medium none">
    <P class=MsoNormal><B><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Tahoma','sans-serif'">From:</SPAN></B><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Tahoma','sans-serif'"> 
    ofw-bounces@lists.openfabrics.org [mailto:ofw-bounces@lists.openfabrics.org] 
    <B>On Behalf Of </B>Alex Naslednikov<BR><B>Sent:</B> Wednesday, April 30, 
    2008 1:20 AM<BR><B>To:</B> Alex Naslednikov; Smith, Stan; Ishai 
    Rabinovitz<BR><B>Cc:</B> ofw@lists.openfabrics.org<BR><B>Subject:</B> RE: 
    [ofw] WDK build environment migration 
    thoughts<o:p></o:p></SPAN></P></DIV></DIV>
    <P class=MsoNormal><o:p> </o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Arial','sans-serif'">Hello,</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Arial','sans-serif'">I 
    committed our WDK and __ptr64 patch into WinOF trunk, and WinOF and WinIB 
    trunks were synchronized again.</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Arial','sans-serif'">You 
    can find below some further explanations :</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Arial','sans-serif'">1. 
    IBAL compiles now with WDK6001.18001. According to Microsoft, it should be 
    the last and official release.</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Arial','sans-serif'">We 
    preserved the backward compatibility with DDK, but some intermediate 
    versions of WDK may be incompatible</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Arial','sans-serif'">2. 
    Please, be aware that one has to change WinOF modules that aren't in WinIB 
    stack (like additional ulps : udapl, vnic etc.) according to new 
    methodology</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Arial','sans-serif'">Also, 
    I'd like to point your attention, that these modules will work as is on 
    homogeneous systems (x86, x64), but not on mixed systems (x86 application on 
    x64 kernel)</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Arial','sans-serif'">In 
    addition, Microsoft fixed an internal compiler bug when compiling modules 
    with long (__ptr64) pointers on functions (occurred only in x86 CHECKED 
    environment).</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Arial','sans-serif'">So, 
    you should not have problem with compilation after adjusting 
    makefiles</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Arial','sans-serif'">3. 
    This revision contains:</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Arial','sans-serif'"> 3.1. 
    All bugfixes from WinOF trunk, from rev. 939 to 1067</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Arial','sans-serif'"> 3.2. 
    Mellanox __ptr64 solution and WDK poring, starting from rev. 
    2164</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Arial','sans-serif'"> 3.3. 
    All bugfixes and patches from connectx branches (both Mellanox and 
    WinOF)</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Arial','sans-serif'">It 
    was a large amount of code to be merged from 4 different svn trees (trunk 
    and connectx branch in WinOF, and trunk and connectx branch in 
    WinIB).</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Arial','sans-serif'">We 
    will appreciate your code review, just to be sure that we didn't forget to 
    insert any minor patch or bug fix.</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Arial','sans-serif'">4. I 
    carefully tested new trunk inside Mellanox, on different platforms, both 
    with DDK and WDK compilers. Please, update us about every minor problem 
    during your testing.</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Arial','sans-serif'">Thanks,</SPAN><o:p></o:p></P>
    <P><B><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Naslednikov 
    Alexander (a.k.a XaleX)</SPAN></B><o:p></o:p></P>
    <P><B><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Windows 
    Team</SPAN></B><o:p></o:p></P>
    <P><B><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Mellanox 
    Technologies </SPAN></B><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 7.5pt; FONT-FAMILY: 'Tahoma','sans-serif'">_____________________________________________ 
    </SPAN><o:p></o:p></P>
    <P><B><SPAN 
    style="FONT-SIZE: 7.5pt; FONT-FAMILY: 'Tahoma','sans-serif'">From: 
     </SPAN></B> <SPAN 
    style="FONT-SIZE: 7.5pt; FONT-FAMILY: 'Tahoma','sans-serif'">Alex 
    Naslednikov  </SPAN><o:p></o:p></P>
    <P><B><SPAN 
    style="FONT-SIZE: 7.5pt; FONT-FAMILY: 'Tahoma','sans-serif'">Sent:  </SPAN></B> 
    <SPAN style="FONT-SIZE: 7.5pt; FONT-FAMILY: 'Tahoma','sans-serif'">Monday, 
    April 21, 2008 7:15 PM</SPAN><o:p></o:p></P>
    <P><B><SPAN 
    style="FONT-SIZE: 7.5pt; FONT-FAMILY: 'Tahoma','sans-serif'">To:    </SPAN></B> 
    <SPAN style="FONT-SIZE: 7.5pt; FONT-FAMILY: 'Tahoma','sans-serif'">Alex 
    Naslednikov; 'Smith, Stan'; Ishai Rabinovitz</SPAN><o:p></o:p></P>
    <P><B><SPAN 
    style="FONT-SIZE: 7.5pt; FONT-FAMILY: 'Tahoma','sans-serif'">Cc:    </SPAN></B> 
    <SPAN 
    style="FONT-SIZE: 7.5pt; FONT-FAMILY: 'Tahoma','sans-serif'">'ofw@lists.openfabrics.org'</SPAN><o:p></o:p></P>
    <P><B><SPAN 
    style="FONT-SIZE: 7.5pt; FONT-FAMILY: 'Tahoma','sans-serif'">Subject:       </SPAN></B> 
    <SPAN style="FONT-SIZE: 7.5pt; FONT-FAMILY: 'Tahoma','sans-serif'">RE: [ofw] 
    WDK build environment migration thoughts</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Hi 
    all,<BR>I would like to repost my previous message, because I haven't 
    received yet your comments.<BR>Our regression seems to be stable, so we are 
    going to commit the change into WinOF trunk the nearest time.<BR>For you 
    convenience, I also provide some typical changes as a patch (attached to 
    this mail). Please, read the explanation below before - it will help you a 
    lot.<BR>Be aware that all the modules not contained in Mellanox WinIB stack 
    (like udapl, vnic) should be also changed according to this 
    methodology.<BR><BR>It is very large change, so I'll appreciate your time 
    and effort while reviewing the methodology and the patch 
    itself.</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Thanks,<BR></SPAN><BR><B>Naslednikov 
    Alexander (a.k.a XaleX)<BR>Windows Team<BR>Mellanox 
    Technologies</B><o:p></o:p></P>
    <P class=MsoNormal><o:p> </o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 7.5pt; FONT-FAMILY: 'Tahoma','sans-serif'">_____________________________________________ 
    </SPAN><o:p></o:p></P>
    <P><B><SPAN 
    style="FONT-SIZE: 7.5pt; FONT-FAMILY: 'Tahoma','sans-serif'">From: 
     </SPAN></B> <SPAN 
    style="FONT-SIZE: 7.5pt; FONT-FAMILY: 'Tahoma','sans-serif'">Alex 
    Naslednikov  </SPAN><o:p></o:p></P>
    <P><B><SPAN 
    style="FONT-SIZE: 7.5pt; FONT-FAMILY: 'Tahoma','sans-serif'">Sent:  </SPAN></B> 
    <SPAN style="FONT-SIZE: 7.5pt; FONT-FAMILY: 'Tahoma','sans-serif'">Thursday, 
    April 10, 2008 4:09 PM</SPAN><o:p></o:p></P>
    <P><B><SPAN 
    style="FONT-SIZE: 7.5pt; FONT-FAMILY: 'Tahoma','sans-serif'">To:    </SPAN></B> 
    <SPAN style="FONT-SIZE: 7.5pt; FONT-FAMILY: 'Tahoma','sans-serif'">'Smith, 
    Stan'; Ishai Rabinovitz</SPAN><o:p></o:p></P>
    <P><B><SPAN 
    style="FONT-SIZE: 7.5pt; FONT-FAMILY: 'Tahoma','sans-serif'">Cc:    </SPAN></B> 
    <SPAN 
    style="FONT-SIZE: 7.5pt; FONT-FAMILY: 'Tahoma','sans-serif'">ofw@lists.openfabrics.org</SPAN><o:p></o:p></P>
    <P><B><SPAN 
    style="FONT-SIZE: 7.5pt; FONT-FAMILY: 'Tahoma','sans-serif'">Subject:       </SPAN></B> 
    <SPAN style="FONT-SIZE: 7.5pt; FONT-FAMILY: 'Tahoma','sans-serif'">RE: [ofw] 
    WDK build environment migration thoughts</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Hi 
    all,</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">It's a 
    good idea to clarify some points before announcing Mellanox patch for WDK 
    porting and __ptr64 problems.</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Hope, 
    these explanations will be informative enough and not so 
    long.</SPAN><o:p></o:p></P>
    <P><B><U><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">1. 
    __ptr64 problem</SPAN></U></B><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Briefly 
    speaking, this problem arises when copying 32bit len pointer into 64bit len 
    pointer. In this case,</SPAN><U> </U><U><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">signed pointer 
    extension</SPAN></U> <SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">will take 
    place.</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">How it's 
    applicable to WinOF ?  A lot of pointer were declared to be __ptr64 
    (i.e., to be always "long", even in 32bit kernel systems), that's to 
    preserve on unique size of structs used in IOCTL calls.  The main 
    problem it will cause is between 32bit user applications and 64bit kernel 
    application.</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">When 
    user code do operation like </SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">s_ptr = 
    &my_struct;</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">my_type* 
    __ptr64 ptr = s_ptr;</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Than 
    kernel will receive ptr with invalid upper bits data (4 bytes 
    FF).</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">To avoid 
    signed pointer extension, PtrToPtr64() function should be 
    used.</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Also, I 
    found some other places where dangerous signed pointer extension took place, 
    even on 32bit kernel.</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Yet 
    another problem that arises with __ptr64 attribute is internal compiler 
    error (C1001)  in WDK when using __ptr64 pointer to function 
    (callback)</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">This 
    problem was described in ofw discussion, you can see also 
    :</SPAN><o:p></o:p></P>
    <P><A 
    href="http://blogs.msdn.com/texblog/archive/2005/10/31/487436.aspx"><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">http://blogs.msdn.com/texblog/archive/2005/10/31/487436.aspx</SPAN></A><o:p></o:p></P>
    <P><A 
    href="http://lists.openfabrics.org/pipermail/ofw/2007-July/001613.html"><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">http://lists.openfabrics.org/pipermail/ofw/2007-July/001613.html</SPAN></A><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"> (posted by Jan 
    from OFW)</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Our 
    solution:</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">1. 
    Initially, we decided to remove all __ptr64 attributes except those ones 
    inside IOCTL structures. After, put PtrToPtr64() conversion on every 
    assignment to long pointer.</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">(like 
    my_type* __ptr64 ptr = PtrToPtr64(s_ptr);  )</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">During 
    this solution, we changed a huge amount of code, so patch became unreadable. 
    And it was difficult to validate that all long pointer (with __ptr64 
    attribute) were used in a proper manner</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">2. So, 
    we decided about another solution:</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"> All __ptr64 
    occurrences were replaced by either:</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"> i) 
    TO_LONG_PTR(type, field) macro, when occurred inside 
    structure</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">ii) 
    VOID_PTR64 macro otherwise (defined as void macro)</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">#define 
    CONCAT(str1, str2) str1##str2</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">#define 
    TO_LONG_PTR(type,member_name) \</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">    
    union { type member_name;  uint64_t CONCAT(member_name,_padding) ; 
    }</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Thus, we 
    can both preserve on a uniform shapes of structs in user and kernel and to 
    avoid unsafe pointer arithmetic !</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">The 
    patch now is much more readable, but it sill consist of thousands 
    lines.</SPAN><o:p></o:p></P>
    <P><B><U><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">2. 
    Migration to WDK</SPAN></U></B><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Main 
    issue here was to preserve on backward compatibility with 
    DDK</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">We were 
    able to compile our stack with WDK, while the main problems we found were 
    :</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">1. WDK 
    uses newer version of SDK (SDK Vista). So, when using 2 or more versions of 
    SDK on the same build machine, one has to update </SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">PLATFORM_SDK_PATH 
    variable to point on the proper version of SDK (for example, 
    PLATFORM_SDK_PATH=%sysdrive%:\PROGRA~1\MI2578~1\windows\v6.1)</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">2.verify.src 
    script in WDK (new add-on) checks if your SOURCES file is in appropriate 
    format.</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">For 
    example, you can't set implicitly path to system .dll in TARGETLIBS, but to 
    use USE_<MODULE_NAME> =1 macro</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Example:</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Old code 
    : </SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"> ....</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">TARGETLIBS= 
    \</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">   
    $(CRT_LIB_PATH)\msvcprt.lib\</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">   
    $(SDK_LIB_PATH)\Ws2_32.lib\</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">   
    $(TARGETPATH)\*\mtcr.lib</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"> </SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">New code 
    :</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">USE_MSVCRT=1</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">USE_NTDLL=1</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"> </SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">TARGETLIBS= 
    \</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">   
    $(SDK_LIB_PATH)\Ws2_32.lib\</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">   
    $(TARGETPATH)\*\mtcr.lib</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">3. Some 
    other problems, like mulitple includes error in .rc files, or problem with 
    substituing more than one symbol constant into string in Makefiles (some 
    version of WDK)</SPAN><o:p></o:p></P>
    <P class=MsoNormal><o:p> </o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Currently, we 
    continue testing and will advertise these patches right after the testing 
    will finish</SPAN><o:p></o:p></P>
    <P><B><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Naslednikov 
    Alexander (a.k.a XaleX)</SPAN></B><o:p></o:p></P>
    <P><B><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Windows 
    Team</SPAN></B><o:p></o:p></P>
    <P><B><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Mellanox 
    Technologies</SPAN></B> <o:p></o:p></P>
    <P class=MsoNormal><o:p> </o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">-----Original 
    Message-----</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">From: 
    ofw-bounces@lists.openfabrics.org [</SPAN><A 
    href="mailto:ofw-bounces@lists.openfabrics.org"><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">mailto:ofw-bounces@lists.openfabrics.org</SPAN></A><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">] On Behalf Of 
    Smith, Stan</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Sent: 
    Tuesday, April 08, 2008 4:10 PM</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">To: 
    Ishai Rabinovitz</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Cc: 
    ofw@lists.openfabrics.org</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Subject: 
    [ofw] WDK build environment migration thoughts</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Hello,</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">  I 
    strongly believe it would help the WinOF community in transitioning to the 
    WDK build environment if the connectX branch</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">(svn:gen1\branches\ConnectX) 
    was used as a WDK build environment staging grounds prior to merging the WDK 
    modifications into the mainline trunk.</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">This has 
    been talked about before although it still (as of last Friday) does not 
    build using the latest WDK version.</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"> </SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">One week 
    prior to merging the WDK fixes into the mainline trunk, if you were to push 
    all the WDK fixes into the ConnectX branch and then advertise on the ofw 
    mailing list the availability of a WDK build branch along 
    with</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">  
    1) how to build in the WDK environment,</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">     
    which version of the WDK is required + a URL link where to get the 
    WDK.</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">  
    2) An explanation of why and how the __ptr64 attributes were removed along 
    with how</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">     
    others should correct their codes containing __ptr64 
    attributes.</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">  
    3) updates to the WinOF wiki page describing how to build in the WDK 
    env.</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Let this 
    branch exist for one week, receiving feedback from the list and then merge 
    into the mainline trunk.</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Using 
    this approach is certainly community friendly and may prevent developer 
    surprises.</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">ConnectX 
    branch availability dates plus when the actual WDK fixes would be merged 
    into the mainline trunk would be published beforehand.</SPAN><o:p></o:p></P>
    <P class=MsoNormal><o:p> </o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Thanks 
    for your consideration,</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">Stan.</SPAN><o:p></o:p></P>
    <P class=MsoNormal style="MARGIN-BOTTOM: 12pt"><o:p> </o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">_______________________________________________</SPAN><o:p></o:p></P>
    <P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">ofw 
    mailing list</SPAN><o:p></o:p></P>
    <P><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">ofw@lists.openfabrics.org</SPAN><o:p></o:p></P>
    <P><A href="http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw"><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw</SPAN></A><o:p></o:p></P></DIV></BLOCKQUOTE></BLOCKQUOTE></BODY></HTML>