• Frederic Weisbecker's avatar
    rcu/nocb: Use kthread parking instead of ad-hoc implementation · 483d5bf2
    Frederic Weisbecker authored
    Upon NOCB deoffloading, the rcuo kthread must be forced to sleep
    until the corresponding rdp is ever offloaded again. The deoffloader
    clears the SEGCBLIST_OFFLOADED flag, wakes up the rcuo kthread which
    then notices that change and clears in turn its SEGCBLIST_KTHREAD_CB
    flag before going to sleep, until it ever sees the SEGCBLIST_OFFLOADED
    flag again, should a re-offloading happen.
    
    Upon NOCB offloading, the rcuo kthread must be forced to wake up and
    handle callbacks until the corresponding rdp is ever deoffloaded again.
    The offloader sets the SEGCBLIST_OFFLOADED flag, wakes up the rcuo
    kthread which then notices that change and sets in turn its
    SEGCBLIST_KTHREAD_CB flag before going to check callbacks, until it
    ever sees the SEGCBLIST_OFFLOADED flag cleared again, should a
    de-offloading happen again.
    
    This is all a crude ad-hoc and error-prone kthread (un-)parking
    re-implementation.
    
    Consolidate the behaviour with the appropriate API instead.
    
    [ paulmck: Apply Qiang Zhang feedback provided in Link: below. ]
    Link: https://lore.kernel.org/all/20240509074046.15629-1-qiang.zhang1211@gmail.com/Signed-off-by: default avatarFrederic Weisbecker <frederic@kernel.org>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    483d5bf2
tree_nocb.h 53.3 KB