From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:35417) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UXX9n-0001Px-8m for qemu-devel@nongnu.org; Wed, 01 May 2013 09:33:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UXX9m-0003d6-2f for qemu-devel@nongnu.org; Wed, 01 May 2013 09:33:15 -0400 Received: from cantor2.suse.de ([195.135.220.15]:56097 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UXX9l-0003d0-T3 for qemu-devel@nongnu.org; Wed, 01 May 2013 09:33:14 -0400 Message-ID: <51811995.1010409@suse.de> Date: Wed, 01 May 2013 15:33:09 +0200 From: =?UTF-8?B?QW5kcmVhcyBGw6RyYmVy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] pause_all_vcpus() TCG bug? List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel Cc: Peter Maydell , =?UTF-8?B?6Zmz6Z+L5Lu7?= Hello, This is today's function, with annotations and question inline: void pause_all_vcpus(void) { CPUArchState *penv =3D first_cpu; qemu_clock_enable(vm_clock, false); while (penv) { CPUState *pcpu =3D ENV_GET_CPU(penv); pcpu->stop =3D true; qemu_cpu_kick(pcpu); penv =3D penv->next_cpu; } /* So, at this point penv =3D=3D NULL. */ if (qemu_in_vcpu_thread()) { cpu_stop_current(); if (!kvm_enabled()) { while (penv) { /* Looks like this can never be true then? */ /* Is penv =3D first_cpu; missing? */ CPUState *pcpu =3D ENV_GET_CPU(penv); pcpu->stop =3D 0; /* 0 instead of false may hint at a mismerge... */ pcpu->stopped =3D true; penv =3D penv->next_cpu; } return; } } while (!all_vcpus_paused()) { qemu_cond_wait(&qemu_pause_cond, &qemu_global_mutex); penv =3D first_cpu; while (penv) { qemu_cpu_kick(ENV_GET_CPU(penv)); penv =3D penv->next_cpu; } } } Thanks, Andreas --=20 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=C3=BCrnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imend=C3=B6rffer; HRB 16746 AG N=C3=BC= rnberg