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
