linux/drivers/net/mlx4
Roland Dreier 2e61c646ed mlx4_core: Use mmiowb() to avoid firmware commands getting jumbled up
Firmware commands are sent to the HCA by writing multiple words to a
command register block.  Access to this block of registers is
serialized with a mutex.  However, on large SGI systems writes to the
register block may be reordered within the system interconnect and
reach the HCA in a different order than they were issued (even with
the mutex).  Fix this by adding an mmiowb() before dropping the mutex.

This bug was observed with real workloads with the similar FW command
code in the mthca driver, and adding the mmiowb() as in commit
66547550 ("IB/mthca: Use mmiowb() to avoid firmware commands getting
jumbled up") was confirmed to fix the problems, so we should add the
same fix to mlx4.

Signed-off-by: Roland Dreier <rolandd@cisco.com>
2007-10-09 19:59:18 -07:00
..
alloc.c IB/mlx4: Fix last allocated object tracking in bitmap allocator 2007-05-29 16:07:09 -07:00
catas.c mlx4_core: Reset device when internal error is detected 2007-07-17 18:37:42 -07:00
cmd.c mlx4_core: Use mmiowb() to avoid firmware commands getting jumbled up 2007-10-09 19:59:18 -07:00
cq.c mlx4_core: Fix CQ context layout 2007-06-07 11:51:57 -07:00
eq.c mlx4_core: Reset device when internal error is detected 2007-07-17 18:37:42 -07:00
fw.c mlx4_core: Change capability decoding: SRC->XRC 2007-10-09 19:59:13 -07:00
fw.h mlx4_core: Get the maximum message size from reported device capabilities 2007-07-09 20:12:26 -07:00
icm.c mlx4_core: Write MTTs from CPU instead with of WRITE_MTT FW command 2007-10-09 19:59:16 -07:00
icm.h mlx4_core: Write MTTs from CPU instead with of WRITE_MTT FW command 2007-10-09 19:59:16 -07:00
intf.c mlx4_core: Reset device when internal error is detected 2007-07-17 18:37:42 -07:00
main.c mlx4_core: Write MTTs from CPU instead with of WRITE_MTT FW command 2007-10-09 19:59:16 -07:00
Makefile IB/mlx4: Add a driver Mellanox ConnectX InfiniBand adapters 2007-05-08 18:00:38 -07:00
mcg.c IB/mlx4: Add a driver Mellanox ConnectX InfiniBand adapters 2007-05-08 18:00:38 -07:00
mlx4.h mlx4_core: Increase max number of QPs per multicast group to 56 2007-10-09 19:59:16 -07:00
mr.c IB/mlx4: Implement FMRs 2007-10-09 19:59:16 -07:00
pd.c IB/mlx4: Add a driver Mellanox ConnectX InfiniBand adapters 2007-05-08 18:00:38 -07:00
profile.c IB/mlx4: Add a driver Mellanox ConnectX InfiniBand adapters 2007-05-08 18:00:38 -07:00
qp.c mlx4_core: Don't free special QPs in QP number bitmap 2007-10-09 19:59:05 -07:00
reset.c mlx4_core: Wait 1 second after reset before accessing device 2007-08-13 08:47:44 -07:00
srq.c IB/mlx4: Fix up SRQ limit_watermark endianness 2007-10-09 19:59:06 -07:00