RE: [PATCH v3] serial: 8250: Fix TX interrupt handling condition

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: gregkh@xxxxxxxxxxxxxxxxxxx <gregkh@xxxxxxxxxxxxxxxxxxx>
> Sent: Friday, 24 May, 2019 10:57
> To: Rautkoski Kimmo EXT <ext-kimmo.rautkoski@xxxxxxxxxxx>
> Cc: linux-serial@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH v3] serial: 8250: Fix TX interrupt handling condition
> 
> On Fri, May 24, 2019 at 06:47:33AM +0000, Rautkoski Kimmo EXT wrote:
> > Interrupt handler checked THRE bit (transmitter holding register
> > empty) in LSR to detect if TX fifo is empty.
> > In case when there is only receive interrupts the TX handling
> > got called because THRE bit in LSR is set when there is no
> > transmission (FIFO empty). TX handling caused TX stop, which in
> > RS-485 half-duplex mode actually resets receiver FIFO. This is not
> > desired during reception because of possible data loss.
> >
> > The fix is to check if THRI is set in IER in addition of the TX
> > fifo status. THRI in IER is set when TX is started and cleared
> > when TX is stopped.
> > This ensures that TX handling is only called when there is really
> > transmission on going and an interrupt for THRE and not when there
> > are only RX interrupts.
> >
> > Signed-off-by: Kimmo Rautkoski <ext-kimmo.rautkoski@xxxxxxxxxxx>
> > ---
> >  drivers/tty/serial/8250/8250_port.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> >
> 
> What changed from all of the previous versions of this patch?  That
> needs to go below the --- line.
> 
> Please fix up and resend a v4.
> 
> thanks,
> 
> greg k-h

Thanks for the reminder.

I'll post v4 with changelog soon.

BR,
Kimmo




[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux