diff mbox series

[for-next,v2,02/11] IB/hfi1: List all receive contexts from debugfs

Message ID 20191126141220.58836.41480.stgit@awfm-01.aw.intel.com (mailing list archive)
State Superseded
Headers show
Series rdmavt/hfi1 updates for next | expand

Commit Message

Dennis Dalessandro Nov. 26, 2019, 2:12 p.m. UTC
From: Michael J. Ruhl <michael.j.ruhl@intel.com>

The current debugfs output for receive contexts (rcds), stops after
the kernel receive contexts have been displayed.  This is not enough
information.

Display all of the receive contexts.

Augment the output with some more context information.

Limit the ring buffer header output to 5 entries to avoid
overextending they sequential file output.

Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
---
 drivers/infiniband/hw/hfi1/debugfs.c |    2 +-
 drivers/infiniband/hw/hfi1/driver.c  |   12 +++++++++---
 2 files changed, 10 insertions(+), 4 deletions(-)

Comments

Michael J. Ruhl Dec. 2, 2019, 1:30 p.m. UTC | #1
>-----Original Message-----
>From: Dalessandro, Dennis <dennis.dalessandro@intel.com>
>Sent: Tuesday, November 26, 2019 9:12 AM
>To: jgg@ziepe.ca; dledford@redhat.com
>Cc: linux-rdma@vger.kernel.org; Ruhl, Michael J <michael.j.ruhl@intel.com>;
>Marciniszyn, Mike <mike.marciniszyn@intel.com>; Wan, Kaike
><kaike.wan@intel.com>
>Subject: [PATCH for-next v2 02/11] IB/hfi1: List all receive contexts from
>debugfs
>
>From: Michael J. Ruhl <michael.j.ruhl@intel.com>
>
>The current debugfs output for receive contexts (rcds), stops after
>the kernel receive contexts have been displayed.  This is not enough
>information.
>
>Display all of the receive contexts.
>
>Augment the output with some more context information.
>
>Limit the ring buffer header output to 5 entries to avoid
>overextending they sequential file output.

Minor nit:

s/they/the

Mike

>
>Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
>Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
>Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
>Signed-off-by: Kaike Wan <kaike.wan@intel.com>
>Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
>---
> drivers/infiniband/hw/hfi1/debugfs.c |    2 +-
> drivers/infiniband/hw/hfi1/driver.c  |   12 +++++++++---
> 2 files changed, 10 insertions(+), 4 deletions(-)
>
>diff --git a/drivers/infiniband/hw/hfi1/debugfs.c
>b/drivers/infiniband/hw/hfi1/debugfs.c
>index d268bf9..4633a0c 100644
>--- a/drivers/infiniband/hw/hfi1/debugfs.c
>+++ b/drivers/infiniband/hw/hfi1/debugfs.c
>@@ -379,7 +379,7 @@ static void *_rcds_seq_next(struct seq_file *s, void *v,
>loff_t *pos)
> 	struct hfi1_devdata *dd = dd_from_dev(ibd);
>
> 	++*pos;
>-	if (!dd->rcd || *pos >= dd->n_krcv_queues)
>+	if (!dd->rcd || *pos >= dd->num_rcv_contexts)
> 		return NULL;
> 	return pos;
> }
>diff --git a/drivers/infiniband/hw/hfi1/driver.c
>b/drivers/infiniband/hw/hfi1/driver.c
>index cbc5219..8374922 100644
>--- a/drivers/infiniband/hw/hfi1/driver.c
>+++ b/drivers/infiniband/hw/hfi1/driver.c
>@@ -1726,23 +1726,29 @@ static int process_receive_invalid(struct
>hfi1_packet *packet)
> 	return RHF_RCV_CONTINUE;
> }
>
>+#define HFI1_RCVHDR_DUMP_MAX	5
>+
> void seqfile_dump_rcd(struct seq_file *s, struct hfi1_ctxtdata *rcd)
> {
> 	struct hfi1_packet packet;
> 	struct ps_mdata mdata;
>+	int i;
>
>-	seq_printf(s, "Rcd %u: RcvHdr cnt %u entsize %u %s head %llu tail
>%llu\n",
>+	seq_printf(s, "Rcd %u: RcvHdr cnt %u entsize %u %s ctrl 0x%08llx
>status 0x%08llx, head %llu tail %llu  sw head %u\n",
> 		   rcd->ctxt, get_hdrq_cnt(rcd), get_hdrqentsize(rcd),
> 		   get_dma_rtail_setting(rcd) ?
> 		   "dma_rtail" : "nodma_rtail",
>+		   read_kctxt_csr(rcd->dd, rcd->ctxt, RCV_CTXT_CTRL),
>+		   read_kctxt_csr(rcd->dd, rcd->ctxt, RCV_CTXT_STATUS),
> 		   read_uctxt_csr(rcd->dd, rcd->ctxt, RCV_HDR_HEAD) &
> 		   RCV_HDR_HEAD_HEAD_MASK,
>-		   read_uctxt_csr(rcd->dd, rcd->ctxt, RCV_HDR_TAIL));
>+		   read_uctxt_csr(rcd->dd, rcd->ctxt, RCV_HDR_TAIL),
>+		   rcd->head);
>
> 	init_packet(rcd, &packet);
> 	init_ps_mdata(&mdata, &packet);
>
>-	while (1) {
>+	for (i = 0; i < HFI1_RCVHDR_DUMP_MAX; i++) {
> 		__le32 *rhf_addr = (__le32 *)rcd->rcvhdrq + mdata.ps_head
>+
> 					 rcd->rhf_offset;
> 		struct ib_header *hdr;
diff mbox series

Patch

diff --git a/drivers/infiniband/hw/hfi1/debugfs.c b/drivers/infiniband/hw/hfi1/debugfs.c
index d268bf9..4633a0c 100644
--- a/drivers/infiniband/hw/hfi1/debugfs.c
+++ b/drivers/infiniband/hw/hfi1/debugfs.c
@@ -379,7 +379,7 @@  static void *_rcds_seq_next(struct seq_file *s, void *v, loff_t *pos)
 	struct hfi1_devdata *dd = dd_from_dev(ibd);
 
 	++*pos;
-	if (!dd->rcd || *pos >= dd->n_krcv_queues)
+	if (!dd->rcd || *pos >= dd->num_rcv_contexts)
 		return NULL;
 	return pos;
 }
diff --git a/drivers/infiniband/hw/hfi1/driver.c b/drivers/infiniband/hw/hfi1/driver.c
index cbc5219..8374922 100644
--- a/drivers/infiniband/hw/hfi1/driver.c
+++ b/drivers/infiniband/hw/hfi1/driver.c
@@ -1726,23 +1726,29 @@  static int process_receive_invalid(struct hfi1_packet *packet)
 	return RHF_RCV_CONTINUE;
 }
 
+#define HFI1_RCVHDR_DUMP_MAX	5
+
 void seqfile_dump_rcd(struct seq_file *s, struct hfi1_ctxtdata *rcd)
 {
 	struct hfi1_packet packet;
 	struct ps_mdata mdata;
+	int i;
 
-	seq_printf(s, "Rcd %u: RcvHdr cnt %u entsize %u %s head %llu tail %llu\n",
+	seq_printf(s, "Rcd %u: RcvHdr cnt %u entsize %u %s ctrl 0x%08llx status 0x%08llx, head %llu tail %llu  sw head %u\n",
 		   rcd->ctxt, get_hdrq_cnt(rcd), get_hdrqentsize(rcd),
 		   get_dma_rtail_setting(rcd) ?
 		   "dma_rtail" : "nodma_rtail",
+		   read_kctxt_csr(rcd->dd, rcd->ctxt, RCV_CTXT_CTRL),
+		   read_kctxt_csr(rcd->dd, rcd->ctxt, RCV_CTXT_STATUS),
 		   read_uctxt_csr(rcd->dd, rcd->ctxt, RCV_HDR_HEAD) &
 		   RCV_HDR_HEAD_HEAD_MASK,
-		   read_uctxt_csr(rcd->dd, rcd->ctxt, RCV_HDR_TAIL));
+		   read_uctxt_csr(rcd->dd, rcd->ctxt, RCV_HDR_TAIL),
+		   rcd->head);
 
 	init_packet(rcd, &packet);
 	init_ps_mdata(&mdata, &packet);
 
-	while (1) {
+	for (i = 0; i < HFI1_RCVHDR_DUMP_MAX; i++) {
 		__le32 *rhf_addr = (__le32 *)rcd->rcvhdrq + mdata.ps_head +
 					 rcd->rhf_offset;
 		struct ib_header *hdr;