summaryrefslogtreecommitdiffstats
path: root/include/asm-generic/barrier.h
diff options
context:
space:
mode:
authorWaiman Long <Waiman.Long@hp.com>2015-07-11 16:36:52 -0400
committerIngo Molnar <mingo@kernel.org>2015-08-03 10:57:11 +0200
commit75d2270280686bff21b9ba66c7f3dd379c887981 (patch)
treeb383930b141f3cb57cd6fad2dcf36635bc821f58 /include/asm-generic/barrier.h
parentffffeaf318bd8da036eb8eb784b025a9f829201b (diff)
downloadlinux-75d2270280686bff21b9ba66c7f3dd379c887981.tar.gz
linux-75d2270280686bff21b9ba66c7f3dd379c887981.tar.bz2
linux-75d2270280686bff21b9ba66c7f3dd379c887981.zip
locking/pvqspinlock: Only kick CPU at unlock time
For an over-committed guest with more vCPUs than physical CPUs available, it is possible that a vCPU may be kicked twice before getting the lock - once before it becomes queue head and once again before it gets the lock. All these CPU kicking and halting (VMEXIT) can be expensive and slow down system performance. This patch adds a new vCPU state (vcpu_hashed) which enables the code to delay CPU kicking until at unlock time. Once this state is set, the new lock holder will set _Q_SLOW_VAL and fill in the hash table on behalf of the halted queue head vCPU. The original vcpu_halted state will be used by pv_wait_node() only to differentiate other queue nodes from the qeue head. Signed-off-by: Waiman Long <Waiman.Long@hp.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Douglas Hatch <doug.hatch@hp.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Scott J Norton <scott.norton@hp.com> Cc: Thomas Gleixner <tglx@linutronix.de> Link: http://lkml.kernel.org/r/1436647018-49734-2-git-send-email-Waiman.Long@hp.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'include/asm-generic/barrier.h')
0 files changed, 0 insertions, 0 deletions