diff options
Diffstat (limited to 'arch/x86/kvm/lapic.c')
-rw-r--r-- | arch/x86/kvm/lapic.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index 44f20cdb5709..b0661300eb28 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c | |||
@@ -793,7 +793,8 @@ void kvm_lapic_set_base(struct kvm_vcpu *vcpu, u64 value) | |||
793 | vcpu->arch.apic_base = value; | 793 | vcpu->arch.apic_base = value; |
794 | return; | 794 | return; |
795 | } | 795 | } |
796 | if (apic->vcpu->vcpu_id) | 796 | |
797 | if (!kvm_vcpu_is_bsp(apic->vcpu)) | ||
797 | value &= ~MSR_IA32_APICBASE_BSP; | 798 | value &= ~MSR_IA32_APICBASE_BSP; |
798 | 799 | ||
799 | vcpu->arch.apic_base = value; | 800 | vcpu->arch.apic_base = value; |
@@ -844,7 +845,7 @@ void kvm_lapic_reset(struct kvm_vcpu *vcpu) | |||
844 | } | 845 | } |
845 | update_divide_count(apic); | 846 | update_divide_count(apic); |
846 | atomic_set(&apic->lapic_timer.pending, 0); | 847 | atomic_set(&apic->lapic_timer.pending, 0); |
847 | if (vcpu->vcpu_id == 0) | 848 | if (kvm_vcpu_is_bsp(vcpu)) |
848 | vcpu->arch.apic_base |= MSR_IA32_APICBASE_BSP; | 849 | vcpu->arch.apic_base |= MSR_IA32_APICBASE_BSP; |
849 | apic_update_ppr(apic); | 850 | apic_update_ppr(apic); |
850 | 851 | ||
@@ -985,7 +986,7 @@ int kvm_apic_accept_pic_intr(struct kvm_vcpu *vcpu) | |||
985 | u32 lvt0 = apic_get_reg(vcpu->arch.apic, APIC_LVT0); | 986 | u32 lvt0 = apic_get_reg(vcpu->arch.apic, APIC_LVT0); |
986 | int r = 0; | 987 | int r = 0; |
987 | 988 | ||
988 | if (vcpu->vcpu_id == 0) { | 989 | if (kvm_vcpu_is_bsp(vcpu)) { |
989 | if (!apic_hw_enabled(vcpu->arch.apic)) | 990 | if (!apic_hw_enabled(vcpu->arch.apic)) |
990 | r = 1; | 991 | r = 1; |
991 | if ((lvt0 & APIC_LVT_MASKED) == 0 && | 992 | if ((lvt0 & APIC_LVT_MASKED) == 0 && |