PM / QoS: Update Documentation/power/pm_qos_interface.txt
Update PM QoS documentation after recent changes. [rjw: Changelog] Signed-off-by: Lan Tianyu <tianyu.lan@intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
bb177fedd3
commit
d30b82a469
@ -7,7 +7,7 @@ one of the parameters.
|
|||||||
Two different PM QoS frameworks are available:
|
Two different PM QoS frameworks are available:
|
||||||
1. PM QoS classes for cpu_dma_latency, network_latency, network_throughput.
|
1. PM QoS classes for cpu_dma_latency, network_latency, network_throughput.
|
||||||
2. the per-device PM QoS framework provides the API to manage the per-device latency
|
2. the per-device PM QoS framework provides the API to manage the per-device latency
|
||||||
constraints.
|
constraints and PM QoS flags.
|
||||||
|
|
||||||
Each parameters have defined units:
|
Each parameters have defined units:
|
||||||
* latency: usec
|
* latency: usec
|
||||||
@ -86,13 +86,17 @@ To remove the user mode request for a target value simply close the device
|
|||||||
node.
|
node.
|
||||||
|
|
||||||
|
|
||||||
2. PM QoS per-device latency framework
|
2. PM QoS per-device latency and flags framework
|
||||||
|
|
||||||
|
For each device, there are two lists of PM QoS requests. One is maintained
|
||||||
|
along with the aggregated target of latency value and the other is for PM QoS
|
||||||
|
flags. Values are updated in response to changes of the request list.
|
||||||
|
|
||||||
|
Target latency value is simply the minimum of the request values held in the
|
||||||
|
parameter list elements. The PM QoS flags aggregate value is a gather (bitwise
|
||||||
|
OR) of all list elements' values. Two device PM QoS flags are defined currently:
|
||||||
|
PM_QOS_FLAG_NO_POWER_OFF and PM_QOS_FLAG_REMOTE_WAKEUP.
|
||||||
|
|
||||||
For each device a list of performance requests is maintained along with
|
|
||||||
an aggregated target value. The aggregated target value is updated with
|
|
||||||
changes to the request list or elements of the list. Typically the
|
|
||||||
aggregated target value is simply the max or min of the request values held
|
|
||||||
in the parameter list elements.
|
|
||||||
Note: the aggregated target value is implemented as an atomic variable so that
|
Note: the aggregated target value is implemented as an atomic variable so that
|
||||||
reading the aggregated value does not require any locking mechanism.
|
reading the aggregated value does not require any locking mechanism.
|
||||||
|
|
||||||
@ -119,6 +123,38 @@ the request.
|
|||||||
s32 dev_pm_qos_read_value(device):
|
s32 dev_pm_qos_read_value(device):
|
||||||
Returns the aggregated value for a given device's constraints list.
|
Returns the aggregated value for a given device's constraints list.
|
||||||
|
|
||||||
|
enum pm_qos_flags_status dev_pm_qos_flags(device, mask)
|
||||||
|
Check PM QoS flags of the given device against the given mask of flags.
|
||||||
|
The meaning of the return values is as follows:
|
||||||
|
PM_QOS_FLAGS_ALL: All flags from the mask are set
|
||||||
|
PM_QOS_FLAGS_SOME: Some flags from the mask are set
|
||||||
|
PM_QOS_FLAGS_NONE: No flags from the mask are set
|
||||||
|
PM_QOS_FLAGS_UNDEFINED: The device's PM QoS structure has not been
|
||||||
|
initialized or the list of requests is empty.
|
||||||
|
|
||||||
|
int dev_pm_qos_add_ancestor_request(dev, handle, value)
|
||||||
|
Add a PM QoS request for the first direct ancestor of the given device whose
|
||||||
|
power.ignore_children flag is unset.
|
||||||
|
|
||||||
|
int dev_pm_qos_expose_latency_limit(device, value)
|
||||||
|
Add a request to the device's PM QoS list of latency constraints and create
|
||||||
|
a sysfs attribute pm_qos_resume_latency_us under the device's power directory
|
||||||
|
allowing user space to manipulate that request.
|
||||||
|
|
||||||
|
void dev_pm_qos_hide_latency_limit(device)
|
||||||
|
Drop the request added by dev_pm_qos_expose_latency_limit() from the device's
|
||||||
|
PM QoS list of latency constraints and remove sysfs attribute pm_qos_resume_latency_us
|
||||||
|
from the device's power directory.
|
||||||
|
|
||||||
|
int dev_pm_qos_expose_flags(device, value)
|
||||||
|
Add a request to the device's PM QoS list of flags and create sysfs attributes
|
||||||
|
pm_qos_no_power_off and pm_qos_remote_wakeup under the device's power directory
|
||||||
|
allowing user space to change these flags' value.
|
||||||
|
|
||||||
|
void dev_pm_qos_hide_flags(device)
|
||||||
|
Drop the request added by dev_pm_qos_expose_flags() from the device's PM QoS list
|
||||||
|
of flags and remove sysfs attributes pm_qos_no_power_off and pm_qos_remote_wakeup
|
||||||
|
under the device's power directory.
|
||||||
|
|
||||||
Notification mechanisms:
|
Notification mechanisms:
|
||||||
The per-device PM QoS framework has 2 different and distinct notification trees:
|
The per-device PM QoS framework has 2 different and distinct notification trees:
|
||||||
|
Loading…
Reference in New Issue
Block a user