Module Name:    src
Committed By:   riastradh
Date:           Sat Feb 25 00:40:22 UTC 2023

Modified Files:
        src/sys/arch/aarch64/aarch64: aarch32_syscall.c cpu_machdep.c cpufunc.c
            fault.c pmap_machdep.c syscall.c trap.c
        src/sys/arch/aarch64/include: cpu.h

Log Message:
aarch64: curcpu() audit.

Sprinkle KASSERT (or KDASSERT in hot paths) for kpreempt_disabled()
when we use curcpu() and it's not immediately obvious that the caller
has preemption disabled but closer scrutiny suggests the caller has.

Note unsafe curcpu()s for syscall event counting.  Not sure this is
worth changing.

Possible bugs fixed:

- cpu_irq and cpu_fiq could be preempted while trying to run softints
  on this CPU.

- data_abort_handler might incorrectly think it was invoked in
  interrupt context when it was only preempted and migrated to
  another CPU.

- pmap_fault_fixup might report the wrong CPU logs.

(However, we don't currently run with kpreemption on aarch64, so
these are not yet real bugs fixed except if you patch it to build
with __HAVE_PREEMPTION.)


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/aarch64/aarch64/aarch32_syscall.c
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/aarch64/aarch64/cpu_machdep.c
cvs rdiff -u -r1.33 -r1.34 src/sys/arch/aarch64/aarch64/cpufunc.c
cvs rdiff -u -r1.24 -r1.25 src/sys/arch/aarch64/aarch64/fault.c
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/aarch64/aarch64/pmap_machdep.c
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/aarch64/aarch64/syscall.c
cvs rdiff -u -r1.47 -r1.48 src/sys/arch/aarch64/aarch64/trap.c
cvs rdiff -u -r1.48 -r1.49 src/sys/arch/aarch64/include/cpu.h

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

Reply via email to