Re: [linux-pm] suspend blockers & Android integration
From: Rafael J. Wysocki
Date: Thu Jun 10 2010 - 05:01:43 EST
On Thursday, June 10, 2010, Neil Brown wrote:
> On Wed, 9 Jun 2010 11:40:27 +0200
> "Rafael J. Wysocki" <rjw@xxxxxxx> wrote:
>
> > On Wednesday 09 June 2010, Felipe Contreras wrote:
> > > On Wed, Jun 9, 2010 at 6:46 AM, Linus Torvalds
> > > <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:
> > > > On Tue, 8 Jun 2010, david@xxxxxxx wrote:
> > > >>
> > > >> having suspend blockers inside the kernel adds significant complexity, it's
> > > >> worth it only if the complexity buys you enough. In this case the question is
> > > >> if the suspend blockers would extend the sleep time enough more to matter. As
> > > >> per my other e-mail, this is an area with rapidly diminishing returns as the
> > > >> sleep times get longer.
> > > >
> > > > Well, the counter-argument that nobody seems to have brought up is that
> > > > suspend blockers exist, are real code, and end up being shipped in a lot
> > > > of machines.
> > > >
> > > > That's a _big_ argument in favour of them. Certainly much bigger than
> > > > arguing against them based on some complexity-arguments for an alternative
> > > > that hasn't seen any testing at all.
> > > >
> > > > IOW, I would seriously hope that this discussion was more about real code
> > > > that _exists_ and does what people need. It seems to have degenerated into
> > > > something else.
> > > >
> > > > Because in the end, "code talks, bullshit walks". People can complain and
> > > > suggest alternatives all they want, but you can't just argue. At some
> > > > point you need to show the code that actually solves the problem.
> > >
> > > That's assuming there is an actual problem, which according to all the
> > > embedded people except android, there is not.
> >
> > Yes, there is, but they've decided to ignore it.
> >
> > > And if there is indeed such a problem (probably not big), it might be
> > > solved properly by the time suspend blockers are merged, or few
> > > releases after.
> >
> > Not quite. Have you followed all of the discussion, actually?
> >
> > > Whatever the solution (or workaround) is, it would be nice if it could
> > > be used by more than just android people, and it would also be nice to
> > > do it without introducing user-space API that *nobody* likes and might
> > > be quickly deprecated.
> >
> > I agree with Linus and I don't have that much of a problem with the API that
> > people seem to have. In fact the much-hated user space API is just a char
> > device driver with 3 ioctls (that can be extended in future if need be) and
> > the kernel API is acceptable to me.
>
> I think there is a little bit more to it than that. It seems there is a new
> ioctl for input/event devices to say "Any events queued here should be
> treated as wake-up events". There may be similar additions to other devices,
> but I know of no details.
That's not in the patchset as in my pull request.
It is used on Android, though, and it would have been submitted separately, had
the first patchset been merged.
> I wonder if we can get a complete statement of changes to the user-space
> API...
>
> > Yes, there is some overlap between it
> > and PM QoS, but IMhO that overlap may be reduced over time (eg. by
> > using PM QoS requirements to implement suspend blockers).
> >
> > To me, the question boils down to whether or not we're able to persuade the
> > Android people to use any other approach (eg. by demonstrating that something
> > else is actually better), because even if we invent a brilliant new approach,
> > but Android ends up using its old one anyway, the net result will be as though
> > we haven't done anything useful.
>
> Yes. There is no point unless we can meet somewhere in the middle. I think
> that would have to include a full suspend that freezes all processes.
> Solutions which reject that - while quite clever - would require too much
> change to Android user-space to be acceptable.
Moreover, having thought a bit more about the "power manager in user space"
concept I'm not sure if it really is that better than the original wakelocks
idea. Namely, it only repaces a kernel-based mechanism with a user space
task doing basically the same thing, but the communication between that task
and the other cooperating user space tasks is arguably more complicated (it
also uses the kernel resources, although indirectly).
So, for a phone-like system, where you'd generally want to simplify user space,
having a "power manager" in the kernel seems to make sense to me.
Rafael
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/