Fix cpm uart corruption with PREEMPT_RT
PATCH 1/1 Fix cpm uart corruption with PREEMPT_RT
Fix CPM serial port corruption when running with CONFIG_PREEMPT_RT. Userland usage of console, and kernel printf's were stepping on each others toes. Also only take lock if not in an oops.
Signed-off-by Rune Torgersen <[email protected]>
drivers/serial/cpm_uart/cpm_uart_core.c +14 -0
@@ -1214,6 +1214,14 @@ static void cpm_uart_console_write(struct console *co, const char *s,unsigned int i;cbd_t __iomem *bdp, *bdbase;unsigned char *cp; +unsigned long flags; +int nolock = oops_in_progress; + +if (unlikely (nolock)) { +local_irq_save (flags); + }else { +spin_lock_irqsave (&pinfo->port.lock, flags); + }/* Get the address of the host memory buffer. */
@@ -1282,6 +1290,12 @@ static void cpm_uart_console_write(struct console *co, const char *s, ; pinfo->tx_cur = bdp; + +if (unlikely (nolock)) { +local_irq_restore (flags); + }else { +spin_unlock_irqrestore (&pinfo->port.lock, flags); + } }
Quoted 5 lines · Rune Torgersen
Fix CPM serial port corruption when running with
CONFIG_PREEMPT_RT. Userland usage of console, and kernel printf's were stepping on each others toes. Also only take lock if not in an oops.Signed-off-by Rune Torgersen <[email protected]>
Acked-by Scott Wood <[email protected]>
-Scott
Kumar Gala
AppliedQuoted 5 lines · Rune Torgersen
Fix CPM serial port corruption when running with
CONFIG_PREEMPT_RT. Userland usage of console, and kernel printf's were stepping on each others toes. Also only take lock if not in an oops.Signed-off-by Rune Torgersen <[email protected]>
applied.
- k