linux/arch/x86/include/uapi/asm
Grzegorz Andrejczuk 0274f9551e x86/elf: Add HWCAP2 to expose ring 3 MONITOR/MWAIT
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: Grzegorz 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: Thomas Gleixner <tglx@linutronix.de>
2017-02-04 08:51:09 +01:00
..
Kbuild perf kvm: Use defines of kvm events 2014-07-16 17:57:32 -03:00
a.out.h
auxvec.h
bitsperlong.h x86/headers/uapi: Fix __BITS_PER_LONG value for x32 builds 2015-10-02 09:43:21 +02:00
boot.h
bootparam.h x86/efi: Retrieve and assign Apple device properties 2016-11-13 08:23:16 +01:00
byteorder.h
debugreg.h
e820.h libnvdimm, e820: make CONFIG_X86_PMEM_LEGACY a tristate option 2015-08-19 00:34:34 -04:00
errno.h
fcntl.h
hw_breakpoint.h create non-empty arch/x86/include/uapi/asm/ files 2012-12-17 17:15:11 -08:00
hwcap2.h x86/elf: Add HWCAP2 to expose ring 3 MONITOR/MWAIT 2017-02-04 08:51:09 +01:00
hyperv.h drivers/hv: Move VMBus hypercall codes into Hyper-V UAPI header 2016-02-16 18:48:40 +01:00
ioctl.h
ioctls.h
ipcbuf.h
ist.h
kvm.h x86/kvm: Do not use BIT() in user-exported header 2016-05-09 16:38:54 +02:00
kvm_para.h x86/kvm: Support the vCPU preemption check 2016-11-22 12:48:08 +01:00
kvm_perf.h perf kvm: Use defines of kvm events 2014-07-16 17:57:32 -03:00
ldt.h x86/tls: Don't validate lm in set_thread_area() after all 2014-12-18 12:12:26 +01:00
mce.h x86/mce: Include the PPIN in MCE records when available 2016-11-23 16:51:52 +01:00
mman.h x86/mm/pkeys: Create an x86 arch_calc_vm_prot_bits() for VMA flags 2016-02-18 19:46:32 +01:00
msgbuf.h
msr.h x86/uapi: Do not export <asm/msr-index.h> as part of the user API headers 2015-06-07 15:36:04 +02:00
mtrr.h x86/mm/mtrr: Use symbolic define as a retval for disabled MTRRs 2015-05-27 14:40:57 +02:00
param.h
perf_regs.h
poll.h
posix_types.h
posix_types_32.h
posix_types_64.h
posix_types_x32.h
prctl.h x86/prctl/uapi: Remove #ifdef for CHECKPOINT_RESTORE 2016-10-28 08:15:55 +02:00
processor-flags.h x86/cpu, x86/mm/pkeys: Define new CR4 bit 2016-02-16 10:11:14 +01:00
ptrace-abi.h x86/asm/entry/64: Fix comments 2015-03-04 22:50:49 +01:00
ptrace.h x86/asm/entry/64: Fix comments 2015-03-04 22:50:49 +01:00
resource.h
sembuf.h x86, uapi, x32: Use __kernel_ulong_t in x86 struct semid64_ds 2014-01-20 14:45:13 -08:00
setup.h create non-empty arch/x86/include/uapi/asm/ files 2012-12-17 17:15:11 -08:00
shmbuf.h
sigcontext.h x86/signal/64: Re-add support for SS in the 64-bit signal context 2016-02-17 08:32:11 +01:00
sigcontext32.h x86/headers: Remove direct sigcontext32.h uses 2015-09-08 10:03:59 +02:00
siginfo.h
signal.h consolidate kernel-side struct sigaction declarations 2013-02-03 15:09:22 -05:00
socket.h
sockios.h
stat.h x86, x32: Use __kernel_long_t/__kernel_ulong_t in x86-64 stat.h 2013-12-20 16:04:35 -08:00
statfs.h
svm.h KVM: SVM: Add more SVM_EXIT_REASONS 2016-05-24 12:11:08 +02:00
swab.h
termbits.h
termios.h
types.h
ucontext.h x86/signal/64: Re-add support for SS in the 64-bit signal context 2016-02-17 08:32:11 +01:00
unistd.h
vm86.h
vmx.h KVM: nVMX: check host CR3 on vmentry and vmexit 2016-12-08 15:31:10 +01:00
vsyscall.h x86, vdso: Move the vvar and hpet mappings next to the 64-bit vDSO 2014-05-05 13:19:01 -07:00