<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/include/rdma, branch v2.6.23-rc4</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/include/rdma?h=v2.6.23-rc4</id>
<link rel='self' href='https://git.amat.us/linux/atom/include/rdma?h=v2.6.23-rc4'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2007-08-03T17:45:18Z</updated>
<entry>
<title>IB: Move the macro IB_UMEM_MAX_PAGE_CHUNK() to umem.c</title>
<updated>2007-08-03T17:45:18Z</updated>
<author>
<name>Dotan Barak</name>
<email>dotanb@dev.mellanox.co.il</email>
</author>
<published>2007-08-01T10:33:56Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=92ddc447ce7382e36b72a240697c00bf4beb8d75'/>
<id>urn:sha1:92ddc447ce7382e36b72a240697c00bf4beb8d75</id>
<content type='text'>
After moving the definition of struct ib_umem_chunk from ib_verbs.h to
ib_umem.h there isn't any reason for the macro IB_UMEM_MAX_PAGE_CHUNK
to stay in ib_verbs.h.  Move the macro to umem.c, the only place where
it is used.

Signed-off-by: Dotan Barak &lt;dotanb@dev.mellanox.co.il&gt;
Signed-off-by: Roland Dreier &lt;rolandd@cisco.com&gt;
</content>
</entry>
<entry>
<title>IB: Include &lt;linux/list.h&gt; and &lt;linux/rwsem.h&gt; from &lt;rdma/ib_verbs.h&gt;</title>
<updated>2007-08-03T17:45:18Z</updated>
<author>
<name>Dotan Barak</name>
<email>dotanb@dev.mellanox.co.il</email>
</author>
<published>2007-07-31T13:49:15Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=bfb3ea125174813cdf87b1120caf0c9bd580283e'/>
<id>urn:sha1:bfb3ea125174813cdf87b1120caf0c9bd580283e</id>
<content type='text'>
ib_verbs.h uses struct list_head and rw_semaphore, so while the files
&lt;linux/list.h&gt; and &lt;linux/rwsem.h&gt; seem to be pulled in indirectly by
the other header files it includes, the right thing is to include
those files directly.

Signed-off-by: Dotan Barak &lt;dotanb@dev.mellanox.co.il&gt;
Signed-off-by: Roland Dreier &lt;rolandd@cisco.com&gt;
</content>
</entry>
<entry>
<title>IB: Include &lt;linux/list.h&gt; from &lt;rdma/ib_mad.h&gt;</title>
<updated>2007-08-03T17:45:17Z</updated>
<author>
<name>Dotan Barak</name>
<email>dotanb@dev.mellanox.co.il</email>
</author>
<published>2007-07-31T13:37:11Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=e8b398deb73b4a0c3d636f2146c9f35f8eac6d88'/>
<id>urn:sha1:e8b398deb73b4a0c3d636f2146c9f35f8eac6d88</id>
<content type='text'>
ib_mad.h uses struct list_head, so while linux/list.h seems to be
pulled in indirectly by one of the headers it includes, the right
thing is to include linux/list.h directly.

Signed-off-by: Dotan Barak &lt;dotanb@dev.mellanox.co.il&gt;
Signed-off-by: Roland Dreier &lt;rolandd@cisco.com&gt;
</content>
</entry>
<entry>
<title>IB/cm: Include HCA ACK delay in local ACK timeout</title>
<updated>2007-07-11T04:50:05Z</updated>
<author>
<name>Sean Hefty</name>
<email>sean.hefty@intel.com</email>
</author>
<published>2007-06-18T18:09:37Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=1d84612649427a85e1f311baa7215f9a6252d856'/>
<id>urn:sha1:1d84612649427a85e1f311baa7215f9a6252d856</id>
<content type='text'>
The IB CM should include the HCA ACK delay when calculating the local
ACK timeout value to use for RC QPs.  If the HCA ACK delay is large
enough relative to the packet life time, then if it is not taken into
account, the calculated timeout value ends up being too small, which
can result in "retry exceeded" errors.

Signed-off-by: Sean Hefty &lt;sean.hefty@intel.com&gt;
Signed-off-by: Roland Dreier &lt;rolandd@cisco.com&gt;
</content>
</entry>
<entry>
<title>IB/sa: Make sure SA queries use default P_Key</title>
<updated>2007-07-11T04:45:31Z</updated>
<author>
<name>Sean Hefty</name>
<email>sean.hefty@intel.com</email>
</author>
<published>2007-06-18T18:03:58Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2aec5c602c6a44e2a3a173339a9ab94549658e4b'/>
<id>urn:sha1:2aec5c602c6a44e2a3a173339a9ab94549658e4b</id>
<content type='text'>
MADs sent to the SA should use the the default P_Key (0x7fff/0xffff).
There's no requirement that the default P_Key is stored at index 0 in
the local P_Key table, so add code to the sa_query module to look up
the index of the default P_Key when creating an address handle for the
SA (which is done any time the P_Key table might change), and use this
index for all SA queries.

Signed-off-by: Sean Hefty &lt;sean.hefty@intel.com&gt;
Signed-off-by: Roland Dreier &lt;rolandd@cisco.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband</title>
<updated>2007-05-21T23:19:32Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@woody.linux-foundation.org</email>
</author>
<published>2007-05-21T23:19:32Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=8aee74c8ee875448cc6d1cf995c9469eb60ae515'/>
<id>urn:sha1:8aee74c8ee875448cc6d1cf995c9469eb60ae515</id>
<content type='text'>
* 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband:
  IB/cm: Improve local id allocation
  IPoIB/cm: Fix SRQ WR leak
  IB/ipoib: Fix typos in error messages
  IB/mlx4: Check if SRQ is full when posting receive
  IB/mlx4: Pass send queue sizes from userspace to kernel
  IB/mlx4: Fix check of opcode in mlx4_ib_post_send()
  mlx4_core: Fix array overrun in dump_dev_cap_flags()
  IB/mlx4: Fix RESET to RESET and RESET to ERROR transitions
  IB/mthca: Fix RESET to ERROR transition
  IB/mlx4: Set GRH:HopLimit when sending globally routed MADs
  IB/mthca: Set GRH:HopLimit when building MLX headers
  IB/mlx4: Fix check of max_qp_dest_rdma in modify QP
  IB/mthca: Fix use-after-free on device restart
  IB/ehca: Return proper error code if register_mr fails
  IPoIB: Handle P_Key table reordering
  IB/core: Use start_port() and end_port()
  IB/core: Add helpers for uncached GID and P_Key searches
  IB/ipath: Fix potential deadlock with multicast spinlocks
  IB/core: Free umem when mm is already gone
</content>
</entry>
<entry>
<title>Detach sched.h from mm.h</title>
<updated>2007-05-21T16:18:19Z</updated>
<author>
<name>Alexey Dobriyan</name>
<email>adobriyan@gmail.com</email>
</author>
<published>2007-05-20T21:22:52Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=e8edc6e03a5c8562dc70a6d969f732bdb355a7e7'/>
<id>urn:sha1:e8edc6e03a5c8562dc70a6d969f732bdb355a7e7</id>
<content type='text'>
First thing mm.h does is including sched.h solely for can_do_mlock() inline
function which has "current" dereference inside. By dealing with can_do_mlock()
mm.h can be detached from sched.h which is good. See below, why.

This patch
a) removes unconditional inclusion of sched.h from mm.h
b) makes can_do_mlock() normal function in mm/mlock.c
c) exports can_do_mlock() to not break compilation
d) adds sched.h inclusions back to files that were getting it indirectly.
e) adds less bloated headers to some files (asm/signal.h, jiffies.h) that were
   getting them indirectly

Net result is:
a) mm.h users would get less code to open, read, preprocess, parse, ... if
   they don't need sched.h
b) sched.h stops being dependency for significant number of files:
   on x86_64 allmodconfig touching sched.h results in recompile of 4083 files,
   after patch it's only 3744 (-8.3%).

Cross-compile tested on

	all arm defconfigs, all mips defconfigs, all powerpc defconfigs,
	alpha alpha-up
	arm
	i386 i386-up i386-defconfig i386-allnoconfig
	ia64 ia64-up
	m68k
	mips
	parisc parisc-up
	powerpc powerpc-up
	s390 s390-up
	sparc sparc-up
	sparc64 sparc64-up
	um-x86_64
	x86_64 x86_64-up x86_64-defconfig x86_64-allnoconfig

as well as my two usual configs.

Signed-off-by: Alexey Dobriyan &lt;adobriyan@gmail.com&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>IB/core: Add helpers for uncached GID and P_Key searches</title>
<updated>2007-05-19T15:51:53Z</updated>
<author>
<name>Yosef Etigin</name>
<email>yosefe@voltaire.com</email>
</author>
<published>2007-05-14T04:26:51Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=5eb620c81ce35aa0c533131bf4d06c4c8c2bfadf'/>
<id>urn:sha1:5eb620c81ce35aa0c533131bf4d06c4c8c2bfadf</id>
<content type='text'>
Add ib_find_gid() and ib_find_pkey() functions that use uncached device
queries.  The calls might block but the returns are always up-to-date.
Cache P_Key and GID table lengths in core to avoid extra port info queries.

Signed-off-by: Yosef Etigin &lt;yosefe@voltaire.com&gt;
Acked-by: Michael S. Tsirkin &lt;mst@dev.mellanox.co.il&gt;
Signed-off-by: Roland Dreier &lt;rolandd@cisco.com&gt;
</content>
</entry>
<entry>
<title>IB: Put rlimit accounting struct in struct ib_umem</title>
<updated>2007-05-09T01:00:37Z</updated>
<author>
<name>Roland Dreier</name>
<email>rolandd@cisco.com</email>
</author>
<published>2007-04-19T03:20:28Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=1bf66a30421ca772820f489d88c16d0c430d6a67'/>
<id>urn:sha1:1bf66a30421ca772820f489d88c16d0c430d6a67</id>
<content type='text'>
When memory pinned with ib_umem_get() is released, ib_umem_release()
needs to subtract the amount of memory being unpinned from
mm-&gt;locked_vm.  However, ib_umem_release() may be called with
mm-&gt;mmap_sem already held for writing if the memory is being released
as part of an munmap() call, so it is sometimes necessary to defer
this accounting into a workqueue.

However, the work struct used to defer this accounting is dynamically
allocated before it is queued, so there is the possibility of failing
that allocation.  If the allocation fails, then ib_umem_release has no
choice except to bail out and leave the process with a permanently
elevated locked_vm.

Fix this by allocating the structure to defer accounting as part of
the original struct ib_umem, so there's no possibility of failing a
later allocation if creating the struct ib_umem and pinning memory
succeeds.

Signed-off-by: Roland Dreier &lt;rolandd@cisco.com&gt;
</content>
</entry>
<entry>
<title>IB/uverbs: Export ib_umem_get()/ib_umem_release() to modules</title>
<updated>2007-05-09T01:00:37Z</updated>
<author>
<name>Roland Dreier</name>
<email>rolandd@cisco.com</email>
</author>
<published>2007-03-05T00:15:11Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f7c6a7b5d59980b076abbf2ceeb8735591290285'/>
<id>urn:sha1:f7c6a7b5d59980b076abbf2ceeb8735591290285</id>
<content type='text'>
Export ib_umem_get()/ib_umem_release() and put low-level drivers in
control of when to call ib_umem_get() to pin and DMA map userspace,
rather than always calling it in ib_uverbs_reg_mr() before calling the
low-level driver's reg_user_mr method.

Also move these functions to be in the ib_core module instead of
ib_uverbs, so that driver modules using them do not depend on
ib_uverbs.

This has a number of advantages:
 - It is better design from the standpoint of making generic code a
   library that can be used or overridden by device-specific code as
   the details of specific devices dictate.
 - Drivers that do not need to pin userspace memory regions do not
   need to take the performance hit of calling ib_mem_get().  For
   example, although I have not tried to implement it in this patch,
   the ipath driver should be able to avoid pinning memory and just
   use copy_{to,from}_user() to access userspace memory regions.
 - Buffers that need special mapping treatment can be identified by
   the low-level driver.  For example, it may be possible to solve
   some Altix-specific memory ordering issues with mthca CQs in
   userspace by mapping CQ buffers with extra flags.
 - Drivers that need to pin and DMA map userspace memory for things
   other than memory regions can use ib_umem_get() directly, instead
   of hacks using extra parameters to their reg_phys_mr method.  For
   example, the mlx4 driver that is pending being merged needs to pin
   and DMA map QP and CQ buffers, but it does not need to create a
   memory key for these buffers.  So the cleanest solution is for mlx4
   to call ib_umem_get() in the create_qp and create_cq methods.

Signed-off-by: Roland Dreier &lt;rolandd@cisco.com&gt;
</content>
</entry>
</feed>
