<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2900.3243" name=GENERATOR></HEAD>
<BODY>
<DIV><SPAN class=197410116-01062009><FONT face=Arial color=#0000ff 
size=2>Thanks, i'll add.</FONT></SPAN></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> Smith, Stan 
  [mailto:stan.smith@intel.com] <BR><B>Sent:</B> Monday, June 01, 2009 7:00 
  PM<BR><B>To:</B> Leonid Keller<BR><B>Cc:</B> 
  ofw@lists.openfabrics.org<BR><B>Subject:</B> RE: [ofw][patches][ibbus] added 
  support to logging to System Event Log.<BR></FONT><BR></DIV>
  <DIV></DIV>
  <DIV dir=ltr align=left><SPAN class=833055715-01062009><FONT face=Arial 
  color=#0000ff size=2>Hello,</FONT></SPAN></DIV>
  <DIV dir=ltr align=left><SPAN class=833055715-01062009><FONT face=Arial 
  color=#0000ff size=2>  Does the InfiniHost mthca.sys driver not support 
  ibbus logging system events? I did not find mthca.inx 
  mods?</FONT></SPAN></DIV>
  <DIV dir=ltr align=left><SPAN class=833055715-01062009><FONT face=Arial 
  color=#0000ff size=2></FONT></SPAN> </DIV>
  <DIV dir=ltr align=left><SPAN class=833055715-01062009><FONT face=Arial 
  color=#0000ff size=2>stan.</FONT></SPAN></DIV><BR>
  <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>Leonid 
  Keller<BR><B>Sent:</B> Monday, June 01, 2009 1:37 AM<BR><B>To:</B> 
  ofw@lists.openfabrics.org<BR><B>Subject:</B> [ofw][patches][ibbus] added 
  support to logging to System Event Log.<BR></FONT><BR></DIV>
  <DIV></DIV>
  <DIV><FONT face=Arial size=2><SPAN class=348243108-01062009>Added macro 
  CL_PRINT_TO_EVENT_LOG, sending a string to System Event 
  Log.</SPAN></FONT></DIV>
  <DIV><FONT face=Arial size=2><SPAN 
  class=348243108-01062009></SPAN></FONT> </DIV>
  <DIV><SPAN class=348243108-01062009><FONT face=Arial size=2>    
  </FONT></SPAN><FONT face=Arial 
  size=2>CL_PRINT_TO_EVENT_LOG(_obj_,_event_id_,_msg_)<BR>   <SPAN 
  class=348243108-01062009>    </SPAN>obj - FDO of IBBUS<BR><SPAN 
  class=348243108-01062009>    </SPAN>   event_id 
  - EVENT_IBBUS_ANY_ERROR, EVENT_IBBUS_ANY_WARN, 
  EVENT_IBBUS_ANY_INFO<BR>   <SPAN 
  class=348243108-01062009>    </SPAN>msg - 
  (<format_string>[,p<SPAN class=348243108-01062009>a</SPAN>ram_lis<SPAN 
  class=348243108-01062009>t</SPAN>])</FONT></DIV>
  <DIV><FONT face=Arial size=2></FONT> </DIV>
  <DIV><FONT face=Arial size=2><SPAN class=348243108-01062009>FDO is stored in 
  CA object.</SPAN></FONT></DIV>
  <DIV><FONT face=Arial size=2><SPAN 
  class=348243108-01062009></SPAN></FONT> </DIV>
  <DIV><FONT face=Arial size=2><SPAN 
  class=348243108-01062009></SPAN></FONT> </DIV>
  <DIV><FONT face=Arial size=2></FONT> </DIV>
  <DIV><FONT face=Arial size=2>Index: 
  V:/svn/winib/trunk/core/complib/kernel/cl_log.c<BR>===================================================================<BR>--- 
  V:/svn/winib/trunk/core/complib/kernel/cl_log.c (revision 4394)<BR>+++ 
  V:/svn/winib/trunk/core/complib/kernel/cl_log.c (revision 4395)<BR>@@ 
  -29,10 +29,123 @@<BR>  * $Id$<BR>  */<BR> <BR>-<BR>+#include 
  <stdarg.h><BR> #include "complib/cl_log.h"<BR> <BR>+WCHAR 
  g_cl_wlog[ CL_LOG_BUF_LEN ]; <BR>+UCHAR g_cl_slog[ CL_LOG_BUF_LEN ]; 
  <BR> <BR>+<BR>+VOID<BR>+cl_event_log_write(<BR>+ PVOID p_io_object,<BR>+ ULONG p_error_code,<BR>+ ULONG p_unique_error_code,<BR>+ ULONG p_final_status,<BR>+ PWCHAR p_insertion_string,<BR>+ ULONG p_n_data_items,<BR>+ ...<BR>+ )<BR>+/*++<BR>+<BR>+Routine 
  Description:<BR>+    Writes an event log entry to the event 
  log.<BR>+<BR>+Arguments:<BR>+<BR>+ p_io_object......... The IO object ( 
  driver object or device object ).<BR>+ p_error_code......... The error 
  code.<BR>+ p_unique_error_code... A specific error 
  code.<BR>+ p_final_status....... The final 
  status.<BR>+ p_n_data_items........ Number of data 
  items.<BR>+ .<BR>+ . data items values<BR>+ .<BR>+<BR>+Return 
  Value:<BR>+<BR>+ None .<BR>+<BR>+--*/<BR>+{ /* WriteEventLogEntryStr 
  */<BR>+<BR>+ /* Variable argument list */    
  <BR>+ va_list     l_Argptr;<BR>+ /* Pointer 
  to an error log entry */<BR>+ PIO_ERROR_LOG_PACKET l_pErrorLogEntry; 
  <BR>+ /* sizeof insertion string */<BR>+ int  l_Size = 
  (int)((p_insertion_string) ? ((wcslen(p_insertion_string) + 1) * sizeof( WCHAR 
  )) : 0);<BR>+ int l_PktSize 
  =sizeof(IO_ERROR_LOG_PACKET)+p_n_data_items*sizeof(ULONG);<BR>+ int 
  l_TotalSize =l_PktSize +l_Size;<BR>+<BR>+ if (p_io_object == NULL) 
  {<BR>+  ASSERT(p_io_object != 
  NULL);<BR>+  return;<BR>+ }<BR>+<BR>+ /* Init the variable 
  argument list */   <BR>+ va_start(l_Argptr, 
  p_n_data_items);<BR>+<BR>+ /* Allocate an error log entry */ 
  <BR>+ if (l_TotalSize >= ERROR_LOG_MAXIMUM_SIZE - 2) 
  <BR>+  l_TotalSize = ERROR_LOG_MAXIMUM_SIZE - 
  2;<BR>+ l_pErrorLogEntry = 
  (PIO_ERROR_LOG_PACKET)IoAllocateErrorLogEntry(<BR>+  p_io_object,  
  (UCHAR)l_TotalSize );<BR>+<BR>+ /* Check allocation */<BR>+ if ( 
  l_pErrorLogEntry != NULL) <BR>+ { /* OK */<BR>+<BR>+  /* Data 
  item index */<BR>+  USHORT l_nDataItem ;<BR>+<BR>+  /* Set 
  the error log entry header 
  */<BR>+  l_pErrorLogEntry->ErrorCode   = 
  p_error_code; <BR>+  l_pErrorLogEntry->DumpDataSize  = 
  (USHORT) (p_n_data_items*sizeof(ULONG)); 
  <BR>+  l_pErrorLogEntry->SequenceNumber = 0; 
  <BR>+  l_pErrorLogEntry->MajorFunctionCode = 0; 
  <BR>+  l_pErrorLogEntry->IoControlCode  = 0; 
  <BR>+  l_pErrorLogEntry->RetryCount  = 0; 
  <BR>+  l_pErrorLogEntry->UniqueErrorValue = 
  p_unique_error_code; 
  <BR>+  l_pErrorLogEntry->FinalStatus  = p_final_status; 
  <BR>+<BR>+  /* Insert the data items */<BR>+  for 
  (l_nDataItem = 0; l_nDataItem < p_n_data_items; l_nDataItem++) 
  <BR>+  { /* Inset a data item */<BR>+<BR>+   /* 
  Current data item */<BR>+   int l_CurDataItem 
  ;<BR>+    <BR>+   /* Get next data item 
  */<BR>+   l_CurDataItem = va_arg( l_Argptr, 
  int);<BR>+<BR>+   /* Put it into the data array 
  */<BR>+   l_pErrorLogEntry->DumpData[l_nDataItem] = 
  l_CurDataItem ;<BR>+<BR>+  } /* Inset a data item 
  */<BR>+<BR>+  /* add insertion string */<BR>+  if 
  (p_insertion_string) {<BR>+   char *ptr; 
  <BR>+   int sz = min( l_TotalSize - l_PktSize, l_Size 
  );<BR>+   l_pErrorLogEntry->NumberOfStrings = 
  1;<BR>+   l_pErrorLogEntry->StringOffset = 
  sizeof(IO_ERROR_LOG_PACKET) + 
  l_pErrorLogEntry->DumpDataSize;<BR>+   ptr = 
  (char*)l_pErrorLogEntry + 
  l_pErrorLogEntry->StringOffset;<BR>+   memcpy( ptr, 
  p_insertion_string, sz );<BR>+   *(WCHAR*)&ptr[sz - 2] = 
  (WCHAR)0;<BR>+  }<BR>+  <BR>+  /* Write the 
  packet 
  */<BR>+  IoWriteErrorLogEntry(l_pErrorLogEntry);<BR>+<BR>+ } /* 
  OK */<BR>+<BR>+ /* Term the variable argument list */   
  <BR>+ va_end(l_Argptr);<BR>+<BR>+} /* WriteEventLogEntry 
  */<BR>+<BR>+<BR> /*<BR>  * The IO Object required to allocate an 
  event log entry is passed in<BR>  * via the "name" parameter.<BR>Index: 
  V:/svn/winib/trunk/core/bus/kernel/bus_ev_log.mc<BR>===================================================================<BR>--- 
  V:/svn/winib/trunk/core/bus/kernel/bus_ev_log.mc (revision 0)<BR>+++ 
  V:/svn/winib/trunk/core/bus/kernel/bus_ev_log.mc (revision 4395)<BR>@@ 
  -0,0 +1,56 
  @@<BR>+;/*++<BR>+;=============================================================================<BR>+;Copyright 
  (c) 2009 Mellanox Technologies<BR>+;<BR>+;Module 
  Name:<BR>+;<BR>+;    
  bus_ev_log.mc<BR>+;<BR>+;Abstract:<BR>+;<BR>+;    IB Driver 
  event log messages<BR>+;<BR>+;Authors:<BR>+;<BR>+;    Leonid 
  Keller<BR>+;<BR>+;Environment:<BR>+;<BR>+;   Kernel Mode 
  .<BR>+;<BR>+;=============================================================================<BR>+;--*/<BR>+;<BR>+MessageIdTypedef 
  = NTSTATUS<BR>+<BR>+SeverityNames = (<BR>+ Success   = 
  0x0:STATUS_SEVERITY_SUCCESS<BR>+ Informational = 
  0x1:STATUS_SEVERITY_INFORMATIONAL<BR>+ Warning   = 
  0x2:STATUS_SEVERITY_WARNING<BR>+ Error   = 
  0x3:STATUS_SEVERITY_ERROR<BR>+ )<BR>+<BR>+FacilityNames = 
  (<BR>+ System   = 0x0<BR>+ RpcRuntime  = 
  0x2:FACILITY_RPC_RUNTIME<BR>+ RpcStubs  = 
  0x3:FACILITY_RPC_STUBS<BR>+ Io    = 
  0x4:FACILITY_IO_ERROR_CODE<BR>+ IBBUS   = 
  0x9:FACILITY_IB_ERROR_CODE<BR>+ )<BR>+<BR>+<BR>+MessageId=0x0001 
  Facility=IBBUS Severity=Informational 
  SymbolicName=EVENT_IBBUS_ANY_INFO<BR>+Language=English<BR>+%2<BR>+.<BR>+<BR>+MessageId=0x0002 
  Facility=IBBUS Severity=Warning 
  SymbolicName=EVENT_IBBUS_ANY_WARN<BR>+Language=English<BR>+%2<BR>+.<BR>+<BR>+MessageId=0x0003 
  Facility=IBBUS Severity=Error 
  SymbolicName=EVENT_IBBUS_ANY_ERROR<BR>+Language=English<BR>+%2<BR>+.<BR>+<BR>Index: 
  V:/svn/winib/trunk/core/bus/kernel/SOURCES<BR>===================================================================<BR>--- 
  V:/svn/winib/trunk/core/bus/kernel/SOURCES (revision 4394)<BR>+++ 
  V:/svn/winib/trunk/core/bus/kernel/SOURCES (revision 4395)<BR>@@ -10,16 
  +10,18 @@<BR> <BR> <BR> SOURCES= 
  ibbus.rc  \<BR>+ bus_ev_log.mc  \<BR>  bus_driver.c  \<BR>  bus_pnp.c   \<BR>  bus_port_mgr.c  \<BR>  bus_iou_mgr.c<BR> <BR>-INCLUDES=..\..\..\inc;..\..\..\inc\kernel;..\..\al;..\..\al\kernel;<BR>+INCLUDES=..\..\..\inc;..\..\..\inc\kernel;..\..\al;..\..\al\kernel;..\..\bus\kernel\$O;<BR> <BR> C_DEFINES=$(C_DEFINES) 
  -DDRIVER -DDEPRECATE_DDK_FUNCTIONS 
  -DNEED_CL_OBJ<BR> <BR> TARGETLIBS= \<BR>+    
  $(DDK_LIB_PATH)\ntstrsafe.lib \<BR>  $(TARGETPATH)\*\complib.lib 
  \<BR>  $(TARGETPATH)\*\ibal.lib<BR>  <BR>Index: 
  V:/svn/winib/trunk/core/bus/kernel/ibbus.rc<BR>===================================================================<BR>--- 
  V:/svn/winib/trunk/core/bus/kernel/ibbus.rc (revision 4394)<BR>+++ 
  V:/svn/winib/trunk/core/bus/kernel/ibbus.rc (revision 4395)<BR>@@ -44,4 
  +44,6 @@<BR> #define 
  VER_INTERNALNAME_STR  "ibbus.sys"<BR> #define 
  VER_ORIGINALFILENAME_STR "ibbus.sys"<BR> <BR>+#include 
  "bus_ev_log.rc"<BR>+<BR> #include <common.ver><BR>Index: 
  V:/svn/winib/trunk/core/al/kernel/al_mgr.c<BR>===================================================================<BR>--- 
  V:/svn/winib/trunk/core/al/kernel/al_mgr.c (revision 4394)<BR>+++ 
  V:/svn/winib/trunk/core/al/kernel/al_mgr.c (revision 4395)<BR>@@ -257,7 
  +257,8 
  @@<BR> ib_api_status_t<BR> ib_register_ca(<BR>  IN  const ci_interface_t*    p_ci,<BR>- IN  const PDEVICE_OBJECT    p_hca_dev<BR>+ IN  const PDEVICE_OBJECT    p_hca_dev,<BR>+ IN  const PDEVICE_OBJECT    p_fdo<BR>  )<BR> {<BR>  ib_api_status_t  status;<BR>@@ 
  -285,7 +286,7 @@<BR>  }<BR> <BR>  /* Construct and 
  initialize the CA structure. */<BR>- status = create_ci_ca( 
  &gp_al_mgr->obj, p_ci, p_hca_dev );<BR>+ status = create_ci_ca( 
  &gp_al_mgr->obj, p_ci, p_hca_dev, p_fdo );<BR>  if( status != 
  IB_SUCCESS )<BR>  {<BR>   AL_PRINT( 
  TRACE_LEVEL_ERROR, AL_DBG_ERROR,<BR>Index: 
  V:/svn/winib/trunk/core/al/kernel/SOURCES<BR>===================================================================<BR>--- 
  V:/svn/winib/trunk/core/al/kernel/SOURCES (revision 4394)<BR>+++ 
  V:/svn/winib/trunk/core/al/kernel/SOURCES (revision 4395)<BR>@@ -56,12 
  +56,13 
  @@<BR>  ..\ib_common.c   \<BR>  ..\ib_statustext.c<BR> <BR>-INCLUDES=..;..\..\..\inc;..\..\..\inc\kernel;<BR>+INCLUDES=..;..\..\..\inc;..\..\..\inc\kernel;..\..\bus\kernel\$O;<BR> <BR> C_DEFINES=$(C_DEFINES) 
  -DDRIVER -DDEPRECATE_DDK_FUNCTIONS 
  \<BR>  -DEXPORT_AL_SYMBOLS<BR> <BR> TARGETLIBS= 
  \<BR>+    $(DDK_LIB_PATH)\ntstrsafe.lib 
  \<BR>  $(TARGETPATH)\*\complib.lib<BR> <BR> !IFDEF 
  ENABLE_EVENT_TRACING<BR>Index: 
  V:/svn/winib/trunk/core/al/kernel/al_ci_ca.c<BR>===================================================================<BR>--- 
  V:/svn/winib/trunk/core/al/kernel/al_ci_ca.c (revision 4394)<BR>+++ 
  V:/svn/winib/trunk/core/al/kernel/al_ci_ca.c (revision 4395)<BR>@@ -85,7 
  +85,8 
  @@<BR> create_ci_ca(<BR>  IN    al_obj_t     *p_parent_obj,<BR>  IN  const ci_interface_t*    p_ci,<BR>- IN  const PDEVICE_OBJECT    p_hca_dev<BR>+ IN  const PDEVICE_OBJECT    p_hca_dev,<BR>+ IN  const PDEVICE_OBJECT    p_fdo<BR>  )<BR> {<BR>  ib_api_status_t   status;<BR>@@ 
  -189,8 +190,10 @@<BR>   return 
  status;<BR>  }<BR> <BR>+<BR>  /* store HCA device 
  object into CA object */<BR>  p_ci_ca->h_ca->p_hca_dev = 
  p_hca_dev;<BR>+ p_ci_ca->h_ca->p_fdo = 
  p_fdo;<BR>  <BR>  /* Get a list of the port GUIDs on this 
  CI CA. */<BR>  status = get_port_info( p_ci_ca );<BR>Index: 
  V:/svn/winib/trunk/core/al/al_ca.h<BR>===================================================================<BR>--- 
  V:/svn/winib/trunk/core/al/al_ca.h (revision 4394)<BR>+++ 
  V:/svn/winib/trunk/core/al/al_ca.h (revision 4395)<BR>@@ -51,6 +51,7 
  @@<BR> #if 
  defined(CL_KERNEL)<BR>  ib_ca_handle_t   h_um_ca;<BR>  PDEVICE_OBJECT   p_hca_dev;<BR>+ PDEVICE_OBJECT   p_fdo;<BR> #endif<BR> <BR> } ib_ca_t;<BR>Index: 
  V:/svn/winib/trunk/core/al/al_ci_ca.h<BR>===================================================================<BR>--- 
  V:/svn/winib/trunk/core/al/al_ci_ca.h (revision 4394)<BR>+++ 
  V:/svn/winib/trunk/core/al/al_ci_ca.h (revision 4395)<BR>@@ -57,7 +57,8 
  @@<BR> create_ci_ca(<BR>  IN    al_obj_t     *p_parent_obj,<BR>  IN  const ci_interface_t*    p_ci,<BR>- IN  const PDEVICE_OBJECT    p_hca_dev<BR>+ IN  const PDEVICE_OBJECT    p_hca_dev,<BR>+ IN  const PDEVICE_OBJECT    p_fdo<BR>  );<BR> <BR> DEVICE_OBJECT*<BR>Index: 
  V:/svn/winib/trunk/inc/kernel/iba/ib_ci_ifc.h<BR>===================================================================<BR>--- 
  V:/svn/winib/trunk/inc/kernel/iba/ib_ci_ifc.h (revision 4394)<BR>+++ 
  V:/svn/winib/trunk/inc/kernel/iba/ib_ci_ifc.h (revision 4395)<BR>@@ -56,7 
  +56,8 @@<BR> typedef 
  ib_api_status_t<BR> (*ib_pfn_register_ca_t)(<BR>  IN  const ci_interface_t* 
  const  p_ci,<BR>- IN  const PDEVICE_OBJECT    p_hca_dev<BR>+ IN  const PDEVICE_OBJECT    p_hca_dev,<BR>+ IN  const PDEVICE_OBJECT    p_fdo<BR>  );<BR> <BR> <BR>Index: 
  V:/svn/winib/trunk/inc/complib/cl_log.h<BR>===================================================================<BR>--- 
  V:/svn/winib/trunk/inc/complib/cl_log.h (revision 4394)<BR>+++ 
  V:/svn/winib/trunk/inc/complib/cl_log.h (revision 4395)<BR>@@ -43,7 +43,6 
  @@<BR> #ifndef _CL_LOG_H_<BR> #define 
  _CL_LOG_H_<BR> <BR>-<BR> #include 
  <complib/cl_types.h><BR> <BR> <BR>@@ -147,9 +146,99 
  @@<BR> *********/<BR> <BR> <BR>+/****f* Component Library: 
  Debug Output/cl_msg_out<BR>+* NAME<BR>+* cl_event_log_write<BR>+*<BR>+* 
  DESCRIPTION<BR>+* The cl_event_log_write function sends a message to 
  System Event Logger.<BR>+*<BR>+* SYNOPSIS<BR>+*/<BR>+CL_EXPORT 
  void<BR>+cl_event_log_write(<BR>+ PVOID p_io_object,<BR>+ ULONG p_error_code,<BR>+ ULONG p_unique_error_code,<BR>+ ULONG p_final_status,<BR>+ PWCHAR p_insertion_string,<BR>+ ULONG p_n_data_items,<BR>+  ...<BR>+  );<BR>+/*<BR>+* 
  PARAMETERS<BR>+* p_io_object<BR>+*  [in] The IO object ( driver 
  object or device object 
  ).<BR>+* <BR>+* p_error_code<BR>+*  [in] The error 
  code.<BR>+*<BR>+* p_unique_error_code<BR>+*  [in] A specific 
  error code.<BR>+*<BR>+* p_final_status<BR>+*  [in] The final 
  status.<BR>+*<BR>+* p_insertion_string<BR>+*  [in] String to 
  print.<BR>+*<BR>+* p_n_data_items<BR>+*  [in] Number of data 
  items<BR>+*<BR>+* ...<BR>+*  [in] data items values<BR>+*<BR>+* 
  RETURN VALUE<BR>+* This function does not return a value.<BR>+*<BR>+* 
  NOTES<BR>+* cl_event_log_write is available in both debug and release 
  builds.<BR>+*<BR>+* The function uses IoAllocateErrorLogEntry and 
  IoWriteErrorLogEntry<BR>+* functions to send data to System Event 
  Log.<BR>+*<BR>+* SEE ALSO<BR>+* <BR>+*********/<BR>+<BR> #ifdef 
  __cplusplus<BR> }<BR> #endif<BR> <BR>+#ifdef 
  CL_KERNEL<BR>+#include <ntddk.h><BR>+#define NTSTRSAFE_LIB<BR>+#include 
  <ntstrsafe.h><BR> <BR>+#define 
  CL_LOG_BUF_LEN  512<BR>+extern WCHAR g_cl_wlog[ CL_LOG_BUF_LEN ]; 
  <BR>+extern UCHAR g_cl_slog[ CL_LOG_BUF_LEN ]; <BR>+<BR>+static void 
  __build_str( const char * format, ... )<BR>+{<BR>+ NTSTATUS 
  status;<BR>+ va_list p_arg;<BR>+ va_start(p_arg, 
  format);<BR>+ status = RtlStringCbVPrintfA((char *)g_cl_slog, 
  sizeof(g_cl_slog), format , p_arg);<BR>+ if (status)<BR>+  goto 
  end;<BR>+ status = RtlStringCchPrintfW(g_cl_wlog, 
  sizeof(g_cl_wlog)/sizeof(g_cl_wlog[0]), L"%S", g_cl_slog);<BR>+ if 
  (status)<BR>+  goto 
  end;<BR>+end:<BR>+ va_end(p_arg);<BR>+}<BR>+<BR>+#define 
  CL_PRINT_TO_EVENT_LOG(_obj_,_event_id_,_msg_)  \<BR>+ { 
  \<BR>+  NTSTATUS event_id = _event_id_; 
  \<BR>+  __build_str _msg_; \<BR>+  cl_event_log_write( 
  _obj_, (ULONG)event_id, 0, 0, g_cl_wlog, 0, 0 ); 
  \<BR>+ }<BR>+#else<BR>+<BR>+#define 
  CL_PRINT_TO_EVENT_LOG(_obj_,_event_id_,_msg_)<BR>+<BR>+#endif<BR>+<BR> #endif /* 
  _CL_LOG_H_ */<BR>Index: 
  V:/svn/winib/trunk/inc/iba/ib_ci.h<BR>===================================================================<BR>--- 
  V:/svn/winib/trunk/inc/iba/ib_ci.h (revision 4394)<BR>+++ 
  V:/svn/winib/trunk/inc/iba/ib_ci.h (revision 4395)<BR>@@ -2937,7 +2937,8 
  @@<BR> AL_EXPORT ib_api_status_t<BR> ib_register_ca 
  (<BR>  IN  const ci_interface_t*    p_ci,<BR>- IN  const PDEVICE_OBJECT    p_hca_dev<BR>+ IN  const PDEVICE_OBJECT    p_hca_dev,<BR>+ IN  const PDEVICE_OBJECT    p_fdo<BR>  );<BR> /*<BR> * 
  DESCRIPTION<BR>@@ -2954,6 +2955,8 @@<BR> *  vector to support 
  verbs functionality.<BR> * p_hca_dev<BR> *  PDO of 
  HCA device<BR>+* p_fdo<BR>+*  FDO of IBBUS 
  device<BR> *<BR> * RETURN VALUE<BR> * IB_SUCCESS<BR>Index: 
  V:/svn/winib/trunk/hw/mlx4/kernel/hca/mlx4_hca.inx<BR>===================================================================<BR>--- 
  V:/svn/winib/trunk/hw/mlx4/kernel/hca/mlx4_hca.inx (revision 4394)<BR>+++ 
  V:/svn/winib/trunk/hw/mlx4/kernel/hca/mlx4_hca.inx (revision 4395)<BR>@@ 
  -177,19 +177,19 
  @@<BR> <BR> [MLX4HCA.DDInstall.ntx86.Services]<BR> AddService = 
  mlx4_hca,%SPSVCINST_ASSOCSERVICE%,MLX4HCA.ServiceInstall,MLX4HCA.EventLog<BR>-AddService 
  = ibbus,,Ibbus.ServiceInstall<BR>+AddService = 
  ibbus,,Ibbus.ServiceInstall,IBBUS.EventLog<BR> AddService = 
  WinVerbs,,WinVerbs.ServiceInstall<BR> AddService = 
  WinMad,,WinMad.ServiceInstall<BR> <BR> [MLX4HCA.DDInstall.ntamd64.Services]<BR> AddService 
  = 
  mlx4_hca,%SPSVCINST_ASSOCSERVICE%,MLX4HCA.ServiceInstall,MLX4HCA.EventLog<BR>-AddService 
  = ibbus,,Ibbus.ServiceInstall<BR>+AddService = 
  ibbus,,Ibbus.ServiceInstall,IBBUS.EventLog<BR> AddService = 
  WinVerbs,,WinVerbs.ServiceInstall<BR> AddService = 
  WinMad,,WinMad.ServiceInstall<BR> <BR> [MLX4HCA.DDInstall.ntia64.Services]<BR> AddService 
  = 
  mlx4_hca,%SPSVCINST_ASSOCSERVICE%,MLX4HCA.ServiceInstall,MLX4HCA.EventLog<BR>-AddService 
  = ibbus,,Ibbus.ServiceInstall<BR>+AddService = 
  ibbus,,Ibbus.ServiceInstall,IBBUS.EventLog<BR> AddService = 
  WinVerbs,,WinVerbs.ServiceInstall<BR> AddService = 
  WinMad,,WinMad.ServiceInstall<BR> <BR>@@ -282,6 +282,14 
  @@<BR> AddReg          = 
  Ibbus.ParamsReg<BR> Dependencies = 
  mlx4_hca<BR> <BR>+[IBBUS.EventLog]<BR>+AddReg = 
  IBBUS.AddEventLogReg<BR>+<BR>+[IBBUS.AddEventLogReg]<BR>+HKR, , 
  EventMessageFile, 0x00020000, 
  "%%SystemRoot%%\System32\IoLogMsg.dll;%%SystemRoot%%\System32\drivers\ibbus.sys"<BR>+HKR, 
  , TypesSupported,   0x00010001, 
  7<BR>+<BR>+<BR> [Ibbus.ParamsReg]<BR> HKR,"Parameters","IbalDebugLevel",%REG_DWORD%,2<BR> HKR,"Parameters","IbalDebugFlags",%REG_DWORD%,0x00ffffff<BR></FONT></DIV></BLOCKQUOTE></BODY></HTML>