I solved the problem described in my previous message. After trying many, many other things I added code to the bt878 interrupt routine to count spurious interrupts (i.e. function called with no BT878 interrupt flags set). There were 50 spurious for every real interrupt.
The problem turned out ot be that the bttv driver enables the GPINT interrupt on the bt878, for the purpose of an IR remote control. Unfortunately, the GPIO inputs are connected on the Nebula card to the output of the Nxt6000 decoder, so there was a furious number of interrupts generated whenever it was delivering a data stream. The immediate workaround is to add "gpint=0" to the modprobe bttv line in the startup script. The proper solution will be a patch to the bttv driver so that individual cards can be flagged as not wanting the GPIO interrupt. 18000 interrupts/second takes up a lot of CPU time... With this fixed, the overhead of the demux filter code is only around 1% of an XP2000+. Oh, and the reason the problem sometimes spontaneously went away was because occasionally the interrupt rate would be high enough to provoke the bttv interrupt handler into declaring a stuck interrupt and clearing all the interrupt enable flags (which didn't affect the dvb code, which actually uses the audio DMA and interrupts to stream the digital data). Clyde On Wed, Nov 26, 2003 at 11:28:55PM +1000, Clyde Stubbs wrote: > I'm running the latest dvb-kernel CVS with a Nebula DigiTV card, > and *some of the time* when I load the kernel modules, the CPU > usage jumps to around 50% CPU time, with nothing actually running > or even accessing the card. Then some of the time, this stops. > > Rmmoding the modules makes the CPU usage go back to normal. Loading > them again reintroduces the problem. > > Even when the cpu usage is abnormal, the dvb devices can be accessed, > but there is significant loss of data leading to broken video > and audio. When it's normal, no such problems. > > nforce2 M/b with RH9 and 2.4.22 kernel, APIC disabled. > > Anyone got any ideas? > > Example - output from "top": > > 83 processes: 82 sleeping, 1 running, 0 zombie, 0 stopped > CPU states: 0.0% user 48.2% system 0.0% nice 0.0% iowait 51.7% idle > > lsmod output > > Module Size Used by Tainted: P > dvb-bt8xx 5348 0 (unused) > bt878 7568 0 [dvb-bt8xx] > nxt6000 8684 1 > dvb-core 51920 0 [dvb-bt8xx nxt6000] > bttv 112736 0 [dvb-bt8xx bt878] > video-buf 16208 0 [bttv] > videodev 9216 2 [bttv] > v4l1-compat 13508 0 (unused) > i2c-algo-bit 8776 1 [bttv] > btcx-risc 3560 0 [bttv] > v4l2-common 5376 0 [bttv] > i2c-core 19044 0 [dvb-bt8xx bttv i2c-algo-bit] > ide-cd 35392 0 (autoclean) > cdrom 33216 0 (autoclean) [ide-cd] > etc.... > > > > -- > Clyde Stubbs | HI-TECH Software > Email: [EMAIL PROTECTED] | Phone Fax > WWW: http://www.htsoft.com/ | USA: (408) 490 2885 (408) 490 2885 > PGP: finger [EMAIL PROTECTED] | AUS: +61 7 3552 7777 +61 7 3552 7778 > --------------------------------------------------------------------------- > HI-TECH C: compiling the real world. -- Clyde Stubbs | HI-TECH Software Email: [EMAIL PROTECTED] | Phone Fax WWW: http://www.htsoft.com/ | USA: (408) 490 2885 (408) 490 2885 PGP: finger [EMAIL PROTECTED] | AUS: +61 7 3552 7777 +61 7 3552 7778 --------------------------------------------------------------------------- HI-TECH C: compiling the real world. -- Info: To unsubscribe send a mail to [EMAIL PROTECTED] with "unsubscribe linux-dvb" as subject.