Date: Sun, 14 Jul 2002 08:25:04 +0200 (SAT) From: John Hay <jhay@icomtek.csir.co.za> To: peter@wemm.org Cc: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/conf options.i386 options.pc98 src/sys/i386/i386 bios.c db_interface.c locore.s mp_machdep.c mpapic.c pm Message-ID: <200207140625.g6E6P4043409@zibbi.icomtek.csir.co.za> In-Reply-To: <200207121958.g6CJw5E63833@zibbi.icomtek.csir.co.za> from John Hay at "Jul 12, 2002 09:58:05 pm"
next in thread | previous in thread | raw e-mail | index | archive | help
Peter, The "#if 0" around that block of code is good enough to get my machine going again. I have also tried it again just now, after all the latest commits to pmap.c, but it still panic without the "#if 0". > > John Hay wrote: > > > > In message: <200207120756.g6C7uBjZ051826@freefall.freebsd.org> > > > > Peter Wemm <peter@FreeBSD.org> writes: > > > > : - It actually works this time, honest! > > > > > > My dual PII machine panic while booting now. I have tried with and without > > > acpi, just in case, but that does not make a difference. > > > > > > ############################ > > > Hit [Enter] to boot immediately, or any other key for command prompt. > > > Booting [/boot/kernel/kernel]... > > > ACPI autoload failed - no such file or directory > > > Copyright (c) 1992-2002 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.0-CURRENT #66: Fri Jul 12 18:46:29 SAST 2002 > > > jhay@beast.icomtek.csir.co.za:/usr/src/sys/i386/compile/BEAST > > > Preloaded elf kernel "/boot/kernel/kernel" at 0xc043b000. > > > Timecounter "i8254" frequency 1193520 Hz > > > CPU: Pentium II/Pentium II Xeon/Celeron (267.35-MHz 686-class CPU) > > > Origin = "GenuineIntel" Id = 0x633 Stepping = 3 > > > Features=0x80fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA, > > CMOV,MMX> > > > real memory = 134205440 (131060K bytes) > > > avail memory = 125702144 (122756K bytes) > > > Programming 24 pins in IOAPIC #0 > > > IOAPIC #0 intpin 2 -> irq 0 > > > > > > > > > Fatal trap 12: page fault while in kernel mode > > > cpuid = 0; lapic.id = 01000000 > > > fault virtual address = 0xbff00498 > > > fault code = supervisor read, protection violation > > > instruction pointer = 0x8:0xc02d4468 > > > stack pointer = 0x10:0xc045dcf4 > > > frame pointer = 0x10:0xc045dcfc > > > code segment = base 0x0, limit 0xfffff, type 0x1b > > > = DPL 0, pres 1, def32 1, gran 1 > > > processor eflags = interrupt enabled, resume, IOPL = 0 > > > current process = 0 () > > > kernel: type 12 trap, code=0 > > > Stopped at pmap_set_opt+0xa8: cmpl $0,PTmap(%eax) > > > db> > > > ############################ > > > > Umm, what the hell? First off, the DISABLE_PG_G option avoids this block > > of code, so you shouldn't be stuck. > > > > Secondly, the code in question is: > > if (pgeflag) { > > /* Turn on PG_G for text, data, bss pages. */ > > va = (vm_offset_t)btext; > > endva = KERNBASE + KERNend; > > while (va < endva) { > > pte = vtopte(va); > > if (*pte) > > ^^^^^^^^^ > > *pte |= pgeflag; > > va += PAGE_SIZE; > > } > > invltlb(); /* Insurance */ > > } > > #define vtopte(va) (PTmap + i386_btop(va)) > > > > "read protection violation"?? We cannot read the page table pages that map > > in the kernel? > > > > Can you repeat this anywhere else? Or is it just that one box? > > Well this is box I try current first. I can try it on another, but it will > take a while. > > > Do you > > have any unusual kernel compile options or tunables? I'll go over the code > > I use a serial console. I have CPUTYPE=i686 in /etc/make.conf and these > (maybe less normal ones) in my kernel config: > > options INET6 > options MROUTING > options PPS_SYNC > options CLK_USE_TSC_CALIBRATION > options "CLK_USE_I8254_CALIBRATION" > makeoptions DEBUG=-g > options DDB > options INVARIANTS > options INVARIANT_SUPPORT > options WITNESS > > > again but it would be useful if I could get some clues as to why it happens > > for you. Can you do a 'show all registers' for me and in particular tell > > me what %eax is? That will tell me the KVA address that it is trying to > > access the pte for. > > db> show all registers > No such command > db> show all > procs > db> show registers > cs 0x8 > ds 0xc0450010 > es 0x10 > fs 0x18 > ss 0x10 > eax 0x300498 > ecx 0xc043c000 > edx 0xc0126b10 btext > ebx 0x100 > esp 0xc045dcf4 > ebp 0xc045dcfc > esi 0xc0463000 > edi 0xbfeff000 PTD > eip 0xc02d4468 pmap_set_opt+0xa8 > efl 0x90202 > dr0 0 > dr1 0 > dr2 0 > dr3 0 > dr4 0xffff0ff0 > dr5 0x400 > dr6 0xffff0ff0 > dr7 0x400 > pmap_set_opt+0xa8: cmpl $0,PTmap(%eax) > db> > > > > > If this is absolutely repeatable, try throwing a #if 0 around that block of > > code, it isn't as severe as DISABLE_PG_G. You would lose PG_G on kernel > > text+data only instead of that plus mapped kernel pages. That should be > > mostly harmless because we should be running from the 4MB page for the most > > part. (say, how big is your kernel? More than 3MB? check the size(1) > > output please) > > Well I have tried the kernel a few times and it did the same everytime. > > beast:/home/jhay # size /boot/kernel/kernel > text data bss dec hex filename > 2311433 203892 428320 2943645 2cea9d /boot/kernel/kernel > > I'll try the #if 0 and DISABLE_PG_G tomorrow morning. Now it is bedtime > for me. John -- John Hay -- John.Hay@icomtek.csir.co.za / jhay@FreeBSD.org To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200207140625.g6E6P4043409>