>>> On 04.10.17 at 13:44, <awais.mas...@vadion.com> wrote: > This patch fixes an ISR lockup seen on Allwinner uart > > On Allwinner H5, serial driver goes into an infinite loop > when interrupts are enabled. The reason is a residual > "busy detect" interrupt. Since the condition UART_IIR_NOINT > will not be true unless this interrupt is cleared, the > interrupt handler will remain locked up in this while loop. > > A HW quirk fix was previously added for designware uart under > commit: > 50417cd978aa54930d065ac1f139f935d14af76d > > It checks for a busy condition during setup and clears the > condition by reading UART_USR register. > > On Allwinner hardware, the "busy detect" condition occurs > later because an LCR write is performed during setup 'after' > this clear and if uart is busy, the "busy detect" condition > will trigger again and cause the ISR lockup. > > To solve this problem, the same UART_USR read operation needs > to be performed within the interrupt handler to clear this > condition. > > Linux dw 8250 driver also handles this condition within > interrupt handler > http://elixir.free-electrons.com/linux/latest/source/drivers/tty/serial/8250/ > 8250_dw.c#L233 > > Tested on Orange Pi PC2 (H5). This issue is seen on H3 > as well and the same fix works. > > Signed-off-by: Awais Masood <awais.mas...@vadion.com>
Acked-by: Jan Beulich <jbeul...@suse.com> _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel