• Sebastian Andrzej Siewior's avatar
    chelsio: cxgb: Replace the workqueue with threaded interrupt · fec7fa0a
    Sebastian Andrzej Siewior authored
    The external interrupt (F_PL_INTR_EXT) needs to be handled in a process
    context and this is accomplished by utilizing a workqueue.
    
    The process context can also be provided by a threaded interrupt instead
    of a workqueue. The threaded interrupt can be used later for other
    interrupt related processing which require non-atomic context without
    using yet another workqueue. free_irq() also ensures that the thread is
    done which is currently missing (the worker could continue after the
    module has been removed).
    
    Save pending flags in pending_thread_intr. Use the same mechanism
    to disable F_PL_INTR_EXT as interrupt source like it is used before the
    worker is scheduled. Enable the interrupt again once
    t1_elmer0_ext_intr_handler() is done.
    Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    fec7fa0a
subr.c 31 KB