From owner-cvs-src@FreeBSD.ORG Fri Apr 9 13:56:07 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 B96F016A4CE for ; Fri, 9 Apr 2004 13:56:07 -0700 (PDT) Received: from root.org (root.org [67.118.192.226]) by mx1.FreeBSD.org (Postfix) with SMTP id 82BB843D58 for ; Fri, 9 Apr 2004 13:56:07 -0700 (PDT) (envelope-from nate@root.org) Received: (qmail 50094 invoked by uid 1000); 9 Apr 2004 20:56:08 -0000 Date: Fri, 9 Apr 2004 13:56:08 -0700 (PDT) From: Nate Lawson To: Warner Losh In-Reply-To: <20040409204143.57F6816A4D9@hub.freebsd.org> Message-ID: <20040409134654.J49998@root.org> References: <20040409204143.57F6816A4D9@hub.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII 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, 09 Apr 2004 20:56:07 -0000 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. 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. -Nate