/root/src/xen/xen/include/asm/domain.h
Line | Count | Source (jump to first uncovered line) |
1 | | #ifndef __ASM_DOMAIN_H__ |
2 | | #define __ASM_DOMAIN_H__ |
3 | | |
4 | | #include <xen/mm.h> |
5 | | #include <xen/radix-tree.h> |
6 | | #include <asm/hvm/vcpu.h> |
7 | | #include <asm/hvm/domain.h> |
8 | | #include <asm/e820.h> |
9 | | #include <asm/mce.h> |
10 | | #include <asm/vpmu.h> |
11 | | #include <asm/x86_emulate.h> |
12 | | #include <public/vcpu.h> |
13 | | #include <public/hvm/hvm_info_table.h> |
14 | | |
15 | 9.96M | #define has_32bit_shinfo(d) ((d)->arch.has_32bit_shinfo) |
16 | 39.5k | #define is_pv_32bit_domain(d) ((d)->arch.is_32bit_pv) |
17 | 0 | #define is_pv_32bit_vcpu(v) (is_pv_32bit_domain((v)->domain)) |
18 | | |
19 | 99.6k | #define is_hvm_pv_evtchn_domain(d) (is_hvm_domain(d) && \ |
20 | 99.7k | (d)->arch.hvm_domain.irq->callback_via_type == HVMIRQ_callback_vector) |
21 | 99.6k | #define is_hvm_pv_evtchn_vcpu(v) (is_hvm_pv_evtchn_domain(v->domain)) |
22 | 1 | #define is_domain_direct_mapped(d) ((void)(d), 0) |
23 | | |
24 | 0 | #define VCPU_TRAP_NMI 1 |
25 | 0 | #define VCPU_TRAP_MCE 2 |
26 | 0 | #define VCPU_TRAP_LAST VCPU_TRAP_MCE |
27 | | |
28 | 0 | #define nmi_state async_exception_state(VCPU_TRAP_NMI) |
29 | | #define mce_state async_exception_state(VCPU_TRAP_MCE) |
30 | | |
31 | 0 | #define nmi_pending nmi_state.pending |
32 | | #define mce_pending mce_state.pending |
33 | | |
34 | | struct trap_bounce { |
35 | | uint32_t error_code; |
36 | | uint8_t flags; /* TBF_ */ |
37 | | uint16_t cs; |
38 | | unsigned long eip; |
39 | | }; |
40 | | |
41 | 18.4E | #define MAPHASH_ENTRIES 8 |
42 | 18.4E | #define MAPHASH_HASHFN(pfn) ((pfn) & (MAPHASH_ENTRIES-1)) |
43 | 0 | #define MAPHASHENT_NOTINUSE ((u32)~0U) |
44 | | struct mapcache_vcpu { |
45 | | /* Shadow of mapcache_domain.epoch. */ |
46 | | unsigned int shadow_epoch; |
47 | | |
48 | | /* Lock-free per-VCPU hash of recently-used mappings. */ |
49 | | struct vcpu_maphash_entry { |
50 | | unsigned long mfn; |
51 | | uint32_t idx; |
52 | | uint32_t refcnt; |
53 | | } hash[MAPHASH_ENTRIES]; |
54 | | }; |
55 | | |
56 | | struct mapcache_domain { |
57 | | /* The number of array entries, and a cursor into the array. */ |
58 | | unsigned int entries; |
59 | | unsigned int cursor; |
60 | | |
61 | | /* Protects map_domain_page(). */ |
62 | | spinlock_t lock; |
63 | | |
64 | | /* Garbage mappings are flushed from TLBs in batches called 'epochs'. */ |
65 | | unsigned int epoch; |
66 | | u32 tlbflush_timestamp; |
67 | | |
68 | | /* Which mappings are in use, and which are garbage to reap next epoch? */ |
69 | | unsigned long *inuse; |
70 | | unsigned long *garbage; |
71 | | }; |
72 | | |
73 | | int mapcache_domain_init(struct domain *); |
74 | | int mapcache_vcpu_init(struct vcpu *); |
75 | | void mapcache_override_current(struct vcpu *); |
76 | | |
77 | | /* x86/64: toggle guest between kernel and user modes. */ |
78 | | void toggle_guest_mode(struct vcpu *); |
79 | | |
80 | | /* |
81 | | * Initialise a hypercall-transfer page. The given pointer must be mapped |
82 | | * in Xen virtual address space (accesses are not validated or checked). |
83 | | */ |
84 | | void hypercall_page_initialise(struct domain *d, void *); |
85 | | |
86 | | /************************************************/ |
87 | | /* shadow paging extension */ |
88 | | /************************************************/ |
89 | | struct shadow_domain { |
90 | | #ifdef CONFIG_SHADOW_PAGING |
91 | | unsigned int opt_flags; /* runtime tunable optimizations on/off */ |
92 | | struct page_list_head pinned_shadows; |
93 | | |
94 | | /* Memory allocation */ |
95 | | struct page_list_head freelist; |
96 | | unsigned int total_pages; /* number of pages allocated */ |
97 | | unsigned int free_pages; /* number of pages on freelists */ |
98 | | unsigned int p2m_pages; /* number of pages allocates to p2m */ |
99 | | |
100 | | /* 1-to-1 map for use when HVM vcpus have paging disabled */ |
101 | | pagetable_t unpaged_pagetable; |
102 | | |
103 | | /* reflect guest table dirty status, incremented by write |
104 | | * emulation and remove write permission */ |
105 | | atomic_t gtable_dirty_version; |
106 | | |
107 | | /* Shadow hashtable */ |
108 | | struct page_info **hash_table; |
109 | | bool_t hash_walking; /* Some function is walking the hash table */ |
110 | | |
111 | | /* Fast MMIO path heuristic */ |
112 | | bool_t has_fast_mmio_entries; |
113 | | |
114 | | /* OOS */ |
115 | | bool_t oos_active; |
116 | | bool_t oos_off; |
117 | | |
118 | | /* Has this domain ever used HVMOP_pagetable_dying? */ |
119 | | bool_t pagetable_dying_op; |
120 | | #endif |
121 | | }; |
122 | | |
123 | | struct shadow_vcpu { |
124 | | #ifdef CONFIG_SHADOW_PAGING |
125 | | /* PAE guests: per-vcpu shadow top-level table */ |
126 | | l3_pgentry_t l3table[4] __attribute__((__aligned__(32))); |
127 | | /* PAE guests: per-vcpu cache of the top-level *guest* entries */ |
128 | | l3_pgentry_t gl3e[4] __attribute__((__aligned__(32))); |
129 | | /* Non-PAE guests: pointer to guest top-level pagetable */ |
130 | | void *guest_vtable; |
131 | | /* Last MFN that we emulated a write to as unshadow heuristics. */ |
132 | | unsigned long last_emulated_mfn_for_unshadow; |
133 | | /* MFN of the last shadow that we shot a writeable mapping in */ |
134 | | unsigned long last_writeable_pte_smfn; |
135 | | /* Last frame number that we emulated a write to. */ |
136 | | unsigned long last_emulated_frame; |
137 | | /* Last MFN that we emulated a write successfully */ |
138 | | unsigned long last_emulated_mfn; |
139 | | |
140 | | /* Shadow out-of-sync: pages that this vcpu has let go out of sync */ |
141 | | mfn_t oos[SHADOW_OOS_PAGES]; |
142 | | mfn_t oos_snapshot[SHADOW_OOS_PAGES]; |
143 | | struct oos_fixup { |
144 | | int next; |
145 | | mfn_t smfn[SHADOW_OOS_FIXUPS]; |
146 | | unsigned long off[SHADOW_OOS_FIXUPS]; |
147 | | } oos_fixup[SHADOW_OOS_PAGES]; |
148 | | |
149 | | bool_t pagetable_dying; |
150 | | #endif |
151 | | }; |
152 | | |
153 | | /************************************************/ |
154 | | /* hardware assisted paging */ |
155 | | /************************************************/ |
156 | | struct hap_domain { |
157 | | struct page_list_head freelist; |
158 | | unsigned int total_pages; /* number of pages allocated */ |
159 | | unsigned int free_pages; /* number of pages on freelists */ |
160 | | unsigned int p2m_pages; /* number of pages allocates to p2m */ |
161 | | }; |
162 | | |
163 | | /************************************************/ |
164 | | /* common paging data structure */ |
165 | | /************************************************/ |
166 | | struct log_dirty_domain { |
167 | | /* log-dirty radix tree to record dirty pages */ |
168 | | mfn_t top; |
169 | | unsigned int allocs; |
170 | | unsigned int failed_allocs; |
171 | | |
172 | | /* log-dirty mode stats */ |
173 | | unsigned int fault_count; |
174 | | unsigned int dirty_count; |
175 | | |
176 | | /* functions which are paging mode specific */ |
177 | | const struct log_dirty_ops { |
178 | | int (*enable )(struct domain *d, bool log_global); |
179 | | int (*disable )(struct domain *d); |
180 | | void (*clean )(struct domain *d); |
181 | | } *ops; |
182 | | }; |
183 | | |
184 | | struct paging_domain { |
185 | | /* paging lock */ |
186 | | mm_lock_t lock; |
187 | | |
188 | | /* flags to control paging operation */ |
189 | | u32 mode; |
190 | | /* Has that pool ever run out of memory? */ |
191 | | bool_t p2m_alloc_failed; |
192 | | /* extension for shadow paging support */ |
193 | | struct shadow_domain shadow; |
194 | | /* extension for hardware-assited paging */ |
195 | | struct hap_domain hap; |
196 | | /* log dirty support */ |
197 | | struct log_dirty_domain log_dirty; |
198 | | |
199 | | /* preemption handling */ |
200 | | struct { |
201 | | const struct domain *dom; |
202 | | unsigned int op; |
203 | | union { |
204 | | struct { |
205 | | unsigned long done:PADDR_BITS - PAGE_SHIFT; |
206 | | unsigned long i4:PAGETABLE_ORDER; |
207 | | unsigned long i3:PAGETABLE_ORDER; |
208 | | } log_dirty; |
209 | | }; |
210 | | } preempt; |
211 | | |
212 | | /* alloc/free pages from the pool for paging-assistance structures |
213 | | * (used by p2m and log-dirty code for their tries) */ |
214 | | struct page_info * (*alloc_page)(struct domain *d); |
215 | | void (*free_page)(struct domain *d, struct page_info *pg); |
216 | | }; |
217 | | |
218 | | struct paging_vcpu { |
219 | | /* Pointers to mode-specific entry points. */ |
220 | | const struct paging_mode *mode; |
221 | | /* Nested Virtualization: paging mode of nested guest */ |
222 | | const struct paging_mode *nestedmode; |
223 | | /* HVM guest: last emulate was to a pagetable */ |
224 | | unsigned int last_write_was_pt:1; |
225 | | /* HVM guest: last write emulation succeeds */ |
226 | | unsigned int last_write_emul_ok:1; |
227 | | /* Translated guest: virtual TLB */ |
228 | | struct shadow_vtlb *vtlb; |
229 | | spinlock_t vtlb_lock; |
230 | | |
231 | | /* paging support extension */ |
232 | | struct shadow_vcpu shadow; |
233 | | }; |
234 | | |
235 | 22 | #define MAX_NESTEDP2M 10 |
236 | | |
237 | 11 | #define MAX_ALTP2M 10 /* arbitrary */ |
238 | 0 | #define INVALID_ALTP2M 0xffff |
239 | 0 | #define MAX_EPTP (PAGE_SIZE / sizeof(uint64_t)) |
240 | | struct p2m_domain; |
241 | | struct time_scale { |
242 | | int shift; |
243 | | u32 mul_frac; |
244 | | }; |
245 | | |
246 | | struct pv_domain |
247 | | { |
248 | | l1_pgentry_t **gdt_ldt_l1tab; |
249 | | |
250 | | atomic_t nr_l4_pages; |
251 | | |
252 | | /* map_domain_page() mapping cache. */ |
253 | | struct mapcache_domain mapcache; |
254 | | |
255 | | struct cpuidmasks *cpuidmasks; |
256 | | }; |
257 | | |
258 | | struct monitor_write_data { |
259 | | struct { |
260 | | unsigned int msr : 1; |
261 | | unsigned int cr0 : 1; |
262 | | unsigned int cr3 : 1; |
263 | | unsigned int cr4 : 1; |
264 | | } do_write; |
265 | | |
266 | | uint32_t msr; |
267 | | uint64_t value; |
268 | | uint64_t cr0; |
269 | | uint64_t cr3; |
270 | | uint64_t cr4; |
271 | | }; |
272 | | |
273 | | struct arch_domain |
274 | | { |
275 | | struct page_info *perdomain_l3_pg; |
276 | | |
277 | | unsigned int hv_compat_vstart; |
278 | | |
279 | | /* Maximum physical-address bitwidth supported by this guest. */ |
280 | | unsigned int physaddr_bitsize; |
281 | | |
282 | | /* I/O-port admin-specified access capabilities. */ |
283 | | struct rangeset *ioport_caps; |
284 | | uint32_t pci_cf8; |
285 | | uint8_t cmos_idx; |
286 | | |
287 | | bool_t s3_integrity; |
288 | | |
289 | | struct list_head pdev_list; |
290 | | |
291 | | union { |
292 | | struct pv_domain pv_domain; |
293 | | struct hvm_domain hvm_domain; |
294 | | }; |
295 | | |
296 | | struct paging_domain paging; |
297 | | struct p2m_domain *p2m; |
298 | | /* To enforce lock ordering in the pod code wrt the |
299 | | * page_alloc lock */ |
300 | | int page_alloc_unlock_level; |
301 | | |
302 | | /* Continuable domain_relinquish_resources(). */ |
303 | | enum { |
304 | | RELMEM_not_started, |
305 | | RELMEM_shared, |
306 | | RELMEM_xen, |
307 | | RELMEM_l4, |
308 | | RELMEM_l3, |
309 | | RELMEM_l2, |
310 | | RELMEM_done, |
311 | | } relmem; |
312 | | struct page_list_head relmem_list; |
313 | | |
314 | | const struct arch_csw { |
315 | | void (*from)(struct vcpu *); |
316 | | void (*to)(struct vcpu *); |
317 | | void (*tail)(struct vcpu *); |
318 | | } *ctxt_switch; |
319 | | |
320 | | /* nestedhvm: translate l2 guest physical to host physical */ |
321 | | struct p2m_domain *nested_p2m[MAX_NESTEDP2M]; |
322 | | mm_lock_t nested_p2m_lock; |
323 | | |
324 | | /* altp2m: allow multiple copies of host p2m */ |
325 | | bool_t altp2m_active; |
326 | | struct p2m_domain *altp2m_p2m[MAX_ALTP2M]; |
327 | | mm_lock_t altp2m_list_lock; |
328 | | uint64_t *altp2m_eptp; |
329 | | |
330 | | /* NB. protected by d->event_lock and by irq_desc[irq].lock */ |
331 | | struct radix_tree_root irq_pirq; |
332 | | |
333 | | /* Is a 32-bit PV (non-HVM) guest? */ |
334 | | bool_t is_32bit_pv; |
335 | | /* Is shared-info page in 32-bit format? */ |
336 | | bool_t has_32bit_shinfo; |
337 | | |
338 | | /* Domain cannot handle spurious page faults? */ |
339 | | bool_t suppress_spurious_page_faults; |
340 | | |
341 | | /* Is PHYSDEVOP_eoi to automatically unmask the event channel? */ |
342 | | bool_t auto_unmask; |
343 | | |
344 | | /* |
345 | | * The width of the FIP/FDP register in the FPU that needs to be |
346 | | * saved/restored during a context switch. This is needed because |
347 | | * the FPU can either: a) restore the 64-bit FIP/FDP and clear FCS |
348 | | * and FDS; or b) restore the 32-bit FIP/FDP (clearing the upper |
349 | | * 32-bits of FIP/FDP) and restore FCS/FDS. |
350 | | * |
351 | | * Which one is needed depends on the guest. |
352 | | * |
353 | | * This can be either: 8, 4 or 0. 0 means auto-detect the size |
354 | | * based on the width of FIP/FDP values that are written by the |
355 | | * guest. |
356 | | */ |
357 | | uint8_t x87_fip_width; |
358 | | |
359 | | /* CPUID and MSR policy objects. */ |
360 | | struct cpuid_policy *cpuid; |
361 | | struct msr_domain_policy *msr; |
362 | | |
363 | | struct PITState vpit; |
364 | | |
365 | | /* TSC management (emulation, pv, scaling, stats) */ |
366 | | int tsc_mode; /* see include/asm-x86/time.h */ |
367 | | bool_t vtsc; /* tsc is emulated (may change after migrate) */ |
368 | | s_time_t vtsc_last; /* previous TSC value (guarantee monotonicity) */ |
369 | | spinlock_t vtsc_lock; |
370 | | uint64_t vtsc_offset; /* adjustment for save/restore/migrate */ |
371 | | uint32_t tsc_khz; /* cached guest khz for certain emulated or |
372 | | hardware TSC scaling cases */ |
373 | | struct time_scale vtsc_to_ns; /* scaling for certain emulated or |
374 | | hardware TSC scaling cases */ |
375 | | struct time_scale ns_to_vtsc; /* scaling for certain emulated or |
376 | | hardware TSC scaling cases */ |
377 | | uint32_t incarnation; /* incremented every restore or live migrate |
378 | | (possibly other cases in the future */ |
379 | | #if !defined(NDEBUG) || defined(CONFIG_PERF_COUNTERS) |
380 | | uint64_t vtsc_kerncount; |
381 | | uint64_t vtsc_usercount; |
382 | | #endif |
383 | | |
384 | | /* Pseudophysical e820 map (XENMEM_memory_map). */ |
385 | | spinlock_t e820_lock; |
386 | | struct e820entry *e820; |
387 | | unsigned int nr_e820; |
388 | | |
389 | | /* RMID assigned to the domain for CMT */ |
390 | | unsigned int psr_rmid; |
391 | | /* COS assigned to the domain for each socket */ |
392 | | unsigned int *psr_cos_ids; |
393 | | |
394 | | /* Shared page for notifying that explicit PIRQ EOI is required. */ |
395 | | unsigned long *pirq_eoi_map; |
396 | | unsigned long pirq_eoi_map_mfn; |
397 | | |
398 | | /* Arch-specific monitor options */ |
399 | | struct { |
400 | | unsigned int write_ctrlreg_enabled : 4; |
401 | | unsigned int write_ctrlreg_sync : 4; |
402 | | unsigned int write_ctrlreg_onchangeonly : 4; |
403 | | unsigned int singlestep_enabled : 1; |
404 | | unsigned int software_breakpoint_enabled : 1; |
405 | | unsigned int debug_exception_enabled : 1; |
406 | | unsigned int debug_exception_sync : 1; |
407 | | unsigned int cpuid_enabled : 1; |
408 | | unsigned int descriptor_access_enabled : 1; |
409 | | unsigned int guest_request_userspace_enabled : 1; |
410 | | unsigned int emul_unimplemented_enabled : 1; |
411 | | struct monitor_msr_bitmap *msr_bitmap; |
412 | | uint64_t write_ctrlreg_mask[4]; |
413 | | } monitor; |
414 | | |
415 | | /* Mem_access emulation control */ |
416 | | bool_t mem_access_emulate_each_rep; |
417 | | |
418 | | /* Emulated devices enabled bitmap. */ |
419 | | uint32_t emulation_flags; |
420 | | } __cacheline_aligned; |
421 | | |
422 | 70 | #define has_vlapic(d) (!!((d)->arch.emulation_flags & XEN_X86_EMU_LAPIC)) |
423 | 1 | #define has_vhpet(d) (!!((d)->arch.emulation_flags & XEN_X86_EMU_HPET)) |
424 | 1 | #define has_vpm(d) (!!((d)->arch.emulation_flags & XEN_X86_EMU_PM)) |
425 | 549 | #define has_vrtc(d) (!!((d)->arch.emulation_flags & XEN_X86_EMU_RTC)) |
426 | 2 | #define has_vioapic(d) (!!((d)->arch.emulation_flags & XEN_X86_EMU_IOAPIC)) |
427 | 7.85M | #define has_vpic(d) (!!((d)->arch.emulation_flags & XEN_X86_EMU_PIC)) |
428 | 1 | #define has_vvga(d) (!!((d)->arch.emulation_flags & XEN_X86_EMU_VGA)) |
429 | 0 | #define has_viommu(d) (!!((d)->arch.emulation_flags & XEN_X86_EMU_IOMMU)) |
430 | 2 | #define has_vpit(d) (!!((d)->arch.emulation_flags & XEN_X86_EMU_PIT)) |
431 | 70 | #define has_pirq(d) (!!((d)->arch.emulation_flags & \ |
432 | 70 | XEN_X86_EMU_USE_PIRQ)) |
433 | 9.75M | #define has_vpci(d) (!!((d)->arch.emulation_flags & XEN_X86_EMU_VPCI)) |
434 | | |
435 | 18.4E | #define has_arch_pdevs(d) (!list_empty(&(d)->arch.pdev_list)) |
436 | | |
437 | | #define gdt_ldt_pt_idx(v) \ |
438 | 0 | ((v)->vcpu_id >> (PAGETABLE_ORDER - GDT_LDT_VCPU_SHIFT)) |
439 | | #define pv_gdt_ptes(v) \ |
440 | 0 | ((v)->domain->arch.pv_domain.gdt_ldt_l1tab[gdt_ldt_pt_idx(v)] + \ |
441 | 0 | (((v)->vcpu_id << GDT_LDT_VCPU_SHIFT) & (L1_PAGETABLE_ENTRIES - 1))) |
442 | 0 | #define pv_ldt_ptes(v) (pv_gdt_ptes(v) + 16) |
443 | | |
444 | | struct pv_vcpu |
445 | | { |
446 | | /* map_domain_page() mapping cache. */ |
447 | | struct mapcache_vcpu mapcache; |
448 | | |
449 | | struct trap_info *trap_ctxt; |
450 | | |
451 | | unsigned long gdt_frames[FIRST_RESERVED_GDT_PAGE]; |
452 | | unsigned long ldt_base; |
453 | | unsigned int gdt_ents, ldt_ents; |
454 | | |
455 | | unsigned long kernel_ss, kernel_sp; |
456 | | unsigned long ctrlreg[8]; |
457 | | |
458 | | unsigned long event_callback_eip; |
459 | | unsigned long failsafe_callback_eip; |
460 | | union { |
461 | | unsigned long syscall_callback_eip; |
462 | | struct { |
463 | | unsigned int event_callback_cs; |
464 | | unsigned int failsafe_callback_cs; |
465 | | }; |
466 | | }; |
467 | | |
468 | | unsigned long syscall32_callback_eip; |
469 | | unsigned long sysenter_callback_eip; |
470 | | unsigned short syscall32_callback_cs; |
471 | | unsigned short sysenter_callback_cs; |
472 | | bool_t syscall32_disables_events; |
473 | | bool_t sysenter_disables_events; |
474 | | |
475 | | /* Segment base addresses. */ |
476 | | unsigned long fs_base; |
477 | | unsigned long gs_base_kernel; |
478 | | unsigned long gs_base_user; |
479 | | |
480 | | /* Bounce information for propagating an exception to guest OS. */ |
481 | | struct trap_bounce trap_bounce; |
482 | | struct trap_bounce int80_bounce; |
483 | | |
484 | | /* I/O-port access bitmap. */ |
485 | | XEN_GUEST_HANDLE(uint8) iobmp; /* Guest kernel vaddr of the bitmap. */ |
486 | | unsigned int iobmp_limit; /* Number of ports represented in the bitmap. */ |
487 | 0 | #define IOPL(val) MASK_INSR(val, X86_EFLAGS_IOPL) |
488 | | unsigned int iopl; /* Current IOPL for this VCPU, shifted left by |
489 | | * 12 to match the eflags register. */ |
490 | | |
491 | | /* Current LDT details. */ |
492 | | unsigned long shadow_ldt_mapcnt; |
493 | | spinlock_t shadow_ldt_lock; |
494 | | |
495 | | /* data breakpoint extension MSRs */ |
496 | | uint32_t dr_mask[4]; |
497 | | |
498 | | /* Deferred VA-based update state. */ |
499 | | bool_t need_update_runstate_area; |
500 | | struct vcpu_time_info pending_system_time; |
501 | | }; |
502 | | |
503 | | typedef enum __packed { |
504 | | SMAP_CHECK_HONOR_CPL_AC, /* honor the guest's CPL and AC */ |
505 | | SMAP_CHECK_ENABLED, /* enable the check */ |
506 | | SMAP_CHECK_DISABLED, /* disable the check */ |
507 | | } smap_check_policy_t; |
508 | | |
509 | | struct arch_vcpu |
510 | | { |
511 | | /* |
512 | | * guest context (mirroring struct vcpu_guest_context) common |
513 | | * between pv and hvm guests |
514 | | */ |
515 | | |
516 | | void *fpu_ctxt; |
517 | | unsigned long vgc_flags; |
518 | | struct cpu_user_regs user_regs; |
519 | | unsigned long debugreg[8]; |
520 | | |
521 | | /* other state */ |
522 | | |
523 | | unsigned long flags; /* TF_ */ |
524 | | |
525 | | struct vpmu_struct vpmu; |
526 | | |
527 | | /* Virtual Machine Extensions */ |
528 | | union { |
529 | | struct pv_vcpu pv_vcpu; |
530 | | struct hvm_vcpu hvm_vcpu; |
531 | | }; |
532 | | |
533 | | pagetable_t guest_table_user; /* (MFN) x86/64 user-space pagetable */ |
534 | | pagetable_t guest_table; /* (MFN) guest notion of cr3 */ |
535 | | struct page_info *old_guest_table; /* partially destructed pagetable */ |
536 | | struct page_info *old_guest_ptpg; /* containing page table of the */ |
537 | | /* former, if any */ |
538 | | /* guest_table holds a ref to the page, and also a type-count unless |
539 | | * shadow refcounts are in use */ |
540 | | pagetable_t shadow_table[4]; /* (MFN) shadow(s) of guest */ |
541 | | pagetable_t monitor_table; /* (MFN) hypervisor PT (for HVM) */ |
542 | | unsigned long cr3; /* (MA) value to install in HW CR3 */ |
543 | | |
544 | | /* |
545 | | * The save area for Processor Extended States and the bitmask of the |
546 | | * XSAVE/XRSTOR features. They are used by: 1) when a vcpu (which has |
547 | | * dirtied FPU/SSE) is scheduled out we XSAVE the states here; 2) in |
548 | | * #NM handler, we XRSTOR the states we XSAVE-ed; |
549 | | */ |
550 | | struct xsave_struct *xsave_area; |
551 | | uint64_t xcr0; |
552 | | /* Accumulated eXtended features mask for using XSAVE/XRESTORE by Xen |
553 | | * itself, as we can never know whether guest OS depends on content |
554 | | * preservation whenever guest OS clears one feature flag (for example, |
555 | | * temporarily). |
556 | | * However, processor should not be able to touch eXtended states before |
557 | | * it explicitly enables it via xcr0. |
558 | | */ |
559 | | uint64_t xcr0_accum; |
560 | | /* This variable determines whether nonlazy extended state has been used, |
561 | | * and thus should be saved/restored. */ |
562 | | bool_t nonlazy_xstate_used; |
563 | | |
564 | | /* |
565 | | * The SMAP check policy when updating runstate_guest(v) and the |
566 | | * secondary system time. |
567 | | */ |
568 | | smap_check_policy_t smap_check_policy; |
569 | | |
570 | | struct vmce vmce; |
571 | | |
572 | | struct paging_vcpu paging; |
573 | | |
574 | | uint32_t gdbsx_vcpu_event; |
575 | | |
576 | | /* A secondary copy of the vcpu time info. */ |
577 | | XEN_GUEST_HANDLE(vcpu_time_info_t) time_info_guest; |
578 | | |
579 | | struct arch_vm_event *vm_event; |
580 | | |
581 | | struct msr_vcpu_policy *msr; |
582 | | |
583 | | struct { |
584 | | bool next_interrupt_enabled; |
585 | | } monitor; |
586 | | }; |
587 | | |
588 | | struct guest_memory_policy |
589 | | { |
590 | | smap_check_policy_t smap_policy; |
591 | | bool nested_guest_mode; |
592 | | }; |
593 | | |
594 | | void update_guest_memory_policy(struct vcpu *v, |
595 | | struct guest_memory_policy *policy); |
596 | | |
597 | | /* Shorthands to improve code legibility. */ |
598 | 30.2M | #define hvm_vmx hvm_vcpu.u.vmx |
599 | 0 | #define hvm_svm hvm_vcpu.u.svm |
600 | | |
601 | | bool update_runstate_area(struct vcpu *); |
602 | | bool update_secondary_system_time(struct vcpu *, |
603 | | struct vcpu_time_info *); |
604 | | |
605 | | void vcpu_show_execution_state(struct vcpu *); |
606 | | void vcpu_show_registers(const struct vcpu *); |
607 | | |
608 | | /* Clean up CR4 bits that are not under guest control. */ |
609 | | unsigned long pv_guest_cr4_fixup(const struct vcpu *, unsigned long guest_cr4); |
610 | | |
611 | | /* Convert between guest-visible and real CR4 values. */ |
612 | | #define pv_guest_cr4_to_real_cr4(v) \ |
613 | 0 | (((v)->arch.pv_vcpu.ctrlreg[4] \ |
614 | 0 | | (mmu_cr4_features \ |
615 | 0 | & (X86_CR4_PGE | X86_CR4_PSE | X86_CR4_SMEP | \ |
616 | 0 | X86_CR4_SMAP | X86_CR4_OSXSAVE | \ |
617 | 0 | X86_CR4_FSGSBASE)) \ |
618 | 0 | | ((v)->domain->arch.vtsc ? X86_CR4_TSD : 0)) \ |
619 | 0 | & ~X86_CR4_DE) |
620 | | #define real_cr4_to_pv_guest_cr4(c) \ |
621 | 0 | ((c) & ~(X86_CR4_PGE | X86_CR4_PSE | X86_CR4_TSD | \ |
622 | 0 | X86_CR4_OSXSAVE | X86_CR4_SMEP | \ |
623 | 0 | X86_CR4_FSGSBASE | X86_CR4_SMAP)) |
624 | | |
625 | 0 | #define domain_max_vcpus(d) (is_hvm_domain(d) ? HVM_MAX_VCPUS : MAX_VIRT_CPUS) |
626 | | |
627 | | static inline struct vcpu_guest_context *alloc_vcpu_guest_context(void) |
628 | 0 | { |
629 | 0 | return vmalloc(sizeof(struct vcpu_guest_context)); |
630 | 0 | } Unexecuted instantiation: mm.c:alloc_vcpu_guest_context Unexecuted instantiation: ro-page-fault.c:alloc_vcpu_guest_context Unexecuted instantiation: misc-hypercalls.c:alloc_vcpu_guest_context Unexecuted instantiation: iret.c:alloc_vcpu_guest_context Unexecuted instantiation: emul-priv-op.c:alloc_vcpu_guest_context Unexecuted instantiation: emul-inv-op.c:alloc_vcpu_guest_context Unexecuted instantiation: emul-gate-op.c:alloc_vcpu_guest_context Unexecuted instantiation: descriptor-tables.c:alloc_vcpu_guest_context Unexecuted instantiation: callback.c:alloc_vcpu_guest_context Unexecuted instantiation: backtrace.c:alloc_vcpu_guest_context Unexecuted instantiation: op_model_athlon.c:alloc_vcpu_guest_context Unexecuted instantiation: op_model_ppro.c:alloc_vcpu_guest_context Unexecuted instantiation: nmi_int.c:alloc_vcpu_guest_context Unexecuted instantiation: nested_ept.c:alloc_vcpu_guest_context Unexecuted instantiation: nested_hap.c:alloc_vcpu_guest_context Unexecuted instantiation: hap.c:alloc_vcpu_guest_context Unexecuted instantiation: multi.c:alloc_vcpu_guest_context Unexecuted instantiation: mem_sharing.c:alloc_vcpu_guest_context Unexecuted instantiation: mem_paging.c:alloc_vcpu_guest_context Unexecuted instantiation: guest_walk.c:alloc_vcpu_guest_context Unexecuted instantiation: altp2m.c:alloc_vcpu_guest_context Unexecuted instantiation: p2m-pod.c:alloc_vcpu_guest_context Unexecuted instantiation: p2m-ept.c:alloc_vcpu_guest_context Unexecuted instantiation: p2m-pt.c:alloc_vcpu_guest_context Unexecuted instantiation: p2m.c:alloc_vcpu_guest_context Unexecuted instantiation: paging.c:alloc_vcpu_guest_context Unexecuted instantiation: vvmx.c:alloc_vcpu_guest_context Unexecuted instantiation: vmx.c:alloc_vcpu_guest_context Unexecuted instantiation: vmcs.c:alloc_vcpu_guest_context Unexecuted instantiation: realmode.c:alloc_vcpu_guest_context Unexecuted instantiation: vmcb.c:alloc_vcpu_guest_context Unexecuted instantiation: svmdebug.c:alloc_vcpu_guest_context Unexecuted instantiation: svm.c:alloc_vcpu_guest_context Unexecuted instantiation: nestedsvm.c:alloc_vcpu_guest_context Unexecuted instantiation: intr.c:alloc_vcpu_guest_context Unexecuted instantiation: vpt.c:alloc_vcpu_guest_context Unexecuted instantiation: vpic.c:alloc_vcpu_guest_context Unexecuted instantiation: vmsi.c:alloc_vcpu_guest_context Unexecuted instantiation: vlapic.c:alloc_vcpu_guest_context Unexecuted instantiation: viridian.c:alloc_vcpu_guest_context Unexecuted instantiation: vioapic.c:alloc_vcpu_guest_context Unexecuted instantiation: stdvga.c:alloc_vcpu_guest_context Unexecuted instantiation: save.c:alloc_vcpu_guest_context Unexecuted instantiation: rtc.c:alloc_vcpu_guest_context Unexecuted instantiation: pmtimer.c:alloc_vcpu_guest_context Unexecuted instantiation: nestedhvm.c:alloc_vcpu_guest_context Unexecuted instantiation: mtrr.c:alloc_vcpu_guest_context Unexecuted instantiation: ioreq.c:alloc_vcpu_guest_context Unexecuted instantiation: intercept.c:alloc_vcpu_guest_context Unexecuted instantiation: i8254.c:alloc_vcpu_guest_context Unexecuted instantiation: hvm.c:alloc_vcpu_guest_context Unexecuted instantiation: hpet.c:alloc_vcpu_guest_context Unexecuted instantiation: emulate.c:alloc_vcpu_guest_context Unexecuted instantiation: dm.c:alloc_vcpu_guest_context Unexecuted instantiation: asid.c:alloc_vcpu_guest_context Unexecuted instantiation: delivery.c:alloc_vcpu_guest_context Unexecuted instantiation: vmce.c:alloc_vcpu_guest_context Unexecuted instantiation: util.c:alloc_vcpu_guest_context Unexecuted instantiation: non-fatal.c:alloc_vcpu_guest_context Unexecuted instantiation: mce_intel.c:alloc_vcpu_guest_context Unexecuted instantiation: mce-apei.c:alloc_vcpu_guest_context Unexecuted instantiation: mce.c:alloc_vcpu_guest_context Unexecuted instantiation: mctelem.c:alloc_vcpu_guest_context Unexecuted instantiation: barrier.c:alloc_vcpu_guest_context Unexecuted instantiation: mcaction.c:alloc_vcpu_guest_context Unexecuted instantiation: mce_amd.c:alloc_vcpu_guest_context Unexecuted instantiation: amd_nonfatal.c:alloc_vcpu_guest_context Unexecuted instantiation: vpmu_intel.c:alloc_vcpu_guest_context Unexecuted instantiation: vpmu_amd.c:alloc_vcpu_guest_context Unexecuted instantiation: vpmu.c:alloc_vcpu_guest_context Unexecuted instantiation: mwait-idle.c:alloc_vcpu_guest_context Unexecuted instantiation: intel.c:alloc_vcpu_guest_context Unexecuted instantiation: common.c:alloc_vcpu_guest_context Unexecuted instantiation: amd.c:alloc_vcpu_guest_context Unexecuted instantiation: cpu_idle.c:alloc_vcpu_guest_context Unexecuted instantiation: suspend.c:alloc_vcpu_guest_context Unexecuted instantiation: power.c:alloc_vcpu_guest_context Unexecuted instantiation: xstate.c:alloc_vcpu_guest_context Unexecuted instantiation: tboot.c:alloc_vcpu_guest_context Unexecuted instantiation: x86_emulate.c:alloc_vcpu_guest_context Unexecuted instantiation: usercopy.c:alloc_vcpu_guest_context Unexecuted instantiation: traps.c:alloc_vcpu_guest_context Unexecuted instantiation: smpboot.c:alloc_vcpu_guest_context Unexecuted instantiation: smp.c:alloc_vcpu_guest_context Unexecuted instantiation: setup.c:alloc_vcpu_guest_context Unexecuted instantiation: psr.c:alloc_vcpu_guest_context Unexecuted instantiation: platform_hypercall.c:alloc_vcpu_guest_context Unexecuted instantiation: physdev.c:alloc_vcpu_guest_context Unexecuted instantiation: numa.c:alloc_vcpu_guest_context Unexecuted instantiation: nmi.c:alloc_vcpu_guest_context Unexecuted instantiation: mpparse.c:alloc_vcpu_guest_context Unexecuted instantiation: microcode.c:alloc_vcpu_guest_context Unexecuted instantiation: microcode_intel.c:alloc_vcpu_guest_context Unexecuted instantiation: microcode_amd.c:alloc_vcpu_guest_context Unexecuted instantiation: machine_kexec.c:alloc_vcpu_guest_context Unexecuted instantiation: irq.c:alloc_vcpu_guest_context Unexecuted instantiation: ioport_emulate.c:alloc_vcpu_guest_context Unexecuted instantiation: msr.c:alloc_vcpu_guest_context Unexecuted instantiation: io_apic.c:alloc_vcpu_guest_context Unexecuted instantiation: i8259.c:alloc_vcpu_guest_context Unexecuted instantiation: i387.c:alloc_vcpu_guest_context Unexecuted instantiation: hypercall.c:alloc_vcpu_guest_context Unexecuted instantiation: flushtlb.c:alloc_vcpu_guest_context Unexecuted instantiation: domain_page.c:alloc_vcpu_guest_context Unexecuted instantiation: debug.c:alloc_vcpu_guest_context Unexecuted instantiation: crash.c:alloc_vcpu_guest_context Unexecuted instantiation: compat.c:alloc_vcpu_guest_context Unexecuted instantiation: cpuid.c:alloc_vcpu_guest_context Unexecuted instantiation: apic.c:alloc_vcpu_guest_context Unexecuted instantiation: xsm_core.c:alloc_vcpu_guest_context Unexecuted instantiation: pmstat.c:alloc_vcpu_guest_context Unexecuted instantiation: iommu_guest.c:alloc_vcpu_guest_context Unexecuted instantiation: iommu_cmd.c:alloc_vcpu_guest_context Unexecuted instantiation: iommu_intr.c:alloc_vcpu_guest_context Unexecuted instantiation: pci_amd_iommu.c:alloc_vcpu_guest_context Unexecuted instantiation: iommu_map.c:alloc_vcpu_guest_context Unexecuted instantiation: iommu_init.c:alloc_vcpu_guest_context Unexecuted instantiation: ats.c:alloc_vcpu_guest_context Unexecuted instantiation: vtd.c:alloc_vcpu_guest_context Unexecuted instantiation: quirks.c:alloc_vcpu_guest_context Unexecuted instantiation: intremap.c:alloc_vcpu_guest_context Unexecuted instantiation: qinval.c:alloc_vcpu_guest_context Unexecuted instantiation: utils.c:alloc_vcpu_guest_context Unexecuted instantiation: pci.c:alloc_vcpu_guest_context Unexecuted instantiation: io.c:alloc_vcpu_guest_context Unexecuted instantiation: iommu.c:alloc_vcpu_guest_context Unexecuted instantiation: msix.c:alloc_vcpu_guest_context Unexecuted instantiation: msi.c:alloc_vcpu_guest_context Unexecuted instantiation: header.c:alloc_vcpu_guest_context Unexecuted instantiation: vpci.c:alloc_vcpu_guest_context Unexecuted instantiation: utility.c:alloc_vcpu_guest_context Unexecuted instantiation: cpufreq_misc_governors.c:alloc_vcpu_guest_context Unexecuted instantiation: cpufreq_ondemand.c:alloc_vcpu_guest_context Unexecuted instantiation: cpufreq.c:alloc_vcpu_guest_context Unexecuted instantiation: ns16550.c:alloc_vcpu_guest_context Unexecuted instantiation: console.c:alloc_vcpu_guest_context Unexecuted instantiation: libelf-loader.c:alloc_vcpu_guest_context Unexecuted instantiation: llvm.c:alloc_vcpu_guest_context Unexecuted instantiation: tmem_control.c:alloc_vcpu_guest_context Unexecuted instantiation: tmem_xen.c:alloc_vcpu_guest_context Unexecuted instantiation: tmem.c:alloc_vcpu_guest_context Unexecuted instantiation: xenoprof.c:alloc_vcpu_guest_context Unexecuted instantiation: wait.c:alloc_vcpu_guest_context Unexecuted instantiation: vsprintf.c:alloc_vcpu_guest_context Unexecuted instantiation: vm_event.c:alloc_vcpu_guest_context Unexecuted instantiation: trace.c:alloc_vcpu_guest_context Unexecuted instantiation: timer.c:alloc_vcpu_guest_context Unexecuted instantiation: time.c:alloc_vcpu_guest_context Unexecuted instantiation: tasklet.c:alloc_vcpu_guest_context Unexecuted instantiation: sysctl.c:alloc_vcpu_guest_context Unexecuted instantiation: symbols.c:alloc_vcpu_guest_context Unexecuted instantiation: stop_machine.c:alloc_vcpu_guest_context Unexecuted instantiation: spinlock.c:alloc_vcpu_guest_context Unexecuted instantiation: softirq.c:alloc_vcpu_guest_context Unexecuted instantiation: shutdown.c:alloc_vcpu_guest_context Unexecuted instantiation: schedule.c:alloc_vcpu_guest_context Unexecuted instantiation: sched_null.c:alloc_vcpu_guest_context Unexecuted instantiation: sched_rt.c:alloc_vcpu_guest_context Unexecuted instantiation: sched_credit2.c:alloc_vcpu_guest_context Unexecuted instantiation: sched_credit.c:alloc_vcpu_guest_context Unexecuted instantiation: sched_arinc653.c:alloc_vcpu_guest_context Unexecuted instantiation: rcupdate.c:alloc_vcpu_guest_context Unexecuted instantiation: rangeset.c:alloc_vcpu_guest_context Unexecuted instantiation: page_alloc.c:alloc_vcpu_guest_context Unexecuted instantiation: multicall.c:alloc_vcpu_guest_context Unexecuted instantiation: monitor.c:alloc_vcpu_guest_context Unexecuted instantiation: memory.c:alloc_vcpu_guest_context Unexecuted instantiation: mem_access.c:alloc_vcpu_guest_context Unexecuted instantiation: kimage.c:alloc_vcpu_guest_context Unexecuted instantiation: kexec.c:alloc_vcpu_guest_context Unexecuted instantiation: keyhandler.c:alloc_vcpu_guest_context Unexecuted instantiation: kernel.c:alloc_vcpu_guest_context Unexecuted instantiation: guestcopy.c:alloc_vcpu_guest_context Unexecuted instantiation: grant_table.c:alloc_vcpu_guest_context Unexecuted instantiation: event_fifo.c:alloc_vcpu_guest_context Unexecuted instantiation: event_channel.c:alloc_vcpu_guest_context Unexecuted instantiation: event_2l.c:alloc_vcpu_guest_context Unexecuted instantiation: domain.c:alloc_vcpu_guest_context Unexecuted instantiation: domctl.c:alloc_vcpu_guest_context Unexecuted instantiation: cpupool.c:alloc_vcpu_guest_context Unexecuted instantiation: cpu.c:alloc_vcpu_guest_context |
631 | | |
632 | | static inline void free_vcpu_guest_context(struct vcpu_guest_context *vgc) |
633 | 0 | { |
634 | 0 | vfree(vgc); |
635 | 0 | } Unexecuted instantiation: ro-page-fault.c:free_vcpu_guest_context Unexecuted instantiation: cpu.c:free_vcpu_guest_context Unexecuted instantiation: misc-hypercalls.c:free_vcpu_guest_context Unexecuted instantiation: iret.c:free_vcpu_guest_context Unexecuted instantiation: emul-priv-op.c:free_vcpu_guest_context Unexecuted instantiation: emul-inv-op.c:free_vcpu_guest_context Unexecuted instantiation: emul-gate-op.c:free_vcpu_guest_context Unexecuted instantiation: descriptor-tables.c:free_vcpu_guest_context Unexecuted instantiation: callback.c:free_vcpu_guest_context Unexecuted instantiation: backtrace.c:free_vcpu_guest_context Unexecuted instantiation: op_model_athlon.c:free_vcpu_guest_context Unexecuted instantiation: op_model_ppro.c:free_vcpu_guest_context Unexecuted instantiation: nmi_int.c:free_vcpu_guest_context Unexecuted instantiation: nested_ept.c:free_vcpu_guest_context Unexecuted instantiation: nested_hap.c:free_vcpu_guest_context Unexecuted instantiation: hap.c:free_vcpu_guest_context Unexecuted instantiation: multi.c:free_vcpu_guest_context Unexecuted instantiation: mem_sharing.c:free_vcpu_guest_context Unexecuted instantiation: mem_paging.c:free_vcpu_guest_context Unexecuted instantiation: guest_walk.c:free_vcpu_guest_context Unexecuted instantiation: altp2m.c:free_vcpu_guest_context Unexecuted instantiation: p2m-pod.c:free_vcpu_guest_context Unexecuted instantiation: p2m-ept.c:free_vcpu_guest_context Unexecuted instantiation: p2m-pt.c:free_vcpu_guest_context Unexecuted instantiation: p2m.c:free_vcpu_guest_context Unexecuted instantiation: paging.c:free_vcpu_guest_context Unexecuted instantiation: vvmx.c:free_vcpu_guest_context Unexecuted instantiation: vmx.c:free_vcpu_guest_context Unexecuted instantiation: vmcs.c:free_vcpu_guest_context Unexecuted instantiation: realmode.c:free_vcpu_guest_context Unexecuted instantiation: vmcb.c:free_vcpu_guest_context Unexecuted instantiation: svmdebug.c:free_vcpu_guest_context Unexecuted instantiation: svm.c:free_vcpu_guest_context Unexecuted instantiation: nestedsvm.c:free_vcpu_guest_context Unexecuted instantiation: intr.c:free_vcpu_guest_context Unexecuted instantiation: vpt.c:free_vcpu_guest_context Unexecuted instantiation: vpic.c:free_vcpu_guest_context Unexecuted instantiation: vmsi.c:free_vcpu_guest_context Unexecuted instantiation: vlapic.c:free_vcpu_guest_context Unexecuted instantiation: viridian.c:free_vcpu_guest_context Unexecuted instantiation: vioapic.c:free_vcpu_guest_context Unexecuted instantiation: stdvga.c:free_vcpu_guest_context Unexecuted instantiation: save.c:free_vcpu_guest_context Unexecuted instantiation: rtc.c:free_vcpu_guest_context Unexecuted instantiation: pmtimer.c:free_vcpu_guest_context Unexecuted instantiation: nestedhvm.c:free_vcpu_guest_context Unexecuted instantiation: mtrr.c:free_vcpu_guest_context Unexecuted instantiation: ioreq.c:free_vcpu_guest_context Unexecuted instantiation: intercept.c:free_vcpu_guest_context Unexecuted instantiation: i8254.c:free_vcpu_guest_context Unexecuted instantiation: hvm.c:free_vcpu_guest_context Unexecuted instantiation: hpet.c:free_vcpu_guest_context Unexecuted instantiation: emulate.c:free_vcpu_guest_context Unexecuted instantiation: dm.c:free_vcpu_guest_context Unexecuted instantiation: asid.c:free_vcpu_guest_context Unexecuted instantiation: delivery.c:free_vcpu_guest_context Unexecuted instantiation: vmce.c:free_vcpu_guest_context Unexecuted instantiation: util.c:free_vcpu_guest_context Unexecuted instantiation: non-fatal.c:free_vcpu_guest_context Unexecuted instantiation: mce_intel.c:free_vcpu_guest_context Unexecuted instantiation: mce-apei.c:free_vcpu_guest_context Unexecuted instantiation: mce.c:free_vcpu_guest_context Unexecuted instantiation: mctelem.c:free_vcpu_guest_context Unexecuted instantiation: barrier.c:free_vcpu_guest_context Unexecuted instantiation: mcaction.c:free_vcpu_guest_context Unexecuted instantiation: mce_amd.c:free_vcpu_guest_context Unexecuted instantiation: amd_nonfatal.c:free_vcpu_guest_context Unexecuted instantiation: vpmu_intel.c:free_vcpu_guest_context Unexecuted instantiation: vpmu_amd.c:free_vcpu_guest_context Unexecuted instantiation: vpmu.c:free_vcpu_guest_context Unexecuted instantiation: mwait-idle.c:free_vcpu_guest_context Unexecuted instantiation: intel.c:free_vcpu_guest_context Unexecuted instantiation: common.c:free_vcpu_guest_context Unexecuted instantiation: amd.c:free_vcpu_guest_context Unexecuted instantiation: cpu_idle.c:free_vcpu_guest_context Unexecuted instantiation: suspend.c:free_vcpu_guest_context Unexecuted instantiation: power.c:free_vcpu_guest_context Unexecuted instantiation: xstate.c:free_vcpu_guest_context Unexecuted instantiation: tboot.c:free_vcpu_guest_context Unexecuted instantiation: x86_emulate.c:free_vcpu_guest_context Unexecuted instantiation: usercopy.c:free_vcpu_guest_context Unexecuted instantiation: traps.c:free_vcpu_guest_context Unexecuted instantiation: smpboot.c:free_vcpu_guest_context Unexecuted instantiation: smp.c:free_vcpu_guest_context Unexecuted instantiation: setup.c:free_vcpu_guest_context Unexecuted instantiation: psr.c:free_vcpu_guest_context Unexecuted instantiation: platform_hypercall.c:free_vcpu_guest_context Unexecuted instantiation: physdev.c:free_vcpu_guest_context Unexecuted instantiation: numa.c:free_vcpu_guest_context Unexecuted instantiation: nmi.c:free_vcpu_guest_context Unexecuted instantiation: mpparse.c:free_vcpu_guest_context Unexecuted instantiation: mm.c:free_vcpu_guest_context Unexecuted instantiation: microcode.c:free_vcpu_guest_context Unexecuted instantiation: microcode_intel.c:free_vcpu_guest_context Unexecuted instantiation: microcode_amd.c:free_vcpu_guest_context Unexecuted instantiation: machine_kexec.c:free_vcpu_guest_context Unexecuted instantiation: irq.c:free_vcpu_guest_context Unexecuted instantiation: ioport_emulate.c:free_vcpu_guest_context Unexecuted instantiation: msr.c:free_vcpu_guest_context Unexecuted instantiation: io_apic.c:free_vcpu_guest_context Unexecuted instantiation: i8259.c:free_vcpu_guest_context Unexecuted instantiation: i387.c:free_vcpu_guest_context Unexecuted instantiation: hypercall.c:free_vcpu_guest_context Unexecuted instantiation: flushtlb.c:free_vcpu_guest_context Unexecuted instantiation: domain_page.c:free_vcpu_guest_context Unexecuted instantiation: debug.c:free_vcpu_guest_context Unexecuted instantiation: crash.c:free_vcpu_guest_context Unexecuted instantiation: compat.c:free_vcpu_guest_context Unexecuted instantiation: cpuid.c:free_vcpu_guest_context Unexecuted instantiation: apic.c:free_vcpu_guest_context Unexecuted instantiation: xsm_core.c:free_vcpu_guest_context Unexecuted instantiation: pmstat.c:free_vcpu_guest_context Unexecuted instantiation: iommu_guest.c:free_vcpu_guest_context Unexecuted instantiation: iommu_cmd.c:free_vcpu_guest_context Unexecuted instantiation: iommu_intr.c:free_vcpu_guest_context Unexecuted instantiation: pci_amd_iommu.c:free_vcpu_guest_context Unexecuted instantiation: iommu_map.c:free_vcpu_guest_context Unexecuted instantiation: iommu_init.c:free_vcpu_guest_context Unexecuted instantiation: ats.c:free_vcpu_guest_context Unexecuted instantiation: vtd.c:free_vcpu_guest_context Unexecuted instantiation: quirks.c:free_vcpu_guest_context Unexecuted instantiation: intremap.c:free_vcpu_guest_context Unexecuted instantiation: qinval.c:free_vcpu_guest_context Unexecuted instantiation: utils.c:free_vcpu_guest_context Unexecuted instantiation: pci.c:free_vcpu_guest_context Unexecuted instantiation: io.c:free_vcpu_guest_context Unexecuted instantiation: iommu.c:free_vcpu_guest_context Unexecuted instantiation: msix.c:free_vcpu_guest_context Unexecuted instantiation: msi.c:free_vcpu_guest_context Unexecuted instantiation: header.c:free_vcpu_guest_context Unexecuted instantiation: vpci.c:free_vcpu_guest_context Unexecuted instantiation: utility.c:free_vcpu_guest_context Unexecuted instantiation: cpufreq_misc_governors.c:free_vcpu_guest_context Unexecuted instantiation: cpufreq_ondemand.c:free_vcpu_guest_context Unexecuted instantiation: cpufreq.c:free_vcpu_guest_context Unexecuted instantiation: ns16550.c:free_vcpu_guest_context Unexecuted instantiation: console.c:free_vcpu_guest_context Unexecuted instantiation: libelf-loader.c:free_vcpu_guest_context Unexecuted instantiation: llvm.c:free_vcpu_guest_context Unexecuted instantiation: tmem_control.c:free_vcpu_guest_context Unexecuted instantiation: tmem_xen.c:free_vcpu_guest_context Unexecuted instantiation: tmem.c:free_vcpu_guest_context Unexecuted instantiation: xenoprof.c:free_vcpu_guest_context Unexecuted instantiation: wait.c:free_vcpu_guest_context Unexecuted instantiation: vsprintf.c:free_vcpu_guest_context Unexecuted instantiation: vm_event.c:free_vcpu_guest_context Unexecuted instantiation: trace.c:free_vcpu_guest_context Unexecuted instantiation: timer.c:free_vcpu_guest_context Unexecuted instantiation: time.c:free_vcpu_guest_context Unexecuted instantiation: tasklet.c:free_vcpu_guest_context Unexecuted instantiation: sysctl.c:free_vcpu_guest_context Unexecuted instantiation: symbols.c:free_vcpu_guest_context Unexecuted instantiation: stop_machine.c:free_vcpu_guest_context Unexecuted instantiation: spinlock.c:free_vcpu_guest_context Unexecuted instantiation: softirq.c:free_vcpu_guest_context Unexecuted instantiation: shutdown.c:free_vcpu_guest_context Unexecuted instantiation: schedule.c:free_vcpu_guest_context Unexecuted instantiation: sched_null.c:free_vcpu_guest_context Unexecuted instantiation: sched_rt.c:free_vcpu_guest_context Unexecuted instantiation: sched_credit2.c:free_vcpu_guest_context Unexecuted instantiation: sched_credit.c:free_vcpu_guest_context Unexecuted instantiation: sched_arinc653.c:free_vcpu_guest_context Unexecuted instantiation: rcupdate.c:free_vcpu_guest_context Unexecuted instantiation: rangeset.c:free_vcpu_guest_context Unexecuted instantiation: page_alloc.c:free_vcpu_guest_context Unexecuted instantiation: multicall.c:free_vcpu_guest_context Unexecuted instantiation: monitor.c:free_vcpu_guest_context Unexecuted instantiation: memory.c:free_vcpu_guest_context Unexecuted instantiation: mem_access.c:free_vcpu_guest_context Unexecuted instantiation: kimage.c:free_vcpu_guest_context Unexecuted instantiation: kexec.c:free_vcpu_guest_context Unexecuted instantiation: keyhandler.c:free_vcpu_guest_context Unexecuted instantiation: kernel.c:free_vcpu_guest_context Unexecuted instantiation: guestcopy.c:free_vcpu_guest_context Unexecuted instantiation: grant_table.c:free_vcpu_guest_context Unexecuted instantiation: event_fifo.c:free_vcpu_guest_context Unexecuted instantiation: event_channel.c:free_vcpu_guest_context Unexecuted instantiation: event_2l.c:free_vcpu_guest_context Unexecuted instantiation: domain.c:free_vcpu_guest_context Unexecuted instantiation: domctl.c:free_vcpu_guest_context Unexecuted instantiation: cpupool.c:free_vcpu_guest_context |
636 | | |
637 | | struct vcpu_hvm_context; |
638 | | int arch_set_info_hvm_guest(struct vcpu *v, const struct vcpu_hvm_context *ctx); |
639 | | |
640 | | void pv_inject_event(const struct x86_event *event); |
641 | | |
642 | | static inline void pv_inject_hw_exception(unsigned int vector, int errcode) |
643 | 0 | { |
644 | 0 | const struct x86_event event = { |
645 | 0 | .vector = vector, |
646 | 0 | .type = X86_EVENTTYPE_HW_EXCEPTION, |
647 | 0 | .error_code = errcode, |
648 | 0 | }; |
649 | 0 |
|
650 | 0 | pv_inject_event(&event); |
651 | 0 | } Unexecuted instantiation: ro-page-fault.c:pv_inject_hw_exception Unexecuted instantiation: misc-hypercalls.c:pv_inject_hw_exception Unexecuted instantiation: iret.c:pv_inject_hw_exception Unexecuted instantiation: emul-priv-op.c:pv_inject_hw_exception Unexecuted instantiation: emul-inv-op.c:pv_inject_hw_exception Unexecuted instantiation: emul-gate-op.c:pv_inject_hw_exception Unexecuted instantiation: descriptor-tables.c:pv_inject_hw_exception Unexecuted instantiation: callback.c:pv_inject_hw_exception Unexecuted instantiation: backtrace.c:pv_inject_hw_exception Unexecuted instantiation: op_model_athlon.c:pv_inject_hw_exception Unexecuted instantiation: op_model_ppro.c:pv_inject_hw_exception Unexecuted instantiation: nmi_int.c:pv_inject_hw_exception Unexecuted instantiation: nested_ept.c:pv_inject_hw_exception Unexecuted instantiation: nested_hap.c:pv_inject_hw_exception Unexecuted instantiation: hap.c:pv_inject_hw_exception Unexecuted instantiation: multi.c:pv_inject_hw_exception Unexecuted instantiation: mem_sharing.c:pv_inject_hw_exception Unexecuted instantiation: mem_paging.c:pv_inject_hw_exception Unexecuted instantiation: guest_walk.c:pv_inject_hw_exception Unexecuted instantiation: altp2m.c:pv_inject_hw_exception Unexecuted instantiation: p2m-pod.c:pv_inject_hw_exception Unexecuted instantiation: p2m-ept.c:pv_inject_hw_exception Unexecuted instantiation: p2m-pt.c:pv_inject_hw_exception Unexecuted instantiation: p2m.c:pv_inject_hw_exception Unexecuted instantiation: paging.c:pv_inject_hw_exception Unexecuted instantiation: vvmx.c:pv_inject_hw_exception Unexecuted instantiation: vmx.c:pv_inject_hw_exception Unexecuted instantiation: vmcs.c:pv_inject_hw_exception Unexecuted instantiation: realmode.c:pv_inject_hw_exception Unexecuted instantiation: vmcb.c:pv_inject_hw_exception Unexecuted instantiation: svmdebug.c:pv_inject_hw_exception Unexecuted instantiation: svm.c:pv_inject_hw_exception Unexecuted instantiation: nestedsvm.c:pv_inject_hw_exception Unexecuted instantiation: intr.c:pv_inject_hw_exception Unexecuted instantiation: vpt.c:pv_inject_hw_exception Unexecuted instantiation: vpic.c:pv_inject_hw_exception Unexecuted instantiation: vmsi.c:pv_inject_hw_exception Unexecuted instantiation: vlapic.c:pv_inject_hw_exception Unexecuted instantiation: viridian.c:pv_inject_hw_exception Unexecuted instantiation: vioapic.c:pv_inject_hw_exception Unexecuted instantiation: stdvga.c:pv_inject_hw_exception Unexecuted instantiation: save.c:pv_inject_hw_exception Unexecuted instantiation: rtc.c:pv_inject_hw_exception Unexecuted instantiation: pmtimer.c:pv_inject_hw_exception Unexecuted instantiation: nestedhvm.c:pv_inject_hw_exception Unexecuted instantiation: mtrr.c:pv_inject_hw_exception Unexecuted instantiation: ioreq.c:pv_inject_hw_exception Unexecuted instantiation: intercept.c:pv_inject_hw_exception Unexecuted instantiation: i8254.c:pv_inject_hw_exception Unexecuted instantiation: hvm.c:pv_inject_hw_exception Unexecuted instantiation: hpet.c:pv_inject_hw_exception Unexecuted instantiation: emulate.c:pv_inject_hw_exception Unexecuted instantiation: dm.c:pv_inject_hw_exception Unexecuted instantiation: asid.c:pv_inject_hw_exception Unexecuted instantiation: delivery.c:pv_inject_hw_exception Unexecuted instantiation: vmce.c:pv_inject_hw_exception Unexecuted instantiation: util.c:pv_inject_hw_exception Unexecuted instantiation: non-fatal.c:pv_inject_hw_exception Unexecuted instantiation: mce_intel.c:pv_inject_hw_exception Unexecuted instantiation: mce-apei.c:pv_inject_hw_exception Unexecuted instantiation: mce.c:pv_inject_hw_exception Unexecuted instantiation: mctelem.c:pv_inject_hw_exception Unexecuted instantiation: barrier.c:pv_inject_hw_exception Unexecuted instantiation: mcaction.c:pv_inject_hw_exception Unexecuted instantiation: mce_amd.c:pv_inject_hw_exception Unexecuted instantiation: amd_nonfatal.c:pv_inject_hw_exception Unexecuted instantiation: vpmu_intel.c:pv_inject_hw_exception Unexecuted instantiation: vpmu_amd.c:pv_inject_hw_exception Unexecuted instantiation: vpmu.c:pv_inject_hw_exception Unexecuted instantiation: mwait-idle.c:pv_inject_hw_exception Unexecuted instantiation: intel.c:pv_inject_hw_exception Unexecuted instantiation: common.c:pv_inject_hw_exception Unexecuted instantiation: amd.c:pv_inject_hw_exception Unexecuted instantiation: cpu_idle.c:pv_inject_hw_exception Unexecuted instantiation: suspend.c:pv_inject_hw_exception Unexecuted instantiation: power.c:pv_inject_hw_exception Unexecuted instantiation: xstate.c:pv_inject_hw_exception Unexecuted instantiation: tboot.c:pv_inject_hw_exception Unexecuted instantiation: x86_emulate.c:pv_inject_hw_exception Unexecuted instantiation: usercopy.c:pv_inject_hw_exception Unexecuted instantiation: traps.c:pv_inject_hw_exception Unexecuted instantiation: smpboot.c:pv_inject_hw_exception Unexecuted instantiation: smp.c:pv_inject_hw_exception Unexecuted instantiation: setup.c:pv_inject_hw_exception Unexecuted instantiation: psr.c:pv_inject_hw_exception Unexecuted instantiation: platform_hypercall.c:pv_inject_hw_exception Unexecuted instantiation: physdev.c:pv_inject_hw_exception Unexecuted instantiation: numa.c:pv_inject_hw_exception Unexecuted instantiation: nmi.c:pv_inject_hw_exception Unexecuted instantiation: mpparse.c:pv_inject_hw_exception Unexecuted instantiation: cpu.c:pv_inject_hw_exception Unexecuted instantiation: mm.c:pv_inject_hw_exception Unexecuted instantiation: microcode.c:pv_inject_hw_exception Unexecuted instantiation: microcode_intel.c:pv_inject_hw_exception Unexecuted instantiation: microcode_amd.c:pv_inject_hw_exception Unexecuted instantiation: machine_kexec.c:pv_inject_hw_exception Unexecuted instantiation: irq.c:pv_inject_hw_exception Unexecuted instantiation: ioport_emulate.c:pv_inject_hw_exception Unexecuted instantiation: msr.c:pv_inject_hw_exception Unexecuted instantiation: io_apic.c:pv_inject_hw_exception Unexecuted instantiation: i8259.c:pv_inject_hw_exception Unexecuted instantiation: i387.c:pv_inject_hw_exception Unexecuted instantiation: hypercall.c:pv_inject_hw_exception Unexecuted instantiation: flushtlb.c:pv_inject_hw_exception Unexecuted instantiation: domain_page.c:pv_inject_hw_exception Unexecuted instantiation: debug.c:pv_inject_hw_exception Unexecuted instantiation: crash.c:pv_inject_hw_exception Unexecuted instantiation: compat.c:pv_inject_hw_exception Unexecuted instantiation: cpuid.c:pv_inject_hw_exception Unexecuted instantiation: apic.c:pv_inject_hw_exception Unexecuted instantiation: xsm_core.c:pv_inject_hw_exception Unexecuted instantiation: pmstat.c:pv_inject_hw_exception Unexecuted instantiation: iommu_guest.c:pv_inject_hw_exception Unexecuted instantiation: iommu_cmd.c:pv_inject_hw_exception Unexecuted instantiation: iommu_intr.c:pv_inject_hw_exception Unexecuted instantiation: pci_amd_iommu.c:pv_inject_hw_exception Unexecuted instantiation: iommu_map.c:pv_inject_hw_exception Unexecuted instantiation: iommu_init.c:pv_inject_hw_exception Unexecuted instantiation: ats.c:pv_inject_hw_exception Unexecuted instantiation: vtd.c:pv_inject_hw_exception Unexecuted instantiation: quirks.c:pv_inject_hw_exception Unexecuted instantiation: intremap.c:pv_inject_hw_exception Unexecuted instantiation: qinval.c:pv_inject_hw_exception Unexecuted instantiation: utils.c:pv_inject_hw_exception Unexecuted instantiation: pci.c:pv_inject_hw_exception Unexecuted instantiation: io.c:pv_inject_hw_exception Unexecuted instantiation: iommu.c:pv_inject_hw_exception Unexecuted instantiation: msix.c:pv_inject_hw_exception Unexecuted instantiation: msi.c:pv_inject_hw_exception Unexecuted instantiation: header.c:pv_inject_hw_exception Unexecuted instantiation: vpci.c:pv_inject_hw_exception Unexecuted instantiation: utility.c:pv_inject_hw_exception Unexecuted instantiation: cpufreq_misc_governors.c:pv_inject_hw_exception Unexecuted instantiation: cpufreq_ondemand.c:pv_inject_hw_exception Unexecuted instantiation: cpufreq.c:pv_inject_hw_exception Unexecuted instantiation: ns16550.c:pv_inject_hw_exception Unexecuted instantiation: console.c:pv_inject_hw_exception Unexecuted instantiation: libelf-loader.c:pv_inject_hw_exception Unexecuted instantiation: llvm.c:pv_inject_hw_exception Unexecuted instantiation: tmem_control.c:pv_inject_hw_exception Unexecuted instantiation: tmem_xen.c:pv_inject_hw_exception Unexecuted instantiation: tmem.c:pv_inject_hw_exception Unexecuted instantiation: xenoprof.c:pv_inject_hw_exception Unexecuted instantiation: wait.c:pv_inject_hw_exception Unexecuted instantiation: vsprintf.c:pv_inject_hw_exception Unexecuted instantiation: vm_event.c:pv_inject_hw_exception Unexecuted instantiation: trace.c:pv_inject_hw_exception Unexecuted instantiation: timer.c:pv_inject_hw_exception Unexecuted instantiation: time.c:pv_inject_hw_exception Unexecuted instantiation: tasklet.c:pv_inject_hw_exception Unexecuted instantiation: sysctl.c:pv_inject_hw_exception Unexecuted instantiation: symbols.c:pv_inject_hw_exception Unexecuted instantiation: stop_machine.c:pv_inject_hw_exception Unexecuted instantiation: spinlock.c:pv_inject_hw_exception Unexecuted instantiation: softirq.c:pv_inject_hw_exception Unexecuted instantiation: shutdown.c:pv_inject_hw_exception Unexecuted instantiation: schedule.c:pv_inject_hw_exception Unexecuted instantiation: sched_null.c:pv_inject_hw_exception Unexecuted instantiation: sched_rt.c:pv_inject_hw_exception Unexecuted instantiation: sched_credit2.c:pv_inject_hw_exception Unexecuted instantiation: sched_credit.c:pv_inject_hw_exception Unexecuted instantiation: sched_arinc653.c:pv_inject_hw_exception Unexecuted instantiation: rcupdate.c:pv_inject_hw_exception Unexecuted instantiation: rangeset.c:pv_inject_hw_exception Unexecuted instantiation: page_alloc.c:pv_inject_hw_exception Unexecuted instantiation: multicall.c:pv_inject_hw_exception Unexecuted instantiation: monitor.c:pv_inject_hw_exception Unexecuted instantiation: memory.c:pv_inject_hw_exception Unexecuted instantiation: mem_access.c:pv_inject_hw_exception Unexecuted instantiation: kimage.c:pv_inject_hw_exception Unexecuted instantiation: kexec.c:pv_inject_hw_exception Unexecuted instantiation: keyhandler.c:pv_inject_hw_exception Unexecuted instantiation: kernel.c:pv_inject_hw_exception Unexecuted instantiation: guestcopy.c:pv_inject_hw_exception Unexecuted instantiation: grant_table.c:pv_inject_hw_exception Unexecuted instantiation: event_fifo.c:pv_inject_hw_exception Unexecuted instantiation: event_channel.c:pv_inject_hw_exception Unexecuted instantiation: event_2l.c:pv_inject_hw_exception Unexecuted instantiation: domain.c:pv_inject_hw_exception Unexecuted instantiation: domctl.c:pv_inject_hw_exception Unexecuted instantiation: cpupool.c:pv_inject_hw_exception |
652 | | |
653 | | static inline void pv_inject_page_fault(int errcode, unsigned long cr2) |
654 | 0 | { |
655 | 0 | const struct x86_event event = { |
656 | 0 | .vector = TRAP_page_fault, |
657 | 0 | .type = X86_EVENTTYPE_HW_EXCEPTION, |
658 | 0 | .error_code = errcode, |
659 | 0 | .cr2 = cr2, |
660 | 0 | }; |
661 | 0 |
|
662 | 0 | pv_inject_event(&event); |
663 | 0 | } Unexecuted instantiation: cpupool.c:pv_inject_page_fault Unexecuted instantiation: cpu.c:pv_inject_page_fault Unexecuted instantiation: domctl.c:pv_inject_page_fault Unexecuted instantiation: domain.c:pv_inject_page_fault Unexecuted instantiation: event_2l.c:pv_inject_page_fault Unexecuted instantiation: event_channel.c:pv_inject_page_fault Unexecuted instantiation: event_fifo.c:pv_inject_page_fault Unexecuted instantiation: grant_table.c:pv_inject_page_fault Unexecuted instantiation: guestcopy.c:pv_inject_page_fault Unexecuted instantiation: kernel.c:pv_inject_page_fault Unexecuted instantiation: keyhandler.c:pv_inject_page_fault Unexecuted instantiation: kexec.c:pv_inject_page_fault Unexecuted instantiation: kimage.c:pv_inject_page_fault Unexecuted instantiation: mem_access.c:pv_inject_page_fault Unexecuted instantiation: memory.c:pv_inject_page_fault Unexecuted instantiation: monitor.c:pv_inject_page_fault Unexecuted instantiation: multicall.c:pv_inject_page_fault Unexecuted instantiation: page_alloc.c:pv_inject_page_fault Unexecuted instantiation: rangeset.c:pv_inject_page_fault Unexecuted instantiation: rcupdate.c:pv_inject_page_fault Unexecuted instantiation: sched_arinc653.c:pv_inject_page_fault Unexecuted instantiation: sched_credit.c:pv_inject_page_fault Unexecuted instantiation: sched_credit2.c:pv_inject_page_fault Unexecuted instantiation: sched_rt.c:pv_inject_page_fault Unexecuted instantiation: sched_null.c:pv_inject_page_fault Unexecuted instantiation: schedule.c:pv_inject_page_fault Unexecuted instantiation: shutdown.c:pv_inject_page_fault Unexecuted instantiation: softirq.c:pv_inject_page_fault Unexecuted instantiation: spinlock.c:pv_inject_page_fault Unexecuted instantiation: stop_machine.c:pv_inject_page_fault Unexecuted instantiation: symbols.c:pv_inject_page_fault Unexecuted instantiation: sysctl.c:pv_inject_page_fault Unexecuted instantiation: tasklet.c:pv_inject_page_fault Unexecuted instantiation: time.c:pv_inject_page_fault Unexecuted instantiation: timer.c:pv_inject_page_fault Unexecuted instantiation: trace.c:pv_inject_page_fault Unexecuted instantiation: vm_event.c:pv_inject_page_fault Unexecuted instantiation: vsprintf.c:pv_inject_page_fault Unexecuted instantiation: wait.c:pv_inject_page_fault Unexecuted instantiation: xenoprof.c:pv_inject_page_fault Unexecuted instantiation: tmem.c:pv_inject_page_fault Unexecuted instantiation: tmem_xen.c:pv_inject_page_fault Unexecuted instantiation: tmem_control.c:pv_inject_page_fault Unexecuted instantiation: llvm.c:pv_inject_page_fault Unexecuted instantiation: libelf-loader.c:pv_inject_page_fault Unexecuted instantiation: console.c:pv_inject_page_fault Unexecuted instantiation: ns16550.c:pv_inject_page_fault Unexecuted instantiation: cpufreq.c:pv_inject_page_fault Unexecuted instantiation: cpufreq_ondemand.c:pv_inject_page_fault Unexecuted instantiation: cpufreq_misc_governors.c:pv_inject_page_fault Unexecuted instantiation: utility.c:pv_inject_page_fault Unexecuted instantiation: vpci.c:pv_inject_page_fault Unexecuted instantiation: header.c:pv_inject_page_fault Unexecuted instantiation: msi.c:pv_inject_page_fault Unexecuted instantiation: msix.c:pv_inject_page_fault Unexecuted instantiation: iommu.c:pv_inject_page_fault Unexecuted instantiation: io.c:pv_inject_page_fault Unexecuted instantiation: pci.c:pv_inject_page_fault Unexecuted instantiation: utils.c:pv_inject_page_fault Unexecuted instantiation: qinval.c:pv_inject_page_fault Unexecuted instantiation: intremap.c:pv_inject_page_fault Unexecuted instantiation: quirks.c:pv_inject_page_fault Unexecuted instantiation: vtd.c:pv_inject_page_fault Unexecuted instantiation: ats.c:pv_inject_page_fault Unexecuted instantiation: iommu_init.c:pv_inject_page_fault Unexecuted instantiation: iommu_map.c:pv_inject_page_fault Unexecuted instantiation: pci_amd_iommu.c:pv_inject_page_fault Unexecuted instantiation: iommu_intr.c:pv_inject_page_fault Unexecuted instantiation: iommu_cmd.c:pv_inject_page_fault Unexecuted instantiation: iommu_guest.c:pv_inject_page_fault Unexecuted instantiation: pmstat.c:pv_inject_page_fault Unexecuted instantiation: xsm_core.c:pv_inject_page_fault Unexecuted instantiation: apic.c:pv_inject_page_fault Unexecuted instantiation: cpuid.c:pv_inject_page_fault Unexecuted instantiation: compat.c:pv_inject_page_fault Unexecuted instantiation: crash.c:pv_inject_page_fault Unexecuted instantiation: debug.c:pv_inject_page_fault Unexecuted instantiation: domain_page.c:pv_inject_page_fault Unexecuted instantiation: flushtlb.c:pv_inject_page_fault Unexecuted instantiation: hypercall.c:pv_inject_page_fault Unexecuted instantiation: i387.c:pv_inject_page_fault Unexecuted instantiation: i8259.c:pv_inject_page_fault Unexecuted instantiation: io_apic.c:pv_inject_page_fault Unexecuted instantiation: msr.c:pv_inject_page_fault Unexecuted instantiation: ioport_emulate.c:pv_inject_page_fault Unexecuted instantiation: irq.c:pv_inject_page_fault Unexecuted instantiation: machine_kexec.c:pv_inject_page_fault Unexecuted instantiation: microcode_amd.c:pv_inject_page_fault Unexecuted instantiation: microcode_intel.c:pv_inject_page_fault Unexecuted instantiation: microcode.c:pv_inject_page_fault Unexecuted instantiation: mm.c:pv_inject_page_fault Unexecuted instantiation: mpparse.c:pv_inject_page_fault Unexecuted instantiation: nmi.c:pv_inject_page_fault Unexecuted instantiation: numa.c:pv_inject_page_fault Unexecuted instantiation: physdev.c:pv_inject_page_fault Unexecuted instantiation: platform_hypercall.c:pv_inject_page_fault Unexecuted instantiation: psr.c:pv_inject_page_fault Unexecuted instantiation: setup.c:pv_inject_page_fault Unexecuted instantiation: smp.c:pv_inject_page_fault Unexecuted instantiation: smpboot.c:pv_inject_page_fault Unexecuted instantiation: traps.c:pv_inject_page_fault Unexecuted instantiation: usercopy.c:pv_inject_page_fault Unexecuted instantiation: x86_emulate.c:pv_inject_page_fault Unexecuted instantiation: tboot.c:pv_inject_page_fault Unexecuted instantiation: xstate.c:pv_inject_page_fault Unexecuted instantiation: power.c:pv_inject_page_fault Unexecuted instantiation: suspend.c:pv_inject_page_fault Unexecuted instantiation: cpu_idle.c:pv_inject_page_fault Unexecuted instantiation: amd.c:pv_inject_page_fault Unexecuted instantiation: common.c:pv_inject_page_fault Unexecuted instantiation: intel.c:pv_inject_page_fault Unexecuted instantiation: mwait-idle.c:pv_inject_page_fault Unexecuted instantiation: vpmu.c:pv_inject_page_fault Unexecuted instantiation: vpmu_amd.c:pv_inject_page_fault Unexecuted instantiation: vpmu_intel.c:pv_inject_page_fault Unexecuted instantiation: amd_nonfatal.c:pv_inject_page_fault Unexecuted instantiation: mce_amd.c:pv_inject_page_fault Unexecuted instantiation: mcaction.c:pv_inject_page_fault Unexecuted instantiation: barrier.c:pv_inject_page_fault Unexecuted instantiation: mctelem.c:pv_inject_page_fault Unexecuted instantiation: mce.c:pv_inject_page_fault Unexecuted instantiation: mce-apei.c:pv_inject_page_fault Unexecuted instantiation: mce_intel.c:pv_inject_page_fault Unexecuted instantiation: non-fatal.c:pv_inject_page_fault Unexecuted instantiation: util.c:pv_inject_page_fault Unexecuted instantiation: vmce.c:pv_inject_page_fault Unexecuted instantiation: delivery.c:pv_inject_page_fault Unexecuted instantiation: asid.c:pv_inject_page_fault Unexecuted instantiation: dm.c:pv_inject_page_fault Unexecuted instantiation: emulate.c:pv_inject_page_fault Unexecuted instantiation: hpet.c:pv_inject_page_fault Unexecuted instantiation: hvm.c:pv_inject_page_fault Unexecuted instantiation: i8254.c:pv_inject_page_fault Unexecuted instantiation: intercept.c:pv_inject_page_fault Unexecuted instantiation: ioreq.c:pv_inject_page_fault Unexecuted instantiation: mtrr.c:pv_inject_page_fault Unexecuted instantiation: nestedhvm.c:pv_inject_page_fault Unexecuted instantiation: pmtimer.c:pv_inject_page_fault Unexecuted instantiation: rtc.c:pv_inject_page_fault Unexecuted instantiation: save.c:pv_inject_page_fault Unexecuted instantiation: stdvga.c:pv_inject_page_fault Unexecuted instantiation: vioapic.c:pv_inject_page_fault Unexecuted instantiation: viridian.c:pv_inject_page_fault Unexecuted instantiation: vlapic.c:pv_inject_page_fault Unexecuted instantiation: vmsi.c:pv_inject_page_fault Unexecuted instantiation: vpic.c:pv_inject_page_fault Unexecuted instantiation: vpt.c:pv_inject_page_fault Unexecuted instantiation: intr.c:pv_inject_page_fault Unexecuted instantiation: nestedsvm.c:pv_inject_page_fault Unexecuted instantiation: svm.c:pv_inject_page_fault Unexecuted instantiation: svmdebug.c:pv_inject_page_fault Unexecuted instantiation: vmcb.c:pv_inject_page_fault Unexecuted instantiation: realmode.c:pv_inject_page_fault Unexecuted instantiation: vmcs.c:pv_inject_page_fault Unexecuted instantiation: vmx.c:pv_inject_page_fault Unexecuted instantiation: vvmx.c:pv_inject_page_fault Unexecuted instantiation: paging.c:pv_inject_page_fault Unexecuted instantiation: p2m.c:pv_inject_page_fault Unexecuted instantiation: p2m-pt.c:pv_inject_page_fault Unexecuted instantiation: p2m-ept.c:pv_inject_page_fault Unexecuted instantiation: p2m-pod.c:pv_inject_page_fault Unexecuted instantiation: altp2m.c:pv_inject_page_fault Unexecuted instantiation: guest_walk.c:pv_inject_page_fault Unexecuted instantiation: mem_paging.c:pv_inject_page_fault Unexecuted instantiation: mem_sharing.c:pv_inject_page_fault Unexecuted instantiation: multi.c:pv_inject_page_fault Unexecuted instantiation: hap.c:pv_inject_page_fault Unexecuted instantiation: nested_hap.c:pv_inject_page_fault Unexecuted instantiation: nested_ept.c:pv_inject_page_fault Unexecuted instantiation: nmi_int.c:pv_inject_page_fault Unexecuted instantiation: op_model_ppro.c:pv_inject_page_fault Unexecuted instantiation: op_model_athlon.c:pv_inject_page_fault Unexecuted instantiation: backtrace.c:pv_inject_page_fault Unexecuted instantiation: callback.c:pv_inject_page_fault Unexecuted instantiation: descriptor-tables.c:pv_inject_page_fault Unexecuted instantiation: emul-gate-op.c:pv_inject_page_fault Unexecuted instantiation: emul-inv-op.c:pv_inject_page_fault Unexecuted instantiation: emul-priv-op.c:pv_inject_page_fault Unexecuted instantiation: iret.c:pv_inject_page_fault Unexecuted instantiation: misc-hypercalls.c:pv_inject_page_fault Unexecuted instantiation: ro-page-fault.c:pv_inject_page_fault |
664 | | |
665 | | static inline void pv_inject_sw_interrupt(unsigned int vector) |
666 | 0 | { |
667 | 0 | const struct x86_event event = { |
668 | 0 | .vector = vector, |
669 | 0 | .type = X86_EVENTTYPE_SW_INTERRUPT, |
670 | 0 | .error_code = X86_EVENT_NO_EC, |
671 | 0 | }; |
672 | 0 |
|
673 | 0 | pv_inject_event(&event); |
674 | 0 | } Unexecuted instantiation: cpupool.c:pv_inject_sw_interrupt Unexecuted instantiation: ro-page-fault.c:pv_inject_sw_interrupt Unexecuted instantiation: misc-hypercalls.c:pv_inject_sw_interrupt Unexecuted instantiation: iret.c:pv_inject_sw_interrupt Unexecuted instantiation: emul-priv-op.c:pv_inject_sw_interrupt Unexecuted instantiation: emul-inv-op.c:pv_inject_sw_interrupt Unexecuted instantiation: emul-gate-op.c:pv_inject_sw_interrupt Unexecuted instantiation: descriptor-tables.c:pv_inject_sw_interrupt Unexecuted instantiation: callback.c:pv_inject_sw_interrupt Unexecuted instantiation: backtrace.c:pv_inject_sw_interrupt Unexecuted instantiation: op_model_athlon.c:pv_inject_sw_interrupt Unexecuted instantiation: op_model_ppro.c:pv_inject_sw_interrupt Unexecuted instantiation: nmi_int.c:pv_inject_sw_interrupt Unexecuted instantiation: nested_ept.c:pv_inject_sw_interrupt Unexecuted instantiation: nested_hap.c:pv_inject_sw_interrupt Unexecuted instantiation: hap.c:pv_inject_sw_interrupt Unexecuted instantiation: multi.c:pv_inject_sw_interrupt Unexecuted instantiation: mem_sharing.c:pv_inject_sw_interrupt Unexecuted instantiation: mem_paging.c:pv_inject_sw_interrupt Unexecuted instantiation: guest_walk.c:pv_inject_sw_interrupt Unexecuted instantiation: altp2m.c:pv_inject_sw_interrupt Unexecuted instantiation: p2m-pod.c:pv_inject_sw_interrupt Unexecuted instantiation: p2m-ept.c:pv_inject_sw_interrupt Unexecuted instantiation: p2m-pt.c:pv_inject_sw_interrupt Unexecuted instantiation: p2m.c:pv_inject_sw_interrupt Unexecuted instantiation: paging.c:pv_inject_sw_interrupt Unexecuted instantiation: vvmx.c:pv_inject_sw_interrupt Unexecuted instantiation: vmx.c:pv_inject_sw_interrupt Unexecuted instantiation: vmcs.c:pv_inject_sw_interrupt Unexecuted instantiation: realmode.c:pv_inject_sw_interrupt Unexecuted instantiation: vmcb.c:pv_inject_sw_interrupt Unexecuted instantiation: svmdebug.c:pv_inject_sw_interrupt Unexecuted instantiation: svm.c:pv_inject_sw_interrupt Unexecuted instantiation: nestedsvm.c:pv_inject_sw_interrupt Unexecuted instantiation: intr.c:pv_inject_sw_interrupt Unexecuted instantiation: vpt.c:pv_inject_sw_interrupt Unexecuted instantiation: vpic.c:pv_inject_sw_interrupt Unexecuted instantiation: vmsi.c:pv_inject_sw_interrupt Unexecuted instantiation: vlapic.c:pv_inject_sw_interrupt Unexecuted instantiation: viridian.c:pv_inject_sw_interrupt Unexecuted instantiation: vioapic.c:pv_inject_sw_interrupt Unexecuted instantiation: stdvga.c:pv_inject_sw_interrupt Unexecuted instantiation: save.c:pv_inject_sw_interrupt Unexecuted instantiation: rtc.c:pv_inject_sw_interrupt Unexecuted instantiation: pmtimer.c:pv_inject_sw_interrupt Unexecuted instantiation: nestedhvm.c:pv_inject_sw_interrupt Unexecuted instantiation: mtrr.c:pv_inject_sw_interrupt Unexecuted instantiation: ioreq.c:pv_inject_sw_interrupt Unexecuted instantiation: intercept.c:pv_inject_sw_interrupt Unexecuted instantiation: i8254.c:pv_inject_sw_interrupt Unexecuted instantiation: hvm.c:pv_inject_sw_interrupt Unexecuted instantiation: hpet.c:pv_inject_sw_interrupt Unexecuted instantiation: emulate.c:pv_inject_sw_interrupt Unexecuted instantiation: dm.c:pv_inject_sw_interrupt Unexecuted instantiation: asid.c:pv_inject_sw_interrupt Unexecuted instantiation: delivery.c:pv_inject_sw_interrupt Unexecuted instantiation: vmce.c:pv_inject_sw_interrupt Unexecuted instantiation: util.c:pv_inject_sw_interrupt Unexecuted instantiation: non-fatal.c:pv_inject_sw_interrupt Unexecuted instantiation: mce_intel.c:pv_inject_sw_interrupt Unexecuted instantiation: mce-apei.c:pv_inject_sw_interrupt Unexecuted instantiation: mce.c:pv_inject_sw_interrupt Unexecuted instantiation: mctelem.c:pv_inject_sw_interrupt Unexecuted instantiation: barrier.c:pv_inject_sw_interrupt Unexecuted instantiation: mcaction.c:pv_inject_sw_interrupt Unexecuted instantiation: mce_amd.c:pv_inject_sw_interrupt Unexecuted instantiation: amd_nonfatal.c:pv_inject_sw_interrupt Unexecuted instantiation: vpmu_intel.c:pv_inject_sw_interrupt Unexecuted instantiation: vpmu_amd.c:pv_inject_sw_interrupt Unexecuted instantiation: vpmu.c:pv_inject_sw_interrupt Unexecuted instantiation: mwait-idle.c:pv_inject_sw_interrupt Unexecuted instantiation: intel.c:pv_inject_sw_interrupt Unexecuted instantiation: common.c:pv_inject_sw_interrupt Unexecuted instantiation: amd.c:pv_inject_sw_interrupt Unexecuted instantiation: cpu_idle.c:pv_inject_sw_interrupt Unexecuted instantiation: suspend.c:pv_inject_sw_interrupt Unexecuted instantiation: power.c:pv_inject_sw_interrupt Unexecuted instantiation: xstate.c:pv_inject_sw_interrupt Unexecuted instantiation: tboot.c:pv_inject_sw_interrupt Unexecuted instantiation: x86_emulate.c:pv_inject_sw_interrupt Unexecuted instantiation: usercopy.c:pv_inject_sw_interrupt Unexecuted instantiation: traps.c:pv_inject_sw_interrupt Unexecuted instantiation: smpboot.c:pv_inject_sw_interrupt Unexecuted instantiation: smp.c:pv_inject_sw_interrupt Unexecuted instantiation: setup.c:pv_inject_sw_interrupt Unexecuted instantiation: psr.c:pv_inject_sw_interrupt Unexecuted instantiation: platform_hypercall.c:pv_inject_sw_interrupt Unexecuted instantiation: physdev.c:pv_inject_sw_interrupt Unexecuted instantiation: numa.c:pv_inject_sw_interrupt Unexecuted instantiation: nmi.c:pv_inject_sw_interrupt Unexecuted instantiation: mpparse.c:pv_inject_sw_interrupt Unexecuted instantiation: mm.c:pv_inject_sw_interrupt Unexecuted instantiation: microcode.c:pv_inject_sw_interrupt Unexecuted instantiation: microcode_intel.c:pv_inject_sw_interrupt Unexecuted instantiation: microcode_amd.c:pv_inject_sw_interrupt Unexecuted instantiation: machine_kexec.c:pv_inject_sw_interrupt Unexecuted instantiation: irq.c:pv_inject_sw_interrupt Unexecuted instantiation: ioport_emulate.c:pv_inject_sw_interrupt Unexecuted instantiation: msr.c:pv_inject_sw_interrupt Unexecuted instantiation: io_apic.c:pv_inject_sw_interrupt Unexecuted instantiation: i8259.c:pv_inject_sw_interrupt Unexecuted instantiation: i387.c:pv_inject_sw_interrupt Unexecuted instantiation: hypercall.c:pv_inject_sw_interrupt Unexecuted instantiation: flushtlb.c:pv_inject_sw_interrupt Unexecuted instantiation: domain_page.c:pv_inject_sw_interrupt Unexecuted instantiation: debug.c:pv_inject_sw_interrupt Unexecuted instantiation: crash.c:pv_inject_sw_interrupt Unexecuted instantiation: compat.c:pv_inject_sw_interrupt Unexecuted instantiation: cpuid.c:pv_inject_sw_interrupt Unexecuted instantiation: apic.c:pv_inject_sw_interrupt Unexecuted instantiation: xsm_core.c:pv_inject_sw_interrupt Unexecuted instantiation: pmstat.c:pv_inject_sw_interrupt Unexecuted instantiation: iommu_guest.c:pv_inject_sw_interrupt Unexecuted instantiation: iommu_cmd.c:pv_inject_sw_interrupt Unexecuted instantiation: iommu_intr.c:pv_inject_sw_interrupt Unexecuted instantiation: pci_amd_iommu.c:pv_inject_sw_interrupt Unexecuted instantiation: iommu_map.c:pv_inject_sw_interrupt Unexecuted instantiation: iommu_init.c:pv_inject_sw_interrupt Unexecuted instantiation: ats.c:pv_inject_sw_interrupt Unexecuted instantiation: vtd.c:pv_inject_sw_interrupt Unexecuted instantiation: quirks.c:pv_inject_sw_interrupt Unexecuted instantiation: intremap.c:pv_inject_sw_interrupt Unexecuted instantiation: qinval.c:pv_inject_sw_interrupt Unexecuted instantiation: utils.c:pv_inject_sw_interrupt Unexecuted instantiation: pci.c:pv_inject_sw_interrupt Unexecuted instantiation: io.c:pv_inject_sw_interrupt Unexecuted instantiation: iommu.c:pv_inject_sw_interrupt Unexecuted instantiation: msix.c:pv_inject_sw_interrupt Unexecuted instantiation: msi.c:pv_inject_sw_interrupt Unexecuted instantiation: header.c:pv_inject_sw_interrupt Unexecuted instantiation: vpci.c:pv_inject_sw_interrupt Unexecuted instantiation: utility.c:pv_inject_sw_interrupt Unexecuted instantiation: cpufreq_misc_governors.c:pv_inject_sw_interrupt Unexecuted instantiation: cpufreq_ondemand.c:pv_inject_sw_interrupt Unexecuted instantiation: cpufreq.c:pv_inject_sw_interrupt Unexecuted instantiation: ns16550.c:pv_inject_sw_interrupt Unexecuted instantiation: console.c:pv_inject_sw_interrupt Unexecuted instantiation: libelf-loader.c:pv_inject_sw_interrupt Unexecuted instantiation: llvm.c:pv_inject_sw_interrupt Unexecuted instantiation: tmem_control.c:pv_inject_sw_interrupt Unexecuted instantiation: tmem_xen.c:pv_inject_sw_interrupt Unexecuted instantiation: tmem.c:pv_inject_sw_interrupt Unexecuted instantiation: xenoprof.c:pv_inject_sw_interrupt Unexecuted instantiation: wait.c:pv_inject_sw_interrupt Unexecuted instantiation: vsprintf.c:pv_inject_sw_interrupt Unexecuted instantiation: vm_event.c:pv_inject_sw_interrupt Unexecuted instantiation: trace.c:pv_inject_sw_interrupt Unexecuted instantiation: timer.c:pv_inject_sw_interrupt Unexecuted instantiation: time.c:pv_inject_sw_interrupt Unexecuted instantiation: tasklet.c:pv_inject_sw_interrupt Unexecuted instantiation: sysctl.c:pv_inject_sw_interrupt Unexecuted instantiation: symbols.c:pv_inject_sw_interrupt Unexecuted instantiation: stop_machine.c:pv_inject_sw_interrupt Unexecuted instantiation: spinlock.c:pv_inject_sw_interrupt Unexecuted instantiation: softirq.c:pv_inject_sw_interrupt Unexecuted instantiation: shutdown.c:pv_inject_sw_interrupt Unexecuted instantiation: schedule.c:pv_inject_sw_interrupt Unexecuted instantiation: sched_null.c:pv_inject_sw_interrupt Unexecuted instantiation: sched_rt.c:pv_inject_sw_interrupt Unexecuted instantiation: sched_credit2.c:pv_inject_sw_interrupt Unexecuted instantiation: sched_credit.c:pv_inject_sw_interrupt Unexecuted instantiation: sched_arinc653.c:pv_inject_sw_interrupt Unexecuted instantiation: rcupdate.c:pv_inject_sw_interrupt Unexecuted instantiation: rangeset.c:pv_inject_sw_interrupt Unexecuted instantiation: page_alloc.c:pv_inject_sw_interrupt Unexecuted instantiation: multicall.c:pv_inject_sw_interrupt Unexecuted instantiation: monitor.c:pv_inject_sw_interrupt Unexecuted instantiation: memory.c:pv_inject_sw_interrupt Unexecuted instantiation: mem_access.c:pv_inject_sw_interrupt Unexecuted instantiation: kimage.c:pv_inject_sw_interrupt Unexecuted instantiation: kexec.c:pv_inject_sw_interrupt Unexecuted instantiation: keyhandler.c:pv_inject_sw_interrupt Unexecuted instantiation: kernel.c:pv_inject_sw_interrupt Unexecuted instantiation: guestcopy.c:pv_inject_sw_interrupt Unexecuted instantiation: grant_table.c:pv_inject_sw_interrupt Unexecuted instantiation: event_fifo.c:pv_inject_sw_interrupt Unexecuted instantiation: event_channel.c:pv_inject_sw_interrupt Unexecuted instantiation: event_2l.c:pv_inject_sw_interrupt Unexecuted instantiation: domain.c:pv_inject_sw_interrupt Unexecuted instantiation: domctl.c:pv_inject_sw_interrupt Unexecuted instantiation: cpu.c:pv_inject_sw_interrupt |
675 | | |
676 | | #endif /* __ASM_DOMAIN_H__ */ |
677 | | |
678 | | /* |
679 | | * Local variables: |
680 | | * mode: C |
681 | | * c-file-style: "BSD" |
682 | | * c-basic-offset: 4 |
683 | | * tab-width: 4 |
684 | | * indent-tabs-mode: nil |
685 | | * End: |
686 | | */ |