Allow more memory ranges in hibernate
authormlarkin <mlarkin@openbsd.org>
Mon, 17 Jan 2022 02:54:28 +0000 (02:54 +0000)
committermlarkin <mlarkin@openbsd.org>
Mon, 17 Jan 2022 02:54:28 +0000 (02:54 +0000)
commit116c1678527c1ea643b48023d3ed2751ef3d8ff1
tree7ad023d881bf720630c81650d5ae09f7165104e5
parentb0714f3814901445e8efdf36b1681d09938e31a8
Allow more memory ranges in hibernate

The previous limit of VM_PHYSSEG_MAX ranges (16) was proving too small for
newer machines. This diff reorganizes the hibernate signature block to allow
for 22 ranges by removing the kernel version comparison and replacing it
with a SHA of several unique kernel features (the version string and several
addresses of functions not inside the same .o).

Reported by claudio@, who also helped fix some issues in the diff. Input
from deraadt@ as well.

Tested by myself and claudio on a variety of machines. Only compile tested on
i386 as I have no more S4-capable i386 hardware anymore.

ok claudio@
sys/arch/amd64/amd64/hibernate_machdep.c
sys/arch/i386/i386/hibernate_machdep.c
sys/kern/subr_hibernate.c
sys/sys/hibernate.h