Re: [PATCH rdma-core stable] Match kernel ABI to for 4.17 for 32 bit

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

 



For stable-v15, it doesn't apply as struct mlx4_query_device_ex_resp does not have a  struct mlx4_rss_caps at the end of the struct.
Should I keep the padding there or not ?

Nicolas

On 04/16/2018 11:28 PM, Jason Gunthorpe wrote:
> These changes were accepted into rdma-core mainline as part of
> the series that uses only the kernel headers. This patch is a simpler
> version for backporting. Based on kernel:
>
> commit 366380a0c835 ("RDMA/mlx4: Fix uABI structure layouts for 32/64 compat")
> commit f2e9bfac13c9 ("RDMA/rxe: Fix uABI structure layouts for 32/64 compat")
>
> Signed-off-by: Jason Gunthorpe <jgg@xxxxxxxxxxxx>
> ---
>  kernel-headers/rdma/rdma_user_rxe.h | 31 +++++++++++++++++++----------
>  providers/mlx4/mlx4-abi.h           |  1 +
>  providers/rxe/rxe-abi.h             |  1 +
>  3 files changed, 22 insertions(+), 11 deletions(-)
>
> Nicolas, this patch is for all of the stable backports. It is bit
> complicated because we probably shouldn't just backport the transition
> to DECLARE_DRV_CMD into -stable
>
> This does not get applied to rdma-core HEAD since it is already
> present in some form..
>
> Jason
>
> diff --git a/kernel-headers/rdma/rdma_user_rxe.h b/kernel-headers/rdma/rdma_user_rxe.h
> index e3e6852b58eb45..7e05018ff04154 100644
> --- a/kernel-headers/rdma/rdma_user_rxe.h
> +++ b/kernel-headers/rdma/rdma_user_rxe.h
> @@ -58,6 +58,8 @@ struct rxe_global_route {
>  struct rxe_av {
>  	__u8			port_num;
>  	__u8			network_type;
> +	__u16			reserved1;
> +	__u32			reserved2;
>  	struct rxe_global_route	grh;
>  	union {
>  		struct sockaddr_in	_sockaddr_in;
> @@ -66,7 +68,7 @@ struct rxe_av {
>  };
>  
>  struct rxe_send_wr {
> -	__u64			wr_id;
> +	__aligned_u64		wr_id;
>  	__u32			num_sge;
>  	__u32			opcode;
>  	__u32			send_flags;
> @@ -76,36 +78,42 @@ struct rxe_send_wr {
>  	} ex;
>  	union {
>  		struct {
> -			__u64	remote_addr;
> +			__aligned_u64 remote_addr;
>  			__u32	rkey;
> +			__u32	reserved;
>  		} rdma;
>  		struct {
> -			__u64	remote_addr;
> -			__u64	compare_add;
> -			__u64	swap;
> +			__aligned_u64 remote_addr;
> +			__aligned_u64 compare_add;
> +			__aligned_u64 swap;
>  			__u32	rkey;
> +			__u32	reserved;
>  		} atomic;
>  		struct {
>  			__u32	remote_qpn;
>  			__u32	remote_qkey;
>  			__u16	pkey_index;
>  		} ud;
> +		/* reg is only used by the kernel and is not part of the uapi */
>  		struct {
> -			struct ib_mr *mr;
> +			union {
> +				struct ib_mr *mr;
> +				__aligned_u64 reserved;
> +			};
>  			__u32        key;
> -			int          access;
> +			__u32        access;
>  		} reg;
>  	} wr;
>  };
>  
>  struct rxe_sge {
> -	__u64	addr;
> +	__aligned_u64 addr;
>  	__u32	length;
>  	__u32	lkey;
>  };
>  
>  struct mminfo {
> -	__u64			offset;
> +	__aligned_u64  		offset;
>  	__u32			size;
>  	__u32			pad;
>  };
> @@ -116,6 +124,7 @@ struct rxe_dma_info {
>  	__u32			cur_sge;
>  	__u32			num_sge;
>  	__u32			sge_offset;
> +	__u32			reserved;
>  	union {
>  		__u8		inline_data[0];
>  		struct rxe_sge	sge[0];
> @@ -127,7 +136,7 @@ struct rxe_send_wqe {
>  	struct rxe_av		av;
>  	__u32			status;
>  	__u32			state;
> -	__u64			iova;
> +	__aligned_u64		iova;
>  	__u32			mask;
>  	__u32			first_psn;
>  	__u32			last_psn;
> @@ -138,7 +147,7 @@ struct rxe_send_wqe {
>  };
>  
>  struct rxe_recv_wqe {
> -	__u64			wr_id;
> +	__aligned_u64		wr_id;
>  	__u32			num_sge;
>  	__u32			padding;
>  	struct rxe_dma_info	dma;
> diff --git a/providers/mlx4/mlx4-abi.h b/providers/mlx4/mlx4-abi.h
> index 3b58ff5eb83306..3713d838000164 100644
> --- a/providers/mlx4/mlx4-abi.h
> +++ b/providers/mlx4/mlx4-abi.h
> @@ -111,6 +111,7 @@ struct mlx4_query_device_ex_resp {
>  	__u32				response_length;
>  	__u64				hca_core_clock_offset;
>  	__u32				max_inl_recv_sz;
> +	__u32                   	reserved;
>  	struct mlx4_rss_caps            rss_caps; /* vendor data channel */
>  };
>  
> diff --git a/providers/rxe/rxe-abi.h b/providers/rxe/rxe-abi.h
> index 72b8438dbf6009..08657407b49295 100644
> --- a/providers/rxe/rxe-abi.h
> +++ b/providers/rxe/rxe-abi.h
> @@ -68,6 +68,7 @@ struct rxe_create_srq_resp {
>  	struct ib_uverbs_create_srq_resp ibv_resp;
>  	struct mmap_info mi;
>  	__u32 srq_num;
> +	__u32 reserved;
>  };
>  
>  struct rxe_modify_srq_cmd {

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[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