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
|
_______________________________________________ linux-dvb mailing list linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb