1
linux/drivers/infiniband/hw/mthca
Olaf Kirch 0bfe151cc4 IB/mthca: Avoid recycling old FMR R_Keys too soon
When a FMR is unmapped, mthca resets the map count to 0, and clears
the upper part of the R_Key which is used as the sequence counter.

This poses a problem for RDS, which uses ib_fmr_unmap as a fence
operation.  RDS assumes that after issuing an unmap, the old R_Keys
will be invalid for a "reasonable" period of time. For instance,
Oracle processes uses shared memory buffers allocated from a pool of
buffers.  When a process dies, we want to reclaim these buffers -- but
we must make sure there are no pending RDMA operations to/from those
buffers.  The only way to achieve that is by using unmap and sync the
TPT.

However, when the sequence count is reset on unmap, there is a high
likelihood that a new mapping will be given the same R_Key that was
issued a few milliseconds ago.

To prevent this, don't reset the sequence count when unmapping a FMR.

Signed-off-by: Olaf Kirch <olaf.kirch@oracle.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
2008-04-29 13:46:53 -07:00
..
Kconfig IB: Use menuconfig for InfiniBand menu 2007-07-09 20:12:26 -07:00
Makefile
mthca_allocator.c IB/mthca: Replace memset(<addr>, 0, PAGE_SIZE) with clear_page(<addr>) 2007-07-10 12:28:05 -07:00
mthca_av.c IB/mthca: Set GRH:HopLimit when building MLX headers 2007-05-19 08:51:56 -07:00
mthca_catas.c WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
mthca_cmd.c IB/mthca: Add IPoIB checksum offload support 2008-04-16 21:01:11 -07:00
mthca_cmd.h IB/mthca: Add IPoIB checksum offload support 2008-04-16 21:01:11 -07:00
mthca_config_reg.h
mthca_cq.c IB/mthca: Add IPoIB checksum offload support 2008-04-16 21:01:11 -07:00
mthca_dev.h Convert asm/semaphore.h users to linux/semaphore.h 2008-04-18 22:22:54 -04:00
mthca_doorbell.h IB/mthca: Avoid alignment traps when writing doorbells 2007-10-15 20:17:27 -07:00
mthca_eq.c IB/mthca: Formatting cleanups 2008-04-16 21:01:03 -07:00
mthca_mad.c IB/mthca: Formatting cleanups 2008-04-16 21:01:03 -07:00
mthca_main.c IB/mthca: Avoid integer overflow when dealing with profile size 2008-04-16 21:01:13 -07:00
mthca_mcg.c IB/mthca: Fix section mismatches 2006-11-29 15:33:06 -08:00
mthca_memfree.c IB/mthca: Avoid integer overflow when allocating huge ICM table 2008-04-16 21:01:13 -07:00
mthca_memfree.h PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
mthca_mr.c IB/mthca: Avoid recycling old FMR R_Keys too soon 2008-04-29 13:46:53 -07:00
mthca_pd.c IB/mthca: Fix section mismatches 2006-11-29 15:33:06 -08:00
mthca_profile.c IB/mthca: Avoid integer overflow when dealing with profile size 2008-04-16 21:01:13 -07:00
mthca_profile.h IB/mthca: Avoid integer overflow when dealing with profile size 2008-04-16 21:01:13 -07:00
mthca_provider.c IB: expand ib_umem_get() prototype 2008-04-29 08:06:12 -07:00
mthca_provider.h IB/uverbs: Export ib_umem_get()/ib_umem_release() to modules 2007-05-08 18:00:37 -07:00
mthca_qp.c IB/mthca: Update QP state if query QP succeeds 2008-04-16 21:09:34 -07:00
mthca_reset.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
mthca_srq.c IB/ib_mthca: Pre-link receive WQEs in Tavor mode 2008-02-04 20:20:44 -08:00
mthca_uar.c IB/mthca: Don't use privileged UAR for kernel access 2006-09-22 15:17:18 -07:00
mthca_user.h IB: expand ib_umem_get() prototype 2008-04-29 08:06:12 -07:00
mthca_wqe.h IB/mthca: Add IPoIB checksum offload support 2008-04-16 21:01:11 -07:00