IB/rdmavt: Enhance trace information for FRWR debug
authorMike Marciniszyn <mike.marciniszyn@intel.com>
Fri, 28 Jun 2019 18:22:33 +0000 (14:22 -0400)
committerJason Gunthorpe <jgg@mellanox.com>
Sat, 29 Jun 2019 01:34:26 +0000 (22:34 -0300)
This patch enhances the MR trace information to enable more focused debug
of MR issues.

Reviewed-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/sw/rdmavt/mr.c
drivers/infiniband/sw/rdmavt/trace_mr.h

index 0867a11..23ddc63 100644 (file)
@@ -612,8 +612,8 @@ static int rvt_set_page(struct ib_mr *ibmr, u64 addr)
        n = mapped_segs % RVT_SEGSZ;
        mr->mr.map[m]->segs[n].vaddr = (void *)addr;
        mr->mr.map[m]->segs[n].length = ps;
-       trace_rvt_mr_page_seg(&mr->mr, m, n, (void *)addr, ps);
        mr->mr.length += ps;
+       trace_rvt_mr_page_seg(&mr->mr, m, n, (void *)addr, ps);
 
        return 0;
 }
index 976e482..f43e477 100644 (file)
@@ -64,8 +64,12 @@ DECLARE_EVENT_CLASS(
                RDI_DEV_ENTRY(ib_to_rvt(mr->pd->device))
                __field(void *, vaddr)
                __field(struct page *, page)
+               __field(u64, iova)
+               __field(u64, user_base)
                __field(size_t, len)
+               __field(size_t, length)
                __field(u32, lkey)
+               __field(u32, offset)
                __field(u16, m)
                __field(u16, n)
        ),
@@ -73,18 +77,28 @@ DECLARE_EVENT_CLASS(
                RDI_DEV_ASSIGN(ib_to_rvt(mr->pd->device));
                __entry->vaddr = v;
                __entry->page = virt_to_page(v);
+               __entry->iova = mr->iova;
+               __entry->user_base = mr->user_base;
+               __entry->lkey = mr->lkey;
                __entry->m = m;
                __entry->n = n;
                __entry->len = len;
+               __entry->length = mr->length;
+               __entry->offset = mr->offset;
        ),
        TP_printk(
-               "[%s] vaddr %p page %p m %u n %u len %ld",
+               "[%s] lkey %x iova %llx user_base %llx mr_len %lu vaddr %llx page %p m %u n %u len %lu off %u",
                __get_str(dev),
-               __entry->vaddr,
+               __entry->lkey,
+               __entry->iova,
+               __entry->user_base,
+               __entry->length,
+               (unsigned long long)__entry->vaddr,
                __entry->page,
                __entry->m,
                __entry->n,
-               __entry->len
+               __entry->len,
+               __entry->offset
        )
 );