From owner-cvs-src@FreeBSD.ORG Fri May 21 01:21:55 2004 Return-Path: Delivered-To: cvs-src@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 51FEE16A4CE; Fri, 21 May 2004 01:21:55 -0700 (PDT) Received: from pooker.samsco.org (pooker.samsco.org [168.103.85.57]) by mx1.FreeBSD.org (Postfix) with ESMTP id DC76E43D1F; Fri, 21 May 2004 01:21:54 -0700 (PDT) (envelope-from scottl@freebsd.org) Received: from freebsd.org (junior-wifi.samsco.home [192.168.0.11]) by pooker.samsco.org (8.12.11/8.12.10) with ESMTP id i4L8RWQL041791; Fri, 21 May 2004 02:27:32 -0600 (MDT) (envelope-from scottl@freebsd.org) Message-ID: <40ADBC15.6040004@freebsd.org> Date: Fri, 21 May 2004 02:21:41 -0600 From: Scott Long User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.6) Gecko/20040304 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "M. Warner Losh" References: <200405210636.i4L6aadV059034@repoman.freebsd.org> <40ADAF07.2070909@freebsd.org> <20040521.020412.118756775.imp@bsdimp.com> In-Reply-To: <20040521.020412.118756775.imp@bsdimp.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, hits=0.0 required=3.8 tests=none autolearn=no version=2.63 X-Spam-Checker-Version: SpamAssassin 2.63 (2004-01-11) on pooker.samsco.org cc: cvs-src@freebsd.org cc: src-committers@freebsd.org cc: cvs-all@freebsd.org Subject: Re: cvs commit: src/sys/dev/pci pci.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 May 2004 08:21:55 -0000 M. Warner Losh wrote: > In message: <40ADAF07.2070909@freebsd.org> > Scott Long writes: > : Warner Losh wrote: > : > imp 2004/05/20 23:36:36 PDT > : > > : > FreeBSD src repository > : > > : > Modified files: > : > sys/dev/pci pci.c > : > Log: > : > MFp4: o save/restore subvendor, subdevice, vendor, device, baseclass, > : > subclass, progif and revid. While these are typically read > : > only fields, they aren't always read-only. progif is writable > : > for ata devices, for example. It does no harm when they are > : > read only, and helps when they aren't. > : > > : > Revision Changes Path > : > 1.252 +16 -0 src/sys/dev/pci/pci.c > : > : Shouldn't it be left up to the device drivers to decide if a buggy piece > : of silicon needs to be touched like this? I really don't like the bus > : unilaterally enforcing this on everything. > > This just preserves the values across a D3 -> D0 state transition. > This seems to be required by the 1.1 version of the pci power spec: > > Section 5.4: "When a function is brought back to D0..., > software will need to perform a full initialization of the > function, including its PCI Configuration space." > > Section 8.3.3: For example, reinitialization includes, but is > not necessarily limited to, restoring the Base Address > registers, re-enabling the I/O and memory spaces, re-enabling > bus master capabilities, and unmasking any IRQs or PCI > Interrupts as well as restoring the INT Line > register. Furthermore, if the function has the DSI bit set, > the operating system is required to execute whatever > initialization code is necessary, either via the device > driver's initialization code or by executing POST. > > My reading of these two sections lead me to save this information. > > Warner Well, the 8.3.3 paragraph only specifically mentions the command register and the BARs. I'm just worried that by touching stuff outside of this range that you open up the risk of tickling latent buggy silicon. Exception cases like the ATA hardware doing magic things with the progif register should be left up to the ATA driver. It's exactly those kinds of bent-rules that makes me nervous =-) Scott