|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] xen/arm: gic-v3: Fix redistributor wakeup polling
On Mon, May 18, 2026 at 10:05 AM Luca Fancellu <luca.fancellu@xxxxxxx> wrote:
>
> gicv3_enable_redist() clears GICR_WAKER.ProcessorSleep and then waits for
> GICR_WAKER.ChildrenAsleep to clear, as required after waking a
> redistributor.
>
> However, the polling loop currently uses "while ( timeout )". Since
> timeout is initially false, the loop runs only once unless the timeout
> path has already been reached. As a result, Xen can continue before the
> redistributor has completed wakeup.
>
> Use an unconditional loop, matching the surrounding timeout/break pattern,
> so the code polls until either ChildrenAsleep is clear or the deadline is
> reached.
>
> While there, also fix the timeout message. This path polls
> GICR_WAKER.ChildrenAsleep, not an RWP bit, so "RWP timeout" is misleading.
>
> Fixes: bc183a0235e0 ("xen/arm: Add support for GIC v3")
> Signed-off-by: Luca Fancellu <luca.fancellu@xxxxxxx>
> ---
> xen/arch/arm/gic-v3.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c
> index 7f365cdbe9df..bb946dc11375 100644
> --- a/xen/arch/arm/gic-v3.c
> +++ b/xen/arch/arm/gic-v3.c
> @@ -828,11 +828,11 @@ static int gicv3_enable_redist(void)
> }
> cpu_relax();
> udelay(1);
> - } while ( timeout );
> + } while ( 1 );
>
> if ( timeout )
> {
> - dprintk(XENLOG_ERR, "GICv3: Redist enable RWP timeout\n");
> + dprintk(XENLOG_ERR, "GICv3: Redist wakeup timeout\n");
> return 1;
> }
>
> --
> 2.34.1
>
>
Reviewed-by: Mykola Kvach <mykola_kvach@xxxxxxxx>
Best regards,
Mykola
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |