isp(4) mutex recursion.

Scott Long scottl at samsco.org
Sat May 12 16:19:11 UTC 2007


As you probably noticed, config_intrhooks get run synchronously if 
"cold" is not set, i.e. after boot.  This really needs to be fixed
so that they always run asynchronously.

Scott


mjacob at freebsd.org wrote:
> Interesting and noted. Try doing it not as a module.
> 
> 
> On Sat, 12 May 2007, Pawel Jakub Dawidek wrote:
> 
>> I've this panic on isp.ko load with recent current:
>>
>> isp0: <Qlogic ISP 2300 PCI FC-AL Adapter> port 0x3000-0x30ff mem 
>> 0xfc400000-0xfc400fff irq 27 at device 4.0 on pci2
>> registered firmware set <isp_2300>
>> isp0: [ITHREAD]
>> isp0: Board Type 2300, Chip Revision 0x1, loaded F/W Revision 3.3.19
>> panic: _mtx_lock_sleep: recursed on non-recursive mutex isp @ 
>> /usr/home/src/HEAD/src/sys/modules/isp/../../dev/isp/isp_freebsd.c:688
>>
>> cpuid = 1
>> KDB: enter: panic
>> [thread pid 560 tid 100030 ]
>> Stopped at      kdb_enter+0x2b: nop
>> db> tr
>> Tracing pid 560 tid 100030 td 0xc36ee870
>> kdb_enter(c06022ed) at kdb_enter+0x2b
>> panic(c06014aa,c3c40298,c3c3fb2b,2b0,c04c636f,...) at panic+0x11c
>> _mtx_lock_sleep(c3778690,c36ee870,0,c3c3fb2b,2b0) at _mtx_lock_sleep+0x3a
>> _mtx_lock_flags(c3778690,0,c3c3fb2b,2b0,0,...) at _mtx_lock_flags+0x94
>> isp_intr_enable(c3778600,c0671a60,0,c0604304,47,...) at 
>> isp_intr_enable+0x20
>> run_interrupt_driven_config_hooks(0) at 
>> run_interrupt_driven_config_hooks+0x43
>> config_intrhook_establish(c3778638,c3778638,c3778690,3e5b3000,0,...) 
>> at config_intrhook_establish+0xb9
>> isp_attach(c3778600,c05f7a2a,1,c3c41560,30,...) at isp_attach+0x81
>> isp_pci_attach(c3789680) at isp_pci_attach+0x127d
>> device_attach(c3789680,c3789680,c3789680,0,c37e4600,...) at 
>> device_attach+0x58
>> device_probe_and_attach(c3789680,c3789680,c37e4600) at 
>> device_probe_and_attach+0xe0
>> pci_driver_added(c3789700,c3c414b0) at pci_driver_added+0xd1
>> devclass_add_driver(c36dac00,c3c414b0) at devclass_add_driver+0xd5
>> driver_module_handler(c3b152c0,0,c3c4149c,c066ca10,c0601132,7b) at 
>> driver_module_handler+0x59
>> module_register_init(c3c41490) at module_register_init+0x66
>> linker_file_sysinit(c3bdd100,c3bdd100,c066c564,c05ffa8f,196,...) at 
>> linker_file_sysinit+0x9d
>> linker_load_file(c383a520,e2296c20) at linker_load_file+0x102
>> linker_load_module(0,c37e6000,0,0,e2296c58,c066c564,c05ffa8f,364) at 
>> linker_load_module+0xdb
>> kern_kldload(c36ee870,c37e6000,e2296c7c) at kern_kldload+0x92
>> kldload(c36ee870,e2296d00) at kldload+0x4f
>> syscall(e2296d38) at syscall+0x242
>> Xint0x80_syscall() at Xint0x80_syscall+0x20
>> --- syscall (304, FreeBSD ELF32, kldload), eip = 0x280c17ab, esp =
>> 0xbfbfec1c, ebp = 0xbfbfec58 ---
>>
>> -- 
>> Pawel Jakub Dawidek                       http://www.wheel.pl
>> pjd at FreeBSD.org                           http://www.FreeBSD.org
>> FreeBSD committer                         Am I Evil? Yes, I Am!
>>
> _______________________________________________
> freebsd-scsi at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-scsi
> To unsubscribe, send any mail to "freebsd-scsi-unsubscribe at freebsd.org"



More information about the freebsd-scsi mailing list