Subject: vm_fault in pmap_changebit()
To: None <port-i386@NetBSD.ORG>
From: Dave Huang <khym@bga.com>
List: port-i386
Date: 11/10/1997 21:46:11
To help debug my vm_fault panic (described in PR port-i386/4281), Chuck
Cranor suggested I put these debugging messages into i386/pmap.c's
pmap_changebit() (at line 1645 or so):

                pte = pmap_pte(pv->pv_pmap, va);
                /* DEBUG */
                if (pte == NULL || !pmap_pte_v(pte)) {
                        printf("Bad PV entry discovered: ");
                        printf("pmap=%p, va=0x%lx\n", pv->pv_pmap, va);
                        if (pv->pv_pmap) {
                                if (!pmap_pde_v(pmap_pde(pv->pv_pmap, va)))
                                        printf("  NO page-table!\n");
                                else
                                        printf("  page table found!\n");
                        }
                }
                /* END DEBUG */
                *pte = (*pte & maskbits) | setbits;

Well, my machine crashed again, and I got the following message:
Bad PV entry discovered: pmap=0xf0676b80, va=0xefbfd000
  NO page-table!
vm_fault(0xf0694a00, 0, 1, 0) -> 5
fatal page fault in supervisor mode
trap type 6 code efbf0000 eip f01a8bc4 cs f01a0008 eflags 10286 cr2 0 cpl e00044c2
panic: trap

And as usual, the fault occurs at the "*pte = (*pte & maskbits) | setbits"
line... pte is a null pointer.

So, does this mean anything to anyone? :) Kernel was compiled from
November 9 source... core dump and kernel with debug symbols available
if anyone wants to see.

Thanks!
--
Name: Dave Huang     |   Mammal, mammal / their names are called /
INet: khym@bga.com   |   they raise a paw / the bat, the cat /
FurryMUCK: Dahan     |   dolphin and dog / koala bear and hog -- TMBG
Dahan: Hani G Y+C 22 Y++ L+++ W- C++ T++ A+ E+ S++ V++ F- Q+++ P+ B+ PA+ PL++