• Feng Tang's avatar
    tools/x86: Add a kcpuid tool to show raw CPU features · c6b2f240
    Feng Tang authored
    End users frequently want to know what features their processor
    supports, independent of what the kernel supports.
    
    /proc/cpuinfo is great. It is omnipresent and since it is provided by
    the kernel it is always as up to date as the kernel. But, it could be
    ambiguous about processor features which can be disabled by the kernel
    at boot-time or compile-time.
    
    There are some user space tools showing more raw features, but they are
    not bound with kernel, and go with distros. Many end users are still
    using old distros with new kernels (upgraded by themselves), and may
    not upgrade the distros only to get a newer tool.
    
    So here arise the need for a new tool, which
      * shows raw CPU features read from the CPUID instruction
      * will be easier to update compared to existing userspace
        tooling (perhaps distributed like perf)
      * inherits "modern" kernel development process, in contrast to some
        of the existing userspace CPUID tools which are still being developed
        without git and distributed in tarballs from non-https sites.
      * Can produce output consistent with /proc/cpuinfo to make comparison
        easier.
    
    The CPUID leaf definitions are kept in an .csv file which allows for
    updating only that file to add support for new feature leafs.
    
    This is based on prototype code from Borislav Petkov
    (http://sr71.net/~dave/intel/stupid-cpuid.c).
    
     [ bp:
       - Massage, add #define _GNU_SOURCE to fix implicit declaration of
         function ‘strcasestr' warning
       - remove superfluous newlines
       - fallback to cpuid.csv in the current dir if none found
       - fix typos
       - move comments over the lines instead of sideways. ]
    
    Originally-from: Borislav Petkov <bp@alien8.de>
    Suggested-by: default avatarDave Hansen <dave.hansen@intel.com>
    Suggested-by: default avatarBorislav Petkov <bp@alien8.de>
    Signed-off-by: default avatarFeng Tang <feng.tang@intel.com>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Link: https://lkml.kernel.org/r/1614928878-86075-1-git-send-email-feng.tang@intel.com
    c6b2f240
cpuid.csv 18.1 KB