Re: [RFC 0/5] Introduce NMI aware serial drivers
From: Sumit Garg <hidden>
Date: 2020-08-12 05:48:43
Also in:
linux-serial, lkml
On Tue, 11 Aug 2020 at 20:28, Greg Kroah-Hartman [off-list ref] wrote:
On Tue, Aug 11, 2020 at 07:59:24PM +0530, Sumit Garg wrote:quoted
Hi Greg, Thanks for your comments. On Tue, 11 Aug 2020 at 19:27, Greg Kroah-Hartman [off-list ref] wrote:quoted
On Tue, Aug 11, 2020 at 07:20:26PM +0530, Sumit Garg wrote:quoted
On Tue, 21 Jul 2020 at 17:40, Sumit Garg [off-list ref] wrote:quoted
Make it possible for UARTs to trigger magic sysrq from an NMI. With the advent of pseudo NMIs on arm64 it became quite generic to request serial device interrupt as an NMI rather than IRQ. And having NMI driven serial RX will allow us to trigger magic sysrq as an NMI and hence drop into kernel debugger in NMI context. The major use-case is to add NMI debugging capabilities to the kernel in order to debug scenarios such as: - Primary CPU is stuck in deadlock with interrupts disabled and hence doesn't honor serial device interrupt. So having magic sysrq triggered as an NMI is helpful for debugging. - Always enabled NMI based magic sysrq irrespective of whether the serial TTY port is active or not. Currently there is an existing kgdb NMI serial driver which provides partial implementation in upstream to have a separate ttyNMI0 port but that remained in silos with the serial core/drivers which made it a bit odd to enable using serial device interrupt and hence remained unused. It seems to be clearly intended to avoid almost all custom NMI changes to the UART driver. But this patch-set allows the serial core/drivers to be NMI aware which in turn provides NMI debugging capabilities via magic sysrq and hence there is no specific reason to keep this special driver. So remove it instead. Approach: --------- The overall idea is to intercept serial RX characters in NMI context, if those are specific to magic sysrq then allow corresponding handler to run in NMI context. Otherwise, defer all other RX and TX operations onto IRQ work queue in order to run those in normal interrupt context. This approach is demonstrated using amba-pl011 driver. Patch-wise description: ----------------------- Patch #1 prepares magic sysrq handler to be NMI aware. Patch #2 adds NMI framework to serial core. Patch #3 and #4 demonstrates NMI aware uart port using amba-pl011 driver. Patch #5 removes kgdb NMI serial driver. Goal of this RFC: ----------------- My main reason for sharing this as an RFC is to help decide whether or not to continue with this approach. The next step for me would to port the work to a system with an 8250 UART.A gentle reminder to seek feedback on this series.It's the middle of the merge window, and I can't do anything. Also, I almost never review RFC patches as I have have way too many patches that people think are "right" to review first...Okay, I understand and I can definitely wait for your feedback.My feedback here is this:quoted
quoted
I suggest you work to flesh this out first and submit something that you feels works properly.:)quoted
IIUC, in order to make this approach substantial I need to make it work with 8250 UART (major serial driver), correct? As currently it works properly for amba-pl011 driver.Yes, try to do that, or better yet, make it work with all serial drivers automatically.
I would like to make serial drivers work automatically but unfortunately the interrupt request/ handling code is pretty specific to the corresponding serial driver. BTW, I will look for ways how we can make it much easier for serial drivers to adapt. -Sumit
thanks, greg k-h
_______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel