diff mbox

[RFC,V7,19/19] target-arm/psci.c: wake up sleeping CPUs (MTTCG)

Message ID 1439220437-23957-20-git-send-email-fred.konrad@greensocs.com
State New
Headers show

Commit Message

fred.konrad@greensocs.com Aug. 10, 2015, 3:27 p.m. UTC
From: Alex Bennée <alex.bennee@linaro.org>

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 <alex.bennee@linaro.org>
CC: Alexander Spyridakis <a.spyridakis@virtualopensystems.com>
---
 target-arm/psci.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Paolo Bonzini Aug. 10, 2015, 4:41 p.m. UTC | #1
On 10/08/2015 17:27, fred.konrad@greensocs.com wrote:
> From: Alex Bennée <alex.bennee@linaro.org>
> 
> 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 <alex.bennee@linaro.org>
> CC: Alexander Spyridakis <a.spyridakis@virtualopensystems.com>
> ---
>  target-arm/psci.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/target-arm/psci.c b/target-arm/psci.c
> index 20e4cb6..83e309c 100644
> --- a/target-arm/psci.c
> +++ b/target-arm/psci.c
> @@ -211,6 +211,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);
> +

qemu_cpu_kick, not qemu_cond_signal.

Paolo

>          ret = 0;
>          break;
>      case QEMU_PSCI_0_1_FN_CPU_OFF:
>
diff mbox

Patch

diff --git a/target-arm/psci.c b/target-arm/psci.c
index 20e4cb6..83e309c 100644
--- a/target-arm/psci.c
+++ b/target-arm/psci.c
@@ -211,6 +211,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);
+
         ret = 0;
         break;
     case QEMU_PSCI_0_1_FN_CPU_OFF: