mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-11 15:49:56 +00:00
[PATCH] i386: allow disabling X86_FEATURE_SEP at boot
Allow the x86 "sep" feature to be disabled at bootup. This forces use of the int80 vsyscall. Mainly for testing or benchmarking the int80 vsyscall code. Signed-off-by: Chuck Ebbert <76306.1226@compuserve.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
3bc9b76bed
commit
4f88651125
@ -1008,7 +1008,9 @@ running once the system is up.
|
|||||||
noexec=on: enable non-executable mappings (default)
|
noexec=on: enable non-executable mappings (default)
|
||||||
noexec=off: disable nn-executable mappings
|
noexec=off: disable nn-executable mappings
|
||||||
|
|
||||||
nofxsr [BUGS=IA-32]
|
nofxsr [BUGS=IA-32] Disables x86 floating point extended
|
||||||
|
register save and restore. The kernel will only save
|
||||||
|
legacy floating-point registers on task switch.
|
||||||
|
|
||||||
nohlt [BUGS=ARM]
|
nohlt [BUGS=ARM]
|
||||||
|
|
||||||
@ -1053,6 +1055,8 @@ running once the system is up.
|
|||||||
|
|
||||||
nosbagart [IA-64]
|
nosbagart [IA-64]
|
||||||
|
|
||||||
|
nosep [BUGS=IA-32] Disables x86 SYSENTER/SYSEXIT support.
|
||||||
|
|
||||||
nosmp [SMP] Tells an SMP kernel to act as a UP kernel.
|
nosmp [SMP] Tells an SMP kernel to act as a UP kernel.
|
||||||
|
|
||||||
nosync [HW,M68K] Disables sync negotiation for all devices.
|
nosync [HW,M68K] Disables sync negotiation for all devices.
|
||||||
|
@ -26,8 +26,9 @@ DEFINE_PER_CPU(unsigned char, cpu_16bit_stack[CPU_16BIT_STACK_SIZE]);
|
|||||||
EXPORT_PER_CPU_SYMBOL(cpu_16bit_stack);
|
EXPORT_PER_CPU_SYMBOL(cpu_16bit_stack);
|
||||||
|
|
||||||
static int cachesize_override __cpuinitdata = -1;
|
static int cachesize_override __cpuinitdata = -1;
|
||||||
static int disable_x86_fxsr __cpuinitdata = 0;
|
static int disable_x86_fxsr __cpuinitdata;
|
||||||
static int disable_x86_serial_nr __cpuinitdata = 1;
|
static int disable_x86_serial_nr __cpuinitdata = 1;
|
||||||
|
static int disable_x86_sep __cpuinitdata;
|
||||||
|
|
||||||
struct cpu_dev * cpu_devs[X86_VENDOR_NUM] = {};
|
struct cpu_dev * cpu_devs[X86_VENDOR_NUM] = {};
|
||||||
|
|
||||||
@ -187,6 +188,14 @@ static int __init x86_fxsr_setup(char * s)
|
|||||||
__setup("nofxsr", x86_fxsr_setup);
|
__setup("nofxsr", x86_fxsr_setup);
|
||||||
|
|
||||||
|
|
||||||
|
static int __init x86_sep_setup(char * s)
|
||||||
|
{
|
||||||
|
disable_x86_sep = 1;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
__setup("nosep", x86_sep_setup);
|
||||||
|
|
||||||
|
|
||||||
/* Standard macro to see if a specific flag is changeable */
|
/* Standard macro to see if a specific flag is changeable */
|
||||||
static inline int flag_is_changeable_p(u32 flag)
|
static inline int flag_is_changeable_p(u32 flag)
|
||||||
{
|
{
|
||||||
@ -405,6 +414,10 @@ void __cpuinit identify_cpu(struct cpuinfo_x86 *c)
|
|||||||
clear_bit(X86_FEATURE_XMM, c->x86_capability);
|
clear_bit(X86_FEATURE_XMM, c->x86_capability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* SEP disabled? */
|
||||||
|
if (disable_x86_sep)
|
||||||
|
clear_bit(X86_FEATURE_SEP, c->x86_capability);
|
||||||
|
|
||||||
if (disable_pse)
|
if (disable_pse)
|
||||||
clear_bit(X86_FEATURE_PSE, c->x86_capability);
|
clear_bit(X86_FEATURE_PSE, c->x86_capability);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user