On Thu, Jan 13, 2022 at 11:03:50AM +0800, Xiao Yang wrote: > +static enum resp_states process_atomic_write(struct rxe_qp *qp, > + struct rxe_pkt_info *pkt) > +{ > + struct rxe_mr *mr = qp->resp.mr; > + > + u64 *src = payload_addr(pkt); > + > + u64 *dst = iova_to_vaddr(mr, qp->resp.va + qp->resp.offset, sizeof(u64)); > + if (!dst || (uintptr_t)dst & 7) > + return RESPST_ERR_MISALIGNED_ATOMIC; It looks to me like iova_to_vaddr is completely broken, where is the kmap on that flow? Jason