.\" Copyright (c) 2009 Intel Corporation, Author Andi Kleen
.\" Description based on comments in arch/x86/kernel/cpuid.c
.\"
.\" %%%LICENSE_START(VERBATIM)
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one.
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\" %%%LICENSE_END
.\"
.TH CPUID 4 2009-03-31 "Linux" "Linux Programmer's Manual"
.SH NAME
cpuid \- x86 CPUID access device
.SH DESCRIPTION
CPUID provides an interface for querying information about the x86 CPU.
.PP
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.
.PP
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 intended for "counting"
.I eax
levels like
.IR eax=4 .
.PP
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 .
.PP
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.
.PP
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.
.PP
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:
.PP
.in +4n
.EX
$ modprobe cpuid
.EE
.in
.PP
There is no support for CPUID functions that require additional
input registers.
.PP
Very old x86 CPUs don't support CPUID.
.SH SEE ALSO
Intel Corporation, Intel 64 and IA-32 Architectures
Software Developer's Manual Volume 2A:
Instruction Set Reference, A-M, 3-180 CPUID reference.
.PP
Intel Corporation, Intel Processor Identification and
the CPUID Instruction, Application note 485.
