<html xmlns:v="urn:schemas-microsoft-com:vml" 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"
xmlns:ns0="http://schemas.microsoft.com/office/2004/12/omml">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (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]-->
<title>RE: [ofw] WDK build environment migration thoughts</title>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
 name="PersonName"/>
<!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
<style>
<!--a:link
        {mso-style-priority: 99
;}
span.MSOHYPERLINK
        {mso-style-priority: 99
;}
a:visited
        {mso-style-priority: 99
;}
span.MSOHYPERLINKFOLLOWED
        {mso-style-priority: 99
;}
p
        {mso-style-priority: 99;}

 /* Font Definitions */
 @font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
 /* 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
        {mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman";}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:Calibri;
        color:#1F497D;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
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]-->
</head>

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

<div class=Section1>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>The only place we have to worry about
converting from 32 bit to 64 bit is IOCTLs.  Just have IOCTL structures
use UINT64 fields, aligned on a 64-bit boundary in the structure.  (You can’t
passing pointers to the kernel that you can directly dereference anyway.) 
Remove __ptr64 everywhere else.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>- Sean<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'>

<div>

<p class=MsoNormal><font size=2 color=blue face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:blue'> [PTR64] Explicitly casting from
uint64_t to pointer in order to avoid warning C4305.<br>
Macro CONCAT renamed to IB_CONCAT<br>
Signed-off by: XaleX</span></font><o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><font size=2 color=blue face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:blue'>Index: ulp/opensm/user/include/iba/ib_types.h<br>
===================================================================<br>
--- ulp/opensm/user/include/iba/ib_types.h (revision 2386)<br>
+++ ulp/opensm/user/include/iba/ib_types.h (revision 2388)<br>
@@ -81,10 +81,10 @@<br>
 #define STRUCT_PTR64<br>
 #endif<br>
 <br>
-#define CONCAT(str1, str2) str1##str2<br>
+#define IB_CONCAT(str1, str2) str1##str2<br>
 <br>
 #define TO_LONG_PTR(type,member_name) \<br>
-    union { type member_name;  uint64_t
CONCAT(member_name,_padding) ; }<br>
+    union { type member_name;  uint64_t
IB_CONCAT(member_name,_padding) ; }<br>
 <br>
 <br>
 <br>
Index: ulp/opensm/user/include/iba/ib_types_extended.h<br>
===================================================================<br>
--- ulp/opensm/user/include/iba/ib_types_extended.h (revision 2386)<br>
+++ ulp/opensm/user/include/iba/ib_types_extended.h (revision 2388)<br>
@@ -57,32 +57,6 @@<br>
  #define __ptr64<br>
 #endif<br>
 <br>
-#ifndef FUNC_PTR64<br>
-#define FUNC_PTR64<br>
-#endif<br>
-<br>
-#ifndef TYPEDEF_PTR64<br>
-#define TYPEDEF_PTR64<br>
-#endif<br>
-<br>
-#ifndef VOID_PTR64<br>
-#define VOID_PTR64<br>
-#endif<br>
-<br>
-#ifndef STRUCT_PTR64<br>
-#define STRUCT_PTR64<br>
-#endif<br>
-<br>
-<br>
-//#ifndef CONCAT<br>
-#define CONCAT(str1, str2) str1##str2<br>
-//#endif<br>
-<br>
-//#ifndef T0_LONG_PTR<br>
-#define TO_LONG_PTR(type,member_name) \<br>
-    union { type member_name;  uint64_t
CONCAT(member_name,_padding) ; }<br>
-//#endif<br>
-<br>
 /*<br>
  * Defines the size of user available data in communication
management MADs<br>
  */<br>
Index: ulp/sdp/include/SdpShared.h<br>
===================================================================<br>
--- ulp/sdp/include/SdpShared.h (revision 2386)<br>
+++ ulp/sdp/include/SdpShared.h (revision 2388)<br>
@@ -67,13 +67,13 @@<br>
 #define IOCTL_WSP_CLOSE_SOCKET  CTL_CODE(FILE_DEVICE_UNKNOWN, 0x811,
METHOD_BUFFERED ,FILE_ANY_ACCESS)<br>
 #define IOCTL_WSP_USER_THREAD   CTL_CODE(FILE_DEVICE_UNKNOWN,
0x812, METHOD_BUFFERED ,FILE_ANY_ACCESS)<br>
 <br>
-#ifndef CONCAT<br>
-#define CONCAT(str1, str2) str1##str2<br>
+#ifndef IB_CONCAT<br>
+#define IB_CONCAT(str1, str2) str1##str2<br>
 #endif<br>
 <br>
 #ifndef TO_LONG_PTR<br>
 #define TO_LONG_PTR(type,member_name) \<br>
-    union { type member_name;  uint64_t CONCAT(member_name,_padding)
; } ;<br>
+    union { type member_name;  uint64_t
IB_CONCAT(member_name,_padding) ; } ;<br>
 #endif<br>
 <br>
 // Data structures that are used for connect<br>
Index: ulp/wsd/user/ibsp_iblow.c<br>
===================================================================<br>
--- ulp/wsd/user/ibsp_iblow.c (revision 2386)<br>
+++ ulp/wsd/user/ibsp_iblow.c (revision 2388)<br>
@@ -66,8 +66,8 @@<br>
 <br>
  IBSP_ENTER( IBSP_DBG_IO );<br>
 <br>
- wr = (struct _wr * VOID_PTR64)wc->wr_id;<br>
- p_recv_wr = (struct _recv_wr * VOID_PTR64)wc->wr_id;<br>
+ wr = (struct _wr * VOID_PTR64)HDL_TO_PTR(wc->wr_id);<br>
+ p_recv_wr = (struct _recv_wr * VOID_PTR64)HDL_TO_PTR(wc->wr_id);<br>
 <br>
  CL_ASSERT( wr );<br>
 <br>
Index: core/al/kernel/al_proxy_verbs.c<br>
===================================================================<br>
--- core/al/kernel/al_proxy_verbs.c (revision 2386)<br>
+++ core/al/kernel/al_proxy_verbs.c (revision 2388)<br>
@@ -352,7 +352,7 @@<br>
  cb_info.rec_type = CA_ERROR_REC;<br>
  /* Return the Proxy's open_ca handle and the user's context */<br>
  cb_info.ioctl_rec.event_rec = *p_err_rec;<br>
- cb_info.ioctl_rec.event_rec.handle.h_ca = (ib_ca_handle_t
VOID_PTR64)h_ca->obj.hdl;<br>
+ cb_info.ioctl_rec.event_rec.handle.h_ca = (ib_ca_handle_t
VOID_PTR64)HDL_TO_PTR(h_ca->obj.hdl);<br>
 <br>
  /* The proxy handle must be valid now. */<br>
  if( !h_ca->obj.hdl_valid )<br>
@@ -987,7 +987,7 @@<br>
  cb_info.rec_type = SRQ_ERROR_REC;<br>
  /* Return the Proxy's SRQ handle and the user's context */<br>
  cb_info.ioctl_rec.event_rec = *p_err_rec;<br>
- cb_info.ioctl_rec.event_rec.handle.h_srq = (ib_srq_handle_t
VOID_PTR64)h_srq->obj.hdl;<br>
+ cb_info.ioctl_rec.event_rec.handle.h_srq = (ib_srq_handle_t VOID_PTR64)
HDL_TO_PTR(h_srq->obj.hdl);<br>
 <br>
  /* The proxy handle must be valid now. */<br>
  if( !h_srq->obj.hdl_valid )<br>
@@ -1291,7 +1291,7 @@<br>
  cb_info.rec_type = QP_ERROR_REC;<br>
  /* Return the Proxy's QP handle and the user's context */<br>
  cb_info.ioctl_rec.event_rec = *p_err_rec;<br>
- cb_info.ioctl_rec.event_rec.handle.h_qp = (ib_qp_handle_t
VOID_PTR64)h_qp->obj.hdl;<br>
+ cb_info.ioctl_rec.event_rec.handle.h_qp = (ib_qp_handle_t
VOID_PTR64)HDL_TO_PTR(h_qp->obj.hdl);<br>
 <br>
  /* The proxy handle must be valid now. */<br>
  if( !h_qp->obj.hdl_valid )<br>
@@ -1491,7 +1491,7 @@<br>
   if( p_ioctl->out.attr.h_pd )<br>
   {<br>
    p_ioctl->out.attr.h_pd =<br>
-    (ib_pd_handle_t
VOID_PTR64)p_ioctl->out.attr.h_pd->obj.hdl;<br>
+    (ib_pd_handle_t VOID_PTR64)HDL_TO_PTR(p_ioctl->out.attr.h_pd->obj.hdl);<br>
   }<br>
   else<br>
   {<br>
@@ -1500,7 +1500,7 @@<br>
   if( p_ioctl->out.attr.h_sq_cq )<br>
   {<br>
    p_ioctl->out.attr.h_sq_cq =<br>
-    (ib_cq_handle_t
VOID_PTR64)p_ioctl->out.attr.h_sq_cq->obj.hdl;<br>
+    (ib_cq_handle_t
VOID_PTR64)HDL_TO_PTR(p_ioctl->out.attr.h_sq_cq->obj.hdl);<br>
   }<br>
   else<br>
   {<br>
@@ -1509,7 +1509,7 @@<br>
   if( p_ioctl->out.attr.h_rq_cq )<br>
   {<br>
    p_ioctl->out.attr.h_rq_cq =<br>
-    (ib_cq_handle_t
VOID_PTR64)p_ioctl->out.attr.h_rq_cq->obj.hdl;<br>
+    (ib_cq_handle_t
VOID_PTR64)HDL_TO_PTR(p_ioctl->out.attr.h_rq_cq->obj.hdl);<br>
   }<br>
   else<br>
   {<br>
@@ -1518,7 +1518,7 @@<br>
   if( p_ioctl->out.attr.h_srq )<br>
   {<br>
    p_ioctl->out.attr.h_srq =<br>
-    (ib_srq_handle_t
VOID_PTR64)p_ioctl->out.attr.h_srq->obj.hdl;<br>
+    (ib_srq_handle_t
VOID_PTR64)HDL_TO_PTR(p_ioctl->out.attr.h_srq->obj.hdl);<br>
   }<br>
   else<br>
   {<br>
@@ -2063,7 +2063,7 @@<br>
  cb_info.rec_type = CQ_ERROR_REC;<br>
  /* Return the Proxy's cq handle and the user's context */<br>
  cb_info.ioctl_rec.event_rec = *p_err_rec;<br>
- cb_info.ioctl_rec.event_rec.handle.h_cq = (ib_cq_handle_t
VOID_PTR64)h_cq->obj.hdl;<br>
+ cb_info.ioctl_rec.event_rec.handle.h_cq = (ib_cq_handle_t
VOID_PTR64)HDL_TO_PTR(h_cq->obj.hdl);<br>
 <br>
  /* The proxy handle must be valid now. */<br>
  if( !h_cq->obj.hdl_valid )<br>
@@ -3059,7 +3059,7 @@<br>
  {<br>
   /* Replace the pd handle with proxy's handle */<br>
   p_ioctl->out.attr.h_pd =<br>
-   (ib_pd_handle_t
VOID_PTR64)p_ioctl->out.attr.h_pd->obj.hdl;<br>
+   (ib_pd_handle_t
VOID_PTR64)HDL_TO_PTR(p_ioctl->out.attr.h_pd->obj.hdl);<br>
  }<br>
  else<br>
  {<br>
Index: core/al/kernel/al_ndi_cm.c<br>
===================================================================<br>
--- core/al/kernel/al_ndi_cm.c (revision 2386)<br>
+++ core/al/kernel/al_ndi_cm.c (revision 2388)<br>
@@ -891,7 +891,7 @@<br>
  ib_qp_mod_t qp_mod;<br>
  ib_path_rec_t *p_path_rec;<br>
  ual_ndi_req_cm_ioctl_in_t *p_req = (ual_ndi_req_cm_ioctl_in_t*
VOID_PTR64)p_query_rec->query_context;<br>
- ib_qp_handle_t VOID_PTR64 h_qp = (ib_qp_handle_t
VOID_PTR64)p_req->h_qp;<br>
+ ib_qp_handle_t VOID_PTR64 h_qp = (ib_qp_handle_t VOID_PTR64)HDL_TO_PTR(p_req->h_qp);<br>
  net32_t cid, old_cid;<br>
 <br>
  AL_ENTER( AL_DBG_NDI );<br>
@@ -994,7 +994,7 @@<br>
  ib_gid_pair_t user_query;<br>
  ib_query_req_t query_req;<br>
  ib_api_status_t status;<br>
- ib_qp_handle_t VOID_PTR64 h_qp = (ib_qp_handle_t
VOID_PTR64)p_req->h_qp;<br>
+ ib_qp_handle_t VOID_PTR64 h_qp = (ib_qp_handle_t
VOID_PTR64)HDL_TO_PTR(p_req->h_qp);<br>
 <br>
  AL_ENTER( AL_DBG_NDI );<br>
 <br>
@@ -1041,7 +1041,7 @@<br>
  cl_ioctl_handle_t h_ioctl;<br>
  ib_service_record_t *service_record;<br>
  ual_ndi_req_cm_ioctl_in_t *p_req = (ual_ndi_req_cm_ioctl_in_t*
VOID_PTR64)p_query_rec->query_context;<br>
- ib_qp_handle_t VOID_PTR64 h_qp = (ib_qp_handle_t
VOID_PTR64)p_req->h_qp;<br>
+ ib_qp_handle_t VOID_PTR64 h_qp = (ib_qp_handle_t
VOID_PTR64)HDL_TO_PTR(p_req->h_qp);<br>
 <br>
  AL_ENTER( AL_DBG_NDI );<br>
 <br>
Index: core/al/kernel/al_proxy.c<br>
===================================================================<br>
--- core/al/kernel/al_proxy.c (revision 2386)<br>
+++ core/al/kernel/al_proxy.c (revision 2388)<br>
@@ -862,7 +862,7 @@<br>
   break;<br>
  }<br>
 <br>
- p_evt_rec->pnp.h_pnp = (ib_pnp_handle_t VOID_PTR64)p_pnp_rec->h_pnp->obj.hdl;<br>
+ p_evt_rec->pnp.h_pnp = (ib_pnp_handle_t
VOID_PTR64)HDL_TO_PTR(p_pnp_rec->h_pnp->obj.hdl);<br>
  p_pnp_rec->h_pnp->obj.hdl_valid = TRUE;<br>
 <br>
  hdl =<br>
Index: core/al/al_verbs.h<br>
===================================================================<br>
--- core/al/al_verbs.h (revision 2386)<br>
+++ core/al/al_verbs.h (revision 2388)<br>
@@ -402,7 +402,7 @@<br>
 <br>
 #define verbs_check_av(h_av) ((h_av)->h_ci_av ||
(h_av)->obj.hdl)<br>
 #define convert_av_handle(h_qp, h_av) \<br>
- ((h_qp)->h_ci_qp?(h_av)->h_ci_av:(ib_av_handle_t
VOID_PTR64)(h_av)->obj.hdl)<br>
+ ((h_qp)->h_ci_qp?(h_av)->h_ci_av:(ib_av_handle_t
VOID_PTR64)HDL_TO_PTR((h_av)->obj.hdl))<br>
 #define verbs_destroy_av(h_av) \<br>
  ual_destroy_av(h_av)<br>
 <br>
Index: core/al/al_qp.c<br>
===================================================================<br>
--- core/al/al_qp.c (revision 2386)<br>
+++ core/al/al_qp.c (revision 2388)<br>
@@ -62,6 +62,7 @@<br>
 #include "al_verbs.h"<br>
 <br>
 #include "ib_common.h"<br>
+#include "basetsd.h"<br>
 <br>
 <br>
 #define UNBOUND_PORT_GUID  0<br>
Index: core/al/user/ual_mcast.c<br>
===================================================================<br>
--- core/al/user/ual_mcast.c (revision 2386)<br>
+++ core/al/user/ual_mcast.c (revision 2388)<br>
@@ -98,7 +98,7 @@<br>
   status = ioctl_buf.out.status;<br>
   if( status == IB_SUCCESS ){<br>
    h_mcast->obj.hdl = ioctl_buf.out.h_attach;<br>
-   h_mcast->h_ci_mcast = (ib_mcast_handle_t
VOID_PTR64)ioctl_buf.out.h_attach;<br>
+   h_mcast->h_ci_mcast = (ib_mcast_handle_t VOID_PTR64)
HDL_TO_PTR(ioctl_buf.out.h_attach);<br>
   }<br>
  }<br>
 <br>
Index: core/al/user/ual_qp.c<br>
===================================================================<br>
--- core/al/user/ual_qp.c (revision 2386)<br>
+++ core/al/user/ual_qp.c (revision 2388)<br>
@@ -313,12 +313,12 @@<br>
  qp_ioctl.in.h_pd = h_pd->obj.hdl;<br>
  qp_ioctl.in.qp_create = *p_qp_create;<br>
  qp_ioctl.in.qp_create.h_rq_cq =<br>
-  (ib_cq_handle_t VOID_PTR64)p_qp_create->h_rq_cq->obj.hdl;<br>
+  (ib_cq_handle_t
VOID_PTR64)HDL_TO_PTR(p_qp_create->h_rq_cq->obj.hdl);<br>
  qp_ioctl.in.qp_create.h_sq_cq =<br>
-  (ib_cq_handle_t VOID_PTR64)p_qp_create->h_sq_cq->obj.hdl;<br>
+  (ib_cq_handle_t
VOID_PTR64)HDL_TO_PTR(p_qp_create->h_sq_cq->obj.hdl);<br>
  if (p_qp_create->h_srq)<br>
   qp_ioctl.in.qp_create.h_srq =<br>
-   (ib_srq_handle_t
VOID_PTR64)p_qp_create->h_srq->obj.hdl;<br>
+   (ib_srq_handle_t
VOID_PTR64)HDL_TO_PTR(p_qp_create->h_srq->obj.hdl);<br>
  qp_ioctl.in.context = h_qp;<br>
  qp_ioctl.in.ev_notify = (h_qp->pfn_event_cb != NULL) ? TRUE :
FALSE;<br>
 <br>
Index: core/al/user/ual_mw.c<br>
===================================================================<br>
--- core/al/user/ual_mw.c (revision 2386)<br>
+++ core/al/user/ual_mw.c (revision 2388)<br>
@@ -278,7 +278,7 @@<br>
  mw_ioctl.in.h_mw = h_mw->obj.hdl;<br>
  mw_ioctl.in.h_qp = h_qp->obj.hdl;<br>
  mw_ioctl.in.mw_bind = *p_mw_bind;<br>
- mw_ioctl.in.mw_bind.h_mr = (ib_mr_handle_t
VOID_PTR64)p_mw_bind->h_mr->obj.hdl;<br>
+ mw_ioctl.in.mw_bind.h_mr = (ib_mr_handle_t VOID_PTR64)
HDL_TO_PTR(p_mw_bind->h_mr->obj.hdl);<br>
 <br>
  cl_status = do_al_dev_ioctl( UAL_BIND_MW,<br>
   &mw_ioctl.in, sizeof(mw_ioctl.in), &mw_ioctl.out,
sizeof(mw_ioctl.out),<br>
Index: core/al/user/ual_cm_cep.c<br>
===================================================================<br>
--- core/al/user/ual_cm_cep.c (revision 2386)<br>
+++ core/al/user/ual_cm_cep.c (revision 2388)<br>
@@ -506,7 +506,7 @@<br>
     cl_memclr(&ioctl, sizeof(ioctl));<br>
  ioctl.in.cid = cid;<br>
  ioctl.in.cm_req = *p_cm_req;<br>
- ioctl.in.cm_req.h_qp = (ib_qp_handle_t
VOID_PTR64)p_cm_req->h_qp->obj.hdl;<br>
+ ioctl.in.cm_req.h_qp = (ib_qp_handle_t VOID_PTR64)
HDL_TO_PTR(p_cm_req->h_qp->obj.hdl);<br>
  ioctl.in.paths[0] = *(p_cm_req->p_primary_path);<br>
  if( p_cm_req->p_alt_path )<br>
   ioctl.in.paths[1] = *(p_cm_req->p_alt_path);<br>
@@ -633,7 +633,7 @@<br>
  ioctl.in.context = context;<br>
  ioctl.in.cid = cid;<br>
  ioctl.in.cm_rep = *p_cm_rep;<br>
- ioctl.in.cm_rep.h_qp = (ib_qp_handle_t
VOID_PTR64)p_cm_rep->h_qp->obj.hdl;<br>
+ ioctl.in.cm_rep.h_qp = (ib_qp_handle_t VOID_PTR64)HDL_TO_PTR(p_cm_rep->h_qp->obj.hdl);<br>
  /* Copy private data, if any. */<br>
  if( p_cm_rep->p_rep_pdata )<br>
  {<br>
@@ -981,7 +981,7 @@<br>
     cl_memclr(&ioctl,sizeof (ioctl));<br>
  ioctl.cid = cid;<br>
  ioctl.cm_lap = *p_cm_lap;<br>
- ioctl.cm_lap.h_qp = (ib_qp_handle_t VOID_PTR64)p_cm_lap->h_qp->obj.hdl;<br>
+ ioctl.cm_lap.h_qp = (ib_qp_handle_t VOID_PTR64)
HDL_TO_PTR(p_cm_lap->h_qp->obj.hdl);<br>
  ioctl.alt_path = *(p_cm_lap->p_alt_path);<br>
  /* Copy private data, if any. */<br>
  if( p_cm_lap->p_lap_pdata )<br>
@@ -1037,7 +1037,7 @@<br>
     cl_memclr(&ioctl, sizeof (ioctl));<br>
  ioctl.in.cid = cid;<br>
  ioctl.in.cm_apr = *p_cm_apr;<br>
- ioctl.in.cm_apr.h_qp = (ib_qp_handle_t
VOID_PTR64)p_cm_apr->h_qp->obj.hdl;<br>
+ ioctl.in.cm_apr.h_qp = (ib_qp_handle_t
VOID_PTR64)HDL_TO_PTR(p_cm_apr->h_qp->obj.hdl);<br>
  if( p_cm_apr->p_info )<br>
  {<br>
   if( p_cm_apr->info_length > IB_APR_INFO_SIZE )<br>
Index: inc/iba/ib_types.h<br>
===================================================================<br>
--- inc/iba/ib_types.h (revision 2386)<br>
+++ inc/iba/ib_types.h (revision 2388)<br>
@@ -56,15 +56,15 @@<br>
 #define STRUCT_PTR64<br>
 #endif<br>
 <br>
+#define HDL_TO_PTR(hdl) Handle64ToHandle( (void * __ptr64) (hdl))<br>
 <br>
-#pragma warning( disable : 4201)<br>
-#pragma warning( disable :4305)<br>
+#pragma warning( disable : 4201) //nameless union/structure<br>
 <br>
 <br>
-#define CONCAT(str1, str2) str1##str2<br>
+#define IB_CONCAT(str1, str2) str1##str2<br>
 <br>
 #define TO_LONG_PTR(type,member_name) \<br>
-    union { type member_name;  uint64_t
CONCAT(member_name,_padding) ; }<br>
+    union { type member_name;  uint64_t
IB_CONCAT(member_name,_padding) ; }<br>
 <br>
 <br>
 <br>
@@ -8966,7 +8966,6 @@<br>
 */<br>
 typedef struct _ib_event_rec<br>
 {<br>
-#pragma warning( disable : 4201)<br>
 <br>
  TO_LONG_PTR(void* , context) ;<br>
  ib_async_event_t  type;</span></font><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=2 width="100%" align=center tabIndex=-1>

</span></font></div>

<p class=MsoNormal style='margin-bottom:12.0pt'><b><font size=2 face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma;font-weight:bold'>From:</span></font></b><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'> Fab
Tillier [mailto:ftillier@windows.microsoft.com] <br>
<b><span style='font-weight:bold'>Sent:</span></b> Wednesday, April 30, 2008
9:20 PM<br>
<b><span style='font-weight:bold'>To:</span></b> <st1:PersonName w:st="on"><st1:PersonName
 w:st="on">Alex</st1:PersonName> Naslednikov</st1:PersonName>; <st1:PersonName
w:st="on">Smith, Stan</st1:PersonName>; Ishai Rabinovitz<br>
<b><span style='font-weight:bold'>Cc:</span></b> ofw@lists.openfabrics.org<br>
<b><span style='font-weight:bold'>Subject:</span></b> RE: [ofw] WDK build
environment migration thoughts</span></font><o:p></o:p></p>

<p class=MsoNormal><span color:#1F497D? Calibri?,?sans-serif?;><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>Yikes!  You disable
warning C4305 for everyone including ib_types.h?  Do you really think this
is appropriate???<o:p></o:p></span></font></p>

</span>

<p class=MsoNormal><span color:#1F497D? Calibri?,?sans-serif?;><font size=3
face="Times New Roman"><span style='font-size:12.0pt'><o:p> </o:p></span></font></p>

</span>

<p class=MsoNormal><span color:#1F497D? Calibri?,?sans-serif?;><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>The more I look at the
patch, the more I think it should be rolled back, sorry.<o:p></o:p></span></font></p>

</span>

<p class=MsoNormal><span color:#1F497D? Calibri?,?sans-serif?;><font size=3
face="Times New Roman"><span style='font-size:12.0pt'><o:p> </o:p></span></font></p>

</span>

<p class=MsoNormal><span color:#1F497D? Calibri?,?sans-serif?;><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>-Fab<o:p></o:p></span></font></p>

</span>

<p class=MsoNormal><span color:#1F497D? Calibri?,?sans-serif?;><font size=3
face="Times New Roman"><span style='font-size:12.0pt'><o:p> </o:p></span></font></p>

</span>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>

<p class=MsoNormal><b><span Tahoma?,?sans-serif??><font size=3
face="Times New Roman"><span style='font-size:12.0pt;font-weight:bold'>From:</span></span></font></b><span
Tahoma?,?sans-serif??> ofw-bounces@lists.openfabrics.org
[mailto:ofw-bounces@lists.openfabrics.org] <b><span style='font-weight:bold'>On
Behalf Of </span></b><st1:PersonName w:st="on"><st1:PersonName w:st="on">Alex</st1:PersonName>
 Naslednikov</st1:PersonName><br>
<b><span style='font-weight:bold'>Sent:</span></b> Wednesday, April 30, 2008
1:20 AM<br>
<b><span style='font-weight:bold'>To:</span></b> <st1:PersonName w:st="on"><st1:PersonName
 w:st="on">Alex</st1:PersonName> Naslednikov</st1:PersonName>; <st1:PersonName
w:st="on">Smith, Stan</st1:PersonName>; Ishai Rabinovitz<br>
<b><span style='font-weight:bold'>Cc:</span></b> ofw@lists.openfabrics.org<br>
<b><span style='font-weight:bold'>Subject:</span></b> RE: [ofw] WDK build
environment migration thoughts<o:p></o:p></p>

</div>

</div>

</span>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

<p><span Arial?,?sans-serif?;color:blue?><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Hello,</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif?;color:blue?><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>I committed our WDK and __ptr64 patch into WinOF
trunk, and WinOF and WinIB trunks were synchronized again.</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif?;color:blue?><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>You can find below some further explanations :</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif?;color:blue?><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>1. IBAL compiles now with WDK6001.18001. According to
Microsoft, it should be the last and official release.</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif?;color:blue?><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>We preserved the backward compatibility with DDK, but
some intermediate versions of WDK may be incompatible</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif?;color:blue?><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>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></span></font></p>

<p><span Arial?,?sans-serif?;color:blue?><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>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></span></font></p>

<p><span Arial?,?sans-serif?;color:blue?><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>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></span></font></p>

<p><span Arial?,?sans-serif?;color:blue?><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>So, you should not have problem with compilation after
adjusting makefiles</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif?;color:blue?><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>3. This revision contains:</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif?;color:blue?><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'> 3.1. All bugfixes from WinOF trunk, from rev.
939 to 1067</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif?;color:blue?><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'> 3.2. Mellanox __ptr64 solution and WDK poring,
starting from rev. 2164</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif?;color:blue?><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'> 3.3. All bugfixes and patches from connectx
branches (both Mellanox and WinOF)</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif?;color:blue?><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>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></span></font></p>

<p><span Arial?,?sans-serif?;color:blue?><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>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></span></font></p>

<p><span Arial?,?sans-serif?;color:blue?><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>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></span></font></p>

<p><span Arial?,?sans-serif?;color:blue?><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Thanks,</span><o:p></o:p></span></font></p>

<p><b><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt;font-weight:bold'>Naslednikov <st1:PersonName w:st="on">Alex</st1:PersonName>ander
(a.k.a XaleX)</span></span></font></b><o:p></o:p></p>

<p><b><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt;font-weight:bold'>Windows Team</span></span></font></b><o:p></o:p></p>

<p><b><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt;font-weight:bold'>Mellanox Technologies </span></span></font></b><o:p></o:p></p>

<p><span Tahoma?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>_____________________________________________ </span><o:p></o:p></span></font></p>

<p><b><span Tahoma?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt;font-weight:bold'>From:  </span></span></font></b>
<span Tahoma?,?sans-serif??><st1:PersonName w:st="on"><st1:PersonName w:st="on">Alex</st1:PersonName>
 Naslednikov</st1:PersonName>  </span><o:p></o:p></p>

<p><b><span Tahoma?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt;font-weight:bold'>Sent:  </span></span></font></b>
<span Tahoma?,?sans-serif??>Monday, April 21, 2008 7:15 PM</span><o:p></o:p></p>

<p><b><span Tahoma?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt;font-weight:bold'>To:    </span></span></font></b>
<span Tahoma?,?sans-serif??><st1:PersonName w:st="on"><st1:PersonName w:st="on">Alex</st1:PersonName>
 Naslednikov</st1:PersonName>; '<st1:PersonName w:st="on">Smith, Stan</st1:PersonName>';
Ishai Rabinovitz</span><o:p></o:p></p>

<p><b><span Tahoma?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt;font-weight:bold'>Cc:    </span></span></font></b>
<span Tahoma?,?sans-serif??>'ofw@lists.openfabrics.org'</span><o:p></o:p></p>

<p><b><span Tahoma?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt;font-weight:bold'>Subject:       </span></span></font></b>
<span Tahoma?,?sans-serif??>RE: [ofw] WDK build environment migration thoughts</span><o:p></o:p></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>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></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Thanks,<br>
<br>
</span><b><span style='font-weight:bold'>Naslednikov <st1:PersonName w:st="on">Alex</st1:PersonName>ander
(a.k.a XaleX)<br>
Windows Team<br>
Mellanox Technologies</span></b><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

<p><span Tahoma?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>_____________________________________________ </span><o:p></o:p></span></font></p>

<p><b><span Tahoma?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt;font-weight:bold'>From:  </span></span></font></b>
<span Tahoma?,?sans-serif??><st1:PersonName w:st="on"><st1:PersonName w:st="on">Alex</st1:PersonName>
 Naslednikov</st1:PersonName>  </span><o:p></o:p></p>

<p><b><span Tahoma?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt;font-weight:bold'>Sent:  </span></span></font></b>
<span Tahoma?,?sans-serif??>Thursday, April 10, 2008 4:09 PM</span><o:p></o:p></p>

<p><b><span Tahoma?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt;font-weight:bold'>To:    </span></span></font></b>
<span Tahoma?,?sans-serif??>'<st1:PersonName w:st="on">Smith, Stan</st1:PersonName>';
Ishai Rabinovitz</span><o:p></o:p></p>

<p><b><span Tahoma?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt;font-weight:bold'>Cc:    </span></span></font></b>
<span Tahoma?,?sans-serif??>ofw@lists.openfabrics.org</span><o:p></o:p></p>

<p><b><span Tahoma?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt;font-weight:bold'>Subject:       </span></span></font></b>
<span Tahoma?,?sans-serif??>RE: [ofw] WDK build environment migration thoughts</span><o:p></o:p></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Hi all,</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>It's a good idea to clarify some points before
announcing Mellanox patch for WDK porting and __ptr64 problems.</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Hope, these explanations will be informative enough
and not so long.</span><o:p></o:p></span></font></p>

<p><b><u><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt;font-weight:bold'>1. __ptr64 problem</span></span></font></u></b><o:p></o:p></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Briefly speaking, this problem arises when copying
32bit len pointer into 64bit len pointer. In this case,</span><u> <span
Arial?,?sans-serif??>signed pointer extension</span></u> <span
Arial?,?sans-serif??>will take place.</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>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></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>When user code do operation like </span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>s_ptr = &my_struct;</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>my_type* __ptr64 ptr = s_ptr;</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Than kernel will receive ptr with invalid upper bits
data (4 bytes FF).</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>To avoid signed pointer extension, PtrToPtr64()
function should be used.</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Also, I found some other places where dangerous signed
pointer extension took place, even on 32bit kernel.</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>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></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>This problem was described in ofw discussion, you can
see also :</span><o:p></o:p></span></font></p>

<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'><a
href="http://blogs.msdn.com/texblog/archive/2005/10/31/487436.aspx"><span
Arial?,?sans-serif??>http://blogs.msdn.com/texblog/archive/2005/10/31/487436.aspx</span></a><o:p></o:p></span></font></p>

<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'><a
href="http://lists.openfabrics.org/pipermail/ofw/2007-July/001613.html"><span
Arial?,?sans-serif??>http://lists.openfabrics.org/pipermail/ofw/2007-July/001613.html</span></a><span
Arial?,?sans-serif??> (posted by Jan from OFW)</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Our solution:</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>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></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>(like my_type* __ptr64 ptr = PtrToPtr64(s_ptr);  )</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>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></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>2. So, we decided about another solution:</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'> All __ptr64 occurrences were replaced by either:</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'> i) TO_LONG_PTR(type, field) macro, when occurred
inside structure</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>ii) VOID_PTR64 macro otherwise (defined as void macro)</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>#define CONCAT(str1, str2) str1##str2</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>#define TO_LONG_PTR(type,member_name) \</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>    union { type member_name; 
uint64_t CONCAT(member_name,_padding) ; }</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>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></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>The patch now is much more readable, but it sill
consist of thousands lines.</span><o:p></o:p></span></font></p>

<p><b><u><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt;font-weight:bold'>2. Migration to WDK</span></span></font></u></b><o:p></o:p></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Main issue here was to preserve on backward
compatibility with DDK</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>We were able to compile our stack with WDK, while the
main problems we found were :</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>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></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>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></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>2.verify.src script in WDK (new add-on) checks if your
SOURCES file is in appropriate format.</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>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></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Example:</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Old code : </span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'> ....</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>TARGETLIBS= \</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>   $(CRT_LIB_PATH)\msvcprt.lib\</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>   $(SDK_LIB_PATH)\Ws2_32.lib\</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>   $(TARGETPATH)\*\mtcr.lib</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'> </span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>New code :</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>USE_MSVCRT=1</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>USE_NTDLL=1</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'> </span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>TARGETLIBS= \</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>   $(SDK_LIB_PATH)\Ws2_32.lib\</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>   $(TARGETPATH)\*\mtcr.lib</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>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></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Currently, we continue testing and will advertise
these patches right after the testing will finish</span><o:p></o:p></span></font></p>

<p><b><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt;font-weight:bold'>Naslednikov <st1:PersonName w:st="on">Alex</st1:PersonName>ander
(a.k.a XaleX)</span></span></font></b><o:p></o:p></p>

<p><b><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt;font-weight:bold'>Windows Team</span></span></font></b><o:p></o:p></p>

<p><b><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt;font-weight:bold'>Mellanox Technologies</span></span></font></b>
<o:p></o:p></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>-----Original Message-----</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>From: ofw-bounces@lists.openfabrics.org [</span><a
href="mailto:ofw-bounces@lists.openfabrics.org"><span Arial?,?sans-serif??>mailto:ofw-bounces@lists.openfabrics.org</span></a><span
Arial?,?sans-serif??>] On Behalf Of <st1:PersonName w:st="on">Smith, Stan</span></st1:PersonName><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Sent: Tuesday, April 08, 2008 4:10 PM</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>To: Ishai Rabinovitz</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Cc: ofw@lists.openfabrics.org</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Subject: [ofw] WDK build environment migration thoughts</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Hello,</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>  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></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>(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></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>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></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'> </span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>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></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>  1) how to build in the WDK environment,</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>     which version of the WDK is
required + a URL link where to get the WDK.</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>  2) An explanation of why and how the __ptr64
attributes were removed along with how</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>     others should correct their
codes containing __ptr64 attributes.</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>  3) updates to the WinOF wiki page describing
how to build in the WDK env.</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Let this branch exist for one week, receiving feedback
from the list and then merge into the mainline trunk.</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Using this approach is certainly community friendly
and may prevent developer surprises.</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>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></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Thanks for your consideration,</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>Stan.</span><o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'><o:p> </o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>_______________________________________________</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>ofw mailing list</span><o:p></o:p></span></font></p>

<p><span Arial?,?sans-serif??><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>ofw@lists.openfabrics.org</span><o:p></o:p></span></font></p>

<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'><a
href="http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw"><span
Arial?,?sans-serif??>http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw</span></a><o:p></o:p></span></font></p>

</div>

</div>

</body>

</html>