From owner-freebsd-current Mon Dec 11 14:24:29 2000 From owner-freebsd-current@FreeBSD.ORG Mon Dec 11 14:24:26 2000 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from sender.ngi.de (sender.ngi.de [212.79.47.18]) by hub.freebsd.org (Postfix) with ESMTP id B3DAD37B400; Mon, 11 Dec 2000 14:24:25 -0800 (PST) Received: from Gatekeeper.FreeBSD.org (koln-3e366425.pool.mediaWays.net [62.54.100.37]) by sender.ngi.de (Postfix) with ESMTP id 3F95596E52; Mon, 11 Dec 2000 23:16:34 +0100 (CET) Received: from StefanEsser.FreeBSD.org (StefanEsser [10.0.0.1]) by Gatekeeper.FreeBSD.org (Postfix) with ESMTP id D04752E; Mon, 11 Dec 2000 22:50:47 +0100 (CET) Received: by StefanEsser.FreeBSD.org (Postfix, from userid 200) id A97E5145C; Mon, 11 Dec 2000 22:51:27 +0100 (CET) Date: Mon, 11 Dec 2000 22:51:27 +0100 From: Stefan Esser To: Mike Smith Cc: dg@root.com, Mark Huizer , freebsd-current@FreeBSD.ORG, Stefan Esser Subject: Re: PCI power states (was Re: fxp driver not reset after Windows reboot? ) Message-ID: <20001211225127.B73017@StefanEsser.FreeBSD.org> Reply-To: Stefan Esser References: <200012102045.MAA12646@implode.root.com> <200012110904.eBB94Ox03098@mass.osd.bsdi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <200012110904.eBB94Ox03098@mass.osd.bsdi.com>; from msmith@FreeBSD.ORG on Mon, Dec 11, 2000 at 01:04:23AM -0800 Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG On 2000-12-11 01:04 -0800, Mike Smith wrote: > All of these can be abstracted as PCI methods, so they won't require lots > of cut-n-paste in each driver: > > pci_enable_busmaster(dev); > pci_enable_io(dev, SYS_RES_IOPORT | SYS_RES_MEMORY); > pci_set_powerstate(dev, PCI_POWERSTATE_D0); > > Consider the above a request for review on the matter. Shouldn't that be: pci_enable_io(dev, SYS_RES_IOPORT | SYS_RES_MEMORY); pci_set_powerstate(dev, PCI_POWERSTATE_D0); device_specific_init(dev); pci_enable_busmaster(dev); As soon as the bus-master enable bit has been set, the device may start writing to arbitrary memory locations (in the unlikely but still possible case, that it has been disabled in the middle of a transfer). Cases where such behaviour caused memory corruption and warm-boot failure have been discussed in the PCI-SIG mail list. Regards, STefan To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message