From owner-freebsd-questions Tue Feb 4 18:19:51 1997 Return-Path: Received: (from root@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id SAA14076 for questions-outgoing; Tue, 4 Feb 1997 18:19:51 -0800 (PST) Received: from root.com (implode.root.com [198.145.90.17]) by freefall.freebsd.org (8.8.5/8.8.5) with ESMTP id SAA14017; Tue, 4 Feb 1997 18:19:37 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by root.com (8.7.6/8.6.5) with SMTP id SAA03221; Tue, 4 Feb 1997 18:19:39 -0800 (PST) Message-Id: <199702050219.SAA03221@root.com> X-Authentication-Warning: implode.root.com: Host localhost [127.0.0.1] didn't use HELO protocol To: "Brian J. McGovern" cc: questions@freebsd.org, hackers@freebsd.org Subject: Re: Cyclades driver causes kernel panic In-reply-to: Your message of "Tue, 04 Feb 1997 17:54:56 EST." <199702042254.RAA02641@spoon.beta.com> From: David Greenman Reply-To: dg@root.com Date: Tue, 04 Feb 1997 18:19:39 -0800 Sender: owner-questions@freebsd.org X-Loop: FreeBSD.org Precedence: bulk >Well, its back, and I'm pulling my hair out of my head. It appears >that on HPs, Dells, Eclipse machines, and a handful of others, >the Cyclades driver causes a RAM parity error, causing the kernel >to panic, and the system to reboot. I've sen this on at least >a half dozen systems. And I've found about two that work. > >Has anyone seen this? Worked around it? I'm kind of at a crunch >to get some multi-port serial cards working, and I could use all >the help I can get. > >The machines are HP 586/133s and 166s. The dells are Dell 586/100s. The >only machine I've see it work in for any length of time was a AMD clone 586/100. > >I don't think its a RAM parity error, simply because a half-dozen >machines with EDO Ram can't all be wrong (or i'd see it elsewhere), >and the DOS drivers tend to get the card up and working on multiple >ports with no problems. Install the attached patch...it has fixed the problem for other people. -DG David Greenman Core-team/Principal Architect, The FreeBSD Project Index: locore.s =================================================================== RCS file: /home/ncvs/src/sys/i386/i386/locore.s,v retrieving revision 1.52.4.5 diff -c -r1.52.4.5 locore.s *** locore.s 1996/11/14 15:55:40 1.52.4.5 --- locore.s 1997/01/30 20:17:10 *************** *** 613,619 **** movl _KPTphys-KERNBASE,%ebx /* base of kernel page tables */ lea (0xa0 * PTESIZE)(%ebx),%ebx /* hardwire ISA hole at KERNBASE + 0xa0000 */ movl $0x100-0xa0,%ecx /* for this many pte s, */ ! movl $(0xa0000|PG_V|PG_KW|PG_N),%eax /* valid, kernel read/write, non-cacheable */ movl %ebx,_atdevphys-KERNBASE /* save phys addr of ptes */ fillkpt --- 613,619 ---- movl _KPTphys-KERNBASE,%ebx /* base of kernel page tables */ lea (0xa0 * PTESIZE)(%ebx),%ebx /* hardwire ISA hole at KERNBASE + 0xa0000 */ movl $0x100-0xa0,%ecx /* for this many pte s, */ ! movl $(0xa0000|PG_V|PG_KW),%eax /* valid, kernel read/write, non-cacheable */ movl %ebx,_atdevphys-KERNBASE /* save phys addr of ptes */ fillkpt Index: pmap.c =================================================================== RCS file: /home/ncvs/src/sys/i386/i386/pmap.c,v retrieving revision 1.58.4.6 diff -c -r1.58.4.6 pmap.c *** pmap.c 1996/06/26 06:18:10 1.58.4.6 --- pmap.c 1997/01/23 22:14:19 *************** *** 2043,2049 **** for (tmpva = va; size > 0;) { pte = vtopte(tmpva); ! *pte = (pt_entry_t) ((int) (pa | PG_RW | PG_V | PG_N)); size -= PAGE_SIZE; tmpva += PAGE_SIZE; pa += PAGE_SIZE; --- 2043,2049 ---- for (tmpva = va; size > 0;) { pte = vtopte(tmpva); ! *pte = (pt_entry_t) ((int) (pa | PG_RW | PG_V)); size -= PAGE_SIZE; tmpva += PAGE_SIZE; pa += PAGE_SIZE;