Revise the ASID allocation sheme to avoid a hang when running out of free
authorkettenis <kettenis@openbsd.org>
Mon, 8 Mar 2021 11:16:26 +0000 (11:16 +0000)
committerkettenis <kettenis@openbsd.org>
Mon, 8 Mar 2021 11:16:26 +0000 (11:16 +0000)
commitc6c0d427aa8cbc6b33fafa1efea112f5ce5aaa30
tree3e6a2ef419fa234a4712c090d05f6daf3ef9004a
parentca0f58b85f7bf7a632b8cf4d234ce2c42f42d216
Revise the ASID allocation sheme to avoid a hang when running out of free
ASIDs.  This should only happen on systems with 8-bit ASIDs, which are
currently unsupported in OpenBSD.

The new scheme uses "generations".  Whenever we run out of ASIDs we bump
the generation and flush the complete TLB.  The pmaps of processes that
are currently on the CPU are carried over into the new generation.  This
implementation relies on the scheduler lock to make sure this happens
without any (known) races.

ok patrick@, mpi@
sys/arch/arm64/arm64/pmap.c
sys/arch/arm64/include/pmap.h