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 |
>-----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 --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;