Messages in this thread | | | Date | Wed, 4 Jul 2018 01:39:48 +0900 | From | Sergey Senozhatsky <> | Subject | Re: printk() from NMI backtrace can delay a lot |
| |
On (07/04/18 01:31), Sergey Senozhatsky wrote: > it might be the case that we can do > > serial_driver_handle_irq() > { > spin_loc(uart_port->lock); > > .. TX / RX > > spin_unlock(uart_port->lock); > > tty_flip_buffer_push(uart_port->tty_port); > } > > This should break this chain > > uart_port->lock -> pool->lock // -> sheduler/etc. > > > Can we do it? What am I missing?
Hmm, and we actually have some serial drivers that do tty_filp_buffer_push() outside of uart_port->lock. For instance, drivers/tty/serial/efm32-uart.c irqreturn_t efm32_uart_rxirq().
-ss
| |