All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH for-next v3 1/2] RDMA/rxe: Improve newline in printing messages
@ 2023-09-18  2:05 Li Zhijian
  2023-09-18  2:05 ` [PATCH for-next v3 2/2] RDMA/rxe: Call rxe_set_mtu after rxe_register_device Li Zhijian
  2023-09-18  7:26 ` [PATCH for-next v3 1/2] RDMA/rxe: Improve newline in printing messages Zhu Yanjun
  0 siblings, 2 replies; 10+ messages in thread
From: Li Zhijian @ 2023-09-18  2:05 UTC (permalink / raw)
  To: linux-rdma
  Cc: zyjzyj2000, jgg, leon, linux-kernel, rpearsonhpe, Li Zhijian,
	Daisuke Matsuda

Previously rxe_{dbg,info,err}() macros are appended built-in newline,
but some users will add redundant newline sometimes. So remove the
built-in newline for these macros.

In terms of rxe_{dbg,info,err}_xxx() macros, because they don't have
built-in newline, append newline when using them.

CC: Daisuke Matsuda <matsuda-daisuke@fujitsu.com>
Reviewed-by: Daisuke Matsuda <matsuda-daisuke@fujitsu.com>
Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
---
 I have used below script to verify if all of them are cleanup:
 git grep -n -E "rxe_info.*\"|rxe_err.*\"|rxe_dbg.*\"" drivers/infiniband/sw/rxe/ | grep -v '\\n'

V3: rebase to rdma/for-next
---
 drivers/infiniband/sw/rxe/rxe.c       |   6 +-
 drivers/infiniband/sw/rxe/rxe.h       |   6 +-
 drivers/infiniband/sw/rxe/rxe_comp.c  |   4 +-
 drivers/infiniband/sw/rxe/rxe_cq.c    |   4 +-
 drivers/infiniband/sw/rxe/rxe_mr.c    |  16 +-
 drivers/infiniband/sw/rxe/rxe_mw.c    |   2 +-
 drivers/infiniband/sw/rxe/rxe_qp.c    |   8 +-
 drivers/infiniband/sw/rxe/rxe_resp.c  |  12 +-
 drivers/infiniband/sw/rxe/rxe_task.c  |   4 +-
 drivers/infiniband/sw/rxe/rxe_verbs.c | 216 +++++++++++++-------------
 10 files changed, 139 insertions(+), 139 deletions(-)

diff --git a/drivers/infiniband/sw/rxe/rxe.c b/drivers/infiniband/sw/rxe/rxe.c
index 54c723a6edda..a086d588e159 100644
--- a/drivers/infiniband/sw/rxe/rxe.c
+++ b/drivers/infiniband/sw/rxe/rxe.c
@@ -161,7 +161,7 @@ void rxe_set_mtu(struct rxe_dev *rxe, unsigned int ndev_mtu)
 	port->attr.active_mtu = mtu;
 	port->mtu_cap = ib_mtu_enum_to_int(mtu);
 
-	rxe_info_dev(rxe, "Set mtu to %d", port->mtu_cap);
+	rxe_info_dev(rxe, "Set mtu to %d\n", port->mtu_cap);
 }
 
 /* called by ifc layer to create new rxe device.
@@ -181,7 +181,7 @@ static int rxe_newlink(const char *ibdev_name, struct net_device *ndev)
 	int err = 0;
 
 	if (is_vlan_dev(ndev)) {
-		rxe_err("rxe creation allowed on top of a real device only");
+		rxe_err("rxe creation allowed on top of a real device only\n");
 		err = -EPERM;
 		goto err;
 	}
@@ -189,7 +189,7 @@ static int rxe_newlink(const char *ibdev_name, struct net_device *ndev)
 	rxe = rxe_get_dev_from_net(ndev);
 	if (rxe) {
 		ib_device_put(&rxe->ib_dev);
-		rxe_err_dev(rxe, "already configured on %s", ndev->name);
+		rxe_err_dev(rxe, "already configured on %s\n", ndev->name);
 		err = -EEXIST;
 		goto err;
 	}
diff --git a/drivers/infiniband/sw/rxe/rxe.h b/drivers/infiniband/sw/rxe/rxe.h
index d33dd6cf83d3..d8fb2c7af30a 100644
--- a/drivers/infiniband/sw/rxe/rxe.h
+++ b/drivers/infiniband/sw/rxe/rxe.h
@@ -38,7 +38,7 @@
 
 #define RXE_ROCE_V2_SPORT		(0xc000)
 
-#define rxe_dbg(fmt, ...) pr_debug("%s: " fmt "\n", __func__, ##__VA_ARGS__)
+#define rxe_dbg(fmt, ...) pr_debug("%s: " fmt, __func__, ##__VA_ARGS__)
 #define rxe_dbg_dev(rxe, fmt, ...) ibdev_dbg(&(rxe)->ib_dev,		\
 		"%s: " fmt, __func__, ##__VA_ARGS__)
 #define rxe_dbg_uc(uc, fmt, ...) ibdev_dbg((uc)->ibuc.device,		\
@@ -58,7 +58,7 @@
 #define rxe_dbg_mw(mw, fmt, ...) ibdev_dbg((mw)->ibmw.device,		\
 		"mw#%d %s:  " fmt, (mw)->elem.index, __func__, ##__VA_ARGS__)
 
-#define rxe_err(fmt, ...) pr_err_ratelimited("%s: " fmt "\n", __func__, \
+#define rxe_err(fmt, ...) pr_err_ratelimited("%s: " fmt, __func__, \
 					##__VA_ARGS__)
 #define rxe_err_dev(rxe, fmt, ...) ibdev_err_ratelimited(&(rxe)->ib_dev, \
 		"%s: " fmt, __func__, ##__VA_ARGS__)
@@ -79,7 +79,7 @@
 #define rxe_err_mw(mw, fmt, ...) ibdev_err_ratelimited((mw)->ibmw.device, \
 		"mw#%d %s:  " fmt, (mw)->elem.index, __func__, ##__VA_ARGS__)
 
-#define rxe_info(fmt, ...) pr_info_ratelimited("%s: " fmt "\n", __func__, \
+#define rxe_info(fmt, ...) pr_info_ratelimited("%s: " fmt, __func__, \
 					##__VA_ARGS__)
 #define rxe_info_dev(rxe, fmt, ...) ibdev_info_ratelimited(&(rxe)->ib_dev, \
 		"%s: " fmt, __func__, ##__VA_ARGS__)
diff --git a/drivers/infiniband/sw/rxe/rxe_comp.c b/drivers/infiniband/sw/rxe/rxe_comp.c
index d0bdc2d8adc8..b78b8c0856ab 100644
--- a/drivers/infiniband/sw/rxe/rxe_comp.c
+++ b/drivers/infiniband/sw/rxe/rxe_comp.c
@@ -433,7 +433,7 @@ static void make_send_cqe(struct rxe_qp *qp, struct rxe_send_wqe *wqe,
 		}
 	} else {
 		if (wqe->status != IB_WC_WR_FLUSH_ERR)
-			rxe_err_qp(qp, "non-flush error status = %d",
+			rxe_err_qp(qp, "non-flush error status = %d\n",
 				wqe->status);
 	}
 }
@@ -582,7 +582,7 @@ static int flush_send_wqe(struct rxe_qp *qp, struct rxe_send_wqe *wqe)
 
 	err = rxe_cq_post(qp->scq, &cqe, 0);
 	if (err)
-		rxe_dbg_cq(qp->scq, "post cq failed, err = %d", err);
+		rxe_dbg_cq(qp->scq, "post cq failed, err = %d\n", err);
 
 	return err;
 }
diff --git a/drivers/infiniband/sw/rxe/rxe_cq.c b/drivers/infiniband/sw/rxe/rxe_cq.c
index d5486cbb3f10..fec87c9030ab 100644
--- a/drivers/infiniband/sw/rxe/rxe_cq.c
+++ b/drivers/infiniband/sw/rxe/rxe_cq.c
@@ -27,7 +27,7 @@ int rxe_cq_chk_attr(struct rxe_dev *rxe, struct rxe_cq *cq,
 	if (cq) {
 		count = queue_count(cq->queue, QUEUE_TYPE_TO_CLIENT);
 		if (cqe < count) {
-			rxe_dbg_cq(cq, "cqe(%d) < current # elements in queue (%d)",
+			rxe_dbg_cq(cq, "cqe(%d) < current # elements in queue (%d)\n",
 					cqe, count);
 			goto err1;
 		}
@@ -96,7 +96,7 @@ int rxe_cq_post(struct rxe_cq *cq, struct rxe_cqe *cqe, int solicited)
 
 	full = queue_full(cq->queue, QUEUE_TYPE_TO_CLIENT);
 	if (unlikely(full)) {
-		rxe_err_cq(cq, "queue full");
+		rxe_err_cq(cq, "queue full\n");
 		spin_unlock_irqrestore(&cq->cq_lock, flags);
 		if (cq->ibcq.event_handler) {
 			ev.device = cq->ibcq.device;
diff --git a/drivers/infiniband/sw/rxe/rxe_mr.c b/drivers/infiniband/sw/rxe/rxe_mr.c
index f54042e9aeb2..bc81fde696ee 100644
--- a/drivers/infiniband/sw/rxe/rxe_mr.c
+++ b/drivers/infiniband/sw/rxe/rxe_mr.c
@@ -34,7 +34,7 @@ int mr_check_range(struct rxe_mr *mr, u64 iova, size_t length)
 	case IB_MR_TYPE_MEM_REG:
 		if (iova < mr->ibmr.iova ||
 		    iova + length > mr->ibmr.iova + mr->ibmr.length) {
-			rxe_dbg_mr(mr, "iova/length out of range");
+			rxe_dbg_mr(mr, "iova/length out of range\n");
 			return -EINVAL;
 		}
 		return 0;
@@ -319,7 +319,7 @@ int rxe_mr_copy(struct rxe_mr *mr, u64 iova, void *addr,
 
 	err = mr_check_range(mr, iova, length);
 	if (unlikely(err)) {
-		rxe_dbg_mr(mr, "iova out of range");
+		rxe_dbg_mr(mr, "iova out of range\n");
 		return err;
 	}
 
@@ -477,7 +477,7 @@ int rxe_mr_do_atomic_op(struct rxe_mr *mr, u64 iova, int opcode,
 	u64 *va;
 
 	if (unlikely(mr->state != RXE_MR_STATE_VALID)) {
-		rxe_dbg_mr(mr, "mr not in valid state");
+		rxe_dbg_mr(mr, "mr not in valid state\n");
 		return RESPST_ERR_RKEY_VIOLATION;
 	}
 
@@ -490,7 +490,7 @@ int rxe_mr_do_atomic_op(struct rxe_mr *mr, u64 iova, int opcode,
 
 		err = mr_check_range(mr, iova, sizeof(value));
 		if (err) {
-			rxe_dbg_mr(mr, "iova out of range");
+			rxe_dbg_mr(mr, "iova out of range\n");
 			return RESPST_ERR_RKEY_VIOLATION;
 		}
 		page_offset = rxe_mr_iova_to_page_offset(mr, iova);
@@ -501,7 +501,7 @@ int rxe_mr_do_atomic_op(struct rxe_mr *mr, u64 iova, int opcode,
 	}
 
 	if (unlikely(page_offset & 0x7)) {
-		rxe_dbg_mr(mr, "iova not aligned");
+		rxe_dbg_mr(mr, "iova not aligned\n");
 		return RESPST_ERR_MISALIGNED_ATOMIC;
 	}
 
@@ -534,7 +534,7 @@ int rxe_mr_do_atomic_write(struct rxe_mr *mr, u64 iova, u64 value)
 
 	/* See IBA oA19-28 */
 	if (unlikely(mr->state != RXE_MR_STATE_VALID)) {
-		rxe_dbg_mr(mr, "mr not in valid state");
+		rxe_dbg_mr(mr, "mr not in valid state\n");
 		return RESPST_ERR_RKEY_VIOLATION;
 	}
 
@@ -548,7 +548,7 @@ int rxe_mr_do_atomic_write(struct rxe_mr *mr, u64 iova, u64 value)
 		/* See IBA oA19-28 */
 		err = mr_check_range(mr, iova, sizeof(value));
 		if (unlikely(err)) {
-			rxe_dbg_mr(mr, "iova out of range");
+			rxe_dbg_mr(mr, "iova out of range\n");
 			return RESPST_ERR_RKEY_VIOLATION;
 		}
 		page_offset = rxe_mr_iova_to_page_offset(mr, iova);
@@ -560,7 +560,7 @@ int rxe_mr_do_atomic_write(struct rxe_mr *mr, u64 iova, u64 value)
 
 	/* See IBA A19.4.2 */
 	if (unlikely(page_offset & 0x7)) {
-		rxe_dbg_mr(mr, "misaligned address");
+		rxe_dbg_mr(mr, "misaligned address\n");
 		return RESPST_ERR_MISALIGNED_ATOMIC;
 	}
 
diff --git a/drivers/infiniband/sw/rxe/rxe_mw.c b/drivers/infiniband/sw/rxe/rxe_mw.c
index d9312b5c9d20..379e65bfcd49 100644
--- a/drivers/infiniband/sw/rxe/rxe_mw.c
+++ b/drivers/infiniband/sw/rxe/rxe_mw.c
@@ -198,7 +198,7 @@ int rxe_bind_mw(struct rxe_qp *qp, struct rxe_send_wqe *wqe)
 	}
 
 	if (access & ~RXE_ACCESS_SUPPORTED_MW) {
-		rxe_err_mw(mw, "access %#x not supported", access);
+		rxe_err_mw(mw, "access %#x not supported\n", access);
 		ret = -EOPNOTSUPP;
 		goto err_drop_mr;
 	}
diff --git a/drivers/infiniband/sw/rxe/rxe_qp.c b/drivers/infiniband/sw/rxe/rxe_qp.c
index 28e379c108bc..e3589c02013e 100644
--- a/drivers/infiniband/sw/rxe/rxe_qp.c
+++ b/drivers/infiniband/sw/rxe/rxe_qp.c
@@ -201,7 +201,7 @@ static int rxe_init_sq(struct rxe_qp *qp, struct ib_qp_init_attr *init,
 	qp->sq.queue = rxe_queue_init(rxe, &qp->sq.max_wr, wqe_size,
 				      QUEUE_TYPE_FROM_CLIENT);
 	if (!qp->sq.queue) {
-		rxe_err_qp(qp, "Unable to allocate send queue");
+		rxe_err_qp(qp, "Unable to allocate send queue\n");
 		err = -ENOMEM;
 		goto err_out;
 	}
@@ -211,7 +211,7 @@ static int rxe_init_sq(struct rxe_qp *qp, struct ib_qp_init_attr *init,
 			   qp->sq.queue->buf, qp->sq.queue->buf_size,
 			   &qp->sq.queue->ip);
 	if (err) {
-		rxe_err_qp(qp, "do_mmap_info failed, err = %d", err);
+		rxe_err_qp(qp, "do_mmap_info failed, err = %d\n", err);
 		goto err_free;
 	}
 
@@ -292,7 +292,7 @@ static int rxe_init_rq(struct rxe_qp *qp, struct ib_qp_init_attr *init,
 	qp->rq.queue = rxe_queue_init(rxe, &qp->rq.max_wr, wqe_size,
 				      QUEUE_TYPE_FROM_CLIENT);
 	if (!qp->rq.queue) {
-		rxe_err_qp(qp, "Unable to allocate recv queue");
+		rxe_err_qp(qp, "Unable to allocate recv queue\n");
 		err = -ENOMEM;
 		goto err_out;
 	}
@@ -302,7 +302,7 @@ static int rxe_init_rq(struct rxe_qp *qp, struct ib_qp_init_attr *init,
 			   qp->rq.queue->buf, qp->rq.queue->buf_size,
 			   &qp->rq.queue->ip);
 	if (err) {
-		rxe_err_qp(qp, "do_mmap_info failed, err = %d", err);
+		rxe_err_qp(qp, "do_mmap_info failed, err = %d\n", err);
 		goto err_free;
 	}
 
diff --git a/drivers/infiniband/sw/rxe/rxe_resp.c b/drivers/infiniband/sw/rxe/rxe_resp.c
index da470a925efc..963382f625d7 100644
--- a/drivers/infiniband/sw/rxe/rxe_resp.c
+++ b/drivers/infiniband/sw/rxe/rxe_resp.c
@@ -362,18 +362,18 @@ static enum resp_states rxe_resp_check_length(struct rxe_qp *qp,
 		if ((pkt->mask & RXE_START_MASK) &&
 		    (pkt->mask & RXE_END_MASK)) {
 			if (unlikely(payload > mtu)) {
-				rxe_dbg_qp(qp, "only packet too long");
+				rxe_dbg_qp(qp, "only packet too long\n");
 				return RESPST_ERR_LENGTH;
 			}
 		} else if ((pkt->mask & RXE_START_MASK) ||
 			   (pkt->mask & RXE_MIDDLE_MASK)) {
 			if (unlikely(payload != mtu)) {
-				rxe_dbg_qp(qp, "first or middle packet not mtu");
+				rxe_dbg_qp(qp, "first or middle packet not mtu\n");
 				return RESPST_ERR_LENGTH;
 			}
 		} else if (pkt->mask & RXE_END_MASK) {
 			if (unlikely((payload == 0) || (payload > mtu))) {
-				rxe_dbg_qp(qp, "last packet zero or too long");
+				rxe_dbg_qp(qp, "last packet zero or too long\n");
 				return RESPST_ERR_LENGTH;
 			}
 		}
@@ -382,7 +382,7 @@ static enum resp_states rxe_resp_check_length(struct rxe_qp *qp,
 	/* See IBA C9-94 */
 	if (pkt->mask & RXE_RETH_MASK) {
 		if (reth_len(pkt) > (1U << 31)) {
-			rxe_dbg_qp(qp, "dma length too long");
+			rxe_dbg_qp(qp, "dma length too long\n");
 			return RESPST_ERR_LENGTH;
 		}
 	}
@@ -1133,7 +1133,7 @@ static enum resp_states do_complete(struct rxe_qp *qp,
 		}
 	} else {
 		if (wc->status != IB_WC_WR_FLUSH_ERR)
-			rxe_err_qp(qp, "non-flush error status = %d",
+			rxe_err_qp(qp, "non-flush error status = %d\n",
 				wc->status);
 	}
 
@@ -1442,7 +1442,7 @@ static int flush_recv_wqe(struct rxe_qp *qp, struct rxe_recv_wqe *wqe)
 
 	err = rxe_cq_post(qp->rcq, &cqe, 0);
 	if (err)
-		rxe_dbg_cq(qp->rcq, "post cq failed err = %d", err);
+		rxe_dbg_cq(qp->rcq, "post cq failed err = %d\n", err);
 
 	return err;
 }
diff --git a/drivers/infiniband/sw/rxe/rxe_task.c b/drivers/infiniband/sw/rxe/rxe_task.c
index 1501120d4f52..80332638d9e3 100644
--- a/drivers/infiniband/sw/rxe/rxe_task.c
+++ b/drivers/infiniband/sw/rxe/rxe_task.c
@@ -156,7 +156,7 @@ static void do_task(struct rxe_task *task)
 
 		default:
 			WARN_ON(1);
-			rxe_dbg_qp(task->qp, "unexpected task state = %d",
+			rxe_dbg_qp(task->qp, "unexpected task state = %d\n",
 				   task->state);
 			task->state = TASK_STATE_IDLE;
 		}
@@ -167,7 +167,7 @@ static void do_task(struct rxe_task *task)
 			if (WARN_ON(task->num_done != task->num_sched))
 				rxe_dbg_qp(
 					task->qp,
-					"%ld tasks scheduled, %ld tasks done",
+					"%ld tasks scheduled, %ld tasks done\n",
 					task->num_sched, task->num_done);
 		}
 		spin_unlock_irqrestore(&task->lock, flags);
diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.c b/drivers/infiniband/sw/rxe/rxe_verbs.c
index 48f86839d36a..f0a03b910702 100644
--- a/drivers/infiniband/sw/rxe/rxe_verbs.c
+++ b/drivers/infiniband/sw/rxe/rxe_verbs.c
@@ -23,7 +23,7 @@ static int rxe_query_device(struct ib_device *ibdev,
 	int err;
 
 	if (udata->inlen || udata->outlen) {
-		rxe_dbg_dev(rxe, "malformed udata");
+		rxe_dbg_dev(rxe, "malformed udata\n");
 		err = -EINVAL;
 		goto err_out;
 	}
@@ -33,7 +33,7 @@ static int rxe_query_device(struct ib_device *ibdev,
 	return 0;
 
 err_out:
-	rxe_err_dev(rxe, "returned err = %d", err);
+	rxe_err_dev(rxe, "returned err = %d\n", err);
 	return err;
 }
 
@@ -45,7 +45,7 @@ static int rxe_query_port(struct ib_device *ibdev,
 
 	if (port_num != 1) {
 		err = -EINVAL;
-		rxe_dbg_dev(rxe, "bad port_num = %d", port_num);
+		rxe_dbg_dev(rxe, "bad port_num = %d\n", port_num);
 		goto err_out;
 	}
 
@@ -67,7 +67,7 @@ static int rxe_query_port(struct ib_device *ibdev,
 	return ret;
 
 err_out:
-	rxe_err_dev(rxe, "returned err = %d", err);
+	rxe_err_dev(rxe, "returned err = %d\n", err);
 	return err;
 }
 
@@ -79,7 +79,7 @@ static int rxe_query_pkey(struct ib_device *ibdev,
 
 	if (index != 0) {
 		err = -EINVAL;
-		rxe_dbg_dev(rxe, "bad pkey index = %d", index);
+		rxe_dbg_dev(rxe, "bad pkey index = %d\n", index);
 		goto err_out;
 	}
 
@@ -87,7 +87,7 @@ static int rxe_query_pkey(struct ib_device *ibdev,
 	return 0;
 
 err_out:
-	rxe_err_dev(rxe, "returned err = %d", err);
+	rxe_err_dev(rxe, "returned err = %d\n", err);
 	return err;
 }
 
@@ -100,7 +100,7 @@ static int rxe_modify_device(struct ib_device *ibdev,
 	if (mask & ~(IB_DEVICE_MODIFY_SYS_IMAGE_GUID |
 		     IB_DEVICE_MODIFY_NODE_DESC)) {
 		err = -EOPNOTSUPP;
-		rxe_dbg_dev(rxe, "unsupported mask = 0x%x", mask);
+		rxe_dbg_dev(rxe, "unsupported mask = 0x%x\n", mask);
 		goto err_out;
 	}
 
@@ -115,7 +115,7 @@ static int rxe_modify_device(struct ib_device *ibdev,
 	return 0;
 
 err_out:
-	rxe_err_dev(rxe, "returned err = %d", err);
+	rxe_err_dev(rxe, "returned err = %d\n", err);
 	return err;
 }
 
@@ -128,14 +128,14 @@ static int rxe_modify_port(struct ib_device *ibdev, u32 port_num,
 
 	if (port_num != 1) {
 		err = -EINVAL;
-		rxe_dbg_dev(rxe, "bad port_num = %d", port_num);
+		rxe_dbg_dev(rxe, "bad port_num = %d\n", port_num);
 		goto err_out;
 	}
 
 	//TODO is shutdown useful
 	if (mask & ~(IB_PORT_RESET_QKEY_CNTR)) {
 		err = -EOPNOTSUPP;
-		rxe_dbg_dev(rxe, "unsupported mask = 0x%x", mask);
+		rxe_dbg_dev(rxe, "unsupported mask = 0x%x\n", mask);
 		goto err_out;
 	}
 
@@ -149,7 +149,7 @@ static int rxe_modify_port(struct ib_device *ibdev, u32 port_num,
 	return 0;
 
 err_out:
-	rxe_err_dev(rxe, "returned err = %d", err);
+	rxe_err_dev(rxe, "returned err = %d\n", err);
 	return err;
 }
 
@@ -161,14 +161,14 @@ static enum rdma_link_layer rxe_get_link_layer(struct ib_device *ibdev,
 
 	if (port_num != 1) {
 		err = -EINVAL;
-		rxe_dbg_dev(rxe, "bad port_num = %d", port_num);
+		rxe_dbg_dev(rxe, "bad port_num = %d\n", port_num);
 		goto err_out;
 	}
 
 	return IB_LINK_LAYER_ETHERNET;
 
 err_out:
-	rxe_err_dev(rxe, "returned err = %d", err);
+	rxe_err_dev(rxe, "returned err = %d\n", err);
 	return err;
 }
 
@@ -181,7 +181,7 @@ static int rxe_port_immutable(struct ib_device *ibdev, u32 port_num,
 
 	if (port_num != 1) {
 		err = -EINVAL;
-		rxe_dbg_dev(rxe, "bad port_num = %d", port_num);
+		rxe_dbg_dev(rxe, "bad port_num = %d\n", port_num);
 		goto err_out;
 	}
 
@@ -197,7 +197,7 @@ static int rxe_port_immutable(struct ib_device *ibdev, u32 port_num,
 	return 0;
 
 err_out:
-	rxe_err_dev(rxe, "returned err = %d", err);
+	rxe_err_dev(rxe, "returned err = %d\n", err);
 	return err;
 }
 
@@ -210,7 +210,7 @@ static int rxe_alloc_ucontext(struct ib_ucontext *ibuc, struct ib_udata *udata)
 
 	err = rxe_add_to_pool(&rxe->uc_pool, uc);
 	if (err)
-		rxe_err_dev(rxe, "unable to create uc");
+		rxe_err_dev(rxe, "unable to create uc\n");
 
 	return err;
 }
@@ -222,7 +222,7 @@ static void rxe_dealloc_ucontext(struct ib_ucontext *ibuc)
 
 	err = rxe_cleanup(uc);
 	if (err)
-		rxe_err_uc(uc, "cleanup failed, err = %d", err);
+		rxe_err_uc(uc, "cleanup failed, err = %d\n", err);
 }
 
 /* pd */
@@ -234,14 +234,14 @@ static int rxe_alloc_pd(struct ib_pd *ibpd, struct ib_udata *udata)
 
 	err = rxe_add_to_pool(&rxe->pd_pool, pd);
 	if (err) {
-		rxe_dbg_dev(rxe, "unable to alloc pd");
+		rxe_dbg_dev(rxe, "unable to alloc pd\n");
 		goto err_out;
 	}
 
 	return 0;
 
 err_out:
-	rxe_err_dev(rxe, "returned err = %d", err);
+	rxe_err_dev(rxe, "returned err = %d\n", err);
 	return err;
 }
 
@@ -252,7 +252,7 @@ static int rxe_dealloc_pd(struct ib_pd *ibpd, struct ib_udata *udata)
 
 	err = rxe_cleanup(pd);
 	if (err)
-		rxe_err_pd(pd, "cleanup failed, err = %d", err);
+		rxe_err_pd(pd, "cleanup failed, err = %d\n", err);
 
 	return 0;
 }
@@ -279,7 +279,7 @@ static int rxe_create_ah(struct ib_ah *ibah,
 	err = rxe_add_to_pool_ah(&rxe->ah_pool, ah,
 			init_attr->flags & RDMA_CREATE_AH_SLEEPABLE);
 	if (err) {
-		rxe_dbg_dev(rxe, "unable to create ah");
+		rxe_dbg_dev(rxe, "unable to create ah\n");
 		goto err_out;
 	}
 
@@ -288,7 +288,7 @@ static int rxe_create_ah(struct ib_ah *ibah,
 
 	err = rxe_ah_chk_attr(ah, init_attr->ah_attr);
 	if (err) {
-		rxe_dbg_ah(ah, "bad attr");
+		rxe_dbg_ah(ah, "bad attr\n");
 		goto err_cleanup;
 	}
 
@@ -298,7 +298,7 @@ static int rxe_create_ah(struct ib_ah *ibah,
 					 sizeof(uresp->ah_num));
 		if (err) {
 			err = -EFAULT;
-			rxe_dbg_ah(ah, "unable to copy to user");
+			rxe_dbg_ah(ah, "unable to copy to user\n");
 			goto err_cleanup;
 		}
 	} else if (ah->is_user) {
@@ -314,9 +314,9 @@ static int rxe_create_ah(struct ib_ah *ibah,
 err_cleanup:
 	cleanup_err = rxe_cleanup(ah);
 	if (cleanup_err)
-		rxe_err_ah(ah, "cleanup failed, err = %d", cleanup_err);
+		rxe_err_ah(ah, "cleanup failed, err = %d\n", cleanup_err);
 err_out:
-	rxe_err_ah(ah, "returned err = %d", err);
+	rxe_err_ah(ah, "returned err = %d\n", err);
 	return err;
 }
 
@@ -327,7 +327,7 @@ static int rxe_modify_ah(struct ib_ah *ibah, struct rdma_ah_attr *attr)
 
 	err = rxe_ah_chk_attr(ah, attr);
 	if (err) {
-		rxe_dbg_ah(ah, "bad attr");
+		rxe_dbg_ah(ah, "bad attr\n");
 		goto err_out;
 	}
 
@@ -336,7 +336,7 @@ static int rxe_modify_ah(struct ib_ah *ibah, struct rdma_ah_attr *attr)
 	return 0;
 
 err_out:
-	rxe_err_ah(ah, "returned err = %d", err);
+	rxe_err_ah(ah, "returned err = %d\n", err);
 	return err;
 }
 
@@ -358,7 +358,7 @@ static int rxe_destroy_ah(struct ib_ah *ibah, u32 flags)
 
 	err = rxe_cleanup_ah(ah, flags & RDMA_DESTROY_AH_SLEEPABLE);
 	if (err)
-		rxe_err_ah(ah, "cleanup failed, err = %d", err);
+		rxe_err_ah(ah, "cleanup failed, err = %d\n", err);
 
 	return 0;
 }
@@ -376,7 +376,7 @@ static int rxe_create_srq(struct ib_srq *ibsrq, struct ib_srq_init_attr *init,
 	if (udata) {
 		if (udata->outlen < sizeof(*uresp)) {
 			err = -EINVAL;
-			rxe_err_dev(rxe, "malformed udata");
+			rxe_err_dev(rxe, "malformed udata\n");
 			goto err_out;
 		}
 		uresp = udata->outbuf;
@@ -384,20 +384,20 @@ static int rxe_create_srq(struct ib_srq *ibsrq, struct ib_srq_init_attr *init,
 
 	if (init->srq_type != IB_SRQT_BASIC) {
 		err = -EOPNOTSUPP;
-		rxe_dbg_dev(rxe, "srq type = %d, not supported",
+		rxe_dbg_dev(rxe, "srq type = %d, not supported\n",
 				init->srq_type);
 		goto err_out;
 	}
 
 	err = rxe_srq_chk_init(rxe, init);
 	if (err) {
-		rxe_dbg_dev(rxe, "invalid init attributes");
+		rxe_dbg_dev(rxe, "invalid init attributes\n");
 		goto err_out;
 	}
 
 	err = rxe_add_to_pool(&rxe->srq_pool, srq);
 	if (err) {
-		rxe_dbg_dev(rxe, "unable to create srq, err = %d", err);
+		rxe_dbg_dev(rxe, "unable to create srq, err = %d\n", err);
 		goto err_out;
 	}
 
@@ -406,7 +406,7 @@ static int rxe_create_srq(struct ib_srq *ibsrq, struct ib_srq_init_attr *init,
 
 	err = rxe_srq_from_init(rxe, srq, init, udata, uresp);
 	if (err) {
-		rxe_dbg_srq(srq, "create srq failed, err = %d", err);
+		rxe_dbg_srq(srq, "create srq failed, err = %d\n", err);
 		goto err_cleanup;
 	}
 
@@ -415,9 +415,9 @@ static int rxe_create_srq(struct ib_srq *ibsrq, struct ib_srq_init_attr *init,
 err_cleanup:
 	cleanup_err = rxe_cleanup(srq);
 	if (cleanup_err)
-		rxe_err_srq(srq, "cleanup failed, err = %d", cleanup_err);
+		rxe_err_srq(srq, "cleanup failed, err = %d\n", cleanup_err);
 err_out:
-	rxe_err_dev(rxe, "returned err = %d", err);
+	rxe_err_dev(rxe, "returned err = %d\n", err);
 	return err;
 }
 
@@ -433,34 +433,34 @@ static int rxe_modify_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr,
 	if (udata) {
 		if (udata->inlen < sizeof(cmd)) {
 			err = -EINVAL;
-			rxe_dbg_srq(srq, "malformed udata");
+			rxe_dbg_srq(srq, "malformed udata\n");
 			goto err_out;
 		}
 
 		err = ib_copy_from_udata(&cmd, udata, sizeof(cmd));
 		if (err) {
 			err = -EFAULT;
-			rxe_dbg_srq(srq, "unable to read udata");
+			rxe_dbg_srq(srq, "unable to read udata\n");
 			goto err_out;
 		}
 	}
 
 	err = rxe_srq_chk_attr(rxe, srq, attr, mask);
 	if (err) {
-		rxe_dbg_srq(srq, "bad init attributes");
+		rxe_dbg_srq(srq, "bad init attributes\n");
 		goto err_out;
 	}
 
 	err = rxe_srq_from_attr(rxe, srq, attr, mask, &cmd, udata);
 	if (err) {
-		rxe_dbg_srq(srq, "bad attr");
+		rxe_dbg_srq(srq, "bad attr\n");
 		goto err_out;
 	}
 
 	return 0;
 
 err_out:
-	rxe_err_srq(srq, "returned err = %d", err);
+	rxe_err_srq(srq, "returned err = %d\n", err);
 	return err;
 }
 
@@ -471,7 +471,7 @@ static int rxe_query_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr)
 
 	if (srq->error) {
 		err = -EINVAL;
-		rxe_dbg_srq(srq, "srq in error state");
+		rxe_dbg_srq(srq, "srq in error state\n");
 		goto err_out;
 	}
 
@@ -481,7 +481,7 @@ static int rxe_query_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr)
 	return 0;
 
 err_out:
-	rxe_err_srq(srq, "returned err = %d", err);
+	rxe_err_srq(srq, "returned err = %d\n", err);
 	return err;
 }
 
@@ -505,7 +505,7 @@ static int rxe_post_srq_recv(struct ib_srq *ibsrq, const struct ib_recv_wr *wr,
 
 	if (err) {
 		*bad_wr = wr;
-		rxe_err_srq(srq, "returned err = %d", err);
+		rxe_err_srq(srq, "returned err = %d\n", err);
 	}
 
 	return err;
@@ -518,7 +518,7 @@ static int rxe_destroy_srq(struct ib_srq *ibsrq, struct ib_udata *udata)
 
 	err = rxe_cleanup(srq);
 	if (err)
-		rxe_err_srq(srq, "cleanup failed, err = %d", err);
+		rxe_err_srq(srq, "cleanup failed, err = %d\n", err);
 
 	return 0;
 }
@@ -536,13 +536,13 @@ static int rxe_create_qp(struct ib_qp *ibqp, struct ib_qp_init_attr *init,
 	if (udata) {
 		if (udata->inlen) {
 			err = -EINVAL;
-			rxe_dbg_dev(rxe, "malformed udata, err = %d", err);
+			rxe_dbg_dev(rxe, "malformed udata, err = %d\n", err);
 			goto err_out;
 		}
 
 		if (udata->outlen < sizeof(*uresp)) {
 			err = -EINVAL;
-			rxe_dbg_dev(rxe, "malformed udata, err = %d", err);
+			rxe_dbg_dev(rxe, "malformed udata, err = %d\n", err);
 			goto err_out;
 		}
 
@@ -554,25 +554,25 @@ static int rxe_create_qp(struct ib_qp *ibqp, struct ib_qp_init_attr *init,
 
 	if (init->create_flags) {
 		err = -EOPNOTSUPP;
-		rxe_dbg_dev(rxe, "unsupported create_flags, err = %d", err);
+		rxe_dbg_dev(rxe, "unsupported create_flags, err = %d\n", err);
 		goto err_out;
 	}
 
 	err = rxe_qp_chk_init(rxe, init);
 	if (err) {
-		rxe_dbg_dev(rxe, "bad init attr, err = %d", err);
+		rxe_dbg_dev(rxe, "bad init attr, err = %d\n", err);
 		goto err_out;
 	}
 
 	err = rxe_add_to_pool(&rxe->qp_pool, qp);
 	if (err) {
-		rxe_dbg_dev(rxe, "unable to create qp, err = %d", err);
+		rxe_dbg_dev(rxe, "unable to create qp, err = %d\n", err);
 		goto err_out;
 	}
 
 	err = rxe_qp_from_init(rxe, qp, pd, init, uresp, ibqp->pd, udata);
 	if (err) {
-		rxe_dbg_qp(qp, "create qp failed, err = %d", err);
+		rxe_dbg_qp(qp, "create qp failed, err = %d\n", err);
 		goto err_cleanup;
 	}
 
@@ -582,9 +582,9 @@ static int rxe_create_qp(struct ib_qp *ibqp, struct ib_qp_init_attr *init,
 err_cleanup:
 	cleanup_err = rxe_cleanup(qp);
 	if (cleanup_err)
-		rxe_err_qp(qp, "cleanup failed, err = %d", cleanup_err);
+		rxe_err_qp(qp, "cleanup failed, err = %d\n", cleanup_err);
 err_out:
-	rxe_err_dev(rxe, "returned err = %d", err);
+	rxe_err_dev(rxe, "returned err = %d\n", err);
 	return err;
 }
 
@@ -597,20 +597,20 @@ static int rxe_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
 
 	if (mask & ~IB_QP_ATTR_STANDARD_BITS) {
 		err = -EOPNOTSUPP;
-		rxe_dbg_qp(qp, "unsupported mask = 0x%x, err = %d",
+		rxe_dbg_qp(qp, "unsupported mask = 0x%x, err = %d\n",
 			   mask, err);
 		goto err_out;
 	}
 
 	err = rxe_qp_chk_attr(rxe, qp, attr, mask);
 	if (err) {
-		rxe_dbg_qp(qp, "bad mask/attr, err = %d", err);
+		rxe_dbg_qp(qp, "bad mask/attr, err = %d\n", err);
 		goto err_out;
 	}
 
 	err = rxe_qp_from_attr(qp, attr, mask, udata);
 	if (err) {
-		rxe_dbg_qp(qp, "modify qp failed, err = %d", err);
+		rxe_dbg_qp(qp, "modify qp failed, err = %d\n", err);
 		goto err_out;
 	}
 
@@ -622,7 +622,7 @@ static int rxe_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
 	return 0;
 
 err_out:
-	rxe_err_qp(qp, "returned err = %d", err);
+	rxe_err_qp(qp, "returned err = %d\n", err);
 	return err;
 }
 
@@ -644,18 +644,18 @@ static int rxe_destroy_qp(struct ib_qp *ibqp, struct ib_udata *udata)
 
 	err = rxe_qp_chk_destroy(qp);
 	if (err) {
-		rxe_dbg_qp(qp, "unable to destroy qp, err = %d", err);
+		rxe_dbg_qp(qp, "unable to destroy qp, err = %d\n", err);
 		goto err_out;
 	}
 
 	err = rxe_cleanup(qp);
 	if (err)
-		rxe_err_qp(qp, "cleanup failed, err = %d", err);
+		rxe_err_qp(qp, "cleanup failed, err = %d\n", err);
 
 	return 0;
 
 err_out:
-	rxe_err_qp(qp, "returned err = %d", err);
+	rxe_err_qp(qp, "returned err = %d\n", err);
 	return err;
 }
 
@@ -675,12 +675,12 @@ static int validate_send_wr(struct rxe_qp *qp, const struct ib_send_wr *ibwr,
 	do {
 		mask = wr_opcode_mask(ibwr->opcode, qp);
 		if (!mask) {
-			rxe_err_qp(qp, "bad wr opcode for qp type");
+			rxe_err_qp(qp, "bad wr opcode for qp type\n");
 			break;
 		}
 
 		if (num_sge > sq->max_sge) {
-			rxe_err_qp(qp, "num_sge > max_sge");
+			rxe_err_qp(qp, "num_sge > max_sge\n");
 			break;
 		}
 
@@ -689,27 +689,27 @@ static int validate_send_wr(struct rxe_qp *qp, const struct ib_send_wr *ibwr,
 			length += ibwr->sg_list[i].length;
 
 		if (length > (1UL << 31)) {
-			rxe_err_qp(qp, "message length too long");
+			rxe_err_qp(qp, "message length too long\n");
 			break;
 		}
 
 		if (mask & WR_ATOMIC_MASK) {
 			if (length != 8) {
-				rxe_err_qp(qp, "atomic length != 8");
+				rxe_err_qp(qp, "atomic length != 8\n");
 				break;
 			}
 			if (atomic_wr(ibwr)->remote_addr & 0x7) {
-				rxe_err_qp(qp, "misaligned atomic address");
+				rxe_err_qp(qp, "misaligned atomic address\n");
 				break;
 			}
 		}
 		if (ibwr->send_flags & IB_SEND_INLINE) {
 			if (!(mask & WR_INLINE_MASK)) {
-				rxe_err_qp(qp, "opcode doesn't support inline data");
+				rxe_err_qp(qp, "opcode doesn't support inline data\n");
 				break;
 			}
 			if (length > sq->max_inline) {
-				rxe_err_qp(qp, "inline length too big");
+				rxe_err_qp(qp, "inline length too big\n");
 				break;
 			}
 		}
@@ -747,7 +747,7 @@ static int init_send_wr(struct rxe_qp *qp, struct rxe_send_wr *wr,
 		case IB_WR_SEND:
 			break;
 		default:
-			rxe_err_qp(qp, "bad wr opcode %d for UD/GSI QP",
+			rxe_err_qp(qp, "bad wr opcode %d for UD/GSI QP\n",
 					wr->opcode);
 			return -EINVAL;
 		}
@@ -795,7 +795,7 @@ static int init_send_wr(struct rxe_qp *qp, struct rxe_send_wr *wr,
 		case IB_WR_ATOMIC_WRITE:
 			break;
 		default:
-			rxe_err_qp(qp, "unsupported wr opcode %d",
+			rxe_err_qp(qp, "unsupported wr opcode %d\n",
 					wr->opcode);
 			return -EINVAL;
 		}
@@ -870,7 +870,7 @@ static int post_one_send(struct rxe_qp *qp, const struct ib_send_wr *ibwr)
 
 	full = queue_full(sq->queue, QUEUE_TYPE_FROM_ULP);
 	if (unlikely(full)) {
-		rxe_err_qp(qp, "send queue full");
+		rxe_err_qp(qp, "send queue full\n");
 		return -ENOMEM;
 	}
 
@@ -922,14 +922,14 @@ static int rxe_post_send(struct ib_qp *ibqp, const struct ib_send_wr *wr,
 	/* caller has already called destroy_qp */
 	if (WARN_ON_ONCE(!qp->valid)) {
 		spin_unlock_irqrestore(&qp->state_lock, flags);
-		rxe_err_qp(qp, "qp has been destroyed");
+		rxe_err_qp(qp, "qp has been destroyed\n");
 		return -EINVAL;
 	}
 
 	if (unlikely(qp_state(qp) < IB_QPS_RTS)) {
 		spin_unlock_irqrestore(&qp->state_lock, flags);
 		*bad_wr = wr;
-		rxe_err_qp(qp, "qp not ready to send");
+		rxe_err_qp(qp, "qp not ready to send\n");
 		return -EINVAL;
 	}
 	spin_unlock_irqrestore(&qp->state_lock, flags);
@@ -959,13 +959,13 @@ static int post_one_recv(struct rxe_rq *rq, const struct ib_recv_wr *ibwr)
 	full = queue_full(rq->queue, QUEUE_TYPE_FROM_ULP);
 	if (unlikely(full)) {
 		err = -ENOMEM;
-		rxe_dbg("queue full");
+		rxe_dbg("queue full\n");
 		goto err_out;
 	}
 
 	if (unlikely(num_sge > rq->max_sge)) {
 		err = -EINVAL;
-		rxe_dbg("bad num_sge > max_sge");
+		rxe_dbg("bad num_sge > max_sge\n");
 		goto err_out;
 	}
 
@@ -976,7 +976,7 @@ static int post_one_recv(struct rxe_rq *rq, const struct ib_recv_wr *ibwr)
 	/* IBA max message size is 2^31 */
 	if (length >= (1UL<<31)) {
 		err = -EINVAL;
-		rxe_dbg("message length too long");
+		rxe_dbg("message length too long\n");
 		goto err_out;
 	}
 
@@ -996,7 +996,7 @@ static int post_one_recv(struct rxe_rq *rq, const struct ib_recv_wr *ibwr)
 	return 0;
 
 err_out:
-	rxe_dbg("returned err = %d", err);
+	rxe_dbg("returned err = %d\n", err);
 	return err;
 }
 
@@ -1012,7 +1012,7 @@ static int rxe_post_recv(struct ib_qp *ibqp, const struct ib_recv_wr *wr,
 	/* caller has already called destroy_qp */
 	if (WARN_ON_ONCE(!qp->valid)) {
 		spin_unlock_irqrestore(&qp->state_lock, flags);
-		rxe_err_qp(qp, "qp has been destroyed");
+		rxe_err_qp(qp, "qp has been destroyed\n");
 		return -EINVAL;
 	}
 
@@ -1020,14 +1020,14 @@ static int rxe_post_recv(struct ib_qp *ibqp, const struct ib_recv_wr *wr,
 	if (unlikely((qp_state(qp) < IB_QPS_INIT))) {
 		spin_unlock_irqrestore(&qp->state_lock, flags);
 		*bad_wr = wr;
-		rxe_dbg_qp(qp, "qp not ready to post recv");
+		rxe_dbg_qp(qp, "qp not ready to post recv\n");
 		return -EINVAL;
 	}
 	spin_unlock_irqrestore(&qp->state_lock, flags);
 
 	if (unlikely(qp->srq)) {
 		*bad_wr = wr;
-		rxe_dbg_qp(qp, "qp has srq, use post_srq_recv instead");
+		rxe_dbg_qp(qp, "qp has srq, use post_srq_recv instead\n");
 		return -EINVAL;
 	}
 
@@ -1065,7 +1065,7 @@ static int rxe_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr,
 	if (udata) {
 		if (udata->outlen < sizeof(*uresp)) {
 			err = -EINVAL;
-			rxe_dbg_dev(rxe, "malformed udata, err = %d", err);
+			rxe_dbg_dev(rxe, "malformed udata, err = %d\n", err);
 			goto err_out;
 		}
 		uresp = udata->outbuf;
@@ -1073,26 +1073,26 @@ static int rxe_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr,
 
 	if (attr->flags) {
 		err = -EOPNOTSUPP;
-		rxe_dbg_dev(rxe, "bad attr->flags, err = %d", err);
+		rxe_dbg_dev(rxe, "bad attr->flags, err = %d\n", err);
 		goto err_out;
 	}
 
 	err = rxe_cq_chk_attr(rxe, NULL, attr->cqe, attr->comp_vector);
 	if (err) {
-		rxe_dbg_dev(rxe, "bad init attributes, err = %d", err);
+		rxe_dbg_dev(rxe, "bad init attributes, err = %d\n", err);
 		goto err_out;
 	}
 
 	err = rxe_add_to_pool(&rxe->cq_pool, cq);
 	if (err) {
-		rxe_dbg_dev(rxe, "unable to create cq, err = %d", err);
+		rxe_dbg_dev(rxe, "unable to create cq, err = %d\n", err);
 		goto err_out;
 	}
 
 	err = rxe_cq_from_init(rxe, cq, attr->cqe, attr->comp_vector, udata,
 			       uresp);
 	if (err) {
-		rxe_dbg_cq(cq, "create cq failed, err = %d", err);
+		rxe_dbg_cq(cq, "create cq failed, err = %d\n", err);
 		goto err_cleanup;
 	}
 
@@ -1101,9 +1101,9 @@ static int rxe_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr,
 err_cleanup:
 	cleanup_err = rxe_cleanup(cq);
 	if (cleanup_err)
-		rxe_err_cq(cq, "cleanup failed, err = %d", cleanup_err);
+		rxe_err_cq(cq, "cleanup failed, err = %d\n", cleanup_err);
 err_out:
-	rxe_err_dev(rxe, "returned err = %d", err);
+	rxe_err_dev(rxe, "returned err = %d\n", err);
 	return err;
 }
 
@@ -1117,7 +1117,7 @@ static int rxe_resize_cq(struct ib_cq *ibcq, int cqe, struct ib_udata *udata)
 	if (udata) {
 		if (udata->outlen < sizeof(*uresp)) {
 			err = -EINVAL;
-			rxe_dbg_cq(cq, "malformed udata");
+			rxe_dbg_cq(cq, "malformed udata\n");
 			goto err_out;
 		}
 		uresp = udata->outbuf;
@@ -1125,20 +1125,20 @@ static int rxe_resize_cq(struct ib_cq *ibcq, int cqe, struct ib_udata *udata)
 
 	err = rxe_cq_chk_attr(rxe, cq, cqe, 0);
 	if (err) {
-		rxe_dbg_cq(cq, "bad attr, err = %d", err);
+		rxe_dbg_cq(cq, "bad attr, err = %d\n", err);
 		goto err_out;
 	}
 
 	err = rxe_cq_resize_queue(cq, cqe, uresp, udata);
 	if (err) {
-		rxe_dbg_cq(cq, "resize cq failed, err = %d", err);
+		rxe_dbg_cq(cq, "resize cq failed, err = %d\n", err);
 		goto err_out;
 	}
 
 	return 0;
 
 err_out:
-	rxe_err_cq(cq, "returned err = %d", err);
+	rxe_err_cq(cq, "returned err = %d\n", err);
 	return err;
 }
 
@@ -1202,18 +1202,18 @@ static int rxe_destroy_cq(struct ib_cq *ibcq, struct ib_udata *udata)
 	 */
 	if (atomic_read(&cq->num_wq)) {
 		err = -EINVAL;
-		rxe_dbg_cq(cq, "still in use");
+		rxe_dbg_cq(cq, "still in use\n");
 		goto err_out;
 	}
 
 	err = rxe_cleanup(cq);
 	if (err)
-		rxe_err_cq(cq, "cleanup failed, err = %d", err);
+		rxe_err_cq(cq, "cleanup failed, err = %d\n", err);
 
 	return 0;
 
 err_out:
-	rxe_err_cq(cq, "returned err = %d", err);
+	rxe_err_cq(cq, "returned err = %d\n", err);
 	return err;
 }
 
@@ -1231,7 +1231,7 @@ static struct ib_mr *rxe_get_dma_mr(struct ib_pd *ibpd, int access)
 
 	err = rxe_add_to_pool(&rxe->mr_pool, mr);
 	if (err) {
-		rxe_dbg_dev(rxe, "unable to create mr");
+		rxe_dbg_dev(rxe, "unable to create mr\n");
 		goto err_free;
 	}
 
@@ -1245,7 +1245,7 @@ static struct ib_mr *rxe_get_dma_mr(struct ib_pd *ibpd, int access)
 
 err_free:
 	kfree(mr);
-	rxe_err_pd(pd, "returned err = %d", err);
+	rxe_err_pd(pd, "returned err = %d\n", err);
 	return ERR_PTR(err);
 }
 
@@ -1259,7 +1259,7 @@ static struct ib_mr *rxe_reg_user_mr(struct ib_pd *ibpd, u64 start,
 	int err, cleanup_err;
 
 	if (access & ~RXE_ACCESS_SUPPORTED_MR) {
-		rxe_err_pd(pd, "access = %#x not supported (%#x)", access,
+		rxe_err_pd(pd, "access = %#x not supported (%#x)\n", access,
 				RXE_ACCESS_SUPPORTED_MR);
 		return ERR_PTR(-EOPNOTSUPP);
 	}
@@ -1270,7 +1270,7 @@ static struct ib_mr *rxe_reg_user_mr(struct ib_pd *ibpd, u64 start,
 
 	err = rxe_add_to_pool(&rxe->mr_pool, mr);
 	if (err) {
-		rxe_dbg_pd(pd, "unable to create mr");
+		rxe_dbg_pd(pd, "unable to create mr\n");
 		goto err_free;
 	}
 
@@ -1280,7 +1280,7 @@ static struct ib_mr *rxe_reg_user_mr(struct ib_pd *ibpd, u64 start,
 
 	err = rxe_mr_init_user(rxe, start, length, iova, access, mr);
 	if (err) {
-		rxe_dbg_mr(mr, "reg_user_mr failed, err = %d", err);
+		rxe_dbg_mr(mr, "reg_user_mr failed, err = %d\n", err);
 		goto err_cleanup;
 	}
 
@@ -1290,10 +1290,10 @@ static struct ib_mr *rxe_reg_user_mr(struct ib_pd *ibpd, u64 start,
 err_cleanup:
 	cleanup_err = rxe_cleanup(mr);
 	if (cleanup_err)
-		rxe_err_mr(mr, "cleanup failed, err = %d", cleanup_err);
+		rxe_err_mr(mr, "cleanup failed, err = %d\n", cleanup_err);
 err_free:
 	kfree(mr);
-	rxe_err_pd(pd, "returned err = %d", err);
+	rxe_err_pd(pd, "returned err = %d\n", err);
 	return ERR_PTR(err);
 }
 
@@ -1310,7 +1310,7 @@ static struct ib_mr *rxe_rereg_user_mr(struct ib_mr *ibmr, int flags,
 	 * rereg_pd and rereg_access
 	 */
 	if (flags & ~RXE_MR_REREG_SUPPORTED) {
-		rxe_err_mr(mr, "flags = %#x not supported", flags);
+		rxe_err_mr(mr, "flags = %#x not supported\n", flags);
 		return ERR_PTR(-EOPNOTSUPP);
 	}
 
@@ -1322,7 +1322,7 @@ static struct ib_mr *rxe_rereg_user_mr(struct ib_mr *ibmr, int flags,
 
 	if (flags & IB_MR_REREG_ACCESS) {
 		if (access & ~RXE_ACCESS_SUPPORTED_MR) {
-			rxe_err_mr(mr, "access = %#x not supported", access);
+			rxe_err_mr(mr, "access = %#x not supported\n", access);
 			return ERR_PTR(-EOPNOTSUPP);
 		}
 		mr->access = access;
@@ -1341,7 +1341,7 @@ static struct ib_mr *rxe_alloc_mr(struct ib_pd *ibpd, enum ib_mr_type mr_type,
 
 	if (mr_type != IB_MR_TYPE_MEM_REG) {
 		err = -EINVAL;
-		rxe_dbg_pd(pd, "mr type %d not supported, err = %d",
+		rxe_dbg_pd(pd, "mr type %d not supported, err = %d\n",
 			   mr_type, err);
 		goto err_out;
 	}
@@ -1360,7 +1360,7 @@ static struct ib_mr *rxe_alloc_mr(struct ib_pd *ibpd, enum ib_mr_type mr_type,
 
 	err = rxe_mr_init_fast(max_num_sg, mr);
 	if (err) {
-		rxe_dbg_mr(mr, "alloc_mr failed, err = %d", err);
+		rxe_dbg_mr(mr, "alloc_mr failed, err = %d\n", err);
 		goto err_cleanup;
 	}
 
@@ -1370,11 +1370,11 @@ static struct ib_mr *rxe_alloc_mr(struct ib_pd *ibpd, enum ib_mr_type mr_type,
 err_cleanup:
 	cleanup_err = rxe_cleanup(mr);
 	if (cleanup_err)
-		rxe_err_mr(mr, "cleanup failed, err = %d", err);
+		rxe_err_mr(mr, "cleanup failed, err = %d\n", err);
 err_free:
 	kfree(mr);
 err_out:
-	rxe_err_pd(pd, "returned err = %d", err);
+	rxe_err_pd(pd, "returned err = %d\n", err);
 	return ERR_PTR(err);
 }
 
@@ -1386,19 +1386,19 @@ static int rxe_dereg_mr(struct ib_mr *ibmr, struct ib_udata *udata)
 	/* See IBA 10.6.7.2.6 */
 	if (atomic_read(&mr->num_mw) > 0) {
 		err = -EINVAL;
-		rxe_dbg_mr(mr, "mr has mw's bound");
+		rxe_dbg_mr(mr, "mr has mw's bound\n");
 		goto err_out;
 	}
 
 	cleanup_err = rxe_cleanup(mr);
 	if (cleanup_err)
-		rxe_err_mr(mr, "cleanup failed, err = %d", cleanup_err);
+		rxe_err_mr(mr, "cleanup failed, err = %d\n", cleanup_err);
 
 	kfree_rcu_mightsleep(mr);
 	return 0;
 
 err_out:
-	rxe_err_mr(mr, "returned err = %d", err);
+	rxe_err_mr(mr, "returned err = %d\n", err);
 	return err;
 }
 
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH for-next v3 2/2] RDMA/rxe: Call rxe_set_mtu after rxe_register_device
  2023-09-18  2:05 [PATCH for-next v3 1/2] RDMA/rxe: Improve newline in printing messages Li Zhijian
@ 2023-09-18  2:05 ` Li Zhijian
  2023-09-18 12:37   ` Leon Romanovsky
  2023-09-18  7:26 ` [PATCH for-next v3 1/2] RDMA/rxe: Improve newline in printing messages Zhu Yanjun
  1 sibling, 1 reply; 10+ messages in thread
From: Li Zhijian @ 2023-09-18  2:05 UTC (permalink / raw)
  To: linux-rdma
  Cc: zyjzyj2000, jgg, leon, linux-kernel, rpearsonhpe, Li Zhijian,
	Daisuke Matsuda, Zhu Yanjun

rxe_set_mtu() will call rxe_info_dev() to print message, and
rxe_info_dev() expects dev_name(rxe->ib_dev->dev) has been assigned.

Previously since dev_name() is not set, when a new rxe link is being
added, 'null' will be used as the dev_name like:

"(null): rxe_set_mtu: Set mtu to 1024"

Move rxe_register_device() earlier to assign the correct dev_name
so that it can be read by rxe_set_mtu() later.

And it's safe to do such change since mtu will not be used during the
rxe_register_device()

After this change, the message becomes:
"rxe_eth0: rxe_set_mtu: Set mtu to 4096"

Fixes: 9ac01f434a1e ("RDMA/rxe: Extend dbg log messages to err and info")
Reviewed-by: Daisuke Matsuda <matsuda-daisuke@fujitsu.com>
Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
---
 drivers/infiniband/sw/rxe/rxe.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/infiniband/sw/rxe/rxe.c b/drivers/infiniband/sw/rxe/rxe.c
index a086d588e159..8a43c0c4f8d8 100644
--- a/drivers/infiniband/sw/rxe/rxe.c
+++ b/drivers/infiniband/sw/rxe/rxe.c
@@ -169,10 +169,13 @@ void rxe_set_mtu(struct rxe_dev *rxe, unsigned int ndev_mtu)
  */
 int rxe_add(struct rxe_dev *rxe, unsigned int mtu, const char *ibdev_name)
 {
+	int ret;
+
 	rxe_init(rxe);
+	ret = rxe_register_device(rxe, ibdev_name);
 	rxe_set_mtu(rxe, mtu);
 
-	return rxe_register_device(rxe, ibdev_name);
+	return ret;
 }
 
 static int rxe_newlink(const char *ibdev_name, struct net_device *ndev)
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH for-next v3 1/2] RDMA/rxe: Improve newline in printing messages
  2023-09-18  2:05 [PATCH for-next v3 1/2] RDMA/rxe: Improve newline in printing messages Li Zhijian
  2023-09-18  2:05 ` [PATCH for-next v3 2/2] RDMA/rxe: Call rxe_set_mtu after rxe_register_device Li Zhijian
@ 2023-09-18  7:26 ` Zhu Yanjun
  1 sibling, 0 replies; 10+ messages in thread
From: Zhu Yanjun @ 2023-09-18  7:26 UTC (permalink / raw)
  To: Li Zhijian
  Cc: linux-rdma, jgg, leon, linux-kernel, rpearsonhpe, Daisuke Matsuda

On Mon, Sep 18, 2023 at 10:06 AM Li Zhijian <lizhijian@fujitsu.com> wrote:
>
> Previously rxe_{dbg,info,err}() macros are appended built-in newline,
> but some users will add redundant newline sometimes. So remove the
> built-in newline for these macros.
>
> In terms of rxe_{dbg,info,err}_xxx() macros, because they don't have
> built-in newline, append newline when using them.

The newline is moved from rxe_{dbg,info,err}() macros to every
rxe_{dbg,info,err}() instance.
I am fine with it.

Acked-by: Zhu Yanjun <zyjzyj2000@gmail.com>

Thanks,

Zhu Yanjun

>
> CC: Daisuke Matsuda <matsuda-daisuke@fujitsu.com>
> Reviewed-by: Daisuke Matsuda <matsuda-daisuke@fujitsu.com>
> Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
> ---
>  I have used below script to verify if all of them are cleanup:
>  git grep -n -E "rxe_info.*\"|rxe_err.*\"|rxe_dbg.*\"" drivers/infiniband/sw/rxe/ | grep -v '\\n'
>
> V3: rebase to rdma/for-next
> ---
>  drivers/infiniband/sw/rxe/rxe.c       |   6 +-
>  drivers/infiniband/sw/rxe/rxe.h       |   6 +-
>  drivers/infiniband/sw/rxe/rxe_comp.c  |   4 +-
>  drivers/infiniband/sw/rxe/rxe_cq.c    |   4 +-
>  drivers/infiniband/sw/rxe/rxe_mr.c    |  16 +-
>  drivers/infiniband/sw/rxe/rxe_mw.c    |   2 +-
>  drivers/infiniband/sw/rxe/rxe_qp.c    |   8 +-
>  drivers/infiniband/sw/rxe/rxe_resp.c  |  12 +-
>  drivers/infiniband/sw/rxe/rxe_task.c  |   4 +-
>  drivers/infiniband/sw/rxe/rxe_verbs.c | 216 +++++++++++++-------------
>  10 files changed, 139 insertions(+), 139 deletions(-)
>
> diff --git a/drivers/infiniband/sw/rxe/rxe.c b/drivers/infiniband/sw/rxe/rxe.c
> index 54c723a6edda..a086d588e159 100644
> --- a/drivers/infiniband/sw/rxe/rxe.c
> +++ b/drivers/infiniband/sw/rxe/rxe.c
> @@ -161,7 +161,7 @@ void rxe_set_mtu(struct rxe_dev *rxe, unsigned int ndev_mtu)
>         port->attr.active_mtu = mtu;
>         port->mtu_cap = ib_mtu_enum_to_int(mtu);
>
> -       rxe_info_dev(rxe, "Set mtu to %d", port->mtu_cap);
> +       rxe_info_dev(rxe, "Set mtu to %d\n", port->mtu_cap);
>  }
>
>  /* called by ifc layer to create new rxe device.
> @@ -181,7 +181,7 @@ static int rxe_newlink(const char *ibdev_name, struct net_device *ndev)
>         int err = 0;
>
>         if (is_vlan_dev(ndev)) {
> -               rxe_err("rxe creation allowed on top of a real device only");
> +               rxe_err("rxe creation allowed on top of a real device only\n");
>                 err = -EPERM;
>                 goto err;
>         }
> @@ -189,7 +189,7 @@ static int rxe_newlink(const char *ibdev_name, struct net_device *ndev)
>         rxe = rxe_get_dev_from_net(ndev);
>         if (rxe) {
>                 ib_device_put(&rxe->ib_dev);
> -               rxe_err_dev(rxe, "already configured on %s", ndev->name);
> +               rxe_err_dev(rxe, "already configured on %s\n", ndev->name);
>                 err = -EEXIST;
>                 goto err;
>         }
> diff --git a/drivers/infiniband/sw/rxe/rxe.h b/drivers/infiniband/sw/rxe/rxe.h
> index d33dd6cf83d3..d8fb2c7af30a 100644
> --- a/drivers/infiniband/sw/rxe/rxe.h
> +++ b/drivers/infiniband/sw/rxe/rxe.h
> @@ -38,7 +38,7 @@
>
>  #define RXE_ROCE_V2_SPORT              (0xc000)
>
> -#define rxe_dbg(fmt, ...) pr_debug("%s: " fmt "\n", __func__, ##__VA_ARGS__)
> +#define rxe_dbg(fmt, ...) pr_debug("%s: " fmt, __func__, ##__VA_ARGS__)
>  #define rxe_dbg_dev(rxe, fmt, ...) ibdev_dbg(&(rxe)->ib_dev,           \
>                 "%s: " fmt, __func__, ##__VA_ARGS__)
>  #define rxe_dbg_uc(uc, fmt, ...) ibdev_dbg((uc)->ibuc.device,          \
> @@ -58,7 +58,7 @@
>  #define rxe_dbg_mw(mw, fmt, ...) ibdev_dbg((mw)->ibmw.device,          \
>                 "mw#%d %s:  " fmt, (mw)->elem.index, __func__, ##__VA_ARGS__)
>
> -#define rxe_err(fmt, ...) pr_err_ratelimited("%s: " fmt "\n", __func__, \
> +#define rxe_err(fmt, ...) pr_err_ratelimited("%s: " fmt, __func__, \
>                                         ##__VA_ARGS__)
>  #define rxe_err_dev(rxe, fmt, ...) ibdev_err_ratelimited(&(rxe)->ib_dev, \
>                 "%s: " fmt, __func__, ##__VA_ARGS__)
> @@ -79,7 +79,7 @@
>  #define rxe_err_mw(mw, fmt, ...) ibdev_err_ratelimited((mw)->ibmw.device, \
>                 "mw#%d %s:  " fmt, (mw)->elem.index, __func__, ##__VA_ARGS__)
>
> -#define rxe_info(fmt, ...) pr_info_ratelimited("%s: " fmt "\n", __func__, \
> +#define rxe_info(fmt, ...) pr_info_ratelimited("%s: " fmt, __func__, \
>                                         ##__VA_ARGS__)
>  #define rxe_info_dev(rxe, fmt, ...) ibdev_info_ratelimited(&(rxe)->ib_dev, \
>                 "%s: " fmt, __func__, ##__VA_ARGS__)
> diff --git a/drivers/infiniband/sw/rxe/rxe_comp.c b/drivers/infiniband/sw/rxe/rxe_comp.c
> index d0bdc2d8adc8..b78b8c0856ab 100644
> --- a/drivers/infiniband/sw/rxe/rxe_comp.c
> +++ b/drivers/infiniband/sw/rxe/rxe_comp.c
> @@ -433,7 +433,7 @@ static void make_send_cqe(struct rxe_qp *qp, struct rxe_send_wqe *wqe,
>                 }
>         } else {
>                 if (wqe->status != IB_WC_WR_FLUSH_ERR)
> -                       rxe_err_qp(qp, "non-flush error status = %d",
> +                       rxe_err_qp(qp, "non-flush error status = %d\n",
>                                 wqe->status);
>         }
>  }
> @@ -582,7 +582,7 @@ static int flush_send_wqe(struct rxe_qp *qp, struct rxe_send_wqe *wqe)
>
>         err = rxe_cq_post(qp->scq, &cqe, 0);
>         if (err)
> -               rxe_dbg_cq(qp->scq, "post cq failed, err = %d", err);
> +               rxe_dbg_cq(qp->scq, "post cq failed, err = %d\n", err);
>
>         return err;
>  }
> diff --git a/drivers/infiniband/sw/rxe/rxe_cq.c b/drivers/infiniband/sw/rxe/rxe_cq.c
> index d5486cbb3f10..fec87c9030ab 100644
> --- a/drivers/infiniband/sw/rxe/rxe_cq.c
> +++ b/drivers/infiniband/sw/rxe/rxe_cq.c
> @@ -27,7 +27,7 @@ int rxe_cq_chk_attr(struct rxe_dev *rxe, struct rxe_cq *cq,
>         if (cq) {
>                 count = queue_count(cq->queue, QUEUE_TYPE_TO_CLIENT);
>                 if (cqe < count) {
> -                       rxe_dbg_cq(cq, "cqe(%d) < current # elements in queue (%d)",
> +                       rxe_dbg_cq(cq, "cqe(%d) < current # elements in queue (%d)\n",
>                                         cqe, count);
>                         goto err1;
>                 }
> @@ -96,7 +96,7 @@ int rxe_cq_post(struct rxe_cq *cq, struct rxe_cqe *cqe, int solicited)
>
>         full = queue_full(cq->queue, QUEUE_TYPE_TO_CLIENT);
>         if (unlikely(full)) {
> -               rxe_err_cq(cq, "queue full");
> +               rxe_err_cq(cq, "queue full\n");
>                 spin_unlock_irqrestore(&cq->cq_lock, flags);
>                 if (cq->ibcq.event_handler) {
>                         ev.device = cq->ibcq.device;
> diff --git a/drivers/infiniband/sw/rxe/rxe_mr.c b/drivers/infiniband/sw/rxe/rxe_mr.c
> index f54042e9aeb2..bc81fde696ee 100644
> --- a/drivers/infiniband/sw/rxe/rxe_mr.c
> +++ b/drivers/infiniband/sw/rxe/rxe_mr.c
> @@ -34,7 +34,7 @@ int mr_check_range(struct rxe_mr *mr, u64 iova, size_t length)
>         case IB_MR_TYPE_MEM_REG:
>                 if (iova < mr->ibmr.iova ||
>                     iova + length > mr->ibmr.iova + mr->ibmr.length) {
> -                       rxe_dbg_mr(mr, "iova/length out of range");
> +                       rxe_dbg_mr(mr, "iova/length out of range\n");
>                         return -EINVAL;
>                 }
>                 return 0;
> @@ -319,7 +319,7 @@ int rxe_mr_copy(struct rxe_mr *mr, u64 iova, void *addr,
>
>         err = mr_check_range(mr, iova, length);
>         if (unlikely(err)) {
> -               rxe_dbg_mr(mr, "iova out of range");
> +               rxe_dbg_mr(mr, "iova out of range\n");
>                 return err;
>         }
>
> @@ -477,7 +477,7 @@ int rxe_mr_do_atomic_op(struct rxe_mr *mr, u64 iova, int opcode,
>         u64 *va;
>
>         if (unlikely(mr->state != RXE_MR_STATE_VALID)) {
> -               rxe_dbg_mr(mr, "mr not in valid state");
> +               rxe_dbg_mr(mr, "mr not in valid state\n");
>                 return RESPST_ERR_RKEY_VIOLATION;
>         }
>
> @@ -490,7 +490,7 @@ int rxe_mr_do_atomic_op(struct rxe_mr *mr, u64 iova, int opcode,
>
>                 err = mr_check_range(mr, iova, sizeof(value));
>                 if (err) {
> -                       rxe_dbg_mr(mr, "iova out of range");
> +                       rxe_dbg_mr(mr, "iova out of range\n");
>                         return RESPST_ERR_RKEY_VIOLATION;
>                 }
>                 page_offset = rxe_mr_iova_to_page_offset(mr, iova);
> @@ -501,7 +501,7 @@ int rxe_mr_do_atomic_op(struct rxe_mr *mr, u64 iova, int opcode,
>         }
>
>         if (unlikely(page_offset & 0x7)) {
> -               rxe_dbg_mr(mr, "iova not aligned");
> +               rxe_dbg_mr(mr, "iova not aligned\n");
>                 return RESPST_ERR_MISALIGNED_ATOMIC;
>         }
>
> @@ -534,7 +534,7 @@ int rxe_mr_do_atomic_write(struct rxe_mr *mr, u64 iova, u64 value)
>
>         /* See IBA oA19-28 */
>         if (unlikely(mr->state != RXE_MR_STATE_VALID)) {
> -               rxe_dbg_mr(mr, "mr not in valid state");
> +               rxe_dbg_mr(mr, "mr not in valid state\n");
>                 return RESPST_ERR_RKEY_VIOLATION;
>         }
>
> @@ -548,7 +548,7 @@ int rxe_mr_do_atomic_write(struct rxe_mr *mr, u64 iova, u64 value)
>                 /* See IBA oA19-28 */
>                 err = mr_check_range(mr, iova, sizeof(value));
>                 if (unlikely(err)) {
> -                       rxe_dbg_mr(mr, "iova out of range");
> +                       rxe_dbg_mr(mr, "iova out of range\n");
>                         return RESPST_ERR_RKEY_VIOLATION;
>                 }
>                 page_offset = rxe_mr_iova_to_page_offset(mr, iova);
> @@ -560,7 +560,7 @@ int rxe_mr_do_atomic_write(struct rxe_mr *mr, u64 iova, u64 value)
>
>         /* See IBA A19.4.2 */
>         if (unlikely(page_offset & 0x7)) {
> -               rxe_dbg_mr(mr, "misaligned address");
> +               rxe_dbg_mr(mr, "misaligned address\n");
>                 return RESPST_ERR_MISALIGNED_ATOMIC;
>         }
>
> diff --git a/drivers/infiniband/sw/rxe/rxe_mw.c b/drivers/infiniband/sw/rxe/rxe_mw.c
> index d9312b5c9d20..379e65bfcd49 100644
> --- a/drivers/infiniband/sw/rxe/rxe_mw.c
> +++ b/drivers/infiniband/sw/rxe/rxe_mw.c
> @@ -198,7 +198,7 @@ int rxe_bind_mw(struct rxe_qp *qp, struct rxe_send_wqe *wqe)
>         }
>
>         if (access & ~RXE_ACCESS_SUPPORTED_MW) {
> -               rxe_err_mw(mw, "access %#x not supported", access);
> +               rxe_err_mw(mw, "access %#x not supported\n", access);
>                 ret = -EOPNOTSUPP;
>                 goto err_drop_mr;
>         }
> diff --git a/drivers/infiniband/sw/rxe/rxe_qp.c b/drivers/infiniband/sw/rxe/rxe_qp.c
> index 28e379c108bc..e3589c02013e 100644
> --- a/drivers/infiniband/sw/rxe/rxe_qp.c
> +++ b/drivers/infiniband/sw/rxe/rxe_qp.c
> @@ -201,7 +201,7 @@ static int rxe_init_sq(struct rxe_qp *qp, struct ib_qp_init_attr *init,
>         qp->sq.queue = rxe_queue_init(rxe, &qp->sq.max_wr, wqe_size,
>                                       QUEUE_TYPE_FROM_CLIENT);
>         if (!qp->sq.queue) {
> -               rxe_err_qp(qp, "Unable to allocate send queue");
> +               rxe_err_qp(qp, "Unable to allocate send queue\n");
>                 err = -ENOMEM;
>                 goto err_out;
>         }
> @@ -211,7 +211,7 @@ static int rxe_init_sq(struct rxe_qp *qp, struct ib_qp_init_attr *init,
>                            qp->sq.queue->buf, qp->sq.queue->buf_size,
>                            &qp->sq.queue->ip);
>         if (err) {
> -               rxe_err_qp(qp, "do_mmap_info failed, err = %d", err);
> +               rxe_err_qp(qp, "do_mmap_info failed, err = %d\n", err);
>                 goto err_free;
>         }
>
> @@ -292,7 +292,7 @@ static int rxe_init_rq(struct rxe_qp *qp, struct ib_qp_init_attr *init,
>         qp->rq.queue = rxe_queue_init(rxe, &qp->rq.max_wr, wqe_size,
>                                       QUEUE_TYPE_FROM_CLIENT);
>         if (!qp->rq.queue) {
> -               rxe_err_qp(qp, "Unable to allocate recv queue");
> +               rxe_err_qp(qp, "Unable to allocate recv queue\n");
>                 err = -ENOMEM;
>                 goto err_out;
>         }
> @@ -302,7 +302,7 @@ static int rxe_init_rq(struct rxe_qp *qp, struct ib_qp_init_attr *init,
>                            qp->rq.queue->buf, qp->rq.queue->buf_size,
>                            &qp->rq.queue->ip);
>         if (err) {
> -               rxe_err_qp(qp, "do_mmap_info failed, err = %d", err);
> +               rxe_err_qp(qp, "do_mmap_info failed, err = %d\n", err);
>                 goto err_free;
>         }
>
> diff --git a/drivers/infiniband/sw/rxe/rxe_resp.c b/drivers/infiniband/sw/rxe/rxe_resp.c
> index da470a925efc..963382f625d7 100644
> --- a/drivers/infiniband/sw/rxe/rxe_resp.c
> +++ b/drivers/infiniband/sw/rxe/rxe_resp.c
> @@ -362,18 +362,18 @@ static enum resp_states rxe_resp_check_length(struct rxe_qp *qp,
>                 if ((pkt->mask & RXE_START_MASK) &&
>                     (pkt->mask & RXE_END_MASK)) {
>                         if (unlikely(payload > mtu)) {
> -                               rxe_dbg_qp(qp, "only packet too long");
> +                               rxe_dbg_qp(qp, "only packet too long\n");
>                                 return RESPST_ERR_LENGTH;
>                         }
>                 } else if ((pkt->mask & RXE_START_MASK) ||
>                            (pkt->mask & RXE_MIDDLE_MASK)) {
>                         if (unlikely(payload != mtu)) {
> -                               rxe_dbg_qp(qp, "first or middle packet not mtu");
> +                               rxe_dbg_qp(qp, "first or middle packet not mtu\n");
>                                 return RESPST_ERR_LENGTH;
>                         }
>                 } else if (pkt->mask & RXE_END_MASK) {
>                         if (unlikely((payload == 0) || (payload > mtu))) {
> -                               rxe_dbg_qp(qp, "last packet zero or too long");
> +                               rxe_dbg_qp(qp, "last packet zero or too long\n");
>                                 return RESPST_ERR_LENGTH;
>                         }
>                 }
> @@ -382,7 +382,7 @@ static enum resp_states rxe_resp_check_length(struct rxe_qp *qp,
>         /* See IBA C9-94 */
>         if (pkt->mask & RXE_RETH_MASK) {
>                 if (reth_len(pkt) > (1U << 31)) {
> -                       rxe_dbg_qp(qp, "dma length too long");
> +                       rxe_dbg_qp(qp, "dma length too long\n");
>                         return RESPST_ERR_LENGTH;
>                 }
>         }
> @@ -1133,7 +1133,7 @@ static enum resp_states do_complete(struct rxe_qp *qp,
>                 }
>         } else {
>                 if (wc->status != IB_WC_WR_FLUSH_ERR)
> -                       rxe_err_qp(qp, "non-flush error status = %d",
> +                       rxe_err_qp(qp, "non-flush error status = %d\n",
>                                 wc->status);
>         }
>
> @@ -1442,7 +1442,7 @@ static int flush_recv_wqe(struct rxe_qp *qp, struct rxe_recv_wqe *wqe)
>
>         err = rxe_cq_post(qp->rcq, &cqe, 0);
>         if (err)
> -               rxe_dbg_cq(qp->rcq, "post cq failed err = %d", err);
> +               rxe_dbg_cq(qp->rcq, "post cq failed err = %d\n", err);
>
>         return err;
>  }
> diff --git a/drivers/infiniband/sw/rxe/rxe_task.c b/drivers/infiniband/sw/rxe/rxe_task.c
> index 1501120d4f52..80332638d9e3 100644
> --- a/drivers/infiniband/sw/rxe/rxe_task.c
> +++ b/drivers/infiniband/sw/rxe/rxe_task.c
> @@ -156,7 +156,7 @@ static void do_task(struct rxe_task *task)
>
>                 default:
>                         WARN_ON(1);
> -                       rxe_dbg_qp(task->qp, "unexpected task state = %d",
> +                       rxe_dbg_qp(task->qp, "unexpected task state = %d\n",
>                                    task->state);
>                         task->state = TASK_STATE_IDLE;
>                 }
> @@ -167,7 +167,7 @@ static void do_task(struct rxe_task *task)
>                         if (WARN_ON(task->num_done != task->num_sched))
>                                 rxe_dbg_qp(
>                                         task->qp,
> -                                       "%ld tasks scheduled, %ld tasks done",
> +                                       "%ld tasks scheduled, %ld tasks done\n",
>                                         task->num_sched, task->num_done);
>                 }
>                 spin_unlock_irqrestore(&task->lock, flags);
> diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.c b/drivers/infiniband/sw/rxe/rxe_verbs.c
> index 48f86839d36a..f0a03b910702 100644
> --- a/drivers/infiniband/sw/rxe/rxe_verbs.c
> +++ b/drivers/infiniband/sw/rxe/rxe_verbs.c
> @@ -23,7 +23,7 @@ static int rxe_query_device(struct ib_device *ibdev,
>         int err;
>
>         if (udata->inlen || udata->outlen) {
> -               rxe_dbg_dev(rxe, "malformed udata");
> +               rxe_dbg_dev(rxe, "malformed udata\n");
>                 err = -EINVAL;
>                 goto err_out;
>         }
> @@ -33,7 +33,7 @@ static int rxe_query_device(struct ib_device *ibdev,
>         return 0;
>
>  err_out:
> -       rxe_err_dev(rxe, "returned err = %d", err);
> +       rxe_err_dev(rxe, "returned err = %d\n", err);
>         return err;
>  }
>
> @@ -45,7 +45,7 @@ static int rxe_query_port(struct ib_device *ibdev,
>
>         if (port_num != 1) {
>                 err = -EINVAL;
> -               rxe_dbg_dev(rxe, "bad port_num = %d", port_num);
> +               rxe_dbg_dev(rxe, "bad port_num = %d\n", port_num);
>                 goto err_out;
>         }
>
> @@ -67,7 +67,7 @@ static int rxe_query_port(struct ib_device *ibdev,
>         return ret;
>
>  err_out:
> -       rxe_err_dev(rxe, "returned err = %d", err);
> +       rxe_err_dev(rxe, "returned err = %d\n", err);
>         return err;
>  }
>
> @@ -79,7 +79,7 @@ static int rxe_query_pkey(struct ib_device *ibdev,
>
>         if (index != 0) {
>                 err = -EINVAL;
> -               rxe_dbg_dev(rxe, "bad pkey index = %d", index);
> +               rxe_dbg_dev(rxe, "bad pkey index = %d\n", index);
>                 goto err_out;
>         }
>
> @@ -87,7 +87,7 @@ static int rxe_query_pkey(struct ib_device *ibdev,
>         return 0;
>
>  err_out:
> -       rxe_err_dev(rxe, "returned err = %d", err);
> +       rxe_err_dev(rxe, "returned err = %d\n", err);
>         return err;
>  }
>
> @@ -100,7 +100,7 @@ static int rxe_modify_device(struct ib_device *ibdev,
>         if (mask & ~(IB_DEVICE_MODIFY_SYS_IMAGE_GUID |
>                      IB_DEVICE_MODIFY_NODE_DESC)) {
>                 err = -EOPNOTSUPP;
> -               rxe_dbg_dev(rxe, "unsupported mask = 0x%x", mask);
> +               rxe_dbg_dev(rxe, "unsupported mask = 0x%x\n", mask);
>                 goto err_out;
>         }
>
> @@ -115,7 +115,7 @@ static int rxe_modify_device(struct ib_device *ibdev,
>         return 0;
>
>  err_out:
> -       rxe_err_dev(rxe, "returned err = %d", err);
> +       rxe_err_dev(rxe, "returned err = %d\n", err);
>         return err;
>  }
>
> @@ -128,14 +128,14 @@ static int rxe_modify_port(struct ib_device *ibdev, u32 port_num,
>
>         if (port_num != 1) {
>                 err = -EINVAL;
> -               rxe_dbg_dev(rxe, "bad port_num = %d", port_num);
> +               rxe_dbg_dev(rxe, "bad port_num = %d\n", port_num);
>                 goto err_out;
>         }
>
>         //TODO is shutdown useful
>         if (mask & ~(IB_PORT_RESET_QKEY_CNTR)) {
>                 err = -EOPNOTSUPP;
> -               rxe_dbg_dev(rxe, "unsupported mask = 0x%x", mask);
> +               rxe_dbg_dev(rxe, "unsupported mask = 0x%x\n", mask);
>                 goto err_out;
>         }
>
> @@ -149,7 +149,7 @@ static int rxe_modify_port(struct ib_device *ibdev, u32 port_num,
>         return 0;
>
>  err_out:
> -       rxe_err_dev(rxe, "returned err = %d", err);
> +       rxe_err_dev(rxe, "returned err = %d\n", err);
>         return err;
>  }
>
> @@ -161,14 +161,14 @@ static enum rdma_link_layer rxe_get_link_layer(struct ib_device *ibdev,
>
>         if (port_num != 1) {
>                 err = -EINVAL;
> -               rxe_dbg_dev(rxe, "bad port_num = %d", port_num);
> +               rxe_dbg_dev(rxe, "bad port_num = %d\n", port_num);
>                 goto err_out;
>         }
>
>         return IB_LINK_LAYER_ETHERNET;
>
>  err_out:
> -       rxe_err_dev(rxe, "returned err = %d", err);
> +       rxe_err_dev(rxe, "returned err = %d\n", err);
>         return err;
>  }
>
> @@ -181,7 +181,7 @@ static int rxe_port_immutable(struct ib_device *ibdev, u32 port_num,
>
>         if (port_num != 1) {
>                 err = -EINVAL;
> -               rxe_dbg_dev(rxe, "bad port_num = %d", port_num);
> +               rxe_dbg_dev(rxe, "bad port_num = %d\n", port_num);
>                 goto err_out;
>         }
>
> @@ -197,7 +197,7 @@ static int rxe_port_immutable(struct ib_device *ibdev, u32 port_num,
>         return 0;
>
>  err_out:
> -       rxe_err_dev(rxe, "returned err = %d", err);
> +       rxe_err_dev(rxe, "returned err = %d\n", err);
>         return err;
>  }
>
> @@ -210,7 +210,7 @@ static int rxe_alloc_ucontext(struct ib_ucontext *ibuc, struct ib_udata *udata)
>
>         err = rxe_add_to_pool(&rxe->uc_pool, uc);
>         if (err)
> -               rxe_err_dev(rxe, "unable to create uc");
> +               rxe_err_dev(rxe, "unable to create uc\n");
>
>         return err;
>  }
> @@ -222,7 +222,7 @@ static void rxe_dealloc_ucontext(struct ib_ucontext *ibuc)
>
>         err = rxe_cleanup(uc);
>         if (err)
> -               rxe_err_uc(uc, "cleanup failed, err = %d", err);
> +               rxe_err_uc(uc, "cleanup failed, err = %d\n", err);
>  }
>
>  /* pd */
> @@ -234,14 +234,14 @@ static int rxe_alloc_pd(struct ib_pd *ibpd, struct ib_udata *udata)
>
>         err = rxe_add_to_pool(&rxe->pd_pool, pd);
>         if (err) {
> -               rxe_dbg_dev(rxe, "unable to alloc pd");
> +               rxe_dbg_dev(rxe, "unable to alloc pd\n");
>                 goto err_out;
>         }
>
>         return 0;
>
>  err_out:
> -       rxe_err_dev(rxe, "returned err = %d", err);
> +       rxe_err_dev(rxe, "returned err = %d\n", err);
>         return err;
>  }
>
> @@ -252,7 +252,7 @@ static int rxe_dealloc_pd(struct ib_pd *ibpd, struct ib_udata *udata)
>
>         err = rxe_cleanup(pd);
>         if (err)
> -               rxe_err_pd(pd, "cleanup failed, err = %d", err);
> +               rxe_err_pd(pd, "cleanup failed, err = %d\n", err);
>
>         return 0;
>  }
> @@ -279,7 +279,7 @@ static int rxe_create_ah(struct ib_ah *ibah,
>         err = rxe_add_to_pool_ah(&rxe->ah_pool, ah,
>                         init_attr->flags & RDMA_CREATE_AH_SLEEPABLE);
>         if (err) {
> -               rxe_dbg_dev(rxe, "unable to create ah");
> +               rxe_dbg_dev(rxe, "unable to create ah\n");
>                 goto err_out;
>         }
>
> @@ -288,7 +288,7 @@ static int rxe_create_ah(struct ib_ah *ibah,
>
>         err = rxe_ah_chk_attr(ah, init_attr->ah_attr);
>         if (err) {
> -               rxe_dbg_ah(ah, "bad attr");
> +               rxe_dbg_ah(ah, "bad attr\n");
>                 goto err_cleanup;
>         }
>
> @@ -298,7 +298,7 @@ static int rxe_create_ah(struct ib_ah *ibah,
>                                          sizeof(uresp->ah_num));
>                 if (err) {
>                         err = -EFAULT;
> -                       rxe_dbg_ah(ah, "unable to copy to user");
> +                       rxe_dbg_ah(ah, "unable to copy to user\n");
>                         goto err_cleanup;
>                 }
>         } else if (ah->is_user) {
> @@ -314,9 +314,9 @@ static int rxe_create_ah(struct ib_ah *ibah,
>  err_cleanup:
>         cleanup_err = rxe_cleanup(ah);
>         if (cleanup_err)
> -               rxe_err_ah(ah, "cleanup failed, err = %d", cleanup_err);
> +               rxe_err_ah(ah, "cleanup failed, err = %d\n", cleanup_err);
>  err_out:
> -       rxe_err_ah(ah, "returned err = %d", err);
> +       rxe_err_ah(ah, "returned err = %d\n", err);
>         return err;
>  }
>
> @@ -327,7 +327,7 @@ static int rxe_modify_ah(struct ib_ah *ibah, struct rdma_ah_attr *attr)
>
>         err = rxe_ah_chk_attr(ah, attr);
>         if (err) {
> -               rxe_dbg_ah(ah, "bad attr");
> +               rxe_dbg_ah(ah, "bad attr\n");
>                 goto err_out;
>         }
>
> @@ -336,7 +336,7 @@ static int rxe_modify_ah(struct ib_ah *ibah, struct rdma_ah_attr *attr)
>         return 0;
>
>  err_out:
> -       rxe_err_ah(ah, "returned err = %d", err);
> +       rxe_err_ah(ah, "returned err = %d\n", err);
>         return err;
>  }
>
> @@ -358,7 +358,7 @@ static int rxe_destroy_ah(struct ib_ah *ibah, u32 flags)
>
>         err = rxe_cleanup_ah(ah, flags & RDMA_DESTROY_AH_SLEEPABLE);
>         if (err)
> -               rxe_err_ah(ah, "cleanup failed, err = %d", err);
> +               rxe_err_ah(ah, "cleanup failed, err = %d\n", err);
>
>         return 0;
>  }
> @@ -376,7 +376,7 @@ static int rxe_create_srq(struct ib_srq *ibsrq, struct ib_srq_init_attr *init,
>         if (udata) {
>                 if (udata->outlen < sizeof(*uresp)) {
>                         err = -EINVAL;
> -                       rxe_err_dev(rxe, "malformed udata");
> +                       rxe_err_dev(rxe, "malformed udata\n");
>                         goto err_out;
>                 }
>                 uresp = udata->outbuf;
> @@ -384,20 +384,20 @@ static int rxe_create_srq(struct ib_srq *ibsrq, struct ib_srq_init_attr *init,
>
>         if (init->srq_type != IB_SRQT_BASIC) {
>                 err = -EOPNOTSUPP;
> -               rxe_dbg_dev(rxe, "srq type = %d, not supported",
> +               rxe_dbg_dev(rxe, "srq type = %d, not supported\n",
>                                 init->srq_type);
>                 goto err_out;
>         }
>
>         err = rxe_srq_chk_init(rxe, init);
>         if (err) {
> -               rxe_dbg_dev(rxe, "invalid init attributes");
> +               rxe_dbg_dev(rxe, "invalid init attributes\n");
>                 goto err_out;
>         }
>
>         err = rxe_add_to_pool(&rxe->srq_pool, srq);
>         if (err) {
> -               rxe_dbg_dev(rxe, "unable to create srq, err = %d", err);
> +               rxe_dbg_dev(rxe, "unable to create srq, err = %d\n", err);
>                 goto err_out;
>         }
>
> @@ -406,7 +406,7 @@ static int rxe_create_srq(struct ib_srq *ibsrq, struct ib_srq_init_attr *init,
>
>         err = rxe_srq_from_init(rxe, srq, init, udata, uresp);
>         if (err) {
> -               rxe_dbg_srq(srq, "create srq failed, err = %d", err);
> +               rxe_dbg_srq(srq, "create srq failed, err = %d\n", err);
>                 goto err_cleanup;
>         }
>
> @@ -415,9 +415,9 @@ static int rxe_create_srq(struct ib_srq *ibsrq, struct ib_srq_init_attr *init,
>  err_cleanup:
>         cleanup_err = rxe_cleanup(srq);
>         if (cleanup_err)
> -               rxe_err_srq(srq, "cleanup failed, err = %d", cleanup_err);
> +               rxe_err_srq(srq, "cleanup failed, err = %d\n", cleanup_err);
>  err_out:
> -       rxe_err_dev(rxe, "returned err = %d", err);
> +       rxe_err_dev(rxe, "returned err = %d\n", err);
>         return err;
>  }
>
> @@ -433,34 +433,34 @@ static int rxe_modify_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr,
>         if (udata) {
>                 if (udata->inlen < sizeof(cmd)) {
>                         err = -EINVAL;
> -                       rxe_dbg_srq(srq, "malformed udata");
> +                       rxe_dbg_srq(srq, "malformed udata\n");
>                         goto err_out;
>                 }
>
>                 err = ib_copy_from_udata(&cmd, udata, sizeof(cmd));
>                 if (err) {
>                         err = -EFAULT;
> -                       rxe_dbg_srq(srq, "unable to read udata");
> +                       rxe_dbg_srq(srq, "unable to read udata\n");
>                         goto err_out;
>                 }
>         }
>
>         err = rxe_srq_chk_attr(rxe, srq, attr, mask);
>         if (err) {
> -               rxe_dbg_srq(srq, "bad init attributes");
> +               rxe_dbg_srq(srq, "bad init attributes\n");
>                 goto err_out;
>         }
>
>         err = rxe_srq_from_attr(rxe, srq, attr, mask, &cmd, udata);
>         if (err) {
> -               rxe_dbg_srq(srq, "bad attr");
> +               rxe_dbg_srq(srq, "bad attr\n");
>                 goto err_out;
>         }
>
>         return 0;
>
>  err_out:
> -       rxe_err_srq(srq, "returned err = %d", err);
> +       rxe_err_srq(srq, "returned err = %d\n", err);
>         return err;
>  }
>
> @@ -471,7 +471,7 @@ static int rxe_query_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr)
>
>         if (srq->error) {
>                 err = -EINVAL;
> -               rxe_dbg_srq(srq, "srq in error state");
> +               rxe_dbg_srq(srq, "srq in error state\n");
>                 goto err_out;
>         }
>
> @@ -481,7 +481,7 @@ static int rxe_query_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr)
>         return 0;
>
>  err_out:
> -       rxe_err_srq(srq, "returned err = %d", err);
> +       rxe_err_srq(srq, "returned err = %d\n", err);
>         return err;
>  }
>
> @@ -505,7 +505,7 @@ static int rxe_post_srq_recv(struct ib_srq *ibsrq, const struct ib_recv_wr *wr,
>
>         if (err) {
>                 *bad_wr = wr;
> -               rxe_err_srq(srq, "returned err = %d", err);
> +               rxe_err_srq(srq, "returned err = %d\n", err);
>         }
>
>         return err;
> @@ -518,7 +518,7 @@ static int rxe_destroy_srq(struct ib_srq *ibsrq, struct ib_udata *udata)
>
>         err = rxe_cleanup(srq);
>         if (err)
> -               rxe_err_srq(srq, "cleanup failed, err = %d", err);
> +               rxe_err_srq(srq, "cleanup failed, err = %d\n", err);
>
>         return 0;
>  }
> @@ -536,13 +536,13 @@ static int rxe_create_qp(struct ib_qp *ibqp, struct ib_qp_init_attr *init,
>         if (udata) {
>                 if (udata->inlen) {
>                         err = -EINVAL;
> -                       rxe_dbg_dev(rxe, "malformed udata, err = %d", err);
> +                       rxe_dbg_dev(rxe, "malformed udata, err = %d\n", err);
>                         goto err_out;
>                 }
>
>                 if (udata->outlen < sizeof(*uresp)) {
>                         err = -EINVAL;
> -                       rxe_dbg_dev(rxe, "malformed udata, err = %d", err);
> +                       rxe_dbg_dev(rxe, "malformed udata, err = %d\n", err);
>                         goto err_out;
>                 }
>
> @@ -554,25 +554,25 @@ static int rxe_create_qp(struct ib_qp *ibqp, struct ib_qp_init_attr *init,
>
>         if (init->create_flags) {
>                 err = -EOPNOTSUPP;
> -               rxe_dbg_dev(rxe, "unsupported create_flags, err = %d", err);
> +               rxe_dbg_dev(rxe, "unsupported create_flags, err = %d\n", err);
>                 goto err_out;
>         }
>
>         err = rxe_qp_chk_init(rxe, init);
>         if (err) {
> -               rxe_dbg_dev(rxe, "bad init attr, err = %d", err);
> +               rxe_dbg_dev(rxe, "bad init attr, err = %d\n", err);
>                 goto err_out;
>         }
>
>         err = rxe_add_to_pool(&rxe->qp_pool, qp);
>         if (err) {
> -               rxe_dbg_dev(rxe, "unable to create qp, err = %d", err);
> +               rxe_dbg_dev(rxe, "unable to create qp, err = %d\n", err);
>                 goto err_out;
>         }
>
>         err = rxe_qp_from_init(rxe, qp, pd, init, uresp, ibqp->pd, udata);
>         if (err) {
> -               rxe_dbg_qp(qp, "create qp failed, err = %d", err);
> +               rxe_dbg_qp(qp, "create qp failed, err = %d\n", err);
>                 goto err_cleanup;
>         }
>
> @@ -582,9 +582,9 @@ static int rxe_create_qp(struct ib_qp *ibqp, struct ib_qp_init_attr *init,
>  err_cleanup:
>         cleanup_err = rxe_cleanup(qp);
>         if (cleanup_err)
> -               rxe_err_qp(qp, "cleanup failed, err = %d", cleanup_err);
> +               rxe_err_qp(qp, "cleanup failed, err = %d\n", cleanup_err);
>  err_out:
> -       rxe_err_dev(rxe, "returned err = %d", err);
> +       rxe_err_dev(rxe, "returned err = %d\n", err);
>         return err;
>  }
>
> @@ -597,20 +597,20 @@ static int rxe_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
>
>         if (mask & ~IB_QP_ATTR_STANDARD_BITS) {
>                 err = -EOPNOTSUPP;
> -               rxe_dbg_qp(qp, "unsupported mask = 0x%x, err = %d",
> +               rxe_dbg_qp(qp, "unsupported mask = 0x%x, err = %d\n",
>                            mask, err);
>                 goto err_out;
>         }
>
>         err = rxe_qp_chk_attr(rxe, qp, attr, mask);
>         if (err) {
> -               rxe_dbg_qp(qp, "bad mask/attr, err = %d", err);
> +               rxe_dbg_qp(qp, "bad mask/attr, err = %d\n", err);
>                 goto err_out;
>         }
>
>         err = rxe_qp_from_attr(qp, attr, mask, udata);
>         if (err) {
> -               rxe_dbg_qp(qp, "modify qp failed, err = %d", err);
> +               rxe_dbg_qp(qp, "modify qp failed, err = %d\n", err);
>                 goto err_out;
>         }
>
> @@ -622,7 +622,7 @@ static int rxe_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
>         return 0;
>
>  err_out:
> -       rxe_err_qp(qp, "returned err = %d", err);
> +       rxe_err_qp(qp, "returned err = %d\n", err);
>         return err;
>  }
>
> @@ -644,18 +644,18 @@ static int rxe_destroy_qp(struct ib_qp *ibqp, struct ib_udata *udata)
>
>         err = rxe_qp_chk_destroy(qp);
>         if (err) {
> -               rxe_dbg_qp(qp, "unable to destroy qp, err = %d", err);
> +               rxe_dbg_qp(qp, "unable to destroy qp, err = %d\n", err);
>                 goto err_out;
>         }
>
>         err = rxe_cleanup(qp);
>         if (err)
> -               rxe_err_qp(qp, "cleanup failed, err = %d", err);
> +               rxe_err_qp(qp, "cleanup failed, err = %d\n", err);
>
>         return 0;
>
>  err_out:
> -       rxe_err_qp(qp, "returned err = %d", err);
> +       rxe_err_qp(qp, "returned err = %d\n", err);
>         return err;
>  }
>
> @@ -675,12 +675,12 @@ static int validate_send_wr(struct rxe_qp *qp, const struct ib_send_wr *ibwr,
>         do {
>                 mask = wr_opcode_mask(ibwr->opcode, qp);
>                 if (!mask) {
> -                       rxe_err_qp(qp, "bad wr opcode for qp type");
> +                       rxe_err_qp(qp, "bad wr opcode for qp type\n");
>                         break;
>                 }
>
>                 if (num_sge > sq->max_sge) {
> -                       rxe_err_qp(qp, "num_sge > max_sge");
> +                       rxe_err_qp(qp, "num_sge > max_sge\n");
>                         break;
>                 }
>
> @@ -689,27 +689,27 @@ static int validate_send_wr(struct rxe_qp *qp, const struct ib_send_wr *ibwr,
>                         length += ibwr->sg_list[i].length;
>
>                 if (length > (1UL << 31)) {
> -                       rxe_err_qp(qp, "message length too long");
> +                       rxe_err_qp(qp, "message length too long\n");
>                         break;
>                 }
>
>                 if (mask & WR_ATOMIC_MASK) {
>                         if (length != 8) {
> -                               rxe_err_qp(qp, "atomic length != 8");
> +                               rxe_err_qp(qp, "atomic length != 8\n");
>                                 break;
>                         }
>                         if (atomic_wr(ibwr)->remote_addr & 0x7) {
> -                               rxe_err_qp(qp, "misaligned atomic address");
> +                               rxe_err_qp(qp, "misaligned atomic address\n");
>                                 break;
>                         }
>                 }
>                 if (ibwr->send_flags & IB_SEND_INLINE) {
>                         if (!(mask & WR_INLINE_MASK)) {
> -                               rxe_err_qp(qp, "opcode doesn't support inline data");
> +                               rxe_err_qp(qp, "opcode doesn't support inline data\n");
>                                 break;
>                         }
>                         if (length > sq->max_inline) {
> -                               rxe_err_qp(qp, "inline length too big");
> +                               rxe_err_qp(qp, "inline length too big\n");
>                                 break;
>                         }
>                 }
> @@ -747,7 +747,7 @@ static int init_send_wr(struct rxe_qp *qp, struct rxe_send_wr *wr,
>                 case IB_WR_SEND:
>                         break;
>                 default:
> -                       rxe_err_qp(qp, "bad wr opcode %d for UD/GSI QP",
> +                       rxe_err_qp(qp, "bad wr opcode %d for UD/GSI QP\n",
>                                         wr->opcode);
>                         return -EINVAL;
>                 }
> @@ -795,7 +795,7 @@ static int init_send_wr(struct rxe_qp *qp, struct rxe_send_wr *wr,
>                 case IB_WR_ATOMIC_WRITE:
>                         break;
>                 default:
> -                       rxe_err_qp(qp, "unsupported wr opcode %d",
> +                       rxe_err_qp(qp, "unsupported wr opcode %d\n",
>                                         wr->opcode);
>                         return -EINVAL;
>                 }
> @@ -870,7 +870,7 @@ static int post_one_send(struct rxe_qp *qp, const struct ib_send_wr *ibwr)
>
>         full = queue_full(sq->queue, QUEUE_TYPE_FROM_ULP);
>         if (unlikely(full)) {
> -               rxe_err_qp(qp, "send queue full");
> +               rxe_err_qp(qp, "send queue full\n");
>                 return -ENOMEM;
>         }
>
> @@ -922,14 +922,14 @@ static int rxe_post_send(struct ib_qp *ibqp, const struct ib_send_wr *wr,
>         /* caller has already called destroy_qp */
>         if (WARN_ON_ONCE(!qp->valid)) {
>                 spin_unlock_irqrestore(&qp->state_lock, flags);
> -               rxe_err_qp(qp, "qp has been destroyed");
> +               rxe_err_qp(qp, "qp has been destroyed\n");
>                 return -EINVAL;
>         }
>
>         if (unlikely(qp_state(qp) < IB_QPS_RTS)) {
>                 spin_unlock_irqrestore(&qp->state_lock, flags);
>                 *bad_wr = wr;
> -               rxe_err_qp(qp, "qp not ready to send");
> +               rxe_err_qp(qp, "qp not ready to send\n");
>                 return -EINVAL;
>         }
>         spin_unlock_irqrestore(&qp->state_lock, flags);
> @@ -959,13 +959,13 @@ static int post_one_recv(struct rxe_rq *rq, const struct ib_recv_wr *ibwr)
>         full = queue_full(rq->queue, QUEUE_TYPE_FROM_ULP);
>         if (unlikely(full)) {
>                 err = -ENOMEM;
> -               rxe_dbg("queue full");
> +               rxe_dbg("queue full\n");
>                 goto err_out;
>         }
>
>         if (unlikely(num_sge > rq->max_sge)) {
>                 err = -EINVAL;
> -               rxe_dbg("bad num_sge > max_sge");
> +               rxe_dbg("bad num_sge > max_sge\n");
>                 goto err_out;
>         }
>
> @@ -976,7 +976,7 @@ static int post_one_recv(struct rxe_rq *rq, const struct ib_recv_wr *ibwr)
>         /* IBA max message size is 2^31 */
>         if (length >= (1UL<<31)) {
>                 err = -EINVAL;
> -               rxe_dbg("message length too long");
> +               rxe_dbg("message length too long\n");
>                 goto err_out;
>         }
>
> @@ -996,7 +996,7 @@ static int post_one_recv(struct rxe_rq *rq, const struct ib_recv_wr *ibwr)
>         return 0;
>
>  err_out:
> -       rxe_dbg("returned err = %d", err);
> +       rxe_dbg("returned err = %d\n", err);
>         return err;
>  }
>
> @@ -1012,7 +1012,7 @@ static int rxe_post_recv(struct ib_qp *ibqp, const struct ib_recv_wr *wr,
>         /* caller has already called destroy_qp */
>         if (WARN_ON_ONCE(!qp->valid)) {
>                 spin_unlock_irqrestore(&qp->state_lock, flags);
> -               rxe_err_qp(qp, "qp has been destroyed");
> +               rxe_err_qp(qp, "qp has been destroyed\n");
>                 return -EINVAL;
>         }
>
> @@ -1020,14 +1020,14 @@ static int rxe_post_recv(struct ib_qp *ibqp, const struct ib_recv_wr *wr,
>         if (unlikely((qp_state(qp) < IB_QPS_INIT))) {
>                 spin_unlock_irqrestore(&qp->state_lock, flags);
>                 *bad_wr = wr;
> -               rxe_dbg_qp(qp, "qp not ready to post recv");
> +               rxe_dbg_qp(qp, "qp not ready to post recv\n");
>                 return -EINVAL;
>         }
>         spin_unlock_irqrestore(&qp->state_lock, flags);
>
>         if (unlikely(qp->srq)) {
>                 *bad_wr = wr;
> -               rxe_dbg_qp(qp, "qp has srq, use post_srq_recv instead");
> +               rxe_dbg_qp(qp, "qp has srq, use post_srq_recv instead\n");
>                 return -EINVAL;
>         }
>
> @@ -1065,7 +1065,7 @@ static int rxe_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr,
>         if (udata) {
>                 if (udata->outlen < sizeof(*uresp)) {
>                         err = -EINVAL;
> -                       rxe_dbg_dev(rxe, "malformed udata, err = %d", err);
> +                       rxe_dbg_dev(rxe, "malformed udata, err = %d\n", err);
>                         goto err_out;
>                 }
>                 uresp = udata->outbuf;
> @@ -1073,26 +1073,26 @@ static int rxe_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr,
>
>         if (attr->flags) {
>                 err = -EOPNOTSUPP;
> -               rxe_dbg_dev(rxe, "bad attr->flags, err = %d", err);
> +               rxe_dbg_dev(rxe, "bad attr->flags, err = %d\n", err);
>                 goto err_out;
>         }
>
>         err = rxe_cq_chk_attr(rxe, NULL, attr->cqe, attr->comp_vector);
>         if (err) {
> -               rxe_dbg_dev(rxe, "bad init attributes, err = %d", err);
> +               rxe_dbg_dev(rxe, "bad init attributes, err = %d\n", err);
>                 goto err_out;
>         }
>
>         err = rxe_add_to_pool(&rxe->cq_pool, cq);
>         if (err) {
> -               rxe_dbg_dev(rxe, "unable to create cq, err = %d", err);
> +               rxe_dbg_dev(rxe, "unable to create cq, err = %d\n", err);
>                 goto err_out;
>         }
>
>         err = rxe_cq_from_init(rxe, cq, attr->cqe, attr->comp_vector, udata,
>                                uresp);
>         if (err) {
> -               rxe_dbg_cq(cq, "create cq failed, err = %d", err);
> +               rxe_dbg_cq(cq, "create cq failed, err = %d\n", err);
>                 goto err_cleanup;
>         }
>
> @@ -1101,9 +1101,9 @@ static int rxe_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr,
>  err_cleanup:
>         cleanup_err = rxe_cleanup(cq);
>         if (cleanup_err)
> -               rxe_err_cq(cq, "cleanup failed, err = %d", cleanup_err);
> +               rxe_err_cq(cq, "cleanup failed, err = %d\n", cleanup_err);
>  err_out:
> -       rxe_err_dev(rxe, "returned err = %d", err);
> +       rxe_err_dev(rxe, "returned err = %d\n", err);
>         return err;
>  }
>
> @@ -1117,7 +1117,7 @@ static int rxe_resize_cq(struct ib_cq *ibcq, int cqe, struct ib_udata *udata)
>         if (udata) {
>                 if (udata->outlen < sizeof(*uresp)) {
>                         err = -EINVAL;
> -                       rxe_dbg_cq(cq, "malformed udata");
> +                       rxe_dbg_cq(cq, "malformed udata\n");
>                         goto err_out;
>                 }
>                 uresp = udata->outbuf;
> @@ -1125,20 +1125,20 @@ static int rxe_resize_cq(struct ib_cq *ibcq, int cqe, struct ib_udata *udata)
>
>         err = rxe_cq_chk_attr(rxe, cq, cqe, 0);
>         if (err) {
> -               rxe_dbg_cq(cq, "bad attr, err = %d", err);
> +               rxe_dbg_cq(cq, "bad attr, err = %d\n", err);
>                 goto err_out;
>         }
>
>         err = rxe_cq_resize_queue(cq, cqe, uresp, udata);
>         if (err) {
> -               rxe_dbg_cq(cq, "resize cq failed, err = %d", err);
> +               rxe_dbg_cq(cq, "resize cq failed, err = %d\n", err);
>                 goto err_out;
>         }
>
>         return 0;
>
>  err_out:
> -       rxe_err_cq(cq, "returned err = %d", err);
> +       rxe_err_cq(cq, "returned err = %d\n", err);
>         return err;
>  }
>
> @@ -1202,18 +1202,18 @@ static int rxe_destroy_cq(struct ib_cq *ibcq, struct ib_udata *udata)
>          */
>         if (atomic_read(&cq->num_wq)) {
>                 err = -EINVAL;
> -               rxe_dbg_cq(cq, "still in use");
> +               rxe_dbg_cq(cq, "still in use\n");
>                 goto err_out;
>         }
>
>         err = rxe_cleanup(cq);
>         if (err)
> -               rxe_err_cq(cq, "cleanup failed, err = %d", err);
> +               rxe_err_cq(cq, "cleanup failed, err = %d\n", err);
>
>         return 0;
>
>  err_out:
> -       rxe_err_cq(cq, "returned err = %d", err);
> +       rxe_err_cq(cq, "returned err = %d\n", err);
>         return err;
>  }
>
> @@ -1231,7 +1231,7 @@ static struct ib_mr *rxe_get_dma_mr(struct ib_pd *ibpd, int access)
>
>         err = rxe_add_to_pool(&rxe->mr_pool, mr);
>         if (err) {
> -               rxe_dbg_dev(rxe, "unable to create mr");
> +               rxe_dbg_dev(rxe, "unable to create mr\n");
>                 goto err_free;
>         }
>
> @@ -1245,7 +1245,7 @@ static struct ib_mr *rxe_get_dma_mr(struct ib_pd *ibpd, int access)
>
>  err_free:
>         kfree(mr);
> -       rxe_err_pd(pd, "returned err = %d", err);
> +       rxe_err_pd(pd, "returned err = %d\n", err);
>         return ERR_PTR(err);
>  }
>
> @@ -1259,7 +1259,7 @@ static struct ib_mr *rxe_reg_user_mr(struct ib_pd *ibpd, u64 start,
>         int err, cleanup_err;
>
>         if (access & ~RXE_ACCESS_SUPPORTED_MR) {
> -               rxe_err_pd(pd, "access = %#x not supported (%#x)", access,
> +               rxe_err_pd(pd, "access = %#x not supported (%#x)\n", access,
>                                 RXE_ACCESS_SUPPORTED_MR);
>                 return ERR_PTR(-EOPNOTSUPP);
>         }
> @@ -1270,7 +1270,7 @@ static struct ib_mr *rxe_reg_user_mr(struct ib_pd *ibpd, u64 start,
>
>         err = rxe_add_to_pool(&rxe->mr_pool, mr);
>         if (err) {
> -               rxe_dbg_pd(pd, "unable to create mr");
> +               rxe_dbg_pd(pd, "unable to create mr\n");
>                 goto err_free;
>         }
>
> @@ -1280,7 +1280,7 @@ static struct ib_mr *rxe_reg_user_mr(struct ib_pd *ibpd, u64 start,
>
>         err = rxe_mr_init_user(rxe, start, length, iova, access, mr);
>         if (err) {
> -               rxe_dbg_mr(mr, "reg_user_mr failed, err = %d", err);
> +               rxe_dbg_mr(mr, "reg_user_mr failed, err = %d\n", err);
>                 goto err_cleanup;
>         }
>
> @@ -1290,10 +1290,10 @@ static struct ib_mr *rxe_reg_user_mr(struct ib_pd *ibpd, u64 start,
>  err_cleanup:
>         cleanup_err = rxe_cleanup(mr);
>         if (cleanup_err)
> -               rxe_err_mr(mr, "cleanup failed, err = %d", cleanup_err);
> +               rxe_err_mr(mr, "cleanup failed, err = %d\n", cleanup_err);
>  err_free:
>         kfree(mr);
> -       rxe_err_pd(pd, "returned err = %d", err);
> +       rxe_err_pd(pd, "returned err = %d\n", err);
>         return ERR_PTR(err);
>  }
>
> @@ -1310,7 +1310,7 @@ static struct ib_mr *rxe_rereg_user_mr(struct ib_mr *ibmr, int flags,
>          * rereg_pd and rereg_access
>          */
>         if (flags & ~RXE_MR_REREG_SUPPORTED) {
> -               rxe_err_mr(mr, "flags = %#x not supported", flags);
> +               rxe_err_mr(mr, "flags = %#x not supported\n", flags);
>                 return ERR_PTR(-EOPNOTSUPP);
>         }
>
> @@ -1322,7 +1322,7 @@ static struct ib_mr *rxe_rereg_user_mr(struct ib_mr *ibmr, int flags,
>
>         if (flags & IB_MR_REREG_ACCESS) {
>                 if (access & ~RXE_ACCESS_SUPPORTED_MR) {
> -                       rxe_err_mr(mr, "access = %#x not supported", access);
> +                       rxe_err_mr(mr, "access = %#x not supported\n", access);
>                         return ERR_PTR(-EOPNOTSUPP);
>                 }
>                 mr->access = access;
> @@ -1341,7 +1341,7 @@ static struct ib_mr *rxe_alloc_mr(struct ib_pd *ibpd, enum ib_mr_type mr_type,
>
>         if (mr_type != IB_MR_TYPE_MEM_REG) {
>                 err = -EINVAL;
> -               rxe_dbg_pd(pd, "mr type %d not supported, err = %d",
> +               rxe_dbg_pd(pd, "mr type %d not supported, err = %d\n",
>                            mr_type, err);
>                 goto err_out;
>         }
> @@ -1360,7 +1360,7 @@ static struct ib_mr *rxe_alloc_mr(struct ib_pd *ibpd, enum ib_mr_type mr_type,
>
>         err = rxe_mr_init_fast(max_num_sg, mr);
>         if (err) {
> -               rxe_dbg_mr(mr, "alloc_mr failed, err = %d", err);
> +               rxe_dbg_mr(mr, "alloc_mr failed, err = %d\n", err);
>                 goto err_cleanup;
>         }
>
> @@ -1370,11 +1370,11 @@ static struct ib_mr *rxe_alloc_mr(struct ib_pd *ibpd, enum ib_mr_type mr_type,
>  err_cleanup:
>         cleanup_err = rxe_cleanup(mr);
>         if (cleanup_err)
> -               rxe_err_mr(mr, "cleanup failed, err = %d", err);
> +               rxe_err_mr(mr, "cleanup failed, err = %d\n", err);
>  err_free:
>         kfree(mr);
>  err_out:
> -       rxe_err_pd(pd, "returned err = %d", err);
> +       rxe_err_pd(pd, "returned err = %d\n", err);
>         return ERR_PTR(err);
>  }
>
> @@ -1386,19 +1386,19 @@ static int rxe_dereg_mr(struct ib_mr *ibmr, struct ib_udata *udata)
>         /* See IBA 10.6.7.2.6 */
>         if (atomic_read(&mr->num_mw) > 0) {
>                 err = -EINVAL;
> -               rxe_dbg_mr(mr, "mr has mw's bound");
> +               rxe_dbg_mr(mr, "mr has mw's bound\n");
>                 goto err_out;
>         }
>
>         cleanup_err = rxe_cleanup(mr);
>         if (cleanup_err)
> -               rxe_err_mr(mr, "cleanup failed, err = %d", cleanup_err);
> +               rxe_err_mr(mr, "cleanup failed, err = %d\n", cleanup_err);
>
>         kfree_rcu_mightsleep(mr);
>         return 0;
>
>  err_out:
> -       rxe_err_mr(mr, "returned err = %d", err);
> +       rxe_err_mr(mr, "returned err = %d\n", err);
>         return err;
>  }
>
> --
> 2.29.2
>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH for-next v3 2/2] RDMA/rxe: Call rxe_set_mtu after rxe_register_device
  2023-09-18  2:05 ` [PATCH for-next v3 2/2] RDMA/rxe: Call rxe_set_mtu after rxe_register_device Li Zhijian
@ 2023-09-18 12:37   ` Leon Romanovsky
  2023-09-19  0:57     ` Zhijian Li (Fujitsu)
  0 siblings, 1 reply; 10+ messages in thread
From: Leon Romanovsky @ 2023-09-18 12:37 UTC (permalink / raw)
  To: Li Zhijian
  Cc: linux-rdma, zyjzyj2000, jgg, linux-kernel, rpearsonhpe,
	Daisuke Matsuda, Zhu Yanjun

On Mon, Sep 18, 2023 at 10:05:43AM +0800, Li Zhijian wrote:
> rxe_set_mtu() will call rxe_info_dev() to print message, and
> rxe_info_dev() expects dev_name(rxe->ib_dev->dev) has been assigned.
> 
> Previously since dev_name() is not set, when a new rxe link is being
> added, 'null' will be used as the dev_name like:
> 
> "(null): rxe_set_mtu: Set mtu to 1024"
> 
> Move rxe_register_device() earlier to assign the correct dev_name
> so that it can be read by rxe_set_mtu() later.

I would expect removal of that print line instead of moving
rxe_register_device().

Thanks

> 
> And it's safe to do such change since mtu will not be used during the
> rxe_register_device()
> 
> After this change, the message becomes:
> "rxe_eth0: rxe_set_mtu: Set mtu to 4096"
> 
> Fixes: 9ac01f434a1e ("RDMA/rxe: Extend dbg log messages to err and info")
> Reviewed-by: Daisuke Matsuda <matsuda-daisuke@fujitsu.com>
> Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
> Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
> ---
>  drivers/infiniband/sw/rxe/rxe.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/infiniband/sw/rxe/rxe.c b/drivers/infiniband/sw/rxe/rxe.c
> index a086d588e159..8a43c0c4f8d8 100644
> --- a/drivers/infiniband/sw/rxe/rxe.c
> +++ b/drivers/infiniband/sw/rxe/rxe.c
> @@ -169,10 +169,13 @@ void rxe_set_mtu(struct rxe_dev *rxe, unsigned int ndev_mtu)
>   */
>  int rxe_add(struct rxe_dev *rxe, unsigned int mtu, const char *ibdev_name)
>  {
> +	int ret;
> +
>  	rxe_init(rxe);
> +	ret = rxe_register_device(rxe, ibdev_name);
>  	rxe_set_mtu(rxe, mtu);
>  
> -	return rxe_register_device(rxe, ibdev_name);
> +	return ret;
>  }
>  
>  static int rxe_newlink(const char *ibdev_name, struct net_device *ndev)
> -- 
> 2.29.2
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH for-next v3 2/2] RDMA/rxe: Call rxe_set_mtu after rxe_register_device
  2023-09-18 12:37   ` Leon Romanovsky
@ 2023-09-19  0:57     ` Zhijian Li (Fujitsu)
  2023-09-19  1:11       ` Zhu Yanjun
  0 siblings, 1 reply; 10+ messages in thread
From: Zhijian Li (Fujitsu) @ 2023-09-19  0:57 UTC (permalink / raw)
  To: Leon Romanovsky
  Cc: linux-rdma@vger.kernel.org, zyjzyj2000@gmail.com, jgg@ziepe.ca,
	linux-kernel@vger.kernel.org, rpearsonhpe@gmail.com,
	Daisuke Matsuda (Fujitsu), Zhu Yanjun



On 18/09/2023 20:37, Leon Romanovsky wrote:
> On Mon, Sep 18, 2023 at 10:05:43AM +0800, Li Zhijian wrote:
>> rxe_set_mtu() will call rxe_info_dev() to print message, and
>> rxe_info_dev() expects dev_name(rxe->ib_dev->dev) has been assigned.
>>
>> Previously since dev_name() is not set, when a new rxe link is being
>> added, 'null' will be used as the dev_name like:
>>
>> "(null): rxe_set_mtu: Set mtu to 1024"
>>
>> Move rxe_register_device() earlier to assign the correct dev_name
>> so that it can be read by rxe_set_mtu() later.
> 
> I would expect removal of that print line instead of moving
> rxe_register_device().


I also struggled with this point. The last option is keep it as it is.
Once rxe is registered, this print will work fine.

Thanks
Zhijian


> 
> Thanks
> 
>>
>> And it's safe to do such change since mtu will not be used during the
>> rxe_register_device()
>>
>> After this change, the message becomes:
>> "rxe_eth0: rxe_set_mtu: Set mtu to 4096"
>>
>> Fixes: 9ac01f434a1e ("RDMA/rxe: Extend dbg log messages to err and info")
>> Reviewed-by: Daisuke Matsuda <matsuda-daisuke@fujitsu.com>
>> Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
>> Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
>> ---
>>   drivers/infiniband/sw/rxe/rxe.c | 5 ++++-
>>   1 file changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/infiniband/sw/rxe/rxe.c b/drivers/infiniband/sw/rxe/rxe.c
>> index a086d588e159..8a43c0c4f8d8 100644
>> --- a/drivers/infiniband/sw/rxe/rxe.c
>> +++ b/drivers/infiniband/sw/rxe/rxe.c
>> @@ -169,10 +169,13 @@ void rxe_set_mtu(struct rxe_dev *rxe, unsigned int ndev_mtu)
>>    */
>>   int rxe_add(struct rxe_dev *rxe, unsigned int mtu, const char *ibdev_name)
>>   {
>> +	int ret;
>> +
>>   	rxe_init(rxe);
>> +	ret = rxe_register_device(rxe, ibdev_name);
>>   	rxe_set_mtu(rxe, mtu);
>>   
>> -	return rxe_register_device(rxe, ibdev_name);
>> +	return ret;
>>   }
>>   
>>   static int rxe_newlink(const char *ibdev_name, struct net_device *ndev)
>> -- 
>> 2.29.2
>>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH for-next v3 2/2] RDMA/rxe: Call rxe_set_mtu after rxe_register_device
  2023-09-19  0:57     ` Zhijian Li (Fujitsu)
@ 2023-09-19  1:11       ` Zhu Yanjun
  2023-09-19  3:25         ` Zhijian Li (Fujitsu)
  0 siblings, 1 reply; 10+ messages in thread
From: Zhu Yanjun @ 2023-09-19  1:11 UTC (permalink / raw)
  To: Zhijian Li (Fujitsu)
  Cc: Leon Romanovsky, linux-rdma@vger.kernel.org, jgg@ziepe.ca,
	linux-kernel@vger.kernel.org, rpearsonhpe@gmail.com,
	Daisuke Matsuda (Fujitsu), Zhu Yanjun

On Tue, Sep 19, 2023 at 8:57 AM Zhijian Li (Fujitsu)
<lizhijian@fujitsu.com> wrote:
>
>
>
> On 18/09/2023 20:37, Leon Romanovsky wrote:
> > On Mon, Sep 18, 2023 at 10:05:43AM +0800, Li Zhijian wrote:
> >> rxe_set_mtu() will call rxe_info_dev() to print message, and
> >> rxe_info_dev() expects dev_name(rxe->ib_dev->dev) has been assigned.
> >>
> >> Previously since dev_name() is not set, when a new rxe link is being
> >> added, 'null' will be used as the dev_name like:
> >>
> >> "(null): rxe_set_mtu: Set mtu to 1024"
> >>
> >> Move rxe_register_device() earlier to assign the correct dev_name
> >> so that it can be read by rxe_set_mtu() later.
> >
> > I would expect removal of that print line instead of moving
> > rxe_register_device().
>
>
> I also struggled with this point. The last option is keep it as it is.
> Once rxe is registered, this print will work fine.

I delved into the source code. About moving rxe_register_device, I
could not find any harm to the driver.
So I think this is also a solution to this problem.

Zhu Yanjun

>
> Thanks
> Zhijian
>
>
> >
> > Thanks
> >
> >>
> >> And it's safe to do such change since mtu will not be used during the
> >> rxe_register_device()
> >>
> >> After this change, the message becomes:
> >> "rxe_eth0: rxe_set_mtu: Set mtu to 4096"
> >>
> >> Fixes: 9ac01f434a1e ("RDMA/rxe: Extend dbg log messages to err and info")
> >> Reviewed-by: Daisuke Matsuda <matsuda-daisuke@fujitsu.com>
> >> Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
> >> Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
> >> ---
> >>   drivers/infiniband/sw/rxe/rxe.c | 5 ++++-
> >>   1 file changed, 4 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/infiniband/sw/rxe/rxe.c b/drivers/infiniband/sw/rxe/rxe.c
> >> index a086d588e159..8a43c0c4f8d8 100644
> >> --- a/drivers/infiniband/sw/rxe/rxe.c
> >> +++ b/drivers/infiniband/sw/rxe/rxe.c
> >> @@ -169,10 +169,13 @@ void rxe_set_mtu(struct rxe_dev *rxe, unsigned int ndev_mtu)
> >>    */
> >>   int rxe_add(struct rxe_dev *rxe, unsigned int mtu, const char *ibdev_name)
> >>   {
> >> +    int ret;
> >> +
> >>      rxe_init(rxe);
> >> +    ret = rxe_register_device(rxe, ibdev_name);
> >>      rxe_set_mtu(rxe, mtu);
> >>
> >> -    return rxe_register_device(rxe, ibdev_name);
> >> +    return ret;
> >>   }
> >>
> >>   static int rxe_newlink(const char *ibdev_name, struct net_device *ndev)
> >> --
> >> 2.29.2
> >>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH for-next v3 2/2] RDMA/rxe: Call rxe_set_mtu after rxe_register_device
  2023-09-19  1:11       ` Zhu Yanjun
@ 2023-09-19  3:25         ` Zhijian Li (Fujitsu)
  2023-09-19  4:01           ` Zhu Yanjun
  2023-09-19  8:19           ` Leon Romanovsky
  0 siblings, 2 replies; 10+ messages in thread
From: Zhijian Li (Fujitsu) @ 2023-09-19  3:25 UTC (permalink / raw)
  To: Zhu Yanjun
  Cc: Leon Romanovsky, linux-rdma@vger.kernel.org, jgg@ziepe.ca,
	linux-kernel@vger.kernel.org, rpearsonhpe@gmail.com,
	Daisuke Matsuda (Fujitsu), Zhu Yanjun



On 19/09/2023 09:11, Zhu Yanjun wrote:
> On Tue, Sep 19, 2023 at 8:57 AM Zhijian Li (Fujitsu)
> <lizhijian@fujitsu.com> wrote:
>>
>>
>>
>> On 18/09/2023 20:37, Leon Romanovsky wrote:
>>> On Mon, Sep 18, 2023 at 10:05:43AM +0800, Li Zhijian wrote:
>>>> rxe_set_mtu() will call rxe_info_dev() to print message, and
>>>> rxe_info_dev() expects dev_name(rxe->ib_dev->dev) has been assigned.
>>>>
>>>> Previously since dev_name() is not set, when a new rxe link is being
>>>> added, 'null' will be used as the dev_name like:
>>>>
>>>> "(null): rxe_set_mtu: Set mtu to 1024"
>>>>
>>>> Move rxe_register_device() earlier to assign the correct dev_name
>>>> so that it can be read by rxe_set_mtu() later.
>>>
>>> I would expect removal of that print line instead of moving
>>> rxe_register_device().
>>
>>
>> I also struggled with this point. The last option is keep it as it is.
>> Once rxe is registered, this print will work fine.
> 
> I delved into the source code. About moving rxe_register_device, I
> could not find any harm to the driver.

The point i'm struggling was that, it's strange/opaque to move rxe_register_device().
There is no doubt that the original order was more clear.

In terms of the message content, is it valuable to print(pr_info) this message, i noticed
that there is a duplicate pr_dbg() in rxe_notify().

rxe's mtu is always same with the NIC, isn't it ?

Thanks
Zhijian



> So I think this is also a solution to this problem.
> 
> Zhu Yanjun
> 
>>
>> Thanks
>> Zhijian
>>
>>
>>>
>>> Thanks
>>>
>>>>
>>>> And it's safe to do such change since mtu will not be used during the
>>>> rxe_register_device()
>>>>
>>>> After this change, the message becomes:
>>>> "rxe_eth0: rxe_set_mtu: Set mtu to 4096"
>>>>
>>>> Fixes: 9ac01f434a1e ("RDMA/rxe: Extend dbg log messages to err and info")
>>>> Reviewed-by: Daisuke Matsuda <matsuda-daisuke@fujitsu.com>
>>>> Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
>>>> Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
>>>> ---
>>>>    drivers/infiniband/sw/rxe/rxe.c | 5 ++++-
>>>>    1 file changed, 4 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/infiniband/sw/rxe/rxe.c b/drivers/infiniband/sw/rxe/rxe.c
>>>> index a086d588e159..8a43c0c4f8d8 100644
>>>> --- a/drivers/infiniband/sw/rxe/rxe.c
>>>> +++ b/drivers/infiniband/sw/rxe/rxe.c
>>>> @@ -169,10 +169,13 @@ void rxe_set_mtu(struct rxe_dev *rxe, unsigned int ndev_mtu)
>>>>     */
>>>>    int rxe_add(struct rxe_dev *rxe, unsigned int mtu, const char *ibdev_name)
>>>>    {
>>>> +    int ret;
>>>> +
>>>>       rxe_init(rxe);
>>>> +    ret = rxe_register_device(rxe, ibdev_name);
>>>>       rxe_set_mtu(rxe, mtu);
>>>>
>>>> -    return rxe_register_device(rxe, ibdev_name);
>>>> +    return ret;
>>>>    }
>>>>
>>>>    static int rxe_newlink(const char *ibdev_name, struct net_device *ndev)
>>>> --
>>>> 2.29.2
>>>>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH for-next v3 2/2] RDMA/rxe: Call rxe_set_mtu after rxe_register_device
  2023-09-19  3:25         ` Zhijian Li (Fujitsu)
@ 2023-09-19  4:01           ` Zhu Yanjun
  2023-09-19  8:19           ` Leon Romanovsky
  1 sibling, 0 replies; 10+ messages in thread
From: Zhu Yanjun @ 2023-09-19  4:01 UTC (permalink / raw)
  To: Zhijian Li (Fujitsu), Zhu Yanjun
  Cc: Leon Romanovsky, linux-rdma@vger.kernel.org, jgg@ziepe.ca,
	linux-kernel@vger.kernel.org, rpearsonhpe@gmail.com,
	Daisuke Matsuda (Fujitsu)


在 2023/9/19 11:25, Zhijian Li (Fujitsu) 写道:
>
> On 19/09/2023 09:11, Zhu Yanjun wrote:
>> On Tue, Sep 19, 2023 at 8:57 AM Zhijian Li (Fujitsu)
>> <lizhijian@fujitsu.com> wrote:
>>>
>>>
>>> On 18/09/2023 20:37, Leon Romanovsky wrote:
>>>> On Mon, Sep 18, 2023 at 10:05:43AM +0800, Li Zhijian wrote:
>>>>> rxe_set_mtu() will call rxe_info_dev() to print message, and
>>>>> rxe_info_dev() expects dev_name(rxe->ib_dev->dev) has been assigned.
>>>>>
>>>>> Previously since dev_name() is not set, when a new rxe link is being
>>>>> added, 'null' will be used as the dev_name like:
>>>>>
>>>>> "(null): rxe_set_mtu: Set mtu to 1024"
>>>>>
>>>>> Move rxe_register_device() earlier to assign the correct dev_name
>>>>> so that it can be read by rxe_set_mtu() later.
>>>> I would expect removal of that print line instead of moving
>>>> rxe_register_device().
>>>
>>> I also struggled with this point. The last option is keep it as it is.
>>> Once rxe is registered, this print will work fine.
>> I delved into the source code. About moving rxe_register_device, I
>> could not find any harm to the driver.
> The point i'm struggling was that, it's strange/opaque to move rxe_register_device().
> There is no doubt that the original order was more clear.


Please check the source code. It is very clear.


> In terms of the message content, is it valuable to print(pr_info) this message, i noticed
> that there is a duplicate pr_dbg() in rxe_notify().


rxe_notify is for netdevice event, not for rdma event.


>
> rxe's mtu is always same with the NIC, isn't it ?

Please check the following source code.

void rxe_set_mtu(struct rxe_dev *rxe, unsigned int ndev_mtu)

{
         struct rxe_port *port = &rxe->port;
         enum ib_mtu mtu;

         mtu = eth_mtu_int_to_enum(ndev_mtu);

         /* Make sure that new MTU in range */
         mtu = mtu ? min_t(enum ib_mtu, mtu, IB_MTU_4096) : IB_MTU_256;

         port->attr.active_mtu = mtu;
         port->mtu_cap = ib_mtu_enum_to_int(mtu);

         rxe_info_dev(rxe, "Set mtu to %d", port->mtu_cap);
}

Zhu Yanjun


>
> Thanks
> Zhijian
>
>
>
>> So I think this is also a solution to this problem.
>>
>> Zhu Yanjun
>>
>>> Thanks
>>> Zhijian
>>>
>>>
>>>> Thanks
>>>>
>>>>> And it's safe to do such change since mtu will not be used during the
>>>>> rxe_register_device()
>>>>>
>>>>> After this change, the message becomes:
>>>>> "rxe_eth0: rxe_set_mtu: Set mtu to 4096"
>>>>>
>>>>> Fixes: 9ac01f434a1e ("RDMA/rxe: Extend dbg log messages to err and info")
>>>>> Reviewed-by: Daisuke Matsuda <matsuda-daisuke@fujitsu.com>
>>>>> Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
>>>>> Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
>>>>> ---
>>>>>     drivers/infiniband/sw/rxe/rxe.c | 5 ++++-
>>>>>     1 file changed, 4 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/drivers/infiniband/sw/rxe/rxe.c b/drivers/infiniband/sw/rxe/rxe.c
>>>>> index a086d588e159..8a43c0c4f8d8 100644
>>>>> --- a/drivers/infiniband/sw/rxe/rxe.c
>>>>> +++ b/drivers/infiniband/sw/rxe/rxe.c
>>>>> @@ -169,10 +169,13 @@ void rxe_set_mtu(struct rxe_dev *rxe, unsigned int ndev_mtu)
>>>>>      */
>>>>>     int rxe_add(struct rxe_dev *rxe, unsigned int mtu, const char *ibdev_name)
>>>>>     {
>>>>> +    int ret;
>>>>> +
>>>>>        rxe_init(rxe);
>>>>> +    ret = rxe_register_device(rxe, ibdev_name);
>>>>>        rxe_set_mtu(rxe, mtu);
>>>>>
>>>>> -    return rxe_register_device(rxe, ibdev_name);
>>>>> +    return ret;
>>>>>     }
>>>>>
>>>>>     static int rxe_newlink(const char *ibdev_name, struct net_device *ndev)
>>>>> --
>>>>> 2.29.2
>>>> >

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH for-next v3 2/2] RDMA/rxe: Call rxe_set_mtu after rxe_register_device
  2023-09-19  3:25         ` Zhijian Li (Fujitsu)
  2023-09-19  4:01           ` Zhu Yanjun
@ 2023-09-19  8:19           ` Leon Romanovsky
  2023-09-20 10:24             ` Zhijian Li (Fujitsu)
  1 sibling, 1 reply; 10+ messages in thread
From: Leon Romanovsky @ 2023-09-19  8:19 UTC (permalink / raw)
  To: Zhijian Li (Fujitsu)
  Cc: Zhu Yanjun, linux-rdma@vger.kernel.org, jgg@ziepe.ca,
	linux-kernel@vger.kernel.org, rpearsonhpe@gmail.com,
	Daisuke Matsuda (Fujitsu), Zhu Yanjun

On Tue, Sep 19, 2023 at 03:25:00AM +0000, Zhijian Li (Fujitsu) wrote:
> 
> 
> On 19/09/2023 09:11, Zhu Yanjun wrote:
> > On Tue, Sep 19, 2023 at 8:57 AM Zhijian Li (Fujitsu)
> > <lizhijian@fujitsu.com> wrote:
> >>
> >>
> >>
> >> On 18/09/2023 20:37, Leon Romanovsky wrote:
> >>> On Mon, Sep 18, 2023 at 10:05:43AM +0800, Li Zhijian wrote:
> >>>> rxe_set_mtu() will call rxe_info_dev() to print message, and
> >>>> rxe_info_dev() expects dev_name(rxe->ib_dev->dev) has been assigned.
> >>>>
> >>>> Previously since dev_name() is not set, when a new rxe link is being
> >>>> added, 'null' will be used as the dev_name like:
> >>>>
> >>>> "(null): rxe_set_mtu: Set mtu to 1024"
> >>>>
> >>>> Move rxe_register_device() earlier to assign the correct dev_name
> >>>> so that it can be read by rxe_set_mtu() later.
> >>>
> >>> I would expect removal of that print line instead of moving
> >>> rxe_register_device().
> >>
> >>
> >> I also struggled with this point. The last option is keep it as it is.
> >> Once rxe is registered, this print will work fine.
> > 
> > I delved into the source code. About moving rxe_register_device, I
> > could not find any harm to the driver.
> 
> The point i'm struggling was that, it's strange/opaque to move rxe_register_device().
> There is no doubt that the original order was more clear.
> 
> In terms of the message content, is it valuable to print(pr_info) this message

I doubt if that print has any value in day-to-day use of RXE.

Thanks

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH for-next v3 2/2] RDMA/rxe: Call rxe_set_mtu after rxe_register_device
  2023-09-19  8:19           ` Leon Romanovsky
@ 2023-09-20 10:24             ` Zhijian Li (Fujitsu)
  0 siblings, 0 replies; 10+ messages in thread
From: Zhijian Li (Fujitsu) @ 2023-09-20 10:24 UTC (permalink / raw)
  To: Leon Romanovsky, Bob Pearson
  Cc: Zhu Yanjun, linux-rdma@vger.kernel.org, jgg@ziepe.ca,
	linux-kernel@vger.kernel.org, rpearsonhpe@gmail.com,
	Daisuke Matsuda (Fujitsu), Zhu Yanjun



On 19/09/2023 16:19, Leon Romanovsky wrote:
> On Tue, Sep 19, 2023 at 03:25:00AM +0000, Zhijian Li (Fujitsu) wrote:
>>
>>
>> On 19/09/2023 09:11, Zhu Yanjun wrote:
>>> On Tue, Sep 19, 2023 at 8:57 AM Zhijian Li (Fujitsu)
>>> <lizhijian@fujitsu.com> wrote:
>>>>
>>>>
>>>>
>>>> On 18/09/2023 20:37, Leon Romanovsky wrote:
>>>>> On Mon, Sep 18, 2023 at 10:05:43AM +0800, Li Zhijian wrote:
>>>>>> rxe_set_mtu() will call rxe_info_dev() to print message, and
>>>>>> rxe_info_dev() expects dev_name(rxe->ib_dev->dev) has been assigned.
>>>>>>
>>>>>> Previously since dev_name() is not set, when a new rxe link is being
>>>>>> added, 'null' will be used as the dev_name like:
>>>>>>
>>>>>> "(null): rxe_set_mtu: Set mtu to 1024"
>>>>>>
>>>>>> Move rxe_register_device() earlier to assign the correct dev_name
>>>>>> so that it can be read by rxe_set_mtu() later.
>>>>>
>>>>> I would expect removal of that print line instead of moving
>>>>> rxe_register_device().
>>>>
>>>>
>>>> I also struggled with this point. The last option is keep it as it is.
>>>> Once rxe is registered, this print will work fine.
>>>
>>> I delved into the source code. About moving rxe_register_device, I
>>> could not find any harm to the driver.
>>
>> The point i'm struggling was that, it's strange/opaque to move rxe_register_device().
>> There is no doubt that the original order was more clear.
>>
>> In terms of the message content, is it valuable to print(pr_info) this message
> 
> I doubt if that print has any value in day-to-day use of RXE.


Bob,

As you are one of the active RXE users, any comments about this print content.


Thanks


> 
> Thanks

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2023-09-20 10:24 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-18  2:05 [PATCH for-next v3 1/2] RDMA/rxe: Improve newline in printing messages Li Zhijian
2023-09-18  2:05 ` [PATCH for-next v3 2/2] RDMA/rxe: Call rxe_set_mtu after rxe_register_device Li Zhijian
2023-09-18 12:37   ` Leon Romanovsky
2023-09-19  0:57     ` Zhijian Li (Fujitsu)
2023-09-19  1:11       ` Zhu Yanjun
2023-09-19  3:25         ` Zhijian Li (Fujitsu)
2023-09-19  4:01           ` Zhu Yanjun
2023-09-19  8:19           ` Leon Romanovsky
2023-09-20 10:24             ` Zhijian Li (Fujitsu)
2023-09-18  7:26 ` [PATCH for-next v3 1/2] RDMA/rxe: Improve newline in printing messages Zhu Yanjun

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.