Coverage Report

Created: 2017-10-25 09:10

/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
 */