xref: /linux/Documentation/ABI/testing/sysfs-devices-system-cpu (revision 2d7eaeb05ae265bd64270376e6a2c0d80244771f)
1What:		/sys/devices/system/cpu/
2Date:		pre-git history
3Contact:	Linux kernel mailing list <linux-kernel@vger.kernel.org>
4Description:
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/cpuX/
11
12What:		/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
17Date:		December 2008
18Contact:	Linux kernel mailing list <linux-kernel@vger.kernel.org>
19Description:	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
37		See Documentation/admin-guide/cputopology.rst for more information.
38
39
40What:		/sys/devices/system/cpu/probe
41		/sys/devices/system/cpu/release
42Date:		November 2009
43Contact:	Linux kernel mailing list <linux-kernel@vger.kernel.org>
44Description:	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 written to the file to remove CPU's
54		is architecture specific.
55
56What:		/sys/devices/system/cpu/cpuX/node
57Date:		October 2009
58Contact:	Linux memory management mailing list <linux-mm@kvack.org>
59Description:	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
70What:		/sys/devices/system/cpu/cpuX/topology/core_siblings
71		/sys/devices/system/cpu/cpuX/topology/core_siblings_list
72		/sys/devices/system/cpu/cpuX/topology/physical_package_id
73		/sys/devices/system/cpu/cpuX/topology/thread_siblings
74		/sys/devices/system/cpu/cpuX/topology/thread_siblings_list
75		/sys/devices/system/cpu/cpuX/topology/ppin
76Date:		December 2008
77Contact:	Linux kernel mailing list <linux-kernel@vger.kernel.org>
78Description:	CPU topology files that describe a logical CPU's relationship
79		to other cores and threads in the same physical package.
80
81		One cpuX 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_siblings: internal kernel map of cpuX's hardware threads
87		within the same physical_package_id.
88
89		core_siblings_list: human-readable list of the logical CPU
90		numbers within the same physical_package_id as cpuX.
91
92		physical_package_id: physical package id of cpuX. Typically
93		corresponds to a physical socket number, but the actual value
94		is architecture and platform dependent.
95
96		thread_siblings: internal kernel map of cpuX's hardware
97		threads within the same core as cpuX
98
99		thread_siblings_list: human-readable list of cpuX's hardware
100		threads within the same core as cpuX
101
102		ppin: human-readable Protected Processor Identification
103		Number of the socket the cpu# belongs to. There should be
104		one per physical_package_id. File is readable only to
105		admin.
106
107		See Documentation/admin-guide/cputopology.rst for more information.
108
109
110What:		/sys/devices/system/cpu/cpuidle/available_governors
111		/sys/devices/system/cpu/cpuidle/current_driver
112		/sys/devices/system/cpu/cpuidle/current_governor
113		/sys/devices/system/cpu/cpuidle/current_governer_ro
114		/sys/devices/system/cpu/cpuidle/intel_c1_demotion
115Date:		September 2007
116Contact:	Linux kernel mailing list <linux-kernel@vger.kernel.org>
117Description:	Discover cpuidle policy and mechanism
118
119		Various CPUs today support multiple idle levels that are
120		differentiated by varying exit latencies and power
121		consumption during idle.
122
123		Idle policy (governor) is differentiated from idle mechanism
124		(driver).
125
126		available_governors: (RO) displays a space separated list of
127		available governors.
128
129		current_driver: (RO) displays current idle mechanism.
130
131		current_governor: (RW) displays current idle policy. Users can
132		switch the governor at runtime by writing to this file.
133
134		current_governor_ro: (RO) displays current idle policy.
135
136		intel_c1_demotion: (RW) enables/disables the C1 demotion
137		feature on Intel CPUs.
138
139		See Documentation/admin-guide/pm/cpuidle.rst,
140		Documentation/admin-guide/pm/intel_idle.rst, and
141		Documentation/driver-api/pm/cpuidle.rst for more information.
142
143
144What:		/sys/devices/system/cpu/cpuX/cpuidle/state<N>/name
145		/sys/devices/system/cpu/cpuX/cpuidle/stateN/latency
146		/sys/devices/system/cpu/cpuX/cpuidle/stateN/power
147		/sys/devices/system/cpu/cpuX/cpuidle/stateN/time
148		/sys/devices/system/cpu/cpuX/cpuidle/stateN/usage
149		/sys/devices/system/cpu/cpuX/cpuidle/stateN/above
150		/sys/devices/system/cpu/cpuX/cpuidle/stateN/below
151Date:		September 2007
152KernelVersion:	v2.6.24
153Contact:	Linux power management list <linux-pm@vger.kernel.org>
154Description:
155		The directory /sys/devices/system/cpu/cpuX/cpuidle contains per
156		logical CPU specific cpuidle information for each online cpu X.
157		The processor idle states which are available for use have the
158		following attributes:
159
160		======== ==== =================================================
161		name:	 (RO) Name of the idle state (string).
162
163		latency: (RO) The latency to exit out of this idle state (in
164			      microseconds).
165
166		power:   (RO) The power consumed while in this idle state (in
167			      milliwatts).
168
169		time:    (RO) The total time spent in this idle state
170			      (in microseconds).
171
172		usage:	 (RO) Number of times this state was entered (a count).
173
174		above:	 (RO) Number of times this state was entered, but the
175			      observed CPU idle duration was too short for it
176			      (a count).
177
178		below:	 (RO) Number of times this state was entered, but the
179			      observed CPU idle duration was too long for it
180			      (a count).
181		======== ==== =================================================
182
183What:		/sys/devices/system/cpu/cpuX/cpuidle/state<N>/desc
184Date:		February 2008
185KernelVersion:	v2.6.25
186Contact:	Linux power management list <linux-pm@vger.kernel.org>
187Description:
188		(RO) A small description about the idle state (string).
189
190
191What:		/sys/devices/system/cpu/cpuX/cpuidle/state<N>/disable
192Date:		March 2012
193KernelVersion:	v3.10
194Contact:	Linux power management list <linux-pm@vger.kernel.org>
195Description:
196		(RW) Option to disable this idle state (bool). The behavior and
197		the effect of the disable variable depends on the implementation
198		of a particular governor. In the ladder governor, for example,
199		it is not coherent, i.e. if one is disabling a light state, then
200		all deeper states are disabled as well, but the disable variable
201		does not reflect it. Likewise, if one enables a deep state but a
202		lighter state still is disabled, then this has no effect.
203
204What:		/sys/devices/system/cpu/cpuX/cpuidle/state<N>/default_status
205Date:		December 2019
206KernelVersion:	v5.6
207Contact:	Linux power management list <linux-pm@vger.kernel.org>
208Description:
209		(RO) The default status of this state, "enabled" or "disabled".
210
211What:		/sys/devices/system/cpu/cpuX/cpuidle/state<N>/residency
212Date:		March 2014
213KernelVersion:	v3.15
214Contact:	Linux power management list <linux-pm@vger.kernel.org>
215Description:
216		(RO) Display the target residency i.e. the minimum amount of
217		time (in microseconds) this cpu should spend in this idle state
218		to make the transition worth the effort.
219
220What:		/sys/devices/system/cpu/cpuX/cpuidle/state<N>/s2idle/
221Date:		March 2018
222KernelVersion:	v4.17
223Contact:	Linux power management list <linux-pm@vger.kernel.org>
224Description:
225		Idle state usage statistics related to suspend-to-idle.
226
227		This attribute group is only present for states that can be
228		used in suspend-to-idle with suspended timekeeping.
229
230What:		/sys/devices/system/cpu/cpuX/cpuidle/state<N>/s2idle/time
231Date:		March 2018
232KernelVersion:	v4.17
233Contact:	Linux power management list <linux-pm@vger.kernel.org>
234Description:
235		Total time spent by the CPU in suspend-to-idle (with scheduler
236		tick suspended) after requesting this state.
237
238What:		/sys/devices/system/cpu/cpuX/cpuidle/state<N>/s2idle/usage
239Date:		March 2018
240KernelVersion:	v4.17
241Contact:	Linux power management list <linux-pm@vger.kernel.org>
242Description:
243		Total number of times this state has been requested by the CPU
244		while entering suspend-to-idle.
245
246What:		/sys/devices/system/cpu/cpuX/cpufreq/*
247Date:		pre-git history
248Contact:	linux-pm@vger.kernel.org
249Description:	Discover and change clock speed of CPUs
250
251		Clock scaling allows you to change the clock speed of the
252		CPUs on the fly. This is a nice method to save battery
253		power, because the lower the clock speed, the less power
254		the CPU consumes.
255
256		There are many knobs to tweak in this directory.
257
258		See files in Documentation/cpu-freq/ for more information.
259
260
261What:		/sys/devices/system/cpu/cpuX/cpufreq/freqdomain_cpus
262Date:		June 2013
263Contact:	linux-pm@vger.kernel.org
264Description:	Discover CPUs in the same CPU frequency coordination domain
265
266		freqdomain_cpus is the list of CPUs (online+offline) that share
267		the same clock/freq domain (possibly at the hardware level).
268		That information may be hidden from the cpufreq core and the
269		value of related_cpus may be different from freqdomain_cpus. This
270		attribute is useful for user space DVFS controllers to get better
271		power/performance results for platforms using acpi-cpufreq.
272
273		This file is only present if the acpi-cpufreq or the cppc-cpufreq
274		drivers are in use.
275
276What:		/sys/devices/system/cpu/cpuX/cpufreq/auto_select
277Date:		May 2025
278Contact:	linux-pm@vger.kernel.org
279Description:	Autonomous selection enable
280
281		Read/write interface to control autonomous selection enable
282			Read returns autonomous selection status:
283				0: autonomous selection is disabled
284				1: autonomous selection is enabled
285
286			Write 'y' or '1' or 'on' to enable autonomous selection.
287			Write 'n' or '0' or 'off' to disable autonomous selection.
288
289		This file is only present if the cppc-cpufreq driver is in use.
290
291What:		/sys/devices/system/cpu/cpuX/cpufreq/auto_act_window
292Date:		May 2025
293Contact:	linux-pm@vger.kernel.org
294Description:	Autonomous activity window
295
296		This file indicates a moving utilization sensitivity window to
297		the platform's autonomous selection policy.
298
299		Read/write an integer represents autonomous activity window (in
300		microseconds) from/to this file. The max value to write is
301		1270000000 but the max significand is 127. This means that if 128
302		is written to this file, 127 will be stored. If the value is
303		greater than 130, only the first two digits will be saved as
304		significand.
305
306		Writing a zero value to this file enable the platform to
307		determine an appropriate Activity Window depending on the workload.
308
309		Writing to this file only has meaning when Autonomous Selection is
310		enabled.
311
312		This file is only present if the cppc-cpufreq driver is in use.
313
314What:		/sys/devices/system/cpu/cpuX/cpufreq/energy_performance_preference_val
315Date:		May 2025
316Contact:	linux-pm@vger.kernel.org
317Description:	Energy performance preference
318
319		Read/write an 8-bit integer from/to this file. This file
320		represents a range of values from 0 (performance preference) to
321		0xFF (energy efficiency preference) that influences the rate of
322		performance increase/decrease and the result of the hardware's
323		energy efficiency and performance optimization policies.
324
325		Writing to this file only has meaning when Autonomous Selection is
326		enabled.
327
328		This file is only present if the cppc-cpufreq driver is in use.
329
330What:		/sys/devices/system/cpu/cpuX/cpufreq/perf_limited
331Date:		February 2026
332Contact:	linux-pm@vger.kernel.org
333Description:	Performance Limited
334
335		Read to check if platform throttling (thermal/power/current
336		limits) caused delivered performance to fall below the
337		requested level. A non-zero value indicates throttling occurred.
338		If firmware provides the register but Linux cannot access it
339		safely, reads return the literal string "<unsupported>".
340
341		Write 0x3 to clear both bits. Selectively clearing one bit is
342		not supported because ACPI does not define the effect of writing
343		one to these status bits and an interlocked read-modify-write is
344		not generally available.
345		Writing 0x3 returns -EOPNOTSUPP when firmware describes the
346		register using an access which Linux cannot clear safely; reads
347		may remain available in that case.
348
349		The platform sets these bits; OSPM can only clear them.
350
351		This file is only present if the cppc-cpufreq driver is in use.
352
353What:		/sys/devices/system/cpu/cpu*/cache/index3/cache_disable_{0,1}
354Date:		August 2008
355KernelVersion:	2.6.27
356Contact:	Linux kernel mailing list <linux-kernel@vger.kernel.org>
357Description:	Disable L3 cache indices
358
359		These files exist in every CPU's cache/index3 directory. Each
360		cache_disable_{0,1} file corresponds to one disable slot which
361		can be used to disable a cache index. Reading from these files
362		on a processor with this functionality will return the currently
363		disabled index for that node. There is one L3 structure per
364		node, or per internal node on MCM machines. Writing a valid
365		index to one of these files will cause the specified cache
366		index to be disabled.
367
368		All AMD processors with L3 caches provide this functionality.
369		For details, see BKDGs at
370                https://www.amd.com/en/support/tech-docs?keyword=bios+kernel
371
372
373What:		/sys/devices/system/cpu/cpufreq/boost
374Date:		August 2012
375Contact:	Linux kernel mailing list <linux-kernel@vger.kernel.org>
376Description:	Processor frequency boosting control
377
378		This switch controls the boost setting for the whole system.
379		Boosting allows the CPU and the firmware to run at a frequency
380		beyond its nominal limit.
381
382		More details can be found in
383		Documentation/admin-guide/pm/cpufreq.rst
384
385
386What:		/sys/devices/system/cpu/cpuX/crash_notes
387		/sys/devices/system/cpu/cpuX/crash_notes_size
388Date:		April 2013
389Contact:	kexec@lists.infradead.org
390Description:	address and size of the percpu note.
391
392		crash_notes: the physical address of the memory that holds the
393		note of cpuX.
394
395		crash_notes_size: size of the note of cpuX.
396
397
398What:		/sys/devices/system/cpu/intel_pstate/max_perf_pct
399		/sys/devices/system/cpu/intel_pstate/min_perf_pct
400		/sys/devices/system/cpu/intel_pstate/no_turbo
401Date:		February 2013
402Contact:	linux-pm@vger.kernel.org
403Description:	Parameters for the Intel P-state driver
404
405		Logic for selecting the current P-state in Intel
406		Sandybridge+ processors. The three knobs control
407		limits for the P-state that will be requested by the
408		driver.
409
410		max_perf_pct: limits the maximum P state that will be requested by
411		the driver stated as a percentage of the available performance.
412
413		min_perf_pct: limits the minimum P state that will be requested by
414		the driver stated as a percentage of the available performance.
415
416		no_turbo: limits the driver to selecting P states below the turbo
417		frequency range.
418
419		More details can be found in
420		Documentation/admin-guide/pm/intel_pstate.rst
421
422What:		/sys/devices/system/cpu/cpu*/cache/index*/<set_of_attributes_mentioned_below>
423Date:		July 2014(documented, existed before August 2008)
424Contact:	Sudeep Holla <sudeep.holla@arm.com>
425		Linux kernel mailing list <linux-kernel@vger.kernel.org>
426Description:	Parameters for the CPU cache attributes
427
428		allocation_policy:
429			- WriteAllocate:
430					allocate a memory location to a cache line
431					on a cache miss because of a write
432			- ReadAllocate:
433					allocate a memory location to a cache line
434					on a cache miss because of a read
435			- ReadWriteAllocate:
436					both writeallocate and readallocate
437
438		coherency_line_size:
439				     the minimum amount of data in bytes that gets
440				     transferred from memory to cache
441
442		level:
443			the cache hierarchy in the multi-level cache configuration
444
445		number_of_sets:
446				total number of sets in the cache, a set is a
447				collection of cache lines with the same cache index
448
449		physical_line_partition:
450				number of physical cache line per cache tag
451
452		shared_cpu_list:
453				the list of logical cpus sharing the cache
454
455		shared_cpu_map:
456				logical cpu mask containing the list of cpus sharing
457				the cache
458
459		size:
460			the total cache size in kB
461
462		type:
463			- Instruction: cache that only holds instructions
464			- Data: cache that only caches data
465			- Unified: cache that holds both data and instructions
466
467		ways_of_associativity:
468			degree of freedom in placing a particular block
469			of memory in the cache
470
471		write_policy:
472			- WriteThrough:
473					data is written to both the cache line
474					and to the block in the lower-level memory
475			- WriteBack:
476				     data is written only to the cache line and
477				     the modified cache line is written to main
478				     memory only when it is replaced
479
480
481What:		/sys/devices/system/cpu/cpu*/cache/index*/id
482Date:		September 2016
483Contact:	Linux kernel mailing list <linux-kernel@vger.kernel.org>
484Description:	Cache id
485
486		The id provides a unique number for a specific instance of
487		a cache of a particular type. E.g. there may be a level
488		3 unified cache on each socket in a server and we may
489		assign them ids 0, 1, 2, ...
490
491		Note that id value can be non-contiguous. E.g. level 1
492		caches typically exist per core, but there may not be a
493		power of two cores on a socket, so these caches may be
494		numbered 0, 1, 2, 3, 4, 5, 8, 9, 10, ...
495
496What:		/sys/devices/system/cpu/cpuX/cpufreq/throttle_stats
497		/sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/turbo_stat
498		/sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/sub_turbo_stat
499		/sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/unthrottle
500		/sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/powercap
501		/sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/overtemp
502		/sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/supply_fault
503		/sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/overcurrent
504		/sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/occ_reset
505Date:		March 2016
506Contact:	Linux kernel mailing list <linux-kernel@vger.kernel.org>
507		Linux for PowerPC mailing list <linuxppc-dev@lists.ozlabs.org>
508Description:	POWERNV CPUFreq driver's frequency throttle stats directory and
509		attributes
510
511		'cpuX/cpufreq/throttle_stats' directory contains the CPU frequency
512		throttle stat attributes for the chip. The throttle stats of a cpu
513		is common across all the cpus belonging to a chip. Below are the
514		throttle attributes exported in the 'throttle_stats' directory:
515
516		- turbo_stat : This file gives the total number of times the max
517		  frequency is throttled to lower frequency in turbo (at and above
518		  nominal frequency) range of frequencies.
519
520		- sub_turbo_stat : This file gives the total number of times the
521		  max frequency is throttled to lower frequency in sub-turbo(below
522		  nominal frequency) range of frequencies.
523
524		- unthrottle : This file gives the total number of times the max
525		  frequency is unthrottled after being throttled.
526
527		- powercap : This file gives the total number of times the max
528		  frequency is throttled due to 'Power Capping'.
529
530		- overtemp : This file gives the total number of times the max
531		  frequency is throttled due to 'CPU Over Temperature'.
532
533		- supply_fault : This file gives the total number of times the
534		  max frequency is throttled due to 'Power Supply Failure'.
535
536		- overcurrent : This file gives the total number of times the
537		  max frequency is throttled due to 'Overcurrent'.
538
539		- occ_reset : This file gives the total number of times the max
540		  frequency is throttled due to 'OCC Reset'.
541
542		The sysfs attributes representing different throttle reasons like
543		powercap, overtemp, supply_fault, overcurrent and occ_reset map to
544		the reasons provided by OCC firmware for throttling the frequency.
545
546What:		/sys/devices/system/cpu/cpufreq/policyX/throttle_stats
547		/sys/devices/system/cpu/cpufreq/policyX/throttle_stats/turbo_stat
548		/sys/devices/system/cpu/cpufreq/policyX/throttle_stats/sub_turbo_stat
549		/sys/devices/system/cpu/cpufreq/policyX/throttle_stats/unthrottle
550		/sys/devices/system/cpu/cpufreq/policyX/throttle_stats/powercap
551		/sys/devices/system/cpu/cpufreq/policyX/throttle_stats/overtemp
552		/sys/devices/system/cpu/cpufreq/policyX/throttle_stats/supply_fault
553		/sys/devices/system/cpu/cpufreq/policyX/throttle_stats/overcurrent
554		/sys/devices/system/cpu/cpufreq/policyX/throttle_stats/occ_reset
555Date:		March 2016
556Contact:	Linux kernel mailing list <linux-kernel@vger.kernel.org>
557		Linux for PowerPC mailing list <linuxppc-dev@lists.ozlabs.org>
558Description:	POWERNV CPUFreq driver's frequency throttle stats directory and
559		attributes
560
561		'policyX/throttle_stats' directory and all the attributes are same as
562		the /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats directory and
563		attributes which give the frequency throttle information of the chip.
564
565What:		/sys/devices/system/cpu/cpuX/regs/
566		/sys/devices/system/cpu/cpuX/regs/identification/
567		/sys/devices/system/cpu/cpuX/regs/identification/midr_el1
568		/sys/devices/system/cpu/cpuX/regs/identification/revidr_el1
569		/sys/devices/system/cpu/cpuX/regs/identification/aidr_el1
570		/sys/devices/system/cpu/cpuX/regs/identification/smidr_el1
571Date:		June 2016
572Contact:	Linux ARM Kernel Mailing list <linux-arm-kernel@lists.infradead.org>
573Description:	AArch64 CPU registers
574
575		'identification' directory exposes the CPU ID registers for
576		identifying model and revision of the CPU and SMCU.
577
578What:		/sys/devices/system/cpu/aarch32_el0
579Date:		May 2021
580Contact:	Linux ARM Kernel Mailing list <linux-arm-kernel@lists.infradead.org>
581Description:	Identifies the subset of CPUs in the system that can execute
582		AArch32 (32-bit ARM) applications. If present, the same format as
583		/sys/devices/system/cpu/{offline,online,possible,present} is used.
584		If absent, then all or none of the CPUs can execute AArch32
585		applications and execve() will behave accordingly.
586
587What:		/sys/devices/system/cpu/cpuX/cpu_capacity
588Date:		December 2016
589Contact:	Linux kernel mailing list <linux-kernel@vger.kernel.org>
590Description:	information about CPUs heterogeneity.
591
592		cpu_capacity: capacity of cpuX.
593
594What:		/sys/devices/system/cpu/vulnerabilities
595		/sys/devices/system/cpu/vulnerabilities/gather_data_sampling
596		/sys/devices/system/cpu/vulnerabilities/indirect_target_selection
597		/sys/devices/system/cpu/vulnerabilities/itlb_multihit
598		/sys/devices/system/cpu/vulnerabilities/l1tf
599		/sys/devices/system/cpu/vulnerabilities/mds
600		/sys/devices/system/cpu/vulnerabilities/meltdown
601		/sys/devices/system/cpu/vulnerabilities/mmio_stale_data
602		/sys/devices/system/cpu/vulnerabilities/old_microcode
603		/sys/devices/system/cpu/vulnerabilities/reg_file_data_sampling
604		/sys/devices/system/cpu/vulnerabilities/retbleed
605		/sys/devices/system/cpu/vulnerabilities/spec_store_bypass
606		/sys/devices/system/cpu/vulnerabilities/spectre_v1
607		/sys/devices/system/cpu/vulnerabilities/spectre_v2
608		/sys/devices/system/cpu/vulnerabilities/srbds
609		/sys/devices/system/cpu/vulnerabilities/tsa
610		/sys/devices/system/cpu/vulnerabilities/tsx_async_abort
611		/sys/devices/system/cpu/vulnerabilities/vmscape
612Date:		January 2018
613Contact:	Linux kernel mailing list <linux-kernel@vger.kernel.org>
614Description:	Information about CPU vulnerabilities
615
616		The files are named after the code names of CPU
617		vulnerabilities. The output of those files reflects the
618		state of the CPUs in the system. Possible output values:
619
620		================  ==============================================
621		"Not affected"	  CPU is not affected by the vulnerability
622		"Vulnerable"	  CPU is affected and no mitigation in effect
623		"Mitigation: $M"  CPU is affected and mitigation $M is in effect
624		================  ==============================================
625
626		See also: Documentation/admin-guide/hw-vuln/index.rst
627
628What:		/sys/devices/system/cpu/smt
629		/sys/devices/system/cpu/smt/active
630		/sys/devices/system/cpu/smt/control
631Date:		June 2018
632Contact:	Linux kernel mailing list <linux-kernel@vger.kernel.org>
633Description:	Control Symmetric Multi Threading (SMT)
634
635		active:  Tells whether SMT is active (enabled and siblings online)
636
637		control: Read/write interface to control SMT. Possible
638			 values:
639
640			 ================ =========================================
641			 "on"		  SMT is enabled
642			 "off"		  SMT is disabled
643			 "<N>"		  SMT is enabled with N threads per core.
644			 "forceoff"	  SMT is force disabled. Cannot be changed.
645			 "notsupported"   SMT is not supported by the CPU
646			 "notimplemented" SMT runtime toggling is not
647					  implemented for the architecture
648			 ================ =========================================
649
650			 If control status is "forceoff" or "notsupported" writes
651			 are rejected. Note that enabling SMT on PowerPC skips
652			 offline cores.
653
654What:		/sys/devices/system/cpu/cpuX/power/energy_perf_bias
655Date:		March 2019
656Contact:	linux-pm@vger.kernel.org
657Description:	Intel Energy and Performance Bias Hint (EPB)
658
659		EPB for the given CPU in a sliding scale 0 - 15, where a value
660		of 0 corresponds to a hint preference for highest performance
661		and a value of 15 corresponds to the maximum energy savings.
662
663		In order to change the EPB value for the CPU, write either
664		a number in the 0 - 15 sliding scale above, or one of the
665		strings: "performance", "balance-performance", "normal",
666		"balance-power", "power" (that represent values reflected by
667		their meaning), to this attribute.
668
669		This attribute is present for all online CPUs supporting the
670		Intel EPB feature.
671
672What:		/sys/devices/system/cpu/umwait_control
673		/sys/devices/system/cpu/umwait_control/enable_c02
674		/sys/devices/system/cpu/umwait_control/max_time
675Date:		May 2019
676Contact:	Linux kernel mailing list <linux-kernel@vger.kernel.org>
677Description:	Umwait control
678
679		enable_c02: Read/write interface to control umwait C0.2 state
680			Read returns C0.2 state status:
681				0: C0.2 is disabled
682				1: C0.2 is enabled
683
684			Write 'y' or '1'  or 'on' to enable C0.2 state.
685			Write 'n' or '0'  or 'off' to disable C0.2 state.
686
687			The interface is case insensitive.
688
689		max_time: Read/write interface to control umwait maximum time
690			  in TSC-quanta that the CPU can reside in either C0.1
691			  or C0.2 state. The time is an unsigned 32-bit number.
692			  Note that a value of zero means there is no limit.
693			  Low order two bits must be zero.
694
695What:		/sys/devices/system/cpu/sev
696		/sys/devices/system/cpu/sev/sev_status
697		/sys/devices/system/cpu/sev/vmpl
698Date:		May 2024
699Contact:	Linux kernel mailing list <linux-kernel@vger.kernel.org>
700Description:	Secure Encrypted Virtualization (SEV) information
701
702		This directory is only present when running as an SEV guest.
703
704		sev_status: Reports the value of the SEV_STATUS MSR which
705			    enumerates the enabled features of an SEV
706			    environment.
707
708		vmpl: Reports the Virtual Machine Privilege Level (VMPL) at which
709		      the SEV-SNP guest is running. This file is only present
710		      when running as an SEV-SNP guest.
711
712
713What:		/sys/devices/system/cpu/svm
714Date:		August 2019
715Contact:	Linux kernel mailing list <linux-kernel@vger.kernel.org>
716		Linux for PowerPC mailing list <linuxppc-dev@lists.ozlabs.org>
717Description:	Secure Virtual Machine
718
719		If 1, it means the system is using the Protected Execution
720		Facility in POWER9 and newer processors. i.e., it is a Secure
721		Virtual Machine.
722
723What:		/sys/devices/system/cpu/cpuX/purr
724Date:		Apr 2005
725Contact:	Linux for PowerPC mailing list <linuxppc-dev@lists.ozlabs.org>
726Description:	PURR ticks for this CPU since the system boot.
727
728		The Processor Utilization Resources Register (PURR) is
729		a 64-bit counter which provides an estimate of the
730		resources used by the CPU thread. The contents of this
731		register increases monotonically. This sysfs interface
732		exposes the number of PURR ticks for cpuX.
733
734What: 		/sys/devices/system/cpu/cpuX/spurr
735Date:		Dec 2006
736Contact:	Linux for PowerPC mailing list <linuxppc-dev@lists.ozlabs.org>
737Description:	SPURR ticks for this CPU since the system boot.
738
739		The Scaled Processor Utilization Resources Register
740		(SPURR) is a 64-bit counter that provides a frequency
741		invariant estimate of the resources used by the CPU
742		thread. The contents of this register increases
743		monotonically. This sysfs interface exposes the number
744		of SPURR ticks for cpuX.
745
746What: 		/sys/devices/system/cpu/cpuX/idle_purr
747Date:		Apr 2020
748Contact:	Linux for PowerPC mailing list <linuxppc-dev@lists.ozlabs.org>
749Description:	PURR ticks for cpuX when it was idle.
750
751		This sysfs interface exposes the number of PURR ticks
752		for cpuX when it was idle.
753
754What: 		/sys/devices/system/cpu/cpuX/idle_spurr
755Date:		Apr 2020
756Contact:	Linux for PowerPC mailing list <linuxppc-dev@lists.ozlabs.org>
757Description:	SPURR ticks for cpuX when it was idle.
758
759		This sysfs interface exposes the number of SPURR ticks
760		for cpuX when it was idle.
761
762What: 		/sys/devices/system/cpu/cpuX/mte_tcf_preferred
763Date:		July 2021
764Contact:	Linux ARM Kernel Mailing list <linux-arm-kernel@lists.infradead.org>
765Description:	Preferred MTE tag checking mode
766
767		When a user program specifies more than one MTE tag checking
768		mode, this sysfs node is used to specify which mode should
769		be preferred when scheduling a task on that CPU. Possible
770		values:
771
772		================  ==============================================
773		"sync"	  	  Prefer synchronous mode
774		"asymm"	  	  Prefer asymmetric mode
775		"async"	  	  Prefer asynchronous mode
776		================  ==============================================
777
778		See also: Documentation/arch/arm64/memory-tagging-extension.rst
779
780What:		/sys/devices/system/cpu/nohz_full
781Date:		Apr 2015
782Contact:	Linux kernel mailing list <linux-kernel@vger.kernel.org>
783Description:
784		(RO) the list of CPUs that are in nohz_full mode.
785		These CPUs are set by boot parameter "nohz_full=".
786
787What:		/sys/devices/system/cpu/isolated
788Date:		Apr 2015
789Contact:	Linux kernel mailing list <linux-kernel@vger.kernel.org>
790Description:
791		(RO) the list of CPUs that are isolated and don't
792		participate in load balancing. These CPUs are set by
793		boot parameter "isolcpus=".
794
795What:		/sys/devices/system/cpu/housekeeping
796Date:		Oct 2025
797Contact:	Linux kernel mailing list <linux-kernel@vger.kernel.org>
798Description:
799		(RO) the list of logical CPUs that are designated by the kernel as
800		"housekeeping". Each CPU are responsible for handling essential
801		system-wide background tasks, including RCU callbacks, delayed
802		timer callbacks, and unbound workqueues, minimizing scheduling
803		jitter on low-latency, isolated CPUs. These CPUs are set when boot
804		parameter "isolcpus=nohz" or "nohz_full=" is specified.
805
806What:		/sys/devices/system/cpu/crash_hotplug
807Date:		Aug 2023
808Contact:	Linux kernel mailing list <linux-kernel@vger.kernel.org>
809Description:
810		(RO) indicates whether or not the kernel updates relevant kexec
811		segments on memory hot un/plug and/or on/offline events, avoiding the
812		need to reload kdump kernel.
813
814What:		/sys/devices/system/cpu/enabled
815Date:		Nov 2022
816Contact:	Linux kernel mailing list <linux-kernel@vger.kernel.org>
817Description:
818		(RO) the list of CPUs that can be brought online.
819
820What:		/sys/devices/system/cpu/preferred
821Date:		Sep 2026
822Contact:	Linux kernel mailing list <linux-kernel@vger.kernel.org>
823Description:
824		(RO) the list of preferred CPUs applicable in
825		paravirtualized environments.
826
827		The steal governor driver dynamically adjusts this mask
828		based on observed steal time. Scheduling tasks on
829		CPUs outside of this list may lead to performance
830		degradations due to underlying physical CPU contention.
831
832		See Documentation/scheduler/sched-paravirt.rst for more details.
833