>-----Original Message----- >From: Dalessandro, Dennis <dennis.dalessandro@xxxxxxxxx> >Sent: Tuesday, November 26, 2019 9:12 AM >To: jgg@xxxxxxxx; dledford@xxxxxxxxxx >Cc: linux-rdma@xxxxxxxxxxxxxxx; Ruhl, Michael J <michael.j.ruhl@xxxxxxxxx>; >Marciniszyn, Mike <mike.marciniszyn@xxxxxxxxx>; Wan, Kaike ><kaike.wan@xxxxxxxxx> >Subject: [PATCH for-next v2 02/11] IB/hfi1: List all receive contexts from >debugfs > >From: Michael J. Ruhl <michael.j.ruhl@xxxxxxxxx> > >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@xxxxxxxxx> >Reviewed-by: Mike Marciniszyn <mike.marciniszyn@xxxxxxxxx> >Signed-off-by: Michael J. Ruhl <michael.j.ruhl@xxxxxxxxx> >Signed-off-by: Kaike Wan <kaike.wan@xxxxxxxxx> >Signed-off-by: Dennis Dalessandro <dennis.dalessandro@xxxxxxxxx> >--- > 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;