summaryrefslogtreecommitdiffstats
path: root/man/man4/cpuid.4
diff options
context:
space:
mode:
Diffstat (limited to 'man/man4/cpuid.4')
-rw-r--r--man/man4/cpuid.483
1 files changed, 83 insertions, 0 deletions
diff --git a/man/man4/cpuid.4 b/man/man4/cpuid.4
new file mode 100644
index 0000000..a09d87a
--- /dev/null
+++ b/man/man4/cpuid.4
@@ -0,0 +1,83 @@
+.\" Copyright (c) 2009 Intel Corporation, Author Andi Kleen
+.\" Description based on comments in arch/x86/kernel/cpuid.c
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH cpuid 4 2024-05-02 "Linux man-pages (unreleased)"
+.SH NAME
+cpuid \- x86 CPUID access device
+.SH DESCRIPTION
+CPUID provides an interface for querying information about the x86 CPU.
+.P
+This device is accessed by
+.BR lseek (2)
+or
+.BR pread (2)
+to the appropriate CPUID level and reading in chunks of 16 bytes.
+A larger read size means multiple reads of consecutive levels.
+.P
+The lower 32 bits of the file position is used as the incoming
+.IR %eax ,
+and the upper 32 bits of the file position as the incoming
+.IR %ecx ,
+the latter is intended for "counting"
+.I eax
+levels like
+.IR eax=4 .
+.P
+This driver uses
+.IR /dev/cpu/CPUNUM/cpuid ,
+where
+.I CPUNUM
+is the minor number,
+and on an SMP box will direct the access to CPU
+.I CPUNUM
+as listed in
+.IR /proc/cpuinfo .
+.P
+This file is protected so that it can be read only by the user
+.IR root ,
+or members of the group
+.IR root .
+.SH NOTES
+The CPUID instruction can be directly executed by a program
+using inline assembler.
+However this device allows convenient
+access to all CPUs without changing process affinity.
+.P
+Most of the information in
+.I cpuid
+is reported by the kernel in cooked form either in
+.I /proc/cpuinfo
+or through subdirectories in
+.IR /sys/devices/system/cpu .
+Direct CPUID access through this device should only
+be used in exceptional cases.
+.P
+The
+.I cpuid
+driver is not auto-loaded.
+On modular kernels you might need to use the following command
+to load it explicitly before use:
+.P
+.in +4n
+.EX
+$ modprobe cpuid
+.EE
+.in
+.P
+There is no support for CPUID functions that require additional
+input registers.
+.P
+Early i486 CPUs do not support the CPUID instruction;
+.\" arch/x86/kernel/cpuid.c cpuid_open()
+opening this device for those CPUs fails with EIO.
+.SH SEE ALSO
+.BR cpuid (1)
+.P
+Intel Corporation, Intel 64 and IA-32 Architectures
+Software Developer's Manual Volume 2A:
+Instruction Set Reference, A-M, 3-180 CPUID reference.
+.P
+Intel Corporation, Intel Processor Identification and
+the CPUID Instruction, Application note 485.