cvs commit: src/sys/dev/pci pci.c
M. Warner Losh
imp at bsdimp.com
Sat May 22 19:51:56 PDT 2004
In message: <20040522103658.P58631 at root.org>
Nate Lawson <nate at root.org> writes:
: On Fri, 21 May 2004, M. Warner Losh wrote:
: > In message: <40ADAF07.2070909 at freebsd.org>
: > Scott Long <scottl at freebsd.org> 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.
:
: I didn't know the code didn't do this fully before. Yes, it is important
: to save/restore all the headers across a D3 transition. I don't know of
: any devices this breaks.
Well, we're talking exclusively about the vendor, device, subvendor,
subdevice, class, subclass and progif fields, which are obstensively
read-only. However, the pci standards are self-contradictory. The
main 2.2 one says they are read-only (without defining what that means
that I could find), yet the pciide spec says that progif had writable
bits...
The other fields have already been restored for a few weeks now on D3
-> D0 transition.
Warner
More information about the cvs-src
mailing list