On 29/09/2018 11:21, Houlong Wei wrote: [...] > +static int cmdq_pkt_append_command(struct cmdq_pkt *pkt, enum cmdq_code code, > + u32 arg_a, u32 arg_b) > +{ > + u64 *cmd_ptr; > + > + if (unlikely(pkt->cmd_buf_size + CMDQ_INST_SIZE > pkt->buf_size)) { > + pkt->cmd_buf_size += CMDQ_INST_SIZE; Can you plesae provide some example code of a driver that will use this API, I still don't understand why you need to update the cmd_buf_size here. > + WARN_ON(1); can we add some debug information: WARN_ON(1, "%s: buffer size too small for the amount of commands", __func__); Would it make sense to use WARN_ONCE()? > + return -ENOMEM; > + } > + cmd_ptr = pkt->va_base + pkt->cmd_buf_size; > + (*cmd_ptr) = (u64)((code << CMDQ_OP_CODE_SHIFT) | arg_a) << 32 | arg_b; > + pkt->cmd_buf_size += CMDQ_INST_SIZE; > + > + return 0; > +} Thanks, Matthias