unsigned long flags;
        int ret = 0;
 
-       trace_hfi1_mmu_rb_insert(mnode->addr, mnode->len);
+       trace_hfi1_mmu_rb_insert(mnode);
 
        if (current->mm != handler->mn.mm)
                return -EPERM;
 {
        struct mmu_rb_node *mnode =
                container_of(refcount, struct mmu_rb_node, refcount);
+       trace_hfi1_mmu_release_node(mnode);
        mnode->handler->ops->remove(mnode->handler->ops_arg, mnode);
 }
 
        spin_unlock_irqrestore(&handler->lock, flags);
 
        list_for_each_entry_safe(rbnode, ptr, &del_list, list) {
+               trace_hfi1_mmu_rb_evict(rbnode);
                kref_put(&rbnode->refcount, release_immediate);
        }
 }
                /* Guard against node removal. */
                ptr = __mmu_int_rb_iter_next(node, range->start,
                                             range->end - 1);
-               trace_hfi1_mmu_mem_invalidate(node->addr, node->len);
+               trace_hfi1_mmu_mem_invalidate(node);
                /* Remove from rb tree and lru_list. */
                __mmu_int_rb_remove(node, root);
                list_del_init(&node->list);
        while (!list_empty(&del_list)) {
                node = list_first_entry(&del_list, struct mmu_rb_node, list);
                list_del(&node->list);
+               trace_hfi1_mmu_release_node(node);
                handler->ops->remove(handler->ops_arg, node);
        }
 }
 
 #define TRACE_SYSTEM hfi1_mmu
 
 DECLARE_EVENT_CLASS(hfi1_mmu_rb_template,
-                   TP_PROTO(unsigned long addr, unsigned long len),
-                   TP_ARGS(addr, len),
+                   TP_PROTO(struct mmu_rb_node *node),
+                   TP_ARGS(node),
                    TP_STRUCT__entry(__field(unsigned long, addr)
                                     __field(unsigned long, len)
+                                    __field(unsigned int, refcount)
                            ),
-                   TP_fast_assign(__entry->addr = addr;
-                                  __entry->len = len;
+                   TP_fast_assign(__entry->addr = node->addr;
+                                  __entry->len = node->len;
+                                  __entry->refcount = kref_read(&node->refcount);
                            ),
-                   TP_printk("MMU node addr 0x%lx, len %lu",
+                   TP_printk("MMU node addr 0x%lx, len %lu, refcount %u",
                              __entry->addr,
-                             __entry->len
+                             __entry->len,
+                             __entry->refcount
                            )
 );
 
 DEFINE_EVENT(hfi1_mmu_rb_template, hfi1_mmu_rb_insert,
-            TP_PROTO(unsigned long addr, unsigned long len),
-            TP_ARGS(addr, len));
+            TP_PROTO(struct mmu_rb_node *node),
+            TP_ARGS(node));
 
-DEFINE_EVENT(hfi1_mmu_rb_template, hfi1_mmu_rb_search,
-            TP_PROTO(unsigned long addr, unsigned long len),
-            TP_ARGS(addr, len));
+TRACE_EVENT(hfi1_mmu_rb_search,
+           TP_PROTO(unsigned long addr, unsigned long len),
+           TP_ARGS(addr, len),
+           TP_STRUCT__entry(__field(unsigned long, addr)
+                            __field(unsigned long, len)
+                   ),
+           TP_fast_assign(__entry->addr = addr;
+                          __entry->len = len;
+                   ),
+           TP_printk("MMU node addr 0x%lx, len %lu",
+                     __entry->addr,
+                     __entry->len
+                   )
+);
 
 DEFINE_EVENT(hfi1_mmu_rb_template, hfi1_mmu_mem_invalidate,
-            TP_PROTO(unsigned long addr, unsigned long len),
-            TP_ARGS(addr, len));
+            TP_PROTO(struct mmu_rb_node *node),
+            TP_ARGS(node));
+
+DEFINE_EVENT(hfi1_mmu_rb_template, hfi1_mmu_rb_evict,
+            TP_PROTO(struct mmu_rb_node *node),
+            TP_ARGS(node));
+
+DEFINE_EVENT(hfi1_mmu_rb_template, hfi1_mmu_release_node,
+            TP_PROTO(struct mmu_rb_node *node),
+            TP_ARGS(node));
 
 #endif /* __HFI1_TRACE_RC_H */