Li Yi wrote:
>
> Sorry, Ben,
>
> The LR register store the instruction which will be executed later, so
> it's memcpy cause the Oops. But you already check the hp->units_left,
> so it should not be ATL buffer overflow.
Have you changed something in the hc_add_trans function
(e.g the len calculation) ?
Also if len = 0 then data could point to a wrong location.
So we should check for len != 0:
if (len)
memcpy (ptd + 8, data, len);
> If I do not plug any devices into the hub, what I captured from usb
> bus is all NAK for the Interrupt PIPE IN request, it's not good. :(
There should be just one PIPE IN request every 255 ms.
If you see one every frame than it is a bug in the driver.
If you see more than one Interrupt PIPE IN request
of the same endpoint within a 1ms frame then it is a
'feature' of the isp1161. I do not know if we are
allowed to put the interrupt PTD on the ISOC list.
That might help if it works. But the data-sheet
says put interrupt PTDs on the ATL list.
> and then I unplugged the hub from the roothub, Oops again.
> Have you tried to attach a hub or it's only my problem?
The unplug oops is most likely caused by the del_list bug
that Ben have already found.
regards
Roman
> Thanks,
>
> LiYi
> Li Yi wrote:
>
> > Hi, Ben,
> >
> > The Oops(LR= C00C4F38)is due to lwz r9,40(r31)
> > the last two line in the hc_add_trans function:
> > memcpy (ptd + 8, data, len);
> > hp->tlp += ((len + 8 +3) & ~03);
> > bl 2C290 is the address of memcpy function and lwz r9,40(r31) is
> > mapping to get hp->tlp value. I do not understand why here got the
> > Oops as the hp->tlp has been fretched one time before set up those
> > ptd array without error.
> >
> > disasm PPC code:
> > 000C4F1C: 386C0008 addi r3,r12,0x0008
> > 000C4F20: 7F84E378 or r4,r28,r28
> > 000C4F24: 9B6C0000 stb r27,0(r12) (EA: 00000000)
> > 000C4F28: 9BAC0002 stb r29,2(r12) (EA: 00000002)
> > 000C4F2C: 9BCC0004 stb r30,4(r12) (EA: 00000004)
> > 000C4F30: 7FC5F378 or r5,r30,r30
> > 000C4F34: 4BF6735D bl 0x0002C290
> > 000C4F38: 813F0028 lwz r9,40(r31) (EA: 00000028)
> > 000C4F3C: 381E000B addi r0,r30,0x000B
> >
> > Li Yi
> >
> > Benjamin Herrenschmidt wrote:
> >
> >> >
> >> >I have problems with hub function of isp1161 V0.8, it Oops
> >> whenever I plug
> >> >in any USB devices like keyboard or mouse through a Belkin F5U100
> >> Hub. But
> >> >if I plug the keyboard into the roothub OR if nothing on the hub,
> >>
> >> >everything is fine. Can you repeat it?
> >>
> >> Could you get some backtrace symbols for the oops ?
> >>
> >> One oops I found and fixed locally was to not handle the delete
> >> list
> >> if hc->trans is non-NULL (in the interrupt handler). There were
> >> some
> >> rare occasions where the delete list could be run because of a
> >> different
> >> interrupt (SOF for example) while there was still a pending
> >> hc->trans,
> >> possibly making the URB pointers in the trans array invalid.
> >>
> >> Ben.
> >>
> >> _______________________________________________
> >> [EMAIL PROTECTED]
> >> To unsubscribe, use the last form field at:
> >> https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
> >
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel