CPU_IDLE: Documentation for CPU_IDLE
Subsystems (2)
PATCH 1/1 CPU_IDLE: Documentation for CPU_IDLE
Documentation for cpuidle infrastructure. This patch was submitted once a while back. But, somehow got dropped or never made it upstream.
Resending with updates.
Documentation/cpuidle/core.txt new file +17 -0
@@ -0,0 +1,17 @@ + + Supporting multiple CPU idle levels in kernel + + cpuidle + +General Information: + +Various CPUs today support multiple idle levels that are differentiated +by varying exit latencies and power consumption during idle. +cpuidle is a generic in-kernel infrastructure that separates +idle policy (governor) from idle mechanism (driver) and provides a +standardized infrastructure to support independent development of +governors and drivers. + +cpuidle resides under drivers/cpuidle. + +
Documentation/cpuidle/driver.txt new file +32 -0
@@ -0,0 +1,32 @@ + + + Supporting multiple CPU idle levels in kernel + + cpuidle drivers + + + + +cpuidle driver hooks into the cpuidle infrastructure and handles the +architecture/platform dependent part of CPU idle states. Driver +provides the platform idle state detection capability and also +has mechanisms in place to support actual entry-exit into CPU idle states. + +cpuidle driver initializes the cpuidle_device structure for each CPU device +and registers with cpuidle using cpuidle_register_device. + +It can also support the dynamic changes (like battery <-> AC), by using +cpuidle_pause_and_lock, cpuidle_disable_device and cpuidle_enable_device, +cpuidle_resume_and_unlock. + +Interfaces: +extern int cpuidle_register_driver(struct cpuidle_driver *drv); +extern void cpuidle_unregister_driver(struct cpuidle_driver *drv); +extern int cpuidle_register_device(struct cpuidle_device *dev); +extern void cpuidle_unregister_device(struct cpuidle_device *dev); + +extern void cpuidle_pause_and_lock(void); +extern void cpuidle_resume_and_unlock(void); +extern int cpuidle_enable_device(struct cpuidle_device *dev); +extern void cpuidle_disable_device(struct cpuidle_device *dev); +
Documentation/cpuidle/sysfs.txt new file +81 -0
81 lines not on this page · raw message
Documentation/cpuidle/governor.txt new file +30 -0
@@ -0,0 +1,30 @@ + + + + Supporting multiple CPU idle levels in kernel + + cpuidle governors + + + + +cpuidle governor is policy routine that decides what idle state to enter at +any given time. cpuidle core uses different callbacks to the governor. + +* enable() to enable governor for a particular device +* disable() to disable governor for a particular device +* select() to select an idle state to enter +* reflect() called after returning from the idle state, which can be used + by the governor for some record keeping. + +More than one governor can be registered at the same time and +user can switch between drivers using /sysfs interface (when enabled). +More than one governor part is supported for developers to easily experiment +with different governors. By default, most optimal governor based on your +kernel configuration and platform will be selected by cpuidle. + +Interfaces: +extern int cpuidle_register_governor(struct cpuidle_governor *gov); +extern void cpuidle_unregister_governor(struct cpuidle_governor *gov); +struct cpuidle_governor +
Documentation/00-INDEX +2 -0
@@ -106,6 +106,8 @@ cpu-hotplug.txt - document describing CPU hotplug support in the Linux kernel. cpu-load.txt - document describing how CPU load statistics are collected. +cpuidle/ + - info on CPU_IDLE, CPU idle state management subsystem. cpusets.txt - documents the cpusets feature; assign CPUs and Mem to a set of tasks. cputopology.txt
Quoted 17 lines · On Mon, 11 Feb 2008 17:55:45 -0800 Venki Pallipadi wrote:
Documentation for cpuidle infrastructure. This patch was submitted once a while back. But, somehow got dropped or never made it upstream.
Resending with updates.
Signed-off-by Venkatesh Pallipadi <[email protected]>Index:
linux-2.6.25-rc/Documentation/cpuidle/sysfs.txt
===================================================================Documentation/cpuidle/sysfs.txt new file +4
-0@@ -0,0 +1,81 @@ + + + Supporting multiple CPU idle levels in kernel +
Documentation/cpuidle/sysfs.txt line 14
Quoted 10 lines
Documentation/cpuidle/sysfs.txt new file +10
-0+ cpuidle sysfs + +System global cpuidle related information and tunables are under +/sys/devices/system/cpu/cpuidle + +The current interfaces in this directory has self-explanatory names: +* current_driver +* current_governor_ro + +With cpuidle_sysfs_switch boot option (meant for developer testing)
Is 'cpuidle_sysfs_switch' usage documented anywhere?
Documentation/cpuidle/sysfs.txt line 19
Quoted 5 lines
Documentation/cpuidle/sysfs.txt new file +5
-0+following objects are visible instead. +* current_driver +* available_governors +* current_governor +In this case user can switch the governor at run time by writing
users [or "a user"]
Documentation/cpuidle/sysfs.txt line 20
Quoted 1 line
Documentation/cpuidle/sysfs.txt new file +1
-0+onto current_governor.
s/onto/to/ [?]
Quoted 6 lines
Documentation/cpuidle/sysfs.txt new file +6
-0+ + +Per logical CPU specific cpuidle information are under +/sys/devices/system/cpu/cpuX/cpuidle +for each online cpu X +
...
Quoted 18 lines
Documentation/cpuidle/sysfs.txt new file +2
-0+ +Index:
linux-2.6.25-rc/Documentation/cpuidle/governor.txt
===================================================================Documentation/cpuidle/governor.txt new file +11
-0@@ -0,0 +1,30 @@ + + + + Supporting multiple CPU idle levels in kernel + + cpuidle governors + + + + +cpuidle governor is policy routine that decides what idle state to enter at
Documentation/cpuidle/governor.txt line 21
Quoted 10 lines
Documentation/cpuidle/governor.txt new file +10
-0+any given time. cpuidle core uses different callbacks to the governor. + +* enable() to enable governor for a particular device +* disable() to disable governor for a particular device +* select() to select an idle state to enter +* reflect() called after returning from the idle state, which can be used + by the governor for some record keeping. + +More than one governor can be registered at the same time and +user can switch between drivers using /sysfs interface (when enabled).
users [or "a user"]
Documentation/cpuidle/governor.txt line 29
Quoted 8 lines
Documentation/cpuidle/governor.txt new file +8
-0+More than one governor part is supported for developers to easily experiment +with different governors. By default, most optimal governor based on your +kernel configuration and platform will be selected by cpuidle. + +Interfaces: +extern int cpuidle_register_governor(struct cpuidle_governor *gov); +extern void cpuidle_unregister_governor(struct cpuidle_governor *gov); +struct cpuidle_governor
Thanks.
---
~Randy
Updated reflecting Randy's comments.
Thanks,
Venki
Documentation for cpuidle infrastructure. This patch was submitted once a while back. But, somehow got dropped or never made it upstream.
Resending with updates.
Documentation/cpuidle/core.txt new file +24 -0
@@ -0,0 +1,24 @@ + + Supporting multiple CPU idle levels in kernel + + cpuidle + +General Information: + +Various CPUs today support multiple idle levels that are differentiated +by varying exit latencies and power consumption during idle. +cpuidle is a generic in-kernel infrastructure that separates +idle policy (governor) from idle mechanism (driver) and provides a +standardized infrastructure to support independent development of +governors and drivers. + +cpuidle resides under drivers/cpuidle. + +Boot options: +"cpuidle_sysfs_switch" +enables current_governor interface in /sys/devices/system/cpu/cpuidle/. +which can be used to switch governors at run time. This boot option +is meant for developer testing only. In normal usage, kernel picks the +best governor based on governor ratings. +SEE ALSO: sysfs.txt in this directory. +
Documentation/cpuidle/driver.txt new file +32 -0
@@ -0,0 +1,32 @@ + + + Supporting multiple CPU idle levels in kernel + + cpuidle drivers + + + + +cpuidle driver hooks into the cpuidle infrastructure and handles the +architecture/platform dependent part of CPU idle states. Driver +provides the platform idle state detection capability and also +has mechanisms in place to support actual entry-exit into CPU idle states. + +cpuidle driver initializes the cpuidle_device structure for each CPU device +and registers with cpuidle using cpuidle_register_device. + +It can also support the dynamic changes (like battery <-> AC), by using +cpuidle_pause_and_lock, cpuidle_disable_device and cpuidle_enable_device, +cpuidle_resume_and_unlock. + +Interfaces: +extern int cpuidle_register_driver(struct cpuidle_driver *drv); +extern void cpuidle_unregister_driver(struct cpuidle_driver *drv); +extern int cpuidle_register_device(struct cpuidle_device *dev); +extern void cpuidle_unregister_device(struct cpuidle_device *dev); + +extern void cpuidle_pause_and_lock(void); +extern void cpuidle_resume_and_unlock(void); +extern int cpuidle_enable_device(struct cpuidle_device *dev); +extern void cpuidle_disable_device(struct cpuidle_device *dev); +
Documentation/cpuidle/sysfs.txt new file +81 -0
81 lines not on this page · raw message
Documentation/cpuidle/governor.txt new file +30 -0
@@ -0,0 +1,30 @@ + + + + Supporting multiple CPU idle levels in kernel + + cpuidle governors + + + + +cpuidle governor is policy routine that decides what idle state to enter at +any given time. cpuidle core uses different callbacks to the governor. + +* enable() to enable governor for a particular device +* disable() to disable governor for a particular device +* select() to select an idle state to enter +* reflect() called after returning from the idle state, which can be used + by the governor for some record keeping. + +More than one governor can be registered at the same time and +users can switch between drivers using /sysfs interface (when enabled). +More than one governor part is supported for developers to easily experiment +with different governors. By default, most optimal governor based on your +kernel configuration and platform will be selected by cpuidle. + +Interfaces: +extern int cpuidle_register_governor(struct cpuidle_governor *gov); +extern void cpuidle_unregister_governor(struct cpuidle_governor *gov); +struct cpuidle_governor +
Documentation/00-INDEX +2 -0
@@ -106,6 +106,8 @@ cpu-hotplug.txt - document describing CPU hotplug support in the Linux kernel. cpu-load.txt - document describing how CPU load statistics are collected. +cpuidle/ + - info on CPU_IDLE, CPU idle state management subsystem. cpusets.txt - documents the cpusets feature; assign CPUs and Mem to a set of tasks. cputopology.txt
Quoted 27 lines · Venki Pallipadi
Updated reflecting Randy's comments.
Thanks,
VenkiDocumentation for cpuidle infrastructure. This patch was submitted once a while back. But, somehow got dropped or never made it upstream.
Resending with updates.
Signed-off-by Venkatesh Pallipadi <[email protected]>Index:
linux-2.6.25-rc/Documentation/cpuidle/core.txt
===================================================================Documentation/cpuidle/core.txt new file +9
-0@@ -0,0 +1,24 @@ + + Supporting multiple CPU idle levels in kernel + + cpuidle + +General Information: + +Various CPUs today support multiple idle levels that are differentiated +by varying exit latencies and power consumption during idle.
Documentation/cpuidle/core.txt line 19
Quoted 10 lines
Documentation/cpuidle/core.txt new file +10
-0+cpuidle is a generic in-kernel infrastructure that separates +idle policy (governor) from idle mechanism (driver) and provides a +standardized infrastructure to support independent development of +governors and drivers. + +cpuidle resides under drivers/cpuidle. + +Boot options: +"cpuidle_sysfs_switch" +enables current_governor interface in /sys/devices/system/cpu/cpuidle/.
s#cpuidle/.#cpuidle/,#
Documentation/cpuidle/core.txt line 23
Quoted 4 lines
Documentation/cpuidle/core.txt new file +4
-0+which can be used to switch governors at run time. This boot option +is meant for developer testing only. In normal usage, kernel picks the +best governor based on governor ratings. +SEE ALSO: sysfs.txt in this directory.
Thanks.
Signature · 1 line
~Randy
Len Brown
reviewerQuoted 1 line · Randy Dunlap
s#cpuidle/.#cpuidle/,#
applied (w/ comma)
thanks,
-len