On 07/29/2013 05:32 AM, Andreas Färber wrote: > Commit c643bed99 moved qemu_init_vcpu() calls to common CPUState code. > This causes x86 cpu-add to fail with "KVM: setting VAPIC address failed". > > The reason for the failure is that CPUClass::kvm_fd is not yet > initialized in the following call graph: > ->x86_cpu_realizefn > ->x86_cpu_apic_realize > ->qdev_init > ->device_set_realized > ->device_reset (hotplugged == 1) > ->apic_reset_common > ->vapic_base_update > ->kvm_apic_vapic_base_update > This causes attempted KVM vCPU ioctls to fail. > > By contrast, in the non-hotplug case the APIC is reset much later, when > the vCPU is already initialized. > > As a quick and safe solution, move the qemu_init_vcpu() call back into > the targets' realize functions. > > Reported-by: Chen Fan <[email protected]> > Acked-by: Igor Mammedov <[email protected]> (for i386) > Tested-by: Jia Liu <[email protected]> (for openrisc) > Signed-off-by: Andreas Färber <[email protected]>
Tested-by: Richard Henderson <[email protected]> (for Alpha) r~
