• Jan Glauber's avatar
    [S390] race safe external interrupt registration · 89c9b66b
    Jan Glauber authored
    The (un-)register_external_interrupt functions are not race safe if
    more than one interrupt handler is added or deleted for an external
    interrupt concurrently.
    
    Make the registration / unregistration of external interrupts race safe
    by using RCU and a spinlock. RCU is used to avoid a performance penalty
    in the external interrupt handler, the register and unregister functions
    are protected by the spinlock and are not performance critical.
    call_rcu must be used since the SCLP driver uses the interface with
    IRQs disabled. Also use the generic list implementation rather than
    homebrewn list code.
    Signed-off-by: default avatarJan Glauber <jang@linux.vnet.ibm.com>
    Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
    89c9b66b
irq.c 6.59 KB