*BSD News Article 25179


Return to BSD News archive

Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!elroy.jpl.nasa.gov!usc!howland.reston.ans.net!gatech!udel!newsserv.cs.sunysb.edu!stark.UUCP!stark!stark!gene
From: stark!gene@newsserv.cs.sunysb.edu (Gene Stark)
Newsgroups: comp.os.386bsd.bugs
Subject: Re: [FreeBSD 1.0.2]: Frequent startup lock-up with XFree 2.0
Date: 20 Dec 93 08:57:52
Organization: Gene Stark's home system
Lines: 38
Distribution: inet
Message-ID: <STARK!GENE.93Dec20085752@stark.uucp>
References: <2el89e$10g@keltia.frmug.fr.net>
NNTP-Posting-Host: stark.uucp
In-reply-to: roberto@keltia.frmug.fr.net's message of 14 Dec 1993 21:38:56 +0100

In article <2el89e$10g@keltia.frmug.fr.net> roberto@keltia.frmug.fr.net (Ollivier Robert) writes:

>   background : 486DX-33, 16 MB, AHA-1542B, 640 MB Micropolis, Fahrenheit VA/VLB
>		FreeBSD 1.0.2 with 'trap.c' patch, XFree86 2.0/S3

I'm not sure if this will address the specific problem you are having,
but if the "trap.c" patch is the one I posted a few weeks ago, then it
is pretty important for you to also install an additional patch described
below.  The problem is that the first patch fixes one thing, which then
exposes another bug that will make your system unstable.  The second
patch fixes that instability.  I didn't discover the second bug until after
I had fixed the first one.  Also, David Greenman has told me that he
is working on integrating a rewritten pmap module into FreeBSD, so you
should be aware that these patches may be replaced by totally new code
in the next release of FreeBSD.  For now, though, these patches do the job.

							- Gene Stark

*** /usr/src/sys/i386/i386/trap.c	Sat Nov 20 14:47:44 1993
--- trap.c	Sat Dec 11 20:46:53 1993
***************
*** 347,352 ****
--- 347,359 ----
  			 */
  			if (nss > vm->vm_ssize)
  				vm->vm_ssize = nss;
+ 			/* 
+ 			 * va could be a page table address, if the fault
+ 			 * occurred from within copyout.  In that case,
+ 			 * we have to wire it. (EWS 12/11/93)
+ 			 */
+ 			if (ispt(va))
+ 			  vm_map_pageable(map, va, round_page(va+1), FALSE);
  			va = trunc_page(vtopte(va));
  			/* for page table, increment wiring
  			   as long as not a page table fault as well */

--