ALSA: timer: Limit max amount of slave instances
[linux-2.6-block.git] / Documentation / hwmon / fam15h_power.rst
CommitLineData
512d1027
AH
1Kernel driver fam15h_power
2==========================
3
4Supported chips:
b413e3fa 5
512d1027 6* AMD Family 15h Processors
b413e3fa 7
5aeb5d20 8* AMD Family 16h Processors
512d1027
AH
9
10 Prefix: 'fam15h_power'
b413e3fa 11
512d1027 12 Addresses scanned: PCI space
b413e3fa 13
512d1027 14 Datasheets:
b413e3fa
MCC
15
16 - BIOS and Kernel Developer's Guide (BKDG) For AMD Family 15h Processors
17 - BIOS and Kernel Developer's Guide (BKDG) For AMD Family 16h Processors
18 - AMD64 Architecture Programmer's Manual Volume 2: System Programming
512d1027 19
d034fbf0 20Author: Andreas Herrmann <herrmann.der.user@googlemail.com>
512d1027
AH
21
22Description
23-----------
24
a6e232f7
HR
251) Processor TDP (Thermal design power)
26
27Given a fixed frequency and voltage, the power consumption of a
28processor varies based on the workload being executed. Derated power
29is the power consumed when running a specific application. Thermal
30design power (TDP) is an example of derated power.
31
512d1027 32This driver permits reading of registers providing power information
a6e232f7 33of AMD Family 15h and 16h processors via TDP algorithm.
512d1027 34
5aeb5d20
HR
35For AMD Family 15h and 16h processors the following power values can
36be calculated using different processor northbridge function
37registers:
512d1027 38
b413e3fa
MCC
39* BasePwrWatts:
40 Specifies in watts the maximum amount of power
41 consumed by the processor for NB and logic external to the core.
42
43* ProcessorPwrWatts:
44 Specifies in watts the maximum amount of power
45 the processor can support.
46* CurrPwrWatts:
47 Specifies in watts the current amount of power being
48 consumed by the processor.
512d1027
AH
49
50This driver provides ProcessorPwrWatts and CurrPwrWatts:
b413e3fa 51
512d1027
AH
52* power1_crit (ProcessorPwrWatts)
53* power1_input (CurrPwrWatts)
54
55On multi-node processors the calculated value is for the entire
56package and not for a single node. Thus the driver creates sysfs
57attributes only for internal node0 of a multi-node processor.
a6e232f7
HR
58
592) Accumulated Power Mechanism
60
61This driver also introduces an algorithm that should be used to
62calculate the average power consumed by a processor during a
63measurement interval Tm. The feature of accumulated power mechanism is
64indicated by CPUID Fn8000_0007_EDX[12].
65
b413e3fa
MCC
66* Tsample:
67 compute unit power accumulator sample period
68
69* Tref:
70 the PTSC counter period
71
72* PTSC:
73 performance timestamp counter
74
75* N:
76 the ratio of compute unit power accumulator sample period to the
77 PTSC period
78
79* Jmax:
80 max compute unit accumulated power which is indicated by
81 MaxCpuSwPwrAcc MSR C001007b
82
83* Jx/Jy:
84 compute unit accumulated power which is indicated by
85 CpuSwPwrAcc MSR C001007a
86* Tx/Ty:
87 the value of performance timestamp counter which is indicated
88 by CU_PTSC MSR C0010280
89
90* PwrCPUave:
91 CPU average power
a6e232f7
HR
92
93i. Determine the ratio of Tsample to Tref by executing CPUID Fn8000_0007.
b413e3fa 94
a6e232f7
HR
95 N = value of CPUID Fn8000_0007_ECX[CpuPwrSampleTimeRatio[15:0]].
96
97ii. Read the full range of the cumulative energy value from the new
b413e3fa
MCC
98 MSR MaxCpuSwPwrAcc.
99
a6e232f7 100 Jmax = value returned.
b413e3fa 101
a6e232f7 102iii. At time x, SW reads CpuSwPwrAcc MSR and samples the PTSC.
b413e3fa
MCC
103
104 Jx = value read from CpuSwPwrAcc and Tx = value read from PTSC.
a6e232f7
HR
105
106iv. At time y, SW reads CpuSwPwrAcc MSR and samples the PTSC.
b413e3fa
MCC
107
108 Jy = value read from CpuSwPwrAcc and Ty = value read from PTSC.
a6e232f7
HR
109
110v. Calculate the average power consumption for a compute unit over
b413e3fa
MCC
111 time period (y-x). Unit of result is uWatt::
112
a6e232f7
HR
113 if (Jy < Jx) // Rollover has occurred
114 Jdelta = (Jy + Jmax) - Jx
115 else
116 Jdelta = Jy - Jx
117 PwrCPUave = N * Jdelta * 1000 / (Ty - Tx)
118
119This driver provides PwrCPUave and interval(default is 10 millisecond
120and maximum is 1 second):
b413e3fa 121
a6e232f7
HR
122* power1_average (PwrCPUave)
123* power1_average_interval (Interval)
124
125The power1_average_interval can be updated at /etc/sensors3.conf file
126as below:
127
b413e3fa 128chip `fam15h_power-*`
a6e232f7
HR
129 set power1_average_interval 0.01
130
131Then save it with "sensors -s".