[Bug 294369] powerpc64: panic in zfs_write() during buildworld

[email protected] Sun, 12 Jul 2026 17:28:14 +0000
Newsgroups gmane.os.freebsd.devel.ppc
Message-ID <[email protected]/bugzilla/>
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D294369

Jessica Clarke <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|[email protected]            |[email protected]
                 CC|                            |[email protected]
             Status|New                         |In Progress

--- Comment #4 from Jessica Clarke <[email protected]> ---
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 =3D page_busy(vp, start, off, nbytes)) !=3D 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.

--=20
You are receiving this mail because:
You are on the CC list for the bug.=