handle /reserved-memory nodes from device trees on arm64.
authordlg <dlg@openbsd.org>
Wed, 21 Feb 2024 01:45:14 +0000 (01:45 +0000)
committerdlg <dlg@openbsd.org>
Wed, 21 Feb 2024 01:45:14 +0000 (01:45 +0000)
commitaa73d72211f4de3e5cdb187d5df3bc58db0783b0
treee333db3e7bf16080bfc6ede04e59d31e0abcef0b
parenta246f7a0bc5ae64e47a2d63ae5fa3e50d02d5962
handle /reserved-memory nodes from device trees on arm64.

u-boot is supposed to take these entries and put them in the efi
memory map, but i keep hitting machines where an otherwise functional
u-boot does not do this, resulting in weird errors.

i have an espressobin with a vendor u-boot that has a reserved-memory
region for psci. without this diff the machine faults when the
kernel tries to reboot using a psci handler.

a macchiatobin with an otherwise working u-boot throws SErrors or
panics on weird memory corruption problems without this. i thought
it was bad RAM, but the problems persisted with completely different
ram, and very underclocked and well cooled ram.

riscv64 already has code to handle reserved-memory regions. the
riscv64 change is to add handling for the "no-map" property.

ok kettenis@
sys/arch/arm64/arm64/machdep.c
sys/arch/riscv64/riscv64/machdep.c