Bug 673443

Summary: /proc/cpuinfo does not announce several flags
Product: Red Hat Enterprise Linux 5 Reporter: Gerrit Slomma <gerrit.slomma>
Component: kernelAssignee: Prarit Bhargava <prarit>
Status: CLOSED WONTFIX QA Contact: Red Hat Kernel QE team <kernel-qe>
Severity: low Docs Contact:
Priority: unspecified    
Version: 5.6CC: jarod
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-11-04 16:52:38 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Gerrit Slomma 2011-01-28 09:00:01 UTC
Description of problem:

/proc/cpuinfo does not announce several flags

Version-Release number of selected component (if applicable):

2.6.18-238.1.1.el5
2.6.18-194.11.4.el5
2.6.18-194.el5

How reproducible:

everytime

Steps to Reproduce:
1. build program to query cpu-flags
2. cat /proc/cpuinfo
3. compare returned flags
  
Actual results:

> uname -r
2.6.18-194.11.4.el5

> grep "model name" /proc/cpuinfo
model name      : Intel(R) Xeon(R) CPU           E5405  @ 2.00GHz
model name      : Intel(R) Xeon(R) CPU           E5405  @ 2.00GHz
model name      : Intel(R) Xeon(R) CPU           E5405  @ 2.00GHz
model name      : Intel(R) Xeon(R) CPU           E5405  @ 2.00GHz

> grep "flags" /proc/cpuinfo
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 syscall nx lm constant_tsc pni monitor ds_cpl vmx tm2 ssse3 cx16 xtpr sse4_1 lahf_lm
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 syscall nx lm constant_tsc pni monitor ds_cpl vmx tm2 ssse3 cx16 xtpr sse4_1 lahf_lm
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 syscall nx lm constant_tsc pni monitor ds_cpl vmx tm2 ssse3 cx16 xtpr sse4_1 lahf_lm
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 syscall nx lm constant_tsc pni monitor ds_cpl vmx tm2 ssse3 cx16 xtpr sse4_1 lahf_lm

> ./cpu_flags
SSE3:           true
PCLMULQD:       false
DTES64:         true
MONITOR/MWAIT:  true
SSE4_1:         true
SSE4_2:         false



> uname -r
2.6.18-238.1.1.el5

> grep "model name" /proc/cpuinfo
model name      : Intel(R) Xeon(R) CPU           E5420  @ 2.50GHz
model name      : Intel(R) Xeon(R) CPU           E5420  @ 2.50GHz
model name      : Intel(R) Xeon(R) CPU           E5420  @ 2.50GHz
model name      : Intel(R) Xeon(R) CPU           E5420  @ 2.50GHz
model name      : Intel(R) Xeon(R) CPU           E5420  @ 2.50GHz
model name      : Intel(R) Xeon(R) CPU           E5420  @ 2.50GHz
model name      : Intel(R) Xeon(R) CPU           E5420  @ 2.50GHz
model name      : Intel(R) Xeon(R) CPU           E5420  @ 2.50GHz

> /tmp/cpu_flags
SSE3:           true
PCLMULQD:       false
DTES64:         true
MONITOR/MWAIT:  true
SSE4_1:         true
SSE4_2:         false



> uname -r
2.6.18-194.el5

> grep "model name" /proc/cpuinfo
model name      : Intel(R) Xeon(R) CPU           L5640  @ 2.27GHz
model name      : Intel(R) Xeon(R) CPU           L5640  @ 2.27GHz
model name      : Intel(R) Xeon(R) CPU           L5640  @ 2.27GHz
model name      : Intel(R) Xeon(R) CPU           L5640  @ 2.27GHz
model name      : Intel(R) Xeon(R) CPU           L5640  @ 2.27GHz
model name      : Intel(R) Xeon(R) CPU           L5640  @ 2.27GHz
model name      : Intel(R) Xeon(R) CPU           L5640  @ 2.27GHz
model name      : Intel(R) Xeon(R) CPU           L5640  @ 2.27GHz
model name      : Intel(R) Xeon(R) CPU           L5640  @ 2.27GHz
model name      : Intel(R) Xeon(R) CPU           L5640  @ 2.27GHz
model name      : Intel(R) Xeon(R) CPU           L5640  @ 2.27GHz
model name      : Intel(R) Xeon(R) CPU           L5640  @ 2.27GHz
model name      : Intel(R) Xeon(R) CPU           L5640  @ 2.27GHz
model name      : Intel(R) Xeon(R) CPU           L5640  @ 2.27GHz
model name      : Intel(R) Xeon(R) CPU           L5640  @ 2.27GHz
model name      : Intel(R) Xeon(R) CPU           L5640  @ 2.27GHz
model name      : Intel(R) Xeon(R) CPU           L5640  @ 2.27GHz
model name      : Intel(R) Xeon(R) CPU           L5640  @ 2.27GHz
model name      : Intel(R) Xeon(R) CPU           L5640  @ 2.27GHz
model name      : Intel(R) Xeon(R) CPU           L5640  @ 2.27GHz
model name      : Intel(R) Xeon(R) CPU           L5640  @ 2.27GHz
model name      : Intel(R) Xeon(R) CPU           L5640  @ 2.27GHz
model name      : Intel(R) Xeon(R) CPU           L5640  @ 2.27GHz
model name      : Intel(R) Xeon(R) CPU           L5640  @ 2.27GHz

grep flags /proc/cpuinfo
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 syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
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 syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
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 syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
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 syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
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 syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
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 syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
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 syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
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 syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
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 syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
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 syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
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 syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
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 syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
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 syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
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 syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
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 syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
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 syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
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 syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
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 syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
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 syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
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 syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
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 syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
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 syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
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 syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm
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 syscall nx pdpe1gb rdtscp lm constant_tsc ida nonstop_tsc arat pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr sse4_1 sse4_2 popcnt lahf_lm

/tmp/cpu_flags
SSE3:           true
PCLMULQD:       true
DTES64:         true
MONITOR/MWAIT:  true
SSE4_1:         true
SSE4_2:         true

On Xeon E5405.18-194.11.4.el5 DTES64 is supported but not reported via flags
On Xeon E5420.18-238.1.1.el5 DTES64 is supported but not reported via flags
On Xeon L5640.18-194.el5 DTES64 and PCLMULQD is supported but nor reported via flags

Expected results:

On Xeon E5405 at least DTES64 should be reported via flags
On Xeon E5420 at least DTES64 should be reported via flags
On Xeon L5640 at least DTES64 and PCLMULQD should be reported via flags

Additional info:

program-source

#include <stdio.h>

#define cpuid(func,ax,bx,cx,dx)\
        __asm__ __volatile__ ("cpuid":\
        "=a" (ax), "=b" (bx), "=c" (cx), "=d" (dx) : "a" (func));

int main(int argc, char *argv[]){
        int a,b,c,d;

        cpuid(1,a,b,c,d);
        printf("SSE3:\t\t%s\n", (c&(1<<0))?"true":"false");
        printf("PCLMULQD:\t%s\n", (c&(1<<1))?"true":"false");
        printf("DTES64:\t\t%s\n", (c&(1<<2))?"true":"false");
        printf("MONITOR/MWAIT:\t%s\n", (c&(1<<3))?"true":"false");
        printf("SSE4_1:\t\t%s\n", (c&(1<<19))?"true":"false");
        printf("SSE4_2:\t\t%s\n", (c&(1<<20))?"true":"false");

        return 0;
}

I did not check for all flags.

Comment 1 Prarit Bhargava 2013-11-04 16:52:38 UTC
This Bugzilla has been reviewed by Red Hat and is not planned on being
addressed in Red Hat Enterprise Linux 5, and therefore is being closed.
If this bug is critical to production systems, please contact your Red
Hat support representative and provide a sufficient business justification
in order to re-open it.