How to Read CPU Flags From Cpuinfo

Yahya Irmak Feb 02, 2024
How to Read CPU Flags From Cpuinfo

This article will explain how to read cpuinfo information in Linux. Later, we will examine what CPU flags are and their meanings.

Read cpuinfo in Linux

The /proc/cpuinfo file contains detailed information about the CPUs in the computer. Use the following command to read the contents of the file.

cat /proc/cpuinfo

cpuinfo

Here, we can see,

  • Number of processors,
  • CPU vendor, family, model name,
  • The number of cores the CPU has,
  • Cache, TLB, clflush and address sizes,
  • Many flags and other information.

In the rest of the article, we will explain what the most common of these flags mean. For detailed information about all flags, see arch/x86/include/asm/cpufeature.h.

Most Common Flags in /proc/cpuinfo

A CPU can have hundreds of features that vary from model to model. Here, we will include the definitions of the most common flags as described in the official document.

AMD-defined CPU Features

Flag Description
SYSCALL SYSCALL/SYSRET
MP MP Capable
NX Execute Disable
MMXEXT AMD MMX extensions
FXSR_OPT FXSAVE/FXRSTOR optimizations
GBPAGES pdpe1gb GB pages
LM Long Mode (x86-64)

Extended AMD Flags

Flag Description
LAHF_LM LAHF/SAHF in long mode
CMP_LEGACY If yes HyperThreading not valid
SVM Secure virtual machine
ABM Advanced bit manipulation
MISALIGNSSE Misaligned SSE mode
3DNOWPREFETCH 3DNow prefetch instructions
OSVW OS Visible Workaround
IBS Instruction Based Sampling
XOP extended AVX instructions
SKINIT SKINIT/STGI instructions
WDT Watchdog timer
LWP Light Weight Profiling
TCE translation cache extension
TBM trailing bit manipulations
TOPOEXT topology extensions CPUID leafs
PERFCTR_CORE core performance counter extensions
BPEXT data breakpoint extension

Intel-Defined CPU Features

Flag Description
FPU Onboard FPU
VME Virtual Mode Extensions
DE Debugging Extensions
PSE Page Size Extensions
TSC Time Stamp Counter
MSR Model-Specific Registers
PAE Physical Address Extensions
MCE Machine Check Exception
MTRR Memory Type Range Registers
PGE Page Global Enable
MCA Machine Check Architecture
PAT Page Attribute Table
MMX Multimedia Extensions
PBE Pending Break Enable
DTES64 64-bit Debug Store
MWAIT monitor Monitor/Mwait support
VMX Hardware virtualization
SMX Safer mode
TM2 Thermal Monitor 2
XTPR Send Task Priority Messages
PDCM Performance Capabilities
PCID Process Context Identifiers
DCA Direct Cache Access
HYPERVISOR Running on a hypervisor

Virtualization Flags

Flag Description
EPT Intel Extended Page Table
VPID Intel Virtual Processor ID
NPT AMD Nested Page Table support
LBRV AMD LBR Virtualization support
NRIPS nrip_save AMD SVM next_rip save
TSCRATEMSR tsc_scale AMD TSC scaling support
VMCBCLEAN vmcb_clean AMD VMCB clean bits support
FLUSHBYASID AMD flush-by-ASID support
DECODEASSISTS AMD Decode Assists support
PAUSEFILTER AMD filtered pause intercept
PFTHRESHOLD AMD pause filter threshold
VMMCALL Prefer vmmcall to vmcall

Auxiliary Flags

Flag Description
IDA Intel Dynamic Acceleration
ARAT Always Running APIC Timer
CPB AMD Core Performance Boost
EPB IA32_ENERGY_PERF_BIAS support
PLN Intel Power Limit Notification
PTS Intel Package Thermal Status
DTHERM Digital Thermal Sensor
PROC_FEEDBACK AMD ProcFeedbackInterface
INTEL_PT Intel Processor Trace

Detected Bug Flags

Flag Description
F00F Intel F00F
FDIV FPU FDIV
COMA Cyrix 6x86 coma
AMD_TLB_MMATCH “tlb_mmatch” AMD Erratum 383
AMD_APIC_C1E “apic_c1e” AMD Erratum 400
11AP Bad local APIC aka 11AP
FXSAVE_LEAK FXSAVE leaks FOP/FIP/FOP
CLFLUSH_MONITOR AAI65, CLFLUSH required before MONITOR
SYSRET_SS_ATTRS SYSRET doesn’t fix up SS attrs
Author: Yahya Irmak
Yahya Irmak avatar Yahya Irmak avatar

Yahya Irmak has experience in full stack technologies such as Java, Spring Boot, JavaScript, CSS, HTML.

LinkedIn