[linux-dvb] Lockups with cx2388x cards

Peter Martin peter at naiadhome.com
Wed Jan 9 23:07:53 CET 2008


I have a couple of Hauppauge cards (Nova-T using the cx2388x and a Nova Plus, again using an cx2388x) in an industrial motherboard (an Axiomtek ATX6022-14G) which is causing me some grief. After a short time I am getting both cards locking up (no DMA) at the same time. 

In order to get these cards working at all in this configuration, I have re-arranged the SRAM and increased the FIFO size in cx88-core.c to 0x4800 bytes, and disabled all the other channels (video, audio etc), which has cured the FIFO overflow errors I was getting ( general errors: 0x00000100), but the cards still lock up. The cards can run from between 5 seconds and 30 minutes before the lockup. I also get the lockups with the stock code, so I am happy that my SRAM chganges have not broken anything.

I am using the latest hg code and kernel 2.6.23.8
The processor is a Intel(R) Core(TM)2 CPU   6700  @ 2.66GHz
I have tried the system with maxcpus=0 and maxcpus=1 kernel parameter with the same results, so it is not an SMP/locking problem as far as I can tell.
I have tried changing the pci latencies using both setpci and by changing the module paramers from 0 to 128, again with no real change.

Just before the lock up, there is a cx88 timeout, (DMA or PCI locked up maybe?). As far as I can see, the timeout will almost always result in the cards stopping. The rest of the system runs fine, and a module unload/reload usually puts things right.

The relevant part of the syslog messages looks like this, though I have added few more printks to try to see what is happening.
Sometimes, the RISC dump contains INVALID opcodes, though I don't understand enough about the RISC controller at the moment to say whether this is important or not.
It looks like after the restarting of the queues, the DMA does not start.

Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]/2-mpeg: Timeout in cx88
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]/2-mpeg: cx8802_timeout
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]: mpeg - CX88-CORE dma channel status dump
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cmds: initial risc: 0x0c813000
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cmds: cdt base    : 0x00180800
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cmds: cdt size    : 0x00000040
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cmds: iq base     : 0x001807c0
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cmds: iq size     : 0x00000010
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cmds: risc pc     : 0x0c813038
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cmds: iq wr ptr   : 0x000001fe
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cmds: iq rd ptr   : 0x000001f2
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cmds: cdt current : 0x00000808
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cmds: pci target  : 0x00000000
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cmds: line / byte : 0x00000000
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   risc0: 0x1c0002f0 [ write sol eol count=752 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   risc1: 0x07332000 [ arg #1 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   risc2: 0x1c0002f0 [ write sol eol count=752 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   risc3: 0x073322f0 [ arg #1 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq 0: 0x1c0002f0 [ write sol eol count=752 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq 1: 0x07332000 [ arg #1 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq 2: 0x1c0002f0 [ write sol eol count=752 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq 3: 0x073322f0 [ arg #1 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq 4: 0x1c0002f0 [ write sol eol count=752 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq 5: 0x073325e0 [ arg #1 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq 6: 0x1c0002f0 [ write sol eol count=752 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq 7: 0x073328d0 [ arg #1 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq 8: 0x1c0002f0 [ write sol eol count=752 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq 9: 0x07332bc0 [ arg #1 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq a: 0x18000150 [ write sol count=336 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq b: 0x07332eb0 [ arg #1 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq c: 0x140001a0 [ write eol count=416 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq d: 0x0cedf000 [ arg #1 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq e: 0x1c0002f0 [ write sol eol count=752 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq f: 0x03ed0490 [ arg #1 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]: fifo: 0x00181000 -> 0x187000
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]: ctrl: 0x001807c0 -> 0x180820
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   ptr1_reg: 0x00181000
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   ptr2_reg: 0x00180808
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cnt1_reg: 0x00000000
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cnt2_reg: 0x00000000
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]/2-mpeg: cx8802_stop_dma
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]/2-mpeg: Stopping dma
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]/2-mpeg: Cancelling buffers
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]/2-mpeg: [e0252580/0] timeout - dma=0x0c813000
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]/2-mpeg: [c2126ec0/1] timeout - dma=0x09429000

---- queue deletion lines removed ---

Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]/2-mpeg: [e1647380/30] timeout - dma=0x03210000
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]/2-mpeg: [e1647980/31] timeout - dma=0x083f1000
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]/2-mpeg: 1 restarting queue
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]/2-mpeg: cx8802_restart_queue
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]/2-mpeg: cx8802_restart_queue: queue is empty
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]/2-mpeg: cx8802_buf_queue
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]/2-mpeg: queue is empty - first active
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]/2-mpeg: cx8802_start_dma w: 752, h: 32, f: 2
Jan  9 19:01:32 TEMERAIRE kernel: Lines = 32
Jan  9 19:01:32 TEMERAIRE kernel: Revised lines = 32
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]/2-mpeg: core->active_type_id = 0x00000001
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]/2-mpeg: cx8802_start_dma doing .dvb
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]/2-mpeg: setting the interrupt mask
Jan  9 19:01:32 TEMERAIRE kernel: Pre start DMA SRAM dump
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]: mpeg - CX88-CORE dma channel status dump
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cmds: initial risc: 0x0c813000
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cmds: cdt base    : 0x00180800
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cmds: cdt size    : 0x00000040
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cmds: iq base     : 0x001807c0
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cmds: iq size     : 0x00000010
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cmds: risc pc     : 0x00000000
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cmds: iq wr ptr   : 0x00000000
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cmds: iq rd ptr   : 0x00000000
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cmds: cdt current : 0x00000000
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cmds: pci target  : 0x00000000
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cmds: line / byte : 0x00000000
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   risc0: 0x00000000 [ INVALID count=0 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   risc1: 0x00000000 [ INVALID count=0 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   risc2: 0x00000000 [ INVALID count=0 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   risc3: 0x00000000 [ INVALID count=0 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq 0: 0x1c0002f0 [ write sol eol count=752 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq 1: 0x07332000 [ arg #1 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq 2: 0x1c0002f0 [ write sol eol count=752 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq 3: 0x073322f0 [ arg #1 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq 4: 0x1c0002f0 [ write sol eol count=752 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq 5: 0x073325e0 [ arg #1 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq 6: 0x1c0002f0 [ write sol eol count=752 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq 7: 0x073328d0 [ arg #1 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq 8: 0x1c0002f0 [ write sol eol count=752 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq 9: 0x07332bc0 [ arg #1 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq a: 0x18000150 [ write sol count=336 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq b: 0x07332eb0 [ arg #1 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq c: 0x140001a0 [ write eol count=416 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq d: 0x0cedf000 [ arg #1 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq e: 0x1c0002f0 [ write sol eol count=752 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   iq f: 0x03ed0490 [ arg #1 ]
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]: fifo: 0x00181000 -> 0x187000
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]: ctrl: 0x001807c0 -> 0x180820
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   ptr1_reg: 0x00181000
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   ptr2_reg: 0x00180808
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cnt1_reg: 0x00000000
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]:   cnt2_reg: 0x00000000
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]/2-mpeg: [e0252580/0] cx8802_buf_queue - first active
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]/2-mpeg: cx8802_buf_queue
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]/2-mpeg: queue is not empty - append to active
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]/2-mpeg: [c2126ec0/1] cx8802_buf_queue - append to active count 3
Jan  9 19:01:32 TEMERAIRE kernel: cx88[1]/2-mpeg: cx8802_buf_queue

We then get repeated timeouts and the above starts all over again.

I am now stuck, so can any of the cx2388x experts point me in the right direction to track this problem down?

If you want a more complete dump I can mail privately.

Pete

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.linuxtv.org/pipermail/linux-dvb/attachments/20080109/a6036fd0/attachment.htm 


More information about the linux-dvb mailing list