• Paul E. McKenney's avatar
    rcutorture: Forgive RCU boost failures when CPUs don't pass through QS · 0260b92e
    Paul E. McKenney authored
    Currently, rcu_torture_boost() runs CPU-bound at real-time priority
    to force RCU priority inversions.  It then checks that grace periods
    progress during this CPU-bound time.  If grace periods fail to progress,
    it reports and RCU priority boosting failure.
    
    However, it is possible (and sometimes does happen) that the grace period
    fails to progress due to a CPU failing to pass through a quiescent state
    for an extended time period (3.5 seconds by default).  This can happen
    due to vCPU preemption, long-running interrupts, and much else besides.
    There is nothing that RCU priority boosting can do about these situations,
    and so they should not be counted as RCU priority boosting failures.
    
    This commit therefore checks for CPUs (as opposed to preempted tasks)
    holding up a grace period, and flags the resulting RCU priority boosting
    failures, but does not splat nor count them as errors.  It does rate-limit
    them to avoid flooding the console log.
    Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    0260b92e
rcu.h 16.9 KB