2014-06-17 18:48:15

by Laurent Vivier

[permalink] [raw]
Subject: Broken serial port

Hi,

I'm not subscribed to these mailing lists, so CC: me.

I'm playing for some days with a kernel 3.15 on an old mac performa 575
and it seems that the serial port is broken. When I log on using the
console on the serial port it seems there is an screen refresh added
after each character I send.

A little demo :

http://asciinema.org/a/10211 [at 3:20]

I bisect and I found this commit :

commit 717f3bbab3c7628736ef738fdbf3d9a28578c26c
Author: Seth Bollinger <[email protected]>
Date: Tue Mar 25 12:55:37 2014 -0500

serial_core: Fix conditional start_tx on ring buffer not empty

If the serial_core ring buffer empties just as the tty layer receives
an XOFF, then start_tx will never be called when the tty layer
receives an XON as the serial_core ring buffer is empty. This will
possibly leave a few bytes trapped in the fifo for drivers that
disable the transmitter when flow controlled.

Signed-off-by: Seth Bollinger <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>


If I revert it, all works fine :

http://asciinema.org/a/10212

Regards,
Laurent


Attachments:
signature.asc (246.00 B)
OpenPGP digital signature

2014-06-17 19:28:08

by Peter Hurley

[permalink] [raw]
Subject: Re: Broken serial port

On 06/17/2014 02:48 PM, Laurent Vivier wrote:
> Hi,
>
> I'm not subscribed to these mailing lists, so CC: me.
>
> I'm playing for some days with a kernel 3.15 on an old mac performa 575
> and it seems that the serial port is broken. When I log on using the
> console on the serial port it seems there is an screen refresh added
> after each character I send.

What uart driver is this happening on?

This is a known bug being worked on for these uart drivers:
sunsab
sunzilog
ip22zilog
pmac_zilog

Regards,
Peter Hurley

> A little demo :
>
> http://asciinema.org/a/10211 [at 3:20]
>
> I bisect and I found this commit :
>
> commit 717f3bbab3c7628736ef738fdbf3d9a28578c26c
> Author: Seth Bollinger <[email protected]>
> Date: Tue Mar 25 12:55:37 2014 -0500
>
> serial_core: Fix conditional start_tx on ring buffer not empty
>
> If the serial_core ring buffer empties just as the tty layer receives
> an XOFF, then start_tx will never be called when the tty layer
> receives an XON as the serial_core ring buffer is empty. This will
> possibly leave a few bytes trapped in the fifo for drivers that
> disable the transmitter when flow controlled.
>
> Signed-off-by: Seth Bollinger <[email protected]>
> Signed-off-by: Greg Kroah-Hartman <[email protected]>
>
>
> If I revert it, all works fine :
>
> http://asciinema.org/a/10212
>
> Regards,
> Laurent
>

2014-06-17 21:20:16

by Laurent Vivier

[permalink] [raw]
Subject: Re: Broken serial port

Le 17/06/2014 21:28, Peter Hurley a écrit :
> On 06/17/2014 02:48 PM, Laurent Vivier wrote:
>> Hi,
>>
>> I'm not subscribed to these mailing lists, so CC: me.
>>
>> I'm playing for some days with a kernel 3.15 on an old mac performa 575
>> and it seems that the serial port is broken. When I log on using the
>> console on the serial port it seems there is an screen refresh added
>> after each character I send.
>
> What uart driver is this happening on?
>
> This is a known bug being worked on for these uart drivers:
> sunsab
> sunzilog
> ip22zilog
> pmac_zilog

Seems to be pmac_zilog, from dmesg :

pmac_zilog: 0.6 (Benjamin Herrenschmidt <[email protected]>)
scc.0: ttyS0 at MMIO 0x50f0c022 (irq = 4, base_baud = 230400) is a
Z85c30 ESCC -
Serial port
scc.1: ttyS1 at MMIO 0x50f0c020 (irq = 4, base_baud = 230400) is a
Z85c30 ESCC -
Serial port

If needed, I can test the fix.

Thank you.

Regards,
Laurent

> Regards,
> Peter Hurley
>
>> A little demo :
>>
>> http://asciinema.org/a/10211 [at 3:20]
>>
>> I bisect and I found this commit :
>>
>> commit 717f3bbab3c7628736ef738fdbf3d9a28578c26c
>> Author: Seth Bollinger <[email protected]>
>> Date: Tue Mar 25 12:55:37 2014 -0500
>>
>> serial_core: Fix conditional start_tx on ring buffer not empty
>>
>> If the serial_core ring buffer empties just as the tty layer
>> receives
>> an XOFF, then start_tx will never be called when the tty layer
>> receives an XON as the serial_core ring buffer is empty. This will
>> possibly leave a few bytes trapped in the fifo for drivers that
>> disable the transmitter when flow controlled.
>>
>> Signed-off-by: Seth Bollinger <[email protected]>
>> Signed-off-by: Greg Kroah-Hartman <[email protected]>
>>
>>
>> If I revert it, all works fine :
>>
>> http://asciinema.org/a/10212
>>
>> Regards,
>> Laurent
>>
>



Attachments:
signature.asc (246.00 B)
OpenPGP digital signature