aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/asm-x86/perfc_defn.h
blob: d6e24b207d9e4ce14cc1256bd36cb62f1b9928a5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
/* This file is legitimately included multiple times. */
/*#ifndef __XEN_PERFC_DEFN_H__*/
/*#define __XEN_PERFC_DEFN_H__*/

#define PERFC_MAX_PT_UPDATES 64
#define PERFC_PT_UPDATES_BUCKET_SIZE 3
PERFCOUNTER_ARRAY(wpt_updates,          "writable pt updates",
                  PERFC_MAX_PT_UPDATES)
PERFCOUNTER_ARRAY(bpt_updates,          "batched pt updates",
                  PERFC_MAX_PT_UPDATES)
PERFCOUNTER_ARRAY(l1_entries_checked,   "l1 entries checked",
                  PERFC_MAX_PT_UPDATES)
PERFCOUNTER_ARRAY(shm_l2_updates,       "shadow mode L2 pt updates",
                  PERFC_MAX_PT_UPDATES)
PERFCOUNTER_ARRAY(shm_hl2_updates,      "shadow mode HL2 pt updates",
                  PERFC_MAX_PT_UPDATES)
#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
PERFCOUNTER_ARRAY(shm_l3_updates,       "shadow mode L3 pt updates",
                  PERFC_MAX_PT_UPDATES)
PERFCOUNTER_ARRAY(shm_l4_updates,       "shadow mode L4 pt updates",
                  PERFC_MAX_PT_UPDATES)
#endif
PERFCOUNTER_ARRAY(snapshot_copies,      "entries copied per snapshot",
                  PERFC_MAX_PT_UPDATES)

PERFCOUNTER_ARRAY(exceptions,           "exceptions", 32)

#define VMX_PERF_EXIT_REASON_SIZE 44
#define VMX_PERF_VECTOR_SIZE 0x20
PERFCOUNTER_ARRAY(vmexits,              "vmexits", VMX_PERF_EXIT_REASON_SIZE)
PERFCOUNTER_ARRAY(cause_vector,         "cause vector", VMX_PERF_VECTOR_SIZE)

#define SVM_PERF_EXIT_REASON_SIZE (1+136)
PERFCOUNTER_ARRAY(svmexits,             "SVMexits", SVM_PERF_EXIT_REASON_SIZE)

PERFCOUNTER_CPU(seg_fixups,             "segmentation fixups")

PERFCOUNTER_CPU(apic_timer,             "apic timer interrupts")
PERFCOUNTER_CPU(timer_max,           "timer max error (ns)")

PERFCOUNTER_CPU(domain_page_tlb_flush,  "domain page tlb flushes")

PERFCOUNTER_CPU(calls_to_mmu_update,    "calls_to_mmu_update")
PERFCOUNTER_CPU(num_page_updates,       "num_page_updates")
PERFCOUNTER_CPU(calls_to_update_va,     "calls_to_update_va_map")
PERFCOUNTER_CPU(page_faults,            "page faults")
PERFCOUNTER_CPU(copy_user_faults,       "copy_user faults")

PERFCOUNTER_CPU(shadow_fault_calls,     "calls to shadow_fault")
PERFCOUNTER_CPU(shadow_fault_bail_pde_not_present,
                "sf bailed due to pde not present")
PERFCOUNTER_CPU(shadow_fault_bail_pte_not_present,
                "sf bailed due to pte not present")
PERFCOUNTER_CPU(shadow_fault_bail_ro_mapping,
                "sf bailed due to a ro mapping")
PERFCOUNTER_CPU(shadow_fault_fixed,     "sf fixed the pgfault")
PERFCOUNTER_CPU(write_fault_bail,       "sf bailed due to write_fault")
PERFCOUNTER_CPU(read_fault_bail,        "sf bailed due to read_fault")

PERFCOUNTER_CPU(map_domain_page_count,  "map_domain_page count")
PERFCOUNTER_CPU(ptwr_emulations,        "writable pt emulations")

#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
PERFCOUNTER_CPU(shadow_l4_table_count,  "shadow_l4_table count")
PERFCOUNTER_CPU(shadow_l3_table_count,  "shadow_l3_table count")
#endif
PERFCOUNTER_CPU(shadow_l2_table_count,  "shadow_l2_table count")
PERFCOUNTER_CPU(shadow_l1_table_count,  "shadow_l1_table count")
PERFCOUNTER_CPU(unshadow_table_count,   "unshadow_table count")
PERFCOUNTER_CPU(shadow_fixup_count,     "shadow_fixup count")
PERFCOUNTER_CPU(shadow_update_va_fail1, "shadow_update_va_fail1")
PERFCOUNTER_CPU(shadow_update_va_fail2, "shadow_update_va_fail2")

/* STATUS counters do not reset when 'P' is hit */
#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
PERFSTATUS(shadow_l4_pages,             "current # shadow L4 pages")
PERFSTATUS(shadow_l3_pages,             "current # shadow L3 pages")
#endif
PERFSTATUS(shadow_l2_pages,             "current # shadow L2 pages")
PERFSTATUS(shadow_l1_pages,             "current # shadow L1 pages")
PERFSTATUS(hl2_table_pages,             "current # hl2 pages")
PERFSTATUS(snapshot_pages,              "current # fshadow snapshot pages")
PERFSTATUS(writable_pte_predictions,    "# writable pte predictions")
PERFSTATUS(free_l1_pages,               "current # free shadow L1 pages")

PERFCOUNTER_CPU(check_pagetable,        "calls to check_pagetable")
PERFCOUNTER_CPU(check_all_pagetables,   "calls to check_all_pagetables")

PERFCOUNTER_CPU(shadow_hl2_table_count, "shadow_hl2_table count")
PERFCOUNTER_CPU(shadow_set_l1e_force_map, "shadow_set_l1e forced to map l1")
PERFCOUNTER_CPU(shadow_set_l1e_unlinked, "shadow_set_l1e found unlinked l1")
PERFCOUNTER_CPU(shadow_set_l1e_fail,    "shadow_set_l1e failed (no sl1)")
#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
PERFCOUNTER_CPU(shadow_set_l2e_force_map, "shadow_set_l2e forced to map l2")
PERFCOUNTER_CPU(shadow_set_l3e_force_map, "shadow_set_l3e forced to map l3")
#endif
PERFCOUNTER_CPU(shadow_invlpg_faults,   "shadow_invlpg's get_user faulted")
PERFCOUNTER_CPU(unshadow_l2_count,      "unpinned L2 count")

PERFCOUNTER_CPU(shadow_status_shortcut, "fastpath miss on shadow cache")
PERFCOUNTER_CPU(shadow_status_calls,    "calls to shadow_status")
PERFCOUNTER_CPU(shadow_status_miss,     "missed shadow cache")
PERFCOUNTER_CPU(shadow_status_hit_head, "hits on head of bucket")
PERFCOUNTER_CPU(shadow_max_type,        "calls to shadow_max_type")

PERFCOUNTER_CPU(shadow_sync_all,        "calls to shadow_sync_all")
PERFCOUNTER_CPU(shadow_sync_va,         "calls to shadow_sync_va")
PERFCOUNTER_CPU(resync_l1,              "resync L1 page")
PERFCOUNTER_CPU(resync_l2,              "resync L2 page")
#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
PERFCOUNTER_CPU(resync_l3,              "resync L3 page")
PERFCOUNTER_CPU(resync_l4,              "resync L4 page")
#endif
PERFCOUNTER_CPU(resync_hl2,             "resync HL2 page")
PERFCOUNTER_CPU(shadow_make_snapshot,   "snapshots created")
PERFCOUNTER_CPU(shadow_mark_mfn_out_of_sync_calls,
                "calls to shadow_mk_out_of_sync")
PERFCOUNTER_CPU(shadow_out_of_sync_calls, "calls to shadow_out_of_sync")
PERFCOUNTER_CPU(snapshot_entry_matches_calls, "calls to ss_entry_matches")
PERFCOUNTER_CPU(snapshot_entry_matches_true, "ss_entry_matches returns true")

PERFCOUNTER_CPU(validate_pte_calls,     "calls to validate_pte_change")
PERFCOUNTER_CPU(validate_pte_changes1,  "validate_pte makes changes1")
PERFCOUNTER_CPU(validate_pte_changes2,  "validate_pte makes changes2")
PERFCOUNTER_CPU(validate_pte_changes3,  "validate_pte makes changes3")
PERFCOUNTER_CPU(validate_pte_changes4,  "validate_pte makes changes4")
PERFCOUNTER_CPU(validate_pde_calls,     "calls to validate_pde_change")
PERFCOUNTER_CPU(validate_pde_changes,   "validate_pde makes changes")
PERFCOUNTER_CPU(shadow_get_page_fail,   "shadow_get_page_from_l1e fails")
PERFCOUNTER_CPU(validate_hl2e_calls,    "calls to validate_hl2e_change")
PERFCOUNTER_CPU(validate_hl2e_changes,  "validate_hl2e makes changes")
#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
PERFCOUNTER_CPU(validate_entry_changes,  "validate_entry changes")
#endif
PERFCOUNTER_CPU(exception_fixed,        "pre-exception fixed")
PERFCOUNTER_CPU(get_mfn_from_gpfn_foreign, "calls to get_mfn_from_gpfn_foreign")
PERFCOUNTER_CPU(remove_all_access,      "calls to remove_all_access")
PERFCOUNTER_CPU(remove_write_access,    "calls to remove_write_access")
PERFCOUNTER_CPU(remove_write_access_easy, "easy outs of remove_write_access")
PERFCOUNTER_CPU(remove_write_no_work,   "no work in remove_write_access")
PERFCOUNTER_CPU(remove_write_not_writable, "remove_write non-writable page")
PERFCOUNTER_CPU(remove_write_fast_exit, "remove_write hit predicted entry")
PERFCOUNTER_CPU(remove_write_predicted, "remove_write predict hit&exit")
PERFCOUNTER_CPU(remove_write_bad_prediction, "remove_write bad prediction")
PERFCOUNTER_CPU(update_hl2e_invlpg,     "update_hl2e calls invlpg")

/* Shadow2 counters */
PERFCOUNTER_CPU(shadow2_alloc,          "calls to shadow2_alloc")
PERFCOUNTER_CPU(shadow2_alloc_tlbflush, "shadow2_alloc flushed TLBs")
PERFSTATUS(shadow2_alloc_count,         "number of shadow pages in use")
PERFCOUNTER_CPU(shadow2_free,           "calls to shadow2_free")
PERFCOUNTER_CPU(shadow2_prealloc_1,     "shadow2 recycles old shadows")
PERFCOUNTER_CPU(shadow2_prealloc_2,     "shadow2 recycles in-use shadows")
PERFCOUNTER_CPU(shadow2_linear_map_failed, "shadow2 hit read-only linear map")
PERFCOUNTER_CPU(shadow2_a_update,       "shadow2 A bit update")
PERFCOUNTER_CPU(shadow2_ad_update,      "shadow2 A&D bit update")
PERFCOUNTER_CPU(shadow2_fault,          "calls to shadow2_fault")
PERFCOUNTER_CPU(shadow2_fault_bail_bad_gfn, "shadow2_fault guest bad gfn")
PERFCOUNTER_CPU(shadow2_fault_bail_not_present, 
                                        "shadow2_fault guest not-present")
PERFCOUNTER_CPU(shadow2_fault_bail_nx,  "shadow2_fault guest NX fault")
PERFCOUNTER_CPU(shadow2_fault_bail_ro_mapping, "shadow2_fault guest R/W fault")
PERFCOUNTER_CPU(shadow2_fault_bail_user_supervisor, 
                                        "shadow2_fault guest U/S fault")
PERFCOUNTER_CPU(shadow2_fault_emulate_read, "shadow2_fault emulates a read")
PERFCOUNTER_CPU(shadow2_fault_emulate_write, "shadow2_fault emulates a write")
PERFCOUNTER_CPU(shadow2_fault_emulate_failed, "shadow2_fault emulator fails")
PERFCOUNTER_CPU(shadow2_fault_mmio,     "shadow2_fault handled as mmio")
PERFCOUNTER_CPU(shadow2_fault_fixed,    "shadow2_fault fixed fault")
PERFCOUNTER_CPU(shadow2_ptwr_emulate,   "shadow2 causes ptwr to emulate")
PERFCOUNTER_CPU(shadow2_validate_gl1e_calls, "calls to shadow2_validate_gl1e")
PERFCOUNTER_CPU(shadow2_validate_gl2e_calls, "calls to shadow2_validate_gl2e")
PERFCOUNTER_CPU(shadow2_validate_gl3e_calls, "calls to shadow2_validate_gl3e")
PERFCOUNTER_CPU(shadow2_validate_gl4e_calls, "calls to shadow2_validate_gl4e")
PERFCOUNTER_CPU(shadow2_hash_lookups,   "calls to shadow2_hash_lookup")
PERFCOUNTER_CPU(shadow2_hash_lookup_head, "shadow2 hash hit in bucket head")
PERFCOUNTER_CPU(shadow2_hash_lookup_miss, "shadow2 hash misses")
PERFCOUNTER_CPU(shadow2_get_shadow_status, "calls to get_shadow_status")
PERFCOUNTER_CPU(shadow2_hash_inserts,   "calls to shadow2_hash_insert")
PERFCOUNTER_CPU(shadow2_hash_deletes,   "calls to shadow2_hash_delete")
PERFCOUNTER_CPU(shadow2_writeable,      "shadow2 removes write access")
PERFCOUNTER_CPU(shadow2_writeable_h_1,  "shadow2 writeable: 32b w2k3")
PERFCOUNTER_CPU(shadow2_writeable_h_2,  "shadow2 writeable: 32pae w2k3")
PERFCOUNTER_CPU(shadow2_writeable_h_3,  "shadow2 writeable: 64b w2k3")
PERFCOUNTER_CPU(shadow2_writeable_h_4,  "shadow2 writeable: 32b linux low")
PERFCOUNTER_CPU(shadow2_writeable_bf,   "shadow2 writeable brute-force")
PERFCOUNTER_CPU(shadow2_mappings,       "shadow2 removes all mappings")
PERFCOUNTER_CPU(shadow2_mappings_bf,    "shadow2 rm-mappings brute-force")
PERFCOUNTER_CPU(shadow2_early_unshadow, "shadow2 unshadows for fork/exit")
PERFCOUNTER_CPU(shadow2_early_unshadow_top, "shadow2 unhooks for fork/exit")
PERFCOUNTER_CPU(shadow2_unshadow,       "shadow2 unshadows a page")
PERFCOUNTER_CPU(shadow2_up_pointer,     "shadow2 unshadow by up-pointer")
PERFCOUNTER_CPU(shadow2_unshadow_bf,    "shadow2 unshadow brute-force")
PERFCOUNTER_CPU(shadow2_get_page_fail,  "shadow2_get_page_from_l1e failed")
PERFCOUNTER_CPU(shadow2_guest_walk,     "shadow2 walks guest tables")
PERFCOUNTER_CPU(shadow2_walk_cache_hit, "shadow2 walk-cache hits")
PERFCOUNTER_CPU(shadow2_walk_cache_miss, "shadow2 walk-cache misses")


/*#endif*/ /* __XEN_PERFC_DEFN_H__ */