1. 05 2月, 2008 1 次提交
  2. 26 1月, 2008 3 次提交
    • J
      IB/ehca: Prevent RDMA-related connection failures on some eHCA2 hardware · 2ec8e662
      Joachim Fenkes 提交于
      Some HW revisions of eHCA2 may cause an RC connection to break if they
      received RDMA Reads over that connection before.  This can be
      prevented by assuring that, after the first RDMA Read, the QP receives
      a new RDMA Read every few million link packets.
      
      Include code into the driver that inserts an empty (size 0) RDMA Read
      into the message stream every now and then if the consumer doesn't
      post them frequently enough.
      Signed-off-by: NJoachim Fenkes <fenkes@de.ibm.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      2ec8e662
    • H
      IB/ehca: Add "port connection autodetect mode" · bbdd267e
      Hoang-Nam Nguyen 提交于
      This patch enhances ehca with a capability to "autodetect" the ports
      being connected physically. In order to utilize that function the
      module option nr_ports must be set to -1 (default is 2 - two
      ports). This feature is experimental and will made the default later.
      
      More detail:
      
      If the user connects only one port to the switch, current code requires
        1) port one to be connected and
        2) module option nr_ports=1 to be given.
      
      If autodetect is enabled, ehca will not wait at creation of the GSI QP
      for the respective port to become active. Since firmware does not
      accept modify_qp() while the port is down at initialization, we need
      to cache all calls to modify_qp() for the SMI/GSI QP and just return a
      good return code.
      
      When a port is activated and we get a PORT_ACTIVE event, we replay the
      cached modify-qp() parms and re-trigger any posted recv WRs. Only then
      do we forward the PORT_ACTIVE event to registered clients.
      
      The result of this autodetect patch is that all ports will be
      accessible by the users. Depending on their respective cabling only
      those ports that are connected properly will become operable. If a
      user tries to modify a regular QP of a non-connected port, modify_qp()
      will fail. Furthermore, ibv_devinfo should show the port state
      accordingly.
      
      Note that this patch primarily improves the loading behaviour of
      ehca. If the cable is removed while the driver is operating and
      plugged in again, firmware will handle that properly by sending an
      appropriate async event.
      Signed-off-by: NHoang-Nam Nguyen <hnguyen@de.ibm.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      bbdd267e
    • H
      b8b50e35
  3. 14 12月, 2007 1 次提交
  4. 14 11月, 2007 1 次提交
  5. 18 10月, 2007 1 次提交
  6. 17 10月, 2007 1 次提交
  7. 10 10月, 2007 4 次提交
  8. 29 7月, 2007 1 次提交
  9. 21 7月, 2007 2 次提交
    • S
      IB/ehca: Support small QP queues · e2f81daf
      Stefan Roscher 提交于
      eHCA2 supports QP queues that can be as small as 512 bytes. This
      greatly reduces memory overhead for consumers that use lots of QPs
      with small queues (e.g. RDMA-only QPs). Apart from dealing with
      firmware, this code needs to manage bite-sized chunks of kernel pages,
      making sure that no kernel page is shared between different protection
      domains.
      Signed-off-by: NHoang-Nam Nguyen <hnguyen@de.ibm.com>
      e2f81daf
    • H
      IB/ehca: Support large page MRs · 5bb7d929
      Hoang-Nam Nguyen 提交于
      Add support for MR pages larger than 4K on eHCA2. This reduces
      firmware memory consumption.  If enabled via the mr_largepage module
      parameter, the MR page size will be determined based on the MR length
      and the hardware capabilities -- if the MR is >= 16M, 16M pages are
      used, for example.
      Signed-off-by: NJoachim Fenkes <fenkes@de.ibm.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      5bb7d929
  10. 18 7月, 2007 2 次提交
  11. 10 7月, 2007 7 次提交
  12. 15 5月, 2007 1 次提交
  13. 09 5月, 2007 1 次提交
    • R
      IB/uverbs: Export ib_umem_get()/ib_umem_release() to modules · f7c6a7b5
      Roland Dreier 提交于
      Export ib_umem_get()/ib_umem_release() and put low-level drivers in
      control of when to call ib_umem_get() to pin and DMA map userspace,
      rather than always calling it in ib_uverbs_reg_mr() before calling the
      low-level driver's reg_user_mr method.
      
      Also move these functions to be in the ib_core module instead of
      ib_uverbs, so that driver modules using them do not depend on
      ib_uverbs.
      
      This has a number of advantages:
       - It is better design from the standpoint of making generic code a
         library that can be used or overridden by device-specific code as
         the details of specific devices dictate.
       - Drivers that do not need to pin userspace memory regions do not
         need to take the performance hit of calling ib_mem_get().  For
         example, although I have not tried to implement it in this patch,
         the ipath driver should be able to avoid pinning memory and just
         use copy_{to,from}_user() to access userspace memory regions.
       - Buffers that need special mapping treatment can be identified by
         the low-level driver.  For example, it may be possible to solve
         some Altix-specific memory ordering issues with mthca CQs in
         userspace by mapping CQ buffers with extra flags.
       - Drivers that need to pin and DMA map userspace memory for things
         other than memory regions can use ib_umem_get() directly, instead
         of hacks using extra parameters to their reg_phys_mr method.  For
         example, the mlx4 driver that is pending being merged needs to pin
         and DMA map QP and CQ buffers, but it does not need to create a
         memory key for these buffers.  So the cleanest solution is for mlx4
         to call ib_umem_get() in the create_qp and create_cq methods.
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      f7c6a7b5
  14. 25 4月, 2007 1 次提交
  15. 02 3月, 2007 1 次提交
    • H
      IB/ehca: Fix sync between completion handler and destroy cq · 31726798
      Hoang-Nam Nguyen 提交于
      This patch fixes two issues reported by Roland Dreier and Christoph Hellwig:
      
      - Mismatched sync/locking between completion handler and destroy cq We
        introduced a counter nr_events per cq to track number of irq events
        seen. This counter is incremented when an event queue entry is seen
        and decremented after completion handler has been called regardless
        if scaling code is active or not. Note that nr_callbacks tracks
        number of events assigned to a cpu and both counters can potentially
        diverge.
      
        The sync between running completion handler and destroy cq is done
        by using the global spin lock ehca_cq_idr_lock.
      
      - Replace yield by wait_event on the counter above to become zero.
      Signed-off-by: NHoang-Nam Nguyen <hnguyen@de.ibm.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      31726798
  16. 17 2月, 2007 2 次提交
  17. 05 2月, 2007 2 次提交
  18. 23 9月, 2006 1 次提交