diff options
-rw-r--r-- | arch/x86/kvm/vmx/nested.c | 10 | ||||
-rw-r--r-- | arch/x86/kvm/vmx/vmx.c | 12 | ||||
-rw-r--r-- | arch/x86/kvm/vmx/vmx.h | 5 |
3 files changed, 12 insertions, 15 deletions
diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c index d4f529a2e194..3f76a1f3fe3c 100644 --- a/arch/x86/kvm/vmx/nested.c +++ b/arch/x86/kvm/vmx/nested.c | |||
@@ -2024,7 +2024,7 @@ static void prepare_vmcs02_early(struct vcpu_vmx *vmx, struct vmcs12 *vmcs12) | |||
2024 | } else { | 2024 | } else { |
2025 | exec_control &= ~PIN_BASED_POSTED_INTR; | 2025 | exec_control &= ~PIN_BASED_POSTED_INTR; |
2026 | } | 2026 | } |
2027 | pin_controls_init(vmx, exec_control); | 2027 | pin_controls_set(vmx, exec_control); |
2028 | 2028 | ||
2029 | /* | 2029 | /* |
2030 | * EXEC CONTROLS | 2030 | * EXEC CONTROLS |
@@ -2049,7 +2049,7 @@ static void prepare_vmcs02_early(struct vcpu_vmx *vmx, struct vmcs12 *vmcs12) | |||
2049 | */ | 2049 | */ |
2050 | exec_control &= ~CPU_BASED_USE_IO_BITMAPS; | 2050 | exec_control &= ~CPU_BASED_USE_IO_BITMAPS; |
2051 | exec_control |= CPU_BASED_UNCOND_IO_EXITING; | 2051 | exec_control |= CPU_BASED_UNCOND_IO_EXITING; |
2052 | exec_controls_init(vmx, exec_control); | 2052 | exec_controls_set(vmx, exec_control); |
2053 | 2053 | ||
2054 | /* | 2054 | /* |
2055 | * SECONDARY EXEC CONTROLS | 2055 | * SECONDARY EXEC CONTROLS |
@@ -2079,7 +2079,7 @@ static void prepare_vmcs02_early(struct vcpu_vmx *vmx, struct vmcs12 *vmcs12) | |||
2079 | vmcs_write16(GUEST_INTR_STATUS, | 2079 | vmcs_write16(GUEST_INTR_STATUS, |
2080 | vmcs12->guest_intr_status); | 2080 | vmcs12->guest_intr_status); |
2081 | 2081 | ||
2082 | secondary_exec_controls_init(vmx, exec_control); | 2082 | secondary_exec_controls_set(vmx, exec_control); |
2083 | } | 2083 | } |
2084 | 2084 | ||
2085 | /* | 2085 | /* |
@@ -2098,7 +2098,7 @@ static void prepare_vmcs02_early(struct vcpu_vmx *vmx, struct vmcs12 *vmcs12) | |||
2098 | if (guest_efer != host_efer) | 2098 | if (guest_efer != host_efer) |
2099 | exec_control |= VM_ENTRY_LOAD_IA32_EFER; | 2099 | exec_control |= VM_ENTRY_LOAD_IA32_EFER; |
2100 | } | 2100 | } |
2101 | vm_entry_controls_init(vmx, exec_control); | 2101 | vm_entry_controls_set(vmx, exec_control); |
2102 | 2102 | ||
2103 | /* | 2103 | /* |
2104 | * EXIT CONTROLS | 2104 | * EXIT CONTROLS |
@@ -2110,7 +2110,7 @@ static void prepare_vmcs02_early(struct vcpu_vmx *vmx, struct vmcs12 *vmcs12) | |||
2110 | exec_control = vmx_vmexit_ctrl(); | 2110 | exec_control = vmx_vmexit_ctrl(); |
2111 | if (cpu_has_load_ia32_efer() && guest_efer != host_efer) | 2111 | if (cpu_has_load_ia32_efer() && guest_efer != host_efer) |
2112 | exec_control |= VM_EXIT_LOAD_IA32_EFER; | 2112 | exec_control |= VM_EXIT_LOAD_IA32_EFER; |
2113 | vm_exit_controls_init(vmx, exec_control); | 2113 | vm_exit_controls_set(vmx, exec_control); |
2114 | 2114 | ||
2115 | /* | 2115 | /* |
2116 | * Interrupt/Exception Fields | 2116 | * Interrupt/Exception Fields |
diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index 8c1cbc19af97..bae376bf9c20 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c | |||
@@ -2485,6 +2485,8 @@ int alloc_loaded_vmcs(struct loaded_vmcs *loaded_vmcs) | |||
2485 | } | 2485 | } |
2486 | 2486 | ||
2487 | memset(&loaded_vmcs->host_state, 0, sizeof(struct vmcs_host_state)); | 2487 | memset(&loaded_vmcs->host_state, 0, sizeof(struct vmcs_host_state)); |
2488 | memset(&loaded_vmcs->controls_shadow, 0, | ||
2489 | sizeof(struct vmcs_controls_shadow)); | ||
2488 | 2490 | ||
2489 | return 0; | 2491 | return 0; |
2490 | 2492 | ||
@@ -4040,14 +4042,14 @@ static void vmx_vcpu_setup(struct vcpu_vmx *vmx) | |||
4040 | vmcs_write64(VMCS_LINK_POINTER, -1ull); /* 22.3.1.5 */ | 4042 | vmcs_write64(VMCS_LINK_POINTER, -1ull); /* 22.3.1.5 */ |
4041 | 4043 | ||
4042 | /* Control */ | 4044 | /* Control */ |
4043 | pin_controls_init(vmx, vmx_pin_based_exec_ctrl(vmx)); | 4045 | pin_controls_set(vmx, vmx_pin_based_exec_ctrl(vmx)); |
4044 | vmx->hv_deadline_tsc = -1; | 4046 | vmx->hv_deadline_tsc = -1; |
4045 | 4047 | ||
4046 | exec_controls_init(vmx, vmx_exec_control(vmx)); | 4048 | exec_controls_set(vmx, vmx_exec_control(vmx)); |
4047 | 4049 | ||
4048 | if (cpu_has_secondary_exec_ctrls()) { | 4050 | if (cpu_has_secondary_exec_ctrls()) { |
4049 | vmx_compute_secondary_exec_control(vmx); | 4051 | vmx_compute_secondary_exec_control(vmx); |
4050 | secondary_exec_controls_init(vmx, vmx->secondary_exec_control); | 4052 | secondary_exec_controls_set(vmx, vmx->secondary_exec_control); |
4051 | } | 4053 | } |
4052 | 4054 | ||
4053 | if (kvm_vcpu_apicv_active(&vmx->vcpu)) { | 4055 | if (kvm_vcpu_apicv_active(&vmx->vcpu)) { |
@@ -4105,10 +4107,10 @@ static void vmx_vcpu_setup(struct vcpu_vmx *vmx) | |||
4105 | ++vmx->nmsrs; | 4107 | ++vmx->nmsrs; |
4106 | } | 4108 | } |
4107 | 4109 | ||
4108 | vm_exit_controls_init(vmx, vmx_vmexit_ctrl()); | 4110 | vm_exit_controls_set(vmx, vmx_vmexit_ctrl()); |
4109 | 4111 | ||
4110 | /* 22.2.1, 20.8.1 */ | 4112 | /* 22.2.1, 20.8.1 */ |
4111 | vm_entry_controls_init(vmx, vmx_vmentry_ctrl()); | 4113 | vm_entry_controls_set(vmx, vmx_vmentry_ctrl()); |
4112 | 4114 | ||
4113 | vmx->vcpu.arch.cr0_guest_owned_bits = X86_CR0_TS; | 4115 | vmx->vcpu.arch.cr0_guest_owned_bits = X86_CR0_TS; |
4114 | vmcs_writel(CR0_GUEST_HOST_MASK, ~X86_CR0_TS); | 4116 | vmcs_writel(CR0_GUEST_HOST_MASK, ~X86_CR0_TS); |
diff --git a/arch/x86/kvm/vmx/vmx.h b/arch/x86/kvm/vmx/vmx.h index 52d7bc90d9ef..82d0bc3a4d52 100644 --- a/arch/x86/kvm/vmx/vmx.h +++ b/arch/x86/kvm/vmx/vmx.h | |||
@@ -388,11 +388,6 @@ static inline u8 vmx_get_rvi(void) | |||
388 | } | 388 | } |
389 | 389 | ||
390 | #define BUILD_CONTROLS_SHADOW(lname, uname) \ | 390 | #define BUILD_CONTROLS_SHADOW(lname, uname) \ |
391 | static inline void lname##_controls_init(struct vcpu_vmx *vmx, u32 val) \ | ||
392 | { \ | ||
393 | vmcs_write32(uname, val); \ | ||
394 | vmx->loaded_vmcs->controls_shadow.lname = val; \ | ||
395 | } \ | ||
396 | static inline void lname##_controls_set(struct vcpu_vmx *vmx, u32 val) \ | 391 | static inline void lname##_controls_set(struct vcpu_vmx *vmx, u32 val) \ |
397 | { \ | 392 | { \ |
398 | if (vmx->loaded_vmcs->controls_shadow.lname != val) { \ | 393 | if (vmx->loaded_vmcs->controls_shadow.lname != val) { \ |