]> git.baikalelectronics.ru Git - kernel.git/commit
x86/tlb: replace INVALIDATE_TLB_VECTOR by CALL_FUNCTION_VECTOR
authorAlex Shi <alex.shi@intel.com>
Thu, 28 Jun 2012 01:02:23 +0000 (09:02 +0800)
committerH. Peter Anvin <hpa@zytor.com>
Thu, 28 Jun 2012 02:29:13 +0000 (19:29 -0700)
commit9b74aedd3433d69c46431089f0fa18fa7e7334b6
tree75ad5a9e508fcbbc041d0fe4f1245c98e08af38c
parentded59a3dee0fcd82f6ec131689069f2b74047536
x86/tlb: replace INVALIDATE_TLB_VECTOR by CALL_FUNCTION_VECTOR

There are 32 INVALIDATE_TLB_VECTOR now in kernel. That is quite big
amount of vector in IDT. But it is still not enough, since modern x86
sever has more cpu number. That still causes heavy lock contention
in TLB flushing.

The patch using generic smp call function to replace it. That saved 32
vector number in IDT, and resolved the lock contention in TLB
flushing on large system.

In the NHM EX machine 4P * 8cores * HT = 64 CPUs, hackbench pthread
has 3% performance increase.

Signed-off-by: Alex Shi <alex.shi@intel.com>
Link: http://lkml.kernel.org/r/1340845344-27557-9-git-send-email-alex.shi@intel.com
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
arch/x86/include/asm/entry_arch.h
arch/x86/include/asm/irq_vectors.h
arch/x86/kernel/entry_64.S
arch/x86/kernel/irqinit.c
arch/x86/mm/tlb.c