On Fri, 30 Oct 2026 at 14:10, Alex Bennée <[email protected]> wrote:
> There is a race in qemu_process_cpu_events and sleeping on halt_cond
> where we can miss the setting of the event_register which would cause
> arm_cpu_has_work to report we shouldn't sleep. As by definition the
> bql has to be held when we go to sleep against halt_cond guard the
> kicking of the cpus by the SEV helper with the BQL to ensure things
> are properly serialised.

I hit this race with a bare-metal test in which two CPUs pass a turn
back and forth 500000 times with WFE and SEV (virt, -smp 2,
semihosting).

On master (af1179b406) it hangs in 10 of 10 runs with -cpu max and in
10 of 10 with cortex-a72 (no result after 20 s; a passing run takes
2 s). A second test, in which a CPU waits in WFE for a broadcast TLBI
and an SEV, hangs in 23 of 100 runs with cortex-a53.

With this series applied on the same master, the first test passes
150 of 150 runs (50 each with max, cortex-a72 and cortex-a53) and the
second 600 of 600 (200 each).

Tested-by: Lorand Marton <[email protected]>

The series has no test case now; I can post these two as
tests/tcg/aarch64/system tests if that helps.

Thanks,
Lorand

Reply via email to