Module Name: src Committed By: martin Date: Wed Sep 11 10:09:19 UTC 2024
Modified Files: src/sys/arch/x86/x86 [netbsd-10]: intr.c src/sys/kern [netbsd-10]: kern_idle.c kern_softint.c subr_workqueue.c subr_xcall.c Log Message: Pull up following revision(s) (requested by rin in ticket #821): sys/arch/x86/x86/intr.c: revision 1.169 sys/kern/kern_softint.c: revision 1.76 sys/kern/subr_workqueue.c: revision 1.48 sys/kern/kern_idle.c: revision 1.36 sys/kern/subr_xcall.c: revision 1.38 check that l_nopreempt (preemption count) doesn't change after callbacks check that the idle loop, soft interrupt handlers, workqueue, and xcall callbacks do not modify the preemption count, in most cases, knowing it should be 0 currently. this work was originally done by simonb. cleaned up slightly and some minor enhancement made by myself, and with discussion with riastradh@. other callback call sites could check this as well (such as MD interrupt handlers, or really anything that includes a callback registration. x86 version to be commited separately.) apply some more diagnostic checks for x86 interrupts convert intr_biglock_wrapper() into a slight less complete intr_wrapper(), and move the kernel lock/unlock points into the new intr_biglock_wrapper(). add curlwp->l_nopreempt checking for interrupt handlers, including the dtrace wrapper. XXX: has to copy the i8254_clockintr hack. tested for a few months by myself, and recently by rin@ on both current and netbsd-10. thanks! To generate a diff of this commit: cvs rdiff -u -r1.163.2.1 -r1.163.2.2 src/sys/arch/x86/x86/intr.c cvs rdiff -u -r1.34 -r1.34.20.1 src/sys/kern/kern_idle.c cvs rdiff -u -r1.72 -r1.72.2.1 src/sys/kern/kern_softint.c cvs rdiff -u -r1.41.2.1 -r1.41.2.2 src/sys/kern/subr_workqueue.c cvs rdiff -u -r1.34 -r1.34.18.1 src/sys/kern/subr_xcall.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.