Allow tracing interrupts by defering the wakeup(9) to a different context.
authormpi <mpi@openbsd.org>
Fri, 6 Sep 2024 08:38:21 +0000 (08:38 +0000)
committermpi <mpi@openbsd.org>
Fri, 6 Sep 2024 08:38:21 +0000 (08:38 +0000)
commit9d5d5c61129fd7f41b5579a9907d359296c486a2
tree28155a5aa232780f02069bff7eb1fcd1c80fbb48
parent6e59a054e1e300775aef4e7fd75b7ace25f2a17b
Allow tracing interrupts by defering the wakeup(9) to a different context.

It is currently not safe to call wakeup(9) in interrupt handlers at a priority
higher than IPL_SCHED.  As long as dt(4) relies on generic kernel primitives
we have to play tricks to be able to inspect more parts of the kernel.  In this
case defer the wakeup(9) to a custom soft-interrupt.  This will be good enough
as long as we don't add tracepoints to the soft-interrupt machinery.  A more
complex & viable solution would be to not rely on the kernel generic IPC to
avoid recursion.

From visa@ and Christian Ludwig, ok claudio@
sys/dev/dt/dt_dev.c