cvs commit: src/sys/dev/pci pci.c

M. Warner Losh imp at bsdimp.com
Fri Apr 9 14:02:11 PDT 2004


In message: <20040409134654.J49998 at root.org>
            Nate Lawson <nate at root.org> writes:
: On Fri, 9 Apr 2004, Warner Losh wrote:
: >   Modified files:
: >     sys/dev/pci          pci.c
: >   Log:
: >   Only print state change message for real state changes.  When we set a
: >   device in D0 to D0, that's a no-op, however the messages seem to be
: >   confusing some people.  Eventually, these messages will be parked
: >   behind a if (bootverbose).
: >
: >   # I don't think this will fix any real bugs...
: >
: >   Revision  Changes    Path
: >   1.239     +10 -6     src/sys/dev/pci/pci.c
: >
: > --- src/sys/dev/pci/pci.c:1.238	Fri Apr  9 08:44:33 2004
: > +++ src/sys/dev/pci/pci.c	Fri Apr  9 13:41:18 2004
: > @@ -1768,8 +1770,10 @@
: >  	 */
: >  	cls = pci_get_class(dev);
: >  	if (setstate && cls != PCIC_DISPLAY && cls != PCIC_MEMORY) {
: > -		pci_set_powerstate(dev, PCI_POWERSTATE_D3);
: > -		printf("pci%d:%d:%d: setting power state D3\n", dinfo->cfg.bus,
: > -		    dinfo->cfg.slot, dinfo->cfg.func);
: > +		if (pci_get_powerstate(dev) != PCI_POWERSTATE_D3) {
: > +			printf("pci%d:%d:%d: setting power state D3\n", dinfo->cfg.bus,
: > +			    dinfo->cfg.slot, dinfo->cfg.func);
: > +			pci_set_powerstate(dev, PCI_POWERSTATE_D3);
: > +		}
: >  	}
: >  }
: 
: You can only go to D0 from D3.

Yes.  I know that.  However, that's not reflected in the code.  I
wanted to make sure that we didn't print a message when we went from
D3 to D3.  I should make the code a little smarter here by doing a
Dx->D0 transition before the ->D3 transition if x != 0.  D[12] -> D0
doesn't require restoration of bars.

: Also, it might make sense to always call
: the set_powerstate method but have it check for requested_state ==
: current_state and just return OK in that case.

I thought it already did that, but it appears not to be the case.
Good idea.

Warner


More information about the cvs-all mailing list