[PATCH 3.2 012/140] KVM: apic: fix LDR calculation in x2apic mode

From: Ben Hutchings
Date: Wed Feb 28 2018 - 12:47:46 EST


3.2.100-rc1 review patch. If anyone has any objections, please let me know.

------------------

From: Gleb Natapov <gleb@xxxxxxxxxx>

commit 7f46ddbd487e0d0528d89534fdfb31d885977804 upstream.

Signed-off-by: Gleb Natapov <gleb@xxxxxxxxxx>
Reviewed-by: Chegu Vinod <chegu_vinod@xxxxxx>
Tested-by: Chegu Vinod <chegu_vinod@xxxxxx>
Signed-off-by: Avi Kivity <avi@xxxxxxxxxx>
[bwh: Backported to 3.2: adjust context]
Signed-off-by: Ben Hutchings <ben@xxxxxxxxxxxxxxx>
---
arch/x86/kvm/lapic.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- a/arch/x86/kvm/lapic.c
+++ b/arch/x86/kvm/lapic.c
@@ -1022,7 +1022,7 @@ void kvm_lapic_set_base(struct kvm_vcpu
vcpu->arch.apic_base = value;
if (apic_x2apic_mode(apic)) {
u32 id = kvm_apic_id(apic);
- u32 ldr = ((id & ~0xf) << 16) | (1 << (id & 0xf));
+ u32 ldr = ((id >> 4) << 16) | (1 << (id & 0xf));
apic_set_reg(apic, APIC_LDR, ldr);
}
apic->base_address = apic->vcpu->arch.apic_base &