forked from Minki/linux
074037ec79
Introduce struct wakeup_source for representing system wakeup sources within the kernel and for collecting statistics related to them. Make the recently introduced helper functions pm_wakeup_event(), pm_stay_awake() and pm_relax() use struct wakeup_source objects internally, so that wakeup statistics associated with wakeup devices can be collected and reported in a consistent way (the definition of pm_relax() is changed, which is harmless, because this function is not called directly by anyone yet). Introduce new wakeup-related sysfs device attributes in /sys/devices/.../power for reporting the device wakeup statistics. Change the global wakeup events counters event_count and events_in_progress into atomic variables, so that it is not necessary to acquire a global spinlock in pm_wakeup_event(), pm_stay_awake() and pm_relax(), which should allow us to avoid lock contention in these functions on SMP systems with many wakeup devices. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
150 lines
5.9 KiB
Plaintext
150 lines
5.9 KiB
Plaintext
What: /sys/devices/.../power/
|
|
Date: January 2009
|
|
Contact: Rafael J. Wysocki <rjw@sisk.pl>
|
|
Description:
|
|
The /sys/devices/.../power directory contains attributes
|
|
allowing the user space to check and modify some power
|
|
management related properties of given device.
|
|
|
|
What: /sys/devices/.../power/wakeup
|
|
Date: January 2009
|
|
Contact: Rafael J. Wysocki <rjw@sisk.pl>
|
|
Description:
|
|
The /sys/devices/.../power/wakeup attribute allows the user
|
|
space to check if the device is enabled to wake up the system
|
|
from sleep states, such as the memory sleep state (suspend to
|
|
RAM) and hibernation (suspend to disk), and to enable or disable
|
|
it to do that as desired.
|
|
|
|
Some devices support "wakeup" events, which are hardware signals
|
|
used to activate the system from a sleep state. Such devices
|
|
have one of the following two values for the sysfs power/wakeup
|
|
file:
|
|
|
|
+ "enabled\n" to issue the events;
|
|
+ "disabled\n" not to do so;
|
|
|
|
In that cases the user space can change the setting represented
|
|
by the contents of this file by writing either "enabled", or
|
|
"disabled" to it.
|
|
|
|
For the devices that are not capable of generating system wakeup
|
|
events this file contains "\n". In that cases the user space
|
|
cannot modify the contents of this file and the device cannot be
|
|
enabled to wake up the system.
|
|
|
|
What: /sys/devices/.../power/control
|
|
Date: January 2009
|
|
Contact: Rafael J. Wysocki <rjw@sisk.pl>
|
|
Description:
|
|
The /sys/devices/.../power/control attribute allows the user
|
|
space to control the run-time power management of the device.
|
|
|
|
All devices have one of the following two values for the
|
|
power/control file:
|
|
|
|
+ "auto\n" to allow the device to be power managed at run time;
|
|
+ "on\n" to prevent the device from being power managed;
|
|
|
|
The default for all devices is "auto", which means that they may
|
|
be subject to automatic power management, depending on their
|
|
drivers. Changing this attribute to "on" prevents the driver
|
|
from power managing the device at run time. Doing that while
|
|
the device is suspended causes it to be woken up.
|
|
|
|
What: /sys/devices/.../power/async
|
|
Date: January 2009
|
|
Contact: Rafael J. Wysocki <rjw@sisk.pl>
|
|
Description:
|
|
The /sys/devices/.../async attribute allows the user space to
|
|
enable or diasble the device's suspend and resume callbacks to
|
|
be executed asynchronously (ie. in separate threads, in parallel
|
|
with the main suspend/resume thread) during system-wide power
|
|
transitions (eg. suspend to RAM, hibernation).
|
|
|
|
All devices have one of the following two values for the
|
|
power/async file:
|
|
|
|
+ "enabled\n" to permit the asynchronous suspend/resume;
|
|
+ "disabled\n" to forbid it;
|
|
|
|
The value of this attribute may be changed by writing either
|
|
"enabled", or "disabled" to it.
|
|
|
|
It generally is unsafe to permit the asynchronous suspend/resume
|
|
of a device unless it is certain that all of the PM dependencies
|
|
of the device are known to the PM core. However, for some
|
|
devices this attribute is set to "enabled" by bus type code or
|
|
device drivers and in that cases it should be safe to leave the
|
|
default value.
|
|
|
|
What: /sys/devices/.../power/wakeup_count
|
|
Date: September 2010
|
|
Contact: Rafael J. Wysocki <rjw@sisk.pl>
|
|
Description:
|
|
The /sys/devices/.../wakeup_count attribute contains the number
|
|
of signaled wakeup events associated with the device. This
|
|
attribute is read-only. If the device is not enabled to wake up
|
|
the system from sleep states, this attribute is empty.
|
|
|
|
What: /sys/devices/.../power/wakeup_active_count
|
|
Date: September 2010
|
|
Contact: Rafael J. Wysocki <rjw@sisk.pl>
|
|
Description:
|
|
The /sys/devices/.../wakeup_active_count attribute contains the
|
|
number of times the processing of wakeup events associated with
|
|
the device was completed (at the kernel level). This attribute
|
|
is read-only. If the device is not enabled to wake up the
|
|
system from sleep states, this attribute is empty.
|
|
|
|
What: /sys/devices/.../power/wakeup_hit_count
|
|
Date: September 2010
|
|
Contact: Rafael J. Wysocki <rjw@sisk.pl>
|
|
Description:
|
|
The /sys/devices/.../wakeup_hit_count attribute contains the
|
|
number of times the processing of a wakeup event associated with
|
|
the device might prevent the system from entering a sleep state.
|
|
This attribute is read-only. If the device is not enabled to
|
|
wake up the system from sleep states, this attribute is empty.
|
|
|
|
What: /sys/devices/.../power/wakeup_active
|
|
Date: September 2010
|
|
Contact: Rafael J. Wysocki <rjw@sisk.pl>
|
|
Description:
|
|
The /sys/devices/.../wakeup_active attribute contains either 1,
|
|
or 0, depending on whether or not a wakeup event associated with
|
|
the device is being processed (1). This attribute is read-only.
|
|
If the device is not enabled to wake up the system from sleep
|
|
states, this attribute is empty.
|
|
|
|
What: /sys/devices/.../power/wakeup_total_time_ms
|
|
Date: September 2010
|
|
Contact: Rafael J. Wysocki <rjw@sisk.pl>
|
|
Description:
|
|
The /sys/devices/.../wakeup_total_time_ms attribute contains
|
|
the total time of processing wakeup events associated with the
|
|
device, in milliseconds. This attribute is read-only. If the
|
|
device is not enabled to wake up the system from sleep states,
|
|
this attribute is empty.
|
|
|
|
What: /sys/devices/.../power/wakeup_max_time_ms
|
|
Date: September 2010
|
|
Contact: Rafael J. Wysocki <rjw@sisk.pl>
|
|
Description:
|
|
The /sys/devices/.../wakeup_max_time_ms attribute contains
|
|
the maximum time of processing a single wakeup event associated
|
|
with the device, in milliseconds. This attribute is read-only.
|
|
If the device is not enabled to wake up the system from sleep
|
|
states, this attribute is empty.
|
|
|
|
What: /sys/devices/.../power/wakeup_last_time_ms
|
|
Date: September 2010
|
|
Contact: Rafael J. Wysocki <rjw@sisk.pl>
|
|
Description:
|
|
The /sys/devices/.../wakeup_last_time_ms attribute contains
|
|
the value of the monotonic clock corresponding to the time of
|
|
signaling the last wakeup event associated with the device, in
|
|
milliseconds. This attribute is read-only. If the device is
|
|
not enabled to wake up the system from sleep states, this
|
|
attribute is empty.
|