diff mbox series

IB/mlx5: Call io_stop_wc() after writing to WC MMIO

Message ID 0-v1-c5dade92f363+11-mlx5_io_stop_wc_jgg@nvidia.com (mailing list archive)
State Accepted
Headers show
Series IB/mlx5: Call io_stop_wc() after writing to WC MMIO | expand

Commit Message

Jason Gunthorpe July 29, 2022, 4:33 p.m. UTC
This new function is defined only on ARM and serves to guarantee a barrier
in the WC operation. The barrier means that another run of this loop will
not combine with the stores this loop created.

On x86 this is happening implicitly because of the spin_unlock().

Suggested-by: "Pavel Shamis" <Pavel.Shamis@arm.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
---
 drivers/infiniband/hw/mlx5/mem.c | 1 +
 1 file changed, 1 insertion(+)


base-commit: dd390cba54bbd74fb675a4ac0a78dc23a20d49e2

Comments

Leon Romanovsky Aug. 16, 2022, 12:11 p.m. UTC | #1
On Fri, Jul 29, 2022 at 01:33:38PM -0300, Jason Gunthorpe wrote:
> This new function is defined only on ARM and serves to guarantee a barrier
> in the WC operation. The barrier means that another run of this loop will
> not combine with the stores this loop created.
> 
> On x86 this is happening implicitly because of the spin_unlock().
> 
> Suggested-by: "Pavel Shamis" <Pavel.Shamis@arm.com>
> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
> ---
>  drivers/infiniband/hw/mlx5/mem.c | 1 +
>  1 file changed, 1 insertion(+)
> 

Thanks, applied.
diff mbox series

Patch

diff --git a/drivers/infiniband/hw/mlx5/mem.c b/drivers/infiniband/hw/mlx5/mem.c
index 6191aa833ac2b1..6b29e9ca323ea4 100644
--- a/drivers/infiniband/hw/mlx5/mem.c
+++ b/drivers/infiniband/hw/mlx5/mem.c
@@ -152,6 +152,7 @@  static int post_send_nop(struct mlx5_ib_dev *dev, struct ib_qp *ibqp, u64 wr_id,
 	for (i = 0; i < 8; i++)
 		mlx5_write64(&mmio_wqe[i * 2],
 			     bf->bfreg->map + bf->offset + i * 8);
+	io_stop_wc();
 
 	bf->offset ^= bf->buf_size;