Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 17 Oct 2003 12:34:59 +0200
From:      Jilles Tjoelker <jilles@stack.nl>
To:        freebsd-current@freebsd.org
Subject:   panic: pmap_enter: attempted pmap_enter on 4MB page
Message-ID:  <20031017103459.GA8418@stack.nl>

next in thread | raw e-mail | index | archive | help
Hello,

Yesterday our 5-CURRENT box panicked with panic: pmap_enter: attempted
pmap_enter on 4MB page.

uname -a:

FreeBSD turtle.stack.nl 5.1-CURRENT FreeBSD 5.1-CURRENT #15: Thu Oct  9 11:43:55 CEST 2003     jilles@turtle.stack.nl:/usr/obj/usr/src/sys/TURTLE  i386

This kernel includes a patch from Sam Leffler to
/usr/src/sys/netinet6/nd6.c to prevent panics which has been committed
now.

Beginning of dmesg:

Copyright (c) 1992-2003 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
	The Regents of the University of California. All rights reserved.
FreeBSD 5.1-CURRENT #15: Thu Oct  9 11:43:55 CEST 2003
    jilles@turtle.stack.nl:/usr/obj/usr/src/sys/TURTLE
Preloaded elf kernel "/boot/kernel/kernel" at 0xc07e6000.
Preloaded elf module "/boot/kernel/acpi.ko" at 0xc07e6294.
Timecounter "i8254" frequency 1193182 Hz quality 0
CPU: AMD Athlon(tm) MP 2000+ (1666.74-MHz 686-class CPU)
  Origin = "AuthenticAMD"  Id = 0x662  Stepping = 2
  Features=0x383fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE>
  AMD Features=0xc0480000<MP,AMIE,DSP,3DNow!>
real memory  = 1073217536 (1023 MB)
avail memory = 1037123584 (989 MB)
Programming 24 pins in IOAPIC #0
IOAPIC #0 intpin 2 -> irq 0
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
 cpu0 (BSP): apic id:  1, version: 0x00040010, at 0xfee00000
 cpu1 (AP):  apic id:  0, version: 0x00040010, at 0xfee00000
 io0 (APIC): apic id:  2, version: 0x00170011, at 0xfec00000
Pentium Pro MTRR support enabled
...

gdb output:
Script started on Fri Oct 17 11:56:23 2003
# gdb -k kernel.debug.13 vmcore.13
GNU gdb 5.2.1 (FreeBSD)
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-undermydesk-freebsd"...
panic: pmap_enter: attempted pmap_enter on 4MB page
panic messages:
---
panic: pmap_enter: attempted pmap_enter on 4MB page
cpuid = 1; lapic.id = 00000000
boot() called on cpu#1

syncing disks, buffers remaining... 6552 6552 6552 6552 6552 6552 6552 6552 6552 6552 6552 6552 6552 6552 6552 6552 6552 6552 6552 6552 
giving up on 374 buffers
Uptime: 3d12h22m57s
Dumping 1023 MB
 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240 256 272 288 304 320 336 352 368 384 400 416 432 448 464 480 496 512 528 544 560 576 592 608 624 640 656 672 688 704 720 736 752 768 784 800 816 832 848 864 880 896 912 928 944 960 976 992 1008
---
Reading symbols from /usr/obj/usr/src/sys/TURTLE/modules/usr/src/sys/modules/acpi/acpi.ko.debug...done.
Loaded symbols for /usr/obj/usr/src/sys/TURTLE/modules/usr/src/sys/modules/acpi/acpi.ko.debug
Reading symbols from /usr/obj/usr/src/sys/TURTLE/modules/usr/src/sys/modules/fdescfs/fdescfs.ko.debug...done.
Loaded symbols for /usr/obj/usr/src/sys/TURTLE/modules/usr/src/sys/modules/fdescfs/fdescfs.ko.debug
Reading symbols from /usr/obj/usr/src/sys/TURTLE/modules/usr/src/sys/modules/linux/linux.ko.debug...done.
Loaded symbols for /usr/obj/usr/src/sys/TURTLE/modules/usr/src/sys/modules/linux/linux.ko.debug
#0  doadump () at /usr/src/sys/kern/kern_shutdown.c:240
240		dumping++;
(kgdb) bt
#0  doadump () at /usr/src/sys/kern/kern_shutdown.c:240
#1  0xc04d7041 in boot (howto=256) at /usr/src/sys/kern/kern_shutdown.c:372
#2  0xc04d7498 in panic () at /usr/src/sys/kern/kern_shutdown.c:550
#3  0xc0652014 in pmap_enter (pmap=0xc6d6e98c, va=689672192, m=0xc1a33ba0, 
    prot=5 '\005', wired=0) at /usr/src/sys/i386/i386/pmap.c:1897
#4  0xc0601482 in vm_fault (map=0xc6d6e8dc, vaddr=689672192, 
    fault_type=1 '\001', fault_flags=0) at /usr/src/sys/vm/vm_fault.c:903
#5  0xc0655af5 in trap_pfault (frame=0xe6215d48, usermode=1, eva=689675199)
    at /usr/src/sys/i386/i386/trap.c:709
#6  0xc0655694 in trap (frame=
      {tf_fs = 47, tf_es = 47, tf_ds = 47, tf_edi = 134522240, tf_esi = 690202368, tf_ebp = -1077942584, tf_isp = -434021004, tf_ebx = 689329844, tf_edx = 1, tf_ecx = 0, tf_eax = 0, tf_trapno = 12, tf_err = 4, tf_eip = 689675199, tf_cs = 31, tf_eflags = 66050, tf_esp = -1077942628, tf_ss = 47})
    at /usr/src/sys/i386/i386/trap.c:317
#7  0xc063d938 in calltrap () at {standard input}:103
---Can't read userspace from dump, or kernel process---

(kgdb) frame 3
#3  0xc0652014 in pmap_enter (pmap=0xc6d6e98c, va=689672192, m=0xc1a33ba0, 
    prot=5 '\005', wired=0) at /usr/src/sys/i386/i386/pmap.c:1897
1897			panic("pmap_enter: invalid page directory pdir=%#jx, va=%#x\n",
(kgdb) l
1892	
1893		/*
1894		 * Page Directory table entry not valid, we need a new PT page
1895		 */
1896		if (pte == NULL) {
1897			panic("pmap_enter: invalid page directory pdir=%#jx, va=%#x\n",
1898				(uintmax_t)pmap->pm_pdir[PTDPTDI], va);
1899		}
1900	
1901		pa = VM_PAGE_TO_PHYS(m) & PG_FRAME;
(kgdb) l
1902		origpte = *pte;
1903		opa = origpte & PG_FRAME;
1904	
1905		if (origpte & PG_PS) {
1906			/*
1907			 * Yes, I know this will truncate upper address bits for PAE,
1908			 * but I'm actually more interested in the lower bits
1909			 */
1910			printf("pmap_enter: va %p, pte %p, origpte %p\n",
1911			    (void *)va, (void *)pte, (void *)(uintptr_t)origpte);
(kgdb) l
1912			panic("pmap_enter: attempted pmap_enter on 4MB page");
1913		}
1914	
1915		/*
1916		 * Mapping has not changed, must be protection or wiring change.
1917		 */
1918		if (origpte && (opa == pa)) {
1919			/*
1920			 * Wiring change, just update stats. We don't worry about
1921			 * wiring PT pages as they remain resident as long as there
(kgdb) p va
$1 = 689672192
(kgdb) p pte
$2 = (pt_entry_t *) 0xbfca46e4
(kgdb) p origpte
$3 = 3503345872
(kgdb) p (void *)va
$4 = (void *) 0x291b9000
(kgdb) p (void *)origpte
$5 = (void *) 0xd0d0d0d0
(kgdb) # 
# ^D
Script done on Fri Oct 17 12:03:23 2003



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20031017103459.GA8418>