Skip to content
  • Grzegorz Andrejczuk's avatar
    x86/elf: Add HWCAP2 to expose ring 3 MONITOR/MWAIT · 0274f955
    Grzegorz Andrejczuk authored
    
    
    Introduce ELF_HWCAP2 variable for x86 and reserve its bit 0 to expose the
    ring 3 MONITOR/MWAIT.
    
    HWCAP variables contain bitmasks which can be used by userspace
    applications to detect which instruction sets are supported by CPU.  On x86
    architecture information about CPU capabilities can be checked via CPUID
    instructions, unfortunately presence of ring 3 MONITOR/MWAIT feature cannot
    be checked this way. ELF_HWCAP cannot be used as well, because on x86 it is
    set to CPUID[1].EDX which means that all bits are reserved there.
    
    HWCAP2 approach was chosen because it reuses existing solution present
    in other architectures, so only minor modifications are required to the
    kernel and userspace applications. When ELF_HWCAP2 is defined
    kernel maps it to AT_HWCAP2 during the start of the application.
    This way the ring 3 MONITOR/MWAIT feature can be detected using getauxval()
    API in a simple and fast manner. ELF_HWCAP2 type is u32 to be consistent
    with x86 ELF_HWCAP type.
    
    Signed-off-by: default avatarGrzegorz Andrejczuk <grzegorz.andrejczuk@intel.com>
    Cc: Piotr.Luc@intel.com
    Cc: dave.hansen@linux.intel.com
    Link: http://lkml.kernel.org/r/1484918557-15481-3-git-send-email-grzegorz.andrejczuk@intel.com
    
    
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    0274f955