Bug 4567

Summary: capturing from dv-camera (firewire) while any USB2 device is connected causes lockup
Product: Drivers Reporter: tommi uimonen (tuimonen)
Component: IEEE1394Assignee: Stefan Richter (stefanr)
Status: REJECTED UNREPRODUCIBLE    
Severity: high CC: stefanr
Priority: P2    
Hardware: i386   
OS: Linux   
Kernel Version: 2.6.15.1 Subsystem:
Regression: --- Bisected commit-id:

Description tommi uimonen 2005-04-30 15:19:31 UTC
Distribution: Debian unstable
Hardware Environment: Athlon XP

pci firewire card:
0000:00:0c.0 FireWire (IEEE 1394): VIA Technologies, Inc. IEEE 1394 Host
Controller (rev 46) (prog-if 10 [OHCI])
        Subsystem: VIA Technologies, Inc. IEEE 1394 Host Controller
        Flags: bus master, medium devsel, latency 32, IRQ 3
        Memory at ee002000 (32-bit, non-prefetchable) [size=2K]
        I/O ports at c800 [size=128]
        Capabilities: [50] Power Management version 2

pci usb2.0-card:
0000:00:0d.2 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 51) (prog-if 20
[EHCI])
        Subsystem: VIA Technologies, Inc. (Wrong ID): Unknown device 1234
        Flags: bus master, medium devsel, latency 32, IRQ 10
        Memory at ee003000 (32-bit, non-prefetchable) [size=256]
        Capabilities: [80] Power Management version 2

Software Environment: dvgrab 1.7 & 2.0
Problem Description: 

I'm using dvgrab to capture digital video from dv-camera by firewire. It works
fine, unless I capture the video directly to an external USB2.0 hard disk.
System log says:

ohci1394: fw-host0: IR DMA error - OHCI error code 0x05

multiple times (around 20) and then comes the lockup. Magic sysrq works, but I
don't have the output to put here.

Steps to reproduce:

Connect dv-camera to firewire port
Connect external hard drive to usb2 port
use dvgrab to capture video directly to the external hd




output from scripts/ver_linux:
Gnu C                  3.3.5
Gnu make               3.80
binutils               2.15
util-linux             2.12p
mount                  2.12p
module-init-tools      3.2-pre1
e2fsprogs              1.37
reiserfsprogs          3.6.19
reiser4progs           line
nfs-utils              1.0.7
Linux C Library        2.3.2
Dynamic linker (ldd)   2.3.2
Procps                 3.2.5
Net-tools              1.60
Console-tools          0.2.3
Sh-utils               5.2.1
udev                   056
Modules Loaded         radeon iptable_filter ehci_hcd uhci_hcd snd_ice1712
snd_ice17xx_ak4xxx snd_ak4xxx_adda snd_cs8427 snd_ac97_codec snd_pcm_oss
snd_mixer_oss snd_pcm snd_timer snd_page_alloc snd_i2c snd_mpu401_uart
snd_rawmidi snd_seq_device snd parport_pc lp thermal processor realtime
iptable_nat sbp2 dv1394 raw1394 ohci1394 ieee1394 vfat fat ide_scsi sg sr_mod
cdrom usb_storage scsi_mod 8139too mii crc32 parport
Comment 1 tommi uimonen 2005-04-30 15:52:54 UTC
Correction: magic sysrq did not work

I reproduced this also from console, stopped all unneccessary daemons to rule
them out.

And, the capturing needs to be at least few seconds before it hangs. Capture can
be stopped with Ctrl-c within the few seconds, but if you let it run, it will
eventually hang.

Also, grabbing to local disk and just accessing the usb-disk (doing ls or
something more) will cause the same errors, but does not lock up (unless the
usb-disk is heavily used)
Comment 2 Jody McIntyre 2005-05-02 09:08:08 UTC
OHCI error code 0x5 is "receive FIFO overflowed".  I'll try and determine how
this can happen and why it would crash the machine.
Comment 3 Stefan Richter 2005-07-24 04:04:33 UTC
The receive FIFO may overflow because of the PCI bus being too busy, or perhaps
too much time spent in an interrupt handler when accessing the USB disk.

Does the system still lock up in Linux 2.6.12? If possible, try also 2.6.12 +
drivers from linux1394.org, rev 1299.
Comment 4 tommi uimonen 2005-10-10 03:05:06 UTC
Still happens with 2.6.13.3

All it needs to crash is just any usb device connected. I was capturing to local
hard drive and usb card reader was connected -> lockup.

I'll try someday to compile all debug options to the kernel and see if I can
find any hints.

Also I haven't tried with USB1 ports, whether those cause lockups too.

My USB2 ports are on a PCI card which has VIA chip (VIA6202 if I remember correctly)
Comment 5 Jan Ciger 2005-10-18 11:06:30 UTC
I can confirm this bug as well. I was trying to get my new iSight webcam running
on 2.6.12 (Mandrake vendor kernel, it is not really vanilla kernel.org one, but
the Firewire stuff seems to be identical). After a short while (from few seconds
to 2-3 minutes) of viewing the data from the camera using Coriander, the machine
simply hangs hard - not even the magic Sysrq key works. 

I have this hw, using ohci driver:
04:0c.0 FireWire (IEEE 1394): Texas Instruments TSB12LV26 IEEE-1394 Controller
(Link)
 
The machine has only USB 1.1 ports (DELL Precision 820), without anything
connected. The problem could be actually unrelated to USB. 
Comment 6 tommi uimonen 2006-01-31 12:35:20 UTC
Still happens. Version 2.6.15.1

How could I debug this?
Comment 7 Stefan Richter 2006-02-18 14:12:30 UTC
Tommi, can you reproduce the lockup if you do not load ehci_hcd? (I.e. only
uhci_hcd and the 1394 drivers.)
Comment 8 tommi uimonen 2006-02-19 10:31:24 UTC
No lockup when I unloaded the ehci_hcd module. Frames still dropped when usb is
connected, if usb is removed, no frames get dropped.

Capture Started
"foo001.avi": frame dropped: timecode 45:85:85.45 date 2006.02.19 21:43:28
This error means that the ieee1394 driver received an incomplete frame.
"foo001.avi": frame dropped: timecode 45:85:85.45 date 2006.02.19 21:43:28
This error means that the ieee1394 driver received an incomplete frame.
"foo001.avi": frame dropped: timecode 45:85:85.45 date 2006.02.19 21:43:28
This error means that the ieee1394 driver received an incomplete frame.
"foo001.avi": frame dropped: timecode 45:85:85.45 date 2006.02.19 21:43:29
Comment 9 Stefan Richter 2006-12-01 01:58:05 UTC
Do the lock-ups happen with dvgrab 1.x over dv1394 as well as with dvgrab 2.x
over raw1394 (i.e. _without_ the dv1394 loaded nor compiled in)?

Is a panic message printed if you run dvgrab from a text console, i.e. switched
away from X11? If so, please write the message down or take a photo of the
screen and attach it here.
Comment 10 tommi uimonen 2006-12-01 02:20:52 UTC
My motherboard died, so I'm not able to reproduce this with the same setup. I
have the pci cards (USB2 card and IEE1394 card) still, so I could plug them to
the new mobo (Asus P5B-VM) and try.

No panic message was printed when I grabbed under console.

For the record: Asus P5B-VM has integrated IEEE1394 (by Texas Instruments) and
it works fine with the onboard USB2.0. So I don't have this issue anymore since
my current hardware works, but I'm willing to help to solve the problem.
Comment 11 Stefan Richter 2006-12-01 02:55:26 UTC
If you have the time and don't mind to take the PC down to insert the old cards,
please try with these cards. If the problem is still there, we need a panic
message or sprinkle the drivers with printks to get closer to the cause.
CONFIG_IEEE1394_VERBOSEDEBUG a.k.a. "Excessive debugging output" could perhaps
help too. But maybe the problem occurs outside the FireWire drivers.
Comment 12 tommi uimonen 2006-12-05 07:32:29 UTC
I installed the cards to my new motherboard, but wasn't able to reproduce the
lockup. I was able to record to usb hard disk.

dvgrab 1.8
dv1394 loaded

When I unloaded dv1394, dvgrab did not recognize the camera anymore.

I could send the cards to you (if you are willing to debug and send them back
eventually)?
Comment 13 Stefan Richter 2006-12-05 09:15:43 UTC
The open question is whether the bug depended on the motherboard or has been
fixed in the meantime. I doubt that I could reproduce this even if you sent me
the cards. I don't have the same motherboard, and I don't have a camera (could
set up a second PC as a streamer though).

Note that we will mark dv1394 as deprecated from Linux 2.6.20 onwards, and hope
to remove it some time next year. This is because raw1394 +
libraw1394/libiec61883 are meant to replace dv1394. In light of that and the
inability to reproduce the bug, how about closing the matter by "Reject bug,
changing resolution to UNREPRODUCIBLE"? Unless Jan can still reproduce it with
Linux 2.6.18 or better yet 2.6.19.

BTW, dvgrab 1.x works via dv1394 and dvgrab 2.x via raw1394 + libraw1394. That's
why dvgrab 1.8 didn't recognize the camera anymore after you unloaded d1394. (If
I'm not seriously mistaken.)
Comment 14 Stefan Richter 2006-12-05 11:58:34 UTC
Jan notified me that he too doesn't have his old hardware setup anymore and
didn't see the bug on the current hardware. In his case, the bug was during
capture from an IIDC camera via raw1394, not a DV camera via dv1394.