Module Name:    src
Committed By:   martin
Date:           Wed Aug  9 17:42:06 UTC 2023

Modified Files:
        src/external/cddl/osnet/sys/sys [netbsd-10]: kcondvar.h
        src/share/man/man4 [netbsd-10]: ddb.4
        src/sys/arch/alpha/include [netbsd-10]: mutex.h
        src/sys/arch/amiga/dev [netbsd-10]: grfabs_cc.c
        src/sys/arch/amiga/include [netbsd-10]: intr.h
        src/sys/arch/arm/include [netbsd-10]: cpu.h mutex.h
        src/sys/arch/arm/xscale [netbsd-10]: pxa2x0_intr.c pxa2x0_intr.h
        src/sys/arch/atari/include [netbsd-10]: intr.h
        src/sys/arch/cesfic/include [netbsd-10]: intr.h
        src/sys/arch/evbarm/g42xxeb [netbsd-10]: obio.c
        src/sys/arch/evbarm/include [netbsd-10]: intr.h
        src/sys/arch/evbarm/lubbock [netbsd-10]: obio.c sacc_obio.c
        src/sys/arch/hp300/include [netbsd-10]: intr.h
        src/sys/arch/hppa/include [netbsd-10]: intr.h mutex.h
        src/sys/arch/ia64/acpi [netbsd-10]: madt.c
        src/sys/arch/ia64/include [netbsd-10]: mutex.h sapicvar.h
        src/sys/arch/luna68k/include [netbsd-10]: intr.h
        src/sys/arch/m68k/include [netbsd-10]: mutex.h
        src/sys/arch/mac68k/include [netbsd-10]: intr.h
        src/sys/arch/mips/include [netbsd-10]: mutex.h
        src/sys/arch/mvme68k/include [netbsd-10]: intr.h
        src/sys/arch/news68k/include [netbsd-10]: intr.h
        src/sys/arch/next68k/include [netbsd-10]: intr.h
        src/sys/arch/or1k/include [netbsd-10]: mutex.h
        src/sys/arch/powerpc/include [netbsd-10]: mutex.h
        src/sys/arch/riscv/include [netbsd-10]: mutex.h
        src/sys/arch/sh3/include [netbsd-10]: mutex.h
        src/sys/arch/sparc/include [netbsd-10]: cpu.h mutex.h psl.h
        src/sys/arch/sparc64/include [netbsd-10]: cpu.h mutex.h psl.h
        src/sys/arch/sun68k/include [netbsd-10]: intr.h
        src/sys/arch/usermode/include [netbsd-10]: mutex.h
        src/sys/arch/vax/include [netbsd-10]: intr.h mutex.h
        src/sys/arch/x68k/include [netbsd-10]: intr.h
        src/sys/arch/x86/include [netbsd-10]: cpu.h mutex.h
        src/sys/ddb [netbsd-10]: db_command.c ddb.h files.ddb
        src/sys/external/bsd/drm2/include/linux [netbsd-10]: idr.h
        src/sys/kern [netbsd-10]: kern_core.c
        src/sys/opencrypto [netbsd-10]: cryptodev.h
        src/sys/sys [netbsd-10]: cpu_data.h ksem.h lua.h proc.h rwlock.h
            sched.h
        src/sys/uvm [netbsd-10]: uvm_param.h
        src/usr.sbin/crash [netbsd-10]: Makefile
Added Files:
        src/sys/ddb [netbsd-10]: db_syncobj.c db_syncobj.h

Log Message:
Pull up following revision(s) (requested by maya in ticket #316):

        sys/arch/m68k/include/mutex.h: revision 1.13
        sys/arch/arm/include/cpu.h: revision 1.125
        sys/arch/sun68k/include/intr.h: revision 1.21
        sys/arch/arm/include/mutex.h: revision 1.28
        sys/sys/rwlock.h: revision 1.18
        sys/arch/powerpc/include/mutex.h: revision 1.7
        sys/arch/arm/include/mutex.h: revision 1.29
        sys/arch/powerpc/include/mutex.h: revision 1.8
        sys/uvm/uvm_param.h: revision 1.42
        sys/sys/ksem.h: revision 1.16
        sys/arch/x86/include/mutex.h: revision 1.10
        sys/sys/proc.h: revision 1.372
        sys/sys/ksem.h: revision 1.17
        sys/arch/ia64/include/mutex.h: revision 1.8
        sys/arch/evbarm/include/intr.h: revision 1.29
        sys/sys/lua.h: revision 1.9
        sys/arch/next68k/include/intr.h: revision 1.23
        sys/arch/ia64/include/mutex.h: revision 1.9
        sys/arch/hp300/include/intr.h: revision 1.35
        sys/arch/hp300/include/intr.h: revision 1.36
        sys/arch/sparc/include/cpu.h: revision 1.111
        sys/arch/hppa/include/mutex.h: revision 1.16
        sys/arch/vax/include/intr.h: revision 1.31
        sys/arch/hppa/include/mutex.h: revision 1.17
        sys/arch/news68k/include/intr.h: revision 1.28
        sys/arch/hppa/include/mutex.h: revision 1.18
        sys/arch/hppa/include/intr.h: revision 1.3
        sys/arch/hppa/include/mutex.h: revision 1.19
        sys/arch/hppa/include/intr.h: revision 1.4
        sys/sys/sched.h: revision 1.92
        sys/opencrypto/cryptodev.h: revision 1.51
        sys/arch/vax/include/mutex.h: revision 1.20
        sys/arch/sparc64/include/mutex.h: revision 1.10
        sys/arch/ia64/include/sapicvar.h: revision 1.2
        sys/arch/riscv/include/mutex.h: revision 1.5
        sys/arch/amiga/dev/grfabs_cc.c: revision 1.39
        sys/external/bsd/drm2/include/linux/idr.h: revision 1.11
        sys/arch/riscv/include/mutex.h: revision 1.6
        sys/ddb/files.ddb: revision 1.16
        sys/arch/mac68k/include/intr.h: revision 1.32
        share/man/man4/ddb.4: revision 1.203
        sys/ddb/db_command.c: revision 1.183
        sys/arch/mips/include/mutex.h: revision 1.10
        sys/ddb/db_command.c: revision 1.184
        sys/arch/x68k/include/intr.h: revision 1.22
        sys/arch/sparc/include/psl.h: revision 1.51
        sys/arch/or1k/include/mutex.h: revision 1.4
        sys/arch/mips/include/mutex.h: revision 1.11
        sys/arch/arm/xscale/pxa2x0_intr.h: revision 1.16
        sys/arch/sparc64/include/cpu.h: revision 1.134
        sys/arch/sparc/include/psl.h: revision 1.52
        sys/arch/or1k/include/mutex.h: revision 1.5
        sys/arch/mvme68k/include/intr.h: revision 1.22
        sys/arch/luna68k/include/intr.h: revision 1.16
        external/cddl/osnet/sys/sys/kcondvar.h: revision 1.6
        sys/arch/sparc/include/mutex.h: revision 1.12
        sys/arch/sparc/include/mutex.h: revision 1.13
        sys/arch/usermode/include/mutex.h: revision 1.5
        sys/arch/usermode/include/mutex.h: revision 1.6
        sys/kern/kern_core.c: revision 1.38
        usr.sbin/crash/Makefile: revision 1.49
        sys/arch/amiga/include/intr.h: revision 1.23
        sys/arch/alpha/include/mutex.h: revision 1.12
        sys/arch/alpha/include/mutex.h: revision 1.13
        sys/arch/evbarm/lubbock/sacc_obio.c: revision 1.16
        sys/ddb/ddb.h: revision 1.6
        sys/arch/sparc64/include/mutex.h: revision 1.8
        sys/arch/sh3/include/mutex.h: revision 1.12
        sys/arch/evbarm/lubbock/sacc_obio.c: revision 1.17
        sys/ddb/db_syncobj.c: revision 1.1
        sys/arch/vax/include/mutex.h: revision 1.18
        sys/arch/sparc64/include/psl.h: revision 1.63
        sys/arch/sparc64/include/mutex.h: revision 1.9
        sys/arch/sh3/include/mutex.h: revision 1.13
        sys/arch/evbarm/lubbock/obio.c: revision 1.13
        sys/arch/atari/include/intr.h: revision 1.23
        sys/ddb/db_syncobj.c: revision 1.2
        sys/arch/vax/include/mutex.h: revision 1.19
        sys/arch/evbarm/g42xxeb/obio.c: revision 1.14
        sys/arch/evbarm/g42xxeb/obio.c: revision 1.15
        sys/arch/cesfic/include/intr.h: revision 1.14
        sys/ddb/db_syncobj.h: revision 1.1
        sys/arch/x86/include/cpu.h: revision 1.134
        sys/arch/evbarm/g42xxeb/obio.c: revision 1.16
        sys/arch/cesfic/include/intr.h: revision 1.15
        sys/arch/arm/xscale/pxa2x0_intr.c: revision 1.26
        sys/sys/cpu_data.h: revision 1.54
        sys/arch/m68k/include/mutex.h: revision 1.12
        sys/arch/ia64/acpi/madt.c: revision 1.6

sys/rwlock.h: Make this more self-contained for bool.

machine/mutex.h: Sprinkle includes so this can be used by crash(8).

ddb: New `show all tstiles' command.
Shows who's waiting for which locks and what the owner is up to.

Include psl.h for ipl_cookie_t if __MUTEX_PRIVATE

sys: Rip <sys/resourcevar.h> out of <uvm/uvm_param.h>.

And thus out of <sys/param.h>, which is exceedingly overused and
fragile and delenda est.

Should fix (some) issues with the recent inclusion of machine/lock.h
in various machine/mutex.h files.

arm/mutex.h: Need machine/intr.h, machine/lock.h.

For ipl_cookie_t and __cpu_simple_lock_t.
evbarm/intr.h: Define ipl_cookie_t before including ARM_INTR_IMPL.

Otherwise arm/mutex.h doesn't work, due to a cyclic dependency which
should really be fixed.
opencrypto/cryptodev.h: Fix includes.
- Move sys/condvar.h under #ifdef _KERNEL.
- Add some other necessary includes and forward declarations.
- Sort.

hp300/intr.h: Fix missing includes.
linux/idr.h: Need <sys/mutex.h> for kmutex_t.
amiga/intr.h: Don't define spl*() functions if !_KERNEL.

This is used by crash(8) now, and what's important is ipl_cookie_t.
cesfic/intr.h: Expose ipl_cookie_t to userland for crash(8).
cesfic/intr.h: Expose ipl_cookie_t to userland only with _KMEMUSER.

Probably not necessary but let's be a little more cautious about
this.

atari/intr.h: Expose ipl_cookie_t with _KMEMUSER for crash(8).

arm/cpu.h: Need sys/param.h for COHERENCY_UNIT.

Nix machine/param.h -- not meant to be used directly, pulled in by
sys/param.h.

Move the definition of ipl_cookie_t out of the kernel-only sections,
some _KMEMUSER applications need it.

ddb: Cast pointer to uintptr_t first before db_expr_t.

hppa/intr.h: Expose ipl_cookie_t to _KMEMUSER for crash(8).

luna68k/intr.h: Expose ipl_cookie_t to _KMEMUSER for crash(8).

mvme68k/intr.h: Expose ipl_cookie_t to _KMEMUSER for crash(8).

news68k/intr.h: Fix includes.  Put some definitions under _KERNEL.

next68k/intr.h: Expose ipl_cookie_t to _KMEMUSER for crash(8).

sys/ksem.h: Hack around fstat(8) abuse of _KERNEL.

sun68k/intr.h: Expose ipl_cookie_t to _KMEMUSER for crash(8).

vax/intr.h: Expose ipl_cookie_t to _KMEMUSER for crash(8).

x68k/intr.h: Put functions under _KERNEL so crash(8) can use this.

Make ipl_cookie_t visible for _KMEMUSER userland applications.

fix editor mishap in previous

Explicitly include <sys/mutex.h> for kmutex_t.

Replace kmutex_t * (which may be undefined here) with struct kmutex *,
suggested by Taylor.

hp300/intr.h: Put most of this under #ifdef _KERNEL.
Only ipl_cookie_t really needs to be exposed now, for crash(8).

mac68k/intr.h: Expose ipl_cookie_t to _KMEMUSER for crash(8).
Make inclusion of sys/intr.h explicit for spl*.

fix hppa and vax builds.

machine/lock.h isn't necessary for __cpu_simple_lock_t, it's in
sys/types.h.  avoids cpu_data.h vs sched.h include order issues.

move the hppa ipl_t typedef with the moved usage of it.
machine/mutex.h: Sprinkle sys/types.h, omit machine/lock.h.

Turns out machine/lock.h is not needed for __cpu_simple_lock_t, which
always comes from sys/types.h.  And, really, sys/types.h (or at least
sys/stdint.h) is needed for uintN_t and uintptr_t.

ddb: Cast pointer to uintptr_t, then to db_expr_t.
Avoids warnings about conversion between pointer and integer of
different size on some architectures.

re-fix hppa builds.

this file uses __cpu_simple_lock(), not just the underlying type,
so it does need machine/lock.h.

Break cycle by using `struct kmutex *' instead of `kmutex_t *'.
sys/sched.h included sys/mutex.h
which includes sys/intr.h
which includes machine/intr.h
which on cats includes arm/footbridge/footbridge_intr.h
which includes arm/cpu.h
which includes sys/cpu_data.h
which includes sys/sched.h

But there was never any real need for sys/mutex.h in sys/sched.h,
because it only uses pointers to the opaque struct kmutex.  Cycle
broken by using `struct kmutex *' instead of pulling in sys/mutex.h
for the definition of kmutex_t.

Side effect: This revealed that sys/cpu_data.h needed sys/intr.h
(which was pulled in accidentally by sys/mutex.h via sys/sched.h) for
SOFTINT_COUNT.  Also revealed some other machine/cpu.h header files
were missing includes of sys/mutex.h for kmutex_t.

ia64: Need sys/types.h for u_int, vaddr_t; sys/mutex.h for kmutex_t.

explicitly include no longer implicitly included sys/mutex.h.

arm/xscale: Use sys/bitops.h fls32 - 1 instead of 31 - __builtin_clz.
Sidesteps namespace collision with `#define bits ...' in net/zlib.c.

complete the previous - there were two calls to find_first_bit() to fix.

arm/xscale: Missed a spot with previous find_first_bit commit.

evbarm/g42xxeb: Fix off-by-one in previous.

The original find_first_bit(x) was 31 - __builtin_clz((uint32_t)x),
which is equivalent to fls32(x) - 1, not to fls32(x).

Note that fls32 is 1-based and returns 0 for x=0.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.5.2.1 src/external/cddl/osnet/sys/sys/kcondvar.h
cvs rdiff -u -r1.202 -r1.202.2.1 src/share/man/man4/ddb.4
cvs rdiff -u -r1.11 -r1.11.4.1 src/sys/arch/alpha/include/mutex.h
cvs rdiff -u -r1.37 -r1.37.4.1 src/sys/arch/amiga/dev/grfabs_cc.c
cvs rdiff -u -r1.22 -r1.22.20.1 src/sys/arch/amiga/include/intr.h
cvs rdiff -u -r1.123 -r1.123.4.1 src/sys/arch/arm/include/cpu.h
cvs rdiff -u -r1.27 -r1.27.4.1 src/sys/arch/arm/include/mutex.h
cvs rdiff -u -r1.25 -r1.25.2.1 src/sys/arch/arm/xscale/pxa2x0_intr.c
cvs rdiff -u -r1.15 -r1.15.34.1 src/sys/arch/arm/xscale/pxa2x0_intr.h
cvs rdiff -u -r1.22 -r1.22.16.1 src/sys/arch/atari/include/intr.h
cvs rdiff -u -r1.13 -r1.13.78.1 src/sys/arch/cesfic/include/intr.h
cvs rdiff -u -r1.13 -r1.13.6.1 src/sys/arch/evbarm/g42xxeb/obio.c
cvs rdiff -u -r1.28 -r1.28.20.1 src/sys/arch/evbarm/include/intr.h
cvs rdiff -u -r1.12 -r1.12.6.1 src/sys/arch/evbarm/lubbock/obio.c
cvs rdiff -u -r1.15 -r1.15.6.1 src/sys/arch/evbarm/lubbock/sacc_obio.c
cvs rdiff -u -r1.34 -r1.34.86.1 src/sys/arch/hp300/include/intr.h
cvs rdiff -u -r1.2 -r1.2.4.1 src/sys/arch/hppa/include/intr.h
cvs rdiff -u -r1.15 -r1.15.26.1 src/sys/arch/hppa/include/mutex.h
cvs rdiff -u -r1.5 -r1.5.2.1 src/sys/arch/ia64/acpi/madt.c
cvs rdiff -u -r1.7 -r1.7.4.1 src/sys/arch/ia64/include/mutex.h
cvs rdiff -u -r1.1 -r1.1.96.1 src/sys/arch/ia64/include/sapicvar.h
cvs rdiff -u -r1.15 -r1.15.60.1 src/sys/arch/luna68k/include/intr.h
cvs rdiff -u -r1.11 -r1.11.4.1 src/sys/arch/m68k/include/mutex.h
cvs rdiff -u -r1.31 -r1.31.112.1 src/sys/arch/mac68k/include/intr.h
cvs rdiff -u -r1.9 -r1.9.4.1 src/sys/arch/mips/include/mutex.h
cvs rdiff -u -r1.21 -r1.21.32.1 src/sys/arch/mvme68k/include/intr.h
cvs rdiff -u -r1.27 -r1.27.32.1 src/sys/arch/news68k/include/intr.h
cvs rdiff -u -r1.22 -r1.22.32.1 src/sys/arch/next68k/include/intr.h
cvs rdiff -u -r1.3 -r1.3.4.1 src/sys/arch/or1k/include/mutex.h
cvs rdiff -u -r1.6 -r1.6.26.1 src/sys/arch/powerpc/include/mutex.h
cvs rdiff -u -r1.4 -r1.4.4.1 src/sys/arch/riscv/include/mutex.h
cvs rdiff -u -r1.11 -r1.11.4.1 src/sys/arch/sh3/include/mutex.h
cvs rdiff -u -r1.110 -r1.110.4.1 src/sys/arch/sparc/include/cpu.h
cvs rdiff -u -r1.11 -r1.11.26.1 src/sys/arch/sparc/include/mutex.h
cvs rdiff -u -r1.50 -r1.50.4.1 src/sys/arch/sparc/include/psl.h
cvs rdiff -u -r1.133 -r1.133.4.1 src/sys/arch/sparc64/include/cpu.h
cvs rdiff -u -r1.7 -r1.7.4.1 src/sys/arch/sparc64/include/mutex.h
cvs rdiff -u -r1.62 -r1.62.4.1 src/sys/arch/sparc64/include/psl.h
cvs rdiff -u -r1.20 -r1.20.114.1 src/sys/arch/sun68k/include/intr.h
cvs rdiff -u -r1.4 -r1.4.26.1 src/sys/arch/usermode/include/mutex.h
cvs rdiff -u -r1.30 -r1.30.4.1 src/sys/arch/vax/include/intr.h
cvs rdiff -u -r1.17 -r1.17.4.1 src/sys/arch/vax/include/mutex.h
cvs rdiff -u -r1.21 -r1.21.60.1 src/sys/arch/x68k/include/intr.h
cvs rdiff -u -r1.133 -r1.133.4.1 src/sys/arch/x86/include/cpu.h
cvs rdiff -u -r1.9 -r1.9.22.1 src/sys/arch/x86/include/mutex.h
cvs rdiff -u -r1.181.4.1 -r1.181.4.2 src/sys/ddb/db_command.c
cvs rdiff -u -r0 -r1.2.2.2 src/sys/ddb/db_syncobj.c
cvs rdiff -u -r0 -r1.1.2.2 src/sys/ddb/db_syncobj.h
cvs rdiff -u -r1.5 -r1.5.20.1 src/sys/ddb/ddb.h
cvs rdiff -u -r1.15 -r1.15.4.1 src/sys/ddb/files.ddb
cvs rdiff -u -r1.10 -r1.10.2.1 src/sys/external/bsd/drm2/include/linux/idr.h
cvs rdiff -u -r1.37 -r1.37.4.1 src/sys/kern/kern_core.c
cvs rdiff -u -r1.50 -r1.50.4.1 src/sys/opencrypto/cryptodev.h
cvs rdiff -u -r1.52 -r1.52.20.1 src/sys/sys/cpu_data.h
cvs rdiff -u -r1.15 -r1.15.30.1 src/sys/sys/ksem.h
cvs rdiff -u -r1.8 -r1.8.48.1 src/sys/sys/lua.h
cvs rdiff -u -r1.370.4.1 -r1.370.4.2 src/sys/sys/proc.h
cvs rdiff -u -r1.17 -r1.17.2.1 src/sys/sys/rwlock.h
cvs rdiff -u -r1.91 -r1.91.2.1 src/sys/sys/sched.h
cvs rdiff -u -r1.41 -r1.41.20.1 src/sys/uvm/uvm_param.h
cvs rdiff -u -r1.46.6.1 -r1.46.6.2 src/usr.sbin/crash/Makefile

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/cddl/osnet/sys/sys/kcondvar.h
diff -u src/external/cddl/osnet/sys/sys/kcondvar.h:1.5 src/external/cddl/osnet/sys/sys/kcondvar.h:1.5.2.1
--- src/external/cddl/osnet/sys/sys/kcondvar.h:1.5	Sat Jul 30 12:59:31 2022
+++ src/external/cddl/osnet/sys/sys/kcondvar.h	Wed Aug  9 17:42:04 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: kcondvar.h,v 1.5 2022/07/30 12:59:31 riastradh Exp $	*/
+/*	$NetBSD: kcondvar.h,v 1.5.2.1 2023/08/09 17:42:04 martin Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -48,7 +48,7 @@ typedef enum {
 #define	cv_init(a, b, c, d)	cv_init(a, #a)
 
 static inline clock_t
-cv_timedwait_hires(kcondvar_t *cvp, kmutex_t *mp, hrtime_t tim, hrtime_t res,
+cv_timedwait_hires(kcondvar_t *cvp, struct kmutex *mp, hrtime_t tim, hrtime_t res,
     int flag)
 {
 	extern int hz;
@@ -58,7 +58,7 @@ cv_timedwait_hires(kcondvar_t *cvp, kmut
 }
 
 static inline clock_t
-cv_reltimedwait(kcondvar_t *cvp, kmutex_t *mp, clock_t delta, time_res_t res)
+cv_reltimedwait(kcondvar_t *cvp, struct kmutex *mp, clock_t delta, time_res_t res)
 {
 
 	cv_wait(cvp, mp);
@@ -67,7 +67,7 @@ cv_reltimedwait(kcondvar_t *cvp, kmutex_
 
 #else
 
-extern	clock_t cv_timedwait_hires(kcondvar_t *, kmutex_t *, hrtime_t, hrtime_t,
+extern	clock_t cv_timedwait_hires(kcondvar_t *, struct kmutex *, hrtime_t, hrtime_t,
     int);
 
 #endif	/* _KERNEL */

Index: src/share/man/man4/ddb.4
diff -u src/share/man/man4/ddb.4:1.202 src/share/man/man4/ddb.4:1.202.2.1
--- src/share/man/man4/ddb.4:1.202	Thu Apr 28 07:17:52 2022
+++ src/share/man/man4/ddb.4	Wed Aug  9 17:42:03 2023
@@ -1,4 +1,4 @@
-.\"	$NetBSD: ddb.4,v 1.202 2022/04/28 07:17:52 msaitoh Exp $
+.\"	$NetBSD: ddb.4,v 1.202.2.1 2023/08/09 17:42:03 martin Exp $
 .\"
 .\" Copyright (c) 1997 - 2019 The NetBSD Foundation, Inc.
 .\" All rights reserved.
@@ -616,6 +616,14 @@ LWP name and wait channel message.
 LWPs currently running on a CPU are marked with the '\&>' sign.
 This is the default.
 .El
+.It Ic show all tstiles Ns Oo Cm /t Oc
+Display all lwps that are currently waiting in turnstiles to acquire
+locks, which locks they are waiting for, and who currently holds them.
+Valid modifiers:
+.Bl -tag -width 3n
+.It Cm /t
+show a stack trace of the lwp that currently holds each lock
+.El
 .It Ic show routes
 Dump the entire
 .Dv AF_INET

Index: src/sys/arch/alpha/include/mutex.h
diff -u src/sys/arch/alpha/include/mutex.h:1.11 src/sys/arch/alpha/include/mutex.h:1.11.4.1
--- src/sys/arch/alpha/include/mutex.h:1.11	Wed Aug 25 04:13:41 2021
+++ src/sys/arch/alpha/include/mutex.h	Wed Aug  9 17:42:05 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: mutex.h,v 1.11 2021/08/25 04:13:41 thorpej Exp $	*/
+/*	$NetBSD: mutex.h,v 1.11.4.1 2023/08/09 17:42:05 martin Exp $	*/
 
 /*-
  * Copyright (c) 2002, 2006, 2007 The NetBSD Foundation, Inc.
@@ -32,6 +32,8 @@
 #ifndef _ALPHA_MUTEX_H_
 #define	_ALPHA_MUTEX_H_
 
+#include <sys/types.h>
+
 #ifndef __MUTEX_PRIVATE
 
 struct kmutex {
@@ -40,6 +42,8 @@ struct kmutex {
 
 #else	/* __MUTEX_PRIVATE */
 
+#include <machine/intr.h>
+
 struct kmutex {
 	union {
 		volatile uintptr_t	mtxa_owner;

Index: src/sys/arch/amiga/dev/grfabs_cc.c
diff -u src/sys/arch/amiga/dev/grfabs_cc.c:1.37 src/sys/arch/amiga/dev/grfabs_cc.c:1.37.4.1
--- src/sys/arch/amiga/dev/grfabs_cc.c:1.37	Sat Mar 26 17:15:18 2022
+++ src/sys/arch/amiga/dev/grfabs_cc.c	Wed Aug  9 17:42:03 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: grfabs_cc.c,v 1.37 2022/03/26 17:15:18 andvar Exp $ */
+/*	$NetBSD: grfabs_cc.c,v 1.37.4.1 2023/08/09 17:42:03 martin Exp $ */
 
 /*
  * Copyright (c) 1994 Christian E. Hopps
@@ -38,12 +38,13 @@
 #include "opt_amigaccgrf.h"
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: grfabs_cc.c,v 1.37 2022/03/26 17:15:18 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: grfabs_cc.c,v 1.37.4.1 2023/08/09 17:42:03 martin Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/errno.h>
 #include <sys/queue.h>
+#include <sys/intr.h>
 
 #include <amiga/amiga/custom.h>
 #include <amiga/amiga/cc.h>

Index: src/sys/arch/amiga/include/intr.h
diff -u src/sys/arch/amiga/include/intr.h:1.22 src/sys/arch/amiga/include/intr.h:1.22.20.1
--- src/sys/arch/amiga/include/intr.h:1.22	Mon Aug 10 10:59:33 2020
+++ src/sys/arch/amiga/include/intr.h	Wed Aug  9 17:42:05 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: intr.h,v 1.22 2020/08/10 10:59:33 rin Exp $	*/
+/*	$NetBSD: intr.h,v 1.22.20.1 2023/08/09 17:42:05 martin Exp $	*/
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -58,6 +58,8 @@ typedef struct {
 	uint16_t _ipl;
 } ipl_cookie_t;
 
+#ifdef _KERNEL
+
 static inline ipl_cookie_t
 makeiplcookie(ipl_t ipl)
 {
@@ -105,4 +107,6 @@ extern int _spllkm7(void);
 
 #define splx(s)		_spl(s)
 
+#endif	/* _KERNEL */
+
 #endif	/* !_AMIGA_INTR_H_ */

Index: src/sys/arch/arm/include/cpu.h
diff -u src/sys/arch/arm/include/cpu.h:1.123 src/sys/arch/arm/include/cpu.h:1.123.4.1
--- src/sys/arch/arm/include/cpu.h:1.123	Sat Jun 25 12:41:56 2022
+++ src/sys/arch/arm/include/cpu.h	Wed Aug  9 17:42:01 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu.h,v 1.123 2022/06/25 12:41:56 jmcneill Exp $	*/
+/*	$NetBSD: cpu.h,v 1.123.4.1 2023/08/09 17:42:01 martin Exp $	*/
 
 /*
  * Copyright (c) 1994-1996 Mark Brinicombe.
@@ -150,6 +150,8 @@ static inline void set_curcpl(int);
 static inline void cpu_dosoftints(void);
 #endif
 
+#include <sys/param.h>
+
 #ifdef _KMEMUSER
 #include <sys/intr.h>
 #endif
@@ -158,8 +160,6 @@ static inline void cpu_dosoftints(void);
 #include <sys/device_if.h>
 #include <sys/evcnt.h>
 
-#include <machine/param.h>
-
 /*
  * Cache info variables.
  */

Index: src/sys/arch/arm/include/mutex.h
diff -u src/sys/arch/arm/include/mutex.h:1.27 src/sys/arch/arm/include/mutex.h:1.27.4.1
--- src/sys/arch/arm/include/mutex.h:1.27	Sun Dec 26 08:41:29 2021
+++ src/sys/arch/arm/include/mutex.h	Wed Aug  9 17:42:01 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: mutex.h,v 1.27 2021/12/26 08:41:29 skrll Exp $	*/
+/*	$NetBSD: mutex.h,v 1.27.4.1 2023/08/09 17:42:01 martin Exp $	*/
 
 /*-
  * Copyright (c) 2002, 2007 The NetBSD Foundation, Inc.
@@ -32,6 +32,12 @@
 #ifndef _ARM_MUTEX_H_
 #define	_ARM_MUTEX_H_
 
+#include <sys/types.h>
+
+#ifdef _KERNEL
+#include <machine/intr.h>
+#endif
+
 /*
  * The ARM mutex implementation is troublesome, because pre-v6 ARM lacks a
  * compare-and-swap operation.  However, there aren't any MP pre-v6 ARM

Index: src/sys/arch/arm/xscale/pxa2x0_intr.c
diff -u src/sys/arch/arm/xscale/pxa2x0_intr.c:1.25 src/sys/arch/arm/xscale/pxa2x0_intr.c:1.25.2.1
--- src/sys/arch/arm/xscale/pxa2x0_intr.c:1.25	Mon Oct 31 21:22:05 2022
+++ src/sys/arch/arm/xscale/pxa2x0_intr.c	Wed Aug  9 17:42:04 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: pxa2x0_intr.c,v 1.25 2022/10/31 21:22:05 andvar Exp $	*/
+/*	$NetBSD: pxa2x0_intr.c,v 1.25.2.1 2023/08/09 17:42:04 martin Exp $	*/
 
 /*
  * Copyright (c) 2002  Genetec Corporation.  All rights reserved.
@@ -39,12 +39,14 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pxa2x0_intr.c,v 1.25 2022/10/31 21:22:05 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pxa2x0_intr.c,v 1.25.2.1 2023/08/09 17:42:04 martin Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
 
 #include <sys/bus.h>
+#include <sys/bitops.h>
+
 #include <machine/intr.h>
 #include <machine/lock.h>
 
@@ -161,7 +163,7 @@ pxa2x0_irq_handler(void *arg)
 	/* get pending IRQs */
 	irqbits = read_icu(SAIPIC_IP);
 
-	while ((irqno = find_first_bit(irqbits)) >= 0) {
+	while ((irqno = fls32(irqbits) - 1) >= 0) {
 		/* XXX: Should we handle IRQs in priority order? */
 
 		/* raise spl to stop interrupts of lower priorities */

Index: src/sys/arch/arm/xscale/pxa2x0_intr.h
diff -u src/sys/arch/arm/xscale/pxa2x0_intr.h:1.15 src/sys/arch/arm/xscale/pxa2x0_intr.h:1.15.34.1
--- src/sys/arch/arm/xscale/pxa2x0_intr.h:1.15	Wed Jan 24 09:04:45 2018
+++ src/sys/arch/arm/xscale/pxa2x0_intr.h	Wed Aug  9 17:42:04 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: pxa2x0_intr.h,v 1.15 2018/01/24 09:04:45 skrll Exp $ */
+/*	$NetBSD: pxa2x0_intr.h,v 1.15.34.1 2023/08/09 17:42:04 martin Exp $ */
 
 /* Derived from i80321_intr.h */
 
@@ -114,21 +114,6 @@ pxa2x0_spllower(int ipl)
 	return old;
 }
 
-/*
- * An useful function for interrupt handlers.
- * XXX: This shouldn't be here.
- */
-static inline int
-find_first_bit(uint32_t bits)
-{
-	/*
-	 * Since CLZ is available only on ARMv5, this isn't portable
-	 * to all ARM CPUs.  This file is for PXA2[15]0 processor. 
-	 */
-	return 31 - __builtin_clz(bits);
-}
-
-
 int	_splraise(int);
 int	_spllower(int);
 void	splx(int);

Index: src/sys/arch/atari/include/intr.h
diff -u src/sys/arch/atari/include/intr.h:1.22 src/sys/arch/atari/include/intr.h:1.22.16.1
--- src/sys/arch/atari/include/intr.h:1.22	Fri Apr  2 12:11:41 2021
+++ src/sys/arch/atari/include/intr.h	Wed Aug  9 17:42:05 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: intr.h,v 1.22 2021/04/02 12:11:41 rin Exp $	*/
+/*	$NetBSD: intr.h,v 1.22.16.1 2023/08/09 17:42:05 martin Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997, 2007 The NetBSD Foundation, Inc.
@@ -48,6 +48,12 @@
 #define	IST_EDGE	2	/* edge-triggered		*/
 #define	IST_LEVEL	3	/* level-triggered		*/
 
+#if defined(_KERNEL) || defined(_KMEMUSER)
+typedef struct {
+	uint16_t _psl;
+} ipl_cookie_t;
+#endif
+
 /*
  * spl functions; all but spl0 are done in-line
  */
@@ -71,9 +77,6 @@ extern const uint16_t ipl2psl_table[NIPL
 extern int idepth;
 
 typedef int ipl_t;
-typedef struct {
-	uint16_t _psl;
-} ipl_cookie_t;
 
 static inline ipl_cookie_t
 makeiplcookie(ipl_t ipl)

Index: src/sys/arch/cesfic/include/intr.h
diff -u src/sys/arch/cesfic/include/intr.h:1.13 src/sys/arch/cesfic/include/intr.h:1.13.78.1
--- src/sys/arch/cesfic/include/intr.h:1.13	Thu Dec 22 15:06:17 2011
+++ src/sys/arch/cesfic/include/intr.h	Wed Aug  9 17:42:05 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: intr.h,v 1.13 2011/12/22 15:06:17 tsutsui Exp $	*/
+/*	$NetBSD: intr.h,v 1.13.78.1 2023/08/09 17:42:05 martin Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -46,6 +46,14 @@
  */
 #include <machine/psl.h>
 
+#if (defined(_KERNEL) || defined(_KMEMUSER)) && !defined(_LOCORE)
+
+typedef struct {
+	uint16_t _psl;
+} ipl_cookie_t;
+
+#endif
+
 #if defined(_KERNEL) && !defined(_LOCORE)
 /* spl0 requires checking for software interrupts */
 #define spl1()  _spl(PSL_S|PSL_IPL1)
@@ -83,9 +91,6 @@ int	spl0(void);
 extern const uint16_t ipl2psl_table[NIPL];
 
 typedef int ipl_t;
-typedef struct {
-	uint16_t _psl;
-} ipl_cookie_t;
 
 static inline ipl_cookie_t
 makeiplcookie(ipl_t ipl)

Index: src/sys/arch/evbarm/g42xxeb/obio.c
diff -u src/sys/arch/evbarm/g42xxeb/obio.c:1.13 src/sys/arch/evbarm/g42xxeb/obio.c:1.13.6.1
--- src/sys/arch/evbarm/g42xxeb/obio.c:1.13	Sat Aug  7 16:18:49 2021
+++ src/sys/arch/evbarm/g42xxeb/obio.c	Wed Aug  9 17:42:05 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: obio.c,v 1.13 2021/08/07 16:18:49 thorpej Exp $ */
+/*	$NetBSD: obio.c,v 1.13.6.1 2023/08/09 17:42:05 martin Exp $ */
 
 /*
  * Copyright (c) 2002, 2003, 2005  Genetec corp.  All rights reserved.
@@ -35,6 +35,7 @@
 #include <sys/device.h>
 #include <sys/kernel.h>
 #include <sys/reboot.h>
+#include <sys/bitops.h>
 
 #include <machine/cpu.h>
 #include <sys/bus.h>
@@ -98,7 +99,7 @@ obio_intr(void *arg)
 #endif
 
 	for (pending = get_pending(sc);
-	     (irqno = find_first_bit(pending)) >= 0;
+	     (irqno = fls32(pending) - 1) >= 0;
 	     pending = get_pending(sc)) {
 
 		/* reset pending bit */
@@ -155,7 +156,7 @@ obio_softint(void *arg)
 	int psw;
 
 	psw = disable_interrupts(I32_bit);
-	while ((irqno = find_first_bit(sc->sc_intr_pending)) >= 0) {
+	while ((irqno = fls32(sc->sc_intr_pending) - 1) >= 0) {
 		sc->sc_intr_pending &= ~(1U<<irqno);
 
 		restore_interrupts(psw);

Index: src/sys/arch/evbarm/include/intr.h
diff -u src/sys/arch/evbarm/include/intr.h:1.28 src/sys/arch/evbarm/include/intr.h:1.28.20.1
--- src/sys/arch/evbarm/include/intr.h:1.28	Mon Jul 27 10:37:58 2020
+++ src/sys/arch/evbarm/include/intr.h	Wed Aug  9 17:42:02 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: intr.h,v 1.28 2020/07/27 10:37:58 skrll Exp $	*/
+/*	$NetBSD: intr.h,v 1.28.20.1 2023/08/09 17:42:02 martin Exp $	*/
 
 /*
  * Copyright (c) 2001, 2003 Wasabi Systems, Inc.
@@ -71,6 +71,11 @@
 
 #include <sys/queue.h>
 
+typedef uint8_t ipl_t;
+typedef struct {
+	ipl_t _ipl;
+} ipl_cookie_t;
+
 #if defined(_MODULE)
 
 int	_splraise(int);
@@ -124,11 +129,6 @@ void	splx(int);
 
 #endif /* _MODULE */
 
-typedef uint8_t ipl_t;
-typedef struct {
-	ipl_t _ipl;
-} ipl_cookie_t;
-
 static inline ipl_cookie_t
 makeiplcookie(ipl_t ipl)
 {

Index: src/sys/arch/evbarm/lubbock/obio.c
diff -u src/sys/arch/evbarm/lubbock/obio.c:1.12 src/sys/arch/evbarm/lubbock/obio.c:1.12.6.1
--- src/sys/arch/evbarm/lubbock/obio.c:1.12	Sat Aug  7 16:18:50 2021
+++ src/sys/arch/evbarm/lubbock/obio.c	Wed Aug  9 17:42:05 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: obio.c,v 1.12 2021/08/07 16:18:50 thorpej Exp $ */
+/*	$NetBSD: obio.c,v 1.12.6.1 2023/08/09 17:42:05 martin Exp $ */
 
 /*
  * Copyright (c) 2002, 2003  Genetec Corporation.  All rights reserved.
@@ -35,13 +35,14 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: obio.c,v 1.12 2021/08/07 16:18:50 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: obio.c,v 1.12.6.1 2023/08/09 17:42:05 martin Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/device.h>
 #include <sys/kernel.h>
 #include <sys/reboot.h>
+#include <sys/bitops.h>
 
 #include <machine/cpu.h>
 #include <sys/bus.h>
@@ -163,7 +164,7 @@ obio_softintr(void *arg)
 	int spl_save = curcpl();
 
 	psw = disable_interrupts(I32_bit);
-	while ((irqno = find_first_bit(sc->sc_obio_intr_pending)) >= 0) {
+	while ((irqno = fls32(sc->sc_obio_intr_pending) - 1) >= 0) {
 		sc->sc_obio_intr_pending &= ~(1U<<irqno);
 
 		restore_interrupts(psw);

Index: src/sys/arch/evbarm/lubbock/sacc_obio.c
diff -u src/sys/arch/evbarm/lubbock/sacc_obio.c:1.15 src/sys/arch/evbarm/lubbock/sacc_obio.c:1.15.6.1
--- src/sys/arch/evbarm/lubbock/sacc_obio.c:1.15	Sat Aug  7 16:18:50 2021
+++ src/sys/arch/evbarm/lubbock/sacc_obio.c	Wed Aug  9 17:42:05 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: sacc_obio.c,v 1.15 2021/08/07 16:18:50 thorpej Exp $ */
+/*	$NetBSD: sacc_obio.c,v 1.15.6.1 2023/08/09 17:42:05 martin Exp $ */
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sacc_obio.c,v 1.15 2021/08/07 16:18:50 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sacc_obio.c,v 1.15.6.1 2023/08/09 17:42:05 martin Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -45,6 +45,7 @@ __KERNEL_RCSID(0, "$NetBSD: sacc_obio.c,
 #include <sys/syslog.h>
 #include <sys/select.h>
 #include <sys/device.h>
+#include <sys/bitops.h>
 
 #include <net/if.h>
 #include <net/if_dl.h>
@@ -197,7 +198,7 @@ sacc_obio_intr(void *arg)
 	    bus_space_read_4(sc->sc_iot, sc->sc_ioh, SACCIC_INTSTATCLR1);
 	DPRINTF(("sacc_obio_intr_dispatch: %x %x\n", intstat.lo, intstat.hi));
 
-	while ((i = find_first_bit(intstat.lo)) >= 0) {
+	while ((i = fls32(intstat.lo) - 1) >= 0) {
 
 		/*
 		 * Clear intr status before calling intr handlers.
@@ -213,7 +214,7 @@ sacc_obio_intr(void *arg)
 		intstat.lo &= ~(1U<<i);
 	}
 
-	while ((i = find_first_bit(intstat.hi)) >= 0) {
+	while ((i = fls32(intstat.hi) - 1) >= 0) {
 		bus_space_write_4(sc->sc_iot, sc->sc_ioh,
 				  SACCIC_INTSTATCLR1, 1U<<i);
 

Index: src/sys/arch/hp300/include/intr.h
diff -u src/sys/arch/hp300/include/intr.h:1.34 src/sys/arch/hp300/include/intr.h:1.34.86.1
--- src/sys/arch/hp300/include/intr.h:1.34	Sun Mar  6 14:51:22 2011
+++ src/sys/arch/hp300/include/intr.h	Wed Aug  9 17:42:02 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: intr.h,v 1.34 2011/03/06 14:51:22 tsutsui Exp $	*/
+/*	$NetBSD: intr.h,v 1.34.86.1 2023/08/09 17:42:02 martin Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997, 1999 The NetBSD Foundation, Inc.
@@ -32,8 +32,12 @@
 #ifndef _HP300_INTR_H_
 #define	_HP300_INTR_H_
 
+#include <sys/types.h>
+
 #include <sys/evcnt.h>
 #include <sys/queue.h>
+#include <sys/stdbool.h>
+
 #include <machine/psl.h>
 
 /*
@@ -78,6 +82,8 @@ typedef struct {
 	uint16_t _psl;
 } ipl_cookie_t;
 
+#ifdef _KERNEL
+
 static inline ipl_cookie_t
 makeiplcookie(ipl_t ipl)
 {
@@ -133,4 +139,6 @@ void	*intr_establish(int (*)(void *), vo
 void	intr_disestablish(void *);
 void	intr_dispatch(int);
 
+#endif	/* _KERNEL */
+
 #endif /* _HP300_INTR_H_ */

Index: src/sys/arch/hppa/include/intr.h
diff -u src/sys/arch/hppa/include/intr.h:1.2 src/sys/arch/hppa/include/intr.h:1.2.4.1
--- src/sys/arch/hppa/include/intr.h:1.2	Sat Feb 26 03:02:25 2022
+++ src/sys/arch/hppa/include/intr.h	Wed Aug  9 17:42:02 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: intr.h,v 1.2 2022/02/26 03:02:25 macallan Exp $	*/
+/*	$NetBSD: intr.h,v 1.2.4.1 2023/08/09 17:42:02 martin Exp $	*/
 /*	$OpenBSD: intr.h,v 1.26 2009/12/29 13:11:40 jsing Exp $	*/
 
 /*-
@@ -40,6 +40,13 @@
 
 #ifndef _LOCORE
 
+#if defined(_KERNEL) || defined(_KMEMUSER)
+typedef int ipl_t;
+typedef struct {
+	ipl_t _ipl;
+} ipl_cookie_t;
+#endif
+
 #ifdef _KERNEL
 
 struct cpu_info;
@@ -156,11 +163,6 @@ void spllower(int);
 #define	spl0()		spllower(0)
 #define	splx(x)		spllower(x)
 
-typedef int ipl_t;
-typedef struct {
-	ipl_t _ipl;
-} ipl_cookie_t;
-
 static inline ipl_cookie_t
 makeiplcookie(ipl_t ipl)
 {

Index: src/sys/arch/hppa/include/mutex.h
diff -u src/sys/arch/hppa/include/mutex.h:1.15 src/sys/arch/hppa/include/mutex.h:1.15.26.1
--- src/sys/arch/hppa/include/mutex.h:1.15	Tue Jan  7 13:44:23 2020
+++ src/sys/arch/hppa/include/mutex.h	Wed Aug  9 17:42:02 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: mutex.h,v 1.15 2020/01/07 13:44:23 ad Exp $	*/
+/*	$NetBSD: mutex.h,v 1.15.26.1 2023/08/09 17:42:02 martin Exp $	*/
 
 /*-
  * Copyright (c) 2002, 2007 The NetBSD Foundation, Inc.
@@ -42,7 +42,12 @@
 
 #ifndef __ASSEMBLER__
 
+#include <sys/types.h>
+
+#ifdef __MUTEX_PRIVATE
 #include <machine/lock.h>
+#include <machine/intr.h>
+#endif
 
 struct kmutex {
 	union {
@@ -82,7 +87,7 @@ struct kmutex {
 #define	MUTEX_SPIN_FLAG			0xffffff10
 #define	MUTEX_UNOWNED_OR_SPIN(x)	(((x) & 0xffffffef) == 0xffffff00)
 
-#ifndef __ASSEMBLER__
+#if !defined(__ASSEMBLER__) && defined(_KERNEL)
 
 static inline uintptr_t
 MUTEX_OWNER(uintptr_t owner)
@@ -177,7 +182,7 @@ MUTEX_CLEAR_WAITERS(struct kmutex *mtx)
 	mtx->mtx_waiters = 0;
 }
 
-#endif	/* __ASSEMBLER__ */
+#endif	/* !__ASSEMBLER__ && _KERNEL */
 
 #endif	/* __MUTEX_PRIVATE */
 

Index: src/sys/arch/ia64/acpi/madt.c
diff -u src/sys/arch/ia64/acpi/madt.c:1.5 src/sys/arch/ia64/acpi/madt.c:1.5.2.1
--- src/sys/arch/ia64/acpi/madt.c:1.5	Mon Dec 12 01:07:52 2022
+++ src/sys/arch/ia64/acpi/madt.c	Wed Aug  9 17:42:06 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: madt.c,v 1.5 2022/12/12 01:07:52 gutteridge Exp $	*/
+/*	$NetBSD: madt.c,v 1.5.2.1 2023/08/09 17:42:06 martin Exp $	*/
 /*-
  * Copyright (c) 2001 Doug Rabson
  * All rights reserved.
@@ -29,6 +29,7 @@
 
 #include <sys/param.h>
 #include <sys/reboot.h>
+#include <sys/mutex.h>
 
 #include <machine/md_var.h>
 #include <machine/sapicvar.h>

Index: src/sys/arch/ia64/include/mutex.h
diff -u src/sys/arch/ia64/include/mutex.h:1.7 src/sys/arch/ia64/include/mutex.h:1.7.4.1
--- src/sys/arch/ia64/include/mutex.h:1.7	Wed Apr  6 22:47:57 2022
+++ src/sys/arch/ia64/include/mutex.h	Wed Aug  9 17:42:02 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: mutex.h,v 1.7 2022/04/06 22:47:57 riastradh Exp $	*/
+/*	$NetBSD: mutex.h,v 1.7.4.1 2023/08/09 17:42:02 martin Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -32,6 +32,8 @@
 #ifndef _IA64_MUTEX_H_
 #define	_IA64_MUTEX_H_
 
+#include <sys/types.h>
+
 #ifndef __MUTEX_PRIVATE
 
 struct kmutex {
@@ -41,6 +43,8 @@ struct kmutex {
 
 #else
 
+#include <machine/intr.h>
+
 struct kmutex {
 	volatile uintptr_t	mtx_owner;
 	ipl_cookie_t		mtx_ipl;

Index: src/sys/arch/ia64/include/sapicvar.h
diff -u src/sys/arch/ia64/include/sapicvar.h:1.1 src/sys/arch/ia64/include/sapicvar.h:1.1.96.1
--- src/sys/arch/ia64/include/sapicvar.h:1.1	Mon Jul 20 04:41:37 2009
+++ src/sys/arch/ia64/include/sapicvar.h	Wed Aug  9 17:42:02 2023
@@ -29,6 +29,10 @@
 #ifndef _MACHINE_SAPICVAR_H_
 #define _MACHINE_SAPICVAR_H_
 
+#include <sys/types.h>
+
+#include <sys/mutex.h>
+
 struct sapic {
 	kmutex_t	sa_mtx;
 	vaddr_t		sa_registers;	/* virtual address of sapic */

Index: src/sys/arch/luna68k/include/intr.h
diff -u src/sys/arch/luna68k/include/intr.h:1.15 src/sys/arch/luna68k/include/intr.h:1.15.60.1
--- src/sys/arch/luna68k/include/intr.h:1.15	Sat Mar 22 16:52:07 2014
+++ src/sys/arch/luna68k/include/intr.h	Wed Aug  9 17:42:04 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: intr.h,v 1.15 2014/03/22 16:52:07 tsutsui Exp $ */
+/* $NetBSD: intr.h,v 1.15.60.1 2023/08/09 17:42:04 martin Exp $ */
 
 /*-
  * Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -32,6 +32,12 @@
 #ifndef _MACHINE_INTR_H
 #define _MACHINE_INTR_H
 
+#if defined(_KERNEL) || defined(_KMEMUSER)
+typedef struct {
+	uint16_t _psl;
+} ipl_cookie_t;
+#endif
+
 #ifdef _KERNEL
 
 /*
@@ -62,9 +68,6 @@
 extern const uint16_t ipl2psl_table[NIPL];
 
 typedef int ipl_t;
-typedef struct {
-	uint16_t _psl;
-} ipl_cookie_t;
 
 static inline ipl_cookie_t
 makeiplcookie(ipl_t ipl)

Index: src/sys/arch/m68k/include/mutex.h
diff -u src/sys/arch/m68k/include/mutex.h:1.11 src/sys/arch/m68k/include/mutex.h:1.11.4.1
--- src/sys/arch/m68k/include/mutex.h:1.11	Wed Aug 25 04:13:41 2021
+++ src/sys/arch/m68k/include/mutex.h	Wed Aug  9 17:42:01 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: mutex.h,v 1.11 2021/08/25 04:13:41 thorpej Exp $	*/
+/*	$NetBSD: mutex.h,v 1.11.4.1 2023/08/09 17:42:01 martin Exp $	*/
 
 /*-
  * Copyright (c) 2002, 2007 The NetBSD Foundation, Inc.
@@ -32,6 +32,8 @@
 #ifndef _M68K_MUTEX_H_
 #define	_M68K_MUTEX_H_
 
+#include <sys/types.h>
+
 #ifndef __MUTEX_PRIVATE
 
 struct kmutex {
@@ -40,7 +42,7 @@ struct kmutex {
 
 #else	/* __MUTEX_PRIVATE */
 
-#include <machine/lock.h>
+#include <machine/intr.h>
 
 struct kmutex {
 	union {

Index: src/sys/arch/mac68k/include/intr.h
diff -u src/sys/arch/mac68k/include/intr.h:1.31 src/sys/arch/mac68k/include/intr.h:1.31.112.1
--- src/sys/arch/mac68k/include/intr.h:1.31	Thu Jul 17 16:13:33 2008
+++ src/sys/arch/mac68k/include/intr.h	Wed Aug  9 17:42:03 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: intr.h,v 1.31 2008/07/17 16:13:33 tsutsui Exp $	*/
+/*	$NetBSD: intr.h,v 1.31.112.1 2023/08/09 17:42:03 martin Exp $	*/
 
 /*
  * Copyright (C) 1997 Scott Reynolds
@@ -32,6 +32,12 @@
 
 #include <machine/psl.h>
 
+#if defined(_KERNEL) || defined(_KMEMUSER)
+typedef struct {
+	uint16_t _ipl;
+} ipl_cookie_t;
+#endif
+
 #ifdef _KERNEL
 
 /* spl0 requires checking for software interrupts */
@@ -66,9 +72,6 @@ extern uint16_t ipl2psl_table[NIPL];
 
 
 typedef int ipl_t;
-typedef struct {
-	uint16_t _ipl;
-} ipl_cookie_t;
 
 static inline ipl_cookie_t
 makeiplcookie(ipl_t ipl)

Index: src/sys/arch/mips/include/mutex.h
diff -u src/sys/arch/mips/include/mutex.h:1.9 src/sys/arch/mips/include/mutex.h:1.9.4.1
--- src/sys/arch/mips/include/mutex.h:1.9	Wed Aug 25 04:13:41 2021
+++ src/sys/arch/mips/include/mutex.h	Wed Aug  9 17:42:04 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: mutex.h,v 1.9 2021/08/25 04:13:41 thorpej Exp $	*/
+/*	$NetBSD: mutex.h,v 1.9.4.1 2023/08/09 17:42:04 martin Exp $	*/
 
 /*-
  * Copyright (c) 2002, 2007 The NetBSD Foundation, Inc.
@@ -32,6 +32,8 @@
 #ifndef _MIPS_MUTEX_H_
 #define	_MIPS_MUTEX_H_
 
+#include <sys/types.h>
+
 #ifndef __MUTEX_PRIVATE
 
 struct kmutex {
@@ -41,9 +43,7 @@ struct kmutex {
 
 #else	/* __MUTEX_PRIVATE */
 
-#ifdef __MUTEX_PRIVATE
-#include <machine/lock.h>
-#endif
+#include <machine/intr.h>
 
 struct kmutex {
 	volatile uintptr_t	mtx_owner;

Index: src/sys/arch/mvme68k/include/intr.h
diff -u src/sys/arch/mvme68k/include/intr.h:1.21 src/sys/arch/mvme68k/include/intr.h:1.21.32.1
--- src/sys/arch/mvme68k/include/intr.h:1.21	Thu Apr 19 21:50:07 2018
+++ src/sys/arch/mvme68k/include/intr.h	Wed Aug  9 17:42:04 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: intr.h,v 1.21 2018/04/19 21:50:07 christos Exp $	*/
+/*	$NetBSD: intr.h,v 1.21.32.1 2023/08/09 17:42:04 martin Exp $	*/
 
 /*-
  * Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -44,6 +44,12 @@
 #define	IPL_HIGH	7
 #define	NIPL		8
 
+#if defined(_KERNEL) || defined(_KMEMUSER)
+typedef struct {
+	uint16_t _psl;
+} ipl_cookie_t;
+#endif
+
 #ifdef _KERNEL
 #define spl0()			_spl0()
 #define splsoftclock()		splraise1()
@@ -59,9 +65,6 @@
 extern const uint16_t ipl2psl_table[NIPL];
 
 typedef int ipl_t;
-typedef struct {
-	uint16_t _psl;
-} ipl_cookie_t;
 
 static __inline ipl_cookie_t
 makeiplcookie(ipl_t ipl)

Index: src/sys/arch/news68k/include/intr.h
diff -u src/sys/arch/news68k/include/intr.h:1.27 src/sys/arch/news68k/include/intr.h:1.27.32.1
--- src/sys/arch/news68k/include/intr.h:1.27	Thu Apr 19 21:50:07 2018
+++ src/sys/arch/news68k/include/intr.h	Wed Aug  9 17:42:02 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: intr.h,v 1.27 2018/04/19 21:50:07 christos Exp $	*/
+/*	$NetBSD: intr.h,v 1.27.32.1 2023/08/09 17:42:02 martin Exp $	*/
 
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -32,9 +32,14 @@
 #ifndef _NEWS68K_INTR_H_
 #define	_NEWS68K_INTR_H_
 
+#include <sys/types.h>
+
 #include <sys/evcnt.h>
 #include <sys/queue.h>
+#include <sys/stdbool.h>
+
 #include <machine/psl.h>
+
 #include <m68k/asm_single.h>
 
 #define	IPL_NONE	0
@@ -63,6 +68,8 @@ typedef struct {
 	uint16_t _psl;
 } ipl_cookie_t;
 
+#ifdef _KERNEL
+
 static __inline ipl_cookie_t
 makeiplcookie(ipl_t ipl)
 {
@@ -98,4 +105,6 @@ splx(int sr)
 #define	splhigh()	spl7()
 #define	splsched()	spl7()
 
+#endif
+
 #endif /* _NEWS68K_INTR_H_ */

Index: src/sys/arch/next68k/include/intr.h
diff -u src/sys/arch/next68k/include/intr.h:1.22 src/sys/arch/next68k/include/intr.h:1.22.32.1
--- src/sys/arch/next68k/include/intr.h:1.22	Thu Apr 19 21:50:07 2018
+++ src/sys/arch/next68k/include/intr.h	Wed Aug  9 17:42:02 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: intr.h,v 1.22 2018/04/19 21:50:07 christos Exp $	*/
+/*	$NetBSD: intr.h,v 1.22.32.1 2023/08/09 17:42:02 martin Exp $	*/
 
 /*
  * Copyright (C) 1997 Scott Reynolds
@@ -35,6 +35,12 @@
 
 /* Probably want to dealwith IPL's here @@@ */
 
+#if defined(_KERNEL) || defined(_KMEMUSER)
+typedef struct {
+	uint16_t _psl;
+} ipl_cookie_t;
+#endif
+
 #ifdef _KERNEL
 
 /* spl0 requires checking for software interrupts */
@@ -67,9 +73,6 @@
 extern const uint16_t ipl2psl_table[NIPL];
 
 typedef int ipl_t;
-typedef struct {
-	uint16_t _psl;
-} ipl_cookie_t;
 
 static __inline ipl_cookie_t
 makeiplcookie(ipl_t ipl)

Index: src/sys/arch/or1k/include/mutex.h
diff -u src/sys/arch/or1k/include/mutex.h:1.3 src/sys/arch/or1k/include/mutex.h:1.3.4.1
--- src/sys/arch/or1k/include/mutex.h:1.3	Wed Aug 25 04:13:41 2021
+++ src/sys/arch/or1k/include/mutex.h	Wed Aug  9 17:42:04 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: mutex.h,v 1.3 2021/08/25 04:13:41 thorpej Exp $	*/
+/*	$NetBSD: mutex.h,v 1.3.4.1 2023/08/09 17:42:04 martin Exp $	*/
 
 /*-
  * Copyright (c) 2002, 2007 The NetBSD Foundation, Inc.
@@ -32,6 +32,8 @@
 #ifndef _OR1K_MUTEX_H_
 #define	_OR1K_MUTEX_H_
 
+#include <sys/types.h>
+
 #ifndef __MUTEX_PRIVATE
 
 struct kmutex {
@@ -40,6 +42,8 @@ struct kmutex {
 
 #else	/* __MUTEX_PRIVATE */
 
+#include <machine/intr.h>
+
 struct kmutex {
 	union {
 		/* Adaptive mutex */

Index: src/sys/arch/powerpc/include/mutex.h
diff -u src/sys/arch/powerpc/include/mutex.h:1.6 src/sys/arch/powerpc/include/mutex.h:1.6.26.1
--- src/sys/arch/powerpc/include/mutex.h:1.6	Fri Nov 29 22:55:34 2019
+++ src/sys/arch/powerpc/include/mutex.h	Wed Aug  9 17:42:01 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: mutex.h,v 1.6 2019/11/29 22:55:34 riastradh Exp $	*/
+/*	$NetBSD: mutex.h,v 1.6.26.1 2023/08/09 17:42:01 martin Exp $	*/
 
 /*-
  * Copyright (c) 2002, 2007 The NetBSD Foundation, Inc.
@@ -32,8 +32,11 @@
 #ifndef _POWERPC_MUTEX_H_
 #define	_POWERPC_MUTEX_H_
 
+#include <sys/types.h>
+
 #ifdef __MUTEX_PRIVATE
-#include <machine/lock.h>
+#include <sys/intr.h>
+#include <machine/intr.h>
 #endif
 
 struct kmutex {

Index: src/sys/arch/riscv/include/mutex.h
diff -u src/sys/arch/riscv/include/mutex.h:1.4 src/sys/arch/riscv/include/mutex.h:1.4.4.1
--- src/sys/arch/riscv/include/mutex.h:1.4	Wed Aug 25 04:13:41 2021
+++ src/sys/arch/riscv/include/mutex.h	Wed Aug  9 17:42:03 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: mutex.h,v 1.4 2021/08/25 04:13:41 thorpej Exp $	*/
+/*	$NetBSD: mutex.h,v 1.4.4.1 2023/08/09 17:42:03 martin Exp $	*/
 
 /*-
  * Copyright (c) 2002, 2007 The NetBSD Foundation, Inc.
@@ -32,6 +32,8 @@
 #ifndef _RISCV_MUTEX_H_
 #define	_RISCV_MUTEX_H_
 
+#include <sys/types.h>
+
 #ifndef __MUTEX_PRIVATE
 
 struct kmutex {
@@ -40,8 +42,12 @@ struct kmutex {
 
 #else	/* __MUTEX_PRIVATE */
 
+#include <sys/cdefs.h>
+
 #include <sys/param.h>
 
+#include <machine/intr.h>
+
 struct kmutex {
 	volatile uintptr_t	mtx_owner;
 };

Index: src/sys/arch/sh3/include/mutex.h
diff -u src/sys/arch/sh3/include/mutex.h:1.11 src/sys/arch/sh3/include/mutex.h:1.11.4.1
--- src/sys/arch/sh3/include/mutex.h:1.11	Wed Aug 25 04:13:42 2021
+++ src/sys/arch/sh3/include/mutex.h	Wed Aug  9 17:42:05 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: mutex.h,v 1.11 2021/08/25 04:13:42 thorpej Exp $	*/
+/*	$NetBSD: mutex.h,v 1.11.4.1 2023/08/09 17:42:05 martin Exp $	*/
 
 /*-
  * Copyright (c) 2002, 2007 The NetBSD Foundation, Inc.
@@ -32,6 +32,8 @@
 #ifndef _SH3_MUTEX_H_
 #define	_SH3_MUTEX_H_
 
+#include <sys/types.h>
+
 #ifndef __MUTEX_PRIVATE
 
 struct kmutex {
@@ -40,6 +42,8 @@ struct kmutex {
 
 #else	/* __MUTEX_PRIVATE */
 
+#include <machine/intr.h>
+
 struct kmutex {
 	union {
 		/* Adaptive mutex */

Index: src/sys/arch/sparc/include/cpu.h
diff -u src/sys/arch/sparc/include/cpu.h:1.110 src/sys/arch/sparc/include/cpu.h:1.110.4.1
--- src/sys/arch/sparc/include/cpu.h:1.110	Sat Aug 14 17:51:19 2021
+++ src/sys/arch/sparc/include/cpu.h	Wed Aug  9 17:42:02 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu.h,v 1.110 2021/08/14 17:51:19 ryo Exp $ */
+/*	$NetBSD: cpu.h,v 1.110.4.1 2023/08/09 17:42:02 martin Exp $ */
 
 /*
  * Copyright (c) 1992, 1993
@@ -407,6 +407,8 @@ struct cpu_info {
 /* Kernel only things. */
 #if defined(_KERNEL)
 
+#include <sys/mutex.h>
+
 /*
  * definitions of cpu-dependent requirements
  * referenced in generic code

Index: src/sys/arch/sparc/include/mutex.h
diff -u src/sys/arch/sparc/include/mutex.h:1.11 src/sys/arch/sparc/include/mutex.h:1.11.26.1
--- src/sys/arch/sparc/include/mutex.h:1.11	Fri Nov 29 22:55:34 2019
+++ src/sys/arch/sparc/include/mutex.h	Wed Aug  9 17:42:02 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: mutex.h,v 1.11 2019/11/29 22:55:34 riastradh Exp $	*/
+/*	$NetBSD: mutex.h,v 1.11.26.1 2023/08/09 17:42:02 martin Exp $	*/
 
 /*-
  * Copyright (c) 2002, 2006 The NetBSD Foundation, Inc.
@@ -32,7 +32,11 @@
 #ifndef _SPARC_MUTEX_H_
 #define	_SPARC_MUTEX_H_
 
+#include <sys/types.h>
+
 #ifdef __MUTEX_PRIVATE
+#include <machine/intr.h>
+
 #include "psl.h"
 #endif
 

Index: src/sys/arch/sparc/include/psl.h
diff -u src/sys/arch/sparc/include/psl.h:1.50 src/sys/arch/sparc/include/psl.h:1.50.4.1
--- src/sys/arch/sparc/include/psl.h:1.50	Tue Nov  2 11:26:04 2021
+++ src/sys/arch/sparc/include/psl.h	Wed Aug  9 17:42:02 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: psl.h,v 1.50 2021/11/02 11:26:04 ryo Exp $ */
+/*	$NetBSD: psl.h,v 1.50.4.1 2023/08/09 17:42:02 martin Exp $ */
 
 /*
  * Copyright (c) 1992, 1993
@@ -227,6 +227,13 @@
 #define SPARC64_BLOCK_SIZE	64
 #define SPARC64_BLOCK_ALIGN	0x3f
 
+#if (defined(_KERNEL) || defined(_KMEMUSER)) && !defined(_LOCORE)
+typedef uint8_t ipl_t;
+typedef struct {
+	ipl_t _ipl;
+} ipl_cookie_t;
+#endif	/* _KERNEL|_KMEMUSER & !_LOCORE */
+
 #if defined(_KERNEL) && !defined(_LOCORE)
 
 /*
@@ -296,11 +303,6 @@ static __inline __attribute__((__always_
 
 _SPLSET(spllowerschedclock, IPL_SCHED)
 
-typedef uint8_t ipl_t;
-typedef struct {
-	ipl_t _ipl;
-} ipl_cookie_t;
-
 static inline __always_inline ipl_cookie_t
 makeiplcookie(ipl_t ipl)
 {

Index: src/sys/arch/sparc64/include/cpu.h
diff -u src/sys/arch/sparc64/include/cpu.h:1.133 src/sys/arch/sparc64/include/cpu.h:1.133.4.1
--- src/sys/arch/sparc64/include/cpu.h:1.133	Sat Aug 14 17:51:19 2021
+++ src/sys/arch/sparc64/include/cpu.h	Wed Aug  9 17:42:03 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu.h,v 1.133 2021/08/14 17:51:19 ryo Exp $ */
+/*	$NetBSD: cpu.h,v 1.133.4.1 2023/08/09 17:42:03 martin Exp $ */
 
 /*
  * Copyright (c) 1992, 1993
@@ -89,6 +89,7 @@ struct cacheinfo {
 #endif
 
 #include <sys/cpu_data.h>
+#include <sys/mutex.h>
 #include <sys/evcnt.h>
 
 /*

Index: src/sys/arch/sparc64/include/mutex.h
diff -u src/sys/arch/sparc64/include/mutex.h:1.7 src/sys/arch/sparc64/include/mutex.h:1.7.4.1
--- src/sys/arch/sparc64/include/mutex.h:1.7	Wed Aug 25 04:13:41 2021
+++ src/sys/arch/sparc64/include/mutex.h	Wed Aug  9 17:42:03 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: mutex.h,v 1.7 2021/08/25 04:13:41 thorpej Exp $	*/
+/*	$NetBSD: mutex.h,v 1.7.4.1 2023/08/09 17:42:03 martin Exp $	*/
 
 /*-
  * Copyright (c) 2002, 2007 The NetBSD Foundation, Inc.
@@ -32,6 +32,13 @@
 #ifndef _SPARC64_MUTEX_H_
 #define	_SPARC64_MUTEX_H_
 
+#include <sys/types.h>
+
+#ifdef __MUTEX_PRIVATE
+#include <machine/intr.h>
+#include <machine/psl.h>
+#endif
+
 struct kmutex {
 	union {
 		volatile uintptr_t	mtxa_owner;

Index: src/sys/arch/sparc64/include/psl.h
diff -u src/sys/arch/sparc64/include/psl.h:1.62 src/sys/arch/sparc64/include/psl.h:1.62.4.1
--- src/sys/arch/sparc64/include/psl.h:1.62	Tue Nov  2 11:26:04 2021
+++ src/sys/arch/sparc64/include/psl.h	Wed Aug  9 17:42:03 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: psl.h,v 1.62 2021/11/02 11:26:04 ryo Exp $ */
+/*	$NetBSD: psl.h,v 1.62.4.1 2023/08/09 17:42:03 martin Exp $ */
 
 /*
  * Copyright (c) 1992, 1993
@@ -282,6 +282,14 @@
 #define SPARC64_BLOCK_SIZE	64
 #define SPARC64_BLOCK_ALIGN	0x3f
 
+
+#if (defined(_KERNEL) || defined(_KMEMUSER)) && !defined(_LOCORE)
+typedef uint8_t ipl_t;
+typedef struct {
+	ipl_t _ipl;
+} ipl_cookie_t;
+#endif /* _KERNEL|_KMEMUSER&!_LOCORE */
+
 #if defined(_KERNEL) && !defined(_LOCORE)
 
 #if defined(_KERNEL_OPT)
@@ -474,11 +482,6 @@ static __inline __always_inline int name
 }
 #endif
 
-typedef uint8_t ipl_t;
-typedef struct {
-	ipl_t _ipl;
-} ipl_cookie_t;
-
 static __inline ipl_cookie_t
 makeiplcookie(ipl_t ipl)
 {

Index: src/sys/arch/sun68k/include/intr.h
diff -u src/sys/arch/sun68k/include/intr.h:1.20 src/sys/arch/sun68k/include/intr.h:1.20.114.1
--- src/sys/arch/sun68k/include/intr.h:1.20	Sun Jun 22 17:34:25 2008
+++ src/sys/arch/sun68k/include/intr.h	Wed Aug  9 17:42:01 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: intr.h,v 1.20 2008/06/22 17:34:25 tsutsui Exp $	*/
+/*	$NetBSD: intr.h,v 1.20.114.1 2023/08/09 17:42:01 martin Exp $	*/
 
 /*
  * Copyright (c) 2001 Matt Fredette.
@@ -55,6 +55,12 @@
 #define _IPL_SOFT_LEVEL_MIN	1
 #define _IPL_SOFT_LEVEL_MAX	3
 
+#if defined(_KERNEL) || defined(_KMEMUSER)
+typedef struct {
+	uint16_t _psl;
+} ipl_cookie_t;
+#endif
+
 #ifdef _KERNEL
 
 extern int idepth;
@@ -69,9 +75,6 @@ cpu_intr_p(void)
 extern const uint16_t ipl2psl_table[NIPL];
 
 typedef int ipl_t;
-typedef struct {
-	uint16_t _psl;
-} ipl_cookie_t;
 
 static inline ipl_cookie_t
 makeiplcookie(ipl_t ipl)

Index: src/sys/arch/usermode/include/mutex.h
diff -u src/sys/arch/usermode/include/mutex.h:1.4 src/sys/arch/usermode/include/mutex.h:1.4.26.1
--- src/sys/arch/usermode/include/mutex.h:1.4	Fri Nov 29 22:55:34 2019
+++ src/sys/arch/usermode/include/mutex.h	Wed Aug  9 17:42:04 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: mutex.h,v 1.4 2019/11/29 22:55:34 riastradh Exp $	*/
+/*	$NetBSD: mutex.h,v 1.4.26.1 2023/08/09 17:42:04 martin Exp $	*/
 
 /*-
  * Copyright (c) 2002, 2006 The NetBSD Foundation, Inc.
@@ -32,6 +32,12 @@
 #ifndef _ARCH_USERMODE_INCLUDE_MUTEX_H_
 #define	_ARCH_USERMODE_INCLUDE_MUTEX_H_
 
+#include <sys/types.h>
+
+#ifdef __MUTEX_PRIVATE
+#include <machine/intr.h>
+#endif
+
 struct kmutex {
 	union {
 		volatile uintptr_t	mtxa_owner;

Index: src/sys/arch/vax/include/intr.h
diff -u src/sys/arch/vax/include/intr.h:1.30 src/sys/arch/vax/include/intr.h:1.30.4.1
--- src/sys/arch/vax/include/intr.h:1.30	Tue Nov  2 11:26:05 2021
+++ src/sys/arch/vax/include/intr.h	Wed Aug  9 17:42:02 2023
@@ -1,4 +1,4 @@
-/* 	$NetBSD: intr.h,v 1.30 2021/11/02 11:26:05 ryo Exp $	*/
+/* 	$NetBSD: intr.h,v 1.30.4.1 2023/08/09 17:42:02 martin Exp $	*/
 
 /*
  * Copyright (c) 1998 Matt Thomas.
@@ -65,6 +65,11 @@
 #define IST_EDGE	2	/* edge-triggered */
 #define IST_LEVEL	3	/* level-triggered */
 
+#if defined(_KERNEL) || defined(_KMEMUSER)
+typedef struct {
+	uint8_t _ipl;
+} ipl_cookie_t;
+#endif
 
 #ifdef _KERNEL
 typedef int ipl_t;
@@ -89,10 +94,6 @@ splx(ipl_t new_ipl)
 	return old_ipl;
 }
 
-typedef struct {
-	uint8_t _ipl;
-} ipl_cookie_t;
-
 static inline __always_inline ipl_cookie_t
 makeiplcookie(ipl_t ipl)
 {

Index: src/sys/arch/vax/include/mutex.h
diff -u src/sys/arch/vax/include/mutex.h:1.17 src/sys/arch/vax/include/mutex.h:1.17.4.1
--- src/sys/arch/vax/include/mutex.h:1.17	Wed Apr  6 22:47:57 2022
+++ src/sys/arch/vax/include/mutex.h	Wed Aug  9 17:42:02 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: mutex.h,v 1.17 2022/04/06 22:47:57 riastradh Exp $	*/
+/*	$NetBSD: mutex.h,v 1.17.4.1 2023/08/09 17:42:02 martin Exp $	*/
 
 /*-
  * Copyright (c) 2002, 2007 The NetBSD Foundation, Inc.
@@ -40,6 +40,8 @@
  * and (if MP) using BBSSI/BBCCI to lock out the other processors.
  */
 
+#include <sys/types.h>
+
 #ifndef __MUTEX_PRIVATE
 
 struct kmutex {
@@ -48,6 +50,8 @@ struct kmutex {
 
 #else	/* __MUTEX_PRIVATE */
 
+#include <machine/intr.h>
+
 struct kmutex {
 	union {
 		/* Adaptive mutex */

Index: src/sys/arch/x68k/include/intr.h
diff -u src/sys/arch/x68k/include/intr.h:1.21 src/sys/arch/x68k/include/intr.h:1.21.60.1
--- src/sys/arch/x68k/include/intr.h:1.21	Sat Mar 22 21:49:18 2014
+++ src/sys/arch/x68k/include/intr.h	Wed Aug  9 17:42:04 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: intr.h,v 1.21 2014/03/22 21:49:18 tsutsui Exp $	*/
+/*	$NetBSD: intr.h,v 1.21.60.1 2023/08/09 17:42:04 martin Exp $	*/
 
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -64,6 +64,8 @@ typedef struct {
 	uint16_t _psl;
 } ipl_cookie_t;
 
+#ifdef _KERNEL
+
 static inline ipl_cookie_t
 makeiplcookie(ipl_t ipl)
 {
@@ -84,4 +86,7 @@ splx(int sr)
 
 	__asm volatile("movew %0,%%sr" : : "di" (sr));
 }
+
+#endif	/* _KERNEL */
+
 #endif /* !_X68K_INTR_H_ */

Index: src/sys/arch/x86/include/cpu.h
diff -u src/sys/arch/x86/include/cpu.h:1.133 src/sys/arch/x86/include/cpu.h:1.133.4.1
--- src/sys/arch/x86/include/cpu.h:1.133	Wed Sep  7 00:40:18 2022
+++ src/sys/arch/x86/include/cpu.h	Wed Aug  9 17:42:01 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu.h,v 1.133 2022/09/07 00:40:18 knakahara Exp $	*/
+/*	$NetBSD: cpu.h,v 1.133.4.1 2023/08/09 17:42:01 martin Exp $	*/
 
 /*
  * Copyright (c) 1990 The Regents of the University of California.
@@ -65,6 +65,10 @@
 #include <sys/evcnt.h>
 #include <sys/device_if.h> /* for device_t */
 
+#ifdef SVS
+#include <sys/mutex.h>
+#endif
+
 #ifdef XEN
 #include <xen/include/public/xen.h>
 #include <xen/include/public/event_channel.h>

Index: src/sys/arch/x86/include/mutex.h
diff -u src/sys/arch/x86/include/mutex.h:1.9 src/sys/arch/x86/include/mutex.h:1.9.22.1
--- src/sys/arch/x86/include/mutex.h:1.9	Thu Mar  5 17:58:08 2020
+++ src/sys/arch/x86/include/mutex.h	Wed Aug  9 17:42:01 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: mutex.h,v 1.9 2020/03/05 17:58:08 riastradh Exp $	*/
+/*	$NetBSD: mutex.h,v 1.9.22.1 2023/08/09 17:42:01 martin Exp $	*/
 
 /*-
  * Copyright (c) 2002, 2006, 2009 The NetBSD Foundation, Inc.
@@ -32,6 +32,12 @@
 #ifndef _X86_MUTEX_H_
 #define	_X86_MUTEX_H_
 
+#include <sys/types.h>
+
+#ifdef _KERNEL
+#include <machine/intr.h>
+#endif
+
 struct kmutex {
 	union {
 		volatile uintptr_t	mtxa_owner;

Index: src/sys/ddb/db_command.c
diff -u src/sys/ddb/db_command.c:1.181.4.1 src/sys/ddb/db_command.c:1.181.4.2
--- src/sys/ddb/db_command.c:1.181.4.1	Sat Jun  3 14:47:52 2023
+++ src/sys/ddb/db_command.c	Wed Aug  9 17:42:03 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: db_command.c,v 1.181.4.1 2023/06/03 14:47:52 martin Exp $	*/
+/*	$NetBSD: db_command.c,v 1.181.4.2 2023/08/09 17:42:03 martin Exp $	*/
 
 /*
  * Copyright (c) 1996, 1997, 1998, 1999, 2002, 2009, 2019
@@ -61,7 +61,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_command.c,v 1.181.4.1 2023/06/03 14:47:52 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_command.c,v 1.181.4.2 2023/08/09 17:42:03 martin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_aio.h"
@@ -94,6 +94,7 @@ __KERNEL_RCSID(0, "$NetBSD: db_command.c
 #include <sys/kernhist.h>
 #include <sys/socketvar.h>
 #include <sys/queue.h>
+#include <sys/syncobj.h>
 
 #include <dev/cons.h>
 
@@ -200,6 +201,7 @@ static void	db_fncall(db_expr_t, bool, d
 static void     db_help_print_cmd(db_expr_t, bool, db_expr_t, const char *);
 static void	db_lock_print_cmd(db_expr_t, bool, db_expr_t, const char *);
 static void	db_show_all_locks(db_expr_t, bool, db_expr_t, const char *);
+static void	db_show_all_tstiles(db_expr_t, bool, db_expr_t, const char *);
 static void	db_show_lockstats(db_expr_t, bool, db_expr_t, const char *);
 static void	db_show_all_freelists(db_expr_t, bool, db_expr_t, const char *);
 static void	db_mount_print_cmd(db_expr_t, bool, db_expr_t, const char *);
@@ -316,6 +318,8 @@ static const struct db_command db_show_c
 	    "Print the state of the scheduler's run queues.",
 	    NULL,NULL) },
 	{ DDB_ADD_CMD("socket",	db_socket_print_cmd,	0,NULL,NULL,NULL) },
+	{ DDB_ADD_CMD("tstiles", db_show_all_tstiles,
+	    0, "Show who's holding up tstiles", "[/t]", NULL) },
 	{ DDB_ADD_CMD("uvmexp",	db_uvmexp_print_cmd, 0,
 	    "Print a selection of UVM counters and statistics.",
 	    NULL,NULL) },
@@ -1363,6 +1367,88 @@ db_show_all_locks(db_expr_t addr, bool h
 }
 
 static void
+db_show_all_tstiles(db_expr_t addr, bool have_addr,
+    db_expr_t count, const char *modif)
+{
+	struct proc *p;
+	bool trace = false;
+
+	if (modif[0] == 't')
+		trace = true;
+
+	db_printf("%5s %5s %16s %16s %16s\n",
+	    "PID", "LID", "COMMAND", "WAITING-FOR", "WAIT-CHANNEL");
+	for (p = db_proc_first(); p != NULL; p = db_proc_next(p)) {
+		pid_t pid = -1;
+		char comm[MAXCOMLEN + 1] = "";
+		struct lwp *l = NULL;
+
+		db_read_bytes((db_addr_t)&p->p_pid, sizeof(pid), (char *)&pid);
+		db_read_bytes((db_addr_t)p->p_comm, sizeof(comm), comm);
+		db_read_bytes((db_addr_t)&p->p_lwps.lh_first, sizeof(l),
+		    (char *)&l);
+		while (l != NULL) {
+			wchan_t wchan = NULL;
+			char wchanname[128] = "";
+			const char *wmesg = NULL;
+			char wmesgbuf[sizeof("tstile")] = "";
+			lwpid_t lid = -1;
+			struct syncobj *sobj = NULL;
+			struct lwp *owner = NULL;
+
+			db_read_bytes((db_addr_t)&l->l_wchan, sizeof(wchan),
+			    (char *)&wchan);
+			if (wchan == NULL)
+				goto next;
+			db_symstr(wchanname, sizeof(wchanname),
+			    (db_expr_t)(uintptr_t)wchan, DB_STGY_ANY);
+			db_read_bytes((db_addr_t)&l->l_wmesg, sizeof(wmesg),
+			    (char *)&wmesg);
+			if (wmesg != NULL) {
+				db_read_bytes((db_addr_t)wmesg,
+				    sizeof(wmesgbuf), wmesgbuf);
+			}
+
+			if (strncmp(wmesgbuf, "tstile", sizeof("tstile")) != 0)
+				goto next;
+
+			db_read_bytes((db_addr_t)&l->l_lid, sizeof(lid),
+			    (char *)&lid);
+			db_read_bytes((db_addr_t)&l->l_syncobj, sizeof(sobj),
+			    (char *)&sobj);
+			if (sobj == NULL) {
+				db_printf("%5ld %5ld %16s %16s %16s\n",
+				    (long)pid,
+				    (long)lid,
+				    comm,
+				    "(unknown)",
+				    wchanname);
+				goto next;
+			}
+
+			owner = db_syncobj_owner(sobj, wchan);
+
+			db_printf("%5ld %5ld %16s %16lx %16s\n",
+			    (long)pid,
+			    (long)lid,
+			    comm,
+			    (long)owner,
+			    wchanname);
+
+			if (trace && owner != NULL) {
+				db_stack_trace_print(
+				    (db_expr_t)(uintptr_t)owner,
+				    /*have_addr*/true, /*count*/-1,
+				    /*modif(lwp)*/"a", db_printf);
+			}
+
+next:			db_read_bytes((db_addr_t)&l->l_sibling.le_next,
+			    sizeof(l), (char *)&l);
+		}
+	}
+}
+
+static void
 db_show_all_freelists(db_expr_t addr, bool have_addr,
     db_expr_t count, const char *modif)
 {

Index: src/sys/ddb/ddb.h
diff -u src/sys/ddb/ddb.h:1.5 src/sys/ddb/ddb.h:1.5.20.1
--- src/sys/ddb/ddb.h:1.5	Sun May 31 09:51:55 2020
+++ src/sys/ddb/ddb.h	Wed Aug  9 17:42:03 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: ddb.h,v 1.5 2020/05/31 09:51:55 rin Exp $	*/
+/*	$NetBSD: ddb.h,v 1.5.20.1 2023/08/09 17:42:03 martin Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -50,5 +50,6 @@
 #include <ddb/db_proc.h>
 #include <ddb/db_cpu.h>
 #include <ddb/db_autoconf.h>
+#include <ddb/db_syncobj.h>
 
 #endif	/* _DDB_DDB_H_ */

Index: src/sys/ddb/files.ddb
diff -u src/sys/ddb/files.ddb:1.15 src/sys/ddb/files.ddb:1.15.4.1
--- src/sys/ddb/files.ddb:1.15	Wed Oct  6 12:14:51 2021
+++ src/sys/ddb/files.ddb	Wed Aug  9 17:42:03 2023
@@ -1,4 +1,4 @@
-#	$NetBSD: files.ddb,v 1.15 2021/10/06 12:14:51 uwe Exp $
+#	$NetBSD: files.ddb,v 1.15.4.1 2023/08/09 17:42:03 martin Exp $
 
 #
 # DDB options
@@ -36,6 +36,7 @@ file	ddb/db_proc.c			ddb
 file	ddb/db_print.c			ddb
 file	ddb/db_run.c			ddb | kgdb	# XXX kgdb reference
 file	ddb/db_sym.c			ddb
+file	ddb/db_syncobj.c		ddb
 file	ddb/db_trap.c                   ddb
 file	ddb/db_variables.c		ddb
 file	ddb/db_watch.c			ddb

Index: src/sys/external/bsd/drm2/include/linux/idr.h
diff -u src/sys/external/bsd/drm2/include/linux/idr.h:1.10 src/sys/external/bsd/drm2/include/linux/idr.h:1.10.2.1
--- src/sys/external/bsd/drm2/include/linux/idr.h:1.10	Tue Oct 25 23:36:32 2022
+++ src/sys/external/bsd/drm2/include/linux/idr.h	Wed Aug  9 17:42:03 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: idr.h,v 1.10 2022/10/25 23:36:32 riastradh Exp $	*/
+/*	$NetBSD: idr.h,v 1.10.2.1 2023/08/09 17:42:03 martin Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -33,6 +33,7 @@
 #define _LINUX_IDR_H_
 
 #include <sys/types.h>
+#include <sys/mutex.h>
 #include <sys/rbtree.h>
 
 #include <linux/gfp.h>

Index: src/sys/kern/kern_core.c
diff -u src/sys/kern/kern_core.c:1.37 src/sys/kern/kern_core.c:1.37.4.1
--- src/sys/kern/kern_core.c:1.37	Sat Sep 10 07:30:41 2022
+++ src/sys/kern/kern_core.c	Wed Aug  9 17:42:05 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_core.c,v 1.37 2022/09/10 07:30:41 mrg Exp $	*/
+/*	$NetBSD: kern_core.c,v 1.37.4.1 2023/08/09 17:42:05 martin Exp $	*/
 
 /*
  * Copyright (c) 1982, 1986, 1989, 1991, 1993
@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_core.c,v 1.37 2022/09/10 07:30:41 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_core.c,v 1.37.4.1 2023/08/09 17:42:05 martin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_execfmt.h"
@@ -57,6 +57,7 @@ __KERNEL_RCSID(0, "$NetBSD: kern_core.c,
 #include <sys/module.h>
 #include <sys/compat_stub.h>
 #include <sys/exec_elf.h>
+#include <sys/resourcevar.h>
 
 MODULE(MODULE_CLASS_MISC, coredump, NULL);
 

Index: src/sys/opencrypto/cryptodev.h
diff -u src/sys/opencrypto/cryptodev.h:1.50 src/sys/opencrypto/cryptodev.h:1.50.4.1
--- src/sys/opencrypto/cryptodev.h:1.50	Sun May 22 11:40:29 2022
+++ src/sys/opencrypto/cryptodev.h	Wed Aug  9 17:42:03 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: cryptodev.h,v 1.50 2022/05/22 11:40:29 riastradh Exp $ */
+/*	$NetBSD: cryptodev.h,v 1.50.4.1 2023/08/09 17:42:03 martin Exp $ */
 /*	$FreeBSD: src/sys/opencrypto/cryptodev.h,v 1.2.2.6 2003/07/02 17:04:50 sam Exp $	*/
 /*	$OpenBSD: cryptodev.h,v 1.33 2002/07/17 23:52:39 art Exp $	*/
 
@@ -85,8 +85,9 @@
 #ifndef _CRYPTO_CRYPTO_H_
 #define _CRYPTO_CRYPTO_H_
 
+#include <sys/types.h>
+
 #include <sys/ioccom.h>
-#include <sys/condvar.h>
 #include <sys/time.h>
 
 #if defined(_KERNEL_OPT)
@@ -409,6 +410,16 @@ struct cryptostats {
 };
 
 #ifdef _KERNEL
+
+#include <sys/condvar.h>
+#include <sys/malloc.h>
+#include <sys/mutex.h>
+#include <sys/queue.h>
+#include <sys/systm.h>
+
+struct cpu_info;
+struct uio;
+
 /* Standard initialization structure beginning */
 struct cryptoini {
 	int		cri_alg;	/* Algorithm to use */

Index: src/sys/sys/cpu_data.h
diff -u src/sys/sys/cpu_data.h:1.52 src/sys/sys/cpu_data.h:1.52.20.1
--- src/sys/sys/cpu_data.h:1.52	Sun Jun 14 21:41:42 2020
+++ src/sys/sys/cpu_data.h	Wed Aug  9 17:42:01 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: cpu_data.h,v 1.52 2020/06/14 21:41:42 ad Exp $	*/
+/*	$NetBSD: cpu_data.h,v 1.52.20.1 2023/08/09 17:42:01 martin Exp $	*/
 
 /*-
  * Copyright (c) 2004, 2006, 2007, 2008, 2019, 2020 The NetBSD Foundation, Inc.
@@ -44,6 +44,7 @@ struct lwp;
 #include <sys/queue.h>
 #include <sys/kcpuset.h>
 #include <sys/ipi.h>
+#include <sys/intr.h>
 
 /* Per-CPU counters.  New elements must be added in blocks of 8. */
 enum cpu_count {

Index: src/sys/sys/ksem.h
diff -u src/sys/sys/ksem.h:1.15 src/sys/sys/ksem.h:1.15.30.1
--- src/sys/sys/ksem.h:1.15	Sun Feb  3 03:20:24 2019
+++ src/sys/sys/ksem.h	Wed Aug  9 17:42:01 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: ksem.h,v 1.15 2019/02/03 03:20:24 thorpej Exp $	*/
+/*	$NetBSD: ksem.h,v 1.15.30.1 2023/08/09 17:42:01 martin Exp $	*/
 
 /*
  * Copyright (c) 2002 Alfred Perlstein <alf...@freebsd.org>
@@ -31,9 +31,23 @@
 
 #include <sys/cdefs.h>
 
+#include <sys/types.h>
+
 struct timespec;
 
 #ifdef _KERNEL
+
+#include <sys/condvar.h>
+#include <sys/mutex.h>
+#include <sys/queue.h>
+
+#ifndef _KMEMUSER		/* XXX hack for fstat(8) */
+#include <sys/systm.h>
+#endif
+
+struct lwp;
+struct proc;
+
 #define	KSEM_MAX	128
 
 typedef struct ksem {

Index: src/sys/sys/lua.h
diff -u src/sys/sys/lua.h:1.8 src/sys/sys/lua.h:1.8.48.1
--- src/sys/sys/lua.h:1.8	Sun Sep  6 06:01:02 2015
+++ src/sys/sys/lua.h	Wed Aug  9 17:42:01 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: lua.h,v 1.8 2015/09/06 06:01:02 dholland Exp $ */
+/*	$NetBSD: lua.h,v 1.8.48.1 2023/08/09 17:42:01 martin Exp $ */
 
 /*
  * Copyright (c) 2014 by Lourival Vieira Neto <ln...@netbsd.org>.
@@ -39,6 +39,7 @@
 
 #ifdef _KERNEL
 #include <sys/condvar.h>
+#include <sys/mutex.h>
 #endif
 
 #define MAX_LUA_NAME		16

Index: src/sys/sys/proc.h
diff -u src/sys/sys/proc.h:1.370.4.1 src/sys/sys/proc.h:1.370.4.2
--- src/sys/sys/proc.h:1.370.4.1	Sun May 28 09:43:26 2023
+++ src/sys/sys/proc.h	Wed Aug  9 17:42:01 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: proc.h,v 1.370.4.1 2023/05/28 09:43:26 martin Exp $	*/
+/*	$NetBSD: proc.h,v 1.370.4.2 2023/08/09 17:42:01 martin Exp $	*/
 
 /*-
  * Copyright (c) 2006, 2007, 2008, 2020 The NetBSD Foundation, Inc.
@@ -93,7 +93,9 @@
 #include <sys/event.h>
 #include <sys/specificdata.h>
 
-#ifndef _KERNEL
+#ifdef _KERNEL
+#include <sys/resourcevar.h>
+#else
 #include <sys/time.h>
 #include <sys/resource.h>
 #endif

Index: src/sys/sys/rwlock.h
diff -u src/sys/sys/rwlock.h:1.17 src/sys/sys/rwlock.h:1.17.2.1
--- src/sys/sys/rwlock.h:1.17	Wed Oct 26 23:22:22 2022
+++ src/sys/sys/rwlock.h	Wed Aug  9 17:42:01 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: rwlock.h,v 1.17 2022/10/26 23:22:22 riastradh Exp $	*/
+/*	$NetBSD: rwlock.h,v 1.17.2.1 2023/08/09 17:42:01 martin Exp $	*/
 
 /*-
  * Copyright (c) 2002, 2006, 2007, 2008, 2019, 2020 The NetBSD Foundation, Inc.
@@ -58,6 +58,7 @@ typedef enum krw_t {
 typedef struct krwlock krwlock_t;
 
 #ifdef __RWLOCK_PRIVATE
+#include <sys/stdbool.h>
 /*
  * Bits in the owner field of the lock that indicate lock state.  If the
  * WRITE_LOCKED bit is clear, then the owner field is actually a count of

Index: src/sys/sys/sched.h
diff -u src/sys/sys/sched.h:1.91 src/sys/sys/sched.h:1.91.2.1
--- src/sys/sys/sched.h:1.91	Wed Oct 26 23:24:09 2022
+++ src/sys/sys/sched.h	Wed Aug  9 17:42:01 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: sched.h,v 1.91 2022/10/26 23:24:09 riastradh Exp $	*/
+/*	$NetBSD: sched.h,v 1.91.2.1 2023/08/09 17:42:01 martin Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2000, 2001, 2002, 2007, 2008, 2019, 2020
@@ -142,10 +142,11 @@ __END_DECLS
 
 #if defined(_KERNEL) || defined(_KMEMUSER)
 
-#include <sys/mutex.h>
 #include <sys/time.h>
 #include <sys/queue.h>
 
+struct kmutex;
+
 /*
  * Per-CPU scheduler state.  Field markings and the corresponding locks: 
  *
@@ -155,8 +156,8 @@ __END_DECLS
  * c:	cpu_lock
  */
 struct schedstate_percpu {
-	kmutex_t	*spc_mutex;	/* (: lock on below, runnable LWPs */
-	kmutex_t	*spc_lwplock;	/* (: general purpose lock for LWPs */
+	struct kmutex	*spc_mutex;	/* (: lock on below, runnable LWPs */
+	struct kmutex	*spc_lwplock;	/* (: general purpose lock for LWPs */
 	struct lwp	*spc_migrating;	/* (: migrating LWP */
 	struct cpu_info *spc_nextpkg;	/* (: next package 1st for RR */
 	psetid_t	spc_psid;	/* c: processor-set ID */

Index: src/sys/uvm/uvm_param.h
diff -u src/sys/uvm/uvm_param.h:1.41 src/sys/uvm/uvm_param.h:1.41.20.1
--- src/sys/uvm/uvm_param.h:1.41	Thu Jul 23 19:07:01 2020
+++ src/sys/uvm/uvm_param.h	Wed Aug  9 17:42:01 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: uvm_param.h,v 1.41 2020/07/23 19:07:01 skrll Exp $	*/
+/*	$NetBSD: uvm_param.h,v 1.41.20.1 2023/08/09 17:42:01 martin Exp $	*/
 
 /*
  * Copyright (c) 1991, 1993
@@ -74,7 +74,6 @@
 #ifdef _KERNEL
 #include <sys/types.h>
 #include <machine/vmparam.h>
-#include <sys/resourcevar.h>
 #endif
 
 #if defined(_KERNEL)

Index: src/usr.sbin/crash/Makefile
diff -u src/usr.sbin/crash/Makefile:1.46.6.1 src/usr.sbin/crash/Makefile:1.46.6.2
--- src/usr.sbin/crash/Makefile:1.46.6.1	Tue Aug  1 14:36:59 2023
+++ src/usr.sbin/crash/Makefile	Wed Aug  9 17:42:05 2023
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.46.6.1 2023/08/01 14:36:59 martin Exp $
+#	$NetBSD: Makefile,v 1.46.6.2 2023/08/09 17:42:05 martin Exp $
 
 PROG=		crash
 MAN=		crash.8
@@ -46,13 +46,18 @@ CPPFLAGS+=	-I${.CURDIR} -I${.OBJDIR} -I$
 CPPFLAGS+=	-DDDB_VERBOSE_HELP -DDB_MAX_LINE=10000000 -D_KMEMUSER
 CPPFLAGS+=	-UDB_MACHINE_COMMANDS
 
+# XXX
+.if ${MACHINE} == "evbppc"
+CPPFLAGS+=	-DPPC_INTR_IMPL="<powerpc/intr.h>"
+.endif
+
 # ddb files from kernel
 .PATH:	$S/ddb
 SRCS+=	db_command.c db_lwp.c db_proc.c db_xxx.c db_cpu.c
 SRCS+=  db_autoconf.c
 SRCS+=	db_access.c db_elf.c db_examine.c
 SRCS+=	db_expr.c db_lex.c db_output.c db_print.c
-SRCS+=	db_sym.c db_variables.c db_write_cmd.c
+SRCS+=	db_sym.c db_syncobj.c db_variables.c db_write_cmd.c
 
 .PATH:	${S}/arch/${MACHINE}/${MACHINE}
 .PATH:	${S}/arch/${MACHINE_ARCH}/${MACHINE_ARCH}

Added files:

Index: src/sys/ddb/db_syncobj.c
diff -u /dev/null src/sys/ddb/db_syncobj.c:1.2.2.2
--- /dev/null	Wed Aug  9 17:42:06 2023
+++ src/sys/ddb/db_syncobj.c	Wed Aug  9 17:42:03 2023
@@ -0,0 +1,73 @@
+/*	$NetBSD: db_syncobj.c,v 1.2.2.2 2023/08/09 17:42:03 martin Exp $	*/
+
+/*-
+ * Copyright (c) 2023 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#define	__MUTEX_PRIVATE
+#define	__RWLOCK_PRIVATE
+
+#include <sys/cdefs.h>
+__KERNEL_RCSID(0, "$NetBSD: db_syncobj.c,v 1.2.2.2 2023/08/09 17:42:03 martin Exp $");
+
+#include <sys/types.h>
+
+#include <sys/mutex.h>
+#include <sys/null.h>
+#include <sys/rwlock.h>
+#include <sys/syncobj.h>
+
+#include <ddb/ddb.h>
+
+struct lwp *
+db_syncobj_owner(struct syncobj *sobj, wchan_t wchan)
+{
+	db_expr_t mutex_syncobj_;
+	db_expr_t rw_syncobj_;
+
+	if (db_value_of_name("mutex_syncobj", &mutex_syncobj_) &&
+	    (db_expr_t)(uintptr_t)sobj == mutex_syncobj_) {
+		volatile const struct kmutex *mtx = wchan;
+		uintptr_t owner;
+
+		db_read_bytes((db_addr_t)&mtx->mtx_owner, sizeof(owner),
+		    (char *)&owner);
+		return (struct lwp *)(owner & MUTEX_THREAD);
+
+	} else if (db_value_of_name("rw_syncobj", &rw_syncobj_) &&
+	    (db_expr_t)(uintptr_t)sobj == rw_syncobj_) {
+		volatile const struct krwlock *rw = wchan;
+		uintptr_t owner;
+
+		db_read_bytes((db_addr_t)&rw->rw_owner, sizeof(owner),
+		    (char *)&owner);
+		if (owner & RW_WRITE_LOCKED)
+			return (struct lwp *)(owner & RW_THREAD);
+		return NULL;
+
+	} else {
+		return NULL;
+	}
+}

Index: src/sys/ddb/db_syncobj.h
diff -u /dev/null src/sys/ddb/db_syncobj.h:1.1.2.2
--- /dev/null	Wed Aug  9 17:42:06 2023
+++ src/sys/ddb/db_syncobj.h	Wed Aug  9 17:42:03 2023
@@ -0,0 +1,39 @@
+/*	$NetBSD: db_syncobj.h,v 1.1.2.2 2023/08/09 17:42:03 martin Exp $	*/
+
+/*-
+ * Copyright (c) 2023 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef	_DDB_DB_SYNCOBJ_H
+#define	_DDB_DB_SYNCOBJ_H
+
+#include <sys/syncobj.h>
+
+struct lwp;
+struct syncobj;
+
+struct lwp *db_syncobj_owner(struct syncobj *, wchan_t);
+
+#endif	/* _DDB_DB_SYNCOBJ_H */

Reply via email to