Pre-allocate pages in DMA-reachable region to ensure progress in the swapper.
authormpi <mpi@openbsd.org>
Tue, 28 Jun 2022 19:19:34 +0000 (19:19 +0000)
committermpi <mpi@openbsd.org>
Tue, 28 Jun 2022 19:19:34 +0000 (19:19 +0000)
commit7de6a059f219057a1b3bbeb43540a0992affc4e2
tree112971a33df78eb5f707660bc2e0308d56091949
parent5d4a892ef8b937c46d831e27a7bd44e22deaba77
Pre-allocate pages in DMA-reachable region to ensure progress in the swapper.

Currently swap encryption is not done in place and some architectures need to
bounce pages into a DMA-reachable region for I/Os, for that uvm_swap_io() needs
to allocate at most 64K to write a swap cluster to disk.  Pre-allocate such
amount of memory to be sure the page daemon can make progress in OOM situation.

Also introduce a sleeping point to wait for the previous asynchronous I/O
holding the pre-allocated pages, there's no point in building clusters if no
progress can be made.

ok beck@, kettenis@
sys/uvm/uvm_swap.c
sys/uvm/uvm_swap.h