diff options
-rw-r--r-- | Documentation/kernel-parameters.txt | 15 | ||||
-rw-r--r-- | arch/x86/kernel/cpu/common.c | 8 |
2 files changed, 23 insertions, 0 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 30a8ad0dae53..0ebd95252c3f 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -2124,6 +2124,21 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
2124 | and restore using xsave. The kernel will fallback to | 2124 | and restore using xsave. The kernel will fallback to |
2125 | enabling legacy floating-point and sse state. | 2125 | enabling legacy floating-point and sse state. |
2126 | 2126 | ||
2127 | noxsaveopt [X86] Disables xsaveopt used in saving x86 extended | ||
2128 | register states. The kernel will fall back to use | ||
2129 | xsave to save the states. By using this parameter, | ||
2130 | performance of saving the states is degraded because | ||
2131 | xsave doesn't support modified optimization while | ||
2132 | xsaveopt supports it on xsaveopt enabled systems. | ||
2133 | |||
2134 | noxsaves [X86] Disables xsaves and xrstors used in saving and | ||
2135 | restoring x86 extended register state in compacted | ||
2136 | form of xsave area. The kernel will fall back to use | ||
2137 | xsaveopt and xrstor to save and restore the states | ||
2138 | in standard form of xsave area. By using this | ||
2139 | parameter, xsave area per process might occupy more | ||
2140 | memory on xsaves enabled systems. | ||
2141 | |||
2127 | eagerfpu= [X86] | 2142 | eagerfpu= [X86] |
2128 | on enable eager fpu restore | 2143 | on enable eager fpu restore |
2129 | off disable eager fpu restore | 2144 | off disable eager fpu restore |
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index e7c4b979d504..cdc95852532d 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c | |||
@@ -146,6 +146,7 @@ static int __init x86_xsave_setup(char *s) | |||
146 | { | 146 | { |
147 | setup_clear_cpu_cap(X86_FEATURE_XSAVE); | 147 | setup_clear_cpu_cap(X86_FEATURE_XSAVE); |
148 | setup_clear_cpu_cap(X86_FEATURE_XSAVEOPT); | 148 | setup_clear_cpu_cap(X86_FEATURE_XSAVEOPT); |
149 | setup_clear_cpu_cap(X86_FEATURE_XSAVES); | ||
149 | setup_clear_cpu_cap(X86_FEATURE_AVX); | 150 | setup_clear_cpu_cap(X86_FEATURE_AVX); |
150 | setup_clear_cpu_cap(X86_FEATURE_AVX2); | 151 | setup_clear_cpu_cap(X86_FEATURE_AVX2); |
151 | return 1; | 152 | return 1; |
@@ -159,6 +160,13 @@ static int __init x86_xsaveopt_setup(char *s) | |||
159 | } | 160 | } |
160 | __setup("noxsaveopt", x86_xsaveopt_setup); | 161 | __setup("noxsaveopt", x86_xsaveopt_setup); |
161 | 162 | ||
163 | static int __init x86_xsaves_setup(char *s) | ||
164 | { | ||
165 | setup_clear_cpu_cap(X86_FEATURE_XSAVES); | ||
166 | return 1; | ||
167 | } | ||
168 | __setup("noxsaves", x86_xsaves_setup); | ||
169 | |||
162 | #ifdef CONFIG_X86_32 | 170 | #ifdef CONFIG_X86_32 |
163 | static int cachesize_override = -1; | 171 | static int cachesize_override = -1; |
164 | static int disable_x86_serial_nr = 1; | 172 | static int disable_x86_serial_nr = 1; |