Index: hw/dirs
===================================================================
--- hw/dirs	(revision 256)
+++ hw/dirs	(working copy)
@@ -1,2 +1,3 @@
 DIRS=\
-	mt23108
+	mt23108 \
+	mthca
Index: hw/mthca/kernel/mt_verbs.c
===================================================================
--- hw/mthca/kernel/mt_verbs.c	(revision 256)
+++ hw/mthca/kernel/mt_verbs.c	(working copy)
@@ -56,38 +56,46 @@
 	int err;
 	ib_api_status_t		status;
 	struct ib_ucontext *context_p = (struct ib_ucontext *)h_um_ca;
+#if DBG || defined( EVENT_TRACING )
+	struct ib_device *ib_dev = context_p->device;
+#endif
 
 	HCA_ENTER(HCA_DBG_SHIM);
 
 	context_p->is_removing = TRUE;
 
 	if (atomic_read(&context_p->usecnt)) {
-		HCA_PRINT(TRACE_LEVEL_ERROR  ,HCA_DBG_SHIM  ,("resources are not released (cnt %d)\n", context_p->usecnt));
+		HCA_PRINT(TRACE_LEVEL_ERROR  ,HCA_DBG_SHIM,
+			("resources are not released (cnt %d)\n", context_p->usecnt));
 		status = IB_RESOURCE_BUSY;
 		goto err_usage;
 	}
 	
 	err = ibv_dealloc_pd( context_p->pd );
 	if (err) {
-		HCA_PRINT(TRACE_LEVEL_ERROR  ,HCA_DBG_SHIM  ,("ibv_dealloc_pd failed (%d)\n", err));
+		HCA_PRINT(TRACE_LEVEL_ERROR  ,HCA_DBG_SHIM,
+			("ibv_dealloc_pd failed (%d)\n", err));
 		status = errno_to_iberr(err);
 	}
 
 	err = mthca_dealloc_ucontext(context_p);
 	if (err) {
-		HCA_PRINT(TRACE_LEVEL_ERROR   ,HCA_DBG_SHIM  ,("mthca_dealloc_ucontext failed (%d)\n", err));
+		HCA_PRINT(TRACE_LEVEL_ERROR   ,HCA_DBG_SHIM,
+			("mthca_dealloc_ucontext failed (%d)\n", err));
 		status = errno_to_iberr(err);
 		goto err_dealloc_ucontext;
 	}
 
-	HCA_PRINT(TRACE_LEVEL_INFORMATION 	,HCA_DBG_SHIM  , ("pcs %p\n", PsGetCurrentProcess()) );
+	HCA_PRINT(TRACE_LEVEL_INFORMATION 	,HCA_DBG_SHIM,
+		("pcs %p\n", PsGetCurrentProcess()) );
 	status = IB_SUCCESS;
 	goto end;
 	
 err_dealloc_ucontext: 
 err_usage:
 end:
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM  ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return;
 }
 
Index: hw/mthca/kernel/hca_memory.c
===================================================================
--- hw/mthca/kernel/hca_memory.c	(revision 256)
+++ hw/mthca/kernel/hca_memory.c	(working copy)
@@ -33,6 +33,7 @@
 
 #include "hca_driver.h"
 #include "hca_utils.h"
+#include "mthca_dev.h"
 
 #if defined(EVENT_TRACING)
 #ifdef offsetof
@@ -59,7 +60,10 @@
 	struct ib_mr *mr_p;
 	struct mthca_mr *mro_p;
 	struct ib_pd *ib_pd_p = (struct ib_pd *)h_pd;
-	
+#if DBG || defined( EVENT_TRACING )
+	struct ib_device *ib_dev = ib_pd_p->device;
+#endif
+
 	HCA_ENTER(HCA_DBG_MEMORY);
 
 	// sanity checks
@@ -68,7 +72,8 @@
 		goto err_unsupported;
 	} 
 	if (!p_mr_create || 0 == p_mr_create->length) {
-		HCA_PRINT(TRACE_LEVEL_WARNING ,HCA_DBG_MEMORY ,("invalid attributes"));
+		HCA_PRINT(TRACE_LEVEL_WARNING ,HCA_DBG_MEMORY,
+			("invalid attributes"));
 		status = IB_INVALID_PARAMETER;
 		goto err_invalid_parm; 
 	}
@@ -78,7 +83,8 @@
 	 */
 	if (p_mr_create->access_ctrl & (IB_AC_RDMA_WRITE | IB_AC_ATOMIC) &&
 	    !(p_mr_create->access_ctrl & IB_AC_LOCAL_WRITE)) {
-		HCA_PRINT(TRACE_LEVEL_WARNING ,HCA_DBG_MEMORY ,("invalid access rights"));
+		HCA_PRINT(TRACE_LEVEL_WARNING ,HCA_DBG_MEMORY,
+			("invalid access rights"));
 		status = IB_INVALID_PERMISSION;
 		goto err_invalid_access; 
 	}		
@@ -93,7 +99,8 @@
 			(int)p_mr_create->access_ctrl,
 			&iobuf );
 		if (err) {
-			HCA_PRINT(TRACE_LEVEL_ERROR ,HCA_DBG_MEMORY ,("iobuf_register failed(%d)",err));
+			HCA_PRINT(TRACE_LEVEL_ERROR ,HCA_DBG_MEMORY,
+				("iobuf_register failed(%d)",err));
 			status = errno_to_iberr(err);
 			goto err_lock;
 		}
@@ -142,7 +149,8 @@
 err_invalid_access:	
 err_invalid_parm:
 err_unsupported:
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR ,HCA_DBG_MEMORY ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR ,HCA_DBG_MEMORY,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 }
 
@@ -161,7 +169,10 @@
 	struct ib_mr *mr_p;
 	struct ib_phys_buf *buffer_list;
 	struct ib_pd *ib_pd_p = (struct ib_pd *)h_pd;
-	
+#if DBG || defined( EVENT_TRACING )
+	struct ib_device *ib_dev = ib_pd_p->device;
+#endif
+
 	UNUSED_PARAM( um_call );
 
 	HCA_ENTER(HCA_DBG_SHIM);
@@ -183,8 +194,11 @@
 	//NB: p_pmr_create->hca_page_size is not used, i.e. supposed it is always the same
 	
 	// register pmr	
-	if (p_pmr_create->length == (uint64_t)-1LL) 
-		mr_p = ibv_get_dma_mr(ib_pd_p, 	map_qp_ibal_acl(p_pmr_create->access_ctrl) );
+	if (p_pmr_create->length == (uint64_t)-1LL)
+	{
+		mr_p = ibv_get_dma_mr( ib_pd_p,
+			map_qp_ibal_acl(p_pmr_create->access_ctrl) );
+	}
 	else
 		mr_p = ibv_reg_phys_mr(ib_pd_p, buffer_list, p_pmr_create->num_ranges, 
 			map_qp_ibal_acl(p_pmr_create->access_ctrl), p_vaddr );
@@ -206,7 +220,8 @@
 err_reg_phys_mr:
 err_invalid_parm:
 err_unsupported:
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_MEMORY  ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_MEMORY,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 	
 }
@@ -297,6 +312,9 @@
 {
 	ib_api_status_t 	status;
 	int err;
+#if DBG || defined( EVENT_TRACING )
+	struct ib_device *ib_dev = ((struct ib_mr *)h_mr)->device;
+#endif
 
 	HCA_ENTER(HCA_DBG_SHIM);
 
@@ -328,7 +346,8 @@
 	
 err_dereg_mr:
 err_unsupported:
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_MEMORY  ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_MEMORY,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 		
 }
Index: hw/mthca/kernel/hca_verbs.c
===================================================================
--- hw/mthca/kernel/hca_verbs.c	(revision 256)
+++ hw/mthca/kernel/hca_verbs.c	(working copy)
@@ -70,20 +70,26 @@
 #ifndef WIN_TO_BE_CHANGED
 
 	mlnx_hca_t				*p_hca;
-	ib_api_status_t status;
+	ib_api_status_t status = IB_NOT_FOUND;
 	mlnx_cache_t	*p_cache;
+	struct ib_device *ib_dev;
 
 	HCA_ENTER(HCA_DBG_SHIM);
-	HCA_PRINT(TRACE_LEVEL_INFORMATION  ,HCA_DBG_SHIM  ,("context 0x%p\n", ca_context));
+	HCA_PRINT(TRACE_LEVEL_INFORMATION  ,HCA_DBG_SHIM,
+		("context 0x%p\n", ca_context));
 
 	// find CA object
 	p_hca = mlnx_hca_from_guid( ca_guid );
 	if( !p_hca ) {
-		status = IB_NOT_FOUND;
-		goto err_hca_from_guid;
+		HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM,
+			("completes with ERROR status IB_NOT_FOUND\n"));
+		return IB_NOT_FOUND;
 	}
 
-	HCA_PRINT(TRACE_LEVEL_INFORMATION  ,HCA_DBG_SHIM  ,("context 0x%p\n", ca_context));
+	ib_dev = &p_hca->mdev->ib_dev;
+
+	HCA_PRINT(TRACE_LEVEL_INFORMATION  ,HCA_DBG_SHIM,
+		("context 0x%p\n", ca_context));
 	status = mlnx_hobs_set_cb(&p_hca->hob,
 		pfn_completion_cb,
 		pfn_async_event_cb,
@@ -109,8 +115,8 @@
 
 err_mad_cache:
 err_set_cb:
-err_hca_from_guid:	
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM  ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 
 #else
@@ -385,7 +391,7 @@
 err_byte_count:	
 err_user_unsupported:
 	if( status != IB_INSUFFICIENT_MEMORY && status != IB_SUCCESS )
-		HCA_PRINT(TRACE_LEVEL_ERROR	, HCA_DBG_SHIM	,("completes with ERROR status %s\n", ib_get_err_str(status)));
+		HCA_PRINT(TRACE_LEVEL_ERROR	, HCA_DBG_SHIM	,("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	HCA_EXIT(HCA_DBG_SHIM);
 	return status;
 
@@ -596,7 +602,7 @@
 	status =	IB_SUCCESS;
 
 err_modify_port:
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM  ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM  ,("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 
 #else
@@ -754,7 +760,8 @@
 	context_p = mthca_alloc_ucontext(ib_dev, p_umv_buf);
 	if (IS_ERR(context_p)) {
 		err = PTR_ERR(context_p);
-		HCA_PRINT(TRACE_LEVEL_ERROR  ,HCA_DBG_SHIM  ,("mthca_alloc_ucontext failed (%d)\n", err));
+		HCA_PRINT(TRACE_LEVEL_ERROR  ,HCA_DBG_SHIM,
+			("mthca_alloc_ucontext failed (%d)\n", err));
 		status = errno_to_iberr(err);
 		goto err_alloc_ucontext;
 	}
@@ -767,7 +774,8 @@
 	context_p->pd = ibv_alloc_pd(ib_dev, context_p, &umv_buf);
 	if (IS_ERR(context_p->pd)) {
 		err = PTR_ERR(context_p->pd);
-		HCA_PRINT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM  ,("ibv_alloc_pd failed (%d)\n", err));
+		HCA_PRINT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM,
+			("ibv_alloc_pd failed (%d)\n", err));
 		status = errno_to_iberr(err);
 		goto err_alloc_pd;
 	}
@@ -793,7 +801,8 @@
 end:
 	if (p_umv_buf && p_umv_buf->command) 
 		p_umv_buf->status = status;
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM  ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 	
 #else
@@ -978,7 +987,8 @@
 	ib_pd_p = ibv_alloc_pd(ib_dev, context_p, p_umv_buf);
 	if (IS_ERR(ib_pd_p)) {
 		err = PTR_ERR(ib_pd_p);
-		HCA_PRINT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM  ,("ibv_alloc_pd failed (%d)\n", err));
+		HCA_PRINT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM,
+			("ibv_alloc_pd failed (%d)\n", err));
 		status = errno_to_iberr(err);
 		goto err_alloc_pd;
 	}
@@ -991,7 +1001,8 @@
 err_alloc_pd:	
 	if (p_umv_buf && p_umv_buf->command) 
 		p_umv_buf->status = status;
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM  ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 	
 #else
@@ -1144,6 +1155,9 @@
 	ib_api_status_t		status;
 	int err;
 	struct ib_pd *ib_pd_p = (struct ib_pd *)h_pd;
+#if DBG || defined( EVENT_TRACING )
+	struct ib_device *ib_dev = ib_pd_p->device;
+#endif
 
 	HCA_ENTER( HCA_DBG_QP);
 
@@ -1153,14 +1167,16 @@
 	// dealloc pd
 	err = ibv_dealloc_pd( ib_pd_p );
 	if (err) {
-		HCA_PRINT(TRACE_LEVEL_ERROR  ,HCA_DBG_SHIM  ,("ibv_dealloc_pd failed (%d)\n", err));
+		HCA_PRINT(TRACE_LEVEL_ERROR  ,HCA_DBG_SHIM
+			,("ibv_dealloc_pd failed (%d)\n", err));
 		status = errno_to_iberr(err);
 		goto err_dealloc_pd;
 	}
  	status = IB_SUCCESS;
 
 err_dealloc_pd:
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM  ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM
+		,("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 
 #else
@@ -1259,7 +1275,7 @@
 	int err = 0;
 	ib_api_status_t		status = IB_SUCCESS;
 	struct ib_pd *ib_pd_p = (struct ib_pd *)h_pd;
-	struct ib_device *ib_dev_p = ib_pd_p->device;
+	struct ib_device *ib_dev = ib_pd_p->device;
 	struct ib_ah *ib_av_p;
 	struct ib_ah_attr ah_attr;
 	struct ib_ucontext *context_p = NULL;
@@ -1281,12 +1297,13 @@
 
 	// fill parameters 
 	RtlZeroMemory(&ah_attr, sizeof(ah_attr));
-	mlnx_conv_ibal_av( ib_dev_p, p_addr_vector,  &ah_attr );
+	mlnx_conv_ibal_av( ib_dev, p_addr_vector,  &ah_attr );
 
 	ib_av_p = ibv_create_ah(ib_pd_p, &ah_attr, context_p, p_umv_buf);
 	if (IS_ERR(ib_pd_p)) {
 		err = PTR_ERR(ib_pd_p);
-		HCA_PRINT(TRACE_LEVEL_ERROR   ,HCA_DBG_QP  ,("ibv_alloc_pd failed (%d)\n", err));
+		HCA_PRINT(TRACE_LEVEL_ERROR   ,HCA_DBG_QP,
+			("ibv_alloc_pd failed (%d)\n", err));
 		status = errno_to_iberr(err);
 		goto err_alloc_av;
 	}
@@ -1305,7 +1322,8 @@
 	
 err_alloc_av:	
 err_inval_params:
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR ,HCA_DBG_QP ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR ,HCA_DBG_QP,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 	
 #else
@@ -1394,12 +1412,16 @@
 	int err;
 	ib_api_status_t 	status = IB_SUCCESS;
 	struct ib_ah *ib_ah_p = (struct ib_ah *)h_av;
+#if DBG || defined( EVENT_TRACING )
+	struct ib_device *ib_dev = ib_ah_p->device;
+#endif
 
 	HCA_ENTER(HCA_DBG_SHIM);
 
 	// sanity checks
 	if( p_umv_buf && p_umv_buf->command ) {
-			HCA_PRINT (TRACE_LEVEL_ERROR, HCA_DBG_SHIM,("User mode is not supported yet\n"));
+			HCA_PRINT (TRACE_LEVEL_ERROR, HCA_DBG_SHIM,
+				("User mode is not supported yet\n"));
 			status = IB_UNSUPPORTED;
 			goto err_user_unsupported;
 	}
@@ -1409,7 +1431,8 @@
 	//TODO: not implemented in low-level driver
 	err = ibv_query_ah(ib_ah_p, &ah_attr)
 	if (err) {
-		HCA_PRINT(TRACE_LEVEL_ERROR, HCA_DBG_SHIM, ("ibv_query_ah failed (%d)\n", err));
+		HCA_PRINT(TRACE_LEVEL_ERROR, HCA_DBG_SHIM,
+			("ibv_query_ah failed (%d)\n", err));
 		status = errno_to_iberr(err);
 		goto err_query_ah;
 	}
@@ -1419,7 +1442,8 @@
 
 	err = mlnx_conv_mthca_av( ib_ah_p, p_addr_vector );
 	if (err) {
-		HCA_PRINT (TRACE_LEVEL_ERROR, HCA_DBG_SHIM,("mlnx_conv_mthca_av failed (%d)\n", err));
+		HCA_PRINT (TRACE_LEVEL_ERROR, HCA_DBG_SHIM,
+			("mlnx_conv_mthca_av failed (%d)\n", err));
 		status = errno_to_iberr(err);
 		goto err_conv_mthca_av;
 	}
@@ -1430,7 +1454,8 @@
 	
 err_conv_mthca_av:
 err_user_unsupported:
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM  ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 
 #else
@@ -1498,26 +1523,28 @@
 	struct ib_ah_attr ah_attr;
 	ib_api_status_t 	status = IB_SUCCESS;
 	struct ib_ah *ib_ah_p = (struct ib_ah *)h_av;
-	struct ib_device *ib_dev_p = ib_ah_p->pd->device;
+	struct ib_device *ib_dev = ib_ah_p->pd->device;
 
 	HCA_ENTER(HCA_DBG_SHIM);
 
 	// sanity checks
 	if( p_umv_buf && p_umv_buf->command ) {
-			HCA_PRINT(TRACE_LEVEL_ERROR   ,HCA_DBG_SHIM  ,("User mode is not supported yet\n"));
+			HCA_PRINT(TRACE_LEVEL_ERROR   ,HCA_DBG_SHIM,
+				("User mode is not supported yet\n"));
 			status = IB_UNSUPPORTED;
 			goto err_user_unsupported;
 	}
 
 	// fill parameters 
-	mlnx_conv_ibal_av( ib_dev_p, p_addr_vector,  &ah_attr );
+	mlnx_conv_ibal_av( ib_dev, p_addr_vector,  &ah_attr );
 
 	// modify AH
 #if 0
 	//TODO: not implemented in low-level driver
 	err = ibv_modify_ah(ib_ah_p, &ah_attr)
 	if (err) {
-		HCA_PRINT (TRACE_LEVEL_ERROR, HCA_DBG_SHIM,("ibv_query_ah failed (%d)\n", err));
+		HCA_PRINT (TRACE_LEVEL_ERROR, HCA_DBG_SHIM,
+			("ibv_query_ah failed (%d)\n", err));
 		status = errno_to_iberr(err);
 		goto err_query_ah;
 	}
@@ -1527,7 +1554,8 @@
 #endif
 
 err_user_unsupported:
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM  ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 
 #else
@@ -1585,19 +1613,24 @@
 	int err;
 	ib_api_status_t 	status = IB_SUCCESS;
 	struct ib_ah *ib_ah_p = (struct ib_ah *)h_av;
+#if DBG || defined( EVENT_TRACING )
+	struct ib_device *ib_dev = ib_ah_p->device;
+#endif
 
 	HCA_ENTER(HCA_DBG_SHIM);
 
 	// destroy AV
 	err = ibv_destroy_ah( ib_ah_p );
 	if (err) {
-		HCA_PRINT (TRACE_LEVEL_ERROR ,HCA_DBG_SHIM,("ibv_destroy_ah failed (%d)\n", err));
+		HCA_PRINT (TRACE_LEVEL_ERROR ,HCA_DBG_SHIM,
+			("ibv_destroy_ah failed (%d)\n", err));
 		status = errno_to_iberr(err);
 		goto err_destroy_ah;
 	}
 
 err_destroy_ah:
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM  ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 
 #else
@@ -1710,7 +1743,8 @@
 		ib_qp_p = ibv_create_qp( ib_pd_p, &qp_init_attr, context_p, p_umv_buf );
 		if (IS_ERR(ib_qp_p)) {
 			err = PTR_ERR(ib_qp_p);
-			HCA_PRINT(TRACE_LEVEL_ERROR  , HCA_DBG_QP  ,("ibv_create_qp failed (%d)\n", err));
+			HCA_PRINT(TRACE_LEVEL_ERROR  , HCA_DBG_QP,
+				("ibv_create_qp failed (%d)\n", err));
 			status = errno_to_iberr(err);
 			goto err_create_qp;
 		}
@@ -1740,7 +1774,8 @@
 	end:
 		if (p_umv_buf && p_umv_buf->command) 
 			p_umv_buf->status = status;
-		HCA_PRINT_EXIT(TRACE_LEVEL_ERROR ,HCA_DBG_QP ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+		HCA_PRINT_EXIT(TRACE_LEVEL_ERROR ,HCA_DBG_QP ,
+			("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 		return status;
 }
 
@@ -1756,13 +1791,17 @@
 #ifndef WIN_TO_BE_CHANGED
 
 	ib_api_status_t 	status;
+#if DBG || defined( EVENT_TRACING )
+	struct ib_device*	ib_dev = ((struct ib_pd*)h_pd)->device;
+#endif
 
 	HCA_ENTER(HCA_DBG_SHIM);
 
 	status =	_create_qp( h_pd, port_num,
 		qp_context, p_create_attr, p_qp_attr, ph_qp, NULL );
 		
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM  ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 																		
 #else
@@ -2008,6 +2047,9 @@
 #ifndef WIN_TO_BE_CHANGED
 
 	ib_api_status_t 	status;
+#if DBG || defined( EVENT_TRACING )
+	struct ib_device*	ib_dev = ((struct ib_pd*)h_pd)->device;
+#endif
 	//NB: algorithm of mthca_alloc_sqp() requires port_num
 	// PRM states, that special pares are created in couples, so
 	// looks like we can put here port_num = 1 always
@@ -2018,7 +2060,8 @@
 	status = _create_qp( h_pd, port_num,
 		qp_context, p_create_attr, p_qp_attr, ph_qp, p_umv_buf );
 		
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR ,HCA_DBG_QP ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR ,HCA_DBG_QP,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 																		
 #else
@@ -2256,6 +2299,9 @@
 	struct ib_qp_attr qp_attr;
 	int qp_attr_mask;
 	struct ib_qp *ib_qp_p = (struct ib_qp *)h_qp;
+#if DBG || defined( EVENT_TRACING )
+	struct ib_device* ib_dev = ib_qp_p->device;
+#endif
 
 	HCA_ENTER(HCA_DBG_QP);
 
@@ -2315,7 +2361,8 @@
 err_inval_params:
 	if (p_umv_buf && p_umv_buf->command) 
 		p_umv_buf->status = status;
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM  ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 
 #else
@@ -2437,6 +2484,9 @@
 	ib_api_status_t 	status = IB_SUCCESS;
 	struct ib_qp *ib_qp_p = (struct ib_qp *)h_qp;
 	struct mthca_qp *qp_p = (struct mthca_qp *)ib_qp_p;
+#if DBG || defined( EVENT_TRACING )
+	struct ib_device *ib_dev = ib_qp_p->device;
+#endif
 
 	UNREFERENCED_PARAMETER(p_umv_buf);
 	
@@ -2480,7 +2530,8 @@
 
 	status = IB_SUCCESS;
 
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR , HCA_DBG_QP ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR , HCA_DBG_QP,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 
 
@@ -2558,7 +2609,10 @@
 	ib_api_status_t 	status;
 	int err;
 	struct ib_qp *ib_qp_p = (struct ib_qp *)h_qp;
-		
+#if DBG || defined( EVENT_TRACING )
+	struct ib_device* ib_dev = ib_qp_p->device;
+#endif
+
 	UNUSED_PARAM( timewait );
 
 	HCA_ENTER( HCA_DBG_QP);
@@ -2568,7 +2622,8 @@
 
 	err = ibv_destroy_qp( ib_qp_p );
 	if (err) {
-		HCA_PRINT(TRACE_LEVEL_ERROR ,HCA_DBG_QP ,("ibv_destroy_qp failed (%d)\n", err));
+		HCA_PRINT(TRACE_LEVEL_ERROR ,HCA_DBG_QP,
+			("ibv_destroy_qp failed (%d)\n", err));
 		status = errno_to_iberr(err);
 		goto err_destroy_qp;
 	}
@@ -2576,7 +2631,8 @@
 	status = IB_SUCCESS;
 
 err_destroy_qp:
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR ,HCA_DBG_QP ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR ,HCA_DBG_QP,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 
 #else
@@ -2593,7 +2649,8 @@
 	UNUSED_PARAM( timewait );
 
 	HCA_ENTER( HCA_DBG_QP);
-	HCA_PRINT(TRACE_LEVEL_INFORMATION, HCA_DBG_QP,("hca %d qp 0x%x\n", hca_idx, qp_num));
+	HCA_PRINT(TRACE_LEVEL_INFORMATION, HCA_DBG_QP,
+		("hca %d qp 0x%x\n", hca_idx, qp_num));
 
 	VALIDATE_INDEX(hca_idx, MLNX_MAX_HCA, IB_INVALID_CA_HANDLE, cleanup);
 	hobul_p = mlnx_hobul_array[hca_idx];
@@ -2603,14 +2660,16 @@
 	}
 
 	qp_idx = qp_num & hobul_p->qp_idx_mask;
-	HCA_PRINT(TRACE_LEVEL_INFORMATION, HCA_DBG_QP ,("hobul_p 0x%p mask 0x%x qp_idx 0x%x mark %d\n",
+	HCA_PRINT(TRACE_LEVEL_INFORMATION, HCA_DBG_QP ,
+		("hobul_p 0x%p mask 0x%x qp_idx 0x%x mark %d\n",
 		hobul_p, hobul_p->qp_idx_mask, qp_idx, hobul_p->qp_info_tbl[qp_idx].mark));
 
 	VALIDATE_INDEX(qp_idx, hobul_p->max_qp, IB_INVALID_QP_HANDLE, cleanup);
 	if ( E_MARK_QP != hobul_p->qp_info_tbl[qp_idx].mark) {
 		if (E_MARK_INVALID == hobul_p->qp_info_tbl[qp_idx].mark) {
 			HCA_PRINT(TRACE_LEVEL_ERROR,HCA_DBG_SHIM,
-				("completes with ERROR status %s\n", ib_get_err_str(IB_INVALID_QP_HANDLE)));
+				("completes with ERROR status %s\n"
+				IB_GET_ERR_STR(IB_INVALID_QP_HANDLE)));
 			return IB_SUCCESS; // Already freed
 		}
 		status = IB_INVALID_QP_HANDLE;
@@ -2711,6 +2770,10 @@
 
 	if( p_umv_buf && p_umv_buf->command ) {
 
+		context_p = (struct ib_ucontext *)h_ca;
+		hob_p = HOB_FROM_IBDEV(context_p->device);
+		ib_dev = context_p->device;
+
 		// sanity checks 
 		if (p_umv_buf->input_size < sizeof(struct ibv_create_cq) ||
 			p_umv_buf->output_size < sizeof(struct ibv_create_cq_resp) ||
@@ -2718,10 +2781,6 @@
 			status = IB_INVALID_PARAMETER;
 			goto err_inval_params;
 		}
-
-		context_p = (struct ib_ucontext *)h_ca;
-		hob_p = HOB_FROM_IBDEV(context_p->device);
-		ib_dev = context_p->device;
 	}
 	else {
 		hob_p = (mlnx_hob_t *)h_ca;
@@ -2756,7 +2815,8 @@
 err_inval_params:
 	if (p_umv_buf && p_umv_buf->command) 
 		p_umv_buf->status = status;
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR ,HCA_DBG_CQ ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR ,HCA_DBG_CQ,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 																		
 #else
@@ -3083,6 +3143,9 @@
 	ib_api_status_t 	status;
 	int err;
 	struct ib_cq *ib_cq_p = (struct ib_cq *)h_cq;
+#if DBG || defined( EVENT_TRACING )
+	struct ib_device* ib_dev = ib_cq_p->device;
+#endif
 
 	HCA_ENTER( HCA_DBG_QP);
 
@@ -3092,7 +3155,8 @@
 	// destroy CQ
 	err = ibv_destroy_cq( ib_cq_p );
 	if (err) {
-		HCA_PRINT (TRACE_LEVEL_ERROR ,HCA_DBG_SHIM,("ibv_destroy_cq failed (%d)\n", err));
+		HCA_PRINT (TRACE_LEVEL_ERROR ,HCA_DBG_SHIM,
+			("ibv_destroy_cq failed (%d)\n", err));
 		status = errno_to_iberr(err);
 		goto err_destroy_cq;
 	}
@@ -3100,7 +3164,8 @@
 	status = IB_SUCCESS;
 
 err_destroy_cq:
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM  ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 
 #else
Index: hw/mthca/kernel/hca_mcast.c
===================================================================
--- hw/mthca/kernel/hca_mcast.c	(revision 256)
+++ hw/mthca/kernel/hca_mcast.c	(working copy)
@@ -58,14 +58,17 @@
 	int err;
 	ib_api_status_t 	status;
 	struct ib_qp *ib_qp_p = (struct ib_qp *)h_qp;
+#if DBG || defined( EVENT_TRACING )
+	struct ib_device *ib_dev = ib_qp_p->device;
+#endif
 	mlnx_mcast_t *mcast_p;
 
 	HCA_ENTER(HCA_DBG_SHIM);
 
 	// sanity checks
 	if( p_umv_buf && p_umv_buf->command ) {
-		HCA_PRINT(TRACE_LEVEL_ERROR , HCA_DBG_SHIM  ,("User mode is not supported yet\n"));
-		HCA_PRINT(TRACE_LEVEL_ERROR, HCA_DBG_SHIM ,("User mode is not supported yet\n"));
+		HCA_PRINT(TRACE_LEVEL_ERROR , HCA_DBG_SHIM,
+			("User mode is not supported yet\n"));
 		status = IB_UNSUPPORTED;
 		goto err_user_unsupported;
 	}
@@ -88,7 +91,8 @@
 	else {
 		err = ibv_attach_mcast(ib_qp_p, (union ib_gid *)p_mcast_gid, (u16)mcast_lid);
 		if (err) {
-			HCA_PRINT(TRACE_LEVEL_ERROR  ,HCA_DBG_SHIM  ,("ibv_attach_mcast failed (%d)\n", err));
+			HCA_PRINT(TRACE_LEVEL_ERROR  ,HCA_DBG_SHIM  ,
+				("ibv_attach_mcast failed (%d)\n", err));
 			status = errno_to_iberr(err);
 			goto err_attach;
 		}
@@ -115,7 +119,8 @@
 err_invalid_param:
 err_user_unsupported:
 end:		
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR , HCA_DBG_SHIM ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR , HCA_DBG_SHIM,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 }
 
@@ -123,15 +128,21 @@
 mlnx_detach_mcast (
 	IN		const	ib_mcast_handle_t			h_mcast)
 {
-	ib_api_status_t 	status;
+	ib_api_status_t 	status = IB_INVALID_PARAMETER;
 	int err;
 	mlnx_mcast_t *mcast_p = (mlnx_mcast_t*)h_mcast;
+	struct ib_device *ib_dev;
 
 	// sanity check
-	if (!mcast_p || !mcast_p->ib_qp_p) {
-		status = IB_INVALID_PARAMETER;
-		goto err_invalid_param;
+	if (!mcast_p || !mcast_p->ib_qp_p)
+	{
+		HCA_PRINT_EXIT(TRACE_LEVEL_ERROR , HCA_DBG_SHIM,
+			("completes with ERROR status IB_INVALID_PARAMETER\n"));
+		return IB_INVALID_PARAMETER;
 	}
+
+	ib_dev = mcast_p->ib_qp_p->device;
+
 	HCA_PRINT(TRACE_LEVEL_WARNING, HCA_DBG_SHIM,("mcasth %p, qp_p %p, mlid %hx, mgid %I64x`%I64x\n", 
 		mcast_p, mcast_p->ib_qp_p, mcast_p->mcast_lid,
 		*(uint64_t*)&mcast_p->mcast_gid.raw[0],
@@ -155,8 +166,8 @@
 
 err_detach_mcast:
 	kfree(mcast_p);
-err_invalid_param:	
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR , HCA_DBG_SHIM ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR , HCA_DBG_SHIM ,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 }
 
Index: hw/mthca/kernel/hca_smp.c
===================================================================
--- hw/mthca/kernel/hca_smp.c	(revision 256)
+++ hw/mthca/kernel/hca_smp.c	(working copy)
@@ -530,7 +530,7 @@
 	int err;
 	ib_api_status_t		status = IB_SUCCESS;
 	mlnx_hob_t			*hob_p = (mlnx_hob_t *)h_ca;
-	struct ib_device *ib_dev_p = IBDEV_FROM_HOB( hob_p );
+	struct ib_device *ib_dev = IBDEV_FROM_HOB( hob_p );
 	//TODO: do we need use flags (IB_MAD_IGNORE_MKEY, IB_MAD_IGNORE_BKEY) ?
 	int mad_flags = 0;  
 	struct _ib_wc *wc_p;
@@ -573,7 +573,7 @@
 	// process mad
 	if( !mlnx_cachable_mad( h_ca, port_num, p_mad_in, p_mad_out ) )
 	{
-		err = mthca_process_mad(ib_dev_p, mad_flags, (uint8_t)port_num, 
+		err = mthca_process_mad(ib_dev, mad_flags, (uint8_t)port_num, 
 			wc_p, grh_p, (struct ib_mad*)p_mad_in, (struct ib_mad*)p_mad_out);
 		if (!err) {
 			HCA_PRINT( TRACE_LEVEL_ERROR, HCA_DBG_MAD, 
@@ -591,7 +591,8 @@
 
 err_process_mad:
 err_port_num:	
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_MAD  ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_MAD,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 	
 #else
Index: hw/mthca/kernel/hca_driver.h
===================================================================
--- hw/mthca/kernel/hca_driver.h	(revision 256)
+++ hw/mthca/kernel/hca_driver.h	(working copy)
@@ -160,6 +160,7 @@
 #define HOB_FROM_IBDEV(dev_p)		(mlnx_hob_t *)&dev_p->mdev->ext->hca.hob
 
 
+#define IB_GET_ERR_STR	ib_dev->mdev->ext->ci_ifc.get_err_str
 
 
 /***********************************
Index: hw/mthca/kernel/hca_direct.c
===================================================================
--- hw/mthca/kernel/hca_direct.c	(revision 256)
+++ hw/mthca/kernel/hca_direct.c	(working copy)
@@ -61,16 +61,17 @@
 	int err;
 	ib_api_status_t 	status;
 	struct ib_qp *ib_qp_p = (struct ib_qp *)h_qp;
-	struct ib_device *ib_dev_p = ib_qp_p->device;
-	
+	struct ib_device *ib_dev = ib_qp_p->device;
+
 	HCA_ENTER(HCA_DBG_QP);
 	
 	// sanity checks
 
 	// create CQ
-	err = ib_dev_p->post_send(ib_qp_p, p_send_wr, pp_failed );
+	err = ib_dev->post_send(ib_qp_p, p_send_wr, pp_failed );
 	if (err) {
-		HCA_PRINT(TRACE_LEVEL_ERROR  , HCA_DBG_QP  ,("post_send failed (%d)\n", err));
+		HCA_PRINT(TRACE_LEVEL_ERROR  , HCA_DBG_QP,
+			("post_send failed (%d)\n", err));
 		if (err == -ENOMEM)
 			status = IB_INSUFFICIENT_RESOURCES;
 		else
@@ -81,7 +82,8 @@
 	status = IB_SUCCESS;
 		
 err_post_send: 
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_QP  ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_QP,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 																			
 }
@@ -96,16 +98,17 @@
 	int err;
 	ib_api_status_t 	status;
 	struct ib_qp *ib_qp_p = (struct ib_qp *)h_qp;
-	struct ib_device *ib_dev_p = ib_qp_p->device;
+	struct ib_device *ib_dev = ib_qp_p->device;
 	
 	HCA_ENTER(HCA_DBG_QP);
 
 	// sanity checks
 	
 	// create CQ
-	err = ib_dev_p->post_recv(ib_qp_p, p_recv_wr, pp_failed );
+	err = ib_dev->post_recv(ib_qp_p, p_recv_wr, pp_failed );
 	if (err) {
-		HCA_PRINT(TRACE_LEVEL_ERROR  ,HCA_DBG_QP  ,("post_recv failed (%d)\n", err));
+		HCA_PRINT(TRACE_LEVEL_ERROR  ,HCA_DBG_QP,
+			("post_recv failed (%d)\n", err));
 		if (err == -ENOMEM)
 			status = IB_INSUFFICIENT_RESOURCES;
 		else
@@ -116,7 +119,8 @@
 	status = IB_SUCCESS;
 		
 err_post_recv: 
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_QP  ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_QP,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 																			
 }
@@ -145,7 +149,10 @@
 	int err;
 	ib_api_status_t 	status = IB_SUCCESS;
 	struct ib_cq *ib_cq_p = (struct ib_cq *)h_cq;
-	
+#if DBG || defined( EVENT_TRACING )
+	struct ib_device *ib_dev = ib_cq_p->device;
+#endif
+
 	HCA_ENTER(HCA_DBG_CQ);
 
 	// sanity checks
@@ -157,14 +164,16 @@
 	// poll CQ
 	err = mthca_poll_cq_list(ib_cq_p, pp_free_wclist, pp_done_wclist );
 	if (err) {
-		HCA_PRINT(TRACE_LEVEL_ERROR ,HCA_DBG_CQ ,("mthca_poll_cq_list failed (%d)\n", err));
+		HCA_PRINT(TRACE_LEVEL_ERROR ,HCA_DBG_CQ,
+			("mthca_poll_cq_list failed (%d)\n", err));
 		status = errno_to_iberr(err);
 	}else if (!*pp_done_wclist)
 		status = IB_NOT_FOUND;
 		
 err_invalid_params:	
 	if (status != IB_NOT_FOUND){
-		HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_CQ  ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+		HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_CQ,
+			("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	}else
 		HCA_EXIT(HCA_DBG_CQ);
 	return status;
@@ -179,17 +188,22 @@
 	int err;
 	ib_api_status_t 	status = IB_SUCCESS;
 	struct ib_cq *ib_cq_p = (struct ib_cq *)h_cq;
-	
+#if DBG || defined( EVENT_TRACING )
+	struct ib_device *ib_dev = ib_cq_p->device;
+#endif
+
 	HCA_ENTER(HCA_DBG_SHIM);
 
 	// REARM CQ
 	err = ib_req_notify_cq(ib_cq_p, (solicited) ? IB_CQ_SOLICITED : IB_CQ_NEXT_COMP );
 	if (err) {
-		HCA_PRINT(TRACE_LEVEL_ERROR   ,HCA_DBG_SHIM   ,("ib_req_notify_cq failed (%d)\n", err));
+		HCA_PRINT(TRACE_LEVEL_ERROR   ,HCA_DBG_SHIM,
+			("ib_req_notify_cq failed (%d)\n", err));
 		status = errno_to_iberr(err);
 	}
 		
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM  ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 }
 
@@ -201,16 +215,21 @@
 	int err;
 	ib_api_status_t 	status = IB_SUCCESS;
 	struct ib_cq *ib_cq_p = (struct ib_cq *)h_cq;
+#if DBG || defined( EVENT_TRACING )
+	struct ib_device *ib_dev = ib_cq_p->device;
+#endif
 
 	HCA_ENTER(HCA_DBG_SHIM);
 
 	err = ib_req_ncomp_notif(ib_cq_p, n_cqes );
 	if (err) {
-		HCA_PRINT(TRACE_LEVEL_ERROR   ,HCA_DBG_SHIM   ,("ib_req_ncomp_notif failed (%d)\n", err));
+		HCA_PRINT(TRACE_LEVEL_ERROR   ,HCA_DBG_SHIM,
+			("ib_req_ncomp_notif failed (%d)\n", err));
 		status = errno_to_iberr(err);
 	}
 		
-	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM  ,("completes with ERROR status %s\n", ib_get_err_str(status)));
+	HCA_PRINT_EXIT(TRACE_LEVEL_ERROR  , HCA_DBG_SHIM,
+		("completes with ERROR status %s\n", IB_GET_ERR_STR(status)));
 	return status;
 }
 
Index: hw/mthca/kernel/SOURCES
===================================================================
--- hw/mthca/kernel/SOURCES	(revision 256)
+++ hw/mthca/kernel/SOURCES	(working copy)
@@ -63,7 +63,6 @@
 
 TARGETLIBS= \
 	$(TARGETPATH)\*\complib.lib	\
-	$(TARGETPATH)\*\ibal.lib	\
 	$(DDK_LIB_PATH)\wdmguid.lib
 
 
