فهرست منبع

KVM: apic: fix LDR calculation in x2apic mode

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Reviewed-by: Chegu Vinod  <chegu_vinod@hp.com>
Tested-by: Chegu Vinod <chegu_vinod@hp.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Gleb Natapov 12 سال پیش
والد
کامیت
7f46ddbd48
1فایلهای تغییر یافته به همراه1 افزوده شده و 1 حذف شده
  1. 1 1
      arch/x86/kvm/lapic.c

+ 1 - 1
arch/x86/kvm/lapic.c

@@ -1311,7 +1311,7 @@ void kvm_lapic_set_base(struct kvm_vcpu *vcpu, u64 value)
 	vcpu->arch.apic_base = value;
 	vcpu->arch.apic_base = value;
 	if (apic_x2apic_mode(apic)) {
 	if (apic_x2apic_mode(apic)) {
 		u32 id = kvm_apic_id(apic);
 		u32 id = kvm_apic_id(apic);
-		u32 ldr = ((id & ~0xf) << 16) | (1 << (id & 0xf));
+		u32 ldr = ((id >> 4) << 16) | (1 << (id & 0xf));
 		kvm_apic_set_ldr(apic, ldr);
 		kvm_apic_set_ldr(apic, ldr);
 	}
 	}
 	apic->base_address = apic->vcpu->arch.apic_base &
 	apic->base_address = apic->vcpu->arch.apic_base &