Re: [PATCH] Hotplug for device power state changes
From: Todd Poynor
Date: Tue May 04 2004 - 15:37:44 EST
Patrick Mochel wrote:
A patch to call a hotplug device-power agent when the power state of a
device is modified at runtime (that is, individually via sysfs or by a
driver call, not as part of a system suspend/resume). Allows a power
management application to be informed of changes in device power needs.
This can be useful on platforms with dependencies between system
clock/voltage settings and operation of certain devices (such as
PXA27x), or, for example, on a cell phone where voiceband or network
devices going inactive signals an opportunity to lower platform power
levels to conserve battery life.
Why? If the device is powered down at runtime via sysfs, then the app that
did that already exists in userspace, like the ones you're trying to
notify via /sbin/hotplug. It would be much simpler for the first app to
generate e.g. a d-bus message to notify other apps, rather than creating
this conduit through the kernel.
The ability to do this was originally requested in the context of a
driver managing the power state of its devices (according to some
unspecified logic); agreed that state changes requested via sysfs are a
less compelling usage scenario. Small battery-powered gadgets often
implement drivers that are more actively involved in managing power
state than the desktop/notebook/server norm, invoking LDM suspend
routines when an opportunity to power down arises. But it is also
common in wall-plug-wired systems to have a few power state transitions
that result from things under kernel control, such as blanking a display
device after a timer expires.
In many cases, the opportunity to move to a lower-power state may be
triggered by userspace activity and would make a good candidate for a
purely userspace notification method. However, a kernel-to-userspace
notification method is suggested for this to cover potential cases where
a device power state change might not be directly caused by, or may be a
non-obvious side effect of, an application action. Display blanking is
an example; other devices that can enter a low-power state due to
inactivity or due to changes in power state of other upstream or
downstream devices could also use this. If anyone reading this has
concrete examples that they would like to have considered then please do
speak up.
It may be the case that most useful scenarios for userspace actions in
response to device power state changes could be handled through a
suitable implementation of D-BUS messages between applications, and I'd
certainly support use of that model wherever possible. Returning errors
through the system call interface for an operation on a device file
descriptor, as I believe you've suggested, may also help cover most
useful cases. I will continue to encourage the developers who have
asked me for driver power state notifiers to chime in here with more
details on their needs.
Besides, if one process has a device open, then the driver should refuse
any requests to power it down.
I'd suggest some latitude in driver handling of low-power device states
wrt open file descriptors, such as for display blanking. But yes, this
is usually true (at least in the non-system-suspend case).
--
Todd Poynor
MontaVista Software
-
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/