IB/hfi1: Add MMU tracing
authorMitko Haralanov <mitko.haralanov@intel.com>
Tue, 8 Mar 2016 19:14:59 +0000 (11:14 -0800)
committerDoug Ledford <dledford@redhat.com>
Mon, 21 Mar 2016 19:55:22 +0000 (15:55 -0400)
Add a new tracepoint type for the MMU functions and calls
to that tracepoint to allow tracing of MMU functionality.

Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Reviewed-by: Dean Luick <dean.luick@intel.com>
Signed-off-by: Mitko Haralanov <mitko.haralanov@intel.com>
Signed-off-by: Jubin John <jubin.john@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/staging/rdma/hfi1/mmu_rb.c
drivers/staging/rdma/hfi1/trace.c
drivers/staging/rdma/hfi1/trace.h

index 540e267eee3cc1db542292167a87dbb04f40387d..c30373df38749d32ea999417c1fbc15af9c90808 100644 (file)
@@ -157,6 +157,8 @@ int hfi1_mmu_rb_insert(struct rb_root *root, struct mmu_rb_node *mnode)
                return -EINVAL;
 
        spin_lock_irqsave(&handler->lock, flags);
+       hfi1_cdbg(MMU, "Inserting node addr 0x%llx, len %u", mnode->addr,
+                 mnode->len);
        node = __mmu_rb_search(handler, mnode->addr, mnode->len);
        if (node) {
                ret = -EINVAL;
@@ -181,7 +183,11 @@ static struct mmu_rb_node *__mmu_rb_search(struct mmu_rb_handler *handler,
 {
        struct mmu_rb_node *node;
 
+       hfi1_cdbg(MMU, "Searching for addr 0x%llx, len %u", addr, len);
        node = __mmu_int_rb_iter_first(handler->root, addr, len);
+       if (node)
+               hfi1_cdbg(MMU, "Found node addr 0x%llx, len %u", node->addr,
+                         node->len);
        return node;
 }
 
@@ -189,6 +195,8 @@ static void __mmu_rb_remove(struct mmu_rb_handler *handler,
                            struct mmu_rb_node *node, bool arg)
 {
        /* Validity of handler and node pointers has been checked by caller. */
+       hfi1_cdbg(MMU, "Removing node addr 0x%llx, len %u", node->addr,
+                 node->len);
        __mmu_int_rb_remove(node, handler->root);
        if (handler->ops->remove)
                handler->ops->remove(handler->root, node, arg);
@@ -266,6 +274,8 @@ static void mmu_notifier_mem_invalidate(struct mmu_notifier *mn,
        spin_lock_irqsave(&handler->lock, flags);
        for (node = __mmu_int_rb_iter_first(root, start, end); node;
             node = __mmu_int_rb_iter_next(node, start, end)) {
+               hfi1_cdbg(MMU, "Invalidating node addr 0x%llx, len %u",
+                         node->addr, node->len);
                if (handler->ops->invalidate(root, node))
                        __mmu_rb_remove(handler, node, true);
        }
index 6821d7c377e58b26c376e72f072de031298e3c20..8b62fefcf90336bdda13dfcc51f515d97f442257 100644 (file)
@@ -232,3 +232,4 @@ __hfi1_trace_fn(DC8051);
 __hfi1_trace_fn(FIRMWARE);
 __hfi1_trace_fn(RCVCTRL);
 __hfi1_trace_fn(TID);
+__hfi1_trace_fn(MMU);
index 4d91c18fa6944036279094e8feb981b7ef686f48..963dc948c38a4f335608f0c3ef36c78928464949 100644 (file)
@@ -1340,6 +1340,7 @@ __hfi1_trace_def(DC8051);
 __hfi1_trace_def(FIRMWARE);
 __hfi1_trace_def(RCVCTRL);
 __hfi1_trace_def(TID);
+__hfi1_trace_def(MMU);
 
 #define hfi1_cdbg(which, fmt, ...) \
        __hfi1_trace_##which(__func__, fmt, ##__VA_ARGS__)