[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xen staging] xen/arm: gic-v3: Fix redistributor wakeup polling



commit 941fdfc03e109a28ca9cfe71c111a1ef6cb9ed12
Author:     Luca Fancellu <luca.fancellu@xxxxxxx>
AuthorDate: Mon May 18 08:05:24 2026 +0100
Commit:     Michal Orzel <michal.orzel@xxxxxxx>
CommitDate: Wed May 27 13:38:29 2026 +0200

    xen/arm: gic-v3: Fix redistributor wakeup polling
    
    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>
    Reviewed-by: Mykola Kvach <mykola_kvach@xxxxxxxx>
    Reviewed-by: Michal Orzel <michal.orzel@xxxxxxx>
    Release-Acked-by: Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx>
---
 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 194a984f0b..17ff85ef5d 100644
--- a/xen/arch/arm/gic-v3.c
+++ b/xen/arch/arm/gic-v3.c
@@ -837,11 +837,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;
     }
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.