1. 23 10月, 2008 2 次提交
    • 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
  2. 11 10月, 2008 1 次提交
  3. 21 9月, 2008 1 次提交
    • A
      IB/ehca: Generate flush status CQ entries · b9012e0a
      Alexander Schmidt 提交于
      When a QP goes into error state, it is required that CQ entries with a
      flush error status are delivered to the application for any
      outstanding work requests.  eHCA does not do this in hardware, so this
      patch adds software flush CQE generation to the ehca driver.
      
      Whenever a QP gets into error state, it is added to the QP error list
      of its respective CQ.  If the error QP list of a CQ is not empty,
      poll_cq() generates flush CQEs before polling the actual CQ.
      Signed-off-by: NAlexander Schmidt <alexs@linux.vnet.ibm.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      b9012e0a
  4. 24 8月, 2008 1 次提交
  5. 13 8月, 2008 5 次提交
  6. 04 8月, 2008 1 次提交
  7. 23 7月, 2008 3 次提交
  8. 15 7月, 2008 4 次提交
    • J
      IB/ehca: Make device table externally visible · 038919f2
      Joachim Fenkes 提交于
      This gives ehca an autogenerated modalias and therefore enables automatic loading.
      Signed-off-by: NJoachim Fenkes <fenkes@de.ibm.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      038919f2
    • S
      IB/ehca: In case of lost interrupts, trigger EOI to reenable interrupts · 6f7bc01a
      Stefan Roscher 提交于
      During corner case testing, we noticed that some versions of ehca do
      not properly transition to interrupt done in special load situations.
      This can be resolved by periodically triggering EOI through H_EOI, if
      EQEs are pending.
      Signed-off-by: NStefan Roscher <stefan.roscher@de.ibm.com>
      Acked-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      6f7bc01a
    • J
    • S
      RDMA/core: Add memory management extensions support · 00f7ec36
      Steve Wise 提交于
      This patch adds support for the IB "base memory management extension"
      (BMME) and the equivalent iWARP operations (which the iWARP verbs
      mandates all devices must implement).  The new operations are:
      
       - Allocate an ib_mr for use in fast register work requests.
      
       - Allocate/free a physical buffer lists for use in fast register work
         requests.  This allows device drivers to allocate this memory as
         needed for use in posting send requests (eg via dma_alloc_coherent).
      
       - New send queue work requests:
         * send with remote invalidate
         * fast register memory region
         * local invalidate memory region
         * RDMA read with invalidate local memory region (iWARP only)
      
      Consumer interface details:
      
       - A new device capability flag IB_DEVICE_MEM_MGT_EXTENSIONS is added
         to indicate device support for these features.
      
       - New send work request opcodes IB_WR_FAST_REG_MR, IB_WR_LOCAL_INV,
         IB_WR_RDMA_READ_WITH_INV are added.
      
       - A new consumer API function, ib_alloc_mr() is added to allocate
         fast register memory regions.
      
       - New consumer API functions, ib_alloc_fast_reg_page_list() and
         ib_free_fast_reg_page_list() are added to allocate and free
         device-specific memory for fast registration page lists.
      
       - A new consumer API function, ib_update_fast_reg_key(), is added to
         allow the key portion of the R_Key and L_Key of a fast registration
         MR to be updated.  Consumers call this if desired before posting
         a IB_WR_FAST_REG_MR work request.
      
      Consumers can use this as follows:
      
       - MR is allocated with ib_alloc_mr().
      
       - Page list memory is allocated with ib_alloc_fast_reg_page_list().
      
       - MR R_Key/L_Key "key" field is updated with ib_update_fast_reg_key().
      
       - MR made VALID and bound to a specific page list via
         ib_post_send(IB_WR_FAST_REG_MR)
      
       - MR made INVALID via ib_post_send(IB_WR_LOCAL_INV),
         ib_post_send(IB_WR_RDMA_READ_WITH_INV) or an incoming send with
         invalidate operation.
      
       - MR is deallocated with ib_dereg_mr()
      
       - page lists dealloced via ib_free_fast_reg_page_list().
      
      Applications can allocate a fast register MR once, and then can
      repeatedly bind the MR to different physical block lists (PBLs) via
      posting work requests to a send queue (SQ).  For each outstanding
      MR-to-PBL binding in the SQ pipe, a fast_reg_page_list needs to be
      allocated (the fast_reg_page_list is owned by the low-level driver
      from the consumer posting a work request until the request completes).
      Thus pipelining can be achieved while still allowing device-specific
      page_list processing.
      
      The 32-bit fast register memory key/STag is composed of a 24-bit index
      and an 8-bit key.  The application can change the key each time it
      fast registers thus allowing more control over the peer's use of the
      key/STag (ie it can effectively be changed each time the rkey is
      rebound to a page list).
      Signed-off-by: NSteve Wise <swise@opengridcomputing.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      00f7ec36
  9. 07 6月, 2008 1 次提交
  10. 24 5月, 2008 1 次提交
  11. 08 5月, 2008 1 次提交
  12. 06 5月, 2008 1 次提交
  13. 30 4月, 2008 2 次提交
  14. 29 4月, 2008 1 次提交
    • A
      IB: expand ib_umem_get() prototype · cb9fbc5c
      Arthur Kepner 提交于
      Add a new parameter, dmasync, to the ib_umem_get() prototype.  Use dmasync = 1
      when mapping user-allocated CQs with ib_umem_get().
      Signed-off-by: NArthur Kepner <akepner@sgi.com>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
      Cc: Jes Sorensen <jes@sgi.com>
      Cc: Randy Dunlap <randy.dunlap@oracle.com>
      Cc: Roland Dreier <rdreier@cisco.com>
      Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
      Cc: David Miller <davem@davemloft.net>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Grant Grundler <grundler@parisc-linux.org>
      Cc: Michael Ellerman <michael@ellerman.id.au>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      cb9fbc5c
  15. 24 4月, 2008 5 次提交
  16. 17 4月, 2008 6 次提交
    • S
      IB/ehca: Support all ibv_devinfo values in query_device() and query_port() · c83b5b1c
      Stefan Roscher 提交于
      Also, introduce a few inline helper functions to make the code more readable.
      Signed-off-by: NStefan Roscher <stefan.roscher@de.ibm.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      c83b5b1c
    • R
      IB/core: Add support for "send with invalidate" work requests · 0f39cf3d
      Roland Dreier 提交于
      Add a new IB_WR_SEND_WITH_INV send opcode that can be used to mark a
      "send with invalidate" work request as defined in the iWARP verbs and
      the InfiniBand base memory management extensions.  Also put "imm_data"
      and a new "invalidate_rkey" member in a new "ex" union in struct
      ib_send_wr. The invalidate_rkey member can be used to pass in an
      R_Key/STag to be invalidated.  Add this new union to struct
      ib_uverbs_send_wr.  Add code to copy the invalidate_rkey field in
      ib_uverbs_post_send().
      
      Fix up low-level drivers to deal with the change to struct ib_send_wr,
      and just remove the imm_data initialization from net/sunrpc/xprtrdma/,
      since that code never does any send with immediate operations.
      
      Also, move the existing IB_DEVICE_SEND_W_INV flag to a new bit, since
      the iWARP drivers currently in the tree set the bit.  The amso1100
      driver at least will silently fail to honor the IB_SEND_INVALIDATE bit
      if passed in as part of userspace send requests (since it does not
      implement kernel bypass work request queueing).  Remove the flag from
      all existing drivers that set it until we know which ones are OK.
      
      The values chosen for the new flag is not consecutive to avoid clashing
      with flags defined in the XRC patches, which are not merged yet but
      which are already in use and are likely to be merged soon.
      
      This resurrects a patch sent long ago by Mikkel Hagen <mhagen@iol.unh.edu>.
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      0f39cf3d
    • E
      IB/core: Add creation flags to struct ib_qp_init_attr · b846f25a
      Eli Cohen 提交于
      Add a create_flags member to struct ib_qp_init_attr that will allow a
      kernel verbs consumer to create a pass special flags when creating a QP.
      Add a flag value for telling low-level drivers that a QP will be used
      for IPoIB UD LSO.  The create_flags member will also be useful for XRC
      and ehca low-latency QP support.
      
      Since no create_flags handling is implemented yet, add code to all
      low-level drivers to return -EINVAL if create_flags is non-zero.
      Signed-off-by: NEli Cohen <eli@mellanox.co.il>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      b846f25a
    • H
      IB/ehca: Remove tgid checking · f4f82994
      Hoang-Nam Nguyen 提交于
      Pavel Emelyanov <xemul@openvz.org> mentioned in <http://lkml.org/lkml/2008/3/17/131>
      that the task_struct->tgid field is about to become deprecated, so the
      uses in the ehca driver need to be fixed up.
      
      However, all the uses in ehca are for some object ownership checking
      that is not really needed, and anyway is implementing a policy that
      should be in common code rather than a low-level driver.  So just
      remove all the checks.
      Signed-off-by: NHoang-Nam Nguyen <hnguyen@de.ibm.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      f4f82994
    • H
      IB: Replace remaining __FUNCTION__ occurrences with __func__ · 33718363
      Harvey Harrison 提交于
      __FUNCTION__ is gcc-specific, use __func__ instead.
      Signed-off-by: NHarvey Harrison <harvey.harrison@gmail.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      33718363
    • R
      IB/ehca: Make symbols used only in a single source file static · e8e91f6b
      Roland Dreier 提交于
      Allow the compiler to optimize better and generate smaller code:
      
      add/remove: 0/6 grow/shrink: 2/0 up/down: 1528/-1864 (-336)
      function                                     old     new   delta
      .ehca_set_pagebuf                           1344    2172    +828
      .ehca_probe                                 2312    3012    +700
      ehca_set_pagebuf_phys                         24       -     -24
      ehca_set_pagebuf_fmr                          24       -     -24
      ehca_init_device                              24       -     -24
      .ehca_set_pagebuf_fmr                        480       -    -480
      .ehca_set_pagebuf_phys                       512       -    -512
      .ehca_init_device                            800       -    -800
      
      Also this fixes warnings like:
      
          drivers/infiniband/hw/ehca/ehca_mrmw.c:2015:5: warning: symbol 'ehca_set_pagebuf_fmr' was not declared. Should it be static?
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      e8e91f6b
  17. 05 2月, 2008 3 次提交
  18. 26 1月, 2008 1 次提交