Commit b2dfc676 authored by Hans Westgaard Ry's avatar Hans Westgaard Ry Committed by Leon Romanovsky

net/rds: Use prefetch for On-Demand-Paging MR

Try prefetching pages when using On-Demand-Paging MR using
ib_advise_mr.
Signed-off-by: default avatarHans Westgaard Ry <hans.westgaard.ry@oracle.com>
Acked-by: default avatarSantosh Shilimkar <santosh.shilimkar@oracle.com>
Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
parent 2eafa174
...@@ -575,6 +575,7 @@ void *rds_ib_get_mr(struct scatterlist *sg, unsigned long nents, ...@@ -575,6 +575,7 @@ void *rds_ib_get_mr(struct scatterlist *sg, unsigned long nents,
(IB_ACCESS_LOCAL_WRITE | IB_ACCESS_REMOTE_READ | (IB_ACCESS_LOCAL_WRITE | IB_ACCESS_REMOTE_READ |
IB_ACCESS_REMOTE_WRITE | IB_ACCESS_REMOTE_ATOMIC | IB_ACCESS_REMOTE_WRITE | IB_ACCESS_REMOTE_ATOMIC |
IB_ACCESS_ON_DEMAND); IB_ACCESS_ON_DEMAND);
struct ib_sge sge = {};
struct ib_mr *ib_mr; struct ib_mr *ib_mr;
if (!rds_ibdev->odp_capable) { if (!rds_ibdev->odp_capable) {
...@@ -602,6 +603,14 @@ void *rds_ib_get_mr(struct scatterlist *sg, unsigned long nents, ...@@ -602,6 +603,14 @@ void *rds_ib_get_mr(struct scatterlist *sg, unsigned long nents,
} }
ibmr->u.mr = ib_mr; ibmr->u.mr = ib_mr;
ibmr->odp = 1; 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; return ibmr;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment