usb start crashing on arndale

Message ID CAG17yqQkdoo+bH5otwRUwwzeOiHt=QJW4c1tCjjbV5wZadZJPg@mail.gmail.com
State New
Headers show

Commit Message

Inderpal Singh March 12, 2014, 4:18 a.m.
Hi,


On 11 March 2014 20:25, armdev <armdev.ftm@gmail.com> wrote:

> Adding Inderpal singh and Trini. Please help
>
> On 11-Mar-2014, at 12:27 pm, armdev <armdev.ftm@gmail.com> wrote:
>
> > Hi,
> >
> > We have recently started working on arndale and running u-boot head on
> it. Seems like it is crashing on our setup with a data abort on usb start.
> Can anyone please confirm and suggest a fix / solution
> >
> > U-Boot 2014.04-rc1-00486-geeb72e6 (Mar 11 2014 - 11:44:32) for ARNDALE
> >
> > CPU:    Exynos5250@1000MHz
> >
> > Board: Arndale
> > I2C:   i2c_init: failed to init bus 0 for speed = 100000
> > ready
> > DRAM:  2 GiB
> > trace: copying 00084f98 bytes of early data from 50000000 to beff0000
> > trace: enabled
> > WARNING: Caches not enabled
> > MMC:   EXYNOS DWMMC: 0, EXYNOS DWMMC: 1
> > i2c_init: failed to init bus 0 for speed = 100000
> > In:    serial
> > Out:   serial
> > Err:   serial
> > Net:   Net Initialization Skipped
> > No ethernet found.
> > Hit any key to stop autoboot:  0
> > ARNDALE # usb start
> > (Re)start USB...
> > USB0:   data abort
> > pc : [<bef8524c>]          lr : [<bef85298>]
> > sp : beb5f9c0  ip : 00000003     fp : 00000000
> > r10: 00000000  r9 : beb62ecc     r8 : befbcc80
> > r7 : befbcc84  r6 : 0000ffff     r5 : 000000ff  r4 : 00000001
> > r3 : 00000000  r2 : 00000001     r1 : 000000ff  r0 : 0000ffff
> > Flags: nzCv  IRQs off  FIQs off  Mode SVC_32
> > Resetting CPU ...
> >
> >
>

I was able to reproduce the issue and git bisect tells me that it started
happening after the commit "8475c86 s5p: gpio: change gpio coding method
for s5p gpio".

Upon debugging further I figured out that it happens because the function
fdtdec_setup_gpio returns success even if there is no gpio defined. Since
no error is returned the exynos ehci driver goes ahead to setup the gpio
and data abort happens. If I return failure from this function it works
well.

defined.
Simon, could you please suggest where do we need to fix it ? the above
function or gpio driver ?

Thanks,
Inder




> > Thanks and Regards
> > Armdev@FTM Team
> >
>
>

Comments

armdev March 12, 2014, 6:29 a.m. | #1
Dear Inderpal,

Thanks for helping us, we were able to test ethernet over usb.
It breaks often but it works with the return -1 patch.
The following error is observed most of the time 
EHCI timed out on TD - token=0x8008d80

-Regards
armdev team

On 12-Mar-2014, at 9:48 am, Inderpal Singh <inderpal.singh@linaro.org> wrote:

> Hi,
> 
> 
> On 11 March 2014 20:25, armdev <armdev.ftm@gmail.com> wrote:
> Adding Inderpal singh and Trini. Please help
> 
> On 11-Mar-2014, at 12:27 pm, armdev <armdev.ftm@gmail.com> wrote:
> 
> > Hi,
> >
> > We have recently started working on arndale and running u-boot head on it. Seems like it is crashing on our setup with a data abort on usb start. Can anyone please confirm and suggest a fix / solution
> >
> > U-Boot 2014.04-rc1-00486-geeb72e6 (Mar 11 2014 - 11:44:32) for ARNDALE
> >
> > CPU:    Exynos5250@1000MHz
> >
> > Board: Arndale
> > I2C:   i2c_init: failed to init bus 0 for speed = 100000
> > ready
> > DRAM:  2 GiB
> > trace: copying 00084f98 bytes of early data from 50000000 to beff0000
> > trace: enabled
> > WARNING: Caches not enabled
> > MMC:   EXYNOS DWMMC: 0, EXYNOS DWMMC: 1
> > i2c_init: failed to init bus 0 for speed = 100000
> > In:    serial
> > Out:   serial
> > Err:   serial
> > Net:   Net Initialization Skipped
> > No ethernet found.
> > Hit any key to stop autoboot:  0
> > ARNDALE # usb start
> > (Re)start USB...
> > USB0:   data abort
> > pc : [<bef8524c>]          lr : [<bef85298>]
> > sp : beb5f9c0  ip : 00000003     fp : 00000000
> > r10: 00000000  r9 : beb62ecc     r8 : befbcc80
> > r7 : befbcc84  r6 : 0000ffff     r5 : 000000ff  r4 : 00000001
> > r3 : 00000000  r2 : 00000001     r1 : 000000ff  r0 : 0000ffff
> > Flags: nzCv  IRQs off  FIQs off  Mode SVC_32
> > Resetting CPU ...
> >
> >
> 
> I was able to reproduce the issue and git bisect tells me that it started happening after the commit "8475c86 s5p: gpio: change gpio coding method for s5p gpio". 
> 
> Upon debugging further I figured out that it happens because the function fdtdec_setup_gpio returns success even if there is no gpio defined. Since no error is returned the exynos ehci driver goes ahead to setup the gpio and data abort happens. If I return failure from this function it works well.
> 
> diff --git a/lib/fdtdec.c b/lib/fdtdec.c
> index 1fecab3..b1c4e92 100644
> --- a/lib/fdtdec.c
> +++ b/lib/fdtdec.c
> @@ -526,7 +526,7 @@ int fdtdec_setup_gpio(struct fdt_gpio_state *gpio)
>          * optional GPIOs)
>          */
>         if (!fdt_gpio_isvalid(gpio))
> -               return 0;
> +               return -1;
>  
> 
> I am not sure of the objective to return success if there is no gpio defined.
> Simon, could you please suggest where do we need to fix it ? the above function or gpio driver ?
> 
> Thanks,
> Inder
> 
> 
>  
> > Thanks and Regards
> > Armdev@FTM Team
> >
> 
>
armdev April 5, 2014, 12:50 p.m. | #2
Dear batao / Inderpal,

ping works only a few times after a number of usb reset / start attempts.
We are using linux 3.13 (exynos_defconfig) and rootfs linaro saucy server.

Upon linux boot there is only lo in ifconfig.
lsusb results in -99 error, similar to the on reported by batao in 

https://bugs.launchpad.net/linaro-stable-kernel/+bug/1301727

Can you suggest anything which we can try / test at our end to solve the ethernet issue with uboot/linux 

Best Regards,

On 12-Mar-2014, at 11:59 am, armdev <armdev.ftm@gmail.com> wrote:

> Dear Inderpal,
> 
> Thanks for helping us, we were able to test ethernet over usb.
> It breaks often but it works with the return -1 patch.
> The following error is observed most of the time 
> EHCI timed out on TD - token=0x8008d80
> 
> -Regards
> armdev team
> 
> On 12-Mar-2014, at 9:48 am, Inderpal Singh <inderpal.singh@linaro.org> wrote:
> 
>> Hi,
>> 
>> 
>> On 11 March 2014 20:25, armdev <armdev.ftm@gmail.com> wrote:
>> Adding Inderpal singh and Trini. Please help
>> 
>> On 11-Mar-2014, at 12:27 pm, armdev <armdev.ftm@gmail.com> wrote:
>> 
>> > Hi,
>> >
>> > We have recently started working on arndale and running u-boot head on it. Seems like it is crashing on our setup with a data abort on usb start. Can anyone please confirm and suggest a fix / solution
>> >
>> > U-Boot 2014.04-rc1-00486-geeb72e6 (Mar 11 2014 - 11:44:32) for ARNDALE
>> >
>> > CPU:    Exynos5250@1000MHz
>> >
>> > Board: Arndale
>> > I2C:   i2c_init: failed to init bus 0 for speed = 100000
>> > ready
>> > DRAM:  2 GiB
>> > trace: copying 00084f98 bytes of early data from 50000000 to beff0000
>> > trace: enabled
>> > WARNING: Caches not enabled
>> > MMC:   EXYNOS DWMMC: 0, EXYNOS DWMMC: 1
>> > i2c_init: failed to init bus 0 for speed = 100000
>> > In:    serial
>> > Out:   serial
>> > Err:   serial
>> > Net:   Net Initialization Skipped
>> > No ethernet found.
>> > Hit any key to stop autoboot:  0
>> > ARNDALE # usb start
>> > (Re)start USB...
>> > USB0:   data abort
>> > pc : [<bef8524c>]          lr : [<bef85298>]
>> > sp : beb5f9c0  ip : 00000003     fp : 00000000
>> > r10: 00000000  r9 : beb62ecc     r8 : befbcc80
>> > r7 : befbcc84  r6 : 0000ffff     r5 : 000000ff  r4 : 00000001
>> > r3 : 00000000  r2 : 00000001     r1 : 000000ff  r0 : 0000ffff
>> > Flags: nzCv  IRQs off  FIQs off  Mode SVC_32
>> > Resetting CPU ...
>> >
>> >
>> 
>> I was able to reproduce the issue and git bisect tells me that it started happening after the commit "8475c86 s5p: gpio: change gpio coding method for s5p gpio". 
>> 
>> Upon debugging further I figured out that it happens because the function fdtdec_setup_gpio returns success even if there is no gpio defined. Since no error is returned the exynos ehci driver goes ahead to setup the gpio and data abort happens. If I return failure from this function it works well.
>> 
>> diff --git a/lib/fdtdec.c b/lib/fdtdec.c
>> index 1fecab3..b1c4e92 100644
>> --- a/lib/fdtdec.c
>> +++ b/lib/fdtdec.c
>> @@ -526,7 +526,7 @@ int fdtdec_setup_gpio(struct fdt_gpio_state *gpio)
>>          * optional GPIOs)
>>          */
>>         if (!fdt_gpio_isvalid(gpio))
>> -               return 0;
>> +               return -1;
>>  
>> 
>> I am not sure of the objective to return success if there is no gpio defined.
>> Simon, could you please suggest where do we need to fix it ? the above function or gpio driver ?
>> 
>> Thanks,
>> Inder
>> 
>> 
>>  
>> > Thanks and Regards
>> > Armdev@FTM Team
>> >
>> 
>> 
>
Simon Glass Oct. 19, 2015, 3:10 a.m. | #3
Hi,

On 5 April 2014 at 06:50, armdev <armdev.ftm@gmail.com> wrote:
> Dear batao / Inderpal,
>
> ping works only a few times after a number of usb reset / start attempts.
> We are using linux 3.13 (exynos_defconfig) and rootfs linaro saucy server.
>
> Upon linux boot there is only lo in ifconfig.
> lsusb results in -99 error, similar to the on reported by batao in
>
> https://bugs.launchpad.net/linaro-stable-kernel/+bug/1301727
>
> Can you suggest anything which we can try / test at our end to solve the
> ethernet issue with uboot/linux

Somehow I found this thread. It is OK for the GPIO to be missing - the
code should check it if is valid before using it.

Since this was 18 months ago I hope you were able to fix it :-)

>
> Best Regards,
>
> On 12-Mar-2014, at 11:59 am, armdev <armdev.ftm@gmail.com> wrote:
>
> Dear Inderpal,
>
> Thanks for helping us, we were able to test ethernet over usb.
> It breaks often but it works with the return -1 patch.
> The following error is observed most of the time
> EHCI timed out on TD - token=0x8008d80
>
> -Regards
> armdev team
>
> On 12-Mar-2014, at 9:48 am, Inderpal Singh <inderpal.singh@linaro.org>
> wrote:
>
> Hi,
>
>
> On 11 March 2014 20:25, armdev <armdev.ftm@gmail.com> wrote:
>>
>> Adding Inderpal singh and Trini. Please help
>>
>> On 11-Mar-2014, at 12:27 pm, armdev <armdev.ftm@gmail.com> wrote:
>>
>> > Hi,
>> >
>> > We have recently started working on arndale and running u-boot head on
>> > it. Seems like it is crashing on our setup with a data abort on usb start.
>> > Can anyone please confirm and suggest a fix / solution
>> >
>> > U-Boot 2014.04-rc1-00486-geeb72e6 (Mar 11 2014 - 11:44:32) for ARNDALE
>> >
>> > CPU:    Exynos5250@1000MHz
>> >
>> > Board: Arndale
>> > I2C:   i2c_init: failed to init bus 0 for speed = 100000
>> > ready
>> > DRAM:  2 GiB
>> > trace: copying 00084f98 bytes of early data from 50000000 to beff0000
>> > trace: enabled
>> > WARNING: Caches not enabled
>> > MMC:   EXYNOS DWMMC: 0, EXYNOS DWMMC: 1
>> > i2c_init: failed to init bus 0 for speed = 100000
>> > In:    serial
>> > Out:   serial
>> > Err:   serial
>> > Net:   Net Initialization Skipped
>> > No ethernet found.
>> > Hit any key to stop autoboot:  0
>> > ARNDALE # usb start
>> > (Re)start USB...
>> > USB0:   data abort
>> > pc : [<bef8524c>]          lr : [<bef85298>]
>> > sp : beb5f9c0  ip : 00000003     fp : 00000000
>> > r10: 00000000  r9 : beb62ecc     r8 : befbcc80
>> > r7 : befbcc84  r6 : 0000ffff     r5 : 000000ff  r4 : 00000001
>> > r3 : 00000000  r2 : 00000001     r1 : 000000ff  r0 : 0000ffff
>> > Flags: nzCv  IRQs off  FIQs off  Mode SVC_32
>> > Resetting CPU ...
>> >
>> >
>
>
> I was able to reproduce the issue and git bisect tells me that it started
> happening after the commit "8475c86 s5p: gpio: change gpio coding method for
> s5p gpio".
>
> Upon debugging further I figured out that it happens because the function
> fdtdec_setup_gpio returns success even if there is no gpio defined. Since no
> error is returned the exynos ehci driver goes ahead to setup the gpio and
> data abort happens. If I return failure from this function it works well.
>
> diff --git a/lib/fdtdec.c b/lib/fdtdec.c
> index 1fecab3..b1c4e92 100644
> --- a/lib/fdtdec.c
> +++ b/lib/fdtdec.c
> @@ -526,7 +526,7 @@ int fdtdec_setup_gpio(struct fdt_gpio_state *gpio)
>          * optional GPIOs)
>          */
>         if (!fdt_gpio_isvalid(gpio))
> -               return 0;
> +               return -1;
>
>
> I am not sure of the objective to return success if there is no gpio
> defined.
> Simon, could you please suggest where do we need to fix it ? the above
> function or gpio driver ?
>
> Thanks,
> Inder
>
>
>
>>
>> > Thanks and Regards
>> > Armdev@FTM Team
>> >
>>
>
>
>

Regards,
Simon

Patch

diff --git a/lib/fdtdec.c b/lib/fdtdec.c
index 1fecab3..b1c4e92 100644
--- a/lib/fdtdec.c
+++ b/lib/fdtdec.c
@@ -526,7 +526,7 @@  int fdtdec_setup_gpio(struct fdt_gpio_state *gpio)
         * optional GPIOs)
         */
        if (!fdt_gpio_isvalid(gpio))
-               return 0;
+               return -1;


I am not sure of the objective to return success if there is no gpio