CVSROOT: /cvs Module name: src Changes by: chel...@cvs.openbsd.org 2023/07/12 12:40:06
Modified files: sys/kern : subr_suspend.c Log message: GPROF: sleep_state: disable _mcount() across suspend/resume Something in the amd64 resume path doesn't agree with _mcount(), so suspend/resume always fails if gmoninit is non-zero. It would be nice if GPROF kernels didn't crash during resume. In sleep_state(), (1) clear gmoninit after sched_stop_secondary_cpus() so the primary CPU isn't racing sysctl(2) on another CPU, and (2) restore gmoninit just after resume_mp() so the secondary CPUs are out of cpu_hatch() and away from whatever is causing the crash before _mcount() is reenabled. Lots of input from claudio@, deraadt@, and kettenis@. Thread 1: https://marc.info/?l=openbsd-tech&m=168721453821801&w=2 Thread 2: https://marc.info/?l=openbsd-tech&m=168892518722935&w=2 ok kettenis@ deraadt@