Message ID | 52BF7AFA.4050806@web.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Sun, Dec 29, 2013 at 02:29:30AM +0100, Jan Kiszka wrote: > From: Jan Kiszka <jan.kiszka@siemens.com> > > Update arch.apic_base before triggering recalculate_apic_map. Otherwise > the recalculation will work against the previous state of the APIC and > will fail to build the correct map when an APIC is hardware-enabled > again. > > This fixes a regression of 1e08ec4a13. > > Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> > --- > > Stable material. > > arch/x86/kvm/lapic.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c > index 5439117..ab58ea4 100644 > --- a/arch/x86/kvm/lapic.c > +++ b/arch/x86/kvm/lapic.c > @@ -1346,6 +1346,10 @@ void kvm_lapic_set_base(struct kvm_vcpu *vcpu, u64 value) > return; > } > > + if (!kvm_vcpu_is_bsp(apic->vcpu)) > + value &= ~MSR_IA32_APICBASE_BSP; > + vcpu->arch.apic_base = value; > + > /* update jump label if enable bit changes */ > if ((vcpu->arch.apic_base ^ value) & MSR_IA32_APICBASE_ENABLE) { > if (value & MSR_IA32_APICBASE_ENABLE) > @@ -1355,10 +1359,6 @@ void kvm_lapic_set_base(struct kvm_vcpu *vcpu, u64 value) > recalculate_apic_map(vcpu->kvm); > } > > - if (!kvm_vcpu_is_bsp(apic->vcpu)) > - value &= ~MSR_IA32_APICBASE_BSP; > - > - vcpu->arch.apic_base = value; > if ((old_value ^ value) & X2APIC_ENABLE) { > if (value & X2APIC_ENABLE) { > u32 id = kvm_apic_id(apic); > -- Applied to master branch, thanks. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index 5439117..ab58ea4 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c @@ -1346,6 +1346,10 @@ void kvm_lapic_set_base(struct kvm_vcpu *vcpu, u64 value) return; } + if (!kvm_vcpu_is_bsp(apic->vcpu)) + value &= ~MSR_IA32_APICBASE_BSP; + vcpu->arch.apic_base = value; + /* update jump label if enable bit changes */ if ((vcpu->arch.apic_base ^ value) & MSR_IA32_APICBASE_ENABLE) { if (value & MSR_IA32_APICBASE_ENABLE) @@ -1355,10 +1359,6 @@ void kvm_lapic_set_base(struct kvm_vcpu *vcpu, u64 value) recalculate_apic_map(vcpu->kvm); } - if (!kvm_vcpu_is_bsp(apic->vcpu)) - value &= ~MSR_IA32_APICBASE_BSP; - - vcpu->arch.apic_base = value; if ((old_value ^ value) & X2APIC_ENABLE) { if (value & X2APIC_ENABLE) { u32 id = kvm_apic_id(apic);