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