28 Apr, 2007

1 commit

  • * 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband: (49 commits)
    IB: Set class_dev->dev in core for nice device symlink
    IB/ehca: Implement modify_port
    IB/umad: Clarify documentation of transaction ID
    IPoIB/cm: spin_lock_irqsave() -> spin_lock_irq() replacements
    IB/mad: Change SMI to use enums rather than magic return codes
    IB/umad: Implement GRH handling for sent/received MADs
    IB/ipoib: Use ib_init_ah_from_path to initialize ah_attr
    IB/sa: Set src_path_bits correctly in ib_init_ah_from_path()
    IB/ucm: Simplify ib_ucm_event()
    RDMA/ucma: Simplify ucma_get_event()
    IB/mthca: Simplify CQ cleaning in mthca_free_qp()
    IB/mthca: Fix mthca_write_mtt() on HCAs with hidden memory
    IB/mthca: Update HCA firmware revisions
    IB/ipath: Fix WC format drift between user and kernel space
    IB/ipath: Check that a UD work request's address handle is valid
    IB/ipath: Remove duplicate stuff from ipath_verbs.h
    IB/ipath: Check reserved memory keys
    IB/ipath: Fix unit selection when all CPU affinity bits set
    IB/ipath: Don't allow QPs 0 and 1 to be opened multiple times
    IB/ipath: Disable IB link earlier in shutdown sequence
    ...

    Linus Torvalds
     

26 Apr, 2007

6 commits


25 Apr, 2007

11 commits

  • All RDMA drivers except ehca set class_dev->dev to their dma_device
    value (ehca leaves this unset). dma_device is the only value that
    makes any sense, so move this assignment to core/sysfs.c. This reduce
    the duplicated code in the rest of the drivers and gives ehca a nice
    /sys/class/infiniband/ehcaX/device symlink.

    Signed-off-by: Joachim Fenkes
    Signed-off-by: Roland Dreier

    Joachim Fenkes
     
  • Add "Modify Port" verb support to eHCA driver. The IB communication
    manager needs this to set the IsCM port capability bit when
    initializing.

    Signed-off-by: Joachim Fenkes
    Signed-off-by: Roland Dreier

    Joachim Fenkes
     
  • There are quite a few places in ipoib_cm.c where we know IRQs are
    enabled because we do something that sleeps in the same function, so
    we can convert several occurrences of spin_lock_irqsave() to a plain
    spin_lock_irq(). This cleans up the source a little and makes the
    code smaller too:

    add/remove: 0/0 grow/shrink: 1/5 up/down: 3/-51 (-48)
    function old new delta
    ipoib_cm_tx_reap 403 406 +3
    ipoib_cm_stale_task 146 145 -1
    ipoib_cm_dev_stop 173 172 -1
    ipoib_cm_tx_handler 964 956 -8
    ipoib_cm_rx_handler 956 937 -19
    ipoib_cm_skb_reap 212 190 -22

    Signed-off-by: Roland Dreier

    Roland Dreier
     
  • Clarify code by changing return values from SMI functions to named
    enum values instead of magic 0/1 values.

    Signed-off-by: Hal Rosenstock
    Signed-off-by: Roland Dreier

    Hal Rosenstock
     
  • We need to set the SGID index for routed MADs and pass received
    GRH information to userspace when a MAD is received.

    Signed-off-by: Sean Hefty

    Sean Hefty
     
  • To support destinations that are not on the local IB subnet, IPoIB
    should include the GRH information when constructing an address
    handle. Using the existing ib_init_ah_from_path() call will do this
    for us.

    Signed-off-by: Sean Hefty

    Sean Hefty
     
  • src_path_bits needs to mask off the base LID value.

    Signed-off-by: Sean Hefty

    Sean Hefty
     
  • Use wait_event_interruptible() instead of a more complicated
    open-coded equivalent.

    Signed-off-by: Sean Hefty

    Sean Hefty
     
  • Use wait_event_interruptible() instead of a more complicated
    open-coded equivalent.

    Signed-off-by: Sean Hefty

    Sean Hefty
     
  • mthca_free_qp() already has local variables to hold the QP's send_cq
    and recv_cq, so we can slightly clean up the calls to mthca_cq_clean()
    by using those local variables instead of expressions like
    to_mcq(qp->ibqp.send_cq).

    Also, by cleaning the recv_cq first, we can avoid worrying about
    whether the QP is attached to an SRQ for the second call, because we
    would only clean send_cq if send_cq is not equal to recv_cq, and that
    means send_cq cannot have any receive completions from the QP being
    destroyed.

    All this work even improves the generated code a bit:

    add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-5 (-5)
    function old new delta
    mthca_free_qp 510 505 -5

    Signed-off-by: Roland Dreier

    Roland Dreier
     
  • Commit b2875d4c ("IB/mthca: Always fill MTTs from CPU") causes a crash
    in mthca_write_mtt() with non-memfree HCAs that have their memory
    hidden (that is, have only two PCI BARs instead of having a third BAR
    that allows access to the RAM attached to the HCA) on 64-bit
    architectures. This is because the commit just before, c20e20ab
    ("IB/mthca: Merge MR and FMR space on 64-bit systems") makes
    dev->mr_table.fmr_mtt_buddy equal to &dev->mr_table.mtt_buddy and
    hence mthca_write_mtt() tries to write directly into the HCA's MTT
    table. However, since that table is in the HCA's memory, this is
    impossible without the PCI BAR that gives access to that memory.

    This causes a crash because mthca_tavor_write_mtt_seg() basically
    tries to dereference some offset of a NULL pointer. Fix this by
    adding a test of MTHCA_FLAG_FMR in mthca_write_mtt() so that we always
    use the WRITE_MTT firmware command rather than writing directly if
    FMRs are not enabled.

    Signed-off-by: Roland Dreier

    Roland Dreier
     

19 Apr, 2007

22 commits