Commit 548ebcaf authored by Alex Bennée's avatar Alex Bennée Committed by Paolo Bonzini
Browse files

target-arm/arm-powerctl: wake up sleeping CPUs



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 kick the vCPU once we have processed the PSCI power on
call.

As the power control API is for system emulation only as is the
qemu_kick_cpu function we also ensure we only build arm-powerctl for
SoftMMU builds.

Tested-by: default avatarAlex Bennée <alex.bennee@linaro.org>
CC: Alexander Spyridakis <a.spyridakis@virtualopensystems.com>
Message-Id: <1439220437-23957-20-git-send-email-fred.konrad@greensocs.com>
Signed-off-by: default avatarAlex Bennée <alex.bennee@linaro.org>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>

Message-Id: <20161027151030.20863-11-alex.bennee@linaro.org>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent a5e99826
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -9,4 +9,4 @@ obj-y += neon_helper.o iwmmxt_helper.o
obj-y += gdbstub.o
obj-$(TARGET_AARCH64) += cpu64.o translate-a64.o helper-a64.o gdbstub64.o
obj-y += crypto_helper.o
obj-y += arm-powerctl.o
obj-$(CONFIG_SOFTMMU) += arm-powerctl.o
+2 −0
Original line number Diff line number Diff line
@@ -166,6 +166,8 @@ int arm_set_cpu_on(uint64_t cpuid, uint64_t entry, uint64_t context_id,
    /* Start the new CPU at the requested address */
    cpu_set_pc(target_cpu_state, entry);

    qemu_cpu_kick(target_cpu_state);

    /* We are good to go */
    return QEMU_ARM_POWERCTL_RET_SUCCESS;
}