On 2021/2/10 3:44, Jason Gunthorpe wrote: > On Sun, Feb 07, 2021 at 11:12:51AM +0800, Weihang Li wrote: > >> +static int register_dca_mem(struct hns_roce_context *ctx, uint64_t key, >> + void *addr, uint32_t size, uint32_t *handle) >> +{ >> + struct ib_uverbs_attr *attr; >> + int ret; >> + >> + DECLARE_COMMAND_BUFFER(cmd, HNS_IB_OBJECT_DCA_MEM, >> + HNS_IB_METHOD_DCA_MEM_REG, 4); >> + fill_attr_in_uint32(cmd, HNS_IB_ATTR_DCA_MEM_REG_LEN, size); >> + fill_attr_in_uint64(cmd, HNS_IB_ATTR_DCA_MEM_REG_ADDR, (intptr_t)addr); > > This should use ioctl_ptr_to_u64(), the place this was copied from > should also be fixed > OK, I will fix it. The kernel part has been defined as u64, so it doesn't need to be modified. > >> + fill_attr_in_uint64(cmd, HNS_IB_ATTR_DCA_MEM_REG_KEY, key); >> + attr = fill_attr_out_obj(cmd, HNS_IB_ATTR_DCA_MEM_REG_HANDLE); >> + >> + ret = execute_ioctl(&ctx->ibv_ctx.context, cmd); >> + if (!ret) >> + *handle = read_attr_obj(HNS_IB_ATTR_DCA_MEM_REG_HANDLE, attr); > > Success oriented flow everywhere please > > Jason > OK, thank you. Weihang