diff options
author | Moni Shoua | 2018-12-11 12:37:53 +0100 |
---|---|---|
committer | Jason Gunthorpe | 2018-12-18 23:26:19 +0100 |
commit | 813e90b1aeaa550641332625174d57edb15bc8bd (patch) | |
tree | 00699c511ed101aaaa630392093cc9505c7474af /drivers/infiniband/hw/mlx5/main.c | |
parent | IB/uverbs: Add support to advise_mr (diff) | |
download | kernel-qcow2-linux-813e90b1aeaa550641332625174d57edb15bc8bd.tar.gz kernel-qcow2-linux-813e90b1aeaa550641332625174d57edb15bc8bd.tar.xz kernel-qcow2-linux-813e90b1aeaa550641332625174d57edb15bc8bd.zip |
IB/mlx5: Add advise_mr() support
The verb advise_mr() is used to give advice to the kernel about an address
range that belongs to a MR. Implement the verb and register it on the
device. The current implementation supports the only known advice to date,
prefetch.
Signed-off-by: Moni Shoua <monis@mellanox.com>
Reviewed-by: Guy Levi <guyle@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Diffstat (limited to 'drivers/infiniband/hw/mlx5/main.c')
-rw-r--r-- | drivers/infiniband/hw/mlx5/main.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c index 5a4e23105b0c..d7b56222fea3 100644 --- a/drivers/infiniband/hw/mlx5/main.c +++ b/drivers/infiniband/hw/mlx5/main.c @@ -5712,6 +5712,8 @@ void mlx5_ib_stage_init_cleanup(struct mlx5_ib_dev *dev) mlx5_ib_cleanup_multiport_master(dev); #ifdef CONFIG_INFINIBAND_ON_DEMAND_PAGING cleanup_srcu_struct(&dev->mr_srcu); + drain_workqueue(dev->advise_mr_wq); + destroy_workqueue(dev->advise_mr_wq); #endif kfree(dev->port); } @@ -5766,6 +5768,12 @@ int mlx5_ib_stage_init_init(struct mlx5_ib_dev *dev) dev->memic.dev = mdev; #ifdef CONFIG_INFINIBAND_ON_DEMAND_PAGING + dev->advise_mr_wq = alloc_ordered_workqueue("mlx5_ib_advise_mr_wq", 0); + if (!dev->advise_mr_wq) { + err = -ENOMEM; + goto err_free_port; + } + err = init_srcu_struct(&dev->mr_srcu); if (err) goto err_free_port; |