From owner-freebsd-hackers Fri Feb 3 16:17:26 1995 Return-Path: hackers-owner Received: (from root@localhost) by freefall.cdrom.com (8.6.9/8.6.6) id QAA27241 for hackers-outgoing; Fri, 3 Feb 1995 16:17:26 -0800 Received: from estienne.cs.berkeley.edu (estienne.CS.Berkeley.EDU [128.32.42.147]) by freefall.cdrom.com (8.6.9/8.6.6) with ESMTP id QAA27235 for ; Fri, 3 Feb 1995 16:17:25 -0800 Received: (from gibbs@localhost) by estienne.cs.berkeley.edu (8.6.9/8.6.9) id QAA11664; Fri, 3 Feb 1995 16:17:05 -0800 From: "Justin T. Gibbs" Message-Id: <199502040017.QAA11664@estienne.cs.berkeley.edu> Subject: Re: FIX FOR CACHE/DMA RANGE PROBLEMS (was Re: new SNAP) To: terry@cs.weber.edu (Terry Lambert) Date: Fri, 3 Feb 1995 16:17:04 -0800 (PST) Cc: bugs@warlock.win.net, freebsd-hackers@FreeBSD.org In-Reply-To: <9502032126.AA23872@cs.weber.edu> from "Terry Lambert" at Feb 3, 95 02:26:26 pm X-Mailer: ELM [version 2.4 PL24] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Length: 2054 Sender: hackers-owner@FreeBSD.org Precedence: bulk > > > Are you possitive that your motherboard can do DMA above 16meg?? Not all > > EISA machines are created equal you know. I also cannot guarantee that the > > diagnostic code in there is up to date. I've been running without it enabled > > for some time now. > > Look, you can diagnose a cache problem: > > o Do a pattern write to the first block of swap. > o Use the same buffer. Do a pattern write of a different pattern > to the second block of swap. > o Use the same buffer. DMA read the first block of swap. Examine > the first byte of the buffer. Do you see the character you used > in the first or the second pattern? > o If you have a cache problem, turn off the cache or turn on BINVD > or use programmed I/O. > > This should be automatic. If necessary, reserve a disk block before the > mountable part of the 'a' slice to do the test (assuming no swap). > > > Diagnosing a DMA range restriction is similarly easy: > > o Make sure that you have a memory area that is clean both with > and without the 16M range mask. This is the tricky part. > o Fill the lower memory area with a pattern. > o Do a write of the lower memory area to the first block of swap. > o Fill both the upper and lower memory are with a different > pattern. > o Do a DMA read into the upper memory address. > o Determine if the controller wrote upper or lower memory. > o If you have a DMA range restriction, turn on bouncing. > > > All this "try setting this, try setting that" is just mindless frobbing. > This is not the job of the device driver. I think that many of these types of problems are detectable. The question is who has the time or interest to write the code. > > Terry Lambert > terry@cs.weber.edu > --- > Any opinions in this posting are my own and not those of my present > or previous employers. > -- Justin T. Gibbs ============================================== TCS Instructional Group - Programmer/Analyst 1 Cory | Po | Danube | Volga | Parker | Torus ==============================================