[ofw][patches][IBAL] work around for reference count leakage bugs

Leonid Keller leonid at mellanox.co.il
Mon Jun 1 08:41:19 PDT 2009


IBAL still has bugs, which cause reference count leakage, which stops
the cascading destroying resources of IBAL.
It causes  in turn a freeze of IBBUS on HCA disable or system power
down.
On checked builds IBAL forces destroying of the objects after some
timeout.
On free version it waits endlessly.
This patch makes the behavior of free version to be the same in checked
version while sending a message to System Event Log.
 
 
 
Index: V:/svn/winib/trunk/core/al/al_common.c
===================================================================
--- V:/svn/winib/trunk/core/al/al_common.c (revision 4403)
+++ V:/svn/winib/trunk/core/al/al_common.c (revision 4404)
@@ -35,6 +35,7 @@
 #include "al_ci_ca.h"
 #include "al_common.h"
 #include "al_debug.h"
+#include "al_ca.h"
 
 #if defined(EVENT_TRACING)
 #ifdef offsetof
@@ -46,6 +47,7 @@
 #include "al_mgr.h"
 #include <complib/cl_math.h>
 #include "ib_common.h"
+#include "bus_ev_log.h"
 
 
 
@@ -498,7 +500,6 @@
 
  if( deref_al_obj( p_obj ) )
  {
- #ifdef _DEBUG_
   uint32_t  wait_us;
   /*
    * Wait for all other references to go away.  We wait as long as the
@@ -529,13 +530,11 @@
      &p_obj->event, AL_MAX_TIMEOUT_US, AL_WAIT_ALERTABLE );
    } while( cl_status == CL_NOT_DONE );
   }
- #else
-  do
-  {
-   cl_status = cl_event_wait_on(
-    &p_obj->event, EVENT_NO_TIMEOUT, AL_WAIT_ALERTABLE );
-  } while( cl_status == CL_NOT_DONE );
- #endif
+  if ( p_obj->p_ci_ca && p_obj->p_ci_ca )
+   CL_PRINT_TO_EVENT_LOG( p_obj->p_ci_ca->h_ca->p_fdo,
EVENT_IBBUS_ANY_ERROR,
+    ("IBAL stuck: AL object %s, ref_cnt: %d. Forcing object
destruction.\n",
+    ib_get_obj_type( p_obj ), p_obj->ref_cnt));
+
   CL_ASSERT( cl_status == CL_SUCCESS );
   if( cl_status != CL_SUCCESS )
   {

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openfabrics.org/pipermail/ofw/attachments/20090601/e8c50baf/attachment.html>


More information about the ofw mailing list