From f2953798bb92eacb9318438b043846d607aae100 Mon Sep 17 00:00:00 2001 From: shefty Date: Wed, 23 Jul 2008 21:08:13 +0000 Subject: [PATCH] uvp/ci_umv_buf: always allocate uvp buffer The UVP controls the ci_umv_buf, but does not allocate the p_inout_buf if it is non-zero. However, the uvp frees the buffer later. It should always allocate the buffer, since the caller does not know the required size and cannot allocate it on the uvp's behalf. This avoids an unneeded initialization by the caller, and the if check by the uvp. Signed-off-by: Sean Hefty git-svn-id: svn://openib.tc.cornell.edu/gen1@1441 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86 --- trunk/hw/mlx4/user/hca/verbs.c | 73 ++++++++++-------------------- trunk/hw/mthca/user/mlnx_ual_av.c | 12 ++--- trunk/hw/mthca/user/mlnx_ual_ca.c | 10 ++-- trunk/hw/mthca/user/mlnx_ual_cq.c | 9 ++-- trunk/hw/mthca/user/mlnx_ual_pd.c | 9 ++-- trunk/hw/mthca/user/mlnx_ual_qp.c | 19 +++----- trunk/hw/mthca/user/mlnx_ual_srq.c | 9 ++-- 7 files changed, 47 insertions(+), 94 deletions(-) diff --git a/trunk/hw/mlx4/user/hca/verbs.c b/trunk/hw/mlx4/user/hca/verbs.c index df46f5d0..e7c6b4ea 100644 --- a/trunk/hw/mlx4/user/hca/verbs.c +++ b/trunk/hw/mlx4/user/hca/verbs.c @@ -57,15 +57,11 @@ mlx4_pre_open_ca ( if( p_umv_buf ) { + p_umv_buf->p_inout_buf = (ULONG_PTR)cl_zalloc( sizeof(struct ibv_get_context_resp) ); if( !p_umv_buf->p_inout_buf ) { - p_umv_buf->p_inout_buf = - (ULONG_PTR)cl_zalloc( sizeof(struct ibv_get_context_resp) ); - if( !p_umv_buf->p_inout_buf ) - { - status = IB_INSUFFICIENT_MEMORY; - goto end; - } + status = IB_INSUFFICIENT_MEMORY; + goto end; } p_umv_buf->input_size = 0; p_umv_buf->output_size = sizeof(struct ibv_get_context_resp); @@ -232,14 +228,11 @@ mlx4_pre_alloc_pd ( CL_ASSERT(context && p_umv_buf); + p_umv_buf->p_inout_buf = (ULONG_PTR)cl_malloc( sizeof(struct ibv_alloc_pd_resp) ); if( !p_umv_buf->p_inout_buf ) { - p_umv_buf->p_inout_buf = (ULONG_PTR)cl_malloc( sizeof(struct ibv_alloc_pd_resp) ); - if( !p_umv_buf->p_inout_buf ) - { - status = IB_INSUFFICIENT_MEMORY; - goto end; - } + status = IB_INSUFFICIENT_MEMORY; + goto end; } p_umv_buf->input_size = 0; p_umv_buf->output_size = sizeof(struct ibv_alloc_pd_resp); @@ -332,14 +325,11 @@ mlx4_pre_create_cq ( CL_ASSERT(h_uvp_ca && p_umv_buf); + p_umv_buf->p_inout_buf = (ULONG_PTR)cl_malloc( size ); if( !p_umv_buf->p_inout_buf ) { - p_umv_buf->p_inout_buf = (ULONG_PTR)cl_malloc( size ); - if( !p_umv_buf->p_inout_buf ) - { - status = IB_INSUFFICIENT_MEMORY; - goto err_umv_buf; - } + status = IB_INSUFFICIENT_MEMORY; + goto err_umv_buf; } p_umv_buf->input_size = sizeof(struct ibv_create_cq); p_umv_buf->output_size = sizeof(struct ibv_create_cq_resp); @@ -489,14 +479,11 @@ mlx4_pre_create_srq ( CL_ASSERT(p_umv_buf); + p_umv_buf->p_inout_buf = (ULONG_PTR)cl_malloc( size ); if( !p_umv_buf->p_inout_buf ) { - p_umv_buf->p_inout_buf = (ULONG_PTR)cl_malloc( size ); - if( !p_umv_buf->p_inout_buf ) - { - status = IB_INSUFFICIENT_MEMORY; - goto err_memory; - } + status = IB_INSUFFICIENT_MEMORY; + goto err_memory; } p_umv_buf->input_size = sizeof(struct ibv_create_srq); p_umv_buf->output_size = sizeof(struct ibv_create_srq_resp); @@ -691,14 +678,11 @@ mlx4_pre_create_qp ( CL_ASSERT(p_umv_buf); + p_umv_buf->p_inout_buf = (ULONG_PTR)cl_malloc(size); if( !p_umv_buf->p_inout_buf ) { - p_umv_buf->p_inout_buf = (ULONG_PTR)cl_malloc(size); - if( !p_umv_buf->p_inout_buf ) - { - status = IB_INSUFFICIENT_MEMORY; - goto err_memory; - } + status = IB_INSUFFICIENT_MEMORY; + goto err_memory; } p_umv_buf->input_size = sizeof(struct ibv_create_qp); p_umv_buf->output_size = sizeof(struct ibv_create_qp_resp); @@ -944,14 +928,11 @@ mlx4_pre_modify_qp ( CL_ASSERT(p_umv_buf); + p_umv_buf->p_inout_buf = (ULONG_PTR)cl_malloc(sizeof(struct ibv_modify_qp_resp)); if( !p_umv_buf->p_inout_buf ) { - p_umv_buf->p_inout_buf = (ULONG_PTR)cl_malloc(sizeof(struct ibv_modify_qp_resp)); - if( !p_umv_buf->p_inout_buf ) - { - status = IB_INSUFFICIENT_MEMORY; - goto err_memory; - } + status = IB_INSUFFICIENT_MEMORY; + goto err_memory; } p_umv_buf->input_size = 0; p_umv_buf->output_size = sizeof(struct ibv_modify_qp_resp); @@ -1412,14 +1393,11 @@ mlx4_pre_create_xrc_srq ( CL_ASSERT(p_umv_buf); + p_umv_buf->p_inout_buf = cl_malloc( size ); if( !p_umv_buf->p_inout_buf ) { - p_umv_buf->p_inout_buf = cl_malloc( size ); - if( !p_umv_buf->p_inout_buf ) - { - status = IB_INSUFFICIENT_MEMORY; - goto err_memory; - } + status = IB_INSUFFICIENT_MEMORY; + goto err_memory; } p_umv_buf->input_size = sizeof(struct ibv_create_srq); p_umv_buf->output_size = sizeof(struct ibv_create_srq_resp); @@ -1548,14 +1526,11 @@ mlx4_pre_open_xrc_domain ( CL_ASSERT(h_uvp_ca && p_umv_buf); + p_umv_buf->p_inout_buf = cl_malloc( size ); if( !p_umv_buf->p_inout_buf ) { - p_umv_buf->p_inout_buf = cl_malloc( size ); - if( !p_umv_buf->p_inout_buf ) - { - status = IB_INSUFFICIENT_MEMORY; - goto err_umv_buf; - } + status = IB_INSUFFICIENT_MEMORY; + goto err_umv_buf; } p_umv_buf->input_size = sizeof(struct ibv_open_xrc_domain); p_umv_buf->output_size = sizeof(struct ibv_open_xrc_domain_resp); diff --git a/trunk/hw/mthca/user/mlnx_ual_av.c b/trunk/hw/mthca/user/mlnx_ual_av.c index 0b3208bf..25c8ebd9 100644 --- a/trunk/hw/mthca/user/mlnx_ual_av.c +++ b/trunk/hw/mthca/user/mlnx_ual_av.c @@ -169,13 +169,11 @@ __pre_create_av ( } // allocate parameters - if( !p_umv_buf->p_inout_buf ) { - p_umv_buf->p_inout_buf = (ULONG_PTR)cl_zalloc( size ); - if( !p_umv_buf->p_inout_buf ) - { - status = IB_INSUFFICIENT_MEMORY; - goto err_mem; - } + p_umv_buf->p_inout_buf = (ULONG_PTR)cl_zalloc( size ); + if( !p_umv_buf->p_inout_buf ) + { + status = IB_INSUFFICIENT_MEMORY; + goto err_mem; } // fill the parameters diff --git a/trunk/hw/mthca/user/mlnx_ual_ca.c b/trunk/hw/mthca/user/mlnx_ual_ca.c index c178687c..dc731696 100644 --- a/trunk/hw/mthca/user/mlnx_ual_ca.c +++ b/trunk/hw/mthca/user/mlnx_ual_ca.c @@ -56,15 +56,11 @@ __pre_open_ca ( UVP_ENTER(UVP_DBG_SHIM); if( p_umv_buf ) { + p_umv_buf->p_inout_buf = (ULONG_PTR)cl_zalloc( sizeof(struct ibv_get_context_resp) ); if( !p_umv_buf->p_inout_buf ) { - p_umv_buf->p_inout_buf = - (ULONG_PTR)cl_zalloc( sizeof(struct ibv_get_context_resp) ); - if( !p_umv_buf->p_inout_buf ) - { - status = IB_INSUFFICIENT_MEMORY; - goto err_memory; - } + status = IB_INSUFFICIENT_MEMORY; + goto err_memory; } p_umv_buf->input_size = p_umv_buf->output_size = sizeof(struct ibv_get_context_resp); p_umv_buf->command = TRUE; diff --git a/trunk/hw/mthca/user/mlnx_ual_cq.c b/trunk/hw/mthca/user/mlnx_ual_cq.c index 198c16ee..a99c6e72 100644 --- a/trunk/hw/mthca/user/mlnx_ual_cq.c +++ b/trunk/hw/mthca/user/mlnx_ual_cq.c @@ -63,14 +63,11 @@ __pre_create_cq ( CL_ASSERT(p_umv_buf); + p_umv_buf->p_inout_buf = (ULONG_PTR)cl_zalloc( size ); if( !p_umv_buf->p_inout_buf ) { - p_umv_buf->p_inout_buf = (ULONG_PTR)cl_zalloc( size ); - if( !p_umv_buf->p_inout_buf ) - { - status = IB_INSUFFICIENT_MEMORY; - goto err_memory; - } + status = IB_INSUFFICIENT_MEMORY; + goto err_memory; } p_umv_buf->input_size = sizeof(struct ibv_create_cq); p_umv_buf->output_size = sizeof(struct ibv_create_cq_resp); diff --git a/trunk/hw/mthca/user/mlnx_ual_pd.c b/trunk/hw/mthca/user/mlnx_ual_pd.c index a7665a3a..2b53f75b 100644 --- a/trunk/hw/mthca/user/mlnx_ual_pd.c +++ b/trunk/hw/mthca/user/mlnx_ual_pd.c @@ -55,14 +55,11 @@ __pre_allocate_pd ( CL_ASSERT(p_umv_buf); + p_umv_buf->p_inout_buf = (ULONG_PTR)cl_zalloc( sizeof(struct ibv_alloc_pd_resp) ); if( !p_umv_buf->p_inout_buf ) { - p_umv_buf->p_inout_buf = (ULONG_PTR)cl_zalloc( sizeof(struct ibv_alloc_pd_resp) ); - if( !p_umv_buf->p_inout_buf ) - { - status = IB_INSUFFICIENT_MEMORY; - goto err_memory; - } + status = IB_INSUFFICIENT_MEMORY; + goto err_memory; } p_umv_buf->input_size = p_umv_buf->output_size = sizeof(struct ibv_alloc_pd_resp); p_umv_buf->command = TRUE; diff --git a/trunk/hw/mthca/user/mlnx_ual_qp.c b/trunk/hw/mthca/user/mlnx_ual_qp.c index 23293b6e..53792155 100644 --- a/trunk/hw/mthca/user/mlnx_ual_qp.c +++ b/trunk/hw/mthca/user/mlnx_ual_qp.c @@ -98,14 +98,11 @@ __pre_create_qp ( CL_ASSERT(p_umv_buf); + p_umv_buf->p_inout_buf = (ULONG_PTR)cl_zalloc( size ); if( !p_umv_buf->p_inout_buf ) { - p_umv_buf->p_inout_buf = (ULONG_PTR)cl_zalloc( size ); - if( !p_umv_buf->p_inout_buf ) - { - status = IB_INSUFFICIENT_MEMORY; - goto err_memory; - } + status = IB_INSUFFICIENT_MEMORY; + goto err_memory; } p_umv_buf->input_size = sizeof(struct ibv_create_qp); p_umv_buf->output_size = sizeof(struct ibv_create_qp_resp); @@ -223,15 +220,11 @@ __pre_modify_qp ( CL_ASSERT(p_umv_buf); + p_umv_buf->p_inout_buf = (ULONG_PTR)cl_zalloc( sizeof(struct ibv_modify_qp_resp) ); if( !p_umv_buf->p_inout_buf ) { - p_umv_buf->p_inout_buf = - (ULONG_PTR)cl_zalloc( sizeof(struct ibv_modify_qp_resp) ); - if( !p_umv_buf->p_inout_buf ) - { - status = IB_INSUFFICIENT_MEMORY; - goto err_memory; - } + status = IB_INSUFFICIENT_MEMORY; + goto err_memory; } p_umv_buf->input_size = 0; p_umv_buf->output_size = sizeof(struct ibv_modify_qp_resp); diff --git a/trunk/hw/mthca/user/mlnx_ual_srq.c b/trunk/hw/mthca/user/mlnx_ual_srq.c index fc090582..7d5ff1dc 100644 --- a/trunk/hw/mthca/user/mlnx_ual_srq.c +++ b/trunk/hw/mthca/user/mlnx_ual_srq.c @@ -93,14 +93,11 @@ __pre_create_srq ( goto err_params; } + p_umv_buf->p_inout_buf = (ULONG_PTR)cl_zalloc( size ); if( !p_umv_buf->p_inout_buf ) { - p_umv_buf->p_inout_buf = (ULONG_PTR)cl_zalloc( size ); - if( !p_umv_buf->p_inout_buf ) - { - status = IB_INSUFFICIENT_MEMORY; - goto err_memory; - } + status = IB_INSUFFICIENT_MEMORY; + goto err_memory; } p_umv_buf->input_size = sizeof(struct ibv_create_srq); p_umv_buf->output_size = sizeof(struct ibv_create_srq_resp); -- 2.46.0