Don't ignore memory blocks smaller than 64KB. Some EFI implementations
authorkettenis <kettenis@openbsd.org>
Mon, 5 Sep 2022 19:18:56 +0000 (19:18 +0000)
committerkettenis <kettenis@openbsd.org>
Mon, 5 Sep 2022 19:18:56 +0000 (19:18 +0000)
commit209c729d3302bd2403d9dd4bfa74a803311d4b2b
tree28a5132277226ec72edad7e62c0e41d92f36dd52
parent041f5afe1553df5d736c21dc7ff2291562307379
Don't ignore memory blocks smaller than 64KB.  Some EFI implementations
(such as the one on the x13s) allocate memory with the EfiBootSevicesData
type in a semi-random fashion.  Ignoring small regions with that type
results in different memory maps between boots of the same kernel.
This causes problems with upcoming hibernate support.

The decision to ignore small regions was made because we do this on
amd64 to work arounmd broken BIOS implementations and because of fears
that we would run out of physical memory segments in UVM.  We have some
reasons to believe that we can trust the EFI memory map on arm64 and the
risk of running out of physical memory segments is mitigated by the fact
that we try to merge memory regions before loading them into UVM.  If
for some reason we see a significant drop in physical memory on certain
machines, we should probably increase the number of items in the array
we use to store memory regions and/or increase the number of physical
memory segments in UVM.

ok mlarkin@
sys/arch/arm64/arm64/machdep.c