/root/src/xen/xen/include/asm/hvm/trace.h
Line | Count | Source (jump to first uncovered line) |
1 | | #ifndef __ASM_X86_HVM_TRACE_H__ |
2 | | #define __ASM_X86_HVM_TRACE_H__ |
3 | | |
4 | | #include <xen/trace.h> |
5 | | |
6 | 0 | #define DEFAULT_HVM_TRACE_ON 1 |
7 | | #define DEFAULT_HVM_TRACE_OFF 0 |
8 | | |
9 | 0 | #define DEFAULT_HVM_VMSWITCH DEFAULT_HVM_TRACE_ON |
10 | 0 | #define DEFAULT_HVM_PF DEFAULT_HVM_TRACE_ON |
11 | 0 | #define DEFAULT_HVM_INJECT DEFAULT_HVM_TRACE_ON |
12 | | #define DEFAULT_HVM_IO DEFAULT_HVM_TRACE_ON |
13 | 0 | #define DEFAULT_HVM_REGACCESS DEFAULT_HVM_TRACE_ON |
14 | 0 | #define DEFAULT_HVM_MISC DEFAULT_HVM_TRACE_ON |
15 | 0 | #define DEFAULT_HVM_INTR DEFAULT_HVM_TRACE_ON |
16 | | |
17 | 0 | #define DO_TRC_HVM_VMENTRY DEFAULT_HVM_VMSWITCH |
18 | 0 | #define DO_TRC_HVM_VMEXIT DEFAULT_HVM_VMSWITCH |
19 | 0 | #define DO_TRC_HVM_VMEXIT64 DEFAULT_HVM_VMSWITCH |
20 | 0 | #define DO_TRC_HVM_PF_XEN DEFAULT_HVM_PF |
21 | 0 | #define DO_TRC_HVM_PF_XEN64 DEFAULT_HVM_PF |
22 | | #define DO_TRC_HVM_PF_INJECT DEFAULT_HVM_PF |
23 | 0 | #define DO_TRC_HVM_PF_INJECT64 DEFAULT_HVM_PF |
24 | 0 | #define DO_TRC_HVM_INJ_EXC DEFAULT_HVM_INJECT |
25 | 0 | #define DO_TRC_HVM_INJ_VIRQ DEFAULT_HVM_INJECT |
26 | | #define DO_TRC_HVM_REINJ_VIRQ DEFAULT_HVM_INJECT |
27 | 0 | #define DO_TRC_HVM_INTR_WINDOW DEFAULT_HVM_INJECT |
28 | | #define DO_TRC_HVM_IO_READ DEFAULT_HVM_IO |
29 | | #define DO_TRC_HVM_IO_WRITE DEFAULT_HVM_IO |
30 | | #define DO_TRC_HVM_CR_READ DEFAULT_HVM_REGACCESS |
31 | 0 | #define DO_TRC_HVM_CR_READ64 DEFAULT_HVM_REGACCESS |
32 | | #define DO_TRC_HVM_CR_WRITE DEFAULT_HVM_REGACCESS |
33 | 0 | #define DO_TRC_HVM_CR_WRITE64 DEFAULT_HVM_REGACCESS |
34 | | #define DO_TRC_HVM_DR_READ DEFAULT_HVM_REGACCESS |
35 | 0 | #define DO_TRC_HVM_DR_WRITE DEFAULT_HVM_REGACCESS |
36 | 0 | #define DO_TRC_HVM_MSR_READ DEFAULT_HVM_REGACCESS |
37 | 0 | #define DO_TRC_HVM_MSR_WRITE DEFAULT_HVM_REGACCESS |
38 | 0 | #define DO_TRC_HVM_RDTSC DEFAULT_HVM_REGACCESS |
39 | 0 | #define DO_TRC_HVM_CPUID DEFAULT_HVM_MISC |
40 | 0 | #define DO_TRC_HVM_INTR DEFAULT_HVM_INTR |
41 | 0 | #define DO_TRC_HVM_NMI DEFAULT_HVM_INTR |
42 | 0 | #define DO_TRC_HVM_MCE DEFAULT_HVM_INTR |
43 | 0 | #define DO_TRC_HVM_SMI DEFAULT_HVM_INTR |
44 | 0 | #define DO_TRC_HVM_VMMCALL DEFAULT_HVM_MISC |
45 | 0 | #define DO_TRC_HVM_HLT DEFAULT_HVM_MISC |
46 | | #define DO_TRC_HVM_INVLPG DEFAULT_HVM_MISC |
47 | 0 | #define DO_TRC_HVM_INVLPG64 DEFAULT_HVM_MISC |
48 | | #define DO_TRC_HVM_IO_ASSIST DEFAULT_HVM_MISC |
49 | | #define DO_TRC_HVM_MMIO_ASSIST DEFAULT_HVM_MISC |
50 | 0 | #define DO_TRC_HVM_CLTS DEFAULT_HVM_MISC |
51 | | #define DO_TRC_HVM_LMSW DEFAULT_HVM_MISC |
52 | 0 | #define DO_TRC_HVM_LMSW64 DEFAULT_HVM_MISC |
53 | 0 | #define DO_TRC_HVM_REALMODE_EMULATE DEFAULT_HVM_MISC |
54 | 0 | #define DO_TRC_HVM_TRAP DEFAULT_HVM_MISC |
55 | 0 | #define DO_TRC_HVM_TRAP_DEBUG DEFAULT_HVM_MISC |
56 | 0 | #define DO_TRC_HVM_VLAPIC DEFAULT_HVM_MISC |
57 | | |
58 | | |
59 | | #define TRC_PAR_LONG(par) ((par)&0xFFFFFFFF),((par)>>32) |
60 | | |
61 | | #define TRACE_2_LONG_2D(_e, d1, d2, ...) \ |
62 | | TRACE_4D(_e, d1, d2) |
63 | | #define TRACE_2_LONG_3D(_e, d1, d2, d3, ...) \ |
64 | 0 | TRACE_5D(_e, d1, d2, d3) |
65 | | #define TRACE_2_LONG_4D(_e, d1, d2, d3, d4, ...) \ |
66 | 0 | TRACE_6D(_e, d1, d2, d3, d4) |
67 | | |
68 | | #define HVMTRACE_ND(evt, modifier, cycles, count, d1, d2, d3, d4, d5, d6) \ |
69 | 10.5M | do { \ |
70 | 10.5M | if ( unlikely(tb_init_done) && DO_TRC_HVM_ ## evt ) \ |
71 | 0 | { \ |
72 | 0 | struct { \ |
73 | 0 | u32 d[6]; \ |
74 | 0 | } _d; \ |
75 | 0 | _d.d[0]=(d1); \ |
76 | 0 | _d.d[1]=(d2); \ |
77 | 0 | _d.d[2]=(d3); \ |
78 | 0 | _d.d[3]=(d4); \ |
79 | 0 | _d.d[4]=(d5); \ |
80 | 0 | _d.d[5]=(d6); \ |
81 | 0 | __trace_var(TRC_HVM_ ## evt | (modifier), cycles, \ |
82 | 0 | sizeof(*_d.d) * count, &_d); \ |
83 | 0 | } \ |
84 | 10.5M | } while(0) |
85 | | |
86 | | #define HVMTRACE_6D(evt, d1, d2, d3, d4, d5, d6) \ |
87 | | HVMTRACE_ND(evt, 0, 0, 6, d1, d2, d3, d4, d5, d6) |
88 | | #define HVMTRACE_5D(evt, d1, d2, d3, d4, d5) \ |
89 | 2.66k | HVMTRACE_ND(evt, 0, 0, 5, d1, d2, d3, d4, d5, 0) |
90 | | #define HVMTRACE_4D(evt, d1, d2, d3, d4) \ |
91 | | HVMTRACE_ND(evt, 0, 0, 4, d1, d2, d3, d4, 0, 0) |
92 | | #define HVMTRACE_3D(evt, d1, d2, d3) \ |
93 | 3.76k | HVMTRACE_ND(evt, 0, 0, 3, d1, d2, d3, 0, 0, 0) |
94 | | #define HVMTRACE_2D(evt, d1, d2) \ |
95 | 18.4E | HVMTRACE_ND(evt, 0, 0, 2, d1, d2, 0, 0, 0, 0) |
96 | | #define HVMTRACE_1D(evt, d1) \ |
97 | 387k | HVMTRACE_ND(evt, 0, 0, 1, d1, 0, 0, 0, 0, 0) |
98 | | #define HVMTRACE_0D(evt) \ |
99 | 3.79k | HVMTRACE_ND(evt, 0, 0, 0, 0, 0, 0, 0, 0, 0) |
100 | | |
101 | | #define HVMTRACE_LONG_1D(evt, d1) \ |
102 | 1.03k | HVMTRACE_2D(evt ## 64, (d1) & 0xFFFFFFFF, (d1) >> 32) |
103 | | #define HVMTRACE_LONG_2D(evt, d1, d2, ...) \ |
104 | 2.93k | HVMTRACE_3D(evt ## 64, d1, d2) |
105 | | #define HVMTRACE_LONG_3D(evt, d1, d2, d3, ...) \ |
106 | | HVMTRACE_4D(evt ## 64, d1, d2, d3) |
107 | | #define HVMTRACE_LONG_4D(evt, d1, d2, d3, d4, ...) \ |
108 | | HVMTRACE_5D(evt ## 64, d1, d2, d3, d4) |
109 | | |
110 | | #endif /* __ASM_X86_HVM_TRACE_H__ */ |
111 | | |
112 | | /* |
113 | | * Local variables: |
114 | | * mode: C |
115 | | * c-file-style: "BSD" |
116 | | * c-basic-offset: 4 |
117 | | * tab-width: 4 |
118 | | * indent-tabs-mode: nil |
119 | | * End: |
120 | | */ |