Opened 6 years ago

Closed 5 years ago

#14460 closed bug (invalid)

Failure to load XHCI results in kernel panic

Reported by: kallisti5 Owned by: nobody
Priority: low Milestone: Unscheduled
Component: System/Kernel Version: R1/Development
Keywords: bus_managers Cc:
Blocked By: Blocking:
Platform: All

Description

usb xhci: no devices found
PANIC: ref count of B_KEEP_LOADED module bus_managers/pci/v1 dropped to 0!
Welcome to Kernel Debugging Land...
Thread 161 "net_server" running on CPU 0
stack trace for thread 161 "net_server"
    kernel stack: 0xffffffff81e8a000 to 0xffffffff81e8f000
      user stack: 0x00007fc4a48ae000 to 0x00007fc4a58ae000
frame                       caller             <image>:function + offset
 0 ffffffff81e8e6f8 (+  24) ffffffff8014be1c   <kernel_x86_64> arch_debug_call_with_fault_handler + 0x16
 1 ffffffff81e8e710 (+  80) ffffffff800acfc8   <kernel_x86_64> debug_call_with_fault_handler + 0x68
 2 ffffffff81e8e760 (+  96) ffffffff800ae971   <kernel_x86_64> kernel_debugger_loop(char const*, char const*, __va_list_tag*, int) + 0xf1
 3 ffffffff81e8e7c0 (+  80) ffffffff800aec7e   <kernel_x86_64> kernel_debugger_internal(char const*, char const*, __va_list_tag*, int) + 0x6e
 4 ffffffff81e8e810 (+ 256) ffffffff800aefe2   <kernel_x86_64> panic + 0xb2
 5 ffffffff81e8e910 (+  48) ffffffff80066db6   <kernel_x86_64> put_module + 0x1e6
 6 ffffffff81e8e940 (+  80) ffffffff85caab45   </boot/system/add-ons/kernel/busses/usb/xhci> XHCI::AddTo(Stack*) + 0x225
 7 ffffffff81e8e990 (+ 112) ffffffff85d41923   </boot/system/add-ons/kernel/bus_managers/usb> Stack::Stack() + 0x163
 8 ffffffff81e8ea00 (+  48) ffffffff85d40baa   </boot/system/add-ons/kernel/bus_managers/usb> bus_std_ops(int, ...) + 0xba
 9 ffffffff81e8ea30 (+ 176) ffffffff800673a3   <kernel_x86_64> get_module + 0x563
10 ffffffff81e8eae0 (+  48) ffffffff85ce7003   </boot/system/add-ons/kernel/drivers/dev/net/pegasus> init_driver + 0x23
11 ffffffff81e8eb10 (+  80) ffffffff800d25cf   <kernel_x86_64> load_driver(_GLOBAL__N_1::legacy_driver*, legacy_driver, ???) + 0x18f
12 ffffffff81e8eb60 (+ 224) ffffffff800d2ab6   <kernel_x86_64> add_driver(char const*, int) + 0x266
13 ffffffff81e8ec40 (+ 368) ffffffff800d3ed9   <kernel_x86_64> legacy_driver_probe + 0x719
14 ffffffff81e8edb0 (+  96) ffffffff800cdebc   <kernel_x86_64> scan_for_drivers_if_needed(_GLOBAL__N_1::devfs_vnode*, devfs_vnode, ???) + 0x12c
15 ffffffff81e8ee10 (+  80) ffffffff800cdf32   <kernel_x86_64> devfs_open_dir(fs_volume*, fs_vnode*, void**) + 0x52
16 ffffffff81e8ee60 (+  64) ffffffff800fcb18   <kernel_x86_64> open_dir_vnode(vnode*, bool) + 0x38
17 ffffffff81e8eea0 (+  48) ffffffff801037bb   <kernel_x86_64> dir_open(int, char*, bool) + 0x4b
18 ffffffff81e8eed0 (+  80) ffffffff8010a4aa   <kernel_x86_64> _user_open_dir + 0xba
19 ffffffff81e8ef20 (+  16) ffffffff8014d7c8   <kernel_x86_64> x86_64_syscall_entry + 0xfb
user iframe at 0xffffffff81e8ef30 (end = 0xffffffff81e8eff8)
 rax 0x6d                  rbx 0x0                   rcx 0x1daea2493f4
 rdx 0x0                   rsi 0x10b3d9a97a9         rdi 0xffffffff
 rbp 0x7fc4a58aca00         r8 0x1d                   r9 0xc
 r10 0x1daea2493d4         r11 0x3246                r12 0x7fc4a58acac0
 r13 0x10b3d9a97a9         r14 0x7fc4a58acdc0        r15 0x0
 rip 0x1daea2493f4         rsp 0x7fc4a58ac9c8     rflags 0x3246
 vector: 0x63, error code: 0x0
20 ffffffff81e8ef30 (+140484683094736) 000001daea2493f4   <libroot.so> _kern_open_dir + 0x0c
21 00007fc4a58aca00 (+  48) 000000a2285a776e   <libbe.so> BDirectory::BDirectory(char const*) + 0x4e
22 00007fc4a58aca30 (+ 672) 0000010b3d9a39b4   <_APP_> NetServer::_ConfigureDevices(char const*, BMessage*) + 0x34
23 00007fc4a58accd0 (+ 512) 0000010b3d9a3ce3   <_APP_> NetServer::_BringUpInterfaces() + 0x193
24 00007fc4a58aced0 (+  64) 0000010b3d9a3db1   <_APP_> NetServer::ReadyToRun() + 0x41
25 00007fc4a58acf10 (+ 592) 000000a2284ae92c   <libbe.so> BApplication::DispatchMessage(BMessage*, BHandler*) + 0x41c
26 00007fc4a58ad160 (+  80) 000000a2284b61a4   <libbe.so> BLooper::task_looper() + 0x284
27 00007fc4a58ad1b0 (+  32) 000000a2284ab647   <libbe.so> BApplication::Run() + 0x47
28 00007fc4a58ad1d0 (+ 848) 0000010b3d9a099f   <_APP_> main + 0x7f
29 00007fc4a58ad520 (+  48) 0000010b3d9a0ae1   <_APP_> _start + 0x51
30 00007fc4a58ad550 (+  48) 00000195a8b90fd2   </boot/system/runtime_loader@0x00000195a8b7d000> <unknown> + 0x13fd2
31 00007fc4a58ad580 (+   0) 00007f1fc0685260   <commpage> commpage_thread_exit + 0x00

Failure to load the XHCI busses (in Start()) results in a kernel panic.

The panic is a bit odd, since a bus not loading shouldn't (in theory) result in a kernel panic. Thoughts?

To reproduce, just return B_ERROR; at the top of Start() in src/add-ons/kernel/busses/usb/xhci.cpp

Change History (2)

comment:1 by kallisti5, 6 years ago

tested in qemu with an XHCI controller:

qemu-system-x86_64 --serial stdio -device nec-usb-xhci -m 2048 -cdrom haiku-nightly-anyboot.iso --enable-kvm

comment:2 by waddlesplash, 5 years ago

Resolution: invalid
Status: newclosed

It seems you released the PCI bus reference twice, which of course is a problem with your hack, not with the kernel. :)

Note: See TracTickets for help on using tickets.