main [so: 15] on Ryzen 9 7950X3D [so: amd64]: panic: Unknown caching mode 31 [pmap_cache_bits at sys/amd64/amd64/pmap.c:2697]

From: Mark Millard <marklmi_at_yahoo.com>
Date: Thu, 04 Jan 2024 02:05:02 UTC
I've had a couple of 7950X3D crashes when I've not been around to
observe, not frequent. I was finally had one happen while I was
present. I do not know a way to force a failure on demand.

[Note: I currently only have internet access via a limited use
cell phone for some number of days. So my report is just the
prefix of /var/crash/core.txt.3 .]

The system was not running a debug build. Also, it is my personal
build. For this I'm unlikely to manage to set up a reproduction
via an official build.

# more /var/crash/core.txt.3
7950X3D-ZFS dumped core - see /var/crash/vmcore.3

Wed Jan  3 15:07:58 PST 2024

FreeBSD 7950X3D-ZFS 15.0-CURRENT FreeBSD 15.0-CURRENT #134 main-n266876-e183039f0882-dirty: Fri Dec  8 14:22:35 PST 2023     root@7950X3D-ZFS:/usr/obj/BUILDs/main-amd64-nodbg-clang/usr/main-src/amd64.amd64/sys/GENERIC-NODBG  amd64

panic: Unknown caching mode 31

GNU gdb (GDB) 13.2 [GDB v13.2 for FreeBSD]
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-portbld-freebsd15.0".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /boot/kernel/kernel...
Reading symbols from /usr/lib/debug//boot/kernel/kernel.debug...

Unread portion of the kernel message buffer:
panic: Unknown caching mode 31

cpuid = 8
time = 1704322675
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe04293f39e0
vpanic() at vpanic+0x131/frame 0xfffffe04293f3b10
panic() at panic+0x43/frame 0xfffffe04293f3b70
pmap_enter() at pmap_enter+0x104b/frame 0xfffffe04293f3c40
vm_fault() at vm_fault+0x1340/frame 0xfffffe04293f3d60
vm_fault_trap() at vm_fault_trap+0x6b/frame 0xfffffe04293f3db0
trap_pfault() at trap_pfault+0x1d6/frame 0xfffffe04293f3e10
trap() at trap+0x45d/frame 0xfffffe04293f3f30
calltrap() at calltrap+0x8/frame 0xfffffe04293f3f30
--- trap 0xc, rip = 0x8268267a5, rsp = 0x8279aced8, rbp = 0x8279acf10 ---
KDB: enter: panic

__curthread () at /usr/main-src/sys/amd64/include/pcpu_aux.h:57
57              __asm("movq %%gs:%P1,%0" : "=r" (td) : "n" (offsetof(struct pcpu,
(kgdb) #0  __curthread () at /usr/main-src/sys/amd64/include/pcpu_aux.h:57
        td = <optimized out>
#1  doadump (textdump=textdump@entry=0)
    at /usr/main-src/sys/kern/kern_shutdown.c:403
        error = 0
        coredump = <optimized out>
#2  0xffffffff804a476a in db_dump (dummy=<optimized out>,      dummy2=<optimized out>, dummy3=<optimized out>, dummy4=<optimized out>)
    at /usr/main-src/sys/ddb/db_command.c:590
        error = <optimized out>
#3  0xffffffff804a4570 in db_command (last_cmdp=<optimized out>,      cmd_table=<optimized out>, dopager=true)
    at /usr/main-src/sys/ddb/db_command.c:503
        modif = "\000\000\000\000\000\000\000\000$p\033\202\377\377\377\377x\222\227\001\001\370\377\377\000\000\000\000\000\000\000\000\b\000\000\0000\000\000\000\2605?)\004\376\377\377P5?)\004\376\377\377$p\033\202\377\377\377\377\3605?)\004\376\377\377\biJ\200\377\377\377\377\320\302\001\202\377\377\377\377%L'\201\377\377\377\377 p\033\202\377\377\377\377\000\000\000\000\000\000\000\000\320\302\001\202\377\377\377\377"
        addr = -2135186029
        count = -1
        cmd = 0xffffffff8201b768 <db_cmds+616>
        have_addr = <optimized out>
        t = <optimized out>
        result = <optimized out>
#4  0xffffffff804a422d in db_command_loop ()
    at /usr/main-src/sys/ddb/db_command.c:550
No locals.
#5  0xffffffff804a7bc6 in db_trap (type=<optimized out>, code=<optimized out>)
    at /usr/main-src/sys/ddb/db_main.c:267
        jb = {{_jb = {0, -2181151377896, -2181151377760, -2113813808, 0,                -2181151377888, -8782373759168, -2142602412, -2181151377792,                -2137341649, -2110266400, 3}}}
        bkpt = false
        watchpt = false
        prev_jb = 0x0
        why = <optimized out>
#6  0xffffffff80bbaff7 in kdb_trap (type=type@entry=3, code=code@entry=0,      tf=tf@entry=0xfffffe04293f3920) at /usr/main-src/sys/kern/subr_kdb.c:790
        __pc = <optimized out>
        __pc = <optimized out>
        other_cpus = {__bits = {5914799713661383268, 0, -2181151377264, 0,              -2135156224, -2128969052, -2181151377280, -2135161210,              35024195344, 0, 43641681928, -2128969053, -2128649111, 5,              692009152, -4294967296}}
        be = 0xffffffff8201c2d0 <ddb_dbbe>
        intr = 70
        did_stop_cpus = <optimized out>
        handled = <optimized out>
#7  0xffffffff81051cdd in trap (frame=0xfffffe04293f3920)
    at /usr/main-src/sys/amd64/amd64/trap.c:606
        __pc = <optimized out>
        __pc = <optimized out>
        __pc = <optimized out>
        ksi = {ksi_link = {tqe_next = 0xffffffff804a7d5c <db_printf+92>,              tqe_prev = 0xfffffe04293f3858}, ksi_info = {si_signo = 692009128,              si_errno = -508, si_code = 0, si_pid = 0, si_uid = 692009112,              si_status = -508, si_addr = 0x521597006a5e7264, si_value = {
              sival_int = 1016, sival_ptr = 0x3f8, sigval_int = 1016,                sigval_ptr = 0x3f8}, _reason = {_fault = {_trapno = 692010816},                _timer = {_timerid = 692010816, _overrun = -508}, _mesgq = {
                _mqd = 692010816}, _poll = {_band = -2181151375552},                _capsicum = {_syscall = 692010816}, __spare__ = {
                __spare1__ = -2181151375552, __spare2__ = {664456920, 8,                    1784574564, 1377146624, 256, 0, -1}}}},            ksi_flags = -866898064, ksi_sigq = 0xffffffff8126824c}
        signo = 692009312
        ucode = -508
        td = <optimized out>
        p = 0xfffffe041d0cfae0
        dr6 = 0
        type = 3
        addr = <optimized out>
        pf = <optimized out>
        i = <optimized out>
#8  <signal handler called>
No locals.
#9  kdb_enter (why=<optimized out>, msg=<optimized out>)
    at /usr/main-src/sys/kern/subr_kdb.c:556
No locals.
#10 0xffffffff80b6b582 in vpanic (
    fmt=0xffffffff8126824c "Unknown caching mode %d\n",      ap=ap@entry=0xfffffe04293f3b50)
    at /usr/main-src/sys/kern/kern_shutdown.c:953
        buf = "Unknown caching mode 31\n", '\000' <repeats 231 times>
        __pc = <optimized out>
        __pc = <optimized out>
        __pc = <optimized out>
        other_cpus = {__bits = {4294967039, 0 <repeats 15 times>}}
        td = 0xfffff80331bb5740
        bootopt = <optimized out>
        newpanic = <optimized out>
#11 0xffffffff80b6b413 in panic (
    fmt=0xffffffff820aa2a8 <vt_conswindow+16> "3\370 \201\377\377\377\377")
    at /usr/main-src/sys/kern/kern_shutdown.c:889
        ap = {{gp_offset = 16, fp_offset = 48,              overflow_arg_area = 0xfffffe04293f3b80,              reg_save_area = 0xfffffe04293f3b20}}
#12 0xffffffff8103d8db in pmap_cache_bits (pmap=0xfffff80389ca8ad0, mode=64,      is_pde=<optimized out>) at /usr/main-src/sys/amd64/amd64/pmap.c:2697
        pat_idx = <optimized out>
        cache_bits = <optimized out>
        pat_flag = <optimized out>
#13 pmap_enter (pmap=0xfffff80389ca8ad0, va=<optimized out>,      va@entry=8189072760832, m=0xfffffe00cc5c2fb0, prot=<optimized out>,      flags=2, psind=psind@entry=0 '\000')
    at /usr/main-src/sys/amd64/amd64/pmap.c:7196
        lock = 0x0
        PG_A = <optimized out>
        PG_G = <optimized out>
        PG_M = <optimized out>
        PG_V = <optimized out>
        PG_RW = 0
        pa = 18446741878114365296
        newpte = <optimized out>
        rv = <optimized out>
        mpte = <optimized out>
        pde = <optimized out>
        nosleep = <optimized out>
        pte = <optimized out>
        origpte = <optimized out>
        pv = <optimized out>
        opa = <optimized out>
        om = <optimized out>
#14 0xffffffff80ef3d80 in vm_fault (map=map@entry=0xfffff80389ca89a0, 
    vaddr=vaddr@entry=8189072760832, fault_type=fault_type@entry=2 '\002',      fault_flags=fault_flags@entry=0, m_hold=m_hold@entry=0x0)
    at /usr/main-src/sys/vm/vm_fault.c:1756
        ahead = 692010240
        behind = -1
        fs = <optimized out>
        faultcount = 1
        hardfault = false
        rv = <optimized out>
        res = <optimized out>
        res_next = <optimized out>
#15 0xffffffff80ef292b in vm_fault_trap (map=0xfffff80389ca89a0,      vaddr=vaddr@entry=8189072760832, fault_type=<optimized out>,      fault_flags=fault_flags@entry=0, signo=0xfffffe04293f3f00,      ucode=0xfffffe04293f3f04) at /usr/main-src/sys/vm/vm_fault.c:710
        result = <optimized out>
#16 0xffffffff81052956 in trap_pfault (frame=frame@entry=0xfffffe04293f3f40,      usermode=true, signo=0x0, signo@entry=0xfffffe04293f3f00,      ucode=0xfffffe04293f3620, ucode@entry=0xfffffe04293f3f04)
    at /usr/main-src/sys/amd64/amd64/trap.c:843
        __pc = <optimized out>
        __pc = <optimized out>
        __pc = <optimized out>
        td = 0xfffff80331bb5740
        p = <optimized out>
        eva = 8189072760832
        map = 0xffffffff820aa2a8 <vt_conswindow+16>
        ftype = 18 '\022'
        rv = <optimized out>
#17 0xffffffff81051eed in trap (frame=0xfffffe04293f3f40)
    at /usr/main-src/sys/amd64/amd64/trap.c:382
        __pc = <optimized out>
        __pc = <optimized out>
        __pc = <optimized out>
        ksi = {ksi_link = {tqe_next = 0xfffff80331bb5740,              tqe_prev = 0x69d4aff}, ksi_info = {si_signo = 1, si_errno = 0,              si_code = 0, si_pid = 0, si_uid = 2812281728, si_status = 1906,              si_addr = 0xfffffe04293f3e70, si_value = {
              sival_int = -2129519781,                sival_ptr = 0xffffffff81121b5b <lapic_handle_timer+171>,                sigval_int = -2129519781,                sigval_ptr = 0xffffffff81121b5b <lapic_handle_timer+171>},              _reason = {_fault = {_trapno = 664456992}, _timer = {
                _timerid = 664456992, _overrun = 8}, _mesgq = {
                _mqd = 664456992}, _poll = {_band = 35024195360},                _capsicum = {_syscall = 664456992}, __spare__ = {
                __spare1__ = 35024195360, __spare2__ = {12330184, 0,                    664456976, 8, -2130533455, -1, -1446252544}}}},            ksi_flags = 0, ksi_sigq = 0x34ea5840}
        signo = 0
        ucode = 0
        td = 0xfffff80331bb5740
        p = 0xfffffe041d0cfae0
        dr6 = 0
        type = 12
        addr = 35005818789
        pf = <optimized out>
        i = <optimized out>
#18 <signal handler called>
No locals.
#19 0x00000008268267a5 in ?? ()
No symbol table info available.
Backtrace stopped: Cannot access memory at address 0x8279aced8
(kgdb) 

. . .

FYI:

/*
 * Determine the appropriate bits to set in a PTE or PDE for a specified
 * caching mode.
 */
int
pmap_cache_bits(pmap_t pmap, int mode, boolean_t is_pde)
{
        int cache_bits, pat_flag, pat_idx;
          if (!pmap_is_valid_memattr(pmap, mode))
                panic("Unknown caching mode %d\n", mode);


That is all for now.

===
Mark Millard
marklmi at yahoo.com