]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Always use 64-bit physical addresses for dump_avail[] in minidumps
authorMark Johnston <markj@FreeBSD.org>
Thu, 3 Dec 2020 17:12:31 +0000 (17:12 +0000)
committerMark Johnston <markj@FreeBSD.org>
Thu, 3 Dec 2020 17:12:31 +0000 (17:12 +0000)
commitb957b185946ed5ad96436b50bb118db8c1a24ded
tree125498308c1e41aa43e9666cf39b931ab6f3c5a9
parent7be2770a426dc7399b63115b1c2c7d8bebdea06a
Always use 64-bit physical addresses for dump_avail[] in minidumps

As of r365978, minidumps include a copy of dump_avail[].  This is an
array of vm_paddr_t ranges.  libkvm walks the array assuming that
sizeof(vm_paddr_t) is equal to the platform "word size", but that's not
correct on some platforms.  For instance, i386 uses a 64-bit vm_paddr_t.

Fix the problem by always dumping 64-bit addresses.  On platforms where
vm_paddr_t is 32 bits wide, namely arm and mips (sometimes), translate
dump_avail[] to an array of uint64_t ranges.  With this change, libkvm
no longer needs to maintain a notion of the target word size, so get rid
of it.

This is a no-op on platforms where sizeof(vm_paddr_t) == 8.

Reviewed by: alc, kib
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D27082
12 files changed:
lib/libkvm/kvm_minidump_aarch64.c
lib/libkvm/kvm_minidump_amd64.c
lib/libkvm/kvm_minidump_arm.c
lib/libkvm/kvm_minidump_i386.c
lib/libkvm/kvm_minidump_mips.c
lib/libkvm/kvm_minidump_powerpc64.c
lib/libkvm/kvm_minidump_riscv.c
lib/libkvm/kvm_private.c
lib/libkvm/kvm_private.h
sys/arm/arm/minidump_machdep.c
sys/kern/kern_dump.c
sys/mips/mips/minidump_machdep.c