Subject: Re: -current TLB panics on 3100?
To: William O Ferry <woferry@iname.com>
From: Michael L. Hitch <mhitch@lightning.msu.montana.edu>
List: port-pmax
Date: 11/07/1999 13:42:53
On Sun, 7 Nov 1999, William O Ferry wrote:

> trap: TLB miss (load or instr. fetch) in kernel mode
> status=0x8fc34, cause=0x30000000, epc=0x8014b628, vaddr=0x100
> pid=251 cmd=xntpd usp=0x7ffffce0 ksp=0xc2163e90
> stopped in xntpd at  trap+0x2f4:	lw	a2,0(v1)

  If this is where I think it is, it looks like the kernel is processing a
user TLB modify exception [pmap has set the page to read-only, and uses
the TLBmod exception to emulate page-modification status].  The kernel
TLB miss appears to be occuring when the TLBmod exception handler is
trying to load the first-level page table entry.

                pmap  = p->p_vmspace->vm_map.pmap;
                if (!(pte = pmap_segmap(pmap, vaddr)))
                            ^^^^^^^^^^^^^^^^^^^^^^^
This is where I think the kernel exception is occuring.

                        panic("utlbmod: invalid segmap");
                pte += (vaddr >> PGSHIFT) & (NPTEPG - 1);
                entry = pte->pt_entry;

  You could put a check just before the if statement to see if pmap is
NULL, and if it's not NULL, check pmap->pm_segtab for NULL. 

--
Michael L. Hitch			mhitch@montana.edu
Computer Consultant
Information Technology Center
Montana State University	Bozeman, MT	USA