On Fri, 2016-04-01 at 17:06 +0800, Kefeng Wang wrote: > Commit cdcea058e510("serial: 8250_dw: Avoid serial_outx code > duplicate > with new dw8250_check_lcr()") introduce a wrong logic when write val > to > LCR reg. When CONFIG_64BIT enabled, __raw_writeq is used > unconditionally. > > But for !PORT_OCTEON, we better to use coincident write func. > > Signed-off-by: Kefeng Wang <wangkefeng.wang@xxxxxxxxxx> > --- > > We met following calltrace twice, if the change is not necessary, > correct me, > and any advice will be appreciated, thanks. So, does this fix you issue? If it does than perhaps you need to Cc stable@ and put Fixes tag as well. > --- a/drivers/tty/serial/8250/8250_dw.c > +++ b/drivers/tty/serial/8250/8250_dw.c > @@ -104,15 +104,16 @@ static void dw8250_check_lcr(struct uart_port > *p, int value) > dw8250_force_idle(p); > > #ifdef CONFIG_64BIT > - __raw_writeq(value & 0xff, offset); > -#else > + if (p->type == PORT_OCTEON) > + __raw_writeq(value & 0xff, offset); > + else > +#endif You may also get rid of this one, like if (IS_ENABLED(CONFIG_64BIT) && p->type == PORT_OCTEON) ... else if ... > if (p->iotype == UPIO_MEM32) > writel(value, offset); > else if (p->iotype == UPIO_MEM32BE) > iowrite32be(value, offset); > else > writeb(value, offset); > -#endif > } > /* > * FIXME: this deadlocks if port->lock is already held -- Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Intel Finland Oy -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html