Commit | Line | Data |
---|---|---|
4b95f135 JP |
1 | |
2 | Subsystem Trace Points: power | |
3 | ||
4 | The power tracing system captures events related to power transitions | |
5 | within the kernel. Broadly speaking there are three major subheadings: | |
6 | ||
7 | o Power state switch which reports events related to suspend (S-states), | |
8 | cpuidle (C-states) and cpufreq (P-states) | |
9 | o System clock related changes | |
10 | o Power domains related changes and transitions | |
11 | ||
12 | This document describes what each of the tracepoints is and why they | |
13 | might be useful. | |
14 | ||
15 | Cf. include/trace/events/power.h for the events definitions. | |
16 | ||
17 | 1. Power state switch events | |
18 | ============================ | |
19 | ||
20 | 1.1 New trace API | |
21 | ----------------- | |
22 | ||
23 | A 'cpu' event class gathers the CPU-related events: cpuidle and | |
24 | cpufreq. | |
25 | ||
26 | cpu_idle "state=%lu cpu_id=%lu" | |
27 | cpu_frequency "state=%lu cpu_id=%lu" | |
28 | ||
29 | A suspend event is used to indicate the system going in and out of the | |
30 | suspend mode: | |
31 | ||
32 | machine_suspend "state=%lu" | |
33 | ||
34 | ||
35 | Note: the value of '-1' or '4294967295' for state means an exit from the current state, | |
36 | i.e. trace_cpu_idle(4, smp_processor_id()) means that the system | |
37 | enters the idle state 4, while trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id()) | |
38 | means that the system exits the previous idle state. | |
39 | ||
40 | The event which has 'state=4294967295' in the trace is very important to the user | |
41 | space tools which are using it to detect the end of the current state, and so to | |
42 | correctly draw the states diagrams and to calculate accurate statistics etc. | |
43 | ||
44 | 1.2 DEPRECATED trace API | |
45 | ------------------------ | |
46 | ||
47 | A new Kconfig option CONFIG_EVENT_POWER_TRACING_DEPRECATED with the default value of | |
48 | 'y' has been created. This allows the legacy trace power API to be used conjointly | |
49 | with the new trace API. | |
50 | The Kconfig option, the old trace API (in include/trace/events/power.h) and the | |
51 | old trace points will disappear in a future release (namely 2.6.41). | |
52 | ||
53 | power_start "type=%lu state=%lu cpu_id=%lu" | |
54 | power_frequency "type=%lu state=%lu cpu_id=%lu" | |
55 | power_end "cpu_id=%lu" | |
56 | ||
57 | The 'type' parameter takes one of those macros: | |
58 | . POWER_NONE = 0, | |
59 | . POWER_CSTATE = 1, /* C-State */ | |
edbfc1ba | 60 | . POWER_PSTATE = 2, /* Frequency change or DVFS */ |
4b95f135 JP |
61 | |
62 | The 'state' parameter is set depending on the type: | |
63 | . Target C-state for type=POWER_CSTATE, | |
64 | . Target frequency for type=POWER_PSTATE, | |
65 | ||
66 | power_end is used to indicate the exit of a state, corresponding to the latest | |
67 | power_start event. | |
68 | ||
69 | 2. Clocks events | |
70 | ================ | |
71 | The clock events are used for clock enable/disable and for | |
72 | clock rate change. | |
73 | ||
74 | clock_enable "%s state=%lu cpu_id=%lu" | |
75 | clock_disable "%s state=%lu cpu_id=%lu" | |
76 | clock_set_rate "%s state=%lu cpu_id=%lu" | |
77 | ||
78 | The first parameter gives the clock name (e.g. "gpio1_iclk"). | |
79 | The second parameter is '1' for enable, '0' for disable, the target | |
80 | clock rate for set_rate. | |
81 | ||
82 | 3. Power domains events | |
83 | ======================= | |
84 | The power domain events are used for power domains transitions | |
85 | ||
86 | power_domain_target "%s state=%lu cpu_id=%lu" | |
87 | ||
88 | The first parameter gives the power domain name (e.g. "mpu_pwrdm"). | |
89 | The second parameter is the power domain target state. | |
90 |