While testing a fix to another (unrelated) bug, I discovered that nvx82 DEBUG kernels
panic when booted on a 32GB two-socket, 8-core AMD-based system. A tedious binary
search discovered that a 'physmem' value of 0x4407e5 lets the system boot, but
anything greater results in assertion failure at line 2131 of usr/src/uts/common/vm/vm_pagelist.c:
ASSERT(mnode == PP_2_MEM_NODE(pp));
I don't have any other systems handy with 18.262e+9 bytes, aka
17.008GB of RAM, or more, to make sure this is not Thor related, but
I tend to believe it is generic.
Work Around
set aok to 1. The nvidia panic is not likely related.
Another workaround is tto set enable_1gpg to 0 to disable the creation of 1g pages.
I tried setting enable_1gpg = 0 in /etc/system, and the reported panic persists.
I'm also not keen on setting aok = 1 - that just globally disables assertion
panics, which could be hiding other issues.
enable_1gpg has to be set early before mmu_init() in kmdb via the -kd boot flag; /etc/system is currently too late.
Another option is to modify the enable_1gpg variable in the unix binary.
# mdb -w /platform/i86pc/kernel/amd64/unix
> enable_1gpg?W 0
Setting enable_1gpg to 0 does not provide a workaround.
A viable workaround for both DEBUG and non DEBUG kernels is to boot into kmdb and set a chip breakpoint on mmu_page_sizes.
> mmu_page_sizes:w
On breakpoint, if the value of mmu_page_sizes is 3, set it to 2.
> mmu_page_sizes/W 2