1
0
Fork 0
alistair23-linux/drivers/net/mlx4
Olaf Kirch bbdc2821db mlx4_core: Avoid recycling old FMR R_Keys too soon
When a FMR is unmapped, mlx4 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
..
Makefile IB/mlx4: Add a driver Mellanox ConnectX InfiniBand adapters 2007-05-08 18:00:38 -07:00
alloc.c mlx4_core: Add HW queues allocation helpers 2008-04-25 14:27:08 -07:00
catas.c mlx4_core: Fix confusion between mlx4_event and mlx4_dev_event enums 2008-04-16 21:01:08 -07:00
cmd.c mlx4_core: Move opening brace of function onto a new line 2008-04-16 21:01:04 -07:00
cq.c mlx4_core: Add a way to set the "collapsed" CQ flag 2008-04-29 13:46:50 -07:00
eq.c mlx4_core: Fix confusion between mlx4_event and mlx4_dev_event enums 2008-04-16 21:01:08 -07:00
fw.c IB/mlx4: Add IPoIB LSO support 2008-04-16 21:09:27 -07:00
fw.h IB/mlx4: Add IPoIB LSO support 2008-04-16 21:09:27 -07:00
icm.c SG: Change sg_set_page() to take length and offset argument 2007-10-24 11:20:47 +02:00
icm.h mlx4_core: Write MTTs from CPU instead with of WRITE_MTT FW command 2007-10-09 19:59:16 -07:00
intf.c mlx4_core: Fix confusion between mlx4_event and mlx4_dev_event enums 2008-04-16 21:01:08 -07:00
main.c mlx4_core: Move kernel doorbell management into core 2008-04-23 11:55:45 -07:00
mcg.c IB/mlx4: Fix race when detaching a QP from a multicast group 2008-04-16 21:09:35 -07:00
mlx4.h mlx4_core: Move kernel doorbell management into core 2008-04-23 11:55:45 -07:00
mr.c mlx4_core: Avoid recycling old FMR R_Keys too soon 2008-04-29 13:46:53 -07:00
pd.c mlx4_core: Fix section mismatches 2007-10-10 15:43:54 -07:00
profile.c IB/mlx4: Add a driver Mellanox ConnectX InfiniBand adapters 2007-05-08 18:00:38 -07:00
qp.c mlx4_core: Add helper to move QP to ready-to-send 2008-04-25 14:52:32 -07:00
reset.c mlx4_core: Wait 1 second after reset before accessing device 2007-08-13 08:47:44 -07:00
srq.c mlx4_core: Fix section mismatches 2007-10-10 15:43:54 -07:00