From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45570) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z7oIw-0006DN-2t for qemu-devel@nongnu.org; Wed, 24 Jun 2015 13:17:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z7oIs-0002BN-L5 for qemu-devel@nongnu.org; Wed, 24 Jun 2015 13:17:42 -0400 Received: from mail-wi0-f169.google.com ([209.85.212.169]:35303) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z7oIs-0002BH-Fy for qemu-devel@nongnu.org; Wed, 24 Jun 2015 13:17:38 -0400 Received: by wiga1 with SMTP id a1so141881824wig.0 for ; Wed, 24 Jun 2015 10:17:38 -0700 (PDT) References: <1435160084-938-1-git-send-email-alex.bennee@linaro.org> <558AD458.4000905@redhat.com> From: Alex =?utf-8?Q?Benn=C3=A9e?= In-reply-to: <558AD458.4000905@redhat.com> Date: Wed, 24 Jun 2015 18:18:18 +0100 Message-ID: <87y4j9xbxh.fsf@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [RFC PATCH] target-arm/psci.c: wake up sleeping CPUs (MTTCG) List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: mttcg@greensocs.com, peter.maydell@linaro.org, Alexander Spyridakis , mark.burton@greensocs.com, qemu-devel@nongnu.org, fred.konrad@greensocs.com Paolo Bonzini writes: > On 24/06/2015 17:34, Alex Bennée wrote: >> Testing with Alexander's bare metal syncronisation tests fails in MTTCG >> leaving one CPU spinning forever waiting for the second CPU to wake up. >> We simply need to poke the halt_cond once we have processed the PSCI >> power on call. >> >> Tested-by: Alex Bennée >> CC: Alexander Spyridakis >> >> --- >> TODO >> - exactly how does the vexpress wake up it's sleeping CPUs? >> --- >> target-arm/psci.c | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/target-arm/psci.c b/target-arm/psci.c >> index d8fafab..661ff28 100644 >> --- a/target-arm/psci.c >> +++ b/target-arm/psci.c >> @@ -196,6 +196,8 @@ void arm_handle_psci_call(ARMCPU *cpu) >> } >> target_cpu_class->set_pc(target_cpu_state, entry); >> >> + qemu_cond_signal(target_cpu_state->halt_cond); > > That's called qemu_cpu_kick(target_cpu_state). :) The patch should be > acceptable now upstream, I think. Oh so this might well fail in KVM too? The qemu_cpu_kick does a qemu_cond_broadcast(cpu->halt_cond) which seems a little excessive? Won't all sleeping CPUs wake up (and return to sleep)? > > Paolo > >> ret = 0; >> break; >> case QEMU_PSCI_0_1_FN_CPU_OFF: >> -- Alex Bennée