The system used to hang on modprobe, someone suggested
moving the troublesome module init code into the open call.
Can now set a breakpoint in bttv_open, and catch it there with SGI KDB.
(not kgdb, don't have hw for that.)
any suggestions on what to do now are welcome. It's really easy to test
& reproduce.
It hangs in init_bt848 at the line:
btwrite(val, BT848_E_SCLOOP);
The lockup is solid, no ping response, no disk writes of kernel
messages, etc...
tests done:
-- no, it isn't an IRQ conflict, removed all other cards
one at a time, including video, no change.
-- no, it isn't IRQ sharing disabled onboard USB
controller, no change.
-- no, it isn't vsfx or triton1, neither produces any
change, but vsfx=1 left on.
-- no, it isn't DMA setup, commenting out DMA setup
moves the hang only one line
further in the source code.
-- no, it isn't DMA conflicts, disabled DMA for all
other peripherals, no change.
-- It isn't a VIA KT133, but it does have a VIA chipset.
see messages below:
config:
linus' tree linux 2.4.19 + bttv 0.8.45 with requisite v4l2 patches.
kernel messages:
Oct 1 22:02:14 grumpy kernel: i2c-core.o: i2c core module version 2.6.4
(20020719)
Oct 1 22:02:14 grumpy kernel: i2c-algo-bit.o: i2c bit algorithm module
version 2.6.4 (20020719)
Oct 1 22:02:14 grumpy kernel: bttv: driver version 0.8.45 loaded [v4l/v4l2]
Oct 1 22:02:14 grumpy kernel: bttv: using 8 buffers with 2080k (520
pages) each for capture
Oct 1 22:02:14 grumpy kernel: pci_pci_problems= 0
Oct 1 22:02:14 grumpy kernel: bttv: Host bridge is VIA Technologies,
Inc. VT82C693A/694x [Apollo PRO133x]
Oct 1 22:02:14 grumpy kernel: bttv: Host bridge is VIA Technologies,
Inc. VT82C596 Power Management
Oct 1 22:02:14 grumpy kernel: bttv: Host bridge has buggy ISA DMA value=0x1
Oct 1 22:02:14 grumpy kernel: bttv: Host bridge needs VSFX enabled.
Oct 1 22:02:14 grumpy kernel: bttv: Bt8xx card found (0).
Oct 1 22:02:14 grumpy kernel: PCI: Enabling device 00:09.0 (0004 -> 0006)
Oct 1 22:02:14 grumpy kernel: PCI: Found IRQ 7 for device 00:09.0
Oct 1 22:02:14 grumpy kernel: PCI: Sharing IRQ 7 with 00:04.2
Oct 1 22:02:14 grumpy kernel: PCI: Sharing IRQ 7 with 00:09.1
Oct 1 22:02:14 grumpy kernel: bttv0: Bt878 (rev 17) at 00:09.0, irq: 7,
latency: 32, mmio: 0xcd000000
Oct 1 22:02:14 grumpy kernel: bttv0: detected: ATI TV Wonder [card=63],
PCI subsystem ID is 1002:0001
Oct 1 22:02:14 grumpy kernel: bttv0: using: BT878(ATI TV-Wonder)
[card=63,autodetected]
Oct 1 22:02:14 grumpy kernel: bttv0: enabling VSFX
Oct 1 22:02:14 grumpy kernel: Peter returning from bttv_init
Oct 1 22:02:14 grumpy kernel: bttv0: registered device video0
Oct 1 22:02:14 grumpy kernel: bttv0: registered device vbi0
The stuff that doesn't show up in the syslog because it is too close to
the hang are:
bttv0: risc main @ 12112000
about to btwrite(val, BT848_E_SCLOOP);