From: Chuck Ebbert <76306.1226@compuserve.com> 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 --- Documentation/kernel-parameters.txt | 6 +++++- arch/i386/kernel/cpu/common.c | 15 ++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff -puN arch/i386/kernel/cpu/common.c~i386-allow-disabling-x86_feature_sep-at-boot arch/i386/kernel/cpu/common.c --- devel/arch/i386/kernel/cpu/common.c~i386-allow-disabling-x86_feature_sep-at-boot 2006-02-07 13:19:24.000000000 -0800 +++ devel-akpm/arch/i386/kernel/cpu/common.c 2006-02-07 13:19:24.000000000 -0800 @@ -22,8 +22,9 @@ DEFINE_PER_CPU(unsigned char, cpu_16bit_ EXPORT_PER_CPU_SYMBOL(cpu_16bit_stack); 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_sep __cpuinitdata; struct cpu_dev * cpu_devs[X86_VENDOR_NUM] = {}; @@ -183,6 +184,14 @@ static int __init x86_fxsr_setup(char * __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 */ static inline int flag_is_changeable_p(u32 flag) { @@ -401,6 +410,10 @@ void __cpuinit identify_cpu(struct cpuin 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) clear_bit(X86_FEATURE_PSE, c->x86_capability); diff -puN Documentation/kernel-parameters.txt~i386-allow-disabling-x86_feature_sep-at-boot Documentation/kernel-parameters.txt --- devel/Documentation/kernel-parameters.txt~i386-allow-disabling-x86_feature_sep-at-boot 2006-02-07 13:19:24.000000000 -0800 +++ devel-akpm/Documentation/kernel-parameters.txt 2006-02-07 13:19:24.000000000 -0800 @@ -1013,7 +1013,9 @@ running once the system is up. noexec=on: enable non-executable mappings (default) 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] @@ -1056,6 +1058,8 @@ running once the system is up. nosbagart [IA-64] + nosep [BUGS=IA-32] Disables x86 SYSENTER/SYSEXIT support. + nosmp [SMP] Tells an SMP kernel to act as a UP kernel. nosync [HW,M68K] Disables sync negotiation for all devices. _