Am 28.07.2013 08:13, schrieb Igor Mammedov:
> On Sat, 27 Jul 2013 04:01:50 +0200
> Andreas Färber <afaer...@suse.de> 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 <chen.fan.f...@cn.fujitsu.com>
>> Signed-off-by: Andreas Färber <afaer...@suse.de>
> 
> ACK for target-i386

Thanks, applied to qom-cpu:
https://github.com/afaerber/qemu-cpu/commits/qom-cpu

I used the diff of the offending commit to determine placement of
qemu_init_vcpu() and only avoided duplicate CPU() casts, so other
targets should be fine as well.

Andreas

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg

Reply via email to