timeout: add TIMEOUT_MPSAFE flag
authorcheloha <cheloha@openbsd.org>
Thu, 12 Oct 2023 15:32:38 +0000 (15:32 +0000)
committercheloha <cheloha@openbsd.org>
Thu, 12 Oct 2023 15:32:38 +0000 (15:32 +0000)
commite97dbaaa05dba504f48924634c852816625a689f
treeaa325b0c887cb1bbddbe854bf162a01f70228369
parentb9c158ac990f3d15a0a2021062d99a04d46ec95d
timeout: add TIMEOUT_MPSAFE flag

Add a TIMEOUT_MPSAFE flag to signal that a timeout is safe to run
without the kernel lock.  Currently, TIMEOUT_MPSAFE requires
TIMEOUT_PROC.  When the softclock() is unlocked in the future this
dependency will be removed.

On MULTIPROCESSOR kernels, softclock() now shunts TIMEOUT_MPSAFE
timeouts to a dedicated "timeout_proc_mp" bucket for processing by the
dedicated softclock_thread_mp() kthread.  Unlike softclock_thread(),
softclock_thread_mp() is not pinned to any CPU and runs run at IPL_NONE.

Prompted by bluhm@.  Lots of input from bluhm@.  Joint work with mvs@.

Prompt: https://marc.info/?l=openbsd-tech&m=169646019109736&w=2
Thread: https://marc.info/?l=openbsd-tech&m=169652212131109&w=2

ok mvs@
share/man/man9/timeout.9
sys/kern/kern_timeout.c
sys/sys/timeout.h