summaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/tlb_uv.c
diff options
context:
space:
mode:
authorCliff Wickman <cpw@sgi.com>2009-01-15 09:51:20 -0600
committerIngo Molnar <mingo@elte.hu>2009-01-15 23:48:20 +0100
commit18c07cf530cf4aa8b7551801f68ed40db5ee4e45 (patch)
tree0e57822a4d34535a0da87c3e2187b3264c26c856 /arch/x86/kernel/tlb_uv.c
parent4a13ad0bd8869bb491c67918662f9b1852595af5 (diff)
downloadlinux-18c07cf530cf4aa8b7551801f68ed40db5ee4e45.tar.gz
linux-18c07cf530cf4aa8b7551801f68ed40db5ee4e45.tar.bz2
linux-18c07cf530cf4aa8b7551801f68ed40db5ee4e45.zip
x86, UV: cpu_relax in uv_wait_completion
The function uv_wait_completion() spins on reads of a memory-mapped register, waiting for completion of BAU hardware replies. It should call "cpu_relax()" between those reads to improve performance on hyperthreaded configurations. Signed-off-by: Cliff Wickman <cpw@sgi.com> Acked-by: Jack Steiner <steiner@sgi.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/tlb_uv.c')
-rw-r--r--arch/x86/kernel/tlb_uv.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/x86/kernel/tlb_uv.c b/arch/x86/kernel/tlb_uv.c
index f885023167e0..6812b829ed83 100644
--- a/arch/x86/kernel/tlb_uv.c
+++ b/arch/x86/kernel/tlb_uv.c
@@ -200,6 +200,7 @@ static int uv_wait_completion(struct bau_desc *bau_desc,
destination_timeouts = 0;
}
}
+ cpu_relax();
}
return FLUSH_COMPLETE;
}