From: Liu, E. E <eri...@in...> - 2008-01-08 09:29:39
|
Hi Avi For current commit Windows SMP guests will fail to boot if using Qcow images based on the original backend file on a remote network file system. I found out that one Ap thread is hang at the place of bdrv_read_em() -> qemu_aio_wait() -> sigwait(), which is waiting for the signal SIGUSR2. Since AIO thread sends a SIGUSR2 to QEMU to indicate the completion of an AIO request, and if we use Qcow img, it will wait for the signal. In current code we don't mask the signal SIGUSR2 in VCPU0 's thread, so it may eat the signal the Ap thread is waiting for. if I mask the signal as fellow:=20 1 diff --git a/qemu/qemu-kvm.c b/qemu/qemu-kvm.c 2 index 9aee903..9fe4235 100644 3 --- a/qemu/qemu-kvm.c 4 +++ b/qemu/qemu-kvm.c 5 @@ -310,9 +310,10 @@ static void setup_kernel_sigmask(CPUState *env) 6 7 sigprocmask(SIG_BLOCK, NULL, &set); 8 sigdelset(&set, SIG_IPI); 9 - if (env->cpu_index =3D=3D 0) 10 + if (env->cpu_index =3D=3D 0) { 11 sigandset(&set, &set, &io_negsigset); 12 - 13 + sigaddset(&set, SIGUSR2); 14 + } 15 kvm_set_signal_mask(kvm_context, env->cpu_index, &set); 16 } Windows SMP guests will boot successfully. I am not very clear that why we don't mask it, do you have other consideration? thx. --Eric (Liu, Feng) |