]> www.infradead.org Git - users/jedix/linux-maple.git/commit
net/mlx4_core: Fix FMR unmapping to allow remapping afterward
authorMaor Gottlieb <maorg@mellanox.com>
Mon, 27 Apr 2015 10:47:56 +0000 (13:47 +0300)
committerChuck Anderson <chuck.anderson@oracle.com>
Thu, 4 Feb 2016 20:26:57 +0000 (12:26 -0800)
commitd46d31cdd7dafa26621c5eb334b52cfc2400803b
tree3a3f62360423ef982c8ef10c915fd7b67f4cbb9d
parent1cb6be04345014198fecaee2bc8edee8665b610e
net/mlx4_core: Fix FMR unmapping to allow remapping afterward

According to device spec we only need to set ownership bit to SW at FMR
unmap, all other stuff we did are redundant and not essential.

This fix is ported from Mellanox OFED 3.1.

It covers some of the same issues fixed in UEK2 with the
following UEK2 commits:
 bbdc2821db04 "mlx4_core: Avoid recycling old FMR R_Keys too soon"
 5bddb281c0f1 "mlx4_ib: unmap FMR should update MPT status to 0xF"

Following comments from bbdc2821db04 patch by Olaf Kirch <okir@lst.de>
adds more useful information about impact of this change on RDS usage
in Oracle applications and copied here to retain useful context.

    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.

Orabug: 21473880

Signed-off-by: Maor Gottlieb <maorg@mellanox.com>
Signed-off-by: Mukesh Kacker <mukesh.kacker@oracle.com>
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com>
drivers/net/ethernet/mellanox/mlx4/mr.c