[Bug 285853] hv_hid: kernel built with -O0 panics in hv_hid_probe()

From: <bugzilla-noreply_at_freebsd.org>
Date: Wed, 02 Apr 2025 16:23:09 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=285853

            Bug ID: 285853
           Summary: hv_hid: kernel built with -O0 panics in hv_hid_probe()
           Product: Base System
           Version: 15.0-CURRENT
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: kern
          Assignee: bugs@FreeBSD.org
          Reporter: lexi@hemlock.eden.le-fay.org

- FreeBSD 15.0 fe9278888fd4414abe2d922e469cf608005f4c65
- Hyper-V client, Windows 11 10.0.26100

using this kernel config:

% cat GENERIC.NOOPT 
include GENERIC
ident "GENERIC.NOOPT"
makeoptions COPTFLAGS="-O0 -fno-strict-aliasing"
options KSTACK_PAGES=20
% 

the system panics on boot in hv_hid_probe() with the stack trace shown below. 
note that 0xffffffff83d11000 (the IP) is the first instruction in hv_hid_probe:

(kgdb) disass hv_hid_probe
Dump of assembler code for function hv_hid_probe:
   0xffffffff83d11000 <+0>:     add    %al,(%rax)
   0xffffffff83d11002 <+2>:     add    %al,(%rax)
   0xffffffff83d11004 <+4>:     add    %al,(%rax)
   0xffffffff83d11006 <+6>:     add    %al,(%rax)
   0xffffffff83d11008 <+8>:     add    %al,(%rax)
   0xffffffff83d1100a <+10>:    add    %al,(%rax)
   0xffffffff83d1100c <+12>:    add    %al,(%rax)
   0xffffffff83d1100e <+14>:    (bad)
   0xffffffff83d1100f <+15>:    loopne 0xffffffff83d11038 <hv_hid_probe+56>

i'm not entirely convinced this is specific to hv_hid, since not loading hv_hid
causes a later panic in epair.

panic message:

Trying to mount root from zfs:zroot/ROOT/default []...
WARNING: WITNESS option enabled, expect reduced performance.
<118>Setting hostuuid: 16820fb7-4c79-4ea6-a817-29da42b640ec.
<118>Setting hostid: 0x5b730d29.
<118>no pools available to import
<118>Starting file system checks:
<118>/dev/gpt/efiboot0: FILESYSTEM CLEAN; SKIPPING CHECKS
<118>Mounting local filesystems:.
<118>Autoloading module: hv_hid


Fatal trap 12: page fault while in kernel mode
cpuid = 11; apic id = 0b
fault virtual address   = 0xffffffff83d11000
fault code              = supervisor write data, protection violation
instruction pointer     = 0x20:0xffffffff83d11000
stack pointer           = 0x28:0xfffffe0092594758
frame pointer           = 0x28:0xfffffe0092594790
code segment            = base 0x0, limit 0xfffff, type 0x1b
                        = DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 130 (devctl)
rdi: fffff8000197b300 rsi: ffffffff820d9720 rdx: ffffffff820d9720
rcx: ffffffff83d121b0  r8: fefefefefefefeff  r9: 8080808080808080
rax: ffffffff83d11000 rbx: 000019e97c87cf20 rbp: fffffe0092594790
r10: ffffffff83d1210b r11: 97ff8c8a9d9289ff r12: 000019e159353c78
r13: 000019e159353c90 r14: 0000000000000001 r15: 000019e97a0c2e57
trap number             = 12
panic: page fault
cpuid = 11
time = 1743610017
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x28/frame 0xfffffe0092594110
kdb_backtrace() at kdb_backtrace+0x3e/frame 0xfffffe00925941c0
vpanic() at vpanic+0x21b/frame 0xfffffe0092594300
panic() at panic+0x4e/frame 0xfffffe0092594360
trap_fatal() at trap_fatal+0x83/frame 0xfffffe0092594390
trap_pfault() at trap_pfault+0x5c6/frame 0xfffffe0092594470
trap() at trap+0x69e/frame 0xfffffe0092594660
trap_check() at trap_check+0x3d/frame 0xfffffe0092594680
calltrap() at calltrap+0x8/frame 0xfffffe0092594680
--- trap 0xc, rip = 0xffffffff83d11000, rsp = 0xfffffe0092594758, rbp =
0xfffffe0092594790 ---
hv_hid_probe() at hv_hid_probe/frame 0xfffffe0092594790
device_probe_child() at device_probe_child+0x179/frame 0xfffffe00925947f0
device_probe() at device_probe+0x81/frame 0xfffffe0092594820
device_probe_and_attach() at device_probe_and_attach+0x1a/frame
0xfffffe0092594850
bus_generic_driver_added() at bus_generic_driver_added+0x43/frame
0xfffffe0092594880
BUS_DRIVER_ADDED() at BUS_DRIVER_ADDED+0x89/frame 0xfffffe00925948c0
devclass_driver_added() at devclass_driver_added+0x69/frame 0xfffffe00925948f0
device_do_deferred_actions() at device_do_deferred_actions+0x4c/frame
0xfffffe0092594910
devctl2_ioctl() at devctl2_ioctl+0x943/frame 0xfffffe0092594a70
devfs_ioctl() at devfs_ioctl+0x17d/frame 0xfffffe0092594b10
VOP_IOCTL_APV() at VOP_IOCTL_APV+0xfd/frame 0xfffffe0092594b40
VOP_IOCTL() at VOP_IOCTL+0x66/frame 0xfffffe0092594bc0
vn_ioctl() at vn_ioctl+0x191/frame 0xfffffe0092594c30
devfs_ioctl_f() at devfs_ioctl_f+0x57/frame 0xfffffe0092594c80
fo_ioctl() at fo_ioctl+0x3e/frame 0xfffffe0092594cc0
kern_ioctl() at kern_ioctl+0x28f/frame 0xfffffe0092594d30
sys_ioctl() at sys_ioctl+0x26b/frame 0xfffffe0092594e20
syscallenter() at syscallenter+0x5b8/frame 0xfffffe0092594e80
amd64_syscall() at amd64_syscall+0x5e/frame 0xfffffe0092594f30
fast_syscall_common() at fast_syscall_common+0xf8/frame 0xfffffe0092594f30
--- syscall (54, FreeBSD ELF64, ioctl), rip = 0x19e97d35dbfa, rsp =
0x19e97a0c29e8, rbp = 0x19e97a0c2aa0 ---
KDB: enter: panic

Reading symbols from /boot/kernel/filemon.ko...
Reading symbols from /usr/lib/debug//boot/kernel/filemon.ko.debug...
Reading symbols from /boot/kernel/zfs.ko...
Reading symbols from /usr/lib/debug//boot/kernel/zfs.ko.debug...
Reading symbols from /boot/kernel/hv_hid.ko...
Reading symbols from /usr/lib/debug//boot/kernel/hv_hid.ko.debug...
Reading symbols from /boot/kernel/hms.ko...
Reading symbols from /usr/lib/debug//boot/kernel/hms.ko.debug...
Reading symbols from /boot/kernel/hidmap.ko...
Reading symbols from /usr/lib/debug//boot/kernel/hidmap.ko.debug...
0xffffffff80f3d090 in doadump (textdump=0) at ../../../kern/kern_shutdown.c:404
404             dump_savectx();
(kgdb) where
#0  0xffffffff80f3d090 in doadump (textdump=0) at
../../../kern/kern_shutdown.c:404
#1  0xffffffff805cf610 in db_dump (dummy=-2131056059, dummy2=false, dummy3=-1,
dummy4=0xfffffe0092593c30 "") at ../../../ddb/db_command.c:596
#2  0xffffffff805cf416 in db_command (last_cmdp=0xffffffff82206590
<db_last_command>, cmd_table=0x0, dopager=true) at
../../../ddb/db_command.c:508
#3  0xffffffff805cf021 in db_command_loop () at ../../../ddb/db_command.c:555
#4  0xffffffff805d3921 in db_trap (type=3, code=0) at
../../../ddb/db_main.c:267
#5  0xffffffff80fab1c0 in kdb_trap (type=3, code=0, tf=0xfffffe00925940e0) at
../../../kern/subr_kdb.c:790
#6  0xffffffff816cace5 in trap (frame=0xfffffe00925940e0) at
../../../amd64/amd64/trap.c:608
#7  0xffffffff816cbded in trap_check (frame=0xfffffe00925940e0) at
../../../amd64/amd64/trap.c:660
#8  <signal handler called>
#9  breakpoint () at /home/ivy/src/bsd/bridge-1q/sys/amd64/include/cpufunc.h:62
#10 0xffffffff80faa724 in kdb_enter (why=0xffffffff818ebe8a "panic",
msg=0xffffffff818ebe8a "panic") at ../../../kern/subr_kdb.c:555
#11 0xffffffff80f3d715 in vpanic (fmt=0xffffffff8189d258 "%s",
ap=0xfffffe0092594340) at ../../../kern/kern_shutdown.c:966
#12 0xffffffff80f3d22e in panic (fmt=0xffffffff8189d258 "%s") at
../../../kern/kern_shutdown.c:892
#13 0xffffffff816cb193 in trap_fatal (frame=0xfffffe0092594690,
eva=18446744071626100736) at ../../../amd64/amd64/trap.c:960
#14 0xffffffff816cb7e6 in trap_pfault (frame=0xfffffe0092594690,
usermode=false, signo=0x0, ucode=0x0) at ../../../amd64/amd64/trap.c:869
#15 0xffffffff816ca97e in trap (frame=0xfffffe0092594690) at
../../../amd64/amd64/trap.c:442
#16 0xffffffff816cbded in trap_check (frame=0xfffffe0092594690) at
../../../amd64/amd64/trap.c:660
#17 <signal handler called>
#18 hv_hid_probe (dev=0xfffff8000197b300) at
/home/ivy/src/bsd/bridge-1q/sys/dev/hyperv/input/hv_hid.c:384
#19 0xffffffff80f8f1e1 in DEVICE_PROBE (dev=0xfffff8000197b300) at
./device_if.h:115
#20 0xffffffff80f8ecd9 in device_probe_child (dev=0xfffff80001914100,
child=0xfffff8000197b300) at ../../../kern/subr_bus.c:1723
#21 0xffffffff80f90291 in device_probe (dev=0xfffff8000197b300) at
../../../kern/subr_bus.c:2524
#22 0xffffffff80f904ca in device_probe_and_attach (dev=0xfffff8000197b300) at
../../../kern/subr_bus.c:2546
#23 0xffffffff80f93303 in bus_generic_driver_added (dev=0xfffff80001914100,
driver=0xffffffff83d13120 <hv_hid_driver>) at ../../../kern/subr_bus.c:3870
#24 0xffffffff80f97619 in BUS_DRIVER_ADDED (_dev=0xfffff80001914100,
_driver=0xffffffff83d13120 <hv_hid_driver>) at ./bus_if.h:210
#25 0xffffffff80f8d219 in devclass_driver_added (dc=0xfffff80001751600,
driver=0xffffffff83d13120 <hv_hid_driver>) at ../../../kern/subr_bus.c:661
#26 0xffffffff80f9908c in device_do_deferred_actions () at
../../../kern/subr_bus.c:5688
#27 0xffffffff80f98b53 in devctl2_ioctl (cdev=0xfffff8000151dc00,
cmd=2157462540, data=0xfffff8000db44c00 "", fflag=1, td=0xfffff8000e3c3740) at
../../../kern/subr_bus.c:5974
#28 0xffffffff80d287cd in devfs_ioctl (ap=0xfffffe0092594b58) at
../../../fs/devfs/devfs_vnops.c:950
#29 0xffffffff817e98ed in VOP_IOCTL_APV (vop=0xffffffff820c6898
<devfs_specops>, a=0xfffffe0092594b58) at vnode_if.c:1229
#30 0xffffffff810c3706 in VOP_IOCTL (vp=0xfffff8001194fdc0, command=2157462540,
data=0xfffff8000db44c00, fflag=1, cred=0xfffff8000da6ac00,
td=0xfffff8000e3c3740) at ./vnode_if.h:637
#31 0xffffffff810bb351 in vn_ioctl (fp=0xfffff8000e32f690, com=2157462540,
data=0xfffff8000db44c00, active_cred=0xfffff8000da6ac00, td=0xfffff8000e3c3740)
at ../../../kern/vfs_vnops.c:1768
#32 0xffffffff80d28e47 in devfs_ioctl_f (fp=0xfffff8000e32f690, com=2157462540,
data=0xfffff8000db44c00, cred=0xfffff8000da6ac00, td=0xfffff8000e3c3740)
    at ../../../fs/devfs/devfs_vnops.c:881
#33 0xffffffff80feae4e in fo_ioctl (fp=0xfffff8000e32f690, com=2157462540,
data=0xfffff8000db44c00, active_cred=0xfffff8000da6ac00, td=0xfffff8000e3c3740)
at ../../../sys/file.h:375
#34 0xffffffff80feac4f in kern_ioctl (td=0xfffff8000e3c3740, fd=3,
com=2157462540, data=0xfffff8000db44c00 "") at ../../../kern/sys_generic.c:806
#35 0xffffffff80fea91b in sys_ioctl (td=0xfffff8000e3c3740,
uap=0xfffff8000e3c3b40) at ../../../kern/sys_generic.c:714
#36 0xffffffff816cce08 in syscallenter (td=0xfffff8000e3c3740) at
../../../amd64/amd64/../../kern/subr_syscall.c:191
#37 0xffffffff816cc5ce in amd64_syscall (td=0xfffff8000e3c3740, traced=0) at
../../../amd64/amd64/trap.c:1201
#38 <signal handler called>
#39 0x000019e97d35dbfa in ?? ()
Backtrace stopped: Cannot access memory at address 0x19e97a0c29e8

-- 
You are receiving this mail because:
You are the assignee for the bug.