From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
To: linux-serial@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Jiri Slaby <jirislaby@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>
Subject: [PATCH 00/18] serial: Use uart_prepare_sysrq_char().
Date: Fri, 1 Mar 2024 22:45:13 +0100 [thread overview]
Message-ID: <20240301215246.891055-1-bigeasy@linutronix.de> (raw)
A few driver do in their console_write() callback something like
| local_irq_save(flags);
| if (sysrq)
| locked = 0;
| else if (oops_in_progress)
| locked = uart_port_trylock(port);
| else
| uart_port_lock(port);
which breaks on PREEMPT_RT because the uart_port lock becomes a sleeping
lock and it can not be acquired with disabled interrupts. The PREEMPT_RT
queue has workarounds for a few of them. I tackled ever UART driver with
that pattern. The changes are mostly the same:
- Replace direct sysrq handling with delayed by using
uart_prepare_sysrq_char(). This removes the first 'if (sysrq)' check.
- Remove local_irq_save() und use the _irqsave suffix for both of the
locking functions.
The drivers can be categorized as
- Did not handle sysrq at all but does now
- lpc32xx_hs
- owl
- rda
- sifive
- Dropped the uart_port while invoking the sysrq callback but
console_write did not acquire uart_port-lock as it should.
- amba-pl011
- msm
- rda
Don't think this is a serious problem.
- The IRQ service routine is always invoked with disabled interrupts and
the _irqsave() suffix was dropped while switching to
uart_prepare_sysrq_char().
- msm
- owl
- Nothing special, just converted
- ar933x
- bcm63xx
- meson
- omap
- pxa
- sunplus
- Required love & cuddling to get on track
- pch
The series has been compiles tested on x86-64, arm, arm64.
Sebastian
next reply other threads:[~2024-03-01 21:52 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-01 21:45 Sebastian Andrzej Siewior [this message]
2024-03-01 21:45 ` [PATCH 01/18] serial: amba-pl011: Use uart_prepare_sysrq_char() Sebastian Andrzej Siewior
2024-03-01 21:45 ` [PATCH 02/18] serial: ar933x: " Sebastian Andrzej Siewior
2024-03-01 21:45 ` [PATCH 03/18] serial: bcm63xx: " Sebastian Andrzej Siewior
2024-03-01 21:45 ` [PATCH 04/18] serial: meson: " Sebastian Andrzej Siewior
2024-03-01 21:45 ` Sebastian Andrzej Siewior
2024-03-01 21:45 ` Sebastian Andrzej Siewior
2024-03-01 21:45 ` [PATCH 05/18] serial: msm: " Sebastian Andrzej Siewior
2024-03-01 21:45 ` [PATCH 06/18] serial: omap: " Sebastian Andrzej Siewior
2024-03-01 21:45 ` [PATCH 07/18] serial: pxa: " Sebastian Andrzej Siewior
2024-03-01 21:45 ` [PATCH 08/18] serial: sunplus: " Sebastian Andrzej Siewior
2024-03-01 21:45 ` [PATCH 09/18] serial: lpc32xx_hs: Use uart_prepare_sysrq_char() to handle sysrq Sebastian Andrzej Siewior
2024-03-01 21:45 ` Sebastian Andrzej Siewior
2024-03-01 21:45 ` [PATCH 10/18] serial: owl: " Sebastian Andrzej Siewior
2024-03-01 21:45 ` Sebastian Andrzej Siewior
2024-03-01 21:45 ` [PATCH 11/18] serial: rda: " Sebastian Andrzej Siewior
2024-03-01 21:45 ` Sebastian Andrzej Siewior
2024-03-01 21:45 ` [PATCH 12/18] serial: sifive: " Sebastian Andrzej Siewior
2024-03-01 21:45 ` Sebastian Andrzej Siewior
2024-03-07 1:39 ` Samuel Holland
2024-03-07 1:39 ` Samuel Holland
2024-03-01 21:45 ` [PATCH 13/18] serial: pch: Invoke handle_rx_to() directly Sebastian Andrzej Siewior
2024-03-01 21:45 ` [PATCH 14/18] serial: pch: Make push_rx() return void Sebastian Andrzej Siewior
2024-03-01 21:45 ` [PATCH 15/18] serial: pch: Don't disable interrupts while acquiring lock in ISR Sebastian Andrzej Siewior
2024-03-01 21:45 ` [PATCH 16/18] serial: pch: Don't initialize uart_port's spin_lock Sebastian Andrzej Siewior
2024-03-01 21:45 ` [PATCH 17/18] serial: pch: Remove eg20t_port::lock Sebastian Andrzej Siewior
2024-03-01 21:45 ` [PATCH 18/18] serial: pch: Use uart_prepare_sysrq_char() Sebastian Andrzej Siewior
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240301215246.891055-1-bigeasy@linutronix.de \
--to=bigeasy@linutronix.de \
--cc=gregkh@linuxfoundation.org \
--cc=jirislaby@kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.