Also, you should also improve the shortlog (in Subject) to something less vague, e.g.: serial: 8250_dw: assert port->lock is held in dw8250_force_idle() On Tue, 6 May 2025, Ilpo Järvinen wrote: > On Tue, 6 May 2025, Yunhui Cui wrote: > > > Read UART_RX and check UART_LSR_DR in critical section. Unsure if > > Unsure if -> Ensure the > > > caller of dw8250_force_idle() holds port->lock. Don't acquire it > > directly to avoid deadlock. Use lockdep_assert_held_once for warning. > > Add (), although the last two sentences don't seem that useful, IMO. > > > > > Signed-off-by: Yunhui Cui > > --- > > drivers/tty/serial/8250/8250_dw.c | 8 ++++++++ > > 1 file changed, 8 insertions(+) > > > > diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c > > index af24ec25d976..f41c4a9ed58b 100644 > > --- a/drivers/tty/serial/8250/8250_dw.c > > +++ b/drivers/tty/serial/8250/8250_dw.c > > @@ -13,6 +13,7 @@ > > #include > > #include > > #include > > +#include > > #include > > #include > > #include > > @@ -112,6 +113,13 @@ static void dw8250_force_idle(struct uart_port *p) > > struct uart_8250_port *up = up_to_u8250p(p); > > unsigned int lsr; > > > > + /* > > + * The serial_in(p, UART_RX) should be under port->lock, but we can't add > > + * it to avoid AA deadlock as we're unsure if serial_out*(...UART_LCR) > > + * is under port->lock. > > I'm left to wonder who/what "we" is here? Could you change it something > more precise. > > > + */ > > + lockdep_assert_held_once(&p->lock); > > + > > serial8250_clear_and_reinit_fifos(up); > > > > /* > > > > -- i.