On Wed, 9 Mar 2022 11:01:04 +0100
Alexander Bluhm <[email protected]> wrote:

> dar 0xfffffffffd7f0020 dsisr 0x40000000
> trap type 300 srr1 9000000000009032 at 1411eb8 lr 1411e94
> Stopped at      pool_do_get+0xa8:       ld r4,32(r27)

The kernel failed to read an unmapped page, so ddb has stopped the
kernel.  Here's "objdump -dlr subr_pool.o" with my comments,

/usr/src/sys/kern/subr_pool.c:720
    # ph = pp->pr_curpage;                          # r30 = pp
    2170:       eb 7e 00 50     ld      r27,80(r30) # r27 = ph
/usr/src/sys/kern/subr_pool.c:721
    # pi = XSIMPLEQ_FIRST(&ph->ph_items);
    2174:       7f 63 db 78     mr      r3,r27
    2178:       e8 9b 00 20     ld      r4,32(r27)  # r4 = sqx_cookie
    217c:       e8 a3 00 11     ldu     r5,16(r3)   # r5 = sqx_first
    2180:       7c 9d 2a 79     xor.    r29,r4,r5

> r27               0xfffffffffd7f0000
> r30                        0x1b58aa0    uvm_map_entry_pool

So pp = &uvm_map_entry_pool was valid, but ph = pp->pr_curpage pointed
outside mapped memory; kernel can't read XSIMPLEQ's cookie.

> ddb{1}> mach ddbcpu 0
> hangs the machine

I struggle to guess why this was hanging.  I want to believe that
cpu0 can enter ddb, because cpu1 recently entered ddb, so the pages
for entering ddb should still be mapped.

I have not seen any crash like this on powerpc64.  Maybe we can't
learn more, unless the crash will happen more often.

I saw 2 of "panic: biodone already" in bsd.rd on powerpc64.  The 1st
was on 2020 Sep 4, but the 2nd was on 2022 Jan 17, more than a year
later.  There's no ddb in bsd.rd, so I learned almost nothing.
--George

Reply via email to