Previously, ENOENT or EINVAL will be returned by ibv_advise_mr() although the errors all occur at get_prefetchable_mr(). flags = IBV_ADVISE_MR_FLAG_FLUSH: mlx5_ib_advise_mr_prefetch() -> mlx5_ib_prefetch_sg_list() -> get_prefetchable_mr() return -ENOENT; flags = 0: mlx5_ib_advise_mr_prefetch() -> init_prefetch_work() -> get_prefetchable_mr() return -EINVAL; Signed-off-by: Li Zhijian <lizhijian@xxxxxxxxxxxxxx> --- drivers/infiniband/hw/mlx5/odp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/infiniband/hw/mlx5/odp.c b/drivers/infiniband/hw/mlx5/odp.c index d0d98e584ebc..52572e7ea6f6 100644 --- a/drivers/infiniband/hw/mlx5/odp.c +++ b/drivers/infiniband/hw/mlx5/odp.c @@ -1828,7 +1828,7 @@ int mlx5_ib_advise_mr_prefetch(struct ib_pd *pd, if (!init_prefetch_work(pd, advice, pf_flags, work, sg_list, num_sge)) { destroy_prefetch_work(work); - return -EINVAL; + return -ENOENT; } queue_work(system_unbound_wq, &work->work); return 0; -- 2.31.1