Hello everyone,

Lately I have been receiving reports of severe image corruption from
ov511 users. The images don't look like they have any added noise, but
instead look as if parts of the data are missing. All so far involve an
OHCI, so I am guessing that something in usb-ohci broke.

I tried to confirm this problem myself, but I ran into a slightly
different problem. I have a printer connected to my OHCI which works
flawlessly, and my ov511 devices work fine when doing control messages,
but shortly after I start isochronous streaming, either the control
transfers begin to fail and the driver bails out, or I get an error like
the one below. If an URB is lucky enough to make it all the way to
completion, its transfer buffer will contain all 'FF's. Here is one of
the failures:

<6>ov511.c: [ov511_reg_write:684] 0x40:0x05
<6>ov511.c: [ov511_restart:1142] restarting
<6>ov511.c: [ov511_reg_write:684] 0x50:0x00
<6>ov511.c: [ov51x_get_hue:1729] 32768
<6>ov511.c: [ov511_ioctl:4370] IOCtl: 0x80887614
<6>ov511.c: [ov511_ioctl:4625] VIDIOCGMBUF
<6>ov511.c: [ov511_mmap:4954] mmap: 1847296 (1C3000) bytes
<7>hub.c: nonzero status in irq -110
<7>hub.c: port 1 enable change, status 101
<3>hub.c: already running port 1 disabled by hub (EMI?), re-enabling...
<7>hub.c: port 1, portstatus 101, change 2, 12 Mb/s
<6>usb.c: USB disconnect on device 11
<6>usb.c: USB disconnect on device 14
<6>ov511.c: [ov511_disconnect:6235]
<7>usb.c: kusbd: /sbin/hotplug remove 14
<6>usb.c: USB disconnect on device 13
<7>usb.c: kusbd: /sbin/hotplug remove 13
<7>usb.c: kusbd: /sbin/hotplug remove 11
<7>VFS: Disk change detected on device sr(11,0)
<7>VFS: Disk change detected on device sr(11,0)
<7>hub.c: port 1, portstatus 103, change 10, 12 Mb/s
<6>hub.c: USB new device connect on bus2/1, assigned device number 15
<7>usb.c: kmalloc IF c5a01820, numif 1
<7>usb.c: new device strings: Mfr=0, Product=0, SerialNumber=0
<6>hub.c: USB hub found
[...hub initializes OK]

<6>hub.c: USB new device connect on bus2/1/1, assigned device number 16
<3>usb.c: USB device not responding, giving up (error=-110)
<7>hub.c: nonzero status in irq -110
<7>hub.c: nonzero status in irq -110
<7>hub.c: nonzero status in irq -110
<3>hub.c: get_port_status(1) failed (err = -110)
<7>hub.c: port 1 of hub 15 not enabled, trying reset again...
[...repeats a few times....]

<7>hub.c: port 1 of hub 15 not enabled, trying reset again...
<3>hub.c: Cannot enable port 1 of hub 15, disabling port.
<3>hub.c: Maybe the USB cable is bad?
<3>hub.c: cannot disable port 1 of hub 15 (err = -110)
<3>hub.c: get_port_status failed (err = -110)
<3>hub.c: get_port_status failed (err = -110)
<3>hub.c: get_port_status failed (err = -110)
<3>hub.c: get_hub_status failed
<7>hub.c: port 1 connection change
<7>hub.c: port 1, portstatus 101, change 3, 12 Mb/s
<6>usb.c: USB disconnect on device 15
<7>usb.c: kusbd: /sbin/hotplug remove 15
<7>hub.c: port 1, portstatus 103, change 12, 12 Mb/s
<6>hub.c: USB new device connect on bus2/1, assigned device number 17
[The camera reinitializes correctly at this point]

I am guessing that the failure happens when the first isoc interrupt
comes in, which is usually at about the same time as the first error. I
tried installing the ohci-0508 patch, with no change in results.
Removing all of the isochronous URB related code prevents the errors,
but of course I get no image.

I looked over my URB code and I couldn't find anything wrong with it.
Could someone please look it over and tell me if I'm doing anything
wrong? The code is at http://alpha.dyndns.org/ov511/download/ov511.c

Some users don't get any errors, but they get corrupted image data even
though the control transfers work perfectly. Here is a summary of the
reports I have received:

#1:
        2.2.17 kernel with 1.38 driver (This one may just be a fluke)
        Unknown OHCI chipset
        Unknown x86 system

#2:
        2.4.4 kernel with 1.39 driver
        OHCI: Belkin F5U005 USB card (OPTi 82C861 chipset)
        PPro 200MHz, 440FX chipset
        Other devices (keyboard, mouse) work on OHCI
        Camera works with UHCI on similar system

#3:
         2.4.4 kernel with 1.38 and 1.39 driver
        Unknown OHCI chipset
        K6-3 500
        ov511 1.37 worked under unknown configuration

#4:
        2.4.4 PPC + ohci-0508 patch, with 1.39 driver
        OHCI: USB Controller: Apple Computer Inc.: Unknown device 0019
(prog-if 10 [OHCI])
        ***It worked with 2.4.4-pre7***
        Gets an "OHCI Unrecoverable Error" when device is accessed

#5: (me)
        2.4.2, and 2.4.4 + ohci-0508 patch
        OPTi 82C861 OHCI

And here is a log of the driver from one of the users with corrupted
images.

    kernel: ov511.c: [ov511_ioctl:4633] syncing to frame 0, grabstate =
2
    kernel: ov511.c: [ov511_move_data:3320] Moving 10 packets
    last message repeated 15 times
    kernel: ov511.c: [ov511_move_data:3443] Frame start, framenum = 0
    kernel: ov511.c: [ov511_move_data:3320] Moving 10 packets
    last message repeated 11 times
    kernel: ov511.c: [ov511_move_data:3443] Frame start, framenum = 0
    kernel: ov511.c: [ov511_move_data:3320] Moving 10 packets
    last message repeated 12 times
    kernel: ov511.c: [ov511_move_data:3443] Frame start, framenum = 0
    kernel: ov511.c: [ov511_move_data:3320] Moving 10 packets
    last message repeated 11 times
    kernel: ov511.c: [ov511_move_data:3443] Frame start, framenum = 0
    kernel: ov511.c: [ov511_move_data:3320] Moving 10 packets
    last message repeated 11 times
    kernel: ov511.c: [ov511_move_data:3443] Frame start, framenum = 0
    kernel: ov511.c: [ov511_move_data:3320] Moving 10 packets
    last message repeated 24 times
    kernel: ov511.c: [ov511_move_data:3443] Frame start, framenum = 0
    kernel: ov511.c: [ov511_move_data:3320] Moving 10 packets
    last message repeated 11 times
    kernel: ov511.c: [ov511_move_data:3443] Frame start, framenum = 0
    kernel: ov511.c: [ov511_move_data:3320] Moving 10 packets
    last message repeated 23 times
    kernel: ov511.c: [ov511_move_data:3378] Frame end, curframe = 0,
packnum=121, hw=39, vw=29, recvd=111351

It looks like packets are being lost, since the only other possible
cause of unnoticed EOF packets (severe data corruption) would be clearly
visible in the image as noise. I don't think bandwidth is the problem
since the packet size is only 961, and lowering it doesn't change
anything. In any case, it works with UHCI for me and others, so I cannot
directly blame my driver.

Here is my /proc/pci, for whatever it's worth:

  Bus  0, device   0, function  0:
    Host bridge: Intel Corporation 430HX - 82439HX TXC [Triton II] (rev
1).
      Master Capable.  Latency=64.
  Bus  0, device   7, function  0:
    ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
(rev 1).
  Bus  0, device   7, function  1:
    IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton
II] (rev 0).
      Master Capable.  Latency=64.
      I/O at 0xf000 [0xf00f].
  Bus  0, device   7, function  2:
    USB Controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton
II] (rev 1).
      IRQ 10.
      Master Capable.  Latency=64.
      I/O at 0x6000 [0x601f].
  Bus  0, device   9, function  0:
    SCSI storage controller: Adaptec AIC-7880U (rev 0).
      IRQ 11.
      Master Capable.  Latency=64.  Min Gnt=8.Max Lat=8.
      I/O at 0x6400 [0x64ff].
      Non-prefetchable 32 bit memory at 0xe1002000 [0xe1002fff].
  Bus  0, device  10, function  0:
    Ethernet controller: Lite-On Communications Inc LNE100TX (rev 32).
      IRQ 12.
      Master Capable.  Latency=64.
      I/O at 0x6800 [0x68ff].
      Non-prefetchable 32 bit memory at 0xe1000000 [0xe10000ff].
  Bus  0, device  12, function  0:
    USB Controller: OPTi Inc. 82C861 (rev 16).
      IRQ 9.
      Master Capable.  Latency=64.
      Non-prefetchable 32 bit memory at 0xe1001000 [0xe1001fff].
  Bus  0, device  13, function  0:
    VGA compatible controller: ATI Technologies Inc 3D Rage I/II 215GT
[Mach64 GT] (rev 65).
      Master Capable.  Latency=64.  Min Gnt=8.
      Non-prefetchable 32 bit memory at 0xe0000000 [0xe0ffffff].
      I/O at 0x6c00 [0x6cff].
      Non-prefetchable 32 bit memory at 0xe1003000 [0xe1003fff].

--
Mark McClelland
[EMAIL PROTECTED]



_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
http://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to