[PATCH 15/16] target/arm/powerctl: Move BQL assertions to async work context
Philippe Mathieu-Daudé <[email protected]>
| Newsgroups | gmane.comp.emulators.kvm.devel,gmane.comp.emulators.qemu |
|---|---|
| Message-ID | <[email protected]> |
We can not guarantees the callers of the following public API
functions hold the BQL:
- arm_set_cpu_on()
- arm_set_cpu_on_and_reset()
- arm_set_cpu_off()
Move the assertion to arm_reset_cpu_async_work() where the async
context guarantees the BQL is held.
Fixes: 062ba099e01 ("target-arm/powerctl: defer cpu reset work to CPU context")
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
---
target/arm/arm-powerctl.c | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/target/arm/arm-powerctl.c b/target/arm/arm-powerctl.c
index a06be5cc997..a938b30943c 100644
--- a/target/arm/arm-powerctl.c
+++ b/target/arm/arm-powerctl.c
@@ -88,8 +88,6 @@ int arm_set_cpu_on(uint64_t cpuid, uint64_t entry, uint64_t context_id,
ARMCPU *target_cpu;
struct CpuOnInfo *info;
- assert(bql_locked());
-
trace_arm_powerctl_set_cpu_on(cpuid, target_el,
target_aa64 ? "aarch64" : "aarch32",
entry, context_id);
@@ -194,8 +192,6 @@ int arm_set_cpu_on_and_reset(uint64_t cpuid)
CPUState *target_cpu_state;
ARMCPU *target_cpu;
- assert(bql_locked());
-
trace_arm_powerctl_set_cpu_on_and_reset(cpuid);
/* Retrieve the cpu we are powering up */
@@ -249,8 +245,6 @@ int arm_set_cpu_off(uint64_t cpuid)
CPUState *target_cpu_state;
ARMCPU *target_cpu;
- assert(bql_locked());
-
trace_arm_powerctl_set_cpu_off(cpuid);
/* change to the cpu we are powering up */
@@ -276,6 +270,7 @@ int arm_set_cpu_off(uint64_t cpuid)
static void arm_reset_cpu_async_work(CPUState *target_cpu_state,
run_on_cpu_data data)
{
+ assert(bql_locked());
/* Reset the cpu */
cpu_reset(target_cpu_state);
}
@@ -285,8 +280,6 @@ int arm_reset_cpu(uint64_t cpuid)
CPUState *target_cpu_state;
ARMCPU *target_cpu;
- assert(bql_locked());
-
trace_arm_powerctl_set_cpu_off(cpuid);
/* change to the cpu we are resetting */
--
2.53.0