|
From: | Richard Henderson |
Subject: | Re: [RFC PATCH 02/19] system/cpus: Only kick running vCPUs |
Date: | Sat, 7 Jun 2025 14:23:17 +0100 |
User-agent: | Mozilla Thunderbird |
On 6/6/25 17:44, Philippe Mathieu-Daudé wrote:
As an optimization, avoid kicking stopped vCPUs. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- system/cpus.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/system/cpus.c b/system/cpus.c index d16b0dff989..4835e5ced48 100644 --- a/system/cpus.c +++ b/system/cpus.c @@ -494,6 +494,11 @@ void cpus_kick_thread(CPUState *cpu) void qemu_cpu_kick(CPUState *cpu) { qemu_cond_broadcast(cpu->halt_cond); + + if (!cpu_can_run(cpu)) { + return; + } +
This would appear to be a race condition. The evaluation of cpu_can_run should be done within the context of 'cpu', not here, and not *after* we've already woken 'cpu' via the broadcast.
r~
[Prev in Thread] | Current Thread | [Next in Thread] |