<!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>