summaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/process_64.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2022-09-15 13:11:01 +0200
committerPeter Zijlstra <peterz@infradead.org>2022-10-17 16:41:03 +0200
commite57ef2ed97c1d078973298658a8096644a1e9e09 (patch)
tree79cb9a8835ab832a8e8c302abf1ffe0c0ad96c5f /arch/x86/kernel/process_64.c
parentfdc9ee7e97aa2c1dfa7ebb092fffec40ffa59108 (diff)
downloadlinux-stable-e57ef2ed97c1d078973298658a8096644a1e9e09.tar.gz
linux-stable-e57ef2ed97c1d078973298658a8096644a1e9e09.tar.bz2
linux-stable-e57ef2ed97c1d078973298658a8096644a1e9e09.zip
x86: Put hot per CPU variables into a struct
The layout of per-cpu variables is at the mercy of the compiler. This can lead to random performance fluctuations from build to build. Create a structure to hold some of the hottest per-cpu variables, starting with current_task. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lore.kernel.org/r/20220915111145.179707194@infradead.org
Diffstat (limited to 'arch/x86/kernel/process_64.c')
-rw-r--r--arch/x86/kernel/process_64.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
index 6b3418bff326..c4f6cacf6599 100644
--- a/arch/x86/kernel/process_64.c
+++ b/arch/x86/kernel/process_64.c
@@ -617,7 +617,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
/*
* Switch the PDA and FPU contexts.
*/
- this_cpu_write(current_task, next_p);
+ raw_cpu_write(pcpu_hot.current_task, next_p);
this_cpu_write(cpu_current_top_of_stack, task_top_of_stack(next_p));
switch_fpu_finish();