svn commit: r278123 - projects/pmac_pmu/sys/kern
Justin Hibbits
jhibbits at FreeBSD.org
Tue Feb 3 02:23:30 UTC 2015
Author: jhibbits
Date: Tue Feb 3 02:23:29 2015
New Revision: 278123
URL: https://svnweb.freebsd.org/changeset/base/278123
Log:
Bring back multipass suspend/resume in the bus_generic_{suspend,resume}
functions.
These were lost in the import.
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 Tue Feb 3 00:29:58 2015 (r278122)
+++ projects/pmac_pmu/sys/kern/subr_bus.c Tue Feb 3 02:23:29 2015 (r278123)
@@ -3695,12 +3695,21 @@ bus_generic_suspend(device_t dev)
return (0);
TAILQ_FOREACH(child, &dev->children, link) {
- error = BUS_SUSPEND_CHILD(dev, child);
+ /* First traverse the tree, then suspend this child. */
+ if (!(child->flags & DF_SUSPENDED))
+ error = bus_generic_suspend(child);
+ if (error == 0) {
+ if (child->pass >= bus_current_pass &&
+ device_is_attached(child))
+ error = BUS_SUSPEND_CHILD(dev, child);
+ }
if (error) {
for (child2 = TAILQ_FIRST(&dev->children);
child2 && child2 != child;
- child2 = TAILQ_NEXT(child2, link))
+ child2 = TAILQ_NEXT(child2, link)) {
BUS_RESUME_CHILD(dev, child2);
+ bus_generic_resume(child2);
+ }
return (error);
}
}
@@ -3720,8 +3729,11 @@ bus_generic_resume(device_t dev)
device_t child;
TAILQ_FOREACH(child, &dev->children, link) {
- BUS_RESUME_CHILD(dev, child);
+ if (child->pass == bus_current_pass && (child->flags & DF_SUSPENDED))
+ BUS_RESUME_CHILD(dev, child);
/* if resume fails, there's nothing we can usefully do... */
+ if (child->pass <= bus_current_pass)
+ bus_generic_resume(child);
}
return (0);
}
More information about the svn-src-projects
mailing list