]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
IB/core: Add interface to advise_mr for kernel users
authorMoni Shoua <monis@mellanox.com>
Wed, 15 Jan 2020 12:43:33 +0000 (14:43 +0200)
committerLeon Romanovsky <leonro@mellanox.com>
Thu, 16 Jan 2020 14:14:42 +0000 (16:14 +0200)
Allow ULPs to call advise_mr, so they can control ODP regions
in the same way as user space applications.

Signed-off-by: Moni Shoua <monis@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
drivers/infiniband/core/verbs.c
include/rdma/ib_verbs.h

index 7a69e4bbe87704bca440edbfa974a87b7cf6c30e..d33bdc9b01cd41e525a9abdca4661b1528ce36ec 100644 (file)
@@ -2020,6 +2020,17 @@ struct ib_mr *ib_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
 }
 EXPORT_SYMBOL(ib_reg_user_mr);
 
+int ib_advise_mr(struct ib_pd *pd, enum ib_uverbs_advise_mr_advice advice,
+                u32 flags, struct ib_sge *sg_list, u32 num_sge)
+{
+       if (!pd->device->ops.advise_mr)
+               return -EOPNOTSUPP;
+
+       return pd->device->ops.advise_mr(pd, advice, flags, sg_list, num_sge,
+                                        NULL);
+}
+EXPORT_SYMBOL(ib_advise_mr);
+
 int ib_dereg_mr_user(struct ib_mr *mr, struct ib_udata *udata)
 {
        struct ib_pd *pd = mr->pd;
index 170d5ec95b7930db003a8ad7f03d6460d5d5c08d..e2cc62217cc289899c8b9b4a8e95aecdd6967ee8 100644 (file)
@@ -4159,6 +4159,9 @@ static inline void ib_dma_free_coherent(struct ib_device *dev,
 struct ib_mr *ib_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
                             u64 virt_addr, int mr_access_flags);
 
+/* ib_advise_mr -  give an advice about an address range in a memory region */
+int ib_advise_mr(struct ib_pd *pd, enum ib_uverbs_advise_mr_advice advice,
+                u32 flags, struct ib_sge *sg_list, u32 num_sge);
 /**
  * ib_dereg_mr_user - Deregisters a memory region and removes it from the
  *   HCA translation table.