linux/drivers/infiniband/hw/hfi1
Mike Marciniszyn 4e045572e2 IB/hfi1: Add unique txwait_lock for txreq events
Profiling suggests that the read_seqbegin() in
the txreq put logic is colliding with other uses
of the iowait lock.

The packet at a time use of this lock dictates a unique
lock to avoid reader/writer collisions when the number
of vTxWait events is low.

In order to support a unique lock the iowait struct embedded
in the QP is extended to remember the lock that protects the queue
head.

The QP destroy removes that QP from any wait list.  It doesn't
need to know the head because of the linked list API, but it does
need to know the lock required to protect the head.

This also opens up the wait logic to have unique per resources locks
which needs to be in future refinement.

Reviewed-by: Sebastian Sanchez <sebastian.sanchez@intel.com>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
2016-11-15 16:25:59 -05:00
..
affinity.c IB/hfi1: Add irq affinity notification handler 2016-10-02 08:42:18 -04:00
affinity.h IB/hfi1: Fix locking scheme for affinity settings 2016-10-02 08:42:08 -04:00
aspm.h
chip_registers.h IB/hfi1: Read all firmware versions 2016-08-02 16:00:58 -04:00
chip.c IB/hfi1: Use EPROM platform configuration read 2016-10-02 08:42:20 -04:00
chip.h IB/hfi1: Adjust hardware buffering parameter 2016-10-02 08:42:15 -04:00
common.h IB/qib,IB/hfi: Use core common header file 2016-10-02 08:42:06 -04:00
debugfs.c IB/hfi1: Add new debugfs sdma_cpu_list file 2016-10-02 08:42:19 -04:00
debugfs.h
device.c
device.h
dma.c
driver.c IB/qib,IB/hfi: Use core common header file 2016-10-02 08:42:06 -04:00
efivar.c
efivar.h
eprom.c IB/hfi1: Add ability to read platform config from the EPROM 2016-10-02 08:42:20 -04:00
eprom.h IB/hfi1: Add ability to read platform config from the EPROM 2016-10-02 08:42:20 -04:00
file_ops.c IB/hfi1: Restore EPROM read ability 2016-10-02 08:42:19 -04:00
firmware.c IB/hfi1: Read all firmware versions 2016-08-02 16:00:58 -04:00
hfi.h IB/hfi1: Add irq affinity notification handler 2016-10-02 08:42:18 -04:00
init.c IB/hfi1: Fix resource release in context allocation 2016-10-02 08:42:17 -04:00
intr.c
iowait.h IB/hfi1: Add unique txwait_lock for txreq events 2016-11-15 16:25:59 -05:00
Kconfig Second round of merge items for 4.8 2016-08-04 20:26:31 -04:00
mad.c IB/hfi1: Remove filtering of Set(PkeyTable) in HFI SMA 2016-10-02 08:42:12 -04:00
mad.h IB/hfi1: Clean up port state structure definition 2016-08-02 12:00:54 -04:00
Makefile IB/hfi1: Remove TWSI references 2016-08-02 15:47:42 -04:00
mmu_rb.c IB/hfi1: Add cache evict LRU list 2016-08-02 22:46:21 -04:00
mmu_rb.h IB/hfi1: Remove unneeded mm argument in remove function 2016-08-02 22:46:21 -04:00
opa_compat.h
pcie.c IB/hfi1: Add static PCIe Gen3 CTLE tuning 2016-08-02 16:00:58 -04:00
pio_copy.c IB/hfi1: Combine shift copy and byte copy for SGE reads 2016-10-02 08:42:14 -04:00
pio.c IB/hfi1: Add unique txwait_lock for txreq events 2016-11-15 16:25:59 -05:00
pio.h IB/hfi1: Fix user-space buffers mapping with IOMMU enabled 2016-10-02 08:42:07 -04:00
platform.c IB/hfi1: Use EPROM platform configuration read 2016-10-02 08:42:20 -04:00
platform.h
qp.c IB/hfi1: Add unique txwait_lock for txreq events 2016-11-15 16:25:59 -05:00
qp.h IB/hfi1: Rename struct ahg_ib_header to struct hfi1_ahg_info 2016-08-02 16:00:58 -04:00
qsfp.c IB/hfi1: Extend i2c timeout 2016-10-02 08:42:13 -04:00
qsfp.h IB/hfi1: Fetch monitor values on-demand for CableInfo query 2016-08-22 14:31:41 -04:00
rc.c IB/hfi1: Cleanup tasklet refs in comments 2016-10-02 08:42:16 -04:00
ruc.c IB/hfi1: Cleanup tasklet refs in comments 2016-10-02 08:42:16 -04:00
sdma_txreq.h
sdma.c IB/hfi1: Add new debugfs sdma_cpu_list file 2016-10-02 08:42:19 -04:00
sdma.h IB/hfi1: Add new debugfs sdma_cpu_list file 2016-10-02 08:42:19 -04:00
sysfs.c IB/hfi1: Add a new VL sysfs attribute for sdma engines 2016-10-02 08:42:18 -04:00
trace_ctxts.h IB/hfi1: Fix user-space buffers mapping with IOMMU enabled 2016-10-02 08:42:07 -04:00
trace_dbg.h IB/hfi1: Separate tracepoints into specific headers 2016-08-02 12:00:54 -04:00
trace_ibhdrs.h IB/qib,IB/hfi: Use core common header file 2016-10-02 08:42:06 -04:00
trace_misc.h IB/hfi1: Separate tracepoints into specific headers 2016-08-02 12:00:54 -04:00
trace_rc.h IB/hfi1: Separate tracepoints into specific headers 2016-08-02 12:00:54 -04:00
trace_rx.h IB/qib,IB/hfi: Use core common header file 2016-10-02 08:42:06 -04:00
trace_tx.h IB/hfi1: Fix trace sparse errors 2016-08-02 12:00:54 -04:00
trace.c IB/hfi1: Fix trace of atomic ack 2016-10-02 08:42:21 -04:00
trace.h IB/hfi1: Separate tracepoints into specific headers 2016-08-02 12:00:54 -04:00
uc.c IB/hfi1: Consolidate pio control masks into single definition 2016-10-02 08:42:11 -04:00
ud.c IB/hfi1: Update SMA ingress checks for response packets 2016-10-02 08:42:21 -04:00
user_exp_rcv.c IB/hfi1: Fix memory leak during unexpected shutdown 2016-08-02 22:46:21 -04:00
user_exp_rcv.h
user_pages.c IB/hfi1: Make use of mm consistent 2016-08-02 22:46:21 -04:00
user_sdma.c IB/hfi1: Add sysfs interface for affinity setup 2016-10-02 08:42:17 -04:00
user_sdma.h IB/hfi1: Use evict mmu rb operation 2016-08-02 22:46:21 -04:00
verbs_txreq.c IB/hfi1: Add unique txwait_lock for txreq events 2016-11-15 16:25:59 -05:00
verbs_txreq.h IB/hfi1: Rename hfi1_pio_header to hfi1_sdma_header. 2016-08-02 16:00:58 -04:00
verbs.c IB/hfi1: Add unique txwait_lock for txreq events 2016-11-15 16:25:59 -05:00
verbs.h IB/hfi1: Add unique txwait_lock for txreq events 2016-11-15 16:25:59 -05:00