This subcommand was added a few years ago to support cpuid emulation on x86 targets, but no changes to the man page appear to have been made at the time. This commit adds a description for it and the corresponding getter. Signed-off-by: Keno Fischer <keno@xxxxxxxxxxxxxxxxxx> --- man2/arch_prctl.2 | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/man2/arch_prctl.2 b/man2/arch_prctl.2 index c49f4e0..e40d6bb 100644 --- a/man2/arch_prctl.2 +++ b/man2/arch_prctl.2 @@ -48,7 +48,44 @@ for the "set" operations, or as an .IR "unsigned long\ *" , for the "get" operations. .PP -Subfunctions for x86-64 are: +Subfunctions for both x86 and x86-64 are: +.TP +.BR ARCH_SET_CPUID " (since Linux 4.12)" +Enable ( +.I addr != 0 +) or disable ( +.I addr == 0 +) the +.I cpuid +instruction for the current thread. The instruction +is enabled by default. If disabled, +any execution of a +.I cpuid +instruction will instead generate a +.B SIGSEGV +signal. This feature can be used to emulate +.I cpuid +results that differ from what the underlying +hardware would have produced (e.g. in a paravirtualization setting). +This setting is preserved across +.BR fork (2) +and +.BR clone (2) +but reset to default (i.e. +.I cpuid +enabled) on +.BR execve (2) +. +.TP +.BR ARCH_GET_CPUID " (since Linux 4.12)" +Return the setting of the flag manipulated by +.B ARCH_SET_CPUID +as the result of the system call (1 for enabled, 0 for disabled). +.I addr +is ignored. + +.TP +Subfunctions for x86-64 only are: .TP .B ARCH_SET_FS Set the 64-bit base for the @@ -96,6 +133,10 @@ is not a valid subcommand. .B EPERM .I addr is outside the process address space. +.TP +.B ENODEV +.B ARCH_SET_CPUID +was requested, but the underlying hardware does not support CPUID faulting. .\" .SH AUTHOR .\" Man page written by Andi Kleen. .SH CONFORMING TO -- 2.8.1