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~

Reply via email to