late suspend/early resume

John Baldwin jhb at FreeBSD.org
Wed May 15 10:56:05 UTC 2013


On 5/14/13 1:14 PM, Justin Hibbits wrote:
> You are right that the late suspend could lead to silly proliferation, and
> an ordered list is much better, but another API would need to be added to
> do that as well.
> 
> My north bridge is first in the top list of the tree, right under the
> nexus, so to suspend it last I wrote the nexus suspend to traverse its
> children in reverse. The problem comes that the clock controller is under a
> later PCI bus, not even the immediate following one, and the north bridge
> children are i2c devices, so suspending them after their clock head away is
> problematic.  We can discuss this more at bsdcan, where it may be easier to
> describe. But essentially I need the north bridge and that pesky clock
> controller to be the last to suspend and the first to resume. I guess we
> can take this as the starting discussion for modeling this relationship on
> all platforms, since you mention it is common in embedded platforms.

I think you can do this by having a notion of passes with drivers having
a suspend pass level and doing passes over the tree suspending devices
at each pass level and then walking the passes back up in reverse during
resume.  You could borrow from the multipass stuff used on probe/attach
for this.

-- 
John Baldwin


More information about the freebsd-arch mailing list