serial: sifive: Use uart_prepare_sysrq_char() to handle sysrq.
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>
Fri, 1 Mar 2024 21:45:25 +0000 (22:45 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 2 Mar 2024 21:06:21 +0000 (22:06 +0100)
commit32c694ec3efc2b7cdf921da50371297ba70e7d50
treebce005423c4c46b9543ae711845df45ae829f91a
parentbb0b3142055d006431ac05663d38c069602b5967
serial: sifive: Use uart_prepare_sysrq_char() to handle sysrq.

The port lock is a spinlock_t which is becomes a sleeping lock on PREEMPT_RT.
The driver splits the locking function into two parts: local_irq_save() and
uart_port_lock() and this breaks PREEMPT_RT.

Handle sysrq requests sysrq once the port lock is dropped.
Remove the special case in the console write routine an always use the
complete locking function.

Cc: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Paul Walmsley <paul.walmsley@sifive.com>
Cc: linux-riscv@lists.infradead.org
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Link: https://lore.kernel.org/r/20240301215246.891055-13-bigeasy@linutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/sifive.c