Skip to contentSkip to conversation

CPU_IDLE: Documentation for CPU_IDLE

PATCH In review Venki Pallipadi 3 participants 5 messages Feb 12, 2008 – Feb 14, 2008

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

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
Index: linux-2.6.25-rc/Documentation/cpuidle/core.txt
===================================================================
@@ -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
Index: linux-2.6.25-rc/Documentation/cpuidle/driver.txt
===================================================================
@@ -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
Index: linux-2.6.25-rc/Documentation/cpuidle/governor.txt
===================================================================
@@ -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
Index: linux-2.6.25-rc/Documentation/00-INDEX
===================================================================
@@ -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
#1 lore raw
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.

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

#2 lore raw

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
Index: linux-2.6.25-rc/Documentation/cpuidle/core.txt
===================================================================
@@ -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
Index: linux-2.6.25-rc/Documentation/cpuidle/driver.txt
===================================================================
@@ -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
Index: linux-2.6.25-rc/Documentation/cpuidle/governor.txt
===================================================================
@@ -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
Index: linux-2.6.25-rc/Documentation/00-INDEX
===================================================================
@@ -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
#3 lore raw
Quoted 27 lines · Venki Pallipadi

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.

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
reviewer
#4 lore raw
Quoted 1 line · Randy Dunlap

s#cpuidle/.#cpuidle/,#

applied (w/ comma)

thanks,
-len