PREEMPTION vs ndisulator
Andrew Gallatin
gallatin at cs.duke.edu
Fri Dec 16 08:34:29 PST 2005
I'm trying to use an ndis driver on an amd64 machine running
FreeBSD/amd64 -current from yesterday. If I enable PREEMPTION, the
machine hangs when loading the driver (kldload never returns):
ndis0: <Myricom Myri-10G Ethernet Adapter> mem 0xfc000000-0xfcffffff,0xfdf00000-0xfdffffff irq 18 at device 0.0 on pci5
ndis0: NDIS API version: 5.1
<hang>
Witness detects no problems, and if I disable PREEMPTION, the driver
seems to work fine. Is PREEMPTION not safe to be used with the
ndisulator, or is there a problem with the ndis driver itself?
I've included some very brief debugging info below..
Thanks,
Drew
KDB: enter: Line break on console
[thread pid 11 tid 100002 ]
Stopped at kdb_enter+0x2f: nop
db> tr
Tracing pid 11 tid 100002 td 0xffffff001ed499c0
kdb_enter() at kdb_enter+0x2f
siointr1() at siointr1+0x400
siointr() at siointr+0x3d
intr_execute_handlers() at intr_execute_handlers+0x124
lapic_handle_intr() at lapic_handle_intr+0x21
Xapic_isr1() at Xapic_isr1+0x7c
--- interrupt, rip = 0xffffffff803d6972, rsp = 0xffffffff94e78bf0, rbp = 0xffffffff94e78c10 ---
spinlock_exit() at spinlock_exit+0x32
ithread_loop() at ithread_loop+0x355
fork_exit() at fork_exit+0x86
fork_trampoline() at fork_trampoline+0xe
--- trap 0, rip = 0, rsp = 0xffffffff94e78d40, rbp = 0 ---
db> ps
pid proc uid ppid pgrp flag stat wmesg wchan cmd
637 ffffff00148f3700 0 0 0 0000204 [SLPQ KeWFS 0xffffffff966ffb80][SLP] Windows Workitem 3
636 ffffff00148f3380 0 0 0 0000204 [SLPQ KeWFS 0xffffffff966f6b80][SLP] Windows Workitem 2
635 ffffff0014c72a80 0 0 0 0000204 [SLPQ KeWFS 0xffffffff966edb80][SLP] Windows Workitem 1
634 ffffff00148f3a80 0 0 0 0000204 [SLPQ KeWFS 0xffffffff966e4b80][SLP] Windows Workitem 0
633 ffffff0014c72700 0 0 0 0000204 [RUNQ] Windows DPC 0
632 ffffff0014ccd380 0 519 632 0004002 [RUNQ] kldload
519 ffffff00152a2380 1387 518 519 0004002 [SLPQ pause 0xffffff00152a23e8][SLP] tcsh
518 ffffff0014f5f700 1387 516 516 0000100 [SLPQ select 0xffffffff805e5a20][SLP] sshd
516 ffffff00152a2000 0 460 516 0004100 [SLPQ sbwait 0xffffff0017b0b128][SLP] sshd
515 ffffff001ec53000 0 1 515 0004002 [SLPQ ttyin 0xffffff001ec94c10][SLP] getty
514 ffffff0015363a80 0 1 514 0004002 [SLPQ ttyin 0xffffff00009c6810][SLP] getty
513 ffffff00186f9000 0 1 513 0004002 [SLPQ ttyin 0xffffff00009c6c10][SLP] getty
512 ffffff0018778380 0 1 512 0004002 [SLPQ ttyin 0xffffff0000a8b010][SLP] getty
511 ffffff0015363380 0 1 511 0004002 [SLPQ ttyin 0xffffff0000a8b410][SLP] getty
510 ffffff0015363700 0 1 510 0004002 [SLPQ ttyin 0xffffff0000a8b810][SLP] getty
509 ffffff0015363000 0 1 509 0004002 [SLPQ ttyin 0xffffff0000a8bc10][SLP] getty
508 ffffff00152a2a80 0 1 508 0004002 [SLPQ ttyin 0xffffff0000a8c010][SLP] getty
507 ffffff00152a2700 0 1 507 0004002 [SLPQ ttyin 0xffffff0000a8c410][SLP] getty
482 ffffff001eb18380 0 1 482 0000000 [SLPQ nanslp 0xffffffff805de528][SLP] cron
--More--
db> tr 633
Tracing pid 633 tid 100074 td 0xffffff0013e8f270
sched_switch() at sched_switch+0x11f
mi_switch() at mi_switch+0x153
sleepq_wait() at sleepq_wait+0x9
cv_wait_unlock() at cv_wait_unlock+0x131
cv_wait() at cv_wait+0x2c
KeWaitForSingleObject() at KeWaitForSingleObject+0x2a1
ntoskrnl_dpc_thread() at ntoskrnl_dpc_thread+0xcc
fork_exit() at fork_exit+0x86
fork_trampoline() at fork_trampoline+0xe
--- trap 0, rip = 0, rsp = 0xffffffff966dbd40, rbp = 0 ---
db> tr 632
Tracing pid 632 tid 100069 td 0xffffff001eb1a750
sched_switch() at sched_switch+0x11f
mi_switch() at mi_switch+0x153
critical_exit() at critical_exit+0x9a
spinlock_exit() at spinlock_exit+0x17
turnstile_unpend() at turnstile_unpend+0x2b2
KfLowerIrql() at KfLowerIrql+0x4a
dmapbase() at 0xffffff001370b34e
myri10ge_sys_drv_data_start() at myri10ge_sys_drv_data_start+0x46a9
ndis_attach() at ndis_attach+0x1b0
ndis_attach_pci() at ndis_attach_pci+0x4d2
device_attach() at device_attach+0x292
pci_driver_added() at pci_driver_added+0xe0
devclass_add_driver() at devclass_add_driver+0xc8
driver_module_handler() at driver_module_handler+0xad
module_register_init() at module_register_init+0x58
linker_load_module() at linker_load_module+0x950
kldload() at kldload+0x109
syscall() at syscall+0x6b2
Xfast_syscall() at Xfast_syscall+0xa8
--- syscall (304, FreeBSD ELF64, kldload), rip = 0x80067901c, rsp = 0x7fffffffe6e8, rbp = 0x7fffffffe760 ---
More information about the freebsd-current
mailing list