On Tue, Dec 15, 2009 at 01:20:38PM +0200, Gleb Natapov wrote: > On Mon, Dec 14, 2009 at 06:36:37PM -0200, Marcelo Tosatti wrote: > > > > So that the vcpu state is initialized, from vcpu thread context, after > > machine initialization is settled. > > > > This allows to revert apic_init's apic_reset call. apic_reset now > > happens through system_reset, similarly to qemu upstream. > > > This patch essentially revers commit 898c51c3. This commit fixes two > races. First race is like this: > > vcpu0 vcpu1 > > starts running > loads lapic state into kernel > sends event to vcpu1 > starts running > loads lapic state into kernel > overwrites event from vcpu0 > > At the time 898c51c3 was committed the race was easily reproducible > by starting VM with 16 cpus + seabios. Sometimes some vcpus lost INIT/SIPI > events. Now I am not able to reproduce it even with this patch applied, > so something else changed, but it doesn't make the race non existent or > acceptable. Note qemu_kvm_load_lapic depends on env->created set (kvm_vcpu_inited), so having init_vcpu+load_regs before signalling vcpu creation did not fix this one (but yeah, thanks for the reminder on the races). > The second race is during machine start after migration. The race is > between event loop and vcpu: > > event loop vcpu > > starts running > gets RTC timer event > sends interrupt to vcpu > starts running > loads lapic state into kernel > overwrites interrupt from RTC > > > In short vcpu state that can be influenced by sources outside vcpu thread > itself should be uploaded into the kernel before signaling qemu_system_ready > condition. > > -- > Gleb. > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html