]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - net/rds/ib_rdma.c
Merge tag 'kvm-5.6-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm
[linux.git] / net / rds / ib_rdma.c
index ea4d7daec251882a9b470bdc8c022129a79879f1..b34b24e237f81bfdf5d01c7c990895517647f25c 100644 (file)
@@ -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_REMOTE_WRITE | IB_ACCESS_REMOTE_ATOMIC |
                         IB_ACCESS_ON_DEMAND);
+               struct ib_sge sge = {};
                struct ib_mr *ib_mr;
 
                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->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;
        }