This looks like it is the same problem we saw in the dwc_otg driver
with incorrect scheduling of split USB transactions to downstream
ports behind single TT hubs (this just makes the problem worse rather
than be the cause of anything)

In general it should be possible to schedule multiple split
transactions to a TT but they _must_ be completed on time or the hub
will drop the transactions on the floor...  Unfortunately because of
the interrupt latency issues it cannot be guaranteed without the FIQ

Gordon


On 27 November 2013 02:34, Stephen Warren <swar...@wwwdotorg.org> wrote:
> (trimming out the devicetree list and maintainers for this discussion)
>
> On 11/26/2013 12:52 PM, Paul Zimmerman wrote:
>>> From: Stephen Warren [mailto:swar...@wwwdotorg.org]
>>> Sent: Tuesday, November 26, 2013 11:43 AM
>>>
>>> On 11/26/2013 12:27 PM, Paul Zimmerman wrote:
>>>>> From: Stephen Warren [mailto:swar...@wwwdotorg.org]
>>>>> Sent: Monday, November 25, 2013 9:03 PM
>>>>>
>>>>> The DWC2 USB controller in the BCM2835 (Raspberry Pi) needs some non-
>>>>> default parameters. Select these based on the compatible value from the
>>>>> DT node. For all other HW, fall back to the default parameters currently
>>>>> in use.
>>>>>
>>>>> The values in params_bcm2835[] were posted to the mailing list by Paul
>>>>> quite some time ago. I made a couple of minor modifications since then;
>>>>> to set ahbcfg instead of ahb_single, and to set uframe_sched.
>>>>
>>>> Hi Stephen,
>>>>
>>>> I don't see any code in this patch that is setting uframe_sched?
>>>
>>> Hmm, that's true. What value should it be set to for the BCM2835, do you
>>> know? I obviously have it set to 0, which seems to work out OK...
>>
>> It definitely should be enabled for the Pi, so set it to 1.
>
> Hmm. I should have tested that patch better before I sent it...
>
> With .uframe_sched=1, my model B's built-in Ethernet chip works fine.
> I've passed many MB of data through it without issue, including pings, a
> kernel source download, and package updates.
>
> However, I just enabled .uframe_sched=1 on my model A, which has a USB
> hub and USB wireless dongle attached. Now USB enumeration doesn't work,
> and booting the kernel is extremely slow, with lots of USB-related
> messages. I've run that board for a few days straight without issue,
> with .uframe_sched=0 and periodic network use.
>
> Does this imply that .uframe_sched=1 isn't correct for the Pi, or that
> the code that flag enables has issues?
>
> FWIW, the problematic kernel log is below. Unfortunately, I can't debug
> this much since that Pi is deployed "in production" in my daughter's
> room, and she's (hopefully...) asleep. I'll also be away starting
> tomorrow morning until Mon evening.
>
>> [    1.907615] dwc2 20980000.usb: DWC OTG Controller
>> [    1.915043] dwc2 20980000.usb: new USB bus registered, assigned bus 
>> number 1
>> [    1.924766] dwc2 20980000.usb: irq 33, io mem 0x00000000
>> [    1.932906] usb usb1: default language 0x0409
>> [    1.939969] usb usb1: udev 1, busnum 1, minor = 0
>> [    1.947325] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
>> [    1.956906] usb usb1: New USB device strings: Mfr=3, Product=2, 
>> SerialNumber=1
>> [    1.966981] usb usb1: Product: DWC OTG Controller
>> [    1.974570] usb usb1: Manufacturer: Linux 3.13.0-rc1-next-20131125+ 
>> dwc2_hsotg
>> [    1.984841] usb usb1: SerialNumber: 20980000.usb
>> [    1.993202] usb usb1: usb_probe_device
>> [    2.000066] usb usb1: configuration #1 chosen from 1 choice
>> [    2.008968] usb usb1: adding 1-0:1.0 (config #1, interface 0)
>> [    2.018227] hub 1-0:1.0: usb_probe_interface
>> [    2.025763] hub 1-0:1.0: usb_probe_interface - got id
>> [    2.033990] hub 1-0:1.0: USB hub found
>> [    2.040891] hub 1-0:1.0: 1 port detected
>> [    2.047796] hub 1-0:1.0: standalone hub
>> [    2.054580] hub 1-0:1.0: ganged power switching
>> [    2.061983] hub 1-0:1.0: individual port over-current protection
>> [    2.070833] hub 1-0:1.0: Single TT
>> [    2.076944] hub 1-0:1.0: TT requires at most 8 FS bit times (666 ns)
>> [    2.086102] hub 1-0:1.0: power on to power good time: 2ms
>> [    2.094549] hub 1-0:1.0: local power source is good
>> [    2.102344] hub 1-0:1.0: enabling power on all ports
>> [    2.112008] tsl2563 1-0039: model 5, rev. 0
>> [    2.121210] oprofile: no performance counters
>> [    2.128318] oprofile: using timer interrupt.
>> [    2.135673] TCP: cubic registered
>> [    2.142836] NET: Registered protocol family 10
>> [    2.151272] sit: IPv6 over IPv4 tunneling driver
>> [    2.159514] NET: Registered protocol family 17
>> [    2.180761] kjournald starting.  Commit interval 5 seconds
>> [    2.198444] EXT3-fs (mmcblk0p2): using internal journal
>> [    2.206507] hub 1-0:1.0: port 1: status 0101 change 0001
>> [    2.214470] EXT3-fs (mmcblk0p2): mounted filesystem with ordered data mode
>> [    2.224234] VFS: Mounted root (ext3 filesystem) on device 179:2.
>> [    2.235386] devtmpfs: mounted
>> [    2.242299] Freeing unused kernel memory: 364K (c062b000 - c0686000)
>> [    2.320341] hub 1-0:1.0: state 7 ports 1 chg 0002 evt 0000
>> [    2.329613] hub 1-0:1.0: port 1, status 0101, change 0000, 12 Mb/s
>> [    2.530412] usb 1-1: new high-speed USB device number 2 using dwc2
>> [    2.751660] usb 1-1: default language 0x0409
>> [    2.765327] usb 1-1: udev 2, busnum 1, minor = 1
>> [    2.773274] usb 1-1: New USB device found, idVendor=05e3, idProduct=0608
>> [    2.783242] usb 1-1: New USB device strings: Mfr=0, Product=1, 
>> SerialNumber=0
>> [    2.793644] usb 1-1: Product: USB2.0 Hub
>> [    2.809964] usb 1-1: usb_probe_device
>> [    2.817287] usb 1-1: configuration #1 chosen from 1 choice
>> [    2.830629] usb 1-1: adding 1-1:1.0 (config #1, interface 0)
>> [    2.839847] hub 1-1:1.0: usb_probe_interface
>> [    2.847447] hub 1-1:1.0: usb_probe_interface - got id
>> [    2.855751] hub 1-1:1.0: USB hub found
>> [    2.869581] hub 1-1:1.0: 4 ports detected
>> [    2.881180] hub 1-1:1.0: standalone hub
>> [    2.888190] hub 1-1:1.0: individual port power switching
>> [    2.896619] hub 1-1:1.0: individual port over-current protection
>> [    2.905707] hub 1-1:1.0: Single TT
>> [    2.912126] hub 1-1:1.0: TT requires at most 32 FS bit times (2664 ns)
>> [    2.921702] hub 1-1:1.0: Port indicators are supported
>> [    2.929775] hub 1-1:1.0: power on to power good time: 100ms
>> [    3.007154] hub 1-1:1.0: local power source is good
>> [    3.024584] hub 1-1:1.0: enabling power on all ports
>> [    3.042751] hub 1-0:1.0: state 7 ports 1 chg 0000 evt 0002
>> [    3.063948] hub 1-0:1.0: port 1 enable change, status 00000503
>> [    3.144448] hub 1-1:1.0: port 3: status 0101 change 0001
>> [    3.250480] hub 1-1:1.0: state 7 ports 4 chg 0008 evt 0000
>> [    3.267967] hub 1-1:1.0: port 3, status 0101, change 0000, 12 Mb/s
>> [    3.360727] usb 1-1.3: new high-speed USB device number 3 using dwc2
>> [    3.911643] udevd[153]: starting version 175
>> [    3.932030] random: nonblocking pool is initialized
>> [    8.409157] usb 1-1.3: khubd timed out on ep0in len=0/64
>> [   13.490307] usb 1-1.3: khubd timed out on ep0in len=0/64
>> [   18.490307] usb 1-1.3: khubd timed out on ep0in len=0/64
>> [   18.570623] usb 1-1.3: device descriptor read/64, error -110
>> [   23.680299] usb 1-1.3: khubd timed out on ep0in len=0/64
>> [   28.680298] usb 1-1.3: khubd timed out on ep0in len=0/64
>> [   33.680302] usb 1-1.3: khubd timed out on ep0in len=0/64
>> [   33.760573] usb 1-1.3: device descriptor read/64, error -110
>> [   33.957649] usb 1-1.3: new high-speed USB device number 4 using dwc2
>> [   38.970299] usb 1-1.3: khubd timed out on ep0in len=0/64
>> [   43.970297] usb 1-1.3: khubd timed out on ep0in len=0/64
>> [   48.970309] usb 1-1.3: khubd timed out on ep0in len=0/64
>> [   49.050528] usb 1-1.3: device descriptor read/64, error -110
>> [   54.160295] usb 1-1.3: khubd timed out on ep0in len=0/64
>> [   59.160304] usb 1-1.3: khubd timed out on ep0in len=0/64
>> [   64.160329] usb 1-1.3: khubd timed out on ep0in len=0/64
>> [   64.240595] usb 1-1.3: device descriptor read/64, error -110
>> [   64.430619] usb 1-1.3: new high-speed USB device number 5 using dwc2
>> [   69.430295] usb 1-1.3: khubd timed out on ep0out len=0/0
>> [   74.640290] usb 1-1.3: khubd timed out on ep0out len=0/0
>> [   74.850246] usb 1-1.3: device not accepting address 5, error -110
>> [   74.930547] usb 1-1.3: new high-speed USB device number 6 using dwc2
>> [   79.930327] usb 1-1.3: khubd timed out on ep0out len=0/0
>> [   85.140296] usb 1-1.3: khubd timed out on ep0out len=0/0
>> [   85.350240] usb 1-1.3: device not accepting address 6, error -110
>> [   85.360128] hub 1-1:1.0: unable to enumerate USB device on port 3
>> [   85.369117] hub 1-1:1.0: state 7 ports 4 chg 0000 evt 0008
>> [   88.556896] EXT3-fs (mmcblk0p2): using internal journal
>> [   94.693733] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some 
>> data may be corrupt. Please run fsck.
>> [  103.858645] Adding 102396k swap on /var/swap.  Priority:-1 extents:27 
>> across:478692k SS
>
>
> _______________________________________________
> linux-rpi-kernel mailing list
> linux-rpi-ker...@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-rpi-kernel
_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to