Date: Fri, 09 Apr 2004 15:02:49 -0600 (MDT) From: "M. Warner Losh" <imp@bsdimp.com> To: nate@root.org Cc: cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/dev/pci pci.c Message-ID: <20040409.150249.73652600.imp@bsdimp.com> In-Reply-To: <20040409134654.J49998@root.org> References: <20040409204143.57F6816A4D9@hub.freebsd.org> <20040409134654.J49998@root.org>
next in thread | previous in thread | raw e-mail | index | archive | help
In message: <20040409134654.J49998@root.org>
Nate Lawson <nate@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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040409.150249.73652600.imp>
