struct mlx5_ib_mr *mtt = odp->private;
 
                        pklm->key = cpu_to_be32(mtt->ibmr.lkey);
+                       pklm->va = cpu_to_be64(va);
                        odp = odp_next(odp);
                } else {
                        pklm->key = cpu_to_be32(dev->null_mkey);
+                       pklm->va = 0;
                }
                mlx5_ib_dbg(dev, "[%d] va %lx key %x\n",
                            i, va, be32_to_cpu(pklm->key));
        mr->umem = &odp->umem;
        mr->ibmr.lkey = mr->mmkey.key;
        mr->ibmr.rkey = mr->mmkey.key;
-       mr->mmkey.iova = 0;
+       mr->mmkey.iova = idx * MLX5_IMR_MTT_SIZE;
        mr->parent = imr;
        odp->private = mr;
        INIT_WORK(&odp->work, mr_leaf_free_action);
                goto out_release;
        }
 
-       mr->mmkey.iova = idx * MLX5_IMR_MTT_SIZE;
        xa_store(&imr->dev->odp_mkeys, mlx5_base_mkey(mr->mmkey.key),
                 &mr->mmkey, GFP_ATOMIC);