Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

ia64 and emap

Hi! all,

My ia64 happen panic() at arch/ia64/ia64/pmap.c:pmap_find_kpte() sinse
this change.

panic: kernel diagnostic assertion "IA64_RR_MASK(va) < (nkpt * PAGE_SIZE * 
NKPTEPG)" failed: file "../../../../arch/ia64/ia64/pmap.c", line 1714
Broken into debugger

fatal kernel trap (cpu 0):

    trap vector = 0xb (Break Instruction)
    cr.iip      = 0xe00000000402db80
    cr.ipsr     = 0x1010080a2010 (mfl,ic,dt,dfh,rt,cpl=0,it,ri=0,bn)
    cr.isr      = 0x0 (code=0,vector=0,ei=0)
    cr.ifa      = 0x84b5d
    curlwp   = 0xe00000000435de40
        pid = 0, comm = system

Stopped in pid 0.1 (system) at  netbsd:cpu_Debugger+0x21:       [I1]    nop.i 0x

arch/ia64/ia64/pmap.c ---

 * Find the kernel lpte for mapping the given virtual address, which
 * must be in the part of region 5 which we can cover with our kernel
 * 'page tables'.
static struct ia64_lpte *
pmap_find_kpte(vaddr_t va)
        KASSERT((va >> 61) == 5);
        KASSERT(IA64_RR_MASK(va) < (nkpt * PAGE_SIZE * NKPTEPG));
        return &ia64_kptdir[KPTE_DIR_INDEX(va)][KPTE_PTE_INDEX(va)];

--- arch/ia64/ia64/pmap.c

The emap demands quite a lot of memories.  Therefore, more nkpt is
necessary for us.  Do we have the processes to know size of emap
For instance, is uvm_emap_size made global?

  -static u_int                   uvm_emap_size = UVM_EMAP_SIZE;
  +u_int                   uvm_emap_size = UVM_EMAP_SIZE;

# I am very embarrassed because I can not merge ia64.  X-<

Home | Main Index | Thread Index | Old Index