> > + if (mctrl & TIOCM_LOOP) > > + ucon |= S3C2410_UCON_LOOPBACK; > > + else > > + ucon &= ~S3C2410_UCON_LOOPBACK; > > + > > + wr_regl(port, S3C2410_UCON, ucon); > > S3C2410_UCON must be modified at least under the local_irq_save() or port > lock, otherwise it breaks kernel console operation on older Exynos SoCs > (especially when DMA mode is used). > > The above read-modify-write sequence should be replaced with the following > pattern: > > if (mctrl & TIOCM_LOOP) > s3c24xx_set_bit(port, S3C2410_UCON_LOOPBACK, S3C2410_UCON); > else > s3c24xx_clear_bit(port, S3C2410_UCON_LOOPBACK, S3C2410_UCON); All the set_mctrl() call can be protected by spin_[un]lock_irq[save/restore] with port->lock. So, I think it is not required. Best Regards, Chanho Park