Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 1 | What: /sys/devices/system/cpu/ |
| 2 | Date: pre-git history |
| 3 | Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> |
| 4 | Description: |
| 5 | A collection of both global and individual CPU attributes |
| 6 | |
| 7 | Individual CPU attributes are contained in subdirectories |
| 8 | named by the kernel's logical CPU number, e.g.: |
| 9 | |
| 10 | /sys/devices/system/cpu/cpu#/ |
| 11 | |
| 12 | What: /sys/devices/system/cpu/kernel_max |
| 13 | /sys/devices/system/cpu/offline |
| 14 | /sys/devices/system/cpu/online |
| 15 | /sys/devices/system/cpu/possible |
| 16 | /sys/devices/system/cpu/present |
| 17 | Date: December 2008 |
| 18 | Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> |
| 19 | Description: CPU topology files that describe kernel limits related to |
| 20 | hotplug. Briefly: |
| 21 | |
| 22 | kernel_max: the maximum cpu index allowed by the kernel |
| 23 | configuration. |
| 24 | |
| 25 | offline: cpus that are not online because they have been |
| 26 | HOTPLUGGED off or exceed the limit of cpus allowed by the |
| 27 | kernel configuration (kernel_max above). |
| 28 | |
| 29 | online: cpus that are online and being scheduled. |
| 30 | |
| 31 | possible: cpus that have been allocated resources and can be |
| 32 | brought online if they are present. |
| 33 | |
| 34 | present: cpus that have been identified as being present in |
| 35 | the system. |
| 36 | |
David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame] | 37 | See Documentation/admin-guide/cputopology.rst for more information. |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 38 | |
| 39 | |
| 40 | What: /sys/devices/system/cpu/probe |
| 41 | /sys/devices/system/cpu/release |
| 42 | Date: November 2009 |
| 43 | Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> |
| 44 | Description: Dynamic addition and removal of CPU's. This is not hotplug |
| 45 | removal, this is meant complete removal/addition of the CPU |
| 46 | from the system. |
| 47 | |
| 48 | probe: writes to this file will dynamically add a CPU to the |
| 49 | system. Information written to the file to add CPU's is |
| 50 | architecture specific. |
| 51 | |
| 52 | release: writes to this file dynamically remove a CPU from |
| 53 | the system. Information writtento the file to remove CPU's |
| 54 | is architecture specific. |
| 55 | |
| 56 | What: /sys/devices/system/cpu/cpu#/node |
| 57 | Date: October 2009 |
| 58 | Contact: Linux memory management mailing list <linux-mm@kvack.org> |
| 59 | Description: Discover NUMA node a CPU belongs to |
| 60 | |
| 61 | When CONFIG_NUMA is enabled, a symbolic link that points |
| 62 | to the corresponding NUMA node directory. |
| 63 | |
| 64 | For example, the following symlink is created for cpu42 |
| 65 | in NUMA node 2: |
| 66 | |
| 67 | /sys/devices/system/cpu/cpu42/node2 -> ../../node/node2 |
| 68 | |
| 69 | |
| 70 | What: /sys/devices/system/cpu/cpu#/topology/core_id |
| 71 | /sys/devices/system/cpu/cpu#/topology/core_siblings |
| 72 | /sys/devices/system/cpu/cpu#/topology/core_siblings_list |
| 73 | /sys/devices/system/cpu/cpu#/topology/physical_package_id |
| 74 | /sys/devices/system/cpu/cpu#/topology/thread_siblings |
| 75 | /sys/devices/system/cpu/cpu#/topology/thread_siblings_list |
| 76 | Date: December 2008 |
| 77 | Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> |
| 78 | Description: CPU topology files that describe a logical CPU's relationship |
| 79 | to other cores and threads in the same physical package. |
| 80 | |
| 81 | One cpu# directory is created per logical CPU in the system, |
| 82 | e.g. /sys/devices/system/cpu/cpu42/. |
| 83 | |
| 84 | Briefly, the files above are: |
| 85 | |
| 86 | core_id: the CPU core ID of cpu#. Typically it is the |
| 87 | hardware platform's identifier (rather than the kernel's). |
| 88 | The actual value is architecture and platform dependent. |
| 89 | |
| 90 | core_siblings: internal kernel map of cpu#'s hardware threads |
| 91 | within the same physical_package_id. |
| 92 | |
| 93 | core_siblings_list: human-readable list of the logical CPU |
| 94 | numbers within the same physical_package_id as cpu#. |
| 95 | |
| 96 | physical_package_id: physical package id of cpu#. Typically |
| 97 | corresponds to a physical socket number, but the actual value |
| 98 | is architecture and platform dependent. |
| 99 | |
| 100 | thread_siblings: internel kernel map of cpu#'s hardware |
| 101 | threads within the same core as cpu# |
| 102 | |
| 103 | thread_siblings_list: human-readable list of cpu#'s hardware |
| 104 | threads within the same core as cpu# |
| 105 | |
David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame] | 106 | See Documentation/admin-guide/cputopology.rst for more information. |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 107 | |
| 108 | |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 109 | What: /sys/devices/system/cpu/cpuidle/available_governors |
| 110 | /sys/devices/system/cpu/cpuidle/current_driver |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 111 | /sys/devices/system/cpu/cpuidle/current_governor |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 112 | /sys/devices/system/cpu/cpuidle/current_governer_ro |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 113 | Date: September 2007 |
| 114 | Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> |
| 115 | Description: Discover cpuidle policy and mechanism |
| 116 | |
| 117 | Various CPUs today support multiple idle levels that are |
| 118 | differentiated by varying exit latencies and power |
| 119 | consumption during idle. |
| 120 | |
| 121 | Idle policy (governor) is differentiated from idle mechanism |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 122 | (driver). |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 123 | |
| 124 | available_governors: (RO) displays a space separated list of |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 125 | available governors. |
| 126 | |
| 127 | current_driver: (RO) displays current idle mechanism. |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 128 | |
| 129 | current_governor: (RW) displays current idle policy. Users can |
| 130 | switch the governor at runtime by writing to this file. |
| 131 | |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 132 | current_governor_ro: (RO) displays current idle policy. |
| 133 | |
David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame] | 134 | See Documentation/admin-guide/pm/cpuidle.rst and |
| 135 | Documentation/driver-api/pm/cpuidle.rst for more information. |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 136 | |
| 137 | |
| 138 | What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/name |
| 139 | /sys/devices/system/cpu/cpuX/cpuidle/stateN/latency |
| 140 | /sys/devices/system/cpu/cpuX/cpuidle/stateN/power |
| 141 | /sys/devices/system/cpu/cpuX/cpuidle/stateN/time |
| 142 | /sys/devices/system/cpu/cpuX/cpuidle/stateN/usage |
David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame] | 143 | /sys/devices/system/cpu/cpuX/cpuidle/stateN/above |
| 144 | /sys/devices/system/cpu/cpuX/cpuidle/stateN/below |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 145 | Date: September 2007 |
| 146 | KernelVersion: v2.6.24 |
| 147 | Contact: Linux power management list <linux-pm@vger.kernel.org> |
| 148 | Description: |
| 149 | The directory /sys/devices/system/cpu/cpuX/cpuidle contains per |
| 150 | logical CPU specific cpuidle information for each online cpu X. |
| 151 | The processor idle states which are available for use have the |
| 152 | following attributes: |
| 153 | |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 154 | ======== ==== ================================================= |
| 155 | name: (RO) Name of the idle state (string). |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 156 | |
| 157 | latency: (RO) The latency to exit out of this idle state (in |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 158 | microseconds). |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 159 | |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 160 | power: (RO) The power consumed while in this idle state (in |
| 161 | milliwatts). |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 162 | |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 163 | time: (RO) The total time spent in this idle state |
| 164 | (in microseconds). |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 165 | |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 166 | usage: (RO) Number of times this state was entered (a count). |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 167 | |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 168 | above: (RO) Number of times this state was entered, but the |
| 169 | observed CPU idle duration was too short for it |
| 170 | (a count). |
David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame] | 171 | |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 172 | below: (RO) Number of times this state was entered, but the |
| 173 | observed CPU idle duration was too long for it |
| 174 | (a count). |
| 175 | ======== ==== ================================================= |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 176 | |
| 177 | What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/desc |
| 178 | Date: February 2008 |
| 179 | KernelVersion: v2.6.25 |
| 180 | Contact: Linux power management list <linux-pm@vger.kernel.org> |
| 181 | Description: |
| 182 | (RO) A small description about the idle state (string). |
| 183 | |
| 184 | |
| 185 | What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/disable |
| 186 | Date: March 2012 |
| 187 | KernelVersion: v3.10 |
| 188 | Contact: Linux power management list <linux-pm@vger.kernel.org> |
| 189 | Description: |
| 190 | (RW) Option to disable this idle state (bool). The behavior and |
| 191 | the effect of the disable variable depends on the implementation |
| 192 | of a particular governor. In the ladder governor, for example, |
| 193 | it is not coherent, i.e. if one is disabling a light state, then |
| 194 | all deeper states are disabled as well, but the disable variable |
| 195 | does not reflect it. Likewise, if one enables a deep state but a |
| 196 | lighter state still is disabled, then this has no effect. |
| 197 | |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 198 | What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/default_status |
| 199 | Date: December 2019 |
| 200 | KernelVersion: v5.6 |
| 201 | Contact: Linux power management list <linux-pm@vger.kernel.org> |
| 202 | Description: |
| 203 | (RO) The default status of this state, "enabled" or "disabled". |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 204 | |
| 205 | What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/residency |
| 206 | Date: March 2014 |
| 207 | KernelVersion: v3.15 |
| 208 | Contact: Linux power management list <linux-pm@vger.kernel.org> |
| 209 | Description: |
| 210 | (RO) Display the target residency i.e. the minimum amount of |
| 211 | time (in microseconds) this cpu should spend in this idle state |
| 212 | to make the transition worth the effort. |
| 213 | |
| 214 | What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/s2idle/ |
| 215 | Date: March 2018 |
| 216 | KernelVersion: v4.17 |
| 217 | Contact: Linux power management list <linux-pm@vger.kernel.org> |
| 218 | Description: |
| 219 | Idle state usage statistics related to suspend-to-idle. |
| 220 | |
| 221 | This attribute group is only present for states that can be |
| 222 | used in suspend-to-idle with suspended timekeeping. |
| 223 | |
| 224 | What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/s2idle/time |
| 225 | Date: March 2018 |
| 226 | KernelVersion: v4.17 |
| 227 | Contact: Linux power management list <linux-pm@vger.kernel.org> |
| 228 | Description: |
| 229 | Total time spent by the CPU in suspend-to-idle (with scheduler |
| 230 | tick suspended) after requesting this state. |
| 231 | |
| 232 | What: /sys/devices/system/cpu/cpuX/cpuidle/stateN/s2idle/usage |
| 233 | Date: March 2018 |
| 234 | KernelVersion: v4.17 |
| 235 | Contact: Linux power management list <linux-pm@vger.kernel.org> |
| 236 | Description: |
| 237 | Total number of times this state has been requested by the CPU |
| 238 | while entering suspend-to-idle. |
| 239 | |
| 240 | What: /sys/devices/system/cpu/cpu#/cpufreq/* |
| 241 | Date: pre-git history |
| 242 | Contact: linux-pm@vger.kernel.org |
| 243 | Description: Discover and change clock speed of CPUs |
| 244 | |
| 245 | Clock scaling allows you to change the clock speed of the |
| 246 | CPUs on the fly. This is a nice method to save battery |
| 247 | power, because the lower the clock speed, the less power |
| 248 | the CPU consumes. |
| 249 | |
| 250 | There are many knobs to tweak in this directory. |
| 251 | |
| 252 | See files in Documentation/cpu-freq/ for more information. |
| 253 | |
| 254 | |
| 255 | What: /sys/devices/system/cpu/cpu#/cpufreq/freqdomain_cpus |
| 256 | Date: June 2013 |
| 257 | Contact: linux-pm@vger.kernel.org |
| 258 | Description: Discover CPUs in the same CPU frequency coordination domain |
| 259 | |
| 260 | freqdomain_cpus is the list of CPUs (online+offline) that share |
| 261 | the same clock/freq domain (possibly at the hardware level). |
| 262 | That information may be hidden from the cpufreq core and the |
| 263 | value of related_cpus may be different from freqdomain_cpus. This |
| 264 | attribute is useful for user space DVFS controllers to get better |
| 265 | power/performance results for platforms using acpi-cpufreq. |
| 266 | |
| 267 | This file is only present if the acpi-cpufreq driver is in use. |
| 268 | |
| 269 | |
| 270 | What: /sys/devices/system/cpu/cpu*/cache/index3/cache_disable_{0,1} |
| 271 | Date: August 2008 |
| 272 | KernelVersion: 2.6.27 |
| 273 | Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> |
| 274 | Description: Disable L3 cache indices |
| 275 | |
| 276 | These files exist in every CPU's cache/index3 directory. Each |
| 277 | cache_disable_{0,1} file corresponds to one disable slot which |
| 278 | can be used to disable a cache index. Reading from these files |
| 279 | on a processor with this functionality will return the currently |
| 280 | disabled index for that node. There is one L3 structure per |
| 281 | node, or per internal node on MCM machines. Writing a valid |
| 282 | index to one of these files will cause the specificed cache |
| 283 | index to be disabled. |
| 284 | |
| 285 | All AMD processors with L3 caches provide this functionality. |
| 286 | For details, see BKDGs at |
| 287 | http://developer.amd.com/documentation/guides/Pages/default.aspx |
| 288 | |
| 289 | |
| 290 | What: /sys/devices/system/cpu/cpufreq/boost |
| 291 | Date: August 2012 |
| 292 | Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> |
| 293 | Description: Processor frequency boosting control |
| 294 | |
| 295 | This switch controls the boost setting for the whole system. |
| 296 | Boosting allows the CPU and the firmware to run at a frequency |
| 297 | beyound it's nominal limit. |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 298 | |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 299 | More details can be found in |
| 300 | Documentation/admin-guide/pm/cpufreq.rst |
| 301 | |
| 302 | |
| 303 | What: /sys/devices/system/cpu/cpu#/crash_notes |
| 304 | /sys/devices/system/cpu/cpu#/crash_notes_size |
| 305 | Date: April 2013 |
| 306 | Contact: kexec@lists.infradead.org |
| 307 | Description: address and size of the percpu note. |
| 308 | |
| 309 | crash_notes: the physical address of the memory that holds the |
| 310 | note of cpu#. |
| 311 | |
| 312 | crash_notes_size: size of the note of cpu#. |
| 313 | |
| 314 | |
| 315 | What: /sys/devices/system/cpu/intel_pstate/max_perf_pct |
| 316 | /sys/devices/system/cpu/intel_pstate/min_perf_pct |
| 317 | /sys/devices/system/cpu/intel_pstate/no_turbo |
| 318 | Date: February 2013 |
| 319 | Contact: linux-pm@vger.kernel.org |
| 320 | Description: Parameters for the Intel P-state driver |
| 321 | |
| 322 | Logic for selecting the current P-state in Intel |
| 323 | Sandybridge+ processors. The three knobs control |
| 324 | limits for the P-state that will be requested by the |
| 325 | driver. |
| 326 | |
| 327 | max_perf_pct: limits the maximum P state that will be requested by |
| 328 | the driver stated as a percentage of the available performance. |
| 329 | |
| 330 | min_perf_pct: limits the minimum P state that will be requested by |
| 331 | the driver stated as a percentage of the available performance. |
| 332 | |
| 333 | no_turbo: limits the driver to selecting P states below the turbo |
| 334 | frequency range. |
| 335 | |
| 336 | More details can be found in |
| 337 | Documentation/admin-guide/pm/intel_pstate.rst |
| 338 | |
| 339 | What: /sys/devices/system/cpu/cpu*/cache/index*/<set_of_attributes_mentioned_below> |
| 340 | Date: July 2014(documented, existed before August 2008) |
| 341 | Contact: Sudeep Holla <sudeep.holla@arm.com> |
| 342 | Linux kernel mailing list <linux-kernel@vger.kernel.org> |
| 343 | Description: Parameters for the CPU cache attributes |
| 344 | |
| 345 | allocation_policy: |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 346 | - WriteAllocate: |
| 347 | allocate a memory location to a cache line |
| 348 | on a cache miss because of a write |
| 349 | - ReadAllocate: |
| 350 | allocate a memory location to a cache line |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 351 | on a cache miss because of a read |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 352 | - ReadWriteAllocate: |
| 353 | both writeallocate and readallocate |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 354 | |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 355 | attributes: |
| 356 | LEGACY used only on IA64 and is same as write_policy |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 357 | |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 358 | coherency_line_size: |
| 359 | the minimum amount of data in bytes that gets |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 360 | transferred from memory to cache |
| 361 | |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 362 | level: |
| 363 | the cache hierarchy in the multi-level cache configuration |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 364 | |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 365 | number_of_sets: |
| 366 | total number of sets in the cache, a set is a |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 367 | collection of cache lines with the same cache index |
| 368 | |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 369 | physical_line_partition: |
| 370 | number of physical cache line per cache tag |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 371 | |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 372 | shared_cpu_list: |
| 373 | the list of logical cpus sharing the cache |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 374 | |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 375 | shared_cpu_map: |
| 376 | logical cpu mask containing the list of cpus sharing |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 377 | the cache |
| 378 | |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 379 | size: |
| 380 | the total cache size in kB |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 381 | |
| 382 | type: |
| 383 | - Instruction: cache that only holds instructions |
| 384 | - Data: cache that only caches data |
| 385 | - Unified: cache that holds both data and instructions |
| 386 | |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 387 | ways_of_associativity: |
| 388 | degree of freedom in placing a particular block |
| 389 | of memory in the cache |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 390 | |
| 391 | write_policy: |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 392 | - WriteThrough: |
| 393 | data is written to both the cache line |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 394 | and to the block in the lower-level memory |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 395 | - WriteBack: |
| 396 | data is written only to the cache line and |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 397 | the modified cache line is written to main |
| 398 | memory only when it is replaced |
| 399 | |
| 400 | |
| 401 | What: /sys/devices/system/cpu/cpu*/cache/index*/id |
| 402 | Date: September 2016 |
| 403 | Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> |
| 404 | Description: Cache id |
| 405 | |
| 406 | The id provides a unique number for a specific instance of |
| 407 | a cache of a particular type. E.g. there may be a level |
| 408 | 3 unified cache on each socket in a server and we may |
| 409 | assign them ids 0, 1, 2, ... |
| 410 | |
| 411 | Note that id value can be non-contiguous. E.g. level 1 |
| 412 | caches typically exist per core, but there may not be a |
| 413 | power of two cores on a socket, so these caches may be |
| 414 | numbered 0, 1, 2, 3, 4, 5, 8, 9, 10, ... |
| 415 | |
| 416 | What: /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats |
| 417 | /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/turbo_stat |
| 418 | /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/sub_turbo_stat |
| 419 | /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/unthrottle |
| 420 | /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/powercap |
| 421 | /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/overtemp |
| 422 | /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/supply_fault |
| 423 | /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/overcurrent |
| 424 | /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/occ_reset |
| 425 | Date: March 2016 |
| 426 | Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> |
| 427 | Linux for PowerPC mailing list <linuxppc-dev@ozlabs.org> |
| 428 | Description: POWERNV CPUFreq driver's frequency throttle stats directory and |
| 429 | attributes |
| 430 | |
| 431 | 'cpuX/cpufreq/throttle_stats' directory contains the CPU frequency |
| 432 | throttle stat attributes for the chip. The throttle stats of a cpu |
| 433 | is common across all the cpus belonging to a chip. Below are the |
| 434 | throttle attributes exported in the 'throttle_stats' directory: |
| 435 | |
| 436 | - turbo_stat : This file gives the total number of times the max |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 437 | frequency is throttled to lower frequency in turbo (at and above |
| 438 | nominal frequency) range of frequencies. |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 439 | |
| 440 | - sub_turbo_stat : This file gives the total number of times the |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 441 | max frequency is throttled to lower frequency in sub-turbo(below |
| 442 | nominal frequency) range of frequencies. |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 443 | |
| 444 | - unthrottle : This file gives the total number of times the max |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 445 | frequency is unthrottled after being throttled. |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 446 | |
| 447 | - powercap : This file gives the total number of times the max |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 448 | frequency is throttled due to 'Power Capping'. |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 449 | |
| 450 | - overtemp : This file gives the total number of times the max |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 451 | frequency is throttled due to 'CPU Over Temperature'. |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 452 | |
| 453 | - supply_fault : This file gives the total number of times the |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 454 | max frequency is throttled due to 'Power Supply Failure'. |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 455 | |
| 456 | - overcurrent : This file gives the total number of times the |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 457 | max frequency is throttled due to 'Overcurrent'. |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 458 | |
| 459 | - occ_reset : This file gives the total number of times the max |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 460 | frequency is throttled due to 'OCC Reset'. |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 461 | |
| 462 | The sysfs attributes representing different throttle reasons like |
| 463 | powercap, overtemp, supply_fault, overcurrent and occ_reset map to |
| 464 | the reasons provided by OCC firmware for throttling the frequency. |
| 465 | |
| 466 | What: /sys/devices/system/cpu/cpufreq/policyX/throttle_stats |
| 467 | /sys/devices/system/cpu/cpufreq/policyX/throttle_stats/turbo_stat |
| 468 | /sys/devices/system/cpu/cpufreq/policyX/throttle_stats/sub_turbo_stat |
| 469 | /sys/devices/system/cpu/cpufreq/policyX/throttle_stats/unthrottle |
| 470 | /sys/devices/system/cpu/cpufreq/policyX/throttle_stats/powercap |
| 471 | /sys/devices/system/cpu/cpufreq/policyX/throttle_stats/overtemp |
| 472 | /sys/devices/system/cpu/cpufreq/policyX/throttle_stats/supply_fault |
| 473 | /sys/devices/system/cpu/cpufreq/policyX/throttle_stats/overcurrent |
| 474 | /sys/devices/system/cpu/cpufreq/policyX/throttle_stats/occ_reset |
| 475 | Date: March 2016 |
| 476 | Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> |
| 477 | Linux for PowerPC mailing list <linuxppc-dev@ozlabs.org> |
| 478 | Description: POWERNV CPUFreq driver's frequency throttle stats directory and |
| 479 | attributes |
| 480 | |
| 481 | 'policyX/throttle_stats' directory and all the attributes are same as |
| 482 | the /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats directory and |
| 483 | attributes which give the frequency throttle information of the chip. |
| 484 | |
| 485 | What: /sys/devices/system/cpu/cpuX/regs/ |
| 486 | /sys/devices/system/cpu/cpuX/regs/identification/ |
| 487 | /sys/devices/system/cpu/cpuX/regs/identification/midr_el1 |
| 488 | /sys/devices/system/cpu/cpuX/regs/identification/revidr_el1 |
| 489 | Date: June 2016 |
| 490 | Contact: Linux ARM Kernel Mailing list <linux-arm-kernel@lists.infradead.org> |
| 491 | Description: AArch64 CPU registers |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 492 | |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 493 | 'identification' directory exposes the CPU ID registers for |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 494 | identifying model and revision of the CPU. |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 495 | |
| 496 | What: /sys/devices/system/cpu/cpu#/cpu_capacity |
| 497 | Date: December 2016 |
| 498 | Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> |
| 499 | Description: information about CPUs heterogeneity. |
| 500 | |
| 501 | cpu_capacity: capacity of cpu#. |
| 502 | |
| 503 | What: /sys/devices/system/cpu/vulnerabilities |
| 504 | /sys/devices/system/cpu/vulnerabilities/meltdown |
| 505 | /sys/devices/system/cpu/vulnerabilities/spectre_v1 |
| 506 | /sys/devices/system/cpu/vulnerabilities/spectre_v2 |
| 507 | /sys/devices/system/cpu/vulnerabilities/spec_store_bypass |
| 508 | /sys/devices/system/cpu/vulnerabilities/l1tf |
David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame] | 509 | /sys/devices/system/cpu/vulnerabilities/mds |
Olivier Deprez | 0e64123 | 2021-09-23 10:07:05 +0200 | [diff] [blame] | 510 | /sys/devices/system/cpu/vulnerabilities/srbds |
David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame] | 511 | /sys/devices/system/cpu/vulnerabilities/tsx_async_abort |
| 512 | /sys/devices/system/cpu/vulnerabilities/itlb_multihit |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 513 | Date: January 2018 |
| 514 | Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> |
| 515 | Description: Information about CPU vulnerabilities |
| 516 | |
| 517 | The files are named after the code names of CPU |
| 518 | vulnerabilities. The output of those files reflects the |
| 519 | state of the CPUs in the system. Possible output values: |
| 520 | |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 521 | ================ ============================================== |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 522 | "Not affected" CPU is not affected by the vulnerability |
| 523 | "Vulnerable" CPU is affected and no mitigation in effect |
| 524 | "Mitigation: $M" CPU is affected and mitigation $M is in effect |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 525 | ================ ============================================== |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 526 | |
David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame] | 527 | See also: Documentation/admin-guide/hw-vuln/index.rst |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 528 | |
| 529 | What: /sys/devices/system/cpu/smt |
| 530 | /sys/devices/system/cpu/smt/active |
| 531 | /sys/devices/system/cpu/smt/control |
| 532 | Date: June 2018 |
| 533 | Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> |
| 534 | Description: Control Symetric Multi Threading (SMT) |
| 535 | |
| 536 | active: Tells whether SMT is active (enabled and siblings online) |
| 537 | |
| 538 | control: Read/write interface to control SMT. Possible |
| 539 | values: |
| 540 | |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 541 | ================ ========================================= |
David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame] | 542 | "on" SMT is enabled |
| 543 | "off" SMT is disabled |
| 544 | "forceoff" SMT is force disabled. Cannot be changed. |
| 545 | "notsupported" SMT is not supported by the CPU |
| 546 | "notimplemented" SMT runtime toggling is not |
| 547 | implemented for the architecture |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 548 | ================ ========================================= |
Andrew Scull | b4b6d4a | 2019-01-02 15:54:55 +0000 | [diff] [blame] | 549 | |
| 550 | If control status is "forceoff" or "notsupported" writes |
| 551 | are rejected. |
David Brazdil | 0f672f6 | 2019-12-10 10:32:29 +0000 | [diff] [blame] | 552 | |
| 553 | What: /sys/devices/system/cpu/cpu#/power/energy_perf_bias |
| 554 | Date: March 2019 |
| 555 | Contact: linux-pm@vger.kernel.org |
| 556 | Description: Intel Energy and Performance Bias Hint (EPB) |
| 557 | |
| 558 | EPB for the given CPU in a sliding scale 0 - 15, where a value |
| 559 | of 0 corresponds to a hint preference for highest performance |
| 560 | and a value of 15 corresponds to the maximum energy savings. |
| 561 | |
| 562 | In order to change the EPB value for the CPU, write either |
| 563 | a number in the 0 - 15 sliding scale above, or one of the |
| 564 | strings: "performance", "balance-performance", "normal", |
| 565 | "balance-power", "power" (that represent values reflected by |
| 566 | their meaning), to this attribute. |
| 567 | |
| 568 | This attribute is present for all online CPUs supporting the |
| 569 | Intel EPB feature. |
| 570 | |
| 571 | What: /sys/devices/system/cpu/umwait_control |
| 572 | /sys/devices/system/cpu/umwait_control/enable_c02 |
| 573 | /sys/devices/system/cpu/umwait_control/max_time |
| 574 | Date: May 2019 |
| 575 | Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> |
| 576 | Description: Umwait control |
| 577 | |
| 578 | enable_c02: Read/write interface to control umwait C0.2 state |
| 579 | Read returns C0.2 state status: |
| 580 | 0: C0.2 is disabled |
| 581 | 1: C0.2 is enabled |
| 582 | |
| 583 | Write 'y' or '1' or 'on' to enable C0.2 state. |
| 584 | Write 'n' or '0' or 'off' to disable C0.2 state. |
| 585 | |
| 586 | The interface is case insensitive. |
| 587 | |
| 588 | max_time: Read/write interface to control umwait maximum time |
| 589 | in TSC-quanta that the CPU can reside in either C0.1 |
| 590 | or C0.2 state. The time is an unsigned 32-bit number. |
| 591 | Note that a value of zero means there is no limit. |
| 592 | Low order two bits must be zero. |
| 593 | |
| 594 | What: /sys/devices/system/cpu/svm |
| 595 | Date: August 2019 |
| 596 | Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> |
| 597 | Linux for PowerPC mailing list <linuxppc-dev@ozlabs.org> |
| 598 | Description: Secure Virtual Machine |
| 599 | |
| 600 | If 1, it means the system is using the Protected Execution |
| 601 | Facility in POWER9 and newer processors. i.e., it is a Secure |
| 602 | Virtual Machine. |
Olivier Deprez | 157378f | 2022-04-04 15:47:50 +0200 | [diff] [blame^] | 603 | |
| 604 | What: /sys/devices/system/cpu/cpuX/purr |
| 605 | Date: Apr 2005 |
| 606 | Contact: Linux for PowerPC mailing list <linuxppc-dev@ozlabs.org> |
| 607 | Description: PURR ticks for this CPU since the system boot. |
| 608 | |
| 609 | The Processor Utilization Resources Register (PURR) is |
| 610 | a 64-bit counter which provides an estimate of the |
| 611 | resources used by the CPU thread. The contents of this |
| 612 | register increases monotonically. This sysfs interface |
| 613 | exposes the number of PURR ticks for cpuX. |
| 614 | |
| 615 | What: /sys/devices/system/cpu/cpuX/spurr |
| 616 | Date: Dec 2006 |
| 617 | Contact: Linux for PowerPC mailing list <linuxppc-dev@ozlabs.org> |
| 618 | Description: SPURR ticks for this CPU since the system boot. |
| 619 | |
| 620 | The Scaled Processor Utilization Resources Register |
| 621 | (SPURR) is a 64-bit counter that provides a frequency |
| 622 | invariant estimate of the resources used by the CPU |
| 623 | thread. The contents of this register increases |
| 624 | monotonically. This sysfs interface exposes the number |
| 625 | of SPURR ticks for cpuX. |
| 626 | |
| 627 | What: /sys/devices/system/cpu/cpuX/idle_purr |
| 628 | Date: Apr 2020 |
| 629 | Contact: Linux for PowerPC mailing list <linuxppc-dev@ozlabs.org> |
| 630 | Description: PURR ticks for cpuX when it was idle. |
| 631 | |
| 632 | This sysfs interface exposes the number of PURR ticks |
| 633 | for cpuX when it was idle. |
| 634 | |
| 635 | What: /sys/devices/system/cpu/cpuX/idle_spurr |
| 636 | Date: Apr 2020 |
| 637 | Contact: Linux for PowerPC mailing list <linuxppc-dev@ozlabs.org> |
| 638 | Description: SPURR ticks for cpuX when it was idle. |
| 639 | |
| 640 | This sysfs interface exposes the number of SPURR ticks |
| 641 | for cpuX when it was idle. |