1. 11 11月, 2008 1 次提交
    • S
      RDMA/cxgb3: deadlock in iw_cxgb3 can cause hang when configuring interface. · cf3760da
      Steve Wise 提交于
      When the iw_cxgb3 module's cxgb3_client "add" func gets called by the
      cxgb3 module, the iwarp driver ends up calling the ethtool ops get_drvinfo
      function in cxgb3 to get the fw version and other info.  Currently the
      iwarp driver grabs the rtnl lock around this down call to serialize.
      As of 2.6.27 or so, things changed such that the rtnl lock is held around
      the call to the netdev driver open function.  Also the cxgb3_client "add"
      function doesn't get called if the device is down.
      
      So, if you load cxgb3, then load iw_cxgb3, then ifconfig up the device,
      the iw_cxgb3 add func gets called with the rtnl_lock held.   If you
      load cxgb3, ifconfig up the device, then load iw_cxgb3, the add func
      gets called without the rtnl_lock held.  The former causes the deadlock,
      the latter does not.
      
      In addition, there are iw_cxgb3 sysfs handlers that also can call
      down into cxgb3 to gather the fw and hw versions.  These can be called
      concurrently on different processors and at any time.  Thus we need to
      push this serialization down in the cxgb3 driver get_drvinfo func.
      
      The fix is to remove rtnl lock usage, and use a per-device lock in cxgb3.
      Signed-off-by: NSteve Wise <swise@opengridcomputing.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      cf3760da
  2. 23 10月, 2008 3 次提交
    • S
      IB/ehca: Reject dynamic memory add/remove when ehca adapter is present · 263c24a2
      Stefan Roscher 提交于
      Since the ehca device driver does not support dynamic memory add and
      remove operations, the driver must explicitly reject such requests in
      order to prevent unpredictable behaviors related to existing memory
      regions that cover all of memory being used by InfiniBand protocols in
      the kernel.
      
      The solution (for now at least) is to add a memory notifier to the
      ehca device driver and if a request for dynamic memory add or remove
      comes in, ehca will always reject it.  The user can add or remove
      memory by hot-removing the ehca adapter, performing the memory
      operation, and then hot-adding the ehca adapter back.
      Signed-off-by: NStefan Roscher <stefan.roscher@de.ibm.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      263c24a2
    • S
      IB/ehca: Fix reported max number of QPs and CQs in systems with >1 adapter · 19f42821
      Stefan Roscher 提交于
      Because ehca adapters can differ in the maximum number of QPs and CQs
      we have to save the maximum number of these ressources per adapter and
      not globally per ehca driver. This fix introduces 2 new members to the
      shca structure to store the maximum value for QPs and CQs per adapter.
      
      The module parameters are now used as initial values for those
      variables.  If a user selects an invalid number of CQs or QPs we don't
      print an error any longer, instead we will inform the user with a
      warning and set the values to the respective maximum supported by the
      HW.
      Signed-off-by: NStefan Roscher <stefan.roscher@de.ibm.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      19f42821
    • Y
      mlx4_core: Multiple port type support · 7ff93f8b
      Yevgeny Petrilin 提交于
      Multi-protocol adapters support different port types.  Each consumer
      of mlx4_core queries for supported port types; in particular mlx4_ib
      can no longer assume that all physical ports belong to it.  Port type
      is configured through a sysfs interface.  When the type of a port is
      changed, all mlx4 interfaces are unregistered, and then registered
      again with the new port types.
      Signed-off-by: NYevgeny Petrilin <yevgenyp@mellanox.co.il>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      7ff93f8b
  3. 17 10月, 2008 1 次提交
  4. 16 10月, 2008 1 次提交
  5. 11 10月, 2008 2 次提交
  6. 10 10月, 2008 1 次提交
  7. 09 10月, 2008 2 次提交
  8. 04 10月, 2008 2 次提交
  9. 01 10月, 2008 15 次提交
  10. 30 9月, 2008 2 次提交
  11. 21 9月, 2008 3 次提交
  12. 17 9月, 2008 1 次提交
  13. 16 9月, 2008 1 次提交
  14. 28 8月, 2008 1 次提交
  15. 24 8月, 2008 1 次提交
  16. 16 8月, 2008 2 次提交
  17. 13 8月, 2008 1 次提交
    • A
      IB/ehca: Discard double CQE for one WR · 6773f079
      Alexander Schmidt 提交于
      Under rare circumstances, the ehca hardware might erroneously generate
      two CQEs for the same WQE, which is not compliant to the IB spec and
      will cause unpredictable errors like memory being freed twice. To
      avoid this problem, the driver needs to detect the second CQE and
      discard it.
      
      For this purpose, introduce an array holding as many elements as the
      SQ of the QP, called sq_map. Each sq_map entry stores a "reported"
      flag for one WQE in the SQ. When a work request is posted to the SQ,
      the respective "reported" flag is set to zero. After the arrival of a
      CQE, the flag is set to 1, which allows to detect the occurence of a
      second CQE.
      
      The mapping between WQE / CQE and the corresponding sq_map element is
      implemented by replacing the lowest 16 Bits of the wr_id with the
      index in the queue map. The original 16 Bits are stored in the sq_map
      entry and are restored when the CQE is passed to the application.
      Signed-off-by: NAlexander Schmidt <alexs@linux.vnet.ibm.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      6773f079