Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: [netbsd-10] src/sys



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.




Home | Main Index | Thread Index | Old Index