Re: class suspend()/resume() broken

David Brownell
2006-12-18T03:27:24Z

On Friday 15 December 2006 11:01 am, Greg KH wrote:
> On Tue, Dec 12, 2006 at 10:15:39AM -0800, David Brownell wrote:
> >
> > Speaking of those new PM methods ... Greg, I tried refreshing my
> > patch that uses class suspend() and resume() methods with RTCs to
> > adjust the system clock properly on resume. But neither method
> > is getting called any more. Did that break with the class device
> > changes?
>
> It shouldn't have, but to be honest, I haven't paid attention to it.

Well, it seems broken and, pending "git bisect", those patches are
the obvious candidate.

Maybe it's related to "dev->class" now being "optional"? And, it
seems, null ... I'm not clear on how devices associated with two
or more classes would work, either.

In general, _using_ those class suspend()/resume() calls was kind
of painful since what's needed is the class_device, and there's no
obvious way to get from a device back to that. That RTC patch
originally worked via some really ugly and not-generalizable code
that relied on there being only one class_device used to restore
the clock after resume, so it could just look at every device given
to those calls, and ignore it if it wasn't the one associated with
that class_device.

I have a sneaking suspicion that we're missing back-links from
devices to their associated classes, but to justify that I'd
have to dive deep into the driver model again. :(

- Dave