| .\" 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 (date) "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. |