summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJason Gunthorpe <jgg@mellanox.com>2018-03-20 23:19:50 +0300
committerJason Gunthorpe <jgg@mellanox.com>2018-03-27 23:25:09 +0300
commitf2e9bfac13c904e5cfe58612002acde6f058dc83 (patch)
treedda9e694efc14bac6e8bc5ca7e6f3e49f68307a3 /include
parent366380a0c835b742da64ae2f800c65fa87692683 (diff)
downloadlinux-f2e9bfac13c904e5cfe58612002acde6f058dc83.tar.xz
RDMA/rxe: Fix uABI structure layouts for 32/64 compat
With 32 bit compilation several of the fields become misaligned here. Fixing this is an ABI break for 32 bit rxe and it is in well used portions of the rxe ABI. To handle this we bump the ABI version, as expected. However the user space driver doesn't handle it properly today, so all existing user space continues to work. Updated userspace will start to require the necessary kernel version. We don't expect there to be any 32 bit users of rxe. Most likely cases, such as ARM 32 already generally don't work because rxe does not handle the CPU cache properly on its shared with userspace pages. Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Diffstat (limited to 'include')
-rw-r--r--include/uapi/rdma/rdma_user_rxe.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/include/uapi/rdma/rdma_user_rxe.h b/include/uapi/rdma/rdma_user_rxe.h
index 231190b841c8..af8f8218aed5 100644
--- a/include/uapi/rdma/rdma_user_rxe.h
+++ b/include/uapi/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;
@@ -92,10 +94,14 @@ struct rxe_send_wr {
__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;
+ __u64 reserved;
+ };
__u32 key;
- int access;
+ __u32 access;
} reg;
} wr;
};
@@ -118,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];
@@ -162,6 +169,7 @@ struct rxe_create_qp_resp {
struct rxe_create_srq_resp {
struct mminfo mi;
__u32 srq_num;
+ __u32 reserved;
};
struct rxe_modify_srq_cmd {