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: Hans Westgaard Ry <hans.westgaard.ry@oracle.com> Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com> Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
This commit is contained in:
parent
2eafa1746f
commit
b2dfc6765e
|
@ -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,
|
||||||
}
|
}
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue