Deleted Added
full compact
vmm.h (267330) vmm.h (267338)
1/*-
2 * Copyright (c) 2011 NetApp, Inc.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
1/*-
2 * Copyright (c) 2011 NetApp, Inc.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
26 * $FreeBSD: head/sys/amd64/include/vmm.h 267330 2014-06-10 16:45:58Z neel $
26 * $FreeBSD: head/sys/amd64/include/vmm.h 267338 2014-06-10 18:46:00Z tychon $
27 */
28
29#ifndef _VMM_H_
30#define _VMM_H_
31
32enum vm_suspend_how {
33 VM_SUSPEND_NONE,
34 VM_SUSPEND_RESET,
35 VM_SUSPEND_POWEROFF,
36 VM_SUSPEND_HALT,
37 VM_SUSPEND_LAST
38};
39
27 */
28
29#ifndef _VMM_H_
30#define _VMM_H_
31
32enum vm_suspend_how {
33 VM_SUSPEND_NONE,
34 VM_SUSPEND_RESET,
35 VM_SUSPEND_POWEROFF,
36 VM_SUSPEND_HALT,
37 VM_SUSPEND_LAST
38};
39
40/*
41 * Identifiers for architecturally defined registers.
42 */
43enum vm_reg_name {
44 VM_REG_GUEST_RAX,
45 VM_REG_GUEST_RBX,
46 VM_REG_GUEST_RCX,
47 VM_REG_GUEST_RDX,
48 VM_REG_GUEST_RSI,
49 VM_REG_GUEST_RDI,
50 VM_REG_GUEST_RBP,
51 VM_REG_GUEST_R8,
52 VM_REG_GUEST_R9,
53 VM_REG_GUEST_R10,
54 VM_REG_GUEST_R11,
55 VM_REG_GUEST_R12,
56 VM_REG_GUEST_R13,
57 VM_REG_GUEST_R14,
58 VM_REG_GUEST_R15,
59 VM_REG_GUEST_CR0,
60 VM_REG_GUEST_CR3,
61 VM_REG_GUEST_CR4,
62 VM_REG_GUEST_DR7,
63 VM_REG_GUEST_RSP,
64 VM_REG_GUEST_RIP,
65 VM_REG_GUEST_RFLAGS,
66 VM_REG_GUEST_ES,
67 VM_REG_GUEST_CS,
68 VM_REG_GUEST_SS,
69 VM_REG_GUEST_DS,
70 VM_REG_GUEST_FS,
71 VM_REG_GUEST_GS,
72 VM_REG_GUEST_LDTR,
73 VM_REG_GUEST_TR,
74 VM_REG_GUEST_IDTR,
75 VM_REG_GUEST_GDTR,
76 VM_REG_GUEST_EFER,
77 VM_REG_GUEST_CR2,
78 VM_REG_LAST
79};
80
81enum x2apic_state {
82 X2APIC_DISABLED,
83 X2APIC_ENABLED,
84 X2APIC_STATE_LAST
85};
86
40#ifdef _KERNEL
41
42#define VM_MAX_NAMELEN 32
43
44struct vm;
45struct vm_exception;
46struct vm_memory_segment;
47struct seg_desc;
48struct vm_exit;
49struct vm_run;
50struct vhpet;
51struct vioapic;
52struct vlapic;
53struct vmspace;
54struct vm_object;
55struct pmap;
56
87#ifdef _KERNEL
88
89#define VM_MAX_NAMELEN 32
90
91struct vm;
92struct vm_exception;
93struct vm_memory_segment;
94struct seg_desc;
95struct vm_exit;
96struct vm_run;
97struct vhpet;
98struct vioapic;
99struct vlapic;
100struct vmspace;
101struct vm_object;
102struct pmap;
103
57enum vm_reg_name;
58enum x2apic_state;
59
60typedef int (*vmm_init_func_t)(int ipinum);
61typedef int (*vmm_cleanup_func_t)(void);
62typedef void (*vmm_resume_func_t)(void);
63typedef void * (*vmi_init_func_t)(struct vm *vm, struct pmap *pmap);
64typedef int (*vmi_run_func_t)(void *vmi, int vcpu, register_t rip,
65 struct pmap *pmap, void *rendezvous_cookie,
66 void *suspend_cookie);
67typedef void (*vmi_cleanup_func_t)(void *vmi);

--- 177 unchanged lines hidden (view full) ---

245
246enum vm_reg_name vm_segment_name(int seg_encoding);
247
248#endif /* KERNEL */
249
250#define VM_MAXCPU 16 /* maximum virtual cpus */
251
252/*
104typedef int (*vmm_init_func_t)(int ipinum);
105typedef int (*vmm_cleanup_func_t)(void);
106typedef void (*vmm_resume_func_t)(void);
107typedef void * (*vmi_init_func_t)(struct vm *vm, struct pmap *pmap);
108typedef int (*vmi_run_func_t)(void *vmi, int vcpu, register_t rip,
109 struct pmap *pmap, void *rendezvous_cookie,
110 void *suspend_cookie);
111typedef void (*vmi_cleanup_func_t)(void *vmi);

--- 177 unchanged lines hidden (view full) ---

289
290enum vm_reg_name vm_segment_name(int seg_encoding);
291
292#endif /* KERNEL */
293
294#define VM_MAXCPU 16 /* maximum virtual cpus */
295
296/*
253 * Identifiers for architecturally defined registers.
254 */
255enum vm_reg_name {
256 VM_REG_GUEST_RAX,
257 VM_REG_GUEST_RBX,
258 VM_REG_GUEST_RCX,
259 VM_REG_GUEST_RDX,
260 VM_REG_GUEST_RSI,
261 VM_REG_GUEST_RDI,
262 VM_REG_GUEST_RBP,
263 VM_REG_GUEST_R8,
264 VM_REG_GUEST_R9,
265 VM_REG_GUEST_R10,
266 VM_REG_GUEST_R11,
267 VM_REG_GUEST_R12,
268 VM_REG_GUEST_R13,
269 VM_REG_GUEST_R14,
270 VM_REG_GUEST_R15,
271 VM_REG_GUEST_CR0,
272 VM_REG_GUEST_CR3,
273 VM_REG_GUEST_CR4,
274 VM_REG_GUEST_DR7,
275 VM_REG_GUEST_RSP,
276 VM_REG_GUEST_RIP,
277 VM_REG_GUEST_RFLAGS,
278 VM_REG_GUEST_ES,
279 VM_REG_GUEST_CS,
280 VM_REG_GUEST_SS,
281 VM_REG_GUEST_DS,
282 VM_REG_GUEST_FS,
283 VM_REG_GUEST_GS,
284 VM_REG_GUEST_LDTR,
285 VM_REG_GUEST_TR,
286 VM_REG_GUEST_IDTR,
287 VM_REG_GUEST_GDTR,
288 VM_REG_GUEST_EFER,
289 VM_REG_GUEST_CR2,
290 VM_REG_LAST
291};
292
293/*
294 * Identifiers for optional vmm capabilities
295 */
296enum vm_cap_type {
297 VM_CAP_HALT_EXIT,
298 VM_CAP_MTRAP_EXIT,
299 VM_CAP_PAUSE_EXIT,
300 VM_CAP_UNRESTRICTED_GUEST,
301 VM_CAP_ENABLE_INVPCID,
302 VM_CAP_MAX
303};
304
297 * Identifiers for optional vmm capabilities
298 */
299enum vm_cap_type {
300 VM_CAP_HALT_EXIT,
301 VM_CAP_MTRAP_EXIT,
302 VM_CAP_PAUSE_EXIT,
303 VM_CAP_UNRESTRICTED_GUEST,
304 VM_CAP_ENABLE_INVPCID,
305 VM_CAP_MAX
306};
307
305enum x2apic_state {
306 X2APIC_DISABLED,
307 X2APIC_ENABLED,
308 X2APIC_STATE_LAST
309};
310
311enum vm_intr_trigger {
312 EDGE_TRIGGER,
313 LEVEL_TRIGGER
314};
315
316/*
317 * The 'access' field has the format specified in Table 21-2 of the Intel
318 * Architecture Manual vol 3b.

--- 178 unchanged lines hidden ---
308enum vm_intr_trigger {
309 EDGE_TRIGGER,
310 LEVEL_TRIGGER
311};
312
313/*
314 * The 'access' field has the format specified in Table 21-2 of the Intel
315 * Architecture Manual vol 3b.

--- 178 unchanged lines hidden ---