IB/rdmavt: Enhance trace information for FRWR debug

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>
This commit is contained in:
Mike Marciniszyn 2019-06-28 14:22:33 -04:00 committed by Jason Gunthorpe
parent aa9b79ec37
commit 315aed110c
2 changed files with 18 additions and 4 deletions

View File

@ -612,8 +612,8 @@ static int rvt_set_page(struct ib_mr *ibmr, u64 addr)
n = mapped_segs % RVT_SEGSZ; n = mapped_segs % RVT_SEGSZ;
mr->mr.map[m]->segs[n].vaddr = (void *)addr; mr->mr.map[m]->segs[n].vaddr = (void *)addr;
mr->mr.map[m]->segs[n].length = ps; mr->mr.map[m]->segs[n].length = ps;
trace_rvt_mr_page_seg(&mr->mr, m, n, (void *)addr, ps);
mr->mr.length += ps; mr->mr.length += ps;
trace_rvt_mr_page_seg(&mr->mr, m, n, (void *)addr, ps);
return 0; return 0;
} }

View File

@ -64,8 +64,12 @@ DECLARE_EVENT_CLASS(
RDI_DEV_ENTRY(ib_to_rvt(mr->pd->device)) RDI_DEV_ENTRY(ib_to_rvt(mr->pd->device))
__field(void *, vaddr) __field(void *, vaddr)
__field(struct page *, page) __field(struct page *, page)
__field(u64, iova)
__field(u64, user_base)
__field(size_t, len) __field(size_t, len)
__field(size_t, length)
__field(u32, lkey) __field(u32, lkey)
__field(u32, offset)
__field(u16, m) __field(u16, m)
__field(u16, n) __field(u16, n)
), ),
@ -73,18 +77,28 @@ DECLARE_EVENT_CLASS(
RDI_DEV_ASSIGN(ib_to_rvt(mr->pd->device)); RDI_DEV_ASSIGN(ib_to_rvt(mr->pd->device));
__entry->vaddr = v; __entry->vaddr = v;
__entry->page = virt_to_page(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->m = m;
__entry->n = n; __entry->n = n;
__entry->len = len; __entry->len = len;
__entry->length = mr->length;
__entry->offset = mr->offset;
), ),
TP_printk( 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), __get_str(dev),
__entry->vaddr, __entry->lkey,
__entry->iova,
__entry->user_base,
__entry->length,
(unsigned long long)__entry->vaddr,
__entry->page, __entry->page,
__entry->m, __entry->m,
__entry->n, __entry->n,
__entry->len __entry->len,
__entry->offset
) )
); );