2 * This file is part of the Palacios Virtual Machine Monitor developed
3 * by the V3VEE Project with funding from the United States National
4 * Science Foundation and the Department of Energy.
6 * The V3VEE Project is a joint project between Northwestern University
7 * and the University of New Mexico. You can find out more at
10 * Copyright (c) 2011, Jack Lange <jarusl@cs.northwestern.edu>
11 * Copyright (c) 2011, The V3VEE Project <http://www.v3vee.org>
12 * All rights reserved.
14 * Author: Jack Lange <jarusl@cs.northwestern.edu>
16 * This is free software. You are permitted to use,
17 * redistribute, and modify it as specified in the file "V3VEE_LICENSE".
21 #ifndef __VMX_HW_INFO_H__
22 #define __VMX_HW_INFO_H__
27 #define VMX_BASIC_MSR 0x00000480
28 #define VMX_PINBASED_CTLS_MSR 0x00000481
29 #define VMX_PROCBASED_CTLS_MSR 0x00000482
30 #define VMX_EXIT_CTLS_MSR 0x00000483
31 #define VMX_ENTRY_CTLS_MSR 0x00000484
32 #define VMX_MISC_MSR 0x00000485
33 #define VMX_CR0_FIXED0_MSR 0x00000486
34 #define VMX_CR0_FIXED1_MSR 0x00000487
35 #define VMX_CR4_FIXED0_MSR 0x00000488
36 #define VMX_CR4_FIXED1_MSR 0x00000489
37 #define VMX_VMCS_ENUM_MSR 0x0000048A
42 struct vmx_basic_msr {
48 uint32_t regionSize : 13;
49 uint8_t rsvd1 : 4; /* Always 0 */
50 uint8_t physWidth : 1; /* VMCS address field widths
51 (1=32bits, 0=natural width) */
52 uint8_t smm : 1; // Always 1
53 uint8_t memType : 4; /* 0 = UC, 6 = WriteBack */
54 uint8_t io_str_info : 1;
55 uint8_t def1_maybe_0 : 1; /* 1="Any VMX ctrls that default to 1 may be cleared to 0" */
56 uint32_t rsvd2 : 8; /* Always 0 */
57 } __attribute__((packed));
58 } __attribute__((packed));
59 } __attribute__((packed));
66 struct vmx_basic_msr basic_info;