From owner-freebsd-alpha Wed Oct 11 9:40:37 2000 Delivered-To: freebsd-alpha@freebsd.org Received: from duke.cs.duke.edu (duke.cs.duke.edu [152.3.140.1]) by hub.freebsd.org (Postfix) with ESMTP id D381337B503 for ; Wed, 11 Oct 2000 09:40:34 -0700 (PDT) Received: from grasshopper.cs.duke.edu (grasshopper.cs.duke.edu [152.3.145.30]) by duke.cs.duke.edu (8.9.3/8.9.3) with ESMTP id MAA23837; Wed, 11 Oct 2000 12:40:34 -0400 (EDT) Received: (from gallatin@localhost) by grasshopper.cs.duke.edu (8.11.0/8.9.1) id e9BGeXX76409; Wed, 11 Oct 2000 12:40:33 -0400 (EDT) (envelope-from gallatin@cs.duke.edu) From: Andrew Gallatin MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Date: Wed, 11 Oct 2000 12:40:33 -0400 (EDT) To: Doug Rabson Cc: freebsd-alpha@freebsd.org Subject: Re: size problems with INVARIANTS/DIAGNOSTIC -current kernels In-Reply-To: References: <14819.31072.8716.976218@grasshopper.cs.duke.edu> X-Mailer: VM 6.43 under 20.4 "Emerald" XEmacs Lucid Message-ID: <14820.26156.761015.912596@grasshopper.cs.duke.edu> Sender: owner-freebsd-alpha@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org Doug Rabson writes: > On Tue, 10 Oct 2000, Andrew Gallatin wrote: > > > > > Doug Rabson writes: > > > > > I'm sorry, I think I meant *vtopte(kmemusage). I need to look at the pte > > > itself to see if its sane. > > > > I'm being extra dense too. > > > > Copyright (c) 1992-2000 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. > > kmem_init: kmemusage = 0xfffffe0000296000 > > vtopte (kmemusage) = 0xffffffff80000a58 > > *(vtopte (kmemusage)) = 0x54b0003111f > > > > halted CPU 0 > > > > > > But -- why should the pte be sane yet? This is before the fault, > > which I thought should be the one to make it sane.. > > Kernel pages are generally mapped before they are used so that we don't > waste time faulting and patching the pages into the map via vm_fault(). > > This page is managed, wired, read/writable but is set to fault on > read/write/execute. This fault is simply to perform software accounting > for accessed and dirty flags and is probably a red herring. We need to > somehow find the fault which actually kills the machine (assuming that > this isn't the one - we need to check that). I'm fairly certain that this *is* the fault that kills the machine. The key information is that this is the first fault we take at bootup. The problem doesn't have anything to do with the actual fault, the problem is is that the XentMM() routine ends up jumping into the data segment when it attempts to call trap(). You should be able to duplicate this fairly easily on any kernel whose size is > 4MB. Without my little hack, this fault will naturally occur inside of malloc the first time its called (by the hints code these days). I don't think this is a new problem, as the KAME people are seeing it in 4.1 kernels. I think we just finally grew huge enough with SMPng and assoiciated SMPng debugging goop to get over 4MB kernels. Drew To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-alpha" in the body of the message