From: Jakub Kicinski <kubakici@xxxxx> Hi, this is a mixed bag of small improvements and a slightly bigger work to stop using blocking I/O in atomic sections. I start off with 3 small patches which have been sitting in my queue for quite a while. Fourth patch create a real-time kworker which is used in next patches to handle device configuration initiated in context where the driver is not allowed to block. Greg, this is on top of Rama's SPI patches for sc16is7xx. Jon, I *think* I came up with a way to preserve the .delay_rts_before_send behaviour that you need without the mdelay() inside atomic context. In the first patch I only remove .delay_rts_after_send handling. Patch #5 moves the delay into thread context and changes it into sleep. It should still have the same effect, though, as TX cannot progress while the thread is blocked. I would appreciate if you gave this patchset a go and see if it works for your application. Thanks, Kuba Jakub Kicinski (8): sc16is7xx: remove RS-485 delay RTS handling sc16is7xx: add missing compatible strings sc16is7xx: use LSR_TEMT_BIT in .tx_empty() sc16is7xx: use kthread_worker for tx_work and irq sc16is7xx: move RTS delay to workqueue sc16is7xx: use kworker for md sc16is7xx: use kworker to update ier bits sc16is7xx: use kworker for rs485 drivers/tty/serial/sc16is7xx.c | 223 +++++++++++++++++++++++++---------------- 1 file changed, 139 insertions(+), 84 deletions(-) -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html