linux/drivers/infiniband/hw/qib
Mike Marciniszyn 551ace124d IB/qib: Reduce sdma_lock contention
Profiling has shown that sdma_lock is proving a bottleneck for
performance. The situations include:
 - RDMA reads when krcvqs > 1
 - post sends from multiple threads

For RDMA read the current global qib_wq mechanism runs on all CPUs
and contends for the sdma_lock when multiple RMDA read requests are
fielded on differenct CPUs. For post sends, the direct call to
qib_do_send() from multiple threads causes the contention.

Since the sdma mechanism is per port, this fix converts the existing
workqueue to a per port single thread workqueue to reduce the lock
contention in the RDMA read case, and for any other case where the QP
is scheduled via the workqueue mechanism from more than 1 CPU.

For the post send case, This patch modifies the post send code to test
for a non empty sdma engine.  If the sdma is not idle the (now single
thread) workqueue will be used to trigger the send engine instead of
the direct call to qib_do_send().

Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
2012-07-19 11:19:58 -07:00
..
Kconfig RDMA: Add netlink infrastructure 2011-05-20 11:46:11 -07:00
Makefile IB/qib: Use request_firmware() to load SD7220 firmware 2010-07-08 13:27:05 -07:00
qib_6120_regs.h
qib_7220_regs.h
qib_7220.h IB/qib: Eliminate 64-bit jiffies use 2012-01-03 20:52:12 -08:00
qib_7322_regs.h IB/qib: Mask hardware error during link reset 2010-07-06 14:13:20 -07:00
qib_common.h IB/qib: Allow PSM to select from multiple port assignment algorithms 2010-07-21 11:39:36 -07:00
qib_cq.c IB/qib: Generate completion callback on errors 2011-01-10 17:42:19 -08:00
qib_diag.c infiniband: add in export.h for files using EXPORT_SYMBOL/THIS_MODULE 2011-10-31 19:31:35 -04:00
qib_dma.c
qib_driver.c IB/qib: Add prefetch for eager buffers 2012-05-14 12:36:18 -07:00
qib_eeprom.c
qib_file_ops.c IB/qib: Correct sense on freectxts increment and decrement 2011-12-19 09:19:34 -08:00
qib_fs.c infiniband: umode_t noise, including open-coded S_ISDIR() 2012-01-03 22:55:03 -05:00
qib_iba6120.c IB/qib: Optimize pio ack buffer allocation 2012-05-14 12:37:03 -07:00
qib_iba7220.c IB/qib: Optimize pio ack buffer allocation 2012-05-14 12:37:03 -07:00
qib_iba7322.c IB/qib: Fix QP RCU sparse warnings 2012-07-17 10:18:37 -07:00
qib_init.c IB/qib: Reduce sdma_lock contention 2012-07-19 11:19:58 -07:00
qib_intr.c IB/qib: Ensure that LOS and DFE are being turned off 2011-06-17 11:56:59 -07:00
qib_keys.c IB/qib: Fix sparse RCU warnings in qib_keys.c 2012-07-10 10:01:56 -07:00
qib_mad.c IB/qib: Fix QP RCU sparse warnings 2012-07-17 10:18:37 -07:00
qib_mad.h IB/pma: Add include file for IBA performance counters definitions 2011-07-18 21:04:35 -07:00
qib_mmap.c
qib_mr.c IB/qib: RCU locking for MR validation 2012-07-08 18:05:19 -07:00
qib_pcie.c IB/qib: Fix an incorrect log message 2012-07-19 11:19:08 -07:00
qib_pio_copy.c
qib_qp.c IB/qib: Fix QP RCU sparse warnings 2012-07-17 10:18:37 -07:00
qib_qsfp.c IB/qib: Fix over-scheduling of QSFP work 2011-11-28 12:17:33 -08:00
qib_qsfp.h IB/qib: Eliminate 64-bit jiffies use 2012-01-03 20:52:12 -08:00
qib_rc.c IB/qib: Avoid returning EBUSY from MR deregister 2012-07-08 18:05:19 -07:00
qib_ruc.c IB/qib: Avoid returning EBUSY from MR deregister 2012-07-08 18:05:19 -07:00
qib_sd7220.c IB/qib: Fix style issues 2012-01-03 20:51:42 -08:00
qib_sdma.c infiniband: add moduleparam.h to drivers/infiniband as required 2011-10-31 19:31:36 -04:00
qib_srq.c RDMA/core: Add SRQ type field 2011-10-13 09:13:26 -07:00
qib_sysfs.c IB/qib: Display correct value for number of contexts 2012-05-14 12:39:04 -07:00
qib_twsi.c Fix common misspellings 2011-03-31 11:26:23 -03:00
qib_tx.c IB/qib: Optimize pio ack buffer allocation 2012-05-14 12:37:03 -07:00
qib_uc.c IB/qib: Avoid returning EBUSY from MR deregister 2012-07-08 18:05:19 -07:00
qib_ud.c IB/qib: Avoid returning EBUSY from MR deregister 2012-07-08 18:05:19 -07:00
qib_user_pages.c mm: distinguish between mlocked and pinned pages 2011-10-31 17:30:46 -07:00
qib_user_sdma.c Fix common misspellings 2011-03-31 11:26:23 -03:00
qib_user_sdma.h
qib_verbs_mcast.c
qib_verbs.c IB/qib: Reduce sdma_lock contention 2012-07-19 11:19:58 -07:00
qib_verbs.h IB/qib: Reduce sdma_lock contention 2012-07-19 11:19:58 -07:00
qib_wc_ppc64.c
qib_wc_x86_64.c
qib.h IB/qib: Reduce sdma_lock contention 2012-07-19 11:19:58 -07:00