Commit 911e5ca3 authored by Leon Romanovsky's avatar Leon Romanovsky
Browse files

RDMA/mlx4: Restrict external umem for CQ when copy_to_user() is used



When the mlx4 firmware reports the MLX4_DEV_CAP_FLAG2_SW_CQ_INIT capability,
libmlx4 from the rdma-core package expects the driver to initialize memory
at the address provided in the buf_addr parameter of ucmd.

This behavior cannot be supported by any external umem implementation, so
restrict it accordingly.

Fixes: f45f195a ("RDMA/mlx4: Introduce a modern CQ creation interface")
Reported-by: default avatarJiri Pirko <jiri@nvidia.com>
Link: https://patch.msgid.link/20260325-fix-mlx4-external-umem-v1-1-1c7c0e779329@nvidia.com


Signed-off-by: default avatarLeon Romanovsky <leonro@nvidia.com>
parent 179b3209
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -173,6 +173,10 @@ int mlx4_ib_create_user_cq(struct ib_cq *ibcq,
		goto err_cq;
	}

	if (ibcq->umem &&
	    (dev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_SW_CQ_INIT))
		return -EOPNOTSUPP;

	buf_addr = (void *)(unsigned long)ucmd.buf_addr;

	if (!ibcq->umem)