[Bug 294369] powerpc64: panic in zfs_write() during buildworld
- In reply to: bugzilla-noreply_a_freebsd.org: "[Bug 294369] powerpc64: panic in zfs_write() during buildworld"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 12 Jul 2026 17:28:14 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=294369
Jessica Clarke <jrtc27@freebsd.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|bugs@FreeBSD.org |jrtc27@freebsd.org
CC| |jrtc27@freebsd.org
Status|New |In Progress
--- Comment #4 from Jessica Clarke <jrtc27@freebsd.org> ---
As discussed on IRC, I believe this is fixed by
https://github.com/llvm/llvm-project/pull/207555. Looking at the "FreeBSD
16.0-CURRENT #0 main-n287202-759ce9a2b38e: Mon Jul 6 15:57:12 UTC 2026"
snapshot:
The kernel's pmap_remove_write ends up as an STT_FUNC symbol pointing at an
IPLT (called .glink on PowerPC, but merged into .text by ldscript.powerpc*):
7479: 00000000001014a0 0 FUNC GLOBAL DEFAULT [<other: 0x60>] 2
pmap_remove_write
00000000001014a0 <pmap_remove_write>:
1014a0: 15 00 82 3d addis 12, 2, 21
1014a4: a0 7f 8c e9 ld 12, 32672(12)
1014a8: a6 03 89 7d mtctr 12
1014ac: 20 04 80 4e bctr
update_pages in zfs.ko calls, via the (presumably inlined page_busy),
pmap_remove_write:
void
update_pages(znode_t *zp, int64_t start, int len, objset_t *os)
{
...
if ((pp = page_busy(vp, start, off, nbytes)) != NULL) {
static vm_page_t
page_busy(vnode_t *vp, int64_t start, int64_t off, int64_t nbytes)
{
...
pmap_remove_write(pp);
This will resolve to the above IPLT entry, being called with page_busy's
context, including presumably a TOC pointer for page_busy/zfs.ko, not the
kernel.
--
You are receiving this mail because:
You are the assignee for the bug.