diff options
author | Suresh Siddha <suresh.b.siddha@intel.com> | 2009-05-22 15:17:45 -0400 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2009-05-22 16:10:54 -0400 |
commit | 0c752a93353d9b17dbe148312d732fbe06d235e1 (patch) | |
tree | 944b37d214dd478abc1c5d2b51573ec87be59c63 | |
parent | bca23dba760d6705c013f89113c46570378fb626 (diff) |
x86: introduce noxsave boot parameter
Introduce "noxsave" boot parameter which will disable the cpu's xsave/xrstor
capabilities. Useful for debugging and working around xsave related issues.
[ Impact: make it possible to debug problems in the field ]
Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
-rw-r--r-- | Documentation/kernel-parameters.txt | 4 | ||||
-rw-r--r-- | arch/x86/kernel/cpu/common.c | 7 |
2 files changed, 11 insertions, 0 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index e87bdbfbcc75..fd5cac013037 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -1535,6 +1535,10 @@ and is between 256 and 4096 characters. It is defined in the file | |||
1535 | register save and restore. The kernel will only save | 1535 | register save and restore. The kernel will only save |
1536 | legacy floating-point registers on task switch. | 1536 | legacy floating-point registers on task switch. |
1537 | 1537 | ||
1538 | noxsave [BUGS=X86] Disables x86 extended register state save | ||
1539 | and restore using xsave. The kernel will fallback to | ||
1540 | enabling legacy floating-point and sse state. | ||
1541 | |||
1538 | nohlt [BUGS=ARM,SH] Tells the kernel that the sleep(SH) or | 1542 | nohlt [BUGS=ARM,SH] Tells the kernel that the sleep(SH) or |
1539 | wfi(ARM) instruction doesn't work correctly and not to | 1543 | wfi(ARM) instruction doesn't work correctly and not to |
1540 | use it. This is also useful when using JTAG debugger. | 1544 | use it. This is also useful when using JTAG debugger. |
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index c1caefc82e62..77848d9fca68 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c | |||
@@ -114,6 +114,13 @@ DEFINE_PER_CPU_PAGE_ALIGNED(struct gdt_page, gdt_page) = { .gdt = { | |||
114 | } }; | 114 | } }; |
115 | EXPORT_PER_CPU_SYMBOL_GPL(gdt_page); | 115 | EXPORT_PER_CPU_SYMBOL_GPL(gdt_page); |
116 | 116 | ||
117 | static int __init x86_xsave_setup(char *s) | ||
118 | { | ||
119 | setup_clear_cpu_cap(X86_FEATURE_XSAVE); | ||
120 | return 1; | ||
121 | } | ||
122 | __setup("noxsave", x86_xsave_setup); | ||
123 | |||
117 | #ifdef CONFIG_X86_32 | 124 | #ifdef CONFIG_X86_32 |
118 | static int cachesize_override __cpuinitdata = -1; | 125 | static int cachesize_override __cpuinitdata = -1; |
119 | static int disable_x86_serial_nr __cpuinitdata = 1; | 126 | static int disable_x86_serial_nr __cpuinitdata = 1; |