On Sat, Jan 19, 2019 at 04:00:40PM +0800, oulijun wrote: > Hi, Jason & leon > I noticed that the 2 new changes in IB/core in 5.0 caused the rdma-core-v17 to be incompatible. > The patch-set as follows: > 3c2c209 RDMA/uverbs: Use uverbs_request() for request copying > 29a29d1 RDMA/uverbs: Use uverbs_request() and core for write_ex handlers I don't understand your comments, the above should not change the driver udata flow at all. What are you seeing exactly? > The 2 changes for resolve the following question? for exmaple, the kernel define a struct: > struct hns_roce_ib_create_qp { > __aligned_u64 buf_addr; > __aligned_u64 db_addr; > __u8 log_sq_bb_count; > __u8 log_sq_stride; > __u8 sq_no_prefetch; > __u8 reserved[5]; > // __aligned_u64 sdb_addr; > }; > > the size is 24 bytes > > if the user define a struct: > struct hns_roce_create_qp { > struct ibv_create_qp ibv_cmd; > __u64 buf_addr; > __u64 db_addr; > __u8 log_sq_bb_count; > __u8 log_sq_stride; > __u8 sq_no_prefetch; > __u8 reserved[5]; > __u64 sdb_addr; > }; > > the size is 32 bytes The user and kernel structs are not permitted to be different. Jason