spinlock: add HTM lock elision for x86
authorRoman Dementiev <roman.dementiev@intel.com>
Fri, 19 Jun 2015 11:08:21 +0000 (13:08 +0200)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Fri, 19 Jun 2015 14:18:19 +0000 (16:18 +0200)
commitba7468997ea6dd7a019ea00367c56867eb6431e9
treeeb35db5580447cc88820fee2433b3dc29d76aeb5
parent9e46f6c5d8823a7ac0ca17371d266ed0697158ad
spinlock: add HTM lock elision for x86

This patch adds methods that use hardware memory transactions (HTM) on fast-path
for spinlocks (a.k.a. lock elision). Here the methods are implemented for x86
using Restricted Transactional Memory instructions (Intel(r) Transactional
Synchronization Extensions). The implementation fall-backs to the normal
spinlock if HTM is not available or memory transactions fail. This is not
a replacement for all spinlock usages since not all critical sections protected
by spinlocks are friendly to HTM. For example, an attempt to perform a HW I/O
operation inside a hardware memory transaction always aborts the transaction
since the CPU is not able to roll-back should the transaction fail.
Therefore, hardware transactional locks are not advised to be used around
rte_eth_rx_burst() and rte_eth_tx_burst() calls.

Signed-off-by: Roman Dementiev <roman.dementiev@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
lib/librte_eal/common/include/arch/ppc_64/rte_spinlock.h
lib/librte_eal/common/include/arch/x86/rte_rtm.h [new file with mode: 0644]
lib/librte_eal/common/include/arch/x86/rte_spinlock.h
lib/librte_eal/common/include/generic/rte_spinlock.h