From owner-freebsd-current Wed Apr 30 09:34:10 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.5/8.8.5) id JAA04859 for current-outgoing; Wed, 30 Apr 1997 09:34:10 -0700 (PDT) Received: from pluto.plutotech.com (root@pluto100.plutotech.com [206.168.67.137]) by hub.freebsd.org (8.8.5/8.8.5) with ESMTP id JAA04854 for ; Wed, 30 Apr 1997 09:34:04 -0700 (PDT) Received: from narnia.plutotech.com (narnia.plutotech.com [206.168.67.130]) by pluto.plutotech.com (8.8.5/8.8.3) with ESMTP id KAA17426; Wed, 30 Apr 1997 10:34:00 -0600 (MDT) Message-Id: <199704301634.KAA17426@pluto.plutotech.com> X-Mailer: exmh version 2.0beta 12/23/96 To: Richard Straka cc: "Justin T. Gibbs" , current@FreeBSD.org Subject: Re: ie ethernet driver and Intel EtherExpress16 In-reply-to: Your message of "Wed, 30 Apr 1997 09:05:02 PDT." Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Wed, 30 Apr 1997 11:32:31 -0600 From: "Justin T. Gibbs" Sender: owner-current@FreeBSD.org X-Loop: FreeBSD.org Precedence: bulk >I have also noticed that the machine seems to hang after disk syncing >during a halt/reboot. The machine shuts down properly with the old >ix driver. Can you see if this patch fixes the hang? -- Justin T. Gibbs =========================================== FreeBSD: Turning PCs into workstations =========================================== Index: if_ie.c =================================================================== RCS file: /usr/cvs/src/sys/i386/isa/if_ie.c,v retrieving revision 1.41 diff -c -r1.41 if_ie.c *** if_ie.c 1997/04/14 00:37:50 1.41 --- if_ie.c 1997/04/30 17:31:13 *************** *** 576,585 **** { struct ie_softc *ie = (struct ie_softc *)sc; int unit = ie - &ie_softc[0]; ! ee16_reset_586(unit); ! outb(PORT + IEE16_ECTRL, IEE16_RESET_ASIC); ! outb(PORT + IEE16_ECTRL, 0); } --- 576,596 ---- { struct ie_softc *ie = (struct ie_softc *)sc; int unit = ie - &ie_softc[0]; + int s; ! s = splimp(); ! ! /* disable interrupts on the controller */ ! outb(PORT + IEE16_IRQ, ie->irq_encoded); ! ! ee16_reset_586(unit); ! outb(PORT + IEE16_ECTRL, IEE16_RESET_ASIC); ! outb(PORT + IEE16_ECTRL, 0); ! ! /* disable interrupts again just in case */ ! outb(PORT + IEE16_IRQ, ie->irq_encoded); ! ! splx(s); }