Subject: Kernel Exception "Page Not Present"
To: Marcel Moolenaar <marcel@xcllnt.net>
From: Cherry George Mathew <cherry@sdf.lonestar.org>
List: port-ia64
Date: 02/26/2006 19:52:30
Hi Marcel,

I'm not sure if you're familiar with NetBSD's uvm, but I'm trying to
get some quick tips about this one ( kernel dmesg below ).

Kernel is Page Faulting with "Not Present". I suspect this is too
early for anything really complicated, so either:

- pmap_enter_vhpt() didn't do its job.
- UVM is trying to fault in a kernel page ???!!!! Isn't this what pmap_growkernel is for ?
- pmap_kenter_pa() screwed up with pte's

Also:
This might be a really dumb question, but can you tell me why we need
a Region 5 vhpt mapped region, when we already have a direct mapped
Region 7 region ? Its not immediately obvious to me.

Any clues would help me fix this quickly.

Here's the pmap.c which gave me the trace given below:

http://cherry.zyx.in/downloads/netbsd-anvil/pmap-debug/260206.pmap.c

Thanks,

Cherry.

--8<---------------cut here---------------start------------->8---


Console: ia64 SKI console

NetBSD/ia64 ia64 SKI boot, Revision 0.1
(cherry@nxakato, Sat Feb 25 13:31:59 IST 2006)


Type '?' for a list of commands, 'help' for more detailed help.
OK boot netbsd
2084600+73152+47568 [91824+54519]=0x232ea0
netbsd entry at 0xe000000004008000
Entering  at 0xe000000004008000...
PAL code mapped by the kernel's TR
PAL Proc at 0xe000000000101580
SAL Proc at 0xe000000000101680, GP at 0xe000000000198ee8
SAL: AP wake-up vector: 0xff
Platform clock frequency 133338184 Hz
Processor ratio 11/2, Bus ratio 1/1, ITC ratio 11/2
MD 0xe000000000198b08: type 13 pa 0x100000 cnt 0x400
MD 0xe000000000198b30: type 7 pa 0x500000 cnt 0x8000
Descriptor 0xe000000000198b30 contains kernel
Loading chunk before kernel: 0x280 / 0x2000
Loading chunk after kernel: 0x211b / 0x4280
MD 0xe000000000198b58: type 7 pa 0x100000000 cnt 0x4000
Skipping memory chunk start 0x100000000
MD 0xe000000000198b80: type 12 pa 0xffffc000000 cnt 0x4000
physmem = 16384x
ptc.e base=0x0, count1=1, count2=1, stride1=0x0, stride2=0x0
Processor supports 18 Region ID bits
Trying VHPT size 0x10000
Putting VHPT at 0xe0000000005d0000
Loaded initial symtab at 0xe00000000420ecb8, strtab at 0xe0000000042259a8, # entries 3806
pmap_init()
pmap_exit() 

fatal kernel trap (cpu 0):

    trap vector = 0x14 (Page Not Present)
    cr.iip      = 0xe00000000414d900
    cr.ipsr     = 0x1010080a2010 (mfl,ic,dt,dfh,rt,cpl=0,it,ri=0,bn)
    cr.isr      = 0x200000000 (code=0,vector=0,w,ei=0)
    cr.ifa      = 0xa0000000000040b4
    curlwp   = 0xe000000004207a00
        pid = 0, comm = 

Stopped in pid 0.1 () at        netbsd:uvm_kmapent_alloc+0x390: [M0]    st1 r15=
r14
db> t 
--Kernel Call Trace--
uvm_kmapent_alloc(...)
uvm_map(...)
uvm_km_alloc(...)
kmeminit(...)
uvm_init(...)
main(...)
ia64_init(...)
start(...)
--8<---------------cut here---------------end--------------->8---