| .\" 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. |
| |
| 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. |
| |
| 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 . |
| |
| 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 . |
| |
| 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. |
| |
| 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. |
| |
| 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: |
| |
| $ \fImodprobe cpuid\fP |
| |
| There is no support for CPUID functions that require additional |
| input registers. |
| |
| 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. |
| |
| Intel Corporation, Intel Processor Identification and |
| the CPUID Instruction, Application note 485. |