2016-04-19 23:23:46

by Frank Rowand

[permalink] [raw]
Subject: regression: 3a878c430fd6 ("tty: serial: msm: Add TX DMA support") drops data

Hi Ivan,

It appears that I have found a regression caused by
3a878c430fd6 ("tty: serial: msm: Add TX DMA support").

When I cat a file slightly larger than 126000 bytes on
the console, viewed via minicom connected to the serial
port, I am losing random chunks of data, almost always
three bytes in length. I have also seen a lost chunk
of two bytes.

I am using the 8074 dragonboard, with the dts of
arch/arm/boot/dts/qcom-apq8074-dragonboard.dts.
The dts node is serial@f991e000, which has a
compatible of "qcom,msm-uartdm-v1.4", so is_uartdm
should be UARTDM_1P4.

Do you have any thoughts on what might be going
wrong, or what I can do to debug this?

Thanks,

Frank


2016-04-20 06:07:28

by Ivan T. Ivanov

[permalink] [raw]
Subject: Re: regression: 3a878c430fd6 ("tty: serial: msm: Add TX DMA support") drops data


> On Apr 20, 2016, at 02:23, Frank Rowand <[email protected]> wrote:
>
> Hi Ivan,
>
> It appears that I have found a regression caused by
> 3a878c430fd6 ("tty: serial: msm: Add TX DMA support").
>
> When I cat a file slightly larger than 126000 bytes on
> the console, viewed via minicom connected to the serial
> port, I am losing random chunks of data, almost always
> three bytes in length. I have also seen a lost chunk
> of two bytes.
>
> I am using the 8074 dragonboard, with the dts of
> arch/arm/boot/dts/qcom-apq8074-dragonboard.dts.
> The dts node is serial@f991e000, which has a
> compatible of "qcom,msm-uartdm-v1.4", so is_uartdm
> should be UARTDM_1P4.

I don’t remember what was biggest chunk, which DMA
could carry, sorry. Are you using DMA or just PIO?
Is this happening only with cat and terminal or even
when you send data in other means. I believe that
people from Linaro could help you better.

Regards,
Ivan

2016-04-20 16:48:20

by Frank Rowand

[permalink] [raw]
Subject: Re: regression: 3a878c430fd6 ("tty: serial: msm: Add TX DMA support") drops data

On 4/19/2016 11:07 PM, Ivan Ivanov wrote:
>
>> On Apr 20, 2016, at 02:23, Frank Rowand <[email protected]> wrote:
>>
>> Hi Ivan,
>>
>> It appears that I have found a regression caused by
>> 3a878c430fd6 ("tty: serial: msm: Add TX DMA support").
>>
>> When I cat a file slightly larger than 126000 bytes on
>> the console, viewed via minicom connected to the serial
>> port, I am losing random chunks of data, almost always
>> three bytes in length. I have also seen a lost chunk
>> of two bytes.
>>
>> I am using the 8074 dragonboard, with the dts of
>> arch/arm/boot/dts/qcom-apq8074-dragonboard.dts.
>> The dts node is serial@f991e000, which has a
>> compatible of "qcom,msm-uartdm-v1.4", so is_uartdm
>> should be UARTDM_1P4.
>
> I don’t remember what was biggest chunk, which DMA
> could carry, sorry. Are you using DMA or just PIO?
> Is this happening only with cat and terminal or even
> when you send data in other means. I believe that
> people from Linaro could help you better.

I assumed you would be the person who would have the
information and would be able to help maintain the
code in question since you submitted this not small
patch. Do you have a pointer to the hardware
documentation of the DMA and uart? Who at Linaro
are you suggesting?

Thanks for the questions, I'll look into them today.

One more observation that may provide an insight:
if I cat a file multiple times, the location of
the dropped chunks varies.

In further testing I also found examples of single
bytes lost.

Thanks,

Frank

2016-04-21 01:00:44

by Frank Rowand

[permalink] [raw]
Subject: Re: regression: 3a878c430fd6 ("tty: serial: msm: Add TX DMA support") drops data

On 4/20/2016 9:48 AM, Frank Rowand wrote:
> On 4/19/2016 11:07 PM, Ivan Ivanov wrote:
>>
>>> On Apr 20, 2016, at 02:23, Frank Rowand <[email protected]> wrote:
>>>
>>> Hi Ivan,
>>>
>>> It appears that I have found a regression caused by
>>> 3a878c430fd6 ("tty: serial: msm: Add TX DMA support").
>>>
>>> When I cat a file slightly larger than 126000 bytes on
>>> the console, viewed via minicom connected to the serial
>>> port, I am losing random chunks of data, almost always
>>> three bytes in length. I have also seen a lost chunk
>>> of two bytes.
>>>
>>> I am using the 8074 dragonboard, with the dts of
>>> arch/arm/boot/dts/qcom-apq8074-dragonboard.dts.
>>> The dts node is serial@f991e000, which has a
>>> compatible of "qcom,msm-uartdm-v1.4", so is_uartdm
>>> should be UARTDM_1P4.
>>
>> I don’t remember what was biggest chunk, which DMA
>> could carry, sorry. Are you using DMA or just PIO?
>> Is this happening only with cat and terminal or even
>> when you send data in other means. I believe that
>> people from Linaro could help you better.
>
> I assumed you would be the person who would have the
> information and would be able to help maintain the
> code in question since you submitted this not small
> patch. Do you have a pointer to the hardware
> documentation of the DMA and uart? Who at Linaro
> are you suggesting?
>
> Thanks for the questions, I'll look into them today.

I switched from cat to several variations of dd and on
the host side I tried using programs other than minicom.

My symptoms have now changed to something else that I
have seen in the past, but I am now suspicious of my
environment. I'll reset and do some more tests.

I'm not sure if the driver was in DMA or PIO mode, both
before the change and after. This seems like a rather
important question to answer, so I'll try to verify
that tonight.

>
> One more observation that may provide an insight:
> if I cat a file multiple times, the location of
> the dropped chunks varies.
>
> In further testing I also found examples of single
> bytes lost.
>
> Thanks,
>
> Frank
>
>

2016-04-21 20:42:36

by Andy Shevchenko

[permalink] [raw]
Subject: Re: regression: 3a878c430fd6 ("tty: serial: msm: Add TX DMA support") drops data

On Thu, Apr 21, 2016 at 4:00 AM, Frank Rowand <[email protected]> wrote:
> On 4/20/2016 9:48 AM, Frank Rowand wrote:
>> On 4/19/2016 11:07 PM, Ivan Ivanov wrote:
>>>
>>>> On Apr 20, 2016, at 02:23, Frank Rowand <[email protected]> wrote:
>>>>
>>>> Hi Ivan,
>>>>
>>>> It appears that I have found a regression caused by
>>>> 3a878c430fd6 ("tty: serial: msm: Add TX DMA support").
>>>>
>>>> When I cat a file slightly larger than 126000 bytes on
>>>> the console, viewed via minicom connected to the serial
>>>> port, I am losing random chunks of data, almost always
>>>> three bytes in length. I have also seen a lost chunk
>>>> of two bytes.
>>>>
>>>> I am using the 8074 dragonboard, with the dts of
>>>> arch/arm/boot/dts/qcom-apq8074-dragonboard.dts.
>>>> The dts node is serial@f991e000, which has a
>>>> compatible of "qcom,msm-uartdm-v1.4", so is_uartdm
>>>> should be UARTDM_1P4.
>>>
>>> I don’t remember what was biggest chunk, which DMA
>>> could carry, sorry. Are you using DMA or just PIO?
>>> Is this happening only with cat and terminal or even
>>> when you send data in other means. I believe that
>>> people from Linaro could help you better.
>>
>> I assumed you would be the person who would have the
>> information and would be able to help maintain the
>> code in question since you submitted this not small
>> patch. Do you have a pointer to the hardware
>> documentation of the DMA and uart? Who at Linaro
>> are you suggesting?
>>
>> Thanks for the questions, I'll look into them today.
>
> I switched from cat to several variations of dd and on
> the host side I tried using programs other than minicom.
>
> My symptoms have now changed to something else that I
> have seen in the past, but I am now suspicious of my
> environment. I'll reset and do some more tests.
>
> I'm not sure if the driver was in DMA or PIO mode, both
> before the change and after. This seems like a rather
> important question to answer, so I'll try to verify
> that tonight.
>
>>
>> One more observation that may provide an insight:
>> if I cat a file multiple times, the location of
>> the dropped chunks varies.
>>
>> In further testing I also found examples of single
>> bytes lost.

[Shrink and reshuffle Cc list a bit to leave UART related people mostly.]

There are currently issues with DMA and UART on some platforms.
Besides that Peter noticed the problem with latency how DMA tasklets
are handled.

I could add that for testing (and better user experience) we are
starving for fix to disable / enable DMA support runtime. Heikki or me
might help with that when we have a bit more time.

--
With Best Regards,
Andy Shevchenko

2016-04-23 17:24:06

by Frank Rowand

[permalink] [raw]
Subject: Re: regression: 3a878c430fd6 ("tty: serial: msm: Add TX DMA support") drops data

On 4/21/2016 1:42 PM, Andy Shevchenko wrote:
> On Thu, Apr 21, 2016 at 4:00 AM, Frank Rowand <[email protected]> wrote:
>> On 4/20/2016 9:48 AM, Frank Rowand wrote:

< snip >

>> I'm not sure if the driver was in DMA or PIO mode, both
>> before the change and after. This seems like a rather
>> important question to answer, so I'll try to verify
>> that tonight.

I was in PIO mode.

I found the problem and submitted a fix.

[PATCH 0/2] tty: serial: msm_serial regression and add info message
[PATCH 1/2] tty: serial: msm_serial regression fix data corruption
[PATCH 2/2] tty: serial: msm_serial add info message


< snip >

-Frank