Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4f886511 authored by Chuck Ebbert's avatar Chuck Ebbert Committed by Linus Torvalds
Browse files

[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: default avatarChuck Ebbert <76306.1226@compuserve.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 3bc9b76b
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -1008,7 +1008,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]

@@ -1053,6 +1055,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.
+14 −1
Original line number Diff line number Diff line
@@ -26,8 +26,9 @@ DEFINE_PER_CPU(unsigned char, cpu_16bit_stack[CPU_16BIT_STACK_SIZE]);
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] = {};

@@ -187,6 +188,14 @@ static int __init x86_fxsr_setup(char * s)
__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)
{
@@ -405,6 +414,10 @@ void __cpuinit identify_cpu(struct cpuinfo_x86 *c)
		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);