[ewg] IB/qib: patches from recent kernel.org submissions
Mike Marciniszyn
mike.marciniszyn at qlogic.com
Fri Sep 23 11:37:36 PDT 2011
Vlad,
Please pull the following patches from
git.openfabrics.org/~mmarciniszyn/scm/linux-2.6.to_ofed
The kernel.org patches are just now hitting the lists.
Thanks!
Mike
commit a7f7c501f9cf0a1454323c5f6f8668be2ddf2b1d
Author: Mike Marciniszyn <mike.marciniszyn at qlogic.com>
Date: Fri Sep 23 12:04:24 2011 -0400
IB/qib: Add logic for affinity hint
Call irq_set_affinity_hint to provide user mode programs
like irqbalance the information to be able to distribute
qib interrupts appropriately.
The logic allocates all non-receive interrupts to the first
CPU local to the HCA. Receive interrupts are allocated round
robin starting with the second CPU local to the HCA with
potential wrap back to the second CPU.
Signed-off-by: Mike Marciniszyn <mike.marciniszyn at qlogic.com>
commit 96ecdac8d78e2d20b32eb4ec50643bcb1c03f828
Author: Mike Marciniszyn <mike.marciniszyn at qlogic.com>
Date: Fri Sep 23 11:10:49 2011 -0400
IB/qib: Add irq name refinements
This patch adds a refinement to the name registered with
MSIX interrupts so that user level scripts can determine
the device associated with the IRQs when there are
multiple HCAs with a potentially different set of
local CPUs.
Signed-off-by: Mike Marciniszyn <mike.marciniszyn at qlogic.com>
commit d3d7ea0a142f1545f9bfbcd9e3bd47b7b2f9ce79
Author: Mike Marciniszyn <mike.marciniszyn at qlogic.com>
Date: Fri Sep 23 10:59:03 2011 -0400
IB/qib: remove s_lock around header validation
Observation in qib_ruc_check_hdr() shows that the s_lock is not required
in the normal case. The r_lock is held in all cases, and protects
the qp fields that are read.
The s_lock will be needed to around the call to qib_migrate_qp() to
insure that the send engine sees a consistent set of fields.
Signed-off-by: Mike Marciniszyn <mike.marciniszyn at qlogic.com>
commit 6aeceea336753dfc6b2987594b228e65b3a46982
Author: Mike Marciniszyn <mike.marciniszyn at qlogic.com>
Date: Fri Sep 23 10:46:13 2011 -0400
IB/qib: memcpy optimizations
The default memcpy used by qib_copy_sge() ends up being a rep movsb on x86_64,
which is pretty slow.
This fix adds an x86_64 specific routine that 1) probes for X86_FEATURE_REP_GOOD
and 2) uses an inline asm routine builton rep movsq that testing has shown is
better than the builtin memcpy for all cases up to 4K. The probing routine is
now called when the qib module is loaded to enable the optimization. When
X86_FEATURE_REP_GOOD is not set, the routine uses the kernel's unrolled __memcpy
when the length is more than 64 and the builtin memcpy otherwise.
This patch also adds the cache bypass copies from older releases. Testing has
shown that AMD cpus benefit with a 40% improvement in netperf/ipoib.
The cache_bypass_copy module parameter can be used to enable on non-AMD
CPUs.
The qib_verbs_send_dma() and qib_copy_from_sge are also changed to use the
memcpy_string_op() to improve packet delivery performance to the
send engine.
The existing copy as well as a new stub probe routine are maintained as weak
symbols for other architectures.
Signed-off-by: Mike Marciniszyn <mike.marciniszyn at qlogic.com>
commit 9ecf3abd1d880255e2f9be0e9714dcd49c97fede
Author: Mike Marciniszyn <mike.marciniszyn at qlogic.com>
Date: Fri Sep 23 09:44:07 2011 -0400
IB/qib: precompute timeout jiffies to optimize latency
A new field is added to qib_qp called timeout_jiffies. It
is initialized upon create and modify.
The field is now used vs. the computation based on qp->timeout.
Signed-off-by: Mike Marciniszyn <mike.marciniszyn at qlogic.com>
commit b718e7f17cc9fc9d31148ec046bf071bdd2c105d
Author: Mike Marciniszyn <mike.marciniszyn at qlogic.com>
Date: Thu Sep 22 14:43:48 2011 -0400
IB/qib: qpn lookup optimizations
The heavy weight spinlock in qib_lookup_qpn() is replaced with
the RCU locking mechanism. The hash list itself is now accessed
via jhash functions vs. the mod.
The changes should benefit multiple receive contexts in different
processors by not contending for the lock to just read the hash
structures.
The patch also adds a lookaside_qp (pointer) and a lookaside_qpn
in the context. The interrupt handler will test the current
packet's qpn against lookaside_qpn if the lookaside_qp pointer
is non-null. The pointer is NULL'ed when the interrupt
handler exits.
Signed-off-by: Mike Marciniszyn <mike.marciniszyn at qlogic.com>
commit dd2e48e7c02c0925a5e603d1a9752d20b7e15ed3
Author: Mike Marciniszyn <mike.marciniszyn at qlogic.com>
Date: Thu Sep 22 11:50:04 2011 -0400
IB/qib: Eliminate divide/mod in converting idx to egr buf pointer
The context init now saves a shift from rcvegrbufs_perchunk
rcvegrbufs_perchunk_shift using ilog2. A BUG_ON protects the
power of 2 assumption.
Signed-off-by: Mike Marciniszyn <mike.marciniszyn at qlogic.com>
commit 3eef5499db4d04aae5d10580b3735696957cd99d
Author: Mike Marciniszyn <mike.marciniszyn at qlogic.com>
Date: Thu Sep 22 11:40:13 2011 -0400
IB/qib: decode path mtu optimization
Store both the encoded and decoded mtu in the qp structure as a minor
optimization UC/RC receive routines.
Signed-off-by: Mike Marciniszyn <mike.marciniszyn at qlogic.com>
commit 2871fc8a45df95c52cac9707e886383ec712a20e
Author: Mike Marciniszyn <mike.marciniszyn at qlogic.com>
Date: Thu Sep 22 11:24:39 2011 -0400
IB/qib: Optimize RC/UC code by IB operation
The memset for zeroing the work completion had been unconditional.
This patch removes the memset and moves the zeroing into the work
completion with a more explicit field by field set. With this patch,
non-ONLY/non-LAST packets will avoid the overhead since they will
not generate a completion.
Signed-off-by: Mike Marciniszyn <mike.marciniszyn at qlogic.com>
This message and any attached documents contain information from QLogic Corporation or its wholly-owned subsidiaries that may be confidential. If you are not the intended recipient, you may not read, copy, distribute, or use this information. If you have received this transmission in error, please notify the sender immediately by reply e-mail and then delete this message.
More information about the ewg
mailing list