<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/infiniband/core, branch v3.4.76</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/drivers/infiniband/core?h=v3.4.76</id>
<link rel='self' href='https://git.amat.us/linux/atom/drivers/infiniband/core?h=v3.4.76'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2012-10-28T17:14:15Z</updated>
<entry>
<title>infiniband: pass rdma_cm module to netlink_dump_start</title>
<updated>2012-10-28T17:14:15Z</updated>
<author>
<name>Gao feng</name>
<email>gaofeng@cn.fujitsu.com</email>
</author>
<published>2012-10-04T20:15:49Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=6114941a295ff186d29ab7462cce6a41a089c354'/>
<id>urn:sha1:6114941a295ff186d29ab7462cce6a41a089c354</id>
<content type='text'>
[ Upstream commit 809d5fc9bf6589276a12bd4fd611e4c7ff9940c3 ]

set netlink_dump_control.module to avoid panic.

Signed-off-by: Gao feng &lt;gaofeng@cn.fujitsu.com&gt;
Cc: Roland Dreier &lt;roland@kernel.org&gt;
Cc: Sean Hefty &lt;sean.hefty@intel.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>IB/core: Fix mismatch between locked and pinned pages</title>
<updated>2012-06-01T07:18:17Z</updated>
<author>
<name>Yishai Hadas</name>
<email>yishaih@mellanox.com</email>
</author>
<published>2012-05-10T20:28:05Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=b10dfc7a2b20aaf6fad56f7b0725c4aaa9438ad1'/>
<id>urn:sha1:b10dfc7a2b20aaf6fad56f7b0725c4aaa9438ad1</id>
<content type='text'>
commit c4870eb874ac16dccef40e1bc7a002c7e9156adc upstream.

Commit bc3e53f682d9 ("mm: distinguish between mlocked and pinned
pages") introduced a separate counter for pinned pages and used it in
the IB stack.  However, in ib_umem_get() the pinned counter is
incremented, but ib_umem_release() wrongly decrements the locked
counter.  Fix this.

Signed-off-by: Yishai Hadas &lt;yishaih@mellanox.com&gt;
Reviewed-by: Christoph Lameter &lt;cl@linux.com&gt;
Signed-off-by: Roland Dreier &lt;roland@purestorage.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>Merge tag 'ib-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband</title>
<updated>2012-04-26T22:35:35Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2012-04-26T22:35:35Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=ebcf596d89f9686308db768e527a22165831b473'/>
<id>urn:sha1:ebcf596d89f9686308db768e527a22165831b473</id>
<content type='text'>
Pull infiniband fixes from Roland Dreier:
 "A few fixes for regressions introduced in 3.4-rc1:
   - fix memory leak in mlx4
   - fix two problems with new MAD response generation code"

* tag 'ib-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband:
  IB/mlx4: Fix memory leaks in ib_link_query_port()
  IB/mad: Don't send response for failed MADs
  IB/mad: Set 'D' bit in response for unhandled MADs
</content>
</entry>
<entry>
<title>IB/mad: Don't send response for failed MADs</title>
<updated>2012-04-24T23:08:57Z</updated>
<author>
<name>Jack Morgenstein</name>
<email>jackm@dev.mellanox.co.il</email>
</author>
<published>2012-04-24T23:08:57Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=a9e7432319eb26ad90f18a7d215e50341d28ecb2'/>
<id>urn:sha1:a9e7432319eb26ad90f18a7d215e50341d28ecb2</id>
<content type='text'>
Commit 0b307043049f ("IB/mad: Return error response for unsupported
MADs") does not failed MADs (eg those that return
IB_MAD_RESULT_FAILURE) properly -- these MADs should be silently
discarded. (We should not force the lower-layer drivers to return
SUCCESS | CONSUMED in this case, since the MAD is NOT successful).
Unsupported MADs are not failures -- they return SUCCESS, but with an
"unsupported error" status value inside the response MAD.

Reviewed-by: Hal Rosenstock &lt;hal@mellanox.com&gt;
Signed-off-by: Jack Morgenstein &lt;jackm@dev.mellanox.co.il&gt;
Signed-off-by: Roland Dreier &lt;roland@purestorage.com&gt;
</content>
</entry>
<entry>
<title>IB/mad: Set 'D' bit in response for unhandled MADs</title>
<updated>2012-04-24T23:06:50Z</updated>
<author>
<name>Jack Morgenstein</name>
<email>jackm@dev.mellanox.co.il</email>
</author>
<published>2012-04-24T23:06:50Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=840777de530ae96ee9a3022f7ec1d6c65abb26ac'/>
<id>urn:sha1:840777de530ae96ee9a3022f7ec1d6c65abb26ac</id>
<content type='text'>
Commit 0b307043049f ("IB/mad: Return error response for unsupported
MADs") does not handle directed-route MADs properly -- it fails to set
the 'D' bit in the response MAD status field.  This is a problem for
SmInfo MADs when the receiver does not have an SM running.

Reviewed-by: Hal Rosenstock &lt;hal@mellanox.com&gt;
Signed-off-by: Jack Morgenstein &lt;jackm@dev.mellanox.co.il&gt;
Signed-off-by: Roland Dreier &lt;roland@purestorage.com&gt;
</content>
</entry>
<entry>
<title>IB/core: Don't return EINVAL from sysfs rate attribute for invalid speeds</title>
<updated>2012-04-02T17:57:31Z</updated>
<author>
<name>Roland Dreier</name>
<email>roland@purestorage.com</email>
</author>
<published>2012-04-02T17:57:31Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=0559d8dc13a1cd68b5e64c0b61659f36c7b5c89f'/>
<id>urn:sha1:0559d8dc13a1cd68b5e64c0b61659f36c7b5c89f</id>
<content type='text'>
Commit e9319b0cb00d ("IB/core: Fix SDR rates in sysfs") changed our
sysfs rate attribute to return EINVAL to userspace if the underlying
device driver returns an invalid rate.  Apparently some drivers do this
when the link is down and some userspace pukes if it gets an error when
reading this attribute, so avoid a regression by not return an error to
match the old code.

Signed-off-by: Roland Dreier &lt;roland@purestorage.com&gt;
</content>
</entry>
<entry>
<title>Merge tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband</title>
<updated>2012-03-21T17:33:42Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2012-03-21T17:33:42Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=0c2fe82a9b106f1c03719783134360586d718a69'/>
<id>urn:sha1:0c2fe82a9b106f1c03719783134360586d718a69</id>
<content type='text'>
Pull InfiniBand/RDMA changes for the 3.4 merge window from Roland Dreier:
 "Nothing big really stands out; by patch count lots of fixes to the
  mlx4 driver plus some cleanups and fixes to the core and other
  drivers."

* tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (28 commits)
  mlx4_core: Scale size of MTT table with system RAM
  mlx4_core: Allow dynamic MTU configuration for IB ports
  IB/mlx4: Fix info returned when querying IBoE ports
  IB/mlx4: Fix possible missed completion event
  mlx4_core: Report thermal error events
  mlx4_core: Fix one more static exported function
  IB: Change CQE "csum_ok" field to a bit flag
  RDMA/iwcm: Reject connect requests if cmid is not in LISTEN state
  RDMA/cxgb3: Don't pass irq flags to flush_qp()
  mlx4_core: Get rid of redundant ext_port_cap flags
  RDMA/ucma: Fix AB-BA deadlock
  IB/ehca: Fix ilog2() compile failure
  IB: Use central enum for speed instead of hard-coded values
  IB/iser: Post initial receive buffers before sending the final login request
  IB/iser: Free IB connection resources in the proper place
  IB/srp: Consolidate repetitive sysfs code
  IB/srp: Use pr_fmt() and pr_err()/pr_warn()
  IB/core: Fix SDR rates in sysfs
  mlx4: Enforce device max FMR maps in FMR alloc
  IB/mlx4: Set bad_wr for invalid send opcode
  ...
</content>
</entry>
<entry>
<title>Merge branches 'cma', 'cxgb3', 'cxgb4', 'ehca', 'iser', 'mad', 'nes', 'qib', 'srp' and 'srpt' into for-next</title>
<updated>2012-03-19T16:50:33Z</updated>
<author>
<name>Roland Dreier</name>
<email>roland@purestorage.com</email>
</author>
<published>2012-03-19T16:50:33Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f0e88aeb19dac00ed2e09fd4d39ee65f32d5e968'/>
<id>urn:sha1:f0e88aeb19dac00ed2e09fd4d39ee65f32d5e968</id>
<content type='text'>
</content>
</entry>
<entry>
<title>RDMA/iwcm: Reject connect requests if cmid is not in LISTEN state</title>
<updated>2012-03-07T23:14:53Z</updated>
<author>
<name>Steve Wise</name>
<email>swise@opengridcomputing.com</email>
</author>
<published>2012-03-07T22:48:11Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=3eae7c9f97415ac1f5ab5db4eeb03cde689eb427'/>
<id>urn:sha1:3eae7c9f97415ac1f5ab5db4eeb03cde689eb427</id>
<content type='text'>
When destroying a listening cmid, the iwcm first marks the state of
the cmid as DESTROYING, then releases the lock and calls into the
iWARP provider to destroy the endpoint.  Since the cmid is not locked,
its possible for the iWARP provider to pass a connection request event
to the iwcm, which will be silently dropped by the iwcm.  This causes
the iWARP provider to never free up the resources from this connection
because the assumption is the iwcm will accept or reject this connection.

The solution is to reject these connection requests.

Signed-off-by: Steve Wise &lt;swise@opengridcomputing.com&gt;
Signed-off-by: Roland Dreier &lt;roland@purestorage.com&gt;
</content>
</entry>
<entry>
<title>RDMA/ucma: Fix AB-BA deadlock</title>
<updated>2012-03-05T20:27:57Z</updated>
<author>
<name>Hefty, Sean</name>
<email>sean.hefty@intel.com</email>
</author>
<published>2012-03-02T00:01:19Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=186834b5de69a89ba6cc846e7259451ced689b64'/>
<id>urn:sha1:186834b5de69a89ba6cc846e7259451ced689b64</id>
<content type='text'>
When we destroy a cm_id, we must purge associated events from the
event queue.  If the cm_id is for a listen request, we also purge
corresponding pending connect requests.  This requires destroying
the cm_id's associated with the connect requests by calling
rdma_destroy_id().  rdma_destroy_id() blocks until all outstanding
callbacks have completed.

The issue is that we hold file-&gt;mut while purging events from the
event queue.  We also acquire file-&gt;mut in our event handler.  Calling
rdma_destroy_id() while holding file-&gt;mut can lead to a deadlock,
since the event handler callback cannot acquire file-&gt;mut, which
prevents rdma_destroy_id() from completing.

Fix this by moving events to purge from the event queue to a temporary
list.  We can then release file-&gt;mut and call rdma_destroy_id()
outside of holding any locks.

Bug report by Or Gerlitz &lt;ogerlitz@mellanox.com&gt;:

    [ INFO: possible circular locking dependency detected ]
    3.3.0-rc5-00008-g79f1e43-dirty #34 Tainted: G          I

    tgtd/9018 is trying to acquire lock:
     (&amp;id_priv-&gt;handler_mutex){+.+.+.}, at: [&lt;ffffffffa0359a41&gt;] rdma_destroy_id+0x33/0x1f0 [rdma_cm]

    but task is already holding lock:
     (&amp;file-&gt;mut){+.+.+.}, at: [&lt;ffffffffa02470fe&gt;] ucma_free_ctx+0xb6/0x196 [rdma_ucm]

    which lock already depends on the new lock.


    the existing dependency chain (in reverse order) is:

    -&gt; #1 (&amp;file-&gt;mut){+.+.+.}:
           [&lt;ffffffff810682f3&gt;] lock_acquire+0xf0/0x116
           [&lt;ffffffff8135f179&gt;] mutex_lock_nested+0x64/0x2e6
           [&lt;ffffffffa0247636&gt;] ucma_event_handler+0x148/0x1dc [rdma_ucm]
           [&lt;ffffffffa035a79a&gt;] cma_ib_handler+0x1a7/0x1f7 [rdma_cm]
           [&lt;ffffffffa0333e88&gt;] cm_process_work+0x32/0x119 [ib_cm]
           [&lt;ffffffffa03362ab&gt;] cm_work_handler+0xfb8/0xfe5 [ib_cm]
           [&lt;ffffffff810423e2&gt;] process_one_work+0x2bd/0x4a6
           [&lt;ffffffff810429e2&gt;] worker_thread+0x1d6/0x350
           [&lt;ffffffff810462a6&gt;] kthread+0x84/0x8c
           [&lt;ffffffff81369624&gt;] kernel_thread_helper+0x4/0x10

    -&gt; #0 (&amp;id_priv-&gt;handler_mutex){+.+.+.}:
           [&lt;ffffffff81067b86&gt;] __lock_acquire+0x10d5/0x1752
           [&lt;ffffffff810682f3&gt;] lock_acquire+0xf0/0x116
           [&lt;ffffffff8135f179&gt;] mutex_lock_nested+0x64/0x2e6
           [&lt;ffffffffa0359a41&gt;] rdma_destroy_id+0x33/0x1f0 [rdma_cm]
           [&lt;ffffffffa024715f&gt;] ucma_free_ctx+0x117/0x196 [rdma_ucm]
           [&lt;ffffffffa0247255&gt;] ucma_close+0x77/0xb4 [rdma_ucm]
           [&lt;ffffffff810df6ef&gt;] fput+0x117/0x1cf
           [&lt;ffffffff810dc76e&gt;] filp_close+0x6d/0x78
           [&lt;ffffffff8102b667&gt;] put_files_struct+0xbd/0x17d
           [&lt;ffffffff8102b76d&gt;] exit_files+0x46/0x4e
           [&lt;ffffffff8102d057&gt;] do_exit+0x299/0x75d
           [&lt;ffffffff8102d599&gt;] do_group_exit+0x7e/0xa9
           [&lt;ffffffff8103ae4b&gt;] get_signal_to_deliver+0x536/0x555
           [&lt;ffffffff81001717&gt;] do_signal+0x39/0x634
           [&lt;ffffffff81001d39&gt;] do_notify_resume+0x27/0x69
           [&lt;ffffffff81361c03&gt;] retint_signal+0x46/0x83

    other info that might help us debug this:

     Possible unsafe locking scenario:

           CPU0                    CPU1
           ----                    ----
      lock(&amp;file-&gt;mut);
                                   lock(&amp;id_priv-&gt;handler_mutex);
                                   lock(&amp;file-&gt;mut);
      lock(&amp;id_priv-&gt;handler_mutex);

     *** DEADLOCK ***

    1 lock held by tgtd/9018:
     #0:  (&amp;file-&gt;mut){+.+.+.}, at: [&lt;ffffffffa02470fe&gt;] ucma_free_ctx+0xb6/0x196 [rdma_ucm]

    stack backtrace:
    Pid: 9018, comm: tgtd Tainted: G          I  3.3.0-rc5-00008-g79f1e43-dirty #34
    Call Trace:
     [&lt;ffffffff81029e9c&gt;] ? console_unlock+0x18e/0x207
     [&lt;ffffffff81066433&gt;] print_circular_bug+0x28e/0x29f
     [&lt;ffffffff81067b86&gt;] __lock_acquire+0x10d5/0x1752
     [&lt;ffffffff810682f3&gt;] lock_acquire+0xf0/0x116
     [&lt;ffffffffa0359a41&gt;] ? rdma_destroy_id+0x33/0x1f0 [rdma_cm]
     [&lt;ffffffff8135f179&gt;] mutex_lock_nested+0x64/0x2e6
     [&lt;ffffffffa0359a41&gt;] ? rdma_destroy_id+0x33/0x1f0 [rdma_cm]
     [&lt;ffffffff8106546d&gt;] ? trace_hardirqs_on_caller+0x11e/0x155
     [&lt;ffffffff810654b1&gt;] ? trace_hardirqs_on+0xd/0xf
     [&lt;ffffffffa0359a41&gt;] rdma_destroy_id+0x33/0x1f0 [rdma_cm]
     [&lt;ffffffffa024715f&gt;] ucma_free_ctx+0x117/0x196 [rdma_ucm]
     [&lt;ffffffffa0247255&gt;] ucma_close+0x77/0xb4 [rdma_ucm]
     [&lt;ffffffff810df6ef&gt;] fput+0x117/0x1cf
     [&lt;ffffffff810dc76e&gt;] filp_close+0x6d/0x78
     [&lt;ffffffff8102b667&gt;] put_files_struct+0xbd/0x17d
     [&lt;ffffffff8102b5cc&gt;] ? put_files_struct+0x22/0x17d
     [&lt;ffffffff8102b76d&gt;] exit_files+0x46/0x4e
     [&lt;ffffffff8102d057&gt;] do_exit+0x299/0x75d
     [&lt;ffffffff8102d599&gt;] do_group_exit+0x7e/0xa9
     [&lt;ffffffff8103ae4b&gt;] get_signal_to_deliver+0x536/0x555
     [&lt;ffffffff810654b1&gt;] ? trace_hardirqs_on+0xd/0xf
     [&lt;ffffffff81001717&gt;] do_signal+0x39/0x634
     [&lt;ffffffff8135e037&gt;] ? printk+0x3c/0x45
     [&lt;ffffffff8106546d&gt;] ? trace_hardirqs_on_caller+0x11e/0x155
     [&lt;ffffffff810654b1&gt;] ? trace_hardirqs_on+0xd/0xf
     [&lt;ffffffff81361803&gt;] ? _raw_spin_unlock_irq+0x2b/0x40
     [&lt;ffffffff81039011&gt;] ? set_current_blocked+0x44/0x49
     [&lt;ffffffff81361bce&gt;] ? retint_signal+0x11/0x83
     [&lt;ffffffff81001d39&gt;] do_notify_resume+0x27/0x69
     [&lt;ffffffff8118a1fe&gt;] ? trace_hardirqs_on_thunk+0x3a/0x3f
     [&lt;ffffffff81361c03&gt;] retint_signal+0x46/0x83

Signed-off-by: Sean Hefty &lt;sean.hefty@intel.com&gt;
Signed-off-by: Roland Dreier &lt;roland@purestorage.com&gt;
</content>
</entry>
</feed>
