KVM: PPC: Add tracepoint for generic mmu map
authorAlexander Graf <agraf@suse.de>
Mon, 2 Aug 2010 10:51:07 +0000 (12:51 +0200)
committerAvi Kivity <avi@redhat.com>
Sun, 24 Oct 2010 08:52:02 +0000 (10:52 +0200)
This patch moves the generic mmu map debugging over to tracepoints.

Signed-off-by: Alexander Graf <agraf@suse.de>
arch/powerpc/kvm/book3s_mmu_hpte.c
arch/powerpc/kvm/trace.h

index 02c64ab99c97411937e06bc3a2879cda0ddbfd21..ac94bd992564b179b6ae6a42cabdab689a081ba0 100644 (file)
@@ -21,6 +21,7 @@
 #include <linux/kvm_host.h>
 #include <linux/hash.h>
 #include <linux/slab.h>
+#include "trace.h"
 
 #include <asm/kvm_ppc.h>
 #include <asm/kvm_book3s.h>
@@ -66,6 +67,8 @@ void kvmppc_mmu_hpte_cache_map(struct kvm_vcpu *vcpu, struct hpte_cache *pte)
 {
        u64 index;
 
+       trace_kvm_book3s_mmu_map(pte);
+
        spin_lock(&vcpu->arch.mmu_lock);
 
        /* Add to ePTE list */
index 8ed6f1c7c86efbc30b1f44fe13990b7f099aa617..68a84442d799e3286eead1da4f2dde2cd4ceece8 100644 (file)
@@ -181,6 +181,35 @@ TRACE_EVENT(kvm_book3s_64_mmu_map,
 
 #endif /* CONFIG_PPC_BOOK3S_64 */
 
+TRACE_EVENT(kvm_book3s_mmu_map,
+       TP_PROTO(struct hpte_cache *pte),
+       TP_ARGS(pte),
+
+       TP_STRUCT__entry(
+               __field(        u64,            host_va         )
+               __field(        u64,            pfn             )
+               __field(        ulong,          eaddr           )
+               __field(        u64,            vpage           )
+               __field(        ulong,          raddr           )
+               __field(        int,            flags           )
+       ),
+
+       TP_fast_assign(
+               __entry->host_va        = pte->host_va;
+               __entry->pfn            = pte->pfn;
+               __entry->eaddr          = pte->pte.eaddr;
+               __entry->vpage          = pte->pte.vpage;
+               __entry->raddr          = pte->pte.raddr;
+               __entry->flags          = (pte->pte.may_read ? 0x4 : 0) |
+                                         (pte->pte.may_write ? 0x2 : 0) |
+                                         (pte->pte.may_execute ? 0x1 : 0);
+       ),
+
+       TP_printk("Map: hva=%llx pfn=%llx ea=%lx vp=%llx ra=%lx [%x]",
+                 __entry->host_va, __entry->pfn, __entry->eaddr,
+                 __entry->vpage, __entry->raddr, __entry->flags)
+);
+
 #endif /* CONFIG_PPC_BOOK3S */
 
 #endif /* _TRACE_KVM_H */