On Tue, 21 Jul 2026 at 18:06, Peter Maydell <[email protected]> wrote:
>
> cc: to qemu-stable as a late "could we backport this (plus the
> commit fixing a bug in this)" request...
>
> On Wed, 10 Jun 2026 at 17:12, Peter Maydell <[email protected]> wrote:
> >
> > From: Alex Bennée <[email protected]>
> >
> > With the advent of WFE and WFI we need to pay closer attention to the
> > reason why the vCPU may be sleeping to figure out if we should wake
> > it up.
> >
> > Create env->halt_reason to track this and then re-order the tests so
> > we:
> >
> >   - ignore everything is the vCPU is powered off
> >   - wake up if the event_register is set and we were in a WFE
> >   - otherwise any IRQ event does wake the vCPU up.
> >
> > Reviewed-by: Richard Henderson <[email protected]>
> > Signed-off-by: Alex Bennée <[email protected]>
> > Message-id: [email protected]
> > Signed-off-by: Peter Maydell <[email protected]>
>
> I didn't realize at the time, but this is actually fixing a bug,
> which was just reported via the qemu-discuss list:
> https://lists.gnu.org/archive/html/qemu-discuss/2026-07/msg00000.html
>
> For M-profile, we already added SEV/WFE support, and that's in the
> 11.0 release, but arm_cpu_has_work() incorrectly checks for the
> event register before it checks whether the CPU is powered off.
> This only affects M-profile machines with multiple CPUs, and
> the effect is that a SEV on core 0 incorrectly starts core 1
> when it's powered down.
>
> Could we backport this change (commit 6fd2fcdc61b70) plus the
> bugfix followup (commit c2804566f654 "target/arm: do not clear
> halting reason in has_work helper") to the 11.0.x branch, please?
>
> (Earlier branches don't have SEV wake anything up so don't need
> a backport.)

We could also do a simpler version of the fix for stable
branches if preferred, which is basically changing only
arm_cpu_has_work() to return false if cpu->power_state == PSCI_OFF
before looking at cpu->env.event_register.

-- PMM

Reply via email to