]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
KVM: PPC: Move slb debugging to tracepoints
authorAlexander Graf <agraf@suse.de>
Mon, 2 Aug 2010 19:25:33 +0000 (21:25 +0200)
committerAvi Kivity <avi@redhat.com>
Sun, 24 Oct 2010 08:52:07 +0000 (10:52 +0200)
This patch moves debugging printks for shadow SLB debugging over to tracepoints.

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

index ebb1b5ddabfbca8600612cb734c6367b46828af9..321c931f691cf77dc89d5a848bb43b1c3603cad5 100644 (file)
 #define PTE_SIZE 12
 #define VSID_ALL 0
 
-/* #define DEBUG_SLB */
-
-#ifdef DEBUG_SLB
-#define dprintk_slb(a, ...) printk(KERN_INFO a, __VA_ARGS__)
-#else
-#define dprintk_slb(a, ...) do { } while(0)
-#endif
-
 void kvmppc_mmu_invalidate_pte(struct kvm_vcpu *vcpu, struct hpte_cache *pte)
 {
        ppc_md.hpte_invalidate(pte->slot, pte->host_va,
@@ -66,20 +58,17 @@ static struct kvmppc_sid_map *find_sid_vsid(struct kvm_vcpu *vcpu, u64 gvsid)
        sid_map_mask = kvmppc_sid_hash(vcpu, gvsid);
        map = &to_book3s(vcpu)->sid_map[sid_map_mask];
        if (map->valid && (map->guest_vsid == gvsid)) {
-               dprintk_slb("SLB: Searching: 0x%llx -> 0x%llx\n",
-                           gvsid, map->host_vsid);
+               trace_kvm_book3s_slb_found(gvsid, map->host_vsid);
                return map;
        }
 
        map = &to_book3s(vcpu)->sid_map[SID_MAP_MASK - sid_map_mask];
        if (map->valid && (map->guest_vsid == gvsid)) {
-               dprintk_slb("SLB: Searching 0x%llx -> 0x%llx\n",
-                           gvsid, map->host_vsid);
+               trace_kvm_book3s_slb_found(gvsid, map->host_vsid);
                return map;
        }
 
-       dprintk_slb("SLB: Searching %d/%d: 0x%llx -> not found\n",
-                   sid_map_mask, SID_MAP_MASK - sid_map_mask, gvsid);
+       trace_kvm_book3s_slb_fail(sid_map_mask, gvsid);
        return NULL;
 }
 
@@ -205,8 +194,7 @@ static struct kvmppc_sid_map *create_sid_map(struct kvm_vcpu *vcpu, u64 gvsid)
        map->guest_vsid = gvsid;
        map->valid = true;
 
-       dprintk_slb("SLB: New mapping at %d: 0x%llx -> 0x%llx\n",
-                   sid_map_mask, gvsid, map->host_vsid);
+       trace_kvm_book3s_slb_map(sid_map_mask, gvsid, map->host_vsid);
 
        return map;
 }
@@ -278,7 +266,7 @@ int kvmppc_mmu_map_segment(struct kvm_vcpu *vcpu, ulong eaddr)
        to_svcpu(vcpu)->slb[slb_index].esid = slb_esid;
        to_svcpu(vcpu)->slb[slb_index].vsid = slb_vsid;
 
-       dprintk_slb("slbmte %#llx, %#llx\n", slb_vsid, slb_esid);
+       trace_kvm_book3s_slbmte(slb_vsid, slb_esid);
 
        return 0;
 }
index 23f757a6916390fca2d12c0e06f313083245c899..3aca1b042b8c87bc797f7817bcd3bdefddb72053 100644 (file)
@@ -262,6 +262,79 @@ TRACE_EVENT(kvm_book3s_mmu_flush,
                  __entry->count, __entry->type, __entry->p1, __entry->p2)
 );
 
+TRACE_EVENT(kvm_book3s_slb_found,
+       TP_PROTO(unsigned long long gvsid, unsigned long long hvsid),
+       TP_ARGS(gvsid, hvsid),
+
+       TP_STRUCT__entry(
+               __field(        unsigned long long,     gvsid           )
+               __field(        unsigned long long,     hvsid           )
+       ),
+
+       TP_fast_assign(
+               __entry->gvsid          = gvsid;
+               __entry->hvsid          = hvsid;
+       ),
+
+       TP_printk("%llx -> %llx", __entry->gvsid, __entry->hvsid)
+);
+
+TRACE_EVENT(kvm_book3s_slb_fail,
+       TP_PROTO(u16 sid_map_mask, unsigned long long gvsid),
+       TP_ARGS(sid_map_mask, gvsid),
+
+       TP_STRUCT__entry(
+               __field(        unsigned short,         sid_map_mask    )
+               __field(        unsigned long long,     gvsid           )
+       ),
+
+       TP_fast_assign(
+               __entry->sid_map_mask   = sid_map_mask;
+               __entry->gvsid          = gvsid;
+       ),
+
+       TP_printk("%x/%x: %llx", __entry->sid_map_mask,
+                 SID_MAP_MASK - __entry->sid_map_mask, __entry->gvsid)
+);
+
+TRACE_EVENT(kvm_book3s_slb_map,
+       TP_PROTO(u16 sid_map_mask, unsigned long long gvsid,
+                unsigned long long hvsid),
+       TP_ARGS(sid_map_mask, gvsid, hvsid),
+
+       TP_STRUCT__entry(
+               __field(        unsigned short,         sid_map_mask    )
+               __field(        unsigned long long,     guest_vsid      )
+               __field(        unsigned long long,     host_vsid       )
+       ),
+
+       TP_fast_assign(
+               __entry->sid_map_mask   = sid_map_mask;
+               __entry->guest_vsid     = gvsid;
+               __entry->host_vsid      = hvsid;
+       ),
+
+       TP_printk("%x: %llx -> %llx", __entry->sid_map_mask,
+                 __entry->guest_vsid, __entry->host_vsid)
+);
+
+TRACE_EVENT(kvm_book3s_slbmte,
+       TP_PROTO(u64 slb_vsid, u64 slb_esid),
+       TP_ARGS(slb_vsid, slb_esid),
+
+       TP_STRUCT__entry(
+               __field(        u64,    slb_vsid        )
+               __field(        u64,    slb_esid        )
+       ),
+
+       TP_fast_assign(
+               __entry->slb_vsid       = slb_vsid;
+               __entry->slb_esid       = slb_esid;
+       ),
+
+       TP_printk("%llx, %llx", __entry->slb_vsid, __entry->slb_esid)
+);
+
 #endif /* CONFIG_PPC_BOOK3S */
 
 #endif /* _TRACE_KVM_H */