lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  PHC 
Open Source and information security mailing list archives
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Sun, 11 May 2014 15:15:09 +0300
From:	Or Gerlitz <>
	Or Gerlitz <>,
	Jiri Kosina <>, Mel Gorman <>,, linux-kernel <>
Subject: [PATCH v1 for-next 0/3] IB: Use GFP_NOIO calls in IPoIB connected mode TX path 

Hi Roland,

This series is a refactored form of the one posted by Jiri Kosina 
to LKML and netdev according to the discussion that followed
and the guidelines you provided here

Basically, the functionality changes introduced by this series fully 
reside on the IB side of things, so I am only posting the actual patches 
to linux-rdma with CC on the cover-letter to the lists that were on V0.


As described in the change log of patch #2 this series comes to address 
a problem whereby NFS client writes would enter uninterruptible sleep 
forever. The issue happened when using NFS over IPoIB connected mode.

The problem encountered was described as follows: it's not memory
reclamation that is the problem as such. There is an indirect dependency
between network filesystems writing back pages and ipoib_cm_tx_init()
due to how a kworker is used. Page reclaim cannot make forward progress
until ipoib_cm_tx_init() succeeds and it is stuck in page reclaim itself
waiting for network transmission. Ordinarily this situation may be
avoided by having the caller use GFP_NOFS but ipoib_cm_tx_init()
does not have that information.

To address this, we take a more general approach vs. V0 and generalize 
the solution such that when the new QP creation flag is provided, the
HW driver should use a GFP_NOIO for the memory allocations related
to the new QP.

changes from V0:
 - removed the module param for IPoIB, the connected mode code would
   attempt to use GFP_NOIO for the QP creation and fallback to GFP_KERNEL
   (as before) if the HW driver doesn't support that. This approach will let

Jiri Kosina (1):
  mlx4: Enhance the QP creation path to use a given GFP directive

Or Gerlitz (2):
  IB: Return error when QP creation are provided for driver not supporting that
  IB: Add a QP creation flag to allow specifying a NOIO allocation directive

 drivers/infiniband/hw/mlx4/cq.c                    |    6 ++--
 drivers/infiniband/hw/mlx4/mlx4_ib.h               |    1 +
 drivers/infiniband/hw/mlx4/qp.c                    |   30 +++++++++++--------
 drivers/infiniband/hw/mlx4/srq.c                   |    7 ++--
 drivers/infiniband/hw/qib/qib_qp.c                 |    3 +-
 drivers/infiniband/hw/usnic/usnic_ib_verbs.c       |    3 ++
 drivers/infiniband/ulp/ipoib/ipoib_cm.c            |   19 ++++++++++--
 drivers/net/ethernet/mellanox/mlx4/alloc.c         |   27 +++++++++--------
 drivers/net/ethernet/mellanox/mlx4/cq.c            |    4 +-
 drivers/net/ethernet/mellanox/mlx4/en_rx.c         |    6 ++--
 drivers/net/ethernet/mellanox/mlx4/en_tx.c         |    2 +-
 drivers/net/ethernet/mellanox/mlx4/icm.c           |    7 ++--
 drivers/net/ethernet/mellanox/mlx4/icm.h           |    3 +-
 drivers/net/ethernet/mellanox/mlx4/mlx4.h          |    4 +-
 drivers/net/ethernet/mellanox/mlx4/mr.c            |   17 ++++++-----
 drivers/net/ethernet/mellanox/mlx4/qp.c            |   20 ++++++------
 .../net/ethernet/mellanox/mlx4/resource_tracker.c  |    4 +-
 drivers/net/ethernet/mellanox/mlx4/srq.c           |    4 +-
 include/linux/mlx4/device.h                        |   10 ++++--
 include/rdma/ib_verbs.h                            |    1 +
 20 files changed, 104 insertions(+), 74 deletions(-)

Cc: Jiri Kosina <>
Cc: Mel Gorman <>
Cc: linux-kernel <>
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to
More majordomo info at

Powered by blists - more mailing lists