Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Sep 2018 08:19:26 +0300
From:      Yuri Pankov <yuripv@yuripv.net>
To:        freebsd-hackers <freebsd-hackers@freebsd.org>
Subject:   ACPI GPE handler: mtx_lock() by idle thread
Message-ID:  <475afc8c-d0ad-ead2-e75e-bca873977c2d@yuripv.net>

next in thread | raw e-mail | index | archive | help
I have the panic shown below with a simple device driver that installs 
GPE handler in the attach routine, and does nothing else than waiting 
for GPEs.  No matter if I try to handle it sync (calling 
SPIBUS_TRANSFER() from the handler), or async (calling 
taskqueue_enqueue()), once one of those functions called from the 
handler does mtx_lock(), it panics.  Any hints?


panic: mtx_lock() by idle thread 0xfffff800035bb000 on sleep mutex spi1 
@ /home/yuri/ws/mbp/sys/dev/intel/spi.c:382
cpuid = 0
time = 1536642645
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 
0xfffffe00764761b0
vpanic() at vpanic+0x1a3/frame 0xfffffe0076476210
panic() at panic+0x43/frame 0xfffffe0076476270
__mtx_lock_flags() at __mtx_lock_flags+0x15a/frame 0xfffffe00764762c0
intelspi_transfer() at intelspi_transfer+0x3d/frame 0xfffffe0076476310
spimbp_gpe_handler() at spimbp_gpe_handler+0x102/frame 0xfffffe0076476580
AcpiEvGpeDispatch() at AcpiEvGpeDispatch+0xc0/frame 0xfffffe00764765b0
AcpiEvDetectGpe() at AcpiEvDetectGpe+0x10a/frame 0xfffffe0076476600
AcpiEvGpeDetect() at AcpiEvGpeDetect+0x323/frame 0xfffffe0076476670
AcpiEvSciXruptHandler() at AcpiEvSciXruptHandler+0x1e/frame 
0xfffffe00764766a0
acpi_intr_handler() at acpi_intr_handler+0x18/frame 0xfffffe00764766b0
intr_event_handle() at intr_event_handle+0xcb/frame 0xfffffe0076476700
intr_execute_handlers() at intr_execute_handlers+0x58/frame 
0xfffffe0076476730
lapic_handle_intr() at lapic_handle_intr+0x5f/frame 0xfffffe0076476750
Xapic_isr1() at Xapic_isr1+0xd9/frame 0xfffffe0076476750
--- interrupt, rip = 0xffffffff80461191, rsp = 0xfffffe0076476820, rbp = 
0xfffffe0076476860 ---
acpi_cpu_idle() at acpi_cpu_idle+0x2a1/frame 0xfffffe0076476860
cpu_idle_acpi() at cpu_idle_acpi+0x3f/frame 0xfffffe0076476880
cpu_idle() at cpu_idle+0xa7/frame 0xfffffe00764768a0
sched_idletd() at sched_idletd+0x517/frame 0xfffffe0076476970
fork_exit() at fork_exit+0x84/frame 0xfffffe00764769b0
fork_trampoline() at fork_trampoline+0xe/frame 0xfffffe00764769b0
--- trap 0, rip = 0, rsp = 0, rbp = 0 ---
KDB: enter: panic



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?475afc8c-d0ad-ead2-e75e-bca873977c2d>