diff options
author | Andi Kleen <ak@suse.de> | 2005-09-12 18:49:24 +0200 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-09-12 10:50:55 -0700 |
commit | 083044e63b4d10ebf9afb231bc0d34aec72169b4 (patch) | |
tree | 4724a4d993dc1c45830bd8cf39ab5fef70391cd6 | |
parent | fe5d5f073eb133b65a8814b48af1722a1ca5aa25 (diff) | |
download | kernel_samsung_smdk4412-083044e63b4d10ebf9afb231bc0d34aec72169b4.zip kernel_samsung_smdk4412-083044e63b4d10ebf9afb231bc0d34aec72169b4.tar.gz kernel_samsung_smdk4412-083044e63b4d10ebf9afb231bc0d34aec72169b4.tar.bz2 |
[PATCH] x86-64: Remove disable_tsc code in context switch
It only offers extremly dubious security advantages and
is not worth the overhead in this critical path.
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | arch/x86_64/kernel/process.c | 29 |
1 files changed, 0 insertions, 29 deletions
diff --git a/arch/x86_64/kernel/process.c b/arch/x86_64/kernel/process.c index e9f35c6..687ed35 100644 --- a/arch/x86_64/kernel/process.c +++ b/arch/x86_64/kernel/process.c @@ -487,33 +487,6 @@ out: } /* - * This function selects if the context switch from prev to next - * has to tweak the TSC disable bit in the cr4. - */ -static inline void disable_tsc(struct task_struct *prev_p, - struct task_struct *next_p) -{ - struct thread_info *prev, *next; - - /* - * gcc should eliminate the ->thread_info dereference if - * has_secure_computing returns 0 at compile time (SECCOMP=n). - */ - prev = prev_p->thread_info; - next = next_p->thread_info; - - if (has_secure_computing(prev) || has_secure_computing(next)) { - /* slow path here */ - if (has_secure_computing(prev) && - !has_secure_computing(next)) { - write_cr4(read_cr4() & ~X86_CR4_TSD); - } else if (!has_secure_computing(prev) && - has_secure_computing(next)) - write_cr4(read_cr4() | X86_CR4_TSD); - } -} - -/* * This special macro can be used to load a debugging register */ #define loaddebug(thread,r) set_debug(thread->debugreg ## r, r) @@ -631,8 +604,6 @@ struct task_struct *__switch_to(struct task_struct *prev_p, struct task_struct * } } - disable_tsc(prev_p, next_p); - return prev_p; } |