Message ID | 20200115124340.79108-11-leon@kernel.org |
---|---|
State | Awaiting Upstream |
Delegated to: | David Miller |
Headers | show |
Series | Use ODP MRs for kernel ULPs | expand |
On 1/15/20 4:43 AM, Leon Romanovsky wrote: > From: Hans Westgaard Ry <hans.westgaard.ry@oracle.com> > > Try prefetching pages when using On-Demand-Paging MR using > ib_advise_mr. > > Signed-off-by: Hans Westgaard Ry <hans.westgaard.ry@oracle.com> > Signed-off-by: Leon Romanovsky <leonro@mellanox.com> > --- Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
diff --git a/net/rds/ib_rdma.c b/net/rds/ib_rdma.c index 5a02b313ec50..5268a76e5db7 100644 --- a/net/rds/ib_rdma.c +++ b/net/rds/ib_rdma.c @@ -574,6 +574,7 @@ void *rds_ib_get_mr(struct scatterlist *sg, unsigned long nents, (IB_ACCESS_LOCAL_WRITE | IB_ACCESS_REMOTE_READ | IB_ACCESS_REMOTE_WRITE | IB_ACCESS_REMOTE_ATOMIC | IB_ACCESS_ON_DEMAND); + struct ib_sge sge = {}; struct ib_mr *ib_mr; if (!rds_ibdev->odp_capable) { @@ -601,6 +602,14 @@ void *rds_ib_get_mr(struct scatterlist *sg, unsigned long nents, } ibmr->u.mr = ib_mr; ibmr->odp = 1; + + sge.addr = virt_addr; + sge.length = length; + sge.lkey = ib_mr->lkey; + + ib_advise_mr(rds_ibdev->pd, + IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_WRITE, + IB_UVERBS_ADVISE_MR_FLAG_FLUSH, &sge, 1); return ibmr; }