summaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/mlx5/cmd.h
diff options
context:
space:
mode:
authorYishai Hadas <yishaih@mellanox.com>2019-12-12 11:02:37 +0100
committerDoug Ledford <dledford@redhat.com>2019-12-12 22:55:36 +0100
commitdc2316eba73ff03da6dde082a372c6b5209304c5 (patch)
treee114c03c6c585709ba9e95d26cd6033f5c841fbf /drivers/infiniband/hw/mlx5/cmd.h
parentIB/core: Introduce rdma_user_mmap_entry_insert_range() API (diff)
downloadlinux-dc2316eba73ff03da6dde082a372c6b5209304c5.tar.xz
linux-dc2316eba73ff03da6dde082a372c6b5209304c5.zip
IB/mlx5: Fix device memory flows
Fix device memory flows so that only once there will be no live mmaped VA to a given allocation the matching object will be destroyed. This prevents a potential scenario that existing VA that was mmaped by one process might still be used post its deallocation despite that it's owned now by other process. The above is achieved by integrating with IB core APIs to manage mmap/munmap. Only once the refcount will become 0 the DM object and its underlay area will be freed. Fixes: 3b113a1ec3d4 ("IB/mlx5: Support device memory type attribute") Signed-off-by: Yishai Hadas <yishaih@mellanox.com> Signed-off-by: Leon Romanovsky <leonro@mellanox.com> Link: https://lore.kernel.org/r/20191212100237.330654-3-leon@kernel.org Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband/hw/mlx5/cmd.h')
-rw-r--r--drivers/infiniband/hw/mlx5/cmd.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/mlx5/cmd.h b/drivers/infiniband/hw/mlx5/cmd.h
index 169cab4915e3..945ebce73613 100644
--- a/drivers/infiniband/hw/mlx5/cmd.h
+++ b/drivers/infiniband/hw/mlx5/cmd.h
@@ -46,7 +46,7 @@ int mlx5_cmd_modify_cong_params(struct mlx5_core_dev *mdev,
void *in, int in_size);
int mlx5_cmd_alloc_memic(struct mlx5_dm *dm, phys_addr_t *addr,
u64 length, u32 alignment);
-int mlx5_cmd_dealloc_memic(struct mlx5_dm *dm, phys_addr_t addr, u64 length);
+void mlx5_cmd_dealloc_memic(struct mlx5_dm *dm, phys_addr_t addr, u64 length);
void mlx5_cmd_dealloc_pd(struct mlx5_core_dev *dev, u32 pdn, u16 uid);
void mlx5_cmd_destroy_tir(struct mlx5_core_dev *dev, u32 tirn, u16 uid);
void mlx5_cmd_destroy_tis(struct mlx5_core_dev *dev, u32 tisn, u16 uid);