linux-rdma.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Weihang Li <liweihang@hisilicon.com>
To: <jgg@ziepe.ca>, <leon@kernel.org>
Cc: <dledford@redhat.com>, <linux-rdma@vger.kernel.org>,
	<linuxarm@huawei.com>
Subject: [PATCH rdma-core] libhns: Use syslog for debugging while no print by default
Date: Fri, 1 Nov 2019 10:13:45 +0800	[thread overview]
Message-ID: <1572574425-41927-1-git-send-email-liweihang@hisilicon.com> (raw)

From: Lang Cheng <chenglang@huawei.com>

There should be no fprintf/printf in libraries by default unless
debugging. So replace all fprintf/printf in libhns with a macro that is
controlled by HNS_ROCE_DEBUG.
This patch also standardizes all printtings to maintain a uniform style.

Signed-off-by: Lang Cheng <chenglang@huawei.com>
Signed-off-by: Weihang Li <liweihang@hisilicon.com>
---
 providers/hns/hns_roce_u.c       | 12 +++++++-----
 providers/hns/hns_roce_u.h       | 13 +++++++++++--
 providers/hns/hns_roce_u_hw_v1.c | 28 ++++++++++++++--------------
 providers/hns/hns_roce_u_hw_v2.c | 18 +++++++++---------
 providers/hns/hns_roce_u_verbs.c | 36 ++++++++++++++++++------------------
 5 files changed, 59 insertions(+), 48 deletions(-)

diff --git a/providers/hns/hns_roce_u.c b/providers/hns/hns_roce_u.c
index 5872599..8433a90 100644
--- a/providers/hns/hns_roce_u.c
+++ b/providers/hns/hns_roce_u.c
@@ -115,7 +115,7 @@ static struct verbs_context *hns_roce_alloc_context(struct ibv_device *ibdev,
 	context->uar = mmap(NULL, to_hr_dev(ibdev)->page_size,
 			    PROT_READ | PROT_WRITE, MAP_SHARED, cmd_fd, 0);
 	if (context->uar == MAP_FAILED) {
-		fprintf(stderr, PFX "Warning: failed to mmap() uar page.\n");
+		HR_LOG("Failed to mmap() uar page!\n");
 		goto err_free;
 	}
 
@@ -128,8 +128,7 @@ static struct verbs_context *hns_roce_alloc_context(struct ibv_device *ibdev,
 					     PROT_READ | PROT_WRITE, MAP_SHARED,
 					     cmd_fd, HNS_ROCE_TPTR_OFFSET);
 		if (context->cq_tptr_base == MAP_FAILED) {
-			fprintf(stderr,
-				PFX "Warning: Failed to mmap cq_tptr page.\n");
+			HR_LOG("Failed to mmap() cq_tptr page!\n");
 			goto db_free;
 		}
 	}
@@ -150,8 +149,9 @@ static struct verbs_context *hns_roce_alloc_context(struct ibv_device *ibdev,
 
 tptr_free:
 	if (hr_dev->hw_version == HNS_ROCE_HW_VER1) {
-		if (munmap(context->cq_tptr_base, HNS_ROCE_CQ_DB_BUF_SIZE))
-			fprintf(stderr, PFX "Warning: Munmap tptr failed.\n");
+		if (munmap(context->cq_tptr_base, HNS_ROCE_CQ_DB_BUF_SIZE)) {
+			HR_LOG("Failed to munmap() cq_tptr page!\n");
+		}
 		context->cq_tptr_base = NULL;
 	}
 
@@ -192,6 +192,8 @@ static struct verbs_device *hns_device_alloc(struct verbs_sysfs_dev *sysfs_dev)
 	if (!dev)
 		return NULL;
 
+	OPEN_LOG("hns");
+
 	dev->u_hw = sysfs_dev->match->driver_data;
 	dev->hw_version = dev->u_hw->hw_version;
 	dev->page_size   = sysconf(_SC_PAGESIZE);
diff --git a/providers/hns/hns_roce_u.h b/providers/hns/hns_roce_u.h
index 23e0f13..da397a9 100644
--- a/providers/hns/hns_roce_u.h
+++ b/providers/hns/hns_roce_u.h
@@ -47,8 +47,6 @@
 
 #define HNS_ROCE_HW_VER2		('h' << 24 | 'i' << 16 | '0' << 8 | '8')
 
-#define PFX				"hns: "
-
 #define HNS_ROCE_MAX_INLINE_DATA_LEN	32
 #define HNS_ROCE_MAX_CQ_NUM		0x10000
 #define HNS_ROCE_MAX_SRQWQE_NUM		0x8000
@@ -56,6 +54,17 @@
 #define HNS_ROCE_MIN_CQE_NUM		0x40
 #define HNS_ROCE_MIN_WQE_NUM		0x20
 
+#ifdef HNS_ROCE_DEBUG
+#include <syslog.h>
+#define OPEN_LOG(s)			openlog(s, LOG_NDELAY|LOG_PID, LOG_USER)
+#define HR_LOG_DBG(level, fmt, args...)	syslog(level, fmt, ##args)
+#define HR_LOG(fmt, args...)		syslog(LOG_ERR, fmt, ##args)
+#else
+#define OPEN_LOG(s)
+#define HR_LOG_DBG(level, fmt, args...)
+#define HR_LOG(fmt, args...)
+#endif
+
 #define HNS_ROCE_CQE_ENTRY_SIZE		0x20
 #define HNS_ROCE_SQWQE_SHIFT		6
 #define HNS_ROCE_SGE_IN_WQE		2
diff --git a/providers/hns/hns_roce_u_hw_v1.c b/providers/hns/hns_roce_u_hw_v1.c
index fceb57a..9324bce 100644
--- a/providers/hns/hns_roce_u_hw_v1.c
+++ b/providers/hns/hns_roce_u_hw_v1.c
@@ -117,7 +117,7 @@ static void hns_roce_update_cq_cons_index(struct hns_roce_context *ctx,
 static void hns_roce_handle_error_cqe(struct hns_roce_cqe *cqe,
 				      struct ibv_wc *wc)
 {
-	fprintf(stderr, PFX "error cqe!\n");
+	HR_LOG("Error cqe!\n");
 	switch (roce_get_field(cqe->cqe_byte_4,
 			       CQE_BYTE_4_STATUS_OF_THE_OPERATION_M,
 			       CQE_BYTE_4_STATUS_OF_THE_OPERATION_S) &
@@ -185,7 +185,8 @@ static struct hns_roce_cqe *next_cqe_sw(struct hns_roce_cq *cq)
 static void *get_recv_wqe(struct hns_roce_qp *qp, int n)
 {
 	if ((n < 0) || (n > qp->rq.wqe_cnt)) {
-		printf("rq wqe index:%d,rq wqe cnt:%d\r\n", n, qp->rq.wqe_cnt);
+		HR_LOG("rq wqe index = %d, rq wqe cnt = %d\n", n,
+		       qp->rq.wqe_cnt);
 		return NULL;
 	}
 
@@ -195,7 +196,8 @@ static void *get_recv_wqe(struct hns_roce_qp *qp, int n)
 static void *get_send_wqe(struct hns_roce_qp *qp, int n)
 {
 	if ((n < 0) || (n > qp->sq.wqe_cnt)) {
-		printf("sq wqe index:%d,sq wqe cnt:%d\r\n", n, qp->sq.wqe_cnt);
+		HR_LOG("sq wqe index = %d, sq wqe cnt = %d\n", n,
+		       qp->sq.wqe_cnt);
 		return NULL;
 	}
 
@@ -216,8 +218,8 @@ static int hns_roce_wq_overflow(struct hns_roce_wq *wq, int nreq,
 	cur = wq->head - wq->tail;
 	pthread_spin_unlock(&cq->lock);
 
-	printf("wq:(head = %d, tail = %d, max_post = %d), nreq = 0x%x\n",
-		wq->head, wq->tail, wq->max_post, nreq);
+	HR_LOG("wq: (head = %d, tail = %d, max_post = %d), nreq = 0x%x\n",
+	       wq->head, wq->tail, wq->max_post, nreq);
 
 	return cur + nreq >= wq->max_post;
 }
@@ -227,12 +229,10 @@ static struct hns_roce_qp *hns_roce_find_qp(struct hns_roce_context *ctx,
 {
 	int tind = (qpn & (ctx->num_qps - 1)) >> ctx->qp_table_shift;
 
-	if (ctx->qp_table[tind].refcnt) {
+	if (ctx->qp_table[tind].refcnt)
 		return ctx->qp_table[tind].table[qpn & ctx->qp_table_mask];
-	} else {
-		printf("hns_roce_find_qp fail!\n");
+	else
 		return NULL;
-	}
 }
 
 static void hns_roce_clear_qp(struct hns_roce_context *ctx, uint32_t qpn)
@@ -282,7 +282,7 @@ static int hns_roce_v1_poll_one(struct hns_roce_cq *cq,
 		*cur_qp = hns_roce_find_qp(to_hr_ctx(cq->ibv_cq.context),
 					   qpn & 0xffffff);
 		if (!*cur_qp) {
-			fprintf(stderr, PFX "can't find qp!\n");
+			HR_LOG("Failed to find qp!\n");
 			return CQ_POLL_ERR;
 		}
 	}
@@ -487,8 +487,8 @@ static int hns_roce_u_v1_post_send(struct ibv_qp *ibvqp, struct ibv_send_wr *wr,
 		if (wr->num_sge > qp->sq.max_gs) {
 			ret = -1;
 			*bad_wr = wr;
-			printf("wr->num_sge(<=%d) = %d, check failed!\r\n",
-				qp->sq.max_gs, wr->num_sge);
+			HR_LOG("sge_num(<=%d) = %d, check failed!\n",
+			       qp->sq.max_gs, wr->num_sge);
 			goto out;
 		}
 
@@ -557,7 +557,7 @@ static int hns_roce_u_v1_post_send(struct ibv_qp *ibvqp, struct ibv_send_wr *wr,
 			if (le32toh(ctrl->msg_length) > qp->max_inline_data) {
 				ret = -1;
 				*bad_wr = wr;
-				printf("inline data len(1-32)=%d, send_flags = 0x%x, check failed!\r\n",
+				HR_LOG("inline data len(1-32) = %d, send_flags = 0x%x, check failed!\n",
 					wr->send_flags, ctrl->msg_length);
 				return ret;
 			}
@@ -664,7 +664,7 @@ static int hns_roce_u_v1_modify_qp(struct ibv_qp *qp, struct ibv_qp_attr *attr,
 
 	if (!ret && (attr_mask & IBV_QP_PORT)) {
 		hr_qp->port_num = attr->port_num;
-		printf("hr_qp->port_num= 0x%x\n", hr_qp->port_num);
+		HR_LOG("port num = 0x%x\n", hr_qp->port_num);
 	}
 
 	hr_qp->sl = attr->ah_attr.sl;
diff --git a/providers/hns/hns_roce_u_hw_v2.c b/providers/hns/hns_roce_u_hw_v2.c
index 931f59d..57c6389 100644
--- a/providers/hns/hns_roce_u_hw_v2.c
+++ b/providers/hns/hns_roce_u_hw_v2.c
@@ -131,7 +131,8 @@ static struct hns_roce_v2_cqe *next_cqe_sw_v2(struct hns_roce_cq *cq)
 static void *get_recv_wqe_v2(struct hns_roce_qp *qp, int n)
 {
 	if ((n < 0) || (n > qp->rq.wqe_cnt)) {
-		printf("rq wqe index:%d,rq wqe cnt:%d\r\n", n, qp->rq.wqe_cnt);
+		HR_LOG("rq wqe index = %d, rq wqe cnt = %d\n", n,
+		       qp->rq.wqe_cnt);
 		return NULL;
 	}
 
@@ -288,7 +289,7 @@ static int hns_roce_flush_cqe(struct hns_roce_qp **cur_qp, struct ibv_wc *wc)
 		ret = hns_roce_u_v2_modify_qp(&(*cur_qp)->ibv_qp,
 						      &attr, attr_mask);
 		if (ret) {
-			fprintf(stderr, PFX "failed to modify qp!\n");
+			HR_LOG("Failed to modify qp!\n");
 			return ret;
 		}
 		(*cur_qp)->ibv_qp.state = IBV_QPS_ERR;
@@ -470,7 +471,7 @@ static int hns_roce_v2_poll_one(struct hns_roce_cq *cq,
 		*cur_qp = hns_roce_v2_find_qp(to_hr_ctx(cq->ibv_cq.context),
 					      qpn & 0xffffff);
 		if (!*cur_qp) {
-			fprintf(stderr, PFX "can't find qp!\n");
+			HR_LOG("Failed to find qp!\n");
 			return V2_CQ_POLL_ERR;
 		}
 	}
@@ -536,8 +537,7 @@ static int hns_roce_v2_poll_one(struct hns_roce_cq *cq,
 
 		ret = hns_roce_handle_recv_inl_wqe(cqe, cur_qp, wc, opcode);
 		if (ret) {
-			fprintf(stderr,
-				PFX "failed to handle recv inline wqe!\n");
+			HR_LOG("Failed to handle recv inline wqe!\n");
 			return ret;
 		}
 	}
@@ -824,7 +824,7 @@ int hns_roce_u_v2_post_send(struct ibv_qp *ibvqp, struct ibv_send_wr *wr,
 					       RC_SQ_WQE_BYTE_4_OPCODE_M,
 					       RC_SQ_WQE_BYTE_4_OPCODE_S,
 					       HNS_ROCE_WQE_OP_MASK);
-				printf("Not supported transport opcode %d\n",
+				HR_LOG("Not supported transport opcode %d\n",
 				       wr->opcode);
 				break;
 			}
@@ -846,15 +846,15 @@ int hns_roce_u_v2_post_send(struct ibv_qp *ibvqp, struct ibv_send_wr *wr,
 			if (le32toh(rc_sq_wqe->msg_len) > qp->max_inline_data) {
 				ret = EINVAL;
 				*bad_wr = wr;
-				printf("data len=%d, send_flags = 0x%x!\r\n",
-					rc_sq_wqe->msg_len, wr->send_flags);
+				HR_LOG("data len = %d, send_flags = 0x%x!\n",
+				       rc_sq_wqe->msg_len, wr->send_flags);
 				goto out;
 			}
 
 			if (wr->opcode == IBV_WR_RDMA_READ) {
 				ret = EINVAL;
 				*bad_wr = wr;
-				printf("Not supported inline data!\n");
+				HR_LOG("Not supported inline data!\n");
 				goto out;
 			}
 
diff --git a/providers/hns/hns_roce_u_verbs.c b/providers/hns/hns_roce_u_verbs.c
index 9d222c0..bda019c 100644
--- a/providers/hns/hns_roce_u_verbs.c
+++ b/providers/hns/hns_roce_u_verbs.c
@@ -128,12 +128,12 @@ struct ibv_mr *hns_roce_u_reg_mr(struct ibv_pd *pd, void *addr, size_t length,
 	struct ib_uverbs_reg_mr_resp resp;
 
 	if (!addr) {
-		fprintf(stderr, "2nd parm addr is NULL!\n");
+		HR_LOG("Invalid addr to register mr!\n");
 		return NULL;
 	}
 
 	if (!length) {
-		fprintf(stderr, "3st parm length is 0!\n");
+		HR_LOG("Invalid length to register mr!\n");
 		return NULL;
 	}
 
@@ -491,12 +491,12 @@ struct ibv_srq *hns_roce_u_create_srq(struct ibv_pd *pd,
 
 	ret = hns_roce_create_idx_que(pd, srq);
 	if (ret) {
-		fprintf(stderr, "hns_roce_create_idx_que failed!\n");
+		HR_LOG("Failed to create index queue!\n");
 		goto out;
 	}
 
 	if (hns_roce_alloc_srq_buf(pd, &srq_init_attr->attr, srq)) {
-		fprintf(stderr, "hns_roce_alloc_srq_buf failed!\n");
+		HR_LOG("Failed to allocate srq buffer!\n");
 		goto err_idx_que;
 	}
 
@@ -577,17 +577,17 @@ static int hns_roce_verify_qp(struct ibv_qp_init_attr *attr,
 
 	if (hr_dev->hw_version == HNS_ROCE_HW_VER1) {
 		if (attr->cap.max_send_wr < HNS_ROCE_MIN_WQE_NUM) {
-			fprintf(stderr,
-				"max_send_wr = %d, less than minimum WQE number.\n",
-				attr->cap.max_send_wr);
-				attr->cap.max_send_wr = HNS_ROCE_MIN_WQE_NUM;
+			HR_LOG_DBG(LOG_WARNING,
+				   "max_send_wr = %d, less than minimum WQE.\n",
+				   attr->cap.max_send_wr);
+			attr->cap.max_send_wr = HNS_ROCE_MIN_WQE_NUM;
 		}
 
 		if (attr->cap.max_recv_wr < HNS_ROCE_MIN_WQE_NUM) {
-			fprintf(stderr,
-				"max_recv_wr = %d, less than minimum WQE number.\n",
-				attr->cap.max_recv_wr);
-				attr->cap.max_recv_wr = HNS_ROCE_MIN_WQE_NUM;
+			HR_LOG_DBG(LOG_WARNING,
+				   "max_recv_wr = %d, less than minimum WQE.\n",
+				   attr->cap.max_recv_wr);
+			attr->cap.max_recv_wr = HNS_ROCE_MIN_WQE_NUM;
 		}
 	}
 
@@ -849,20 +849,20 @@ struct ibv_qp *hns_roce_u_create_qp(struct ibv_pd *pd,
 	struct hns_roce_context *context = to_hr_ctx(pd->context);
 
 	if (hns_roce_verify_qp(attr, context)) {
-		fprintf(stderr, "hns_roce_verify_sizes failed!\n");
+		HR_LOG("Failed to verify qp!\n");
 		return NULL;
 	}
 
 	qp = malloc(sizeof(*qp));
 	if (!qp) {
-		fprintf(stderr, "malloc failed!\n");
+		HR_LOG("Failed to allocate qp!\n");
 		return NULL;
 	}
 
 	hns_roce_set_qp_params(pd, attr, qp, context);
 
 	if (hns_roce_alloc_qp_buf(pd, &attr->cap, attr->qp_type, qp)) {
-		fprintf(stderr, "hns_roce_alloc_qp_buf failed!\n");
+		HR_LOG("Failed to allocate qp buffer!\n");
 		goto err_buf;
 	}
 
@@ -870,7 +870,7 @@ struct ibv_qp *hns_roce_u_create_qp(struct ibv_pd *pd,
 
 	if (pthread_spin_init(&qp->sq.lock, PTHREAD_PROCESS_PRIVATE) ||
 	    pthread_spin_init(&qp->rq.lock, PTHREAD_PROCESS_PRIVATE)) {
-		fprintf(stderr, "pthread_spin_init failed!\n");
+		HR_LOG("Failed to pthread_spin_init()!\n");
 		goto err_free;
 	}
 
@@ -891,13 +891,13 @@ struct ibv_qp *hns_roce_u_create_qp(struct ibv_pd *pd,
 	ret = ibv_cmd_create_qp(pd, &qp->ibv_qp, attr, &cmd.ibv_cmd,
 				sizeof(cmd), &resp.ibv_resp, sizeof(resp));
 	if (ret) {
-		fprintf(stderr, "ibv_cmd_create_qp failed!\n");
+		HR_LOG("Failed to create qp!\n");
 		goto err_rq_db;
 	}
 
 	ret = hns_roce_store_qp(context, qp->ibv_qp.qp_num, qp);
 	if (ret) {
-		fprintf(stderr, "hns_roce_store_qp failed!\n");
+		HR_LOG("Failed to store qp!\n");
 		goto err_destroy;
 	}
 	pthread_mutex_unlock(&context->qp_table_mutex);
-- 
2.8.1


             reply	other threads:[~2019-11-01  2:17 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-01  2:13 Weihang Li [this message]
2019-11-01  9:44 ` [PATCH rdma-core] libhns: Use syslog for debugging while no print by default Leon Romanovsky
2019-11-02  2:37   ` Weihang Li
2019-11-02  9:47     ` Leon Romanovsky
2019-11-04  2:42       ` Weihang Li

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1572574425-41927-1-git-send-email-liweihang@hisilicon.com \
    --to=liweihang@hisilicon.com \
    --cc=dledford@redhat.com \
    --cc=jgg@ziepe.ca \
    --cc=leon@kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=linuxarm@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).