CVSROOT: /cvs Module name: src Changes by: d...@cvs.openbsd.org 2025/05/20 18:13:44
Modified files: sys/dev/dt : dt_dev.c Log message: establish the dt_deferred_wakeup() softintr as MPSAFE. without this, profiling on a busy system with btrace ends up with all the cpus spinning on the kernel lock all the time when the dt event buffer gets full. when the event buffer is full, dt tries to wake up btrace to read the buffer, but it defers this wakup to a softintr to avoid calling wakeup() at really high IPLs. because dt hides itself from stack traces, it looks ambiguous where this contention comes from and it's often assumed that it is the timeout subsystem that's causing the problems. we have improved timeouts, but apart from optimising timeout_barrier out of the picture the flame graphs looked basically the same as before. this is possible now that softintrs are implemented consistently across our archs (thanks visa@). tested by and ok bluhm@