aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/tlb_64.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2009-01-21 17:26:06 +0900
committerTejun Heo <tj@kernel.org>2009-01-21 17:26:06 +0900
commit02cf94c370e0dc9bf408fe45eb86fe9ad58eaf7f (patch)
treee12620b5fead5ec6d90b54046a5025c2b28234a0 /arch/x86/kernel/tlb_64.c
parent6dd01bedee6c3191643db303a1dc530bad56ec55 (diff)
downloadkernel_samsung_smdk4412-02cf94c370e0dc9bf408fe45eb86fe9ad58eaf7f.zip
kernel_samsung_smdk4412-02cf94c370e0dc9bf408fe45eb86fe9ad58eaf7f.tar.gz
kernel_samsung_smdk4412-02cf94c370e0dc9bf408fe45eb86fe9ad58eaf7f.tar.bz2
x86: make x86_32 use tlb_64.c
Impact: less contention when issuing invalidate IPI, cleanup Make x86_32 use the same tlb code as 64bit. The 64bit code uses multiple IPI vectors for tlb shootdown to reduce contention. This patch makes x86_32 allocate the same 8 IPIs as x86_64 and share the code paths. Note that the usage of asmlinkage is inconsistent for x86_32 and 64 and calls for further cleanup. This has been noted with a FIXME comment in tlb_64.c. Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'arch/x86/kernel/tlb_64.c')
-rw-r--r--arch/x86/kernel/tlb_64.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/arch/x86/kernel/tlb_64.c b/arch/x86/kernel/tlb_64.c
index 19ac661..b3ca1b9 100644
--- a/arch/x86/kernel/tlb_64.c
+++ b/arch/x86/kernel/tlb_64.c
@@ -113,7 +113,17 @@ EXPORT_SYMBOL_GPL(leave_mm);
* Interrupts are disabled.
*/
-asmlinkage void smp_invalidate_interrupt(struct pt_regs *regs)
+/*
+ * FIXME: use of asmlinkage is not consistent. On x86_64 it's noop
+ * but still used for documentation purpose but the usage is slightly
+ * inconsistent. On x86_32, asmlinkage is regparm(0) but interrupt
+ * entry calls in with the first parameter in %eax. Maybe define
+ * intrlinkage?
+ */
+#ifdef CONFIG_X86_64
+asmlinkage
+#endif
+void smp_invalidate_interrupt(struct pt_regs *regs)
{
unsigned int cpu;
unsigned int sender;