[ofw] [PATCH] Remove pointers from ci_umv_buf_t
Leonid Keller
leonid at mellanox.co.il
Sun Jul 13 03:44:06 PDT 2008
Applied in 1384. Thank you.
> -----Original Message-----
> From: ofw-bounces at lists.openfabrics.org
> [mailto:ofw-bounces at lists.openfabrics.org] On Behalf Of Fab Tillier
> Sent: Friday, July 11, 2008 11:07 PM
> To: ofw at lists.openfabrics.org
> Subject: [ofw] [PATCH] Remove pointers from ci_umv_buf_t
>
> Part of cleaning up the __ptr64 stuff properly - rather than
> use the TO_LONG_PTR in the ci_umv_buf_t structure, use uint64_t.
>
> The problem with using TO_LONG_PTR in structures that are
> exchanged between 32-bit clients and 64-bit drivers is that
> care must be taken to ensure that the upper 'padding' bytes
> are cleared properly.
>
> Making the field a uint64_t makes it fool proof (though it
> does require casting, but at least the compiler will trap
> errors unlike for the padding.)
>
> Signed-off-by: Fab Tillier <ftillier at microsoft.com>
>
> diff -up -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\core\al\kernel\al_proxy_verbs.c
> trunk\core\al\kernel\al_proxy_verbs.c
> --- old\core\al\kernel\al_proxy_verbs.c Fri Jul 11 13:03:58 2008
> +++ trunk\core\al\kernel\al_proxy_verbs.c Fri Jul 11
> 12:55:49 2008
> @@ -89,15 +89,15 @@ cpyin_umvbuf(
>
> if( p_src->p_inout_buf )
> {
> - if( p_src->input_size &&
> - cl_check_for_read(
> p_src->p_inout_buf, (size_t)p_src->input_size )
> + if( p_src->input_size && cl_check_for_read(
> + (void*)(ULONG_PTR)p_src->p_inout_buf,
> + (size_t)p_src->input_size )
> != CL_SUCCESS )
> {
> /* user-supplied memory area not readable */
> return IB_INVALID_PERMISSION;
> }
> - if( p_src->output_size &&
> - cl_check_for_write(
> p_src->p_inout_buf, (size_t)p_src->output_size )
> + if( p_src->output_size && cl_check_for_write(
> + (void*)(ULONG_PTR)p_src->p_inout_buf,
> + (size_t)p_src->output_size )
> != CL_SUCCESS )
> {
> /* user-supplied memory area not
> writeable */ @@ -111,12 +111,13 @@ cpyin_umvbuf(
> /* Copy the umv_buf structure. */
> *p_dest = *p_src;
> if( p_src->p_inout_buf )
> - p_dest->p_inout_buf = (void*)(p_dest + 1);
> + p_dest->p_inout_buf = (ULONG_PTR)(p_dest + 1);
>
> /* Setup the buffer - either we have an input or
> output buffer */
> if( p_src->input_size )
> {
> - if( cl_copy_from_user( p_dest->p_inout_buf,
> p_src->p_inout_buf,
> + if( cl_copy_from_user(
> (void*)(ULONG_PTR)p_dest->p_inout_buf,
> + (void*)(ULONG_PTR)p_src->p_inout_buf,
> (size_t)p_src->input_size ) != CL_SUCCESS )
> {
> cl_free( p_dest ); @@ -158,7 +159,9
> @@ cpyout_umvbuf(
>
> out_size = MIN( p_dest->output_size,
> p_src->output_size );
>
> - if( cl_copy_to_user(
> p_dest->p_inout_buf, p_src->p_inout_buf,
> + if( cl_copy_to_user(
> + (void*)(ULONG_PTR)p_dest->p_inout_buf,
> + (void*)(ULONG_PTR)p_src->p_inout_buf,
> out_size ) != CL_SUCCESS )
> {
> p_dest->output_size = 0; diff
> -up -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\hw\mlx4\kernel\hca\data.h trunk\hw\mlx4\kernel\hca\data.h
> --- old\hw\mlx4\kernel\hca\data.h Fri Jul 11 13:03:58 2008
> +++ trunk\hw\mlx4\kernel\hca\data.h Fri Jul 11 12:55:49 2008
> @@ -278,7 +278,7 @@ to_qp_acl(
>
> static inline int from_umv_buf(void *dest, ci_umv_buf_t*
> const p_umv_buf, size_t len) {
> - RtlCopyMemory(dest, p_umv_buf->p_inout_buf, len);
> + RtlCopyMemory(dest,
> (void*)(ULONG_PTR)p_umv_buf->p_inout_buf,
> + len);
> return 0;
> }
>
> @@ -289,7 +289,7 @@ static inline int to_umv_buf(ci_umv_buf_
> p_umv_buf->output_size = 0;
> return -EFAULT;
> }
> - RtlCopyMemory(p_umv_buf->p_inout_buf, src, len);
> + RtlCopyMemory(
> (void*)(ULONG_PTR)p_umv_buf->p_inout_buf, src,
> + len);
> p_umv_buf->status = IB_SUCCESS;
> p_umv_buf->output_size = (uint32_t)len;
> return 0;
> diff -up -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\hw\mlx4\kernel\hca\mr.c trunk\hw\mlx4\kernel\hca\mr.c
> --- old\hw\mlx4\kernel\hca\mr.c Tue Jul 01 09:31:01 2008
> +++ trunk\hw\mlx4\kernel\hca\mr.c Fri Jul 11 12:55:49 2008
> @@ -1,6 +1,7 @@
> /*
> * Copyright (c) 2005 SilverStorm Technologies. All rights reserved.
> * Copyright (c) 2004-2005 Mellanox Technologies, Inc. All
> rights reserved.
> + * Portions Copyright (c) 2008 Microsoft Corporation. All
> rights reserved.
> *
> * This software is available to you under the OpenIB.org BSD license
> * below:
> @@ -55,7 +56,7 @@ mlnx_register_mr (
> int err;
> struct ib_mr *p_ib_mr;
> struct ib_pd *p_ib_pd = (struct ib_pd *)h_pd;
> - ci_umv_buf_t umv_buf = { 0, 0, 0, 0, NULL };
> + ci_umv_buf_t umv_buf = { 0, 0, 0, 0, 0 };
>
> HCA_ENTER(HCA_DBG_MEMORY);
>
> diff -up -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\hw\mlx4\kernel\hca\pd.c trunk\hw\mlx4\kernel\hca\pd.c
> --- old\hw\mlx4\kernel\hca\pd.c Thu Jun 26 20:35:14 2008
> +++ trunk\hw\mlx4\kernel\hca\pd.c Fri Jul 11 12:55:49 2008
> @@ -1,6 +1,7 @@
> /*
> * Copyright (c) 2005 SilverStorm Technologies. All rights reserved.
> * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
> + * Portions Copyright (c) 2008 Microsoft Corporation. All
> rights reserved.
> *
> * This software is available to you under the OpenIB.org BSD license
> * below:
> @@ -74,7 +75,7 @@ mlnx_allocate_pd (
> }
>
> // prepare user parameters
> - p_resp = (struct
> ibv_alloc_pd_resp*)(void*)p_umv_buf->p_inout_buf;
> + p_resp = (struct
> + ibv_alloc_pd_resp*)(ULONG_PTR)p_umv_buf->p_inout_buf;
> INIT_UDATA(&udata, NULL, &p_resp->pdn,
> 0, sizeof(p_resp->pdn));
> }
> diff -up -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\hw\mlx4\kernel\hca\qp.c trunk\hw\mlx4\kernel\hca\qp.c
> --- old\hw\mlx4\kernel\hca\qp.c Thu Jun 26 20:35:14 2008
> +++ trunk\hw\mlx4\kernel\hca\qp.c Fri Jul 11 12:55:49 2008
> @@ -1,6 +1,7 @@
> /*
> * Copyright (c) 2005 SilverStorm Technologies. All rights reserved.
> * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
> + * Portions Copyright (c) 2008 Microsoft Corporation. All
> rights reserved.
> *
> * This software is available to you under the OpenIB.org BSD license
> * below:
> @@ -112,7 +113,7 @@ __create_qp (
> status = IB_INVALID_PARAMETER;
> goto err_inval_params;
> }
> - p_req = (struct
> ibv_create_qp*)(void*)p_umv_buf->p_inout_buf;
> + p_req = (struct
> + ibv_create_qp*)(ULONG_PTR)p_umv_buf->p_inout_buf;
> p_uctx = p_ib_pd->p_uctx;
> }
>
> @@ -330,7 +331,7 @@ mlnx_ndi_modify_qp (
> umv_buf.command = TRUE; /* special case for NDI.
> Usually it's TRUE */
> umv_buf.input_size = 0;
> umv_buf.output_size = sizeof(struct ibv_modify_qp_resp);
> - umv_buf.p_inout_buf = buf;
> + umv_buf.p_inout_buf = (ULONG_PTR)buf;
>
> status = mlnx_modify_qp ( h_qp, p_modify_attr,
> p_qp_attr, &umv_buf );
>
> diff -up -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\hw\mlx4\kernel\hca\verbs.c trunk\hw\mlx4\kernel\hca\verbs.c
> --- old\hw\mlx4\kernel\hca\verbs.c Wed Jul 09 09:44:28 2008
> +++ trunk\hw\mlx4\kernel\hca\verbs.c Fri Jul 11 12:55:49 2008
> @@ -1,6 +1,7 @@
> /*
> * Copyright (c) 2005 SilverStorm Technologies. All rights reserved.
> * Copyright (c) 2004-2005 Mellanox Technologies, Inc. All
> rights reserved.
> + * Portions Copyright (c) 2008 Microsoft Corporation. All
> rights reserved.
> *
> * This software is available to you under the OpenIB.org BSD license
> * below:
> @@ -178,8 +179,8 @@ struct ib_cq *ibv_create_cq(struct ib_de
>
> if ( p_uctx && p_umv_buf && p_umv_buf->p_inout_buf ) {
> // prepare user parameters
> - p_req = (struct
> ibv_create_cq*)(void*)p_umv_buf->p_inout_buf;
> - p_resp = (struct ibv_create_cq_resp*)(void*)
> + p_req = (struct
> ibv_create_cq*)(ULONG_PTR)p_umv_buf->p_inout_buf;
> + p_resp = (struct ibv_create_cq_resp*)(ULONG_PTR)
> p_umv_buf->p_inout_buf;
> INIT_UDATA(&udata, &p_req->buf_addr, &p_resp->cqn,
> sizeof(struct mlx4_ib_create_cq),
> sizeof(struct mlx4_ib_create_cq_resp)); @@ -272,8 +273,8 @@
> struct ib_qp *ibv_create_qp(struct ib_pd
>
> if ( p_uctx && p_umv_buf && p_umv_buf->command ) {
> // prepare user parameters
> - p_req = (struct
> ibv_create_qp*)(void*)p_umv_buf->p_inout_buf;
> - p_resp = (struct
> ibv_create_qp_resp*)(void*)p_umv_buf->p_inout_buf;
> + p_req = (struct
> ibv_create_qp*)(ULONG_PTR)p_umv_buf->p_inout_buf;
> + p_resp = (struct
> + ibv_create_qp_resp*)(ULONG_PTR)p_umv_buf->p_inout_buf;
> INIT_UDATA(&udata, &p_req->buf_addr, NULL,
> sizeof(struct mlx4_ib_create_qp), 0);
> }
> @@ -392,8 +393,8 @@ struct ib_srq *ibv_create_srq(struct ib_
>
> if ( p_uctx && p_umv_buf && p_umv_buf->p_inout_buf) {
> // prepare user parameters
> - p_req = (struct
> ibv_create_srq*)(void*)p_umv_buf->p_inout_buf;
> - p_resp = (struct
> ibv_create_srq_resp*)(void*)p_umv_buf->p_inout_buf;
> + p_req = (struct
> ibv_create_srq*)(ULONG_PTR)p_umv_buf->p_inout_buf;
> + p_resp = (struct
> + ibv_create_srq_resp*)(ULONG_PTR)p_umv_buf->p_inout_buf;
> INIT_UDATA(&udata, &p_req->buf_addr, &p_resp->srqn,
> sizeof(struct ibv_create_srq),
> sizeof(struct ibv_create_srq_resp));
> }
> @@ -561,7 +562,7 @@ ib_api_status_t ibv_um_open(
> goto err_alloc_ucontext;
> }
> p_muctx = to_mucontext(p_uctx);
> - p_uresp = (struct ibv_get_context_resp
> *)(void*)p_umv_buf->p_inout_buf;
> + p_uresp = (struct ibv_get_context_resp
> + *)(ULONG_PTR)p_umv_buf->p_inout_buf;
>
> // fill the rest of ib_ucontext fields
> p_uctx->device = p_ibdev;
> diff -up -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\hw\mlx4\kernel\hca\vp.c trunk\hw\mlx4\kernel\hca\vp.c
> --- old\hw\mlx4\kernel\hca\vp.c Thu Jun 26 20:35:14 2008
> +++ trunk\hw\mlx4\kernel\hca\vp.c Fri Jul 11 12:55:49 2008
> @@ -1,6 +1,7 @@
> /*
> * Copyright (c) 2005 SilverStorm Technologies. All rights reserved.
> * Copyright (c) 2004-2005 Mellanox Technologies, Inc. All
> rights reserved.
> + * Portions Copyright (c) 2008 Microsoft Corporation. All
> rights reserved.
> *
> * This software is available to you under the OpenIB.org BSD license
> * below:
> @@ -84,7 +85,7 @@ mlnx_um_open(
> }
>
> // fill more parameters for user (sanity checks are
> in mthca_alloc_ucontext)
> - p_uresp = (struct ibv_get_context_resp
> *)(void*)p_umv_buf->p_inout_buf;
> + p_uresp = (struct ibv_get_context_resp
> + *)(ULONG_PTR)p_umv_buf->p_inout_buf;
> p_uresp->vend_id =
> (uint32_t)p_fdo->bus_ib_ifc.pdev->ven_id;
> p_uresp->dev_id =
> (uint16_t)p_fdo->bus_ib_ifc.pdev->dev_id;
> p_uresp->max_qp_wr =
> hca2mdev(p_hca)->caps.max_wqes;
> diff -up -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\hw\mlx4\user\hca\verbs.c trunk\hw\mlx4\user\hca\verbs.c
> --- old\hw\mlx4\user\hca\verbs.c Fri Jul 11 13:03:58 2008
> +++ trunk\hw\mlx4\user\hca\verbs.c Fri Jul 11 12:58:00 2008
> @@ -1,11 +1,9 @@
> /*
> * Copyright (c) 2007 Cisco, Inc. All rights reserved.
> + * Portions Copyright (c) 2008 Microsoft Corporation. All
> rights reserved.
> *
> - * This software is available to you under a choice of one of two
> - * licenses. You may choose to be licensed under the terms
> of the GNU
> - * General Public License (GPL) Version 2, available from the file
> - * COPYING in the main directory of this source tree, or the
> - * OpenIB.org BSD license below:
> + * This software is available to you under the OpenIB.org BSD license
> + * below:
> *
> * Redistribution and use in source and binary forms, with or
> * without modification, are permitted provided that the
> following
> @@ -61,7 +59,8 @@ mlx4_pre_open_ca (
> {
> if( !p_umv_buf->p_inout_buf )
> {
> - p_umv_buf->p_inout_buf = cl_zalloc(
> sizeof(struct ibv_get_context_resp) );
> + 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; @@ -94,7 +93,7 @@ mlx4_post_open_ca (
>
> CL_ASSERT(p_umv_buf && p_umv_buf->p_inout_buf);
>
> - p_resp = p_umv_buf->p_inout_buf;
> + p_resp = (struct
> + ibv_get_context_resp*)(ULONG_PTR)p_umv_buf->p_inout_buf;
>
> if (IB_SUCCESS == ioctl_status)
> {
> @@ -131,7 +130,7 @@ mlx4_pre_query_ca (
> */
> if ( p_ca_attr != NULL )
> {
> - p_umv_buf->p_inout_buf = cl_malloc(byte_count);
> + p_umv_buf->p_inout_buf =
> + (ULONG_PTR)cl_malloc(byte_count);
> if ( !p_umv_buf->p_inout_buf )
> {
> status = IB_INSUFFICIENT_RESOURCES;
> @@ -194,7 +193,7 @@ mlx4_post_query_ca (
>
> if (context->p_hca_attr)
> cl_free(context->p_hca_attr);
> - context->p_hca_attr = p_umv_buf->p_inout_buf;
> + context->p_hca_attr =
> + (ib_ca_attr_t*)(ULONG_PTR)p_umv_buf->p_inout_buf;
> cl_memcpy( context->p_hca_attr, p_ca_attr,
> p_ca_attr->size );
> __fixup_ca_attr( context->p_hca_attr, p_ca_attr );
>
> @@ -202,7 +201,7 @@ mlx4_post_query_ca (
> }
> else if (p_umv_buf->p_inout_buf)
> {
> - cl_free(p_umv_buf->p_inout_buf);
> + cl_free( (void*)(ULONG_PTR)p_umv_buf->p_inout_buf );
> }
> }
>
> @@ -235,7 +234,7 @@ mlx4_pre_alloc_pd (
>
> if( !p_umv_buf->p_inout_buf )
> {
> - p_umv_buf->p_inout_buf = cl_malloc(
> sizeof(struct ibv_alloc_pd_resp) );
> + 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; @@
> -277,7 +276,7 @@ mlx4_post_alloc_pd (
>
> CL_ASSERT(p_umv_buf && p_umv_buf->p_inout_buf);
>
> - p_resp = p_umv_buf->p_inout_buf;
> + p_resp = (struct
> + ibv_alloc_pd_resp*)(ULONG_PTR)p_umv_buf->p_inout_buf;
>
> if (IB_SUCCESS == ioctl_status)
> {
> @@ -335,7 +334,7 @@ mlx4_pre_create_cq (
>
> if( !p_umv_buf->p_inout_buf )
> {
> - p_umv_buf->p_inout_buf = cl_malloc( size );
> + p_umv_buf->p_inout_buf = (ULONG_PTR)cl_malloc( size );
> if( !p_umv_buf->p_inout_buf )
> {
> status = IB_INSUFFICIENT_MEMORY; @@
> -346,7 +345,7 @@ mlx4_pre_create_cq (
> p_umv_buf->output_size = sizeof(struct ibv_create_cq_resp);
> p_umv_buf->command = TRUE;
>
> - p_create_cq = p_umv_buf->p_inout_buf;
> + p_create_cq = (struct
> + ibv_create_cq*)(ULONG_PTR)p_umv_buf->p_inout_buf;
>
> // Mlx4 code:
>
> @@ -401,7 +400,7 @@ err_lock:
> cl_free(cq);
> err_cq:
> err_cqe_size:
> - cl_free(p_umv_buf->p_inout_buf);
> + cl_free( (void*)(ULONG_PTR)p_umv_buf->p_inout_buf );
> err_umv_buf:
> end:
> return status;
> @@ -423,7 +422,7 @@ mlx4_post_create_cq (
>
> CL_ASSERT(p_umv_buf && p_umv_buf->p_inout_buf);
>
> - p_resp = p_umv_buf->p_inout_buf;
> + p_resp = (struct
> + ibv_create_cq_resp*)(ULONG_PTR)p_umv_buf->p_inout_buf;
>
> if (IB_SUCCESS == ioctl_status)
> {
> @@ -492,7 +491,7 @@ mlx4_pre_create_srq (
>
> if( !p_umv_buf->p_inout_buf )
> {
> - p_umv_buf->p_inout_buf = cl_malloc( size );
> + p_umv_buf->p_inout_buf = (ULONG_PTR)cl_malloc( size );
> if( !p_umv_buf->p_inout_buf )
> {
> status = IB_INSUFFICIENT_MEMORY; @@
> -503,7 +502,7 @@ mlx4_pre_create_srq (
> p_umv_buf->output_size = sizeof(struct ibv_create_srq_resp);
> p_umv_buf->command = TRUE;
>
> - p_create_srq = p_umv_buf->p_inout_buf;
> + p_create_srq = (struct
> + ibv_create_srq*)(ULONG_PTR)p_umv_buf->p_inout_buf;
>
> // Mlx4 code:
>
> @@ -563,7 +562,7 @@ err_alloc_buf:
> err_lock:
> cl_free(srq);
> err_alloc_srq:
> - cl_free(p_umv_buf->p_inout_buf);
> + cl_free( (void*)(ULONG_PTR)p_umv_buf->p_inout_buf );
> err_params: err_memory:
> end:
> return status;
> @@ -584,7 +583,7 @@ mlx4_post_create_srq (
>
> CL_ASSERT(p_umv_buf && p_umv_buf->p_inout_buf);
>
> - p_resp = p_umv_buf->p_inout_buf;
> + p_resp = (struct
> + ibv_create_srq_resp*)(ULONG_PTR)p_umv_buf->p_inout_buf;
>
> if (IB_SUCCESS == ioctl_status)
> {
> @@ -694,7 +693,7 @@ mlx4_pre_create_qp (
>
> if( !p_umv_buf->p_inout_buf )
> {
> - p_umv_buf->p_inout_buf = cl_malloc(size);
> + p_umv_buf->p_inout_buf = (ULONG_PTR)cl_malloc(size);
> if( !p_umv_buf->p_inout_buf )
> {
> status = IB_INSUFFICIENT_MEMORY; @@
> -705,7 +704,7 @@ mlx4_pre_create_qp (
> p_umv_buf->output_size = sizeof(struct ibv_create_qp_resp);
> p_umv_buf->command = TRUE;
>
> - p_create_qp = p_umv_buf->p_inout_buf;
> + p_create_qp = (struct
> + ibv_create_qp*)(ULONG_PTR)p_umv_buf->p_inout_buf;
>
> /* convert attributes */
> memset( &attr, 0, sizeof(attr) ); @@ -843,7 +842,7 @@
> err_spinlock_sq:
> err_alloc_qp_buff:
> cl_free(qp);
> err_alloc_qp:
> - cl_free(p_umv_buf->p_inout_buf);
> + cl_free( (void*)(ULONG_PTR)p_umv_buf->p_inout_buf );
> err_memory:
> end:
> return status;
> @@ -864,7 +863,7 @@ mlx4_post_create_qp (
>
> CL_ASSERT(p_umv_buf && p_umv_buf->p_inout_buf);
>
> - p_resp = p_umv_buf->p_inout_buf;
> + p_resp = (struct
> + ibv_create_qp_resp*)(ULONG_PTR)p_umv_buf->p_inout_buf;
>
> if (IB_SUCCESS == ioctl_status)
> {
> @@ -928,7 +927,7 @@ mlx4_pre_modify_qp (
>
> if( !p_umv_buf->p_inout_buf )
> {
> - p_umv_buf->p_inout_buf =
> cl_malloc(sizeof(struct ibv_modify_qp_resp));
> + 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; @@
> -975,7 +974,7 @@ mlx4_post_modify_qp (
>
> CL_ASSERT(p_umv_buf && p_umv_buf->p_inout_buf);
>
> - p_resp = p_umv_buf->p_inout_buf;
> + p_resp = (struct
> + ibv_modify_qp_resp*)(ULONG_PTR)p_umv_buf->p_inout_buf;
>
> if (IB_SUCCESS == ioctl_status)
> {
> diff -up -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\hw\mthca\kernel\hca_verbs.c trunk\hw\mthca\kernel\hca_verbs.c
> --- old\hw\mthca\kernel\hca_verbs.c Fri Jul 11 13:03:58 2008
> +++ trunk\hw\mthca\kernel\hca_verbs.c Fri Jul 11 12:55:52 2008
> @@ -454,7 +454,7 @@ mlnx_um_open(
> umv_buf.command = 1;
> umv_buf.input_size = umv_buf.status = 0;
> umv_buf.output_size = sizeof(struct ibv_alloc_pd_resp);
> - umv_buf.p_inout_buf = &resp;
> + umv_buf.p_inout_buf = (ULONG_PTR)&resp;
> //NB: Pay attention ! Ucontext parameter is important here:
> // when it is present (i.e. - for user space) -
> mthca_alloc_pd won't create MR
> p_context->pd = ibv_alloc_pd(ib_dev, p_context,
> &umv_buf); @@ -467,7 +467,7 @@ mlnx_um_open(
> }
>
> // fill more parameters for user (sanity checks are
> in mthca_alloc_ucontext)
> - uresp_p = (struct ibv_get_context_resp
> *)(void*)p_umv_buf->p_inout_buf;
> + uresp_p = (struct ibv_get_context_resp
> + *)(ULONG_PTR)p_umv_buf->p_inout_buf;
> uresp_p->uar_addr = (uint64_t)(UINT_PTR)p_context->user_uar;
> uresp_p->pd_handle = resp.pd_handle;
> uresp_p->pdn = resp.pdn;
> @@ -1249,7 +1249,7 @@ mlnx_ndi_modify_qp (
> umv_buf.command = TRUE; /* special case for NDI.
> Usually it's TRUE */
> umv_buf.input_size = 0;
> umv_buf.output_size = sizeof(struct ibv_modify_qp_resp);
> - umv_buf.p_inout_buf = buf;
> + umv_buf.p_inout_buf = (ULONG_PTR)buf;
>
> status = mlnx_modify_qp ( h_qp, p_modify_attr,
> p_qp_attr, &umv_buf );
>
> diff -up -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\hw\mthca\kernel\mt_verbs.c trunk\hw\mthca\kernel\mt_verbs.c
> --- old\hw\mthca\kernel\mt_verbs.c Fri Jul 11 13:03:58 2008
> +++ trunk\hw\mthca\kernel\mt_verbs.c Fri Jul 11 12:55:54 2008
> @@ -162,7 +162,7 @@ struct ib_ah *ibv_create_ah(struct ib_pd
>
> // for user call we need also allocate MR
> if (context && p_umv_buf && p_umv_buf->p_inout_buf) {
> - struct ibv_create_ah *create_ah = (struct
> ibv_create_ah *)(void*)p_umv_buf->p_inout_buf;
> + struct ibv_create_ah *create_ah = (struct
> ibv_create_ah
> + *)(ULONG_PTR)p_umv_buf->p_inout_buf;
>
> // create region; destroy will be done on dealloc_pd
> ib_mr = ibv_reg_mr(
> @@ -189,7 +189,7 @@ struct ib_ah *ibv_create_ah(struct ib_pd
>
> /* fill obligatory fields */
> if (context && p_umv_buf && p_umv_buf->p_inout_buf) {
> - create_ah_resp = (struct ibv_create_ah_resp
> *)(void*)p_umv_buf->p_inout_buf;
> + create_ah_resp = (struct ibv_create_ah_resp
> + *)(ULONG_PTR)p_umv_buf->p_inout_buf;
> create_ah_resp->user_handle = user_handle;
> }
>
> @@ -209,7 +209,7 @@ struct ib_ah *ibv_create_ah(struct ib_pd
>
> // fill results for user
> if (context && p_umv_buf && p_umv_buf->p_inout_buf) {
> - struct ibv_create_ah_resp *create_ah_resp =
> (struct ibv_create_ah_resp *)(void*)p_umv_buf->p_inout_buf;
> + struct ibv_create_ah_resp *create_ah_resp = (struct
> + ibv_create_ah_resp *)(ULONG_PTR)p_umv_buf->p_inout_buf;
> create_ah_resp->start = start;
> create_ah_resp->mr.lkey = ib_mr->lkey;
> create_ah_resp->mr.rkey = ib_mr->rkey; @@
> -322,7 +322,7 @@ struct ib_srq *ibv_create_srq(struct ib_
>
> // for user call we need also allocate MR
> if (context && p_umv_buf && p_umv_buf->p_inout_buf) {
> - struct ibv_create_srq *create_srp = (struct
> ibv_create_srq *)(void*)p_umv_buf->p_inout_buf;
> + struct ibv_create_srq *create_srp = (struct
> + ibv_create_srq *)(ULONG_PTR)p_umv_buf->p_inout_buf;
>
> // create region
> ib_mr = ibv_reg_mr(
> @@ -343,7 +343,7 @@ struct ib_srq *ibv_create_srq(struct ib_
>
> /* fill obligatory fields */
> if (context && p_umv_buf && p_umv_buf->p_inout_buf) {
> - create_srq_resp = (struct ibv_create_srq_resp
> *)(void*)p_umv_buf->p_inout_buf;
> + create_srq_resp = (struct ibv_create_srq_resp
> + *)(ULONG_PTR)p_umv_buf->p_inout_buf;
> create_srq_resp->user_handle = user_handle;
> }
>
> @@ -444,7 +444,7 @@ struct ib_qp *ibv_create_qp(struct ib_pd
>
> // for user call we need also allocate MR
> if (context && p_umv_buf && p_umv_buf->p_inout_buf) {
> - struct ibv_create_qp *create_qp = (struct
> ibv_create_qp *)(void*)p_umv_buf->p_inout_buf;
> + struct ibv_create_qp *create_qp = (struct
> ibv_create_qp
> + *)(ULONG_PTR)p_umv_buf->p_inout_buf;
>
> // create region
> ib_mr = ibv_reg_mr(
> @@ -498,7 +498,7 @@ struct ib_qp *ibv_create_qp(struct ib_pd
> // fill results for user
> if (context && p_umv_buf && p_umv_buf->p_inout_buf) {
> struct mthca_qp *qp = (struct mthca_qp *)ib_qp;
> - struct ibv_create_qp_resp *create_qp_resp =
> (struct ibv_create_qp_resp *)(void*)p_umv_buf->p_inout_buf;
> + struct ibv_create_qp_resp *create_qp_resp = (struct
> + ibv_create_qp_resp *)(ULONG_PTR)p_umv_buf->p_inout_buf;
> ib_qp->ib_mr = ib_mr;
> create_qp_resp->qpn = ib_qp->qp_num;
> create_qp_resp->user_handle = user_handle; @@
> -589,7 +589,7 @@ struct ib_cq *ibv_create_cq(struct ib_de
>
> // for user call we need also allocate MR
> if (context && p_umv_buf && p_umv_buf->p_inout_buf) {
> - struct ibv_create_cq *create_cq = (struct
> ibv_create_cq *)(void*)p_umv_buf->p_inout_buf;
> + struct ibv_create_cq *create_cq = (struct
> ibv_create_cq
> + *)(ULONG_PTR)p_umv_buf->p_inout_buf;
>
> // create region
> ib_mr = ibv_reg_mr(
> @@ -626,7 +626,7 @@ struct ib_cq *ibv_create_cq(struct ib_de
>
> // fill results
> if (context && p_umv_buf && p_umv_buf->p_inout_buf) {
> - struct ibv_create_cq_resp *create_cq_resp =
> (struct ibv_create_cq_resp *)(void*)p_umv_buf->p_inout_buf;
> + struct ibv_create_cq_resp *create_cq_resp = (struct
> + ibv_create_cq_resp *)(ULONG_PTR)p_umv_buf->p_inout_buf;
> cq->ib_mr = ib_mr;
> create_cq_resp->user_handle = user_handle;
> create_cq_resp->mr.lkey = ib_mr->lkey; diff
> -up -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\hw\mthca\kernel\mthca_provider.c
> trunk\hw\mthca\kernel\mthca_provider.c
> --- old\hw\mthca\kernel\mthca_provider.c Fri Jul 11
> 13:03:58 2008
> +++ trunk\hw\mthca\kernel\mthca_provider.c Fri Jul 11
> 12:55:55 2008
> @@ -802,8 +802,8 @@ static struct ib_cq *mthca_create_cq(str
> if (err)
> goto err_free;
>
> - if (context ) {
> - struct ibv_create_cq_resp *create_cq_resp =
> (struct ibv_create_cq_resp *)(void*)p_umv_buf->p_inout_buf;
> + if (context) {
> + struct ibv_create_cq_resp *create_cq_resp = (struct
> + ibv_create_cq_resp *)(ULONG_PTR)p_umv_buf->p_inout_buf;
> create_cq_resp->cqn = cq->cqn;
> }
>
> diff -up -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\hw\mthca\kernel\mthca_provider.h
> trunk\hw\mthca\kernel\mthca_provider.h
> --- old\hw\mthca\kernel\mthca_provider.h Thu Jun 26
> 20:35:15 2008
> +++ trunk\hw\mthca\kernel\mthca_provider.h Fri Jul 11
> 12:55:55 2008
> @@ -348,7 +348,7 @@ static inline uint8_t end_port(struct ib
>
> static inline int ib_copy_from_umv_buf(void *dest,
> ci_umv_buf_t* const p_umv_buf, size_t len) {
> - RtlCopyMemory(dest, p_umv_buf->p_inout_buf, len);
> + RtlCopyMemory(dest,
> (void*)(ULONG_PTR)p_umv_buf->p_inout_buf,
> + len);
> return 0;
> }
>
> @@ -359,7 +359,7 @@ static inline int ib_copy_to_umv_buf(ci_
> p_umv_buf->output_size = 0;
> return -EFAULT;
> }
> - RtlCopyMemory(p_umv_buf->p_inout_buf, src, len);
> + RtlCopyMemory((void*)(ULONG_PTR)p_umv_buf->p_inout_buf, src,
> + len);
> p_umv_buf->status = IB_SUCCESS;
> p_umv_buf->output_size = (uint32_t)len;
> return 0;
> diff -up -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\hw\mthca\user\mlnx_ual_av.c trunk\hw\mthca\user\mlnx_ual_av.c
> --- old\hw\mthca\user\mlnx_ual_av.c Fri Jul 11 13:03:58 2008
> +++ trunk\hw\mthca\user\mlnx_ual_av.c Fri Jul 11 12:55:56 2008
> @@ -170,7 +170,7 @@ __pre_create_av (
>
> // allocate parameters
> if( !p_umv_buf->p_inout_buf ) {
> - p_umv_buf->p_inout_buf = cl_zalloc( size );
> + p_umv_buf->p_inout_buf = (ULONG_PTR)cl_zalloc( size );
> if( !p_umv_buf->p_inout_buf )
> {
> status = IB_INSUFFICIENT_MEMORY; diff
> -up -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\hw\mthca\user\mlnx_ual_ca.c trunk\hw\mthca\user\mlnx_ual_ca.c
> --- old\hw\mthca\user\mlnx_ual_ca.c Fri Jul 11 13:03:58 2008
> +++ trunk\hw\mthca\user\mlnx_ual_ca.c Fri Jul 11 12:55:57 2008
> @@ -58,7 +58,8 @@ __pre_open_ca (
> {
> if( !p_umv_buf->p_inout_buf )
> {
> - p_umv_buf->p_inout_buf = cl_zalloc(
> sizeof(struct ibv_get_context_resp) );
> + 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; @@ -151,7 +152,7 @@ __pre_query_ca (
> */
> if ( p_ca_attr != NULL )
> {
> - p_umv_buf->p_inout_buf =
> cl_zalloc(byte_count);
> + p_umv_buf->p_inout_buf =
> + (ULONG_PTR)cl_zalloc(byte_count);
> if ( !p_umv_buf->p_inout_buf )
> {
> UVP_PRINT(TRACE_LEVEL_ERROR
> ,UVP_DBG_SHIM , @@ -185,12 +186,12 @@ __post_query_ca (
> byte_count && !h_uvp_ca->p_hca_attr )
> {
> CL_ASSERT( byte_count >= p_ca_attr->size );
> - h_uvp_ca->p_hca_attr = p_umv_buf->p_inout_buf;
> + h_uvp_ca->p_hca_attr =
> + (ib_ca_attr_t*)(ULONG_PTR)p_umv_buf->p_inout_buf;
> ib_copy_ca_attr( h_uvp_ca->p_hca_attr, p_ca_attr );
> }
> else if (p_umv_buf->p_inout_buf)
> {
> - cl_free (p_umv_buf->p_inout_buf);
> + cl_free( (void*)(ULONG_PTR)p_umv_buf->p_inout_buf );
> }
>
> UVP_EXIT(UVP_DBG_SHIM);
> diff -up -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\hw\mthca\user\mlnx_ual_cq.c trunk\hw\mthca\user\mlnx_ual_cq.c
> --- old\hw\mthca\user\mlnx_ual_cq.c Fri Jul 11 13:03:58 2008
> +++ trunk\hw\mthca\user\mlnx_ual_cq.c Fri Jul 11 12:55:58 2008
> @@ -65,7 +65,7 @@ __pre_create_cq (
>
> if( !p_umv_buf->p_inout_buf )
> {
> - p_umv_buf->p_inout_buf = cl_zalloc( size );
> + p_umv_buf->p_inout_buf = (ULONG_PTR)cl_zalloc( size );
> if( !p_umv_buf->p_inout_buf )
> {
> status = IB_INSUFFICIENT_MEMORY; @@
> -89,7 +89,7 @@ __pre_create_cq (
> goto end;
>
> err_alloc_cq:
> - cl_free(p_umv_buf->p_inout_buf);
> + cl_free((void*)(ULONG_PTR)p_umv_buf->p_inout_buf);
> err_memory:
> end:
> UVP_EXIT(UVP_DBG_CQ);
> diff -up -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\hw\mthca\user\mlnx_ual_data.h trunk\hw\mthca\user\mlnx_ual_data.h
> --- old\hw\mthca\user\mlnx_ual_data.h Thu Jun 26 20:35:15 2008
> +++ trunk\hw\mthca\user\mlnx_ual_data.h Fri Jul 11 12:55:58 2008
> @@ -1,5 +1,6 @@
> /*
> * Copyright (c) 2005 SilverStorm Technologies. All rights reserved.
> + * Portions Copyright (c) 2008 Microsoft Corporation. All
> rights reserved.
> *
> * This software is available to you under the OpenIB.org BSD license
> * below:
> @@ -49,10 +50,4 @@ typedef struct _ib_pd
> struct ibv_pd *ibv_pd;
> mlnx_ual_hobul_t *p_hobul;
> } mlnx_ual_pd_info_t;
> -
> -typedef struct _ib_mw
> -{
> -TO_LONG_PTR( ib_pd_handle_t , h_uvp_pd) ;
> - uint32_t rkey;
> -} mlnx_ual_mw_info_t;
>
> diff -up -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\hw\mthca\user\mlnx_ual_mcast.c
> trunk\hw\mthca\user\mlnx_ual_mcast.c
> --- old\hw\mthca\user\mlnx_ual_mcast.c Fri Jul 11 13:03:58 2008
> +++ trunk\hw\mthca\user\mlnx_ual_mcast.c Fri Jul 11
> 12:55:59 2008
> @@ -49,7 +49,7 @@ __pre_attach_mcast (
>
> UVP_ENTER(UVP_DBG_SHIM);
> CL_ASSERT(p_umv_buf);
> - p_umv_buf->p_inout_buf = NULL;;
> + p_umv_buf->p_inout_buf = 0;;
> p_umv_buf->input_size = 0;
> p_umv_buf->output_size = 0;
> p_umv_buf->command = TRUE;
> @@ -81,7 +81,7 @@ __pre_detach_mcast (
> UVP_ENTER(UVP_DBG_SHIM);
>
> CL_ASSERT(p_umv_buf);
> - p_umv_buf->p_inout_buf = NULL;;
> + p_umv_buf->p_inout_buf = 0;
> p_umv_buf->input_size = 0;
> p_umv_buf->output_size = 0;
>
> diff -up -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\hw\mthca\user\mlnx_ual_mrw.c trunk\hw\mthca\user\mlnx_ual_mrw.c
> --- old\hw\mthca\user\mlnx_ual_mrw.c Fri Jul 11 13:03:58 2008
> +++ trunk\hw\mthca\user\mlnx_ual_mrw.c Fri Jul 11 12:56:00 2008
> @@ -49,7 +49,7 @@ __pre_register_mr (
>
> UVP_ENTER(UVP_DBG_SHIM);
> CL_ASSERT(p_umv_buf);
> - p_umv_buf->p_inout_buf = NULL;;
> + p_umv_buf->p_inout_buf = 0;
> p_umv_buf->input_size = 0;
> p_umv_buf->output_size = 0;
>
> @@ -80,7 +80,7 @@ __pre_query_mr (
> {
> UVP_ENTER(UVP_DBG_SHIM);
> CL_ASSERT(p_umv_buf);
> - p_umv_buf->p_inout_buf = NULL;;
> + p_umv_buf->p_inout_buf = 0;
> p_umv_buf->input_size = 0;
> p_umv_buf->output_size = 0;
>
> @@ -112,7 +112,7 @@ __pre_modify_mr (
> {
> UVP_ENTER(UVP_DBG_SHIM);
> CL_ASSERT(p_umv_buf);
> - p_umv_buf->p_inout_buf = NULL;;
> + p_umv_buf->p_inout_buf = 0;
> p_umv_buf->input_size = 0;
> p_umv_buf->output_size = 0;
>
> @@ -146,7 +146,7 @@ __pre_register_smr ( {
> UVP_ENTER(UVP_DBG_SHIM);
> CL_ASSERT(p_umv_buf);
> - p_umv_buf->p_inout_buf = NULL;;
> + p_umv_buf->p_inout_buf = 0;
> p_umv_buf->input_size = 0;
> p_umv_buf->output_size = 0;
>
> diff -up -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\hw\mthca\user\mlnx_ual_pd.c trunk\hw\mthca\user\mlnx_ual_pd.c
> --- old\hw\mthca\user\mlnx_ual_pd.c Fri Jul 11 13:03:58 2008
> +++ trunk\hw\mthca\user\mlnx_ual_pd.c Fri Jul 11 12:56:01 2008
> @@ -57,7 +57,7 @@ __pre_allocate_pd (
>
> if( !p_umv_buf->p_inout_buf )
> {
> - p_umv_buf->p_inout_buf = cl_zalloc(
> sizeof(struct ibv_alloc_pd_resp) );
> + 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; diff
> -up -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\hw\mthca\user\mlnx_ual_qp.c trunk\hw\mthca\user\mlnx_ual_qp.c
> --- old\hw\mthca\user\mlnx_ual_qp.c Fri Jul 11 13:03:58 2008
> +++ trunk\hw\mthca\user\mlnx_ual_qp.c Fri Jul 11 12:56:02 2008
> @@ -102,7 +102,7 @@ __pre_create_qp (
>
> if( !p_umv_buf->p_inout_buf )
> {
> - p_umv_buf->p_inout_buf = cl_zalloc( size );
> + p_umv_buf->p_inout_buf = (ULONG_PTR)cl_zalloc( size );
> if( !p_umv_buf->p_inout_buf )
> {
> status = IB_INSUFFICIENT_MEMORY; @@
> -142,7 +142,7 @@ __pre_create_qp (
> goto end;
>
> err_alloc_qp:
> - cl_free(p_umv_buf->p_inout_buf);
> + cl_free((void*)(ULONG_PTR)p_umv_buf->p_inout_buf);
> err_memory:
> end:
> UVP_EXIT(UVP_DBG_QP);
> @@ -209,7 +209,8 @@ __pre_modify_qp (
>
> if( !p_umv_buf->p_inout_buf )
> {
> - p_umv_buf->p_inout_buf = cl_zalloc(
> sizeof(struct ibv_modify_qp_resp) );
> + 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; diff
> -up -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\hw\mthca\user\mlnx_ual_srq.c trunk\hw\mthca\user\mlnx_ual_srq.c
> --- old\hw\mthca\user\mlnx_ual_srq.c Fri Jul 11 13:03:58 2008
> +++ trunk\hw\mthca\user\mlnx_ual_srq.c Fri Jul 11 12:56:03 2008
> @@ -95,7 +95,7 @@ __pre_create_srq (
>
> if( !p_umv_buf->p_inout_buf )
> {
> - p_umv_buf->p_inout_buf = cl_zalloc( size );
> + p_umv_buf->p_inout_buf = (ULONG_PTR)cl_zalloc( size );
> if( !p_umv_buf->p_inout_buf )
> {
> status = IB_INSUFFICIENT_MEMORY; @@
> -162,7 +162,7 @@ err_alloc_buf:
> err_lock:
> cl_free(srq);
> err_alloc_srq:
> - cl_free(p_umv_buf->p_inout_buf);
> + cl_free((void*)(ULONG_PTR)p_umv_buf->p_inout_buf);
> err_memory:
> err_params:
> end:
> diff -up -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\hw\mthca\user\mlnx_uvp.h trunk\hw\mthca\user\mlnx_uvp.h
> --- old\hw\mthca\user\mlnx_uvp.h Thu Jun 26 20:35:15 2008
> +++ trunk\hw\mthca\user\mlnx_uvp.h Fri Jul 11 12:56:03 2008
> @@ -1,6 +1,7 @@
> /*
> * Copyright (c) 2004, 2005 Topspin Communications. All
> rights reserved.
> * Copyright (c) 2005 Cisco Systems. All rights reserved.
> + * Portions Copyright (c) 2008 Microsoft Corporation. All
> rights reserved.
> *
> * This software is available to you under a choice of one of two
> * licenses. You may choose to be licensed under the terms
> of the GNU @@ -199,7 +200,7 @@ struct mthca_av { struct mthca_ah {
> struct mthca_av *av;
> ib_av_attr_t av_attr;
> -TO_LONG_PTR( ib_pd_handle_t , h_uvp_pd) ;
> + ib_pd_handle_t h_uvp_pd;
> struct mthca_ah_page *page;
> uint32_t key;
> int in_kernel;
> diff -up -r -X trunk\docs\dontdiff.txt -I \$Id:
> old\inc\iba\ib_ci.h trunk\inc\iba\ib_ci.h
> --- old\inc\iba\ib_ci.h Tue Jul 01 09:31:01 2008
> +++ trunk\inc\iba\ib_ci.h Fri Jul 11 12:56:03 2008
> @@ -138,7 +138,7 @@ typedef struct _umv_buf
> uint32_t status;
> uint32_t input_size;
> uint32_t output_size;
> - TO_LONG_PTR(void* , p_inout_buf) ;
> + uint64_t p_inout_buf;
> } ci_umv_buf_t;
> /******/
>
>
More information about the ofw
mailing list