KVM: Trace mmio
[safe/jmp/linux-2.6] / include / trace / events / kvm.h
1 #if !defined(_TRACE_KVM_MAIN_H) || defined(TRACE_HEADER_MULTI_READ)
2 #define _TRACE_KVM_MAIN_H
3
4 #include <linux/tracepoint.h>
5
6 #undef TRACE_SYSTEM
7 #define TRACE_SYSTEM kvm
8 #define TRACE_INCLUDE_FILE kvm
9
10 #if defined(__KVM_HAVE_IOAPIC)
11 TRACE_EVENT(kvm_set_irq,
12         TP_PROTO(unsigned int gsi, int level, int irq_source_id),
13         TP_ARGS(gsi, level, irq_source_id),
14
15         TP_STRUCT__entry(
16                 __field(        unsigned int,   gsi             )
17                 __field(        int,            level           )
18                 __field(        int,            irq_source_id   )
19         ),
20
21         TP_fast_assign(
22                 __entry->gsi            = gsi;
23                 __entry->level          = level;
24                 __entry->irq_source_id  = irq_source_id;
25         ),
26
27         TP_printk("gsi %u level %d source %d",
28                   __entry->gsi, __entry->level, __entry->irq_source_id)
29 );
30
31
32 #define kvm_irqchips                                            \
33         {KVM_IRQCHIP_PIC_MASTER,        "PIC master"},          \
34         {KVM_IRQCHIP_PIC_SLAVE,         "PIC slave"},           \
35         {KVM_IRQCHIP_IOAPIC,            "IOAPIC"}
36
37 TRACE_EVENT(kvm_ack_irq,
38         TP_PROTO(unsigned int irqchip, unsigned int pin),
39         TP_ARGS(irqchip, pin),
40
41         TP_STRUCT__entry(
42                 __field(        unsigned int,   irqchip         )
43                 __field(        unsigned int,   pin             )
44         ),
45
46         TP_fast_assign(
47                 __entry->irqchip        = irqchip;
48                 __entry->pin            = pin;
49         ),
50
51         TP_printk("irqchip %s pin %u",
52                   __print_symbolic(__entry->irqchip, kvm_irqchips),
53                  __entry->pin)
54 );
55
56
57
58 #endif /* defined(__KVM_HAVE_IOAPIC) */
59
60 #define KVM_TRACE_MMIO_READ_UNSATISFIED 0
61 #define KVM_TRACE_MMIO_READ 1
62 #define KVM_TRACE_MMIO_WRITE 2
63
64 #define kvm_trace_symbol_mmio \
65         { KVM_TRACE_MMIO_READ_UNSATISFIED, "unsatisfied-read" }, \
66         { KVM_TRACE_MMIO_READ, "read" }, \
67         { KVM_TRACE_MMIO_WRITE, "write" }
68
69 TRACE_EVENT(kvm_mmio,
70         TP_PROTO(int type, int len, u64 gpa, u64 val),
71         TP_ARGS(type, len, gpa, val),
72
73         TP_STRUCT__entry(
74                 __field(        u32,    type            )
75                 __field(        u32,    len             )
76                 __field(        u64,    gpa             )
77                 __field(        u64,    val             )
78         ),
79
80         TP_fast_assign(
81                 __entry->type           = type;
82                 __entry->len            = len;
83                 __entry->gpa            = gpa;
84                 __entry->val            = val;
85         ),
86
87         TP_printk("mmio %s len %u gpa 0x%llx val 0x%llx",
88                   __print_symbolic(__entry->type, kvm_trace_symbol_mmio),
89                   __entry->len, __entry->gpa, __entry->val)
90 );
91
92 #endif /* _TRACE_KVM_MAIN_H */
93
94 /* This part must be outside protection */
95 #include <trace/define_trace.h>