diff options
| -rw-r--r-- | arch/arm/kvm/reset.c | 6 | ||||
| -rw-r--r-- | arch/x86/kvm/vmx.c | 4 |
2 files changed, 6 insertions, 4 deletions
diff --git a/arch/arm/kvm/reset.c b/arch/arm/kvm/reset.c index 71e08baee209..c02ba4af599f 100644 --- a/arch/arm/kvm/reset.c +++ b/arch/arm/kvm/reset.c | |||
| @@ -58,14 +58,14 @@ static const struct kvm_irq_level a15_vtimer_irq = { | |||
| 58 | */ | 58 | */ |
| 59 | int kvm_reset_vcpu(struct kvm_vcpu *vcpu) | 59 | int kvm_reset_vcpu(struct kvm_vcpu *vcpu) |
| 60 | { | 60 | { |
| 61 | struct kvm_regs *cpu_reset; | 61 | struct kvm_regs *reset_regs; |
| 62 | const struct kvm_irq_level *cpu_vtimer_irq; | 62 | const struct kvm_irq_level *cpu_vtimer_irq; |
| 63 | 63 | ||
| 64 | switch (vcpu->arch.target) { | 64 | switch (vcpu->arch.target) { |
| 65 | case KVM_ARM_TARGET_CORTEX_A15: | 65 | case KVM_ARM_TARGET_CORTEX_A15: |
| 66 | if (vcpu->vcpu_id > a15_max_cpu_idx) | 66 | if (vcpu->vcpu_id > a15_max_cpu_idx) |
| 67 | return -EINVAL; | 67 | return -EINVAL; |
| 68 | cpu_reset = &a15_regs_reset; | 68 | reset_regs = &a15_regs_reset; |
| 69 | vcpu->arch.midr = read_cpuid_id(); | 69 | vcpu->arch.midr = read_cpuid_id(); |
| 70 | cpu_vtimer_irq = &a15_vtimer_irq; | 70 | cpu_vtimer_irq = &a15_vtimer_irq; |
| 71 | break; | 71 | break; |
| @@ -74,7 +74,7 @@ int kvm_reset_vcpu(struct kvm_vcpu *vcpu) | |||
| 74 | } | 74 | } |
| 75 | 75 | ||
| 76 | /* Reset core registers */ | 76 | /* Reset core registers */ |
| 77 | memcpy(&vcpu->arch.regs, cpu_reset, sizeof(vcpu->arch.regs)); | 77 | memcpy(&vcpu->arch.regs, reset_regs, sizeof(vcpu->arch.regs)); |
| 78 | 78 | ||
| 79 | /* Reset CP15 registers */ | 79 | /* Reset CP15 registers */ |
| 80 | kvm_reset_coprocs(vcpu); | 80 | kvm_reset_coprocs(vcpu); |
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index a1216de9ffda..3b8e7459dd4d 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c | |||
| @@ -5345,7 +5345,9 @@ static int handle_ept_violation(struct kvm_vcpu *vcpu) | |||
| 5345 | * There are errata that may cause this bit to not be set: | 5345 | * There are errata that may cause this bit to not be set: |
| 5346 | * AAK134, BY25. | 5346 | * AAK134, BY25. |
| 5347 | */ | 5347 | */ |
| 5348 | if (exit_qualification & INTR_INFO_UNBLOCK_NMI) | 5348 | if (!(to_vmx(vcpu)->idt_vectoring_info & VECTORING_INFO_VALID_MASK) && |
| 5349 | cpu_has_virtual_nmis() && | ||
| 5350 | (exit_qualification & INTR_INFO_UNBLOCK_NMI)) | ||
| 5349 | vmcs_set_bits(GUEST_INTERRUPTIBILITY_INFO, GUEST_INTR_STATE_NMI); | 5351 | vmcs_set_bits(GUEST_INTERRUPTIBILITY_INFO, GUEST_INTR_STATE_NMI); |
| 5350 | 5352 | ||
| 5351 | gpa = vmcs_read64(GUEST_PHYSICAL_ADDRESS); | 5353 | gpa = vmcs_read64(GUEST_PHYSICAL_ADDRESS); |
