Re: printk() from NMI backtrace can delay a lot

From: Sergey Senozhatsky
Date: Tue Jul 03 2018 - 12:39:58 EST


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