Hello,
I asked here about a week ago for help with debugging a random lock I've
been experiencing. With the help of Mr. Owens, I seem to have gotten a
bit further. (Long winded way of saying, "Sorry about the messy
looking, clueless debugging.")
I'm running 2.4.2 + KDB 1.8 on my SMP machine (2xp3-600). I have a
serial console connected to my box. It looks like things might be
locking up in the EMU10k1 driver. Anyone else? Is there any further
info I can provide to someone who might be working on this?
Thanks,
pete
[0]kdb> rd
eax = 0xc983cca0 ebx = 0x00000000 ecx = 0xc02c8794 edx = 0xffffffff
esi = 0x00003296 edi = 0x00000000 esp = 0xc028bf34 eip = 0xe08ac8bd
ebp = 0xc028bf40 xss = 0x00000018 xcs = 0x00000010 eflags = 0x00013096
xds = 0xffff0018 xes = 0x00000018 origeax = 0xffffffff ®s = 0xc028bf00
[0]kdb> bt
EBP EIP Function(args)
0xc028bf40 0xe08ac8bd [emu10k1]emu10k1_waveout_bh+0x11 (0xc983cca0, 0x1, 0xc02c7680)
emu10k1 .text 0xe08aa060 0xe08ac8ac 0xe08ac950
0xc028bf58 0xc011bd6b tasklet_hi_action+0x4f (0xc02c7680, 0x0, 0xc02be800)
kernel .text 0xc0100000 0xc011bd1c 0xc011bda4
0xc028bf78 0xc011bbfd do_softirq+0x5d (0xc01071d0, 0xc028a000)
kernel .text 0xc0100000 0xc011bba0 0xc011bc30
0xc028bf94 0xc010b09e do_IRQ+0xda (0xc01071d0, 0x0, 0xc028a000, 0xc028a000, 0xc01071d0)
kernel .text 0xc0100000 0xc010afc4 0xc010b0b0
0xc010919c ret_from_intr
kernel .text 0xc0100000 0xc010919c 0xc01091bc
Interrupt registers:
eax = 0x00000000 ebx = 0xc01071d0 ecx = 0x00000000 edx = 0xc028a000
esi = 0xc028a000 edi = 0xc01071d0 esp = 0xc028bfd0 eip = 0xc01071ff
ebp = 0xc028bfd0 xss = 0x00000018 xcs = 0x00000010 eflags = 0x00003246
xds = 0xc0100018 xes = 0xc0280018 origeax = 0xffffff00 ®s = 0xc028bf9c
0xc01071ff default_idle+0x2f
kernel .text 0xc0100000 0xc01071d0 0xc0107208
0xc028bfe4 0xc0107272 cpu_idle+0x42
kernel .text 0xc0100000 0xc0107230 0xc0107288
[0]kdb> rd
eax = 0xc983cca0 ebx = 0x00000000 ecx = 0xc02c8794 edx = 0xffffffff
esi = 0x00003296 edi = 0x00000000 esp = 0xc028bf34 eip = 0xe08ac8bd
ebp = 0xc028bf40 xss = 0x00000018 xcs = 0x00000010 eflags = 0x00013096
xds = 0xffff0018 xes = 0x00000018 origeax = 0xffffffff ®s = 0xc028bf00
[0]kdb> bt
EBP EIP Function(args)
0xc028bf40 0xe08ac8bd [emu10k1]emu10k1_waveout_bh+0x11 (0xc983cca0, 0x1, 0xc02c7680)
emu10k1 .text 0xe08aa060 0xe08ac8ac 0xe08ac950
0xc028bf58 0xc011bd6b tasklet_hi_action+0x4f (0xc02c7680, 0x0, 0xc02be800)
kernel .text 0xc0100000 0xc011bd1c 0xc011bda4
0xc028bf78 0xc011bbfd do_softirq+0x5d (0xc01071d0, 0xc028a000)
kernel .text 0xc0100000 0xc011bba0 0xc011bc30
0xc028bf94 0xc010b09e do_IRQ+0xda (0xc01071d0, 0x0, 0xc028a000, 0xc028a000, 0xc01071d0)
kernel .text 0xc0100000 0xc010afc4 0xc010b0b0
0xc010919c ret_from_intr
kernel .text 0xc0100000 0xc010919c 0xc01091bc
Interrupt registers:
eax = 0x00000000 ebx = 0xc01071d0 ecx = 0x00000000 edx = 0xc028a000
esi = 0xc028a000 edi = 0xc01071d0 esp = 0xc028bfd0 eip = 0xc01071ff
ebp = 0xc028bfd0 xss = 0x00000018 xcs = 0x00000010 eflags = 0x00003246
xds = 0xc0100018 xes = 0xc0280018 origeax = 0xffffff00 ®s = 0xc028bf9c
0xc01071ff default_idle+0x2f
kernel .text 0xc0100000 0xc01071d0 0xc0107208
0xc028bfe4 0xc0107272 cpu_idle+0x42
kernel .text 0xc0100000 0xc0107230 0xc0107288
[0]kdb> bt
EBP EIP Function(args)
0xc028bf40 0xe08ac8bd [emu10k1]emu10k1_waveout_bh+0x11 (0xc983cca0, 0x1, 0xc02c7680)
emu10k1 .text 0xe08aa060 0xe08ac8ac 0xe08ac950
0xc028bf58 0xc011bd6b tasklet_hi_action+0x4f (0xc02c7680, 0x0, 0xc02be800)
kernel .text 0xc0100000 0xc011bd1c 0xc011bda4
0xc028bf78 0xc011bbfd do_softirq+0x5d (0xc01071d0, 0xc028a000)
kernel .text 0xc0100000 0xc011bba0 0xc011bc30
0xc028bf94 0xc010b09e do_IRQ+0xda (0xc01071d0, 0x0, 0xc028a000, 0xc028a000, 0xc01071d0)
kernel .text 0xc0100000 0xc010afc4 0xc010b0b0
0xc010919c ret_from_intr
kernel .text 0xc0100000 0xc010919c 0xc01091bc
Interrupt registers:
eax = 0x00000000 ebx = 0xc01071d0 ecx = 0x00000000 edx = 0xc028a000
esi = 0xc028a000 edi = 0xc01071d0 esp = 0xc028bfd0 eip = 0xc01071ff
ebp = 0xc028bfd0 xss = 0x00000018 xcs = 0x00000010 eflags = 0x00003246
xds = 0xc0100018 xes = 0xc0280018 origeax = 0xffffff00 ®s = 0xc028bf9c
0xc01071ff default_idle+0x2f
kernel .text 0xc0100000 0xc01071d0 0xc0107208
0xc028bfe4 0xc0107272 cpu_idle+0x42
kernel .text 0xc0100000 0xc0107230 0xc0107288
[0]kdb> id 0xe08ac8bd
0xe08ac8bd emu10k1_waveout_bh+0x11lock decb 0x17c(%ebx)
0xe08ac8c4 emu10k1_waveout_bh+0x18js 0xe08b31a6 .text.lock+0x280
0xe08ac8ca emu10k1_waveout_bh+0x1etestb $0x2,(%ebx)
0xe08ac8cd emu10k1_waveout_bh+0x21jne 0xe08ac8e0 emu10k1_waveout_bh+0x34
0xe08ac8cf emu10k1_waveout_bh+0x23movb $0x1,0x17c(%ebx)
0xe08ac8d6 emu10k1_waveout_bh+0x2apush %esi
0xe08ac8d7 emu10k1_waveout_bh+0x2bpopf
0xe08ac8d8 emu10k1_waveout_bh+0x2cjmp 0xe08ac940 emu10k1_waveout_bh+0x94
0xe08ac8da emu10k1_waveout_bh+0x2elea 0x0(%esi),%esi
0xe08ac8e0 emu10k1_waveout_bh+0x34push %ebx
0xe08ac8e1 emu10k1_waveout_bh+0x35call 0xe08ae7e4 emu10k1_waveout_update
0xe08ac8e6 emu10k1_waveout_bh+0x3alea 0xfffffffc(%ebp),%eax
0xe08ac8e9 emu10k1_waveout_bh+0x3dpush %eax
0xe08ac8ea emu10k1_waveout_bh+0x3epush %ebx
0xe08ac8eb emu10k1_waveout_bh+0x3fcall 0xe08ae438 emu10k1_waveout_getxfersize
0xe08ac8f0 emu10k1_waveout_bh+0x44add $0xc,%esp
[0]kdb> id 0xe08ac89d
0xe08ac89d emu10k1_wavein_bh+0x7dmov 0xf4658ddf(%esi),%eax
0xe08ac8a3 emu10k1_wavein_bh+0x83pop %ebx
0xe08ac8a4 emu10k1_wavein_bh+0x84pop %esi
0xe08ac8a5 emu10k1_wavein_bh+0x85mov %ebp,%esp
0xe08ac8a7 emu10k1_wavein_bh+0x87pop %ebp
0xe08ac8a8 emu10k1_wavein_bh+0x88ret
0xe08ac8a9 emu10k1_wavein_bh+0x89lea 0x0(%esi),%esi
0xe08ac8ac emu10k1_waveout_bhpush %ebp
0xe08ac8ad emu10k1_waveout_bh+0x1mov %esp,%ebp
0xe08ac8af emu10k1_waveout_bh+0x3sub $0x4,%esp
0xe08ac8b2 emu10k1_waveout_bh+0x6push %esi
0xe08ac8b3 emu10k1_waveout_bh+0x7push %ebx
0xe08ac8b4 emu10k1_waveout_bh+0x8mov 0x8(%ebp),%eax
0xe08ac8b7 emu10k1_waveout_bh+0xbmov 0x8(%eax),%ebx
0xe08ac8ba emu10k1_waveout_bh+0xepushf
0xe08ac8bb emu10k1_waveout_bh+0xfpop %esi
[0]kdb> id 0xe08ac8bc
0xe08ac8bc emu10k1_waveout_bh+0x10cli
0xe08ac8bd emu10k1_waveout_bh+0x11lock decb 0x17c(%ebx)
0xe08ac8c4 emu10k1_waveout_bh+0x18js 0xe08b31a6 .text.lock+0x280
0xe08ac8ca emu10k1_waveout_bh+0x1etestb $0x2,(%ebx)
0xe08ac8cd emu10k1_waveout_bh+0x21jne 0xe08ac8e0 emu10k1_waveout_bh+0x34
0xe08ac8cf emu10k1_waveout_bh+0x23movb $0x1,0x17c(%ebx)
0xe08ac8d6 emu10k1_waveout_bh+0x2apush %esi
0xe08ac8d7 emu10k1_waveout_bh+0x2bpopf
0xe08ac8d8 emu10k1_waveout_bh+0x2cjmp 0xe08ac940 emu10k1_waveout_bh+0x94
0xe08ac8da emu10k1_waveout_bh+0x2elea 0x0(%esi),%esi
0xe08ac8e0 emu10k1_waveout_bh+0x34push %ebx
0xe08ac8e1 emu10k1_waveout_bh+0x35call 0xe08ae7e4 emu10k1_waveout_update
0xe08ac8e6 emu10k1_waveout_bh+0x3alea 0xfffffffc(%ebp),%eax
0xe08ac8e9 emu10k1_waveout_bh+0x3dpush %eax
0xe08ac8ea emu10k1_waveout_bh+0x3epush %ebx
0xe08ac8eb emu10k1_waveout_bh+0x3fcall 0xe08ae438 emu10k1_waveout_getxfersize
[0]kdb> rd
eax = 0xc983cca0 ebx = 0x00000000 ecx = 0xc02c8794 edx = 0xffffffff
esi = 0x00003296 edi = 0x00000000 esp = 0xc028bf34 eip = 0xe08ac8bd
ebp = 0xc028bf40 xss = 0x00000018 xcs = 0x00000010 eflags = 0x00013096
xds = 0xffff0018 xes = 0x00000018 origeax = 0xffffffff ®s = 0xc028bf00
[0]kdb>