git: 7b8f3db50cc9 - main - libkvm: support little-endian powerpc64 minidumps
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 28 Sep 2026 15:39:55 UTC
The branch main has been updated by mchoo:
URL: https://cgit.FreeBSD.org/src/commit/?id=7b8f3db50cc992a3676e7e5ac207024e073884d4
commit 7b8f3db50cc992a3676e7e5ac207024e073884d4
Author: Minsoo Choo <mchoo@FreeBSD.org>
AuthorDate: 2026-09-15 03:04:16 +0000
Commit: Minsoo Choo <mchoo@FreeBSD.org>
CommitDate: 2026-09-28 15:39:46 +0000
libkvm: support little-endian powerpc64 minidumps
Reviewed by: jhibbits
Approved by: olce (mentor)
MFC after: 2 weeks
Sponsored by: FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D59719
---
lib/libkvm/kvm_minidump_powerpc64.c | 24 ++++++++++++------------
lib/libkvm/kvm_minidump_powerpc64_hpt.c | 4 ++--
2 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/lib/libkvm/kvm_minidump_powerpc64.c b/lib/libkvm/kvm_minidump_powerpc64.c
index caf504cff077..f39a6ed9393b 100644
--- a/lib/libkvm/kvm_minidump_powerpc64.c
+++ b/lib/libkvm/kvm_minidump_powerpc64.c
@@ -88,25 +88,25 @@ _powerpc64_minidump_initvtop(kvm_t *kd)
goto failed;
}
/* Check version */
- hdr->version = be32toh(hdr->version);
+ hdr->version = _kvm32toh(kd, hdr->version);
if (hdr->version != MINIDUMP_VERSION && hdr->version != 1) {
_kvm_err(kd, kd->program, "wrong minidump version. "
"Expected %d got %d", MINIDUMP_VERSION, hdr->version);
goto failed;
}
/* Convert header fields to host endian */
- hdr->msgbufsize = be32toh(hdr->msgbufsize);
- hdr->bitmapsize = be32toh(hdr->bitmapsize);
- hdr->pmapsize = be32toh(hdr->pmapsize);
- hdr->kernbase = be64toh(hdr->kernbase);
- hdr->kernend = be64toh(hdr->kernend);
- hdr->dmapbase = be64toh(hdr->dmapbase);
- hdr->dmapend = be64toh(hdr->dmapend);
- hdr->hw_direct_map = be32toh(hdr->hw_direct_map);
- hdr->startkernel = be64toh(hdr->startkernel);
- hdr->endkernel = be64toh(hdr->endkernel);
+ hdr->msgbufsize = _kvm32toh(kd, hdr->msgbufsize);
+ hdr->bitmapsize = _kvm32toh(kd, hdr->bitmapsize);
+ hdr->pmapsize = _kvm32toh(kd, hdr->pmapsize);
+ hdr->kernbase = _kvm64toh(kd, hdr->kernbase);
+ hdr->kernend = _kvm64toh(kd, hdr->kernend);
+ hdr->dmapbase = _kvm64toh(kd, hdr->dmapbase);
+ hdr->dmapend = _kvm64toh(kd, hdr->dmapend);
+ hdr->hw_direct_map = _kvm32toh(kd, hdr->hw_direct_map);
+ hdr->startkernel = _kvm64toh(kd, hdr->startkernel);
+ hdr->endkernel = _kvm64toh(kd, hdr->endkernel);
hdr->dumpavailsize = hdr->version == MINIDUMP_VERSION ?
- be32toh(hdr->dumpavailsize) : 0;
+ _kvm32toh(kd, hdr->dumpavailsize) : 0;
vmst->kimg_start = PPC64_KERNBASE;
vmst->kimg_end = PPC64_KERNBASE + hdr->endkernel - hdr->startkernel;
diff --git a/lib/libkvm/kvm_minidump_powerpc64_hpt.c b/lib/libkvm/kvm_minidump_powerpc64_hpt.c
index 1db3d373e169..9846f5594400 100644
--- a/lib/libkvm/kvm_minidump_powerpc64_hpt.c
+++ b/lib/libkvm/kvm_minidump_powerpc64_hpt.c
@@ -311,8 +311,8 @@ pte_get(kvm_t *kd, u_long ptex)
ppc64_pt_entry_t pte, *p;
p = _kvm_pmap_get(kd, ptex, sizeof(pte));
- pte.pte_hi = be64toh(p->pte_hi);
- pte.pte_lo = be64toh(p->pte_lo);
+ pte.pte_hi = _kvm64toh(kd, p->pte_hi);
+ pte.pte_lo = _kvm64toh(kd, p->pte_lo);
return (pte);
}