linux_dsm_epyc7002/arch/x86/include/uapi/asm
Kyle Huey e9ea1e7f53 x86/arch_prctl: Add ARCH_[GET|SET]_CPUID
Intel supports faulting on the CPUID instruction beginning with Ivy Bridge.
When enabled, the processor will fault on attempts to execute the CPUID
instruction with CPL>0. Exposing this feature to userspace will allow a
ptracer to trap and emulate the CPUID instruction.

When supported, this feature is controlled by toggling bit 0 of
MSR_MISC_FEATURES_ENABLES. It is documented in detail in Section 2.3.2 of
https://bugzilla.kernel.org/attachment.cgi?id=243991

Implement a new pair of arch_prctls, available on both x86-32 and x86-64.

ARCH_GET_CPUID: Returns the current CPUID state, either 0 if CPUID faulting
    is enabled (and thus the CPUID instruction is not available) or 1 if
    CPUID faulting is not enabled.

ARCH_SET_CPUID: Set the CPUID state to the second argument. If
    cpuid_enabled is 0 CPUID faulting will be activated, otherwise it will
    be deactivated. Returns ENODEV if CPUID faulting is not supported on
    this system.

The state of the CPUID faulting flag is propagated across forks, but reset
upon exec.

Signed-off-by: Kyle Huey <khuey@kylehuey.com>
Cc: Grzegorz Andrejczuk <grzegorz.andrejczuk@intel.com>
Cc: kvm@vger.kernel.org
Cc: Radim Krčmář <rkrcmar@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: linux-kselftest@vger.kernel.org
Cc: Nadav Amit <nadav.amit@gmail.com>
Cc: Robert O'Callahan <robert@ocallahan.org>
Cc: Richard Weinberger <richard@nod.at>
Cc: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Len Brown <len.brown@intel.com>
Cc: Shuah Khan <shuah@kernel.org>
Cc: user-mode-linux-devel@lists.sourceforge.net
Cc: Jeff Dike <jdike@addtoit.com>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: user-mode-linux-user@lists.sourceforge.net
Cc: David Matlack <dmatlack@google.com>
Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: Dmitry Safonov <dsafonov@virtuozzo.com>
Cc: linux-fsdevel@vger.kernel.org
Cc: Paolo Bonzini <pbonzini@redhat.com>
Link: http://lkml.kernel.org/r/20170320081628.18952-9-khuey@kylehuey.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2017-03-20 16:10:34 +01: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/boot: Correct setup_header.start_sys name 2017-03-01 11:27:26 +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: vmbus: Move the crash notification function 2017-01-20 14:48:03 +01:00
ioctl.h
ioctls.h
ipcbuf.h
ist.h
Kbuild perf kvm: Use defines of kvm events 2014-07-16 17:57:32 -03:00
kvm_para.h KVM: x86: add KVM_HC_CLOCK_PAIRING hypercall 2017-02-07 18:16:45 +01:00
kvm_perf.h perf kvm: Use defines of kvm events 2014-07-16 17:57:32 -03:00
kvm.h x86/kvm: Do not use BIT() in user-exported header 2016-05-09 16:38:54 +02: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_32.h
posix_types_64.h
posix_types_x32.h
posix_types.h
prctl.h x86/arch_prctl: Add ARCH_[GET|SET]_CPUID 2017-03-20 16:10:34 +01: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
sigcontext32.h x86/headers: Remove direct sigcontext32.h uses 2015-09-08 10:03:59 +02:00
sigcontext.h x86/signal/64: Re-add support for SS in the 64-bit signal context 2016-02-17 08:32:11 +01: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