I have encountered something strange with some CPUs I bought for my home server. These are - allegedly - Xeon X5672 (3.2GHz). So it should be a Westmere (Model 6 Family 44 Stepping 2).

According to https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/x86-Options.html#x86-Options and other pages, this CPU should have AES and CLMUL (see also https://en.wikipedia.org/wiki/CLMUL_instruction_set)

However, when doing a cat /proc/cpuinfo there is no trace of AES and CLMUL

processor       : 15
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           X5672  @ 3.20GHz
stepping        : 2
microcode       : 0x14
cpu MHz         : 3199.850
cache size      : 12288 KB
physical id     : 1
siblings        : 8
core id         : 10
cpu cores       : 4
apicid          : 53
initial apicid  : 53
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 popcn
t lahf_lm epb tpr_shadow vnmi flexpriority ept vpid dtherm ida arat
bugs            :
bogomips        : 6399.82
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

So either /proc/cpuinfo is wrong, or I have been sold a fake Westmere (which seems to be a Nehalem then). I would like to find out with some definitive CPU identification tool running under Linux (I know there is CPU-Z, but that's Android/Win only).

I had a look at lshw, dmidecode and others, and all keep basically telling me the same I see in /proc/cpuinfo, so therefore my question for some really low-level diagnostics software to "find out the truth".

How would you approach this?


Thanks Daniel for suggesting cpuid. Unfortunately CPUID too says:

  PNI/SSE3: Prescott New Instructions     = true
  PCLMULDQ instruction                    = false
  AES instruction                         = false
  • You could try the cpuid tool. What the kernel shows as “flags” may be subject to conditions. – Daniel B May 12 '17 at 13:38

Well, that microcode is outdated. Install a BIOS update, it might restore the lost functionality. Or not, according to a FAQ in Supermicro motherboards knowledge base, Intel disabled AES on some/all? Westmere processors with a microcode update, for unknown reasons. As usual, ARK was not updated if that's the case.

  • latest widely available BIOS has up-to-date ACM and microcode 0x1A for Westmere. Latest known microcode for Westmere is 0x1D. – anonymous May 12 '17 at 18:14
  • Hmm, there is an MSR the BIOS must set to enable AES-NI, due to export restrictions, even in microcode revisions/Westmere processor models where AES-NI is supported. Ensure your BIOS is doing so: ask the motherboard manufacturer about it... Try reading MSR 0x13c. If its value is "3", AES-NI will be disabled. If it is "1" AND you have suitable microcode, it will be enabled. Note: this MSR is not valid outside westmere. – anonymous May 12 '17 at 18:45
  • Thanks anonymous. CPUs are in fact running on a Supermicro mainboard and Supermicro support says to try the latest BIOS version, so I will try that. – Perlator May 13 '17 at 10:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.