aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/powerpc/kvm/book3s_64_mmu_host.c13
-rw-r--r--arch/powerpc/kvm/trace.h34
2 files changed, 36 insertions, 11 deletions
diff --git a/arch/powerpc/kvm/book3s_64_mmu_host.c b/arch/powerpc/kvm/book3s_64_mmu_host.c
index 672b1495f26..aa516ad81de 100644
--- a/arch/powerpc/kvm/book3s_64_mmu_host.c
+++ b/arch/powerpc/kvm/book3s_64_mmu_host.c
@@ -28,19 +28,13 @@
28#include <asm/machdep.h> 28#include <asm/machdep.h>
29#include <asm/mmu_context.h> 29#include <asm/mmu_context.h>
30#include <asm/hw_irq.h> 30#include <asm/hw_irq.h>
31#include "trace.h"
31 32
32#define PTE_SIZE 12 33#define PTE_SIZE 12
33#define VSID_ALL 0 34#define VSID_ALL 0
34 35
35/* #define DEBUG_MMU */
36/* #define DEBUG_SLB */ 36/* #define DEBUG_SLB */
37 37
38#ifdef DEBUG_MMU
39#define dprintk_mmu(a, ...) printk(KERN_INFO a, __VA_ARGS__)
40#else
41#define dprintk_mmu(a, ...) do { } while(0)
42#endif
43
44#ifdef DEBUG_SLB 38#ifdef DEBUG_SLB
45#define dprintk_slb(a, ...) printk(KERN_INFO a, __VA_ARGS__) 39#define dprintk_slb(a, ...) printk(KERN_INFO a, __VA_ARGS__)
46#else 40#else
@@ -156,10 +150,7 @@ map_again:
156 } else { 150 } else {
157 struct hpte_cache *pte = kvmppc_mmu_hpte_cache_next(vcpu); 151 struct hpte_cache *pte = kvmppc_mmu_hpte_cache_next(vcpu);
158 152
159 dprintk_mmu("KVM: %c%c Map 0x%lx: [%lx] 0x%lx (0x%llx) -> %lx\n", 153 trace_kvm_book3s_64_mmu_map(rflags, hpteg, va, hpaddr, orig_pte);
160 ((rflags & HPTE_R_PP) == 3) ? '-' : 'w',
161 (rflags & HPTE_R_N) ? '-' : 'x',
162 orig_pte->eaddr, hpteg, va, orig_pte->vpage, hpaddr);
163 154
164 /* The ppc_md code may give us a secondary entry even though we 155 /* The ppc_md code may give us a secondary entry even though we
165 asked for a primary. Fix up. */ 156 asked for a primary. Fix up. */
diff --git a/arch/powerpc/kvm/trace.h b/arch/powerpc/kvm/trace.h
index b5e9d81a1ea..8ed6f1c7c86 100644
--- a/arch/powerpc/kvm/trace.h
+++ b/arch/powerpc/kvm/trace.h
@@ -147,6 +147,40 @@ TRACE_EVENT(kvm_book3s_reenter,
147 TP_printk("reentry r=%d | pc=0x%lx", __entry->r, __entry->pc) 147 TP_printk("reentry r=%d | pc=0x%lx", __entry->r, __entry->pc)
148); 148);
149 149
150#ifdef CONFIG_PPC_BOOK3S_64
151
152TRACE_EVENT(kvm_book3s_64_mmu_map,
153 TP_PROTO(int rflags, ulong hpteg, ulong va, pfn_t hpaddr,
154 struct kvmppc_pte *orig_pte),
155 TP_ARGS(rflags, hpteg, va, hpaddr, orig_pte),
156
157 TP_STRUCT__entry(
158 __field( unsigned char, flag_w )
159 __field( unsigned char, flag_x )
160 __field( unsigned long, eaddr )
161 __field( unsigned long, hpteg )
162 __field( unsigned long, va )
163 __field( unsigned long long, vpage )
164 __field( unsigned long, hpaddr )
165 ),
166
167 TP_fast_assign(
168 __entry->flag_w = ((rflags & HPTE_R_PP) == 3) ? '-' : 'w';
169 __entry->flag_x = (rflags & HPTE_R_N) ? '-' : 'x';
170 __entry->eaddr = orig_pte->eaddr;
171 __entry->hpteg = hpteg;
172 __entry->va = va;
173 __entry->vpage = orig_pte->vpage;
174 __entry->hpaddr = hpaddr;
175 ),
176
177 TP_printk("KVM: %c%c Map 0x%lx: [%lx] 0x%lx (0x%llx) -> %lx",
178 __entry->flag_w, __entry->flag_x, __entry->eaddr,
179 __entry->hpteg, __entry->va, __entry->vpage, __entry->hpaddr)
180);
181
182#endif /* CONFIG_PPC_BOOK3S_64 */
183
150#endif /* CONFIG_PPC_BOOK3S */ 184#endif /* CONFIG_PPC_BOOK3S */
151 185
152#endif /* _TRACE_KVM_H */ 186#endif /* _TRACE_KVM_H */