Re: [PATCH] hfi1verbs: Update rvt cq headers in rdma_core hfi1 provider

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Sep 10, 2018 at 07:12:00AM -0700, Kamenee Arumugam wrote:
> From: Arumugam, Kamenee <kamenee.arumugam@xxxxxxxxx>
> 
> hfi1_wc struct is the same struct as ib_uverbs_wc and hfi1_cq_wc
> is not in the uapi header. Remove hfi1_wc and hfi1_cq_wc struct
> from providers. Include rvt-abi.h header that have rvt_cq_wc
> struct definition into kernel-headers.
> 
> The member ib_uverbs_wc arrray in rvt_cq_wc is replaced with
> one in rvt-abi. Therefore,plus one to the number of cq entries.
> 
> Change-Id: I01250acb9d17f63ac737f632462f34617fd5b61a
> Reviewed-by: Mike Marciniszyn <mike.marciniszyn@xxxxxxxxx>
> Signed-off-by: Kamenee Arumugam <kamenee.arumugam@xxxxxxxxx>
>  kernel-headers/CMakeLists.txt  |    1 +
>  kernel-headers/rdma/rvt-abi.h  |   74 ++++++++++++++++++++++++++++++++++++++++

Changes in these files have to be sent through the kernel tree.

Jason

>  providers/hfi1verbs/hfiverbs.h |   37 +++-----------------
>  providers/hfi1verbs/verbs.c    |   23 +++++++-----
>  4 files changed, 93 insertions(+), 42 deletions(-)
>  create mode 100755 kernel-headers/rdma/rvt-abi.h
>
> diff --git a/kernel-headers/CMakeLists.txt b/kernel-headers/CMakeLists.txt
> index 16ba165..631db9c 100644
> +++ b/kernel-headers/CMakeLists.txt
> @@ -24,6 +24,7 @@ publish_internal_headers(rdma
>    rdma/rdma_user_ioctl_cmds.h
>    rdma/rdma_user_rxe.h
>    rdma/vmw_pvrdma-abi.h
> +  rdma/rvt-abi.h
>    )
>  
>  publish_internal_headers(rdma/hfi
> diff --git a/kernel-headers/rdma/rvt-abi.h b/kernel-headers/rdma/rvt-abi.h
> new file mode 100755
> index 0000000..8cff1df
> +++ b/kernel-headers/rdma/rvt-abi.h
> @@ -0,0 +1,74 @@
> +/* SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) */
> +/*
> + * Copyright(c) 2015 - 2018 Intel Corporation.
> + *
> + * This file is provided under a dual BSD/GPLv2 license.  When using or
> + * redistributing this file, you may do so under either license.
> + *
> + * GPL LICENSE SUMMARY
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of version 2 of the GNU General Public License as
> + * published by the Free Software Foundation.
> + *
> + * This program is distributed in the hope that it will be useful, but
> + * WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * General Public License for more details.
> + *
> + * BSD LICENSE
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + *
> + *  - Redistributions of source code must retain the above copyright
> + *    notice, this list of conditions and the following disclaimer.
> + *  - Redistributions in binary form must reproduce the above copyright
> + *    notice, this list of conditions and the following disclaimer in
> + *    the documentation and/or other materials provided with the
> + *    distribution.
> + *  - Neither the name of Intel Corporation nor the names of its
> + *    contributors may be used to endorse or promote products derived
> + *    from this software without specific prior written permission.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
> + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
> + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
> + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
> + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
> + *
> + */
> +
> +/*
> + * This file contains defines, structures, etc. that are used
> + * to communicate between kernel and user code.
> + */
> +
> +#ifndef RVT_ABI_USER_H
> +#define RVT_ABI_USER_H
> +
> +#include <linux/types.h>
> +#ifndef RDMA_ATOMIC_UAPI
> +#define RDMA_ATOMIC_UAPI(_type, _name) _type _name
> +#endif
> +/*
> + * This structure is used to contain the head pointer, tail pointer,
> + * and completion queue entries as a single memory allocation so
> + * it can be mmap'ed into user space.
> + */
> +struct rvt_cq_wc {
> +	/* index of next entry to fill */
> +	RDMA_ATOMIC_UAPI(u32, head);
> +	/* index of next ib_poll_cq() entry */
> +	RDMA_ATOMIC_UAPI(u32, tail);
> +
> +	/* these are actually size ibcq.cqe + 1 */
> +	struct ib_uverbs_wc uqueue[0];
> +};
> +
> +#endif /* RVT_ABI_USER_H */
> diff --git a/providers/hfi1verbs/hfiverbs.h b/providers/hfi1verbs/hfiverbs.h
> index 070a01c..558fa2a 100644
> +++ b/providers/hfi1verbs/hfiverbs.h
> @@ -65,7 +65,8 @@
>  
>  #include <infiniband/driver.h>
>  #include <infiniband/verbs.h>
> -
> +#define RDMA_ATOMIC_UAPI(_type, _name)  _Atomic(__##_type) _name

Hmm, we have a at least on other place I know of that could use this,
currently it just casts in the single place it reads..

Jason



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux