The atomic SRCU fastpath enables synchronize_srcu_atomic() to be called         
                          
from contexts with interrupts disabled. This series extends the                 
                         
rcutorture lockdep tests to cover the atomic SRCU path and fixes an             
                          
IRQ-state preservation bug discovered along the way.                            
                          
                                                                                
                       
Patch 1-2 add lockdep test coverage for atomic SRCU:                            
                          
- testtype 4: same-type atomic SRCU deadlock                                    
                        
- testtype 5: atomic SRCU + raw spinlock dependency cycle                       
                        
- testtype 6: rcu_read_lock() → synchronize_srcu_atomic()                       
                        
  legitimate nesting, must not trigger lockdep warning                          
                        
                                                                                
                       
Patch 3 fixes a bug where the synchronize_srcu_atomic() call chain              
                          
unconditionally re-enables interrupts on unlock, by switching to the            
                          
irqsave/irqrestore variants throughout the call chain.                          
                          
                                                                                
                       
Patch 4 fixes a pre-existing double nerrs count in the script.                  
                          
                                                                                
                       
Patch 5 adds testtype 7: cross-CPU IRQ context mismatch detection,              
                          
where an atomic SRCU reader held with IRQs enabled on one CPU is                
                          
paired with synchronize_srcu_atomic() via IPI on another CPU.
 
Kunwu Chan (5):
  rcutorture: Add atomic SRCU lockdep support
  selftests/rcutorture: Wire atomic SRCU into srcu_lockdep.sh
  srcutree: Preserve IRQ state in synchronize_srcu_atomic() callchain
  selftests/rcutorture: Fix double nerrs count in srcu_lockdep.sh
  rcutorture: Add atomic SRCU cross-CPU IRQ context mismatch test

 kernel/rcu/rcutorture.c                       | 109 +++++++++++++++++-
 kernel/rcu/srcutree.c                         |  42 ++++---
 .../selftests/rcutorture/bin/srcu_lockdep.sh  |  77 ++++++++++++-
 3 files changed, 205 insertions(+), 23 deletions(-)

-- 
2.43.0


Reply via email to