From owner-svn-src-projects@FreeBSD.ORG Thu Jun 19 23:53:50 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id CA0C0D59; Thu, 19 Jun 2014 23:53:50 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id B6F1F2815; Thu, 19 Jun 2014 23:53:50 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.8/8.14.8) with ESMTP id s5JNrotw028768; Thu, 19 Jun 2014 23:53:50 GMT (envelope-from jhibbits@svn.freebsd.org) Received: (from jhibbits@localhost) by svn.freebsd.org (8.14.8/8.14.8/Submit) id s5JNrolk028767; Thu, 19 Jun 2014 23:53:50 GMT (envelope-from jhibbits@svn.freebsd.org) Message-Id: <201406192353.s5JNrolk028767@svn.freebsd.org> From: Justin Hibbits Date: Thu, 19 Jun 2014 23:53:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r267652 - projects/pmac_pmu/sys/kern X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jun 2014 23:53:51 -0000 Author: jhibbits Date: Thu Jun 19 23:53:50 2014 New Revision: 267652 URL: http://svnweb.freebsd.org/changeset/base/267652 Log: Switch the 'suspended' state to a flag, instead of a state. Requested by: jhb Modified: projects/pmac_pmu/sys/kern/subr_bus.c Modified: projects/pmac_pmu/sys/kern/subr_bus.c ============================================================================== --- projects/pmac_pmu/sys/kern/subr_bus.c Thu Jun 19 21:54:41 2014 (r267651) +++ projects/pmac_pmu/sys/kern/subr_bus.c Thu Jun 19 23:53:50 2014 (r267652) @@ -136,6 +136,7 @@ struct device { #define DF_DONENOMATCH 0x20 /* don't execute DEVICE_NOMATCH again */ #define DF_EXTERNALSOFTC 0x40 /* softc not allocated by us */ #define DF_REBID 0x80 /* Can rebid after attach */ +#define DF_SUSPENDED 0x100 /* Device is currently suspended. */ u_int order; /**< order from device_add_child_ordered() */ void *ivars; /**< instance variables */ void *softc; /**< current driver's variables */ @@ -1775,6 +1776,7 @@ make_device(device_t parent, const char dev->devflags = 0; dev->flags = DF_ENABLED; dev->order = 0; + dev->pass = parent ? parent->pass : BUS_PASS_ROOT; if (unit == -1) dev->flags |= DF_WILDCARD; if (name) { @@ -3644,7 +3646,7 @@ bus_generic_suspend_child(device_t dev, error = DEVICE_SUSPEND(child); if (!error) - child->state = DS_SUSPENDED; + child->flags |= DF_SUSPENDED; return (error); } @@ -3665,7 +3667,7 @@ bus_generic_resume_child(device_t dev, d * Regardless of resume state, there's nothing we can do, so mark it * attached again. */ - child->state = DS_ATTACHED; + child->flags &= ~DF_SUSPENDED; return (error); } @@ -3685,18 +3687,16 @@ bus_generic_suspend(device_t dev) int error = 0; device_t child, child2; - if (dev->state == DS_SUSPENDED) + if (dev->flags & DF_SUSPENDED) return (0); TAILQ_FOREACH(child, &dev->children, link) { - if (child->state != DS_SUSPENDED) + if (!(child->state & DF_SUSPENDED)) error = bus_generic_suspend(child); if (error == 0) { - /* We won't busy ourselves with busy devices. */ - if (child->state == DS_BUSY) - error = (EBUSY); - else if (child->pass >= bus_current_pass && child->state == DS_ATTACHED) { - printf("Suspending %s, child of %s\n", child->nameunit, dev->nameunit); + if (child->pass >= bus_current_pass && child->state == DS_ATTACHED) { + if (bootverbose) + printf("Suspending %s, child of %s\n", child->nameunit, dev->nameunit); error = BUS_SUSPEND_CHILD(dev, child); if (error != 0) printf("Error suspending child %s: %d\n", child->nameunit, error); @@ -3729,8 +3729,9 @@ bus_generic_resume(device_t dev) device_t child; TAILQ_FOREACH(child, &dev->children, link) { - if (child->pass == bus_current_pass && child->state == DS_SUSPENDED) { - printf("Resuming %s, child of %s\n", child->nameunit, dev->nameunit); + if (child->pass == bus_current_pass && (child->flags & DF_SUSPENDED)) { + if (bootverbose) + printf("Resuming %s, child of %s\n", child->nameunit, dev->nameunit); BUS_RESUME_CHILD(dev, child); /* if resume fails, there's nothing we can usefully do... */ @@ -4811,7 +4812,7 @@ print_device_short(device_t dev, int ind if (!dev) return; - indentprintf(("device %d: <%s> %sparent,%schildren,%s%s%s%s%s,%sivars,%ssoftc,busy=%d\n", + indentprintf(("device %d: <%s> %sparent,%schildren,%s%s%s%s%s%s,%sivars,%ssoftc,busy=%d\n", dev->unit, dev->desc, (dev->parent? "":"no "), (TAILQ_EMPTY(&dev->children)? "no ":""), @@ -4820,6 +4821,7 @@ print_device_short(device_t dev, int ind (dev->flags&DF_WILDCARD? "wildcard,":""), (dev->flags&DF_DESCMALLOCED? "descmalloced,":""), (dev->flags&DF_REBID? "rebiddable,":""), + (dev->flags&DF_SUSPENDED? "suspended,":""), (dev->ivars? "":"no "), (dev->softc? "":"no "), dev->busy));