QEMU/KVM: make kvm_arch_load_regs() aware of in kernel APIC
kvm_arch_load_regs() might load APIC base and APIC TPR from the uninitialized userspace APIC emulation.
This happened when running X11 on SMP guest in my case, disabling the APIC for vcpu3:
vcpu not ready for apic_round_robin
vcpu not ready for apic_round_robin
vcpu not ready for apic_round_robin
...
qemu/qemu-kvm-x86.c +8 -2
@@ -250,9 +250,15 @@ void kvm_arch_load_regs(CPUState *env) sregs.cr3 = env->cr[3 ]; sregs.cr4 = env->cr[4 ]; - sregs.apic_base =cpu_get_apic_base (env); +if (kvm_irqchip_in_kernel (kvm_context)) { + sregs.cr8 =kvm_get_cr8 (kvm_context, env->cpu_index); + sregs.apic_base =kvm_get_apic_base (kvm_context, env->cpu_index); + }else { + sregs.cr8 =cpu_get_apic_tpr (env); + sregs.apic_base =cpu_get_apic_base (env); + } + sregs.efer = env->efer; - sregs.cr8 =cpu_get_apic_tpr (env);kvm_set_sregs (kvm_context, env->cpu_index, &sregs);
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
Quoted 10 lines · Marcelo Tosatti
kvm_arch_load_regs()might load APIC base and APIC TPR from the uninitialized userspace APIC emulation.This happened when running X11 on SMP guest in my case, disabling the APIC for vcpu3:
vcpu not ready for
apic_round_robin
vcpu not ready forapic_round_robin
vcpu not ready forapic_round_robin
With this patch applied, I can start up my fedora8 guest with SMP and I no longer get X11 video corruption.
Signature · 11 lines
Ryan Harper Software Engineer; Linux Technology Center IBM Corp., Austin, Tx (512) 838-9253 T/L: 678-9253 [email protected] ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
Avi Kivity
AppliedQuoted 11 lines · Marcelo Tosatti
kvm_arch_load_regs()might load APIC base and APIC TPR from the uninitialized userspace APIC emulation.This happened when running X11 on SMP guest in my case, disabling the APIC for vcpu3:
vcpu not ready for
apic_round_robin
vcpu not ready forapic_round_robin
vcpu not ready forapic_round_robin
...
Applied, thanks.
Signature · 8 lines
Any sufficiently difficult bug is indistinguishable from a feature. ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace