linux/drivers/infiniband/hw/mlx5
Michael Guralnik 11f552e217 IB/mlx5: Test write combining support
Linux can run in all sorts of physical machines and VMs where write
combining may or may not be supported. Currently there is no way to
reliably tell if the system supports WC, or not. The driver uses WC to
optimize posting work to the HCA, and getting this wrong in either
direction can cause a significant performance loss.

Add a test in mlx5_ib initialization process to test whether
write-combining is supported on the machine.  The test will run as part of
the enable_driver callback to ensure that the test runs after the device
is setup and can create and modify the QP needed, but runs before the
device is exposed to the users.

The test opens UD QP and posts NOP WQEs, the WQE written to the BlueFlame
is different from the WQE in memory, requesting CQE only on the BlueFlame
WQE. By checking whether we received a completion on one of these WQEs we
can know if BlueFlame succeeded and this write-combining must be
supported.

Change reporting of BlueFlame support to be dependent on write-combining
support instead of the FW's guess as to what the machine can do.

Link: https://lore.kernel.org/r/20191027062234.10993-1-leon@kernel.org
Signed-off-by: Michael Guralnik <michaelgur@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
2019-10-31 15:52:51 -03:00
..
ah.c RDMA: Handle AH allocations by IB/core 2019-04-08 13:05:25 -03:00
cmd.c net/mlx5: Move device memory management to mlx5_core 2019-09-01 23:44:41 -07:00
cmd.h net/mlx5: Move device memory management to mlx5_core 2019-09-01 23:44:41 -07:00
cong.c infiniband: mlx5: no need to check return value of debugfs_create functions 2019-01-24 09:22:29 -07:00
cq.c RDMA/mlx5: Split sig_err MR data into its own xarray 2019-10-28 16:41:13 -03:00
devx.c RDMA/mlx5: Use a dedicated mkey xarray for ODP 2019-10-28 16:41:13 -03:00
doorbell.c IB/{core,hw}: Have ib_umem_get extract the ib_ucontext from ib_udata 2019-01-10 17:07:45 -07:00
flow.c RDMA subsystem updates for 5.4 2019-09-21 10:26:24 -07:00
gsi.c IB/mlx5: Align usage of QP1 create flags with rest of mlx5 defines 2019-10-22 16:39:49 -03:00
ib_rep.c Merge mlx5-next into rdma for-next 2019-07-05 10:16:19 -03:00
ib_rep.h Merge mlx5-next into rdma for-next 2019-07-03 16:50:26 -03:00
ib_virt.c
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
mad.c IB/mlx5: Fixed reporting counters on 2nd port for Dual port RoCE 2019-07-03 15:08:54 -03:00
main.c IB/mlx5: Test write combining support 2019-10-31 15:52:51 -03:00
Makefile RDMA/mlx5: Return ODP type per MR 2019-10-22 15:22:47 -03:00
mem.c IB/mlx5: Test write combining support 2019-10-31 15:52:51 -03:00
mlx5_ib.h IB/mlx5: Test write combining support 2019-10-31 15:52:51 -03:00
mr.c RDMA/mlx5: Return proper error value 2019-10-31 15:31:49 -03:00
odp.c Merge branch 'odp_rework' into rdma.git for-next 2019-10-28 16:47:52 -03:00
qp.c IB/mlx5: Test write combining support 2019-10-31 15:52:51 -03:00
restrack.c RDMA/nldev: Provide MR statistics 2019-10-22 15:33:31 -03:00
srq_cmd.c mlx5: Use refcount_t for refcount 2019-08-07 11:01:48 -07:00
srq.c RDMA: Handle SRQ allocations by IB/core 2019-04-08 13:05:25 -03:00
srq.h RDMA: Handle SRQ allocations by IB/core 2019-04-08 13:05:25 -03:00