LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [GIT PULL] please pull infiniband.git
@ 2011-02-03 18:05 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2011-02-03 18:05 UTC (permalink / raw)
  To: Linus Torvalds, Andrew Morton; +Cc: linux-kernel, linux-rdma

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a few small things:
 - Low-level driver fixes to qib, cxgb4 and amso1100
 - Add PCI IDs for new Mellanox devices to mlx4
 - Add a dropped hunk of Tejun's workqueue conversion
 - Fix route query for iWARP connections

Mitko Haralanov (1):
      IB/qib: Hold link for TX SERDES settings

Ralf Thielow (1):
      RDMA/amso1100: Fix compile warnings

Roland Dreier (1):
      Merge branches 'amso1100', 'cma', 'cxgb4', 'misc', 'mlx4' and 'qib' into for-next

Steve Wise (3):
      RDMA/cxgb4: Limit MAXBURST EQ context field to 256B
      RDMA/cxgb4: Set the correct device physical function for iWARP connections
      RDMA/ucma: Copy iWARP route information on queries

Tejun Heo (1):
      RDMA: Update missed conversion of flush_scheduled_work()

Yevgeny Petrilin (1):
      mlx4_core: Add ConnectX-3 device IDs

 drivers/infiniband/core/sa_query.c      |    2 +-
 drivers/infiniband/core/ucma.c          |   22 ++++++++++++++++++++--
 drivers/infiniband/hw/amso1100/c2_vq.c  |    6 +++---
 drivers/infiniband/hw/cxgb4/cm.c        |    2 +-
 drivers/infiniband/hw/cxgb4/qp.c        |    4 ++--
 drivers/infiniband/hw/qib/qib_iba7322.c |   30 +++++++++++-------------------
 drivers/net/mlx4/main.c                 |   15 +++++++++++++++
 7 files changed, 53 insertions(+), 28 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2015-04-22 17:08 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2015-04-22 17:08 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------
InfiniBand/RDMA updates for 4.1:
 - IPoIB fixes from Doug Ledford and Erez Shitrit
 - iSER updates from Sagi Grimberg
 - mlx4 GUID handling changes from Yishai Hadas
 - other misc fixes

----------------------------------------------------------------
Bart Van Assche (1):
      IB/srp: Use P_Key cache for P_Key lookups

Doug Ledford (11):
      IB/ipoib: factor out ah flushing
      IB/ipoib: change init sequence ordering
      IB/ipoib: Consolidate rtnl_lock tasks in workqueue
      IB/ipoib: Make the carrier_on_task race aware
      IB/ipoib: Use dedicated workqueues per interface
      IB/ipoib: No longer use flush as a parameter
      IB/ipoib: fix MCAST_FLAG_BUSY usage
      IB/ipoib: deserialize multicast joins
      IB/ipoib: drop mcast_mutex usage
      ib_srpt: convert printk's to pr_* functions
      Merge branches 'cve-fixup', 'ipoib', 'iser', 'misc-4.1', 'or-mlx4' and 'srp' into for-4.1

Erez Shitrit (6):
      IB/ipoib: Use one linear skb in RX flow
      IB/ipoib: Update broadcast record values after each successful join request
      IB/ipoib: Handle QP in SQE state
      IB/ipoib: Save only IPOIB_MAX_PATH_REC_QUEUE skb's
      IB/ipoib: Remove IPOIB_MCAST_RUN bit
      IB/mlx4: Fix WQE LSO segment calculation

Honggang LI (1):
      mlx5: wrong page mask if CONFIG_ARCH_DMA_ADDR_T_64BIT enabled for 32Bit architectures

Sagi Grimberg (18):
      IB/iser: Fix unload during ep_poll wrong dereference
      IB/iser: Handle fastreg/local_inv completion errors
      IB/iser: Fix wrong calculation of protection buffer length
      IB/iser: Remove redundant cmd_data_len calculation
      IB/iser: Remove a redundant struct iser_data_buf
      IB/iser: Don't pass ib_device to fall_to_bounce_buff routine
      IB/iser: Move memory reg/dereg routines to iser_memory.c
      IB/iser: Remove redundant assignments in iser_reg_page_vec
      IB/iser: Get rid of struct iser_rdma_regd
      IB/iser: Merge build page-vec into register page-vec
      IB/iser: Move fastreg descriptor pool get/put to helper functions
      IB/iser: Move PI context alloc/free to routines
      IB/iser: Make fastreg pool cache friendly
      IB/iser: Modify struct iser_mem_reg members
      IB/iser: Pass struct iser_mem_reg to iser_fast_reg_mr and iser_reg_sig_mr
      IB/iser: Remove code duplication for a single DMA entry
      IB/iser: Bump version to 1.6
      IB/iser: Rewrite bounce buffer code path

Sebastian Ott (1):
      infiniband/mlx4: check for mapping error

Selvin Xavier (1):
      MAINTAINERS: Adding list of maintainers for ocrdma

Stephen Hemminger (1):
      rdma: replace deprecated ifconfig in doc

Sébastien Dugué (1):
      ib_uverbs: Fix pages leak when using XRC SRQs

Yann Droneaud (2):
      IB/core: disallow registering 0-sized memory region
      IB/core: don't disallow registering region starting at 0x0

Yishai Hadas (9):
      IB/mlx4: Alias GUID adding persistency support
      net/mlx4_core: Manage alias GUID per VF
      net/mlx4_core: Set initial admin GUIDs for VFs
      IB/mlx4: Manage admin alias GUID upon admin request
      IB/mlx4: Change init flow to request alias GUIDs for active VFs
      IB/mlx4: Request alias GUID on demand
      net/mlx4_core: Raise slave shutdown event upon FLR
      net/mlx4_core: Return the admin alias GUID upon host view request
      IB/mlx4: Change alias guids default to be host assigned

 Documentation/filesystems/nfs/nfs-rdma.txt         |   9 +-
 MAINTAINERS                                        |   9 +
 drivers/infiniband/core/umem.c                     |   7 +-
 drivers/infiniband/core/uverbs_main.c              |  22 +-
 drivers/infiniband/hw/mlx4/alias_GUID.c            | 457 +++++++++++++-----
 drivers/infiniband/hw/mlx4/mad.c                   |   9 +
 drivers/infiniband/hw/mlx4/main.c                  |  26 +-
 drivers/infiniband/hw/mlx4/mlx4_ib.h               |  14 +-
 drivers/infiniband/hw/mlx4/qp.c                    |   7 +-
 drivers/infiniband/hw/mlx4/sysfs.c                 |  44 +-
 drivers/infiniband/ulp/ipoib/ipoib.h               |  31 +-
 drivers/infiniband/ulp/ipoib/ipoib_cm.c            |  18 +-
 drivers/infiniband/ulp/ipoib/ipoib_ib.c            | 195 ++++----
 drivers/infiniband/ulp/ipoib/ipoib_main.c          |  73 ++-
 drivers/infiniband/ulp/ipoib/ipoib_multicast.c     | 520 ++++++++++----------
 drivers/infiniband/ulp/ipoib/ipoib_verbs.c         |  44 +-
 drivers/infiniband/ulp/iser/iscsi_iser.h           |  66 +--
 drivers/infiniband/ulp/iser/iser_initiator.c       |  66 ++-
 drivers/infiniband/ulp/iser/iser_memory.c          | 523 ++++++++++++---------
 drivers/infiniband/ulp/iser/iser_verbs.c           | 220 +++------
 drivers/infiniband/ulp/srp/ib_srp.c                |   9 +-
 drivers/infiniband/ulp/srpt/ib_srpt.c              | 188 ++++----
 drivers/net/ethernet/mellanox/mlx4/cmd.c           |  42 +-
 drivers/net/ethernet/mellanox/mlx4/eq.c            |   2 +
 drivers/net/ethernet/mellanox/mlx4/main.c          |  31 ++
 drivers/net/ethernet/mellanox/mlx4/mlx4.h          |   1 +
 .../net/ethernet/mellanox/mlx5/core/pagealloc.c    |  10 +-
 include/linux/mlx4/device.h                        |   4 +
 28 files changed, 1513 insertions(+), 1134 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2015-04-02 17:27 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2015-04-02 17:27 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------
One 4.0 RDMA change:
 - Fix for exploitable integer overflow in uverbs interface.

----------------------------------------------------------------
Shachar Raindel (1):
      IB/uverbs: Prevent integer overflow in ib_umem_get address arithmetic

 drivers/infiniband/core/umem.c | 8 ++++++++
 1 file changed, 8 insertions(+)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2015-02-20 17:08 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2015-02-20 17:08 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-rdma

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------
InfiniBand/RDMA changes for 3.20 merge window:
 - Re-enable on-demand paging changes with stable ABI
 - Fairly large set of ocrdma HW driver fixes
 - Some qib HW driver fixes
 - Other miscellaneous changes

----------------------------------------------------------------
Andreea-Cristina Bernat (2):
      IB/qib: Replace rcu_assign_pointer() with RCU_INIT_POINTER() in qib_qp.c
      IB/qib: Replace rcu_assign_pointer() with RCU_INIT_POINTER() in qib_keys.c

Ariel Nahum (1):
      IB/iser: Release the iscsi endpoint if ep_disconnect wasn't called

Bart Van Assche (1):
      MAINTAINERS: Update SRP initiator entry

Dan Carpenter (2):
      IB/mlx5: Fix error code in get_port_caps()
      RDMA/ocrdma: Fix off by one in ocrdma_query_gid()

Devesh Sharma (4):
      RDMA/ocrdma: Report correct count of interrupt vectors while registering ocrdma device
      RDMA/ocrdma: Discontinue support of RDMA-READ-WITH-INVALIDATE
      RDMA/ocrdma: Honor return value of ocrdma_resolve_dmac
      RDMA/ocrdma: set vlan present bit for user AH

Eli Cohen (1):
      IB/core: Add support for extended query device caps

Haggai Eran (3):
      IB/core: Properly handle registration of on-demand paging MRs after dereg
      IB/core: Add on demand paging caps to ib_uverbs_ex_query_device
      IB/mlx5: Enable the ODP capability query verb

Hariprasad S (2):
      RDMA/cxgb4: Serialize CQ event upcalls with CQ destruction
      RDMA/cxgb4: Don't hang threads forever waiting on WR replies

Ilya Nelkenbaum (1):
      IB/core: When marshaling ucma path from user-space, clear unused fields

Jack Morgenstein (1):
      IB/mlx4: In mlx4_ib_demux_cm, print out GUID in host-endian order

Majd Dibbiny (3):
      IB/mlx4: Fix memory leak in __mlx4_ib_modify_qp
      IB/mlx4: Bug fixes in mlx4_ib_resize_cq
      IB/mlx5: Update the dev in reg_create

Mike Marciniszyn (3):
      IB/qib: Fix sizeof checkpatch warnings
      IB/qib: Fix checkpatch warnings
      IB/qib: Add blank line after declaration

Mitesh Ahuja (7):
      RDMA/ocrdma: Add support for IB stack compliant stats in sysfs.
      RDMA/ocrdma: Increase the GID table size.
      RDMA/ocrdma: Move PD resource management to driver.
      RDMA/ocrdma: Host crash on destroying device resources
      RDMA/ocrdma: Add support for interrupt moderation
      RDMA/ocrdma: remove reference of ocrdma_dev out of ocrdma_qp structure
      RDMA/ocrdma: Update the ocrdma module version string

Mitko Haralanov (1):
      IB/qib: Do not write EEPROM

Moshe Lazer (1):
      IB/core: Fix deadlock on uverbs modify_qp error flow

Or Gerlitz (1):
      IB/mlx4: Fix wrong usage of IPv4 protocol for multicast attach/detach

Padmanabh Ratnakar (1):
      RDMA/ocrdma: Report correct state in ibv_query_qp

Rasmus Villemoes (2):
      RDMA/ocrdma: Help gcc generate better code for ocrdma_srq_toggle_bit
      RDMA/ocrdma: Use unsigned for bit index

Rickard Strandqvist (1):
      IB/ipath: Remove unused function in ipath_wc_ppc64

Roi Dayan (1):
      IB/iser: Use correct dma direction when unmapping SGs

Roland Dreier (1):
      Merge branches 'core', 'cxgb4', 'iser', 'mlx4', 'mlx5', 'ocrdma', 'odp', 'qib' and 'srp' into for-next

Sagi Grimberg (1):
      IB/iser: Fix memory regions possible leak

Selvin Xavier (2):
      RDMA/ocrdma: Debugfs enhancments for ocrdma driver
      RDMA/ocrdma: Allow expansion of the SQ CQEs via buddy CQ expansion of the QP

Vinit Agnihotri (1):
      IB/qib: Add support for the new QMH7360 card

 MAINTAINERS                                   |   2 +-
 drivers/infiniband/core/ucma.c                |   3 +
 drivers/infiniband/core/umem_odp.c            |   3 +-
 drivers/infiniband/core/uverbs.h              |   1 +
 drivers/infiniband/core/uverbs_cmd.c          | 158 +++++++++----
 drivers/infiniband/core/uverbs_main.c         |   1 +
 drivers/infiniband/hw/cxgb4/ev.c              |   9 +-
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h        |  29 ++-
 drivers/infiniband/hw/ipath/ipath_kernel.h    |   3 -
 drivers/infiniband/hw/ipath/ipath_wc_ppc64.c  |  13 --
 drivers/infiniband/hw/ipath/ipath_wc_x86_64.c |  15 --
 drivers/infiniband/hw/mlx4/cm.c               |   2 +-
 drivers/infiniband/hw/mlx4/cq.c               |   7 +-
 drivers/infiniband/hw/mlx4/main.c             |  10 +-
 drivers/infiniband/hw/mlx4/qp.c               |   6 +-
 drivers/infiniband/hw/mlx5/main.c             |   4 +-
 drivers/infiniband/hw/mlx5/mr.c               |   1 +
 drivers/infiniband/hw/ocrdma/ocrdma.h         |  38 +++-
 drivers/infiniband/hw/ocrdma/ocrdma_ah.c      |  38 +++-
 drivers/infiniband/hw/ocrdma/ocrdma_ah.h      |   6 +
 drivers/infiniband/hw/ocrdma/ocrdma_hw.c      | 312 ++++++++++++++++++++++----
 drivers/infiniband/hw/ocrdma/ocrdma_hw.h      |   2 +
 drivers/infiniband/hw/ocrdma/ocrdma_main.c    |  12 +-
 drivers/infiniband/hw/ocrdma/ocrdma_sli.h     |  68 +++++-
 drivers/infiniband/hw/ocrdma/ocrdma_stats.c   | 241 ++++++++++++++++++++
 drivers/infiniband/hw/ocrdma/ocrdma_stats.h   |   6 +-
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c   | 183 ++++++++++++---
 drivers/infiniband/hw/qib/qib.h               |  16 +-
 drivers/infiniband/hw/qib/qib_common.h        |   4 +-
 drivers/infiniband/hw/qib/qib_debugfs.c       |   1 -
 drivers/infiniband/hw/qib/qib_diag.c          |   9 +-
 drivers/infiniband/hw/qib/qib_driver.c        |   5 +-
 drivers/infiniband/hw/qib/qib_eeprom.c        | 198 +---------------
 drivers/infiniband/hw/qib/qib_file_ops.c      |  26 ++-
 drivers/infiniband/hw/qib/qib_fs.c            |   9 +-
 drivers/infiniband/hw/qib/qib_iba6120.c       |  15 +-
 drivers/infiniband/hw/qib/qib_iba7220.c       |  14 +-
 drivers/infiniband/hw/qib/qib_iba7322.c       |  52 +++--
 drivers/infiniband/hw/qib/qib_init.c          |  12 +-
 drivers/infiniband/hw/qib/qib_intr.c          |   1 -
 drivers/infiniband/hw/qib/qib_keys.c          |   4 +-
 drivers/infiniband/hw/qib/qib_mad.c           |  20 +-
 drivers/infiniband/hw/qib/qib_mmap.c          |   2 +-
 drivers/infiniband/hw/qib/qib_mr.c            |  10 +-
 drivers/infiniband/hw/qib/qib_pcie.c          |  10 +-
 drivers/infiniband/hw/qib/qib_qp.c            |   8 +-
 drivers/infiniband/hw/qib/qib_qsfp.c          |  13 +-
 drivers/infiniband/hw/qib/qib_rc.c            |   4 +-
 drivers/infiniband/hw/qib/qib_ruc.c           |   8 +-
 drivers/infiniband/hw/qib/qib_sd7220.c        |   9 +-
 drivers/infiniband/hw/qib/qib_sysfs.c         |  28 +--
 drivers/infiniband/hw/qib/qib_twsi.c          |   5 +-
 drivers/infiniband/hw/qib/qib_tx.c            |   1 +
 drivers/infiniband/hw/qib/qib_ud.c            |   2 +-
 drivers/infiniband/hw/qib/qib_user_sdma.c     |   8 +-
 drivers/infiniband/hw/qib/qib_verbs.c         |  15 +-
 drivers/infiniband/hw/qib/qib_verbs_mcast.c   |   4 +-
 drivers/infiniband/hw/qib/qib_wc_x86_64.c     |   7 +-
 drivers/infiniband/ulp/iser/iscsi_iser.h      |   4 +-
 drivers/infiniband/ulp/iser/iser_initiator.c  |  16 +-
 drivers/infiniband/ulp/iser/iser_memory.c     |   9 +-
 drivers/infiniband/ulp/iser/iser_verbs.c      |  27 ++-
 include/uapi/rdma/ib_user_verbs.h             |  23 ++
 63 files changed, 1212 insertions(+), 560 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2015-02-06 21:19 Roland Dreier
@ 2015-02-07 15:58 ` Yann Droneaud
  0 siblings, 0 replies; 223+ messages in thread
From: Yann Droneaud @ 2015-02-07 15:58 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Roland Dreier, linux-rdma, linux-kernel

Hi,

Le vendredi 06 février 2015 à 13:19 -0800, Roland Dreier a écrit :
> 
> Please pull from
> 
>     git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus
> 
> ----------------------------------------------------------------
> One more last-second RDMA change for 3.19:
>  - Yann realized that the previous revert of new userspace ABI did not
>    go far enough, and we're still exposing a change that we don't want.
>    Revert even closer to 3.18 interface to make sure we get things right
>    in the long run.
> 
> Sorry for sending this at the very end of the release cycle, but we
> didn't realize the scope of the required fix until just now.
> 

I hope this could go in v3.19 as, at this stage, we don't want to expose
any bits of this ABI in a released kernel.

Regards.

-- 
Yann Droneaud
OPTEYA



^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2015-02-06 21:19 Roland Dreier
  2015-02-07 15:58 ` Yann Droneaud
  0 siblings, 1 reply; 223+ messages in thread
From: Roland Dreier @ 2015-02-06 21:19 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------
One more last-second RDMA change for 3.19:
 - Yann realized that the previous revert of new userspace ABI did not
   go far enough, and we're still exposing a change that we don't want.
   Revert even closer to 3.18 interface to make sure we get things right
   in the long run.

Sorry for sending this at the very end of the release cycle, but we
didn't realize the scope of the required fix until just now.

----------------------------------------------------------------
Yann Droneaud (1):
      Revert "IB/core: Add support for extended query device caps"

 drivers/infiniband/core/uverbs.h     |   1 -
 drivers/infiniband/core/uverbs_cmd.c | 137 +++++++++++------------------------
 drivers/infiniband/hw/mlx5/main.c    |   2 -
 include/rdma/ib_verbs.h              |   5 +-
 include/uapi/rdma/ib_user_verbs.h    |  27 -------
 5 files changed, 42 insertions(+), 130 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2015-02-03 21:42 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2015-02-03 21:42 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------
Last minute InfiniBand/RDMA changes for 3.19:
 - Revert IPoIB driver back to 3.18 state.  We had a number of fixes go
   into 3.19, but they introduced regressions.  We tried to get everything
   fixed up but ran out of time, so we'll try again for 3.20.
 - Similarly, turn off the new "extended query port" verb.  Late in the
   cycle we realized the ABI is not quite right, and rather than freeze
   something in a rush and make a mistake, we'll take a bit more time
   and get it right in 3.20.

----------------------------------------------------------------
Haggai Eran (1):
      IB/core: Temporarily disable ex_query_device uverb

Roland Dreier (9):
      Revert "IPoIB: No longer use flush as a parameter"
      Revert "IPoIB: Make ipoib_mcast_stop_thread flush the workqueue"
      Revert "IPoIB: Use dedicated workqueues per interface"
      Revert "IPoIB: change init sequence ordering"
      Revert "IPoIB: fix mcast_dev_flush/mcast_restart_task race"
      Revert "IPoIB: fix MCAST_FLAG_BUSY usage"
      Revert "IPoIB: Make the carrier_on_task race aware"
      Revert "IPoIB: Consolidate rtnl_lock tasks in workqueue"
      Merge branches 'ipoib' and 'odp' into for-next

 drivers/infiniband/core/uverbs_main.c          |   1 -
 drivers/infiniband/ulp/ipoib/ipoib.h           |  19 +-
 drivers/infiniband/ulp/ipoib/ipoib_cm.c        |  18 +-
 drivers/infiniband/ulp/ipoib/ipoib_ib.c        |  27 +--
 drivers/infiniband/ulp/ipoib/ipoib_main.c      |  49 ++---
 drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 239 +++++++++----------------
 drivers/infiniband/ulp/ipoib/ipoib_verbs.c     |  22 +--
 7 files changed, 134 insertions(+), 241 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2014-12-19  0:03 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2014-12-19  0:03 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------
Main batch of InfiniBand/RDMA changes for 3.19:

 - On-demand paging support in core midlayer and mlx5 driver.  This lets
   userspace create non-pinned memory regions and have the adapter HW
   trigger page faults.
 - iSER and IPoIB updates and fixes.
 - Low-level HW driver updates for cxgb4, mlx4 and ocrdma.
 - Other miscellaneous fixes.

----------------------------------------------------------------
Ariel Nahum (2):
      IB/iser: Collapse cleanup and disconnect handlers
      IB/iser: Fix possible NULL derefernce ib_conn->device in session_create

Devesh Sharma (1):
      RDMA/ocrdma: Always resolve destination mac from GRH for UD QPs

Doug Ledford (8):
      IPoIB: Consolidate rtnl_lock tasks in workqueue
      IPoIB: Make the carrier_on_task race aware
      IPoIB: fix MCAST_FLAG_BUSY usage
      IPoIB: fix mcast_dev_flush/mcast_restart_task race
      IPoIB: change init sequence ordering
      IPoIB: Use dedicated workqueues per interface
      IPoIB: Make ipoib_mcast_stop_thread flush the workqueue
      IPoIB: No longer use flush as a parameter

Eli Cohen (1):
      IB/core: Add support for extended query device caps

Haggai Eran (14):
      IB/mlx5: Remove per-MR pas and dma pointers
      IB/mlx5: Enhance UMR support to allow partial page table update
      IB/core: Replace ib_umem's offset field with a full address
      IB/core: Add umem function to read data from user-space
      IB/mlx5: Add function to read WQE from user-space
      IB/core: Implement support for MMU notifiers regarding on demand paging regions
      mlx5_core: Add support for page faults events and low level handling
      IB/mlx5: Implement the ODP capability query verb
      IB/mlx5: Changes in memory region creation to support on-demand paging
      IB/mlx5: Add mlx5_ib_update_mtt to update page tables after creation
      IB/mlx5: Page faults handling infrastructure
      IB/mlx5: Handle page faults
      IB/mlx5: Add support for RDMA read/write responder page faults
      IB/mlx5: Implement on demand paging by adding support for MMU notifiers

Hariprasad S (1):
      RDMA/cxgb4: Handle NET_XMIT return codes

Hariprasad Shenai (2):
      RDMA/cxgb4: Fix locking issue in process_mpa_request
      RDMA/cxgb4: Limit MRs to < 8GB for T4/T5 devices

Jack Morgenstein (2):
      IB/core: Fix mgid key handling in SA agent multicast data-base
      IB/mlx4: Fix an incorrectly shadowed variable in mlx4_ib_rereg_user_mr

Max Gurtovoy (1):
      IB/iser: Fix possible SQ overflow

Minh Tran (1):
      IB/iser: Re-adjust CQ and QP send ring sizes to HW limits

Mitesh Ahuja (1):
      RDMA/ocrdma: Fix ocrdma_query_qp() to report q_key value for UD QPs

Moni Shoua (1):
      IB/core: Do not resolve VLAN if already resolved

Or Gerlitz (1):
      IB/iser: Bump version to 1.5

Or Kehati (1):
      IB/addr: Improve address resolution callback scheduling

Pramod Kumar (2):
      RDMA/cxgb4: Increase epd buff size for debug interface
      RDMA/cxgb4: Configure 0B MRs to match HW implementation

Roland Dreier (2):
      mlx5_core: Re-add MLX5_DEV_CAP_FLAG_ON_DMND_PG flag
      Merge branches 'core', 'cxgb4', 'ipoib', 'iser', 'mlx4', 'ocrdma', 'odp' and 'srp' into for-next

Sagi Grimberg (13):
      IB/iser: Fix catastrophic error flow hang
      IB/iser: Decrement CQ's active QPs accounting when QP creation fails
      IB/iser: Fix sparse warnings
      IB/iser: Fix race between iser connection teardown and scsi TMFs
      IB/iser: Terminate connection before cleaning inflight tasks
      IB/iser: Centralize memory region invalidation to a function
      IB/iser: Remove redundant is_mr indicator
      IB/iser: Use more completion queues
      IB/iser: Micro-optimize iser logging
      IB/iser: Micro-optimize iser_handle_wc
      IB/iser: DIX update
      IB/core: Add flags for on demand paging support
      IB/srp: Allow newline separator for connection string

Shachar Raindel (1):
      IB/core: Add support for on demand paging regions

Steve Wise (1):
      RDMA/cxgb4: Wake up waiters after flushing the qp

Yuval Shaia (1):
      mlx4_core: Check for DPDP violation only when DPDP is not supported

 drivers/infiniband/Kconfig                     |  11 +
 drivers/infiniband/core/Makefile               |   1 +
 drivers/infiniband/core/addr.c                 |   4 +-
 drivers/infiniband/core/multicast.c            |  11 +-
 drivers/infiniband/core/umem.c                 |  72 ++-
 drivers/infiniband/core/umem_odp.c             | 668 +++++++++++++++++++++
 drivers/infiniband/core/umem_rbtree.c          |  94 +++
 drivers/infiniband/core/uverbs.h               |   1 +
 drivers/infiniband/core/uverbs_cmd.c           | 171 ++++--
 drivers/infiniband/core/uverbs_main.c          |   5 +-
 drivers/infiniband/core/verbs.c                |   3 +-
 drivers/infiniband/hw/amso1100/c2_provider.c   |   2 +-
 drivers/infiniband/hw/cxgb4/cm.c               |   7 +-
 drivers/infiniband/hw/cxgb4/device.c           |   2 +-
 drivers/infiniband/hw/cxgb4/mem.c              |  28 +-
 drivers/infiniband/hw/cxgb4/qp.c               |   2 +-
 drivers/infiniband/hw/ehca/ehca_mrmw.c         |   2 +-
 drivers/infiniband/hw/ipath/ipath_mr.c         |   2 +-
 drivers/infiniband/hw/mlx4/mr.c                |   1 -
 drivers/infiniband/hw/mlx5/Makefile            |   1 +
 drivers/infiniband/hw/mlx5/main.c              |  45 +-
 drivers/infiniband/hw/mlx5/mem.c               |  69 ++-
 drivers/infiniband/hw/mlx5/mlx5_ib.h           | 116 +++-
 drivers/infiniband/hw/mlx5/mr.c                | 323 ++++++++--
 drivers/infiniband/hw/mlx5/odp.c               | 798 +++++++++++++++++++++++++
 drivers/infiniband/hw/mlx5/qp.c                | 197 ++++--
 drivers/infiniband/hw/nes/nes_verbs.c          |   6 +-
 drivers/infiniband/hw/ocrdma/ocrdma_ah.c       |   5 +-
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c    |   4 +-
 drivers/infiniband/hw/qib/qib_mr.c             |   2 +-
 drivers/infiniband/ulp/ipoib/ipoib.h           |  19 +-
 drivers/infiniband/ulp/ipoib/ipoib_cm.c        |  18 +-
 drivers/infiniband/ulp/ipoib/ipoib_ib.c        |  27 +-
 drivers/infiniband/ulp/ipoib/ipoib_main.c      |  49 +-
 drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 239 +++++---
 drivers/infiniband/ulp/ipoib/ipoib_verbs.c     |  22 +-
 drivers/infiniband/ulp/iser/iscsi_iser.c       | 104 +++-
 drivers/infiniband/ulp/iser/iscsi_iser.h       |  30 +-
 drivers/infiniband/ulp/iser/iser_initiator.c   |   6 +-
 drivers/infiniband/ulp/iser/iser_memory.c      | 102 +---
 drivers/infiniband/ulp/iser/iser_verbs.c       |  91 ++-
 drivers/infiniband/ulp/srp/ib_srp.c            |   2 +-
 drivers/net/ethernet/mellanox/mlx4/main.c      |   6 +-
 drivers/net/ethernet/mellanox/mlx5/core/eq.c   |  13 +-
 drivers/net/ethernet/mellanox/mlx5/core/fw.c   |  40 ++
 drivers/net/ethernet/mellanox/mlx5/core/qp.c   | 119 ++++
 include/linux/mlx5/device.h                    |  72 ++-
 include/linux/mlx5/driver.h                    |  14 +-
 include/linux/mlx5/qp.h                        |  65 ++
 include/rdma/ib_umem.h                         |  34 +-
 include/rdma/ib_umem_odp.h                     | 160 +++++
 include/rdma/ib_verbs.h                        |  54 +-
 include/uapi/rdma/ib_user_verbs.h              |  29 +-
 53 files changed, 3511 insertions(+), 457 deletions(-)
 create mode 100644 drivers/infiniband/core/umem_odp.c
 create mode 100644 drivers/infiniband/core/umem_rbtree.c
 create mode 100644 drivers/infiniband/hw/mlx5/odp.c
 create mode 100644 include/rdma/ib_umem_odp.h

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2014-11-02 20:06 ` Dave Airlie
  2014-11-03  7:15   ` Eli Cohen
@ 2014-11-03  7:58   ` Sagi Grimberg
  1 sibling, 0 replies; 223+ messages in thread
From: Sagi Grimberg @ 2014-11-03  7:58 UTC (permalink / raw)
  To: Dave Airlie, Roland Dreier; +Cc: Linus Torvalds, linux-rdma, LKML

On 11/2/2014 10:06 PM, Dave Airlie wrote:
> On 17 October 2014 08:52, Roland Dreier <roland@kernel.org> wrote:
>> Hi Linus,
>>
>> Please pull from
>>
>>      git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus
>>
>> ----------------------------------------------------------------
>> Main set of InfiniBand/RDMA updates for 3.18 merge window:
>>
>>   - Large set of iSER initiator improvements
>>   - Hardware driver fixes for cxgb4, mlx5 and ocrdma
>>   - Small fixes to core midlayer
>>
>
> building on 32-bit x86.
>
>   CC [M]  drivers/infiniband/ulp/iser/iser_verbs.o
> /home/airlied/devel/kernel/linux-2.6/drivers/infiniband/ulp/iser/iser_verbs.c:
> In function ‘iser_handle_comp_error’:
> /home/airlied/devel/kernel/linux-2.6/drivers/infiniband/ulp/iser/iser_verbs.c:1171:33:
> warning: cast to pointer from integer of different size
> [-Wint-to-pointer-cast]
>    if (is_iser_tx_desc(iser_conn, (void *)wc->wr_id)) {
>                                   ^
> /home/airlied/devel/kernel/linux-2.6/drivers/infiniband/ulp/iser/iser_verbs.c:1172:31:
> warning: cast to pointer from integer of different size
> [-Wint-to-pointer-cast]
>     struct iser_tx_desc *desc = (struct iser_tx_desc *)wc->wr_id;
>                                 ^
> /home/airlied/devel/kernel/linux-2.6/drivers/infiniband/ulp/iser/iser_verbs.c:
> In function ‘iser_handle_wc’:
> /home/airlied/devel/kernel/linux-2.6/drivers/infiniband/ulp/iser/iser_verbs.c:1198:14:
> warning: cast to pointer from integer of different size
> [-Wint-to-pointer-cast]
>      rx_desc = (struct iser_rx_desc *)wc->wr_id;
>                ^
> /home/airlied/devel/kernel/linux-2.6/drivers/infiniband/ulp/iser/iser_verbs.c:1203:14:
> warning: cast to pointer from integer of different size
> [-Wint-to-pointer-cast]
>      tx_desc = (struct iser_tx_desc *)wc->wr_id;
>                ^
>
> Not sure anyone would ever want to run this code on 32-bit boxes, but
> I'm a bit worried if wr_id is a 64-bit value, and we encode it into a
> 32-bit pointer, you'd always lose the top 32-bits.
>

Hey Dave,

This was addressed in: 
http://marc.info/?l=linux-rdma&m=141448978030924&w=2 (part of iser fixes 
for 3.18-rc).

Thanks!

Sagi.

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2014-11-02 20:06 ` Dave Airlie
@ 2014-11-03  7:15   ` Eli Cohen
  2014-11-03  7:58   ` Sagi Grimberg
  1 sibling, 0 replies; 223+ messages in thread
From: Eli Cohen @ 2014-11-03  7:15 UTC (permalink / raw)
  To: Dave Airlie; +Cc: Roland Dreier, Linus Torvalds, linux-rdma, LKML

On Mon, Nov 03, 2014 at 06:06:45AM +1000, Dave Airlie wrote:
> On 17 October 2014 08:52, Roland Dreier <roland@kernel.org> wrote:
> > Hi Linus,
> >
> > Please pull from
> >
> >     git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus
> >
> > ----------------------------------------------------------------
> > Main set of InfiniBand/RDMA updates for 3.18 merge window:
> >
> >  - Large set of iSER initiator improvements
> >  - Hardware driver fixes for cxgb4, mlx5 and ocrdma
> >  - Small fixes to core midlayer
> >
> 
> building on 32-bit x86.
> 
>  CC [M]  drivers/infiniband/ulp/iser/iser_verbs.o
> /home/airlied/devel/kernel/linux-2.6/drivers/infiniband/ulp/iser/iser_verbs.c:
> In function ‘iser_handle_comp_error’:
> /home/airlied/devel/kernel/linux-2.6/drivers/infiniband/ulp/iser/iser_verbs.c:1171:33:
> warning: cast to pointer from integer of different size
> [-Wint-to-pointer-cast]
>   if (is_iser_tx_desc(iser_conn, (void *)wc->wr_id)) {
>                                  ^
> /home/airlied/devel/kernel/linux-2.6/drivers/infiniband/ulp/iser/iser_verbs.c:1172:31:
> warning: cast to pointer from integer of different size
> [-Wint-to-pointer-cast]
>    struct iser_tx_desc *desc = (struct iser_tx_desc *)wc->wr_id;
>                                ^
> /home/airlied/devel/kernel/linux-2.6/drivers/infiniband/ulp/iser/iser_verbs.c:
> In function ‘iser_handle_wc’:
> /home/airlied/devel/kernel/linux-2.6/drivers/infiniband/ulp/iser/iser_verbs.c:1198:14:
> warning: cast to pointer from integer of different size
> [-Wint-to-pointer-cast]
>     rx_desc = (struct iser_rx_desc *)wc->wr_id;
>               ^
> /home/airlied/devel/kernel/linux-2.6/drivers/infiniband/ulp/iser/iser_verbs.c:1203:14:
> warning: cast to pointer from integer of different size
> [-Wint-to-pointer-cast]
>     tx_desc = (struct iser_tx_desc *)wc->wr_id;
>               ^
> 
> Not sure anyone would ever want to run this code on 32-bit boxes, but
> I'm a bit worried if wr_id is a 64-bit value, and we encode it into a
> 32-bit pointer, you'd always lose the top 32-bits.
> 
On 32 bit systems your pointer is 32 bits as well so assigning to u64
and casting back to a pointer you don't loose anything. Maybe casting
from u64 to a pointer should go through casting to uintptr_t to avoid
warnings.

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2014-10-16 22:52 Roland Dreier
  2014-10-20 23:28 ` Doug Ledford
@ 2014-11-02 20:06 ` Dave Airlie
  2014-11-03  7:15   ` Eli Cohen
  2014-11-03  7:58   ` Sagi Grimberg
  1 sibling, 2 replies; 223+ messages in thread
From: Dave Airlie @ 2014-11-02 20:06 UTC (permalink / raw)
  To: Roland Dreier; +Cc: Linus Torvalds, linux-rdma, LKML

On 17 October 2014 08:52, Roland Dreier <roland@kernel.org> wrote:
> Hi Linus,
>
> Please pull from
>
>     git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus
>
> ----------------------------------------------------------------
> Main set of InfiniBand/RDMA updates for 3.18 merge window:
>
>  - Large set of iSER initiator improvements
>  - Hardware driver fixes for cxgb4, mlx5 and ocrdma
>  - Small fixes to core midlayer
>

building on 32-bit x86.

 CC [M]  drivers/infiniband/ulp/iser/iser_verbs.o
/home/airlied/devel/kernel/linux-2.6/drivers/infiniband/ulp/iser/iser_verbs.c:
In function ‘iser_handle_comp_error’:
/home/airlied/devel/kernel/linux-2.6/drivers/infiniband/ulp/iser/iser_verbs.c:1171:33:
warning: cast to pointer from integer of different size
[-Wint-to-pointer-cast]
  if (is_iser_tx_desc(iser_conn, (void *)wc->wr_id)) {
                                 ^
/home/airlied/devel/kernel/linux-2.6/drivers/infiniband/ulp/iser/iser_verbs.c:1172:31:
warning: cast to pointer from integer of different size
[-Wint-to-pointer-cast]
   struct iser_tx_desc *desc = (struct iser_tx_desc *)wc->wr_id;
                               ^
/home/airlied/devel/kernel/linux-2.6/drivers/infiniband/ulp/iser/iser_verbs.c:
In function ‘iser_handle_wc’:
/home/airlied/devel/kernel/linux-2.6/drivers/infiniband/ulp/iser/iser_verbs.c:1198:14:
warning: cast to pointer from integer of different size
[-Wint-to-pointer-cast]
    rx_desc = (struct iser_rx_desc *)wc->wr_id;
              ^
/home/airlied/devel/kernel/linux-2.6/drivers/infiniband/ulp/iser/iser_verbs.c:1203:14:
warning: cast to pointer from integer of different size
[-Wint-to-pointer-cast]
    tx_desc = (struct iser_tx_desc *)wc->wr_id;
              ^

Not sure anyone would ever want to run this code on 32-bit boxes, but
I'm a bit worried if wr_id is a 64-bit value, and we encode it into a
32-bit pointer, you'd always lose the top 32-bits.

Dave.

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2014-10-16 22:52 Roland Dreier
@ 2014-10-20 23:28 ` Doug Ledford
  2014-11-02 20:06 ` Dave Airlie
  1 sibling, 0 replies; 223+ messages in thread
From: Doug Ledford @ 2014-10-20 23:28 UTC (permalink / raw)
  To: Roland Dreier; +Cc: Linus Torvalds, linux-rdma, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 792 bytes --]

On Thu, 2014-10-16 at 15:52 -0700, Roland Dreier wrote:
> Hi Linus,
> 
> Please pull from
> 
>     git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus
> 
> ----------------------------------------------------------------
> Main set of InfiniBand/RDMA updates for 3.18 merge window:
> 
>  - Large set of iSER initiator improvements
>  - Hardware driver fixes for cxgb4, mlx5 and ocrdma
>  - Small fixes to core midlayer

The IPoIB multicast locking fixes I submitted for 3.17 that you put off
until 3.18 are missing from this list.  The set can be found here in
case you've lost them:

https://patchwork.kernel.org/bundle/dledford/IPoIB%20Locking%20Fixes/

-- 
Doug Ledford <dledford@redhat.com>
              GPG KeyID: 0E572FDD



[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2014-10-16 22:52 Roland Dreier
  2014-10-20 23:28 ` Doug Ledford
  2014-11-02 20:06 ` Dave Airlie
  0 siblings, 2 replies; 223+ messages in thread
From: Roland Dreier @ 2014-10-16 22:52 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------
Main set of InfiniBand/RDMA updates for 3.18 merge window:

 - Large set of iSER initiator improvements
 - Hardware driver fixes for cxgb4, mlx5 and ocrdma
 - Small fixes to core midlayer

----------------------------------------------------------------
Ariel Nahum (3):
      IB/iser: Unbind at conn_stop stage
      IB/iser: Use iser_warn instead of BUG_ON in iser_conn_release
      IB/iser: Change iscsi_conn_stop log level to info

Devesh Sharma (3):
      RDMA/ocrdma: Add default GID at index 0
      RDMA/ocrdma: Convert kernel VA to PA for mmap in user
      IB/core: Clear AH attr variable to prevent garbage data

Eli Cohen (5):
      IB/mlx5: Clear umr resources after ib_unregister_device
      IB/mlx5: Improve debug prints in mlx5_ib_reg_user_mr
      IB/core: Avoid leakage from kernel to user space
      IB/mlx5: Fix possible array overflow
      IB/mlx5: Remove duplicate code from mlx5_set_path

Hariprasad S (3):
      RDMA/cxgb4: Take IPv6 into account for best_mtu and set_emss
      RDMA/cxgb4: Add missing neigh_release in find_route
      RDMA/cxgb4: Fix ntuple calculation for ipv6 and remove duplicate line

Jack Morgenstein (1):
      IB/core: Fix XRC race condition in ib_uverbs_open_qp

Jes Sorensen (3):
      RDMA/ocrdma: Don't memset() buffers we just allocated with kzalloc()
      RDMA/ocrdma: The kernel has a perfectly good BIT() macro - use it
      RDMA/ocrdma: Save the bit environment, spare unncessary parenthesis

Li RongQing (1):
      RDMA/ocrdma: Remove a unused-label warning

Or Gerlitz (1):
      IB/iser: Bump version, add maintainer

Roi Dayan (1):
      IB/iser: Remove unused variables and dead code

Roland Dreier (1):
      Merge branches 'core', 'cxgb4', 'iser', 'mlx5' and 'ocrdma' into for-next

Sagi Grimberg (23):
      IB/iser: Rename ib_conn -> iser_conn
      IB/iser: Re-introduce ib_conn
      IB/iser: Extend iser_free_ib_conn_res()
      IB/iser: Fix DEVICE REMOVAL handling in the absence of iscsi daemon
      IB/iser: Don't bound release_work completions timeouts
      IB/iser: Protect tasks cleanup in case IB device was already released
      IB/iser: Signal iSCSI layer that transport is broken in error completions
      IB/iser: Centralize iser completion contexts
      IB/iser: Use internal polling budget to avoid possible live-lock
      IB/iser: Use single CQ for RX and TX
      IB/iser: Use beacon to indicate all completions were consumed
      IB/iser: Optimize completion polling
      IB/iser: Suppress scsi command send completions
      IB/iser: Nit - add space after __func__ in iser logging
      IB/iser: Add/Fix kernel doc style descriptions in iscsi_iser.h
      IB/iser: Fix/add kernel-doc style description in iscsi_iser.c
      IB/mlx5: Use enumerations for PI copy mask
      IB/iser: Remove redundant assignment
      IB/iser: Set IP_CSUM as default guard type
      IB/mlx5: Use extended internal signature layout
      IB/iser: Centralize ib_sig_domain settings
      Target/iser: Centralize ib_sig_domain setting
      IB/mlx5, iser, isert: Add Signature API additions

Selvin Xavier (1):
      RDMA/ocrdma: Get vlan tag from ib_qp_attrs

Steve Wise (1):
      RDMA/cxgb4: Make c4iw_wr_log_size_order static

Yishai Hadas (1):
      IB/mlx5: Modify to work with arbitrary page size

 MAINTAINERS                                  |   1 +
 drivers/infiniband/core/uverbs_cmd.c         |   2 +
 drivers/infiniband/core/uverbs_main.c        |   5 +
 drivers/infiniband/hw/cxgb4/cm.c             |  32 +-
 drivers/infiniband/hw/cxgb4/device.c         |   2 +-
 drivers/infiniband/hw/mlx5/main.c            |   8 +-
 drivers/infiniband/hw/mlx5/mem.c             |  18 +-
 drivers/infiniband/hw/mlx5/mr.c              |   6 +-
 drivers/infiniband/hw/mlx5/qp.c              | 149 +++---
 drivers/infiniband/hw/ocrdma/ocrdma_hw.c     |  25 +-
 drivers/infiniband/hw/ocrdma/ocrdma_main.c   |  12 +
 drivers/infiniband/hw/ocrdma/ocrdma_sli.h    | 238 +++++-----
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c  |  10 +-
 drivers/infiniband/ulp/iser/iscsi_iser.c     | 313 ++++++++++---
 drivers/infiniband/ulp/iser/iscsi_iser.h     | 408 +++++++++++-----
 drivers/infiniband/ulp/iser/iser_initiator.c | 198 ++++----
 drivers/infiniband/ulp/iser/iser_memory.c    |  99 ++--
 drivers/infiniband/ulp/iser/iser_verbs.c     | 667 +++++++++++++++------------
 drivers/infiniband/ulp/isert/ib_isert.c      |  65 ++-
 include/linux/mlx5/qp.h                      |  35 +-
 include/rdma/ib_verbs.h                      |  32 +-
 21 files changed, 1372 insertions(+), 953 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2014-09-23 21:58 Roland Dreier
@ 2014-09-27 21:19 ` Or Gerlitz
  0 siblings, 0 replies; 223+ messages in thread
From: Or Gerlitz @ 2014-09-27 21:19 UTC (permalink / raw)
  To: Roland Dreier
  Cc: Linus Torvalds, Linux Kernel, linux-rdma, Greg Kroah-Hartman

On Wed, Sep 24, 2014 at 12:58 AM, Roland Dreier <roland@kernel.org> wrote:
> Hi Linus,
[..]
> This is later and bigger than I would like, and the blame is all on
> me: I got very busy with other stuff for a few weeks during the 3.17
> cycle, and didn't prepare this tree as soon as I should have.  However
> I don't think there's anything risky here, and no one really cares if
> we break InfiniBand in 3.17 anyway...

Roland, sorry, but I don't understand the joke @ the last sentence,
can you elaborate?

Or.

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2014-09-23 21:58 Roland Dreier
  2014-09-27 21:19 ` Or Gerlitz
  0 siblings, 1 reply; 223+ messages in thread
From: Roland Dreier @ 2014-09-23 21:58 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-rdma

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

This is later and bigger than I would like, and the blame is all on
me: I got very busy with other stuff for a few weeks during the 3.17
cycle, and didn't prepare this tree as soon as I should have.  However
I don't think there's anything risky here, and no one really cares if
we break InfiniBand in 3.17 anyway...

----------------------------------------------------------------
Last late set of InfiniBand/RDMA fixes for 3.17:

 - Fixes for the new memory region re-registration support
 - iSER initiator error path fixes
 - Grab bag of small fixes for the qib and ocrdma hardware drivers
 - Larger set of fixes for mlx4, especially in RoCE mode

----------------------------------------------------------------
Alex Estrin (1):
      IPoIB: Remove unnecessary port query

Devesh Sharma (2):
      RDMA/ocrdma: Report correct value of max_fast_reg_page_list_len
      RDMA/ocrdma: Do not skip setting deferred_arm

Jack Morgenstein (6):
      IB/mlx4: Fix lockdep splat for the iboe lock
      mlx4: Fix mlx4 reg/unreg mac to work properly with 0-mac addresses
      IB/mlx4: Avoid accessing netdevice when building RoCE qp1 header
      IB/mlx4: Don't update QP1 in native mode
      IB/mlx4: Do not allow APM under RoCE
      IB/mlx4: Fix VF mac handling in RoCE

Markus Stockhausen (1):
      IB/mlx4: Disable TSO for Connect-X rev. A0 HCAs

Matan Barak (2):
      mlx4: Correct error flows in rereg_mr
      IB/core: When marshaling uverbs path, clear unused fields

Mike Marciniszyn (3):
      IB/ipath: Change get_user_pages() usage to always NULL vmas
      IB/qib: Change get_user_pages() usage to always NULL vmas
      IB/qib: Correct reference counting in debugfs qp_stats

Moni Shoua (5):
      IB/mlx4: Avoid null pointer dereference in mlx4_ib_scan_netdevs()
      IB/mlx4: Don't duplicate the default RoCE GID
      IB/mlx4: Reorder steps in RoCE GID table initialization
      IB/mlx4: Get upper dev addresses as RoCE GIDs when port comes up
      IB/mlx4: Avoid executing gid task when device is being removed

Or Gerlitz (1):
      IB/iser: Bump version to 1.4.1

Roi Dayan (1):
      IB/iser: Fix RX/TX CQ resource leak on error flow

Roland Dreier (1):
      Merge branches 'core', 'ipoib', 'iser', 'mlx4', 'ocrdma' and 'qib' into for-next

Sagi Grimberg (1):
      IB/iser: Allow bind only when connection state is UP

Shawn Bohrer (1):
      IB: ib_umem_release() should decrement mm->pinned_vm from ib_umem_get

devesh.sharma@emulex.com (2):
      RDMA/ocrdma: Resolve L2 address when creating user AH
      RDMA/ocrdma: Use right macro in query AH

 drivers/infiniband/core/umem.c                 |  19 ++-
 drivers/infiniband/core/uverbs_marshall.c      |   4 +
 drivers/infiniband/hw/ipath/ipath_user_pages.c |   6 +-
 drivers/infiniband/hw/mlx4/main.c              | 169 +++++++++++++++++--------
 drivers/infiniband/hw/mlx4/mlx4_ib.h           |   1 +
 drivers/infiniband/hw/mlx4/mr.c                |   7 +-
 drivers/infiniband/hw/mlx4/qp.c                |  60 +++++----
 drivers/infiniband/hw/ocrdma/ocrdma_ah.c       |  43 +++++--
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c    |   6 +-
 drivers/infiniband/hw/qib/qib_debugfs.c        |   3 +-
 drivers/infiniband/hw/qib/qib_qp.c             |   8 --
 drivers/infiniband/hw/qib/qib_user_pages.c     |   6 +-
 drivers/infiniband/ulp/ipoib/ipoib_multicast.c |  10 +-
 drivers/infiniband/ulp/iser/iscsi_iser.c       |  19 ++-
 drivers/infiniband/ulp/iser/iscsi_iser.h       |   2 +-
 drivers/infiniband/ulp/iser/iser_verbs.c       |  24 ++--
 drivers/net/ethernet/mellanox/mlx4/mr.c        |  33 +++--
 drivers/net/ethernet/mellanox/mlx4/port.c      |  11 +-
 include/rdma/ib_umem.h                         |   1 +
 19 files changed, 277 insertions(+), 155 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2014-08-14 16:05 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2014-08-14 16:05 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------
Main set of InfiniBand/RDMA updates for 3.17 merge window:

 - MR reregistration support
 - MAD support for RMPP in userspace
 - iSER and SRP initiator updates
 - ocrdma hardware driver updates
 - other fixes...

----------------------------------------------------------------
Alex Estrin (1):
      IB/ipoib: Avoid multicast join attempts with invalid P_key

Ariel Nahum (3):
      IB/iser: Seperate iser_conn and iscsi_endpoint storage space
      IB/iser: Protect iser state machine with a mutex
      IB/iser: Replace connection waitqueue with completion object

Bart Van Assche (3):
      scsi_transport_srp: Fix fast_io_fail_tmo=dev_loss_tmo=off behavior
      IB/srp: Fix deadlock between host removal and multipathd
      IB/srp: Fix residual handling

Dan Carpenter (1):
      RDMA/amso1100: Check for integer overflow in c2_alloc_cq_buf()

Devesh Sharma (7):
      RDMA/ocrdma: Avoid posting DPP requests for RDMA READ
      be2net: Issue shutdown event to ocrdma driver
      RDMA/ocrdma: Handle shutdown event from be2net driver
      RDMA/ocrdma: Remove hardcoding of the max DPP QPs supported
      RDMA/ocrdma: Delete AH table if ocrdma_init_hw fails after AH table creation
      RDMA/ocrdma: Obtain SL from device structure
      RDMA/ocrdma: Update sli data structure for endianness

Doug Ledford (2):
      IB/srpt: Handle GID change events
      RDMA/uapi: Include socket.h in rdma_user_cm.h

Erez Shitrit (2):
      IB/ipoib: Use P_Key change event instead of P_Key polling mechanism
      IB/ipoib: Avoid flushing the workqueue from worker context

Fabian Frederick (3):
      IPoIB: Remove unnecessary test for NULL before debugfs_remove()
      IB/mlx4: Use ARRAY_SIZE instead of sizeof/sizeof[0]
      IB/mlx5: Use ARRAY_SIZE instead of sizeof/sizeof[0]

Ira Weiny (5):
      IB/umad: Update module to [pr|dev]_* style print messages
      IB/mad: Update module to [pr|dev]_* style print messages
      IB/mad: Add dev_notice messages for various umad/mad registration failures
      IB/mad: add new ioctl to ABI to support new registration options
      IB/mad: Add user space RMPP support

Jack Morgenstein (1):
      mlx4_core: Add support for secure-host and SMP firewall

Matan Barak (3):
      IB/core: Add user MR re-registration support
      mlx4_core: Add helper functions to support MR re-registration
      IB/mlx4_ib: Add support for user MR re-registration

Mitesh Ahuja (4):
      RDMA/ocrdma: Allow only SEND opcode in case of UD QPs
      RDMA/ocrdma: Do proper cleanup even if FW is in error state
      RDMA/ocrdma: Return proper value for max_mr_size
      RDMA/ocrdma: report asic-id in query device

Or Gerlitz (1):
      IB/ipath: Add P_Key change event support

Roi Dayan (3):
      IB/iser: Support IPv6 address family
      IB/iser: Add TIMEWAIT_EXIT event handling
      IB/iser: Clarify a duplicate counters check

Roland Dreier (1):
      Merge branches 'core', 'cxgb4', 'ipoib', 'iser', 'iwcm', 'mad', 'misc', 'mlx4', 'mlx5', 'ocrdma' and 'srp' into for-next

Sagi Grimberg (2):
      IB/iser: Fix responder resources advertisement
      IB/iser: Remove redundant return code in iser_free_ib_conn_res()

Selvin Xavier (8):
      RDMA/ocrdma: Query and initalize the PFC SL
      RDMA/ocrdma: Add hca_type and fixing fw_version string in device atrributes
      RDMA/ocrdma: Avoid reporting wrong completions in case of error CQEs
      RDMA/ocrdma: Add missing adapter mailbox opcodes
      RDMA/ocrdma: Increase the size of STAG array in dev structure to 16K
      RDMA/ocrdma: Initialize the GID table while registering the device
      RDMA/ocrdma: Fix a sparse warning
      RDMA/ocrdma: Update the ocrdma module version string

Steve Wise (2):
      RDMA/cxgb4: Only call CQ completion handler if it is armed
      RDMA/iwcm: Use a default listen backlog if needed

Wei Yongjun (1):
      IB/srp: Fix return value check in srp_init_module()

 Documentation/infiniband/user_mad.txt              |  13 +-
 drivers/infiniband/core/agent.c                    |  16 +-
 drivers/infiniband/core/cm.c                       |   5 +-
 drivers/infiniband/core/iwcm.c                     |  27 ++
 drivers/infiniband/core/mad.c                      | 283 +++++++++++++-------
 drivers/infiniband/core/mad_priv.h                 |   3 -
 drivers/infiniband/core/sa_query.c                 |   2 +-
 drivers/infiniband/core/user_mad.c                 | 188 +++++++++++--
 drivers/infiniband/core/uverbs.h                   |   1 +
 drivers/infiniband/core/uverbs_cmd.c               |  93 +++++++
 drivers/infiniband/core/uverbs_main.c              |   1 +
 drivers/infiniband/hw/amso1100/c2_cq.c             |   7 +-
 drivers/infiniband/hw/cxgb4/ev.c                   |   1 +
 drivers/infiniband/hw/cxgb4/qp.c                   |  37 ++-
 drivers/infiniband/hw/cxgb4/t4.h                   |  11 +
 drivers/infiniband/hw/ipath/ipath_mad.c            |  14 +-
 drivers/infiniband/hw/mlx4/mad.c                   |   2 +-
 drivers/infiniband/hw/mlx4/main.c                  |   8 +-
 drivers/infiniband/hw/mlx4/mlx4_ib.h               |   4 +
 drivers/infiniband/hw/mlx4/mr.c                    |  88 +++++-
 drivers/infiniband/hw/mlx5/qp.c                    |   2 +-
 drivers/infiniband/hw/mthca/mthca_mad.c            |   2 +-
 drivers/infiniband/hw/ocrdma/ocrdma.h              |  26 +-
 drivers/infiniband/hw/ocrdma/ocrdma_ah.c           |   6 +-
 drivers/infiniband/hw/ocrdma/ocrdma_hw.c           | 227 ++++++++++++++--
 drivers/infiniband/hw/ocrdma/ocrdma_hw.h           |   2 +
 drivers/infiniband/hw/ocrdma/ocrdma_main.c         |  83 +++++-
 drivers/infiniband/hw/ocrdma/ocrdma_sli.h          | 295 ++++++++++++++++-----
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c        |  36 ++-
 drivers/infiniband/hw/qib/qib_mad.c                |   2 +-
 drivers/infiniband/ulp/ipoib/ipoib.h               |   8 +-
 drivers/infiniband/ulp/ipoib/ipoib_fs.c            |   6 +-
 drivers/infiniband/ulp/ipoib/ipoib_ib.c            | 133 ++++------
 drivers/infiniband/ulp/ipoib/ipoib_main.c          |   9 +-
 drivers/infiniband/ulp/iser/iscsi_iser.c           |  47 ++--
 drivers/infiniband/ulp/iser/iscsi_iser.h           |   8 +-
 drivers/infiniband/ulp/iser/iser_verbs.c           | 128 ++++++---
 drivers/infiniband/ulp/srp/ib_srp.c                |  48 +++-
 drivers/infiniband/ulp/srpt/ib_srpt.c              |   3 +-
 drivers/net/ethernet/emulex/benet/be.h             |   1 +
 drivers/net/ethernet/emulex/benet/be_main.c        |   1 +
 drivers/net/ethernet/emulex/benet/be_roce.c        |  18 +-
 drivers/net/ethernet/emulex/benet/be_roce.h        |   3 +-
 drivers/net/ethernet/mellanox/mlx4/cmd.c           |   9 +
 drivers/net/ethernet/mellanox/mlx4/fw.c            |  91 ++++++-
 drivers/net/ethernet/mellanox/mlx4/main.c          |   5 +
 drivers/net/ethernet/mellanox/mlx4/mlx4.h          |   3 +
 drivers/net/ethernet/mellanox/mlx4/mr.c            | 160 +++++++++++
 .../net/ethernet/mellanox/mlx4/resource_tracker.c  |  26 +-
 drivers/scsi/scsi_transport_srp.c                  |   3 +-
 include/linux/mlx4/cmd.h                           |   7 +
 include/linux/mlx4/device.h                        |  17 ++
 include/rdma/ib_mad.h                              |  18 +-
 include/rdma/ib_verbs.h                            |  10 +-
 include/uapi/rdma/ib_user_mad.h                    |  42 +++
 include/uapi/rdma/ib_user_verbs.h                  |  16 ++
 include/uapi/rdma/rdma_user_cm.h                   |   1 +
 57 files changed, 1851 insertions(+), 455 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2014-07-18 20:40 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2014-07-18 20:40 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-rdma

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------
InfiniBand/RDMA fixes for 3.16

 - cxgb4 hardware driver regression fixes
 - mlx5 hardware driver regression fixes

----------------------------------------------------------------
Hariprasad S (2):
      RDMA/cxgb4: Fix skb_leak in reject_cr()
      RDMA/cxgb4: Clean up connection on ARP error

Or Gerlitz (1):
      IB/mlx5: Enable "block multicast loopback" for kernel consumers

Roland Dreier (1):
      Merge branches 'cxgb4' and 'mlx5' into for-next

Sagi Grimberg (1):
      mlx5_core: Fix possible race between mr tree insert/delete

Steve Wise (2):
      RDMA/cxgb4: Initialize the device status page
      RDMA/cxgb4: Call iwpm_init() only once

 drivers/infiniband/hw/cxgb4/cm.c             | 14 +++++++++++---
 drivers/infiniband/hw/cxgb4/device.c         | 18 +++++++++++-------
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h       |  2 +-
 drivers/infiniband/hw/mlx5/qp.c              |  2 +-
 drivers/net/ethernet/mellanox/mlx5/core/mr.c | 19 +++++++++++++++----
 5 files changed, 39 insertions(+), 16 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2014-06-10 17:14 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2014-06-10 17:14 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-rdma

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------

Main batch of InfiniBand/RDMA changes for 3.16:

 - Add iWARP port mapper to avoid conflicts between RDMA and normal
   stack TCP connections.

 - Fixes for i386 / x86-64 structure padding differences (ABI
   compatibility for 32-on-64) from Yann Droneaud.

 - A pile of SRP initiator fixes from Bart Van Assche.

 - Fixes for a writeback / memory allocation deadlock with NFS over
   IPoIB connected mode from Jiri Kosina.

 - The usual fixes and cleanups to mlx4, mlx5, cxgb4 and other
   low-level drivers.

----------------------------------------------------------------
Ariel Nahum (2):
      IB/iser: Simplify connection management
      IB/iser: Fix a possible race in iser connection states transition

Bart Van Assche (11):
      IB/srp: Fix a sporadic crash triggered by cable pulling
      IB/srp: Fix kernel-doc warnings
      IB/srp: Introduce an additional local variable
      IB/srp: Introduce srp_map_fmr()
      IB/srp: Introduce srp_finish_mapping()
      IB/srp: Introduce the 'register_always' kernel module parameter
      IB/srp: One FMR pool per SRP connection
      IB/srp: Rename FMR-related variables
      IB/srp: Add fast registration support
      IB/umad: Fix error handling
      IB/umad: Fix use-after-free on close

Christoph Jaeger (1):
      RDMA/cxgb4: Fix memory leaks in c4iw_alloc() error paths

Colin Ian King (1):
      IB/mlx4: fix unitialised variable is_mcast

Dan Carpenter (2):
      RDMA/cxgb3: Fix information leak in send_abort()
      RDMA/cxgb3: Remove a couple unneeded conditions

Dennis Dalessandro (1):
      IB/ipath: Translate legacy diagpkt into newer extended diagpkt

Dotan Barak (1):
      mlx4_core: Fix memory leaks in SR-IOV error paths

Duan Jiong (1):
      RDMA/ocrdma: Convert to use simple_open()

Haggai Eran (7):
      IB/mlx5: Fix error handling in reg_umr
      IB/mlx5: Add MR to radix tree in reg_mr_callback
      mlx5_core: Store MR attributes in mlx5_mr_core during creation and after UMR
      IB/mlx5: Set QP offsets and parameters for user QPs and not just for kernel QPs
      IB/core: Remove unneeded kobject_get/put calls
      IB/core: Fix port kobject deletion during error flow
      IB/core: Fix kobject leak on device register error flow

Jack Morgenstein (5):
      mlx4_core: Fix incorrect FLAGS1 bitmap test in mlx4_QUERY_FUNC_CAP
      IB/mlx4: SET_PORT called by mlx4_ib_modify_port should be wrapped
      IB/mlx4: Preparation for VFs to issue/receive SMI (QP0) requests/responses
      mlx4: Add infrastructure for selecting VFs to enable QP0 via MLX proxy QPs
      IB/mlx4: Add interface for selecting VFs to enable QP0 via MLX proxy QPs

Jiri Kosina (2):
      IB/mlx4: Implement IB_QP_CREATE_USE_GFP_NOIO
      IB/mlx4: Fix gfp passing in create_qp_common()

Joe Perches (1):
      IB/srp: Avoid problems if a header uses pr_fmt

Manuel Schölling (1):
      IB/ipath: Use time_before()/_after()

Mike Marciniszyn (1):
      IB/qib: Fix port in pkey change event

Or Gerlitz (3):
      IB/iser: Bump version to 1.4
      IB: Return error for unsupported QP creation flags
      IB: Add a QP creation flag to use GFP_NOIO allocations

Roi Dayan (1):
      IB/iser: Add missing newlines to logging messages

Roland Dreier (6):
      IB/mlx5: Fix warning about cast of wr_id back to pointer on 32 bits
      mlx4_core: Move handling of MLX4_QP_ST_MLX to proper switch statement
      IB/mad: Fix sparse warning about gfp_t use
      IB/core: Fix sparse warnings about redeclared functions
      mlx4_core: Fix GFP flags parameters to be gfp_t
      Merge branches 'core', 'cxgb3', 'cxgb4', 'iser', 'iwpm', 'misc', 'mlx4', 'mlx5', 'noio', 'ocrdma', 'qib', 'srp' and 'usnic' into for-next

Sagi Grimberg (3):
      mlx5_core: Fix signature handover operation for interleaved buffers
      mlx5_core: Simplify signature handover wqe for interleaved buffers
      mlx5_core: Copy DIF fields only when input and output space values match

Shachar Raindel (1):
      IB/mlx5: Refactor UMR to have its own context struct

Steve Wise (2):
      RDMA/cxgb4: Fix vlan support
      RDMA/cxgb4: Add support for iWARP Port Mapper user space service

Tatyana Nikolova (2):
      RDMA/core: Add support for iWARP Port Mapper user space service
      RDMA/nes: Add support for iWARP Port Mapper user space service

Upinder Malhi (1):
      IB/usnic: Fix source file missing copyright and license

Vinit Agnihotri (1):
      IB/qib: Additional Intel branding changes

Yann Droneaud (5):
      IB/mlx5: add missing padding at end of struct mlx5_ib_create_cq
      IB/mlx5: add missing padding at end of struct mlx5_ib_create_srq
      RDMA/cxgb4: Add missing padding at end of struct c4iw_create_cq_resp
      IB: Allow build of hw/ and ulp/ subdirectories independently
      RDMA/cxgb4: add missing padding at end of struct c4iw_alloc_ucontext_resp

 drivers/infiniband/Makefile                        |  19 +-
 drivers/infiniband/core/Makefile                   |   2 +-
 drivers/infiniband/core/cma.c                      |   3 +-
 drivers/infiniband/core/iwpm_msg.c                 | 685 +++++++++++++++++++++
 drivers/infiniband/core/iwpm_util.c                | 607 ++++++++++++++++++
 drivers/infiniband/core/iwpm_util.h                | 238 +++++++
 drivers/infiniband/core/netlink.c                  |  18 +-
 drivers/infiniband/core/sa_query.c                 |   2 +-
 drivers/infiniband/core/sysfs.c                    |  85 +--
 drivers/infiniband/core/user_mad.c                 |  75 ++-
 drivers/infiniband/core/verbs.c                    |   8 +-
 drivers/infiniband/hw/Makefile                     |  12 +
 drivers/infiniband/hw/cxgb3/cxio_hal.c             |   6 +-
 drivers/infiniband/hw/cxgb3/iwch_cm.c              |   1 +
 drivers/infiniband/hw/cxgb4/cm.c                   | 197 ++++--
 drivers/infiniband/hw/cxgb4/cq.c                   |   4 +-
 drivers/infiniband/hw/cxgb4/device.c               |  83 ++-
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h             |  44 ++
 drivers/infiniband/hw/cxgb4/provider.c             |   5 +-
 drivers/infiniband/hw/cxgb4/user.h                 |   2 +
 drivers/infiniband/hw/ipath/ipath_diag.c           |   4 +
 drivers/infiniband/hw/ipath/ipath_intr.c           |   4 +-
 drivers/infiniband/hw/ipath/ipath_sdma.c           |   4 +-
 drivers/infiniband/hw/mlx4/ah.c                    |   2 +-
 drivers/infiniband/hw/mlx4/cq.c                    |   6 +-
 drivers/infiniband/hw/mlx4/mad.c                   |  40 +-
 drivers/infiniband/hw/mlx4/main.c                  |  26 +-
 drivers/infiniband/hw/mlx4/mlx4_ib.h               |   1 +
 drivers/infiniband/hw/mlx4/qp.c                    | 102 +--
 drivers/infiniband/hw/mlx4/srq.c                   |   7 +-
 drivers/infiniband/hw/mlx4/sysfs.c                 | 105 +++-
 drivers/infiniband/hw/mlx5/cq.c                    |  13 +-
 drivers/infiniband/hw/mlx5/mlx5_ib.h               |  13 +-
 drivers/infiniband/hw/mlx5/mr.c                    |  76 ++-
 drivers/infiniband/hw/mlx5/qp.c                    |  42 +-
 drivers/infiniband/hw/mlx5/srq.c                   |  14 +-
 drivers/infiniband/hw/mlx5/user.h                  |   2 +
 drivers/infiniband/hw/nes/nes.c                    |  25 +-
 drivers/infiniband/hw/nes/nes.h                    |   3 +
 drivers/infiniband/hw/nes/nes_cm.c                 | 320 ++++++++--
 drivers/infiniband/hw/nes/nes_cm.h                 |  12 +-
 drivers/infiniband/hw/ocrdma/ocrdma_stats.c        |   9 +-
 drivers/infiniband/hw/qib/qib_init.c               |   8 +-
 drivers/infiniband/hw/qib/qib_mad.c                |   2 +-
 drivers/infiniband/hw/qib/qib_qp.c                 |   3 +-
 drivers/infiniband/hw/usnic/usnic_ib_verbs.c       |   3 +
 .../infiniband/hw/usnic/usnic_uiom_interval_tree.c |  18 +
 drivers/infiniband/ulp/Makefile                    |   5 +
 drivers/infiniband/ulp/ipoib/ipoib_cm.c            |  18 +-
 drivers/infiniband/ulp/iser/iscsi_iser.c           | 105 ++--
 drivers/infiniband/ulp/iser/iscsi_iser.h           |  10 +-
 drivers/infiniband/ulp/iser/iser_verbs.c           |  89 ++-
 drivers/infiniband/ulp/srp/ib_srp.c                | 672 +++++++++++++++-----
 drivers/infiniband/ulp/srp/ib_srp.h                |  94 ++-
 drivers/net/ethernet/mellanox/mlx4/alloc.c         |  27 +-
 drivers/net/ethernet/mellanox/mlx4/cmd.c           |  92 ++-
 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/fw.c            |  46 +-
 drivers/net/ethernet/mellanox/mlx4/fw.h            |   1 +
 drivers/net/ethernet/mellanox/mlx4/icm.c           |   7 +-
 drivers/net/ethernet/mellanox/mlx4/icm.h           |   3 +-
 drivers/net/ethernet/mellanox/mlx4/main.c          |  30 +-
 drivers/net/ethernet/mellanox/mlx4/mlx4.h          |  12 +-
 drivers/net/ethernet/mellanox/mlx4/mr.c            |  17 +-
 drivers/net/ethernet/mellanox/mlx4/qp.c            |  20 +-
 .../net/ethernet/mellanox/mlx4/resource_tracker.c  |  30 +-
 drivers/net/ethernet/mellanox/mlx4/srq.c           |   4 +-
 drivers/net/ethernet/mellanox/mlx5/core/mr.c       |   4 +
 include/linux/mlx4/device.h                        |  15 +-
 include/linux/mlx5/driver.h                        |   1 -
 include/rdma/ib_verbs.h                            |  11 +-
 include/rdma/iw_portmap.h                          | 199 ++++++
 include/rdma/rdma_netlink.h                        |  23 +-
 include/uapi/rdma/rdma_netlink.h                   |  96 ++-
 76 files changed, 3870 insertions(+), 733 deletions(-)
 create mode 100644 drivers/infiniband/core/iwpm_msg.c
 create mode 100644 drivers/infiniband/core/iwpm_util.c
 create mode 100644 drivers/infiniband/core/iwpm_util.h
 create mode 100644 drivers/infiniband/hw/Makefile
 create mode 100644 drivers/infiniband/ulp/Makefile
 create mode 100644 include/rdma/iw_portmap.h

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2014-05-02  0:09 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2014-05-02  0:09 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------
InfiniBand/RDMA updates for 3.15-rc4:

 - cxgb4 hardware driver fixes

----------------------------------------------------------------
Hariprasad S (1):
      RDMA/cxgb4: Update Kconfig to include Chelsio T5 adapter

Steve Wise (3):
      RDMA/cxgb4: Fix endpoint mutex deadlocks
      RDMA/cxgb4: Force T5 connections to use TAHOE congestion control
      RDMA/cxgb4: Only allow kernel db ringing for T4 devs

 drivers/infiniband/hw/cxgb4/Kconfig       |  6 ++---
 drivers/infiniband/hw/cxgb4/cm.c          | 39 ++++++++++++++++++++++---------
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h    |  1 +
 drivers/infiniband/hw/cxgb4/qp.c          | 13 +++++++----
 drivers/infiniband/hw/cxgb4/t4fw_ri_api.h | 14 +++++++++++
 5 files changed, 55 insertions(+), 18 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2014-04-18 18:40 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2014-04-18 18:40 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-rdma

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------

InfiniBand/RDMA updates for 3.15-rc2:

 - Mostly cxgb4 fixes unblocked by the merge of some prerequisites via
   the net tree.

 - Drop deprecated MSI-X API use.

 - A couple other miscellaneous things.

----------------------------------------------------------------
Alexander Gordeev (2):
      IB/qib: Use pci_enable_msix_range() instead of pci_enable_msix()
      IB/mthca: Use pci_enable_msix_exact() instead of pci_enable_msix()

Eli Cohen (1):
      IB/mlx5: Add block multicast loopback support

Hariprasad Shenai (1):
      RDMA/cxgb4: Use pr_warn_ratelimited

Roland Dreier (1):
      Merge branches 'cxgb4', 'misc', 'mlx5' and 'qib' into for-next

Steve Wise (9):
      RDMA/cxgb4: Use the BAR2/WC path for kernel QPs and T5 devices
      RDMA/cxgb4: Endpoint timeout fixes
      RDMA/cxgb4: rmb() after reading valid gen bit
      RDMA/cxgb4: SQ flush fix
      RDMA/cxgb4: Max fastreg depth depends on DSGL support
      RDMA/cxgb4: Initialize reserved fields in a FW work request
      RDMA/cxgb4: Add missing debug stats
      RDMA/cxgb4: Use uninitialized_var()
      RDMA/cxgb4: Fix over-dereference when terminating

 drivers/infiniband/hw/cxgb4/cm.c         | 89 ++++++++++++++++++++------------
 drivers/infiniband/hw/cxgb4/cq.c         | 24 ++++-----
 drivers/infiniband/hw/cxgb4/device.c     | 41 ++++++++++++---
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h   |  2 +
 drivers/infiniband/hw/cxgb4/mem.c        |  6 ++-
 drivers/infiniband/hw/cxgb4/provider.c   |  2 +-
 drivers/infiniband/hw/cxgb4/qp.c         | 70 +++++++++++++++----------
 drivers/infiniband/hw/cxgb4/resource.c   | 10 ++--
 drivers/infiniband/hw/cxgb4/t4.h         | 72 ++++++++++++++++++++++++--
 drivers/infiniband/hw/mlx5/main.c        |  2 +
 drivers/infiniband/hw/mlx5/qp.c          | 12 +++++
 drivers/infiniband/hw/mthca/mthca_main.c |  8 +--
 drivers/infiniband/hw/qib/qib_pcie.c     | 55 ++++++++++----------
 include/linux/mlx5/device.h              |  1 +
 include/linux/mlx5/qp.h                  |  1 +
 15 files changed, 270 insertions(+), 125 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2014-04-03 15:54 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2014-04-03 15:54 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------

Main batch of InfiniBand/RDMA changes for 3.15:

 - The biggest change is core API extensions and mlx5 low-level driver
   support for handling DIF/DIX-style protection information, and the
   addition of PI support to the iSER initiator.  Target support will be
   arriving shortly through the SCSI target tree.

 - A nice simplification to the "umem" memory pinning library now that
   we have chained sg lists.  Kudos to Yishai Hadas for realizing our
   code didn't have to be so crazy.

 - Another nice simplification to the sg wrappers used by qib, ipath and
   ehca to handle their mapping of memory to adapter.

 - The usual batch of fixes to bugs found by static checkers etc. from
   intrepid people like Dan Carpenter and Yann Droneaud.

 - A large batch of cxgb4, ocrdma, qib driver updates.

----------------------------------------------------------------
Alex Tabachnik (2):
      IB/iser: Introduce pi_enable, pi_guard module parameters
      IB/iser: Initialize T10-PI resources

Ariel Nahum (1):
      IB/iser: Remove struct iscsi_iser_conn

Bart Van Assche (7):
      IB/mlx4: Fix a sparse endianness warning
      scsi_transport_srp: Fix two kernel-doc warnings
      IB/srp: Add more logging
      IB/srp: Avoid duplicate connections
      IB/srp: Make writing into the "add_target" sysfs attribute interruptible
      IB/srp: Avoid that writing into "add_target" hangs due to a cable pull
      IB/srp: Fix a race condition between failing I/O and I/O completion

CQ Tang (1):
      IB/qib: Change SDMA progression mode depending on single- or multi-rail

Dan Carpenter (7):
      IB/qib: Remove duplicate check in get_a_ctxt()
      RDMA/nes: Clean up a condition
      RDMA/cxgb4: Fix underflows in c4iw_create_qp()
      RDMA/cxgb4: Fix four byte info leak in c4iw_create_cq()
      IB/qib: Cleanup qib_register_observer()
      mlx4_core: Fix some indenting in mlx4_ib_add()
      mlx4_core: Make buffer larger to avoid overflow warning

Dennis Dalessandro (3):
      IB/qib: Fix potential buffer overrun in sending diag packet routine
      IB/ipath: Fix potential buffer overrun in sending diag packet routine
      IB/qib: Fix memory leak of recv context when driver fails to initialize.

Devesh Sharma (9):
      RDMA/ocrdma: EQ full catastrophe avoidance
      RDMA/ocrdma: SQ and RQ doorbell offset clean up
      RDMA/ocrdma: Read ASIC_ID register to select asic_gen
      RDMA/ocrdma: Allow DPP QP creation
      RDMA/ocrdma: ABI versioning between ocrdma and be2net
      be2net: Add abi version between be2net and ocrdma
      RDMA/ocrdma: Update version string
      RDMA/ocrdma: Increment abi version count
      RDMA/ocrdma: Code clean-up

Fabio Estevam (1):
      IB/usnic: Remove '0x' when using %pa format

Mike Marciniszyn (7):
      IB/qib: Fix debugfs ordering issue with multiple HCAs
      IB/qib: Add percpu counter replacing qib_devdata int_counter
      IB/qib: Modify software pma counters to use percpu variables
      IB/qib: Remove ib_sg_dma_address() and ib_sg_dma_len() overloads
      IB/ipath: Remove ib_sg_dma_address() and ib_sg_dma_len() overloads
      IB/ehca: Remove ib_sg_dma_address() and ib_sg_dma_len() overloads
      IB/core: Remove overload in ib_sg_dma*

Moni Shoua (1):
      IB/core: Don't resolve passive side RoCE L2 address in CMA REQ handler

Or Gerlitz (3):
      IB/iser: Print QP information once connection is established
      IB/iser: Update Mellanox copyright note
      IB/iser: Bump driver version to 1.3

Prarit Bhargava (1):
      RDMA/ocrdma: Fix compiler warning

Randy Dunlap (1):
      IB/iser: Fix sector_t format warning

Roi Dayan (1):
      IB/iser: Drain the tx cq once before looping on the rx cq

Roland Dreier (2):
      RDMA/ocrdma: Fix warnings about pointer <-> integer casts
      Merge branches 'core', 'cxgb4', 'ip-roce', 'iser', 'misc', 'mlx4', 'nes', 'ocrdma', 'qib', 'sgwrapper', 'srp' and 'usnic' into for-next

Sagi Grimberg (23):
      IB/core: Introduce protected memory regions
      IB/core: Introduce signature verbs API
      mlx5: Implement create_mr and destroy_mr
      IB/mlx5: Initialize mlx5_ib_qp signature-related members
      IB/mlx5: Break up wqe handling into begin & finish routines
      IB/mlx5: Remove MTT access mode from umr flags helper function
      IB/mlx5: Keep mlx5 MRs in a radix tree under device
      IB/mlx5: Support IB_WR_REG_SIG_MR
      IB/mlx5: Collect signature error completion
      IB/mlx5: Expose support for signature MR feature
      IB/iser: Suppress completions for fast registration work requests
      IB/iser: Avoid FRWR notation, use fastreg instead
      IB/iser: Push the decision what memory key to use into fast_reg_mr routine
      IB/iser: Move fast_reg_descriptor initialization to a function
      IB/iser: Keep IB device attributes under iser_device
      IB/iser: Replace fastreg descriptor valid bool with indicators container
      IB/iser: Generalize iser_unmap_task_data and finalize_rdma_unaligned_sg
      IB/iser: Generalize fall_to_bounce_buf routine
      IB/iser: Support T10-PI operations
      SCSI/libiscsi: Add check_protection callback for transports
      IB/iser: Implement check_protection
      IB/iser: Publish T10-PI support to SCSI midlayer
      IB/srp: Check ib_query_gid return value

Selvin Xavier (8):
      RDMA/ocrdma: Memory leak fix in ocrdma_dereg_mr()
      RDMA/ocrdma: Use non-zero tag in SRQ posting
      RDMA/ocrdma: Display proper value for max_mw
      RDMA/ocrdma: Handle CQ overrun error
      RDMA/ocrdma: Support non-embedded mailbox commands
      RDMA/ocrdma: Query controller information
      RDMA/ocrdma: Display FW version
      RDMA/ocrdma: Unregister inet notifier when unloading ocrdma

Steve Wise (16):
      RDMA/cxgb4: Cap CQ size at T4_MAX_IQ_SIZE
      RDMA/cxgb4: Allow loopback connections
      RDMA/cxgb4: Always release neigh entry
      RDMA/cxgb4: Fix incorrect BUG_ON conditions
      RDMA/cxgb4: Mind the sq_sig_all/sq_sig_type QP attributes
      RDMA/cxgb4: Default peer2peer mode to 1
      RDMA/cxgb4: Save the correct map length for fast_reg_page_lists
      RDMA/cxgb4: Don't leak skb in c4iw_uld_rx_handler()
      RDMA/cxgb4: Fix possible memory leak in RX_PKT processing
      RDMA/cxgb4: Ignore read reponse type 1 CQEs
      RDMA/cxgb4: Connect_request_upcall fixes
      RDMA/cxgb4: Update snd_seq when sending MPA messages
      RDMA/cxgb4: Lock around accept/reject downcalls
      RDMA/cxgb4: Drop RX_DATA packets if the endpoint is gone
      RDMA/cxgb4: rx_data() needs to hold the ep mutex
      RDMA/cxgb4: Disable DSGL use by default

Tatyana Nikolova (2):
      RDMA/nes: Fixes for IRD/ORD negotiation with MPA v2
      RDMA/nes: Fix for passing a valid QP pointer to the user space library

Yan Burman (1):
      IB/mad: Check and handle potential DMA mapping errors

Yann Droneaud (5):
      IB/qib: add missing braces in do_qib_user_sdma_queue_create()
      IB/qib: fixup indentation in qib_ib_rcv()
      IB/nes: Return an error on ib_copy_from_udata() failure instead of NULL
      IB/mthca: Return an error on ib_copy_to_udata() failure
      IB/ehca: Returns an error on ib_copy_to_udata() failure

Yishai Hadas (1):
      IB: Refactor umem to use linear SG table

 drivers/infiniband/core/cm.c                   |  17 -
 drivers/infiniband/core/cma.c                  |  26 --
 drivers/infiniband/core/mad.c                  |  14 +
 drivers/infiniband/core/umem.c                 | 120 +++--
 drivers/infiniband/core/verbs.c                |  47 ++
 drivers/infiniband/hw/amso1100/c2_provider.c   |  23 +-
 drivers/infiniband/hw/cxgb3/iwch_provider.c    |  19 +-
 drivers/infiniband/hw/cxgb4/cm.c               | 110 +++--
 drivers/infiniband/hw/cxgb4/cq.c               |  31 +-
 drivers/infiniband/hw/cxgb4/device.c           |   6 +-
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h         |   2 +
 drivers/infiniband/hw/cxgb4/mem.c              |  55 +--
 drivers/infiniband/hw/cxgb4/qp.c               |   8 +-
 drivers/infiniband/hw/ehca/ehca_classes.h      |   2 +-
 drivers/infiniband/hw/ehca/ehca_cq.c           |   1 +
 drivers/infiniband/hw/ehca/ehca_mrmw.c         | 257 ++++------
 drivers/infiniband/hw/ipath/ipath_diag.c       |  66 +--
 drivers/infiniband/hw/ipath/ipath_dma.c        |  43 +-
 drivers/infiniband/hw/ipath/ipath_mr.c         |  39 +-
 drivers/infiniband/hw/mlx4/doorbell.c          |   4 +-
 drivers/infiniband/hw/mlx4/main.c              |  11 +-
 drivers/infiniband/hw/mlx4/mr.c                |  39 +-
 drivers/infiniband/hw/mlx4/qp.c                |   2 +-
 drivers/infiniband/hw/mlx5/cq.c                |  62 +++
 drivers/infiniband/hw/mlx5/doorbell.c          |   4 +-
 drivers/infiniband/hw/mlx5/main.c              |  12 +
 drivers/infiniband/hw/mlx5/mem.c               |  80 ++--
 drivers/infiniband/hw/mlx5/mlx5_ib.h           |  14 +
 drivers/infiniband/hw/mlx5/mr.c                | 157 +++++++
 drivers/infiniband/hw/mlx5/qp.c                | 540 +++++++++++++++++++--
 drivers/infiniband/hw/mthca/mthca_provider.c   |  43 +-
 drivers/infiniband/hw/nes/nes_cm.c             | 121 +++--
 drivers/infiniband/hw/nes/nes_cm.h             |   3 +
 drivers/infiniband/hw/nes/nes_user.h           |   5 +-
 drivers/infiniband/hw/nes/nes_verbs.c          | 261 +++++------
 drivers/infiniband/hw/nes/nes_verbs.h          |   1 +
 drivers/infiniband/hw/ocrdma/Makefile          |   2 +-
 drivers/infiniband/hw/ocrdma/ocrdma.h          | 110 ++++-
 drivers/infiniband/hw/ocrdma/ocrdma_abi.h      |   7 +-
 drivers/infiniband/hw/ocrdma/ocrdma_ah.c       |   2 +-
 drivers/infiniband/hw/ocrdma/ocrdma_hw.c       | 299 +++++++++---
 drivers/infiniband/hw/ocrdma/ocrdma_hw.h       |   6 +-
 drivers/infiniband/hw/ocrdma/ocrdma_main.c     |  81 +++-
 drivers/infiniband/hw/ocrdma/ocrdma_sli.h      | 261 ++++++++++-
 drivers/infiniband/hw/ocrdma/ocrdma_stats.c    | 623 +++++++++++++++++++++++++
 drivers/infiniband/hw/ocrdma/ocrdma_stats.h    |  54 +++
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c    | 233 ++++-----
 drivers/infiniband/hw/qib/qib.h                |  12 +-
 drivers/infiniband/hw/qib/qib_diag.c           |  52 +--
 drivers/infiniband/hw/qib/qib_dma.c            |  21 +-
 drivers/infiniband/hw/qib/qib_file_ops.c       |   5 +-
 drivers/infiniband/hw/qib/qib_fs.c             |   1 +
 drivers/infiniband/hw/qib/qib_iba6120.c        |  11 +-
 drivers/infiniband/hw/qib/qib_iba7220.c        |  12 +-
 drivers/infiniband/hw/qib/qib_iba7322.c        |  37 +-
 drivers/infiniband/hw/qib/qib_init.c           |  96 ++--
 drivers/infiniband/hw/qib/qib_mad.c            |  44 +-
 drivers/infiniband/hw/qib/qib_mr.c             |  14 +-
 drivers/infiniband/hw/qib/qib_rc.c             |   2 +-
 drivers/infiniband/hw/qib/qib_ruc.c            |   1 +
 drivers/infiniband/hw/qib/qib_ud.c             |   6 +-
 drivers/infiniband/hw/qib/qib_user_sdma.c      | 136 +++++-
 drivers/infiniband/hw/qib/qib_verbs.c          |   8 +-
 drivers/infiniband/hw/qib/qib_verbs.h          |  16 +-
 drivers/infiniband/hw/usnic/usnic_uiom.c       |   2 +-
 drivers/infiniband/ulp/iser/iscsi_iser.c       |  93 ++--
 drivers/infiniband/ulp/iser/iscsi_iser.h       |  85 +++-
 drivers/infiniband/ulp/iser/iser_initiator.c   | 154 ++++--
 drivers/infiniband/ulp/iser/iser_memory.c      | 470 ++++++++++++++-----
 drivers/infiniband/ulp/iser/iser_verbs.c       | 325 +++++++++----
 drivers/infiniband/ulp/srp/ib_srp.c            |  83 ++--
 drivers/infiniband/ulp/srp/ib_srp.h            |   1 +
 drivers/net/ethernet/emulex/benet/be_roce.c    |   6 +
 drivers/net/ethernet/emulex/benet/be_roce.h    |   3 +
 drivers/net/ethernet/mellanox/mlx5/core/main.c |   1 +
 drivers/net/ethernet/mellanox/mlx5/core/mr.c   |  85 ++++
 drivers/scsi/libiscsi.c                        |  32 ++
 drivers/scsi/scsi_transport_srp.c              |   1 +
 include/linux/mlx5/cq.h                        |   1 +
 include/linux/mlx5/device.h                    |  43 ++
 include/linux/mlx5/driver.h                    |  41 ++
 include/linux/mlx5/qp.h                        |  67 +++
 include/rdma/ib_cm.h                           |   1 -
 include/rdma/ib_umem.h                         |  11 +-
 include/rdma/ib_verbs.h                        | 201 +++++++-
 include/scsi/libiscsi.h                        |   4 +
 include/scsi/scsi_transport_iscsi.h            |   1 +
 include/scsi/scsi_transport_srp.h              |   1 -
 88 files changed, 4634 insertions(+), 1475 deletions(-)
 create mode 100644 drivers/infiniband/hw/ocrdma/ocrdma_stats.c
 create mode 100644 drivers/infiniband/hw/ocrdma/ocrdma_stats.h

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2014-02-14 17:51 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2014-02-14 17:51 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------

RDMA/InfiniBand fixes for 3.14-rc3:
 - Fix some rough edges from the "IP addressing for IBoE" merge
 - Other misc fixes, mostly to hardware drivers

----------------------------------------------------------------
Dan Carpenter (1):
      IB/iser: Fix use after free in iser_snd_completion()

Devesh Sharma (2):
      RDMA/ocrdma: Fix traffic class shift
      RDMA/ocrdma: Fix load time panic during GID table init

Eli Cohen (4):
      IB/mlx5: Fix RC transport send queue overhead computation
      IB/mlx5: Fix binary compatibility with libmlx5
      IB/mlx5: Don't set "block multicast loopback" capability
      IB/mlx5: Remove dependency on X86

Julia Lawall (2):
      RDMA/nes: Fix error return code
      RDMA/amso1100: Fix error return code

Kumar Sanghvi (1):
      RDMA/cxgb4: Add missing neigh_release in LE-Workaround path

Matan Barak (1):
      IB/mlx4: Don't allocate range of steerable UD QPs for Ethernet-only device

Mike Marciniszyn (1):
      IB/qib: Add missing serdes init sequence

Moni Shoua (6):
      IB/mlx4: Make sure GID index 0 is always occupied
      IB/mlx4: Move rtnl locking to the right place
      IB/mlx4: Do IBoE locking earlier when initializing the GID table
      IB/mlx4: Do IBoE GID table resets per-port
      IB/mlx4: Build the port IBoE GID table properly under bonding
      IB: Report using RoCE IP based gids in port caps

Roi Dayan (1):
      IB/iser: Avoid dereferencing iscsi_iser conn object when not bound to iser connection

Roland Dreier (2):
      mlx5: Add include of <linux/slab.h> because of kzalloc()/kfree() use
      Merge branches 'cma', 'cxgb4', 'iser', 'misc', 'mlx4', 'mlx5', 'nes', 'ocrdma', 'qib' and 'usnic' into for-next

Upinder Malhi (1):
      IB/usnic: Fix smatch endianness error

 drivers/infiniband/hw/amso1100/c2.c             |   4 +-
 drivers/infiniband/hw/amso1100/c2_rnic.c        |   3 +-
 drivers/infiniband/hw/cxgb4/cm.c                |   1 +
 drivers/infiniband/hw/mlx4/main.c               | 185 +++++++++++++++++-------
 drivers/infiniband/hw/mlx5/Kconfig              |   2 +-
 drivers/infiniband/hw/mlx5/main.c               |  22 ++-
 drivers/infiniband/hw/mlx5/qp.c                 |  18 ++-
 drivers/infiniband/hw/mlx5/user.h               |   7 +
 drivers/infiniband/hw/nes/nes.c                 |   5 +-
 drivers/infiniband/hw/ocrdma/ocrdma_main.c      |   2 +-
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c     |   4 +-
 drivers/infiniband/hw/qib/qib_iba7322.c         |   5 +
 drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c   |   9 +-
 drivers/infiniband/ulp/iser/iser_initiator.c    |   3 +-
 drivers/infiniband/ulp/iser/iser_verbs.c        |  10 +-
 drivers/net/ethernet/mellanox/mlx5/core/Kconfig |   2 +-
 include/linux/mlx5/driver.h                     |   3 +
 include/rdma/ib_verbs.h                         |   3 +-
 18 files changed, 214 insertions(+), 74 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2014-01-24 19:43 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2014-01-24 19:43 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------

Main batch of InfiniBand/RDMA changes for 3.14:
 - Flow steering for InfiniBand UD traffic
 - IP-based addressing for IBoE aka RoCE
 - Pass SRP submaintainership from Dave to Bart
 - SRP transport fixes from Bart
 - Add the new Cisco usNIC low-level device driver
 - Various other fixes

----------------------------------------------------------------
Bart Van Assche (4):
      scsi_transport_srp: Block rport upon TL error even with fast_io_fail_tmo = off
      scsi_transport_srp: Fix a race condition
      scsi_transport_srp: Add rport state diagram
      scsi_transport_srp: Fix kernel-doc warnings

Dan Carpenter (2):
      mlx5_core: Remove dead code
      IB/usnic: Use GFP_ATOMIC under spinlock

David Dillow (1):
      MAINTAINERS: Pass the torch of SRP submaintainership

Devesh Sharma (2):
      RDMA/ocrdma: Fix AV_VALID bit position
      RDMA/ocrdma: Fix OCRDMA_GEN2_FAMILY macro definition

Ding Tianhong (1):
      RDMA/nes: Slight optimization of Ethernet address compare

Eli Cohen (13):
      IB/mlx5: Remove unused code in mr.c
      IB/mlx5: Fix micro UAR allocator
      IB/mlx5: Clear out struct before create QP command
      mlx5_core: Use mlx5 core style warning
      IB/mlx5: Make sure doorbell record is visible before doorbell
      IB/mlx5: Implement modify CQ
      IB/mlx5: Add support for resize CQ
      mlx5_core: Improve debugfs readability
      mlx5_core: Fix PowerPC support
      IB/mlx5: Allow creation of QPs with zero-length work queues
      IB/mlx5: Abort driver cleanup if teardown hca fails
      IB/mlx5: Remove old field for create mkey mailbox
      IB/mlx5: Verify reserved fields are cleared

Haggai Eran (1):
      mlx5_core: Fix out arg size in access_register command

Ira Weiny (1):
      IB/qib: Fix QP check when looping back to/from QP1

Julia Lawall (1):
      IB/mlx4: Fix error return code

Matan Barak (9):
      IB/core: Add flow steering support for IPoIB UD traffic
      IB/core: Add support for IB L2 device-managed steering
      mlx4_core: Add support for steerable IB UD QPs
      IB/mlx4: Enable device-managed steering support for IB ports too
      IB/mlx4: Add mechanism to support flow steering over IB links
      IB/mlx4: Add support for steerable IB UD QPs
      IB/core: Ethernet L2 attributes in verbs/cm structures
      IB/core: Make ib_addr a core IB module
      IB/mlx4: Add dependency INET

Michal Schmidt (1):
      IPoIB: Report operstate consistently when brought up without a link

Moni Shoua (5):
      IB/cma: IBoE (RoCE) IP-based GID addressing
      IB/mlx4: Use IBoE (RoCE) IP based GIDs in the port GID table
      IB/mlx4: Handle Ethernet L2 parameters for IP based GID addressing
      RDMA/ocrdma: Handle Ethernet L2 parameters for IP based GID addressing
      RDMA/ocrdma: Populate GID table with IP based gids

Or Gerlitz (2):
      IB/core: Resolve Ethernet L2 addresses when modifying QP
      IB/core: Fix unused variable warning

Paul Bolle (1):
      RDMA/cxgb4: Fix gcc warning on 32-bit arch

Roland Dreier (6):
      IB/usnic: Fix typo "Ignorning" -> "Ignoring"
      RDMA/ocrdma: Move ocrdma_inetaddr_event outside of "#if CONFIG_IPV6"
      RDMA/ocrdma: Add dependency on INET
      IB/mlx4: Use IS_ENABLED(CONFIG_IPV6)
      Merge branches 'cma', 'cxgb4', 'flowsteer', 'ipoib', 'misc', 'mlx4', 'mlx5', 'ocrdma', 'qib', 'srp' and 'usnic' into for-next
      Merge branch 'ip-roce' into for-next

Somnath Kotur (1):
      RDMA/cma: Handle global/non-linklocal IPv6 addresses in cma_check_linklocal()

Svetlana Mavrina (1):
      RDMA/amso1100: Add check if cache memory was allocated before freeing it

Upinder Malhi (22):
      IB/usnic: Add Cisco VIC low-level hardware driver
      IB/usnic: Change WARN_ON to lockdep_assert_held
      IB/usnic: Add struct usnic_transport_spec
      IB/usnic: Push all forwarding state to usnic_fwd.[hc]
      IB/usnic: Port over main.c and verbs.c to the usnic_fwd.h
      IB/usnic: Port over usnic_ib_qp_grp.[hc] to new usnic_fwd.h
      IB/usnic: Port over sysfs to new usnic_fwd.h
      IB/usnic: Update ABI and Version file for UDP support
      IB/usnic: Add UDP support to usnic_fwd.[hc]
      IB:usnic: Add UDP support to usnic_transport.[hc]
      IB/usnic: Add UDP support in u*verbs.c, u*main.c and u*util.h
      IB/usnic: Add UDP support in usnic_ib_qp_grp.[hc]
      IB/core: Add RDMA_TRANSPORT_USNIC_UDP
      IB/usnic: Remove superflous parentheses
      IB/usnic: Use for_each_sg instead of a for-loop
      IB/usnic: Expose flows via debugfs
      IB/usnic: Append documentation to usnic_transport.h and cleanup
      IB/usnic: Fix endianness-related warnings
      IB/usnic: Add dependency on CONFIG_INET
      IB/core: Add support for RDMA_NODE_USNIC_UDP
      IB/usnic: Advertise usNIC devices as RDMA_NODE_USNIC_UDP
      IB/usnic: Set userspace/kernel ABI ver to 4

Wei Yongjun (3):
      IB/usnic: Remove unused variable in usnic_debugfs_exit()
      IB/cm: Fix missing unlock on error in cm_init_qp_rtr_attr()
      IB/usnic: Remove unused includes of <linux/version.h>

 Documentation/scsi/scsi_transport_srp/Makefile     |   7 +
 .../scsi_transport_srp/rport_state_diagram.dot     |  26 +
 MAINTAINERS                                        |   7 +-
 drivers/infiniband/Kconfig                         |   6 +-
 drivers/infiniband/Makefile                        |   1 +
 drivers/infiniband/core/Makefile                   |   5 +-
 drivers/infiniband/core/addr.c                     |  97 ++-
 drivers/infiniband/core/cm.c                       |  52 ++
 drivers/infiniband/core/cma.c                      |  81 ++-
 drivers/infiniband/core/core_priv.h                |   2 +
 drivers/infiniband/core/iwcm.c                     |   3 +-
 drivers/infiniband/core/sa_query.c                 |  12 +-
 drivers/infiniband/core/sysfs.c                    |   1 +
 drivers/infiniband/core/ucma.c                     |  18 +-
 drivers/infiniband/core/uverbs_cmd.c               |   4 +
 drivers/infiniband/core/verbs.c                    | 101 ++-
 drivers/infiniband/hw/amso1100/c2_intr.c           |   3 +-
 drivers/infiniband/hw/cxgb4/mem.c                  |   2 +-
 drivers/infiniband/hw/ehca/ehca_qp.c               |   2 +-
 drivers/infiniband/hw/ipath/ipath_qp.c             |   2 +-
 drivers/infiniband/hw/mlx4/Kconfig                 |   2 +-
 drivers/infiniband/hw/mlx4/ah.c                    |  40 +-
 drivers/infiniband/hw/mlx4/cq.c                    |   9 +
 drivers/infiniband/hw/mlx4/main.c                  | 747 +++++++++++++++-----
 drivers/infiniband/hw/mlx4/mlx4_ib.h               |  18 +-
 drivers/infiniband/hw/mlx4/qp.c                    | 157 ++++-
 drivers/infiniband/hw/mlx4/sysfs.c                 |   8 +-
 drivers/infiniband/hw/mlx5/cq.c                    | 310 ++++++++-
 drivers/infiniband/hw/mlx5/main.c                  |  13 +-
 drivers/infiniband/hw/mlx5/mlx5_ib.h               |   4 +-
 drivers/infiniband/hw/mlx5/mr.c                    |   1 -
 drivers/infiniband/hw/mlx5/qp.c                    | 133 ++--
 drivers/infiniband/hw/mlx5/user.h                  |   3 +
 drivers/infiniband/hw/mthca/mthca_qp.c             |   3 +-
 drivers/infiniband/hw/nes/nes_cm.c                 |   3 +-
 drivers/infiniband/hw/ocrdma/Kconfig               |   2 +-
 drivers/infiniband/hw/ocrdma/ocrdma.h              |  12 +
 drivers/infiniband/hw/ocrdma/ocrdma_ah.c           |   6 +-
 drivers/infiniband/hw/ocrdma/ocrdma_hw.c           |  21 +-
 drivers/infiniband/hw/ocrdma/ocrdma_hw.h           |   1 -
 drivers/infiniband/hw/ocrdma/ocrdma_main.c         | 138 ++--
 drivers/infiniband/hw/ocrdma/ocrdma_sli.h          |   4 +-
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c        |   3 +-
 drivers/infiniband/hw/qib/qib_qp.c                 |   2 +-
 drivers/infiniband/hw/qib/qib_ud.c                 |   9 +-
 drivers/infiniband/hw/usnic/Kconfig                |  10 +
 drivers/infiniband/hw/usnic/Makefile               |  15 +
 drivers/infiniband/hw/usnic/usnic.h                |  29 +
 drivers/infiniband/hw/usnic/usnic_abi.h            |  73 ++
 drivers/infiniband/hw/usnic/usnic_common_pkt_hdr.h |  27 +
 drivers/infiniband/hw/usnic/usnic_common_util.h    |  68 ++
 drivers/infiniband/hw/usnic/usnic_debugfs.c        | 154 +++++
 drivers/infiniband/hw/usnic/usnic_debugfs.h        |  29 +
 drivers/infiniband/hw/usnic/usnic_fwd.c            | 350 ++++++++++
 drivers/infiniband/hw/usnic/usnic_fwd.h            | 113 +++
 drivers/infiniband/hw/usnic/usnic_ib.h             | 118 ++++
 drivers/infiniband/hw/usnic/usnic_ib_main.c        | 682 ++++++++++++++++++
 drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c      | 754 ++++++++++++++++++++
 drivers/infiniband/hw/usnic/usnic_ib_qp_grp.h      | 117 ++++
 drivers/infiniband/hw/usnic/usnic_ib_sysfs.c       | 341 +++++++++
 drivers/infiniband/hw/usnic/usnic_ib_sysfs.h       |  29 +
 drivers/infiniband/hw/usnic/usnic_ib_verbs.c       | 765 +++++++++++++++++++++
 drivers/infiniband/hw/usnic/usnic_ib_verbs.h       |  72 ++
 drivers/infiniband/hw/usnic/usnic_log.h            |  58 ++
 drivers/infiniband/hw/usnic/usnic_transport.c      | 202 ++++++
 drivers/infiniband/hw/usnic/usnic_transport.h      |  51 ++
 drivers/infiniband/hw/usnic/usnic_uiom.c           | 604 ++++++++++++++++
 drivers/infiniband/hw/usnic/usnic_uiom.h           |  80 +++
 .../infiniband/hw/usnic/usnic_uiom_interval_tree.c | 236 +++++++
 .../infiniband/hw/usnic/usnic_uiom_interval_tree.h |  73 ++
 drivers/infiniband/hw/usnic/usnic_vnic.c           | 467 +++++++++++++
 drivers/infiniband/hw/usnic/usnic_vnic.h           | 103 +++
 drivers/infiniband/ulp/ipoib/ipoib_main.c          |   4 +-
 drivers/infiniband/ulp/ipoib/ipoib_verbs.c         |   3 +
 drivers/infiniband/ulp/srp/ib_srp.c                |   1 +
 drivers/net/ethernet/mellanox/mlx4/cmd.c           |   9 +
 drivers/net/ethernet/mellanox/mlx4/fw.c            |  10 +
 drivers/net/ethernet/mellanox/mlx4/mcg.c           |  17 +
 drivers/net/ethernet/mellanox/mlx4/mlx4.h          |   5 +
 drivers/net/ethernet/mellanox/mlx4/port.c          |  20 +
 .../net/ethernet/mellanox/mlx4/resource_tracker.c  |  10 +
 drivers/net/ethernet/mellanox/mlx5/core/cq.c       |  17 +-
 drivers/net/ethernet/mellanox/mlx5/core/debugfs.c  |  39 +-
 drivers/net/ethernet/mellanox/mlx5/core/main.c     |  10 +-
 .../net/ethernet/mellanox/mlx5/core/pagealloc.c    |  13 +-
 drivers/net/ethernet/mellanox/mlx5/core/port.c     |   2 +-
 drivers/net/ethernet/mellanox/mlx5/core/qp.c       |   5 +-
 drivers/scsi/scsi_transport_srp.c                  |  95 ++-
 include/linux/mlx4/cmd.h                           |   1 +
 include/linux/mlx4/cq.h                            |  15 +-
 include/linux/mlx4/device.h                        |   7 +-
 include/linux/mlx5/cq.h                            |  18 +-
 include/linux/mlx5/device.h                        |  31 +-
 include/linux/mlx5/qp.h                            |  45 ++
 include/rdma/ib_addr.h                             |  69 +-
 include/rdma/ib_cm.h                               |   1 +
 include/rdma/ib_pack.h                             |   1 +
 include/rdma/ib_sa.h                               |   3 +
 include/rdma/ib_verbs.h                            |  42 +-
 include/scsi/scsi_transport_srp.h                  |  36 +-
 100 files changed, 7663 insertions(+), 567 deletions(-)
 create mode 100644 Documentation/scsi/scsi_transport_srp/Makefile
 create mode 100644 Documentation/scsi/scsi_transport_srp/rport_state_diagram.dot
 create mode 100644 drivers/infiniband/hw/usnic/Kconfig
 create mode 100644 drivers/infiniband/hw/usnic/Makefile
 create mode 100644 drivers/infiniband/hw/usnic/usnic.h
 create mode 100644 drivers/infiniband/hw/usnic/usnic_abi.h
 create mode 100644 drivers/infiniband/hw/usnic/usnic_common_pkt_hdr.h
 create mode 100644 drivers/infiniband/hw/usnic/usnic_common_util.h
 create mode 100644 drivers/infiniband/hw/usnic/usnic_debugfs.c
 create mode 100644 drivers/infiniband/hw/usnic/usnic_debugfs.h
 create mode 100644 drivers/infiniband/hw/usnic/usnic_fwd.c
 create mode 100644 drivers/infiniband/hw/usnic/usnic_fwd.h
 create mode 100644 drivers/infiniband/hw/usnic/usnic_ib.h
 create mode 100644 drivers/infiniband/hw/usnic/usnic_ib_main.c
 create mode 100644 drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c
 create mode 100644 drivers/infiniband/hw/usnic/usnic_ib_qp_grp.h
 create mode 100644 drivers/infiniband/hw/usnic/usnic_ib_sysfs.c
 create mode 100644 drivers/infiniband/hw/usnic/usnic_ib_sysfs.h
 create mode 100644 drivers/infiniband/hw/usnic/usnic_ib_verbs.c
 create mode 100644 drivers/infiniband/hw/usnic/usnic_ib_verbs.h
 create mode 100644 drivers/infiniband/hw/usnic/usnic_log.h
 create mode 100644 drivers/infiniband/hw/usnic/usnic_transport.c
 create mode 100644 drivers/infiniband/hw/usnic/usnic_transport.h
 create mode 100644 drivers/infiniband/hw/usnic/usnic_uiom.c
 create mode 100644 drivers/infiniband/hw/usnic/usnic_uiom.h
 create mode 100644 drivers/infiniband/hw/usnic/usnic_uiom_interval_tree.c
 create mode 100644 drivers/infiniband/hw/usnic/usnic_uiom_interval_tree.h
 create mode 100644 drivers/infiniband/hw/usnic/usnic_vnic.c
 create mode 100644 drivers/infiniband/hw/usnic/usnic_vnic.h

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2013-12-23 17:24 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2013-12-23 17:24 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

The following changes since commit 374b105797c3d4f29c685f3be535c35f5689b30e:

  Linux 3.13-rc3 (2013-12-06 09:34:04 -0800)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

for you to fetch changes up to 22f12c60e12a4112fdca31582e66fe501600ee2b:

  Merge branches 'cxgb4', 'flowsteer' and 'misc' into for-linus (2013-12-23 09:19:02 -0800)

----------------------------------------------------------------

Last batch of InfiniBand/RDMA changes for 3.13 / 2014:
 - Additional checks for uverbs to ensure forward compatibility, handle
   malformed input better.
 - Fix potential use-after-free in iWARP connection manager.
 - Make a function static.

----------------------------------------------------------------
Rashika (1):
      RDMA/cxgb4: Make _c4iw_write_mem_dma() static

Roland Dreier (2):
      IB/uverbs: New macro to set pointers to NULL if length is 0 in INIT_UDATA()
      Merge branches 'cxgb4', 'flowsteer' and 'misc' into for-linus

Steve Wise (1):
      RDMA/iwcm: Don't touch cm_id after deref in rem_ref

Yann Droneaud (7):
      IB/core: const'ify inbuf in struct ib_udata
      IB/uverbs: Check reserved field in extended command header
      IB/uverbs: Check comp_mask in destroy_flow
      IB/uverbs: Check reserved fields in create_flow
      IB/uverbs: Set error code when fail to consume all flow_spec items
      IB/uverbs: Check input length in flow steering uverbs
      IB/uverbs: Check access to userspace response buffer in extended command

 drivers/infiniband/core/iwcm.c        | 11 +++++++++--
 drivers/infiniband/core/uverbs.h      | 10 +++++++++-
 drivers/infiniband/core/uverbs_cmd.c  | 17 +++++++++++++++++
 drivers/infiniband/core/uverbs_main.c | 27 ++++++++++++++++-----------
 drivers/infiniband/hw/cxgb4/mem.c     |  2 +-
 include/rdma/ib_verbs.h               |  2 +-
 6 files changed, 53 insertions(+), 16 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2013-11-18 18:40 Roland Dreier
@ 2013-11-19 17:25 ` Or Gerlitz
  0 siblings, 0 replies; 223+ messages in thread
From: Or Gerlitz @ 2013-11-19 17:25 UTC (permalink / raw)
  To: Roland Dreier; +Cc: linux-rdma, linux-kernel

On 18/11/2013 20:40, Roland Dreier wrote:
> Hi Linus,
>
> Please pull from
>
>      git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus
>
> ----------------------------------------------------------------
>
> Main batch of InfiniBand/RDMA changes for 3.13:
>
>   - Re-enable flow steering verbs with new improved userspace ABI
>   - Fixes for slow connection due to GID lookup scalability
>   - IPoIB fixes
>   - Many fixes to HW drivers including mlx4, mlx5, ocrdma and qib
>   - Further improvements to SRP error handling
>   - Add new transport type for Cisco usNIC

Hi Roland, can you spare few words on how you see the RoCE IP based Addressing V5 series? we have addressed the concerns you raised re compatibility and also simplified the series to avoid using uverbs extensions @ this point, anything else left there?

This series is pre-step for submitting SRIOV support to RoCE (the code is ready!) and hence no Cloud RoCE upstream solution for VMs before we nail that, it deserves your response. I have posted reply on Sep 17th, to your concerns http://marc.info/?l=linux-rdma&m=137945099714426&w=2 and didn't really hear from you. So went ahead and addressed the feedback as we captured it.

Or.



^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2013-11-18 18:40 Roland Dreier
  2013-11-19 17:25 ` Or Gerlitz
  0 siblings, 1 reply; 223+ messages in thread
From: Roland Dreier @ 2013-11-18 18:40 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------

Main batch of InfiniBand/RDMA changes for 3.13:

 - Re-enable flow steering verbs with new improved userspace ABI
 - Fixes for slow connection due to GID lookup scalability
 - IPoIB fixes
 - Many fixes to HW drivers including mlx4, mlx5, ocrdma and qib
 - Further improvements to SRP error handling
 - Add new transport type for Cisco usNIC

----------------------------------------------------------------
Bart Van Assche (11):
      IB/srp: Keep rport as long as the IB transport layer
      scsi_transport_srp: Add transport layer error handling
      IB/srp: Use SRP transport layer error recovery
      IB/srp: Start timers if a transport layer error occurs
      scsi_transport_srp: Add periodic reconnect support
      IB/srp: Add periodic reconnect functionality
      IB/srp: Export sgid to sysfs
      IB/srp: Introduce srp_alloc_req_data()
      IB/srp: Make queue size configurable
      IB/srp: Avoid offlining operational SCSI devices
      IB/srp: Report receive errors correctly

Ben Hutchings (1):
      IB/cxgb4: Fix formatting of physical address

Dan Carpenter (1):
      RDMA/ocrdma: Silence an integer underflow warning

Dave Jones (1):
      RDMA/nes: Remove self-assignment from nes_query_qp()

Doug Ledford (2):
      IB/cma: Use cached gids
      IB/cma: Check for GID on listening device first

Eli Cohen (17):
      IB/mlx5: Fix check of number of entries in create CQ
      IB/mlx5: Multithreaded create MR
      IB/mlx5: Fix overflow check in IB_WR_FAST_REG_MR
      IB/mlx5: Simplify mlx5_ib_destroy_srq
      mlx5: Fix cleanup flow when DMA mapping fails
      mlx5: Support communicating arbitrary host page size to firmware
      mlx5: Clear reserved area in set_hca_cap()
      IB/mlx5: Remove dead code in mr.c
      IB/mlx5: Remove "Always false" comparison
      IB/mlx5: Update opt param mask for RTS2RTS
      mlx5: Use enum to indicate adapter page size
      IB/mlx4: Fix endless loop in resize CQ
      IB/core: Encorce MR access rights rules on kernel consumers
      IB/mlx5: Remove dead code
      IB/mlx5: Fix list_del of empty list
      IB/mlx4: Fix device max capabilities check
      IB/mlx5: Fix page shift in create CQ for userspace

Erez Shitrit (6):
      IPoIB: Fix crash in dev_open error flow
      IPoIB: Fix deadlock between dev_change_flags() and __ipoib_dev_flush()
      IPoIB: Avoid flushing the driver workqueue on dev_down
      IPoIB: Fix usage of uninitialized multicast objects
      IPoIB: Add path query flushing in ipoib_ib_dev_cleanup
      IPoIB: Start multicast join process only on active ports

Jack Wang (1):
      IB/srp: Add change_queue_depth and change_queue_type support

Jan Kara (2):
      IB/ipath: Convert ipath_user_sdma_pin_pages() to use get_user_pages_fast()
      IB/qib: Convert qib_user_sdma_pin_pages() to use get_user_pages_fast()

Joe Perches (1):
      IB/ucma: Convert use of typedef ctl_table to struct ctl_table

Latchesar Ionkov (1):
      IB/core: Pass imm_data from ib_uverbs_send_wr to ib_send_wr correctly

Matan Barak (2):
      IB/core: clarify overflow/underflow checks on ib_create/destroy_flow
      IB/core: Re-enable create_flow/destroy_flow uverbs

Mathias Krause (1):
      IB/netlink: Remove superfluous RDMA_NL_GET_OP() masking

Michal Nazarewicz (1):
      RDMA/cma: Remove unused argument and minor dead code

Michal Schmidt (1):
      IPoIB: lower NAPI weight

Mike Marciniszyn (2):
      IB/qib: Fix checkpatch __packed warnings
      IB/qib: Fix txselect regression

Moshe Lazer (2):
      IB/mlx5: Fix srq free in destroy qp
      mlx5_core: Change optimal_reclaimed_pages for better performance

Naresh Gottumukkala (2):
      RDMA/ocrdma: Fix a crash in rmmod
      RDMA/ocrdma: Remove redundant check in ocrdma_build_fr()

Roland Dreier (1):
      Merge branches 'cma', 'cxgb4', 'flowsteer', 'ipoib', 'misc', 'mlx4', 'mlx5', 'nes', 'ocrdma', 'qib' and 'srp' into for-next

Sean Hefty (1):
      RDMA/ucma: Discard events for IDs not yet claimed by user space

Tal Alon (1):
      IPoIB: Change CM skb memory allocation to be non-atomic during init

Upinder Malhi \(umalhi\) (1):
      IB/core: Add Cisco usNIC rdma node and transport types

Vu Pham (2):
      IB/srp: Make transport layer retry count configurable
      IB/srp: Remove target from list before freeing Scsi_Host structure

Yann Droneaud (5):
      IB/core: Rename 'flow' structs to match other uverbs structs
      IB/core: Make uverbs flow structure use names like verbs ones
      IB/core: Use a common header for uverbs flow_specs
      IB/core: Remove ib_uverbs_flow_spec structure from userspace
      IB/core: extended command: an improved infrastructure for uverbs commands

Zhao Hongjiang (1):
      IB/cm: Convert to using idr_alloc_cyclic()

 Documentation/ABI/stable/sysfs-driver-ib_srp       |  13 +
 Documentation/ABI/stable/sysfs-transport-srp       |  39 ++
 drivers/infiniband/Kconfig                         |  11 -
 drivers/infiniband/core/cm.c                       |   5 +-
 drivers/infiniband/core/cma.c                      |  68 ++-
 drivers/infiniband/core/netlink.c                  |   2 +-
 drivers/infiniband/core/sysfs.c                    |   1 +
 drivers/infiniband/core/ucma.c                     |   4 +-
 drivers/infiniband/core/uverbs.h                   |  36 +-
 drivers/infiniband/core/uverbs_cmd.c               | 109 ++---
 drivers/infiniband/core/uverbs_main.c              | 128 +++--
 drivers/infiniband/core/verbs.c                    |  17 +
 drivers/infiniband/hw/cxgb4/device.c               |   4 +-
 drivers/infiniband/hw/ipath/ipath_user_sdma.c      |   7 +-
 drivers/infiniband/hw/mlx4/cq.c                    |   9 +-
 drivers/infiniband/hw/mlx4/main.c                  |   8 +-
 drivers/infiniband/hw/mlx5/cq.c                    |  25 +-
 drivers/infiniband/hw/mlx5/main.c                  |   3 +-
 drivers/infiniband/hw/mlx5/mlx5_ib.h               |   6 +
 drivers/infiniband/hw/mlx5/mr.c                    | 167 +++++--
 drivers/infiniband/hw/mlx5/qp.c                    |  21 +-
 drivers/infiniband/hw/mlx5/srq.c                   |   8 +-
 drivers/infiniband/hw/nes/nes_verbs.c              |   2 +-
 drivers/infiniband/hw/ocrdma/ocrdma.h              |  53 +-
 drivers/infiniband/hw/ocrdma/ocrdma_hw.c           |   2 +-
 drivers/infiniband/hw/ocrdma/ocrdma_main.c         |   7 +-
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c        |   6 +-
 drivers/infiniband/hw/qib/qib_iba7322.c            |  11 +-
 drivers/infiniband/hw/qib/qib_mad.h                |  14 +-
 drivers/infiniband/hw/qib/qib_user_sdma.c          |   6 +-
 drivers/infiniband/hw/qib/qib_verbs.h              |  10 +-
 drivers/infiniband/ulp/ipoib/ipoib.h               |   4 +-
 drivers/infiniband/ulp/ipoib/ipoib_cm.c            |  14 +-
 drivers/infiniband/ulp/ipoib/ipoib_ib.c            |  24 +-
 drivers/infiniband/ulp/ipoib/ipoib_main.c          |  12 +-
 drivers/infiniband/ulp/ipoib/ipoib_multicast.c     |  29 +-
 drivers/infiniband/ulp/ipoib/ipoib_netlink.c       |   4 +-
 drivers/infiniband/ulp/ipoib/ipoib_vlan.c          |  10 +-
 drivers/infiniband/ulp/srp/ib_srp.c                | 500 +++++++++++++++----
 drivers/infiniband/ulp/srp/ib_srp.h                |  21 +-
 drivers/net/ethernet/mellanox/mlx5/core/cmd.c      | 106 ++--
 drivers/net/ethernet/mellanox/mlx5/core/debugfs.c  |   8 +-
 drivers/net/ethernet/mellanox/mlx5/core/eq.c       |   2 +-
 drivers/net/ethernet/mellanox/mlx5/core/main.c     |  35 +-
 drivers/net/ethernet/mellanox/mlx5/core/mr.c       |  32 +-
 .../net/ethernet/mellanox/mlx5/core/pagealloc.c    | 196 +++++---
 drivers/scsi/scsi_transport_srp.c                  | 540 ++++++++++++++++++++-
 include/linux/mlx5/device.h                        |  13 +-
 include/linux/mlx5/driver.h                        |  18 +-
 include/rdma/ib_verbs.h                            |  20 +-
 include/scsi/scsi_transport_srp.h                  |  83 +++-
 include/uapi/rdma/ib_user_verbs.h                  |  95 ++--
 52 files changed, 1973 insertions(+), 595 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2013-10-22 17:22 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2013-10-22 17:22 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-rdma

Hi Linus,

This is the "disable ABI we don't want to freeze" pull I warned you about.

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------
Disable not-quite-ready userspace ABI for IB flow steering

----------------------------------------------------------------
Yann Droneaud (1):
      IB/core: Temporarily disable create_flow/destroy_flow uverbs

 drivers/infiniband/Kconfig            | 11 +++++++++++
 drivers/infiniband/core/uverbs.h      |  2 ++
 drivers/infiniband/core/uverbs_cmd.c  |  4 ++++
 drivers/infiniband/core/uverbs_main.c |  6 ++++++
 drivers/infiniband/hw/mlx4/main.c     |  2 ++
 include/uapi/rdma/ib_user_verbs.h     |  6 ++++++
 6 files changed, 31 insertions(+)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2013-10-15  0:52 ` Linus Torvalds
@ 2013-10-15 17:48   ` Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2013-10-15 17:48 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Eli Cohen, linux-rdma, Linux Kernel Mailing List

On Mon, Oct 14, 2013 at 5:52 PM, Linus Torvalds
<torvalds@linux-foundation.org> wrote:
> So get your act together, and push back on the people you are supposed
> to manage. Because this is *not* acceptable for post-rc5, and I'm
> giving this single warning. Next time, I'll just ignore the sh*t you
> send me.
>
> Comprende?

Fair enough.  I've been AWOL for a month due to real life / non-kernel
stuff, and I didn't want the Mellanox guys to miss a kernel cycle just
because I couldn't get my act together.  So this one is totally on me
-- I know it's late in the cycle and I tried to sneak it in.

I do expect to send one more patch turning off a not-fully-baked new
feature for 3.12, but other than that everything else will wait for
3.13.

 - R.

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2013-10-14 18:16 Roland Dreier
@ 2013-10-15  0:52 ` Linus Torvalds
  2013-10-15 17:48   ` Roland Dreier
  0 siblings, 1 reply; 223+ messages in thread
From: Linus Torvalds @ 2013-10-15  0:52 UTC (permalink / raw)
  To: Roland Dreier, Eli Cohen; +Cc: linux-rdma, Linux Kernel Mailing List

On Mon, Oct 14, 2013 at 11:16 AM, Roland Dreier <roland@kernel.org> wrote:
>
> Last batch of IB changes for 3.12: many mlx5 hardware driver fixes plus
> one trivial semicolon cleanup.

Quite frankly, these mlx5 updates don't look like regression fixes.
They look like "continued development" to me, and seem to be things
that never worked. At least some of them look like performance
enhancements, in fact, not even resembling bugfixes. Others look like
"not a bug, but let's improve random behavior".

I pulled this once, because hardly anybody really cares. But the other
side of that "nobody cares" is that I might as well not have pulled.
If this kind of "continued development" patches keep happening, I'll
just start ignoring pull requests after the merge window.

So get your act together, and push back on the people you are supposed
to manage. Because this is *not* acceptable for post-rc5, and I'm
giving this single warning. Next time, I'll just ignore the sh*t you
send me.

Comprende?

             Linus

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2013-10-14 18:16 Roland Dreier
  2013-10-15  0:52 ` Linus Torvalds
  0 siblings, 1 reply; 223+ messages in thread
From: Roland Dreier @ 2013-10-14 18:16 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------

Last batch of IB changes for 3.12: many mlx5 hardware driver fixes plus
one trivial semicolon cleanup.

----------------------------------------------------------------
Eli Cohen (12):
      IB/mlx5: Fix send work queue size calculation
      mlx5: Remove checksum on command interface commands
      IB/mlx5: Decrease memory consumption of mr caches
      IB/mlx5: Avoid async events on invalid port number
      mlx5: Keep polling to reclaim pages while any returned
      mlx5: Fix layout of struct mlx5_init_seg
      IB/mlx5: Disable atomic operations
      mlx5: Fix opt param mask for sq err to rts transition
      IB/mlx5: Fix opt param mask according to firmware spec
      mlx5: Fix error code translation from firmware to driver
      IB/mlx5: Fix alignment of reg umr gather buffers
      IB/mlx5: Ensure proper synchronization accessing memory

Joe Perches (1):
      IB: Remove unnecessary semicolons

Moshe Lazer (2):
      IB/mlx5: Flush cache workqueue before destroying it
      IB/mlx5: Fix memory leak in mlx5_ib_create_srq

Roland Dreier (1):
      Merge branch 'misc' into for-next

Sagi Grimberg (1):
      IB/mlx5: Fix eq names to display nicely in /proc/interrupts

 drivers/infiniband/hw/amso1100/c2_ae.c             |  2 +-
 drivers/infiniband/hw/mlx5/main.c                  | 16 +++--
 drivers/infiniband/hw/mlx5/mr.c                    | 70 +++++++++----------
 drivers/infiniband/hw/mlx5/qp.c                    | 80 ++++++++--------------
 drivers/infiniband/hw/mlx5/srq.c                   |  4 +-
 drivers/infiniband/hw/mthca/mthca_eq.c             |  2 +-
 drivers/infiniband/hw/ocrdma/ocrdma_hw.c           |  6 +-
 drivers/infiniband/hw/ocrdma/ocrdma_main.c         |  2 +-
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c        |  6 +-
 drivers/net/ethernet/mellanox/mlx5/core/cmd.c      | 28 ++++----
 drivers/net/ethernet/mellanox/mlx5/core/eq.c       |  4 +-
 drivers/net/ethernet/mellanox/mlx5/core/main.c     | 21 ++----
 .../net/ethernet/mellanox/mlx5/core/pagealloc.c    | 16 ++++-
 include/linux/mlx5/device.h                        |  4 +-
 include/linux/mlx5/driver.h                        |  6 +-
 15 files changed, 126 insertions(+), 141 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2013-09-05 16:42   ` Linus Torvalds
@ 2013-09-05 16:43     ` David Miller
  0 siblings, 0 replies; 223+ messages in thread
From: David Miller @ 2013-09-05 16:43 UTC (permalink / raw)
  To: torvalds; +Cc: sfr, roland, linux-kernel, netdev

From: Linus Torvalds <torvalds@linux-foundation.org>
Date: Thu, 5 Sep 2013 09:42:05 -0700

> On Wed, Sep 4, 2013 at 5:31 PM, Stephen Rothwell <sfr@canb.auug.org.au> wrote:
>>
>> I am carrying the following merge fix patch for a semantic conflict
>> between this tree and Dave's net-next tree:
> 
> Ok. I haven't gotten David's pull request yet, and unless I get it
> later today I'll probably forget this.
> 
> David, mind reminding me when you do send (or maybe cc'ing Stephen, so
> that he will)?

Sure, I was planning on send out the pull request by the end of today.

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2013-09-05  0:31 ` Stephen Rothwell
@ 2013-09-05 16:42   ` Linus Torvalds
  2013-09-05 16:43     ` David Miller
  0 siblings, 1 reply; 223+ messages in thread
From: Linus Torvalds @ 2013-09-05 16:42 UTC (permalink / raw)
  To: Stephen Rothwell
  Cc: Roland Dreier, Linux Kernel Mailing List, David Miller,
	Network Development

On Wed, Sep 4, 2013 at 5:31 PM, Stephen Rothwell <sfr@canb.auug.org.au> wrote:
>
> I am carrying the following merge fix patch for a semantic conflict
> between this tree and Dave's net-next tree:

Ok. I haven't gotten David's pull request yet, and unless I get it
later today I'll probably forget this.

David, mind reminding me when you do send (or maybe cc'ing Stephen, so
that he will)?

                  Linus

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2013-09-04 17:03 Roland Dreier
@ 2013-09-05  0:31 ` Stephen Rothwell
  2013-09-05 16:42   ` Linus Torvalds
  0 siblings, 1 reply; 223+ messages in thread
From: Stephen Rothwell @ 2013-09-05  0:31 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Roland Dreier, linux-kernel, David Miller, netdev

[-- Attachment #1: Type: text/plain, Size: 1671 bytes --]

Hi Linus,

On Wed,  4 Sep 2013 10:03:38 -0700 Roland Dreier <roland@kernel.org> wrote:
>
> Please pull from
> 
>     git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

I am carrying the following merge fix patch for a semantic conflict
between this tree and Dave's net-next tree:

From: Stephen Rothwell <sfr@canb.auug.org.au>
Date: Tue, 13 Aug 2013 13:01:49 +1000
Subject: [PATCH] cxgb4: fix up for bond_for_each_slave API change

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
---
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
index 038df4b..b6ad557 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
@@ -3982,7 +3982,6 @@ static int cxgb4_inet6addr_handler(struct notifier_block *this,
 	struct inet6_ifaddr *ifa = data;
 	struct net_device *event_dev;
 	int ret = NOTIFY_DONE;
-	int cnt;
 	struct bonding *bond = netdev_priv(ifa->idev->dev);
 	struct slave *slave;
 	struct pci_dev *first_pdev = NULL;
@@ -3996,7 +3995,7 @@ static int cxgb4_inet6addr_handler(struct notifier_block *this,
 		 * in all of them only once.
 		 */
 		read_lock(&bond->lock);
-		bond_for_each_slave(bond, slave, cnt) {
+		bond_for_each_slave(bond, slave) {
 			if (!first_pdev) {
 				ret = clip_add(slave->dev, ifa, event);
 				/* If clip_add is success then only initialize
-- 
1.8.4.rc0

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au

[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2013-09-04 17:03 Roland Dreier
  2013-09-05  0:31 ` Stephen Rothwell
  0 siblings, 1 reply; 223+ messages in thread
From: Roland Dreier @ 2013-09-04 17:03 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------

Main batch of InfiniBand/RDMA changes for 3.12 merge window:

 - Large ocrdma HW driver update: add "fast register" work requests,
   fixes, cleanups
 - Add receive flow steering support for raw QPs
 - Fix IPoIB neighbour race that leads to crash
 - iSER updates including support for using "fast register" memory
   registration
 - IPv6 support for iWARP
 - XRC transport fixes

----------------------------------------------------------------
CQ Tang (1):
      IB/qib: Improve SDMA performance

Hadar Hen Zion (3):
      IB/core: Add receive flow steering support
      IB/core: Export ib_create/destroy_flow through uverbs
      IB/mlx4: Add receive flow steering support

Igor Ivanov (1):
      IB/core: Infrastructure for extensible uverbs commands

Ira Weiny (1):
      IB/qib: Move COUNTER_MASK definition within qib_mad.h header guards

Jim Foraker (1):
      IPoIB: Fix race in deleting ipoib_neigh entries

Matan Barak (1):
      IB/core: Better checking of userspace values for receive flow steering

Naresh Gottumukkala (19):
      RDMA/ocrdma: Style and redundant code cleanup
      RDMA/ocrdma: Remove redundant dev reference
      RDMA/ocrdma: Don't allow zero/invalid sgid usage
      RDMA/ocrdma: Remove driver QP state machine
      RDMA/ocrdma: Remove __packed
      RDMA/ocrdma: Cache recv DB until QP moved to RTR
      RDMA/ocrdma: Create IRD queue fix
      RDMA/ocrdma: Add support for fast register work requests (FRWR)
      RDMA/ocrdma: Remove the MTU check based on Ethernet MTU
      RDMA/ocrdma: Fix to work with even a single MSI-X vector
      RDMA/ocrdma: For ERX2 irrespective of Qid, num_posted offset is 24
      RDMA/ocrdma: FRMA code cleanup
      RDMA/ocrdma: Dont use PD 0 for userpace CQ DB
      RDMA/ocrdma: Increase STAG array size
      RDMA/ocrdma: Fix for displaying proper link speed
      RDMA/ocrdma: Consider multiple SGES in case of DPP
      RDMA/ocrdma: Add ABI versioning support
      RDMA/ocrdma: Fill PVID in UMC case
      RDMA/ocrdma: Fix passing wrong opcode to modify_srq

Or Gerlitz (1):
      IB/iser: Use proper debug level value for info prints

Paul Bolle (1):
      IB/qib: Make qib_driver static

Roi Dayan (1):
      IB/iser: Fix possible memory leak in iser_create_frwr_pool()

Roland Dreier (2):
      RDMA/ocrdma: Fix compiler warning about int/pointer size mismatch
      Merge branches 'cxgb4', 'flowsteer', 'ipoib', 'iser', 'mlx4', 'ocrdma' and 'qib' into for-next

Sagi Grimberg (5):
      IB/iser: Generalize rdma memory registration
      IB/iser: Handle unaligned SG in separate function
      IB/iser: Place the fmr pool into a union in iser's IB conn struct
      IB/iser: Introduce fast memory registration model (FRWR)
      IB/iser: Fix redundant pointer check in dealloc flow

Shlomo Pongratz (2):
      IB/iser: Restructure allocation/deallocation of connection resources
      IB/iser: Accept session->cmds_max from user space

Steve Wise (9):
      RDMA/cma: Add IPv6 support for iWARP
      RDMA/cxgb4: Use correct bit shift macros for vlan filter tuples
      RDMA/cxgb4: Handle newer firmware changes
      RDMA/cxgb4: Fix QP flush logic
      RDMA/cxgb4: Fix accounting for unsignaled SQ WRs to deal with wrap
      RDMA/cxgb4: Set arp error handler for PASS_ACCEPT_RPL messages
      RDMA/cxgb4: Always do GTS write if cidx_inc == CIDXINC_MASK
      RDMA/cxgb4: Advertise ~0ULL as max MR size
      RDMA/cxgb4: Issue RI.FINI before closing when entering TERM

Vipul Pandya (3):
      cxgb4: Add routines to create and remove listening IPv6 servers
      cxgb4: Add CLIP support to store compressed IPv6 address
      RDMA/cxgb4: Add support for active and passive open connection with IPv6 address

Yijing Wang (1):
      IB/qib: Clean up unnecessary MSI/MSI-X capability find

Yishai Hadas (3):
      mlx4_core: Fix XRC QPs detection in the resource tracker
      IB/core: Add locking around event dispatching on XRC target QPs
      IB/core: Fixes to XRC reference counting in uverbs

 drivers/infiniband/core/cma.c                      |  44 +-
 drivers/infiniband/core/uverbs.h                   |   4 +
 drivers/infiniband/core/uverbs_cmd.c               | 250 +++++-
 drivers/infiniband/core/uverbs_main.c              |  42 +-
 drivers/infiniband/core/verbs.c                    |  30 +
 drivers/infiniband/hw/amso1100/c2_ae.c             |  18 +-
 drivers/infiniband/hw/amso1100/c2_cm.c             |  16 +-
 drivers/infiniband/hw/cxgb3/iwch_cm.c              |  46 +-
 drivers/infiniband/hw/cxgb4/Kconfig                |   2 +-
 drivers/infiniband/hw/cxgb4/cm.c                   | 860 ++++++++++++-------
 drivers/infiniband/hw/cxgb4/cq.c                   | 329 +++++---
 drivers/infiniband/hw/cxgb4/device.c               | 116 ++-
 drivers/infiniband/hw/cxgb4/ev.c                   |  10 -
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h             |   9 +-
 drivers/infiniband/hw/cxgb4/qp.c                   |  41 +-
 drivers/infiniband/hw/cxgb4/t4.h                   |  29 +-
 drivers/infiniband/hw/mlx4/main.c                  | 235 ++++++
 drivers/infiniband/hw/mlx4/mlx4_ib.h               |  12 +
 drivers/infiniband/hw/nes/nes_cm.c                 | 153 ++--
 drivers/infiniband/hw/ocrdma/ocrdma.h              |  22 +-
 drivers/infiniband/hw/ocrdma/ocrdma_abi.h          |  32 +-
 drivers/infiniband/hw/ocrdma/ocrdma_ah.c           |  14 +-
 drivers/infiniband/hw/ocrdma/ocrdma_hw.c           | 458 +++++------
 drivers/infiniband/hw/ocrdma/ocrdma_hw.h           |  13 +-
 drivers/infiniband/hw/ocrdma/ocrdma_main.c         |   7 +
 drivers/infiniband/hw/ocrdma/ocrdma_sli.h          | 210 +++--
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c        | 878 ++++++++++++++++----
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.h        |   6 +
 drivers/infiniband/hw/qib/qib.h                    |   5 +-
 drivers/infiniband/hw/qib/qib_common.h             |  32 +-
 drivers/infiniband/hw/qib/qib_file_ops.c           |   2 +-
 drivers/infiniband/hw/qib/qib_init.c               |   2 +-
 drivers/infiniband/hw/qib/qib_mad.h                |   3 +-
 drivers/infiniband/hw/qib/qib_pcie.c               |  10 +-
 drivers/infiniband/hw/qib/qib_sdma.c               |   8 +-
 drivers/infiniband/hw/qib/qib_user_sdma.c          | 909 ++++++++++++++++-----
 drivers/infiniband/ulp/ipoib/ipoib_cm.c            |   3 -
 drivers/infiniband/ulp/ipoib/ipoib_main.c          |   9 +-
 drivers/infiniband/ulp/iser/iscsi_iser.c           |  19 +-
 drivers/infiniband/ulp/iser/iscsi_iser.h           |  73 +-
 drivers/infiniband/ulp/iser/iser_initiator.c       | 139 +++-
 drivers/infiniband/ulp/iser/iser_memory.c          | 231 +++++-
 drivers/infiniband/ulp/iser/iser_verbs.c           | 292 +++++--
 drivers/net/ethernet/chelsio/cxgb4/cxgb4.h         |   1 +
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c    | 288 ++++++-
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.h     |   5 +
 drivers/net/ethernet/chelsio/cxgb4/t4_msg.h        |  17 +-
 drivers/net/ethernet/chelsio/cxgb4/t4fw_api.h      |  23 +
 .../net/ethernet/mellanox/mlx4/resource_tracker.c  |   3 +-
 include/linux/mlx4/device.h                        |   5 -
 include/rdma/ib_verbs.h                            | 128 ++-
 include/rdma/iw_cm.h                               |   8 +-
 include/uapi/rdma/ib_user_verbs.h                  |  99 ++-
 53 files changed, 4643 insertions(+), 1557 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2013-08-02 16:12 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2013-08-02 16:12 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------

InfiniBand/RDMA fixes for 3.11-rc:
 - Fixes for the newly merged mlx5 hardware driver
 - Stack info leak fixes from Dan Carpenter
 - Fixes for pkey table handling with SR-IOV
 - A few other small things

----------------------------------------------------------------
Andi Shyti (1):
      mlx5_core: Variable may be used uninitialized

Dan Carpenter (6):
      RDMA/cxgb4: Fix stack info leak in c4iw_create_qp()
      RDMA/ocrdma: Fix several stack info leaks
      RDMA/nes: Fix info leaks in nes_create_qp() and nes_create_cq()
      RDMA/cxgb3: Fix stack info leak in iwch_create_cq()
      IB/mlx5: Fix stack info leak in mlx5_ib_alloc_ucontext()
      mlx5_core: Fix use after free in mlx5_cmd_comp_handler()

Eli Cohen (1):
      mlx5_core: Implement new initialization sequence

Erez Shitrit (1):
      IPoIB: Fix pkey change flow for virtualization environments

Jack Morgenstein (2):
      IB/mlx4: Use default pkey when creating tunnel QPs
      IB/core: Create QP1 using the pkey index which contains the default pkey

Mike Marciniszyn (1):
      IB/qib: Add err_decode() call for ring dump

Or Gerlitz (1):
      IPoIB: Make sure child devices use valid/proper pkeys

Paul Bolle (1):
      RDMA/cma: Fix gcc warning

Roland Dreier (3):
      RDMA/ocrdma: Remove unused include
      Revert "RDMA/nes: Fix compilation error when nes_debug is enabled"
      Merge branches 'cma', 'cxgb3', 'cxgb4', 'ipoib', 'misc', 'mlx4', 'mlx5', 'nes', 'ocrdma' and 'qib' into for-next

Sean Hefty (2):
      RDMA/cma: Fix accessing invalid private data for UD
      RDMA/cma: Only call cma_save_ib_info() for CM REQs

Wei Yongjun (1):
      IB/mlx5: Fix error return code in init_one()

 drivers/infiniband/core/cma.c                      | 29 +++++----
 drivers/infiniband/core/mad.c                      |  8 ++-
 drivers/infiniband/hw/cxgb3/iwch_provider.c        |  1 +
 drivers/infiniband/hw/cxgb4/qp.c                   |  2 +
 drivers/infiniband/hw/mlx4/mad.c                   | 10 ++-
 drivers/infiniband/hw/mlx5/main.c                  | 11 ++--
 drivers/infiniband/hw/mlx5/qp.c                    |  2 +-
 drivers/infiniband/hw/nes/nes_hw.c                 |  4 +-
 drivers/infiniband/hw/nes/nes_verbs.c              |  3 +-
 drivers/infiniband/hw/ocrdma/ocrdma_ah.c           |  1 -
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c        |  5 +-
 drivers/infiniband/hw/qib/qib_iba7322.c            |  2 +
 drivers/infiniband/hw/qib/qib_sdma.c               |  2 +-
 drivers/infiniband/ulp/ipoib/ipoib_ib.c            | 76 ++++++++++++++++++----
 drivers/infiniband/ulp/ipoib/ipoib_main.c          |  2 +-
 drivers/infiniband/ulp/ipoib/ipoib_netlink.c       |  9 +++
 drivers/net/ethernet/mellanox/mlx5/core/cmd.c      | 19 ++++--
 drivers/net/ethernet/mellanox/mlx5/core/main.c     | 69 ++++++++++++++++++--
 .../net/ethernet/mellanox/mlx5/core/pagealloc.c    | 20 ++++--
 include/linux/mlx5/device.h                        | 20 ++++++
 include/linux/mlx5/driver.h                        |  4 +-
 21 files changed, 239 insertions(+), 60 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2013-07-11 23:52 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2013-07-11 23:52 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-rdma

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------

Main (updated) batch of InfiniBand/RDMA changes for 3.11 merge window:

 - AF_IB (native IB addressing) for CMA from Sean Hefty
 - New mlx5 driver for Mellanox Connect-IB adapters (including post merge request fixes)
 - SRP fixes from Bart Van Assche (including fix to first merge request)
 - qib HW driver updates
 - Resurrection of ocrdma HW driver development
 - uverbs conversion to create fds with O_CLOEXEC set
 - Other small changes and fixes

----------------------------------------------------------------
Bart Van Assche (6):
      IB/srp: Avoid skipping srp_reset_host() after a transport error
      IB/srp: Skip host settle delay
      IB/srp: Fail I/O fast if target offline
      IB/srp: Maintain a single connection per I_T nexus
      IB/srp: Make HCA completion vector configurable
      IB/srp: Let srp_abort() return FAST_IO_FAIL if TL offline

Dan Carpenter (2):
      RDMA/cxgb3: Timeout condition is never true
      mlx5: Return -EFAULT instead of -EPERM

Dean Luick (1):
      IB/qib: Log all SDMA errors unconditionally

Dotan Barak (1):
      IB/srp: Fix remove_one crash due to resource exhaustion

Eli Cohen (1):
      mlx5: Add driver for Mellanox Connect-IB adapters

Gottumukkala, Naresh (1):
      RDMA/ocrdma: Remove use_cnt for queues

Jack Morgenstein (1):
      IB/core: Add reserved values to enums for low-level driver use

Mike Marciniszyn (7):
      IB/qib: Add DCA support
      IB/qib: Remove atomic_inc_not_zero() from QP RCU
      IB/qib: Optimize CQ callbacks
      IB/qib: Convert opcode counters to per-context
      IB/qib: Add per-context stats interface
      IB/qib: Add qp_stats debug file
      IB/qib: Fix module-level leak

Mitko Haralanov (1):
      IB/qib: New transmitter tunning settings for Dell 1.1 backplane

Moshe Lazer (1):
      mlx5_core: Adjust hca_cap.uar_page_sz to conform to Connect-IB spec

Naresh Gottumukkala (5):
      RDMA/ocrdma: Use MCC_CREATE_EXT_V1 for MCC create
      RDMA/ocrdma: Replace ocrdma_err with pr_err
      RDMA/ocrdma: Set bad_wr in error case
      RDMA/ocrdma: Change macros to inline funtions
      RDMA/ocrdma: Reorg structures to avoid padding

Ramkrishna Vepa (2):
      IB/qib: Add optional NUMA affinity
      IB/qib: Add dual-rail NUMA awareness for PSM processes

Roland Dreier (6):
      mlx5: Fix parameter type of health_handler_t
      IB/mlx5: Make profile[] static in main.c
      mlx5_core: Fixes for sparse warnings
      IB/uverbs: Use get_unused_fd_flags(O_CLOEXEC) instead of get_unused_fd()
      Merge branches 'af_ib', 'cxgb4', 'misc', 'mlx5', 'ocrdma', 'qib' and 'srp' into for-next
      Merge branches 'mlx5', 'qib' and 'srp' into for-next

Sean Hefty (28):
      RDMA/cma: Define native IB address
      RDMA/cma: Allow enabling reuseaddr in any state
      RDMA/cma: Include AF_IB in loopback and any address checks
      IB/addr: Add AF_IB support to ip_addr_size
      RDMA/cma: Update port reservation to support AF_IB
      RDMA/cma: Allow user to specify AF_IB when binding
      RDMA/cma: Do not modify sa_family when setting loopback address
      RDMA/cma: Add helper functions to return id address information
      RDMA/cma: Restrict AF_IB loopback to binding to IB devices only
      RDMA/cma: Verify that source and dest sa_family are the same
      RDMA/cma: Add support for AF_IB to rdma_resolve_addr()
      RDMA/cma: Add support for AF_IB to rdma_resolve_route()
      RDMA/cma: Add support for AF_IB to cma_get_service_id()
      RDMA/cma: Remove unused SDP related code
      RDMA/cma: Merge cma_get/save_net_info
      RDMA/cma: Expose private data when using AF_IB
      RDMA/cma: Set qkey for AF_IB
      RDMA/cma: Only listen on IB devices when using AF_IB
      RDMA/ucma: Support querying for AF_IB addresses
      IB/sa: Export function to pack a path record into wire format
      RDMA/ucma: Support querying when IB paths are not reversible
      RDMA/cma: Export cma_get_service_id()
      RDMA/ucma: Add ability to query GID addresses
      RDMA/ucma: Name changes to indicate only IP addresses supported
      RDMA/ucma: Allow user space to bind to AF_IB
      RDMA/ucma: Allow user space to pass AF_IB into resolve
      RDMA/ucma: Allow user space to specify AF_IB when joining multicast
      RDMA/cma: Export AF_IB statistics

Vinit Agnihotri (1):
      IB/qib: Update minor version number

Vu Pham (1):
      IB/srp: Bump driver version and release date

Wei Yongjun (3):
      IB/ehca: Fix error return code in ehca_create_slab_caches()
      RDMA/ocrdma: Fix error return code in ocrdma_set_create_qp_rq_cmd()
      IB/core: Fix error return code in add_port()

 Documentation/ABI/stable/sysfs-driver-ib_srp       |    7 +
 MAINTAINERS                                        |   22 +
 drivers/infiniband/Kconfig                         |    1 +
 drivers/infiniband/Makefile                        |    1 +
 drivers/infiniband/core/addr.c                     |   20 +-
 drivers/infiniband/core/cma.c                      |  906 ++++---
 drivers/infiniband/core/sa_query.c                 |    6 +
 drivers/infiniband/core/sysfs.c                    |    8 +-
 drivers/infiniband/core/ucma.c                     |  321 ++-
 drivers/infiniband/core/uverbs_cmd.c               |    4 +-
 drivers/infiniband/hw/cxgb3/iwch_qp.c              |    3 +-
 drivers/infiniband/hw/ehca/ehca_main.c             |    1 +
 drivers/infiniband/hw/mlx5/Kconfig                 |   10 +
 drivers/infiniband/hw/mlx5/Makefile                |    3 +
 drivers/infiniband/hw/mlx5/ah.c                    |   92 +
 drivers/infiniband/hw/mlx5/cq.c                    |  843 +++++++
 drivers/infiniband/hw/mlx5/doorbell.c              |  100 +
 drivers/infiniband/hw/mlx5/mad.c                   |  139 ++
 drivers/infiniband/hw/mlx5/main.c                  | 1504 ++++++++++++
 drivers/infiniband/hw/mlx5/mem.c                   |  162 ++
 drivers/infiniband/hw/mlx5/mlx5_ib.h               |  545 +++++
 drivers/infiniband/hw/mlx5/mr.c                    | 1007 ++++++++
 drivers/infiniband/hw/mlx5/qp.c                    | 2524 ++++++++++++++++++++
 drivers/infiniband/hw/mlx5/srq.c                   |  473 ++++
 drivers/infiniband/hw/mlx5/user.h                  |  121 +
 drivers/infiniband/hw/ocrdma/ocrdma.h              |   63 +-
 drivers/infiniband/hw/ocrdma/ocrdma_hw.c           |   86 +-
 drivers/infiniband/hw/ocrdma/ocrdma_main.c         |    6 +-
 drivers/infiniband/hw/ocrdma/ocrdma_sli.h          |   35 +-
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c        |  135 +-
 drivers/infiniband/hw/qib/Kconfig                  |    8 +
 drivers/infiniband/hw/qib/Makefile                 |    1 +
 drivers/infiniband/hw/qib/qib.h                    |   63 +-
 drivers/infiniband/hw/qib/qib_common.h             |    2 +-
 drivers/infiniband/hw/qib/qib_cq.c                 |   67 +-
 drivers/infiniband/hw/qib/qib_debugfs.c            |  283 +++
 drivers/infiniband/hw/qib/qib_debugfs.h            |   45 +
 drivers/infiniband/hw/qib/qib_driver.c             |    1 -
 drivers/infiniband/hw/qib/qib_file_ops.c           |  176 +-
 drivers/infiniband/hw/qib/qib_iba6120.c            |   10 +
 drivers/infiniband/hw/qib/qib_iba7220.c            |   10 +
 drivers/infiniband/hw/qib/qib_iba7322.c            |  507 +++-
 drivers/infiniband/hw/qib/qib_init.c               |  145 +-
 drivers/infiniband/hw/qib/qib_qp.c                 |  123 +-
 drivers/infiniband/hw/qib/qib_sdma.c               |   56 +
 drivers/infiniband/hw/qib/qib_verbs.c              |    8 +-
 drivers/infiniband/hw/qib/qib_verbs.h              |   33 +-
 drivers/infiniband/ulp/srp/ib_srp.c                |   89 +-
 drivers/infiniband/ulp/srp/ib_srp.h                |    1 +
 drivers/net/ethernet/mellanox/Kconfig              |    1 +
 drivers/net/ethernet/mellanox/Makefile             |    1 +
 drivers/net/ethernet/mellanox/mlx5/core/Kconfig    |   18 +
 drivers/net/ethernet/mellanox/mlx5/core/Makefile   |    5 +
 drivers/net/ethernet/mellanox/mlx5/core/alloc.c    |  238 ++
 drivers/net/ethernet/mellanox/mlx5/core/cmd.c      | 1515 ++++++++++++
 drivers/net/ethernet/mellanox/mlx5/core/cq.c       |  224 ++
 drivers/net/ethernet/mellanox/mlx5/core/debugfs.c  |  583 +++++
 drivers/net/ethernet/mellanox/mlx5/core/eq.c       |  521 ++++
 drivers/net/ethernet/mellanox/mlx5/core/fw.c       |  185 ++
 drivers/net/ethernet/mellanox/mlx5/core/health.c   |  227 ++
 drivers/net/ethernet/mellanox/mlx5/core/mad.c      |   78 +
 drivers/net/ethernet/mellanox/mlx5/core/main.c     |  475 ++++
 drivers/net/ethernet/mellanox/mlx5/core/mcg.c      |  106 +
 .../net/ethernet/mellanox/mlx5/core/mlx5_core.h    |   73 +
 drivers/net/ethernet/mellanox/mlx5/core/mr.c       |  136 ++
 .../net/ethernet/mellanox/mlx5/core/pagealloc.c    |  435 ++++
 drivers/net/ethernet/mellanox/mlx5/core/pd.c       |  101 +
 drivers/net/ethernet/mellanox/mlx5/core/port.c     |  104 +
 drivers/net/ethernet/mellanox/mlx5/core/qp.c       |  301 +++
 drivers/net/ethernet/mellanox/mlx5/core/srq.c      |  223 ++
 drivers/net/ethernet/mellanox/mlx5/core/uar.c      |  223 ++
 include/linux/mlx5/cmd.h                           |   51 +
 include/linux/mlx5/cq.h                            |  165 ++
 include/linux/mlx5/device.h                        |  893 +++++++
 include/linux/mlx5/doorbell.h                      |   79 +
 include/linux/mlx5/driver.h                        |  769 ++++++
 include/linux/mlx5/qp.h                            |  467 ++++
 include/linux/mlx5/srq.h                           |   41 +
 include/linux/socket.h                             |    2 +
 include/rdma/ib.h                                  |   89 +
 include/rdma/ib_addr.h                             |    6 +-
 include/rdma/ib_sa.h                               |    7 +
 include/rdma/ib_verbs.h                            |   35 +-
 include/rdma/rdma_cm.h                             |   13 +
 include/uapi/rdma/rdma_user_cm.h                   |   73 +-
 85 files changed, 18436 insertions(+), 803 deletions(-)
 create mode 100644 drivers/infiniband/hw/mlx5/Kconfig
 create mode 100644 drivers/infiniband/hw/mlx5/Makefile
 create mode 100644 drivers/infiniband/hw/mlx5/ah.c
 create mode 100644 drivers/infiniband/hw/mlx5/cq.c
 create mode 100644 drivers/infiniband/hw/mlx5/doorbell.c
 create mode 100644 drivers/infiniband/hw/mlx5/mad.c
 create mode 100644 drivers/infiniband/hw/mlx5/main.c
 create mode 100644 drivers/infiniband/hw/mlx5/mem.c
 create mode 100644 drivers/infiniband/hw/mlx5/mlx5_ib.h
 create mode 100644 drivers/infiniband/hw/mlx5/mr.c
 create mode 100644 drivers/infiniband/hw/mlx5/qp.c
 create mode 100644 drivers/infiniband/hw/mlx5/srq.c
 create mode 100644 drivers/infiniband/hw/mlx5/user.h
 create mode 100644 drivers/infiniband/hw/qib/qib_debugfs.c
 create mode 100644 drivers/infiniband/hw/qib/qib_debugfs.h
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/Kconfig
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/Makefile
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/alloc.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/cmd.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/cq.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/debugfs.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/eq.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/fw.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/health.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/mad.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/main.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/mcg.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/mr.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/pagealloc.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/pd.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/port.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/qp.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/srq.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/uar.c
 create mode 100644 include/linux/mlx5/cmd.h
 create mode 100644 include/linux/mlx5/cq.h
 create mode 100644 include/linux/mlx5/device.h
 create mode 100644 include/linux/mlx5/doorbell.h
 create mode 100644 include/linux/mlx5/driver.h
 create mode 100644 include/linux/mlx5/qp.h
 create mode 100644 include/linux/mlx5/srq.h
 create mode 100644 include/rdma/ib.h

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2013-07-10 14:38   ` Roland Dreier
@ 2013-07-10 15:34     ` Bart Van Assche
  0 siblings, 0 replies; 223+ messages in thread
From: Bart Van Assche @ 2013-07-10 15:34 UTC (permalink / raw)
  To: Roland Dreier; +Cc: Sebastian Riemer, Linus Torvalds, linux-kernel, linux-rdma

On 07/10/13 16:38, Roland Dreier wrote:
> On Wed, Jul 10, 2013 at 7:35 AM, Sebastian Riemer
> <sebastian.riemer@profitbricks.com> wrote:
>>
>> I've checked the commits on that tag and the following commit is not
>> what we've agreed on:
>
> Sorry about that.  The discussion was long and complex and I probably
> made a mistake in aplying the patches.  Please me send a patch to fix
> the driver to what it should be, and I will merge it ASAP.

I will send such a patch in reply to this e-mail but without CC-ing the 
LKML. Sebastian, if you could review that patch, that would be appreciated.

Bart.


^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2013-07-10 14:35 ` Sebastian Riemer
@ 2013-07-10 14:38   ` Roland Dreier
  2013-07-10 15:34     ` Bart Van Assche
  0 siblings, 1 reply; 223+ messages in thread
From: Roland Dreier @ 2013-07-10 14:38 UTC (permalink / raw)
  To: Sebastian Riemer; +Cc: Linus Torvalds, linux-kernel, linux-rdma

On Wed, Jul 10, 2013 at 7:35 AM, Sebastian Riemer
<sebastian.riemer@profitbricks.com> wrote:
>
> I've checked the commits on that tag and the following commit is not
> what we've agreed on:

Sorry about that.  The discussion was long and complex and I probably
made a mistake in aplying the patches.  Please me send a patch to fix
the driver to what it should be, and I will merge it ASAP.

 - Roland

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2013-07-09 17:36 Roland Dreier
@ 2013-07-10 14:35 ` Sebastian Riemer
  2013-07-10 14:38   ` Roland Dreier
  0 siblings, 1 reply; 223+ messages in thread
From: Sebastian Riemer @ 2013-07-10 14:35 UTC (permalink / raw)
  To: Roland Dreier; +Cc: Linus Torvalds, linux-kernel, linux-rdma

Hi Roland,

I've checked the commits on that tag and the following commit is not
what we've agreed on:

commit 086f44f58855ae18bab19fb794cce6c6d2c6143b
Author: Bart Van Assche <bvanassche@acm.org>

    IB/srp: Avoid skipping srp_reset_host() after a transport error

Together with the following commit this results in the wrong return code
if transport_offline (SUCCESS instead of FAST_IO_FAIL):

commit 99e1c1398f44a056b16e78122133988c82b66d97
Author: Bart Van Assche <bvanassche@acm.org>

    IB/srp: Fail I/O fast if target offline


Resulting code:
1755         if (srp_send_tsk_mgmt(target, req->index, scmnd->device->lun,
1756                               SRP_TSK_ABORT_TASK) == 0 ||
1757             target->transport_offline)
1758                 ret = SUCCESS;
1759         else if (target->transport_offline)
1760                 ret = FAST_IO_FAIL;
1761         else
1762                 ret = FAILED;

This doesn't make sense. The check for transport_offline has to be
removed for the SUCCESS case! I've already told that on linux-rdma.

Cheers,
Sebastian


On 09.07.2013 19:36, Roland Dreier wrote:
> Hi Linus,
> 
> Please pull from
> 
>     git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus
> 
> ----------------------------------------------------------------
> 
> Main batch of InfiniBand/RDMA changes for 3.11 merge window:
> 
>  - AF_IB (native IB addressing) for CMA from Sean Hefty
>  - New mlx5 driver for Mellanox Connect-IB adapters
>  - SRP fixes from Bart Van Assche
>  - qib HW driver updates
>  - Resurrection of ocrdma HW driver development
>  - uverbs conversion to create fds with O_CLOEXEC set
>  - Other small changes and fixes
> 
> ----------------------------------------------------------------
> Bart Van Assche (5):
>       IB/srp: Avoid skipping srp_reset_host() after a transport error
>       IB/srp: Skip host settle delay
>       IB/srp: Fail I/O fast if target offline
>       IB/srp: Maintain a single connection per I_T nexus
>       IB/srp: Make HCA completion vector configurable
> 
> Dan Carpenter (1):
>       RDMA/cxgb3: Timeout condition is never true
> 
> Dotan Barak (1):
>       IB/srp: Fix remove_one crash due to resource exhaustion
> 
> Eli Cohen (1):
>       mlx5: Add driver for Mellanox Connect-IB adapters
> 
> Gottumukkala, Naresh (1):
>       RDMA/ocrdma: Remove use_cnt for queues
> 
> Jack Morgenstein (1):
>       IB/core: Add reserved values to enums for low-level driver use
> 
> Mike Marciniszyn (6):
>       IB/qib: Add DCA support
>       IB/qib: Remove atomic_inc_not_zero() from QP RCU
>       IB/qib: Optimize CQ callbacks
>       IB/qib: Convert opcode counters to per-context
>       IB/qib: Add per-context stats interface
>       IB/qib: Add qp_stats debug file
> 
> Mitko Haralanov (1):
>       IB/qib: New transmitter tunning settings for Dell 1.1 backplane
> 
> Naresh Gottumukkala (5):
>       RDMA/ocrdma: Use MCC_CREATE_EXT_V1 for MCC create
>       RDMA/ocrdma: Replace ocrdma_err with pr_err
>       RDMA/ocrdma: Set bad_wr in error case
>       RDMA/ocrdma: Change macros to inline funtions
>       RDMA/ocrdma: Reorg structures to avoid padding
> 
> Ramkrishna Vepa (2):
>       IB/qib: Add optional NUMA affinity
>       IB/qib: Add dual-rail NUMA awareness for PSM processes
> 
> Roland Dreier (5):
>       mlx5: Fix parameter type of health_handler_t
>       IB/mlx5: Make profile[] static in main.c
>       mlx5_core: Fixes for sparse warnings
>       IB/uverbs: Use get_unused_fd_flags(O_CLOEXEC) instead of get_unused_fd()
>       Merge branches 'af_ib', 'cxgb4', 'misc', 'mlx5', 'ocrdma', 'qib' and 'srp' into for-next
> 
> Sean Hefty (28):
>       RDMA/cma: Define native IB address
>       RDMA/cma: Allow enabling reuseaddr in any state
>       RDMA/cma: Include AF_IB in loopback and any address checks
>       IB/addr: Add AF_IB support to ip_addr_size
>       RDMA/cma: Update port reservation to support AF_IB
>       RDMA/cma: Allow user to specify AF_IB when binding
>       RDMA/cma: Do not modify sa_family when setting loopback address
>       RDMA/cma: Add helper functions to return id address information
>       RDMA/cma: Restrict AF_IB loopback to binding to IB devices only
>       RDMA/cma: Verify that source and dest sa_family are the same
>       RDMA/cma: Add support for AF_IB to rdma_resolve_addr()
>       RDMA/cma: Add support for AF_IB to rdma_resolve_route()
>       RDMA/cma: Add support for AF_IB to cma_get_service_id()
>       RDMA/cma: Remove unused SDP related code
>       RDMA/cma: Merge cma_get/save_net_info
>       RDMA/cma: Expose private data when using AF_IB
>       RDMA/cma: Set qkey for AF_IB
>       RDMA/cma: Only listen on IB devices when using AF_IB
>       RDMA/ucma: Support querying for AF_IB addresses
>       IB/sa: Export function to pack a path record into wire format
>       RDMA/ucma: Support querying when IB paths are not reversible
>       RDMA/cma: Export cma_get_service_id()
>       RDMA/ucma: Add ability to query GID addresses
>       RDMA/ucma: Name changes to indicate only IP addresses supported
>       RDMA/ucma: Allow user space to bind to AF_IB
>       RDMA/ucma: Allow user space to pass AF_IB into resolve
>       RDMA/ucma: Allow user space to specify AF_IB when joining multicast
>       RDMA/cma: Export AF_IB statistics
> 
> Vinit Agnihotri (1):
>       IB/qib: Update minor version number
> 
> Vu Pham (1):
>       IB/srp: Bump driver version and release date
> 
> Wei Yongjun (3):
>       IB/ehca: Fix error return code in ehca_create_slab_caches()
>       RDMA/ocrdma: Fix error return code in ocrdma_set_create_qp_rq_cmd()
>       IB/core: Fix error return code in add_port()
> 
>  Documentation/ABI/stable/sysfs-driver-ib_srp        |    7 +
>  MAINTAINERS                                         |   22 ++
>  drivers/infiniband/Kconfig                          |    1 +
>  drivers/infiniband/Makefile                         |    1 +
>  drivers/infiniband/core/addr.c                      |   20 +-
>  drivers/infiniband/core/cma.c                       |  906 ++++++++++++++++++++++++++++++++++-------------------------
>  drivers/infiniband/core/sa_query.c                  |    6 +
>  drivers/infiniband/core/sysfs.c                     |    8 +-
>  drivers/infiniband/core/ucma.c                      |  321 ++++++++++++++++++---
>  drivers/infiniband/core/uverbs_cmd.c                |    4 +-
>  drivers/infiniband/hw/cxgb3/iwch_qp.c               |    3 +-
>  drivers/infiniband/hw/ehca/ehca_main.c              |    1 +
>  drivers/infiniband/hw/mlx5/Kconfig                  |   10 +
>  drivers/infiniband/hw/mlx5/Makefile                 |    3 +
>  drivers/infiniband/hw/mlx5/ah.c                     |   92 ++++++
>  drivers/infiniband/hw/mlx5/cq.c                     |  843 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  drivers/infiniband/hw/mlx5/doorbell.c               |  100 +++++++
>  drivers/infiniband/hw/mlx5/mad.c                    |  139 +++++++++
>  drivers/infiniband/hw/mlx5/main.c                   | 1504 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  drivers/infiniband/hw/mlx5/mem.c                    |  162 +++++++++++
>  drivers/infiniband/hw/mlx5/mlx5_ib.h                |  545 +++++++++++++++++++++++++++++++++++
>  drivers/infiniband/hw/mlx5/mr.c                     | 1007 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  drivers/infiniband/hw/mlx5/qp.c                     | 2524 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  drivers/infiniband/hw/mlx5/srq.c                    |  473 +++++++++++++++++++++++++++++++
>  drivers/infiniband/hw/mlx5/user.h                   |  121 ++++++++
>  drivers/infiniband/hw/ocrdma/ocrdma.h               |   63 +++--
>  drivers/infiniband/hw/ocrdma/ocrdma_hw.c            |   86 +++---
>  drivers/infiniband/hw/ocrdma/ocrdma_main.c          |    6 +-
>  drivers/infiniband/hw/ocrdma/ocrdma_sli.h           |   35 +--
>  drivers/infiniband/hw/ocrdma/ocrdma_verbs.c         |  135 ++++-----
>  drivers/infiniband/hw/qib/Kconfig                   |    8 +
>  drivers/infiniband/hw/qib/Makefile                  |    1 +
>  drivers/infiniband/hw/qib/qib.h                     |   61 ++--
>  drivers/infiniband/hw/qib/qib_common.h              |    2 +-
>  drivers/infiniband/hw/qib/qib_cq.c                  |   67 ++++-
>  drivers/infiniband/hw/qib/qib_debugfs.c             |  283 +++++++++++++++++++
>  drivers/infiniband/hw/qib/qib_debugfs.h             |   45 +++
>  drivers/infiniband/hw/qib/qib_driver.c              |    1 -
>  drivers/infiniband/hw/qib/qib_file_ops.c            |  176 ++++++++----
>  drivers/infiniband/hw/qib/qib_iba6120.c             |   10 +
>  drivers/infiniband/hw/qib/qib_iba7220.c             |   10 +
>  drivers/infiniband/hw/qib/qib_iba7322.c             |  393 +++++++++++++++++++++++---
>  drivers/infiniband/hw/qib/qib_init.c                |  139 +++++++--
>  drivers/infiniband/hw/qib/qib_qp.c                  |  123 +++++++-
>  drivers/infiniband/hw/qib/qib_verbs.c               |    8 +-
>  drivers/infiniband/hw/qib/qib_verbs.h               |   33 ++-
>  drivers/infiniband/ulp/srp/ib_srp.c                 |   90 +++++-
>  drivers/infiniband/ulp/srp/ib_srp.h                 |    1 +
>  drivers/net/ethernet/mellanox/Kconfig               |    1 +
>  drivers/net/ethernet/mellanox/Makefile              |    1 +
>  drivers/net/ethernet/mellanox/mlx5/core/Kconfig     |   18 ++
>  drivers/net/ethernet/mellanox/mlx5/core/Makefile    |    5 +
>  drivers/net/ethernet/mellanox/mlx5/core/alloc.c     |  238 ++++++++++++++++
>  drivers/net/ethernet/mellanox/mlx5/core/cmd.c       | 1515 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  drivers/net/ethernet/mellanox/mlx5/core/cq.c        |  224 +++++++++++++++
>  drivers/net/ethernet/mellanox/mlx5/core/debugfs.c   |  587 ++++++++++++++++++++++++++++++++++++++
>  drivers/net/ethernet/mellanox/mlx5/core/eq.c        |  521 ++++++++++++++++++++++++++++++++++
>  drivers/net/ethernet/mellanox/mlx5/core/fw.c        |  185 ++++++++++++
>  drivers/net/ethernet/mellanox/mlx5/core/health.c    |  227 +++++++++++++++
>  drivers/net/ethernet/mellanox/mlx5/core/mad.c       |   78 ++++++
>  drivers/net/ethernet/mellanox/mlx5/core/main.c      |  475 +++++++++++++++++++++++++++++++
>  drivers/net/ethernet/mellanox/mlx5/core/mcg.c       |  106 +++++++
>  drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h |   73 +++++
>  drivers/net/ethernet/mellanox/mlx5/core/mr.c        |  136 +++++++++
>  drivers/net/ethernet/mellanox/mlx5/core/pagealloc.c |  435 ++++++++++++++++++++++++++++
>  drivers/net/ethernet/mellanox/mlx5/core/pd.c        |  101 +++++++
>  drivers/net/ethernet/mellanox/mlx5/core/port.c      |  104 +++++++
>  drivers/net/ethernet/mellanox/mlx5/core/qp.c        |  301 ++++++++++++++++++++
>  drivers/net/ethernet/mellanox/mlx5/core/srq.c       |  223 +++++++++++++++
>  drivers/net/ethernet/mellanox/mlx5/core/uar.c       |  223 +++++++++++++++
>  include/linux/mlx5/cmd.h                            |   51 ++++
>  include/linux/mlx5/cq.h                             |  165 +++++++++++
>  include/linux/mlx5/device.h                         |  893 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  include/linux/mlx5/doorbell.h                       |   79 ++++++
>  include/linux/mlx5/driver.h                         |  769 ++++++++++++++++++++++++++++++++++++++++++++++++++
>  include/linux/mlx5/qp.h                             |  467 ++++++++++++++++++++++++++++++
>  include/linux/mlx5/srq.h                            |   41 +++
>  include/linux/socket.h                              |    2 +
>  include/rdma/ib.h                                   |   89 ++++++
>  include/rdma/ib_addr.h                              |    6 +-
>  include/rdma/ib_sa.h                                |    7 +
>  include/rdma/ib_verbs.h                             |   35 ++-
>  include/rdma/rdma_cm.h                              |   13 +
>  include/uapi/rdma/rdma_user_cm.h                    |   73 ++++-
>  84 files changed, 18267 insertions(+), 799 deletions(-)
>  create mode 100644 drivers/infiniband/hw/mlx5/Kconfig
>  create mode 100644 drivers/infiniband/hw/mlx5/Makefile
>  create mode 100644 drivers/infiniband/hw/mlx5/ah.c
>  create mode 100644 drivers/infiniband/hw/mlx5/cq.c
>  create mode 100644 drivers/infiniband/hw/mlx5/doorbell.c
>  create mode 100644 drivers/infiniband/hw/mlx5/mad.c
>  create mode 100644 drivers/infiniband/hw/mlx5/main.c
>  create mode 100644 drivers/infiniband/hw/mlx5/mem.c
>  create mode 100644 drivers/infiniband/hw/mlx5/mlx5_ib.h
>  create mode 100644 drivers/infiniband/hw/mlx5/mr.c
>  create mode 100644 drivers/infiniband/hw/mlx5/qp.c
>  create mode 100644 drivers/infiniband/hw/mlx5/srq.c
>  create mode 100644 drivers/infiniband/hw/mlx5/user.h
>  create mode 100644 drivers/infiniband/hw/qib/qib_debugfs.c
>  create mode 100644 drivers/infiniband/hw/qib/qib_debugfs.h
>  create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/Kconfig
>  create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/Makefile
>  create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/alloc.c
>  create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/cmd.c
>  create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/cq.c
>  create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/debugfs.c
>  create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/eq.c
>  create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/fw.c
>  create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/health.c
>  create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/mad.c
>  create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/main.c
>  create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/mcg.c
>  create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
>  create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/mr.c
>  create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/pagealloc.c
>  create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/pd.c
>  create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/port.c
>  create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/qp.c
>  create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/srq.c
>  create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/uar.c
>  create mode 100644 include/linux/mlx5/cmd.h
>  create mode 100644 include/linux/mlx5/cq.h
>  create mode 100644 include/linux/mlx5/device.h
>  create mode 100644 include/linux/mlx5/doorbell.h
>  create mode 100644 include/linux/mlx5/driver.h
>  create mode 100644 include/linux/mlx5/qp.h
>  create mode 100644 include/linux/mlx5/srq.h
>  create mode 100644 include/rdma/ib.h
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2013-07-09 17:36 Roland Dreier
  2013-07-10 14:35 ` Sebastian Riemer
  0 siblings, 1 reply; 223+ messages in thread
From: Roland Dreier @ 2013-07-09 17:36 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-rdma

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------

Main batch of InfiniBand/RDMA changes for 3.11 merge window:

 - AF_IB (native IB addressing) for CMA from Sean Hefty
 - New mlx5 driver for Mellanox Connect-IB adapters
 - SRP fixes from Bart Van Assche
 - qib HW driver updates
 - Resurrection of ocrdma HW driver development
 - uverbs conversion to create fds with O_CLOEXEC set
 - Other small changes and fixes

----------------------------------------------------------------
Bart Van Assche (5):
      IB/srp: Avoid skipping srp_reset_host() after a transport error
      IB/srp: Skip host settle delay
      IB/srp: Fail I/O fast if target offline
      IB/srp: Maintain a single connection per I_T nexus
      IB/srp: Make HCA completion vector configurable

Dan Carpenter (1):
      RDMA/cxgb3: Timeout condition is never true

Dotan Barak (1):
      IB/srp: Fix remove_one crash due to resource exhaustion

Eli Cohen (1):
      mlx5: Add driver for Mellanox Connect-IB adapters

Gottumukkala, Naresh (1):
      RDMA/ocrdma: Remove use_cnt for queues

Jack Morgenstein (1):
      IB/core: Add reserved values to enums for low-level driver use

Mike Marciniszyn (6):
      IB/qib: Add DCA support
      IB/qib: Remove atomic_inc_not_zero() from QP RCU
      IB/qib: Optimize CQ callbacks
      IB/qib: Convert opcode counters to per-context
      IB/qib: Add per-context stats interface
      IB/qib: Add qp_stats debug file

Mitko Haralanov (1):
      IB/qib: New transmitter tunning settings for Dell 1.1 backplane

Naresh Gottumukkala (5):
      RDMA/ocrdma: Use MCC_CREATE_EXT_V1 for MCC create
      RDMA/ocrdma: Replace ocrdma_err with pr_err
      RDMA/ocrdma: Set bad_wr in error case
      RDMA/ocrdma: Change macros to inline funtions
      RDMA/ocrdma: Reorg structures to avoid padding

Ramkrishna Vepa (2):
      IB/qib: Add optional NUMA affinity
      IB/qib: Add dual-rail NUMA awareness for PSM processes

Roland Dreier (5):
      mlx5: Fix parameter type of health_handler_t
      IB/mlx5: Make profile[] static in main.c
      mlx5_core: Fixes for sparse warnings
      IB/uverbs: Use get_unused_fd_flags(O_CLOEXEC) instead of get_unused_fd()
      Merge branches 'af_ib', 'cxgb4', 'misc', 'mlx5', 'ocrdma', 'qib' and 'srp' into for-next

Sean Hefty (28):
      RDMA/cma: Define native IB address
      RDMA/cma: Allow enabling reuseaddr in any state
      RDMA/cma: Include AF_IB in loopback and any address checks
      IB/addr: Add AF_IB support to ip_addr_size
      RDMA/cma: Update port reservation to support AF_IB
      RDMA/cma: Allow user to specify AF_IB when binding
      RDMA/cma: Do not modify sa_family when setting loopback address
      RDMA/cma: Add helper functions to return id address information
      RDMA/cma: Restrict AF_IB loopback to binding to IB devices only
      RDMA/cma: Verify that source and dest sa_family are the same
      RDMA/cma: Add support for AF_IB to rdma_resolve_addr()
      RDMA/cma: Add support for AF_IB to rdma_resolve_route()
      RDMA/cma: Add support for AF_IB to cma_get_service_id()
      RDMA/cma: Remove unused SDP related code
      RDMA/cma: Merge cma_get/save_net_info
      RDMA/cma: Expose private data when using AF_IB
      RDMA/cma: Set qkey for AF_IB
      RDMA/cma: Only listen on IB devices when using AF_IB
      RDMA/ucma: Support querying for AF_IB addresses
      IB/sa: Export function to pack a path record into wire format
      RDMA/ucma: Support querying when IB paths are not reversible
      RDMA/cma: Export cma_get_service_id()
      RDMA/ucma: Add ability to query GID addresses
      RDMA/ucma: Name changes to indicate only IP addresses supported
      RDMA/ucma: Allow user space to bind to AF_IB
      RDMA/ucma: Allow user space to pass AF_IB into resolve
      RDMA/ucma: Allow user space to specify AF_IB when joining multicast
      RDMA/cma: Export AF_IB statistics

Vinit Agnihotri (1):
      IB/qib: Update minor version number

Vu Pham (1):
      IB/srp: Bump driver version and release date

Wei Yongjun (3):
      IB/ehca: Fix error return code in ehca_create_slab_caches()
      RDMA/ocrdma: Fix error return code in ocrdma_set_create_qp_rq_cmd()
      IB/core: Fix error return code in add_port()

 Documentation/ABI/stable/sysfs-driver-ib_srp        |    7 +
 MAINTAINERS                                         |   22 ++
 drivers/infiniband/Kconfig                          |    1 +
 drivers/infiniband/Makefile                         |    1 +
 drivers/infiniband/core/addr.c                      |   20 +-
 drivers/infiniband/core/cma.c                       |  906 ++++++++++++++++++++++++++++++++++-------------------------
 drivers/infiniband/core/sa_query.c                  |    6 +
 drivers/infiniband/core/sysfs.c                     |    8 +-
 drivers/infiniband/core/ucma.c                      |  321 ++++++++++++++++++---
 drivers/infiniband/core/uverbs_cmd.c                |    4 +-
 drivers/infiniband/hw/cxgb3/iwch_qp.c               |    3 +-
 drivers/infiniband/hw/ehca/ehca_main.c              |    1 +
 drivers/infiniband/hw/mlx5/Kconfig                  |   10 +
 drivers/infiniband/hw/mlx5/Makefile                 |    3 +
 drivers/infiniband/hw/mlx5/ah.c                     |   92 ++++++
 drivers/infiniband/hw/mlx5/cq.c                     |  843 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 drivers/infiniband/hw/mlx5/doorbell.c               |  100 +++++++
 drivers/infiniband/hw/mlx5/mad.c                    |  139 +++++++++
 drivers/infiniband/hw/mlx5/main.c                   | 1504 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 drivers/infiniband/hw/mlx5/mem.c                    |  162 +++++++++++
 drivers/infiniband/hw/mlx5/mlx5_ib.h                |  545 +++++++++++++++++++++++++++++++++++
 drivers/infiniband/hw/mlx5/mr.c                     | 1007 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 drivers/infiniband/hw/mlx5/qp.c                     | 2524 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 drivers/infiniband/hw/mlx5/srq.c                    |  473 +++++++++++++++++++++++++++++++
 drivers/infiniband/hw/mlx5/user.h                   |  121 ++++++++
 drivers/infiniband/hw/ocrdma/ocrdma.h               |   63 +++--
 drivers/infiniband/hw/ocrdma/ocrdma_hw.c            |   86 +++---
 drivers/infiniband/hw/ocrdma/ocrdma_main.c          |    6 +-
 drivers/infiniband/hw/ocrdma/ocrdma_sli.h           |   35 +--
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c         |  135 ++++-----
 drivers/infiniband/hw/qib/Kconfig                   |    8 +
 drivers/infiniband/hw/qib/Makefile                  |    1 +
 drivers/infiniband/hw/qib/qib.h                     |   61 ++--
 drivers/infiniband/hw/qib/qib_common.h              |    2 +-
 drivers/infiniband/hw/qib/qib_cq.c                  |   67 ++++-
 drivers/infiniband/hw/qib/qib_debugfs.c             |  283 +++++++++++++++++++
 drivers/infiniband/hw/qib/qib_debugfs.h             |   45 +++
 drivers/infiniband/hw/qib/qib_driver.c              |    1 -
 drivers/infiniband/hw/qib/qib_file_ops.c            |  176 ++++++++----
 drivers/infiniband/hw/qib/qib_iba6120.c             |   10 +
 drivers/infiniband/hw/qib/qib_iba7220.c             |   10 +
 drivers/infiniband/hw/qib/qib_iba7322.c             |  393 +++++++++++++++++++++++---
 drivers/infiniband/hw/qib/qib_init.c                |  139 +++++++--
 drivers/infiniband/hw/qib/qib_qp.c                  |  123 +++++++-
 drivers/infiniband/hw/qib/qib_verbs.c               |    8 +-
 drivers/infiniband/hw/qib/qib_verbs.h               |   33 ++-
 drivers/infiniband/ulp/srp/ib_srp.c                 |   90 +++++-
 drivers/infiniband/ulp/srp/ib_srp.h                 |    1 +
 drivers/net/ethernet/mellanox/Kconfig               |    1 +
 drivers/net/ethernet/mellanox/Makefile              |    1 +
 drivers/net/ethernet/mellanox/mlx5/core/Kconfig     |   18 ++
 drivers/net/ethernet/mellanox/mlx5/core/Makefile    |    5 +
 drivers/net/ethernet/mellanox/mlx5/core/alloc.c     |  238 ++++++++++++++++
 drivers/net/ethernet/mellanox/mlx5/core/cmd.c       | 1515 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 drivers/net/ethernet/mellanox/mlx5/core/cq.c        |  224 +++++++++++++++
 drivers/net/ethernet/mellanox/mlx5/core/debugfs.c   |  587 ++++++++++++++++++++++++++++++++++++++
 drivers/net/ethernet/mellanox/mlx5/core/eq.c        |  521 ++++++++++++++++++++++++++++++++++
 drivers/net/ethernet/mellanox/mlx5/core/fw.c        |  185 ++++++++++++
 drivers/net/ethernet/mellanox/mlx5/core/health.c    |  227 +++++++++++++++
 drivers/net/ethernet/mellanox/mlx5/core/mad.c       |   78 ++++++
 drivers/net/ethernet/mellanox/mlx5/core/main.c      |  475 +++++++++++++++++++++++++++++++
 drivers/net/ethernet/mellanox/mlx5/core/mcg.c       |  106 +++++++
 drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h |   73 +++++
 drivers/net/ethernet/mellanox/mlx5/core/mr.c        |  136 +++++++++
 drivers/net/ethernet/mellanox/mlx5/core/pagealloc.c |  435 ++++++++++++++++++++++++++++
 drivers/net/ethernet/mellanox/mlx5/core/pd.c        |  101 +++++++
 drivers/net/ethernet/mellanox/mlx5/core/port.c      |  104 +++++++
 drivers/net/ethernet/mellanox/mlx5/core/qp.c        |  301 ++++++++++++++++++++
 drivers/net/ethernet/mellanox/mlx5/core/srq.c       |  223 +++++++++++++++
 drivers/net/ethernet/mellanox/mlx5/core/uar.c       |  223 +++++++++++++++
 include/linux/mlx5/cmd.h                            |   51 ++++
 include/linux/mlx5/cq.h                             |  165 +++++++++++
 include/linux/mlx5/device.h                         |  893 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 include/linux/mlx5/doorbell.h                       |   79 ++++++
 include/linux/mlx5/driver.h                         |  769 ++++++++++++++++++++++++++++++++++++++++++++++++++
 include/linux/mlx5/qp.h                             |  467 ++++++++++++++++++++++++++++++
 include/linux/mlx5/srq.h                            |   41 +++
 include/linux/socket.h                              |    2 +
 include/rdma/ib.h                                   |   89 ++++++
 include/rdma/ib_addr.h                              |    6 +-
 include/rdma/ib_sa.h                                |    7 +
 include/rdma/ib_verbs.h                             |   35 ++-
 include/rdma/rdma_cm.h                              |   13 +
 include/uapi/rdma/rdma_user_cm.h                    |   73 ++++-
 84 files changed, 18267 insertions(+), 799 deletions(-)
 create mode 100644 drivers/infiniband/hw/mlx5/Kconfig
 create mode 100644 drivers/infiniband/hw/mlx5/Makefile
 create mode 100644 drivers/infiniband/hw/mlx5/ah.c
 create mode 100644 drivers/infiniband/hw/mlx5/cq.c
 create mode 100644 drivers/infiniband/hw/mlx5/doorbell.c
 create mode 100644 drivers/infiniband/hw/mlx5/mad.c
 create mode 100644 drivers/infiniband/hw/mlx5/main.c
 create mode 100644 drivers/infiniband/hw/mlx5/mem.c
 create mode 100644 drivers/infiniband/hw/mlx5/mlx5_ib.h
 create mode 100644 drivers/infiniband/hw/mlx5/mr.c
 create mode 100644 drivers/infiniband/hw/mlx5/qp.c
 create mode 100644 drivers/infiniband/hw/mlx5/srq.c
 create mode 100644 drivers/infiniband/hw/mlx5/user.h
 create mode 100644 drivers/infiniband/hw/qib/qib_debugfs.c
 create mode 100644 drivers/infiniband/hw/qib/qib_debugfs.h
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/Kconfig
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/Makefile
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/alloc.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/cmd.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/cq.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/debugfs.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/eq.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/fw.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/health.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/mad.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/main.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/mcg.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/mr.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/pagealloc.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/pd.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/port.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/qp.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/srq.c
 create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/uar.c
 create mode 100644 include/linux/mlx5/cmd.h
 create mode 100644 include/linux/mlx5/cq.h
 create mode 100644 include/linux/mlx5/device.h
 create mode 100644 include/linux/mlx5/doorbell.h
 create mode 100644 include/linux/mlx5/driver.h
 create mode 100644 include/linux/mlx5/qp.h
 create mode 100644 include/linux/mlx5/srq.h
 create mode 100644 include/rdma/ib.h

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2013-06-07 22:28 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2013-06-07 22:28 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------

InfiniBand fixes for 3.10-rc:
 - qib RCU/lockdep fix
 - iser device removal fix, plus doc fixes

----------------------------------------------------------------
Mike Marciniszyn (1):
      IB/qib: Fix lockdep splat in qib_alloc_lkey()

Or Gerlitz (2):
      IB/iser: Add Mellanox copyright
      MAINTAINERS: Add entry for iSCSI Extensions for RDMA (iSER) initiator

Roi Dayan (1):
      IB/iser: Fix device removal flow

Roland Dreier (1):
      Merge branches 'iser' and 'qib' into for-next

 MAINTAINERS                                  | 10 ++++++++++
 drivers/infiniband/hw/qib/qib_keys.c         |  2 +-
 drivers/infiniband/ulp/iser/iscsi_iser.c     |  1 +
 drivers/infiniband/ulp/iser/iscsi_iser.h     |  1 +
 drivers/infiniband/ulp/iser/iser_initiator.c |  1 +
 drivers/infiniband/ulp/iser/iser_memory.c    |  1 +
 drivers/infiniband/ulp/iser/iser_verbs.c     | 16 +++++++++-------
 7 files changed, 24 insertions(+), 8 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2013-05-08 21:20 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2013-05-08 21:20 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-rdma

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------

InfiniBand/RDMA changes for the 3.10 merge window:
 - XRC transport fixes
 - Fix DHCP on IPoIB
 - mlx4 preparations for flow steering
 - iSER fixes
 - miscellaneous other fixes

Sorry for being so late on this -- I moved houses and the system with
all my private keys was offline for a week or so.

----------------------------------------------------------------
Akinobu Mita (1):
      RDMA: Rename random32() to prandom_u32()

Cong Ding (1):
      RDMA/cxgb3: Fix uninitialized variable

Dotan Barak (1):
      IB/mlx4: Disable VLAN stripping for RAW PACKET QPs

Doug Ledford (1):
      IPoIB: Fix ipoib_hard_header() return value

Eli Cohen (1):
      IB/mlx4: Set link type for RAW PACKET QPs in the QP context

Grant Grundler (1):
      SRPT: Fix odd use of WARN_ON()

Hadar Hen Zion (5):
      mlx4_core: Move DMFS HW structs to common header file
      mlx4: Match DMFS promiscuous field names to firmware spec
      mlx4_core: Change a few DMFS fields names to match firmare spec
      mlx4_core: Directly expose fields of DMFS HW rule control segment
      mlx4_core: Expose a few helpers to fill DMFS HW strucutures

Jack Morgenstein (1):
      mlx4_core: Reduce warning message for SRQ_LIMIT event to debug level

Mike Marciniszyn (2):
      IB/ipath: Correct ipath_verbs_register_sysfs() error handling
      IB/qib: Correct qib_verbs_register_sysfs() error handling

Or Gerlitz (2):
      IB/iser: Return error to upper layers on EAGAIN registration failures
      IB/iser: Add support for iser CM REQ additional info

Roi Dayan (2):
      IB/iser: Add module version
      IB/iser: Move informational messages from error to info level

Roland Dreier (1):
      Merge branches 'cxgb4', 'ipoib', 'iser', 'misc', 'mlx4', 'qib' and 'srp' into for-next

Shlomo Pongratz (3):
      IB/core: Verify that QP handler is valid before dispatching events
      mlx4_core: Implement SRQ object lookup from srqn
      IB/mlx4: Fetch XRC SRQ in the CQ polling code

Steve Wise (1):
      RDMA/iwcm: Don't touch cmid after dropping reference

Thadeu Lima de Souza Cascardo (1):
      RDMA/cxgb4: Fix SQ allocation when on-chip SQ is disabled

 drivers/infiniband/core/iwcm.c                  |   2 +
 drivers/infiniband/core/verbs.c                 |   3 +-
 drivers/infiniband/hw/cxgb3/cxio_resource.c     |   4 +-
 drivers/infiniband/hw/cxgb3/iwch_provider.c     |   2 +-
 drivers/infiniband/hw/cxgb4/id_table.c          |   4 +-
 drivers/infiniband/hw/cxgb4/qp.c                |  25 ++---
 drivers/infiniband/hw/ipath/ipath_verbs.c       |  19 ++--
 drivers/infiniband/hw/mlx4/cq.c                 |  21 +++++
 drivers/infiniband/hw/mlx4/mad.c                |   2 +-
 drivers/infiniband/hw/mlx4/qp.c                 |   6 ++
 drivers/infiniband/hw/qib/qib_sysfs.c           |   6 +-
 drivers/infiniband/hw/qib/qib_verbs.c           |   3 +-
 drivers/infiniband/ulp/ipoib/ipoib_cm.c         |   2 +-
 drivers/infiniband/ulp/ipoib/ipoib_main.c       |   2 +-
 drivers/infiniband/ulp/iser/iscsi_iser.c        |  24 ++---
 drivers/infiniband/ulp/iser/iscsi_iser.h        |  24 ++++-
 drivers/infiniband/ulp/iser/iser_memory.c       |   3 +-
 drivers/infiniband/ulp/iser/iser_verbs.c        |  36 ++++---
 drivers/infiniband/ulp/srpt/ib_srpt.c           |   2 +-
 drivers/net/ethernet/mellanox/mlx4/en_ethtool.c |   2 +-
 drivers/net/ethernet/mellanox/mlx4/en_netdev.c  |  16 ++--
 drivers/net/ethernet/mellanox/mlx4/eq.c         |   4 +-
 drivers/net/ethernet/mellanox/mlx4/mcg.c        | 120 +++++++++++++++---------
 drivers/net/ethernet/mellanox/mlx4/mlx4.h       |  79 ----------------
 drivers/net/ethernet/mellanox/mlx4/srq.c        |  15 +++
 include/linux/mlx4/device.h                     | 104 ++++++++++++++++++--
 include/linux/mlx4/srq.h                        |   2 +
 27 files changed, 328 insertions(+), 204 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2013-03-25 16:42 Roland Dreier
@ 2013-04-05 15:56 ` David Woodhouse
  0 siblings, 0 replies; 223+ messages in thread
From: David Woodhouse @ 2013-04-05 15:56 UTC (permalink / raw)
  To: Roland Dreier, Vinit Agnihotri, Dean Luick, Mike Marciniszyn
  Cc: Linus Torvalds, linux-kernel, linux-rdma

[-- Attachment #1: Type: text/plain, Size: 1351 bytes --]

On Mon, 2013-03-25 at 09:42 -0700, Roland Dreier wrote:
> Hi Linus,
> 
> Please pull from
> 
>     git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

> Vinit Agnihotri (1):
>       IB/qib: change QLogic to Intel

>  firmware/Makefile                         | 2 +-
>  firmware/{qlogic => intel}/sd7220.fw.ihex | 0

This is an ABI change, and it's wrong. Moving the firmware from one
location to another breaks drivers which look for it in one place when
it is actually in the other.

Besides, the firmware/ directory of the kernel is deprecated and very
few people actually use it. I don't think *any* distributions do
anything other than ignore its contents, or have done for some years.
Any changes need to be made in the separate linux-firmware repository.
I don't recall seeing this change being submitted there, and if it *was*
it would have been rejected on the basis that it breaks old kernels.
Unless we *duplicate* the file in both qlogic/ and intel/ directories,
but that's just silly.

We already have a *bunch* of other firmwares in the qlogic/ directory
which nobody seems interested in moving. There is no point in this
marketing-driven revisionism; please leave this one where it is too.

Please revert this part of commit e2eed58b4 before 3.9. Thanks.

-- 
dwmw2

[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 6171 bytes --]

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2013-03-25 16:42 Roland Dreier
  2013-04-05 15:56 ` David Woodhouse
  0 siblings, 1 reply; 223+ messages in thread
From: Roland Dreier @ 2013-03-25 16:42 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-rdma

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------

Small batch of InfiniBand/RDMA fixes for 3.9:

 - Fix for TX lockup in IPoIB
 - QLogic -> Intel update for qib driver
 - Small static checker fix for qib
 - Fix error path return value in cxgb4

----------------------------------------------------------------
Dan Carpenter (1):
      IB/ipath: Silence a static checker warning

Mike Marciniszyn (1):
      IPoIB: Fix send lockup due to missed TX completion

Roland Dreier (1):
      Merge branches 'cxgb4', 'ipoib' and 'qib' into for-next

Vinit Agnihotri (1):
      IB/qib: change QLogic to Intel

Wei Yongjun (1):
      RDMA/cxgb4: Fix error return code in create_qp()

 drivers/infiniband/hw/cxgb4/qp.c          | 4 +++-
 drivers/infiniband/hw/ipath/ipath_verbs.c | 2 +-
 drivers/infiniband/hw/qib/Kconfig         | 6 +++---
 drivers/infiniband/hw/qib/qib_driver.c    | 5 +++--
 drivers/infiniband/hw/qib/qib_iba6120.c   | 3 ++-
 drivers/infiniband/hw/qib/qib_init.c      | 8 ++++----
 drivers/infiniband/hw/qib/qib_sd7220.c    | 4 ++--
 drivers/infiniband/hw/qib/qib_verbs.c     | 4 ++--
 drivers/infiniband/ulp/ipoib/ipoib_cm.c   | 8 ++++++--
 firmware/Makefile                         | 2 +-
 firmware/{qlogic => intel}/sd7220.fw.ihex | 0
 11 files changed, 27 insertions(+), 19 deletions(-)
 rename firmware/{qlogic => intel}/sd7220.fw.ihex (100%)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2013-02-26 17:41 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2013-02-26 17:41 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------

Main batch of InfiniBand/RDMA changes for 3.9:
 - SRP error handling fixes from Bart Van Assche
 - Implementation of memory windows for mlx4 from Shani Michaeli
 - Lots of cxgb4 HW driver fixes from Vipul Pandya
 - Make iSER work for virtual functions, other fixes from Or Gerlitz
 - Fix for bug in qib HW driver from Mike Marciniszyn
 - IPoIB fixes from me, Itai Garbi, Shlomo Pongratz, Yan Burman
 - Various cleanups and warning fixes from Julia Lawall, Paul Bolle, Wei Yongjun

----------------------------------------------------------------
Bart Van Assche (4):
      IB/srp: Track connection state properly
      IB/srp: Avoid sending a task management function needlessly
      IB/srp: Avoid endless SCSI error handling loop
      IB/srp: Fail I/O requests if the transport is offline

Dan Carpenter (1):
      IB/mlx4: Fix bug unwinding on error in mlx4_ib_init_sriov()

Itai Garbi (1):
      IPoIB: Don't attempt to release resources on error flow

Julia Lawall (1):
      IB/mlx4: Adjust duplicate test

Mike Marciniszyn (1):
      IB/qib: Fix QP locate/remove race

Or Gerlitz (3):
      IB/iser: Use proper define for the commands per LUN value advertised to SCSI ML
      IB/iser: Avoid error prints on EAGAIN registration failures
      IB/iser: Enable iser when FMRs are not supported

Paul Bolle (2):
      RDMA/cxgb4: "cookie" can stay in host endianness
      IB/mlx4: Fix compiler warning about uninitialized 'vlan' variable

Roland Dreier (3):
      IB/mlx4: Convert is_xxx variables in build_mlx_header() to bool
      IPoIB: Free ipoib neigh on path record failure so path rec queries are retried
      Merge branches 'core', 'cxgb4', 'ipoib', 'iser', 'misc', 'mlx4', 'qib' and 'srp' into for-next

Shani Michaeli (10):
      IB/mlx4_ib: Remove local invalidate segment unused fields
      mlx4_core: Rename MPT-related functions to have mpt_ prefix
      mlx4_core: Propagate MR deregistration failures to caller
      IB/core: Add "type 2" memory windows support
      IB/uverbs: Implement memory windows support in uverbs
      mlx4_core: Disable memory windows for virtual functions
      mlx4_core: Enable memory windows in {INIT, QUERY}_HCA
      mlx4: Implement memory windows allocation and deallocation
      IB/mlx4: Support memory window binding
      IB/mlx4: Advertise MW support

Shlomo Pongratz (1):
      IPoIB: Fix ipoib_neigh hashing to use the correct daddr octets

Stefan Hasko (1):
      RDMA/cxgb4: Fix cast warning

Syam Sidhardhan (1):
      IB/mlx4: Remove redundant NULL check before kfree

Vipul Pandya (11):
      RDMA/cxgb4: Abort connections that receive unexpected streaming mode data
      RDMA/cxgb4: Abort connections when moving to ERROR state
      RDMA/cxgb4: Display streaming mode error only if detected in RTS
      RDMA/cxgb4: Keep QP referenced until TID released
      RDMA/cxgb4: Always log async errors
      RDMA/cxgb4: Only log rx_data warnings if cpl status is non-zero
      RDMA/cxgb4: Fix endpoint timeout race condition
      RDMA/cxgb4: Don't reconnect on abort for mpa_rev 1
      RDMA/cxgb4: Don't wakeup threads for MPAv2
      RDMA/cxgb4: Insert hwtid in pass_accept_req instead in pass_establish
      RDMA/cxgb4: Address sparse warnings

Wei Yongjun (1):
      RDMA/amso1100: Use module_pci_driver() to simplify the code

Yan Burman (1):
      IPoIB: Add version and firmware info to ethtool reporting

 drivers/infiniband/core/uverbs.h                   |   2 +
 drivers/infiniband/core/uverbs_cmd.c               | 121 ++++++++++++++
 drivers/infiniband/core/uverbs_main.c              |  13 +-
 drivers/infiniband/core/verbs.c                    |   5 +-
 drivers/infiniband/hw/amso1100/c2.c                |  13 +-
 drivers/infiniband/hw/cxgb3/iwch_provider.c        |   5 +-
 drivers/infiniband/hw/cxgb3/iwch_qp.c              |  15 +-
 drivers/infiniband/hw/cxgb4/cm.c                   | 170 +++++++++++--------
 drivers/infiniband/hw/cxgb4/device.c               |   5 +-
 drivers/infiniband/hw/cxgb4/ev.c                   |   8 +-
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h             |   4 +-
 drivers/infiniband/hw/cxgb4/mem.c                  |   5 +-
 drivers/infiniband/hw/cxgb4/qp.c                   |   1 +
 drivers/infiniband/hw/ehca/ehca_iverbs.h           |   2 +-
 drivers/infiniband/hw/ehca/ehca_mrmw.c             |   5 +-
 drivers/infiniband/hw/mlx4/mad.c                   |   7 +-
 drivers/infiniband/hw/mlx4/main.c                  |  22 ++-
 drivers/infiniband/hw/mlx4/mlx4_ib.h               |  18 +-
 drivers/infiniband/hw/mlx4/mr.c                    |  87 +++++++++-
 drivers/infiniband/hw/mlx4/qp.c                    |  49 ++++--
 drivers/infiniband/hw/mlx4/sysfs.c                 |   2 +-
 drivers/infiniband/hw/nes/nes_verbs.c              |  19 ++-
 drivers/infiniband/hw/qib/qib_qp.c                 |   5 +-
 drivers/infiniband/ulp/ipoib/ipoib.h               |   4 +
 drivers/infiniband/ulp/ipoib/ipoib_ethtool.c       |  19 ++-
 drivers/infiniband/ulp/ipoib/ipoib_main.c          |  14 +-
 drivers/infiniband/ulp/iser/iscsi_iser.h           |   2 +-
 drivers/infiniband/ulp/iser/iser_memory.c          |   9 +-
 drivers/infiniband/ulp/iser/iser_verbs.c           |   8 +-
 drivers/infiniband/ulp/srp/ib_srp.c                |  42 +++--
 drivers/infiniband/ulp/srp/ib_srp.h                |   1 +
 drivers/net/ethernet/mellanox/mlx4/en_main.c       |   4 +-
 drivers/net/ethernet/mellanox/mlx4/fw.c            |  14 +-
 drivers/net/ethernet/mellanox/mlx4/fw.h            |   1 +
 drivers/net/ethernet/mellanox/mlx4/main.c          |   4 +
 drivers/net/ethernet/mellanox/mlx4/mlx4.h          |  34 +++-
 drivers/net/ethernet/mellanox/mlx4/mr.c            | 186 ++++++++++++++++-----
 .../net/ethernet/mellanox/mlx4/resource_tracker.c  |  63 ++++++-
 include/linux/mlx4/device.h                        |  22 ++-
 include/linux/mlx4/qp.h                            |  19 ++-
 include/rdma/ib_verbs.h                            |  73 +++++++-
 include/uapi/rdma/ib_user_verbs.h                  |  16 ++
 net/sunrpc/xprtrdma/verbs.c                        |  20 +--
 43 files changed, 885 insertions(+), 253 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2013-02-07  1:15 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2013-02-07  1:15 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------

IB regression fixes for 3.8:
 - Fix mlx4 VFs not working on old guests because of 64B CQE changes
 - Fix ill-considered sparse fix for qib
 - Fix IPoIB crash due to skb double destruct introduced in 3.8-rc1

----------------------------------------------------------------
Mike Marciniszyn (1):
      IB/qib: Fix for broken sparse warning fix

Or Gerlitz (1):
      mlx4_core: Fix advertisement of wrong PF context behaviour

Roland Dreier (1):
      Merge branches 'ipoib', 'mlx4' and 'qib' into for-next

Shlomo Pongratz (1):
      IPoIB: Fix crash due to skb double destruct

 drivers/infiniband/hw/qib/qib_qp.c        | 11 +++--------
 drivers/infiniband/ulp/ipoib/ipoib_cm.c   |  6 +++---
 drivers/infiniband/ulp/ipoib/ipoib_ib.c   |  6 +++---
 drivers/net/ethernet/mellanox/mlx4/main.c |  2 +-
 4 files changed, 10 insertions(+), 15 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2012-12-21 21:42 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2012-12-21 21:42 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-rdma

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------

Second batch of InfiniBand/RDMA changes for 3.8:
 - cxgb4 changes to fix lookup engine hash collisions
 - mlx4 changes to make flow steering usable
 - fix to IPoIB to avoid pinning dst reference for too long

----------------------------------------------------------------
Hadar Hen Zion (2):
      mlx4_core: Add QPN enforcement for flow steering rules set by VFs
      mlx4_core: Fix error flow in the flow steering wrapper

Jack Morgenstein (2):
      mlx4_core: Adjustments to Flow Steering activation logic for SR-IOV
      mlx4_core: Allow choosing flow steering mode

Roland Dreier (2):
      IPoIB: Call skb_dst_drop() once skb is enqueued for sending
      Merge branches 'cxgb4', 'ipoib' and 'mlx4' into for-next

Vipul Pandya (5):
      cxgb4: Add T4 filter support
      cxgb4: Add LE hash collision bug fix path in LLD driver
      RDMA/cxgb4: Fix LE hash collision bug for active open connection
      RDMA/cxgb4: Fix LE hash collision bug for passive open connection
      RDMA/cxgb4: Fix bug for active and passive LE hash collision path

 drivers/infiniband/hw/cxgb4/cm.c                   | 791 ++++++++++++++++++---
 drivers/infiniband/hw/cxgb4/device.c               | 210 +++++-
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h             |  33 +
 drivers/infiniband/ulp/ipoib/ipoib_cm.c            |   3 +
 drivers/infiniband/ulp/ipoib/ipoib_ib.c            |   3 +-
 drivers/net/ethernet/chelsio/cxgb4/cxgb4.h         | 136 ++++
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c    | 459 +++++++++++-
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.h     |  23 +-
 drivers/net/ethernet/chelsio/cxgb4/l2t.c           |  32 +
 drivers/net/ethernet/chelsio/cxgb4/l2t.h           |   3 +
 drivers/net/ethernet/chelsio/cxgb4/t4_hw.c         |  22 +-
 drivers/net/ethernet/chelsio/cxgb4/t4_msg.h        |  66 ++
 drivers/net/ethernet/chelsio/cxgb4/t4_regs.h       |  37 +
 drivers/net/ethernet/chelsio/cxgb4/t4fw_api.h      | 418 +++++++++++
 drivers/net/ethernet/mellanox/mlx4/fw.c            |  15 +-
 drivers/net/ethernet/mellanox/mlx4/fw.h            |   1 +
 drivers/net/ethernet/mellanox/mlx4/main.c          | 115 ++-
 drivers/net/ethernet/mellanox/mlx4/mcg.c           |   7 +-
 drivers/net/ethernet/mellanox/mlx4/mlx4.h          |   6 +-
 .../net/ethernet/mellanox/mlx4/resource_tracker.c  |  28 +-
 drivers/scsi/csiostor/t4fw_api_stor.h              |  39 -
 include/linux/mlx4/device.h                        |   1 +
 22 files changed, 2234 insertions(+), 214 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2012-12-14 15:36   ` Linus Torvalds
@ 2012-12-14 23:57     ` Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2012-12-14 23:57 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: LKML, linux-rdma

On Fri, Dec 14, 2012 at 7:36 AM, Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>> Any problem with this tree, or did it just slip through the cracks?
>
> It was merged seven hours before your email. Forgot to check?

No, just dumb-assery in how I fetched in one place and checked in
another.  Sorry.

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2012-12-14  9:56 ` Roland Dreier
@ 2012-12-14 15:36   ` Linus Torvalds
  2012-12-14 23:57     ` Roland Dreier
  0 siblings, 1 reply; 223+ messages in thread
From: Linus Torvalds @ 2012-12-14 15:36 UTC (permalink / raw)
  To: Roland Dreier; +Cc: LKML, linux-rdma

On Fri, Dec 14, 2012 at 1:56 AM, Roland Dreier <roland@kernel.org> wrote:
>
> Any problem with this tree, or did it just slip through the cracks?

It was merged seven hours before your email. Forgot to check?

          Linus

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2012-12-11  5:59 Roland Dreier
@ 2012-12-14  9:56 ` Roland Dreier
  2012-12-14 15:36   ` Linus Torvalds
  0 siblings, 1 reply; 223+ messages in thread
From: Roland Dreier @ 2012-12-14  9:56 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: LKML, linux-rdma

On Mon, Dec 10, 2012 at 9:59 PM, Roland Dreier <roland@kernel.org> wrote:
> Hi Linus,
>
> Please pull from
>
>     git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

Hi Linus,

Any problem with this tree, or did it just slip through the cracks?

Thanks,
  Roland

> ----------------------------------------------------------------
>
> First batch of InfiniBand/RDMA changes for the 3.8 merge window:
>  - A good chunk of Bart Van Assche's SRP fixes
>  - UAPI disintegration from David Howells
>  - mlx4 support for "64-byte CQE" hardware feature from Or Gerlitz
>  - Other miscellaneous fixes
>
> ----------------------------------------------------------------
> Alan Cox (2):
>       IB/ipath: Remove unreachable code
>       RDMA/amsol1100: Fix missing break
>
> Bart Van Assche (14):
>       IB/srp: Increase block layer timeout
>       IB/srp: Eliminate state SRP_TARGET_CONNECTING
>       IB/srp: Keep processing commands during host removal
>       IB/srp: Simplify SCSI error handling
>       IB/srp: Introduce srp_handle_qp_err()
>       IB/srp: Process all error completions
>       IB/srp: Suppress superfluous error messages
>       IB/srp: Introduce the helper function srp_remove_target()
>       IB/srp: Eliminate state SRP_TARGET_DEAD
>       IB/srp: Document sysfs attributes
>       srp_transport: Fix attribute registration
>       srp_transport: Simplify attribute initialization code
>       srp_transport: Document sysfs attributes
>       IB/srp: Allow SRP disconnect through sysfs
>
> David Howells (1):
>       UAPI: (Scripted) Disintegrate include/rdma
>
> Ishai Rabinovitz (1):
>       IB/srp: destroy and recreate QP and CQs when reconnecting
>
> Jack Morgenstein (2):
>       IB/mlx4: Fix spinlock order to avoid lockdep warnings
>       mlx4_core: Fix potential deadlock in mlx4_eq_int()
>
> Julia Lawall (3):
>       RDMA/nes: Use WARN()
>       RDMA/cxgb4: use WARN
>       RDMA/cxgb3: use WARN
>
> Or Gerlitz (1):
>       mlx4: 64-byte CQE/EQE support
>
> Roland Dreier (4):
>       Merge branches 'cxgb4', 'misc', 'mlx4', 'nes' and 'uapi' into for-next
>       Merge branches 'cma' and 'mlx4' into for-next
>       Merge branch 'srp' into for-next
>       Merge branch 'nes' into for-next
>
> Tatyana Nikolova (7):
>       RDMA/nes: Fix incorrect address of IP header
>       RDMA/nes: Fix for unlinking skbs from empty list
>       RDMA/nes: Fix for sending fpdus in order to hardware
>       RDMA/nes: Fix for incorrect multicast address in the perfect filter table
>       RDMA/nes: Fix for BUG_ON due to adding already-pending timer
>       RDMA/nes: Fix for terminate timer crash
>       RDMA/nes: Fix for crash when registering zero length MR for CQ
>
> Vu Pham (1):
>       IB/srp: send disconnect request without waiting for CM timewait exit
>
> shefty (1):
>       RDMA/cm: Change return value from find_gid_port()
>
>  Documentation/ABI/stable/sysfs-driver-ib_srp   |  156 ++++++++++++
>  Documentation/ABI/stable/sysfs-transport-srp   |   19 ++
>  drivers/infiniband/core/cma.c                  |    9 +-
>  drivers/infiniband/hw/amso1100/c2_ae.c         |    1 +
>  drivers/infiniband/hw/cxgb3/iwch_cm.c          |    6 +-
>  drivers/infiniband/hw/cxgb4/cm.c               |    6 +-
>  drivers/infiniband/hw/ipath/ipath_init_chip.c  |   10 -
>  drivers/infiniband/hw/mlx4/cm.c                |    4 +-
>  drivers/infiniband/hw/mlx4/cq.c                |   34 ++-
>  drivers/infiniband/hw/mlx4/main.c              |   27 +-
>  drivers/infiniband/hw/mlx4/mlx4_ib.h           |    1 +
>  drivers/infiniband/hw/mlx4/user.h              |   12 +-
>  drivers/infiniband/hw/nes/nes.h                |    1 +
>  drivers/infiniband/hw/nes/nes_cm.c             |   32 +--
>  drivers/infiniband/hw/nes/nes_hw.c             |    9 +-
>  drivers/infiniband/hw/nes/nes_mgt.c            |   42 ++--
>  drivers/infiniband/hw/nes/nes_nic.c            |   13 +-
>  drivers/infiniband/hw/nes/nes_verbs.c          |    9 +-
>  drivers/infiniband/ulp/srp/ib_srp.c            |  314 ++++++++++++++----------
>  drivers/infiniband/ulp/srp/ib_srp.h            |   11 +-
>  drivers/net/ethernet/mellanox/mlx4/cmd.c       |   11 +-
>  drivers/net/ethernet/mellanox/mlx4/en_cq.c     |    2 +-
>  drivers/net/ethernet/mellanox/mlx4/en_netdev.c |    1 +
>  drivers/net/ethernet/mellanox/mlx4/en_rx.c     |    5 +-
>  drivers/net/ethernet/mellanox/mlx4/en_tx.c     |    5 +-
>  drivers/net/ethernet/mellanox/mlx4/eq.c        |   36 ++-
>  drivers/net/ethernet/mellanox/mlx4/fw.c        |   30 ++-
>  drivers/net/ethernet/mellanox/mlx4/fw.h        |    1 +
>  drivers/net/ethernet/mellanox/mlx4/main.c      |   38 ++-
>  drivers/net/ethernet/mellanox/mlx4/mlx4_en.h   |    1 +
>  drivers/scsi/scsi_transport_srp.c              |   51 ++--
>  include/linux/mlx4/device.h                    |   21 ++
>  include/rdma/Kbuild                            |    6 -
>  include/rdma/rdma_netlink.h                    |   36 +--
>  include/scsi/scsi_transport_srp.h              |    8 +
>  include/uapi/rdma/Kbuild                       |    6 +
>  include/{ => uapi}/rdma/ib_user_cm.h           |    0
>  include/{ => uapi}/rdma/ib_user_mad.h          |    0
>  include/{ => uapi}/rdma/ib_user_sa.h           |    0
>  include/{ => uapi}/rdma/ib_user_verbs.h        |    0
>  include/uapi/rdma/rdma_netlink.h               |   37 +++
>  include/{ => uapi}/rdma/rdma_user_cm.h         |    0
>  42 files changed, 689 insertions(+), 322 deletions(-)
>  create mode 100644 Documentation/ABI/stable/sysfs-driver-ib_srp
>  create mode 100644 Documentation/ABI/stable/sysfs-transport-srp
>  rename include/{ => uapi}/rdma/ib_user_cm.h (100%)
>  rename include/{ => uapi}/rdma/ib_user_mad.h (100%)
>  rename include/{ => uapi}/rdma/ib_user_sa.h (100%)
>  rename include/{ => uapi}/rdma/ib_user_verbs.h (100%)
>  create mode 100644 include/uapi/rdma/rdma_netlink.h
>  rename include/{ => uapi}/rdma/rdma_user_cm.h (100%)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2012-12-11  5:59 Roland Dreier
  2012-12-14  9:56 ` Roland Dreier
  0 siblings, 1 reply; 223+ messages in thread
From: Roland Dreier @ 2012-12-11  5:59 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-rdma

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------

First batch of InfiniBand/RDMA changes for the 3.8 merge window:
 - A good chunk of Bart Van Assche's SRP fixes
 - UAPI disintegration from David Howells
 - mlx4 support for "64-byte CQE" hardware feature from Or Gerlitz
 - Other miscellaneous fixes

----------------------------------------------------------------
Alan Cox (2):
      IB/ipath: Remove unreachable code
      RDMA/amsol1100: Fix missing break

Bart Van Assche (14):
      IB/srp: Increase block layer timeout
      IB/srp: Eliminate state SRP_TARGET_CONNECTING
      IB/srp: Keep processing commands during host removal
      IB/srp: Simplify SCSI error handling
      IB/srp: Introduce srp_handle_qp_err()
      IB/srp: Process all error completions
      IB/srp: Suppress superfluous error messages
      IB/srp: Introduce the helper function srp_remove_target()
      IB/srp: Eliminate state SRP_TARGET_DEAD
      IB/srp: Document sysfs attributes
      srp_transport: Fix attribute registration
      srp_transport: Simplify attribute initialization code
      srp_transport: Document sysfs attributes
      IB/srp: Allow SRP disconnect through sysfs

David Howells (1):
      UAPI: (Scripted) Disintegrate include/rdma

Ishai Rabinovitz (1):
      IB/srp: destroy and recreate QP and CQs when reconnecting

Jack Morgenstein (2):
      IB/mlx4: Fix spinlock order to avoid lockdep warnings
      mlx4_core: Fix potential deadlock in mlx4_eq_int()

Julia Lawall (3):
      RDMA/nes: Use WARN()
      RDMA/cxgb4: use WARN
      RDMA/cxgb3: use WARN

Or Gerlitz (1):
      mlx4: 64-byte CQE/EQE support

Roland Dreier (4):
      Merge branches 'cxgb4', 'misc', 'mlx4', 'nes' and 'uapi' into for-next
      Merge branches 'cma' and 'mlx4' into for-next
      Merge branch 'srp' into for-next
      Merge branch 'nes' into for-next

Tatyana Nikolova (7):
      RDMA/nes: Fix incorrect address of IP header
      RDMA/nes: Fix for unlinking skbs from empty list
      RDMA/nes: Fix for sending fpdus in order to hardware
      RDMA/nes: Fix for incorrect multicast address in the perfect filter table
      RDMA/nes: Fix for BUG_ON due to adding already-pending timer
      RDMA/nes: Fix for terminate timer crash
      RDMA/nes: Fix for crash when registering zero length MR for CQ

Vu Pham (1):
      IB/srp: send disconnect request without waiting for CM timewait exit

shefty (1):
      RDMA/cm: Change return value from find_gid_port()

 Documentation/ABI/stable/sysfs-driver-ib_srp   |  156 ++++++++++++
 Documentation/ABI/stable/sysfs-transport-srp   |   19 ++
 drivers/infiniband/core/cma.c                  |    9 +-
 drivers/infiniband/hw/amso1100/c2_ae.c         |    1 +
 drivers/infiniband/hw/cxgb3/iwch_cm.c          |    6 +-
 drivers/infiniband/hw/cxgb4/cm.c               |    6 +-
 drivers/infiniband/hw/ipath/ipath_init_chip.c  |   10 -
 drivers/infiniband/hw/mlx4/cm.c                |    4 +-
 drivers/infiniband/hw/mlx4/cq.c                |   34 ++-
 drivers/infiniband/hw/mlx4/main.c              |   27 +-
 drivers/infiniband/hw/mlx4/mlx4_ib.h           |    1 +
 drivers/infiniband/hw/mlx4/user.h              |   12 +-
 drivers/infiniband/hw/nes/nes.h                |    1 +
 drivers/infiniband/hw/nes/nes_cm.c             |   32 +--
 drivers/infiniband/hw/nes/nes_hw.c             |    9 +-
 drivers/infiniband/hw/nes/nes_mgt.c            |   42 ++--
 drivers/infiniband/hw/nes/nes_nic.c            |   13 +-
 drivers/infiniband/hw/nes/nes_verbs.c          |    9 +-
 drivers/infiniband/ulp/srp/ib_srp.c            |  314 ++++++++++++++----------
 drivers/infiniband/ulp/srp/ib_srp.h            |   11 +-
 drivers/net/ethernet/mellanox/mlx4/cmd.c       |   11 +-
 drivers/net/ethernet/mellanox/mlx4/en_cq.c     |    2 +-
 drivers/net/ethernet/mellanox/mlx4/en_netdev.c |    1 +
 drivers/net/ethernet/mellanox/mlx4/en_rx.c     |    5 +-
 drivers/net/ethernet/mellanox/mlx4/en_tx.c     |    5 +-
 drivers/net/ethernet/mellanox/mlx4/eq.c        |   36 ++-
 drivers/net/ethernet/mellanox/mlx4/fw.c        |   30 ++-
 drivers/net/ethernet/mellanox/mlx4/fw.h        |    1 +
 drivers/net/ethernet/mellanox/mlx4/main.c      |   38 ++-
 drivers/net/ethernet/mellanox/mlx4/mlx4_en.h   |    1 +
 drivers/scsi/scsi_transport_srp.c              |   51 ++--
 include/linux/mlx4/device.h                    |   21 ++
 include/rdma/Kbuild                            |    6 -
 include/rdma/rdma_netlink.h                    |   36 +--
 include/scsi/scsi_transport_srp.h              |    8 +
 include/uapi/rdma/Kbuild                       |    6 +
 include/{ => uapi}/rdma/ib_user_cm.h           |    0
 include/{ => uapi}/rdma/ib_user_mad.h          |    0
 include/{ => uapi}/rdma/ib_user_sa.h           |    0
 include/{ => uapi}/rdma/ib_user_verbs.h        |    0
 include/uapi/rdma/rdma_netlink.h               |   37 +++
 include/{ => uapi}/rdma/rdma_user_cm.h         |    0
 42 files changed, 689 insertions(+), 322 deletions(-)
 create mode 100644 Documentation/ABI/stable/sysfs-driver-ib_srp
 create mode 100644 Documentation/ABI/stable/sysfs-transport-srp
 rename include/{ => uapi}/rdma/ib_user_cm.h (100%)
 rename include/{ => uapi}/rdma/ib_user_mad.h (100%)
 rename include/{ => uapi}/rdma/ib_user_sa.h (100%)
 rename include/{ => uapi}/rdma/ib_user_verbs.h (100%)
 create mode 100644 include/uapi/rdma/rdma_netlink.h
 rename include/{ => uapi}/rdma/rdma_user_cm.h (100%)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2012-10-26 19:55 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2012-10-26 19:55 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------

Small batch of fixes for 3.7:
 - Fix crash in error path in cxgb4
 - Fix build error on 32 bits in mlx4
 - Fix SR-IOV bugs in mlx4

----------------------------------------------------------------
Dotan Barak (1):
      mlx4_core: Perform correct resource cleanup if mlx4_QUERY_ADAPTER() fails

Doug Ledford (1):
      IB/mlx4: Fix build error on platforms where UL is not 64 bits

Eli Cohen (1):
      IB/mlx4: Synchronize cleanup of MCGs in MCG paravirtualization

Jack Morgenstein (1):
      IB/mlx4: Fix QP1 P_Key processing in the Primary Physical Function (PPF)

Or Gerlitz (1):
      mlx4_core: Remove annoying debug messages from SR-IOV flow

Roland Dreier (1):
      Merge branches 'cxgb4' and 'mlx4' into for-next

Thadeu Lima de Souza Cascardo (1):
      RDMA/cxgb4: Don't free chunk that we have failed to allocate

 drivers/infiniband/hw/cxgb4/mem.c                  |    2 +-
 drivers/infiniband/hw/mlx4/alias_GUID.c            |    2 +-
 drivers/infiniband/hw/mlx4/mad.c                   |   85 +++++++++-----------
 drivers/infiniband/hw/mlx4/mcg.c                   |   18 +++--
 drivers/net/ethernet/mellanox/mlx4/eq.c            |    6 --
 drivers/net/ethernet/mellanox/mlx4/main.c          |    5 +-
 .../net/ethernet/mellanox/mlx4/resource_tracker.c  |    6 --
 7 files changed, 56 insertions(+), 68 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2012-10-05  2:20 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2012-10-05  2:20 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------

Second batch of changes for the 3.7 merge window:
 - Late-breaking fix for IPoIB on mlx4 SR-IOV VFs.
 - Fix for IPoIB build breakage with CONFIG_INFINIBAND_IPOIB_CM=n
   (new netlink config changes are to blame).
 - Make sure retry count values are in range in RDMA CM.
 - A few nes hardware driver fixes and cleanups.
 - Have iSER initiator use >1 interrupt vectors if available.

----------------------------------------------------------------
Alex Tabachnik (1):
      IB/iser: Add more RX CQs to scale out processing of SCSI responses

Jack Morgenstein (1):
      mlx4_core: Adjust flow steering attach wrapper so that IB works on SR-IOV VFs

Roland Dreier (2):
      IPoIB: Fix build with CONFIG_INFINIBAND_IPOIB_CM=n
      Merge branches 'cma', 'ipoib', 'iser', 'mlx4' and 'nes' into for-next

Sean Hefty (1):
      RDMA/cma: Check that retry count values are in range

Tatyana Nikolova (4):
      RDMA/nes: Add missing break to switch.
      RDMA/nes: Remove unnecessary if-else statement
      RDMA/nes: Remove unused module parameter "send_first"
      RDMA/nes: Bump the version number of nes driver

 drivers/infiniband/core/cma.c                      |    6 +-
 drivers/infiniband/hw/nes/nes.c                    |    5 -
 drivers/infiniband/hw/nes/nes.h                    |    3 +-
 drivers/infiniband/hw/nes/nes_verbs.c              |   16 +--
 drivers/infiniband/ulp/ipoib/ipoib.h               |    4 +-
 drivers/infiniband/ulp/ipoib/ipoib_cm.c            |   31 -----
 drivers/infiniband/ulp/ipoib/ipoib_main.c          |   31 +++++
 drivers/infiniband/ulp/iser/iscsi_iser.h           |   17 ++-
 drivers/infiniband/ulp/iser/iser_verbs.c           |  130 ++++++++++++++------
 .../net/ethernet/mellanox/mlx4/resource_tracker.c  |    2 +
 10 files changed, 146 insertions(+), 99 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2012-10-02 16:08 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2012-10-02 16:08 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-rdma

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------

First batch of InfiniBand/RDMA changes for the 3.7 merge window:
 - mlx4 IB support for SR-IOV
 - A couple of SRP initiator fixes
 - Batch of nes hardware driver fixes
 - Fix for long-standing use-after-free crash in IPoIB
 - Other miscellaneous fixes

----------------------------------------------------------------
Amir Vadai (1):
      IB/mlx4: Add CM paravirtualization

Bart Van Assche (2):
      IB/srp: Fix use-after-free in srp_reset_req()
      IB/srp: Avoid having aborted requests hang

Dean Luick (1):
      IB/qib: Add a qib driver version

Dotan Barak (4):
      IB/core: Remove unused variables in ucm/ucma
      RDMA/cma: Use consistent component mask for IPoIB port space multicast joins
      IB/mlx4: Fill in sq_sig_type in query QP
      mlx4_core: Fix wrong offset in parsing query device caps response

Emil Goode (1):
      RDMA/cxgb4: Fix error handling in create_qp()

Jack Morgenstein (20):
      IB/core: Reserve bits in enum ib_qp_create_flags for low-level driver use
      IB/core: Handle table with full and partial membership for the same P_Key
      IB/core: Add ib_find_exact_cached_pkey()
      IB/mlx4: SR-IOV IB context objects and proxy/tunnel SQP support
      mlx4_core: Add proxy and tunnel QPs to the reserved QP area
      IB/mlx4: Initialize SR-IOV IB support for slaves in master context
      mlx4: Implement QP paravirtualization and maintain phys_pkey_cache for smp_snoop
      IB/mlx4: SR-IOV multiplex and demultiplex MADs
      mlx4: MAD_IFC paravirtualization
      mlx4_core: Add IB port-state machine and port mgmt event propagation
      mlx4: Add alias_guid mechanism
      IB/mlx4: Propagate P_Key and guid change port management events to slaves
      IB/mlx4: Add iov directory in sysfs under the ib device
      net/mlx4_core: Adjustments to SET_PORT for IB SR-IOV
      mlx4_core: INIT/CLOSE port logic for IB ports in SR-IOV mode
      IB/mlx4: Miscellaneous adjustments for SR-IOV IB support
      mlx4: Activate SR-IOV mode for IB
      mlx4: Paravirtualize Node Guids for slaves
      mlx4: Modify proxy/tunnel QP mechanism so that guests do no calculations
      IB/mlx4: Create paravirt contexts for VFs when master IB driver initializes

Mike Marciniszyn (1):
      IB/qib: Fix local access validation for user MRs

Or Gerlitz (1):
      mlx4_core: Remove annoying debug message in the resource tracker

Oren Duer (1):
      IB/mlx4: Add multicast group (MCG) paravirtualization for SR-IOV

Patrick McHardy (1):
      IPoIB: Fix use-after-free of multicast object

Roland Dreier (7):
      mlx4_core: Trivial readability fix: "0X30" -> "0x30"
      mlx4_core: Trivial cleanups to driver log messages
      mlx4_core: Fix crash on uninitialized priv->cmd.slave_sem
      mlx4_core: Stash PCI ID driver_data in mlx4_priv structure
      mlx4_core: Clean up enabling of SENSE_PORT for older (ConnectX-1/-2) HCAs
      mlx4_core: Disable SENSE_PORT for multifunction devices
      Merge branches 'cma', 'cxgb4', 'ipoib', 'mlx4', 'mlx4-sriov', 'nes', 'qib' and 'srp' into for-linus

Tatyana Nikolova (6):
      RDMA/nes: Fix incorrect resolving of the loopback MAC address
      RDMA/nes: Fix for incorrect MSS when TSO is on
      RDMA/nes: Cosmetic changes
      RDMA/nes: Fix for crash when TX checksum offload is off
      RDMA/nes: Print hardware resource type
      RDMA/nes: Fix compilation error when nes_debug is enabled

 drivers/infiniband/core/cache.c                    |   43 +-
 drivers/infiniband/core/cma.c                      |    5 +-
 drivers/infiniband/core/device.c                   |   16 +-
 drivers/infiniband/core/ucm.c                      |    1 -
 drivers/infiniband/core/ucma.c                     |    1 -
 drivers/infiniband/hw/cxgb4/qp.c                   |   62 +-
 drivers/infiniband/hw/mlx4/Makefile                |    2 +-
 drivers/infiniband/hw/mlx4/alias_GUID.c            |  688 +++++++++
 drivers/infiniband/hw/mlx4/cm.c                    |  437 ++++++
 drivers/infiniband/hw/mlx4/cq.c                    |   31 +-
 drivers/infiniband/hw/mlx4/mad.c                   | 1573 +++++++++++++++++++-
 drivers/infiniband/hw/mlx4/main.c                  |  273 +++-
 drivers/infiniband/hw/mlx4/mcg.c                   | 1254 ++++++++++++++++
 drivers/infiniband/hw/mlx4/mlx4_ib.h               |  341 ++++-
 drivers/infiniband/hw/mlx4/qp.c                    |  660 +++++++-
 drivers/infiniband/hw/mlx4/sysfs.c                 |  794 ++++++++++
 drivers/infiniband/hw/nes/nes.h                    |   15 +-
 drivers/infiniband/hw/nes/nes_cm.c                 |   34 +-
 drivers/infiniband/hw/nes/nes_hw.c                 |    4 +-
 drivers/infiniband/hw/nes/nes_nic.c                |   40 +-
 drivers/infiniband/hw/nes/nes_utils.c              |    2 +-
 drivers/infiniband/hw/nes/nes_verbs.c              |   14 +-
 drivers/infiniband/hw/qib/qib_common.h             |   14 +-
 drivers/infiniband/hw/qib/qib_driver.c             |    3 +-
 drivers/infiniband/hw/qib/qib_keys.c               |    5 +-
 drivers/infiniband/hw/qib/qib_verbs.c              |    2 +-
 drivers/infiniband/ulp/ipoib/ipoib_main.c          |    2 +-
 drivers/infiniband/ulp/ipoib/ipoib_multicast.c     |   19 +-
 drivers/infiniband/ulp/srp/ib_srp.c                |    3 +-
 drivers/net/ethernet/mellanox/mlx4/cmd.c           |  242 ++-
 drivers/net/ethernet/mellanox/mlx4/eq.c            |  245 ++-
 drivers/net/ethernet/mellanox/mlx4/fw.c            |  246 ++-
 drivers/net/ethernet/mellanox/mlx4/fw.h            |   11 +-
 drivers/net/ethernet/mellanox/mlx4/main.c          |  171 ++-
 drivers/net/ethernet/mellanox/mlx4/mlx4.h          |   59 +-
 drivers/net/ethernet/mellanox/mlx4/port.c          |   10 +
 drivers/net/ethernet/mellanox/mlx4/qp.c            |  100 +-
 .../net/ethernet/mellanox/mlx4/resource_tracker.c  |  222 ++-
 include/linux/mlx4/device.h                        |   69 +-
 include/linux/mlx4/driver.h                        |    2 +
 include/linux/mlx4/qp.h                            |    3 +-
 include/rdma/ib_cache.h                            |   16 +
 include/rdma/ib_verbs.h                            |    3 +
 43 files changed, 7289 insertions(+), 448 deletions(-)
 create mode 100644 drivers/infiniband/hw/mlx4/alias_GUID.c
 create mode 100644 drivers/infiniband/hw/mlx4/cm.c
 create mode 100644 drivers/infiniband/hw/mlx4/mcg.c
 create mode 100644 drivers/infiniband/hw/mlx4/sysfs.c

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2012-09-17 15:57 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2012-09-17 15:57 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-rdma

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------

Last set of InfiniBand/RDMA fixes for 3.6:
 - Couple more IPoIB fixes for regressions introduced by path database conversion
 - Minor other fixes to low-level drivers (cxgb4, mlx4, qib, ocrdma)

----------------------------------------------------------------
Mike Marciniszyn (1):
      IB/qib: Fix failure of compliance test C14-024#06_LocalPortNum

Parav Pandit (1):
      RDMA/ocrdma: Fix CQE expansion of unsignaled WQE

Roland Dreier (1):
      Merge branches 'cxgb4', 'ipoib', 'mlx4', 'ocrdma' and 'qib' into for-next

Shlomo Pongratz (2):
      IPoIB: Fix memory leak in the neigh table deletion flow
      IPoIB: Fix AB-BA deadlock when deleting neighbours

Wei Yongjun (1):
      RDMA/cxgb4: Move dereference below NULL test

Yishai Hadas (1):
      mlx4_core: Fix integer overflows so 8TBs of memory registration works

 drivers/infiniband/hw/cxgb4/cm.c               |    2 +-
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c    |    8 +-
 drivers/infiniband/hw/qib/qib_mad.c            |    3 +-
 drivers/infiniband/ulp/ipoib/ipoib.h           |    5 +-
 drivers/infiniband/ulp/ipoib/ipoib_main.c      |   93 +++++++++++-------------
 drivers/infiniband/ulp/ipoib/ipoib_multicast.c |    2 -
 drivers/net/ethernet/mellanox/mlx4/icm.c       |   30 +++++---
 drivers/net/ethernet/mellanox/mlx4/icm.h       |   10 +--
 8 files changed, 78 insertions(+), 75 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2012-08-17 18:38 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2012-08-17 18:38 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------

Grab bag of InfiniBand/RDMA fixes:
 - IPoIB fixes for regressions introduced by path database conversion
 - mlx4 fixes for bugs with large memory systems and regressions from SR-IOV patches
 - RDMA CM fix for passing bad event up to userspace
 - Other minor fixes

----------------------------------------------------------------
Bart Van Assche (1):
      IB/srp: Fix a race condition

Jack Morgenstein (1):
      IB/mlx4: Fix possible deadlock on sm_lock spinlock

Julia Lawall (1):
      IB/qib: Fix error return code in qib_init_7322_variables()

Kleber Sacilotto de Souza (1):
      IB/mlx4: Check iboe netdev pointer before dereferencing it

Masanari Iida (1):
      IB: Fix typos in infiniband drivers

Roland Dreier (3):
      RDMA/ocrdma: Don't call vlan_dev_real_dev() for non-VLAN netdevs
      mlx4_core: Clean up buddy bitmap allocation
      Merge branches 'cma', 'ipoib', 'misc', 'mlx4', 'ocrdma', 'qib' and 'srp' into for-next

Shlomo Pongratz (2):
      IB/ipoib: Add missing locking when CM object is deleted
      IB/ipoib: Fix RCU pointer dereference of wrong object

Tatyana Nikolova (1):
      RDMA/ucma.c: Fix for events with wrong context on iWARP

Yishai Hadas (2):
      mlx4_core: Allow large mlx4_buddy bitmaps
      mlx4_core: Fix integer overflow issues around MTT table

 drivers/infiniband/core/ucma.c               |    2 +-
 drivers/infiniband/hw/amso1100/c2_rnic.c     |    2 +-
 drivers/infiniband/hw/cxgb3/iwch_cm.c        |    2 +-
 drivers/infiniband/hw/mlx4/mad.c             |   16 +++--
 drivers/infiniband/hw/mlx4/main.c            |    5 +-
 drivers/infiniband/hw/mlx4/qp.c              |    6 +-
 drivers/infiniband/hw/ocrdma/ocrdma_main.c   |   16 ++---
 drivers/infiniband/hw/qib/qib_iba7322.c      |    4 +-
 drivers/infiniband/hw/qib/qib_sd7220.c       |    2 +-
 drivers/infiniband/ulp/ipoib/ipoib_cm.c      |    3 +
 drivers/infiniband/ulp/ipoib/ipoib_main.c    |    2 +-
 drivers/infiniband/ulp/srp/ib_srp.c          |   87 +++++++++++++++++++-------
 drivers/infiniband/ulp/srpt/ib_srpt.c        |    2 +-
 drivers/net/ethernet/mellanox/mlx4/icm.c     |    9 ++-
 drivers/net/ethernet/mellanox/mlx4/icm.h     |    2 +-
 drivers/net/ethernet/mellanox/mlx4/mlx4.h    |    4 +-
 drivers/net/ethernet/mellanox/mlx4/mr.c      |   27 +++++---
 drivers/net/ethernet/mellanox/mlx4/profile.c |    4 +-
 18 files changed, 130 insertions(+), 65 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2012-07-23 16:17 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2012-07-23 16:17 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-3.6

----------------------------------------------------------------

InfiniBand/RDMA changes for the 3.6 merge window:
 - Updates to the qib low-level driver
 - First chunk of changes for SR-IOV support for mlx4 IB
 - RDMA CM support for IPv6-only binding
 - Other misc cleanups and fixes

----------------------------------------------------------------
Betty Dall (1):
      IB/qib: Fix an incorrect log message

Dotan Barak (6):
      IB/mthca: Warning about event for non-existent QPs should show event type
      IB/mthca: Fill in sq_sig_type in query QP
      IB/mlx4: Fill the masked_atomic_cap attribute in query device
      mlx4_core: Remove double function declarations
      IB/cm: Destroy idr as part of the module init error flow
      net/mlx4_core: Free ICM table in case of error

Erez Shitrit (1):
      IB/sa: Add GuidInfoRecord query support

Jack Morgenstein (8):
      mlx4_core: Pass an invalid PCI id number to VFs
      IB/mlx4: Add debug prints
      IB/core: Move CM_xxx_ATTR_ID macros from cm_msgs.h to ib_cm.h
      mlx4: Use port management change event instead of smp_snoop
      net/mlx4_core: Initialize IB port capabilities for all slaves
      mlx4_core: Implement mechanism for reserved Q_Keys
      mlx4_core: Allow guests to have IB ports
      mlx4: Put physical GID and P_Key table sizes in mlx4_phys_caps struct and paravirtualize them

Mike Marciniszyn (8):
      IB/qib: Fix UC MR refs for immediate operations
      IB/qib: Avoid returning EBUSY from MR deregister
      IB/qib: RCU locking for MR validation
      IB/qib: Fix sparse RCU warnings in qib_keys.c
      IB/qib: Fix QP RCU sparse warnings
      IB/qib: Reduce sdma_lock contention
      IB/qib: Add congestion control agent implementation
      IB/qib: checkpatch fixes

Roland Dreier (4):
      RDMA/ocrdma: Fix assignment of max_srq_sge in device query
      RDMA/cxgb4: Fix endianness of addition to mpa->private_data_size
      IB: Use IS_ENABLED(CONFIG_IPV6)
      Merge branches 'cma', 'cxgb4', 'misc', 'mlx4-sriov', 'mlx-cleanups', 'ocrdma' and 'qib' into for-linus

Sean Hefty (3):
      RDMA/cma: Bind to a specific address family
      RDMA/cma: Listen on specific address family
      RDMA/cma: Allow user to restrict listens to bound address family

 drivers/infiniband/core/addr.c               |    4 +-
 drivers/infiniband/core/cm.c                 |   16 +-
 drivers/infiniband/core/cm_msgs.h            |   12 -
 drivers/infiniband/core/cma.c                |   77 ++++--
 drivers/infiniband/core/sa_query.c           |  133 +++++++++++
 drivers/infiniband/core/ucma.c               |    7 +
 drivers/infiniband/hw/cxgb4/cm.c             |   12 +-
 drivers/infiniband/hw/mlx4/mad.c             |  141 ++++++++---
 drivers/infiniband/hw/mlx4/main.c            |   33 ++-
 drivers/infiniband/hw/mlx4/mlx4_ib.h         |   19 ++
 drivers/infiniband/hw/mlx4/qp.c              |   27 ++-
 drivers/infiniband/hw/mthca/mthca_qp.c       |    4 +-
 drivers/infiniband/hw/ocrdma/ocrdma_main.c   |    7 +-
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c  |    2 +-
 drivers/infiniband/hw/qib/qib.h              |   45 +++-
 drivers/infiniband/hw/qib/qib_diag.c         |   13 +-
 drivers/infiniband/hw/qib/qib_driver.c       |   15 +-
 drivers/infiniband/hw/qib/qib_eeprom.c       |   41 ++--
 drivers/infiniband/hw/qib/qib_file_ops.c     |   63 ++---
 drivers/infiniband/hw/qib/qib_fs.c           |   21 +-
 drivers/infiniband/hw/qib/qib_iba6120.c      |   91 +++----
 drivers/infiniband/hw/qib/qib_iba7220.c      |   92 ++++----
 drivers/infiniband/hw/qib/qib_iba7322.c      |  160 +++++++------
 drivers/infiniband/hw/qib/qib_init.c         |  238 +++++++++++++++----
 drivers/infiniband/hw/qib/qib_intr.c         |    8 +-
 drivers/infiniband/hw/qib/qib_keys.c         |  152 +++++++-----
 drivers/infiniband/hw/qib/qib_mad.c          |  327 +++++++++++++++++++++++++-
 drivers/infiniband/hw/qib/qib_mad.h          |  198 +++++++++++++++-
 drivers/infiniband/hw/qib/qib_mr.c           |  247 ++++++++++---------
 drivers/infiniband/hw/qib/qib_pcie.c         |   25 +-
 drivers/infiniband/hw/qib/qib_qp.c           |   56 +++--
 drivers/infiniband/hw/qib/qib_rc.c           |   24 +-
 drivers/infiniband/hw/qib/qib_ruc.c          |   14 +-
 drivers/infiniband/hw/qib/qib_sd7220.c       |   41 ++--
 drivers/infiniband/hw/qib/qib_sdma.c         |   11 +-
 drivers/infiniband/hw/qib/qib_sysfs.c        |  246 +++++++++++++------
 drivers/infiniband/hw/qib/qib_twsi.c         |    8 +-
 drivers/infiniband/hw/qib/qib_uc.c           |   31 +--
 drivers/infiniband/hw/qib/qib_ud.c           |   12 +-
 drivers/infiniband/hw/qib/qib_verbs.c        |   66 +++++-
 drivers/infiniband/hw/qib/qib_verbs.h        |   56 +++--
 drivers/infiniband/hw/qib/qib_wc_x86_64.c    |   14 +-
 drivers/infiniband/ulp/ipoib/ipoib_cm.c      |    2 +-
 drivers/net/ethernet/mellanox/mlx4/en_main.c |    5 +-
 drivers/net/ethernet/mellanox/mlx4/eq.c      |   22 +-
 drivers/net/ethernet/mellanox/mlx4/fw.c      |  132 ++++++++---
 drivers/net/ethernet/mellanox/mlx4/icm.c     |    2 +
 drivers/net/ethernet/mellanox/mlx4/icm.h     |    6 -
 drivers/net/ethernet/mellanox/mlx4/intf.c    |    5 +-
 drivers/net/ethernet/mellanox/mlx4/main.c    |   86 +++++--
 drivers/net/ethernet/mellanox/mlx4/mlx4.h    |   67 +-----
 drivers/net/ethernet/mellanox/mlx4/port.c    |   11 +-
 include/linux/mlx4/device.h                  |  119 +++++++++-
 include/linux/mlx4/driver.h                  |    3 +-
 include/rdma/ib_cm.h                         |   12 +
 include/rdma/ib_sa.h                         |   33 +++
 include/rdma/rdma_cm.h                       |   10 +
 include/rdma/rdma_user_cm.h                  |    1 +
 58 files changed, 2414 insertions(+), 911 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* RE: [GIT PULL] please pull infiniband.git
  2012-06-24 12:09 Roland Dreier
@ 2012-06-25 14:11 ` Tziporet Koren
  0 siblings, 0 replies; 223+ messages in thread
From: Tziporet Koren @ 2012-06-25 14:11 UTC (permalink / raw)
  To: Roland Dreier, Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Roland

Can you updated us on status of review of our mlx4 SRIOV IB submission?

Thanks
Tziporet

-----Original Message-----
From: linux-rdma-owner@vger.kernel.org [mailto:linux-rdma-owner@vger.kernel.org] On Behalf Of Roland Dreier
Sent: Sunday, June 24, 2012 5:11 AM
To: Linus Torvalds
Cc: linux-rdma@vger.kernel.org; linux-kernel@vger.kernel.org
Subject: [GIT PULL] please pull infiniband.git

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-fixes

----------------------------------------------------------------

InfiniBand/RDMA fixes for 3.5-rc:
 - Fixes to new ocrdma driver
 - Typo in test in CMA

----------------------------------------------------------------
Dan Carpenter (1):
      RDMA/ocrdma: Fix off by one in ocrdma_query_gid()

Mahesh Vardhamanaiah (2):
      RDMA/ocrdma: Correct reported max queue sizes
      RDMA/ocrdma: Correct queue SGE calculation

Parav Pandit (2):
      RDMA/ocrdma: Fixed GID table for vlan and events
      RDMA/ocrdma: Fixed RQ error CQE polling

Roland Dreier (1):
      Merge branches 'cma' and 'ocrdma' into for-linus

Sean Hefty (1):
      RDMA/cma: QP type check on received REQs should be AND not OR

 drivers/infiniband/core/cma.c               |    2 +-
 drivers/infiniband/hw/ocrdma/ocrdma.h       |    1 +
 drivers/infiniband/hw/ocrdma/ocrdma_hw.c    |   18 ++++----
 drivers/infiniband/hw/ocrdma/ocrdma_main.c  |   63 +++++++++++++++------------
 drivers/infiniband/hw/ocrdma/ocrdma_sli.h   |    5 ++-
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c |   12 ++---
 6 files changed, 55 insertions(+), 46 deletions(-)
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2012-06-24 12:09 Roland Dreier
  2012-06-25 14:11 ` Tziporet Koren
  0 siblings, 1 reply; 223+ messages in thread
From: Roland Dreier @ 2012-06-24 12:09 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-fixes

----------------------------------------------------------------

InfiniBand/RDMA fixes for 3.5-rc:
 - Fixes to new ocrdma driver
 - Typo in test in CMA

----------------------------------------------------------------
Dan Carpenter (1):
      RDMA/ocrdma: Fix off by one in ocrdma_query_gid()

Mahesh Vardhamanaiah (2):
      RDMA/ocrdma: Correct reported max queue sizes
      RDMA/ocrdma: Correct queue SGE calculation

Parav Pandit (2):
      RDMA/ocrdma: Fixed GID table for vlan and events
      RDMA/ocrdma: Fixed RQ error CQE polling

Roland Dreier (1):
      Merge branches 'cma' and 'ocrdma' into for-linus

Sean Hefty (1):
      RDMA/cma: QP type check on received REQs should be AND not OR

 drivers/infiniband/core/cma.c               |    2 +-
 drivers/infiniband/hw/ocrdma/ocrdma.h       |    1 +
 drivers/infiniband/hw/ocrdma/ocrdma_hw.c    |   18 ++++----
 drivers/infiniband/hw/ocrdma/ocrdma_main.c  |   63 +++++++++++++++------------
 drivers/infiniband/hw/ocrdma/ocrdma_sli.h   |    5 ++-
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c |   12 ++---
 6 files changed, 55 insertions(+), 46 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
  2012-05-21  1:14 Roland Dreier
  2012-05-21  2:05 ` Stephen Rothwell
  2012-05-21 16:07 ` Roland Dreier
@ 2012-06-06 17:44 ` Roland Dreier
  2 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2012-06-06 17:44 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-fixes

----------------------------------------------------------------

InfiniBand/RDMA fixes for 3.5-rc2, all in hardware drivers:
 - Fix crash in cxgb4
 - Fixes to new ocrdma driver
 - Regression fixes for mlx4

----------------------------------------------------------------
Devendra Naga (1):
      RDMA/ocrdma: Remove unnecessary version.h includes

Jack Morgenstein (1):
      mlx4_core: Fix setting VL_cap in mlx4_SET_PORT wrapper flow

Parav Pandit (2):
      RDMA/ocrdma: Correct queue free count math
      RDMA/ocrdma: Fix signaled event for SRQ_LIMIT_REACHED

Roland Dreier (1):
      Merge branches 'cxgb4', 'mlx4' and 'ocrdma' into for-linus

Sagi Grimberg (1):
      IB/mlx4: Fix max_wqe capacity reported from query device

Shlomo Pongratz (1):
      IB/mlx4: Fix EQ deallocation in legacy mode

Thadeu Lima de Souza Cascardo (1):
      RDMA/cxgb4: Fix crash when peer address is 0.0.0.0

 drivers/infiniband/hw/cxgb4/cm.c            |    4 ++++
 drivers/infiniband/hw/mlx4/main.c           |   21 ++++++++-------------
 drivers/infiniband/hw/mlx4/mlx4_ib.h        |    8 ++++++++
 drivers/infiniband/hw/mlx4/qp.c             |   21 +++++++++++++++------
 drivers/infiniband/hw/ocrdma/ocrdma.h       |    1 -
 drivers/infiniband/hw/ocrdma/ocrdma_abi.h   |    5 +----
 drivers/infiniband/hw/ocrdma/ocrdma_hw.c    |    9 +--------
 drivers/infiniband/hw/ocrdma/ocrdma_main.c  |    1 -
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c |    5 -----
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.h |    1 -
 drivers/net/ethernet/mellanox/mlx4/port.c   |    4 ++--
 11 files changed, 39 insertions(+), 41 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
  2012-05-21  1:14 Roland Dreier
  2012-05-21  2:05 ` Stephen Rothwell
@ 2012-05-21 16:07 ` Roland Dreier
  2012-06-06 17:44 ` Roland Dreier
  2 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2012-05-21 16:07 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-rdma

Hi Linus,

I updated my tag with the patch to fix powerpc build breakage with the
one-liner

      RDMA/cxgb4: Include vmalloc.h for vmalloc and vfree

so the pull request now looks like the following.

Thanks,
  Roland

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-3.5

----------------------------------------------------------------

InfiniBand/RDMA changes for the 3.5 merge window:
 - Add ocrdma hardware driver for Emulex IB-over-Ethernet adapters
 - Add generic and mlx4 support for "raw" QPs: allow suitably privileged
   applications to send and receive arbitrary packets directly to/from
   the hardware
 - Add "doorbell drop" handling to the cxgb4 driver
 - A fairly large batch of qib hardware driver changes
 - A few fixes for lockdep-detected issues
 - A few other miscellaneous fixes and cleanups

----------------------------------------------------------------
Dan Carpenter (2):
      RDMA/ocrdma: Fix check for NULL instead of IS_ERR
      RDMA/ocrdma: Tiny locking cleanup

Jack Morgenstein (3):
      mlx4_core: Change bitmap allocator to work in round-robin fashion
      IB/core: Fix IB_SA_COMP_MASK macro
      IB/mlx4: Fix mlx4_ib_add() error flow

Jim Cromie (1):
      IB/ipath: Replace open-coded ARRAY_SIZE with macro

Jim Foraker (2):
      IB/qib: Fix M_Key lease timeout handling
      IB/qib: MADs with misset M_Keys should return failure

Mike Marciniszyn (5):
      IB/ipath: Replace open-coded ARRAY_SIZE with macro
      MAINTAINERS: Update qib and ipath entries from QLogic to Intel
      IB/qib: Add prefetch for eager buffers
      IB/qib: Optimize pio ack buffer allocation
      IB/qib: Add cache line awareness to qib_qp and qib_devdata structures

Mitko Haralanov (2):
      IB/qib: Display correct value for number of contexts
      IB/qib: Fix QLE734X link cycling

Or Gerlitz (4):
      IB/core: Use qp->usecnt to track multicast attach/detach
      IB/core: Add raw packet QP type
      IB/mlx4: Add raw packet QP support
      IB/iser: Fix error flow in iser ep connection establishment

Oren Duer (1):
      IB/mlx4: Put priority bits in WQE of IBoE MLX QP

Parav Pandit (3):
      be2net: Add function to issue mailbox cmd on MQ
      be2net: Add functionality to support RoCE driver
      RDMA/ocrdma: Add driver for Emulex OneConnect IBoE RDMA adapter

Roland Dreier (8):
      IB/uverbs: Make lockdep output more readable
      IB/uverbs: Lock SRQ / CQ / PD objects in a consistent order
      RDMA/ocrdma: Fix warnings about uninitialized variables
      RDMA/ocrdma: Make needlessly global functions/structs static
      RDMA/ocrdma: Set event's device member in ocrdma_dispatch_ibevent()
      RDMA/ocrdma: Remove write-only variables
      RDMA/ocrdma: Fix build with IPV6=n
      Merge branches 'core', 'cxgb4', 'ipath', 'iser', 'lockdep', 'mlx4', 'nes', 'ocrdma', 'qib' and 'raw-qp' into for-linus

Sasha Levin (1):
      RDMA/ocrdma: Don't sleep in atomic notifier handler

Sean Hefty (1):
      RDMA/cma: Fix lockdep false positive recursive locking

Shlomo Pongratz (3):
      mlx4_core: Add second capabilities flags field
      IB/mlx4: Replace printk(KERN_yyy...) with pr_yyy(...)
      IB/mlx4: Increase the number of vectors (EQs) available for ULPs

Steve Wise (3):
      RDMA/cxgb4: Use dst parameter in import_ep()
      RDMA/cxgb4: Always wake up waiters in c4iw_peer_abort_intr()
      RDMA/cxgb4: Drop peer_abort when no endpoint found

Tatyana Nikolova (2):
      RDMA/nes: Fix for the ORD value of the connecting peer
      RDMA/nes: Don't call event handler if pointer is NULL

Todd Rimmer (1):
      IB/qib: Correct ordering of reregister vs. port active events

Vipul Pandya (11):
      cxgb4: Detect DB FULL events and notify RDMA ULD
      cxgb4: Common platform specific changes for DB Drop Recovery
      cxgb4: DB Drop Recovery for RDMA and LLD queues
      RDMA/cxgb4: Add debugfs RDMA memory stats
      RDMA/cxgb4: Add DB Overflow Avoidance
      RDMA/cxgb4: Disable interrupts in c4iw_ev_dispatch()
      RDMA/cxgb4: DB Drop Recovery for RDMA and LLD queues
      RDMA/cxgb4: Use vmalloc() for debugfs QP dump
      RDMA/cxgb4: Remove kfifo usage
      RDMA/cxgb4: Add query_qp support
      RDMA/cxgb4: Include vmalloc.h for vmalloc and vfree

Yishai Hadas (1):
      IB/core: Fix mismatch between locked and pinned pages

 MAINTAINERS                                     |    4 +-
 drivers/infiniband/Kconfig                      |    1 +
 drivers/infiniband/Makefile                     |    1 +
 drivers/infiniband/core/cma.c                   |   42 +-
 drivers/infiniband/core/umem.c                  |    2 +-
 drivers/infiniband/core/uverbs_cmd.c            |  108 +-
 drivers/infiniband/core/verbs.c                 |   15 +-
 drivers/infiniband/hw/cxgb4/Makefile            |    2 +-
 drivers/infiniband/hw/cxgb4/cm.c                |   36 +-
 drivers/infiniband/hw/cxgb4/device.c            |  340 ++-
 drivers/infiniband/hw/cxgb4/ev.c                |    8 +-
 drivers/infiniband/hw/cxgb4/id_table.c          |  112 +
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h          |  134 +-
 drivers/infiniband/hw/cxgb4/mem.c               |   21 +-
 drivers/infiniband/hw/cxgb4/provider.c          |   19 +-
 drivers/infiniband/hw/cxgb4/qp.c                |  105 +-
 drivers/infiniband/hw/cxgb4/resource.c          |  180 +-
 drivers/infiniband/hw/cxgb4/t4.h                |   24 +
 drivers/infiniband/hw/cxgb4/user.h              |    2 +-
 drivers/infiniband/hw/ipath/ipath_iba6110.c     |    3 +-
 drivers/infiniband/hw/ipath/ipath_intr.c        |    3 +-
 drivers/infiniband/hw/mlx4/cq.c                 |   13 +-
 drivers/infiniband/hw/mlx4/main.c               |  104 +-
 drivers/infiniband/hw/mlx4/mlx4_ib.h            |    2 +
 drivers/infiniband/hw/mlx4/mr.c                 |    2 +-
 drivers/infiniband/hw/mlx4/qp.c                 |   54 +-
 drivers/infiniband/hw/mlx4/srq.c                |    2 +-
 drivers/infiniband/hw/nes/nes_cm.c              |    7 +-
 drivers/infiniband/hw/ocrdma/Kconfig            |    8 +
 drivers/infiniband/hw/ocrdma/Makefile           |    5 +
 drivers/infiniband/hw/ocrdma/ocrdma.h           |  393 ++++
 drivers/infiniband/hw/ocrdma/ocrdma_abi.h       |  134 ++
 drivers/infiniband/hw/ocrdma/ocrdma_ah.c        |  172 ++
 drivers/infiniband/hw/ocrdma/ocrdma_ah.h        |   42 +
 drivers/infiniband/hw/ocrdma/ocrdma_hw.c        | 2640 +++++++++++++++++++++++
 drivers/infiniband/hw/ocrdma/ocrdma_hw.h        |  132 ++
 drivers/infiniband/hw/ocrdma/ocrdma_main.c      |  577 +++++
 drivers/infiniband/hw/ocrdma/ocrdma_sli.h       | 1672 ++++++++++++++
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c     | 2537 ++++++++++++++++++++++
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.h     |   94 +
 drivers/infiniband/hw/qib/qib.h                 |   35 +-
 drivers/infiniband/hw/qib/qib_driver.c          |    5 +-
 drivers/infiniband/hw/qib/qib_iba6120.c         |    1 +
 drivers/infiniband/hw/qib/qib_iba7220.c         |    1 +
 drivers/infiniband/hw/qib/qib_iba7322.c         |    3 +-
 drivers/infiniband/hw/qib/qib_init.c            |    3 +-
 drivers/infiniband/hw/qib/qib_mad.c             |   63 +-
 drivers/infiniband/hw/qib/qib_qp.c              |    7 +
 drivers/infiniband/hw/qib/qib_rc.c              |    4 +-
 drivers/infiniband/hw/qib/qib_ruc.c             |   12 +-
 drivers/infiniband/hw/qib/qib_sysfs.c           |    7 +-
 drivers/infiniband/hw/qib/qib_tx.c              |   25 +-
 drivers/infiniband/hw/qib/qib_uc.c              |    4 +-
 drivers/infiniband/hw/qib/qib_ud.c              |   16 +-
 drivers/infiniband/hw/qib/qib_verbs.h           |  145 +-
 drivers/infiniband/ulp/iser/iscsi_iser.c        |    5 +-
 drivers/infiniband/ulp/iser/iser_verbs.c        |    3 +-
 drivers/net/ethernet/chelsio/cxgb4/cxgb4.h      |   23 +
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c |  235 +-
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.h  |   11 +
 drivers/net/ethernet/chelsio/cxgb4/sge.c        |   22 +-
 drivers/net/ethernet/chelsio/cxgb4/t4_hw.c      |   62 +-
 drivers/net/ethernet/chelsio/cxgb4/t4_regs.h    |   53 +
 drivers/net/ethernet/chelsio/cxgb4/t4fw_api.h   |   15 +
 drivers/net/ethernet/emulex/benet/Makefile      |    2 +-
 drivers/net/ethernet/emulex/benet/be.h          |   38 +-
 drivers/net/ethernet/emulex/benet/be_cmds.c     |   39 +
 drivers/net/ethernet/emulex/benet/be_cmds.h     |    1 +
 drivers/net/ethernet/emulex/benet/be_hw.h       |    4 +-
 drivers/net/ethernet/emulex/benet/be_main.c     |   88 +-
 drivers/net/ethernet/emulex/benet/be_roce.c     |  182 ++
 drivers/net/ethernet/emulex/benet/be_roce.h     |   75 +
 drivers/net/ethernet/mellanox/mlx4/alloc.c      |    3 -
 drivers/net/ethernet/mellanox/mlx4/fw.c         |   29 +
 drivers/net/ethernet/mellanox/mlx4/fw.h         |    2 +
 drivers/net/ethernet/mellanox/mlx4/main.c       |    2 +
 include/linux/mlx4/device.h                     |    8 +
 include/linux/mlx4/qp.h                         |    3 +-
 include/rdma/ib_mad.h                           |    2 +-
 include/rdma/ib_verbs.h                         |    4 +-
 80 files changed, 10547 insertions(+), 447 deletions(-)
 create mode 100644 drivers/infiniband/hw/cxgb4/id_table.c
 create mode 100644 drivers/infiniband/hw/ocrdma/Kconfig
 create mode 100644 drivers/infiniband/hw/ocrdma/Makefile
 create mode 100644 drivers/infiniband/hw/ocrdma/ocrdma.h
 create mode 100644 drivers/infiniband/hw/ocrdma/ocrdma_abi.h
 create mode 100644 drivers/infiniband/hw/ocrdma/ocrdma_ah.c
 create mode 100644 drivers/infiniband/hw/ocrdma/ocrdma_ah.h
 create mode 100644 drivers/infiniband/hw/ocrdma/ocrdma_hw.c
 create mode 100644 drivers/infiniband/hw/ocrdma/ocrdma_hw.h
 create mode 100644 drivers/infiniband/hw/ocrdma/ocrdma_main.c
 create mode 100644 drivers/infiniband/hw/ocrdma/ocrdma_sli.h
 create mode 100644 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
 create mode 100644 drivers/infiniband/hw/ocrdma/ocrdma_verbs.h
 create mode 100644 drivers/net/ethernet/emulex/benet/be_roce.c
 create mode 100644 drivers/net/ethernet/emulex/benet/be_roce.h

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2012-05-21  2:35   ` Roland Dreier
@ 2012-05-21  3:39     ` Stephen Rothwell
  0 siblings, 0 replies; 223+ messages in thread
From: Stephen Rothwell @ 2012-05-21  3:39 UTC (permalink / raw)
  To: Roland Dreier; +Cc: Linus Torvalds, linux-kernel, linux-rdma

[-- Attachment #1: Type: text/plain, Size: 354 bytes --]

Hi Roland,

On Sun, 20 May 2012 19:35:30 -0700 Roland Dreier <roland@kernel.org> wrote:
>
> Sorry about that. Which commit in particular?  The vmalloc one?
> What's the error?

Yeah, the vmalloc patch - see my linux-next build error report.  Its just
missing an include.

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au

[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2012-05-21  2:05 ` Stephen Rothwell
@ 2012-05-21  2:35   ` Roland Dreier
  2012-05-21  3:39     ` Stephen Rothwell
  0 siblings, 1 reply; 223+ messages in thread
From: Roland Dreier @ 2012-05-21  2:35 UTC (permalink / raw)
  To: Stephen Rothwell; +Cc: Linus Torvalds, linux-kernel, linux-rdma

On Sun, May 20, 2012 at 7:05 PM, Stephen Rothwell <sfr@canb.auug.org.au> wrote:

>> Vipul Pandya (10):
>>       cxgb4: Detect DB FULL events and notify RDMA ULD
>>       cxgb4: Common platform specific changes for DB Drop Recovery
>>       cxgb4: DB Drop Recovery for RDMA and LLD queues
>>       RDMA/cxgb4: Add debugfs RDMA memory stats
>>       RDMA/cxgb4: Add DB Overflow Avoidance
>>       RDMA/cxgb4: Disable interrupts in c4iw_ev_dispatch()
>>       RDMA/cxgb4: DB Drop Recovery for RDMA and LLD queues
>>       RDMA/cxgb4: Use vmalloc() for debugfs QP dump

> This commit breaks (at least) powerpc builds and has not bee in linux-next
> before today.

Sorry about that. Which commit in particular?  The vmalloc one?
What's the error?

(I did add this patchset to my for-next branch on Friday at the
latest, but I understand if you didn't do a linux-next build over the
past 48 weekend hours :)

 - R.

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2012-05-21  1:14 Roland Dreier
@ 2012-05-21  2:05 ` Stephen Rothwell
  2012-05-21  2:35   ` Roland Dreier
  2012-05-21 16:07 ` Roland Dreier
  2012-06-06 17:44 ` Roland Dreier
  2 siblings, 1 reply; 223+ messages in thread
From: Stephen Rothwell @ 2012-05-21  2:05 UTC (permalink / raw)
  To: Roland Dreier; +Cc: Linus Torvalds, linux-kernel, linux-rdma

[-- Attachment #1: Type: text/plain, Size: 780 bytes --]

Hi Roland,

On Sun, 20 May 2012 18:14:28 -0700 Roland Dreier <roland@kernel.org> wrote:
>
> Vipul Pandya (10):
>       cxgb4: Detect DB FULL events and notify RDMA ULD
>       cxgb4: Common platform specific changes for DB Drop Recovery
>       cxgb4: DB Drop Recovery for RDMA and LLD queues
>       RDMA/cxgb4: Add debugfs RDMA memory stats
>       RDMA/cxgb4: Add DB Overflow Avoidance
>       RDMA/cxgb4: Disable interrupts in c4iw_ev_dispatch()
>       RDMA/cxgb4: DB Drop Recovery for RDMA and LLD queues
>       RDMA/cxgb4: Use vmalloc() for debugfs QP dump

This commit breaks (at least) powerpc builds and has not bee in linux-next
before today.

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/

[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2012-05-21  1:14 Roland Dreier
  2012-05-21  2:05 ` Stephen Rothwell
                   ` (2 more replies)
  0 siblings, 3 replies; 223+ messages in thread
From: Roland Dreier @ 2012-05-21  1:14 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-rdma

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-3.5

----------------------------------------------------------------

InfiniBand/RDMA changes for the 3.5 merge window:
 - Add ocrdma hardware driver for Emulex IB-over-Ethernet adapters
 - Add generic and mlx4 support for "raw" QPs: allow suitably privileged
   applications to send and receive arbitrary packets directly to/from
   the hardware
 - Add "doorbell drop" handling to the cxgb4 driver
 - A fairly large batch of qib hardware driver changes
 - A few fixes for lockdep-detected issues
 - A few other miscellaneous fixes and cleanups

----------------------------------------------------------------
Dan Carpenter (2):
      RDMA/ocrdma: Fix check for NULL instead of IS_ERR
      RDMA/ocrdma: Tiny locking cleanup

Jack Morgenstein (3):
      mlx4_core: Change bitmap allocator to work in round-robin fashion
      IB/core: Fix IB_SA_COMP_MASK macro
      IB/mlx4: Fix mlx4_ib_add() error flow

Jim Cromie (1):
      IB/ipath: Replace open-coded ARRAY_SIZE with macro

Jim Foraker (2):
      IB/qib: Fix M_Key lease timeout handling
      IB/qib: MADs with misset M_Keys should return failure

Mike Marciniszyn (5):
      IB/ipath: Replace open-coded ARRAY_SIZE with macro
      MAINTAINERS: Update qib and ipath entries from QLogic to Intel
      IB/qib: Add prefetch for eager buffers
      IB/qib: Optimize pio ack buffer allocation
      IB/qib: Add cache line awareness to qib_qp and qib_devdata structures

Mitko Haralanov (2):
      IB/qib: Display correct value for number of contexts
      IB/qib: Fix QLE734X link cycling

Or Gerlitz (4):
      IB/core: Use qp->usecnt to track multicast attach/detach
      IB/core: Add raw packet QP type
      IB/mlx4: Add raw packet QP support
      IB/iser: Fix error flow in iser ep connection establishment

Oren Duer (1):
      IB/mlx4: Put priority bits in WQE of IBoE MLX QP

Parav Pandit (3):
      be2net: Add function to issue mailbox cmd on MQ
      be2net: Add functionality to support RoCE driver
      RDMA/ocrdma: Add driver for Emulex OneConnect IBoE RDMA adapter

Roland Dreier (8):
      IB/uverbs: Make lockdep output more readable
      IB/uverbs: Lock SRQ / CQ / PD objects in a consistent order
      RDMA/ocrdma: Fix warnings about uninitialized variables
      RDMA/ocrdma: Make needlessly global functions/structs static
      RDMA/ocrdma: Set event's device member in ocrdma_dispatch_ibevent()
      RDMA/ocrdma: Remove write-only variables
      RDMA/ocrdma: Fix build with IPV6=n
      Merge branches 'core', 'cxgb4', 'ipath', 'iser', 'lockdep', 'mlx4', 'nes', 'ocrdma', 'qib' and 'raw-qp' into for-linus

Sasha Levin (1):
      RDMA/ocrdma: Don't sleep in atomic notifier handler

Sean Hefty (1):
      RDMA/cma: Fix lockdep false positive recursive locking

Shlomo Pongratz (3):
      mlx4_core: Add second capabilities flags field
      IB/mlx4: Replace printk(KERN_yyy...) with pr_yyy(...)
      IB/mlx4: Increase the number of vectors (EQs) available for ULPs

Steve Wise (3):
      RDMA/cxgb4: Use dst parameter in import_ep()
      RDMA/cxgb4: Always wake up waiters in c4iw_peer_abort_intr()
      RDMA/cxgb4: Drop peer_abort when no endpoint found

Tatyana Nikolova (2):
      RDMA/nes: Fix for the ORD value of the connecting peer
      RDMA/nes: Don't call event handler if pointer is NULL

Todd Rimmer (1):
      IB/qib: Correct ordering of reregister vs. port active events

Vipul Pandya (10):
      cxgb4: Detect DB FULL events and notify RDMA ULD
      cxgb4: Common platform specific changes for DB Drop Recovery
      cxgb4: DB Drop Recovery for RDMA and LLD queues
      RDMA/cxgb4: Add debugfs RDMA memory stats
      RDMA/cxgb4: Add DB Overflow Avoidance
      RDMA/cxgb4: Disable interrupts in c4iw_ev_dispatch()
      RDMA/cxgb4: DB Drop Recovery for RDMA and LLD queues
      RDMA/cxgb4: Use vmalloc() for debugfs QP dump
      RDMA/cxgb4: Remove kfifo usage
      RDMA/cxgb4: Add query_qp support

Yishai Hadas (1):
      IB/core: Fix mismatch between locked and pinned pages

 MAINTAINERS                                     |    4 +-
 drivers/infiniband/Kconfig                      |    1 +
 drivers/infiniband/Makefile                     |    1 +
 drivers/infiniband/core/cma.c                   |   42 +-
 drivers/infiniband/core/umem.c                  |    2 +-
 drivers/infiniband/core/uverbs_cmd.c            |  108 +-
 drivers/infiniband/core/verbs.c                 |   15 +-
 drivers/infiniband/hw/cxgb4/Makefile            |    2 +-
 drivers/infiniband/hw/cxgb4/cm.c                |   36 +-
 drivers/infiniband/hw/cxgb4/device.c            |  339 ++-
 drivers/infiniband/hw/cxgb4/ev.c                |    8 +-
 drivers/infiniband/hw/cxgb4/id_table.c          |  112 +
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h          |  134 +-
 drivers/infiniband/hw/cxgb4/mem.c               |   21 +-
 drivers/infiniband/hw/cxgb4/provider.c          |   19 +-
 drivers/infiniband/hw/cxgb4/qp.c                |  105 +-
 drivers/infiniband/hw/cxgb4/resource.c          |  180 +-
 drivers/infiniband/hw/cxgb4/t4.h                |   24 +
 drivers/infiniband/hw/cxgb4/user.h              |    2 +-
 drivers/infiniband/hw/ipath/ipath_iba6110.c     |    3 +-
 drivers/infiniband/hw/ipath/ipath_intr.c        |    3 +-
 drivers/infiniband/hw/mlx4/cq.c                 |   13 +-
 drivers/infiniband/hw/mlx4/main.c               |  104 +-
 drivers/infiniband/hw/mlx4/mlx4_ib.h            |    2 +
 drivers/infiniband/hw/mlx4/mr.c                 |    2 +-
 drivers/infiniband/hw/mlx4/qp.c                 |   54 +-
 drivers/infiniband/hw/mlx4/srq.c                |    2 +-
 drivers/infiniband/hw/nes/nes_cm.c              |    7 +-
 drivers/infiniband/hw/ocrdma/Kconfig            |    8 +
 drivers/infiniband/hw/ocrdma/Makefile           |    5 +
 drivers/infiniband/hw/ocrdma/ocrdma.h           |  393 ++++
 drivers/infiniband/hw/ocrdma/ocrdma_abi.h       |  134 ++
 drivers/infiniband/hw/ocrdma/ocrdma_ah.c        |  172 ++
 drivers/infiniband/hw/ocrdma/ocrdma_ah.h        |   42 +
 drivers/infiniband/hw/ocrdma/ocrdma_hw.c        | 2640 +++++++++++++++++++++++
 drivers/infiniband/hw/ocrdma/ocrdma_hw.h        |  132 ++
 drivers/infiniband/hw/ocrdma/ocrdma_main.c      |  577 +++++
 drivers/infiniband/hw/ocrdma/ocrdma_sli.h       | 1672 ++++++++++++++
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c     | 2537 ++++++++++++++++++++++
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.h     |   94 +
 drivers/infiniband/hw/qib/qib.h                 |   35 +-
 drivers/infiniband/hw/qib/qib_driver.c          |    5 +-
 drivers/infiniband/hw/qib/qib_iba6120.c         |    1 +
 drivers/infiniband/hw/qib/qib_iba7220.c         |    1 +
 drivers/infiniband/hw/qib/qib_iba7322.c         |    3 +-
 drivers/infiniband/hw/qib/qib_init.c            |    3 +-
 drivers/infiniband/hw/qib/qib_mad.c             |   63 +-
 drivers/infiniband/hw/qib/qib_qp.c              |    7 +
 drivers/infiniband/hw/qib/qib_rc.c              |    4 +-
 drivers/infiniband/hw/qib/qib_ruc.c             |   12 +-
 drivers/infiniband/hw/qib/qib_sysfs.c           |    7 +-
 drivers/infiniband/hw/qib/qib_tx.c              |   25 +-
 drivers/infiniband/hw/qib/qib_uc.c              |    4 +-
 drivers/infiniband/hw/qib/qib_ud.c              |   16 +-
 drivers/infiniband/hw/qib/qib_verbs.h           |  145 +-
 drivers/infiniband/ulp/iser/iscsi_iser.c        |    5 +-
 drivers/infiniband/ulp/iser/iser_verbs.c        |    3 +-
 drivers/net/ethernet/chelsio/cxgb4/cxgb4.h      |   23 +
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c |  235 +-
 drivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.h  |   11 +
 drivers/net/ethernet/chelsio/cxgb4/sge.c        |   22 +-
 drivers/net/ethernet/chelsio/cxgb4/t4_hw.c      |   62 +-
 drivers/net/ethernet/chelsio/cxgb4/t4_regs.h    |   53 +
 drivers/net/ethernet/chelsio/cxgb4/t4fw_api.h   |   15 +
 drivers/net/ethernet/emulex/benet/Makefile      |    2 +-
 drivers/net/ethernet/emulex/benet/be.h          |   38 +-
 drivers/net/ethernet/emulex/benet/be_cmds.c     |   39 +
 drivers/net/ethernet/emulex/benet/be_cmds.h     |    1 +
 drivers/net/ethernet/emulex/benet/be_hw.h       |    4 +-
 drivers/net/ethernet/emulex/benet/be_main.c     |   88 +-
 drivers/net/ethernet/emulex/benet/be_roce.c     |  182 ++
 drivers/net/ethernet/emulex/benet/be_roce.h     |   75 +
 drivers/net/ethernet/mellanox/mlx4/alloc.c      |    3 -
 drivers/net/ethernet/mellanox/mlx4/fw.c         |   29 +
 drivers/net/ethernet/mellanox/mlx4/fw.h         |    2 +
 drivers/net/ethernet/mellanox/mlx4/main.c       |    2 +
 include/linux/mlx4/device.h                     |    8 +
 include/linux/mlx4/qp.h                         |    3 +-
 include/rdma/ib_mad.h                           |    2 +-
 include/rdma/ib_verbs.h                         |    4 +-
 80 files changed, 10546 insertions(+), 447 deletions(-)
 create mode 100644 drivers/infiniband/hw/cxgb4/id_table.c
 create mode 100644 drivers/infiniband/hw/ocrdma/Kconfig
 create mode 100644 drivers/infiniband/hw/ocrdma/Makefile
 create mode 100644 drivers/infiniband/hw/ocrdma/ocrdma.h
 create mode 100644 drivers/infiniband/hw/ocrdma/ocrdma_abi.h
 create mode 100644 drivers/infiniband/hw/ocrdma/ocrdma_ah.c
 create mode 100644 drivers/infiniband/hw/ocrdma/ocrdma_ah.h
 create mode 100644 drivers/infiniband/hw/ocrdma/ocrdma_hw.c
 create mode 100644 drivers/infiniband/hw/ocrdma/ocrdma_hw.h
 create mode 100644 drivers/infiniband/hw/ocrdma/ocrdma_main.c
 create mode 100644 drivers/infiniband/hw/ocrdma/ocrdma_sli.h
 create mode 100644 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
 create mode 100644 drivers/infiniband/hw/ocrdma/ocrdma_verbs.h
 create mode 100644 drivers/net/ethernet/emulex/benet/be_roce.c
 create mode 100644 drivers/net/ethernet/emulex/benet/be_roce.h

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2012-04-26 17:39 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2012-04-26 17:39 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/ib-fixes

----------------------------------------------------------------

A few fixes for regressions introduced in 3.4-rc1:
 - fix memory leak in mlx4
 - fix two problems with new MAD response generation code

----------------------------------------------------------------
Jack Morgenstein (2):
      IB/mad: Set 'D' bit in response for unhandled MADs
      IB/mad: Don't send response for failed MADs

Jesper Juhl (1):
      IB/mlx4: Fix memory leaks in ib_link_query_port()

Roland Dreier (1):
      Merge branches 'mad-response' and 'mlx4' into fixes

 drivers/infiniband/core/mad.c     |    8 +++++---
 drivers/infiniband/hw/mlx4/main.c |    2 +-
 2 files changed, 6 insertions(+), 4 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2012-04-12 23:45 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2012-04-12 23:45 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, target-devel, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/srpt-srq-type fixes

----------------------------------------------------------------
Add a fix for a bug hit by Alexey Shvetsov in ib_srtp that hits on
non-mlx4 hardware.

----------------------------------------------------------------
Roland Dreier (1):
      IB/srpt: Set srq_type to IB_SRQT_BASIC

 drivers/infiniband/ulp/srpt/ib_srpt.c |    1 +
 1 file changed, 1 insertion(+)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2012-04-11 20:07 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2012-04-11 20:07 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-rdma

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git tags/rdma-for-linus

----------------------------------------------------------------
Fix regression in the /sys/class/infiniband/.../rate attribute -- old
kernels used to just return something, even if the underlying value was
out-of-bounds, while 3.4-rc1 returned EINVAL to userspace.  This breaks
some applications that check for the error, so go back to the old
behavior.

----------------------------------------------------------------
Or Gerlitz (1):
      IB/mlx4: Don't return an invalid speed when a port is down

Roland Dreier (1):
      IB/core: Don't return EINVAL from sysfs rate attribute for invalid speeds

 drivers/infiniband/core/sysfs.c   |    9 +++++----
 drivers/infiniband/hw/mlx4/main.c |    5 +++++
 2 files changed, 10 insertions(+), 4 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* RE: [GIT PULL] please pull infiniband.git
  2012-03-26 21:13   ` Roland Dreier
@ 2012-03-27 16:33     ` Tziporet Koren
  0 siblings, 0 replies; 223+ messages in thread
From: Tziporet Koren @ 2012-03-27 16:33 UTC (permalink / raw)
  To: Roland Dreier; +Cc: Linus Torvalds, linux-kernel, linux-rdma

>> What about the IPoIB patches (e.g. use Interrupt moderation)

> I have no idea what patch that might be.  We've had the modify_cq call in ipoib for years now, with moderation parameters set through ethtool.

http://www.spinics.net/lists/linux-rdma/msg09142.html
 and
http://www.spinics.net/lists/linux-rdma/msg09143.html

Tziporet

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2012-03-26 21:04 ` Tziporet Koren
@ 2012-03-26 21:13   ` Roland Dreier
  2012-03-27 16:33     ` Tziporet Koren
  0 siblings, 1 reply; 223+ messages in thread
From: Roland Dreier @ 2012-03-26 21:13 UTC (permalink / raw)
  To: Tziporet Koren; +Cc: Linus Torvalds, linux-kernel, linux-rdma

On Mon, Mar 26, 2012 at 2:04 PM, Tziporet Koren <tziporet@mellanox.com> wrote:
> What about the IPoIB patches (e.g. use Interrupt moderation)

I have no idea what patch that might be.  We've had the modify_cq call
in ipoib for years now,
with moderation parameters set through ethtool.

 - R.

^ permalink raw reply	[flat|nested] 223+ messages in thread

* RE: [GIT PULL] please pull infiniband.git
  2012-03-19 17:11 Roland Dreier
@ 2012-03-26 21:04 ` Tziporet Koren
  2012-03-26 21:13   ` Roland Dreier
  0 siblings, 1 reply; 223+ messages in thread
From: Tziporet Koren @ 2012-03-26 21:04 UTC (permalink / raw)
  To: Roland Dreier, Linus Torvalds; +Cc: linux-kernel, linux-rdma

Roland
What about the IPoIB patches (e.g. use Interrupt moderation)

Regards,
Tziporet


^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2012-03-19 17:11 Roland Dreier
  2012-03-26 21:04 ` Tziporet Koren
  0 siblings, 1 reply; 223+ messages in thread
From: Roland Dreier @ 2012-03-19 17:11 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-rdma

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git rdma-for-linus

----------------------------------------------------------------

InfiniBand/RDMA changes for the 3.4 merge window.  Nothing big really
stands out; by patch count lots of fixes to the mlx4 driver plus some
cleanups and fixes to the core and other drivers.

----------------------------------------------------------------
Bart Van Assche (2):
      IB/srp: Use pr_fmt() and pr_err()/pr_warn()
      IB/srp: Consolidate repetitive sysfs code

Doug Ledford (1):
      IB/iser: Free IB connection resources in the proper place

Eli Cohen (3):
      IB/mlx4: Set bad_wr for invalid send opcode
      mlx4: Enforce device max FMR maps in FMR alloc
      IB/mlx4: Fix possible missed completion event

Eric Dumazet (1):
      IB/ehca: Use kthread_create_on_node()

Hefty, Sean (1):
      RDMA/ucma: Fix AB-BA deadlock

Jack Morgenstein (1):
      mlx4_core: Report thermal error events

Kumar Sanghvi (1):
      RDMA/cxgb4: Add missing peer2peer check in MPAv2 code

Kyle McMartin (1):
      IB/ehca: Fix ilog2() compile failure

Masanari Iida (1):
      IB/srpt: Fix typo "alocate" -> "allocate"

Mike Marciniszyn (2):
      IB/qib: Add logic for affinity hint
      IB/qib: Avoid filtering LID on SMA portinfo

Or Gerlitz (6):
      IB/iser: Post initial receive buffers before sending the final login request
      IB: Use central enum for speed instead of hard-coded values
      mlx4_core: Get rid of redundant ext_port_cap flags
      IB: Change CQE "csum_ok" field to a bit flag
      IB/mlx4: Fix info returned when querying IBoE ports
      mlx4_core: Allow dynamic MTU configuration for IB ports

Roland Dreier (5):
      IB/core: Fix SDR rates in sysfs
      mlx4_core: Fix one more static exported function
      mlx4_core: Scale size of MTT table with system RAM
      Merge branches 'misc' and 'mlx4' into for-next
      Merge branches 'cma', 'cxgb3', 'cxgb4', 'ehca', 'iser', 'mad', 'nes', 'qib', 'srp' and 'srpt' into for-next

Steve Wise (2):
      RDMA/cxgb3: Don't pass irq flags to flush_qp()
      RDMA/iwcm: Reject connect requests if cmid is not in LISTEN state

Swapna Thete (2):
      IB/mad: Add MAD error codes from IBA spec
      IB/mad: Return error response for unsupported MADs

Tatyana Nikolova (1):
      RDMA/nes: Fixes for sparse endianness warnings

 drivers/infiniband/core/iwcm.c               |   24 +++--
 drivers/infiniband/core/mad.c                |   21 ++++
 drivers/infiniband/core/sysfs.c              |   27 +++---
 drivers/infiniband/core/ucma.c               |   37 ++++----
 drivers/infiniband/hw/amso1100/c2_provider.c |    2 +-
 drivers/infiniband/hw/cxgb3/iwch_provider.c  |    2 +-
 drivers/infiniband/hw/cxgb3/iwch_qp.c        |   40 ++++----
 drivers/infiniband/hw/cxgb4/cm.c             |    2 +-
 drivers/infiniband/hw/cxgb4/provider.c       |    2 +-
 drivers/infiniband/hw/ehca/ehca_hca.c        |    2 +-
 drivers/infiniband/hw/ehca/ehca_irq.c        |    3 +-
 drivers/infiniband/hw/ehca/ehca_mrmw.c       |    2 +-
 drivers/infiniband/hw/mlx4/cq.c              |    6 +-
 drivers/infiniband/hw/mlx4/main.c            |  130 +++++++++++++------------
 drivers/infiniband/hw/mlx4/qp.c              |    1 +
 drivers/infiniband/hw/mthca/mthca_cq.c       |    3 +-
 drivers/infiniband/hw/nes/nes_cm.c           |   39 +++++----
 drivers/infiniband/hw/nes/nes_verbs.c        |    2 +-
 drivers/infiniband/hw/qib/qib.h              |   10 ++-
 drivers/infiniband/hw/qib/qib_iba7322.c      |  107 +++++++++++++++------
 drivers/infiniband/hw/qib/qib_mad.c          |    4 +-
 drivers/infiniband/hw/qib/qib_pcie.c         |   21 ++++-
 drivers/infiniband/hw/qib/qib_rc.c           |    1 -
 drivers/infiniband/hw/qib/qib_uc.c           |    1 -
 drivers/infiniband/ulp/ipoib/ipoib_ib.c      |    3 +-
 drivers/infiniband/ulp/iser/iscsi_iser.c     |   18 +---
 drivers/infiniband/ulp/iser/iscsi_iser.h     |    1 +
 drivers/infiniband/ulp/iser/iser_initiator.c |   42 ++++-----
 drivers/infiniband/ulp/iser/iser_verbs.c     |   12 +++
 drivers/infiniband/ulp/srp/ib_srp.c          |  103 +++++++++-----------
 drivers/infiniband/ulp/srpt/ib_srpt.c        |    2 +-
 drivers/net/ethernet/mellanox/mlx4/eq.c      |   32 ++++++-
 drivers/net/ethernet/mellanox/mlx4/main.c    |  126 +++++++++++++++++++++++--
 drivers/net/ethernet/mellanox/mlx4/mlx4.h    |    9 ++-
 drivers/net/ethernet/mellanox/mlx4/mr.c      |    3 +
 drivers/net/ethernet/mellanox/mlx4/port.c    |   68 +++++---------
 drivers/net/ethernet/mellanox/mlx4/profile.c |   19 ++++
 include/linux/mlx4/device.h                  |   12 ++-
 include/rdma/ib_mad.h                        |    9 ++
 include/rdma/ib_verbs.h                      |   11 ++-
 40 files changed, 607 insertions(+), 352 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2012-02-25  2:32 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2012-02-25  2:32 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git rdma-for-linus

----------------------------------------------------------------
One InfiniBand/RDMA regression fix for 3.3:

 - mlx4 SR-IOV changes added static exported functions, which doesn't
   build on powerpc at least.  Fix from Doug Ledford for this.

----------------------------------------------------------------
Doug Ledford (1):
      mlx4_core: Exported functions can't be static

 drivers/net/ethernet/mellanox/mlx4/fw.c |    2 +-
 drivers/net/ethernet/mellanox/mlx4/mr.c |   12 ++++++------
 2 files changed, 7 insertions(+), 7 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2012-02-07 17:34 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2012-02-07 17:34 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, target-devel, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git ib-srpt-fixes

This will get a few small cleanups and fixes for the srpt fabric
driver.  The driver is new for 3.3 so it makes sense to get this in
before the first release.

----------------------------------------------------------------
Cleanups and error path fixes for the new SRP (SCSI RDMA protocol) target.

----------------------------------------------------------------
Dan Carpenter (1):
      IB/srpt: Fix ERR_PTR() vs. NULL checking confusion

Jesper Juhl (2):
      IB/srpt: Remove unneeded <linux/version.h> include
      IB/srpt: Don't return freed pointer from srpt_alloc_ioctx_ring()

Roland Dreier (2):
      IB/srpt: Use DEFINE_SPINLOCK()/LIST_HEAD()
      IB/srpt: Use ARRAY_SIZE() instead of open-coding

 drivers/infiniband/ulp/srpt/ib_srpt.c |   17 +++++++----------
 drivers/infiniband/ulp/srpt/ib_srpt.h |    1 -
 2 files changed, 7 insertions(+), 11 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2012-02-01  6:36 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2012-02-01  6:36 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git rdma-for-linus

----------------------------------------------------------------

InfiniBand/RDMA fixes for 3.3:

 - Fix a crash due to a regression (uninitialized refcnt) introduced in
   3.2 with XRC support.
 - Close race in how ucma reports events when connect fails.
 - Process vendor-specific MADs in mlx4 so that eg FDR-10 data rate works.
 - Fix regression in qib caused by over-aggressive PCIe tuning.
 - Other small fixes for hardware drivers (ipath, nes, qib).

----------------------------------------------------------------
Bernd Schubert (1):
      RDMA/core: Fix kernel panic by always initializing qp->usecnt

Dan Carpenter (1):
      IB/ipath: Calling PTR_ERR() on right variable in create_file()

Jack Morgenstein (1):
      IB/mlx4: pass SMP vendor-specific attribute MADs to firmware

Julia Lawall (1):
      IB/qib: Use GFP_ATOMIC when locks are held

Mike Marciniszyn (1):
      IB/qib: Roll back PCIe tuning change

Roland Dreier (2):
      RDMA/nes: Add missing rcu_read_unlock() in nes_addr_resolve_neigh()
      Merge branches 'cma', 'ipath', 'misc', 'mlx4', 'nes' and 'qib' into for-next

Sean Hefty (1):
      RDMA/ucma: Discard all events for new connections until accepted

Tatyana Nikolova (4):
      RDMA/nes: Fix for sending MPA reject frame
      RDMA/nes: Fix fast memory registration length
      RDMA/nes: Fix fast memory registration opcode
      RDMA/nes: Copyright update

 drivers/infiniband/core/ucma.c          |    5 ++++-
 drivers/infiniband/core/uverbs_cmd.c    |    1 +
 drivers/infiniband/core/verbs.c         |    2 +-
 drivers/infiniband/hw/ipath/ipath_fs.c  |    2 +-
 drivers/infiniband/hw/mlx4/mad.c        |    7 ++-----
 drivers/infiniband/hw/nes/nes.c         |    2 +-
 drivers/infiniband/hw/nes/nes.h         |    2 +-
 drivers/infiniband/hw/nes/nes_cm.c      |   10 +++++++---
 drivers/infiniband/hw/nes/nes_cm.h      |    2 +-
 drivers/infiniband/hw/nes/nes_context.h |    2 +-
 drivers/infiniband/hw/nes/nes_hw.c      |    2 +-
 drivers/infiniband/hw/nes/nes_hw.h      |    2 +-
 drivers/infiniband/hw/nes/nes_mgt.c     |    2 +-
 drivers/infiniband/hw/nes/nes_mgt.h     |    2 +-
 drivers/infiniband/hw/nes/nes_nic.c     |    2 +-
 drivers/infiniband/hw/nes/nes_user.h    |    2 +-
 drivers/infiniband/hw/nes/nes_utils.c   |    2 +-
 drivers/infiniband/hw/nes/nes_verbs.c   |    6 ++++--
 drivers/infiniband/hw/nes/nes_verbs.h   |    2 +-
 drivers/infiniband/hw/qib/qib_iba6120.c |    2 +-
 drivers/infiniband/hw/qib/qib_pcie.c    |    2 +-
 21 files changed, 34 insertions(+), 27 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2012-01-06 17:38 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2012-01-06 17:38 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-rdma

Hi Linus,

[Trying the signed tag thing for the first time here]

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git infiniband-for-linus

This will get my small batch of stuff for 3.3:
 - Fix for userspace-provokable multicast membership list corruption
 - Fix for CM protocol message layout
 - Fixes and cleanups for qib hardware driver
 - Fixes and cleanup for nes hardware driver
 - Fix for mlx4 handling of Ethernet priority bits
 - Fix for bugs and warnings found by sparse in core code

Eli Cohen (2):
      IB/uverbs: Protect QP multicast list
      IB/cm: Fix layout of APR message

Mike Marciniszyn (4):
      IB/qib: Fix style issues
      IB/qib: Eliminate 64-bit jiffies use
      IB/qib: Optimize locking for get_txreq()
      IB/qib: Default some module parameters optimally

Or Gerlitz (1):
      IB/mlx4: Fix SL to 802.1Q priority-bits mapping for IBoE

Ram Vepa (1):
      IB/qib: Fix a possible data corruption when receiving packets

Roland Dreier (1):
      Merge branches 'cma', 'misc', 'mlx4', 'nes', 'qib' and 'uverbs' into for-next

Sean Hefty (2):
      RDMA/cma: Fix endianness bugs
      rdma/core: Fix sparse warnings

Tatyana Nikolova (3):
      RDMA/nes: Change MDIO bus clock to 2.5MHz
      RDMA/nes: Make unnecessarily global nes_set_pau() static
      RDMA/nes: Fix terminate during AE

 drivers/infiniband/core/cm_msgs.h       |    1 +
 drivers/infiniband/core/cma.c           |    6 ++--
 drivers/infiniband/core/ucm.c           |    3 --
 drivers/infiniband/core/uverbs_cmd.c    |   27 ++++++++++++++-----
 drivers/infiniband/hw/mlx4/ah.c         |    2 +-
 drivers/infiniband/hw/mlx4/cq.c         |    6 +++-
 drivers/infiniband/hw/mlx4/qp.c         |    4 +-
 drivers/infiniband/hw/nes/nes_cm.c      |    1 +
 drivers/infiniband/hw/nes/nes_hw.c      |    6 +---
 drivers/infiniband/hw/nes/nes_utils.c   |    2 +-
 drivers/infiniband/hw/qib/qib_7220.h    |    2 +-
 drivers/infiniband/hw/qib/qib_driver.c  |    3 +-
 drivers/infiniband/hw/qib/qib_iba6120.c |    4 ++-
 drivers/infiniband/hw/qib/qib_iba7220.c |   10 ++++---
 drivers/infiniband/hw/qib/qib_iba7322.c |   40 ++++++++++++++--------------
 drivers/infiniband/hw/qib/qib_init.c    |    2 +-
 drivers/infiniband/hw/qib/qib_pcie.c    |    4 +-
 drivers/infiniband/hw/qib/qib_qsfp.h    |    2 +-
 drivers/infiniband/hw/qib/qib_sd7220.c  |    2 +-
 drivers/infiniband/hw/qib/qib_sysfs.c   |    2 +-
 drivers/infiniband/hw/qib/qib_verbs.c   |   43 +++++++++++++++++++++++-------
 include/rdma/ib_addr.h                  |    2 +-
 include/rdma/ib_cm.h                    |    3 ++
 23 files changed, 109 insertions(+), 68 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2011-12-19 17:39 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2011-12-19 17:39 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a few last fixes:

 - Fix for crash on mlx4 module unload
 - Fix for crash on too-long private data in RDMA CM
 - Trivial fix for context counting bug in qib

Thanks!

Mike Marciniszyn (1):
      IB/qib: Correct sense on freectxts increment and decrement

Roland Dreier (2):
      IB/mlx4: Fix shutdown crash accessing a non-existent bitmap
      Merge branches 'cma', 'mlx4' and 'qib' into for-next

Sean Hefty (1):
      RDMA/cma: Verify private data length

 drivers/infiniband/core/cma.c            |    6 ++++++
 drivers/infiniband/hw/mlx4/main.c        |    6 ++++--
 drivers/infiniband/hw/qib/qib_file_ops.c |    4 ++--
 3 files changed, 12 insertions(+), 4 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2011-11-30 17:50 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2011-11-30 17:50 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-rdma

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a few fixes:

 - Fixes for missing RCU read locking due to net neighbour changes
 - Fix for IPoIB softlockup in error path
 - Low-level driver fixes to cxgb4 and qib

Thanks!

Eric Dumazet (1):
      IB: Fix RCU lockdep splats

Jonathan Lallinger (1):
      RDMA/cxgb4: Fix iw_cxgb4 count_rcqes() logic

Kumar Sanghvi (1):
      RDMA/cxgb4: Fix retry with MPAv1 logic for MPAv2

Mike Marciniszyn (3):
      IB/qib: Don't use schedule_work()
      IB/qib: Fix over-scheduling of QSFP work
      IB/ipoib: Prevent hung task or softlockup processing multicast response

Roland Dreier (1):
      Merge branches 'cxgb4', 'ipoib', 'misc' and 'qib' into for-next

 drivers/infiniband/core/addr.c                 |    9 ++++++---
 drivers/infiniband/hw/cxgb3/iwch_cm.c          |    4 ++++
 drivers/infiniband/hw/cxgb4/cm.c               |   10 +++++++++-
 drivers/infiniband/hw/cxgb4/cq.c               |    2 +-
 drivers/infiniband/hw/nes/nes_cm.c             |    6 ++++--
 drivers/infiniband/hw/qib/qib_iba7322.c        |   18 +++++++++---------
 drivers/infiniband/hw/qib/qib_qsfp.c           |   12 ------------
 drivers/infiniband/ulp/ipoib/ipoib_ib.c        |   13 ++++++++-----
 drivers/infiniband/ulp/ipoib/ipoib_main.c      |   20 ++++++++++++--------
 drivers/infiniband/ulp/ipoib/ipoib_multicast.c |   13 +++++++++----
 10 files changed, 62 insertions(+), 45 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2011-11-04 18:26 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2011-11-04 18:26 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-rdma

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a few more 3.2 merge window changes:

 - a panic fix for the qib hardware driver
 - a couple of cleanups to iSER's use of the DMA mapping API
 - a fix to mthca that reduces memory use a bit

Mike Marciniszyn (1):
      IB/qib: Fix panic in RC error flushing logic

Or Gerlitz (2):
      IB/iser: Use separate buffers for the login request/response
      IB/iser: DMA unmap TX bufs used for iSCSI/iSER headers

Roland Dreier (2):
      IB/mthca: Fix buddy->num_free allocation size
      Merge branches 'iser', 'mthca' and 'qib' into for-next

 drivers/infiniband/hw/mthca/mthca_mr.c       |    2 +-
 drivers/infiniband/hw/qib/qib_rc.c           |   10 ++-----
 drivers/infiniband/ulp/iser/iscsi_iser.c     |   11 ++++++--
 drivers/infiniband/ulp/iser/iscsi_iser.h     |    4 +-
 drivers/infiniband/ulp/iser/iser_initiator.c |   31 ++++++++++++++++++-----
 drivers/infiniband/ulp/iser/iser_verbs.c     |   33 ++++++++++++++++++++-----
 6 files changed, 64 insertions(+), 27 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2011-11-01 16:54 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2011-11-01 16:54 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-rdma

From: Roland Dreier <roland@kernel.org>

Hi Linus,

Please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get the main batch of changes for 3.2.  One note: my tree is
based on 3.1-rc9, and I have some changes to drivers/net/mlx4, but in
your tree that driver has moved to drivers/net/ethernet/mellanox/mlx4.
With a high enough merge.renamelimit, git handles this merge fine in
my test, so I'm assuming you would want to do the merge yourself.

Anyway, the main things here are:
 - Finally we get XRC support upstream, thanks to Sean Hefty's
   cleaning up of the series.
 - MPAv2 support for iWARP devices, which makes negotiating limits
   during connection much cleaner.
 - Support for reporting new higher link speeds (FDR, FDR-10, EDR).
 - Optimizations to the qib driver.
 - Various fixes and cleanups, mostly to low-level hardware drivers.

Andy Shevchenko (1):
      RDMA/amso1100: Use '%pM' format option to print MAC

Dotan Barak (2):
      mlx4_core: Use the right function to free eq->page_list entries
      IPoIB: Use the right function to do DMA unmap pages

Eli Cohen (1):
      mlx4_core: Fix buddy->num_free allocation size

Faisal Latif (3):
      RDMA/nes: Fix terminate connection
      RDMA/nes: Print IP address for critcal errors
      RDMA/nes: Support for Packed And Unaligned fpdus

Hefty, Sean (4):
      RDMA/cma: Fix crash in cma_req_handler
      RDMA/cma: Check for NULL conn_param in rdma_accept
      IB/mad: Verify mgmt class in received MADs
      RDMA/ucm: Removed checks for unsigned value < 0

Jonathan Lallinger (1):
      RDMA/cxgb4: Use correct QID in insert_recv_cqe()

Julia Lawall (1):
      RDMA/nes: Add missing calls to ib_umem_release()

Kumar Sanghvi (6):
      RDMA/iwcm: Propagate ird/ord values upwards
      RDMA/{amso1100,cxgb3}: Minimal MPAv2 support
      RDMA/cxgb4: Add support for MPAv2 Enhanced RDMA Negotiation
      RDMA/cxgb4: Make sure flush CQ entries are collected on connection close
      RDMA/cxgb3: Serialize calls to CQ's comp_handler
      RDMA/cxgb4: Serialize calls to CQ's comp_handler

Marcel Apfelbaum (4):
      IB: Add new InfiniBand link speeds
      IPoIB: Handle extended rates in debugfs
      mlx4_core: Add extended port capabilities support
      IB/mlx4: Configure extended active speeds

Mike Marciniszyn (8):
      IB/qib: Correct nfreectxts for multiple HCAs
      IB/qib: Optimize RC/UC code by IB operation
      IB/qib: Decode path MTU optimization
      IB/qib: Eliminate divide/mod in converting idx to egr buf pointer
      IB/qib: Use RCU for qpn lookup
      IB/qib: Precompute timeout jiffies to optimize latency
      IB/qib: Remove s_lock around header validation
      IB/qib: Clean up checkpatch issue

Mitko Haralanov (2):
      IB/qib: Hold links until tuning data is available
      IB/qib: Fix issue with link states and QSFP cables

Or Gerlitz (3):
      IB/mlx4: Enable 4K mtu for IBoE
      IB/mlx4: Don't set VLAN in IBoE WQEs' control segment
      mlx4_core: Deprecate log_num_vlan module param

Randy Dunlap (1):
      IB/ipath: Add missing <linux/stat.h> in ipath_chip_init.c

Roland Dreier (2):
      mlx4_core: Clean up error flow in mlx4_register_mac()
      Merge branches 'amso1100', 'cma', 'cxgb3', 'cxgb4', 'fdr', 'ipath', 'ipoib', 'misc', 'mlx4', 'misc', 'nes', 'qib' and 'xrc' into for-next

Sean Hefty (20):
      RDMA/core: Add XRC domain support
      RDMA/core: Add SRQ type field
      RDMA/core: Add XRC SRQ type
      RDMA/core: Add XRC QPs
      RDMA/verbs: Cleanup XRC TGT QPs when destroying XRCD
      RDMA/uverbs: Export XRC domains to user space
      RDMA/uverbs: Export XRC SRQs to user space
      RDMA/uverbs: Export XRC INI QPs to userspace
      RDMA/uverbs: Export XRC TGT QPs to user space
      IB/cm: Update protocol to support XRC
      IB/cm: Update XRC support based on XRC annex errata
      RDMA/cm: Define new RDMA port space specific to IB
      RDMA/ucm: Allow user to specify QP type when creating id
      RDMA/cma: Support XRC QPs
      IB/cm: Do not automatically disconnect XRC TGT QPs
      IB/mlx4: Add support for XRC domains
      IB/mlx4: Add support for XRC SRQs
      IB/mlx4: Add support for XRC QPs
      RDMA/core: Export ib_open_qp() to share XRC TGT QPs
      RDMA/uverbs: Export ib_open_qp() capability to user space

Steve Wise (1):
      RDMA/cxgb4: Fail RDMA initialization for unsupported cards

Tatyana Nikolova (1):
      RDMA/nes: Add support for MPAv2 Enhanced RDMA Negotiation

Tom Tucker (1):
      RDMA/cxgb4: Mark QP in error before disabling the queue in firmware

Yong Zhang (1):
      IB/ehca: Remove IRQF_DISABLED, since it's a no-op

 drivers/infiniband/core/cm.c                  |   63 +-
 drivers/infiniband/core/cm_msgs.h             |   32 +-
 drivers/infiniband/core/cma.c                 |   67 +-
 drivers/infiniband/core/mad.c                 |    3 +
 drivers/infiniband/core/sysfs.c               |   26 +-
 drivers/infiniband/core/ucm.c                 |    2 +-
 drivers/infiniband/core/ucma.c                |    7 +-
 drivers/infiniband/core/user_mad.c            |    5 +-
 drivers/infiniband/core/uverbs.h              |   18 +
 drivers/infiniband/core/uverbs_cmd.c          |  703 ++++++++++++++--
 drivers/infiniband/core/uverbs_main.c         |   30 +-
 drivers/infiniband/core/verbs.c               |  376 ++++++++-
 drivers/infiniband/hw/amso1100/c2_ae.c        |    5 +
 drivers/infiniband/hw/amso1100/c2_intr.c      |    5 +
 drivers/infiniband/hw/amso1100/c2_provider.c  |    5 +-
 drivers/infiniband/hw/cxgb3/iwch_cm.c         |   10 +
 drivers/infiniband/hw/cxgb3/iwch_ev.c         |    6 +
 drivers/infiniband/hw/cxgb3/iwch_provider.c   |    1 +
 drivers/infiniband/hw/cxgb3/iwch_provider.h   |    1 +
 drivers/infiniband/hw/cxgb3/iwch_qp.c         |   14 +-
 drivers/infiniband/hw/cxgb4/cm.c              |  469 +++++++++-
 drivers/infiniband/hw/cxgb4/cq.c              |    3 +-
 drivers/infiniband/hw/cxgb4/device.c          |   41 +-
 drivers/infiniband/hw/cxgb4/ev.c              |   10 +-
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h        |   23 +-
 drivers/infiniband/hw/cxgb4/qp.c              |   39 +-
 drivers/infiniband/hw/ehca/ehca_eq.c          |    4 +-
 drivers/infiniband/hw/ehca/ehca_qp.c          |    3 +
 drivers/infiniband/hw/ipath/ipath_init_chip.c |    1 +
 drivers/infiniband/hw/ipath/ipath_srq.c       |    5 +
 drivers/infiniband/hw/mlx4/main.c             |  106 +++-
 drivers/infiniband/hw/mlx4/mlx4_ib.h          |   13 +
 drivers/infiniband/hw/mlx4/qp.c               |  131 ++-
 drivers/infiniband/hw/mlx4/srq.c              |   10 +-
 drivers/infiniband/hw/mthca/mthca_provider.c  |    3 +
 drivers/infiniband/hw/nes/Makefile            |    2 +-
 drivers/infiniband/hw/nes/nes.c               |    8 +-
 drivers/infiniband/hw/nes/nes.h               |   17 +-
 drivers/infiniband/hw/nes/nes_cm.c            | 1121 ++++++++++++++----------
 drivers/infiniband/hw/nes/nes_cm.h            |   75 ++-
 drivers/infiniband/hw/nes/nes_hw.c            |   99 ++-
 drivers/infiniband/hw/nes/nes_hw.h            |   35 +-
 drivers/infiniband/hw/nes/nes_mgt.c           | 1162 +++++++++++++++++++++++++
 drivers/infiniband/hw/nes/nes_mgt.h           |   97 ++
 drivers/infiniband/hw/nes/nes_nic.c           |    4 +
 drivers/infiniband/hw/nes/nes_utils.c         |   53 +-
 drivers/infiniband/hw/nes/nes_verbs.c         |    8 +-
 drivers/infiniband/hw/nes/nes_verbs.h         |   12 +-
 drivers/infiniband/hw/qib/qib.h               |   15 +-
 drivers/infiniband/hw/qib/qib_driver.c        |   20 +-
 drivers/infiniband/hw/qib/qib_file_ops.c      |    2 +
 drivers/infiniband/hw/qib/qib_iba6120.c       |    2 +
 drivers/infiniband/hw/qib/qib_iba7220.c       |    2 +
 drivers/infiniband/hw/qib/qib_iba7322.c       |  135 ++-
 drivers/infiniband/hw/qib/qib_init.c          |    8 +-
 drivers/infiniband/hw/qib/qib_qp.c            |   90 ++-
 drivers/infiniband/hw/qib/qib_qsfp.c          |   25 +-
 drivers/infiniband/hw/qib/qib_qsfp.h          |    3 +
 drivers/infiniband/hw/qib/qib_rc.c            |   36 +-
 drivers/infiniband/hw/qib/qib_ruc.c           |    7 +-
 drivers/infiniband/hw/qib/qib_srq.c           |    5 +
 drivers/infiniband/hw/qib/qib_sysfs.c         |    3 +-
 drivers/infiniband/hw/qib/qib_uc.c            |   25 +-
 drivers/infiniband/hw/qib/qib_verbs.c         |   36 +-
 drivers/infiniband/hw/qib/qib_verbs.h         |    5 +-
 drivers/infiniband/ulp/ipoib/ipoib_cm.c       |    5 +-
 drivers/infiniband/ulp/ipoib/ipoib_fs.c       |    7 +-
 drivers/net/mlx4/eq.c                         |    2 +-
 drivers/net/mlx4/fw.c                         |    6 +
 drivers/net/mlx4/fw.h                         |    2 +
 drivers/net/mlx4/main.c                       |   36 +-
 drivers/net/mlx4/mlx4.h                       |    4 +
 drivers/net/mlx4/mr.c                         |    2 +-
 drivers/net/mlx4/pd.c                         |   30 +
 drivers/net/mlx4/port.c                       |   72 ++-
 drivers/net/mlx4/qp.c                         |    3 +
 drivers/net/mlx4/srq.c                        |   20 +-
 include/linux/mlx4/device.h                   |   16 +-
 include/linux/mlx4/qp.h                       |    3 +-
 include/rdma/ib_user_verbs.h                  |   48 +-
 include/rdma/ib_verbs.h                       |  106 +++-
 include/rdma/iw_cm.h                          |    4 +-
 include/rdma/rdma_cm.h                        |    1 +
 include/rdma/rdma_user_cm.h                   |    3 +-
 84 files changed, 4738 insertions(+), 984 deletions(-)
 create mode 100644 drivers/infiniband/hw/nes/nes_mgt.c
 create mode 100644 drivers/infiniband/hw/nes/nes_mgt.h

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2011-08-18 15:54 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2011-08-18 15:54 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Hi Linus,

Please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a few fixes:
 - Fix for crash on boot in IPoIB from Bernd Schubert
 - Two iSER bugs from Or Gerlitz

Bernd Schubert (1):
      IPoIB: Fix possible NULL dereference in ipoib_start_xmit()

Or Gerlitz (2):
      IBiser: Fix wrong mask when sizeof (dma_addr_t) > sizeof (unsigned long)
      IB/iser: Support iSCSI PDU padding

Roland Dreier (1):
      Merge branches 'ipoib' and 'iser' into for-next

 drivers/infiniband/ulp/ipoib/ipoib_main.c    |    8 +++++---
 drivers/infiniband/ulp/iser/iscsi_iser.c     |   10 +++++++---
 drivers/infiniband/ulp/iser/iscsi_iser.h     |    2 +-
 drivers/infiniband/ulp/iser/iser_initiator.c |    2 +-
 4 files changed, 14 insertions(+), 8 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2011-07-22 19:08 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2011-07-22 19:08 UTC (permalink / raw)
  To: Linus Torvalds, Andrew Morton; +Cc: linux-kernel, linux-rdma

Hi Linus,

Congrats on the recent version number bump.  Please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get my 3.1 merge window changes:
 - Various fixes to the qib hardware driver.
 - Improvements to IBoE support, mostly in the mlx4 hardware driver.
 - A nice cleanup to the mthca driver from Goldwyn Rodrigues that
   actually lets this pull request delete more lines than it adds.
 - Various other small fixes.

Bart Van Assche (2):
      IB/srp: Avoid duplicate devices from LUN scan
      RDMA: Allow for NULL .modify_device() and .modify_port() methods

Dotan Barak (1):
      mlx4_core: Bump the driver version to 1.0

Edwin van Vliet (1):
      IB/qib: Remove double define

Goldwyn Rodrigues (1):
      IB/mthca: Stop returning separate error and status from FW commands

Jack Morgenstein (1):
      RDMA/cma: Avoid assigning an IS_ERR value to cm_id pointer in CMA id object

Jon Mason (2):
      IB/qib: Remove unnecessary read of PCI_CAP_ID_EXP
      IB/mthca: Remove unnecessary read of PCI_CAP_ID_EXP

Manuel Zerpies (1):
      RDMA/cxgb4: Use printk_ratelimited() instead of printk_ratelimit()

Mike Marciniszyn (2):
      MAINTAINERS: Update ipath/qib (QLogic IB adapter) entries
      IB/qib: Defer HCA error events to tasklet

Mitko Haralanov (1):
      IB/qib: Update active link width

Moni Shoua (1):
      RDMA/cma: Don't allow IPoIB port space for IBoE

Motohiro KOSAKI (2):
      IB/qib: Convert old cpumask api into new one
      IB/ipath: Convert old cpumask api into new one

Or Gerlitz (9):
      IB/core: Add GID change event
      IB/mlx4: Generate GID change events in IBoE code
      mlx4_core: Extend capability flags to 64 bits
      mlx4_core: Read extended capabilities into the flags field
      mlx4_core: Fix location of counter index in QP context struct
      mlx4_core: Add network flow counters
      IB/pma: Add include file for IBA performance counters definitions
      IB/mlx4: Use flow counters on IBoE ports
      IB/mlx4: Support PMA counters for IBoE

Ram Vepa (2):
      IB/qib: Add sysfs interface to read free contexts
      IB/qib: Fix potential deadlock with link down interrupt

Roland Dreier (1):
      Merge branches 'cma', 'cxgb4', 'ipath', 'misc', 'mlx4', 'mthca', 'qib' and 'srp' into for-next

 MAINTAINERS                                  |   11 +-
 drivers/infiniband/core/cache.c              |    3 +-
 drivers/infiniband/core/cma.c                |   84 ++++----
 drivers/infiniband/core/device.c             |    6 +
 drivers/infiniband/hw/amso1100/c2_provider.c |    9 -
 drivers/infiniband/hw/cxgb3/iwch_provider.c  |    8 -
 drivers/infiniband/hw/cxgb4/provider.c       |    8 -
 drivers/infiniband/hw/cxgb4/resource.c       |    9 +-
 drivers/infiniband/hw/ipath/ipath_file_ops.c |   11 +-
 drivers/infiniband/hw/ipath/ipath_mad.c      |  198 +++---------------
 drivers/infiniband/hw/mlx4/mad.c             |   68 +++++++-
 drivers/infiniband/hw/mlx4/main.c            |   21 ++-
 drivers/infiniband/hw/mlx4/mlx4_ib.h         |    1 +
 drivers/infiniband/hw/mlx4/qp.c              |   10 +-
 drivers/infiniband/hw/mthca/mthca_cmd.c      |  276 ++++++++++++++------------
 drivers/infiniband/hw/mthca/mthca_cmd.h      |   93 ++++-----
 drivers/infiniband/hw/mthca/mthca_cq.c       |   15 +--
 drivers/infiniband/hw/mthca/mthca_eq.c       |   43 +---
 drivers/infiniband/hw/mthca/mthca_mad.c      |   15 +-
 drivers/infiniband/hw/mthca/mthca_main.c     |  175 +++++------------
 drivers/infiniband/hw/mthca/mthca_mcg.c      |  101 +++-------
 drivers/infiniband/hw/mthca/mthca_memfree.c  |   43 ++---
 drivers/infiniband/hw/mthca/mthca_mr.c       |   35 +---
 drivers/infiniband/hw/mthca/mthca_provider.c |   77 +------
 drivers/infiniband/hw/mthca/mthca_qp.c       |   49 ++----
 drivers/infiniband/hw/mthca/mthca_reset.c    |    2 +-
 drivers/infiniband/hw/mthca/mthca_srq.c      |   33 +---
 drivers/infiniband/hw/nes/nes_verbs.c        |   11 -
 drivers/infiniband/hw/qib/qib.h              |    3 +
 drivers/infiniband/hw/qib/qib_file_ops.c     |   16 +-
 drivers/infiniband/hw/qib/qib_iba7220.c      |   26 +++-
 drivers/infiniband/hw/qib/qib_iba7322.c      |   72 +++++--
 drivers/infiniband/hw/qib/qib_mad.c          |   78 ++++----
 drivers/infiniband/hw/qib/qib_mad.h          |  143 +-------------
 drivers/infiniband/hw/qib/qib_pcie.c         |    8 +-
 drivers/infiniband/hw/qib/qib_sysfs.c        |   14 ++
 drivers/infiniband/ulp/srp/ib_srp.c          |    2 +
 drivers/net/mlx4/en_ethtool.c                |    9 +-
 drivers/net/mlx4/en_main.c                   |    3 +-
 drivers/net/mlx4/en_netdev.c                 |    5 +-
 drivers/net/mlx4/en_port.c                   |    6 +-
 drivers/net/mlx4/en_selftest.c               |    3 +-
 drivers/net/mlx4/fw.c                        |   39 +++--
 drivers/net/mlx4/fw.h                        |    8 +-
 drivers/net/mlx4/main.c                      |   58 +++++-
 drivers/net/mlx4/mcg.c                       |   17 +-
 drivers/net/mlx4/mlx4.h                      |    5 +-
 drivers/net/mlx4/port.c                      |    8 +-
 include/linux/mlx4/cmd.h                     |    3 +
 include/linux/mlx4/device.h                  |   60 ++++--
 include/linux/mlx4/qp.h                      |    8 +-
 include/rdma/ib_pma.h                        |  156 +++++++++++++++
 include/rdma/ib_verbs.h                      |    3 +-
 53 files changed, 1006 insertions(+), 1162 deletions(-)
 create mode 100644 include/rdma/ib_pma.h

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2011-06-21 16:18 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2011-06-21 16:18 UTC (permalink / raw)
  To: Linus Torvalds, Andrew Morton; +Cc: linux-rdma, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a few fixes for the cxgb4 and qib hardware device drivers.

Mitko Haralanov (1):
      IB/qib: Ensure that LOS and DFE are being turned off

Roland Dreier (1):
      Merge branches 'cxgb4' and 'qib' into for-next

Steve Wise (3):
      RDMA/cxgb4: Don't exceed hw IQ depth limit for user CQs
      RDMA/cxgb4: Don't truncate MR lengths
      RDMA/cxgb4: Couple of abort fixes

 drivers/infiniband/hw/cxgb4/cm.c        |   46 +++++++++++++++++++++++++------
 drivers/infiniband/hw/cxgb4/cq.c        |    4 +++
 drivers/infiniband/hw/cxgb4/mem.c       |    2 +-
 drivers/infiniband/hw/cxgb4/qp.c        |    5 +---
 drivers/infiniband/hw/qib/qib_iba7322.c |   25 ++++++++++++-----
 drivers/infiniband/hw/qib/qib_intr.c    |    6 +++-
 6 files changed, 66 insertions(+), 22 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2011-05-26 16:46 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2011-05-26 16:46 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-rdma, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get the second, main batch of 2.6.40 changes:
 - Add netlink-based way to dump active RDMA connections
 - Update char devices to use /dev/infiniband/... paths
 - Chelsio driver fixes
 - Fix for crash on access to QP0 with IBoE devices
 - Couple of warning fixes

Ira Weiny (1):
      IB/mad: Return EPROTONOSUPPORT when an RDMA device lacks the QP required

Liu Yuan (1):
      RDMA/nes: Add a check for strict_strtoul()

Nir Muchtar (4):
      RDMA: Add error handling to ib_core_init()
      RDMA/cma: Export enum cma_state in <rdma/rdma_cm.h>
      RDMA/cma: Add support for netlink statistics export
      RDMA/cma: Save PID of ID's owner

Roland Dreier (7):
      RDMA: Add netlink infrastructure
      RDMA/ucma: Add .nodename/.mode to tell userspace where to create device node
      IB/uverbs: Add devnode method to set path/mode
      IB: Add devnode methods to cm_class and umad_class
      IB/srp: Fix integer -> pointer cast warnings
      RDMA: Update exported headers list
      Merge branches 'cma', 'cxgb3', 'cxgb4', 'misc', 'nes', 'netlink', 'srp' and 'uverbs' into for-next

Sean Hefty (1):
      RDMA/cma: Pass QP type into rdma_create_id()

Steve Wise (2):
      RDMA/cxgb4: Use completion objects for event blocking
      RDMA/cxgb3: Don't post zero-byte read if endpoint is going away

 drivers/infiniband/Kconfig                  |    1 +
 drivers/infiniband/core/Makefile            |    2 +-
 drivers/infiniband/core/cm.c                |    8 +
 drivers/infiniband/core/cma.c               |  308 +++++++++++++++++----------
 drivers/infiniband/core/device.c            |   25 ++-
 drivers/infiniband/core/mad.c               |    7 +
 drivers/infiniband/core/netlink.c           |  190 +++++++++++++++++
 drivers/infiniband/core/ucma.c              |   35 +++-
 drivers/infiniband/core/user_mad.c          |    7 +
 drivers/infiniband/core/uverbs_main.c       |    8 +
 drivers/infiniband/hw/cxgb3/iwch_cm.c       |   26 ++-
 drivers/infiniband/hw/cxgb3/iwch_provider.h |    2 +-
 drivers/infiniband/hw/cxgb3/iwch_qp.c       |    6 +-
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h      |   18 +--
 drivers/infiniband/hw/nes/nes.c             |    4 +-
 drivers/infiniband/hw/qib/Kconfig           |    2 +-
 drivers/infiniband/ulp/iser/iser_verbs.c    |    2 +-
 drivers/infiniband/ulp/srp/ib_srp.c         |    4 +-
 include/linux/netlink.h                     |    1 +
 include/rdma/Kbuild                         |    5 +
 include/rdma/ib_user_cm.h                   |    1 +
 include/rdma/rdma_cm.h                      |   19 ++-
 include/rdma/rdma_netlink.h                 |   92 ++++++++
 net/9p/trans_rdma.c                         |    3 +-
 net/rds/ib.c                                |    2 +-
 net/rds/ib_cm.c                             |    2 +-
 net/rds/iw.c                                |    2 +-
 net/rds/iw_cm.c                             |    2 +-
 net/rds/rdma_transport.c                    |    3 +-
 net/sunrpc/xprtrdma/svc_rdma_transport.c    |    3 +-
 net/sunrpc/xprtrdma/verbs.c                 |    2 +-
 31 files changed, 633 insertions(+), 159 deletions(-)
 create mode 100644 drivers/infiniband/core/netlink.c
 create mode 100644 include/rdma/rdma_netlink.h

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2011-05-19 18:17 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2011-05-19 18:17 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-rdma

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get the first batch of 2.6.40 changes: mostly fixes to the
cxgb4 and qib low-level drivers, plus a couple of RDMA CM fixes.

Hefty, Sean (2):
      RDMA/cma: Fix handling of IPv6 addressing in cma_use_port
      RDMA/cma: Add an ID_REUSEADDR option

Mitko Haralanov (1):
      IB/qib: Prevent driver hang with unprogrammed boards

Roel Kluin (1):
      RDMA/cxgb4: Fix missing parentheses

Roland Dreier (2):
      RDMA/iwcm: Get rid of enum iw_cm_event_status
      Merge branches 'cma', 'cxgb4' and 'qib' into for-next

Sergei Shtylyov (2):
      IB/ipath: Use pci_dev->revision, again
      IB/qib: Use pci_dev->revision

Steve Wise (4):
      RDMA/cxgb4: Don't change QP state outside EP lock
      RDMA/cxgb4: Initialization errors can cause crash
      RDMA/cxgb4: Reset wait condition atomically
      RDMA/cxgb4: EEH errors can hang the driver

 drivers/infiniband/core/cma.c              |  207 +++++++++++++++++++---------
 drivers/infiniband/core/iwcm.c             |    2 +-
 drivers/infiniband/core/ucma.c             |    7 +
 drivers/infiniband/hw/cxgb4/cm.c           |   46 ++-----
 drivers/infiniband/hw/cxgb4/device.c       |  115 +++++++++-------
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h     |   36 ++++--
 drivers/infiniband/hw/cxgb4/provider.c     |    2 -
 drivers/infiniband/hw/cxgb4/qp.c           |    3 +-
 drivers/infiniband/hw/ipath/ipath_driver.c |    9 +-
 drivers/infiniband/hw/nes/nes_cm.c         |   16 +-
 drivers/infiniband/hw/nes/nes_verbs.c      |    2 +-
 drivers/infiniband/hw/qib/qib_iba7322.c    |    3 +-
 drivers/infiniband/hw/qib/qib_pcie.c       |    5 +-
 include/rdma/iw_cm.h                       |   11 +--
 include/rdma/rdma_cm.h                     |   10 ++
 include/rdma/rdma_user_cm.h                |    5 +-
 16 files changed, 278 insertions(+), 201 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2011-03-25 19:07 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2011-03-25 19:07 UTC (permalink / raw)
  To: Linus Torvalds, Andrew Morton; +Cc: linux-kernel, linux-rdma

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get one fix for a bug introduced into the nes driver through
the net tree:

Roland Dreier (1):
      RDMA/nes: Fix test of uninitialized netdev

 drivers/infiniband/hw/nes/nes_cm.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2011-03-23 17:47 Roland Dreier
@ 2011-03-23 18:15 ` Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2011-03-23 18:15 UTC (permalink / raw)
  To: Linus Torvalds, Andrew Morton; +Cc: linux-rdma, linux-kernel

On Wed, Mar 23, 2011 at 10:47 AM, Roland Dreier <roland@kernel.org> wrote:
> drivers/infiniband/core/addr.c           |    2 +-
>  drivers/infiniband/core/agent.c          |    3 +-
>  drivers/infiniband/hw/mthca/mthca_main.c |    3 +
>  drivers/infiniband/hw/nes/nes.c          |    2 +-
>  drivers/infiniband/ulp/srp/ib_srp.c      |  725 ++++++++++++++++++++----------
>  drivers/infiniband/ulp/srp/ib_srp.h      |   38 ++-
>  6 files changed, 521 insertions(+), 252 deletions(-)

Somehow I missed a hunk of

 IB: Increase DMA max_segment_size on Mellanox hardware

diffstat now should look like

 drivers/infiniband/core/addr.c           |    2 +-
 drivers/infiniband/core/agent.c          |    3 +-
 drivers/infiniband/hw/mthca/mthca_main.c |    3 +
 drivers/infiniband/hw/nes/nes.c          |    2 +-
 drivers/infiniband/ulp/srp/ib_srp.c      |  725 ++++++++++++++++++++----------
 drivers/infiniband/ulp/srp/ib_srp.h      |   38 ++-
 drivers/net/mlx4/main.c                  |    3 +
 7 files changed, 524 insertions(+), 252 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2011-03-23 17:47 Roland Dreier
  2011-03-23 18:15 ` Roland Dreier
  0 siblings, 1 reply; 223+ messages in thread
From: Roland Dreier @ 2011-03-23 17:47 UTC (permalink / raw)
  To: Linus Torvalds, Andrew Morton; +Cc: linux-rdma, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get the second batch of 2.6.39 changes:
 - Dave Dillow's SRP initiator changes
 - Fix to uninitialized return value introduced by net tree merge
 - A couple of other minor cleanups

David Dillow (7):
      IB/srp: always avoid non-zero offsets into an FMR
      IB/srp: move IB CM setup completion into its own function
      IB/srp: allow sg_tablesize to be set for each target
      IB/srp: rework mapping engine to use multiple FMR entries
      IB/srp: add support for indirect tables that don't fit in SRP_CMD
      IB/srp: try to use larger FMR sizes to cover our mappings
      IB: Increase DMA max_segment_size on Mellanox hardware

Michael Heinz (1):
      IB/mad: Improve an error message so error code is included

Roland Dreier (3):
      RDMA/nes: Don't print success message at level KERN_ERR
      Merge branch 'external-indirect' of git://git.kernel.org/.../dad/srp-initiator into srp
      Merge branches 'misc', 'nes' and 'srp' into for-next

Sean Hefty (1):
      RDMA/addr: Fix return of uninitialized ret value

 drivers/infiniband/core/addr.c           |    2 +-
 drivers/infiniband/core/agent.c          |    3 +-
 drivers/infiniband/hw/mthca/mthca_main.c |    3 +
 drivers/infiniband/hw/nes/nes.c          |    2 +-
 drivers/infiniband/ulp/srp/ib_srp.c      |  725 ++++++++++++++++++++----------
 drivers/infiniband/ulp/srp/ib_srp.h      |   38 ++-
 6 files changed, 521 insertions(+), 252 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2011-03-15 18:01 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2011-03-15 18:01 UTC (permalink / raw)
  To: Linus Torvalds, Andrew Morton; +Cc: linux-kernel, linux-rdma

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get the first batch of 2.6.39 changes:
 - Fixes and improvements for the iw_cxgb4 low-level driver
 - Fixes to the ib_qib low-level driver
 - Fixes for crashes in the RDMA CM (also tagged for stable)

Mitko Haralanov (3):
      IB/qib: Return correct MAD when setting link width to 255
      IB/qib: Set default LE2 value for active cables to 0
      IB/qib: Fix M_Key field in SubnGet and SubnGetResp MADs

Nicolas Kaiser (1):
      IB/ipath: Don't reset disabled devices

Roland Dreier (1):
      Merge branches 'cma', 'cxgb4', 'ipath' and 'qib' into for-next

Sean Hefty (4):
      RDMA/cma: Fix crash in request handlers
      IB/cm: Bump reference count on cm_id before invoking callback
      IB/cm: Cancel pending LAP message when exiting IB_CM_ESTABLISH state
      RDMA/cma: Replace global lock in rdma_destroy_id() with id-specific one

Steve Wise (7):
      RDMA/cxgb4: Turn on delayed ACK
      RDMA/cxgb4: Remove db_drop_task
      RDMA/cxgb4: Do CIDX_INC updates every 1/16 CQ depth CQE reaps
      RDMA/cxgb4: Enable on-chip SQ support by default
      RDMA/cxgb4: Use ULP_MODE_TCPDDP
      RDMA/cxgb4: Dispatch FATAL event on EEH errors
      RDMA/cxgb4: Debugfs dump_qp() updates

 drivers/infiniband/core/cm.c              |   20 +++++++++-
 drivers/infiniband/core/cma.c             |   58 +++++++++++++++-------------
 drivers/infiniband/hw/cxgb4/cm.c          |    6 ++-
 drivers/infiniband/hw/cxgb4/device.c      |   24 +++++++++---
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h    |    1 -
 drivers/infiniband/hw/cxgb4/qp.c          |    4 +-
 drivers/infiniband/hw/cxgb4/t4.h          |    8 +++-
 drivers/infiniband/hw/ipath/ipath_sysfs.c |    1 +
 drivers/infiniband/hw/qib/qib_iba7322.c   |   13 +++++-
 drivers/infiniband/hw/qib/qib_mad.c       |   12 +++--
 drivers/infiniband/hw/qib/qib_qsfp.h      |    2 +
 drivers/net/cxgb4/t4_msg.h                |    1 +
 12 files changed, 102 insertions(+), 48 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2011-02-17 22:26 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2011-02-17 22:26 UTC (permalink / raw)
  To: Linus Torvalds, Andrew Morton; +Cc: linux-kernel, linux-rdma

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a few small things:
 - Don't send events for nonexistent nes devices
 - Fix a couple of double events in qib

Maciej Sosnowski (1):
      RDMA/nes: Don't generate async events for unregistered devices

Mike Marciniszyn (2):
      IB/qib: Fix double add_timer()
      IB/qib: Prevent double completions after a timeout or RNR error

Roland Dreier (1):
      Merge branches 'nes' and 'qib' into for-next

 drivers/infiniband/hw/nes/nes_hw.c |   32 ++++++++++++++++++++------------
 drivers/infiniband/hw/qib/qib_rc.c |    5 ++++-
 2 files changed, 24 insertions(+), 13 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2011-01-17 21:55 Roland Dreier
@ 2011-01-25 16:23 ` Tziporet Koren
  0 siblings, 0 replies; 223+ messages in thread
From: Tziporet Koren @ 2011-01-25 16:23 UTC (permalink / raw)
  To: Roland Dreier; +Cc: torvalds, akpm, linux-kernel, linux-rdma

   On 1/17/2011 11:55 PM, Roland Dreier wrote:
> Linus, please pull from
>
>      master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus
>
> This tree is also available from kernel.org mirrors at:
>
>      git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus
>
> This will get the last batch of InfiniBand/RDMA patches for the merge
> window.  The biggest thing here is Tejun's conversion of the RDMA
> stack away from flush_scheduled_work(); the remaining stuff is mostly
> driver fixes, with an SRP compile warning fix and a vzalloc()
> conversion patch thrown in.
Roland,

What about the new mlx4 device IDs?
We wish to have them in for CX3 so that the new kernel will support it

Thanks,
Tziporet

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2011-01-17 21:55 Roland Dreier
  2011-01-25 16:23 ` Tziporet Koren
  0 siblings, 1 reply; 223+ messages in thread
From: Roland Dreier @ 2011-01-17 21:55 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-kernel, linux-rdma

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get the last batch of InfiniBand/RDMA patches for the merge
window.  The biggest thing here is Tejun's conversion of the RDMA
stack away from flush_scheduled_work(); the remaining stuff is mostly
driver fixes, with an SRP compile warning fix and a vzalloc()
conversion patch thrown in.

Aleksey Senin (1):
      IB/mlx4: Handle protocol field in multicast table

Bart Van Assche (1):
      IB/srp: Test only once whether iu allocation succeeded

Joe Perches (1):
      RDMA: Use vzalloc() to replace vmalloc()+memset(0)

John L. Burr (1):
      IB/mthca: Fix driver when sizeof (phys_addr_t) > sizeof (long)

Maciej Sosnowski (4):
      RDMA/nes: Fix bonding on iw_nes
      RDMA/nes: Generate IB_EVENT_PORT_ERR/PORT_ACTIVE events
      RDMA/nes: Fix SFP+ link down detection issue with switch port disable
      RDMA/nes: Fix incorrect SFP+ link status detection on driver init

Roland Dreier (2):
      mlx4_{core, ib, en}: Fix driver when sizeof (phys_addr_t) > sizeof (long)
      Merge branches 'misc', 'mlx4', 'mthca', 'nes' and 'srp' into for-next

Tejun Heo (1):
      RDMA: Update workqueue usage

 drivers/infiniband/core/cache.c                |    4 +-
 drivers/infiniband/core/device.c               |   11 ++-
 drivers/infiniband/core/sa_query.c             |    2 +-
 drivers/infiniband/core/umem.c                 |    2 +-
 drivers/infiniband/hw/amso1100/c2_rnic.c       |    5 +-
 drivers/infiniband/hw/ehca/ipz_pt_fn.c         |    5 +-
 drivers/infiniband/hw/ipath/ipath_driver.c     |    5 +-
 drivers/infiniband/hw/ipath/ipath_file_ops.c   |   11 +--
 drivers/infiniband/hw/ipath/ipath_init_chip.c  |    5 +-
 drivers/infiniband/hw/ipath/ipath_user_pages.c |    2 +-
 drivers/infiniband/hw/mlx4/main.c              |   12 ++-
 drivers/infiniband/hw/mthca/mthca_catas.c      |    5 +-
 drivers/infiniband/hw/mthca/mthca_cmd.c        |    2 +-
 drivers/infiniband/hw/mthca/mthca_eq.c         |    2 +-
 drivers/infiniband/hw/mthca/mthca_main.c       |    2 +-
 drivers/infiniband/hw/mthca/mthca_mr.c         |    2 +-
 drivers/infiniband/hw/nes/nes.c                |   35 ++++++++-
 drivers/infiniband/hw/nes/nes.h                |    4 +
 drivers/infiniband/hw/nes/nes_cm.c             |    8 ++-
 drivers/infiniband/hw/nes/nes_hw.c             |   95 ++++++++++++++++++++++++
 drivers/infiniband/hw/nes/nes_hw.h             |   10 +++
 drivers/infiniband/hw/nes/nes_nic.c            |   78 ++++++++++++++++---
 drivers/infiniband/hw/nes/nes_verbs.c          |   37 +++++++++-
 drivers/infiniband/hw/qib/qib_iba7220.c        |    7 +-
 drivers/infiniband/hw/qib/qib_iba7322.c        |   14 ++--
 drivers/infiniband/hw/qib/qib_init.c           |   33 ++-------
 drivers/infiniband/hw/qib/qib_qsfp.c           |    9 +-
 drivers/infiniband/hw/qib/qib_verbs.h          |    3 +-
 drivers/infiniband/ulp/ipoib/ipoib_cm.c        |   10 +--
 drivers/infiniband/ulp/ipoib/ipoib_main.c      |    3 +-
 drivers/infiniband/ulp/srp/ib_srp.c            |   19 ++---
 drivers/net/mlx4/catas.c                       |    6 +-
 drivers/net/mlx4/en_main.c                     |    3 +-
 drivers/net/mlx4/main.c                        |    2 +-
 drivers/net/mlx4/mcg.c                         |   23 +++---
 include/linux/mlx4/device.h                    |   10 ++-
 include/linux/mlx4/driver.h                    |    6 +-
 include/rdma/ib_verbs.h                        |    3 +
 38 files changed, 351 insertions(+), 144 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2011-01-11 18:38 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2011-01-11 18:38 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-rdma, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get the main batch of InfiniBand/RDMA patches for the merge
window.  There are three main things here:

 - SRP initiator performance improvements from Bart Van Assche and
   Dave Dillow
 - Conversion of IPoIB from LRO to GRO from Or Gerlitz
 - Lots of fixes to hardware drivers, including mostly clearing the
   backlog of qib patches

Ali Ayoub (1):
      mlx4_core: Avoid vunmap() of invalid pointer if allocation fails

Bart Van Assche (6):
      IB/srp: consolidate state change code
      IB/srp: allow lockless work posting
      IB/srp: don't move active requests to their own list
      IB/srp: reduce local coverage for command submission and EH
      IB/srp: reduce lock coverage of command completion
      IB/srp: stop sharing the host lock with SCSI

Dan Carpenter (2):
      IB/mlx4: Handle -ENOMEM in forward_trap()
      IB/mthca: Handle -ENOMEM in forward_trap()

David Dillow (2):
      IB/srp: allow task management without a previous request
      IB/srp: consolidate hot-path variables into cache lines

Joe Perches (2):
      IB/ipath: Use printf extension %pR for struct resource
      RDMA/nes: Fix string continuation line

Mike Marciniszyn (23):
      IB/qib: Remove IB latency turnoff
      IB/qib: Add receive header queue size module parameters
      IB/qib: Add support for the new QME7362 card
      IB/qib: Generate completion callback on errors
      IB/qib: Set port physical state even if other fields are invalid
      IB/qib: UD send with immediate receive completion has wrong size
      IB/qib: Handle transitions from ACTIVE_DEFERRED to ACTIVE better
      IB/qib: Fix multi-Florida HCA host panic on reboot
      IB/qib: Fix context allocation with multiple HCAs
      IB/qib: Clear WAIT_SEND flags when setting QP to error state
      IB/qib: New SERDES init routine and improvements to SI quality
      IB/qib: Reset packet list after freeing
      IB/qib: Add a few new SERDES tunings
      IB/qib: Avoid duplicate writes to the rcv head register
      IB/qib: Fix interrupt mitigation
      IB/qib: Change receive queue/QPN selection
      IB/qib: Add fix missing from earlier patch
      IB/qib: Change QPN increment
      IB/qib: RDMA lkey/rkey validation is inefficient for large MRs
      IB/qib: Issue pre-emptive NAKs on eager buffer overflow
      IB/qib: Unnecessary delayed completions on RC connection
      IB/qib: Improve SERDES tunning on QMH boards
      IB/qib: Fix refcount leak in lkey/rkey validation

Or Gerlitz (2):
      IPoIB: Remove LRO support
      IPoIB: Add GRO support

Roland Dreier (2):
      mlx4_core: Remove warning message about firmware bug
      Merge branches 'cxgb4', 'ipath', 'ipoib', 'mlx4', 'mthca', 'nes', 'qib' and 'srp' into for-next

Stephen Hemminger (1):
      RDMA/cxgb3,cxgb4: Remove dead code

Steve Wise (1):
      RDMA/cxgb4: Don't re-init wait object in init/fini paths

Vladimir Sokolovsky (1):
      IB/mlx4: Don't call dma_free_coherent() with irqs disabled

 drivers/infiniband/hw/cxgb3/cxio_hal.c       |    2 +
 drivers/infiniband/hw/cxgb3/iwch_provider.h  |    2 -
 drivers/infiniband/hw/cxgb3/iwch_qp.c        |   56 ----
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h       |    1 -
 drivers/infiniband/hw/cxgb4/qp.c             |   32 --
 drivers/infiniband/hw/ipath/ipath_driver.c   |    5 +-
 drivers/infiniband/hw/mlx4/cq.c              |    9 +-
 drivers/infiniband/hw/mlx4/mad.c             |    2 +
 drivers/infiniband/hw/mthca/mthca_mad.c      |    2 +
 drivers/infiniband/hw/nes/nes_nic.c          |    4 +-
 drivers/infiniband/hw/qib/qib.h              |    2 +-
 drivers/infiniband/hw/qib/qib_cq.c           |    3 +-
 drivers/infiniband/hw/qib/qib_driver.c       |  155 ++++++++++-
 drivers/infiniband/hw/qib/qib_file_ops.c     |   10 +-
 drivers/infiniband/hw/qib/qib_iba6120.c      |    2 +-
 drivers/infiniband/hw/qib/qib_iba7220.c      |    4 +-
 drivers/infiniband/hw/qib/qib_iba7322.c      |  373 ++++++++++++++++++++++---
 drivers/infiniband/hw/qib/qib_init.c         |    6 +-
 drivers/infiniband/hw/qib/qib_intr.c         |    3 +-
 drivers/infiniband/hw/qib/qib_keys.c         |   80 ++++--
 drivers/infiniband/hw/qib/qib_mad.c          |   45 ++--
 drivers/infiniband/hw/qib/qib_mr.c           |    8 +-
 drivers/infiniband/hw/qib/qib_qp.c           |   32 +--
 drivers/infiniband/hw/qib/qib_rc.c           |   24 ++
 drivers/infiniband/hw/qib/qib_ud.c           |   57 ++--
 drivers/infiniband/hw/qib/qib_user_sdma.c    |    1 +
 drivers/infiniband/hw/qib/qib_verbs.h        |   11 +-
 drivers/infiniband/ulp/ipoib/Kconfig         |    1 -
 drivers/infiniband/ulp/ipoib/ipoib.h         |   12 +-
 drivers/infiniband/ulp/ipoib/ipoib_cm.c      |    1 +
 drivers/infiniband/ulp/ipoib/ipoib_ethtool.c |   51 ----
 drivers/infiniband/ulp/ipoib/ipoib_ib.c      |    8 +-
 drivers/infiniband/ulp/ipoib/ipoib_main.c    |   62 +----
 drivers/infiniband/ulp/srp/ib_srp.c          |  392 ++++++++++++--------------
 drivers/infiniband/ulp/srp/ib_srp.h          |   46 ++--
 drivers/net/mlx4/alloc.c                     |    3 +-
 drivers/net/mlx4/fw.c                        |    4 +-
 37 files changed, 889 insertions(+), 622 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2010-12-13 21:53 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2010-12-13 21:53 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-rdma, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

Just a one thing here: a fix for a user-triggerable integer overflow
as a well as a leak of a few bytes of kernel memory.  The severity is
not too high here as actually hitting this requires a system with real
RDMA hardware, and the user must be granted direct access to that hardware.

Dan Carpenter (1):
      IB/uverbs: Handle large number of entries in poll CQ

 drivers/infiniband/core/uverbs_cmd.c |  101 +++++++++++++++++++---------------
 1 files changed, 57 insertions(+), 44 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2010-12-02 18:57 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2010-12-02 18:57 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-rdma, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

Just a few small things here:

 - Fix a minor leak of a few bytes of kernel stack
 - MAINTAINERS update
 - Fix a few small issues introduced with the merge of IBoE support in 2.6.37-rc1

Chien Tung (1):
      MAINTAINERS: Update NetEffect entry

Eli Cohen (4):
      IB/mlx4: Fix memory ordering of VLAN insertion control bits
      mlx4_core: Workaround firmware bug in query dev cap
      IB/mlx4: Fix IBoE reported link rate
      IB/mlx4: Fix IBoE link state

Or Gerlitz (1):
      IB/pack: Remove some unused code added by the IBoE patches

Roland Dreier (1):
      Merge branches 'misc', 'mlx4' and 'nes' into for-next

Vasiliy Kulikov (1):
      IB: Fix information leak in marshalling code

 MAINTAINERS                               |    3 +-
 drivers/infiniband/core/ud_header.c       |   30 -----------------------------
 drivers/infiniband/core/uverbs_marshall.c |    4 +++
 drivers/infiniband/hw/mlx4/main.c         |    4 +-
 drivers/infiniband/hw/mlx4/qp.c           |   10 ++++----
 drivers/net/mlx4/fw.c                     |    4 +++
 6 files changed, 16 insertions(+), 39 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2010-10-26 20:52 Roland Dreier
@ 2010-10-26 23:17 ` Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2010-10-26 23:17 UTC (permalink / raw)
  To: torvalds; +Cc: akpm, linux-rdma, linux-kernel

Hi Linus,

A) I forgot to push out my for-linus branch, so if you tried earlier, it
wasn't there, but it is now:

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus
    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

B) It was pointed out to me that I missed one patch hunk, so the
diffstat now looks like the below.  One difference is that there now is
a qib_uc.c line and the summary goes from

 74 files changed, 2668 insertions(+), 725 deletions(-)

to

 75 files changed, 2672 insertions(+), 727 deletions(-)

Thanks!
  Roland

 MAINTAINERS                                 |   12 +-
 drivers/infiniband/core/agent.c             |   29 +-
 drivers/infiniband/core/cma.c               |  313 ++++++++++++++-
 drivers/infiniband/core/iwcm.c              |    4 +
 drivers/infiniband/core/mad.c               |   27 ++-
 drivers/infiniband/core/multicast.c         |   23 +-
 drivers/infiniband/core/sa_query.c          |   30 +-
 drivers/infiniband/core/sysfs.c             |   15 +
 drivers/infiniband/core/ucma.c              |   92 ++++-
 drivers/infiniband/core/ud_header.c         |  138 ++++++--
 drivers/infiniband/core/user_mad.c          |    2 +-
 drivers/infiniband/core/uverbs_cmd.c        |    2 +
 drivers/infiniband/core/verbs.c             |   16 +
 drivers/infiniband/hw/amso1100/Kbuild       |    4 +-
 drivers/infiniband/hw/amso1100/c2_intr.c    |    4 +-
 drivers/infiniband/hw/cxgb3/Makefile        |    6 +-
 drivers/infiniband/hw/cxgb3/cxio_hal.c      |    1 +
 drivers/infiniband/hw/cxgb3/cxio_wr.h       |   16 +
 drivers/infiniband/hw/cxgb3/iwch_cm.c       |    4 +-
 drivers/infiniband/hw/cxgb3/iwch_ev.c       |   17 +-
 drivers/infiniband/hw/cxgb3/iwch_provider.c |   24 +-
 drivers/infiniband/hw/cxgb3/iwch_qp.c       |   25 +-
 drivers/infiniband/hw/cxgb3/iwch_user.h     |    8 +
 drivers/infiniband/hw/cxgb4/Makefile        |    2 +-
 drivers/infiniband/hw/cxgb4/cm.c            |  178 ++++-----
 drivers/infiniband/hw/cxgb4/cq.c            |   28 +-
 drivers/infiniband/hw/cxgb4/device.c        |  191 ++++++----
 drivers/infiniband/hw/cxgb4/ev.c            |    2 +-
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h      |   68 +++-
 drivers/infiniband/hw/cxgb4/mem.c           |   11 +-
 drivers/infiniband/hw/cxgb4/provider.c      |   44 ++-
 drivers/infiniband/hw/cxgb4/qp.c            |  283 ++++++++------
 drivers/infiniband/hw/cxgb4/resource.c      |   62 +++
 drivers/infiniband/hw/cxgb4/t4.h            |   44 ++-
 drivers/infiniband/hw/cxgb4/user.h          |    7 +
 drivers/infiniband/hw/ehca/ehca_mrmw.c      |    6 +-
 drivers/infiniband/hw/ipath/Makefile        |    2 +-
 drivers/infiniband/hw/mlx4/ah.c             |  163 +++++++--
 drivers/infiniband/hw/mlx4/mad.c            |   32 +-
 drivers/infiniband/hw/mlx4/main.c           |  553 +++++++++++++++++++++++++--
 drivers/infiniband/hw/mlx4/mlx4_ib.h        |   32 ++-
 drivers/infiniband/hw/mlx4/mr.c             |    2 +-
 drivers/infiniband/hw/mlx4/qp.c             |  195 ++++++++--
 drivers/infiniband/hw/mthca/mthca_qp.c      |    2 +-
 drivers/infiniband/hw/nes/nes_cm.c          |    3 +-
 drivers/infiniband/hw/nes/nes_nic.c         |    1 +
 drivers/infiniband/hw/nes/nes_verbs.c       |   16 +-
 drivers/infiniband/hw/qib/qib.h             |    2 +-
 drivers/infiniband/hw/qib/qib_file_ops.c    |    4 +-
 drivers/infiniband/hw/qib/qib_init.c        |    1 +
 drivers/infiniband/hw/qib/qib_pcie.c        |    8 +-
 drivers/infiniband/hw/qib/qib_rc.c          |    5 +-
 drivers/infiniband/hw/qib/qib_uc.c          |    6 +-
 drivers/infiniband/ulp/ipoib/ipoib_ib.c     |   14 +-
 drivers/infiniband/ulp/ipoib/ipoib_main.c   |    3 +
 drivers/infiniband/ulp/srp/ib_srp.c         |  236 ++++++++----
 drivers/infiniband/ulp/srp/ib_srp.h         |   21 +-
 drivers/net/mlx4/en_main.c                  |   15 +-
 drivers/net/mlx4/en_netdev.c                |   10 +
 drivers/net/mlx4/en_port.c                  |    4 +-
 drivers/net/mlx4/en_port.h                  |    3 +-
 drivers/net/mlx4/fw.c                       |    3 +-
 drivers/net/mlx4/intf.c                     |   21 +
 drivers/net/mlx4/main.c                     |    4 +-
 drivers/net/mlx4/mlx4_en.h                  |    1 +
 drivers/net/mlx4/port.c                     |   19 +
 include/linux/mlx4/cmd.h                    |    2 +
 include/linux/mlx4/device.h                 |   35 ++-
 include/linux/mlx4/driver.h                 |    9 +
 include/linux/mlx4/qp.h                     |    9 +-
 include/rdma/ib_addr.h                      |  134 +++++++-
 include/rdma/ib_pack.h                      |   39 ++-
 include/rdma/ib_user_verbs.h                |    3 +-
 include/rdma/ib_verbs.h                     |   11 +
 include/scsi/srp.h                          |   38 ++
 75 files changed, 2672 insertions(+), 727 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2010-10-26 20:52 Roland Dreier
  2010-10-26 23:17 ` Roland Dreier
  0 siblings, 1 reply; 223+ messages in thread
From: Roland Dreier @ 2010-10-26 20:52 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-rdma, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

The big new feature here is support for InfiniBand-over-Ethernet / IBoE
(aka "RDMA over Converged Ethernet / RoCE").  We also have a new SRP
initiator submaintainer (thanks Dave!), and various fixes all over.

Animesh K Trivedi (1):
      RDMA/iwcm: Fix hang in uninterruptible wait on cm_id destroy

Bart Van Assche (3):
      IB/srp: Preparation for transmit ring response allocation
      IB/srp: Reduce number of BUSY conditions
      IB/srp: Use list_first_entry()

Chien Tung (1):
      RDMA/nes: Report correct port state if interface is down

Christoph Lameter (1):
      IPoIB: Set pkt_type correctly for multicast packets (fix IGMP breakage)

Dan Carpenter (1):
      RDMA/nes: Remove unneeded variable

David Dillow (3):
      IB/srp: Implement SRP_CRED_REQ and SRP_AER_REQ
      IB/srp: Eliminate two forward declarations
      IB/srp: Sync buffer before posting send

Eli Cohen (16):
      IB/core: Add link layer property to ports
      mlx4_core: Allow log_mtts_per_seg up to 7
      IB/mlx4: Limit size of fast registration WRs
      IPoIB: Skip IBoE ports
      IB/mad: IBoE supports only QP1 (no QP0)
      RDMA/cm: Add RDMA CM support for IBoE devices
      IB/pack: IBoE UD packet packing support
      IPoIB: Set dev_id field of net_device
      IB/uverbs: Return link layer type to userspace for query port operation
      mlx4_core: Allow protocol drivers to find corresponding interfaces
      mlx4_core: Update data structures and constants for IBoE
      mlx4_en: Change multicast promiscuous mode to support IBoE
      IB/mlx4: Add support for IBoE
      IB/core: Add VLAN support for IBoE
      IB/mlx4: Add VLAN support for IBoE
      IB/core: Add link layer type information to sysfs

Jack Morgenstein (1):
      IB/mlx4: Signal node desc changes to SM by using FW to generate trap 144

Jason Gunthorpe (3):
      IB/qib: Process RDMA WRITE ONLY with IMMEDIATE properly
      IB/qib: Fix extra log level in qib_early_err()
      IB/qib: clean up properly if pci_set_consistent_dma_mask() fails

Joe Perches (4):
      RDMA/amso1100: Remove KERN_<level> from pr_<level> use
      IB/qib: Remove unnecessary casts of private_data
      RDMA/cxgb3: Remove unnecessary KERN_<level> use
      RDMA/cxgb4: Remove unnecessary KERN_<level> use

Maciej Sosnowski (1):
      RDMA/nes: Turn carrier off on ifdown

Ralph Campbell (2):
      IB/qib: Fix uninitialized pointer if CONFIG_PCI_MSI not set
      IB/qib: Allow driver to load if PCIe AER fails

Roland Dreier (5):
      RDMA/cxgb4: Fix warnings about casts to/from pointers of different sizes
      MAINTAINERS: Fix broken link to http://www.openib.org/
      RDMA/nes: Fix cast-to-pointer warnings on 32-bit
      MAINTAINERS: Hand off SCSI RDMA Protocol (SRP) initiator to Dave Dillow
      Merge branches 'amso1100', 'cma', 'cxgb3', 'cxgb4', 'ehca', 'iboe', 'ipoib', 'misc', 'mlx4', 'nes', 'qib' and 'srp' into for-next

Sonny Rao (1):
      IB/ehca: Fix driver on relocatable kernel

Steve Wise (19):
      RDMA/cxgb4: Don't use null ep ptr
      RDMA/cxgb4: Zero out ISGL padding
      RDMA/cxgb4: Ignore positive return values from cxgb4_*_send() functions
      RDMA/cxgb4: Ignore TERMINATE CQEs
      RDMA/cxgb4: Handle CPL_RDMA_TERMINATE messages
      RDMA/cxgb4: Log HW lack-of-resource errors
      RDMA/cxgb4: debugfs files for dumping active stags
      RDMA/cxgb4: Centralize the wait logic
      RDMA/cxgb4: Support on-chip SQs
      RDMA/cxgb4: Use a mutex for QP and EP state transitions
      RDMA/cxgb4: Set the default TCP send window to 128KB
      RDMA/cxgb4: Don't set completion flag for read requests
      RDMA/cxgb4: Fastreg NSMR fixes
      RDMA/cxgb4: Add default_llseek to debugfs files
      RDMA/cxgb4: Use simple_read_from_buffer() for debugfs handlers
      RDMA/cxgb4: Export T4 TCP MIB
      RDMA/cxgb4: Use cxgb4 service for packet gl to skb
      RDMA/cxgb3: When a user QP is marked in error, also mark the CQs in error
      RDMA/ucma: Allow tuning the max listen backlog

Thomas Gleixner (1):
      IB/umad: Make user_mad semaphore a real one

matt mooney (1):
      IB: Replace EXTRA_CFLAGS with ccflags-y

 MAINTAINERS                                 |   12 +-
 drivers/infiniband/core/agent.c             |   29 +-
 drivers/infiniband/core/cma.c               |  313 ++++++++++++++-
 drivers/infiniband/core/iwcm.c              |    4 +
 drivers/infiniband/core/mad.c               |   27 ++-
 drivers/infiniband/core/multicast.c         |   23 +-
 drivers/infiniband/core/sa_query.c          |   30 +-
 drivers/infiniband/core/sysfs.c             |   15 +
 drivers/infiniband/core/ucma.c              |   92 ++++-
 drivers/infiniband/core/ud_header.c         |  138 ++++++--
 drivers/infiniband/core/user_mad.c          |    2 +-
 drivers/infiniband/core/uverbs_cmd.c        |    2 +
 drivers/infiniband/core/verbs.c             |   16 +
 drivers/infiniband/hw/amso1100/Kbuild       |    4 +-
 drivers/infiniband/hw/amso1100/c2_intr.c    |    4 +-
 drivers/infiniband/hw/cxgb3/Makefile        |    6 +-
 drivers/infiniband/hw/cxgb3/cxio_hal.c      |    1 +
 drivers/infiniband/hw/cxgb3/cxio_wr.h       |   16 +
 drivers/infiniband/hw/cxgb3/iwch_cm.c       |    4 +-
 drivers/infiniband/hw/cxgb3/iwch_ev.c       |   17 +-
 drivers/infiniband/hw/cxgb3/iwch_provider.c |   24 +-
 drivers/infiniband/hw/cxgb3/iwch_qp.c       |   25 +-
 drivers/infiniband/hw/cxgb3/iwch_user.h     |    8 +
 drivers/infiniband/hw/cxgb4/Makefile        |    2 +-
 drivers/infiniband/hw/cxgb4/cm.c            |  178 ++++-----
 drivers/infiniband/hw/cxgb4/cq.c            |   28 +-
 drivers/infiniband/hw/cxgb4/device.c        |  191 ++++++----
 drivers/infiniband/hw/cxgb4/ev.c            |    2 +-
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h      |   68 +++-
 drivers/infiniband/hw/cxgb4/mem.c           |   11 +-
 drivers/infiniband/hw/cxgb4/provider.c      |   44 ++-
 drivers/infiniband/hw/cxgb4/qp.c            |  283 ++++++++------
 drivers/infiniband/hw/cxgb4/resource.c      |   62 +++
 drivers/infiniband/hw/cxgb4/t4.h            |   44 ++-
 drivers/infiniband/hw/cxgb4/user.h          |    7 +
 drivers/infiniband/hw/ehca/ehca_mrmw.c      |    6 +-
 drivers/infiniband/hw/ipath/Makefile        |    2 +-
 drivers/infiniband/hw/mlx4/ah.c             |  163 +++++++--
 drivers/infiniband/hw/mlx4/mad.c            |   32 +-
 drivers/infiniband/hw/mlx4/main.c           |  553 +++++++++++++++++++++++++--
 drivers/infiniband/hw/mlx4/mlx4_ib.h        |   32 ++-
 drivers/infiniband/hw/mlx4/mr.c             |    2 +-
 drivers/infiniband/hw/mlx4/qp.c             |  195 ++++++++--
 drivers/infiniband/hw/mthca/mthca_qp.c      |    2 +-
 drivers/infiniband/hw/nes/nes_cm.c          |    3 +-
 drivers/infiniband/hw/nes/nes_nic.c         |    1 +
 drivers/infiniband/hw/nes/nes_verbs.c       |   16 +-
 drivers/infiniband/hw/qib/qib.h             |    2 +-
 drivers/infiniband/hw/qib/qib_file_ops.c    |    4 +-
 drivers/infiniband/hw/qib/qib_init.c        |    1 +
 drivers/infiniband/hw/qib/qib_pcie.c        |    8 +-
 drivers/infiniband/hw/qib/qib_rc.c          |    5 +-
 drivers/infiniband/ulp/ipoib/ipoib_ib.c     |   14 +-
 drivers/infiniband/ulp/ipoib/ipoib_main.c   |    3 +
 drivers/infiniband/ulp/srp/ib_srp.c         |  236 ++++++++----
 drivers/infiniband/ulp/srp/ib_srp.h         |   21 +-
 drivers/net/mlx4/en_main.c                  |   15 +-
 drivers/net/mlx4/en_netdev.c                |   10 +
 drivers/net/mlx4/en_port.c                  |    4 +-
 drivers/net/mlx4/en_port.h                  |    3 +-
 drivers/net/mlx4/fw.c                       |    3 +-
 drivers/net/mlx4/intf.c                     |   21 +
 drivers/net/mlx4/main.c                     |    4 +-
 drivers/net/mlx4/mlx4_en.h                  |    1 +
 drivers/net/mlx4/port.c                     |   19 +
 include/linux/mlx4/cmd.h                    |    2 +
 include/linux/mlx4/device.h                 |   35 ++-
 include/linux/mlx4/driver.h                 |    9 +
 include/linux/mlx4/qp.h                     |    9 +-
 include/rdma/ib_addr.h                      |  134 +++++++-
 include/rdma/ib_pack.h                      |   39 ++-
 include/rdma/ib_user_verbs.h                |    3 +-
 include/rdma/ib_verbs.h                     |   11 +
 include/scsi/srp.h                          |   38 ++
 74 files changed, 2668 insertions(+), 725 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2010-09-27 16:31 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2010-09-27 16:31 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-rdma, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get one cxgb3 driver fix:

Steve Wise (1):
      RDMA/cxgb3: Turn off RX coalescing for iWARP connections

 drivers/infiniband/hw/cxgb3/iwch_cm.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2010-09-08 21:45 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2010-09-08 21:45 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-rdma, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a few small driver fixes.

Chien Tung (1):
      RDMA/nes: Write correct register write to set TX pause param

Faisal Latif (3):
      RDMA/nes: Fix double CLOSE event indication crash
      RDMA/nes: Change state to closing after FIN
      RDMA/nes: Fix hang with modified FIN handling on A0 cards

Roland Dreier (1):
      Merge branches 'cxgb3' and 'nes' into for-linus

Steve Wise (1):
      RDMA/cxgb3: Don't exceed the max HW CQ depth

 drivers/infiniband/hw/cxgb3/cxio_hal.h |    2 +-
 drivers/infiniband/hw/nes/nes_cm.c     |   18 ++++++++++--------
 drivers/infiniband/hw/nes/nes_hw.c     |   14 +++++++++++++-
 drivers/infiniband/hw/nes/nes_hw.h     |    1 +
 drivers/infiniband/hw/nes/nes_nic.c    |    4 ++--
 5 files changed, 27 insertions(+), 12 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2010-08-09 22:44 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2010-08-09 22:44 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-rdma, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get one cxgb4 patch that I was holding until prerequisites
merged through the net tree.

Steve Wise (1):
      RDMA/cxgb4: Obtain RDMA QID ranges from LLD/FW

 drivers/infiniband/hw/cxgb4/device.c   |    9 +++++++--
 drivers/infiniband/hw/cxgb4/resource.c |    7 ++++---
 drivers/infiniband/hw/cxgb4/t4.h       |    2 --
 3 files changed, 11 insertions(+), 7 deletions(-)

-- 
Roland Dreier <rolandd@cisco.com> || For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/index.html

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] Please pull infiniband.git
@ 2010-08-05 21:37 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2010-08-05 21:37 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-rdma, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get the 2.6.36 merge window pile, which actually does not
include anything big this time around.

Aleksey Senin (1):
      IB: Rename RAW_ETY to RAW_ETHERTYPE

Alexander Schmidt (3):
      IB/ehca: Fix bitmask handling for lock_hcalls
      IB/ehca: Catch failing ioremap()
      IB/ehca: Init irq tasklet before irq can happen

Arnd Bergmann (1):
      IB/qib: Use generic_file_llseek

Bart Van Assche (3):
      IB/srp: Use print_hex_dump()
      IB/srp: Make receive buffer handling more robust
      IB/srp: Export req_lim via sysfs

Ben Hutchings (1):
      IB/ipath: Fix probe failure path

Chien Tung (1):
      RDMA/nes: Store and print eeprom version

Dan Carpenter (2):
      RDMA/cxgb4: Remove unneeded assignment
      RDMA/cxgb3: Clean up signed check of unsigned variable

Dave Olson (1):
      IB/qib: Allow PSM to select from multiple port assignment algorithms

David Miller (1):
      IB/qib: Add missing <linux/slab.h> include

David Rientjes (1):
      RDMA/cxgb4: Remove dependency on __GFP_NOFAIL

Faisal Latif (1):
      RDMA/nes: Fix hangs on ifdown

Ira Weiny (1):
      IB/qib: Allow writes to the diag_counters to be able to clear them

Julia Lawall (1):
      IB/ehca: Drop unnecessary NULL test

Miroslaw Walukiewicz (1):
      RDMA/nes: Read firmware version from correct place

Or Gerlitz (3):
      IB/iser: Make needlessly global iser_alloc_rx_descriptors() static
      RDMA/cxgb3: Make needlessly global iwch_l2t_send() static
      RDMA/nes: Fix two sparse warnings

Peter Huewe (1):
      RDMA/nes: Convert pci_table entries to PCI_VDEVICE

Ralph Campbell (5):
      IB/qib: Avoid variable-length array
      IB/qib: Turn off IB latency mode
      IB/qib: Set cfgctxts to number of CPUs by default
      IB/qib: Limit the number of packets processed per interrupt
      IB/qib: Fix race between qib_error_qp() and receive packet processing

Roland Dreier (8):
      IB/umad: Remove unused-but-set variable 'already_dead'
      RDMA/nes: Rewrite expression to avoid undefined semantics
      RDMA/cxgb4: Remove unneeded NULL check
      RDMA/nes: Get rid of "set but not used" variables
      RDMA/nes: Fix showing wqm_quanta
      RDMA/nes: Fix misindented code
      RDMA/nes: Fix confusing if statement indentation
      Merge branches 'cxgb3', 'cxgb4', 'ehca', 'ipath', 'misc', 'nes', 'qib' and 'srp' into for-next

Sean Hefty (1):
      IB/cm: Check LAP state before sending an MRA

Steve Wise (6):
      RDMA/cxgb4: Add module option to tweak delayed ack
      RDMA/cxgb4: Support variable sized work requests
      RDMA/cxgb4: Fix race in fini path
      RDMA/cxgb4: Use correct control txq
      RDMA/cxgb4: Set/reset the EP timer inside EP lock
      RDMA/cxgb4: Add timeouts when waiting for FW responses

 drivers/infiniband/core/cm.c                 |   10 +-
 drivers/infiniband/core/user_mad.c           |    2 -
 drivers/infiniband/core/verbs.c              |    4 +-
 drivers/infiniband/hw/cxgb3/iwch_cm.c        |    2 +-
 drivers/infiniband/hw/cxgb3/iwch_qp.c        |    4 +-
 drivers/infiniband/hw/cxgb4/cm.c             |   91 ++++++-----
 drivers/infiniband/hw/cxgb4/cq.c             |    4 +-
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h       |    1 +
 drivers/infiniband/hw/cxgb4/mem.c            |    2 +-
 drivers/infiniband/hw/cxgb4/qp.c             |  240 +++++++++++++------------
 drivers/infiniband/hw/cxgb4/t4.h             |   32 ++--
 drivers/infiniband/hw/cxgb4/t4fw_ri_api.h    |   10 +
 drivers/infiniband/hw/ehca/ehca_eq.c         |    8 +-
 drivers/infiniband/hw/ehca/ehca_main.c       |    3 +-
 drivers/infiniband/hw/ehca/ehca_mrmw.c       |    5 -
 drivers/infiniband/hw/ehca/ehca_qp.c         |    2 +-
 drivers/infiniband/hw/ehca/hcp_if.c          |   32 +++-
 drivers/infiniband/hw/ehca/hcp_phyp.c        |   11 +-
 drivers/infiniband/hw/ehca/hcp_phyp.h        |    2 +-
 drivers/infiniband/hw/ipath/ipath_driver.c   |   13 +-
 drivers/infiniband/hw/mthca/mthca_cmd.c      |    2 +-
 drivers/infiniband/hw/nes/nes.c              |   37 ++---
 drivers/infiniband/hw/nes/nes.h              |    2 +
 drivers/infiniband/hw/nes/nes_cm.c           |   10 +-
 drivers/infiniband/hw/nes/nes_hw.c           |   23 ++-
 drivers/infiniband/hw/nes/nes_hw.h           |    3 +-
 drivers/infiniband/hw/nes/nes_nic.c          |   15 +-
 drivers/infiniband/hw/nes/nes_utils.c        |    5 +
 drivers/infiniband/hw/nes/nes_verbs.c        |   21 ++-
 drivers/infiniband/hw/qib/qib.h              |    4 +
 drivers/infiniband/hw/qib/qib_common.h       |   16 ++-
 drivers/infiniband/hw/qib/qib_driver.c       |    2 +-
 drivers/infiniband/hw/qib/qib_file_ops.c     |  203 +++++++++++-----------
 drivers/infiniband/hw/qib/qib_fs.c           |   18 +-
 drivers/infiniband/hw/qib/qib_iba7322.c      |    4 +-
 drivers/infiniband/hw/qib/qib_init.c         |    2 +-
 drivers/infiniband/hw/qib/qib_qp.c           |    2 +-
 drivers/infiniband/hw/qib/qib_rc.c           |   47 ++----
 drivers/infiniband/hw/qib/qib_sdma.c         |    2 +
 drivers/infiniband/hw/qib/qib_sysfs.c        |   21 ++-
 drivers/infiniband/hw/qib/qib_tx.c           |    2 +-
 drivers/infiniband/hw/qib/qib_uc.c           |    6 -
 drivers/infiniband/hw/qib/qib_ud.c           |   17 +--
 drivers/infiniband/hw/qib/qib_verbs.c        |    7 +-
 drivers/infiniband/ulp/iser/iser_initiator.c |    2 +-
 drivers/infiniband/ulp/srp/ib_srp.c          |  118 +++++++------
 include/rdma/ib_verbs.h                      |    2 +-
 47 files changed, 576 insertions(+), 495 deletions(-)

-- 
Roland Dreier <rolandd@cisco.com> || For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/index.html

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2010-07-08 16:12 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2010-07-08 16:12 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-rdma, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get one security fix for IPoIB, and a bunch of relatively
small fixes to drivers new in 2.6.35 (so perhaps not regression fixes,
but not able to regress anything either ... and you don't care about
RDMA anyway ;)

Dave Olson (1):
      IB/qib: Don't mark VL15 bufs as WC to avoid a rare 7322 chip problem

FUJITA Tomonori (1):
      RDMA/cxgb4: Use the DMA state API instead of the pci equivalents

Or Gerlitz (1):
      IPoIB: Fix world-writable child interface control sysfs attributes

Ralph Campbell (6):
      IB/qib: Mask hardware error during link reset
      IB/qib: Clear eager buffer memory for each new process
      IB/qib: Clear 6120 hardware error register
      IB/qib: Update 7322 serdes tables
      IB/qib: Completion queue callback needs to be single threaded
      IB/qib: Clean up properly if qib_init() fails

Roland Dreier (1):
      Merge branches 'cxgb4', 'ipoib' and 'qib' into for-next

Steve Wise (3):
      RDMA/cxgb4: Don't call abort_connection() for active connect failures
      RDMA/cxgb4: Avoid false GTS CIDX_INC overflows
      RDMA/cxgb4: Derive smac_idx from port viid

 drivers/infiniband/hw/cxgb4/cm.c          |   12 ++++---
 drivers/infiniband/hw/cxgb4/cq.c          |   31 ++++++++++++++-----
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h    |    2 +-
 drivers/infiniband/hw/cxgb4/mem.c         |    4 +-
 drivers/infiniband/hw/cxgb4/qp.c          |   12 +++---
 drivers/infiniband/hw/cxgb4/t4.h          |    6 ++--
 drivers/infiniband/hw/qib/qib.h           |    1 +
 drivers/infiniband/hw/qib/qib_7322_regs.h |   48 ++++++++++++++--------------
 drivers/infiniband/hw/qib/qib_diag.c      |   19 +++++++++--
 drivers/infiniband/hw/qib/qib_iba6120.c   |    3 +-
 drivers/infiniband/hw/qib/qib_iba7322.c   |   43 +++++++++++++++++++++----
 drivers/infiniband/hw/qib/qib_init.c      |   21 ++++++++++++-
 drivers/infiniband/hw/qib/qib_pcie.c      |    2 +
 drivers/infiniband/hw/qib/qib_tx.c        |    6 +++-
 drivers/infiniband/ulp/ipoib/ipoib_main.c |    4 +-
 15 files changed, 148 insertions(+), 66 deletions(-)

-- 
Roland Dreier <rolandd@cisco.com> || For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/index.html

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2010-05-27 22:18 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2010-05-27 22:18 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-rdma, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This is pretty much settled down to fixes -- one semantic patch
cleanup from Julia Lawall and then some fixes to the new qib driver.

The following changes since commit ec96e2fe954c23a54bfdf2673437a39e193a1822:

  Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm (2010-05-25 12:06:33 -0700)

are available in the git repository at:

  master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

Julia Lawall (1):
      IB/ucm: Use memdup_user()

Ralph Campbell (3):
      IB/qib: Fix undefined symbol error when CONFIG_PCI_MSI=n
      IB/qib: Use a single txselect module parameter for serdes tuning
      IB/qib: Remove DCA support until feature is finished

Roland Dreier (2):
      IB/qib: Don't rely on (undefined) order of function parameter evaluation
      Merge branches 'misc' and 'qib' into for-next

 drivers/infiniband/core/ucm.c           |   11 +-
 drivers/infiniband/hw/qib/qib_fs.c      |   25 +-
 drivers/infiniband/hw/qib/qib_iba6120.c |   12 -
 drivers/infiniband/hw/qib/qib_iba7322.c |  771 +++++++------------------------
 drivers/infiniband/hw/qib/qib_init.c    |    6 +
 5 files changed, 203 insertions(+), 622 deletions(-)

-- 
Roland Dreier <rolandd@cisco.com> || For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/index.html

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2010-05-25 16:58 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2010-05-25 16:58 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-kernel, linux-rdma

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

The biggest thing here is the rather huge new qib driver for QLogic
PCIe adapters.  This is pretty much self-contained (just one small
change to the core to allow low-level drivers to create per-port files
in sysfs).  There are also some fixes to the new iw_cxgb4 driver, as
well as a few other miscellaneous fixes.

Chien Tung (1):
      RDMA/nes: Fix incorrect unlock in nes_process_mac_intr()

Faisal Latif (2):
      RDMA/nes: Have ethtool read hardware registers for rx/tx stats
      RDMA/nes: Async event for closed QP causes crash

Ralph Campbell (3):
      IB/core: Allow device-specific per-port sysfs files
      IB/qib: Add new qib driver for QLogic PCIe InfiniBand adapters
      IB/ipath: Remove support for QLogic PCIe QLE devices

Roland Dreier (3):
      mlx4_core: Clean up mlx4_alloc_icm() a bit
      IB/mad: Make needlessly global mad_sendq_size/mad_recvq_size static
      Merge branches 'cxgb4', 'misc', 'mlx4', 'nes' and 'qib' into for-next

Sebastien Dugue (1):
      mlx4_core: Fix possible chunk sg list overflow in mlx4_alloc_icm()

Steve Wise (11):
      RDMA/cxgb4: Detach from the LLD after unregistering RDMA device
      RDMA/cxgb4: Register RDMA provider based on LLD state_change events
      RDMA/cxgb4: CQ size must be IQ size - 2
      RDMA/cxgb4: Optimize CQ overflow detection
      RDMA/cxgb4: Fix overflow bug in CQ arm
      RDMA/cxgb4: Return proper errors in fastreg mr/pbl allocation
      RDMA/cxgb4: Don't limit fastreg page list depth
      RDMA/cxgb4: Update some HW limits
      RDMA/cxgb4: Set fence flag for inv-local-stag work requests
      RDMA/cxgb4: Support IB_WR_READ_WITH_INV opcode
      RDMA/cxgb4: Only insert sq qid in lookup table

 drivers/infiniband/Kconfig                         |    1 +
 drivers/infiniband/Makefile                        |    1 +
 drivers/infiniband/core/core_priv.h                |    4 +-
 drivers/infiniband/core/device.c                   |    6 +-
 drivers/infiniband/core/mad.c                      |    4 +-
 drivers/infiniband/core/sysfs.c                    |   21 +-
 drivers/infiniband/hw/amso1100/c2_provider.c       |    2 +-
 drivers/infiniband/hw/cxgb3/iwch_provider.c        |    2 +-
 drivers/infiniband/hw/cxgb4/cq.c                   |    6 +-
 drivers/infiniband/hw/cxgb4/device.c               |   50 +-
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h             |    1 +
 drivers/infiniband/hw/cxgb4/mem.c                  |   11 +-
 drivers/infiniband/hw/cxgb4/provider.c             |    4 +-
 drivers/infiniband/hw/cxgb4/qp.c                   |   33 +-
 drivers/infiniband/hw/cxgb4/t4.h                   |   76 +-
 drivers/infiniband/hw/ehca/ehca_main.c             |    2 +-
 drivers/infiniband/hw/ipath/Kconfig                |    8 +-
 drivers/infiniband/hw/ipath/Makefile               |    6 +-
 drivers/infiniband/hw/ipath/ipath_driver.c         |   28 +-
 drivers/infiniband/hw/ipath/ipath_iba6120.c        | 1862 -----
 drivers/infiniband/hw/ipath/ipath_iba7220.c        | 2631 -------
 drivers/infiniband/hw/ipath/ipath_kernel.h         |    2 -
 drivers/infiniband/hw/ipath/ipath_verbs.c          |    2 +-
 drivers/infiniband/hw/mlx4/main.c                  |    2 +-
 drivers/infiniband/hw/mthca/mthca_provider.c       |    2 +-
 drivers/infiniband/hw/nes/nes_hw.c                 |   12 +-
 drivers/infiniband/hw/nes/nes_nic.c                |   72 +-
 drivers/infiniband/hw/nes/nes_verbs.c              |    2 +-
 drivers/infiniband/hw/qib/Kconfig                  |    7 +
 drivers/infiniband/hw/qib/Makefile                 |   15 +
 drivers/infiniband/hw/qib/qib.h                    | 1439 ++++
 drivers/infiniband/hw/qib/qib_6120_regs.h          |  977 +++
 drivers/infiniband/hw/qib/qib_7220.h               |  156 +
 drivers/infiniband/hw/qib/qib_7220_regs.h          | 1496 ++++
 drivers/infiniband/hw/qib/qib_7322_regs.h          | 3163 ++++++++
 drivers/infiniband/hw/qib/qib_common.h             |  758 ++
 drivers/infiniband/hw/qib/qib_cq.c                 |  484 ++
 drivers/infiniband/hw/qib/qib_diag.c               |  894 +++
 drivers/infiniband/hw/qib/qib_dma.c                |  182 +
 drivers/infiniband/hw/qib/qib_driver.c             |  665 ++
 drivers/infiniband/hw/qib/qib_eeprom.c             |  451 ++
 drivers/infiniband/hw/qib/qib_file_ops.c           | 2317 ++++++
 drivers/infiniband/hw/qib/qib_fs.c                 |  613 ++
 drivers/infiniband/hw/qib/qib_iba6120.c            | 3588 +++++++++
 drivers/infiniband/hw/qib/qib_iba7220.c            | 4618 +++++++++++
 drivers/infiniband/hw/qib/qib_iba7322.c            | 8058 ++++++++++++++++++++
 drivers/infiniband/hw/qib/qib_init.c               | 1580 ++++
 drivers/infiniband/hw/qib/qib_intr.c               |  236 +
 drivers/infiniband/hw/qib/qib_keys.c               |  328 +
 drivers/infiniband/hw/qib/qib_mad.c                | 2173 ++++++
 drivers/infiniband/hw/qib/qib_mad.h                |  373 +
 drivers/infiniband/hw/qib/qib_mmap.c               |  174 +
 drivers/infiniband/hw/qib/qib_mr.c                 |  503 ++
 drivers/infiniband/hw/qib/qib_pcie.c               |  738 ++
 .../hw/{ipath/ipath_7220.h => qib/qib_pio_copy.c}  |   53 +-
 drivers/infiniband/hw/qib/qib_qp.c                 | 1255 +++
 drivers/infiniband/hw/qib/qib_qsfp.c               |  564 ++
 drivers/infiniband/hw/qib/qib_qsfp.h               |  184 +
 drivers/infiniband/hw/qib/qib_rc.c                 | 2288 ++++++
 drivers/infiniband/hw/qib/qib_ruc.c                |  817 ++
 .../hw/{ipath/ipath_sd7220.c => qib/qib_sd7220.c}  |  859 +--
 .../ipath_sd7220_img.c => qib/qib_sd7220_img.c}    |   19 +-
 drivers/infiniband/hw/qib/qib_sdma.c               |  973 +++
 drivers/infiniband/hw/qib/qib_srq.c                |  375 +
 drivers/infiniband/hw/qib/qib_sysfs.c              |  691 ++
 drivers/infiniband/hw/qib/qib_twsi.c               |  498 ++
 drivers/infiniband/hw/qib/qib_tx.c                 |  557 ++
 drivers/infiniband/hw/qib/qib_uc.c                 |  555 ++
 drivers/infiniband/hw/qib/qib_ud.c                 |  607 ++
 drivers/infiniband/hw/qib/qib_user_pages.c         |  157 +
 drivers/infiniband/hw/qib/qib_user_sdma.c          |  897 +++
 .../hw/{ipath/ipath_7220.h => qib/qib_user_sdma.h} |   43 +-
 drivers/infiniband/hw/qib/qib_verbs.c              | 2248 ++++++
 drivers/infiniband/hw/qib/qib_verbs.h              | 1100 +++
 drivers/infiniband/hw/qib/qib_verbs_mcast.c        |  368 +
 .../hw/{ipath/ipath_7220.h => qib/qib_wc_ppc64.c}  |   49 +-
 drivers/infiniband/hw/qib/qib_wc_x86_64.c          |  171 +
 drivers/net/mlx4/icm.c                             |   36 +-
 include/rdma/ib_verbs.h                            |    4 +-
 79 files changed, 51016 insertions(+), 5191 deletions(-)
 delete mode 100644 drivers/infiniband/hw/ipath/ipath_iba6120.c
 delete mode 100644 drivers/infiniband/hw/ipath/ipath_iba7220.c
 create mode 100644 drivers/infiniband/hw/qib/Kconfig
 create mode 100644 drivers/infiniband/hw/qib/Makefile
 create mode 100644 drivers/infiniband/hw/qib/qib.h
 create mode 100644 drivers/infiniband/hw/qib/qib_6120_regs.h
 create mode 100644 drivers/infiniband/hw/qib/qib_7220.h
 create mode 100644 drivers/infiniband/hw/qib/qib_7220_regs.h
 create mode 100644 drivers/infiniband/hw/qib/qib_7322_regs.h
 create mode 100644 drivers/infiniband/hw/qib/qib_common.h
 create mode 100644 drivers/infiniband/hw/qib/qib_cq.c
 create mode 100644 drivers/infiniband/hw/qib/qib_diag.c
 create mode 100644 drivers/infiniband/hw/qib/qib_dma.c
 create mode 100644 drivers/infiniband/hw/qib/qib_driver.c
 create mode 100644 drivers/infiniband/hw/qib/qib_eeprom.c
 create mode 100644 drivers/infiniband/hw/qib/qib_file_ops.c
 create mode 100644 drivers/infiniband/hw/qib/qib_fs.c
 create mode 100644 drivers/infiniband/hw/qib/qib_iba6120.c
 create mode 100644 drivers/infiniband/hw/qib/qib_iba7220.c
 create mode 100644 drivers/infiniband/hw/qib/qib_iba7322.c
 create mode 100644 drivers/infiniband/hw/qib/qib_init.c
 create mode 100644 drivers/infiniband/hw/qib/qib_intr.c
 create mode 100644 drivers/infiniband/hw/qib/qib_keys.c
 create mode 100644 drivers/infiniband/hw/qib/qib_mad.c
 create mode 100644 drivers/infiniband/hw/qib/qib_mad.h
 create mode 100644 drivers/infiniband/hw/qib/qib_mmap.c
 create mode 100644 drivers/infiniband/hw/qib/qib_mr.c
 create mode 100644 drivers/infiniband/hw/qib/qib_pcie.c
 copy drivers/infiniband/hw/{ipath/ipath_7220.h => qib/qib_pio_copy.c} (57%)
 create mode 100644 drivers/infiniband/hw/qib/qib_qp.c
 create mode 100644 drivers/infiniband/hw/qib/qib_qsfp.c
 create mode 100644 drivers/infiniband/hw/qib/qib_qsfp.h
 create mode 100644 drivers/infiniband/hw/qib/qib_rc.c
 create mode 100644 drivers/infiniband/hw/qib/qib_ruc.c
 rename drivers/infiniband/hw/{ipath/ipath_sd7220.c => qib/qib_sd7220.c} (57%)
 rename drivers/infiniband/hw/{ipath/ipath_sd7220_img.c => qib/qib_sd7220_img.c} (99%)
 create mode 100644 drivers/infiniband/hw/qib/qib_sdma.c
 create mode 100644 drivers/infiniband/hw/qib/qib_srq.c
 create mode 100644 drivers/infiniband/hw/qib/qib_sysfs.c
 create mode 100644 drivers/infiniband/hw/qib/qib_twsi.c
 create mode 100644 drivers/infiniband/hw/qib/qib_tx.c
 create mode 100644 drivers/infiniband/hw/qib/qib_uc.c
 create mode 100644 drivers/infiniband/hw/qib/qib_ud.c
 create mode 100644 drivers/infiniband/hw/qib/qib_user_pages.c
 create mode 100644 drivers/infiniband/hw/qib/qib_user_sdma.c
 copy drivers/infiniband/hw/{ipath/ipath_7220.h => qib/qib_user_sdma.h} (57%)
 create mode 100644 drivers/infiniband/hw/qib/qib_verbs.c
 create mode 100644 drivers/infiniband/hw/qib/qib_verbs.h
 create mode 100644 drivers/infiniband/hw/qib/qib_verbs_mcast.c
 rename drivers/infiniband/hw/{ipath/ipath_7220.h => qib/qib_wc_ppc64.c} (57%)
 create mode 100644 drivers/infiniband/hw/qib/qib_wc_x86_64.c

-- 
Roland Dreier <rolandd@cisco.com> || For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/index.html

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2010-05-18  3:37 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2010-05-18  3:37 UTC (permalink / raw)
  To: torvalds, linux-kernel, akpm; +Cc: linux-rdma

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get the first batch InfinBand/RDMA changes for the 2.6.35
merge window:

Chien Tung (1):
      RDMA/nes: Make nesadapter->phy_lock usage consistent

Dan Carpenter (1):
      IB/iser: Fix error flow in iser_create_ib_conn_res()

FUJITA Tomonori (3):
      RDMA/cxgb3: Use the dma state API instead of pci equivalents
      RDMA/amso1100: Use the dma state API instead of pci equivalents
      IB/mthca: Use the dma state API instead of pci equivalents

Julia Lawall (1):
      IB/core: Use kmemdup() instead of kmalloc()+memcpy()

Or Gerlitz (4):
      IPoIB: Allow disabling/enabling TSO on the fly through ethtool
      IB/iser: Add asynchronous event handler
      IB/iser: Remove buggy back-pointer setting
      IB/iser: Enhance disconnection logic for multi-pathing

Roland Dreier (5):
      IB: Explicitly rule out llseek to avoid BKL in default_llseek()
      RDMA/nes: Make unnecessarily global functions static
      RDMA/cxgb3: Shrink .text with compile-time init of handlers arrays
      MAINTAINERS: Add cxgb4 and iw_cxgb4 entries
      Merge branches 'amso1100', 'bkl', 'cma', 'cxgb3', 'cxgb4', 'ipoib', 'iser', 'masked-atomics', 'misc', 'mthca' and 'nes' into for-next

Steve Wise (2):
      RDMA/cxgb3: Don't free skbs on NET_XMIT_* indications from LLD
      RDMA/cxgb4: Add driver for Chelsio T4 RNIC

Tetsuo Handa (1):
      RDMA/cma: Randomize local port allocation

Vladimir Sokolovsky (2):
      IB/core: Add support for masked atomic operations
      IB/mlx4: Add support for masked atomic operations

 MAINTAINERS                                   |   14 +
 drivers/infiniband/Kconfig                    |    1 +
 drivers/infiniband/Makefile                   |    1 +
 drivers/infiniband/core/cma.c                 |   74 +-
 drivers/infiniband/core/mad.c                 |    4 +-
 drivers/infiniband/core/ucm.c                 |    3 +-
 drivers/infiniband/core/ucma.c                |    4 +-
 drivers/infiniband/core/user_mad.c            |   12 +-
 drivers/infiniband/core/uverbs_main.c         |   11 +-
 drivers/infiniband/hw/amso1100/c2.h           |    2 +-
 drivers/infiniband/hw/amso1100/c2_alloc.c     |    4 +-
 drivers/infiniband/hw/amso1100/c2_cq.c        |    4 +-
 drivers/infiniband/hw/amso1100/c2_mq.h        |    2 +-
 drivers/infiniband/hw/amso1100/c2_provider.h  |    2 +-
 drivers/infiniband/hw/amso1100/c2_rnic.c      |   12 +-
 drivers/infiniband/hw/cxgb3/cxio_hal.c        |   12 +-
 drivers/infiniband/hw/cxgb3/cxio_hal.h        |    2 +-
 drivers/infiniband/hw/cxgb3/cxio_wr.h         |    4 +-
 drivers/infiniband/hw/cxgb3/iwch.c            |    2 -
 drivers/infiniband/hw/cxgb3/iwch_cm.c         |  133 +-
 drivers/infiniband/hw/cxgb4/Kconfig           |   18 +
 drivers/infiniband/hw/cxgb4/Makefile          |    5 +
 drivers/infiniband/hw/cxgb4/cm.c              | 2374 +++++++++++++++++++++++++
 drivers/infiniband/hw/cxgb4/cq.c              |  882 +++++++++
 drivers/infiniband/hw/cxgb4/device.c          |  520 ++++++
 drivers/infiniband/hw/cxgb4/ev.c              |  193 ++
 drivers/infiniband/hw/cxgb4/iw_cxgb4.h        |  745 ++++++++
 drivers/infiniband/hw/cxgb4/mem.c             |  811 +++++++++
 drivers/infiniband/hw/cxgb4/provider.c        |  518 ++++++
 drivers/infiniband/hw/cxgb4/qp.c              | 1577 ++++++++++++++++
 drivers/infiniband/hw/cxgb4/resource.c        |  417 +++++
 drivers/infiniband/hw/cxgb4/t4.h              |  550 ++++++
 drivers/infiniband/hw/cxgb4/t4fw_ri_api.h     |  829 +++++++++
 drivers/infiniband/hw/cxgb4/user.h            |   66 +
 drivers/infiniband/hw/mlx4/cq.c               |    8 +
 drivers/infiniband/hw/mlx4/main.c             |    1 +
 drivers/infiniband/hw/mlx4/qp.c               |   50 +-
 drivers/infiniband/hw/mthca/mthca_allocator.c |    8 +-
 drivers/infiniband/hw/mthca/mthca_eq.c        |    6 +-
 drivers/infiniband/hw/mthca/mthca_provider.h  |    2 +-
 drivers/infiniband/hw/nes/nes_hw.c            |   12 +-
 drivers/infiniband/hw/nes/nes_nic.c           |   16 +-
 drivers/infiniband/hw/nes/nes_utils.c         |   10 -
 drivers/infiniband/hw/nes/nes_verbs.c         |    2 +-
 drivers/infiniband/ulp/ipoib/ipoib_ethtool.c  |   20 +
 drivers/infiniband/ulp/iser/iscsi_iser.c      |    9 +-
 drivers/infiniband/ulp/iser/iscsi_iser.h      |    4 +-
 drivers/infiniband/ulp/iser/iser_verbs.c      |  115 +-
 include/linux/mlx4/device.h                   |    4 +-
 include/linux/mlx4/qp.h                       |    7 +
 include/rdma/ib_verbs.h                       |    7 +
 51 files changed, 9838 insertions(+), 251 deletions(-)
 create mode 100644 drivers/infiniband/hw/cxgb4/Kconfig
 create mode 100644 drivers/infiniband/hw/cxgb4/Makefile
 create mode 100644 drivers/infiniband/hw/cxgb4/cm.c
 create mode 100644 drivers/infiniband/hw/cxgb4/cq.c
 create mode 100644 drivers/infiniband/hw/cxgb4/device.c
 create mode 100644 drivers/infiniband/hw/cxgb4/ev.c
 create mode 100644 drivers/infiniband/hw/cxgb4/iw_cxgb4.h
 create mode 100644 drivers/infiniband/hw/cxgb4/mem.c
 create mode 100644 drivers/infiniband/hw/cxgb4/provider.c
 create mode 100644 drivers/infiniband/hw/cxgb4/qp.c
 create mode 100644 drivers/infiniband/hw/cxgb4/resource.c
 create mode 100644 drivers/infiniband/hw/cxgb4/t4.h
 create mode 100644 drivers/infiniband/hw/cxgb4/t4fw_ri_api.h
 create mode 100644 drivers/infiniband/hw/cxgb4/user.h
-- 
Roland Dreier <rolandd@cisco.com> || For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/index.html

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2010-04-09 16:13 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2010-04-09 16:13 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-rdma, linux-kernel

Linus, please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a few small fixes that have trickled in:

Chien Tung (1):
      RDMA/nes: Correct cap.max_inline_data assignment in nes_query_qp()

Dan Carpenter (1):
      IB/mlx4: Check correct variable for allocation failure

Jani Nikula (1):
      IB/cm: Fix device_create() return value check

Roland Dreier (1):
      Merge branches 'cma', 'misc', 'mlx4' and 'nes' into for-linus

shefty (1):
      RDMA/cm: Set num_paths when manually assigning path records

 drivers/infiniband/core/cm.c          |    2 +-
 drivers/infiniband/core/cma.c         |    1 +
 drivers/infiniband/hw/mlx4/mr.c       |    2 +-
 drivers/infiniband/hw/nes/nes_verbs.c |    9 ++++-----
 4 files changed, 7 insertions(+), 7 deletions(-)

-- 
Roland Dreier <rolandd@cisco.com> || For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/index.html

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2010-03-12 18:56 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2010-03-12 18:56 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-rdma, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a few small fixes:

Chien Tung (2):
      RDMA/nes: Clear stall bit before destroying NIC QP
      RDMA/nes: Fix CX4 link problem in back-to-back configuration

Eli Cohen (1):
      IPoIB: Fix TX queue lockup with mixed UD/CM traffic

Faisal Latif (1):
      RDMA/nes: Set assume_aligned_header bit

Or Gerlitz (1):
      IPoIB: Include return code in trace message for ib_post_send() failures

Roland Dreier (1):
      Merge branches 'cxgb3', 'ipoib', 'misc' and 'nes' into for-next

Steve Wise (2):
      IB/mad: Ignore iWARP devices on device removal
      RDMA/cxgb3: Wait at least one schedule cycle during device removal

 drivers/infiniband/core/mad.c           |    3 +++
 drivers/infiniband/hw/cxgb3/iwch.c      |    2 ++
 drivers/infiniband/hw/nes/nes_hw.c      |    8 ++++++++
 drivers/infiniband/hw/nes/nes_hw.h      |    1 +
 drivers/infiniband/hw/nes/nes_nic.c     |   30 ++++++++++++++++++++++++++++--
 drivers/infiniband/hw/nes/nes_verbs.c   |    1 +
 drivers/infiniband/ulp/ipoib/ipoib_cm.c |   10 +++++++---
 drivers/infiniband/ulp/ipoib/ipoib_ib.c |    9 +++++----
 8 files changed, 55 insertions(+), 9 deletions(-)

-- 
Roland Dreier  <rolandd@cisco.com>
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/index.html

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2010-03-02  7:56 Roland Dreier
@ 2010-03-02 11:52 ` Tziporet Koren
  0 siblings, 0 replies; 223+ messages in thread
From: Tziporet Koren @ 2010-03-02 11:52 UTC (permalink / raw)
  To: Roland Dreier; +Cc: torvalds, akpm, linux-kernel, linux-rdma

On 3/2/2010 9:56 AM, Roland Dreier wrote:
> Linus, please pull from
>
>      master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus
>
> This tree is also available from kernel.org mirrors at:
>
>      git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus
>
> This will get my current pile for the 2.6.34 merge window:
>    
What about the pending patches for:
- XRC
- IBoE
- SRIOV support for mlx4


Thanks
Tziporet





^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2010-03-02  7:56 Roland Dreier
  2010-03-02 11:52 ` Tziporet Koren
  0 siblings, 1 reply; 223+ messages in thread
From: Roland Dreier @ 2010-03-02  7:56 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-kernel, linux-rdma

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get my current pile for the 2.6.34 merge window:

Alexander Chiang (18):
      IB/uverbs: Convert *cdev to cdev in struct ib_uverbs_device
      IB/uverbs: Remove dev_table
      IB/uverbs: Use stack variable 'devnum' in ib_uverbs_add_one
      IB/uverbs: use stack variable 'base' in ib_uverbs_add_one
      IB/uverbs: Increase maximum devices supported
      IB/uverbs: Pack struct ib_uverbs_event_file tighter
      IB/uverbs: Whitespace cleanup
      IB/umad: Convert *cdev to cdev in struct ib_umad_port
      IB/umad: Remove port_table[]
      IB/umad: Use stack variable 'devnum' in ib_umad_init_port
      IB/umad: Use stack variable 'base' in ib_umad_init_port
      IB/umad: Increase maximum devices supported
      IB/umad: Clean whitespace
      IB/ucm: Use stack variable 'devnum' in ib_ucm_add_one
      IB/ucm: Use stack variable 'base' in ib_ucm_add_one
      IB/ucm: Increase maximum devices supported
      IB/ucm: Clean whitespace errors
      IB/core: Pack struct ib_device a little tighter

Alexander Schmidt (3):
      IB/ehca: Do not turn off irqs in tasklet context
      IB/ehca: Allow access for ib_query_qp()
      IB/ehca: Require in_wc in process_mad()

Bart Van Assche (1):
      IB/srp: Split send and recieve CQs to reduce number of interrupts

Chien Tung (1):
      RDMA/nes: Add support for KR device id 0x0110

Eli Cohen (2):
      IB/mlx4: Simplify retrieval of ib_device
      IB/core: Fix and clean up ib_ud_header_init()

Faisal Latif (3):
      RDMA/nes: Use atomic counters for CM listener create and destroy
      RDMA/nes: Fix crash when listener destroyed during loopback setup
      RDMA/nes: Multiple disconnects cause crash during AE handling

Jiri Slaby (1):
      RDMA: Use rlimit helpers

Or Gerlitz (11):
      IPoIB: Remove TX moderation settings from ethtool support
      RDMA/nes: Change WQ overflow return code
      IB/iser: Revert commit bba7ebb "avoid recv buffer exhaustion"
      IB/iser: New receive buffer posting logic
      IB/iser: Remove atomic counter for posted receive buffers
      IB/iser: Use different CQ for send completions
      IB/iser: Simplify send flow/descriptors
      IB/iser: Use atomic allocations
      IB/iser: Remove unnecessary connection checks
      IB/iser: Use libiscsi passthrough mode
      IB/iser: Remove redundant locking from iser scsi command response flow

Roland Dreier (11):
      IB/uverbs: Use anon_inodes instead of private infinibandeventfs
      IB/srp: Clean up error path in srp_create_target_ib()
      Merge branch 'cma' into for-next
      Merge branch 'cxgb3' into for-next
      Merge branch 'ehca' into for-next
      Merge branch 'ipoib' into for-next
      Merge branch 'iser' into for-next
      Merge branch 'mlx4' into for-next
      Merge branch 'nes' into for-next
      Merge branch 'srp' into for-next
      Merge branch 'misc' into for-next

Sean Hefty (1):
      RDMA/cm: Remove unused definition of RDMA_PS_SCTP

Steve Wise (5):
      RDMA/cxgb3: Remove BUG_ON() on CQ rearm failure
      RDMA/cxgb3: Doorbell overflow avoidance and recovery
      RDMA/cxgb3: Increase the max CQ depth
      RDMA/cxgb3: Don't allocate the SW queue for user mode CQs
      RDMA/cxgb3: Mark RDMA device with CXIO_ERROR_FATAL when removing

 drivers/infiniband/Kconfig                     |    1 +
 drivers/infiniband/core/ucm.c                  |   63 +++-
 drivers/infiniband/core/ud_header.c            |   14 +-
 drivers/infiniband/core/umem.c                 |    2 +-
 drivers/infiniband/core/user_mad.c             |  173 +++++----
 drivers/infiniband/core/uverbs.h               |   11 +-
 drivers/infiniband/core/uverbs_main.c          |  234 +++++------
 drivers/infiniband/hw/cxgb3/cxio_hal.c         |   15 +-
 drivers/infiniband/hw/cxgb3/cxio_hal.h         |    4 +-
 drivers/infiniband/hw/cxgb3/cxio_wr.h          |   17 +-
 drivers/infiniband/hw/cxgb3/iwch.c             |   80 ++++-
 drivers/infiniband/hw/cxgb3/iwch.h             |    2 +
 drivers/infiniband/hw/cxgb3/iwch_provider.c    |    2 +-
 drivers/infiniband/hw/cxgb3/iwch_qp.c          |    9 +-
 drivers/infiniband/hw/ehca/ehca_irq.c          |    5 +-
 drivers/infiniband/hw/ehca/ehca_qp.c           |    4 +-
 drivers/infiniband/hw/ehca/ehca_sqp.c          |    2 +-
 drivers/infiniband/hw/ipath/ipath_user_pages.c |    3 +-
 drivers/infiniband/hw/mlx4/qp.c                |    4 +-
 drivers/infiniband/hw/mthca/mthca_qp.c         |    2 +-
 drivers/infiniband/hw/nes/nes.c                |    1 +
 drivers/infiniband/hw/nes/nes.h                |    9 +-
 drivers/infiniband/hw/nes/nes_cm.c             |   11 +-
 drivers/infiniband/hw/nes/nes_hw.c             |  488 ++++++++++++-----------
 drivers/infiniband/hw/nes/nes_hw.h             |    2 +-
 drivers/infiniband/hw/nes/nes_nic.c            |   61 +---
 drivers/infiniband/hw/nes/nes_verbs.c          |    6 +-
 drivers/infiniband/ulp/ipoib/ipoib_ethtool.c   |   10 +-
 drivers/infiniband/ulp/iser/iscsi_iser.c       |   47 ++-
 drivers/infiniband/ulp/iser/iscsi_iser.h       |   97 +++---
 drivers/infiniband/ulp/iser/iser_initiator.c   |  506 ++++++++----------------
 drivers/infiniband/ulp/iser/iser_memory.c      |   64 +---
 drivers/infiniband/ulp/iser/iser_verbs.c       |  281 +++++++-------
 drivers/infiniband/ulp/srp/ib_srp.c            |   91 +++--
 drivers/infiniband/ulp/srp/ib_srp.h            |    6 +-
 drivers/net/cxgb3/adapter.h                    |    5 +
 drivers/net/cxgb3/cxgb3_main.c                 |   57 +++-
 drivers/net/cxgb3/cxgb3_offload.h              |    5 +-
 drivers/net/cxgb3/regs.h                       |   16 +
 drivers/net/cxgb3/sge.c                        |   10 +-
 drivers/net/cxgb3/t3_hw.c                      |    5 +-
 include/rdma/ib_pack.h                         |    1 +
 include/rdma/ib_verbs.h                        |    4 +-
 include/rdma/rdma_cm.h                         |    1 -
 44 files changed, 1221 insertions(+), 1210 deletions(-)
-- 
Roland Dreier  <rolandd@cisco.com>
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/index.html

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2010-02-10 20:03 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2010-02-10 20:03 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-kernel, linux-rdma

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get one partial revert needed to fix a regression due to a
behavior change introduced in 2.6.33-rc1 that breaks some existing apps:

Sean Hefty (1):
      RDMA/cm: Revert association of an RDMA device when binding to loopback

 drivers/infiniband/core/cma.c |    4 +---
 1 files changed, 1 insertions(+), 3 deletions(-)


diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index cc9b594..875e34e 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -2115,9 +2115,7 @@ int rdma_bind_addr(struct rdma_cm_id *id, struct sockaddr *addr)
 	if (ret)
 		goto err1;
 
-	if (cma_loopback_addr(addr)) {
-		ret = cma_bind_loopback(id_priv);
-	} else if (!cma_zero_addr(addr)) {
+	if (!cma_any_addr(addr)) {
 		ret = rdma_translate_ip(addr, &id->route.addr.dev_addr);
 		if (ret)
 			goto err1;

-- 
Roland Dreier  <rolandd@cisco.com>
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/index.html

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2010-01-07 19:30 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2010-01-07 19:30 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-rdma, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a few very small fixes that have trickled in over the
holidays.

Eli Cohen (1):
      mlx4_core: Fix cleanup in __mlx4_init_one() error path

Jack Morgenstein (1):
      IB/mlx4: Initialize SRQ scatter entries when creating an SRQ

Or Gerlitz (1):
      IB/mlx4: Fix queue overflow check in post_recv

Robert P. J. Day (1):
      IB/addr: Correct CONFIG_IPv6 to CONFIG_IPV6

Roland Dreier (1):
      Merge branches 'misc' and 'mlx4' into for-next

 drivers/infiniband/core/cma.c    |    2 +-
 drivers/infiniband/hw/mlx4/qp.c  |    2 +-
 drivers/infiniband/hw/mlx4/srq.c |    6 ++++++
 drivers/net/mlx4/main.c          |    2 +-
 4 files changed, 9 insertions(+), 3 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2009-12-16  7:41 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2009-12-16  7:41 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-kernel, linux-rdma

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get all my pending 2.6.33 merge window stuff.  Sorry for
being so late, but I'm just now out from under my flu-induced
backlog.  None of the stuff here is in any way controversial: it's
pretty much all small fixes scattered around, with no major changes
included (we're saving those for 2.6.34).

Akinobu Mita (1):
      IB/ipath: Use bitmap_weight()

Alexander Schmidt (1):
      IB/ehca: Rework destroy_eq()

Bart Van Assche (2):
      IB: Clarify the documentation of ib_post_send()
      IB: Fix typo in ipoib.txt

Chien Tung (7):
      RDMA/nes: Add support for IB_WR_*INV
      RDMA/nes: Correct fast memory registration implementation
      RDMA/nes: Add additional SFP+ PHY uC status check and PHY reset
      RDMA/nes: Implement IB_SIGNAL_ALL_WR as an iWARP extension
      RDMA/nes: Clean up struct nes_qp
      RDMA/nes: Add max_cqe check to nes_create_cq()
      RDMA/nes: Update copyright and branding string

David J. Wilder (1):
      IPoIB: Clear ipoib_neigh.dgid in ipoib_neigh_alloc()

Eli Cohen (2):
      IB/mlx4: Remove unneeded code
      IB/mlx4: Remove limitation on LSO header size

Eric Dumazet (1):
      RDMA/addr: Use appropriate locking with for_each_netdev()

Faisal Latif (11):
      RDMA/nes: Fix MAX_CM_BUFFER define
      RDMA/nes: Fix query of ORD values
      RDMA/nes: MPA request/response error checking
      RDMA/nes: Resource not freed for REJECTed connections
      RDMA/nes: Fix crash in nes_accept()
      RDMA/nes: Abnormal listener exit causes loopback node crash
      RDMA/nes: Fix Xansation test crash on cm_node ref_count
      RDMA/nes: Check for zero STag
      RDMA/nes: Free kmap() resources
      RDMA/nes: FIN during MPA startup causes timeout
      RDMA/nes: Fix stale ARP issue

Frank Zago (5):
      RDMA/nes: In nes_post_send() always set bad_wr on error
      RDMA/nes: In nes_post_recv() always set bad_wr on error
      RDMA/amso1100: Fix error paths in post_send and post_recv
      IB/ehca: Fix error paths in post_send and post_recv
      RDMA/cxgb3: Fix error paths in post_send and post_recv

Jason Gunthorpe (2):
      RDMA/cma: Correct detection of SA Created MGID
      RDMA/cma: Fix AF_INET6 support in multicast joining

Julia Lawall (1):
      RDMA/nes: Pass correct size to ioremap_nocache()

Or Gerlitz (1):
      IB/iser: Rewrite SG handling for RDMA logic

Roel Kluin (1):
      IB/uverbs: Fix return of PTR_ERR() of wrong pointer in ib_uverbs_get_context()

Roland Dreier (1):
      Merge branches 'amso1100', 'cma', 'cxgb3', 'ehca', 'ipath', 'ipoib', 'iser', 'misc', 'mlx4' and 'nes' into for-next

Sean Hefty (7):
      RDMA/ucma: Add option to manually set IB path
      RDMA/cma: Replace net_device pointer with index
      IB/addr: Verify source and destination address families match
      IB/addr: Store net_device type instead of translating to RDMA transport
      RDMA/cm: fix loopback address support
      IB/addr: Simplify resolving IPv4 addresses
      IB/addr: Fix IPv6 routing lookup

Steve Wise (1):
      RDMA/cxgb3: Remove BUG_ON() on CQ rearm failure

Yevgeny Petrilin (1):
      mlx4_core: Fix parsing of reserved EQ cap

 Documentation/infiniband/ipoib.txt         |   10 +-
 drivers/infiniband/core/addr.c             |  275 ++++------
 drivers/infiniband/core/cma.c              |  133 +++--
 drivers/infiniband/core/sa_query.c         |    6 +
 drivers/infiniband/core/ucma.c             |   57 ++-
 drivers/infiniband/core/uverbs_cmd.c       |    2 +-
 drivers/infiniband/hw/amso1100/c2_qp.c     |   14 +-
 drivers/infiniband/hw/cxgb3/iwch_qp.c      |   32 +-
 drivers/infiniband/hw/ehca/ehca_classes.h  |    1 +
 drivers/infiniband/hw/ehca/ehca_eq.c       |    9 +-
 drivers/infiniband/hw/ehca/ehca_main.c     |    2 +-
 drivers/infiniband/hw/ehca/ehca_reqs.c     |   67 +--
 drivers/infiniband/hw/ipath/ipath_driver.c |   10 +-
 drivers/infiniband/hw/mlx4/main.c          |    2 +-
 drivers/infiniband/hw/mlx4/qp.c            |   25 +-
 drivers/infiniband/hw/nes/Kconfig          |    9 +-
 drivers/infiniband/hw/nes/nes.c            |    5 +-
 drivers/infiniband/hw/nes/nes.h            |    2 +-
 drivers/infiniband/hw/nes/nes_cm.c         |  201 +++++--
 drivers/infiniband/hw/nes/nes_cm.h         |    7 +-
 drivers/infiniband/hw/nes/nes_context.h    |    2 +-
 drivers/infiniband/hw/nes/nes_hw.c         |   40 +-
 drivers/infiniband/hw/nes/nes_hw.h         |   29 +-
 drivers/infiniband/hw/nes/nes_nic.c        |    2 +-
 drivers/infiniband/hw/nes/nes_user.h       |    3 +-
 drivers/infiniband/hw/nes/nes_utils.c      |    2 +-
 drivers/infiniband/hw/nes/nes_verbs.c      |  817 ++++++++++++++--------------
 drivers/infiniband/hw/nes/nes_verbs.h      |   23 +-
 drivers/infiniband/ulp/ipoib/ipoib_main.c  |    1 +
 drivers/infiniband/ulp/iser/iser_memory.c  |  122 ++---
 drivers/net/mlx4/fw.c                      |    3 +-
 include/linux/mlx4/device.h                |    1 +
 include/rdma/ib_addr.h                     |   36 +-
 include/rdma/ib_sa.h                       |    6 +
 include/rdma/ib_user_sa.h                  |   16 +
 include/rdma/ib_verbs.h                    |    5 +
 include/rdma/rdma_user_cm.h                |    6 +-
 net/rds/ib.c                               |    4 +-
 net/rds/iw.c                               |    4 +-
 39 files changed, 1084 insertions(+), 907 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2009-10-28 18:07 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2009-10-28 18:07 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-rdma, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will just get one PCI device ID addition:

Eli Cohen (1):
      mlx4_core: Add a new supported 40 GigE device ID

 drivers/net/mlx4/main.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/net/mlx4/main.c b/drivers/net/mlx4/main.c
index 5dd7225..291a505 100644
--- a/drivers/net/mlx4/main.c
+++ b/drivers/net/mlx4/main.c
@@ -1282,6 +1282,7 @@ static struct pci_device_id mlx4_pci_table[] = {
 	{ PCI_VDEVICE(MELLANOX, 0x6372) }, /* MT25458 ConnectX EN 10GBASE-T 10GigE */
 	{ PCI_VDEVICE(MELLANOX, 0x675a) }, /* MT25458 ConnectX EN 10GBASE-T+Gen2 10GigE */
 	{ PCI_VDEVICE(MELLANOX, 0x6764) }, /* MT26468 ConnectX EN 10GigE PCIe gen2*/
+	{ PCI_VDEVICE(MELLANOX, 0x6746) }, /* MT26438 ConnectX EN 40GigE PCIe gen2 5GT/s */
 	{ PCI_VDEVICE(MELLANOX, 0x676e) }, /* MT26478 ConnectX2 40GigE PCIe gen2 */
 	{ 0, }
 };

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2009-10-09 17:08 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2009-10-09 17:08 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-rdma, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get another small batch of small RDMA/InfiniBand fixes, and
one device ID addition:

Bart Van Assche (1):
      IB: Fix typo in udev rule documentation

David J. Wilder (1):
      RDMA/addr: Fix resolution of local IPv6 addresses

Roland Dreier (1):
      Merge branches 'cxgb3', 'misc' and 'mlx4' into for-next

Steve Wise (2):
      RDMA/iwcm: Don't call provider reject func with irqs disabled
      RDMA/cxgb3: Handle NULL inetdev pointer in iwch_query_port()

Yevgeny Petrilin (1):
      mlx4_core: Add 40GigE device ID

 Documentation/infiniband/user_mad.txt       |    4 ++--
 Documentation/infiniband/user_verbs.txt     |    2 +-
 drivers/infiniband/core/addr.c              |    2 +-
 drivers/infiniband/core/iwcm.c              |    2 ++
 drivers/infiniband/hw/cxgb3/iwch_provider.c |   11 +++++++----
 drivers/net/mlx4/main.c                     |    1 +
 6 files changed, 14 insertions(+), 8 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2009-09-24 19:45 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2009-09-24 19:45 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-kernel, linux-rdma, general

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get the batch of RDMA/InfiniBand changes for the 2.6.32
merge window:

The following changes since commit 86d710146fb9975f04c505ec78caa43d227c1018:
  Linus Torvalds (1):
        Merge git://git.linux-nfs.org/projects/trondmy/nfs-2.6

are available in the git repository at:

  master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

Eli Cohen (1):
      mlx4_core: Pass cache line size to device FW

Jack Morgenstein (1):
      IB/mthca: Fix access to freed memory in catastrophic event handling

Julia Lawall (1):
      RDMA/nes: Remove duplicate .ndo_set_mac_address field initialization

Moni Shoua (1):
      IPoIB: Don't turn on carrier for a non-active port

Roland Dreier (2):
      IB/mad: Fix lock-lock-timer deadlock in RMPP code
      Merge branches 'ipoib', 'mad', 'mlx4', 'mthca' and 'nes' into for-linus

 drivers/infiniband/core/mad_rmpp.c             |   17 +++++++++++++----
 drivers/infiniband/hw/mthca/mthca_catas.c      |   11 ++++++++---
 drivers/infiniband/hw/nes/nes_nic.c            |    1 -
 drivers/infiniband/ulp/ipoib/ipoib_multicast.c |    7 +++++++
 drivers/net/mlx4/fw.c                          |    5 +++++
 5 files changed, 33 insertions(+), 8 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2009-09-11  4:23 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2009-09-11  4:23 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-rdma, general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get the batch of RDMA/InfiniBand changes for the 2.6.32
merge window:

Alexander Schmidt (1):
      IB/ehca: Make port autodetect mode the default

Arputham Benjamin (2):
      mlx4_core: Distinguish multiple devices in /proc/interrupts
      IB/mthca: Distinguish multiple devices in /proc/interrupts

Chien Tung (1):
      RDMA/nes: Map MTU to IB_MTU_* and correctly report link state

Don Wood (10):
      RDMA/nes: Update refcnt during disconnect
      RDMA/nes: Allocate work item for disconnect event handling
      RDMA/nes: Change memory allocation for cqp request to GFP_ATOMIC
      RDMA/nes: Clean out CQ completions when QP is destroyed
      RDMA/nes: Add CQ error handling
      RDMA/nes: Implement Terminate Packet
      RDMA/nes: Use flush mechanism to set status for wqe in error
      RDMA/nes: Make poll_cq return correct number of wqes during flush
      RDMA/nes: Use the flush code to fill in cqe error
      RDMA/nes: Rework the disconn routine for terminate and flushing

Hal Rosenstock (1):
      IB/mad: Allow tuning of QP0 and QP1 sizes

Jack Morgenstein (3):
      IB/uverbs: Return ENOSYS for unimplemented commands (not EINVAL)
      IB/mlx4: Don't allow userspace open while recovering from catastrophic error
      IB/mthca: Don't allow userspace open while recovering from catastrophic error

Jason Gunthorpe (1):
      IPoIB: Check multicast address format

Joachim Fenkes (2):
      IB/ehca: Construct MAD redirect replies from request MAD
      IB/ehca: Fix CQE flags reporting

Marcin Slusarz (1):
      IB: Use printk_once() for driver versions

Roel Kluin (2):
      IB/ipath: strncpy() doesn't always NUL-terminate
      RDMA/amso1100: Check kmalloc() result in c2_register_device()

Roland Dreier (15):
      IPoIB: Remove unused <rdma/ib_cache.h> includes
      IPoIB: Drop priv->lock before calling ipoib_send()
      IB/mad: Check hop count field in directed route MAD to avoid array overflow
      IB: Use DEFINE_SPINLOCK() for static spinlocks
      mlx4_core: Use pci_request_regions()
      mlx4_core: Remove unnecessary includes of <linux/init.h>
      IB/mlx4: Annotate CQ locking
      mlx4_core: Allocate and map sufficient ICM memory for EQ context
      IB/mthca: Remove unnecessary include of <asm/page.h>
      IB/mthca: Remove unnecessary include of <linux/init.h>
      IB/mthca: Annotate CQ locking
      IB/mad: Fix possible lock-lock-timer deadlock
      MAINTAINERS: InfiniBand/RDMA mailing list transition to vger
      Merge branches 'cxgb3', 'ehca', 'ipath', 'ipoib', 'misc', 'mlx4', 'mthca' and 'nes' into for-linus
      Merge branch 'mad' into for-linus

Steve Wise (8):
      RDMA/cxgb3: iwch_unregister_device leaks memory
      RDMA/cxgb3: Set the appropriate IO channel in rdma_init work requests
      RDMA/cxgb3: Handle port events properly
      RDMA/cxgb3: Don't free endpoints early
      RDMA/cxgb3: Wake up any waiters on peer close/abort
      RDMA/cxgb3: Don't ignore insert_handle() failures
      RDMA/cxgb3: Clean up properly on FW mismatch failures
      RDMA/iwcm: Reject the connection when the cm_id is destroyed

Tobias Klauser (1):
      RDMA/amso1100: Use %pM conversion specifier

Yevgeny Petrilin (1):
      mlx4_core: Avoid double free_icms

Yossi Etigin (1):
      IB/core: Fix send multicast group leave retry

 MAINTAINERS                                    |   12 +-
 drivers/infiniband/core/iwcm.c                 |    1 +
 drivers/infiniband/core/mad.c                  |   35 +-
 drivers/infiniband/core/mad_priv.h             |    3 +
 drivers/infiniband/core/multicast.c            |   10 +-
 drivers/infiniband/core/sa_query.c             |    7 +-
 drivers/infiniband/core/smi.c                  |    8 +
 drivers/infiniband/core/uverbs_main.c          |   10 +-
 drivers/infiniband/hw/amso1100/c2.c            |    6 +-
 drivers/infiniband/hw/amso1100/c2_provider.c   |   24 +-
 drivers/infiniband/hw/cxgb3/cxio_hal.c         |    5 +-
 drivers/infiniband/hw/cxgb3/cxio_wr.h          |    6 +
 drivers/infiniband/hw/cxgb3/iwch.c             |   37 +-
 drivers/infiniband/hw/cxgb3/iwch_cm.c          |   68 ++-
 drivers/infiniband/hw/cxgb3/iwch_cm.h          |    9 +-
 drivers/infiniband/hw/cxgb3/iwch_mem.c         |   21 +-
 drivers/infiniband/hw/cxgb3/iwch_provider.c    |   52 ++-
 drivers/infiniband/hw/cxgb3/iwch_qp.c          |    1 +
 drivers/infiniband/hw/ehca/ehca_main.c         |    8 +-
 drivers/infiniband/hw/ehca/ehca_reqs.c         |    6 +-
 drivers/infiniband/hw/ehca/ehca_sqp.c          |   47 ++-
 drivers/infiniband/hw/ipath/ipath_file_ops.c   |    2 +-
 drivers/infiniband/hw/ipath/ipath_mad.c        |    2 +-
 drivers/infiniband/hw/mlx4/main.c              |   12 +-
 drivers/infiniband/hw/mlx4/mlx4_ib.h           |    1 +
 drivers/infiniband/hw/mlx4/qp.c                |   12 +-
 drivers/infiniband/hw/mthca/mthca_catas.c      |    1 +
 drivers/infiniband/hw/mthca/mthca_config_reg.h |    2 -
 drivers/infiniband/hw/mthca/mthca_dev.h        |    1 +
 drivers/infiniband/hw/mthca/mthca_eq.c         |   17 +-
 drivers/infiniband/hw/mthca/mthca_main.c       |    8 +-
 drivers/infiniband/hw/mthca/mthca_provider.c   |    3 +
 drivers/infiniband/hw/mthca/mthca_provider.h   |    1 +
 drivers/infiniband/hw/mthca/mthca_qp.c         |   12 +-
 drivers/infiniband/hw/mthca/mthca_reset.c      |    1 -
 drivers/infiniband/hw/nes/nes.h                |    2 +-
 drivers/infiniband/hw/nes/nes_cm.c             |  128 ++--
 drivers/infiniband/hw/nes/nes_cm.h             |    2 -
 drivers/infiniband/hw/nes/nes_hw.c             |  767 +++++++++++++++++-------
 drivers/infiniband/hw/nes/nes_hw.h             |  103 ++++
 drivers/infiniband/hw/nes/nes_utils.c          |    5 +-
 drivers/infiniband/hw/nes/nes_verbs.c          |  204 +++++--
 drivers/infiniband/hw/nes/nes_verbs.h          |   16 +-
 drivers/infiniband/ulp/ipoib/ipoib_cm.c        |    1 -
 drivers/infiniband/ulp/ipoib/ipoib_ib.c        |    1 -
 drivers/infiniband/ulp/ipoib/ipoib_main.c      |    7 +-
 drivers/infiniband/ulp/ipoib/ipoib_multicast.c |   21 +
 drivers/net/cxgb3/cxgb3_main.c                 |    6 +-
 drivers/net/cxgb3/cxgb3_offload.c              |    6 +-
 drivers/net/cxgb3/cxgb3_offload.h              |    8 +-
 drivers/net/mlx4/cq.c                          |    1 -
 drivers/net/mlx4/eq.c                          |   77 +--
 drivers/net/mlx4/icm.c                         |    1 -
 drivers/net/mlx4/main.c                        |   37 +-
 drivers/net/mlx4/mcg.c                         |    1 -
 drivers/net/mlx4/mlx4.h                        |    7 +-
 drivers/net/mlx4/mr.c                          |    1 -
 drivers/net/mlx4/pd.c                          |    1 -
 drivers/net/mlx4/profile.c                     |    2 -
 drivers/net/mlx4/qp.c                          |    2 -
 drivers/net/mlx4/reset.c                       |    1 -
 drivers/net/mlx4/srq.c                         |    2 -
 drivers/scsi/cxgb3i/cxgb3i_init.c              |   12 +-
 63 files changed, 1278 insertions(+), 595 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2009-07-14 18:48 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2009-07-14 18:48 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a new PCI ID for the mlx4 driver, which also requires
handling one new firmware status code.  The chance of regressions
should be near-nil, since existing devices won't hit any of the new
code (and the worst case seems to be printing an incorrect error
message anyway).

Yevgeny Petrilin (2):
      mlx4_core: Handle multi-physical function devices
      mlx4_core: Add new ConnectX EN PCI ID 0x6764

 drivers/net/mlx4/cmd.c  |    5 ++++-
 drivers/net/mlx4/main.c |    6 +++++-
 2 files changed, 9 insertions(+), 2 deletions(-)


diff --git a/drivers/net/mlx4/cmd.c b/drivers/net/mlx4/cmd.c
index 2845a05..65ec77d 100644
--- a/drivers/net/mlx4/cmd.c
+++ b/drivers/net/mlx4/cmd.c
@@ -80,7 +80,9 @@ enum {
 	/* Bad management packet (silently discarded): */
 	CMD_STAT_BAD_PKT	= 0x30,
 	/* More outstanding CQEs in CQ than new CQ size: */
-	CMD_STAT_BAD_SIZE	= 0x40
+	CMD_STAT_BAD_SIZE	= 0x40,
+	/* Multi Function device support required: */
+	CMD_STAT_MULTI_FUNC_REQ	= 0x50,
 };
 
 enum {
@@ -128,6 +130,7 @@ static int mlx4_status_to_errno(u8 status)
 		[CMD_STAT_LAM_NOT_PRE]	  = -EAGAIN,
 		[CMD_STAT_BAD_PKT]	  = -EINVAL,
 		[CMD_STAT_BAD_SIZE]	  = -ENOMEM,
+		[CMD_STAT_MULTI_FUNC_REQ] = -EACCES,
 	};
 
 	if (status >= ARRAY_SIZE(trans_table) ||
diff --git a/drivers/net/mlx4/main.c b/drivers/net/mlx4/main.c
index 018348c..dac621b 100644
--- a/drivers/net/mlx4/main.c
+++ b/drivers/net/mlx4/main.c
@@ -729,7 +729,10 @@ static int mlx4_init_hca(struct mlx4_dev *dev)
 
 	err = mlx4_QUERY_FW(dev);
 	if (err) {
-		mlx4_err(dev, "QUERY_FW command failed, aborting.\n");
+		if (err == -EACCES)
+			mlx4_info(dev, "non-primary physical function, skipping.\n");
+		else
+			mlx4_err(dev, "QUERY_FW command failed, aborting.\n");
 		return err;
 	}
 
@@ -1285,6 +1288,7 @@ static struct pci_device_id mlx4_pci_table[] = {
 	{ PCI_VDEVICE(MELLANOX, 0x6750) }, /* MT25408 "Hermon" EN 10GigE PCIe gen2 */
 	{ PCI_VDEVICE(MELLANOX, 0x6372) }, /* MT25458 ConnectX EN 10GBASE-T 10GigE */
 	{ PCI_VDEVICE(MELLANOX, 0x675a) }, /* MT25458 ConnectX EN 10GBASE-T+Gen2 10GigE */
+	{ PCI_VDEVICE(MELLANOX, 0x6764) }, /* MT26468 ConnectX EN 10GigE PCIe gen2*/
 	{ 0, }
 };
 

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2009-06-23 17:39 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2009-06-23 17:39 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This has a few more fixes for 2.6.31-rc1; however everything here
should be a fix appropriate for -rc2 as well, so if this misses the
end of the merge window then I think it should still be OK to pull.

Alexander Schmidt (1):
      IB/ehca: Bump version number

Faisal Latif (2):
      RDMA/nes: Fix max_qp_init_rd_atom returned from query device
      RDMA/nes: Fix FIN state handling under error conditions

Hannes Hering (1):
      IB/ehca: Tolerate dynamic memory operations before driver load

Peter Huewe (1):
      RDMA: Add __init/__exit macros to addr.c and cma.c

Roel Kluin (1):
      IB/ehca: Ensure that guid_entry index is not negative

Roland Dreier (3):
      IB/mthca: Replace dma_sync_single() use with proper functions
      mlx4_core: Fix dma_sync_single_for_cpu() with matching for_device() calls
      Merge branches 'ehca', 'misc', 'mlx4', 'mthca' and 'nes' into for-linus

 drivers/infiniband/core/addr.c         |    4 +-
 drivers/infiniband/core/cma.c          |    4 +-
 drivers/infiniband/hw/ehca/ehca_hca.c  |    2 +-
 drivers/infiniband/hw/ehca/ehca_main.c |   20 +-
 drivers/infiniband/hw/ehca/ehca_mrmw.c |  508 +++++++++++++++++++++++++++++++-
 drivers/infiniband/hw/ehca/ehca_mrmw.h |   13 +-
 drivers/infiniband/hw/mthca/mthca_mr.c |   13 +-
 drivers/infiniband/hw/nes/nes_cm.c     |    8 +-
 drivers/infiniband/hw/nes/nes_verbs.c  |    2 +-
 drivers/net/mlx4/mr.c                  |   14 +-
 10 files changed, 554 insertions(+), 34 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2009-06-14 20:47 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2009-06-14 20:47 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-kernel, general

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This has the main batch of InfiniBand/RDMA changes for 2.6.31; sorry
for being so late in the merge cycle but the whole family was sick
with the stomach flu for the past week and, well, merge requests
weren't a top priority.

Anyway, this has been a slow cycle for my tree for whatever reason, so
there's not much here; everything has been in -next for a while except
for my two IRQ double-free patches, which fix a just-reported bug (and
are tiny and have been tested).

Anton Blanchard (1):
      IB/ehca: Replace vmalloc() with kmalloc() for queue allocation

Eli Cohen (2):
      IB/mthca: Add module parameter for number of MTTs per segment
      mlx4_core: Add module parameter for number of MTTs per segment

Jack Morgenstein (1):
      IB/mlx4: Add strong ordering to local inval and fast reg work requests

Jack Stone (1):
      infiniband: Remove void casts

Joachim Fenkes (1):
      IB/ehca: Remove superfluous bitmasks from QP control block

Roel Kluin (1):
      RDMA/nes: Fix off-by-one bugs in reset_adapter_ne020() and init_serdes()

Roland Dreier (3):
      IB/mthca: Don't double-free IRQs when falling back from MSI-X to INTx
      mlx4_core: Don't double-free IRQs when falling back from MSI-X to INTx
      Merge branches 'cxgb3', 'ehca', 'misc', 'mlx4', 'mthca' and 'nes' into for-linus

Stefan Roscher (3):
      IB/ehca: Fall back to vmalloc() for big allocations
      IB/ehca: Remove unnecessary memory operations for userspace queue pairs
      IB/ehca: Increment version number

Steve Wise (2):
      RDMA/cxgb3: Report correct port state and MTU
      RDMA/cxgb3: Limit fast register size based on T3 limitations

 drivers/infiniband/hw/amso1100/c2_cq.c            |    4 +-
 drivers/infiniband/hw/cxgb3/cxio_wr.h             |    2 +-
 drivers/infiniband/hw/cxgb3/iwch_provider.c       |   32 ++++++-
 drivers/infiniband/hw/ehca/ehca_classes_pSeries.h |   28 -----
 drivers/infiniband/hw/ehca/ehca_irq.c             |    9 +-
 drivers/infiniband/hw/ehca/ehca_main.c            |    2 +-
 drivers/infiniband/hw/ehca/ehca_qp.c              |  112 +++++++++++----------
 drivers/infiniband/hw/ehca/hcp_if.c               |    6 +-
 drivers/infiniband/hw/ehca/hcp_if.h               |    2 +-
 drivers/infiniband/hw/ehca/hcp_phyp.c             |   11 ++-
 drivers/infiniband/hw/ehca/hcp_phyp.h             |    2 +-
 drivers/infiniband/hw/ehca/ipz_pt_fn.c            |   19 +++-
 drivers/infiniband/hw/mlx4/qp.c                   |    4 +
 drivers/infiniband/hw/mthca/mthca_cmd.c           |    2 +-
 drivers/infiniband/hw/mthca/mthca_dev.h           |    1 +
 drivers/infiniband/hw/mthca/mthca_eq.c            |    4 +-
 drivers/infiniband/hw/mthca/mthca_main.c          |   17 +++-
 drivers/infiniband/hw/mthca/mthca_mr.c            |   16 ++--
 drivers/infiniband/hw/mthca/mthca_profile.c       |    4 +-
 drivers/infiniband/hw/nes/nes_hw.c                |   14 ++--
 drivers/net/mlx4/eq.c                             |    4 +-
 drivers/net/mlx4/main.c                           |   14 ++-
 drivers/net/mlx4/mr.c                             |    6 +-
 drivers/net/mlx4/profile.c                        |    2 +-
 include/linux/mlx4/device.h                       |    1 +
 include/linux/mlx4/qp.h                           |    1 +
 26 files changed, 183 insertions(+), 136 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2009-05-13 22:18 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2009-05-13 22:18 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a couple of fixes to low-level drivers that fix crashes
seen when running NFS/RDMA:

Jack Morgenstein (1):
      IB/mlx4: Don't overwrite fast registration page list when posting work request

Roland Dreier (1):
      Merge branches 'cxgb3' and 'mlx4' into for-linus

Steve Wise (1):
      RDMA/cxgb3: Don't complete flushed send work requests twice

 drivers/infiniband/hw/cxgb3/cxio_hal.c |    1 +
 drivers/infiniband/hw/mlx4/mlx4_ib.h   |    1 +
 drivers/infiniband/hw/mlx4/mr.c        |   10 ++++++++--
 drivers/infiniband/hw/mlx4/qp.c        |    2 +-
 4 files changed, 11 insertions(+), 3 deletions(-)


diff --git a/drivers/infiniband/hw/cxgb3/cxio_hal.c b/drivers/infiniband/hw/cxgb3/cxio_hal.c
index 8d71086..62f9cf2 100644
--- a/drivers/infiniband/hw/cxgb3/cxio_hal.c
+++ b/drivers/infiniband/hw/cxgb3/cxio_hal.c
@@ -410,6 +410,7 @@ int cxio_flush_sq(struct t3_wq *wq, struct t3_cq *cq, int count)
 	ptr = wq->sq_rptr + count;
 	sqp = wq->sq + Q_PTR2IDX(ptr, wq->sq_size_log2);
 	while (ptr != wq->sq_wptr) {
+		sqp->signaled = 0;
 		insert_sq_cqe(wq, cq, sqp);
 		ptr++;
 		sqp = wq->sq + Q_PTR2IDX(ptr, wq->sq_size_log2);
diff --git a/drivers/infiniband/hw/mlx4/mlx4_ib.h b/drivers/infiniband/hw/mlx4/mlx4_ib.h
index 9974e88..8a7dd67 100644
--- a/drivers/infiniband/hw/mlx4/mlx4_ib.h
+++ b/drivers/infiniband/hw/mlx4/mlx4_ib.h
@@ -86,6 +86,7 @@ struct mlx4_ib_mr {
 
 struct mlx4_ib_fast_reg_page_list {
 	struct ib_fast_reg_page_list	ibfrpl;
+	__be64			       *mapped_page_list;
 	dma_addr_t			map;
 };
 
diff --git a/drivers/infiniband/hw/mlx4/mr.c b/drivers/infiniband/hw/mlx4/mr.c
index 8e4d26d..8f3666b 100644
--- a/drivers/infiniband/hw/mlx4/mr.c
+++ b/drivers/infiniband/hw/mlx4/mr.c
@@ -231,7 +231,11 @@ struct ib_fast_reg_page_list *mlx4_ib_alloc_fast_reg_page_list(struct ib_device
 	if (!mfrpl)
 		return ERR_PTR(-ENOMEM);
 
-	mfrpl->ibfrpl.page_list = dma_alloc_coherent(&dev->dev->pdev->dev,
+	mfrpl->ibfrpl.page_list = kmalloc(size, GFP_KERNEL);
+	if (!mfrpl->ibfrpl.page_list)
+		goto err_free;
+
+	mfrpl->mapped_page_list = dma_alloc_coherent(&dev->dev->pdev->dev,
 						     size, &mfrpl->map,
 						     GFP_KERNEL);
 	if (!mfrpl->ibfrpl.page_list)
@@ -242,6 +246,7 @@ struct ib_fast_reg_page_list *mlx4_ib_alloc_fast_reg_page_list(struct ib_device
 	return &mfrpl->ibfrpl;
 
 err_free:
+	kfree(mfrpl->ibfrpl.page_list);
 	kfree(mfrpl);
 	return ERR_PTR(-ENOMEM);
 }
@@ -252,8 +257,9 @@ void mlx4_ib_free_fast_reg_page_list(struct ib_fast_reg_page_list *page_list)
 	struct mlx4_ib_fast_reg_page_list *mfrpl = to_mfrpl(page_list);
 	int size = page_list->max_page_list_len * sizeof (u64);
 
-	dma_free_coherent(&dev->dev->pdev->dev, size, page_list->page_list,
+	dma_free_coherent(&dev->dev->pdev->dev, size, mfrpl->mapped_page_list,
 			  mfrpl->map);
+	kfree(mfrpl->ibfrpl.page_list);
 	kfree(mfrpl);
 }
 
diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
index f385a24..20724ae 100644
--- a/drivers/infiniband/hw/mlx4/qp.c
+++ b/drivers/infiniband/hw/mlx4/qp.c
@@ -1365,7 +1365,7 @@ static void set_fmr_seg(struct mlx4_wqe_fmr_seg *fseg, struct ib_send_wr *wr)
 	int i;
 
 	for (i = 0; i < wr->wr.fast_reg.page_list_len; ++i)
-		wr->wr.fast_reg.page_list->page_list[i] =
+		mfrpl->mapped_page_list[i] =
 			cpu_to_be64(wr->wr.fast_reg.page_list->page_list[i] |
 				    MLX4_MTT_FLAG_PRESENT);
 

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2009-04-28 23:03 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2009-04-28 23:03 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a batch of changes for -rc2, mostly low-level hardware
driver fixes with a few other miscellaneous fixes and an IPoIB
documentation update.

Chien Tung (8):
      RDMA/nes: Fix compiler warning at nes_verbs.c:1955
      RDMA/nes: Modify thermo mitigation to flip SerDes1 ref clk to internal
      RDMA/nes: Correct CDR loop filter setting for port 1
      RDMA/nes: Enable repause timer for port 1
      RDMA/nes: Set trace length to 1 inch for SFP_D
      RDMA/nes: Fix fw_ver in /sys
      RDMA/nes: Fix unused variable compile warning when INFINIBAND_NES_DEBUG=n
      RDMA/nes: Update iw_nes version

Don Wood (1):
      RDMA/nes: Fix bugs in nes_reg_phys_mr()

Faisal Latif (5):
      RDMA/nes: Do not set apbvt entry for loopback
      RDMA/nes: Check for sequence number wrap-around
      RDMA/nes: Increase rexmit timeout interval
      RDMA/nes: Fix hang issues for large cluster dynamic connections
      RDMA/nes: Fix error path in nes_accept()

Jack Morgenstein (1):
      IB/mthca: Fix timeout for INIT_HCA and a few other commands

Matt Kraai (1):
      RDMA/nes: Remove root_256()'s unused pbl_count_256 parameter

Miroslaw Walukiewicz (1):
      RDMA/nes: Fix resource issues in nes_create_cq() and nes_destroy_cq()

Nicolas Morey-Chaisemartin (1):
      mlx4_core: Fix memory leak in mlx4_enable_msi_x()

Roland Dreier (1):
      Merge branches 'cxgb3', 'ipoib', 'mthca', 'mlx4' and 'nes' into for-linus

Steve Wise (2):
      RDMA/cxgb3: Adjust ORD/IRD (if needed) for peer2peer connections
      RDMA/cxgb3: Don't zero QP attrs when moving to IDLE

Yossi Etigin (1):
      IPoIB: Disable NAPI while CQ is being drained

 drivers/infiniband/hw/cxgb3/iwch_cm.c     |    8 +++
 drivers/infiniband/hw/cxgb3/iwch_qp.c     |    1 -
 drivers/infiniband/hw/mthca/mthca_cmd.c   |   16 +++---
 drivers/infiniband/hw/nes/nes.h           |    4 +-
 drivers/infiniband/hw/nes/nes_cm.c        |   84 ++++++++++++++--------------
 drivers/infiniband/hw/nes/nes_cm.h        |    1 +
 drivers/infiniband/hw/nes/nes_hw.c        |   30 ++++++----
 drivers/infiniband/hw/nes/nes_verbs.c     |   67 +++++++++++++++--------
 drivers/infiniband/hw/nes/nes_verbs.h     |    1 +
 drivers/infiniband/ulp/ipoib/ipoib_ib.c   |    6 ++-
 drivers/infiniband/ulp/ipoib/ipoib_main.c |    5 +--
 drivers/net/mlx4/main.c                   |    2 +-
 12 files changed, 130 insertions(+), 95 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2009-04-09 21:58 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2009-04-09 21:58 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-kernel, general

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a batch of changes for -rc2, mostly low-level hardware
driver fixes with a few other miscellaneous fixes and an IPoIB
documentation update.

Chien Tung (3):
      RDMA/nes: Fix SFP+ PHY initialization
      RDMA/nes: Add wide_ppm_offset parm for switch compatibility
      RDMA/nes: Add support for new SFP+ PHY

Don Wood (1):
      RDMA/nes: Fix incorrect casts on 32-bit architectures

Faisal Latif (2):
      RDMA/nes: Fix error handling issues
      RDMA/nes: Fix nes_nic_cm_xmit() error handling

Or Gerlitz (1):
      IPoIB: Document newish features

Roland Dreier (4):
      IB/mlx4: Use pgprot_writecombine() for BlueFlame pages
      mlx4_core: Don't leak mailbox for SET_PORT on Ethernet ports
      IPoIB: Avoid free_netdev() BUG when destroying a child interface
      Merge branches 'cma', 'cxgb3', 'ipoib', 'mlx4' and 'nes' into for-next

Steve Wise (2):
      RDMA/cxgb3: Handle EEH events
      RDMA/cxgb3: Release dependent resources only when endpoint memory is freed.

Yossi Etigin (2):
      RDMA/cma: Use rate from IPoIB broadcast when joining IPoIB multicast groups
      RDMA/cma: Create cm id even when IB port is down

 Documentation/infiniband/ipoib.txt        |   45 ++++
 drivers/infiniband/core/cma.c             |   45 +++-
 drivers/infiniband/hw/cxgb3/cxio_hal.c    |   10 +-
 drivers/infiniband/hw/cxgb3/cxio_hal.h    |    6 +
 drivers/infiniband/hw/cxgb3/iwch.c        |   11 +-
 drivers/infiniband/hw/cxgb3/iwch.h        |    5 +
 drivers/infiniband/hw/cxgb3/iwch_cm.c     |  116 ++++++---
 drivers/infiniband/hw/cxgb3/iwch_cm.h     |    3 +-
 drivers/infiniband/hw/cxgb3/iwch_qp.c     |    4 +-
 drivers/infiniband/hw/mlx4/main.c         |    3 +-
 drivers/infiniband/hw/nes/nes.h           |    4 +-
 drivers/infiniband/hw/nes/nes_cm.c        |   22 +-
 drivers/infiniband/hw/nes/nes_cm.h        |    1 -
 drivers/infiniband/hw/nes/nes_hw.c        |  389 ++++++++++++++---------------
 drivers/infiniband/hw/nes/nes_hw.h        |    2 +
 drivers/infiniband/hw/nes/nes_nic.c       |   52 +++--
 drivers/infiniband/ulp/ipoib/ipoib_vlan.c |   25 ++-
 drivers/net/mlx4/port.c                   |    5 +-
 18 files changed, 442 insertions(+), 306 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2009-03-25  4:05 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2009-03-25  4:05 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-kernel, general

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This has the first batch of 2.6.30 changes -- I have one more patch
that I'll send after the net-next tree is merged (just to avoid merge
hassles due to dependencies).

Chien Tung (3):
      RDMA/nes: Update copyright to new legal entity and year
      RDMA/nes: Report correct vendor_id and vendor_part_id
      RDMA/nes: Fix tmp_addr compilation warning

Don Wood (3):
      RDMA/nes: Account for freed PBL after HW operation
      RDMA/nes: Inform hardware that asynchronous event has been handled
      RDMA/nes: Improve use of PBLs

Faisal Latif (2):
      RDMA/nes: Remove LLTX
      RDMA/nes: Handle MPA Reject message properly

Harvey Harrison (1):
      IB: Remove __constant_{endian} uses

Jack Morgenstein (3):
      IPoIB: In unicast_arp_send(), only free newly-created paths
      mlx4_core: Add device IDs for MT25458 10GigE devices
      IB/sa_query: Fix AH leak due to update_sm_ah() race

Moni Shoua (2):
      IB/mlx4: Fix dispatch of IB_EVENT_LID_CHANGE event
      IB/mthca: Fix dispatch of IB_EVENT_LID_CHANGE event

Or Gerlitz (1):
      IB/iser: Remove hard setting of path MTU

Ralph Campbell (3):
      IB/mad: Fix null pointer dereference in local_completions()
      IB/mad: initialize mad_agent_priv before putting on lists
      IB/mad: Fix ib_post_send_mad() returning 0 with no generate send comp

Ramachandra K (1):
      IB/mad: Fix RMPP header RRespTime manipulation

Roland Dreier (5):
      IB/ipath: Fix memory leak in init_shadow_tids() error path
      IB/ipath: Really run work in ipath_release_user_pages_on_close()
      IB: Remove sysfs files before unregistering device
      IB: Remove useless ibdev_is_alive() tests from sysfs code
      Merge branches 'cxgb3', 'endian', 'ipath', 'ipoib', 'iser', 'mad', 'misc', 'mlx4', 'mthca', 'nes' and 'sysfs' into for-next

Steve Wise (4):
      RDMA/cxgb3: sgl/pbl offset calculation needs 64 bits
      RDMA/cxgb3: Connection termination fixes
      RDMA/cxgb3: Remove modulo math from build_rdma_recv()
      RDMA/cxgb3: Enforce required firmware

Yevgeny Petrilin (3):
      mlx4_core: Don't perform SET_PORT command for Ethernet ports
      mlx4_core: Add link type autosensing
      IB/mlx4: Unregister IB device prior to CLOSE PORT command

 drivers/infiniband/core/cm.c                   |   15 +-
 drivers/infiniband/core/cm_msgs.h              |   22 +-
 drivers/infiniband/core/device.c               |    4 +-
 drivers/infiniband/core/mad.c                  |   40 +-
 drivers/infiniband/core/mad_rmpp.c             |    2 +-
 drivers/infiniband/core/sa_query.c             |    2 +
 drivers/infiniband/core/sysfs.c                |   19 +-
 drivers/infiniband/hw/cxgb3/cxio_hal.c         |   30 ++-
 drivers/infiniband/hw/cxgb3/cxio_hal.h         |    3 +
 drivers/infiniband/hw/cxgb3/cxio_wr.h          |    6 +
 drivers/infiniband/hw/cxgb3/iwch_cm.c          |    3 +
 drivers/infiniband/hw/cxgb3/iwch_ev.c          |    5 -
 drivers/infiniband/hw/cxgb3/iwch_qp.c          |   17 +-
 drivers/infiniband/hw/ehca/ehca_sqp.c          |    8 +-
 drivers/infiniband/hw/ipath/ipath_eeprom.c     |    4 +-
 drivers/infiniband/hw/ipath/ipath_init_chip.c  |    2 +-
 drivers/infiniband/hw/ipath/ipath_mad.c        |   95 ++--
 drivers/infiniband/hw/ipath/ipath_rc.c         |    2 +-
 drivers/infiniband/hw/ipath/ipath_sdma.c       |    4 +-
 drivers/infiniband/hw/ipath/ipath_uc.c         |    2 +-
 drivers/infiniband/hw/ipath/ipath_ud.c         |    4 +-
 drivers/infiniband/hw/ipath/ipath_user_pages.c |    8 +-
 drivers/infiniband/hw/ipath/ipath_user_sdma.c  |    6 +-
 drivers/infiniband/hw/ipath/ipath_verbs.c      |    2 +-
 drivers/infiniband/hw/ipath/ipath_verbs.h      |   10 +-
 drivers/infiniband/hw/mlx4/mad.c               |   27 +-
 drivers/infiniband/hw/mlx4/main.c              |    5 +-
 drivers/infiniband/hw/mlx4/qp.c                |   22 +-
 drivers/infiniband/hw/mthca/mthca_mad.c        |   25 +-
 drivers/infiniband/hw/nes/nes.c                |    2 +-
 drivers/infiniband/hw/nes/nes.h                |    2 +-
 drivers/infiniband/hw/nes/nes_cm.c             |  586 ++++++++++++++++--------
 drivers/infiniband/hw/nes/nes_cm.h             |   12 +-
 drivers/infiniband/hw/nes/nes_context.h        |    2 +-
 drivers/infiniband/hw/nes/nes_hw.c             |   17 +-
 drivers/infiniband/hw/nes/nes_hw.h             |    5 +-
 drivers/infiniband/hw/nes/nes_nic.c            |  142 +++----
 drivers/infiniband/hw/nes/nes_user.h           |    2 +-
 drivers/infiniband/hw/nes/nes_utils.c          |    2 +-
 drivers/infiniband/hw/nes/nes_verbs.c          |  249 +++++++----
 drivers/infiniband/hw/nes/nes_verbs.h          |    2 +-
 drivers/infiniband/ulp/ipoib/ipoib_main.c      |    9 +-
 drivers/infiniband/ulp/iser/iser_verbs.c       |    7 -
 drivers/net/mlx4/Makefile                      |    2 +-
 drivers/net/mlx4/catas.c                       |   16 +-
 drivers/net/mlx4/eq.c                          |   16 +-
 drivers/net/mlx4/main.c                        |  106 ++++--
 drivers/net/mlx4/mlx4.h                        |   27 +-
 drivers/net/mlx4/port.c                        |   13 +-
 drivers/net/mlx4/sense.c                       |  156 +++++++
 include/linux/mlx4/cmd.h                       |    1 +
 include/linux/mlx4/device.h                    |    6 +-
 include/rdma/ib_cm.h                           |   12 +-
 include/rdma/ib_mad.h                          |    4 +-
 include/rdma/ib_smi.h                          |   34 +-
 55 files changed, 1190 insertions(+), 636 deletions(-)
 create mode 100644 drivers/net/mlx4/sense.c

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2009-01-16 23:07 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2009-01-16 23:07 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-kernel, general

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

Some fixes to go into 2.6.29-rc3.  Nothing too urgent so if this takes
a long time due to LCA, it's not a big deal.  The bulk of things are
for the ehca driver, to fix warning spew caused by the powerpc u64
transition from long to long long.

Andrew Morton (1):
      mlx4_core: Fix min() warning

Roland Dreier (4):
      IPoIB: Fix hang in napi_disable() if P_Key is never found
      IPoIB: Fix deadlock between ipoib_open() and child interface create
      IB/mlx4: Fix memory ordering problem when posting LSO sends
      Merge branches 'ehca', 'ipoib' and 'mlx4' into for-linus

Stephen Rothwell (2):
      IB/ehca: Fix printk format warnings from u64 type change
      IB/ehca: Use consistent types for ehca_plpar_hcall9()

Yossi Etigin (1):
      IPoIB: Do not print error messages for multicast join retries

 drivers/infiniband/hw/ehca/ehca_cq.c           |   16 ++--
 drivers/infiniband/hw/ehca/ehca_hca.c          |    2 +-
 drivers/infiniband/hw/ehca/ehca_irq.c          |   18 ++--
 drivers/infiniband/hw/ehca/ehca_main.c         |    6 +-
 drivers/infiniband/hw/ehca/ehca_mcast.c        |    4 +-
 drivers/infiniband/hw/ehca/ehca_mrmw.c         |  144 ++++++++++++------------
 drivers/infiniband/hw/ehca/ehca_qp.c           |   32 +++---
 drivers/infiniband/hw/ehca/ehca_reqs.c         |    2 +-
 drivers/infiniband/hw/ehca/ehca_sqp.c          |    2 +-
 drivers/infiniband/hw/ehca/ehca_tools.h        |    2 +-
 drivers/infiniband/hw/ehca/ehca_uverbs.c       |    2 +-
 drivers/infiniband/hw/ehca/hcp_if.c            |   56 +++++-----
 drivers/infiniband/hw/mlx4/qp.c                |   28 +++--
 drivers/infiniband/ulp/ipoib/ipoib_main.c      |   27 +++--
 drivers/infiniband/ulp/ipoib/ipoib_multicast.c |    2 +-
 drivers/infiniband/ulp/ipoib/ipoib_vlan.c      |   11 ++-
 drivers/net/mlx4/profile.c                     |    6 +-
 17 files changed, 189 insertions(+), 171 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2009-01-13  3:40 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2009-01-13  3:40 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

Some fixes for 2.6.29-rc2:

Harvey Harrison (1):
      RDMA/nes: Fix for NIPQUAD removal

Randy Dunlap (1):
      IB/iser: Add dependency on INFINIBAND_ADDR_TRANS

Roland Dreier (3):
      mlx4_core: Fix warning from min()
      IB/mlx4: Don't register IB device for adapters with no IB ports
      Merge branches 'ehca', 'ipoib', 'iser', 'mlx4' and 'nes' into for-next

Stephen Rothwell (1):
      IB/ehca: spin_lock_irqsave() takes an unsigned long

Yossi Etigin (2):
      IPoIB: Fix loss of connectivity after bonding failover on both sides
      IPoIB: Do not join broadcast group if interface is brought down

 drivers/infiniband/hw/ehca/ehca_main.c         |    2 +-
 drivers/infiniband/hw/mlx4/main.c              |   13 +++++--
 drivers/infiniband/hw/nes/nes_cm.c             |   12 +++++--
 drivers/infiniband/hw/nes/nes_utils.c          |    4 ++-
 drivers/infiniband/ulp/ipoib/ipoib_main.c      |   38 ++++++++++++------------
 drivers/infiniband/ulp/ipoib/ipoib_multicast.c |    3 ++
 drivers/infiniband/ulp/iser/Kconfig            |    2 +-
 drivers/net/mlx4/main.c                        |    4 +-
 8 files changed, 47 insertions(+), 31 deletions(-)


diff --git a/drivers/infiniband/hw/ehca/ehca_main.c b/drivers/infiniband/hw/ehca/ehca_main.c
index 3b77b67..c7b8a50 100644
--- a/drivers/infiniband/hw/ehca/ehca_main.c
+++ b/drivers/infiniband/hw/ehca/ehca_main.c
@@ -955,7 +955,7 @@ void ehca_poll_eqs(unsigned long data)
 			struct ehca_eq *eq = &shca->eq;
 			int max = 3;
 			volatile u64 q_ofs, q_ofs2;
-			u64 flags;
+			unsigned long flags;
 			spin_lock_irqsave(&eq->spinlock, flags);
 			q_ofs = eq->ipz_queue.current_q_offset;
 			spin_unlock_irqrestore(&eq->spinlock, flags);
diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c
index dcefe1f..61588bd 100644
--- a/drivers/infiniband/hw/mlx4/main.c
+++ b/drivers/infiniband/hw/mlx4/main.c
@@ -543,14 +543,21 @@ static void *mlx4_ib_add(struct mlx4_dev *dev)
 {
 	static int mlx4_ib_version_printed;
 	struct mlx4_ib_dev *ibdev;
+	int num_ports = 0;
 	int i;
 
-
 	if (!mlx4_ib_version_printed) {
 		printk(KERN_INFO "%s", mlx4_ib_version);
 		++mlx4_ib_version_printed;
 	}
 
+	mlx4_foreach_port(i, dev, MLX4_PORT_TYPE_IB)
+		num_ports++;
+
+	/* No point in registering a device with no ports... */
+	if (num_ports == 0)
+		return NULL;
+
 	ibdev = (struct mlx4_ib_dev *) ib_alloc_device(sizeof *ibdev);
 	if (!ibdev) {
 		dev_err(&dev->pdev->dev, "Device struct alloc failed\n");
@@ -574,9 +581,7 @@ static void *mlx4_ib_add(struct mlx4_dev *dev)
 	ibdev->ib_dev.owner		= THIS_MODULE;
 	ibdev->ib_dev.node_type		= RDMA_NODE_IB_CA;
 	ibdev->ib_dev.local_dma_lkey	= dev->caps.reserved_lkey;
-	ibdev->num_ports = 0;
-	mlx4_foreach_port(i, dev, MLX4_PORT_TYPE_IB)
-		ibdev->num_ports++;
+	ibdev->num_ports		= num_ports;
 	ibdev->ib_dev.phys_port_cnt     = ibdev->num_ports;
 	ibdev->ib_dev.num_comp_vectors	= dev->caps.num_comp_vectors;
 	ibdev->ib_dev.dma_device	= &dev->pdev->dev;
diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c
index a812db2..ca9ef3f 100644
--- a/drivers/infiniband/hw/nes/nes_cm.c
+++ b/drivers/infiniband/hw/nes/nes_cm.c
@@ -778,12 +778,13 @@ static struct nes_cm_node *find_node(struct nes_cm_core *cm_core,
 	unsigned long flags;
 	struct list_head *hte;
 	struct nes_cm_node *cm_node;
+	__be32 tmp_addr = cpu_to_be32(loc_addr);
 
 	/* get a handle on the hte */
 	hte = &cm_core->connected_nodes;
 
 	nes_debug(NES_DBG_CM, "Searching for an owner node: %pI4:%x from core %p->%p\n",
-		  &loc_addr, loc_port, cm_core, hte);
+		  &tmp_addr, loc_port, cm_core, hte);
 
 	/* walk list and find cm_node associated with this session ID */
 	spin_lock_irqsave(&cm_core->ht_lock, flags);
@@ -816,6 +817,7 @@ static struct nes_cm_listener *find_listener(struct nes_cm_core *cm_core,
 {
 	unsigned long flags;
 	struct nes_cm_listener *listen_node;
+	__be32 tmp_addr = cpu_to_be32(dst_addr);
 
 	/* walk list and find cm_node associated with this session ID */
 	spin_lock_irqsave(&cm_core->listen_list_lock, flags);
@@ -833,7 +835,7 @@ static struct nes_cm_listener *find_listener(struct nes_cm_core *cm_core,
 	spin_unlock_irqrestore(&cm_core->listen_list_lock, flags);
 
 	nes_debug(NES_DBG_CM, "Unable to find listener for %pI4:%x\n",
-		  &dst_addr, dst_port);
+		  &tmp_addr, dst_port);
 
 	/* no listener */
 	return NULL;
@@ -2059,6 +2061,7 @@ static int mini_cm_recv_pkt(struct nes_cm_core *cm_core,
 	struct tcphdr *tcph;
 	struct nes_cm_info nfo;
 	int skb_handled = 1;
+	__be32 tmp_daddr, tmp_saddr;
 
 	if (!skb)
 		return 0;
@@ -2074,8 +2077,11 @@ static int mini_cm_recv_pkt(struct nes_cm_core *cm_core,
 	nfo.rem_addr = ntohl(iph->saddr);
 	nfo.rem_port = ntohs(tcph->source);
 
+	tmp_daddr = cpu_to_be32(iph->daddr);
+	tmp_saddr = cpu_to_be32(iph->saddr);
+
 	nes_debug(NES_DBG_CM, "Received packet: dest=%pI4:0x%04X src=%pI4:0x%04X\n",
-		  &iph->daddr, tcph->dest, &iph->saddr, tcph->source);
+		  &tmp_daddr, tcph->dest, &tmp_saddr, tcph->source);
 
 	do {
 		cm_node = find_node(cm_core,
diff --git a/drivers/infiniband/hw/nes/nes_utils.c b/drivers/infiniband/hw/nes/nes_utils.c
index aa9b734..6f3bc1b 100644
--- a/drivers/infiniband/hw/nes/nes_utils.c
+++ b/drivers/infiniband/hw/nes/nes_utils.c
@@ -655,6 +655,7 @@ int nes_arp_table(struct nes_device *nesdev, u32 ip_addr, u8 *mac_addr, u32 acti
 	struct nes_adapter *nesadapter = nesdev->nesadapter;
 	int arp_index;
 	int err = 0;
+	__be32 tmp_addr;
 
 	for (arp_index = 0; (u32) arp_index < nesadapter->arp_table_size; arp_index++) {
 		if (nesadapter->arp_table[arp_index].ip_addr == ip_addr)
@@ -682,8 +683,9 @@ int nes_arp_table(struct nes_device *nesdev, u32 ip_addr, u8 *mac_addr, u32 acti
 
 	/* DELETE or RESOLVE */
 	if (arp_index == nesadapter->arp_table_size) {
+		tmp_addr = cpu_to_be32(ip_addr);
 		nes_debug(NES_DBG_NETDEV, "MAC for %pI4 not in ARP table - cannot %s\n",
-			  &ip_addr, action == NES_ARP_RESOLVE ? "resolve" : "delete");
+			  &tmp_addr, action == NES_ARP_RESOLVE ? "resolve" : "delete");
 		return -1;
 	}
 
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index 19e06bc..dce0443 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -711,26 +711,26 @@ static int ipoib_start_xmit(struct sk_buff *skb, struct net_device *dev)
 
 		neigh = *to_ipoib_neigh(skb->dst->neighbour);
 
-		if (neigh->ah)
-			if (unlikely((memcmp(&neigh->dgid.raw,
-					    skb->dst->neighbour->ha + 4,
-					    sizeof(union ib_gid))) ||
-					 (neigh->dev != dev))) {
-				spin_lock_irqsave(&priv->lock, flags);
-				/*
-				 * It's safe to call ipoib_put_ah() inside
-				 * priv->lock here, because we know that
-				 * path->ah will always hold one more reference,
-				 * so ipoib_put_ah() will never do more than
-				 * decrement the ref count.
-				 */
+		if (unlikely((memcmp(&neigh->dgid.raw,
+				     skb->dst->neighbour->ha + 4,
+				     sizeof(union ib_gid))) ||
+			     (neigh->dev != dev))) {
+			spin_lock_irqsave(&priv->lock, flags);
+			/*
+			 * It's safe to call ipoib_put_ah() inside
+			 * priv->lock here, because we know that
+			 * path->ah will always hold one more reference,
+			 * so ipoib_put_ah() will never do more than
+			 * decrement the ref count.
+			 */
+			if (neigh->ah)
 				ipoib_put_ah(neigh->ah);
-				list_del(&neigh->list);
-				ipoib_neigh_free(dev, neigh);
-				spin_unlock_irqrestore(&priv->lock, flags);
-				ipoib_path_lookup(skb, dev);
-				return NETDEV_TX_OK;
-			}
+			list_del(&neigh->list);
+			ipoib_neigh_free(dev, neigh);
+			spin_unlock_irqrestore(&priv->lock, flags);
+			ipoib_path_lookup(skb, dev);
+			return NETDEV_TX_OK;
+		}
 
 		if (ipoib_cm_get(neigh)) {
 			if (ipoib_cm_up(neigh)) {
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
index a2eb3b9..59d02e0 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
@@ -529,6 +529,9 @@ void ipoib_mcast_join_task(struct work_struct *work)
 	if (!priv->broadcast) {
 		struct ipoib_mcast *broadcast;
 
+		if (!test_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags))
+			return;
+
 		broadcast = ipoib_mcast_alloc(dev, 1);
 		if (!broadcast) {
 			ipoib_warn(priv, "failed to allocate broadcast group\n");
diff --git a/drivers/infiniband/ulp/iser/Kconfig b/drivers/infiniband/ulp/iser/Kconfig
index 77dedba..b411c51 100644
--- a/drivers/infiniband/ulp/iser/Kconfig
+++ b/drivers/infiniband/ulp/iser/Kconfig
@@ -1,6 +1,6 @@
 config INFINIBAND_ISER
 	tristate "iSCSI Extensions for RDMA (iSER)"
-	depends on SCSI && INET
+	depends on SCSI && INET && INFINIBAND_ADDR_TRANS
 	select SCSI_ISCSI_ATTRS
 	---help---
 	  Support for the iSCSI Extensions for RDMA (iSER) Protocol
diff --git a/drivers/net/mlx4/main.c b/drivers/net/mlx4/main.c
index 710c79e..6ef2490 100644
--- a/drivers/net/mlx4/main.c
+++ b/drivers/net/mlx4/main.c
@@ -912,8 +912,8 @@ static void mlx4_enable_msi_x(struct mlx4_dev *dev)
 	int i;
 
 	if (msi_x) {
-		nreq = min(dev->caps.num_eqs - dev->caps.reserved_eqs,
-			   num_possible_cpus() + 1);
+		nreq = min_t(int, dev->caps.num_eqs - dev->caps.reserved_eqs,
+			     num_possible_cpus() + 1);
 		entries = kcalloc(nreq, sizeof *entries, GFP_KERNEL);
 		if (!entries)
 			goto no_msi;

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-12-30 23:38 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-12-30 23:38 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

A build fix and an endianness bug fix before the new year:

Roland Dreier (3):
      RDMA/addr: Fix build breakage when IPv6 is disabled
      IB/mlx4: Fix reading SL field out of cqe->sl_vid
      Merge branches 'cma' and 'mlx4' into for-linus

 drivers/infiniband/Kconfig      |    1 +
 drivers/infiniband/core/addr.c  |   47 +++++++++++++++++++++++++++++++++-----
 drivers/infiniband/hw/mlx4/cq.c |    2 +-
 3 files changed, 42 insertions(+), 8 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-12-25 15:21 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-12-25 15:21 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get the first tranche of InfiniBand/RDMA changes for 2.6.29:

Aleksey Senin (2):
      RDMA/addr: Add support for translating IPv6 addresses
      RDMA/cma: Add IPv6 support

Chien Tung (2):
      RDMA/nes: Add loopback check to make_cm_node()
      RDMA/nes: Cleanup warnings

Dave Olson (4):
      IB/ipath: Don't count IB symbol and link errors unless link is UP
      IB/ipath: Only do 1X workaround on rev1 chips
      IB/ipath: Fix spi_pioindex value
      IB/ipath: Add locking for interrupt use of ipath_pd contexts vs free

David Disseldorp (1):
      IB/iser: Avoid recv buffer exhaustion caused by unexpected PDUs

Faisal Latif (7):
      RDMA/nes: Cleanup cqp_request list usage
      RDMA/nes: Lock down connected_nodes list while processing it
      RDMA/nes: Avoid race between MPA request and reset event to rdma_cm
      RDMA/nes: Forward packets for a new connection with stale APBVT entry
      RDMA/nes: Fix TCP compliance test failures
      RDMA/nes: Check cqp_avail_reqs is empty after locking the list
      RDMA/nes: Remove tx_free_list

Jack Morgenstein (1):
      IB/mlx4: Set ownership bit correctly when copying CQEs during CQ resize

Joachim Fenkes (1):
      IB/ehca: Fix locking for shca_list_lock

Julia Lawall (1):
      IB/ehca: Remove redundant test of vpage

Michael Ellerman (1):
      IB/ipath: Fix pointer-to-pointer thinko in ipath_fs.c

Ralph Campbell (3):
      IB/ipath: Improve UD loopback performance by allocating temp array only once
      IB/ipath: Fix PSN of send WQEs after an RDMA read resend
      IB/ipath: Check return value of dma_map_single()

Roland Dreier (2):
      mlx4_core: Delete incorrect comment
      Merge branches 'cma', 'ehca', 'ipath', 'iser', 'mlx4' and 'nes' into for-next

Stefan Roscher (1):
      IB/ehca: Replace modulus operations in flush error completion path

Yevgeny Petrilin (1):
      mlx4_core: Add support for multiple completion event vectors

 drivers/infiniband/core/addr.c                |  196 +++++++++++++----
 drivers/infiniband/core/cma.c                 |   86 ++++++---
 drivers/infiniband/hw/ehca/ehca_classes.h     |    7 +
 drivers/infiniband/hw/ehca/ehca_eq.c          |    2 +-
 drivers/infiniband/hw/ehca/ehca_main.c        |   17 +-
 drivers/infiniband/hw/ehca/ehca_qp.c          |   12 +-
 drivers/infiniband/hw/ehca/ehca_reqs.c        |   13 +-
 drivers/infiniband/hw/ipath/ipath_driver.c    |   49 +++--
 drivers/infiniband/hw/ipath/ipath_file_ops.c  |   30 ++--
 drivers/infiniband/hw/ipath/ipath_fs.c        |    2 +-
 drivers/infiniband/hw/ipath/ipath_iba6120.c   |   61 ++++++
 drivers/infiniband/hw/ipath/ipath_iba7220.c   |   83 +++++++-
 drivers/infiniband/hw/ipath/ipath_init_chip.c |    1 +
 drivers/infiniband/hw/ipath/ipath_kernel.h    |   15 ++
 drivers/infiniband/hw/ipath/ipath_keys.c      |    2 +
 drivers/infiniband/hw/ipath/ipath_mad.c       |    2 +
 drivers/infiniband/hw/ipath/ipath_qp.c        |   32 ++-
 drivers/infiniband/hw/ipath/ipath_rc.c        |    5 +-
 drivers/infiniband/hw/ipath/ipath_sdma.c      |   21 ++-
 drivers/infiniband/hw/ipath/ipath_stats.c     |    8 +
 drivers/infiniband/hw/ipath/ipath_ud.c        |   19 +--
 drivers/infiniband/hw/ipath/ipath_verbs.c     |    3 +-
 drivers/infiniband/hw/ipath/ipath_verbs.h     |    1 +
 drivers/infiniband/hw/mlx4/cq.c               |   12 +-
 drivers/infiniband/hw/mlx4/main.c             |    2 +-
 drivers/infiniband/hw/nes/nes.h               |   18 +-
 drivers/infiniband/hw/nes/nes_cm.c            |  279 +++++++++++++------------
 drivers/infiniband/hw/nes/nes_cm.h            |   14 +-
 drivers/infiniband/hw/nes/nes_hw.c            |   42 ++--
 drivers/infiniband/hw/nes/nes_utils.c         |    9 +-
 drivers/infiniband/hw/nes/nes_verbs.c         |   45 +---
 drivers/infiniband/ulp/iser/iscsi_iser.h      |    3 +
 drivers/infiniband/ulp/iser/iser_initiator.c  |  132 ++++++++----
 drivers/infiniband/ulp/iser/iser_verbs.c      |    1 +
 drivers/net/mlx4/cq.c                         |   11 +-
 drivers/net/mlx4/en_cq.c                      |    9 +-
 drivers/net/mlx4/en_main.c                    |    4 +-
 drivers/net/mlx4/eq.c                         |  121 ++++++++---
 drivers/net/mlx4/main.c                       |   53 ++++--
 drivers/net/mlx4/mlx4.h                       |   14 +-
 drivers/net/mlx4/profile.c                    |    4 +-
 include/linux/mlx4/device.h                   |    4 +-
 42 files changed, 965 insertions(+), 479 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-12-01 18:16 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-12-01 18:16 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get two fixes to the ehca driver for problems in patches
added in the 2.6.28 cycle, and two fixes for mlx4, one for a
regression introduced in the 2.6.28 cycle, and one for a resource leak
that is serious enough and has a simple enough fix to target -stable.

Jack Morgenstein (2):
      mlx4_core: Save/restore default port IB capability mask
      IB/mlx4: Fix MTT leakage in resize CQ

Joachim Fenkes (1):
      IB/ehca: Change misleading error message on memory hotplug

Roland Dreier (1):
      Merge branches 'ehca' and 'mlx4' into for-linus

Stefan Roscher (1):
      IB/ehca: Fix problem with generated flush work completions

 drivers/infiniband/hw/ehca/ehca_classes.h |    4 ++-
 drivers/infiniband/hw/ehca/ehca_main.c    |    3 +-
 drivers/infiniband/hw/ehca/ehca_qp.c      |   26 +++++++++++---
 drivers/infiniband/hw/ehca/ehca_reqs.c    |   51 +++++++++++++++++------------
 drivers/infiniband/hw/mlx4/cq.c           |    5 +++
 drivers/net/mlx4/main.c                   |    8 ++++
 drivers/net/mlx4/mlx4.h                   |    1 +
 drivers/net/mlx4/port.c                   |   39 +++++++++++++++++++++-
 include/linux/mlx4/device.h               |    1 +
 9 files changed, 107 insertions(+), 31 deletions(-)


diff --git a/drivers/infiniband/hw/ehca/ehca_classes.h b/drivers/infiniband/hw/ehca/ehca_classes.h
index 4df887a..7fc35cf 100644
--- a/drivers/infiniband/hw/ehca/ehca_classes.h
+++ b/drivers/infiniband/hw/ehca/ehca_classes.h
@@ -163,7 +163,8 @@ struct ehca_mod_qp_parm {
 /* struct for tracking if cqes have been reported to the application */
 struct ehca_qmap_entry {
 	u16 app_wr_id;
-	u16 reported;
+	u8 reported;
+	u8 cqe_req;
 };
 
 struct ehca_queue_map {
@@ -171,6 +172,7 @@ struct ehca_queue_map {
 	unsigned int entries;
 	unsigned int tail;
 	unsigned int left_to_poll;
+	unsigned int next_wqe_idx;   /* Idx to first wqe to be flushed */
 };
 
 struct ehca_qp {
diff --git a/drivers/infiniband/hw/ehca/ehca_main.c b/drivers/infiniband/hw/ehca/ehca_main.c
index bb02a86..bec7e02 100644
--- a/drivers/infiniband/hw/ehca/ehca_main.c
+++ b/drivers/infiniband/hw/ehca/ehca_main.c
@@ -994,8 +994,7 @@ static int ehca_mem_notifier(struct notifier_block *nb,
 			if (printk_timed_ratelimit(&ehca_dmem_warn_time,
 						   30 * 1000))
 				ehca_gen_err("DMEM operations are not allowed"
-					     "as long as an ehca adapter is"
-					     "attached to the LPAR");
+					     "in conjunction with eHCA");
 			return NOTIFY_BAD;
 		}
 	}
diff --git a/drivers/infiniband/hw/ehca/ehca_qp.c b/drivers/infiniband/hw/ehca/ehca_qp.c
index 9e05ee2..cadbf0c 100644
--- a/drivers/infiniband/hw/ehca/ehca_qp.c
+++ b/drivers/infiniband/hw/ehca/ehca_qp.c
@@ -435,9 +435,13 @@ static void reset_queue_map(struct ehca_queue_map *qmap)
 {
 	int i;
 
-	qmap->tail = 0;
-	for (i = 0; i < qmap->entries; i++)
+	qmap->tail = qmap->entries - 1;
+	qmap->left_to_poll = 0;
+	qmap->next_wqe_idx = 0;
+	for (i = 0; i < qmap->entries; i++) {
 		qmap->map[i].reported = 1;
+		qmap->map[i].cqe_req = 0;
+	}
 }
 
 /*
@@ -1121,6 +1125,7 @@ static int calc_left_cqes(u64 wqe_p, struct ipz_queue *ipz_queue,
 	void *wqe_v;
 	u64 q_ofs;
 	u32 wqe_idx;
+	unsigned int tail_idx;
 
 	/* convert real to abs address */
 	wqe_p = wqe_p & (~(1UL << 63));
@@ -1133,12 +1138,17 @@ static int calc_left_cqes(u64 wqe_p, struct ipz_queue *ipz_queue,
 		return -EFAULT;
 	}
 
+	tail_idx = (qmap->tail + 1) % qmap->entries;
 	wqe_idx = q_ofs / ipz_queue->qe_size;
-	if (wqe_idx < qmap->tail)
-		qmap->left_to_poll = (qmap->entries - qmap->tail) + wqe_idx;
-	else
-		qmap->left_to_poll = wqe_idx - qmap->tail;
 
+	/* check all processed wqes, whether a cqe is requested or not */
+	while (tail_idx != wqe_idx) {
+		if (qmap->map[tail_idx].cqe_req)
+			qmap->left_to_poll++;
+		tail_idx = (tail_idx + 1) % qmap->entries;
+	}
+	/* save index in queue, where we have to start flushing */
+	qmap->next_wqe_idx = wqe_idx;
 	return 0;
 }
 
@@ -1185,10 +1195,14 @@ static int check_for_left_cqes(struct ehca_qp *my_qp, struct ehca_shca *shca)
 	} else {
 		spin_lock_irqsave(&my_qp->send_cq->spinlock, flags);
 		my_qp->sq_map.left_to_poll = 0;
+		my_qp->sq_map.next_wqe_idx = (my_qp->sq_map.tail + 1) %
+						my_qp->sq_map.entries;
 		spin_unlock_irqrestore(&my_qp->send_cq->spinlock, flags);
 
 		spin_lock_irqsave(&my_qp->recv_cq->spinlock, flags);
 		my_qp->rq_map.left_to_poll = 0;
+		my_qp->rq_map.next_wqe_idx = (my_qp->rq_map.tail + 1) %
+						my_qp->rq_map.entries;
 		spin_unlock_irqrestore(&my_qp->recv_cq->spinlock, flags);
 	}
 
diff --git a/drivers/infiniband/hw/ehca/ehca_reqs.c b/drivers/infiniband/hw/ehca/ehca_reqs.c
index 6492807..00a648f 100644
--- a/drivers/infiniband/hw/ehca/ehca_reqs.c
+++ b/drivers/infiniband/hw/ehca/ehca_reqs.c
@@ -179,6 +179,7 @@ static inline int ehca_write_swqe(struct ehca_qp *qp,
 
 	qmap_entry->app_wr_id = get_app_wr_id(send_wr->wr_id);
 	qmap_entry->reported = 0;
+	qmap_entry->cqe_req = 0;
 
 	switch (send_wr->opcode) {
 	case IB_WR_SEND:
@@ -203,8 +204,10 @@ static inline int ehca_write_swqe(struct ehca_qp *qp,
 
 	if ((send_wr->send_flags & IB_SEND_SIGNALED ||
 	    qp->init_attr.sq_sig_type == IB_SIGNAL_ALL_WR)
-	    && !hidden)
+	    && !hidden) {
 		wqe_p->wr_flag |= WQE_WRFLAG_REQ_SIGNAL_COM;
+		qmap_entry->cqe_req = 1;
+	}
 
 	if (send_wr->opcode == IB_WR_SEND_WITH_IMM ||
 	    send_wr->opcode == IB_WR_RDMA_WRITE_WITH_IMM) {
@@ -569,6 +572,7 @@ static int internal_post_recv(struct ehca_qp *my_qp,
 		qmap_entry = &my_qp->rq_map.map[rq_map_idx];
 		qmap_entry->app_wr_id = get_app_wr_id(cur_recv_wr->wr_id);
 		qmap_entry->reported = 0;
+		qmap_entry->cqe_req = 1;
 
 		wqe_cnt++;
 	} /* eof for cur_recv_wr */
@@ -706,27 +710,34 @@ repoll:
 		goto repoll;
 	wc->qp = &my_qp->ib_qp;
 
+	qmap_tail_idx = get_app_wr_id(cqe->work_request_id);
+	if (!(cqe->w_completion_flags & WC_SEND_RECEIVE_BIT))
+		/* We got a send completion. */
+		qmap = &my_qp->sq_map;
+	else
+		/* We got a receive completion. */
+		qmap = &my_qp->rq_map;
+
+	/* advance the tail pointer */
+	qmap->tail = qmap_tail_idx;
+
 	if (is_error) {
 		/*
 		 * set left_to_poll to 0 because in error state, we will not
 		 * get any additional CQEs
 		 */
-		ehca_add_to_err_list(my_qp, 1);
+		my_qp->sq_map.next_wqe_idx = (my_qp->sq_map.tail + 1) %
+						my_qp->sq_map.entries;
 		my_qp->sq_map.left_to_poll = 0;
+		ehca_add_to_err_list(my_qp, 1);
 
+		my_qp->rq_map.next_wqe_idx = (my_qp->rq_map.tail + 1) %
+						my_qp->rq_map.entries;
+		my_qp->rq_map.left_to_poll = 0;
 		if (HAS_RQ(my_qp))
 			ehca_add_to_err_list(my_qp, 0);
-		my_qp->rq_map.left_to_poll = 0;
 	}
 
-	qmap_tail_idx = get_app_wr_id(cqe->work_request_id);
-	if (!(cqe->w_completion_flags & WC_SEND_RECEIVE_BIT))
-		/* We got a send completion. */
-		qmap = &my_qp->sq_map;
-	else
-		/* We got a receive completion. */
-		qmap = &my_qp->rq_map;
-
 	qmap_entry = &qmap->map[qmap_tail_idx];
 	if (qmap_entry->reported) {
 		ehca_warn(cq->device, "Double cqe on qp_num=%#x",
@@ -738,10 +749,6 @@ repoll:
 	wc->wr_id = replace_wr_id(cqe->work_request_id, qmap_entry->app_wr_id);
 	qmap_entry->reported = 1;
 
-	/* this is a proper completion, we need to advance the tail pointer */
-	if (++qmap->tail == qmap->entries)
-		qmap->tail = 0;
-
 	/* if left_to_poll is decremented to 0, add the QP to the error list */
 	if (qmap->left_to_poll > 0) {
 		qmap->left_to_poll--;
@@ -805,13 +812,14 @@ static int generate_flush_cqes(struct ehca_qp *my_qp, struct ib_cq *cq,
 	else
 		qmap = &my_qp->rq_map;
 
-	qmap_entry = &qmap->map[qmap->tail];
+	qmap_entry = &qmap->map[qmap->next_wqe_idx];
 
 	while ((nr < num_entries) && (qmap_entry->reported == 0)) {
 		/* generate flush CQE */
+
 		memset(wc, 0, sizeof(*wc));
 
-		offset = qmap->tail * ipz_queue->qe_size;
+		offset = qmap->next_wqe_idx * ipz_queue->qe_size;
 		wqe = (struct ehca_wqe *)ipz_qeit_calc(ipz_queue, offset);
 		if (!wqe) {
 			ehca_err(cq->device, "Invalid wqe offset=%#lx on "
@@ -850,11 +858,12 @@ static int generate_flush_cqes(struct ehca_qp *my_qp, struct ib_cq *cq,
 
 		wc->qp = &my_qp->ib_qp;
 
-		/* mark as reported and advance tail pointer */
+		/* mark as reported and advance next_wqe pointer */
 		qmap_entry->reported = 1;
-		if (++qmap->tail == qmap->entries)
-			qmap->tail = 0;
-		qmap_entry = &qmap->map[qmap->tail];
+		qmap->next_wqe_idx++;
+		if (qmap->next_wqe_idx == qmap->entries)
+			qmap->next_wqe_idx = 0;
+		qmap_entry = &qmap->map[qmap->next_wqe_idx];
 
 		wc++; nr++;
 	}
diff --git a/drivers/infiniband/hw/mlx4/cq.c b/drivers/infiniband/hw/mlx4/cq.c
index d0866a3..1830849 100644
--- a/drivers/infiniband/hw/mlx4/cq.c
+++ b/drivers/infiniband/hw/mlx4/cq.c
@@ -343,6 +343,7 @@ int mlx4_ib_resize_cq(struct ib_cq *ibcq, int entries, struct ib_udata *udata)
 {
 	struct mlx4_ib_dev *dev = to_mdev(ibcq->device);
 	struct mlx4_ib_cq *cq = to_mcq(ibcq);
+	struct mlx4_mtt mtt;
 	int outst_cqe;
 	int err;
 
@@ -376,10 +377,13 @@ int mlx4_ib_resize_cq(struct ib_cq *ibcq, int entries, struct ib_udata *udata)
 			goto out;
 	}
 
+	mtt = cq->buf.mtt;
+
 	err = mlx4_cq_resize(dev->dev, &cq->mcq, entries, &cq->resize_buf->buf.mtt);
 	if (err)
 		goto err_buf;
 
+	mlx4_mtt_cleanup(dev->dev, &mtt);
 	if (ibcq->uobject) {
 		cq->buf      = cq->resize_buf->buf;
 		cq->ibcq.cqe = cq->resize_buf->cqe;
@@ -406,6 +410,7 @@ int mlx4_ib_resize_cq(struct ib_cq *ibcq, int entries, struct ib_udata *udata)
 	goto out;
 
 err_buf:
+	mlx4_mtt_cleanup(dev->dev, &cq->resize_buf->buf.mtt);
 	if (!ibcq->uobject)
 		mlx4_ib_free_cq_buf(dev, &cq->resize_buf->buf,
 				    cq->resize_buf->cqe);
diff --git a/drivers/net/mlx4/main.c b/drivers/net/mlx4/main.c
index 468921b..90a0281 100644
--- a/drivers/net/mlx4/main.c
+++ b/drivers/net/mlx4/main.c
@@ -753,6 +753,7 @@ static int mlx4_setup_hca(struct mlx4_dev *dev)
 	struct mlx4_priv *priv = mlx4_priv(dev);
 	int err;
 	int port;
+	__be32 ib_port_default_caps;
 
 	err = mlx4_init_uar_table(dev);
 	if (err) {
@@ -852,6 +853,13 @@ static int mlx4_setup_hca(struct mlx4_dev *dev)
 	}
 
 	for (port = 1; port <= dev->caps.num_ports; port++) {
+		ib_port_default_caps = 0;
+		err = mlx4_get_port_ib_caps(dev, port, &ib_port_default_caps);
+		if (err)
+			mlx4_warn(dev, "failed to get port %d default "
+				  "ib capabilities (%d). Continuing with "
+				  "caps = 0\n", port, err);
+		dev->caps.ib_port_def_cap[port] = ib_port_default_caps;
 		err = mlx4_SET_PORT(dev, port);
 		if (err) {
 			mlx4_err(dev, "Failed to set port %d, aborting\n",
diff --git a/drivers/net/mlx4/mlx4.h b/drivers/net/mlx4/mlx4.h
index 56a2e21..34c909d 100644
--- a/drivers/net/mlx4/mlx4.h
+++ b/drivers/net/mlx4/mlx4.h
@@ -385,5 +385,6 @@ void mlx4_init_mac_table(struct mlx4_dev *dev, struct mlx4_mac_table *table);
 void mlx4_init_vlan_table(struct mlx4_dev *dev, struct mlx4_vlan_table *table);
 
 int mlx4_SET_PORT(struct mlx4_dev *dev, u8 port);
+int mlx4_get_port_ib_caps(struct mlx4_dev *dev, u8 port, __be32 *caps);
 
 #endif /* MLX4_H */
diff --git a/drivers/net/mlx4/port.c b/drivers/net/mlx4/port.c
index e2fdab4..0a057e5 100644
--- a/drivers/net/mlx4/port.c
+++ b/drivers/net/mlx4/port.c
@@ -258,6 +258,42 @@ out:
 }
 EXPORT_SYMBOL_GPL(mlx4_unregister_vlan);
 
+int mlx4_get_port_ib_caps(struct mlx4_dev *dev, u8 port, __be32 *caps)
+{
+	struct mlx4_cmd_mailbox *inmailbox, *outmailbox;
+	u8 *inbuf, *outbuf;
+	int err;
+
+	inmailbox = mlx4_alloc_cmd_mailbox(dev);
+	if (IS_ERR(inmailbox))
+		return PTR_ERR(inmailbox);
+
+	outmailbox = mlx4_alloc_cmd_mailbox(dev);
+	if (IS_ERR(outmailbox)) {
+		mlx4_free_cmd_mailbox(dev, inmailbox);
+		return PTR_ERR(outmailbox);
+	}
+
+	inbuf = inmailbox->buf;
+	outbuf = outmailbox->buf;
+	memset(inbuf, 0, 256);
+	memset(outbuf, 0, 256);
+	inbuf[0] = 1;
+	inbuf[1] = 1;
+	inbuf[2] = 1;
+	inbuf[3] = 1;
+	*(__be16 *) (&inbuf[16]) = cpu_to_be16(0x0015);
+	*(__be32 *) (&inbuf[20]) = cpu_to_be32(port);
+
+	err = mlx4_cmd_box(dev, inmailbox->dma, outmailbox->dma, port, 3,
+			   MLX4_CMD_MAD_IFC, MLX4_CMD_TIME_CLASS_C);
+	if (!err)
+		*caps = *(__be32 *) (outbuf + 84);
+	mlx4_free_cmd_mailbox(dev, inmailbox);
+	mlx4_free_cmd_mailbox(dev, outmailbox);
+	return err;
+}
+
 int mlx4_SET_PORT(struct mlx4_dev *dev, u8 port)
 {
 	struct mlx4_cmd_mailbox *mailbox;
@@ -273,7 +309,8 @@ int mlx4_SET_PORT(struct mlx4_dev *dev, u8 port)
 		((u8 *) mailbox->buf)[3] = 6;
 		((__be16 *) mailbox->buf)[4] = cpu_to_be16(1 << 15);
 		((__be16 *) mailbox->buf)[6] = cpu_to_be16(1 << 15);
-	}
+	} else
+		((__be32 *) mailbox->buf)[1] = dev->caps.ib_port_def_cap[port];
 	err = mlx4_cmd(dev, mailbox->dma, port, is_eth, MLX4_CMD_SET_PORT,
 		       MLX4_CMD_TIME_CLASS_B);
 
diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h
index bd9977b..371086f 100644
--- a/include/linux/mlx4/device.h
+++ b/include/linux/mlx4/device.h
@@ -179,6 +179,7 @@ struct mlx4_caps {
 	int			num_ports;
 	int			vl_cap[MLX4_MAX_PORTS + 1];
 	int			ib_mtu_cap[MLX4_MAX_PORTS + 1];
+	__be32			ib_port_def_cap[MLX4_MAX_PORTS + 1];
 	u64			def_mac[MLX4_MAX_PORTS + 1];
 	int			eth_mtu_cap[MLX4_MAX_PORTS + 1];
 	int			gid_table_len[MLX4_MAX_PORTS + 1];

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-11-04 21:37 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-11-04 21:37 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get the following changes; mostly low-level hardware changes
plus a couple of small patches that fix IPoIB crashes.

Chien Tung (2):
      RDMA/nes: Correct handling of PBL resources
      RDMA/nes: Mitigate compatibility issue regarding PCIe write credits

Ilpo Järvinen (1):
      RDMA/nes: Reindent mis-indented spinlocks

Ralph Campbell (1):
      IB/ipath: Fix RDMA write with immediate copy of last packet

Roland Dreier (3):
      RDMA/cxgb3: Fix too-big reserved field zeroing in iwch_post_zb_read()
      mlx4_core: Fix unused variable warning
      Merge branches 'cxgb3', 'ehca', 'ipath', 'ipoib', 'mlx4' and 'nes' into for-next

Stefan Roscher (1):
      IB/ehca: Remove reference to special QP in case of port activation failure

Vadim Makhervaks (1):
      RDMA/nes: Fix CQ allocation scheme for multicast receive queue apps

Yossi Etigin (3):
      IPoIB: Don't enable napi when it's already enabled
      IPoIB: Fix hang in ipoib_flush_paths()
      IPoIB: Fix crash in path_rec_completion()

 drivers/infiniband/hw/cxgb3/iwch_qp.c     |    1 -
 drivers/infiniband/hw/ehca/ehca_irq.c     |    7 ++-
 drivers/infiniband/hw/ehca/ehca_qp.c      |    5 ++
 drivers/infiniband/hw/ipath/ipath_ruc.c   |   10 ++--
 drivers/infiniband/hw/nes/nes.c           |   16 +++++++
 drivers/infiniband/hw/nes/nes_hw.h        |    1 +
 drivers/infiniband/hw/nes/nes_verbs.c     |   64 +++++++++++++++++++---------
 drivers/infiniband/ulp/ipoib/ipoib_main.c |    6 ++-
 drivers/net/mlx4/mlx4.h                   |    9 +---
 9 files changed, 82 insertions(+), 37 deletions(-)


diff --git a/drivers/infiniband/hw/cxgb3/iwch_qp.c b/drivers/infiniband/hw/cxgb3/iwch_qp.c
index 3e4585c..19661b2 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_qp.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_qp.c
@@ -745,7 +745,6 @@ int iwch_post_zb_read(struct iwch_qp *qhp)
 	wqe->read.rdmaop = T3_READ_REQ;
 	wqe->read.reserved[0] = 0;
 	wqe->read.reserved[1] = 0;
-	wqe->read.reserved[2] = 0;
 	wqe->read.rem_stag = cpu_to_be32(1);
 	wqe->read.rem_to = cpu_to_be64(1);
 	wqe->read.local_stag = cpu_to_be32(1);
diff --git a/drivers/infiniband/hw/ehca/ehca_irq.c b/drivers/infiniband/hw/ehca/ehca_irq.c
index cb55be0..9e43459 100644
--- a/drivers/infiniband/hw/ehca/ehca_irq.c
+++ b/drivers/infiniband/hw/ehca/ehca_irq.c
@@ -370,6 +370,10 @@ static void parse_ec(struct ehca_shca *shca, u64 eqe)
 	switch (ec) {
 	case 0x30: /* port availability change */
 		if (EHCA_BMASK_GET(NEQE_PORT_AVAILABILITY, eqe)) {
+			/* only for autodetect mode important */
+			if (ehca_nr_ports >= 0)
+				break;
+
 			int suppress_event;
 			/* replay modify_qp for sqps */
 			spin_lock_irqsave(&sport->mod_sqp_lock, flags);
@@ -387,8 +391,7 @@ static void parse_ec(struct ehca_shca *shca, u64 eqe)
 			sport->port_state = IB_PORT_ACTIVE;
 			dispatch_port_event(shca, port, IB_EVENT_PORT_ACTIVE,
 					    "is active");
-			ehca_query_sma_attr(shca, port,
-					    &sport->saved_attr);
+			ehca_query_sma_attr(shca, port, &sport->saved_attr);
 		} else {
 			sport->port_state = IB_PORT_DOWN;
 			dispatch_port_event(shca, port, IB_EVENT_PORT_ERR,
diff --git a/drivers/infiniband/hw/ehca/ehca_qp.c b/drivers/infiniband/hw/ehca/ehca_qp.c
index 4d54b9f..9e05ee2 100644
--- a/drivers/infiniband/hw/ehca/ehca_qp.c
+++ b/drivers/infiniband/hw/ehca/ehca_qp.c
@@ -860,6 +860,11 @@ static struct ehca_qp *internal_create_qp(
 	if (qp_type == IB_QPT_GSI) {
 		h_ret = ehca_define_sqp(shca, my_qp, init_attr);
 		if (h_ret != H_SUCCESS) {
+			kfree(my_qp->mod_qp_parm);
+			my_qp->mod_qp_parm = NULL;
+			/* the QP pointer is no longer valid */
+			shca->sport[init_attr->port_num - 1].ibqp_sqp[qp_type] =
+				NULL;
 			ret = ehca2ib_return_code(h_ret);
 			goto create_qp_exit6;
 		}
diff --git a/drivers/infiniband/hw/ipath/ipath_ruc.c b/drivers/infiniband/hw/ipath/ipath_ruc.c
index fc0f6d9..2296832 100644
--- a/drivers/infiniband/hw/ipath/ipath_ruc.c
+++ b/drivers/infiniband/hw/ipath/ipath_ruc.c
@@ -156,7 +156,7 @@ bail:
 /**
  * ipath_get_rwqe - copy the next RWQE into the QP's RWQE
  * @qp: the QP
- * @wr_id_only: update wr_id only, not SGEs
+ * @wr_id_only: update qp->r_wr_id only, not qp->r_sge
  *
  * Return 0 if no RWQE is available, otherwise return 1.
  *
@@ -173,8 +173,6 @@ int ipath_get_rwqe(struct ipath_qp *qp, int wr_id_only)
 	u32 tail;
 	int ret;
 
-	qp->r_sge.sg_list = qp->r_sg_list;
-
 	if (qp->ibqp.srq) {
 		srq = to_isrq(qp->ibqp.srq);
 		handler = srq->ibsrq.event_handler;
@@ -206,8 +204,10 @@ int ipath_get_rwqe(struct ipath_qp *qp, int wr_id_only)
 		wqe = get_rwqe_ptr(rq, tail);
 		if (++tail >= rq->size)
 			tail = 0;
-	} while (!wr_id_only && !ipath_init_sge(qp, wqe, &qp->r_len,
-						&qp->r_sge));
+		if (wr_id_only)
+			break;
+		qp->r_sge.sg_list = qp->r_sg_list;
+	} while (!ipath_init_sge(qp, wqe, &qp->r_len, &qp->r_sge));
 	qp->r_wr_id = wqe->wr_id;
 	wq->tail = tail;
 
diff --git a/drivers/infiniband/hw/nes/nes.c b/drivers/infiniband/hw/nes/nes.c
index a2b04d6..aa1dc41 100644
--- a/drivers/infiniband/hw/nes/nes.c
+++ b/drivers/infiniband/hw/nes/nes.c
@@ -95,6 +95,10 @@ unsigned int wqm_quanta = 0x10000;
 module_param(wqm_quanta, int, 0644);
 MODULE_PARM_DESC(wqm_quanta, "WQM quanta");
 
+static unsigned int limit_maxrdreqsz;
+module_param(limit_maxrdreqsz, bool, 0644);
+MODULE_PARM_DESC(limit_maxrdreqsz, "Limit max read request size to 256 Bytes");
+
 LIST_HEAD(nes_adapter_list);
 static LIST_HEAD(nes_dev_list);
 
@@ -588,6 +592,18 @@ static int __devinit nes_probe(struct pci_dev *pcidev, const struct pci_device_i
 						nesdev->nesadapter->port_count;
 	}
 
+	if ((limit_maxrdreqsz ||
+	     ((nesdev->nesadapter->phy_type[0] == NES_PHY_TYPE_GLADIUS) &&
+	      (hw_rev == NE020_REV1))) &&
+	    (pcie_get_readrq(pcidev) > 256)) {
+		if (pcie_set_readrq(pcidev, 256))
+			printk(KERN_ERR PFX "Unable to set max read request"
+				" to 256 bytes\n");
+		else
+			nes_debug(NES_DBG_INIT, "Max read request size set"
+				" to 256 bytes\n");
+	}
+
 	tasklet_init(&nesdev->dpc_tasklet, nes_dpc, (unsigned long)nesdev);
 
 	/* bring up the Control QP */
diff --git a/drivers/infiniband/hw/nes/nes_hw.h b/drivers/infiniband/hw/nes/nes_hw.h
index 610b9d8..bc0b4de 100644
--- a/drivers/infiniband/hw/nes/nes_hw.h
+++ b/drivers/infiniband/hw/nes/nes_hw.h
@@ -40,6 +40,7 @@
 #define NES_PHY_TYPE_ARGUS     4
 #define NES_PHY_TYPE_PUMA_1G   5
 #define NES_PHY_TYPE_PUMA_10G  6
+#define NES_PHY_TYPE_GLADIUS   7
 
 #define NES_MULTICAST_PF_MAX 8
 
diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c
index 932e56f..d36c9a0 100644
--- a/drivers/infiniband/hw/nes/nes_verbs.c
+++ b/drivers/infiniband/hw/nes/nes_verbs.c
@@ -220,14 +220,14 @@ static int nes_bind_mw(struct ib_qp *ibqp, struct ib_mw *ibmw,
 	if (nesqp->ibqp_state > IB_QPS_RTS)
 		return -EINVAL;
 
-		spin_lock_irqsave(&nesqp->lock, flags);
+	spin_lock_irqsave(&nesqp->lock, flags);
 
 	head = nesqp->hwqp.sq_head;
 	qsize = nesqp->hwqp.sq_tail;
 
 	/* Check for SQ overflow */
 	if (((head + (2 * qsize) - nesqp->hwqp.sq_tail) % qsize) == (qsize - 1)) {
-			spin_unlock_irqrestore(&nesqp->lock, flags);
+		spin_unlock_irqrestore(&nesqp->lock, flags);
 		return -EINVAL;
 	}
 
@@ -269,7 +269,7 @@ static int nes_bind_mw(struct ib_qp *ibqp, struct ib_mw *ibmw,
 	nes_write32(nesdev->regs+NES_WQE_ALLOC,
 			(1 << 24) | 0x00800000 | nesqp->hwqp.qp_id);
 
-		spin_unlock_irqrestore(&nesqp->lock, flags);
+	spin_unlock_irqrestore(&nesqp->lock, flags);
 
 	return 0;
 }
@@ -349,7 +349,7 @@ static struct ib_fmr *nes_alloc_fmr(struct ib_pd *ibpd,
 			if (nesfmr->nesmr.pbls_used > nesadapter->free_4kpbl) {
 				spin_unlock_irqrestore(&nesadapter->pbl_lock, flags);
 				ret = -ENOMEM;
-				goto failed_vpbl_alloc;
+				goto failed_vpbl_avail;
 			} else {
 				nesadapter->free_4kpbl -= nesfmr->nesmr.pbls_used;
 			}
@@ -357,7 +357,7 @@ static struct ib_fmr *nes_alloc_fmr(struct ib_pd *ibpd,
 			if (nesfmr->nesmr.pbls_used > nesadapter->free_256pbl) {
 				spin_unlock_irqrestore(&nesadapter->pbl_lock, flags);
 				ret = -ENOMEM;
-				goto failed_vpbl_alloc;
+				goto failed_vpbl_avail;
 			} else {
 				nesadapter->free_256pbl -= nesfmr->nesmr.pbls_used;
 			}
@@ -391,14 +391,14 @@ static struct ib_fmr *nes_alloc_fmr(struct ib_pd *ibpd,
 			goto failed_vpbl_alloc;
 		}
 
-		nesfmr->root_vpbl.leaf_vpbl = kzalloc(sizeof(*nesfmr->root_vpbl.leaf_vpbl)*1024, GFP_KERNEL);
+		nesfmr->leaf_pbl_cnt = nesfmr->nesmr.pbls_used-1;
+		nesfmr->root_vpbl.leaf_vpbl = kzalloc(sizeof(*nesfmr->root_vpbl.leaf_vpbl)*1024, GFP_ATOMIC);
 		if (!nesfmr->root_vpbl.leaf_vpbl) {
 			spin_unlock_irqrestore(&nesadapter->pbl_lock, flags);
 			ret = -ENOMEM;
 			goto failed_leaf_vpbl_alloc;
 		}
 
-		nesfmr->leaf_pbl_cnt = nesfmr->nesmr.pbls_used-1;
 		nes_debug(NES_DBG_MR, "two level pbl, root_vpbl.pbl_vbase=%p"
 				" leaf_pbl_cnt=%d root_vpbl.leaf_vpbl=%p\n",
 				nesfmr->root_vpbl.pbl_vbase, nesfmr->leaf_pbl_cnt, nesfmr->root_vpbl.leaf_vpbl);
@@ -519,6 +519,16 @@ static struct ib_fmr *nes_alloc_fmr(struct ib_pd *ibpd,
 				nesfmr->root_vpbl.pbl_pbase);
 
 	failed_vpbl_alloc:
+	if (nesfmr->nesmr.pbls_used != 0) {
+		spin_lock_irqsave(&nesadapter->pbl_lock, flags);
+		if (nesfmr->nesmr.pbl_4k)
+			nesadapter->free_4kpbl += nesfmr->nesmr.pbls_used;
+		else
+			nesadapter->free_256pbl += nesfmr->nesmr.pbls_used;
+		spin_unlock_irqrestore(&nesadapter->pbl_lock, flags);
+	}
+
+failed_vpbl_avail:
 	kfree(nesfmr);
 
 	failed_fmr_alloc:
@@ -534,18 +544,14 @@ static struct ib_fmr *nes_alloc_fmr(struct ib_pd *ibpd,
  */
 static int nes_dealloc_fmr(struct ib_fmr *ibfmr)
 {
+	unsigned long flags;
 	struct nes_mr *nesmr = to_nesmr_from_ibfmr(ibfmr);
 	struct nes_fmr *nesfmr = to_nesfmr(nesmr);
 	struct nes_vnic *nesvnic = to_nesvnic(ibfmr->device);
 	struct nes_device *nesdev = nesvnic->nesdev;
-	struct nes_mr temp_nesmr = *nesmr;
+	struct nes_adapter *nesadapter = nesdev->nesadapter;
 	int i = 0;
 
-	temp_nesmr.ibmw.device = ibfmr->device;
-	temp_nesmr.ibmw.pd = ibfmr->pd;
-	temp_nesmr.ibmw.rkey = ibfmr->rkey;
-	temp_nesmr.ibmw.uobject = NULL;
-
 	/* free the resources */
 	if (nesfmr->leaf_pbl_cnt == 0) {
 		/* single PBL case */
@@ -561,8 +567,24 @@ static int nes_dealloc_fmr(struct ib_fmr *ibfmr)
 		pci_free_consistent(nesdev->pcidev, 8192, nesfmr->root_vpbl.pbl_vbase,
 				nesfmr->root_vpbl.pbl_pbase);
 	}
+	nesmr->ibmw.device = ibfmr->device;
+	nesmr->ibmw.pd = ibfmr->pd;
+	nesmr->ibmw.rkey = ibfmr->rkey;
+	nesmr->ibmw.uobject = NULL;
 
-	return nes_dealloc_mw(&temp_nesmr.ibmw);
+	if (nesfmr->nesmr.pbls_used != 0) {
+		spin_lock_irqsave(&nesadapter->pbl_lock, flags);
+		if (nesfmr->nesmr.pbl_4k) {
+			nesadapter->free_4kpbl += nesfmr->nesmr.pbls_used;
+			WARN_ON(nesadapter->free_4kpbl > nesadapter->max_4kpbl);
+		} else {
+			nesadapter->free_256pbl += nesfmr->nesmr.pbls_used;
+			WARN_ON(nesadapter->free_256pbl > nesadapter->max_256pbl);
+		}
+		spin_unlock_irqrestore(&nesadapter->pbl_lock, flags);
+	}
+
+	return nes_dealloc_mw(&nesmr->ibmw);
 }
 
 
@@ -1595,7 +1617,7 @@ static struct ib_cq *nes_create_cq(struct ib_device *ibdev, int entries,
 		nes_ucontext->mcrqf = req.mcrqf;
 		if (nes_ucontext->mcrqf) {
 			if (nes_ucontext->mcrqf & 0x80000000)
-				nescq->hw_cq.cq_number = nesvnic->nic.qp_id + 12 + (nes_ucontext->mcrqf & 0xf) - 1;
+				nescq->hw_cq.cq_number = nesvnic->nic.qp_id + 28 + 2 * ((nes_ucontext->mcrqf & 0xf) - 1);
 			else if (nes_ucontext->mcrqf & 0x40000000)
 				nescq->hw_cq.cq_number = nes_ucontext->mcrqf & 0xffff;
 			else
@@ -3212,7 +3234,7 @@ static int nes_post_send(struct ib_qp *ibqp, struct ib_send_wr *ib_wr,
 	if (nesqp->ibqp_state > IB_QPS_RTS)
 		return -EINVAL;
 
-		spin_lock_irqsave(&nesqp->lock, flags);
+	spin_lock_irqsave(&nesqp->lock, flags);
 
 	head = nesqp->hwqp.sq_head;
 
@@ -3337,7 +3359,7 @@ static int nes_post_send(struct ib_qp *ibqp, struct ib_send_wr *ib_wr,
 				(counter << 24) | 0x00800000 | nesqp->hwqp.qp_id);
 	}
 
-		spin_unlock_irqrestore(&nesqp->lock, flags);
+	spin_unlock_irqrestore(&nesqp->lock, flags);
 
 	if (err)
 		*bad_wr = ib_wr;
@@ -3368,7 +3390,7 @@ static int nes_post_recv(struct ib_qp *ibqp, struct ib_recv_wr *ib_wr,
 	if (nesqp->ibqp_state > IB_QPS_RTS)
 		return -EINVAL;
 
-		spin_lock_irqsave(&nesqp->lock, flags);
+	spin_lock_irqsave(&nesqp->lock, flags);
 
 	head = nesqp->hwqp.rq_head;
 
@@ -3421,7 +3443,7 @@ static int nes_post_recv(struct ib_qp *ibqp, struct ib_recv_wr *ib_wr,
 		nes_write32(nesdev->regs+NES_WQE_ALLOC, (counter<<24) | nesqp->hwqp.qp_id);
 	}
 
-		spin_unlock_irqrestore(&nesqp->lock, flags);
+	spin_unlock_irqrestore(&nesqp->lock, flags);
 
 	if (err)
 		*bad_wr = ib_wr;
@@ -3453,7 +3475,7 @@ static int nes_poll_cq(struct ib_cq *ibcq, int num_entries, struct ib_wc *entry)
 
 	nes_debug(NES_DBG_CQ, "\n");
 
-		spin_lock_irqsave(&nescq->lock, flags);
+	spin_lock_irqsave(&nescq->lock, flags);
 
 	head = nescq->hw_cq.cq_head;
 	cq_size = nescq->hw_cq.cq_size;
@@ -3562,7 +3584,7 @@ static int nes_poll_cq(struct ib_cq *ibcq, int num_entries, struct ib_wc *entry)
 	nes_debug(NES_DBG_CQ, "Reporting %u completions for CQ%u.\n",
 			cqe_count, nescq->hw_cq.cq_number);
 
-		spin_unlock_irqrestore(&nescq->lock, flags);
+	spin_unlock_irqrestore(&nescq->lock, flags);
 
 	return cqe_count;
 }
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index fddded7..85257f6 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -106,12 +106,13 @@ int ipoib_open(struct net_device *dev)
 
 	ipoib_dbg(priv, "bringing up interface\n");
 
-	napi_enable(&priv->napi);
 	set_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags);
 
 	if (ipoib_pkey_dev_delay_open(dev))
 		return 0;
 
+	napi_enable(&priv->napi);
+
 	if (ipoib_ib_dev_open(dev)) {
 		napi_disable(&priv->napi);
 		return -EINVAL;
@@ -546,6 +547,7 @@ static int path_rec_start(struct net_device *dev,
 	if (path->query_id < 0) {
 		ipoib_warn(priv, "ib_sa_path_rec_get failed: %d\n", path->query_id);
 		path->query = NULL;
+		complete(&path->done);
 		return path->query_id;
 	}
 
@@ -662,7 +664,7 @@ static void unicast_arp_send(struct sk_buff *skb, struct net_device *dev,
 			skb_push(skb, sizeof *phdr);
 			__skb_queue_tail(&path->queue, skb);
 
-			if (path_rec_start(dev, path)) {
+			if (!path->query && path_rec_start(dev, path)) {
 				spin_unlock_irqrestore(&priv->lock, flags);
 				path_free(dev, path);
 				return;
diff --git a/drivers/net/mlx4/mlx4.h b/drivers/net/mlx4/mlx4.h
index fa431fa..56a2e21 100644
--- a/drivers/net/mlx4/mlx4.h
+++ b/drivers/net/mlx4/mlx4.h
@@ -87,6 +87,9 @@ enum {
 
 #ifdef CONFIG_MLX4_DEBUG
 extern int mlx4_debug_level;
+#else /* CONFIG_MLX4_DEBUG */
+#define mlx4_debug_level	(0)
+#endif /* CONFIG_MLX4_DEBUG */
 
 #define mlx4_dbg(mdev, format, arg...)					\
 	do {								\
@@ -94,12 +97,6 @@ extern int mlx4_debug_level;
 			dev_printk(KERN_DEBUG, &mdev->pdev->dev, format, ## arg); \
 	} while (0)
 
-#else /* CONFIG_MLX4_DEBUG */
-
-#define mlx4_dbg(mdev, format, arg...) do { (void) mdev; } while (0)
-
-#endif /* CONFIG_MLX4_DEBUG */
-
 #define mlx4_err(mdev, format, arg...) \
 	dev_err(&mdev->pdev->dev, format, ## arg)
 #define mlx4_info(mdev, format, arg...) \

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-10-23  4:37 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-10-23  4:37 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel, jeff

Linus, please pull from

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get the last batch of merges for the 2.6.28 window.  As the
dirstat shows, this is almost entirely the new mlx4_en driver, which
is a 10G Ethernet driver for Mellanox ConnectX adapters:

   1.2% drivers/infiniband/
  98.6% drivers/net/mlx4/

Jeff Garzik and I agreed that this new driver should go through my
tree because it depended on changes to the existing mlx4_ib InfiniBand
driver that I wanted to review and apply through my tree.

Other than mlx4_en, there are just miscellaneous fixes of the usual
type (low-level hardware drivers and IPoIB).

Hoang-Nam Nguyen (1):
      IB/ehca: Don't allow creating UC QP with SRQ

Julien Brunel (1):
      RDMA/ucma: Test ucma_alloc_multicast() return against NULL, not with IS_ERR()

Or Gerlitz (2):
      IPoIB: Clean up ethtool support
      IPoIB: Set netdev offload features properly for child (VLAN) interfaces

Roland Dreier (4):
      IPoIB: Always initialize poll_timer to avoid crash on unload
      IB/mad: Use krealloc() to resize snoop table
      Update NetEffect maintainer emails to Intel emails
      Merge branches 'cma', 'cxgb3', 'ehca', 'ipoib', 'mad', 'mlx4' and 'nes' into for-next

Stefan Roscher (2):
      IB/ehca: Fix reported max number of QPs and CQs in systems with >1 adapter
      IB/ehca: Reject dynamic memory add/remove when ehca adapter is present

Steve Wise (1):
      RDMA/cxgb3: Remove cmid reference on tid allocation failures

Yevgeny Petrilin (7):
      mlx4_core: Add QP range reservation support
      mlx4_core: Support multiple pre-reserved QP regions
      mlx4_core: Get ethernet MTU and default address from firmware
      mlx4_core: Ethernet MAC/VLAN management
      mlx4_core: Multiple port type support
      mlx4_en: Add driver for Mellanox ConnectX 10GbE NIC
      mlx4_core: Add Ethernet PCI device IDs

 MAINTAINERS                                  |    4 +-
 drivers/infiniband/core/mad.c                |   14 +-
 drivers/infiniband/core/ucma.c               |    4 +-
 drivers/infiniband/hw/cxgb3/iwch_cm.c        |    1 +
 drivers/infiniband/hw/ehca/ehca_classes.h    |    2 +
 drivers/infiniband/hw/ehca/ehca_cq.c         |    4 +-
 drivers/infiniband/hw/ehca/ehca_main.c       |   83 ++-
 drivers/infiniband/hw/ehca/ehca_qp.c         |   10 +-
 drivers/infiniband/hw/mlx4/mad.c             |    6 +-
 drivers/infiniband/hw/mlx4/main.c            |   11 +-
 drivers/infiniband/hw/mlx4/mlx4_ib.h         |    1 +
 drivers/infiniband/hw/mlx4/qp.c              |   21 +-
 drivers/infiniband/ulp/ipoib/ipoib.h         |    1 +
 drivers/infiniband/ulp/ipoib/ipoib_ethtool.c |    9 +-
 drivers/infiniband/ulp/ipoib/ipoib_ib.c      |    7 +-
 drivers/infiniband/ulp/ipoib/ipoib_main.c    |   67 +-
 drivers/infiniband/ulp/ipoib/ipoib_vlan.c    |    4 +
 drivers/net/Kconfig                          |    9 +
 drivers/net/mlx4/Makefile                    |    7 +-
 drivers/net/mlx4/alloc.c                     |   97 +++-
 drivers/net/mlx4/cq.c                        |    2 +-
 drivers/net/mlx4/en_cq.c                     |  146 ++++
 drivers/net/mlx4/en_main.c                   |  254 ++++++
 drivers/net/mlx4/en_netdev.c                 | 1088 ++++++++++++++++++++++++++
 drivers/net/mlx4/en_params.c                 |  480 ++++++++++++
 drivers/net/mlx4/en_port.c                   |  261 ++++++
 drivers/net/mlx4/en_port.h                   |  570 ++++++++++++++
 drivers/net/mlx4/en_resources.c              |   96 +++
 drivers/net/mlx4/en_rx.c                     | 1080 +++++++++++++++++++++++++
 drivers/net/mlx4/en_tx.c                     |  820 +++++++++++++++++++
 drivers/net/mlx4/eq.c                        |    2 +-
 drivers/net/mlx4/fw.c                        |   20 +-
 drivers/net/mlx4/fw.h                        |    7 +-
 drivers/net/mlx4/main.c                      |  287 +++++++-
 drivers/net/mlx4/mcg.c                       |    4 +-
 drivers/net/mlx4/mlx4.h                      |   45 +-
 drivers/net/mlx4/mlx4_en.h                   |  561 +++++++++++++
 drivers/net/mlx4/mr.c                        |    2 +-
 drivers/net/mlx4/pd.c                        |    4 +-
 drivers/net/mlx4/port.c                      |  282 +++++++
 drivers/net/mlx4/qp.c                        |   81 ++-
 drivers/net/mlx4/srq.c                       |    2 +-
 include/linux/mlx4/cmd.h                     |    9 +
 include/linux/mlx4/device.h                  |   54 ++-
 44 files changed, 6394 insertions(+), 125 deletions(-)
 create mode 100644 drivers/net/mlx4/en_cq.c
 create mode 100644 drivers/net/mlx4/en_main.c
 create mode 100644 drivers/net/mlx4/en_netdev.c
 create mode 100644 drivers/net/mlx4/en_params.c
 create mode 100644 drivers/net/mlx4/en_port.c
 create mode 100644 drivers/net/mlx4/en_port.h
 create mode 100644 drivers/net/mlx4/en_resources.c
 create mode 100644 drivers/net/mlx4/en_rx.c
 create mode 100644 drivers/net/mlx4/en_tx.c
 create mode 100644 drivers/net/mlx4/mlx4_en.h
 create mode 100644 drivers/net/mlx4/port.c

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-10-10  0:48 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-10-10  0:48 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get the first batch of 2.6.28 merges -- pretty much all
low-level hardware driver and IP-over-IB fixes, along with a few little
things elsewhere, as the dirstat shows:

  14.4% drivers/infiniband/hw/ehca/
  22.0% drivers/infiniband/hw/mthca/
  33.1% drivers/infiniband/hw/nes/
  26.9% drivers/infiniband/ulp/ipoib/
   3.4% drivers/infiniband/

Full list of patches below:

Alexander Schmidt (1):
      IB/ehca: Generate flush status CQ entries

Bob Sharp (4):
      RDMA/nes: Free NIC TX buffers when destroying NIC QP
      RDMA/nes: Enable MC/UC after changing MTU
      RDMA/nes: Correct MAX TSO frags value
      RDMA/nes: Fix routed RDMA connections

Chien Tung (10):
      RDMA/nes: Add support for 4-port 1G HP blade card
      RDMA/nes: Module parameter permissions
      RDMA/nes: Add wqm_quanta module option
      RDMA/nes: Fix MDC setting
      RDMA/nes: Fill in firmware version for ethtool
      RDMA/nes: Correct tso_wqe_length
      RDMA/nes: Stop spurious MAC interrupts
      RDMA/nes: Limit critical error interrupts
      RDMA/nes: Correct error_module bit mask
      RDMA/nes: Fix slab corruption

Faisal Latif (2):
      RDMA/nes: Make mini_cm_connect() static
      RDMA/nes: Handle AE bounds violation

Hefty, Sean (1):
      IB/cm: Correctly free cm_device structure

John Lacombe (1):
      RDMA/nes: Use ethtool timer value

Jon Mason (1):
      RDMA/cxgb3: Set active_mtu in ib_port_attr

Julia Lawall (1):
      IB: Drop code after return statement

Michael Brooks (1):
      IB/mad: Don't discard BMA responses in kernel

Ralph Campbell (1):
      IB/ipath: Fix SLID generation for RC/UC QPs when LMC > 0

Roland Dreier (4):
      IPoIB: Fix crash when path record fails after path flush
      IB/mthca: Use pci_request_regions()
      IPoIB: Use netif_tx_lock() and get rid of private tx_lock, LLTX
      Merge branches 'cma', 'cxgb3', 'ehca', 'ipath', 'ipoib', 'mad', 'misc', 'mlx4', 'mthca' and 'nes' into for-next

Vadim Makhervaks (1):
      RDMA/nes: Enhanced PFT management scheme

Vladimir Sokolovsky (1):
      IB/mlx4: Set RLKEY bit for kernel QPs

Yannick Cote (1):
      IB/ipath: Fix hang on module unload

 drivers/infiniband/core/cm.c                   |    2 +
 drivers/infiniband/core/mad.c                  |    5 +-
 drivers/infiniband/hw/amso1100/c2_provider.c   |    1 -
 drivers/infiniband/hw/cxgb3/iwch_provider.c    |    9 +-
 drivers/infiniband/hw/ehca/ehca_classes.h      |   14 ++-
 drivers/infiniband/hw/ehca/ehca_cq.c           |    3 +
 drivers/infiniband/hw/ehca/ehca_iverbs.h       |    2 +
 drivers/infiniband/hw/ehca/ehca_qp.c           |  225 ++++++++++++++++++++++--
 drivers/infiniband/hw/ehca/ehca_reqs.c         |  211 +++++++++++++++++++---
 drivers/infiniband/hw/ipath/ipath_rc.c         |    3 +-
 drivers/infiniband/hw/ipath/ipath_ruc.c        |    3 +-
 drivers/infiniband/hw/ipath/ipath_verbs.c      |    7 +
 drivers/infiniband/hw/mlx4/qp.c                |    3 +
 drivers/infiniband/hw/mthca/mthca_catas.c      |   15 +--
 drivers/infiniband/hw/mthca/mthca_eq.c         |   51 +-----
 drivers/infiniband/hw/mthca/mthca_main.c       |   59 +------
 drivers/infiniband/hw/nes/nes.c                |   95 +++++++++-
 drivers/infiniband/hw/nes/nes.h                |    2 +-
 drivers/infiniband/hw/nes/nes_cm.c             |   41 ++++-
 drivers/infiniband/hw/nes/nes_hw.c             |  205 ++++++++++++++++++----
 drivers/infiniband/hw/nes/nes_hw.h             |    6 +
 drivers/infiniband/hw/nes/nes_nic.c            |  122 +++++++++++---
 drivers/infiniband/hw/nes/nes_verbs.c          |    3 -
 drivers/infiniband/ulp/ipoib/ipoib.h           |    8 +-
 drivers/infiniband/ulp/ipoib/ipoib_cm.c        |   88 ++++++----
 drivers/infiniband/ulp/ipoib/ipoib_ib.c        |   30 +++-
 drivers/infiniband/ulp/ipoib/ipoib_main.c      |   76 ++++-----
 drivers/infiniband/ulp/ipoib/ipoib_multicast.c |   31 ++--
 28 files changed, 961 insertions(+), 359 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-09-17 16:40 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-09-17 16:40 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-kernel, general

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get four patches, which I believe are all appropriate for
this stage of 2.6.27:

 - A fix for a nes regression we introduced in some earlier 2.6.27
   patches that leads to userspace processes hanging on exit.

 - Two fixes that make a new mlx4 feature we added in 2.6.27 actually
   work.  The functions touched are only used for the new fast
   register work requests so fixing this is low risk.

 - A fix for an IPoIB RTNL deadlock that we introduced in 2.6.27.

Faisal Latif (1):
      RDMA/nes: Fix client side QP destroy

Roland Dreier (1):
      Merge branches 'ipoib', 'mlx4' and 'nes' into for-linus

Vladimir Sokolovsky (2):
      mlx4_core: Set RAE and init mtt_sz field in FRMR MPT entries
      IB/mlx4: Fix up fast register page list format

Yossi Etigin (1):
      IPoIB: Fix deadlock on RTNL between bcast join comp and ipoib_stop()

 drivers/infiniband/hw/mlx4/qp.c                |    6 ++++
 drivers/infiniband/hw/nes/nes_cm.c             |   11 +-------
 drivers/infiniband/ulp/ipoib/ipoib.h           |    2 +
 drivers/infiniband/ulp/ipoib/ipoib_main.c      |    1 +
 drivers/infiniband/ulp/ipoib/ipoib_multicast.c |   31 ++++++++++++++++-------
 drivers/net/mlx4/mr.c                          |   10 ++++---
 include/linux/mlx4/device.h                    |    4 +++
 7 files changed, 42 insertions(+), 23 deletions(-)


commit e8224e4b804b4fd26723191c1891101a5959bb8a
Author: Yossi Etigin <yossi.openib@gmail.com>
Date:   Tue Sep 16 11:57:45 2008 -0700

    IPoIB: Fix deadlock on RTNL between bcast join comp and ipoib_stop()
    
    Taking rtnl_lock in ipoib_mcast_join_complete() causes a deadlock with
    ipoib_stop().  We avoid it by scheduling the piece of code that takes
    the lock on ipoib_workqueue instead of executing it directly.  This
    works because we only flush the ipoib_workqueue with the RTNL not held.
    
    The deadlock happens because ipoib_stop() calls ipoib_ib_dev_down()
    which calls ipoib_mcast_dev_flush(), which calls ipoib_mcast_free(),
    which calls ipoib_mcast_leave(). The latter calls
    ib_sa_free_multicast(), and this waits until the multicast completion
    handler finishes.  This handler is ipoib_mcast_join_complete(), which
    waits for the rtnl_lock(), which was already taken by ipoib_stop().
    
    This bug was introduced in commit a77a57a1 ("IPoIB: Fix deadlock on
    RTNL in ipoib_stop()").
    
    Signed-off-by: Yossi Etigin <yosefe@voltaire.com>
    Signed-off-by: Roland Dreier <rolandd@cisco.com>

diff --git a/drivers/infiniband/ulp/ipoib/ipoib.h b/drivers/infiniband/ulp/ipoib/ipoib.h
index b0ffc9a..05eb41b 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib.h
+++ b/drivers/infiniband/ulp/ipoib/ipoib.h
@@ -293,6 +293,7 @@ struct ipoib_dev_priv {
 
 	struct delayed_work pkey_poll_task;
 	struct delayed_work mcast_task;
+	struct work_struct carrier_on_task;
 	struct work_struct flush_light;
 	struct work_struct flush_normal;
 	struct work_struct flush_heavy;
@@ -464,6 +465,7 @@ int ipoib_dev_init(struct net_device *dev, struct ib_device *ca, int port);
 void ipoib_dev_cleanup(struct net_device *dev);
 
 void ipoib_mcast_join_task(struct work_struct *work);
+void ipoib_mcast_carrier_on_task(struct work_struct *work);
 void ipoib_mcast_send(struct net_device *dev, void *mgid, struct sk_buff *skb);
 
 void ipoib_mcast_restart_task(struct work_struct *work);
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index 7e9e218..1b1df5c 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -1075,6 +1075,7 @@ static void ipoib_setup(struct net_device *dev)
 
 	INIT_DELAYED_WORK(&priv->pkey_poll_task, ipoib_pkey_poll);
 	INIT_DELAYED_WORK(&priv->mcast_task,   ipoib_mcast_join_task);
+	INIT_WORK(&priv->carrier_on_task, ipoib_mcast_carrier_on_task);
 	INIT_WORK(&priv->flush_light,   ipoib_ib_dev_flush_light);
 	INIT_WORK(&priv->flush_normal,   ipoib_ib_dev_flush_normal);
 	INIT_WORK(&priv->flush_heavy,   ipoib_ib_dev_flush_heavy);
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
index ac33c8f..aae2862 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
@@ -366,6 +366,21 @@ static int ipoib_mcast_sendonly_join(struct ipoib_mcast *mcast)
 	return ret;
 }
 
+void ipoib_mcast_carrier_on_task(struct work_struct *work)
+{
+	struct ipoib_dev_priv *priv = container_of(work, struct ipoib_dev_priv,
+						   carrier_on_task);
+
+	/*
+	 * Take rtnl_lock to avoid racing with ipoib_stop() and
+	 * turning the carrier back on while a device is being
+	 * removed.
+	 */
+	rtnl_lock();
+	netif_carrier_on(priv->dev);
+	rtnl_unlock();
+}
+
 static int ipoib_mcast_join_complete(int status,
 				     struct ib_sa_multicast *multicast)
 {
@@ -392,16 +407,12 @@ static int ipoib_mcast_join_complete(int status,
 					   &priv->mcast_task, 0);
 		mutex_unlock(&mcast_mutex);
 
-		if (mcast == priv->broadcast) {
-			/*
-			 * Take RTNL lock here to avoid racing with
-			 * ipoib_stop() and turning the carrier back
-			 * on while a device is being removed.
-			 */
-			rtnl_lock();
-			netif_carrier_on(dev);
-			rtnl_unlock();
-		}
+		/*
+		 * Defer carrier on work to ipoib_workqueue to avoid a
+		 * deadlock on rtnl_lock here.
+		 */
+		if (mcast == priv->broadcast)
+			queue_work(ipoib_workqueue, &priv->carrier_on_task);
 
 		return 0;
 	}

commit d7ffd5076d4407d54b25bc4b25f3002f74fbafde
Author: Faisal Latif <flatif@neteffect.com>
Date:   Tue Sep 16 11:56:26 2008 -0700

    RDMA/nes: Fix client side QP destroy
    
    Fix QP not being destroyed properly on the client, which leads to
    userspace programs hanging on exit.  This is a missing chunk from the
    connection management rewrite in commit 6492cdf3 ("RDMA/nes: CM
    connection setup/teardown rework").
    
    Signed-off-by: Faisal Latif <flatif@neteffect.com>
    Signed-off-by: Roland Dreier <rolandd@cisco.com>

diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c
index 9f0b964..499d3cf 100644
--- a/drivers/infiniband/hw/nes/nes_cm.c
+++ b/drivers/infiniband/hw/nes/nes_cm.c
@@ -1956,13 +1956,6 @@ static int mini_cm_reject(struct nes_cm_core *cm_core,
 		return ret;
 	cleanup_retrans_entry(cm_node);
 	cm_node->state = NES_CM_STATE_CLOSED;
-	ret = send_fin(cm_node, NULL);
-
-	if (cm_node->accept_pend) {
-		BUG_ON(!cm_node->listener);
-		atomic_dec(&cm_node->listener->pend_accepts_cnt);
-		BUG_ON(atomic_read(&cm_node->listener->pend_accepts_cnt) < 0);
-	}
 
 	ret = send_reset(cm_node, NULL);
 	return ret;
@@ -2383,6 +2376,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)
 			atomic_inc(&cm_disconnects);
 			cm_event.event = IW_CM_EVENT_DISCONNECT;
 			if (last_ae == NES_AEQE_AEID_LLP_CONNECTION_RESET) {
+				issued_disconnect_reset = 1;
 				cm_event.status = IW_CM_EVENT_STATUS_RESET;
 				nes_debug(NES_DBG_CM, "Generating a CM "
 					"Disconnect Event (status reset) for "
@@ -2508,7 +2502,6 @@ static int nes_disconnect(struct nes_qp *nesqp, int abrupt)
 		nes_debug(NES_DBG_CM, "Call close API\n");
 
 		g_cm_core->api->close(g_cm_core, nesqp->cm_node);
-		nesqp->cm_node = NULL;
 	}
 
 	return ret;
@@ -2837,6 +2830,7 @@ int nes_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
 	cm_node->apbvt_set = 1;
 	nesqp->cm_node = cm_node;
 	cm_node->nesqp = nesqp;
+	nes_add_ref(&nesqp->ibqp);
 
 	return 0;
 }
@@ -3167,7 +3161,6 @@ static void cm_event_connect_error(struct nes_cm_event *event)
 	if (ret)
 		printk(KERN_ERR "%s[%u] OFA CM event_handler returned, "
 			"ret=%d\n", __func__, __LINE__, ret);
-	nes_rem_ref(&nesqp->ibqp);
 	cm_id->rem_ref(cm_id);
 
 	rem_ref_cm_node(event->cm_node->cm_core, event->cm_node);

commit 29bdc88384c2b24e37e5760df0dc898546083d6b
Author: Vladimir Sokolovsky <vlad@mellanox.co.il>
Date:   Mon Sep 15 14:25:23 2008 -0700

    IB/mlx4: Fix up fast register page list format
    
    Byte swap the addresses in the page list for fast register work requests
    to big endian to match what the HCA expectx.  Also, the addresses must
    have the "present" bit set so that the HCA knows it can access them.
    Otherwise the HCA will fault the first time it accesses the memory
    region.
    
    Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.co.il>
    Signed-off-by: Roland Dreier <rolandd@cisco.com>

diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
index f29dbb7..9559248 100644
--- a/drivers/infiniband/hw/mlx4/qp.c
+++ b/drivers/infiniband/hw/mlx4/qp.c
@@ -1342,6 +1342,12 @@ static __be32 convert_access(int acc)
 static void set_fmr_seg(struct mlx4_wqe_fmr_seg *fseg, struct ib_send_wr *wr)
 {
 	struct mlx4_ib_fast_reg_page_list *mfrpl = to_mfrpl(wr->wr.fast_reg.page_list);
+	int i;
+
+	for (i = 0; i < wr->wr.fast_reg.page_list_len; ++i)
+		wr->wr.fast_reg.page_list->page_list[i] =
+			cpu_to_be64(wr->wr.fast_reg.page_list->page_list[i] |
+				    MLX4_MTT_FLAG_PRESENT);
 
 	fseg->flags		= convert_access(wr->wr.fast_reg.access_flags);
 	fseg->mem_key		= cpu_to_be32(wr->wr.fast_reg.rkey);
diff --git a/drivers/net/mlx4/mr.c b/drivers/net/mlx4/mr.c
index 644adf0..d1dd5b4 100644
--- a/drivers/net/mlx4/mr.c
+++ b/drivers/net/mlx4/mr.c
@@ -71,8 +71,6 @@ struct mlx4_mpt_entry {
 #define MLX4_MPT_PD_FLAG_RAE	    (1 << 28)
 #define MLX4_MPT_PD_FLAG_EN_INV	    (3 << 24)
 
-#define MLX4_MTT_FLAG_PRESENT		1
-
 #define MLX4_MPT_STATUS_SW		0xF0
 #define MLX4_MPT_STATUS_HW		0x00
 
diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h
index 655ea0d..b2f9444 100644
--- a/include/linux/mlx4/device.h
+++ b/include/linux/mlx4/device.h
@@ -141,6 +141,10 @@ enum {
 	MLX4_STAT_RATE_OFFSET	= 5
 };
 
+enum {
+	MLX4_MTT_FLAG_PRESENT		= 1
+};
+
 static inline u64 mlx4_fw_ver(u64 major, u64 minor, u64 subminor)
 {
 	return (major << 32) | (minor << 16) | subminor;

commit c9257433f2eaf8803a1f3d3be5d984232db41ffe
Author: Vladimir Sokolovsky <vlad@mellanox.co.il>
Date:   Tue Sep 2 13:38:29 2008 -0700

    mlx4_core: Set RAE and init mtt_sz field in FRMR MPT entries
    
    Set the RAE (remote access enable) bit and correctly initialize the
    MTT size in MPT entries being set up for fast register memory
    regions.  Otherwise the callers can't enable remote access and in fact
    can't fast register at all (since the HCA will think no MTT entries
    are allocated).
    
    Signed-off-by: Vladimir Sokolovsky <vlad@mellanox.co.il>
    Signed-off-by: Roland Dreier <rolandd@cisco.com>

diff --git a/drivers/net/mlx4/mr.c b/drivers/net/mlx4/mr.c
index 62071d9..644adf0 100644
--- a/drivers/net/mlx4/mr.c
+++ b/drivers/net/mlx4/mr.c
@@ -67,7 +67,8 @@ struct mlx4_mpt_entry {
 #define MLX4_MPT_FLAG_PHYSICAL	    (1 <<  9)
 #define MLX4_MPT_FLAG_REGION	    (1 <<  8)
 
-#define MLX4_MPT_PD_FLAG_FAST_REG   (1 << 26)
+#define MLX4_MPT_PD_FLAG_FAST_REG   (1 << 27)
+#define MLX4_MPT_PD_FLAG_RAE	    (1 << 28)
 #define MLX4_MPT_PD_FLAG_EN_INV	    (3 << 24)
 
 #define MLX4_MTT_FLAG_PRESENT		1
@@ -348,7 +349,10 @@ int mlx4_mr_enable(struct mlx4_dev *dev, struct mlx4_mr *mr)
 	if (mr->mtt.order >= 0 && mr->mtt.page_shift == 0) {
 		/* fast register MR in free state */
 		mpt_entry->flags    |= cpu_to_be32(MLX4_MPT_FLAG_FREE);
-		mpt_entry->pd_flags |= cpu_to_be32(MLX4_MPT_PD_FLAG_FAST_REG);
+		mpt_entry->pd_flags |= cpu_to_be32(MLX4_MPT_PD_FLAG_FAST_REG |
+						   MLX4_MPT_PD_FLAG_RAE);
+		mpt_entry->mtt_sz    = cpu_to_be32((1 << mr->mtt.order) *
+						   MLX4_MTT_ENTRY_PER_SEG);
 	} else {
 		mpt_entry->flags    |= cpu_to_be32(MLX4_MPT_FLAG_SW_OWNS);
 	}

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-08-19 22:03 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-08-19 22:03 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

Dave Olson (1):
      IB/ipath: Fix incorrect check for max physical address in TID

Ralph Campbell (1):
      IB/ipath: Fix lost UD send work request

Roland Dreier (2):
      IPoIB: Fix deadlock on RTNL in ipoib_stop()
      Merge branches 'ipath' and 'ipoib' into for-linus

 drivers/infiniband/hw/ipath/ipath_iba7220.c    |    2 +-
 drivers/infiniband/hw/ipath/ipath_ud.c         |    8 ++++++--
 drivers/infiniband/ulp/ipoib/ipoib_main.c      |   19 +++++++++----------
 drivers/infiniband/ulp/ipoib/ipoib_multicast.c |   10 +++++++++-
 4 files changed, 25 insertions(+), 14 deletions(-)

diff --git a/drivers/infiniband/hw/ipath/ipath_iba7220.c b/drivers/infiniband/hw/ipath/ipath_iba7220.c
index d90f5e9..9839e20 100644
--- a/drivers/infiniband/hw/ipath/ipath_iba7220.c
+++ b/drivers/infiniband/hw/ipath/ipath_iba7220.c
@@ -1720,7 +1720,7 @@ static void ipath_7220_put_tid(struct ipath_devdata *dd, u64 __iomem *tidptr,
 				 "not 2KB aligned!\n", pa);
 			return;
 		}
-		if (pa >= (1UL << IBA7220_TID_SZ_SHIFT)) {
+		if (chippa >= (1UL << IBA7220_TID_SZ_SHIFT)) {
 			ipath_dev_err(dd,
 				      "BUG: Physical page address 0x%lx "
 				      "larger than supported\n", pa);
diff --git a/drivers/infiniband/hw/ipath/ipath_ud.c b/drivers/infiniband/hw/ipath/ipath_ud.c
index 36aa242..729446f 100644
--- a/drivers/infiniband/hw/ipath/ipath_ud.c
+++ b/drivers/infiniband/hw/ipath/ipath_ud.c
@@ -267,6 +267,7 @@ int ipath_make_ud_req(struct ipath_qp *qp)
 	u16 lrh0;
 	u16 lid;
 	int ret = 0;
+	int next_cur;
 
 	spin_lock_irqsave(&qp->s_lock, flags);
 
@@ -290,8 +291,9 @@ int ipath_make_ud_req(struct ipath_qp *qp)
 		goto bail;
 
 	wqe = get_swqe_ptr(qp, qp->s_cur);
-	if (++qp->s_cur >= qp->s_size)
-		qp->s_cur = 0;
+	next_cur = qp->s_cur + 1;
+	if (next_cur >= qp->s_size)
+		next_cur = 0;
 
 	/* Construct the header. */
 	ah_attr = &to_iah(wqe->wr.wr.ud.ah)->attr;
@@ -315,6 +317,7 @@ int ipath_make_ud_req(struct ipath_qp *qp)
 				qp->s_flags |= IPATH_S_WAIT_DMA;
 				goto bail;
 			}
+			qp->s_cur = next_cur;
 			spin_unlock_irqrestore(&qp->s_lock, flags);
 			ipath_ud_loopback(qp, wqe);
 			spin_lock_irqsave(&qp->s_lock, flags);
@@ -323,6 +326,7 @@ int ipath_make_ud_req(struct ipath_qp *qp)
 		}
 	}
 
+	qp->s_cur = next_cur;
 	extra_bytes = -wqe->length & 3;
 	nwords = (wqe->length + extra_bytes) >> 2;
 
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index f51201b..7e9e218 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -156,14 +156,8 @@ static int ipoib_stop(struct net_device *dev)
 
 	netif_stop_queue(dev);
 
-	/*
-	 * Now flush workqueue to make sure a scheduled task doesn't
-	 * bring our internal state back up.
-	 */
-	flush_workqueue(ipoib_workqueue);
-
-	ipoib_ib_dev_down(dev, 1);
-	ipoib_ib_dev_stop(dev, 1);
+	ipoib_ib_dev_down(dev, 0);
+	ipoib_ib_dev_stop(dev, 0);
 
 	if (!test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags)) {
 		struct ipoib_dev_priv *cpriv;
@@ -1314,7 +1308,7 @@ sysfs_failed:
 
 register_failed:
 	ib_unregister_event_handler(&priv->event_handler);
-	flush_scheduled_work();
+	flush_workqueue(ipoib_workqueue);
 
 event_failed:
 	ipoib_dev_cleanup(priv->dev);
@@ -1373,7 +1367,12 @@ static void ipoib_remove_one(struct ib_device *device)
 
 	list_for_each_entry_safe(priv, tmp, dev_list, list) {
 		ib_unregister_event_handler(&priv->event_handler);
-		flush_scheduled_work();
+
+		rtnl_lock();
+		dev_change_flags(priv->dev, priv->dev->flags & ~IFF_UP);
+		rtnl_unlock();
+
+		flush_workqueue(ipoib_workqueue);
 
 		unregister_netdev(priv->dev);
 		ipoib_dev_cleanup(priv->dev);
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
index 8950e95..ac33c8f 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
@@ -392,8 +392,16 @@ static int ipoib_mcast_join_complete(int status,
 					   &priv->mcast_task, 0);
 		mutex_unlock(&mcast_mutex);
 
-		if (mcast == priv->broadcast)
+		if (mcast == priv->broadcast) {
+			/*
+			 * Take RTNL lock here to avoid racing with
+			 * ipoib_stop() and turning the carrier back
+			 * on while a device is being removed.
+			 */
+			rtnl_lock();
 			netif_carrier_on(dev);
+			rtnl_unlock();
+		}
 
 		return 0;
 	}

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-08-12 20:55 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-08-12 20:55 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get the following fixes:

Alexander Schmidt (5):
      IB/ehca: Update qp_state on cached modify_qp()
      IB/ehca: Rename goto label in ehca_poll_cq_one()
      IB/ehca: Repoll CQ on invalid opcode
      IB/ehca: Check idr_find() return value
      IB/ehca: Discard double CQE for one WR

David J. Wilder (1):
      IPoIB/cm: Use vmalloc() to allocate rx_rings

Roland Dreier (1):
      Merge branches 'ehca' and 'ipoib' into for-linus

 drivers/infiniband/hw/ehca/ehca_classes.h |    9 ++++
 drivers/infiniband/hw/ehca/ehca_qes.h     |    1 +
 drivers/infiniband/hw/ehca/ehca_qp.c      |   48 +++++++++++++++++------
 drivers/infiniband/hw/ehca/ehca_reqs.c    |   60 ++++++++++++++++++++++------
 drivers/infiniband/ulp/ipoib/ipoib_cm.c   |   17 ++++++--
 5 files changed, 104 insertions(+), 31 deletions(-)


diff --git a/drivers/infiniband/hw/ehca/ehca_classes.h b/drivers/infiniband/hw/ehca/ehca_classes.h
index 0b0618e..1ab919f 100644
--- a/drivers/infiniband/hw/ehca/ehca_classes.h
+++ b/drivers/infiniband/hw/ehca/ehca_classes.h
@@ -156,6 +156,14 @@ struct ehca_mod_qp_parm {
 
 #define EHCA_MOD_QP_PARM_MAX 4
 
+#define QMAP_IDX_MASK 0xFFFFULL
+
+/* struct for tracking if cqes have been reported to the application */
+struct ehca_qmap_entry {
+	u16 app_wr_id;
+	u16 reported;
+};
+
 struct ehca_qp {
 	union {
 		struct ib_qp ib_qp;
@@ -165,6 +173,7 @@ struct ehca_qp {
 	enum ehca_ext_qp_type ext_type;
 	enum ib_qp_state state;
 	struct ipz_queue ipz_squeue;
+	struct ehca_qmap_entry *sq_map;
 	struct ipz_queue ipz_rqueue;
 	struct h_galpas galpas;
 	u32 qkey;
diff --git a/drivers/infiniband/hw/ehca/ehca_qes.h b/drivers/infiniband/hw/ehca/ehca_qes.h
index 8188030..5d28e3e 100644
--- a/drivers/infiniband/hw/ehca/ehca_qes.h
+++ b/drivers/infiniband/hw/ehca/ehca_qes.h
@@ -213,6 +213,7 @@ struct ehca_wqe {
 #define WC_STATUS_ERROR_BIT 0x80000000
 #define WC_STATUS_REMOTE_ERROR_FLAGS 0x0000F800
 #define WC_STATUS_PURGE_BIT 0x10
+#define WC_SEND_RECEIVE_BIT 0x80
 
 struct ehca_cqe {
 	u64 work_request_id;
diff --git a/drivers/infiniband/hw/ehca/ehca_qp.c b/drivers/infiniband/hw/ehca/ehca_qp.c
index ea13efd..b6bcee0 100644
--- a/drivers/infiniband/hw/ehca/ehca_qp.c
+++ b/drivers/infiniband/hw/ehca/ehca_qp.c
@@ -412,6 +412,7 @@ static struct ehca_qp *internal_create_qp(
 	struct ehca_shca *shca = container_of(pd->device, struct ehca_shca,
 					      ib_device);
 	struct ib_ucontext *context = NULL;
+	u32 nr_qes;
 	u64 h_ret;
 	int is_llqp = 0, has_srq = 0;
 	int qp_type, max_send_sge, max_recv_sge, ret;
@@ -715,6 +716,15 @@ static struct ehca_qp *internal_create_qp(
 				 "and pages ret=%i", ret);
 			goto create_qp_exit2;
 		}
+		nr_qes = my_qp->ipz_squeue.queue_length /
+			 my_qp->ipz_squeue.qe_size;
+		my_qp->sq_map = vmalloc(nr_qes *
+					sizeof(struct ehca_qmap_entry));
+		if (!my_qp->sq_map) {
+			ehca_err(pd->device, "Couldn't allocate squeue "
+				 "map ret=%i", ret);
+			goto create_qp_exit3;
+		}
 	}
 
 	if (HAS_RQ(my_qp)) {
@@ -724,7 +734,7 @@ static struct ehca_qp *internal_create_qp(
 		if (ret) {
 			ehca_err(pd->device, "Couldn't initialize rqueue "
 				 "and pages ret=%i", ret);
-			goto create_qp_exit3;
+			goto create_qp_exit4;
 		}
 	}
 
@@ -770,7 +780,7 @@ static struct ehca_qp *internal_create_qp(
 			if (!my_qp->mod_qp_parm) {
 				ehca_err(pd->device,
 					 "Could not alloc mod_qp_parm");
-				goto create_qp_exit4;
+				goto create_qp_exit5;
 			}
 		}
 	}
@@ -780,7 +790,7 @@ static struct ehca_qp *internal_create_qp(
 		h_ret = ehca_define_sqp(shca, my_qp, init_attr);
 		if (h_ret != H_SUCCESS) {
 			ret = ehca2ib_return_code(h_ret);
-			goto create_qp_exit5;
+			goto create_qp_exit6;
 		}
 	}
 
@@ -789,7 +799,7 @@ static struct ehca_qp *internal_create_qp(
 		if (ret) {
 			ehca_err(pd->device,
 				 "Couldn't assign qp to send_cq ret=%i", ret);
-			goto create_qp_exit5;
+			goto create_qp_exit6;
 		}
 	}
 
@@ -815,22 +825,26 @@ static struct ehca_qp *internal_create_qp(
 		if (ib_copy_to_udata(udata, &resp, sizeof resp)) {
 			ehca_err(pd->device, "Copy to udata failed");
 			ret = -EINVAL;
-			goto create_qp_exit6;
+			goto create_qp_exit7;
 		}
 	}
 
 	return my_qp;
 
-create_qp_exit6:
+create_qp_exit7:
 	ehca_cq_unassign_qp(my_qp->send_cq, my_qp->real_qp_num);
 
-create_qp_exit5:
+create_qp_exit6:
 	kfree(my_qp->mod_qp_parm);
 
-create_qp_exit4:
+create_qp_exit5:
 	if (HAS_RQ(my_qp))
 		ipz_queue_dtor(my_pd, &my_qp->ipz_rqueue);
 
+create_qp_exit4:
+	if (HAS_SQ(my_qp))
+		vfree(my_qp->sq_map);
+
 create_qp_exit3:
 	if (HAS_SQ(my_qp))
 		ipz_queue_dtor(my_pd, &my_qp->ipz_squeue);
@@ -1534,8 +1548,6 @@ static int internal_modify_qp(struct ib_qp *ibqp,
 	if (attr_mask & IB_QP_QKEY)
 		my_qp->qkey = attr->qkey;
 
-	my_qp->state = qp_new_state;
-
 modify_qp_exit2:
 	if (squeue_locked) { /* this means: sqe -> rts */
 		spin_unlock_irqrestore(&my_qp->spinlock_s, flags);
@@ -1551,6 +1563,8 @@ modify_qp_exit1:
 int ehca_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, int attr_mask,
 		   struct ib_udata *udata)
 {
+	int ret = 0;
+
 	struct ehca_shca *shca = container_of(ibqp->device, struct ehca_shca,
 					      ib_device);
 	struct ehca_qp *my_qp = container_of(ibqp, struct ehca_qp, ib_qp);
@@ -1597,12 +1611,18 @@ int ehca_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, int attr_mask,
 				 attr->qp_state, my_qp->init_attr.port_num,
 				 ibqp->qp_type);
 			spin_unlock_irqrestore(&sport->mod_sqp_lock, flags);
-			return 0;
+			goto out;
 		}
 		spin_unlock_irqrestore(&sport->mod_sqp_lock, flags);
 	}
 
-	return internal_modify_qp(ibqp, attr, attr_mask, 0);
+	ret = internal_modify_qp(ibqp, attr, attr_mask, 0);
+
+out:
+	if ((ret == 0) && (attr_mask & IB_QP_STATE))
+		my_qp->state = attr->qp_state;
+
+	return ret;
 }
 
 void ehca_recover_sqp(struct ib_qp *sqp)
@@ -1973,8 +1993,10 @@ static int internal_destroy_qp(struct ib_device *dev, struct ehca_qp *my_qp,
 
 	if (HAS_RQ(my_qp))
 		ipz_queue_dtor(my_pd, &my_qp->ipz_rqueue);
-	if (HAS_SQ(my_qp))
+	if (HAS_SQ(my_qp)) {
 		ipz_queue_dtor(my_pd, &my_qp->ipz_squeue);
+		vfree(my_qp->sq_map);
+	}
 	kmem_cache_free(qp_cache, my_qp);
 	atomic_dec(&shca->num_qps);
 	return 0;
diff --git a/drivers/infiniband/hw/ehca/ehca_reqs.c b/drivers/infiniband/hw/ehca/ehca_reqs.c
index 898c8b5..4426d82 100644
--- a/drivers/infiniband/hw/ehca/ehca_reqs.c
+++ b/drivers/infiniband/hw/ehca/ehca_reqs.c
@@ -139,6 +139,7 @@ static void trace_send_wr_ud(const struct ib_send_wr *send_wr)
 static inline int ehca_write_swqe(struct ehca_qp *qp,
 				  struct ehca_wqe *wqe_p,
 				  const struct ib_send_wr *send_wr,
+				  u32 sq_map_idx,
 				  int hidden)
 {
 	u32 idx;
@@ -157,7 +158,11 @@ static inline int ehca_write_swqe(struct ehca_qp *qp,
 	/* clear wqe header until sglist */
 	memset(wqe_p, 0, offsetof(struct ehca_wqe, u.ud_av.sg_list));
 
-	wqe_p->work_request_id = send_wr->wr_id;
+	wqe_p->work_request_id = send_wr->wr_id & ~QMAP_IDX_MASK;
+	wqe_p->work_request_id |= sq_map_idx & QMAP_IDX_MASK;
+
+	qp->sq_map[sq_map_idx].app_wr_id = send_wr->wr_id & QMAP_IDX_MASK;
+	qp->sq_map[sq_map_idx].reported = 0;
 
 	switch (send_wr->opcode) {
 	case IB_WR_SEND:
@@ -381,6 +386,7 @@ static inline int post_one_send(struct ehca_qp *my_qp,
 {
 	struct ehca_wqe *wqe_p;
 	int ret;
+	u32 sq_map_idx;
 	u64 start_offset = my_qp->ipz_squeue.current_q_offset;
 
 	/* get pointer next to free WQE */
@@ -393,8 +399,15 @@ static inline int post_one_send(struct ehca_qp *my_qp,
 			 "qp_num=%x", my_qp->ib_qp.qp_num);
 		return -ENOMEM;
 	}
+
+	/*
+	 * Get the index of the WQE in the send queue. The same index is used
+	 * for writing into the sq_map.
+	 */
+	sq_map_idx = start_offset / my_qp->ipz_squeue.qe_size;
+
 	/* write a SEND WQE into the QUEUE */
-	ret = ehca_write_swqe(my_qp, wqe_p, cur_send_wr, hidden);
+	ret = ehca_write_swqe(my_qp, wqe_p, cur_send_wr, sq_map_idx, hidden);
 	/*
 	 * if something failed,
 	 * reset the free entry pointer to the start value
@@ -589,7 +602,7 @@ static inline int ehca_poll_cq_one(struct ib_cq *cq, struct ib_wc *wc)
 	struct ehca_qp *my_qp;
 	int cqe_count = 0, is_error;
 
-poll_cq_one_read_cqe:
+repoll:
 	cqe = (struct ehca_cqe *)
 		ipz_qeit_get_inc_valid(&my_cq->ipz_queue);
 	if (!cqe) {
@@ -617,7 +630,7 @@ poll_cq_one_read_cqe:
 			ehca_dmp(cqe, 64, "cq_num=%x qp_num=%x",
 				 my_cq->cq_number, cqe->local_qp_number);
 			/* ignore this purged cqe */
-			goto poll_cq_one_read_cqe;
+			goto repoll;
 		}
 		spin_lock_irqsave(&qp->spinlock_s, flags);
 		purgeflag = qp->sqerr_purgeflag;
@@ -636,7 +649,7 @@ poll_cq_one_read_cqe:
 			 * that caused sqe and turn off purge flag
 			 */
 			qp->sqerr_purgeflag = 0;
-			goto poll_cq_one_read_cqe;
+			goto repoll;
 		}
 	}
 
@@ -654,8 +667,34 @@ poll_cq_one_read_cqe:
 			 my_cq, my_cq->cq_number);
 	}
 
-	/* we got a completion! */
-	wc->wr_id = cqe->work_request_id;
+	read_lock(&ehca_qp_idr_lock);
+	my_qp = idr_find(&ehca_qp_idr, cqe->qp_token);
+	read_unlock(&ehca_qp_idr_lock);
+	if (!my_qp)
+		goto repoll;
+	wc->qp = &my_qp->ib_qp;
+
+	if (!(cqe->w_completion_flags & WC_SEND_RECEIVE_BIT)) {
+		struct ehca_qmap_entry *qmap_entry;
+		/*
+		 * We got a send completion and need to restore the original
+		 * wr_id.
+		 */
+		qmap_entry = &my_qp->sq_map[cqe->work_request_id &
+					    QMAP_IDX_MASK];
+
+		if (qmap_entry->reported) {
+			ehca_warn(cq->device, "Double cqe on qp_num=%#x",
+				  my_qp->real_qp_num);
+			/* found a double cqe, discard it and read next one */
+			goto repoll;
+		}
+		wc->wr_id = cqe->work_request_id & ~QMAP_IDX_MASK;
+		wc->wr_id |= qmap_entry->app_wr_id;
+		qmap_entry->reported = 1;
+	} else
+		/* We got a receive completion. */
+		wc->wr_id = cqe->work_request_id;
 
 	/* eval ib_wc_opcode */
 	wc->opcode = ib_wc_opcode[cqe->optype]-1;
@@ -667,7 +706,7 @@ poll_cq_one_read_cqe:
 		ehca_dmp(cqe, 64, "ehca_cq=%p cq_num=%x",
 			 my_cq, my_cq->cq_number);
 		/* update also queue adder to throw away this entry!!! */
-		goto poll_cq_one_exit0;
+		goto repoll;
 	}
 
 	/* eval ib_wc_status */
@@ -678,11 +717,6 @@ poll_cq_one_read_cqe:
 	} else
 		wc->status = IB_WC_SUCCESS;
 
-	read_lock(&ehca_qp_idr_lock);
-	my_qp = idr_find(&ehca_qp_idr, cqe->qp_token);
-	wc->qp = &my_qp->ib_qp;
-	read_unlock(&ehca_qp_idr_lock);
-
 	wc->byte_len = cqe->nr_bytes_transferred;
 	wc->pkey_index = cqe->pkey_index;
 	wc->slid = cqe->rlid;
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
index 7ebc400..341ffed 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
@@ -202,7 +202,7 @@ static void ipoib_cm_free_rx_ring(struct net_device *dev,
 			dev_kfree_skb_any(rx_ring[i].skb);
 		}
 
-	kfree(rx_ring);
+	vfree(rx_ring);
 }
 
 static void ipoib_cm_start_rx_drain(struct ipoib_dev_priv *priv)
@@ -352,9 +352,14 @@ static int ipoib_cm_nonsrq_init_rx(struct net_device *dev, struct ib_cm_id *cm_i
 	int ret;
 	int i;
 
-	rx->rx_ring = kcalloc(ipoib_recvq_size, sizeof *rx->rx_ring, GFP_KERNEL);
-	if (!rx->rx_ring)
+	rx->rx_ring = vmalloc(ipoib_recvq_size * sizeof *rx->rx_ring);
+	if (!rx->rx_ring) {
+		printk(KERN_WARNING "%s: failed to allocate CM non-SRQ ring (%d entries)\n",
+		       priv->ca->name, ipoib_recvq_size);
 		return -ENOMEM;
+	}
+
+	memset(rx->rx_ring, 0, ipoib_recvq_size * sizeof *rx->rx_ring);
 
 	t = kmalloc(sizeof *t, GFP_KERNEL);
 	if (!t) {
@@ -1494,14 +1499,16 @@ static void ipoib_cm_create_srq(struct net_device *dev, int max_sge)
 		return;
 	}
 
-	priv->cm.srq_ring = kzalloc(ipoib_recvq_size * sizeof *priv->cm.srq_ring,
-				    GFP_KERNEL);
+	priv->cm.srq_ring = vmalloc(ipoib_recvq_size * sizeof *priv->cm.srq_ring);
 	if (!priv->cm.srq_ring) {
 		printk(KERN_WARNING "%s: failed to allocate CM SRQ ring (%d entries)\n",
 		       priv->ca->name, ipoib_recvq_size);
 		ib_destroy_srq(priv->cm.srq);
 		priv->cm.srq = NULL;
+		return;
 	}
+
+	memset(priv->cm.srq_ring, 0, ipoib_recvq_size * sizeof *priv->cm.srq_ring);
 }
 
 int ipoib_cm_dev_init(struct net_device *dev)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-08-07 21:15 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-08-07 21:15 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get the following fixes:

Alex Naslednikov (1):
      IB/mlx4: Allow 4K messages for UD QPs

Alexander Beregalov (1):
      IB/ipath: Fix printk format warnings

Julien Brunel (1):
      IB/mad: Test ib_create_send_mad() return with IS_ERR(), not == NULL

Roland Dreier (3):
      IPoIB/cm: Set correct SG list in ipoib_cm_init_rx_wr()
      RDMA/cma: Remove padding arrays by using struct sockaddr_storage
      Merge branches 'cma', 'cxgb3', 'ipath', 'ipoib', 'mad' and 'mlx4' into for-linus

Steve Wise (3):
      RDMA/cxgb3: Fix QP capabilities
      RDMA/cxgb3: Fix up MW access rights
      RDMA/cxgb3: Fix deadlock initializing iw_cxgb3 device

Vegard Nossum (1):
      IB/ipath: Use unsigned long for irq flags

Yevgeny Petrilin (1):
      mlx4_core: Add ethernet fields to CQE struct

 drivers/infiniband/core/cma.c               |   37 +++++++++++++--------------
 drivers/infiniband/core/mad_rmpp.c          |    2 +-
 drivers/infiniband/core/ucma.c              |   14 ++++------
 drivers/infiniband/hw/cxgb3/cxio_hal.c      |    6 ++--
 drivers/infiniband/hw/cxgb3/iwch_provider.c |   28 ++------------------
 drivers/infiniband/hw/cxgb3/iwch_provider.h |    7 +++++
 drivers/infiniband/hw/cxgb3/iwch_qp.c       |   25 ++++++------------
 drivers/infiniband/hw/ipath/ipath_driver.c  |    5 ++-
 drivers/infiniband/hw/ipath/ipath_iba7220.c |    7 +++--
 drivers/infiniband/hw/ipath/ipath_intr.c    |   12 ++++++---
 drivers/infiniband/hw/ipath/ipath_verbs.c   |    6 ++--
 drivers/infiniband/hw/mlx4/cq.c             |   33 +++++++++++------------
 drivers/infiniband/hw/mlx4/qp.c             |    2 +-
 drivers/infiniband/ulp/ipoib/ipoib_cm.c     |    2 +-
 include/linux/mlx4/cq.h                     |   36 +++++++++++++++++--------
 include/rdma/rdma_cm.h                      |    8 +----
 16 files changed, 108 insertions(+), 122 deletions(-)


diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index e980ff3..d951896 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -155,9 +155,7 @@ struct cma_multicast {
 	} multicast;
 	struct list_head	list;
 	void			*context;
-	struct sockaddr		addr;
-	u8			pad[sizeof(struct sockaddr_in6) -
-				    sizeof(struct sockaddr)];
+	struct sockaddr_storage	addr;
 };
 
 struct cma_work {
@@ -786,8 +784,8 @@ static void cma_cancel_operation(struct rdma_id_private *id_priv,
 		cma_cancel_route(id_priv);
 		break;
 	case CMA_LISTEN:
-		if (cma_any_addr(&id_priv->id.route.addr.src_addr) &&
-		    !id_priv->cma_dev)
+		if (cma_any_addr((struct sockaddr *) &id_priv->id.route.addr.src_addr)
+				&& !id_priv->cma_dev)
 			cma_cancel_listens(id_priv);
 		break;
 	default:
@@ -1026,7 +1024,7 @@ static struct rdma_id_private *cma_new_conn_id(struct rdma_cm_id *listen_id,
 		rt->path_rec[1] = *ib_event->param.req_rcvd.alternate_path;
 
 	ib_addr_set_dgid(&rt->addr.dev_addr, &rt->path_rec[0].dgid);
-	ret = rdma_translate_ip(&id->route.addr.src_addr,
+	ret = rdma_translate_ip((struct sockaddr *) &id->route.addr.src_addr,
 				&id->route.addr.dev_addr);
 	if (ret)
 		goto destroy_id;
@@ -1064,7 +1062,7 @@ static struct rdma_id_private *cma_new_udp_id(struct rdma_cm_id *listen_id,
 	cma_save_net_info(&id->route.addr, &listen_id->route.addr,
 			  ip_ver, port, src, dst);
 
-	ret = rdma_translate_ip(&id->route.addr.src_addr,
+	ret = rdma_translate_ip((struct sockaddr *) &id->route.addr.src_addr,
 				&id->route.addr.dev_addr);
 	if (ret)
 		goto err;
@@ -1377,7 +1375,7 @@ static int cma_ib_listen(struct rdma_id_private *id_priv)
 	if (IS_ERR(id_priv->cm_id.ib))
 		return PTR_ERR(id_priv->cm_id.ib);
 
-	addr = &id_priv->id.route.addr.src_addr;
+	addr = (struct sockaddr *) &id_priv->id.route.addr.src_addr;
 	svc_id = cma_get_service_id(id_priv->id.ps, addr);
 	if (cma_any_addr(addr))
 		ret = ib_cm_listen(id_priv->cm_id.ib, svc_id, 0, NULL);
@@ -1443,7 +1441,7 @@ static void cma_listen_on_dev(struct rdma_id_private *id_priv,
 
 	dev_id_priv->state = CMA_ADDR_BOUND;
 	memcpy(&id->route.addr.src_addr, &id_priv->id.route.addr.src_addr,
-	       ip_addr_size(&id_priv->id.route.addr.src_addr));
+	       ip_addr_size((struct sockaddr *) &id_priv->id.route.addr.src_addr));
 
 	cma_attach_to_dev(dev_id_priv, cma_dev);
 	list_add_tail(&dev_id_priv->listen_list, &id_priv->listen_list);
@@ -1563,13 +1561,14 @@ static int cma_query_ib_route(struct rdma_id_private *id_priv, int timeout_ms,
 	path_rec.pkey = cpu_to_be16(ib_addr_get_pkey(&addr->dev_addr));
 	path_rec.numb_path = 1;
 	path_rec.reversible = 1;
-	path_rec.service_id = cma_get_service_id(id_priv->id.ps, &addr->dst_addr);
+	path_rec.service_id = cma_get_service_id(id_priv->id.ps,
+							(struct sockaddr *) &addr->dst_addr);
 
 	comp_mask = IB_SA_PATH_REC_DGID | IB_SA_PATH_REC_SGID |
 		    IB_SA_PATH_REC_PKEY | IB_SA_PATH_REC_NUMB_PATH |
 		    IB_SA_PATH_REC_REVERSIBLE | IB_SA_PATH_REC_SERVICE_ID;
 
-	if (addr->src_addr.sa_family == AF_INET) {
+	if (addr->src_addr.ss_family == AF_INET) {
 		path_rec.qos_class = cpu_to_be16((u16) id_priv->tos);
 		comp_mask |= IB_SA_PATH_REC_QOS_CLASS;
 	} else {
@@ -1848,7 +1847,7 @@ static int cma_resolve_loopback(struct rdma_id_private *id_priv)
 	ib_addr_get_sgid(&id_priv->id.route.addr.dev_addr, &gid);
 	ib_addr_set_dgid(&id_priv->id.route.addr.dev_addr, &gid);
 
-	if (cma_zero_addr(&id_priv->id.route.addr.src_addr)) {
+	if (cma_zero_addr((struct sockaddr *) &id_priv->id.route.addr.src_addr)) {
 		src_in = (struct sockaddr_in *)&id_priv->id.route.addr.src_addr;
 		dst_in = (struct sockaddr_in *)&id_priv->id.route.addr.dst_addr;
 		src_in->sin_family = dst_in->sin_family;
@@ -1897,7 +1896,7 @@ int rdma_resolve_addr(struct rdma_cm_id *id, struct sockaddr *src_addr,
 	if (cma_any_addr(dst_addr))
 		ret = cma_resolve_loopback(id_priv);
 	else
-		ret = rdma_resolve_ip(&addr_client, &id->route.addr.src_addr,
+		ret = rdma_resolve_ip(&addr_client, (struct sockaddr *) &id->route.addr.src_addr,
 				      dst_addr, &id->route.addr.dev_addr,
 				      timeout_ms, addr_handler, id_priv);
 	if (ret)
@@ -2021,11 +2020,11 @@ static int cma_use_port(struct idr *ps, struct rdma_id_private *id_priv)
 	 * We don't support binding to any address if anyone is bound to
 	 * a specific address on the same port.
 	 */
-	if (cma_any_addr(&id_priv->id.route.addr.src_addr))
+	if (cma_any_addr((struct sockaddr *) &id_priv->id.route.addr.src_addr))
 		return -EADDRNOTAVAIL;
 
 	hlist_for_each_entry(cur_id, node, &bind_list->owners, node) {
-		if (cma_any_addr(&cur_id->id.route.addr.src_addr))
+		if (cma_any_addr((struct sockaddr *) &cur_id->id.route.addr.src_addr))
 			return -EADDRNOTAVAIL;
 
 		cur_sin = (struct sockaddr_in *) &cur_id->id.route.addr.src_addr;
@@ -2060,7 +2059,7 @@ static int cma_get_port(struct rdma_id_private *id_priv)
 	}
 
 	mutex_lock(&lock);
-	if (cma_any_port(&id_priv->id.route.addr.src_addr))
+	if (cma_any_port((struct sockaddr *) &id_priv->id.route.addr.src_addr))
 		ret = cma_alloc_any_port(ps, id_priv);
 	else
 		ret = cma_use_port(ps, id_priv);
@@ -2232,7 +2231,7 @@ static int cma_resolve_ib_udp(struct rdma_id_private *id_priv,
 
 	req.path = route->path_rec;
 	req.service_id = cma_get_service_id(id_priv->id.ps,
-					    &route->addr.dst_addr);
+					    (struct sockaddr *) &route->addr.dst_addr);
 	req.timeout_ms = 1 << (CMA_CM_RESPONSE_TIMEOUT - 8);
 	req.max_cm_retries = CMA_MAX_CM_RETRIES;
 
@@ -2283,7 +2282,7 @@ static int cma_connect_ib(struct rdma_id_private *id_priv,
 		req.alternate_path = &route->path_rec[1];
 
 	req.service_id = cma_get_service_id(id_priv->id.ps,
-					    &route->addr.dst_addr);
+					    (struct sockaddr *) &route->addr.dst_addr);
 	req.qp_num = id_priv->qp_num;
 	req.qp_type = IB_QPT_RC;
 	req.starting_psn = id_priv->seq_num;
@@ -2667,7 +2666,7 @@ static int cma_join_ib_multicast(struct rdma_id_private *id_priv,
 	if (ret)
 		return ret;
 
-	cma_set_mgid(id_priv, &mc->addr, &rec.mgid);
+	cma_set_mgid(id_priv, (struct sockaddr *) &mc->addr, &rec.mgid);
 	if (id_priv->id.ps == RDMA_PS_UDP)
 		rec.qkey = cpu_to_be32(RDMA_UDP_QKEY);
 	ib_addr_get_sgid(dev_addr, &rec.port_gid);
diff --git a/drivers/infiniband/core/mad_rmpp.c b/drivers/infiniband/core/mad_rmpp.c
index d0ef7d6..3af2b84 100644
--- a/drivers/infiniband/core/mad_rmpp.c
+++ b/drivers/infiniband/core/mad_rmpp.c
@@ -133,7 +133,7 @@ static void ack_recv(struct mad_rmpp_recv *rmpp_recv,
 	msg = ib_create_send_mad(&rmpp_recv->agent->agent, recv_wc->wc->src_qp,
 				 recv_wc->wc->pkey_index, 1, hdr_len,
 				 0, GFP_KERNEL);
-	if (!msg)
+	if (IS_ERR(msg))
 		return;
 
 	format_ack(msg, (struct ib_rmpp_mad *) recv_wc->recv_buf.mad, rmpp_recv);
diff --git a/drivers/infiniband/core/ucma.c b/drivers/infiniband/core/ucma.c
index b41dd26..3ddacf3 100644
--- a/drivers/infiniband/core/ucma.c
+++ b/drivers/infiniband/core/ucma.c
@@ -81,9 +81,7 @@ struct ucma_multicast {
 
 	u64			uid;
 	struct list_head	list;
-	struct sockaddr		addr;
-	u8			pad[sizeof(struct sockaddr_in6) -
-				    sizeof(struct sockaddr)];
+	struct sockaddr_storage	addr;
 };
 
 struct ucma_event {
@@ -603,11 +601,11 @@ static ssize_t ucma_query_route(struct ucma_file *file,
 		return PTR_ERR(ctx);
 
 	memset(&resp, 0, sizeof resp);
-	addr = &ctx->cm_id->route.addr.src_addr;
+	addr = (struct sockaddr *) &ctx->cm_id->route.addr.src_addr;
 	memcpy(&resp.src_addr, addr, addr->sa_family == AF_INET ?
 				     sizeof(struct sockaddr_in) :
 				     sizeof(struct sockaddr_in6));
-	addr = &ctx->cm_id->route.addr.dst_addr;
+	addr = (struct sockaddr *) &ctx->cm_id->route.addr.dst_addr;
 	memcpy(&resp.dst_addr, addr, addr->sa_family == AF_INET ?
 				     sizeof(struct sockaddr_in) :
 				     sizeof(struct sockaddr_in6));
@@ -913,7 +911,7 @@ static ssize_t ucma_join_multicast(struct ucma_file *file,
 
 	mc->uid = cmd.uid;
 	memcpy(&mc->addr, &cmd.addr, sizeof cmd.addr);
-	ret = rdma_join_multicast(ctx->cm_id, &mc->addr, mc);
+	ret = rdma_join_multicast(ctx->cm_id, (struct sockaddr *) &mc->addr, mc);
 	if (ret)
 		goto err2;
 
@@ -929,7 +927,7 @@ static ssize_t ucma_join_multicast(struct ucma_file *file,
 	return 0;
 
 err3:
-	rdma_leave_multicast(ctx->cm_id, &mc->addr);
+	rdma_leave_multicast(ctx->cm_id, (struct sockaddr *) &mc->addr);
 	ucma_cleanup_mc_events(mc);
 err2:
 	mutex_lock(&mut);
@@ -975,7 +973,7 @@ static ssize_t ucma_leave_multicast(struct ucma_file *file,
 		goto out;
 	}
 
-	rdma_leave_multicast(mc->ctx->cm_id, &mc->addr);
+	rdma_leave_multicast(mc->ctx->cm_id, (struct sockaddr *) &mc->addr);
 	mutex_lock(&mc->ctx->file->mut);
 	ucma_cleanup_mc_events(mc);
 	list_del(&mc->list);
diff --git a/drivers/infiniband/hw/cxgb3/cxio_hal.c b/drivers/infiniband/hw/cxgb3/cxio_hal.c
index f6d5747..4dcf08b 100644
--- a/drivers/infiniband/hw/cxgb3/cxio_hal.c
+++ b/drivers/infiniband/hw/cxgb3/cxio_hal.c
@@ -725,9 +725,9 @@ static int __cxio_tpt_op(struct cxio_rdev *rdev_p, u32 reset_tpt_entry,
 				V_TPT_STAG_TYPE(type) | V_TPT_PDID(pdid));
 		BUG_ON(page_size >= 28);
 		tpt.flags_pagesize_qpid = cpu_to_be32(V_TPT_PERM(perm) |
-				F_TPT_MW_BIND_ENABLE |
-				V_TPT_ADDR_TYPE((zbva ? TPT_ZBTO : TPT_VATO)) |
-				V_TPT_PAGE_SIZE(page_size));
+			((perm & TPT_MW_BIND) ? F_TPT_MW_BIND_ENABLE : 0) |
+			V_TPT_ADDR_TYPE((zbva ? TPT_ZBTO : TPT_VATO)) |
+			V_TPT_PAGE_SIZE(page_size));
 		tpt.rsvd_pbl_addr = reset_tpt_entry ? 0 :
 				    cpu_to_be32(V_TPT_PBL_ADDR(PBL_OFF(rdev_p, pbl_addr)>>3));
 		tpt.len = cpu_to_be32(len);
diff --git a/drivers/infiniband/hw/cxgb3/iwch_provider.c b/drivers/infiniband/hw/cxgb3/iwch_provider.c
index b89640a..eb778bf 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_provider.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_provider.c
@@ -1187,28 +1187,6 @@ static ssize_t show_rev(struct device *dev, struct device_attribute *attr,
 	return sprintf(buf, "%d\n", iwch_dev->rdev.t3cdev_p->type);
 }
 
-static int fw_supports_fastreg(struct iwch_dev *iwch_dev)
-{
-	struct ethtool_drvinfo info;
-	struct net_device *lldev = iwch_dev->rdev.t3cdev_p->lldev;
-	char *cp, *next;
-	unsigned fw_maj, fw_min;
-
-	rtnl_lock();
-	lldev->ethtool_ops->get_drvinfo(lldev, &info);
-	rtnl_unlock();
-
-	next = info.fw_version+1;
-	cp = strsep(&next, ".");
-	sscanf(cp, "%i", &fw_maj);
-	cp = strsep(&next, ".");
-	sscanf(cp, "%i", &fw_min);
-
-	PDBG("%s maj %u min %u\n", __func__, fw_maj, fw_min);
-
-	return fw_maj > 6 || (fw_maj == 6 && fw_min > 0);
-}
-
 static ssize_t show_fw_ver(struct device *dev, struct device_attribute *attr, char *buf)
 {
 	struct iwch_dev *iwch_dev = container_of(dev, struct iwch_dev,
@@ -1325,12 +1303,12 @@ int iwch_register_device(struct iwch_dev *dev)
 	memset(&dev->ibdev.node_guid, 0, sizeof(dev->ibdev.node_guid));
 	memcpy(&dev->ibdev.node_guid, dev->rdev.t3cdev_p->lldev->dev_addr, 6);
 	dev->ibdev.owner = THIS_MODULE;
-	dev->device_cap_flags = IB_DEVICE_LOCAL_DMA_LKEY | IB_DEVICE_MEM_WINDOW;
+	dev->device_cap_flags = IB_DEVICE_LOCAL_DMA_LKEY |
+				IB_DEVICE_MEM_WINDOW |
+				IB_DEVICE_MEM_MGT_EXTENSIONS;
 
 	/* cxgb3 supports STag 0. */
 	dev->ibdev.local_dma_lkey = 0;
-	if (fw_supports_fastreg(dev))
-		dev->device_cap_flags |= IB_DEVICE_MEM_MGT_EXTENSIONS;
 
 	dev->ibdev.uverbs_cmd_mask =
 	    (1ull << IB_USER_VERBS_CMD_GET_CONTEXT) |
diff --git a/drivers/infiniband/hw/cxgb3/iwch_provider.h b/drivers/infiniband/hw/cxgb3/iwch_provider.h
index f5ceca0..a237d49 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_provider.h
+++ b/drivers/infiniband/hw/cxgb3/iwch_provider.h
@@ -293,9 +293,16 @@ static inline u32 iwch_ib_to_tpt_access(int acc)
 	return (acc & IB_ACCESS_REMOTE_WRITE ? TPT_REMOTE_WRITE : 0) |
 	       (acc & IB_ACCESS_REMOTE_READ ? TPT_REMOTE_READ : 0) |
 	       (acc & IB_ACCESS_LOCAL_WRITE ? TPT_LOCAL_WRITE : 0) |
+	       (acc & IB_ACCESS_MW_BIND ? TPT_MW_BIND : 0) |
 	       TPT_LOCAL_READ;
 }
 
+static inline u32 iwch_ib_to_tpt_bind_access(int acc)
+{
+	return (acc & IB_ACCESS_REMOTE_WRITE ? TPT_REMOTE_WRITE : 0) |
+	       (acc & IB_ACCESS_REMOTE_READ ? TPT_REMOTE_READ : 0);
+}
+
 enum iwch_mmid_state {
 	IWCH_STAG_STATE_VALID,
 	IWCH_STAG_STATE_INVALID
diff --git a/drivers/infiniband/hw/cxgb3/iwch_qp.c b/drivers/infiniband/hw/cxgb3/iwch_qp.c
index 9a3be3a..3e4585c 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_qp.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_qp.c
@@ -565,7 +565,7 @@ int iwch_bind_mw(struct ib_qp *qp,
 	wqe->bind.type = TPT_VATO;
 
 	/* TBD: check perms */
-	wqe->bind.perms = iwch_ib_to_tpt_access(mw_bind->mw_access_flags);
+	wqe->bind.perms = iwch_ib_to_tpt_bind_access(mw_bind->mw_access_flags);
 	wqe->bind.mr_stag = cpu_to_be32(mw_bind->mr->lkey);
 	wqe->bind.mw_stag = cpu_to_be32(mw->rkey);
 	wqe->bind.mw_len = cpu_to_be32(mw_bind->length);
@@ -879,20 +879,13 @@ static int rdma_init(struct iwch_dev *rhp, struct iwch_qp *qhp,
 		(qhp->attr.mpa_attr.xmit_marker_enabled << 1) |
 		(qhp->attr.mpa_attr.crc_enabled << 2);
 
-	/*
-	 * XXX - The IWCM doesn't quite handle getting these
-	 * attrs set before going into RTS.  For now, just turn
-	 * them on always...
-	 */
-#if 0
-	init_attr.qpcaps = qhp->attr.enableRdmaRead |
-		(qhp->attr.enableRdmaWrite << 1) |
-		(qhp->attr.enableBind << 2) |
-		(qhp->attr.enable_stag0_fastreg << 3) |
-		(qhp->attr.enable_stag0_fastreg << 4);
-#else
-	init_attr.qpcaps = 0x1f;
-#endif
+	init_attr.qpcaps = uP_RI_QP_RDMA_READ_ENABLE |
+			   uP_RI_QP_RDMA_WRITE_ENABLE |
+			   uP_RI_QP_BIND_ENABLE;
+	if (!qhp->ibqp.uobject)
+		init_attr.qpcaps |= uP_RI_QP_STAG0_ENABLE |
+				    uP_RI_QP_FAST_REGISTER_ENABLE;
+
 	init_attr.tcp_emss = qhp->ep->emss;
 	init_attr.ord = qhp->attr.max_ord;
 	init_attr.ird = qhp->attr.max_ird;
@@ -900,8 +893,6 @@ static int rdma_init(struct iwch_dev *rhp, struct iwch_qp *qhp,
 	init_attr.qp_dma_size = (1UL << qhp->wq.size_log2);
 	init_attr.rqe_count = iwch_rqes_posted(qhp);
 	init_attr.flags = qhp->attr.mpa_attr.initiator ? MPA_INITIATOR : 0;
-	if (!qhp->ibqp.uobject)
-		init_attr.flags |= PRIV_QP;
 	if (peer2peer) {
 		init_attr.rtr_type = RTR_READ;
 		if (init_attr.ord == 0 && qhp->attr.mpa_attr.initiator)
diff --git a/drivers/infiniband/hw/ipath/ipath_driver.c b/drivers/infiniband/hw/ipath/ipath_driver.c
index daad09a..ad0aab6 100644
--- a/drivers/infiniband/hw/ipath/ipath_driver.c
+++ b/drivers/infiniband/hw/ipath/ipath_driver.c
@@ -1259,7 +1259,7 @@ reloop:
 			 */
 			ipath_cdbg(ERRPKT, "Error Pkt, but no eflags! egrbuf"
 				  " %x, len %x hdrq+%x rhf: %Lx\n",
-				  etail, tlen, l,
+				  etail, tlen, l, (unsigned long long)
 				  le64_to_cpu(*(__le64 *) rhf_addr));
 			if (ipath_debug & __IPATH_ERRPKTDBG) {
 				u32 j, *d, dw = rsize-2;
@@ -1457,7 +1457,8 @@ static void ipath_reset_availshadow(struct ipath_devdata *dd)
 			0xaaaaaaaaaaaaaaaaULL); /* All BUSY bits in qword */
 		if (oldval != dd->ipath_pioavailshadow[i])
 			ipath_dbg("shadow[%d] was %Lx, now %lx\n",
-				i, oldval, dd->ipath_pioavailshadow[i]);
+				i, (unsigned long long) oldval,
+				dd->ipath_pioavailshadow[i]);
 	}
 	spin_unlock_irqrestore(&ipath_pioavail_lock, flags);
 }
diff --git a/drivers/infiniband/hw/ipath/ipath_iba7220.c b/drivers/infiniband/hw/ipath/ipath_iba7220.c
index fb70712..85b2cd0 100644
--- a/drivers/infiniband/hw/ipath/ipath_iba7220.c
+++ b/drivers/infiniband/hw/ipath/ipath_iba7220.c
@@ -1032,7 +1032,7 @@ static int ipath_7220_bringup_serdes(struct ipath_devdata *dd)
 	ipath_cdbg(VERBOSE, "done: xgxs=%llx from %llx\n",
 		   (unsigned long long)
 		   ipath_read_kreg64(dd, dd->ipath_kregs->kr_xgxsconfig),
-		   prev_val);
+		   (unsigned long long) prev_val);
 
 	guid = be64_to_cpu(dd->ipath_guid);
 
@@ -1042,7 +1042,8 @@ static int ipath_7220_bringup_serdes(struct ipath_devdata *dd)
 		ipath_dbg("No GUID for heartbeat, faking %llx\n",
 			(unsigned long long)guid);
 	} else
-		ipath_cdbg(VERBOSE, "Wrote %llX to HRTBT_GUID\n", guid);
+		ipath_cdbg(VERBOSE, "Wrote %llX to HRTBT_GUID\n",
+			(unsigned long long) guid);
 	ipath_write_kreg(dd, dd->ipath_kregs->kr_hrtbt_guid, guid);
 	return ret;
 }
@@ -2505,7 +2506,7 @@ done:
 	if (dd->ipath_flags & IPATH_IB_AUTONEG_INPROG) {
 		ipath_dbg("Did not get to DDR INIT (%x) after %Lu msecs\n",
 			ipath_ib_state(dd, dd->ipath_lastibcstat),
-			jiffies_to_msecs(jiffies)-startms);
+			(unsigned long long) jiffies_to_msecs(jiffies)-startms);
 		dd->ipath_flags &= ~IPATH_IB_AUTONEG_INPROG;
 		if (dd->ipath_autoneg_tries == IPATH_AUTONEG_TRIES) {
 			dd->ipath_flags |= IPATH_IB_AUTONEG_FAILED;
diff --git a/drivers/infiniband/hw/ipath/ipath_intr.c b/drivers/infiniband/hw/ipath/ipath_intr.c
index 26900b3..6c21b4b 100644
--- a/drivers/infiniband/hw/ipath/ipath_intr.c
+++ b/drivers/infiniband/hw/ipath/ipath_intr.c
@@ -356,9 +356,10 @@ static void handle_e_ibstatuschanged(struct ipath_devdata *dd,
 			dd->ipath_cregs->cr_iblinkerrrecovcnt);
 		if (linkrecov != dd->ipath_lastlinkrecov) {
 			ipath_dbg("IB linkrecov up %Lx (%s %s) recov %Lu\n",
-				ibcs, ib_linkstate(dd, ibcs),
+				(unsigned long long) ibcs,
+				ib_linkstate(dd, ibcs),
 				ipath_ibcstatus_str[ltstate],
-				linkrecov);
+				(unsigned long long) linkrecov);
 			/* and no more until active again */
 			dd->ipath_lastlinkrecov = 0;
 			ipath_set_linkstate(dd, IPATH_IB_LINKDOWN);
@@ -1118,9 +1119,11 @@ irqreturn_t ipath_intr(int irq, void *data)
 	if (unlikely(istat & ~dd->ipath_i_bitsextant))
 		ipath_dev_err(dd,
 			      "interrupt with unknown interrupts %Lx set\n",
+			      (unsigned long long)
 			      istat & ~dd->ipath_i_bitsextant);
 	else if (istat & ~INFINIPATH_I_ERROR) /* errors do own printing */
-		ipath_cdbg(VERBOSE, "intr stat=0x%Lx\n", istat);
+		ipath_cdbg(VERBOSE, "intr stat=0x%Lx\n",
+			(unsigned long long) istat);
 
 	if (istat & INFINIPATH_I_ERROR) {
 		ipath_stats.sps_errints++;
@@ -1128,7 +1131,8 @@ irqreturn_t ipath_intr(int irq, void *data)
 					  dd->ipath_kregs->kr_errorstatus);
 		if (!estat)
 			dev_info(&dd->pcidev->dev, "error interrupt (%Lx), "
-				 "but no error bits set!\n", istat);
+				 "but no error bits set!\n",
+				 (unsigned long long) istat);
 		else if (estat == -1LL)
 			/*
 			 * should we try clearing all, or hope next read
diff --git a/drivers/infiniband/hw/ipath/ipath_verbs.c b/drivers/infiniband/hw/ipath/ipath_verbs.c
index 55c7188..b766e40 100644
--- a/drivers/infiniband/hw/ipath/ipath_verbs.c
+++ b/drivers/infiniband/hw/ipath/ipath_verbs.c
@@ -1021,7 +1021,7 @@ static void sdma_complete(void *cookie, int status)
 	struct ipath_verbs_txreq *tx = cookie;
 	struct ipath_qp *qp = tx->qp;
 	struct ipath_ibdev *dev = to_idev(qp->ibqp.device);
-	unsigned int flags;
+	unsigned long flags;
 	enum ib_wc_status ibs = status == IPATH_SDMA_TXREQ_S_OK ?
 		IB_WC_SUCCESS : IB_WC_WR_FLUSH_ERR;
 
@@ -1051,7 +1051,7 @@ static void sdma_complete(void *cookie, int status)
 
 static void decrement_dma_busy(struct ipath_qp *qp)
 {
-	unsigned int flags;
+	unsigned long flags;
 
 	if (atomic_dec_and_test(&qp->s_dma_busy)) {
 		spin_lock_irqsave(&qp->s_lock, flags);
@@ -1221,7 +1221,7 @@ static int ipath_verbs_send_pio(struct ipath_qp *qp,
 	unsigned flush_wc;
 	u32 control;
 	int ret;
-	unsigned int flags;
+	unsigned long flags;
 
 	piobuf = ipath_getpiobuf(dd, plen, NULL);
 	if (unlikely(piobuf == NULL)) {
diff --git a/drivers/infiniband/hw/mlx4/cq.c b/drivers/infiniband/hw/mlx4/cq.c
index a146457..d0866a3 100644
--- a/drivers/infiniband/hw/mlx4/cq.c
+++ b/drivers/infiniband/hw/mlx4/cq.c
@@ -515,17 +515,17 @@ static void mlx4_ib_handle_error_cqe(struct mlx4_err_cqe *cqe,
 	wc->vendor_err = cqe->vendor_err_syndrome;
 }
 
-static int mlx4_ib_ipoib_csum_ok(__be32 status, __be16 checksum)
+static int mlx4_ib_ipoib_csum_ok(__be16 status, __be16 checksum)
 {
-	return ((status & cpu_to_be32(MLX4_CQE_IPOIB_STATUS_IPV4	|
-				      MLX4_CQE_IPOIB_STATUS_IPV4F	|
-				      MLX4_CQE_IPOIB_STATUS_IPV4OPT	|
-				      MLX4_CQE_IPOIB_STATUS_IPV6	|
-				      MLX4_CQE_IPOIB_STATUS_IPOK)) ==
-		cpu_to_be32(MLX4_CQE_IPOIB_STATUS_IPV4	|
-			    MLX4_CQE_IPOIB_STATUS_IPOK))		&&
-		(status & cpu_to_be32(MLX4_CQE_IPOIB_STATUS_UDP	|
-				      MLX4_CQE_IPOIB_STATUS_TCP))	&&
+	return ((status & cpu_to_be16(MLX4_CQE_STATUS_IPV4      |
+				      MLX4_CQE_STATUS_IPV4F     |
+				      MLX4_CQE_STATUS_IPV4OPT   |
+				      MLX4_CQE_STATUS_IPV6      |
+				      MLX4_CQE_STATUS_IPOK)) ==
+		cpu_to_be16(MLX4_CQE_STATUS_IPV4        |
+			    MLX4_CQE_STATUS_IPOK))              &&
+		(status & cpu_to_be16(MLX4_CQE_STATUS_UDP       |
+				      MLX4_CQE_STATUS_TCP))     &&
 		checksum == cpu_to_be16(0xffff);
 }
 
@@ -582,17 +582,17 @@ repoll:
 	}
 
 	if (!*cur_qp ||
-	    (be32_to_cpu(cqe->my_qpn) & 0xffffff) != (*cur_qp)->mqp.qpn) {
+	    (be32_to_cpu(cqe->vlan_my_qpn) & MLX4_CQE_QPN_MASK) != (*cur_qp)->mqp.qpn) {
 		/*
 		 * We do not have to take the QP table lock here,
 		 * because CQs will be locked while QPs are removed
 		 * from the table.
 		 */
 		mqp = __mlx4_qp_lookup(to_mdev(cq->ibcq.device)->dev,
-				       be32_to_cpu(cqe->my_qpn));
+				       be32_to_cpu(cqe->vlan_my_qpn));
 		if (unlikely(!mqp)) {
 			printk(KERN_WARNING "CQ %06x with entry for unknown QPN %06x\n",
-			       cq->mcq.cqn, be32_to_cpu(cqe->my_qpn) & 0xffffff);
+			       cq->mcq.cqn, be32_to_cpu(cqe->vlan_my_qpn) & MLX4_CQE_QPN_MASK);
 			return -EINVAL;
 		}
 
@@ -692,14 +692,13 @@ repoll:
 		}
 
 		wc->slid	   = be16_to_cpu(cqe->rlid);
-		wc->sl		   = cqe->sl >> 4;
+		wc->sl		   = be16_to_cpu(cqe->sl_vid >> 12);
 		g_mlpath_rqpn	   = be32_to_cpu(cqe->g_mlpath_rqpn);
 		wc->src_qp	   = g_mlpath_rqpn & 0xffffff;
 		wc->dlid_path_bits = (g_mlpath_rqpn >> 24) & 0x7f;
 		wc->wc_flags	  |= g_mlpath_rqpn & 0x80000000 ? IB_WC_GRH : 0;
 		wc->pkey_index     = be32_to_cpu(cqe->immed_rss_invalid) & 0x7f;
-		wc->csum_ok	   = mlx4_ib_ipoib_csum_ok(cqe->ipoib_status,
-							   cqe->checksum);
+		wc->csum_ok	   = mlx4_ib_ipoib_csum_ok(cqe->status, cqe->checksum);
 	}
 
 	return 0;
@@ -767,7 +766,7 @@ void __mlx4_ib_cq_clean(struct mlx4_ib_cq *cq, u32 qpn, struct mlx4_ib_srq *srq)
 	 */
 	while ((int) --prod_index - (int) cq->mcq.cons_index >= 0) {
 		cqe = get_cqe(cq, prod_index & cq->ibcq.cqe);
-		if ((be32_to_cpu(cqe->my_qpn) & 0xffffff) == qpn) {
+		if ((be32_to_cpu(cqe->vlan_my_qpn) & MLX4_CQE_QPN_MASK) == qpn) {
 			if (srq && !(cqe->owner_sr_opcode & MLX4_CQE_IS_SEND_MASK))
 				mlx4_ib_free_srq_wqe(srq, be16_to_cpu(cqe->wqe_index));
 			++nfreed;
diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
index f7bc7dd..f29dbb7 100644
--- a/drivers/infiniband/hw/mlx4/qp.c
+++ b/drivers/infiniband/hw/mlx4/qp.c
@@ -902,7 +902,7 @@ static int __mlx4_ib_modify_qp(struct ib_qp *ibqp,
 			context->mtu_msgmax = (IB_MTU_4096 << 5) |
 					      ilog2(dev->dev->caps.max_gso_sz);
 		else
-			context->mtu_msgmax = (IB_MTU_4096 << 5) | 11;
+			context->mtu_msgmax = (IB_MTU_4096 << 5) | 12;
 	} else if (attr_mask & IB_QP_PATH_MTU) {
 		if (attr->path_mtu < IB_MTU_256 || attr->path_mtu > IB_MTU_4096) {
 			printk(KERN_ERR "path MTU (%u) is invalid\n",
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
index 0f2d304..7ebc400 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
@@ -337,7 +337,7 @@ static void ipoib_cm_init_rx_wr(struct net_device *dev,
 		sge[i].length = PAGE_SIZE;
 
 	wr->next    = NULL;
-	wr->sg_list = priv->cm.rx_sge;
+	wr->sg_list = sge;
 	wr->num_sge = priv->cm.num_frags;
 }
 
diff --git a/include/linux/mlx4/cq.h b/include/linux/mlx4/cq.h
index 071cf96..6f65b2c 100644
--- a/include/linux/mlx4/cq.h
+++ b/include/linux/mlx4/cq.h
@@ -39,17 +39,18 @@
 #include <linux/mlx4/doorbell.h>
 
 struct mlx4_cqe {
-	__be32			my_qpn;
+	__be32			vlan_my_qpn;
 	__be32			immed_rss_invalid;
 	__be32			g_mlpath_rqpn;
-	u8			sl;
-	u8			reserved1;
+	__be16			sl_vid;
 	__be16			rlid;
-	__be32			ipoib_status;
+	__be16			status;
+	u8			ipv6_ext_mask;
+	u8			badfcs_enc;
 	__be32			byte_cnt;
 	__be16			wqe_index;
 	__be16			checksum;
-	u8			reserved2[3];
+	u8			reserved[3];
 	u8			owner_sr_opcode;
 };
 
@@ -64,6 +65,11 @@ struct mlx4_err_cqe {
 };
 
 enum {
+	MLX4_CQE_VLAN_PRESENT_MASK	= 1 << 29,
+	MLX4_CQE_QPN_MASK		= 0xffffff,
+};
+
+enum {
 	MLX4_CQE_OWNER_MASK	= 0x80,
 	MLX4_CQE_IS_SEND_MASK	= 0x40,
 	MLX4_CQE_OPCODE_MASK	= 0x1f
@@ -86,13 +92,19 @@ enum {
 };
 
 enum {
-	MLX4_CQE_IPOIB_STATUS_IPV4			= 1 << 22,
-	MLX4_CQE_IPOIB_STATUS_IPV4F			= 1 << 23,
-	MLX4_CQE_IPOIB_STATUS_IPV6			= 1 << 24,
-	MLX4_CQE_IPOIB_STATUS_IPV4OPT			= 1 << 25,
-	MLX4_CQE_IPOIB_STATUS_TCP			= 1 << 26,
-	MLX4_CQE_IPOIB_STATUS_UDP			= 1 << 27,
-	MLX4_CQE_IPOIB_STATUS_IPOK			= 1 << 28,
+	MLX4_CQE_STATUS_IPV4		= 1 << 6,
+	MLX4_CQE_STATUS_IPV4F		= 1 << 7,
+	MLX4_CQE_STATUS_IPV6		= 1 << 8,
+	MLX4_CQE_STATUS_IPV4OPT		= 1 << 9,
+	MLX4_CQE_STATUS_TCP		= 1 << 10,
+	MLX4_CQE_STATUS_UDP		= 1 << 11,
+	MLX4_CQE_STATUS_IPOK		= 1 << 12,
+};
+
+enum {
+	MLX4_CQE_LLC                     = 1,
+	MLX4_CQE_SNAP                    = 1 << 1,
+	MLX4_CQE_BAD_FCS                 = 1 << 4,
 };
 
 static inline void mlx4_cq_arm(struct mlx4_cq *cq, u32 cmd,
diff --git a/include/rdma/rdma_cm.h b/include/rdma/rdma_cm.h
index df7faf0..c6b2962 100644
--- a/include/rdma/rdma_cm.h
+++ b/include/rdma/rdma_cm.h
@@ -71,12 +71,8 @@ enum rdma_port_space {
 };
 
 struct rdma_addr {
-	struct sockaddr src_addr;
-	u8		src_pad[sizeof(struct sockaddr_in6) -
-				sizeof(struct sockaddr)];
-	struct sockaddr dst_addr;
-	u8		dst_pad[sizeof(struct sockaddr_in6) -
-				sizeof(struct sockaddr)];
+	struct sockaddr_storage src_addr;
+	struct sockaddr_storage dst_addr;
 	struct rdma_dev_addr dev_addr;
 };
 

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-07-26 21:02 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-07-26 21:02 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get the some last RDMA/InfiniBand changes for 2.6.27.  The
only major thing is changes to the iw_nes connection setup handling,
which fix problems with lots of connections:

Faisal Latif (1):
      RDMA/nes: CM connection setup/teardown rework

Jack Morgenstein (1):
      mlx4: Update/add Mellanox Technologies copyright lines to mlx4 driver files

Roland Dreier (5):
      RDMA/ucma: BKL is not needed for ucma_open()
      RDMA/ucm: BKL is not needed for ib_ucm_open()
      IPoIB/cm: Connected mode is no longer EXPERIMENTAL
      IPoIB: Correct help text for INFINIBAND_IPOIB_DEBUG
      Merge branches 'bkl-removal', 'ipoib', 'mlx4' and 'nes' into for-linus

Yevgeny Petrilin (1):
      mlx4_core: Add VLAN tag field to WQE control segment struct

 drivers/infiniband/core/ucm.c         |   10 +-
 drivers/infiniband/core/ucma.c        |   11 +-
 drivers/infiniband/hw/mlx4/cq.c       |    1 +
 drivers/infiniband/hw/mlx4/main.c     |    1 +
 drivers/infiniband/hw/mlx4/mlx4_ib.h  |    1 +
 drivers/infiniband/hw/mlx4/mr.c       |    1 +
 drivers/infiniband/hw/mlx4/qp.c       |    1 +
 drivers/infiniband/hw/mlx4/srq.c      |    1 +
 drivers/infiniband/hw/mlx4/user.h     |    1 +
 drivers/infiniband/hw/nes/nes.c       |    4 +-
 drivers/infiniband/hw/nes/nes_cm.c    | 2034 ++++++++++++++++++---------------
 drivers/infiniband/hw/nes/nes_cm.h    |   23 +-
 drivers/infiniband/hw/nes/nes_hw.c    |    9 -
 drivers/infiniband/hw/nes/nes_verbs.c |   15 -
 drivers/infiniband/ulp/ipoib/Kconfig  |   22 +-
 drivers/net/mlx4/alloc.c              |    1 +
 drivers/net/mlx4/catas.c              |    1 +
 drivers/net/mlx4/cmd.c                |    2 +-
 drivers/net/mlx4/cq.c                 |    2 +-
 drivers/net/mlx4/eq.c                 |    2 +-
 drivers/net/mlx4/fw.c                 |    2 +-
 drivers/net/mlx4/fw.h                 |    2 +-
 drivers/net/mlx4/icm.c                |    2 +-
 drivers/net/mlx4/icm.h                |    2 +-
 drivers/net/mlx4/intf.c               |    1 +
 drivers/net/mlx4/main.c               |    2 +-
 drivers/net/mlx4/mcg.c                |    1 +
 drivers/net/mlx4/mlx4.h               |    2 +-
 drivers/net/mlx4/mr.c                 |    2 +-
 drivers/net/mlx4/qp.c                 |    2 +-
 drivers/net/mlx4/reset.c              |    1 +
 drivers/net/mlx4/srq.c                |    1 +
 include/linux/mlx4/qp.h               |    4 +-
 33 files changed, 1211 insertions(+), 956 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-07-24 15:41 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-07-24 15:41 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get the some more RDMA/InfiniBand changes for 2.6.27, all of
which have been in linux-next:

Amir Vadai (1):
      RDMA/cma: Add RDMA_CM_EVENT_TIMEWAIT_EXIT event

Dotan Barak (1):
      RDMA/iwcm: Remove IB_ACCESS_LOCAL_WRITE from remote QP attributes

Jack Morgenstein (2):
      mlx4_core: Add module parameter to enable QoS support
      mlx4_code: Add missing FW status return code

Joachim Fenkes (2):
      IB/ehca: Filter PATH_MIG events if QP was never armed
      IB/ehca: Use default value for Local CA ACK Delay if FW returns 0

Julia Lawall (1):
      IB/ehca: Release mutex in error path of alloc_small_queue_page()

Or Gerlitz (3):
      RDMA/cma: Add RDMA_CM_EVENT_ADDR_CHANGE event
      IB/iser: Add support for RDMA_CM_EVENT_ADDR_CHANGE event
      IPoIB: Include err code in trace message for ib_sa_path_rec_get() failures

Ralph Campbell (1):
      IB/sa_query: Check if sm_ah is NULL in ib_sa_remove_one()

Roland Dreier (7):
      IB/mlx4: Rename struct mlx4_lso_seg to mlx4_wqe_lso_seg
      mlx4_core: Keep free count for MTT buddy allocator
      IB/mthca: Keep free count for MTT buddy allocator
      IB/mlx4: Add support for memory management extensions and local DMA L_Key
      mlx4_core: Improve error message when not enough UAR pages are available
      MAINTAINERS: Remove Glenn Streiff from NetEffect entry
      Merge branches 'bkl-removal', 'cma', 'ehca', 'for-2.6.27', 'mlx4', 'mthca' and 'nes' into for-linus

 MAINTAINERS                               |    2 -
 drivers/infiniband/core/cma.c             |   99 ++++++++++++++++++++++++++++-
 drivers/infiniband/core/iwcm.c            |    3 +-
 drivers/infiniband/core/sa_query.c        |    3 +-
 drivers/infiniband/hw/ehca/ehca_classes.h |    1 +
 drivers/infiniband/hw/ehca/ehca_hca.c     |    4 +-
 drivers/infiniband/hw/ehca/ehca_irq.c     |    4 +
 drivers/infiniband/hw/ehca/ehca_qp.c      |    2 +
 drivers/infiniband/hw/ehca/ipz_pt_fn.c    |    1 +
 drivers/infiniband/hw/mlx4/cq.c           |   12 ++++
 drivers/infiniband/hw/mlx4/main.c         |   11 +++
 drivers/infiniband/hw/mlx4/mlx4_ib.h      |   15 +++++
 drivers/infiniband/hw/mlx4/mr.c           |   70 ++++++++++++++++++++
 drivers/infiniband/hw/mlx4/qp.c           |   74 ++++++++++++++++++++--
 drivers/infiniband/hw/mthca/mthca_dev.h   |    1 +
 drivers/infiniband/hw/mthca/mthca_mr.c    |   26 +++++---
 drivers/infiniband/ulp/ipoib/ipoib_main.c |    2 +-
 drivers/infiniband/ulp/iser/iser_verbs.c  |    1 +
 drivers/net/mlx4/cmd.c                    |    3 +
 drivers/net/mlx4/fw.c                     |   18 +++--
 drivers/net/mlx4/fw.h                     |    2 +-
 drivers/net/mlx4/main.c                   |    2 +
 drivers/net/mlx4/mlx4.h                   |    1 +
 drivers/net/mlx4/mr.c                     |   49 +++++++++++----
 drivers/net/mlx4/pd.c                     |    7 ++
 include/linux/mlx4/device.h               |   10 +++
 include/linux/mlx4/qp.h                   |   18 ++++--
 include/rdma/rdma_cm.h                    |    4 +-
 28 files changed, 396 insertions(+), 49 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-07-15  6:51 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-07-15  6:51 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get the first big batch of RDMA/InfiniBand changes for
2.6.27, all of which have been in linux-next:

Christophe Jaillet (1):
      RDMA/nes: Remove unnecessary memset()

Dotan Barak (1):
      RDMA: Improve include file coding style

Eli Cohen (12):
      IB/mlx4: Optimize QP stamping
      IPoIB: Copy small received SKBs in connected mode
      IB/mlx4: Configure QPs' max message size based on real device capability
      IB/mlx4: Pass congestion management class MADs to the HCA
      IPoIB: Remove unused IPOIB_MCAST_STARTED code
      IPoIB: Remove priv->mcast_mutex
      IPoIB: Only set Q_Key once: after joining broadcast group
      IPoIB: Use rtnl lock/unlock when changing device flags
      IPoIB: Use dev_set_mtu() to change mtu
      IPoIB/cm: Reduce connected mode TX object size
      IPoIB: Double default RX/TX ring sizes
      IB/mlx4: Use kzalloc() for new QPs so flags are initialized to 0

Joachim Fenkes (2):
      IB/ehca: Reject receive work requests if QP is in RESET state
      IB/ehca: Make device table externally visible

Jon Mason (1):
      RDMA/cxgb3: Propagate HW page size capabilities

Moni Shoua (2):
      IB/sa: Fail requests made while creating new SM AH
      IPoIB: Refresh paths instead of flushing them on SM change events

Or Gerlitz (2):
      RDMA/addr: Keep pointer to netdevice in struct rdma_dev_addr
      RDMA/cma: Simplify locking needed for serialization of callbacks

Ralph Campbell (2):
      IB/core: Reset to error QP state transition is not allowed
      IB/ipath: Use IEEE OUI for vendor_id reported by ibv_query_device()

Robert P. J. Day (1):
      IB/ipath: Simplify code using ARRAY_SIZE() macro

Roland Dreier (13):
      IB/srp: Remove use of cached P_Key/GID queries
      RDMA: Remove subversion $Id tags
      IB/mthca: Remove extra code for RESET->ERR QP state transition
      IB/mlx4: Remove extra code for RESET->ERR QP state transition
      RDMA/cxgb3: Remove write-only iwch_rnic_attributes fields
      RDMA/cma: Add missing newlines to printk()s
      IPoIB/cm: Fix racy use of receive WR/SGL in ipoib_cm_post_receive_nonsrq()
      RDMA/nes: Encapsulate logic nes_put_cqp_request()
      RDMA/nes: Get rid of ring_doorbell parameter of nes_post_cqp_request()
      IPoIB: Get rid of ipoib_mcast_detach() wrapper
      IB/mthca: Remove "stop" flag for catastrophic error polling timer
      IB/mthca: Use round_jiffies() for catastrophic error polling timer
      IB/mthca: Fix check of max_send_sge for special QPs

Ron Livne (3):
      IB/core: Add support for multicast loopback blocking
      IB/mlx4: Add support for blocking multicast loopback packets
      IPoIB: Use multicast loopback blocking if available

Sean Hefty (1):
      RDMA: Fix license text

Stefan Roscher (1):
      IB/ehca: In case of lost interrupts, trigger EOI to reenable interrupts

Steve Wise (8):
      RDMA/core: Add memory management extensions support
      RDMA/cxgb3: MEM_MGT_EXTENSIONS support
      RDMA/cxgb3: Fix up some ib_device_attr fields
      RDMA/core: Add iWARP protocol statistics attributes in sysfs
      RDMA/cxgb3: Add support for protocol statistics
      RDMA/cxgb3: Set rkey field for new memory windows in iwch_alloc_mw()
      RDMA/core: Add local DMA L_Key support
      RDMA/cxgb3: Fixes for zero STag

Vladimir Sokolovsky (2):
      IPoIB: add LRO support
      mlx4_core: Use MOD_STAT_CFG command to get minimal page size

 drivers/infiniband/core/addr.c                 |   42 +++--
 drivers/infiniband/core/agent.h                |    2 -
 drivers/infiniband/core/cache.c                |    2 -
 drivers/infiniband/core/cm.c                   |    2 -
 drivers/infiniband/core/cma.c                  |  162 ++++++++--------
 drivers/infiniband/core/core_priv.h            |    2 -
 drivers/infiniband/core/device.c               |    2 -
 drivers/infiniband/core/fmr_pool.c             |    2 -
 drivers/infiniband/core/mad_priv.h             |    2 -
 drivers/infiniband/core/mad_rmpp.c             |    2 -
 drivers/infiniband/core/mad_rmpp.h             |    2 -
 drivers/infiniband/core/packer.c               |    2 -
 drivers/infiniband/core/sa_query.c             |   24 ++-
 drivers/infiniband/core/sysfs.c                |  122 +++++++++++-
 drivers/infiniband/core/ucm.c                  |    2 -
 drivers/infiniband/core/ud_header.c            |    2 -
 drivers/infiniband/core/umem.c                 |    2 -
 drivers/infiniband/core/user_mad.c             |    2 -
 drivers/infiniband/core/uverbs.h               |    2 -
 drivers/infiniband/core/uverbs_cmd.c           |    4 +-
 drivers/infiniband/core/uverbs_main.c          |    2 -
 drivers/infiniband/core/verbs.c                |   49 ++++-
 drivers/infiniband/hw/amso1100/c2_rnic.c       |    2 +-
 drivers/infiniband/hw/cxgb3/cxio_hal.c         |   27 ++-
 drivers/infiniband/hw/cxgb3/cxio_hal.h         |    5 +-
 drivers/infiniband/hw/cxgb3/cxio_wr.h          |  103 ++++++++--
 drivers/infiniband/hw/cxgb3/iwch.c             |    8 +-
 drivers/infiniband/hw/cxgb3/iwch.h             |    2 -
 drivers/infiniband/hw/cxgb3/iwch_cq.c          |   15 +-
 drivers/infiniband/hw/cxgb3/iwch_provider.c    |  199 +++++++++++++++++-
 drivers/infiniband/hw/cxgb3/iwch_provider.h    |    8 -
 drivers/infiniband/hw/cxgb3/iwch_qp.c          |  261 ++++++++++++++++++------
 drivers/infiniband/hw/ehca/ehca_irq.c          |    9 +-
 drivers/infiniband/hw/ehca/ehca_main.c         |    1 +
 drivers/infiniband/hw/ehca/ehca_reqs.c         |   14 +-
 drivers/infiniband/hw/ehca/hcp_if.c            |   10 +
 drivers/infiniband/hw/ehca/hcp_if.h            |    1 +
 drivers/infiniband/hw/ipath/ipath_cq.c         |    2 +-
 drivers/infiniband/hw/ipath/ipath_iba7220.c    |    4 +-
 drivers/infiniband/hw/ipath/ipath_mad.c        |    6 +-
 drivers/infiniband/hw/ipath/ipath_rc.c         |    4 +-
 drivers/infiniband/hw/ipath/ipath_ruc.c        |    4 +-
 drivers/infiniband/hw/ipath/ipath_uc.c         |    8 +-
 drivers/infiniband/hw/ipath/ipath_ud.c         |    8 +-
 drivers/infiniband/hw/ipath/ipath_verbs.c      |    3 +-
 drivers/infiniband/hw/mlx4/cq.c                |   12 +-
 drivers/infiniband/hw/mlx4/mad.c               |    3 +-
 drivers/infiniband/hw/mlx4/main.c              |    7 +-
 drivers/infiniband/hw/mlx4/mlx4_ib.h           |    3 +-
 drivers/infiniband/hw/mlx4/qp.c                |   73 +++----
 drivers/infiniband/hw/mthca/mthca_allocator.c  |    2 -
 drivers/infiniband/hw/mthca/mthca_av.c         |    2 -
 drivers/infiniband/hw/mthca/mthca_catas.c      |   17 +--
 drivers/infiniband/hw/mthca/mthca_cmd.c        |    2 -
 drivers/infiniband/hw/mthca/mthca_cmd.h        |    2 -
 drivers/infiniband/hw/mthca/mthca_config_reg.h |    2 -
 drivers/infiniband/hw/mthca/mthca_cq.c         |    6 +-
 drivers/infiniband/hw/mthca/mthca_dev.h        |    3 -
 drivers/infiniband/hw/mthca/mthca_doorbell.h   |    2 -
 drivers/infiniband/hw/mthca/mthca_eq.c         |    2 -
 drivers/infiniband/hw/mthca/mthca_mad.c        |    2 -
 drivers/infiniband/hw/mthca/mthca_main.c       |    2 -
 drivers/infiniband/hw/mthca/mthca_mcg.c        |    2 -
 drivers/infiniband/hw/mthca/mthca_memfree.c    |    2 -
 drivers/infiniband/hw/mthca/mthca_memfree.h    |    2 -
 drivers/infiniband/hw/mthca/mthca_mr.c         |    2 -
 drivers/infiniband/hw/mthca/mthca_pd.c         |    2 -
 drivers/infiniband/hw/mthca/mthca_profile.c    |    2 -
 drivers/infiniband/hw/mthca/mthca_profile.h    |    2 -
 drivers/infiniband/hw/mthca/mthca_provider.c   |    2 -
 drivers/infiniband/hw/mthca/mthca_provider.h   |    2 -
 drivers/infiniband/hw/mthca/mthca_qp.c         |   32 +---
 drivers/infiniband/hw/mthca/mthca_reset.c      |    2 -
 drivers/infiniband/hw/mthca/mthca_srq.c        |    2 -
 drivers/infiniband/hw/mthca/mthca_uar.c        |    2 -
 drivers/infiniband/hw/mthca/mthca_user.h       |    1 -
 drivers/infiniband/hw/mthca/mthca_wqe.h        |    2 -
 drivers/infiniband/hw/nes/nes.c                |    2 +-
 drivers/infiniband/hw/nes/nes.h                |    9 +-
 drivers/infiniband/hw/nes/nes_cm.c             |    1 -
 drivers/infiniband/hw/nes/nes_hw.c             |   68 +-----
 drivers/infiniband/hw/nes/nes_hw.h             |    2 +-
 drivers/infiniband/hw/nes/nes_utils.c          |   33 +++-
 drivers/infiniband/hw/nes/nes_verbs.c          |  207 ++++---------------
 drivers/infiniband/ulp/ipoib/Kconfig           |    1 +
 drivers/infiniband/ulp/ipoib/ipoib.h           |   48 ++++--
 drivers/infiniband/ulp/ipoib/ipoib_cm.c        |  104 +++++++---
 drivers/infiniband/ulp/ipoib/ipoib_ethtool.c   |   46 ++++
 drivers/infiniband/ulp/ipoib/ipoib_fs.c        |    2 -
 drivers/infiniband/ulp/ipoib/ipoib_ib.c        |   52 +++--
 drivers/infiniband/ulp/ipoib/ipoib_main.c      |  115 ++++++++++-
 drivers/infiniband/ulp/ipoib/ipoib_multicast.c |   27 +--
 drivers/infiniband/ulp/ipoib/ipoib_verbs.c     |   69 +++----
 drivers/infiniband/ulp/ipoib/ipoib_vlan.c      |    2 -
 drivers/infiniband/ulp/iser/iscsi_iser.c       |    3 -
 drivers/infiniband/ulp/iser/iscsi_iser.h       |    2 -
 drivers/infiniband/ulp/iser/iser_initiator.c   |    2 -
 drivers/infiniband/ulp/iser/iser_memory.c      |    2 -
 drivers/infiniband/ulp/iser/iser_verbs.c       |    2 -
 drivers/infiniband/ulp/srp/ib_srp.c            |   15 +-
 drivers/infiniband/ulp/srp/ib_srp.h            |    2 -
 drivers/net/cxgb3/cxgb3_ctl_defs.h             |    1 +
 drivers/net/cxgb3/cxgb3_offload.c              |    7 +
 drivers/net/cxgb3/version.h                    |    2 +-
 drivers/net/mlx4/fw.c                          |   28 +++
 drivers/net/mlx4/fw.h                          |    6 +
 drivers/net/mlx4/main.c                        |    7 +
 drivers/net/mlx4/mcg.c                         |   17 ++-
 include/linux/mlx4/device.h                    |    3 +-
 include/rdma/ib_addr.h                         |   43 +++--
 include/rdma/ib_cache.h                        |    2 -
 include/rdma/ib_cm.h                           |    2 -
 include/rdma/ib_fmr_pool.h                     |    4 +-
 include/rdma/ib_mad.h                          |   17 +-
 include/rdma/ib_pack.h                         |    2 -
 include/rdma/ib_sa.h                           |    2 -
 include/rdma/ib_smi.h                          |    4 +-
 include/rdma/ib_user_cm.h                      |    2 -
 include/rdma/ib_user_mad.h                     |    2 -
 include/rdma/ib_user_verbs.h                   |    7 +-
 include/rdma/ib_verbs.h                        |  149 +++++++++++++-
 include/rdma/iw_cm.h                           |    2 +-
 include/rdma/rdma_cm.h                         |   52 +++---
 include/rdma/rdma_cm_ib.h                      |   50 +++--
 124 files changed, 1632 insertions(+), 935 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-07-08 21:41 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-07-08 21:41 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel, steve

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a fix for one regression introduced earlier in the
2.6.26 cycle:

Steve Wise (1):
      RDMA/cxgb3: Fix regression caused by class_device -> device conversion

 drivers/infiniband/hw/cxgb3/iwch_provider.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)


diff --git a/drivers/infiniband/hw/cxgb3/iwch_provider.c b/drivers/infiniband/hw/cxgb3/iwch_provider.c
index 8934178..95f82cf 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_provider.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_provider.c
@@ -1096,7 +1096,9 @@ static ssize_t show_fw_ver(struct device *dev, struct device_attribute *attr, ch
 	struct net_device *lldev = iwch_dev->rdev.t3cdev_p->lldev;
 
 	PDBG("%s dev 0x%p\n", __func__, dev);
+	rtnl_lock();
 	lldev->ethtool_ops->get_drvinfo(lldev, &info);
+	rtnl_unlock();
 	return sprintf(buf, "%s\n", info.fw_version);
 }
 
@@ -1109,7 +1111,9 @@ static ssize_t show_hca(struct device *dev, struct device_attribute *attr,
 	struct net_device *lldev = iwch_dev->rdev.t3cdev_p->lldev;
 
 	PDBG("%s dev 0x%p\n", __func__, dev);
+	rtnl_lock();
 	lldev->ethtool_ops->get_drvinfo(lldev, &info);
+	rtnl_unlock();
 	return sprintf(buf, "%s\n", info.driver);
 }
 

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-06-23 19:23 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-06-23 19:23 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a fix for one rare bug seen by SGI on large clusters:

Eli Cohen (1):
      IB/mthca: Clear ICM pages before handing to FW

 drivers/infiniband/hw/mthca/mthca_memfree.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/drivers/infiniband/hw/mthca/mthca_memfree.c b/drivers/infiniband/hw/mthca/mthca_memfree.c
index b224079..d5862e5 100644
--- a/drivers/infiniband/hw/mthca/mthca_memfree.c
+++ b/drivers/infiniband/hw/mthca/mthca_memfree.c
@@ -109,7 +109,11 @@ static int mthca_alloc_icm_pages(struct scatterlist *mem, int order, gfp_t gfp_m
 {
 	struct page *page;
 
-	page = alloc_pages(gfp_mask, order);
+	/*
+	 * Use __GFP_ZERO because buggy firmware assumes ICM pages are
+	 * cleared, and subtle failures are seen if they aren't.
+	 */
+	page = alloc_pages(gfp_mask | __GFP_ZERO, order);
 	if (!page)
 		return -ENOMEM;
 

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-06-18 22:38 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-06-18 22:38 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a couple of small fixes:

Jack Morgenstein (1):
      IB/uverbs: Fix check of is_closed flag check in ib_uverbs_async_handler()

Roland Dreier (1):
      RDMA/nes: Fix off-by-one in nes_reg_user_mr() error path

 drivers/infiniband/core/uverbs_main.c |    2 +-
 drivers/infiniband/hw/nes/nes_verbs.c |    4 +---
 2 files changed, 2 insertions(+), 4 deletions(-)


diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c
index f806da1..caed42b 100644
--- a/drivers/infiniband/core/uverbs_main.c
+++ b/drivers/infiniband/core/uverbs_main.c
@@ -423,7 +423,7 @@ static void ib_uverbs_async_handler(struct ib_uverbs_file *file,
 	unsigned long flags;
 
 	spin_lock_irqsave(&file->async_file->lock, flags);
-	if (!file->async_file->is_closed) {
+	if (file->async_file->is_closed) {
 		spin_unlock_irqrestore(&file->async_file->lock, flags);
 		return;
 	}
diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c
index 99b3c4a..d617da9 100644
--- a/drivers/infiniband/hw/nes/nes_verbs.c
+++ b/drivers/infiniband/hw/nes/nes_verbs.c
@@ -2456,10 +2456,8 @@ static struct ib_mr *nes_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
 						if ((page_count!=0)&&(page_count<<12)-(region->offset&(4096-1))>=region->length)
 							goto enough_pages;
 						if ((page_count&0x01FF) == 0) {
-							if (page_count>(1024*512)) {
+							if (page_count >= 1024 * 512) {
 								ib_umem_release(region);
-								pci_free_consistent(nesdev->pcidev, 4096, vpbl.pbl_vbase,
-										vpbl.pbl_pbase);
 								nes_free_resource(nesadapter,
 										nesadapter->allocated_mrs, stag_index);
 								kfree(nesmr);

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-06-09 20:10 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-06-09 20:10 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a fix for a crash/lockup triggerable by buggy userspace
(that I already sent you as a patch via email), and remove one API
that only appeared in 2.6.26-rc kernels and that we decided should be
exposed in a different way (already queued for 2.6.27 in linux-next).

Roland Dreier (2):
      IB/umem: Avoid sign problems when demoting npages to integer
      IB/core: Remove IB_DEVICE_SEND_W_INV capability flag

 drivers/infiniband/core/umem.c           |    2 +-
 drivers/infiniband/hw/amso1100/c2_rnic.c |    3 +--
 include/rdma/ib_verbs.h                  |    1 -
 3 files changed, 2 insertions(+), 4 deletions(-)


diff --git a/drivers/infiniband/core/umem.c b/drivers/infiniband/core/umem.c
index fe78f7d..a1768db 100644
--- a/drivers/infiniband/core/umem.c
+++ b/drivers/infiniband/core/umem.c
@@ -150,7 +150,7 @@ struct ib_umem *ib_umem_get(struct ib_ucontext *context, unsigned long addr,
 	ret = 0;
 	while (npages) {
 		ret = get_user_pages(current, current->mm, cur_base,
-				     min_t(int, npages,
+				     min_t(unsigned long, npages,
 					   PAGE_SIZE / sizeof (struct page *)),
 				     1, !umem->writable, page_list, vma_list);
 
diff --git a/drivers/infiniband/hw/amso1100/c2_rnic.c b/drivers/infiniband/hw/amso1100/c2_rnic.c
index 9a054c6..b1441ae 100644
--- a/drivers/infiniband/hw/amso1100/c2_rnic.c
+++ b/drivers/infiniband/hw/amso1100/c2_rnic.c
@@ -455,8 +455,7 @@ int __devinit c2_rnic_init(struct c2_dev *c2dev)
 	     IB_DEVICE_CURR_QP_STATE_MOD |
 	     IB_DEVICE_SYS_IMAGE_GUID |
 	     IB_DEVICE_ZERO_STAG |
-	     IB_DEVICE_MEM_WINDOW |
-	     IB_DEVICE_SEND_W_INV);
+	     IB_DEVICE_MEM_WINDOW);
 
 	/* Allocate the qptr_array */
 	c2dev->qptr_array = vmalloc(C2_MAX_CQS * sizeof(void *));
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index 911a661..31d30b1 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -105,7 +105,6 @@ enum ib_device_cap_flags {
 	 */
 	IB_DEVICE_UD_IP_CSUM		= (1<<18),
 	IB_DEVICE_UD_TSO		= (1<<19),
-	IB_DEVICE_SEND_W_INV		= (1<<21),
 };
 
 enum ib_atomic_cap {

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-06-06 18:26 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-06-06 18:26 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get some small fixes for various low-level driver issues:

Chien Tung (1):
      MAINTAINERS: Update NetEffect (iw_nes) entry

Joachim Fenkes (1):
      IB/ehca: Reject send WRs only for RESET, INIT and RTR state

Ralph Campbell (2):
      IB/ipath: Fix device capability flags
      IB/ipath: Fix SM trap forwarding

Roland Dreier (1):
      IB/ipath: Avoid test_bit() on u64 SDMA status value

 MAINTAINERS                                |    4 ++--
 drivers/infiniband/hw/ehca/ehca_reqs.c     |    6 ++++--
 drivers/infiniband/hw/ipath/ipath_kernel.h |    5 +++++
 drivers/infiniband/hw/ipath/ipath_mad.c    |    4 ++++
 drivers/infiniband/hw/ipath/ipath_sdma.c   |   12 ++++--------
 drivers/infiniband/hw/ipath/ipath_verbs.c  |    3 ++-
 6 files changed, 21 insertions(+), 13 deletions(-)


diff --git a/MAINTAINERS b/MAINTAINERS
index 0a6d2ca..bd3badb 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2866,8 +2866,8 @@ S:	Maintained
 NETEFFECT IWARP RNIC DRIVER (IW_NES)
 P:	Faisal Latif
 M:	flatif@neteffect.com
-P:	Nishi Gupta
-M:	ngupta@neteffect.com
+P:	Chien Tung
+M:	ctung@neteffect.com
 P:	Glenn Streiff
 M:	gstreiff@neteffect.com
 L:	general@lists.openfabrics.org
diff --git a/drivers/infiniband/hw/ehca/ehca_reqs.c b/drivers/infiniband/hw/ehca/ehca_reqs.c
index bbe0436..f093b00 100644
--- a/drivers/infiniband/hw/ehca/ehca_reqs.c
+++ b/drivers/infiniband/hw/ehca/ehca_reqs.c
@@ -421,8 +421,10 @@ int ehca_post_send(struct ib_qp *qp,
 	int ret = 0;
 	unsigned long flags;
 
-	if (unlikely(my_qp->state != IB_QPS_RTS)) {
-		ehca_err(qp->device, "QP not in RTS state  qpn=%x", qp->qp_num);
+	/* Reject WR if QP is in RESET, INIT or RTR state */
+	if (unlikely(my_qp->state < IB_QPS_RTS)) {
+		ehca_err(qp->device, "Invalid QP state  qp_state=%d qpn=%x",
+			 my_qp->state, qp->qp_num);
 		return -EINVAL;
 	}
 
diff --git a/drivers/infiniband/hw/ipath/ipath_kernel.h b/drivers/infiniband/hw/ipath/ipath_kernel.h
index 59a8b25..0bd8bcb 100644
--- a/drivers/infiniband/hw/ipath/ipath_kernel.h
+++ b/drivers/infiniband/hw/ipath/ipath_kernel.h
@@ -232,6 +232,11 @@ struct ipath_sdma_desc {
 #define IPATH_SDMA_TXREQ_S_ABORTED   2
 #define IPATH_SDMA_TXREQ_S_SHUTDOWN  3
 
+#define IPATH_SDMA_STATUS_SCORE_BOARD_DRAIN_IN_PROG	(1ull << 63)
+#define IPATH_SDMA_STATUS_ABORT_IN_PROG			(1ull << 62)
+#define IPATH_SDMA_STATUS_INTERNAL_SDMA_ENABLE		(1ull << 61)
+#define IPATH_SDMA_STATUS_SCB_EMPTY			(1ull << 30)
+
 /* max dwords in small buffer packet */
 #define IPATH_SMALLBUF_DWORDS (dd->ipath_piosize2k >> 2)
 
diff --git a/drivers/infiniband/hw/ipath/ipath_mad.c b/drivers/infiniband/hw/ipath/ipath_mad.c
index 1ff46ae..5f9315d 100644
--- a/drivers/infiniband/hw/ipath/ipath_mad.c
+++ b/drivers/infiniband/hw/ipath/ipath_mad.c
@@ -1492,6 +1492,10 @@ static int process_subn(struct ib_device *ibdev, int mad_flags,
 			goto bail;
 		}
 
+	case IB_MGMT_METHOD_TRAP:
+	case IB_MGMT_METHOD_REPORT:
+	case IB_MGMT_METHOD_REPORT_RESP:
+	case IB_MGMT_METHOD_TRAP_REPRESS:
 	case IB_MGMT_METHOD_GET_RESP:
 		/*
 		 * The ib_mad module will call us to process responses
diff --git a/drivers/infiniband/hw/ipath/ipath_sdma.c b/drivers/infiniband/hw/ipath/ipath_sdma.c
index 0a8c1b8..eaba032 100644
--- a/drivers/infiniband/hw/ipath/ipath_sdma.c
+++ b/drivers/infiniband/hw/ipath/ipath_sdma.c
@@ -263,14 +263,10 @@ static void sdma_abort_task(unsigned long opaque)
 		hwstatus = ipath_read_kreg64(dd,
 				dd->ipath_kregs->kr_senddmastatus);
 
-		if (/* ScoreBoardDrainInProg */
-		    test_bit(63, &hwstatus) ||
-		    /* AbortInProg */
-		    test_bit(62, &hwstatus) ||
-		    /* InternalSDmaEnable */
-		    test_bit(61, &hwstatus) ||
-		    /* ScbEmpty */
-		    !test_bit(30, &hwstatus)) {
+		if ((hwstatus & (IPATH_SDMA_STATUS_SCORE_BOARD_DRAIN_IN_PROG |
+				 IPATH_SDMA_STATUS_ABORT_IN_PROG	     |
+				 IPATH_SDMA_STATUS_INTERNAL_SDMA_ENABLE)) ||
+		    !(hwstatus & IPATH_SDMA_STATUS_SCB_EMPTY)) {
 			if (dd->ipath_sdma_reset_wait > 0) {
 				/* not done shutting down sdma */
 				--dd->ipath_sdma_reset_wait;
diff --git a/drivers/infiniband/hw/ipath/ipath_verbs.c b/drivers/infiniband/hw/ipath/ipath_verbs.c
index e0ec540..7779165 100644
--- a/drivers/infiniband/hw/ipath/ipath_verbs.c
+++ b/drivers/infiniband/hw/ipath/ipath_verbs.c
@@ -1494,7 +1494,8 @@ static int ipath_query_device(struct ib_device *ibdev,
 
 	props->device_cap_flags = IB_DEVICE_BAD_PKEY_CNTR |
 		IB_DEVICE_BAD_QKEY_CNTR | IB_DEVICE_SHUTDOWN_PORT |
-		IB_DEVICE_SYS_IMAGE_GUID;
+		IB_DEVICE_SYS_IMAGE_GUID | IB_DEVICE_RC_RNR_NAK_GEN |
+		IB_DEVICE_PORT_ACTIVE_EVENT | IB_DEVICE_SRQ_RESIZE;
 	props->page_size_cap = PAGE_SIZE;
 	props->vendor_id = dev->dd->ipath_vendorid;
 	props->vendor_part_id = dev->dd->ipath_deviceid;

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-05-23 17:57 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-05-23 17:57 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a fixes for various issues:

 - Various trivial fixes that get rid of warnings
 - A couple of oopsable bugs fixed
 - Fixes for mthca/mlx4 driver bugs that stop NFS/RDMA from working
 - MAINTAINERS entry for Chelsio drivers

Andrew Morton (1):
      IB/mlx4: Fix uninitialized-var warning in mlx4_ib_post_send()

Dave Olson (1):
      IB/mad: Fix kernel crash when .process_mad() returns SUCCESS|CONSUMED

Jack Morgenstein (1):
      IPoIB: Test for NULL broadcast object in ipiob_mcast_join_finish()

Ralph Campbell (1):
      IB/ipath: Fix UC receive completion opcode for RDMA WRITE with immediate

Roland Dreier (4):
      IB/ipath: Fix printk format for ipath_sdma_status
      RDMA/cxgb3: Fix uninitialized variable warning in iwch_post_send()
      IB/mthca: Fix max_sge value returned by query_device
      IB/mlx4: Fix creation of kernel QP with max number of send s/g entries

Steve Wise (1):
      MAINTAINERS: Add cxgb3 and iw_cxgb3 NIC and iWARP driver entries

 MAINTAINERS                                    |   14 ++++++++++++++
 drivers/infiniband/core/mad.c                  |    4 +++-
 drivers/infiniband/hw/cxgb3/iwch_qp.c          |    2 +-
 drivers/infiniband/hw/ipath/ipath_sdma.c       |    4 ++--
 drivers/infiniband/hw/ipath/ipath_uc.c         |    4 ++--
 drivers/infiniband/hw/mlx4/qp.c                |   15 +++++++++------
 drivers/infiniband/hw/mthca/mthca_main.c       |   14 +++++++++++++-
 drivers/infiniband/ulp/ipoib/ipoib_multicast.c |    6 ++++++
 8 files changed, 50 insertions(+), 13 deletions(-)


diff --git a/MAINTAINERS b/MAINTAINERS
index bc1c008..907d8c4 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1239,6 +1239,20 @@ L:	video4linux-list@redhat.com
 W:	http://linuxtv.org
 S:	Maintained
 
+CXGB3 ETHERNET DRIVER (CXGB3)
+P:	Divy Le Ray
+M:	divy@chelsio.com
+L:	netdev@vger.kernel.org
+W:	http://www.chelsio.com
+S:	Supported
+
+CXGB3 IWARP RNIC DRIVER (IW_CXGB3)
+P:	Steve Wise
+M:	swise@chelsio.com
+L:	general@lists.openfabrics.org
+W:	http://www.openfabrics.org
+S:	Supported
+
 CYBERPRO FB DRIVER
 P:	Russell King
 M:	rmk@arm.linux.org.uk
diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c
index fbe16d5..1adf2ef 100644
--- a/drivers/infiniband/core/mad.c
+++ b/drivers/infiniband/core/mad.c
@@ -747,7 +747,9 @@ static int handle_outgoing_dr_smp(struct ib_mad_agent_private *mad_agent_priv,
 		break;
 	case IB_MAD_RESULT_SUCCESS | IB_MAD_RESULT_CONSUMED:
 		kmem_cache_free(ib_mad_cache, mad_priv);
-		break;
+		kfree(local);
+		ret = 1;
+		goto out;
 	case IB_MAD_RESULT_SUCCESS:
 		/* Treat like an incoming receive MAD */
 		port_priv = ib_get_mad_port(mad_agent_priv->agent.device,
diff --git a/drivers/infiniband/hw/cxgb3/iwch_qp.c b/drivers/infiniband/hw/cxgb3/iwch_qp.c
index 79dbe5b..9926137 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_qp.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_qp.c
@@ -229,7 +229,7 @@ int iwch_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
 		      struct ib_send_wr **bad_wr)
 {
 	int err = 0;
-	u8 t3_wr_flit_cnt;
+	u8 uninitialized_var(t3_wr_flit_cnt);
 	enum t3_wr_opcode t3_wr_opcode = 0;
 	enum t3_wr_flags t3_wr_flags;
 	struct iwch_qp *qhp;
diff --git a/drivers/infiniband/hw/ipath/ipath_sdma.c b/drivers/infiniband/hw/ipath/ipath_sdma.c
index 3697449..0a8c1b8 100644
--- a/drivers/infiniband/hw/ipath/ipath_sdma.c
+++ b/drivers/infiniband/hw/ipath/ipath_sdma.c
@@ -345,7 +345,7 @@ resched:
 	 * state change
 	 */
 	if (jiffies > dd->ipath_sdma_abort_jiffies) {
-		ipath_dbg("looping with status 0x%016llx\n",
+		ipath_dbg("looping with status 0x%08lx\n",
 			  dd->ipath_sdma_status);
 		dd->ipath_sdma_abort_jiffies = jiffies + 5 * HZ;
 	}
@@ -615,7 +615,7 @@ void ipath_restart_sdma(struct ipath_devdata *dd)
 	}
 	spin_unlock_irqrestore(&dd->ipath_sdma_lock, flags);
 	if (!needed) {
-		ipath_dbg("invalid attempt to restart SDMA, status 0x%016llx\n",
+		ipath_dbg("invalid attempt to restart SDMA, status 0x%08lx\n",
 			dd->ipath_sdma_status);
 		goto bail;
 	}
diff --git a/drivers/infiniband/hw/ipath/ipath_uc.c b/drivers/infiniband/hw/ipath/ipath_uc.c
index 7fd18e8..0596ec1 100644
--- a/drivers/infiniband/hw/ipath/ipath_uc.c
+++ b/drivers/infiniband/hw/ipath/ipath_uc.c
@@ -407,12 +407,11 @@ void ipath_uc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr,
 			dev->n_pkt_drops++;
 			goto done;
 		}
-		/* XXX Need to free SGEs */
+		wc.opcode = IB_WC_RECV;
 	last_imm:
 		ipath_copy_sge(&qp->r_sge, data, tlen);
 		wc.wr_id = qp->r_wr_id;
 		wc.status = IB_WC_SUCCESS;
-		wc.opcode = IB_WC_RECV;
 		wc.qp = &qp->ibqp;
 		wc.src_qp = qp->remote_qpn;
 		wc.slid = qp->remote_ah_attr.dlid;
@@ -514,6 +513,7 @@ void ipath_uc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr,
 			goto done;
 		}
 		wc.byte_len = qp->r_len;
+		wc.opcode = IB_WC_RECV_RDMA_WITH_IMM;
 		goto last_imm;
 
 	case OP(RDMA_WRITE_LAST):
diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
index 8e02ecf..a80df22 100644
--- a/drivers/infiniband/hw/mlx4/qp.c
+++ b/drivers/infiniband/hw/mlx4/qp.c
@@ -333,6 +333,9 @@ static int set_kernel_sq_size(struct mlx4_ib_dev *dev, struct ib_qp_cap *cap,
 		cap->max_inline_data + sizeof (struct mlx4_wqe_inline_seg)) +
 		send_wqe_overhead(type, qp->flags);
 
+	if (s > dev->dev->caps.max_sq_desc_sz)
+		return -EINVAL;
+
 	/*
 	 * Hermon supports shrinking WQEs, such that a single work
 	 * request can include multiple units of 1 << wqe_shift.  This
@@ -372,9 +375,6 @@ static int set_kernel_sq_size(struct mlx4_ib_dev *dev, struct ib_qp_cap *cap,
 		qp->sq.wqe_shift = ilog2(roundup_pow_of_two(s));
 
 	for (;;) {
-		if (1 << qp->sq.wqe_shift > dev->dev->caps.max_sq_desc_sz)
-			return -EINVAL;
-
 		qp->sq_max_wqes_per_wr = DIV_ROUND_UP(s, 1U << qp->sq.wqe_shift);
 
 		/*
@@ -395,7 +395,8 @@ static int set_kernel_sq_size(struct mlx4_ib_dev *dev, struct ib_qp_cap *cap,
 		++qp->sq.wqe_shift;
 	}
 
-	qp->sq.max_gs = ((qp->sq_max_wqes_per_wr << qp->sq.wqe_shift) -
+	qp->sq.max_gs = (min(dev->dev->caps.max_sq_desc_sz,
+			     (qp->sq_max_wqes_per_wr << qp->sq.wqe_shift)) -
 			 send_wqe_overhead(type, qp->flags)) /
 		sizeof (struct mlx4_wqe_data_seg);
 
@@ -411,7 +412,9 @@ static int set_kernel_sq_size(struct mlx4_ib_dev *dev, struct ib_qp_cap *cap,
 
 	cap->max_send_wr  = qp->sq.max_post =
 		(qp->sq.wqe_cnt - qp->sq_spare_wqes) / qp->sq_max_wqes_per_wr;
-	cap->max_send_sge = qp->sq.max_gs;
+	cap->max_send_sge = min(qp->sq.max_gs,
+				min(dev->dev->caps.max_sq_sg,
+				    dev->dev->caps.max_rq_sg));
 	/* We don't support inline sends for kernel QPs (yet) */
 	cap->max_inline_data = 0;
 
@@ -1457,7 +1460,7 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
 	unsigned ind;
 	int uninitialized_var(stamp);
 	int uninitialized_var(size);
-	unsigned seglen;
+	unsigned uninitialized_var(seglen);
 	int i;
 
 	spin_lock_irqsave(&qp->sq.lock, flags);
diff --git a/drivers/infiniband/hw/mthca/mthca_main.c b/drivers/infiniband/hw/mthca/mthca_main.c
index 9ebadd6..200cf13 100644
--- a/drivers/infiniband/hw/mthca/mthca_main.c
+++ b/drivers/infiniband/hw/mthca/mthca_main.c
@@ -45,6 +45,7 @@
 #include "mthca_cmd.h"
 #include "mthca_profile.h"
 #include "mthca_memfree.h"
+#include "mthca_wqe.h"
 
 MODULE_AUTHOR("Roland Dreier");
 MODULE_DESCRIPTION("Mellanox InfiniBand HCA low-level driver");
@@ -200,7 +201,18 @@ static int mthca_dev_lim(struct mthca_dev *mdev, struct mthca_dev_lim *dev_lim)
 	mdev->limits.gid_table_len  	= dev_lim->max_gids;
 	mdev->limits.pkey_table_len 	= dev_lim->max_pkeys;
 	mdev->limits.local_ca_ack_delay = dev_lim->local_ca_ack_delay;
-	mdev->limits.max_sg             = dev_lim->max_sg;
+	/*
+	 * Need to allow for worst case send WQE overhead and check
+	 * whether max_desc_sz imposes a lower limit than max_sg; UD
+	 * send has the biggest overhead.
+	 */
+	mdev->limits.max_sg		= min_t(int, dev_lim->max_sg,
+					      (dev_lim->max_desc_sz -
+					       sizeof (struct mthca_next_seg) -
+					       (mthca_is_memfree(mdev) ?
+						sizeof (struct mthca_arbel_ud_seg) :
+						sizeof (struct mthca_tavor_ud_seg))) /
+						sizeof (struct mthca_data_seg));
 	mdev->limits.max_wqes           = dev_lim->max_qp_sz;
 	mdev->limits.max_qp_init_rdma   = dev_lim->max_requester_per_qp;
 	mdev->limits.reserved_qps       = dev_lim->reserved_qps;
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
index d00a2c1..3f663fb 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
@@ -194,7 +194,13 @@ static int ipoib_mcast_join_finish(struct ipoib_mcast *mcast,
 	/* Set the cached Q_Key before we attach if it's the broadcast group */
 	if (!memcmp(mcast->mcmember.mgid.raw, priv->dev->broadcast + 4,
 		    sizeof (union ib_gid))) {
+		spin_lock_irq(&priv->lock);
+		if (!priv->broadcast) {
+			spin_unlock_irq(&priv->lock);
+			return -EAGAIN;
+		}
 		priv->qkey = be32_to_cpu(priv->broadcast->mcmember.qkey);
+		spin_unlock_irq(&priv->lock);
 		priv->tx_wr.wr.ud.remote_qkey = priv->qkey;
 	}
 

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-05-07 19:17 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-05-07 19:17 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a fixes for various low-level HW driver issues:

 - cxgb3 severe limits on memory registration size
 - ehca QP async event race
 - ipath miscellaneous issues

Dave Olson (2):
      IB/ipath: Fix bug that can leave sends disabled after freeze recovery
      IB/ipath: Need to always request and handle PIO avail interrupts

John Gregor (1):
      IB/ipath: Fix SDMA error recovery in absence of link status change

Michael Albaugh (2):
      IB/ipath: Only warn about prototype chip during init
      IB/ipath: Fix count of packets received by kernel

Ralph Campbell (2):
      IB/ipath: Only increment SSN if WQE is put on send queue
      IB/ipath: Return the correct opcode for RDMA WRITE with immediate

Roland Dreier (2):
      RDMA/cxgb3: Don't add PBL memory to gen_pool in chunks
      RDMA/cxgb3: Fix severe limit on userspace memory registration size

Stefan Roscher (1):
      IB/ehca: Wait for async events to finish before destroying QP

 drivers/infiniband/hw/cxgb3/cxio_hal.c        |   90 ++++++++--------
 drivers/infiniband/hw/cxgb3/cxio_hal.h        |    8 +-
 drivers/infiniband/hw/cxgb3/cxio_resource.c   |   36 +++++--
 drivers/infiniband/hw/cxgb3/iwch_mem.c        |   75 +++++++++-----
 drivers/infiniband/hw/cxgb3/iwch_provider.c   |   68 ++++++++++---
 drivers/infiniband/hw/cxgb3/iwch_provider.h   |    8 +-
 drivers/infiniband/hw/ehca/ehca_classes.h     |    2 +
 drivers/infiniband/hw/ehca/ehca_irq.c         |    4 +
 drivers/infiniband/hw/ehca/ehca_qp.c          |    5 +
 drivers/infiniband/hw/ipath/ipath_driver.c    |  138 ++++++++++++++++++++++---
 drivers/infiniband/hw/ipath/ipath_file_ops.c  |   72 ++++++--------
 drivers/infiniband/hw/ipath/ipath_iba7220.c   |   26 ++---
 drivers/infiniband/hw/ipath/ipath_init_chip.c |   95 ++++++++----------
 drivers/infiniband/hw/ipath/ipath_intr.c      |   80 ++------------
 drivers/infiniband/hw/ipath/ipath_kernel.h    |    8 ++-
 drivers/infiniband/hw/ipath/ipath_rc.c        |    6 +-
 drivers/infiniband/hw/ipath/ipath_ruc.c       |    7 +-
 drivers/infiniband/hw/ipath/ipath_sdma.c      |   44 ++++++--
 drivers/infiniband/hw/ipath/ipath_verbs.c     |    2 +-
 19 files changed, 458 insertions(+), 316 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-05-05 23:00 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-05-05 23:00 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a fixes for:

 - mlx4 breakage introduced (by me) with the CQ resize support
 - mlx4 breakage with new FW that supports smaller adapter pages
 - IPoIB breakage introduced with the separate send CQ support
 - longstanding cxgb3 breakage uncovered by stress testing
 - ehca minor messiness

Eli Cohen (1):
      IB/ipoib: Fix transmit queue stalling forever

Oren Duer (1):
      mlx4_core: Support creation of FMRs with pages smaller than 4K

Roland Dreier (1):
      IB/mlx4: Fix off-by-one errors in calls to mlx4_ib_free_cq_buf()

Stefan Roscher (1):
      IB/ehca: Fix function return types

Steve Wise (3):
      RDMA/cxgb3: QP flush fixes
      RDMA/cxgb3: Silently ignore close reply after abort.
      RDMA/cxgb3: Bump up the MPA connection setup timeout.

 drivers/infiniband/hw/cxgb3/cxio_hal.c     |   13 ++++++--
 drivers/infiniband/hw/cxgb3/cxio_hal.h     |    4 +-
 drivers/infiniband/hw/cxgb3/iwch_cm.c      |    6 ++--
 drivers/infiniband/hw/cxgb3/iwch_qp.c      |   13 +++++---
 drivers/infiniband/hw/ehca/ehca_hca.c      |    7 ++--
 drivers/infiniband/hw/mlx4/cq.c            |    4 +-
 drivers/infiniband/ulp/ipoib/ipoib.h       |    2 +
 drivers/infiniband/ulp/ipoib/ipoib_ib.c    |   47 +++++++++++++++++++++++++---
 drivers/infiniband/ulp/ipoib/ipoib_verbs.c |    3 +-
 drivers/net/mlx4/mr.c                      |    2 +-
 10 files changed, 75 insertions(+), 26 deletions(-)


diff --git a/drivers/infiniband/hw/cxgb3/cxio_hal.c b/drivers/infiniband/hw/cxgb3/cxio_hal.c
index ed2ee4b..5fd8506 100644
--- a/drivers/infiniband/hw/cxgb3/cxio_hal.c
+++ b/drivers/infiniband/hw/cxgb3/cxio_hal.c
@@ -359,9 +359,10 @@ static void insert_recv_cqe(struct t3_wq *wq, struct t3_cq *cq)
 	cq->sw_wptr++;
 }
 
-void cxio_flush_rq(struct t3_wq *wq, struct t3_cq *cq, int count)
+int cxio_flush_rq(struct t3_wq *wq, struct t3_cq *cq, int count)
 {
 	u32 ptr;
+	int flushed = 0;
 
 	PDBG("%s wq %p cq %p\n", __func__, wq, cq);
 
@@ -369,8 +370,11 @@ void cxio_flush_rq(struct t3_wq *wq, struct t3_cq *cq, int count)
 	PDBG("%s rq_rptr %u rq_wptr %u skip count %u\n", __func__,
 	    wq->rq_rptr, wq->rq_wptr, count);
 	ptr = wq->rq_rptr + count;
-	while (ptr++ != wq->rq_wptr)
+	while (ptr++ != wq->rq_wptr) {
 		insert_recv_cqe(wq, cq);
+		flushed++;
+	}
+	return flushed;
 }
 
 static void insert_sq_cqe(struct t3_wq *wq, struct t3_cq *cq,
@@ -394,9 +398,10 @@ static void insert_sq_cqe(struct t3_wq *wq, struct t3_cq *cq,
 	cq->sw_wptr++;
 }
 
-void cxio_flush_sq(struct t3_wq *wq, struct t3_cq *cq, int count)
+int cxio_flush_sq(struct t3_wq *wq, struct t3_cq *cq, int count)
 {
 	__u32 ptr;
+	int flushed = 0;
 	struct t3_swsq *sqp = wq->sq + Q_PTR2IDX(wq->sq_rptr, wq->sq_size_log2);
 
 	ptr = wq->sq_rptr + count;
@@ -405,7 +410,9 @@ void cxio_flush_sq(struct t3_wq *wq, struct t3_cq *cq, int count)
 		insert_sq_cqe(wq, cq, sqp);
 		sqp++;
 		ptr++;
+		flushed++;
 	}
+	return flushed;
 }
 
 /*
diff --git a/drivers/infiniband/hw/cxgb3/cxio_hal.h b/drivers/infiniband/hw/cxgb3/cxio_hal.h
index 2bcff7f..69ab08e 100644
--- a/drivers/infiniband/hw/cxgb3/cxio_hal.h
+++ b/drivers/infiniband/hw/cxgb3/cxio_hal.h
@@ -173,8 +173,8 @@ u32 cxio_hal_get_pdid(struct cxio_hal_resource *rscp);
 void cxio_hal_put_pdid(struct cxio_hal_resource *rscp, u32 pdid);
 int __init cxio_hal_init(void);
 void __exit cxio_hal_exit(void);
-void cxio_flush_rq(struct t3_wq *wq, struct t3_cq *cq, int count);
-void cxio_flush_sq(struct t3_wq *wq, struct t3_cq *cq, int count);
+int cxio_flush_rq(struct t3_wq *wq, struct t3_cq *cq, int count);
+int cxio_flush_sq(struct t3_wq *wq, struct t3_cq *cq, int count);
 void cxio_count_rcqes(struct t3_cq *cq, struct t3_wq *wq, int *count);
 void cxio_count_scqes(struct t3_cq *cq, struct t3_wq *wq, int *count);
 void cxio_flush_hw_cq(struct t3_cq *cq);
diff --git a/drivers/infiniband/hw/cxgb3/iwch_cm.c b/drivers/infiniband/hw/cxgb3/iwch_cm.c
index d44a6df..c325c44 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_cm.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_cm.c
@@ -67,10 +67,10 @@ int peer2peer = 0;
 module_param(peer2peer, int, 0644);
 MODULE_PARM_DESC(peer2peer, "Support peer2peer ULPs (default=0)");
 
-static int ep_timeout_secs = 10;
+static int ep_timeout_secs = 60;
 module_param(ep_timeout_secs, int, 0644);
 MODULE_PARM_DESC(ep_timeout_secs, "CM Endpoint operation timeout "
-				   "in seconds (default=10)");
+				   "in seconds (default=60)");
 
 static int mpa_rev = 1;
 module_param(mpa_rev, int, 0644);
@@ -1650,8 +1650,8 @@ static int close_con_rpl(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
 		release = 1;
 		break;
 	case ABORTING:
-		break;
 	case DEAD:
+		break;
 	default:
 		BUG_ON(1);
 		break;
diff --git a/drivers/infiniband/hw/cxgb3/iwch_qp.c b/drivers/infiniband/hw/cxgb3/iwch_qp.c
index 9b4be88..79dbe5b 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_qp.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_qp.c
@@ -655,6 +655,7 @@ static void __flush_qp(struct iwch_qp *qhp, unsigned long *flag)
 {
 	struct iwch_cq *rchp, *schp;
 	int count;
+	int flushed;
 
 	rchp = get_chp(qhp->rhp, qhp->attr.rcq);
 	schp = get_chp(qhp->rhp, qhp->attr.scq);
@@ -669,20 +670,22 @@ static void __flush_qp(struct iwch_qp *qhp, unsigned long *flag)
 	spin_lock(&qhp->lock);
 	cxio_flush_hw_cq(&rchp->cq);
 	cxio_count_rcqes(&rchp->cq, &qhp->wq, &count);
-	cxio_flush_rq(&qhp->wq, &rchp->cq, count);
+	flushed = cxio_flush_rq(&qhp->wq, &rchp->cq, count);
 	spin_unlock(&qhp->lock);
 	spin_unlock_irqrestore(&rchp->lock, *flag);
-	(*rchp->ibcq.comp_handler)(&rchp->ibcq, rchp->ibcq.cq_context);
+	if (flushed)
+		(*rchp->ibcq.comp_handler)(&rchp->ibcq, rchp->ibcq.cq_context);
 
 	/* locking heirarchy: cq lock first, then qp lock. */
 	spin_lock_irqsave(&schp->lock, *flag);
 	spin_lock(&qhp->lock);
 	cxio_flush_hw_cq(&schp->cq);
 	cxio_count_scqes(&schp->cq, &qhp->wq, &count);
-	cxio_flush_sq(&qhp->wq, &schp->cq, count);
+	flushed = cxio_flush_sq(&qhp->wq, &schp->cq, count);
 	spin_unlock(&qhp->lock);
 	spin_unlock_irqrestore(&schp->lock, *flag);
-	(*schp->ibcq.comp_handler)(&schp->ibcq, schp->ibcq.cq_context);
+	if (flushed)
+		(*schp->ibcq.comp_handler)(&schp->ibcq, schp->ibcq.cq_context);
 
 	/* deref */
 	if (atomic_dec_and_test(&qhp->refcnt))
@@ -880,7 +883,6 @@ int iwch_modify_qp(struct iwch_dev *rhp, struct iwch_qp *qhp,
 				ep = qhp->ep;
 				get_ep(&ep->com);
 			}
-			flush_qp(qhp, &flag);
 			break;
 		case IWCH_QP_STATE_TERMINATE:
 			qhp->attr.state = IWCH_QP_STATE_TERMINATE;
@@ -911,6 +913,7 @@ int iwch_modify_qp(struct iwch_dev *rhp, struct iwch_qp *qhp,
 		}
 		switch (attrs->next_state) {
 			case IWCH_QP_STATE_IDLE:
+				flush_qp(qhp, &flag);
 				qhp->attr.state = IWCH_QP_STATE_IDLE;
 				qhp->attr.llp_stream_handle = NULL;
 				put_ep(&qhp->ep->com);
diff --git a/drivers/infiniband/hw/ehca/ehca_hca.c b/drivers/infiniband/hw/ehca/ehca_hca.c
index 2515cbd..bc3b37d 100644
--- a/drivers/infiniband/hw/ehca/ehca_hca.c
+++ b/drivers/infiniband/hw/ehca/ehca_hca.c
@@ -101,7 +101,6 @@ int ehca_query_device(struct ib_device *ibdev, struct ib_device_attr *props)
 	props->max_ee          = limit_uint(rblock->max_rd_ee_context);
 	props->max_rdd         = limit_uint(rblock->max_rd_domain);
 	props->max_fmr         = limit_uint(rblock->max_mr);
-	props->local_ca_ack_delay  = limit_uint(rblock->local_ca_ack_delay);
 	props->max_qp_rd_atom  = limit_uint(rblock->max_rr_qp);
 	props->max_ee_rd_atom  = limit_uint(rblock->max_rr_ee_context);
 	props->max_res_rd_atom = limit_uint(rblock->max_rr_hca);
@@ -115,7 +114,7 @@ int ehca_query_device(struct ib_device *ibdev, struct ib_device_attr *props)
 	}
 
 	props->max_pkeys           = 16;
-	props->local_ca_ack_delay  = limit_uint(rblock->local_ca_ack_delay);
+	props->local_ca_ack_delay  = min_t(u8, rblock->local_ca_ack_delay, 255);
 	props->max_raw_ipv6_qp     = limit_uint(rblock->max_raw_ipv6_qp);
 	props->max_raw_ethy_qp     = limit_uint(rblock->max_raw_ethy_qp);
 	props->max_mcast_grp       = limit_uint(rblock->max_mcast_grp);
@@ -136,7 +135,7 @@ query_device1:
 	return ret;
 }
 
-static int map_mtu(struct ehca_shca *shca, u32 fw_mtu)
+static enum ib_mtu map_mtu(struct ehca_shca *shca, u32 fw_mtu)
 {
 	switch (fw_mtu) {
 	case 0x1:
@@ -156,7 +155,7 @@ static int map_mtu(struct ehca_shca *shca, u32 fw_mtu)
 	}
 }
 
-static int map_number_of_vls(struct ehca_shca *shca, u32 vl_cap)
+static u8 map_number_of_vls(struct ehca_shca *shca, u32 vl_cap)
 {
 	switch (vl_cap) {
 	case 0x1:
diff --git a/drivers/infiniband/hw/mlx4/cq.c b/drivers/infiniband/hw/mlx4/cq.c
index 2f199c5..4521319 100644
--- a/drivers/infiniband/hw/mlx4/cq.c
+++ b/drivers/infiniband/hw/mlx4/cq.c
@@ -246,7 +246,7 @@ err_mtt:
 	if (context)
 		ib_umem_release(cq->umem);
 	else
-		mlx4_ib_free_cq_buf(dev, &cq->buf, entries);
+		mlx4_ib_free_cq_buf(dev, &cq->buf, cq->ibcq.cqe);
 
 err_db:
 	if (!context)
@@ -434,7 +434,7 @@ int mlx4_ib_destroy_cq(struct ib_cq *cq)
 		mlx4_ib_db_unmap_user(to_mucontext(cq->uobject->context), &mcq->db);
 		ib_umem_release(mcq->umem);
 	} else {
-		mlx4_ib_free_cq_buf(dev, &mcq->buf, cq->cqe + 1);
+		mlx4_ib_free_cq_buf(dev, &mcq->buf, cq->cqe);
 		mlx4_db_free(dev->dev, &mcq->db);
 	}
 
diff --git a/drivers/infiniband/ulp/ipoib/ipoib.h b/drivers/infiniband/ulp/ipoib/ipoib.h
index 9044f88..ca126fc 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib.h
+++ b/drivers/infiniband/ulp/ipoib/ipoib.h
@@ -334,6 +334,7 @@ struct ipoib_dev_priv {
 #endif
 	int	hca_caps;
 	struct ipoib_ethtool_st ethtool;
+	struct timer_list poll_timer;
 };
 
 struct ipoib_ah {
@@ -404,6 +405,7 @@ extern struct workqueue_struct *ipoib_workqueue;
 
 int ipoib_poll(struct napi_struct *napi, int budget);
 void ipoib_ib_completion(struct ib_cq *cq, void *dev_ptr);
+void ipoib_send_comp_handler(struct ib_cq *cq, void *dev_ptr);
 
 struct ipoib_ah *ipoib_create_ah(struct net_device *dev,
 				 struct ib_pd *pd, struct ib_ah_attr *attr);
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_ib.c b/drivers/infiniband/ulp/ipoib/ipoib_ib.c
index 97b815c..f429bce 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_ib.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_ib.c
@@ -461,6 +461,26 @@ void ipoib_ib_completion(struct ib_cq *cq, void *dev_ptr)
 	netif_rx_schedule(dev, &priv->napi);
 }
 
+static void drain_tx_cq(struct net_device *dev)
+{
+	struct ipoib_dev_priv *priv = netdev_priv(dev);
+	unsigned long flags;
+
+	spin_lock_irqsave(&priv->tx_lock, flags);
+	while (poll_tx(priv))
+		; /* nothing */
+
+	if (netif_queue_stopped(dev))
+		mod_timer(&priv->poll_timer, jiffies + 1);
+
+	spin_unlock_irqrestore(&priv->tx_lock, flags);
+}
+
+void ipoib_send_comp_handler(struct ib_cq *cq, void *dev_ptr)
+{
+	drain_tx_cq((struct net_device *)dev_ptr);
+}
+
 static inline int post_send(struct ipoib_dev_priv *priv,
 			    unsigned int wr_id,
 			    struct ib_ah *address, u32 qpn,
@@ -555,12 +575,22 @@ void ipoib_send(struct net_device *dev, struct sk_buff *skb,
 	else
 		priv->tx_wr.send_flags &= ~IB_SEND_IP_CSUM;
 
+	if (++priv->tx_outstanding == ipoib_sendq_size) {
+		ipoib_dbg(priv, "TX ring full, stopping kernel net queue\n");
+		if (ib_req_notify_cq(priv->send_cq, IB_CQ_NEXT_COMP))
+			ipoib_warn(priv, "request notify on send CQ failed\n");
+		netif_stop_queue(dev);
+	}
+
 	if (unlikely(post_send(priv, priv->tx_head & (ipoib_sendq_size - 1),
 			       address->ah, qpn, tx_req, phead, hlen))) {
 		ipoib_warn(priv, "post_send failed\n");
 		++dev->stats.tx_errors;
+		--priv->tx_outstanding;
 		ipoib_dma_unmap_tx(priv->ca, tx_req);
 		dev_kfree_skb_any(skb);
+		if (netif_queue_stopped(dev))
+			netif_wake_queue(dev);
 	} else {
 		dev->trans_start = jiffies;
 
@@ -568,14 +598,11 @@ void ipoib_send(struct net_device *dev, struct sk_buff *skb,
 		++priv->tx_head;
 		skb_orphan(skb);
 
-		if (++priv->tx_outstanding == ipoib_sendq_size) {
-			ipoib_dbg(priv, "TX ring full, stopping kernel net queue\n");
-			netif_stop_queue(dev);
-		}
 	}
 
 	if (unlikely(priv->tx_outstanding > MAX_SEND_CQE))
-		poll_tx(priv);
+		while (poll_tx(priv))
+			; /* nothing */
 }
 
 static void __ipoib_reap_ah(struct net_device *dev)
@@ -609,6 +636,11 @@ void ipoib_reap_ah(struct work_struct *work)
 				   round_jiffies_relative(HZ));
 }
 
+static void ipoib_ib_tx_timer_func(unsigned long ctx)
+{
+	drain_tx_cq((struct net_device *)ctx);
+}
+
 int ipoib_ib_dev_open(struct net_device *dev)
 {
 	struct ipoib_dev_priv *priv = netdev_priv(dev);
@@ -645,6 +677,10 @@ int ipoib_ib_dev_open(struct net_device *dev)
 	queue_delayed_work(ipoib_workqueue, &priv->ah_reap_task,
 			   round_jiffies_relative(HZ));
 
+	init_timer(&priv->poll_timer);
+	priv->poll_timer.function = ipoib_ib_tx_timer_func;
+	priv->poll_timer.data = (unsigned long)dev;
+
 	set_bit(IPOIB_FLAG_INITIALIZED, &priv->flags);
 
 	return 0;
@@ -810,6 +846,7 @@ int ipoib_ib_dev_stop(struct net_device *dev, int flush)
 	ipoib_dbg(priv, "All sends and receives done.\n");
 
 timeout:
+	del_timer_sync(&priv->poll_timer);
 	qp_attr.qp_state = IB_QPS_RESET;
 	if (ib_modify_qp(priv->qp, &qp_attr, IB_QP_STATE))
 		ipoib_warn(priv, "Failed to modify QP to RESET state\n");
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_verbs.c b/drivers/infiniband/ulp/ipoib/ipoib_verbs.c
index c1e7ece..8766d29 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_verbs.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_verbs.c
@@ -187,7 +187,8 @@ int ipoib_transport_dev_init(struct net_device *dev, struct ib_device *ca)
 		goto out_free_mr;
 	}
 
-	priv->send_cq = ib_create_cq(priv->ca, NULL, NULL, dev, ipoib_sendq_size, 0);
+	priv->send_cq = ib_create_cq(priv->ca, ipoib_send_comp_handler, NULL,
+				     dev, ipoib_sendq_size, 0);
 	if (IS_ERR(priv->send_cq)) {
 		printk(KERN_WARNING "%s: failed to create send CQ\n", ca->name);
 		goto out_free_recv_cq;
diff --git a/drivers/net/mlx4/mr.c b/drivers/net/mlx4/mr.c
index cb46446..03a9abc 100644
--- a/drivers/net/mlx4/mr.c
+++ b/drivers/net/mlx4/mr.c
@@ -551,7 +551,7 @@ int mlx4_fmr_alloc(struct mlx4_dev *dev, u32 pd, u32 access, int max_pages,
 	u64 mtt_seg;
 	int err = -ENOMEM;
 
-	if (page_shift < 12 || page_shift >= 32)
+	if (page_shift < (ffs(dev->caps.page_size_cap) - 1) || page_shift >= 32)
 		return -EINVAL;
 
 	/* All MTTs must fit in the same page */

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-05-01  3:46 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-05-01  3:46 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a couple of fixes for medium-impact bugs.  If they can go
into -rc1, great; otherwise the world won't end if they end up in -rc2.

Eli Cohen (1):
      IB/ipoib: Fix transmit queue stalling forever

Roland Dreier (1):
      IB/mlx4: Fix off-by-one errors in calls to mlx4_ib_free_cq_buf()

 drivers/infiniband/hw/mlx4/cq.c            |    4 +-
 drivers/infiniband/ulp/ipoib/ipoib.h       |    2 +
 drivers/infiniband/ulp/ipoib/ipoib_ib.c    |   47 +++++++++++++++++++++++++---
 drivers/infiniband/ulp/ipoib/ipoib_verbs.c |    3 +-
 4 files changed, 48 insertions(+), 8 deletions(-)


diff --git a/drivers/infiniband/hw/mlx4/cq.c b/drivers/infiniband/hw/mlx4/cq.c
index 2f199c5..4521319 100644
--- a/drivers/infiniband/hw/mlx4/cq.c
+++ b/drivers/infiniband/hw/mlx4/cq.c
@@ -246,7 +246,7 @@ err_mtt:
 	if (context)
 		ib_umem_release(cq->umem);
 	else
-		mlx4_ib_free_cq_buf(dev, &cq->buf, entries);
+		mlx4_ib_free_cq_buf(dev, &cq->buf, cq->ibcq.cqe);
 
 err_db:
 	if (!context)
@@ -434,7 +434,7 @@ int mlx4_ib_destroy_cq(struct ib_cq *cq)
 		mlx4_ib_db_unmap_user(to_mucontext(cq->uobject->context), &mcq->db);
 		ib_umem_release(mcq->umem);
 	} else {
-		mlx4_ib_free_cq_buf(dev, &mcq->buf, cq->cqe + 1);
+		mlx4_ib_free_cq_buf(dev, &mcq->buf, cq->cqe);
 		mlx4_db_free(dev->dev, &mcq->db);
 	}
 
diff --git a/drivers/infiniband/ulp/ipoib/ipoib.h b/drivers/infiniband/ulp/ipoib/ipoib.h
index 9044f88..ca126fc 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib.h
+++ b/drivers/infiniband/ulp/ipoib/ipoib.h
@@ -334,6 +334,7 @@ struct ipoib_dev_priv {
 #endif
 	int	hca_caps;
 	struct ipoib_ethtool_st ethtool;
+	struct timer_list poll_timer;
 };
 
 struct ipoib_ah {
@@ -404,6 +405,7 @@ extern struct workqueue_struct *ipoib_workqueue;
 
 int ipoib_poll(struct napi_struct *napi, int budget);
 void ipoib_ib_completion(struct ib_cq *cq, void *dev_ptr);
+void ipoib_send_comp_handler(struct ib_cq *cq, void *dev_ptr);
 
 struct ipoib_ah *ipoib_create_ah(struct net_device *dev,
 				 struct ib_pd *pd, struct ib_ah_attr *attr);
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_ib.c b/drivers/infiniband/ulp/ipoib/ipoib_ib.c
index 97b815c..f429bce 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_ib.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_ib.c
@@ -461,6 +461,26 @@ void ipoib_ib_completion(struct ib_cq *cq, void *dev_ptr)
 	netif_rx_schedule(dev, &priv->napi);
 }
 
+static void drain_tx_cq(struct net_device *dev)
+{
+	struct ipoib_dev_priv *priv = netdev_priv(dev);
+	unsigned long flags;
+
+	spin_lock_irqsave(&priv->tx_lock, flags);
+	while (poll_tx(priv))
+		; /* nothing */
+
+	if (netif_queue_stopped(dev))
+		mod_timer(&priv->poll_timer, jiffies + 1);
+
+	spin_unlock_irqrestore(&priv->tx_lock, flags);
+}
+
+void ipoib_send_comp_handler(struct ib_cq *cq, void *dev_ptr)
+{
+	drain_tx_cq((struct net_device *)dev_ptr);
+}
+
 static inline int post_send(struct ipoib_dev_priv *priv,
 			    unsigned int wr_id,
 			    struct ib_ah *address, u32 qpn,
@@ -555,12 +575,22 @@ void ipoib_send(struct net_device *dev, struct sk_buff *skb,
 	else
 		priv->tx_wr.send_flags &= ~IB_SEND_IP_CSUM;
 
+	if (++priv->tx_outstanding == ipoib_sendq_size) {
+		ipoib_dbg(priv, "TX ring full, stopping kernel net queue\n");
+		if (ib_req_notify_cq(priv->send_cq, IB_CQ_NEXT_COMP))
+			ipoib_warn(priv, "request notify on send CQ failed\n");
+		netif_stop_queue(dev);
+	}
+
 	if (unlikely(post_send(priv, priv->tx_head & (ipoib_sendq_size - 1),
 			       address->ah, qpn, tx_req, phead, hlen))) {
 		ipoib_warn(priv, "post_send failed\n");
 		++dev->stats.tx_errors;
+		--priv->tx_outstanding;
 		ipoib_dma_unmap_tx(priv->ca, tx_req);
 		dev_kfree_skb_any(skb);
+		if (netif_queue_stopped(dev))
+			netif_wake_queue(dev);
 	} else {
 		dev->trans_start = jiffies;
 
@@ -568,14 +598,11 @@ void ipoib_send(struct net_device *dev, struct sk_buff *skb,
 		++priv->tx_head;
 		skb_orphan(skb);
 
-		if (++priv->tx_outstanding == ipoib_sendq_size) {
-			ipoib_dbg(priv, "TX ring full, stopping kernel net queue\n");
-			netif_stop_queue(dev);
-		}
 	}
 
 	if (unlikely(priv->tx_outstanding > MAX_SEND_CQE))
-		poll_tx(priv);
+		while (poll_tx(priv))
+			; /* nothing */
 }
 
 static void __ipoib_reap_ah(struct net_device *dev)
@@ -609,6 +636,11 @@ void ipoib_reap_ah(struct work_struct *work)
 				   round_jiffies_relative(HZ));
 }
 
+static void ipoib_ib_tx_timer_func(unsigned long ctx)
+{
+	drain_tx_cq((struct net_device *)ctx);
+}
+
 int ipoib_ib_dev_open(struct net_device *dev)
 {
 	struct ipoib_dev_priv *priv = netdev_priv(dev);
@@ -645,6 +677,10 @@ int ipoib_ib_dev_open(struct net_device *dev)
 	queue_delayed_work(ipoib_workqueue, &priv->ah_reap_task,
 			   round_jiffies_relative(HZ));
 
+	init_timer(&priv->poll_timer);
+	priv->poll_timer.function = ipoib_ib_tx_timer_func;
+	priv->poll_timer.data = (unsigned long)dev;
+
 	set_bit(IPOIB_FLAG_INITIALIZED, &priv->flags);
 
 	return 0;
@@ -810,6 +846,7 @@ int ipoib_ib_dev_stop(struct net_device *dev, int flush)
 	ipoib_dbg(priv, "All sends and receives done.\n");
 
 timeout:
+	del_timer_sync(&priv->poll_timer);
 	qp_attr.qp_state = IB_QPS_RESET;
 	if (ib_modify_qp(priv->qp, &qp_attr, IB_QP_STATE))
 		ipoib_warn(priv, "Failed to modify QP to RESET state\n");
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_verbs.c b/drivers/infiniband/ulp/ipoib/ipoib_verbs.c
index c1e7ece..8766d29 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_verbs.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_verbs.c
@@ -187,7 +187,8 @@ int ipoib_transport_dev_init(struct net_device *dev, struct ib_device *ca)
 		goto out_free_mr;
 	}
 
-	priv->send_cq = ib_create_cq(priv->ca, NULL, NULL, dev, ipoib_sendq_size, 0);
+	priv->send_cq = ib_create_cq(priv->ca, ipoib_send_comp_handler, NULL,
+				     dev, ipoib_sendq_size, 0);
 	if (IS_ERR(priv->send_cq)) {
 		printk(KERN_WARNING "%s: failed to create send CQ\n", ca->name);
 		goto out_free_recv_cq;

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-04-29 20:57 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-04-29 20:57 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a last batch of changes before 2.6.26-rc1:

Eli Cohen (2):
      IPoIB: Use separate CQ for UD send completions
      IPoIB: Copy child MTU from parent

Eli Dorfman (2):
      IB/iser: Move high-volume debug output to higher debug level
      IB/iser: Count FMR alignment violations per session

Eric Schneider (1):
      RDMA/nes: Add support for SFP+ PHY

Faisal Latif (1):
      RDMA/nes: Use LRO

Glenn Streiff (1):
      RDMA/nes: Formatting cleanup

Hoang-Nam Nguyen (1):
      IB/ehca: handle negative return value from ibmebus_request_irq() properly

Olaf Kirch (2):
      mlx4_core: Avoid recycling old FMR R_Keys too soon
      IB/mthca: Avoid recycling old FMR R_Keys too soon

Roland Dreier (1):
      IB/mthca: Avoid changing userspace ABI to handle DMA write barrier attribute

Stefan Roscher (1):
      IB/ehca: Allocate event queue size depending on max number of CQs and QPs

Steve Wise (3):
      RDMA/cxgb3: Correctly serialize peer abort path
      RDMA/cxgb3: Set the max_mr_size device attribute correctly
      RDMA/cxgb3: Support peer-2-peer connection setup

Yevgeny Petrilin (1):
      mlx4_core: Add a way to set the "collapsed" CQ flag

 drivers/infiniband/hw/cxgb3/cxio_hal.c       |   18 ++-
 drivers/infiniband/hw/cxgb3/cxio_hal.h       |    1 +
 drivers/infiniband/hw/cxgb3/cxio_wr.h        |   21 ++-
 drivers/infiniband/hw/cxgb3/iwch.c           |    1 +
 drivers/infiniband/hw/cxgb3/iwch.h           |    1 +
 drivers/infiniband/hw/cxgb3/iwch_cm.c        |  167 ++++++++----
 drivers/infiniband/hw/cxgb3/iwch_cm.h        |    2 +
 drivers/infiniband/hw/cxgb3/iwch_provider.c  |    2 +-
 drivers/infiniband/hw/cxgb3/iwch_provider.h  |    3 +
 drivers/infiniband/hw/cxgb3/iwch_qp.c        |   60 ++++-
 drivers/infiniband/hw/ehca/ehca_classes.h    |    5 +
 drivers/infiniband/hw/ehca/ehca_cq.c         |   11 +
 drivers/infiniband/hw/ehca/ehca_eq.c         |   35 ++--
 drivers/infiniband/hw/ehca/ehca_main.c       |   36 +++-
 drivers/infiniband/hw/ehca/ehca_qp.c         |   26 ++-
 drivers/infiniband/hw/mlx4/cq.c              |    2 +-
 drivers/infiniband/hw/mthca/mthca_mr.c       |   13 -
 drivers/infiniband/hw/mthca/mthca_provider.c |   14 +-
 drivers/infiniband/hw/mthca/mthca_provider.h |    1 +
 drivers/infiniband/hw/mthca/mthca_user.h     |   10 +-
 drivers/infiniband/hw/nes/Kconfig            |    1 +
 drivers/infiniband/hw/nes/nes.c              |    4 +
 drivers/infiniband/hw/nes/nes.h              |    5 +-
 drivers/infiniband/hw/nes/nes_cm.c           |    8 +-
 drivers/infiniband/hw/nes/nes_hw.c           |  371 ++++++++++++++++++++------
 drivers/infiniband/hw/nes/nes_hw.h           |   19 +-
 drivers/infiniband/hw/nes/nes_nic.c          |  180 ++++++++-----
 drivers/infiniband/hw/nes/nes_utils.c        |   10 +-
 drivers/infiniband/hw/nes/nes_verbs.c        |    2 +-
 drivers/infiniband/ulp/ipoib/ipoib.h         |    7 +-
 drivers/infiniband/ulp/ipoib/ipoib_cm.c      |    8 +-
 drivers/infiniband/ulp/ipoib/ipoib_ethtool.c |    2 +-
 drivers/infiniband/ulp/ipoib/ipoib_ib.c      |   45 ++--
 drivers/infiniband/ulp/ipoib/ipoib_main.c    |    3 +-
 drivers/infiniband/ulp/ipoib/ipoib_verbs.c   |   39 ++-
 drivers/infiniband/ulp/ipoib/ipoib_vlan.c    |    3 +
 drivers/infiniband/ulp/iser/iscsi_iser.c     |    4 +-
 drivers/infiniband/ulp/iser/iscsi_iser.h     |    7 +
 drivers/infiniband/ulp/iser/iser_memory.c    |    9 +-
 drivers/net/cxgb3/version.h                  |    2 +-
 drivers/net/mlx4/cq.c                        |    4 +-
 drivers/net/mlx4/mr.c                        |    6 -
 include/linux/mlx4/device.h                  |    3 +-
 include/scsi/libiscsi.h                      |    1 +
 44 files changed, 845 insertions(+), 327 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-04-22  1:26 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-04-22  1:26 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a few fixes for various things, including one build fix
for the ipath driver:

Paul Bolle (1):
      IB/ipath: Fix module parameter description for disable_sma

Roland Dreier (6):
      RDMA/nes: Remove unneeded function declarations
      IB/ipath: Remove reference to dev->class_dev
      IB/ipath: Build IBA7220 code unconditionally
      IB/ipath: Remove dependency on PCI_MSI || HT_IRQ
      IB/ipath: Remove tests of PCI_MSI in ipath_iba7220.c
      IB/ipath: Correct capitalization "IntX" -> "INTx"

 drivers/infiniband/hw/ipath/Kconfig         |    2 +-
 drivers/infiniband/hw/ipath/Makefile        |    6 ++++--
 drivers/infiniband/hw/ipath/ipath_driver.c  |    2 +-
 drivers/infiniband/hw/ipath/ipath_iba7220.c |   23 +++++++++--------------
 drivers/infiniband/hw/ipath/ipath_verbs.c   |    3 +--
 drivers/infiniband/hw/nes/nes.c             |    6 ------
 drivers/infiniband/hw/nes/nes_nic.c         |    9 ---------
 7 files changed, 16 insertions(+), 35 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* Re: [GIT PULL] please pull infiniband.git
  2008-04-17 14:53 Roland Dreier
@ 2008-04-19  8:16 ` Ingo Molnar
  0 siblings, 0 replies; 223+ messages in thread
From: Ingo Molnar @ 2008-04-19  8:16 UTC (permalink / raw)
  To: Roland Dreier; +Cc: torvalds, akpm, general, linux-kernel


* Roland Dreier <rdreier@cisco.com> wrote:

>       IB/ipath: Misc changes to prepare for IB7220 introduction

>       IB/ipath: add calls to new 7220 code and enable in build

x86.git auto-testing found that these changes broke the -git build, with 
this config:

  http://redhat.com/~mingo/misc/config-Sat_Apr_19_09_55_05_CEST_2008.bad

the failure is a link failure:

 drivers/built-in.o: In function `ipath_init_one':
 ipath_driver.c:(.devinit.text+0x1e5bc): undefined reference to `ipath_init_iba7220_funcs'

disabling CONFIG_INFINIBAND_IPATH=y works this around.

	Ingo

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-04-17 14:53 Roland Dreier
  2008-04-19  8:16 ` Ingo Molnar
  0 siblings, 1 reply; 223+ messages in thread
From: Roland Dreier @ 2008-04-17 14:53 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get the first batch of things queued for 2.6.26: sparse
cleanups, new HW support for the ipath driver, IPoIB updates, and
miscellaneous fixes all over.

Arthur Jones (7):
      IB/ipath: Fix sparse warning about pointer signedness
      IB/ipath: Misc sparse warning cleanup
      IB/ipath: Provide I/O bus speeds for diagnostic purposes
      IB/ipath: Fix link up LED display
      IB/ipath: User mode send DMA header file
      IB/ipath: User mode send DMA
      IB/ipath: Misc changes to prepare for IB7220 introduction

Dave Olson (10):
      IB/ipath: Make some constants chip-specific, related cleanup
      IB/ipath: Shared context code needs to be sure device is usable
      IB/ipath: Enable 4KB MTU
      IB/ipath: HW workaround for case where chip can send but not receive
      IB/ipath: Make link state transition code ignore (transient) link recovery
      IB/ipath: Add support for IBTA 1.2 Heartbeat
      IB/ipath: Set LID filtering for HCAs that support it.
      IB/ipath: Enable reduced PIO update for HCAs that support it.
      IB/ipath: Fix check for no interrupts to reliably fallback to INTx
      IB/ipath: add calls to new 7220 code and enable in build

David Dillow (1):
      IB/srp: Enforce protocol limit on srp_sg_tablesize

Dotan Barak (3):
      IB/core: Check optional verbs before using them
      IB/mthca: Update QP state if query QP succeeds
      IB/mlx4: Update QP state if query QP succeeds

Eli Cohen (13):
      IPoIB: Use checksum offload support if available
      IB/mlx4: Add IPoIB checksum offload support
      IB/mthca: Add IPoIB checksum offload support
      IB/core: Add creation flags to struct ib_qp_init_attr
      IB/core: Add IPoIB UD LSO support
      IPoIB: Add LSO support
      IB/mlx4: Add IPoIB LSO support
      IPoIB: Add basic ethtool support
      IB/core: Add support for modify CQ
      IPoIB: Support modifying IPoIB CQ event moderation
      IB/mlx4: Add support for modifying CQ moderation parameters
      IB/mlx4: Fix race when detaching a QP from a multicast group
      IB/mlx4: Fix incorrect comment

Erez Zilber (2):
      IB/iser: Release connection resources on RDMA_CM_EVENT_DEVICE_REMOVAL event
      IB/iser: Don't change itt endianness

Harvey Harrison (1):
      IB: Replace remaining __FUNCTION__ occurrences with __func__

Hoang-Nam Nguyen (1):
      IB/ehca: Remove tgid checking

Jack Morgenstein (3):
      mlx4_core: Increase max number of QPs to 128K
      IB/mthca: Update module version and release date
      IB/mlx4: Update module version and release date

John Gregor (2):
      IB/ipath: Head of Line blocking vs forward progress of user apps
      IB/ipath: Add code for IBA7220 send DMA

Julia Lawall (1):
      RDMA/iwcm: Test rdma_create_id() for IS_ERR rather than 0

Michael Albaugh (5):
      IB/ipath: Prevent link-recovery code from negating admin disable
      IB/ipath: EEPROM support for 7220 devices, robustness improvements, cleanup
      IB/ipath: Allow old and new diagnostic packet formats
      IB/ipath: Isolate 7220-specific content
      IB/ipath: Support for SerDes portion of IBA7220

Ralph Campbell (18):
      IB/ipath: Fix byte order of pioavail in handle_errors()
      IB/ipath: Fix error recovery for send buffer status after chip freeze mode
      IB/ipath: Don't try to handle freeze mode HW errors if diagnostic mode
      IB/ipath: Make debug error message match the constraint that is checked for
      IB/ipath: Add code to support multiple link speeds and widths
      IB/ipath: Remove useless comments
      IB/ipath: Fix sanity checks on QP number of WRs and SGEs
      IB/ipath: Change the module author
      IB/ipath: Remove some useless (void) casts
      IB/ipath: Make send buffers available for kernel if not allocated to user
      IB/ipath: Use PIO buffer for RC ACKs
      IB/ipath: Fix some white space and code style issues
      IB/ipath: Add support for 7220 receive queue changes
      IB/ipath: Fix up error handling
      IB/ipath: Header file changes to support IBA7220
      IB/ipath: HCA-specific code to support IBA7220
      IB/ipath: Add IBA7220-specific SERDES initialization data
      IB/ipath: Update copyright dates for files changed in 2008

Robert P. J. Day (3):
      IB: Use shorter list_splice_init() for brevity
      RDMA/nes: Use more concise list_for_each_entry()
      IB/ipath: Fix time comparison to use time_after_eq()

Roland Dreier (31):
      IB/mthca: Formatting cleanups
      IB/mlx4: Convert "if(foo)" to "if (foo)"
      mlx4_core: Move opening brace of function onto a new line
      RDMA/amso1100: Don't use 0UL as a NULL pointer
      RDMA/cxgb3: IDR IDs are signed
      IB: Make struct ib_uobject.id a signed int
      IB/ipath: Fix sparse warning about shadowed symbol
      IB/mlx4: Endianness annotations
      IB/cm: Endianness annotations
      RDMA/ucma: Endian annotation
      RDMA/nes: Trivial endianness annotations
      RDMA/nes: Delete unused variables
      RDMA/amso1100: Start of endianness annotation
      RDMA/amso1100: Endian annotate mqsq allocator
      mlx4_core: Fix confusion between mlx4_event and mlx4_dev_event enums
      IB/uverbs: Don't store struct file * for event files
      IB/uverbs: Use alloc_file() instead of get_empty_filp()
      RDMA/nes: Remove redundant NULL check in nes_unregister_ofa_device()
      RDMA/nes: Remove unused nes_netdev_exit() function
      RDMA/nes: Use proper format and cast to print dma_addr_t
      RDMA/nes: Make symbols used only in a single source file static
      IB/ehca: Make symbols used only in a single source file static
      IB/mthca: Avoid integer overflow when dealing with profile size
      IB/mthca: Avoid integer overflow when allocating huge ICM table
      IB/ipath: Fix PCI config write size used to clear linkctrl error bits
      RDMA/nes: Remove session_id from nes_cm stuff
      IB/mlx4: Micro-optimize mlx4_ib_post_send()
      IB/core: Add support for "send with invalidate" work requests
      RDMA/amso1100: Add support for "send with invalidate" work requests
      RDMA/nes: Free IRQ before killing tasklet
      IPoIB: Handle case when P_Key is deleted and re-added at same index

Stefan Roscher (1):
      IB/ehca: Support all ibv_devinfo values in query_device() and query_port()

Tom Tucker (1):
      RDMA/amso1100: Add check for NULL reply_msg in c2_intr()

Vladimir Sokolovsky (1):
      IB/mlx4: Add support for resizing CQs

 drivers/infiniband/core/cm.c                   |   63 +-
 drivers/infiniband/core/cma.c                  |    2 +-
 drivers/infiniband/core/fmr_pool.c             |    3 +-
 drivers/infiniband/core/ucma.c                 |    2 +-
 drivers/infiniband/core/uverbs.h               |    4 +-
 drivers/infiniband/core/uverbs_cmd.c           |   14 +-
 drivers/infiniband/core/uverbs_main.c          |   28 +-
 drivers/infiniband/core/verbs.c                |   14 +-
 drivers/infiniband/hw/amso1100/c2.c            |   80 +-
 drivers/infiniband/hw/amso1100/c2.h            |   16 +-
 drivers/infiniband/hw/amso1100/c2_ae.c         |   10 +-
 drivers/infiniband/hw/amso1100/c2_alloc.c      |   12 +-
 drivers/infiniband/hw/amso1100/c2_cq.c         |    4 +-
 drivers/infiniband/hw/amso1100/c2_intr.c       |    6 +-
 drivers/infiniband/hw/amso1100/c2_mm.c         |    2 +-
 drivers/infiniband/hw/amso1100/c2_mq.c         |    4 +-
 drivers/infiniband/hw/amso1100/c2_mq.h         |    2 +-
 drivers/infiniband/hw/amso1100/c2_provider.c   |   85 +-
 drivers/infiniband/hw/amso1100/c2_qp.c         |   30 +-
 drivers/infiniband/hw/amso1100/c2_rnic.c       |   31 +-
 drivers/infiniband/hw/amso1100/c2_vq.c         |    2 +-
 drivers/infiniband/hw/amso1100/c2_wr.h         |  212 +-
 drivers/infiniband/hw/cxgb3/cxio_dbg.c         |   24 +-
 drivers/infiniband/hw/cxgb3/cxio_hal.c         |   84 +-
 drivers/infiniband/hw/cxgb3/cxio_resource.c    |   12 +-
 drivers/infiniband/hw/cxgb3/iwch.c             |    6 +-
 drivers/infiniband/hw/cxgb3/iwch.h             |    2 +-
 drivers/infiniband/hw/cxgb3/iwch_cm.c          |  166 +-
 drivers/infiniband/hw/cxgb3/iwch_cm.h          |    4 +-
 drivers/infiniband/hw/cxgb3/iwch_cq.c          |    4 +-
 drivers/infiniband/hw/cxgb3/iwch_ev.c          |   12 +-
 drivers/infiniband/hw/cxgb3/iwch_mem.c         |    6 +-
 drivers/infiniband/hw/cxgb3/iwch_provider.c    |   79 +-
 drivers/infiniband/hw/cxgb3/iwch_provider.h    |    4 +-
 drivers/infiniband/hw/cxgb3/iwch_qp.c          |   42 +-
 drivers/infiniband/hw/ehca/ehca_av.c           |   31 -
 drivers/infiniband/hw/ehca/ehca_classes.h      |    2 -
 drivers/infiniband/hw/ehca/ehca_cq.c           |   19 -
 drivers/infiniband/hw/ehca/ehca_hca.c          |  129 +-
 drivers/infiniband/hw/ehca/ehca_main.c         |   19 +-
 drivers/infiniband/hw/ehca/ehca_mrmw.c         |   42 +-
 drivers/infiniband/hw/ehca/ehca_pd.c           |   11 -
 drivers/infiniband/hw/ehca/ehca_qp.c           |   51 +-
 drivers/infiniband/hw/ehca/ehca_reqs.c         |    2 +-
 drivers/infiniband/hw/ehca/ehca_tools.h        |   16 +-
 drivers/infiniband/hw/ehca/ehca_uverbs.c       |   19 -
 drivers/infiniband/hw/ipath/Makefile           |    3 +
 drivers/infiniband/hw/ipath/ipath_7220.h       |   57 +
 drivers/infiniband/hw/ipath/ipath_common.h     |   54 +-
 drivers/infiniband/hw/ipath/ipath_debug.h      |    2 +
 drivers/infiniband/hw/ipath/ipath_diag.c       |   35 +-
 drivers/infiniband/hw/ipath/ipath_driver.c     | 1041 +++++++---
 drivers/infiniband/hw/ipath/ipath_eeprom.c     |  428 ++++-
 drivers/infiniband/hw/ipath/ipath_file_ops.c   |  176 ++-
 drivers/infiniband/hw/ipath/ipath_iba6110.c    |   51 +-
 drivers/infiniband/hw/ipath/ipath_iba6120.c    |  203 ++-
 drivers/infiniband/hw/ipath/ipath_iba7220.c    | 2571 ++++++++++++++++++++++++
 drivers/infiniband/hw/ipath/ipath_init_chip.c  |  312 ++--
 drivers/infiniband/hw/ipath/ipath_intr.c       |  656 ++++---
 drivers/infiniband/hw/ipath/ipath_kernel.h     |  304 +++-
 drivers/infiniband/hw/ipath/ipath_mad.c        |  110 +-
 drivers/infiniband/hw/ipath/ipath_qp.c         |   59 +-
 drivers/infiniband/hw/ipath/ipath_rc.c         |   67 +-
 drivers/infiniband/hw/ipath/ipath_registers.h  |  168 +-
 drivers/infiniband/hw/ipath/ipath_ruc.c        |   22 +-
 drivers/infiniband/hw/ipath/ipath_sd7220.c     | 1462 ++++++++++++++
 drivers/infiniband/hw/ipath/ipath_sd7220_img.c | 1082 ++++++++++
 drivers/infiniband/hw/ipath/ipath_sdma.c       |  790 ++++++++
 drivers/infiniband/hw/ipath/ipath_srq.c        |    5 +-
 drivers/infiniband/hw/ipath/ipath_stats.c      |   33 +-
 drivers/infiniband/hw/ipath/ipath_sysfs.c      |  104 +-
 drivers/infiniband/hw/ipath/ipath_uc.c         |    8 +-
 drivers/infiniband/hw/ipath/ipath_ud.c         |    7 +-
 drivers/infiniband/hw/ipath/ipath_user_sdma.c  |  879 ++++++++
 drivers/infiniband/hw/ipath/ipath_user_sdma.h  |   54 +
 drivers/infiniband/hw/ipath/ipath_verbs.c      |  413 ++++-
 drivers/infiniband/hw/ipath/ipath_verbs.h      |   32 +-
 drivers/infiniband/hw/mlx4/cq.c                |  319 +++-
 drivers/infiniband/hw/mlx4/mad.c               |    2 +-
 drivers/infiniband/hw/mlx4/main.c              |   25 +-
 drivers/infiniband/hw/mlx4/mlx4_ib.h           |   15 +
 drivers/infiniband/hw/mlx4/qp.c                |  117 +-
 drivers/infiniband/hw/mthca/mthca_cmd.c        |    6 +-
 drivers/infiniband/hw/mthca/mthca_cmd.h        |    1 +
 drivers/infiniband/hw/mthca/mthca_cq.c         |   14 +-
 drivers/infiniband/hw/mthca/mthca_dev.h        |   14 +-
 drivers/infiniband/hw/mthca/mthca_eq.c         |    4 +-
 drivers/infiniband/hw/mthca/mthca_mad.c        |    2 +-
 drivers/infiniband/hw/mthca/mthca_main.c       |   15 +-
 drivers/infiniband/hw/mthca/mthca_memfree.c    |    6 +-
 drivers/infiniband/hw/mthca/mthca_profile.c    |    4 +-
 drivers/infiniband/hw/mthca/mthca_profile.h    |    2 +-
 drivers/infiniband/hw/mthca/mthca_provider.c   |    5 +-
 drivers/infiniband/hw/mthca/mthca_qp.c         |   28 +-
 drivers/infiniband/hw/mthca/mthca_wqe.h        |   16 +-
 drivers/infiniband/hw/nes/nes.c                |   15 +-
 drivers/infiniband/hw/nes/nes.h                |   32 +-
 drivers/infiniband/hw/nes/nes_cm.c             |  131 +-
 drivers/infiniband/hw/nes/nes_cm.h             |   35 -
 drivers/infiniband/hw/nes/nes_hw.c             |   49 +-
 drivers/infiniband/hw/nes/nes_nic.c            |   26 +-
 drivers/infiniband/hw/nes/nes_utils.c          |    2 +-
 drivers/infiniband/hw/nes/nes_verbs.c          |   29 +-
 drivers/infiniband/ulp/ipoib/Makefile          |    3 +-
 drivers/infiniband/ulp/ipoib/ipoib.h           |   10 +
 drivers/infiniband/ulp/ipoib/ipoib_cm.c        |   15 +-
 drivers/infiniband/ulp/ipoib/ipoib_ethtool.c   |   99 +
 drivers/infiniband/ulp/ipoib/ipoib_ib.c        |  126 +-
 drivers/infiniband/ulp/ipoib/ipoib_main.c      |   33 +-
 drivers/infiniband/ulp/ipoib/ipoib_verbs.c     |    3 +
 drivers/infiniband/ulp/iser/iser_initiator.c   |    4 +-
 drivers/infiniband/ulp/iser/iser_verbs.c       |    5 +-
 drivers/infiniband/ulp/srp/ib_srp.c            |    7 +-
 drivers/net/mlx4/catas.c                       |    2 +-
 drivers/net/mlx4/cmd.c                         |    3 +-
 drivers/net/mlx4/cq.c                          |   72 +-
 drivers/net/mlx4/eq.c                          |    5 +-
 drivers/net/mlx4/fw.c                          |   13 +
 drivers/net/mlx4/fw.h                          |    1 +
 drivers/net/mlx4/intf.c                        |    8 +-
 drivers/net/mlx4/main.c                        |    6 +-
 drivers/net/mlx4/mcg.c                         |   12 +-
 drivers/net/mlx4/mlx4.h                        |    4 +-
 include/linux/mlx4/cmd.h                       |    2 +-
 include/linux/mlx4/cq.h                        |   19 +-
 include/linux/mlx4/device.h                    |    1 +
 include/linux/mlx4/driver.h                    |    3 +-
 include/linux/mlx4/qp.h                        |   15 +-
 include/rdma/ib_user_verbs.h                   |    5 +-
 include/rdma/ib_verbs.h                        |   35 +-
 net/sunrpc/xprtrdma/verbs.c                    |    1 -
 131 files changed, 11739 insertions(+), 2287 deletions(-)
 create mode 100644 drivers/infiniband/hw/ipath/ipath_7220.h
 create mode 100644 drivers/infiniband/hw/ipath/ipath_iba7220.c
 create mode 100644 drivers/infiniband/hw/ipath/ipath_sd7220.c
 create mode 100644 drivers/infiniband/hw/ipath/ipath_sd7220_img.c
 create mode 100644 drivers/infiniband/hw/ipath/ipath_sdma.c
 create mode 100644 drivers/infiniband/hw/ipath/ipath_user_sdma.c
 create mode 100644 drivers/infiniband/hw/ipath/ipath_user_sdma.h
 create mode 100644 drivers/infiniband/ulp/ipoib/ipoib_ethtool.c

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-03-21 21:02 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-03-21 21:02 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

Chien Tung (1):
      RDMA/nes: Fix MSS calculation on RDMA path

 drivers/infiniband/hw/nes/nes_cm.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)


diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c
index 39adb26..0bef878 100644
--- a/drivers/infiniband/hw/nes/nes_cm.c
+++ b/drivers/infiniband/hw/nes/nes_cm.c
@@ -40,6 +40,7 @@
 #include <linux/tcp.h>
 #include <linux/init.h>
 #include <linux/if_arp.h>
+#include <linux/if_vlan.h>
 #include <linux/notifier.h>
 #include <linux/net.h>
 #include <linux/types.h>
@@ -1072,7 +1073,7 @@ static struct nes_cm_node *make_cm_node(struct nes_cm_core *cm_core,
 	ts = current_kernel_time();
 	cm_node->tcp_cntxt.loc_seq_num = htonl(ts.tv_nsec);
 	cm_node->tcp_cntxt.mss = nesvnic->max_frame_size - sizeof(struct iphdr) -
-			sizeof(struct tcphdr) - ETH_HLEN;
+			sizeof(struct tcphdr) - ETH_HLEN - VLAN_HLEN;
 	cm_node->tcp_cntxt.rcv_nxt = 0;
 	/* get a unique session ID , add thread_id to an upcounter to handle race */
 	atomic_inc(&cm_core->node_cnt);

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-03-13 20:15 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-03-13 20:15 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get some more small post-2.6.25-rc5 fixes, mostly to the
ipath driver but some to IP-over-IB also:

Or Gerlitz (1):
      IPoIB: Don't drop multicast sends when they can be queued

Patrick Marchand Latifi (4):
      IB/ipath: Fix potentially wrong RNR retry counter returned in ipath_query_qp()
      IB/ipath: Fix RC QP initialization
      IB/ipath: Fix error completion put on send CQ instead of recv CQ
      IB/ipath: Reset the retry counter for RDMA_READ_RESPONSE_MIDDLE packets

Ralph Campbell (1):
      IB/ipath: Fix IB compliance problems with link state vs physical state

Roland Dreier (2):
      IPoIB/cm: Set tx_wr.num_sge in connected mode post_send()
      IPoIB: Allocate priv->tx_ring with vmalloc()

 drivers/infiniband/hw/ipath/ipath_common.h     |    2 +-
 drivers/infiniband/hw/ipath/ipath_driver.c     |   28 ++++++++++-------------
 drivers/infiniband/hw/ipath/ipath_kernel.h     |    1 +
 drivers/infiniband/hw/ipath/ipath_mad.c        |    7 ++---
 drivers/infiniband/hw/ipath/ipath_qp.c         |   13 ++++++-----
 drivers/infiniband/hw/ipath/ipath_rc.c         |    4 +++
 drivers/infiniband/hw/ipath/ipath_registers.h  |    2 +-
 drivers/infiniband/ulp/ipoib/ipoib_cm.c        |    9 +++++--
 drivers/infiniband/ulp/ipoib/ipoib_main.c      |    9 ++++---
 drivers/infiniband/ulp/ipoib/ipoib_multicast.c |    2 +-
 10 files changed, 41 insertions(+), 36 deletions(-)


diff --git a/drivers/infiniband/hw/ipath/ipath_common.h b/drivers/infiniband/hw/ipath/ipath_common.h
index 4146210..591901a 100644
--- a/drivers/infiniband/hw/ipath/ipath_common.h
+++ b/drivers/infiniband/hw/ipath/ipath_common.h
@@ -75,7 +75,7 @@
 #define IPATH_IB_LINKDOWN		0
 #define IPATH_IB_LINKARM		1
 #define IPATH_IB_LINKACTIVE		2
-#define IPATH_IB_LINKINIT		3
+#define IPATH_IB_LINKDOWN_ONLY		3
 #define IPATH_IB_LINKDOWN_SLEEP		4
 #define IPATH_IB_LINKDOWN_DISABLE	5
 #define IPATH_IB_LINK_LOOPBACK	6 /* enable local loopback */
diff --git a/drivers/infiniband/hw/ipath/ipath_driver.c b/drivers/infiniband/hw/ipath/ipath_driver.c
index d5ff6ca..ca4d0ac 100644
--- a/drivers/infiniband/hw/ipath/ipath_driver.c
+++ b/drivers/infiniband/hw/ipath/ipath_driver.c
@@ -851,8 +851,7 @@ void ipath_disarm_piobufs(struct ipath_devdata *dd, unsigned first,
  * -ETIMEDOUT state can have multiple states set, for any of several
  * transitions.
  */
-static int ipath_wait_linkstate(struct ipath_devdata *dd, u32 state,
-				int msecs)
+int ipath_wait_linkstate(struct ipath_devdata *dd, u32 state, int msecs)
 {
 	dd->ipath_state_wanted = state;
 	wait_event_interruptible_timeout(ipath_state_wait,
@@ -1656,8 +1655,8 @@ void ipath_cancel_sends(struct ipath_devdata *dd, int restore_sendctrl)
 static void ipath_set_ib_lstate(struct ipath_devdata *dd, int which)
 {
 	static const char *what[4] = {
-		[0] = "DOWN",
-		[INFINIPATH_IBCC_LINKCMD_INIT] = "INIT",
+		[0] = "NOP",
+		[INFINIPATH_IBCC_LINKCMD_DOWN] = "DOWN",
 		[INFINIPATH_IBCC_LINKCMD_ARMED] = "ARMED",
 		[INFINIPATH_IBCC_LINKCMD_ACTIVE] = "ACTIVE"
 	};
@@ -1672,9 +1671,9 @@ static void ipath_set_ib_lstate(struct ipath_devdata *dd, int which)
 			    (dd, dd->ipath_kregs->kr_ibcstatus) >>
 			    INFINIPATH_IBCS_LINKTRAININGSTATE_SHIFT) &
 			   INFINIPATH_IBCS_LINKTRAININGSTATE_MASK]);
-	/* flush all queued sends when going to DOWN or INIT, to be sure that
+	/* flush all queued sends when going to DOWN to be sure that
 	 * they don't block MAD packets */
-	if (!linkcmd || linkcmd == INFINIPATH_IBCC_LINKCMD_INIT)
+	if (linkcmd == INFINIPATH_IBCC_LINKCMD_DOWN)
 		ipath_cancel_sends(dd, 1);
 
 	ipath_write_kreg(dd, dd->ipath_kregs->kr_ibcctrl,
@@ -1687,6 +1686,13 @@ int ipath_set_linkstate(struct ipath_devdata *dd, u8 newstate)
 	int ret;
 
 	switch (newstate) {
+	case IPATH_IB_LINKDOWN_ONLY:
+		ipath_set_ib_lstate(dd, INFINIPATH_IBCC_LINKCMD_DOWN <<
+				    INFINIPATH_IBCC_LINKCMD_SHIFT);
+		/* don't wait */
+		ret = 0;
+		goto bail;
+
 	case IPATH_IB_LINKDOWN:
 		ipath_set_ib_lstate(dd, INFINIPATH_IBCC_LINKINITCMD_POLL <<
 				    INFINIPATH_IBCC_LINKINITCMD_SHIFT);
@@ -1709,16 +1715,6 @@ int ipath_set_linkstate(struct ipath_devdata *dd, u8 newstate)
 		ret = 0;
 		goto bail;
 
-	case IPATH_IB_LINKINIT:
-		if (dd->ipath_flags & IPATH_LINKINIT) {
-			ret = 0;
-			goto bail;
-		}
-		ipath_set_ib_lstate(dd, INFINIPATH_IBCC_LINKCMD_INIT <<
-				    INFINIPATH_IBCC_LINKCMD_SHIFT);
-		lstate = IPATH_LINKINIT;
-		break;
-
 	case IPATH_IB_LINKARM:
 		if (dd->ipath_flags & IPATH_LINKARMED) {
 			ret = 0;
diff --git a/drivers/infiniband/hw/ipath/ipath_kernel.h b/drivers/infiniband/hw/ipath/ipath_kernel.h
index 4cc0f95..ecf3f7f 100644
--- a/drivers/infiniband/hw/ipath/ipath_kernel.h
+++ b/drivers/infiniband/hw/ipath/ipath_kernel.h
@@ -767,6 +767,7 @@ void ipath_kreceive(struct ipath_portdata *);
 int ipath_setrcvhdrsize(struct ipath_devdata *, unsigned);
 int ipath_reset_device(int);
 void ipath_get_faststats(unsigned long);
+int ipath_wait_linkstate(struct ipath_devdata *, u32, int);
 int ipath_set_linkstate(struct ipath_devdata *, u8);
 int ipath_set_mtu(struct ipath_devdata *, u16);
 int ipath_set_lid(struct ipath_devdata *, u32, u8);
diff --git a/drivers/infiniband/hw/ipath/ipath_mad.c b/drivers/infiniband/hw/ipath/ipath_mad.c
index d98d5f1..b34b91d 100644
--- a/drivers/infiniband/hw/ipath/ipath_mad.c
+++ b/drivers/infiniband/hw/ipath/ipath_mad.c
@@ -555,10 +555,7 @@ static int recv_subn_set_portinfo(struct ib_smp *smp,
 		/* FALLTHROUGH */
 	case IB_PORT_DOWN:
 		if (lstate == 0)
-			if (get_linkdowndefaultstate(dd))
-				lstate = IPATH_IB_LINKDOWN_SLEEP;
-			else
-				lstate = IPATH_IB_LINKDOWN;
+			lstate = IPATH_IB_LINKDOWN_ONLY;
 		else if (lstate == 1)
 			lstate = IPATH_IB_LINKDOWN_SLEEP;
 		else if (lstate == 2)
@@ -568,6 +565,8 @@ static int recv_subn_set_portinfo(struct ib_smp *smp,
 		else
 			goto err;
 		ipath_set_linkstate(dd, lstate);
+		ipath_wait_linkstate(dd, IPATH_LINKINIT | IPATH_LINKARMED |
+				IPATH_LINKACTIVE, 1000);
 		break;
 	case IB_PORT_ARMED:
 		ipath_set_linkstate(dd, IPATH_IB_LINKARM);
diff --git a/drivers/infiniband/hw/ipath/ipath_qp.c b/drivers/infiniband/hw/ipath/ipath_qp.c
index 80dc623..087ed31 100644
--- a/drivers/infiniband/hw/ipath/ipath_qp.c
+++ b/drivers/infiniband/hw/ipath/ipath_qp.c
@@ -329,8 +329,9 @@ struct ipath_qp *ipath_lookup_qpn(struct ipath_qp_table *qpt, u32 qpn)
 /**
  * ipath_reset_qp - initialize the QP state to the reset state
  * @qp: the QP to reset
+ * @type: the QP type
  */
-static void ipath_reset_qp(struct ipath_qp *qp)
+static void ipath_reset_qp(struct ipath_qp *qp, enum ib_qp_type type)
 {
 	qp->remote_qpn = 0;
 	qp->qkey = 0;
@@ -342,7 +343,7 @@ static void ipath_reset_qp(struct ipath_qp *qp)
 	qp->s_psn = 0;
 	qp->r_psn = 0;
 	qp->r_msn = 0;
-	if (qp->ibqp.qp_type == IB_QPT_RC) {
+	if (type == IB_QPT_RC) {
 		qp->s_state = IB_OPCODE_RC_SEND_LAST;
 		qp->r_state = IB_OPCODE_RC_SEND_LAST;
 	} else {
@@ -414,7 +415,7 @@ int ipath_error_qp(struct ipath_qp *qp, enum ib_wc_status err)
 		wc.wr_id = qp->r_wr_id;
 		wc.opcode = IB_WC_RECV;
 		wc.status = err;
-		ipath_cq_enter(to_icq(qp->ibqp.send_cq), &wc, 1);
+		ipath_cq_enter(to_icq(qp->ibqp.recv_cq), &wc, 1);
 	}
 	wc.status = IB_WC_WR_FLUSH_ERR;
 
@@ -534,7 +535,7 @@ int ipath_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
 
 	switch (new_state) {
 	case IB_QPS_RESET:
-		ipath_reset_qp(qp);
+		ipath_reset_qp(qp, ibqp->qp_type);
 		break;
 
 	case IB_QPS_ERR:
@@ -647,7 +648,7 @@ int ipath_query_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
 	attr->port_num = 1;
 	attr->timeout = qp->timeout;
 	attr->retry_cnt = qp->s_retry_cnt;
-	attr->rnr_retry = qp->s_rnr_retry;
+	attr->rnr_retry = qp->s_rnr_retry_cnt;
 	attr->alt_port_num = 0;
 	attr->alt_timeout = 0;
 
@@ -839,7 +840,7 @@ struct ib_qp *ipath_create_qp(struct ib_pd *ibpd,
 			goto bail_qp;
 		}
 		qp->ip = NULL;
-		ipath_reset_qp(qp);
+		ipath_reset_qp(qp, init_attr->qp_type);
 		break;
 
 	default:
diff --git a/drivers/infiniband/hw/ipath/ipath_rc.c b/drivers/infiniband/hw/ipath/ipath_rc.c
index 459e46e..40f3e37 100644
--- a/drivers/infiniband/hw/ipath/ipath_rc.c
+++ b/drivers/infiniband/hw/ipath/ipath_rc.c
@@ -1196,6 +1196,10 @@ static inline void ipath_rc_rcv_resp(struct ipath_ibdev *dev,
 			list_move_tail(&qp->timerwait,
 				       &dev->pending[dev->pending_index]);
 		spin_unlock(&dev->pending_lock);
+
+		if (opcode == OP(RDMA_READ_RESPONSE_MIDDLE))
+			qp->s_retry = qp->s_retry_cnt;
+
 		/*
 		 * Update the RDMA receive state but do the copy w/o
 		 * holding the locks and blocking interrupts.
diff --git a/drivers/infiniband/hw/ipath/ipath_registers.h b/drivers/infiniband/hw/ipath/ipath_registers.h
index 6d2a17f..92ad73a 100644
--- a/drivers/infiniband/hw/ipath/ipath_registers.h
+++ b/drivers/infiniband/hw/ipath/ipath_registers.h
@@ -185,7 +185,7 @@
 #define INFINIPATH_IBCC_LINKINITCMD_SLEEP 3
 #define INFINIPATH_IBCC_LINKINITCMD_SHIFT 16
 #define INFINIPATH_IBCC_LINKCMD_MASK 0x3ULL
-#define INFINIPATH_IBCC_LINKCMD_INIT 1	/* move to 0x11 */
+#define INFINIPATH_IBCC_LINKCMD_DOWN 1	/* move to 0x11 */
 #define INFINIPATH_IBCC_LINKCMD_ARMED 2	/* move to 0x21 */
 #define INFINIPATH_IBCC_LINKCMD_ACTIVE 3	/* move to 0x31 */
 #define INFINIPATH_IBCC_LINKCMD_SHIFT 18
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
index 52b1beb..2490b2d 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
@@ -38,6 +38,7 @@
 #include <net/icmp.h>
 #include <linux/icmpv6.h>
 #include <linux/delay.h>
+#include <linux/vmalloc.h>
 
 #include "ipoib.h"
 
@@ -637,6 +638,7 @@ static inline int post_send(struct ipoib_dev_priv *priv,
 	priv->tx_sge[0].addr          = addr;
 	priv->tx_sge[0].length        = len;
 
+	priv->tx_wr.num_sge	= 1;
 	priv->tx_wr.wr_id	= wr_id | IPOIB_OP_CM;
 
 	return ib_post_send(tx->qp, &priv->tx_wr, &bad_wr);
@@ -1030,13 +1032,13 @@ static int ipoib_cm_tx_init(struct ipoib_cm_tx *p, u32 qpn,
 	struct ipoib_dev_priv *priv = netdev_priv(p->dev);
 	int ret;
 
-	p->tx_ring = kzalloc(ipoib_sendq_size * sizeof *p->tx_ring,
-				GFP_KERNEL);
+	p->tx_ring = vmalloc(ipoib_sendq_size * sizeof *p->tx_ring);
 	if (!p->tx_ring) {
 		ipoib_warn(priv, "failed to allocate tx ring\n");
 		ret = -ENOMEM;
 		goto err_tx;
 	}
+	memset(p->tx_ring, 0, ipoib_sendq_size * sizeof *p->tx_ring);
 
 	p->qp = ipoib_cm_create_tx_qp(p->dev, p);
 	if (IS_ERR(p->qp)) {
@@ -1077,6 +1079,7 @@ err_id:
 	ib_destroy_qp(p->qp);
 err_qp:
 	p->qp = NULL;
+	vfree(p->tx_ring);
 err_tx:
 	return ret;
 }
@@ -1127,7 +1130,7 @@ timeout:
 	if (p->qp)
 		ib_destroy_qp(p->qp);
 
-	kfree(p->tx_ring);
+	vfree(p->tx_ring);
 	kfree(p);
 }
 
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index f96477a..5728204 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -41,6 +41,7 @@
 #include <linux/init.h>
 #include <linux/slab.h>
 #include <linux/kernel.h>
+#include <linux/vmalloc.h>
 
 #include <linux/if_arp.h>	/* For ARPHRD_xxx */
 
@@ -887,13 +888,13 @@ int ipoib_dev_init(struct net_device *dev, struct ib_device *ca, int port)
 		goto out;
 	}
 
-	priv->tx_ring = kzalloc(ipoib_sendq_size * sizeof *priv->tx_ring,
-				GFP_KERNEL);
+	priv->tx_ring = vmalloc(ipoib_sendq_size * sizeof *priv->tx_ring);
 	if (!priv->tx_ring) {
 		printk(KERN_WARNING "%s: failed to allocate TX ring (%d entries)\n",
 		       ca->name, ipoib_sendq_size);
 		goto out_rx_ring_cleanup;
 	}
+	memset(priv->tx_ring, 0, ipoib_sendq_size * sizeof *priv->tx_ring);
 
 	/* priv->tx_head, tx_tail & tx_outstanding are already 0 */
 
@@ -903,7 +904,7 @@ int ipoib_dev_init(struct net_device *dev, struct ib_device *ca, int port)
 	return 0;
 
 out_tx_ring_cleanup:
-	kfree(priv->tx_ring);
+	vfree(priv->tx_ring);
 
 out_rx_ring_cleanup:
 	kfree(priv->rx_ring);
@@ -928,7 +929,7 @@ void ipoib_dev_cleanup(struct net_device *dev)
 	ipoib_ib_dev_cleanup(dev);
 
 	kfree(priv->rx_ring);
-	kfree(priv->tx_ring);
+	vfree(priv->tx_ring);
 
 	priv->rx_ring = NULL;
 	priv->tx_ring = NULL;
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
index 2628339..31a53c5 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
@@ -650,7 +650,7 @@ void ipoib_mcast_send(struct net_device *dev, void *mgid, struct sk_buff *skb)
 	 */
 	spin_lock(&priv->lock);
 
-	if (!test_bit(IPOIB_MCAST_STARTED, &priv->flags)	||
+	if (!test_bit(IPOIB_FLAG_OPER_UP, &priv->flags)		||
 	    !priv->broadcast					||
 	    !test_bit(IPOIB_MCAST_FLAG_ATTACHED, &priv->broadcast->flags)) {
 		++dev->stats.tx_dropped;

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-03-11  4:33 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-03-11  4:33 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get some more small post-2.6.25-rc5 fixes:

Arne Redlich (2):
      IB/iser: Fix list iteration bug
      IB/iser: Handle iser_device allocation error gracefully

Arthur Jones (1):
      MAINTAINERS: update ipath owner

Jon Mason (2):
      RDMA/cxgb3: Return correct max_inline_data when creating a QP
      RDMA/cxgb3: Fix iwch_create_cq() off-by-one error

Pete Wyckoff (2):
      Revert "IB/fmr_pool: ib_fmr_pool_flush() should flush all dirty FMRs"
      IB/fmr_pool: Flush all dirty FMRs from ib_fmr_pool_flush()

Sean Hefty (1):
      IB/cm: Flush workqueue when removing device

Steve Wise (1):
      RDMA/iwcm: Don't access a cm_id after dropping reference

 MAINTAINERS                                 |    2 +-
 drivers/infiniband/core/cm.c                |    3 +-
 drivers/infiniband/core/fmr_pool.c          |   38 ++++++++++++---------
 drivers/infiniband/core/iwcm.c              |    5 ++-
 drivers/infiniband/hw/cxgb3/iwch_provider.c |    5 ++-
 drivers/infiniband/ulp/iser/iser_verbs.c    |   47 ++++++++++++++-------------
 6 files changed, 56 insertions(+), 44 deletions(-)


diff --git a/MAINTAINERS b/MAINTAINERS
index fed09b5..f229e16 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2143,7 +2143,7 @@ L:	netdev@vger.kernel.org
 S:	Maintained
 
 IPATH DRIVER:
-P:	Arthur Jones
+P:	Ralph Campbell
 M:	infinipath@qlogic.com
 L:	general@lists.openfabrics.org
 T:	git git://git.qlogic.com/ipath-linux-2.6
diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
index b10ade9..4df4051 100644
--- a/drivers/infiniband/core/cm.c
+++ b/drivers/infiniband/core/cm.c
@@ -3759,6 +3759,7 @@ static void cm_remove_one(struct ib_device *device)
 		port = cm_dev->port[i-1];
 		ib_modify_port(device, port->port_num, 0, &port_modify);
 		ib_unregister_mad_agent(port->mad_agent);
+		flush_workqueue(cm.wq);
 		cm_remove_port_fs(port);
 	}
 	kobject_put(&cm_dev->dev_obj);
@@ -3813,6 +3814,7 @@ static void __exit ib_cm_cleanup(void)
 		cancel_delayed_work(&timewait_info->work.work);
 	spin_unlock_irq(&cm.lock);
 
+	ib_unregister_client(&cm_client);
 	destroy_workqueue(cm.wq);
 
 	list_for_each_entry_safe(timewait_info, tmp, &cm.timewait_list, list) {
@@ -3820,7 +3822,6 @@ static void __exit ib_cm_cleanup(void)
 		kfree(timewait_info);
 	}
 
-	ib_unregister_client(&cm_client);
 	class_unregister(&cm_class);
 	idr_destroy(&cm.local_id_table);
 }
diff --git a/drivers/infiniband/core/fmr_pool.c b/drivers/infiniband/core/fmr_pool.c
index 7f00347..06d502c 100644
--- a/drivers/infiniband/core/fmr_pool.c
+++ b/drivers/infiniband/core/fmr_pool.c
@@ -139,7 +139,7 @@ static inline struct ib_pool_fmr *ib_fmr_cache_lookup(struct ib_fmr_pool *pool,
 static void ib_fmr_batch_release(struct ib_fmr_pool *pool)
 {
 	int                 ret;
-	struct ib_pool_fmr *fmr, *next;
+	struct ib_pool_fmr *fmr;
 	LIST_HEAD(unmap_list);
 	LIST_HEAD(fmr_list);
 
@@ -158,20 +158,6 @@ static void ib_fmr_batch_release(struct ib_fmr_pool *pool)
 #endif
 	}
 
-	/*
-	 * The free_list may hold FMRs that have been put there
-	 * because they haven't reached the max_remap count.
-	 * Invalidate their mapping as well.
-	 */
-	list_for_each_entry_safe(fmr, next, &pool->free_list, list) {
-		if (fmr->remap_count == 0)
-			continue;
-		hlist_del_init(&fmr->cache_node);
-		fmr->remap_count = 0;
-		list_add_tail(&fmr->fmr->list, &fmr_list);
-		list_move(&fmr->list, &unmap_list);
-	}
-
 	list_splice(&pool->dirty_list, &unmap_list);
 	INIT_LIST_HEAD(&pool->dirty_list);
 	pool->dirty_len = 0;
@@ -384,6 +370,11 @@ void ib_destroy_fmr_pool(struct ib_fmr_pool *pool)
 
 	i = 0;
 	list_for_each_entry_safe(fmr, tmp, &pool->free_list, list) {
+		if (fmr->remap_count) {
+			INIT_LIST_HEAD(&fmr_list);
+			list_add_tail(&fmr->fmr->list, &fmr_list);
+			ib_unmap_fmr(&fmr_list);
+		}
 		ib_dealloc_fmr(fmr->fmr);
 		list_del(&fmr->list);
 		kfree(fmr);
@@ -407,8 +398,23 @@ EXPORT_SYMBOL(ib_destroy_fmr_pool);
  */
 int ib_flush_fmr_pool(struct ib_fmr_pool *pool)
 {
-	int serial = atomic_inc_return(&pool->req_ser);
+	int serial;
+	struct ib_pool_fmr *fmr, *next;
+
+	/*
+	 * The free_list holds FMRs that may have been used
+	 * but have not been remapped enough times to be dirty.
+	 * Put them on the dirty list now so that the cleanup
+	 * thread will reap them too.
+	 */
+	spin_lock_irq(&pool->pool_lock);
+	list_for_each_entry_safe(fmr, next, &pool->free_list, list) {
+		if (fmr->remap_count > 0)
+			list_move(&fmr->list, &pool->dirty_list);
+	}
+	spin_unlock_irq(&pool->pool_lock);
 
+	serial = atomic_inc_return(&pool->req_ser);
 	wake_up_process(pool->thread);
 
 	if (wait_event_interruptible(pool->force_wait,
diff --git a/drivers/infiniband/core/iwcm.c b/drivers/infiniband/core/iwcm.c
index 223b1aa..81c9195 100644
--- a/drivers/infiniband/core/iwcm.c
+++ b/drivers/infiniband/core/iwcm.c
@@ -839,6 +839,7 @@ static void cm_work_handler(struct work_struct *_work)
 	unsigned long flags;
 	int empty;
 	int ret = 0;
+	int destroy_id;
 
 	spin_lock_irqsave(&cm_id_priv->lock, flags);
 	empty = list_empty(&cm_id_priv->work_list);
@@ -857,9 +858,9 @@ static void cm_work_handler(struct work_struct *_work)
 			destroy_cm_id(&cm_id_priv->id);
 		}
 		BUG_ON(atomic_read(&cm_id_priv->refcount)==0);
+		destroy_id = test_bit(IWCM_F_CALLBACK_DESTROY, &cm_id_priv->flags);
 		if (iwcm_deref_id(cm_id_priv)) {
-			if (test_bit(IWCM_F_CALLBACK_DESTROY,
-				     &cm_id_priv->flags)) {
+			if (destroy_id) {
 				BUG_ON(!list_empty(&cm_id_priv->work_list));
 				free_cm_id(cm_id_priv);
 			}
diff --git a/drivers/infiniband/hw/cxgb3/iwch_provider.c b/drivers/infiniband/hw/cxgb3/iwch_provider.c
index df1838f..b2ea921 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_provider.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_provider.c
@@ -189,7 +189,7 @@ static struct ib_cq *iwch_create_cq(struct ib_device *ibdev, int entries, int ve
 		return ERR_PTR(-ENOMEM);
 	}
 	chp->rhp = rhp;
-	chp->ibcq.cqe = (1 << chp->cq.size_log2) - 1;
+	chp->ibcq.cqe = 1 << chp->cq.size_log2;
 	spin_lock_init(&chp->lock);
 	atomic_set(&chp->refcnt, 1);
 	init_waitqueue_head(&chp->wait);
@@ -819,8 +819,11 @@ static struct ib_qp *iwch_create_qp(struct ib_pd *pd,
 		kfree(qhp);
 		return ERR_PTR(-ENOMEM);
 	}
+
 	attrs->cap.max_recv_wr = rqsize - 1;
 	attrs->cap.max_send_wr = sqsize;
+	attrs->cap.max_inline_data = T3_MAX_INLINE;
+
 	qhp->rhp = rhp;
 	qhp->attr.pd = php->pdid;
 	qhp->attr.scq = ((struct iwch_cq *) attrs->send_cq)->cq.cqid;
diff --git a/drivers/infiniband/ulp/iser/iser_verbs.c b/drivers/infiniband/ulp/iser/iser_verbs.c
index 714b8db..993f0a8 100644
--- a/drivers/infiniband/ulp/iser/iser_verbs.c
+++ b/drivers/infiniband/ulp/iser/iser_verbs.c
@@ -237,36 +237,32 @@ static int iser_free_ib_conn_res(struct iser_conn *ib_conn)
 static
 struct iser_device *iser_device_find_by_ib_device(struct rdma_cm_id *cma_id)
 {
-	struct list_head    *p_list;
-	struct iser_device  *device = NULL;
+	struct iser_device *device;
 
 	mutex_lock(&ig.device_list_mutex);
 
-	p_list = ig.device_list.next;
-	while (p_list != &ig.device_list) {
-		device = list_entry(p_list, struct iser_device, ig_list);
+	list_for_each_entry(device, &ig.device_list, ig_list)
 		/* find if there's a match using the node GUID */
 		if (device->ib_device->node_guid == cma_id->device->node_guid)
-			break;
-	}
+			goto inc_refcnt;
 
-	if (device == NULL) {
-		device = kzalloc(sizeof *device, GFP_KERNEL);
-		if (device == NULL)
-			goto out;
-		/* assign this device to the device */
-		device->ib_device = cma_id->device;
-		/* init the device and link it into ig device list */
-		if (iser_create_device_ib_res(device)) {
-			kfree(device);
-			device = NULL;
-			goto out;
-		}
-		list_add(&device->ig_list, &ig.device_list);
+	device = kzalloc(sizeof *device, GFP_KERNEL);
+	if (device == NULL)
+		goto out;
+
+	/* assign this device to the device */
+	device->ib_device = cma_id->device;
+	/* init the device and link it into ig device list */
+	if (iser_create_device_ib_res(device)) {
+		kfree(device);
+		device = NULL;
+		goto out;
 	}
-out:
-	BUG_ON(device == NULL);
+	list_add(&device->ig_list, &ig.device_list);
+
+inc_refcnt:
 	device->refcount++;
+out:
 	mutex_unlock(&ig.device_list_mutex);
 	return device;
 }
@@ -372,6 +368,12 @@ static void iser_addr_handler(struct rdma_cm_id *cma_id)
 	int    ret;
 
 	device = iser_device_find_by_ib_device(cma_id);
+	if (!device) {
+		iser_err("device lookup/creation failed\n");
+		iser_connect_error(cma_id);
+		return;
+	}
+
 	ib_conn = (struct iser_conn *)cma_id->context;
 	ib_conn->device = device;
 
@@ -380,7 +382,6 @@ static void iser_addr_handler(struct rdma_cm_id *cma_id)
 		iser_err("resolve route failed: %d\n", ret);
 		iser_connect_error(cma_id);
 	}
-	return;
 }
 
 static void iser_route_handler(struct rdma_cm_id *cma_id)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-02-29 22:06 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-02-29 22:06 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get some more small post-2.6.25-rc3 fixes:

Arthur Jones (1):
      MAINTAINERS: update ipath owner

Jon Mason (1):
      RDMA/cxgb3: Return correct max_inline_data when creating a QP

Pete Wyckoff (2):
      Revert "IB/fmr_pool: ib_fmr_pool_flush() should flush all dirty FMRs"
      IB/fmr_pool: Flush all dirty FMRs from ib_fmr_pool_flush()

Sean Hefty (1):
      IB/cm: Flush workqueue when removing device

 MAINTAINERS                                 |    2 +-
 drivers/infiniband/core/cm.c                |    3 +-
 drivers/infiniband/core/fmr_pool.c          |   38 +++++++++++++++-----------
 drivers/infiniband/hw/cxgb3/iwch_provider.c |    3 ++
 4 files changed, 28 insertions(+), 18 deletions(-)


diff --git a/MAINTAINERS b/MAINTAINERS
index fed09b5..f229e16 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2143,7 +2143,7 @@ L:	netdev@vger.kernel.org
 S:	Maintained
 
 IPATH DRIVER:
-P:	Arthur Jones
+P:	Ralph Campbell
 M:	infinipath@qlogic.com
 L:	general@lists.openfabrics.org
 T:	git git://git.qlogic.com/ipath-linux-2.6
diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
index b10ade9..4df4051 100644
--- a/drivers/infiniband/core/cm.c
+++ b/drivers/infiniband/core/cm.c
@@ -3759,6 +3759,7 @@ static void cm_remove_one(struct ib_device *device)
 		port = cm_dev->port[i-1];
 		ib_modify_port(device, port->port_num, 0, &port_modify);
 		ib_unregister_mad_agent(port->mad_agent);
+		flush_workqueue(cm.wq);
 		cm_remove_port_fs(port);
 	}
 	kobject_put(&cm_dev->dev_obj);
@@ -3813,6 +3814,7 @@ static void __exit ib_cm_cleanup(void)
 		cancel_delayed_work(&timewait_info->work.work);
 	spin_unlock_irq(&cm.lock);
 
+	ib_unregister_client(&cm_client);
 	destroy_workqueue(cm.wq);
 
 	list_for_each_entry_safe(timewait_info, tmp, &cm.timewait_list, list) {
@@ -3820,7 +3822,6 @@ static void __exit ib_cm_cleanup(void)
 		kfree(timewait_info);
 	}
 
-	ib_unregister_client(&cm_client);
 	class_unregister(&cm_class);
 	idr_destroy(&cm.local_id_table);
 }
diff --git a/drivers/infiniband/core/fmr_pool.c b/drivers/infiniband/core/fmr_pool.c
index 7f00347..06d502c 100644
--- a/drivers/infiniband/core/fmr_pool.c
+++ b/drivers/infiniband/core/fmr_pool.c
@@ -139,7 +139,7 @@ static inline struct ib_pool_fmr *ib_fmr_cache_lookup(struct ib_fmr_pool *pool,
 static void ib_fmr_batch_release(struct ib_fmr_pool *pool)
 {
 	int                 ret;
-	struct ib_pool_fmr *fmr, *next;
+	struct ib_pool_fmr *fmr;
 	LIST_HEAD(unmap_list);
 	LIST_HEAD(fmr_list);
 
@@ -158,20 +158,6 @@ static void ib_fmr_batch_release(struct ib_fmr_pool *pool)
 #endif
 	}
 
-	/*
-	 * The free_list may hold FMRs that have been put there
-	 * because they haven't reached the max_remap count.
-	 * Invalidate their mapping as well.
-	 */
-	list_for_each_entry_safe(fmr, next, &pool->free_list, list) {
-		if (fmr->remap_count == 0)
-			continue;
-		hlist_del_init(&fmr->cache_node);
-		fmr->remap_count = 0;
-		list_add_tail(&fmr->fmr->list, &fmr_list);
-		list_move(&fmr->list, &unmap_list);
-	}
-
 	list_splice(&pool->dirty_list, &unmap_list);
 	INIT_LIST_HEAD(&pool->dirty_list);
 	pool->dirty_len = 0;
@@ -384,6 +370,11 @@ void ib_destroy_fmr_pool(struct ib_fmr_pool *pool)
 
 	i = 0;
 	list_for_each_entry_safe(fmr, tmp, &pool->free_list, list) {
+		if (fmr->remap_count) {
+			INIT_LIST_HEAD(&fmr_list);
+			list_add_tail(&fmr->fmr->list, &fmr_list);
+			ib_unmap_fmr(&fmr_list);
+		}
 		ib_dealloc_fmr(fmr->fmr);
 		list_del(&fmr->list);
 		kfree(fmr);
@@ -407,8 +398,23 @@ EXPORT_SYMBOL(ib_destroy_fmr_pool);
  */
 int ib_flush_fmr_pool(struct ib_fmr_pool *pool)
 {
-	int serial = atomic_inc_return(&pool->req_ser);
+	int serial;
+	struct ib_pool_fmr *fmr, *next;
+
+	/*
+	 * The free_list holds FMRs that may have been used
+	 * but have not been remapped enough times to be dirty.
+	 * Put them on the dirty list now so that the cleanup
+	 * thread will reap them too.
+	 */
+	spin_lock_irq(&pool->pool_lock);
+	list_for_each_entry_safe(fmr, next, &pool->free_list, list) {
+		if (fmr->remap_count > 0)
+			list_move(&fmr->list, &pool->dirty_list);
+	}
+	spin_unlock_irq(&pool->pool_lock);
 
+	serial = atomic_inc_return(&pool->req_ser);
 	wake_up_process(pool->thread);
 
 	if (wait_event_interruptible(pool->force_wait,
diff --git a/drivers/infiniband/hw/cxgb3/iwch_provider.c b/drivers/infiniband/hw/cxgb3/iwch_provider.c
index df1838f..ee3d63c 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_provider.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_provider.c
@@ -819,8 +819,11 @@ static struct ib_qp *iwch_create_qp(struct ib_pd *pd,
 		kfree(qhp);
 		return ERR_PTR(-ENOMEM);
 	}
+
 	attrs->cap.max_recv_wr = rqsize - 1;
 	attrs->cap.max_send_wr = sqsize;
+	attrs->cap.max_inline_data = T3_MAX_INLINE;
+
 	qhp->rhp = rhp;
 	qhp->attr.pd = php->pdid;
 	qhp->attr.scq = ((struct iwch_cq *) attrs->send_cq)->cq.cqid;

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-02-27  0:27 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-02-27  0:27 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a couple of small post-2.6.25-rc3 fixes, mostly to the
new nes driver:

Adrian Bunk (3):
      RDMA/nes: Fix off-by-one
      RDMA/nes: Fix a memory leak in schedule_nes_timer()
      RDMA/nes: Fix a check-after-use in nes_probe()

Bryan Rosenburg (1):
      RDMA/cxgb3: Fix shift calc in build_phys_page_list() for 1-entry page lists

Chien Tung (1):
      RDMA/nes: Resurrect error path dead code

Faisal Latif (2):
      RDMA/nes: Fix use-after-free in mini_cm_dec_refcnt_listen()
      RDMA/nes: Fix CRC endianness for RDMA connection establishment on big-endian

Glenn Streiff (1):
      RDMA/nes: Fix use-after-free in nes_create_cq()

John Lacombe (1):
      RDMA/nes: Fix interrupt moderation low threshold

Roland Dreier (1):
      MAINTAINERS: neteffect update

 MAINTAINERS                            |    2 ++
 drivers/infiniband/hw/cxgb3/iwch_mem.c |   10 ++--------
 drivers/infiniband/hw/nes/nes.c        |    2 +-
 drivers/infiniband/hw/nes/nes.h        |   15 +++++++++++++++
 drivers/infiniband/hw/nes/nes_cm.c     |   15 +++++++++------
 drivers/infiniband/hw/nes/nes_hw.c     |   13 +++++--------
 drivers/infiniband/hw/nes/nes_hw.h     |    2 +-
 drivers/infiniband/hw/nes/nes_verbs.c  |   10 ++++------
 8 files changed, 39 insertions(+), 30 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-02-19 18:51 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-02-19 18:51 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a couple of small post-2.6.25-rc2 fixes:

Pradeep Satyanarayana (1):
      IPoIB/cm: Fix ipoib_cm_dev_stop() cleanup when drain times out

Roland Dreier (1):
      IB/mthca: Free correct MPT on error exit from mthca_fmr_alloc()

 drivers/infiniband/hw/mthca/mthca_mr.c  |    2 +-
 drivers/infiniband/ulp/ipoib/ipoib_cm.c |   10 ++++++----
 2 files changed, 7 insertions(+), 5 deletions(-)


diff --git a/drivers/infiniband/hw/mthca/mthca_mr.c b/drivers/infiniband/hw/mthca/mthca_mr.c
index 3b69855..3538da1 100644
--- a/drivers/infiniband/hw/mthca/mthca_mr.c
+++ b/drivers/infiniband/hw/mthca/mthca_mr.c
@@ -686,7 +686,7 @@ err_out_table:
 	mthca_table_put(dev, dev->mr_table.mpt_table, key);
 
 err_out_mpt_free:
-	mthca_free(&dev->mr_table.mpt_alloc, mr->ibmr.lkey);
+	mthca_free(&dev->mr_table.mpt_alloc, key);
 	return err;
 }
 
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
index 7dd2ec4..52b1beb 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
@@ -824,7 +824,6 @@ void ipoib_cm_dev_stop(struct net_device *dev)
 	struct ipoib_dev_priv *priv = netdev_priv(dev);
 	struct ipoib_cm_rx *p;
 	unsigned long begin;
-	LIST_HEAD(list);
 	int ret;
 
 	if (!IPOIB_CM_SUPPORTED(dev->dev_addr) || !priv->cm.id)
@@ -857,9 +856,12 @@ void ipoib_cm_dev_stop(struct net_device *dev)
 			/*
 			 * assume the HW is wedged and just free up everything.
 			 */
-			list_splice_init(&priv->cm.rx_flush_list, &list);
-			list_splice_init(&priv->cm.rx_error_list, &list);
-			list_splice_init(&priv->cm.rx_drain_list, &list);
+			list_splice_init(&priv->cm.rx_flush_list,
+					 &priv->cm.rx_reap_list);
+			list_splice_init(&priv->cm.rx_error_list,
+					 &priv->cm.rx_reap_list);
+			list_splice_init(&priv->cm.rx_drain_list,
+					 &priv->cm.rx_reap_list);
 			break;
 		}
 		spin_unlock_irq(&priv->lock);

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-02-18 20:35 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-02-18 20:35 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a few post-2.6.25-rc2 fixes, mostly for the new nes driver:

Chien Tung (1):
      RDMA/nes: Fix VLAN support

Glenn Streiff (1):
      RDMA/nes: Fix MAC interrupt erroneously masked on ifdown

Li Zefan (1):
      IB: Fix return value in ib_device_register_sysfs()

Roland Dreier (1):
      RDMA/nes: Fix possible array overrun

 drivers/infiniband/core/sysfs.c       |    4 ++-
 drivers/infiniband/hw/nes/nes_nic.c   |   62 +++++++++++++++++++++++---------
 drivers/infiniband/hw/nes/nes_verbs.c |    2 +-
 3 files changed, 48 insertions(+), 20 deletions(-)


diff --git a/drivers/infiniband/core/sysfs.c b/drivers/infiniband/core/sysfs.c
index c864ef7..5a4b2e6 100644
--- a/drivers/infiniband/core/sysfs.c
+++ b/drivers/infiniband/core/sysfs.c
@@ -686,8 +686,10 @@ int ib_device_register_sysfs(struct ib_device *device)
 
 	device->ports_parent = kobject_create_and_add("ports",
 					kobject_get(&class_dev->kobj));
-	if (!device->ports_parent)
+	if (!device->ports_parent) {
+		ret = -ENOMEM;
 		goto err_put;
+	}
 
 	if (device->node_type == RDMA_NODE_IB_SWITCH) {
 		ret = add_port(device, 0);
diff --git a/drivers/infiniband/hw/nes/nes_nic.c b/drivers/infiniband/hw/nes/nes_nic.c
index b6cc265..eee77da 100644
--- a/drivers/infiniband/hw/nes/nes_nic.c
+++ b/drivers/infiniband/hw/nes/nes_nic.c
@@ -148,14 +148,15 @@ static int nes_netdev_open(struct net_device *netdev)
 	struct nes_device *nesdev = nesvnic->nesdev;
 	int ret;
 	int i;
-	struct nes_vnic *first_nesvnic;
+	struct nes_vnic *first_nesvnic = NULL;
 	u32 nic_active_bit;
 	u32 nic_active;
+	struct list_head *list_pos, *list_temp;
 
 	assert(nesdev != NULL);
 
-	first_nesvnic = list_entry(nesdev->nesadapter->nesvnic_list[nesdev->mac_index].next,
-			struct nes_vnic, list);
+	if (nesvnic->netdev_open == 1)
+		return 0;
 
 	if (netif_msg_ifup(nesvnic))
 		printk(KERN_INFO PFX "%s: enabling interface\n", netdev->name);
@@ -225,7 +226,18 @@ static int nes_netdev_open(struct net_device *netdev)
 	nes_write32(nesdev->regs+NES_CQE_ALLOC, NES_CQE_ALLOC_NOTIFY_NEXT |
 			nesvnic->nic_cq.cq_number);
 	nes_read32(nesdev->regs+NES_CQE_ALLOC);
-
+	list_for_each_safe(list_pos, list_temp, &nesdev->nesadapter->nesvnic_list[nesdev->mac_index]) {
+		first_nesvnic = container_of(list_pos, struct nes_vnic, list);
+		if (first_nesvnic->netdev_open == 1)
+			break;
+	}
+	if (first_nesvnic->netdev_open == 0) {
+		nes_debug(NES_DBG_INIT, "Setting up MAC interrupt mask.\n");
+		nes_write_indexed(nesdev, NES_IDX_MAC_INT_MASK + (0x200 * nesdev->mac_index),
+				~(NES_MAC_INT_LINK_STAT_CHG | NES_MAC_INT_XGMII_EXT |
+				NES_MAC_INT_TX_UNDERFLOW | NES_MAC_INT_TX_ERROR));
+		first_nesvnic = nesvnic;
+	}
 	if (first_nesvnic->linkup) {
 		/* Enable network packets */
 		nesvnic->linkup = 1;
@@ -248,6 +260,8 @@ static int nes_netdev_stop(struct net_device *netdev)
 	struct nes_device *nesdev = nesvnic->nesdev;
 	u32 nic_active_mask;
 	u32 nic_active;
+	struct nes_vnic *first_nesvnic = NULL;
+	struct list_head *list_pos, *list_temp;
 
 	nes_debug(NES_DBG_SHUTDOWN, "nesvnic=%p, nesdev=%p, netdev=%p %s\n",
 			nesvnic, nesdev, netdev, netdev->name);
@@ -260,9 +274,20 @@ static int nes_netdev_stop(struct net_device *netdev)
 	/* Disable network packets */
 	napi_disable(&nesvnic->napi);
 	netif_stop_queue(netdev);
-	if ((nesdev->netdev[0] == netdev) & (nesvnic->logical_port == nesdev->mac_index)) {
-		nes_write_indexed(nesdev,
-				NES_IDX_MAC_INT_MASK+(0x200*nesdev->mac_index), 0xffffffff);
+	list_for_each_safe(list_pos, list_temp, &nesdev->nesadapter->nesvnic_list[nesdev->mac_index]) {
+		first_nesvnic = container_of(list_pos, struct nes_vnic, list);
+		if ((first_nesvnic->netdev_open == 1) && (first_nesvnic != nesvnic))
+			break;
+	}
+
+	if (first_nesvnic->netdev_open == 0)
+		nes_write_indexed(nesdev, NES_IDX_MAC_INT_MASK+(0x200*nesdev->mac_index), 0xffffffff);
+	else if ((first_nesvnic != nesvnic) &&
+		 (PCI_FUNC(first_nesvnic->nesdev->pcidev->devfn) != PCI_FUNC(nesvnic->nesdev->pcidev->devfn))) {
+		nes_write_indexed(nesdev, NES_IDX_MAC_INT_MASK + (0x200 * nesdev->mac_index), 0xffffffff);
+		nes_write_indexed(first_nesvnic->nesdev, NES_IDX_MAC_INT_MASK + (0x200 * first_nesvnic->nesdev->mac_index),
+				~(NES_MAC_INT_LINK_STAT_CHG | NES_MAC_INT_XGMII_EXT |
+				NES_MAC_INT_TX_UNDERFLOW | NES_MAC_INT_TX_ERROR));
 	}
 
 	nic_active_mask = ~((u32)(1 << nesvnic->nic_index));
@@ -859,7 +884,6 @@ void nes_netdev_set_multicast_list(struct net_device *netdev)
 		for (mc_index=0; mc_index < NES_MULTICAST_PF_MAX; mc_index++) {
 			while (multicast_addr && nesvnic->mcrq_mcast_filter && ((mc_nic_index = nesvnic->mcrq_mcast_filter(nesvnic, multicast_addr->dmi_addr)) == 0))
 				multicast_addr = multicast_addr->next;
-
 			if (mc_nic_index < 0)
 				mc_nic_index = nesvnic->nic_index;
 			if (multicast_addr) {
@@ -908,7 +932,7 @@ static int nes_netdev_change_mtu(struct	net_device *netdev,	int	new_mtu)
 		return -EINVAL;
 
 	netdev->mtu	= new_mtu;
-	nesvnic->max_frame_size	= new_mtu+ETH_HLEN;
+	nesvnic->max_frame_size	= new_mtu + VLAN_ETH_HLEN;
 
 	if (netdev->mtu	> 1500)	{
 		jumbomode=1;
@@ -1470,10 +1494,15 @@ static void nes_netdev_vlan_rx_register(struct net_device *netdev, struct vlan_g
 {
 	struct nes_vnic *nesvnic = netdev_priv(netdev);
 	struct nes_device *nesdev = nesvnic->nesdev;
+	struct nes_adapter *nesadapter = nesdev->nesadapter;
 	u32 u32temp;
+	unsigned long flags;
 
+	spin_lock_irqsave(&nesadapter->phy_lock, flags);
 	nesvnic->vlan_grp = grp;
 
+	nes_debug(NES_DBG_NETDEV, "%s: %s\n", __func__, netdev->name);
+
 	/* Enable/Disable VLAN Stripping */
 	u32temp = nes_read_indexed(nesdev, NES_IDX_PCIX_DIAG);
 	if (grp)
@@ -1482,6 +1511,7 @@ static void nes_netdev_vlan_rx_register(struct net_device *netdev, struct vlan_g
 		u32temp	|= 0x02000000;
 
 	nes_write_indexed(nesdev, NES_IDX_PCIX_DIAG, u32temp);
+	spin_unlock_irqrestore(&nesadapter->phy_lock, flags);
 }
 
 
@@ -1540,7 +1570,7 @@ struct net_device *nes_netdev_init(struct nes_device *nesdev,
 	nesvnic->msg_enable = netif_msg_init(debug, default_msg);
 	nesvnic->netdev_index = nesdev->netdev_count;
 	nesvnic->perfect_filter_index = nesdev->nesadapter->netdev_count;
-	nesvnic->max_frame_size = netdev->mtu+netdev->hard_header_len;
+	nesvnic->max_frame_size = netdev->mtu + netdev->hard_header_len + VLAN_HLEN;
 
 	curr_qp_map = nic_qp_mapping_per_function[PCI_FUNC(nesdev->pcidev->devfn)];
 	nesvnic->nic.qp_id = curr_qp_map[nesdev->netdev_count].qpid;
@@ -1610,7 +1640,7 @@ struct net_device *nes_netdev_init(struct nes_device *nesdev,
 	list_add_tail(&nesvnic->list, &nesdev->nesadapter->nesvnic_list[nesdev->mac_index]);
 
 	if ((nesdev->netdev_count == 0) &&
-			(PCI_FUNC(nesdev->pcidev->devfn) == nesdev->mac_index)) {
+	    (PCI_FUNC(nesdev->pcidev->devfn) == nesdev->mac_index)) {
 		nes_debug(NES_DBG_INIT, "Setting up PHY interrupt mask. Using register index 0x%04X\n",
 				NES_IDX_PHY_PCS_CONTROL_STATUS0+(0x200*(nesvnic->logical_port&1)));
 		u32temp = nes_read_indexed(nesdev, NES_IDX_PHY_PCS_CONTROL_STATUS0 +
@@ -1648,18 +1678,14 @@ struct net_device *nes_netdev_init(struct nes_device *nesdev,
 				nesvnic->linkup = 1;
 			}
 		}
-		nes_debug(NES_DBG_INIT, "Setting up MAC interrupt mask.\n");
 		/* clear the MAC interrupt status, assumes direct logical to physical mapping */
-		u32temp = nes_read_indexed(nesdev, NES_IDX_MAC_INT_STATUS+(0x200*nesvnic->logical_port));
+		u32temp = nes_read_indexed(nesdev, NES_IDX_MAC_INT_STATUS + (0x200 * nesdev->mac_index));
 		nes_debug(NES_DBG_INIT, "Phy interrupt status = 0x%X.\n", u32temp);
-		nes_write_indexed(nesdev, NES_IDX_MAC_INT_STATUS+(0x200*nesvnic->logical_port), u32temp);
+		nes_write_indexed(nesdev, NES_IDX_MAC_INT_STATUS + (0x200 * nesdev->mac_index), u32temp);
 
-		if (nesdev->nesadapter->phy_type[nesvnic->logical_port] != NES_PHY_TYPE_IRIS)
+		if (nesdev->nesadapter->phy_type[nesdev->mac_index] != NES_PHY_TYPE_IRIS)
 			nes_init_phy(nesdev);
 
-		nes_write_indexed(nesdev, NES_IDX_MAC_INT_MASK+(0x200*nesvnic->logical_port),
-				~(NES_MAC_INT_LINK_STAT_CHG | NES_MAC_INT_XGMII_EXT |
-				NES_MAC_INT_TX_UNDERFLOW | NES_MAC_INT_TX_ERROR));
 	}
 
 	return netdev;
diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c
index ffd4b42..4dafbe1 100644
--- a/drivers/infiniband/hw/nes/nes_verbs.c
+++ b/drivers/infiniband/hw/nes/nes_verbs.c
@@ -1337,7 +1337,7 @@ static struct ib_qp *nes_create_qp(struct ib_pd *ibpd,
 								   NES_MAX_USER_WQ_REGIONS, nes_ucontext->first_free_wq);
 					/* nes_debug(NES_DBG_QP, "find_first_zero_biton wqs returned %u\n",
 							nespd->mmap_db_index); */
-					if (nesqp->mmap_sq_db_index > NES_MAX_USER_WQ_REGIONS) {
+					if (nesqp->mmap_sq_db_index >= NES_MAX_USER_WQ_REGIONS) {
 						nes_debug(NES_DBG_QP,
 							  "db index > max user regions, failing create QP\n");
 						nes_free_resource(nesadapter, nesadapter->allocated_qps, qp_num);

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-02-14 23:31 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-02-14 23:31 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-kernel, general

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a few post-2.6.25-rc1 fixes:

Eli Cohen (1):
      IPoIB: Remove unused struct ipoib_cm_tx.ibwc member

Jack Morgenstein (3):
      IPoIB: On P_Key change event, reset state properly
      IB/mlx4: mlx4_ib_fmr_alloc() should call mlx4_fmr_enable()
      mlx4_core: Move table_find from fmr_alloc to fmr_enable

Marcin Slusarz (1):
      IB/mthca: Convert to use be16_add_cpu()

Roland Dreier (3):
      IB/mthca: Add missing sg_init_table() in mthca_map_user_db()
      IB/cm: Remove debug printk()s that snuck upstream
      IB/cm: Fix infiniband_cm class kobject ref counting

Sean Hefty (1):
      RDMA/cma: Do not issue MRA if user rejects connection request

Steve Wise (1):
      RDMA/cxgb3: Fail loopback connections

 drivers/infiniband/core/cm.c                |   26 ++++++++------------------
 drivers/infiniband/core/cma.c               |   10 +++++++++-
 drivers/infiniband/hw/cxgb3/iwch_cm.c       |   17 +++++++++++++++++
 drivers/infiniband/hw/mlx4/mr.c             |    2 +-
 drivers/infiniband/hw/mthca/mthca_cq.c      |    2 +-
 drivers/infiniband/hw/mthca/mthca_memfree.c |    1 +
 drivers/infiniband/ulp/ipoib/ipoib.h        |    1 -
 drivers/infiniband/ulp/ipoib/ipoib_ib.c     |    1 +
 drivers/net/mlx4/mr.c                       |   21 +++++++++++++--------
 9 files changed, 51 insertions(+), 30 deletions(-)


diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
index 638b727..b10ade9 100644
--- a/drivers/infiniband/core/cm.c
+++ b/drivers/infiniband/core/cm.c
@@ -3587,8 +3587,6 @@ static void cm_release_port_obj(struct kobject *obj)
 {
 	struct cm_port *cm_port;
 
-	printk(KERN_ERR "free cm port\n");
-
 	cm_port = container_of(obj, struct cm_port, port_obj);
 	kfree(cm_port);
 }
@@ -3601,8 +3599,6 @@ static void cm_release_dev_obj(struct kobject *obj)
 {
 	struct cm_device *cm_dev;
 
-	printk(KERN_ERR "free cm dev\n");
-
 	cm_dev = container_of(obj, struct cm_device, dev_obj);
 	kfree(cm_dev);
 }
@@ -3616,18 +3612,12 @@ struct class cm_class = {
 };
 EXPORT_SYMBOL(cm_class);
 
-static void cm_remove_fs_obj(struct kobject *obj)
-{
-	kobject_put(obj->parent);
-	kobject_put(obj);
-}
-
 static int cm_create_port_fs(struct cm_port *port)
 {
 	int i, ret;
 
 	ret = kobject_init_and_add(&port->port_obj, &cm_port_obj_type,
-				   kobject_get(&port->cm_dev->dev_obj),
+				   &port->cm_dev->dev_obj,
 				   "%d", port->port_num);
 	if (ret) {
 		kfree(port);
@@ -3637,7 +3627,7 @@ static int cm_create_port_fs(struct cm_port *port)
 	for (i = 0; i < CM_COUNTER_GROUPS; i++) {
 		ret = kobject_init_and_add(&port->counter_group[i].obj,
 					   &cm_counter_obj_type,
-					   kobject_get(&port->port_obj),
+					   &port->port_obj,
 					   "%s", counter_group_names[i]);
 		if (ret)
 			goto error;
@@ -3647,8 +3637,8 @@ static int cm_create_port_fs(struct cm_port *port)
 
 error:
 	while (i--)
-		cm_remove_fs_obj(&port->counter_group[i].obj);
-	cm_remove_fs_obj(&port->port_obj);
+		kobject_put(&port->counter_group[i].obj);
+	kobject_put(&port->port_obj);
 	return ret;
 
 }
@@ -3658,9 +3648,9 @@ static void cm_remove_port_fs(struct cm_port *port)
 	int i;
 
 	for (i = 0; i < CM_COUNTER_GROUPS; i++)
-		cm_remove_fs_obj(&port->counter_group[i].obj);
+		kobject_put(&port->counter_group[i].obj);
 
-	cm_remove_fs_obj(&port->port_obj);
+	kobject_put(&port->port_obj);
 }
 
 static void cm_add_one(struct ib_device *device)
@@ -3744,7 +3734,7 @@ error1:
 		ib_unregister_mad_agent(port->mad_agent);
 		cm_remove_port_fs(port);
 	}
-	cm_remove_fs_obj(&cm_dev->dev_obj);
+	kobject_put(&cm_dev->dev_obj);
 }
 
 static void cm_remove_one(struct ib_device *device)
@@ -3771,7 +3761,7 @@ static void cm_remove_one(struct ib_device *device)
 		ib_unregister_mad_agent(port->mad_agent);
 		cm_remove_port_fs(port);
 	}
-	cm_remove_fs_obj(&cm_dev->dev_obj);
+	kobject_put(&cm_dev->dev_obj);
 }
 
 static int __init ib_cm_init(void)
diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 1eff1b2..34507da 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -1107,7 +1107,6 @@ static int cma_req_handler(struct ib_cm_id *cm_id, struct ib_cm_event *ib_event)
 		event.param.ud.private_data_len =
 				IB_CM_SIDR_REQ_PRIVATE_DATA_SIZE - offset;
 	} else {
-		ib_send_cm_mra(cm_id, CMA_CM_MRA_SETTING, NULL, 0);
 		conn_id = cma_new_conn_id(&listen_id->id, ib_event);
 		cma_set_req_event_data(&event, &ib_event->param.req_rcvd,
 				       ib_event->private_data, offset);
@@ -1130,6 +1129,15 @@ static int cma_req_handler(struct ib_cm_id *cm_id, struct ib_cm_event *ib_event)
 
 	ret = conn_id->id.event_handler(&conn_id->id, &event);
 	if (!ret) {
+		/*
+		 * Acquire mutex to prevent user executing rdma_destroy_id()
+		 * while we're accessing the cm_id.
+		 */
+		mutex_lock(&lock);
+		if (cma_comp(conn_id, CMA_CONNECT) &&
+		    !cma_is_ud_ps(conn_id->id.ps))
+			ib_send_cm_mra(cm_id, CMA_CM_MRA_SETTING, NULL, 0);
+		mutex_unlock(&lock);
 		cma_enable_remove(conn_id);
 		goto out;
 	}
diff --git a/drivers/infiniband/hw/cxgb3/iwch_cm.c b/drivers/infiniband/hw/cxgb3/iwch_cm.c
index e9a08fa..320f2b6 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_cm.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_cm.c
@@ -35,6 +35,7 @@
 #include <linux/skbuff.h>
 #include <linux/timer.h>
 #include <linux/notifier.h>
+#include <linux/inetdevice.h>
 
 #include <net/neighbour.h>
 #include <net/netevent.h>
@@ -1784,6 +1785,17 @@ err:
 	return err;
 }
 
+static int is_loopback_dst(struct iw_cm_id *cm_id)
+{
+	struct net_device *dev;
+
+	dev = ip_dev_find(&init_net, cm_id->remote_addr.sin_addr.s_addr);
+	if (!dev)
+		return 0;
+	dev_put(dev);
+	return 1;
+}
+
 int iwch_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
 {
 	int err = 0;
@@ -1791,6 +1803,11 @@ int iwch_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
 	struct iwch_ep *ep;
 	struct rtable *rt;
 
+	if (is_loopback_dst(cm_id)) {
+		err = -ENOSYS;
+		goto out;
+	}
+
 	ep = alloc_ep(sizeof(*ep), GFP_KERNEL);
 	if (!ep) {
 		printk(KERN_ERR MOD "%s - cannot alloc ep.\n", __FUNCTION__);
diff --git a/drivers/infiniband/hw/mlx4/mr.c b/drivers/infiniband/hw/mlx4/mr.c
index 7dc91a3..fe2c2e9 100644
--- a/drivers/infiniband/hw/mlx4/mr.c
+++ b/drivers/infiniband/hw/mlx4/mr.c
@@ -199,7 +199,7 @@ struct ib_fmr *mlx4_ib_fmr_alloc(struct ib_pd *pd, int acc,
 	if (err)
 		goto err_free;
 
-	err = mlx4_mr_enable(to_mdev(pd->device)->dev, &fmr->mfmr.mr);
+	err = mlx4_fmr_enable(to_mdev(pd->device)->dev, &fmr->mfmr);
 	if (err)
 		goto err_mr;
 
diff --git a/drivers/infiniband/hw/mthca/mthca_cq.c b/drivers/infiniband/hw/mthca/mthca_cq.c
index 6bd9f13..1e1e336 100644
--- a/drivers/infiniband/hw/mthca/mthca_cq.c
+++ b/drivers/infiniband/hw/mthca/mthca_cq.c
@@ -473,7 +473,7 @@ static void handle_error_cqe(struct mthca_dev *dev, struct mthca_cq *cq,
 	if (!(new_wqe & cpu_to_be32(0x3f)) || (!cqe->db_cnt && dbd))
 		return;
 
-	cqe->db_cnt   = cpu_to_be16(be16_to_cpu(cqe->db_cnt) - dbd);
+	be16_add_cpu(&cqe->db_cnt, -dbd);
 	cqe->wqe      = new_wqe;
 	cqe->syndrome = SYNDROME_WR_FLUSH_ERR;
 
diff --git a/drivers/infiniband/hw/mthca/mthca_memfree.c b/drivers/infiniband/hw/mthca/mthca_memfree.c
index 1f4d27d..252db08 100644
--- a/drivers/infiniband/hw/mthca/mthca_memfree.c
+++ b/drivers/infiniband/hw/mthca/mthca_memfree.c
@@ -542,6 +542,7 @@ struct mthca_user_db_table *mthca_init_user_db_tab(struct mthca_dev *dev)
 	for (i = 0; i < npages; ++i) {
 		db_tab->page[i].refcount = 0;
 		db_tab->page[i].uvirt    = 0;
+		sg_init_table(&db_tab->page[i].mem, 1);
 	}
 
 	return db_tab;
diff --git a/drivers/infiniband/ulp/ipoib/ipoib.h b/drivers/infiniband/ulp/ipoib/ipoib.h
index f9b7caa..054fab8 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib.h
+++ b/drivers/infiniband/ulp/ipoib/ipoib.h
@@ -209,7 +209,6 @@ struct ipoib_cm_tx {
 	unsigned	     tx_tail;
 	unsigned long	     flags;
 	u32		     mtu;
-	struct ib_wc	     ibwc[IPOIB_NUM_WC];
 };
 
 struct ipoib_cm_rx_buf {
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_ib.c b/drivers/infiniband/ulp/ipoib/ipoib_ib.c
index 9d3e778..08c4396 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_ib.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_ib.c
@@ -780,6 +780,7 @@ static void __ipoib_ib_dev_flush(struct ipoib_dev_priv *priv, int pkey_event)
 		if (ib_find_pkey(priv->ca, priv->port, priv->pkey, &new_index)) {
 			clear_bit(IPOIB_PKEY_ASSIGNED, &priv->flags);
 			ipoib_ib_dev_down(dev, 0);
+			ipoib_ib_dev_stop(dev, 0);
 			ipoib_pkey_dev_delay_open(dev);
 			return;
 		}
diff --git a/drivers/net/mlx4/mr.c b/drivers/net/mlx4/mr.c
index 679dfdb..79b317b 100644
--- a/drivers/net/mlx4/mr.c
+++ b/drivers/net/mlx4/mr.c
@@ -578,13 +578,6 @@ int mlx4_fmr_alloc(struct mlx4_dev *dev, u32 pd, u32 access, int max_pages,
 		goto err_free;
 	}
 
-	fmr->mpt = mlx4_table_find(&priv->mr_table.dmpt_table,
-				    key_to_hw_index(fmr->mr.key), NULL);
-	if (!fmr->mpt) {
-		err = -ENOMEM;
-		goto err_free;
-	}
-
 	return 0;
 
 err_free:
@@ -595,7 +588,19 @@ EXPORT_SYMBOL_GPL(mlx4_fmr_alloc);
 
 int mlx4_fmr_enable(struct mlx4_dev *dev, struct mlx4_fmr *fmr)
 {
-	return mlx4_mr_enable(dev, &fmr->mr);
+	struct mlx4_priv *priv = mlx4_priv(dev);
+	int err;
+
+	err = mlx4_mr_enable(dev, &fmr->mr);
+	if (err)
+		return err;
+
+	fmr->mpt = mlx4_table_find(&priv->mr_table.dmpt_table,
+				    key_to_hw_index(fmr->mr.key), NULL);
+	if (!fmr->mpt)
+		return -ENOMEM;
+
+	return 0;
 }
 EXPORT_SYMBOL_GPL(mlx4_fmr_enable);
 

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-02-11 22:25 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-02-11 22:25 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: linux-kernel, general

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get one build fix:

Olof Johansson (1):
      mlx4_core: Fix build break (missing include)

 drivers/net/mlx4/alloc.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)


diff --git a/drivers/net/mlx4/alloc.c b/drivers/net/mlx4/alloc.c
index 521dc03..75ef9d0 100644
--- a/drivers/net/mlx4/alloc.c
+++ b/drivers/net/mlx4/alloc.c
@@ -34,6 +34,7 @@
 #include <linux/slab.h>
 #include <linux/bitmap.h>
 #include <linux/dma-mapping.h>
+#include <linux/vmalloc.h>
 
 #include "mlx4.h"
 

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-02-08 23:16 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-02-08 23:16 UTC (permalink / raw)
  To: torvalds, akpm; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get the last batch of InfiniBand/RDMA merges for 2.6.25,
mostly preparation for enabling stateless offloads for IP-over-InfiniBand.

Eli Cohen (3):
      IPoIB: Add high DMA feature flag
      IPoIB: Add send gather support
      IB/core: Add IP checksum offload support

Jack Morgenstein (2):
      mlx4_core: For 64-bit systems, vmap() kernel queue buffers
      IB/mlx4: Use multiple WQ blocks to post smaller send WQEs

Roland Dreier (3):
      IB/mlx4: Consolidate code to get an entry from a struct mlx4_buf
      mlx4_core: Clean up struct mlx4_buf
      IB/core: Remove unused struct ib_device.flags member

 drivers/infiniband/hw/mlx4/cq.c            |   20 ++--
 drivers/infiniband/hw/mlx4/mlx4_ib.h       |    2 +
 drivers/infiniband/hw/mlx4/qp.c            |  216 +++++++++++++++++++++++-----
 drivers/infiniband/hw/mlx4/srq.c           |    8 +-
 drivers/infiniband/ulp/ipoib/ipoib.h       |    4 +-
 drivers/infiniband/ulp/ipoib/ipoib_cm.c    |   10 +-
 drivers/infiniband/ulp/ipoib/ipoib_ib.c    |   89 +++++++++---
 drivers/infiniband/ulp/ipoib/ipoib_main.c  |    4 +-
 drivers/infiniband/ulp/ipoib/ipoib_verbs.c |   10 +-
 drivers/net/mlx4/alloc.c                   |   48 ++++--
 drivers/net/mlx4/mr.c                      |    4 +-
 include/linux/mlx4/device.h                |   19 ++-
 include/linux/mlx4/qp.h                    |    4 +
 include/rdma/ib_verbs.h                    |   16 ++-
 14 files changed, 342 insertions(+), 112 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-02-05  4:49 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-02-05  4:49 UTC (permalink / raw)
  To: torvalds; +Cc: linux-kernel, general, gstreiff

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a second batch of InfiniBand/RDMA batches.  In addition
to the usual motley crew of changes, this pull includes a new driver
for NetEffect RNICs in drivers/infiniband/hw/nes.  The code could use
some further cleaning, but I don't think it's worth holding off on the
merge.

David Dillow (1):
      IB/srp: Retry stale connections

Eli Cohen (2):
      IB/mthca: Remove checks for srq->first_free < 0
      IB/ib_mthca: Pre-link receive WQEs in Tavor mode

Glenn Streiff (1):
      RDMA/nes: Add a driver for NetEffect RNICs

Hoang-Nam Nguyen (1):
      IB/ehca: Add PMA support

Jack Morgenstein (2):
      IB/mthca: Don't read reserved fields in mthca_QUERY_ADAPTER()
      mlx4_core: Don't read reserved fields in mlx4_QUERY_ADAPTER()

Joachim Fenkes (2):
      IB/ehca: Prevent sending UD packets to QP0
      IB/ehca: Update sma_attr also in case of disruptive config change

Olaf Kirch (1):
      IB/mthca: Return proper error codes from mthca_fmr_alloc()

Or Gerlitz (3):
      IPoIB: Handle bonding failover race for connected neighbours too
      IPoIB: Remove a misleading debug print
      IB/fmr_pool: Allocate page list for pool FMRs only when caching enabled

Roland Dreier (4):
      mlx4_core: Fix more section mismatches
      IB/mthca: Fix and simplify page size calculation in mthca_reg_phys_mr()
      IB/mlx4: Actually print out the driver version
      IB: Avoid marking __devinitdata as const

Sean Hefty (1):
      IB/cm: Add interim support for routed paths

 MAINTAINERS                                  |   10 +
 drivers/infiniband/Kconfig                   |    2 +-
 drivers/infiniband/Makefile                  |    1 +
 drivers/infiniband/core/cm.c                 |   89 +-
 drivers/infiniband/core/fmr_pool.c           |    7 +-
 drivers/infiniband/hw/ehca/ehca_classes.h    |    1 +
 drivers/infiniband/hw/ehca/ehca_irq.c        |    2 +
 drivers/infiniband/hw/ehca/ehca_iverbs.h     |    5 +
 drivers/infiniband/hw/ehca/ehca_main.c       |    2 +-
 drivers/infiniband/hw/ehca/ehca_reqs.c       |    4 +
 drivers/infiniband/hw/ehca/ehca_sqp.c        |   91 +
 drivers/infiniband/hw/mlx4/main.c            |   10 +-
 drivers/infiniband/hw/mthca/mthca_cmd.c      |   11 +-
 drivers/infiniband/hw/mthca/mthca_main.c     |    5 +-
 drivers/infiniband/hw/mthca/mthca_mr.c       |    8 +-
 drivers/infiniband/hw/mthca/mthca_provider.c |   22 +-
 drivers/infiniband/hw/mthca/mthca_qp.c       |   13 +-
 drivers/infiniband/hw/mthca/mthca_srq.c      |   47 +-
 drivers/infiniband/hw/nes/Kconfig            |   16 +
 drivers/infiniband/hw/nes/Makefile           |    3 +
 drivers/infiniband/hw/nes/nes.c              | 1152 ++++++++
 drivers/infiniband/hw/nes/nes.h              |  560 ++++
 drivers/infiniband/hw/nes/nes_cm.c           | 3088 ++++++++++++++++++++
 drivers/infiniband/hw/nes/nes_cm.h           |  433 +++
 drivers/infiniband/hw/nes/nes_context.h      |  193 ++
 drivers/infiniband/hw/nes/nes_hw.c           | 3080 ++++++++++++++++++++
 drivers/infiniband/hw/nes/nes_hw.h           | 1206 ++++++++
 drivers/infiniband/hw/nes/nes_nic.c          | 1703 +++++++++++
 drivers/infiniband/hw/nes/nes_user.h         |  112 +
 drivers/infiniband/hw/nes/nes_utils.c        |  917 ++++++
 drivers/infiniband/hw/nes/nes_verbs.c        | 3917 ++++++++++++++++++++++++++
 drivers/infiniband/hw/nes/nes_verbs.h        |  169 ++
 drivers/infiniband/ulp/ipoib/ipoib_main.c    |   19 +-
 drivers/infiniband/ulp/srp/ib_srp.c          |   53 +-
 drivers/infiniband/ulp/srp/ib_srp.h          |    1 +
 drivers/net/mlx4/fw.c                        |    6 -
 drivers/net/mlx4/fw.h                        |    3 -
 drivers/net/mlx4/main.c                      |   11 +-
 drivers/net/mlx4/mr.c                        |    2 +-
 39 files changed, 16848 insertions(+), 126 deletions(-)
 create mode 100644 drivers/infiniband/hw/nes/Kconfig
 create mode 100644 drivers/infiniband/hw/nes/Makefile
 create mode 100644 drivers/infiniband/hw/nes/nes.c
 create mode 100644 drivers/infiniband/hw/nes/nes.h
 create mode 100644 drivers/infiniband/hw/nes/nes_cm.c
 create mode 100644 drivers/infiniband/hw/nes/nes_cm.h
 create mode 100644 drivers/infiniband/hw/nes/nes_context.h
 create mode 100644 drivers/infiniband/hw/nes/nes_hw.c
 create mode 100644 drivers/infiniband/hw/nes/nes_hw.h
 create mode 100644 drivers/infiniband/hw/nes/nes_nic.c
 create mode 100644 drivers/infiniband/hw/nes/nes_user.h
 create mode 100644 drivers/infiniband/hw/nes/nes_utils.c
 create mode 100644 drivers/infiniband/hw/nes/nes_verbs.c
 create mode 100644 drivers/infiniband/hw/nes/nes_verbs.h

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-01-16 22:46 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-01-16 22:46 UTC (permalink / raw)
  To: torvalds; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get the commit below, which moves a little code around to
make a couple of major MPI implementations work on ipath devices:

 drivers/infiniband/hw/ipath/ipath_ud.c |   44 ++++++++++++++++----------------
 1 files changed, 22 insertions(+), 22 deletions(-)

commit 0a69631b2869093d7306e8f66cca8eb0a05aa919
Author: Ralph Campbell <ralph.campbell@qlogic.com>
Date:   Tue Jan 15 15:58:13 2008 -0800

    IB/ipath: Fix receiving UD messages with immediate data
    
    This fixes a small bug in ipath_ud_rcv()'s handling of UD messages
    with immediate data.  We need to test whether immediate data is
    present and update the header size accordingly *before* testing the
    packet size from the header against the actual received length.
    Otherwise the wrong header size will be used and all messages with
    immediate data will be dropped.
    
    This bug keeps MVAPICH-UD and HP MPI from working at all on ipath devices.
    
    Signed-off-by: Ralph Campbell <ralph.campbell@qlogic.com>
    Signed-off-by: Roland Dreier <rolandd@cisco.com>
---
diff --git a/drivers/infiniband/hw/ipath/ipath_ud.c b/drivers/infiniband/hw/ipath/ipath_ud.c
index 16a2a93..b3df6f3 100644
--- a/drivers/infiniband/hw/ipath/ipath_ud.c
+++ b/drivers/infiniband/hw/ipath/ipath_ud.c
@@ -455,6 +455,28 @@ void ipath_ud_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr,
 		}
 	}
 
+	/*
+	 * The opcode is in the low byte when its in network order
+	 * (top byte when in host order).
+	 */
+	opcode = be32_to_cpu(ohdr->bth[0]) >> 24;
+	if (qp->ibqp.qp_num > 1 &&
+	    opcode == IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE) {
+		if (header_in_data) {
+			wc.imm_data = *(__be32 *) data;
+			data += sizeof(__be32);
+		} else
+			wc.imm_data = ohdr->u.ud.imm_data;
+		wc.wc_flags = IB_WC_WITH_IMM;
+		hdrsize += sizeof(u32);
+	} else if (opcode == IB_OPCODE_UD_SEND_ONLY) {
+		wc.imm_data = 0;
+		wc.wc_flags = 0;
+	} else {
+		dev->n_pkt_drops++;
+		goto bail;
+	}
+
 	/* Get the number of bytes the message was padded by. */
 	pad = (be32_to_cpu(ohdr->bth[0]) >> 20) & 3;
 	if (unlikely(tlen < (hdrsize + pad + 4))) {
@@ -482,28 +504,6 @@ void ipath_ud_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr,
 	wc.byte_len = tlen + sizeof(struct ib_grh);
 
 	/*
-	 * The opcode is in the low byte when its in network order
-	 * (top byte when in host order).
-	 */
-	opcode = be32_to_cpu(ohdr->bth[0]) >> 24;
-	if (qp->ibqp.qp_num > 1 &&
-	    opcode == IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE) {
-		if (header_in_data) {
-			wc.imm_data = *(__be32 *) data;
-			data += sizeof(__be32);
-		} else
-			wc.imm_data = ohdr->u.ud.imm_data;
-		wc.wc_flags = IB_WC_WITH_IMM;
-		hdrsize += sizeof(u32);
-	} else if (opcode == IB_OPCODE_UD_SEND_ONLY) {
-		wc.imm_data = 0;
-		wc.wc_flags = 0;
-	} else {
-		dev->n_pkt_drops++;
-		goto bail;
-	}
-
-	/*
 	 * Get the next work request entry to find where to put the data.
 	 */
 	if (qp->r_reuse_sge)

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2008-01-08 20:25 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2008-01-08 20:25 UTC (permalink / raw)
  To: torvalds; +Cc: linux-kernel, general

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get a few one-line fixes: change a maintainer email address
that is going away soon, fix a bug that would make the second port on
some HCAs useless, and fix SRP the right way now that the root cause
is fixed via James's tree.

(And just to counter James's suggestion that the SRP user base is
comparable to voyager's: these SRP fixes are coming from a real
production user, and that user is @ornl.gov, which means that SRP is
actually being used to do something involving things like atomic bombs
or sharks with laser beams)

Dave Dillow (1):
      IB/srp: Release transport before removing host

Dotan Barak (1):
      IB/mlx4: Fix value of pkey_index in QP1 completions

Sean Hefty (1):
      MAINTAINERS: Update Sean Hefty's email address

 MAINTAINERS                         |    2 +-
 drivers/infiniband/hw/mlx4/cq.c     |    2 +-
 drivers/infiniband/ulp/srp/ib_srp.c |    2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)


diff --git a/MAINTAINERS b/MAINTAINERS
index 79c711e..56e6159 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1919,7 +1919,7 @@ INFINIBAND SUBSYSTEM
 P:	Roland Dreier
 M:	rolandd@cisco.com
 P:	Sean Hefty
-M:	mshefty@ichips.intel.com
+M:	sean.hefty@intel.com
 P:	Hal Rosenstock
 M:	hal.rosenstock@gmail.com 
 L:	general@lists.openfabrics.org
diff --git a/drivers/infiniband/hw/mlx4/cq.c b/drivers/infiniband/hw/mlx4/cq.c
index 8bf44da..9d32c49 100644
--- a/drivers/infiniband/hw/mlx4/cq.c
+++ b/drivers/infiniband/hw/mlx4/cq.c
@@ -430,7 +430,7 @@ static int mlx4_ib_poll_one(struct mlx4_ib_cq *cq,
 		wc->dlid_path_bits = (be32_to_cpu(cqe->g_mlpath_rqpn) >> 24) & 0x7f;
 		wc->wc_flags      |= be32_to_cpu(cqe->g_mlpath_rqpn) & 0x80000000 ?
 			IB_WC_GRH : 0;
-		wc->pkey_index     = be32_to_cpu(cqe->immed_rss_invalid) >> 16;
+		wc->pkey_index     = be32_to_cpu(cqe->immed_rss_invalid) & 0x7f;
 	}
 
 	return 0;
diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c
index 77e8b90..bdb6f85 100644
--- a/drivers/infiniband/ulp/srp/ib_srp.c
+++ b/drivers/infiniband/ulp/srp/ib_srp.c
@@ -2053,8 +2053,8 @@ static void srp_remove_one(struct ib_device *device)
 
 		list_for_each_entry_safe(target, tmp_target,
 					 &host->target_list, list) {
-			scsi_remove_host(target->scsi_host);
 			srp_remove_host(target->scsi_host);
+			scsi_remove_host(target->scsi_host);
 			srp_disconnect_target(target);
 			ib_destroy_cm_id(target->cm_id);
 			srp_free_target_ib(target);

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2007-12-13 17:39 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2007-12-13 17:39 UTC (permalink / raw)
  To: torvalds; +Cc: linux-kernel, general

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will pull a few small ehca driver fixes for 2.6.24:

Joachim Fenkes (3):
      IB/ehca: Return correct number of SGEs for SRQ
      IB/ehca: Serialize HCA-related hCalls if necessary
      IB/ehca: Fix lock flag variable location, bump version number

 drivers/infiniband/hw/ehca/ehca_classes.h |    1 +
 drivers/infiniband/hw/ehca/ehca_main.c    |   15 ++++++++++++++-
 drivers/infiniband/hw/ehca/ehca_qp.c      |    4 ++--
 drivers/infiniband/hw/ehca/hcp_if.c       |   27 ++++++++++-----------------
 drivers/infiniband/hw/ehca/hipz_hw.h      |    1 +
 5 files changed, 28 insertions(+), 20 deletions(-)


diff --git a/drivers/infiniband/hw/ehca/ehca_classes.h b/drivers/infiniband/hw/ehca/ehca_classes.h
index 87f12d4..74d2b72 100644
--- a/drivers/infiniband/hw/ehca/ehca_classes.h
+++ b/drivers/infiniband/hw/ehca/ehca_classes.h
@@ -322,6 +322,7 @@ extern int ehca_static_rate;
 extern int ehca_port_act_time;
 extern int ehca_use_hp_mr;
 extern int ehca_scaling_code;
+extern int ehca_lock_hcalls;
 
 struct ipzu_queue_resp {
 	u32 qe_size;      /* queue entry size */
diff --git a/drivers/infiniband/hw/ehca/ehca_main.c b/drivers/infiniband/hw/ehca/ehca_main.c
index 90d4334..6a56d86 100644
--- a/drivers/infiniband/hw/ehca/ehca_main.c
+++ b/drivers/infiniband/hw/ehca/ehca_main.c
@@ -43,13 +43,14 @@
 #ifdef CONFIG_PPC_64K_PAGES
 #include <linux/slab.h>
 #endif
+
 #include "ehca_classes.h"
 #include "ehca_iverbs.h"
 #include "ehca_mrmw.h"
 #include "ehca_tools.h"
 #include "hcp_if.h"
 
-#define HCAD_VERSION "0024"
+#define HCAD_VERSION "0025"
 
 MODULE_LICENSE("Dual BSD/GPL");
 MODULE_AUTHOR("Christoph Raisch <raisch@de.ibm.com>");
@@ -66,6 +67,7 @@ int ehca_poll_all_eqs  = 1;
 int ehca_static_rate   = -1;
 int ehca_scaling_code  = 0;
 int ehca_mr_largepage  = 1;
+int ehca_lock_hcalls   = -1;
 
 module_param_named(open_aqp1,     ehca_open_aqp1,     int, S_IRUGO);
 module_param_named(debug_level,   ehca_debug_level,   int, S_IRUGO);
@@ -77,6 +79,7 @@ module_param_named(poll_all_eqs,  ehca_poll_all_eqs,  int, S_IRUGO);
 module_param_named(static_rate,   ehca_static_rate,   int, S_IRUGO);
 module_param_named(scaling_code,  ehca_scaling_code,  int, S_IRUGO);
 module_param_named(mr_largepage,  ehca_mr_largepage,  int, S_IRUGO);
+module_param_named(lock_hcalls,   ehca_lock_hcalls,   bool, S_IRUGO);
 
 MODULE_PARM_DESC(open_aqp1,
 		 "AQP1 on startup (0: no (default), 1: yes)");
@@ -102,6 +105,9 @@ MODULE_PARM_DESC(scaling_code,
 MODULE_PARM_DESC(mr_largepage,
 		 "use large page for MR (0: use PAGE_SIZE (default), "
 		 "1: use large page depending on MR size");
+MODULE_PARM_DESC(lock_hcalls,
+		 "serialize all hCalls made by the driver "
+		 "(default: autodetect)");
 
 DEFINE_RWLOCK(ehca_qp_idr_lock);
 DEFINE_RWLOCK(ehca_cq_idr_lock);
@@ -258,6 +264,7 @@ static struct cap_descr {
 	{ HCA_CAP_UD_LL_QP, "HCA_CAP_UD_LL_QP" },
 	{ HCA_CAP_RESIZE_MR, "HCA_CAP_RESIZE_MR" },
 	{ HCA_CAP_MINI_QP, "HCA_CAP_MINI_QP" },
+	{ HCA_CAP_H_ALLOC_RES_SYNC, "HCA_CAP_H_ALLOC_RES_SYNC" },
 };
 
 static int ehca_sense_attributes(struct ehca_shca *shca)
@@ -333,6 +340,12 @@ static int ehca_sense_attributes(struct ehca_shca *shca)
 		if (EHCA_BMASK_GET(hca_cap_descr[i].mask, shca->hca_cap))
 			ehca_gen_dbg("   %s", hca_cap_descr[i].descr);
 
+	/* Autodetect hCall locking -- the "H_ALLOC_RESOURCE synced" flag is
+	 * a firmware property, so it's valid across all adapters
+	 */
+	if (ehca_lock_hcalls == -1)
+		ehca_lock_hcalls = !(shca->hca_cap & HCA_CAP_H_ALLOC_RES_SYNC);
+
 	/* translate supported MR page sizes; always support 4K */
 	shca->hca_cap_mr_pgsize = EHCA_PAGESIZE;
 	if (ehca_mr_largepage) { /* support extra sizes only if enabled */
diff --git a/drivers/infiniband/hw/ehca/ehca_qp.c b/drivers/infiniband/hw/ehca/ehca_qp.c
index dd12668..eff5fb5 100644
--- a/drivers/infiniband/hw/ehca/ehca_qp.c
+++ b/drivers/infiniband/hw/ehca/ehca_qp.c
@@ -838,7 +838,7 @@ struct ib_srq *ehca_create_srq(struct ib_pd *pd,
 
 	/* copy back return values */
 	srq_init_attr->attr.max_wr = qp_init_attr.cap.max_recv_wr;
-	srq_init_attr->attr.max_sge = qp_init_attr.cap.max_recv_sge;
+	srq_init_attr->attr.max_sge = 3;
 
 	/* drive SRQ into RTR state */
 	mqpcb = ehca_alloc_fw_ctrlblock(GFP_KERNEL);
@@ -1750,7 +1750,7 @@ int ehca_query_srq(struct ib_srq *srq, struct ib_srq_attr *srq_attr)
 	}
 
 	srq_attr->max_wr = qpcb->max_nr_outst_recv_wr - 1;
-	srq_attr->max_sge = qpcb->actual_nr_sges_in_rq_wqe;
+	srq_attr->max_sge = 3;
 	srq_attr->srq_limit = EHCA_BMASK_GET(
 		MQPCB_CURR_SRQ_LIMIT, qpcb->curr_srq_limit);
 
diff --git a/drivers/infiniband/hw/ehca/hcp_if.c b/drivers/infiniband/hw/ehca/hcp_if.c
index c16a213..7029aa6 100644
--- a/drivers/infiniband/hw/ehca/hcp_if.c
+++ b/drivers/infiniband/hw/ehca/hcp_if.c
@@ -120,26 +120,21 @@ static long ehca_plpar_hcall_norets(unsigned long opcode,
 				    unsigned long arg7)
 {
 	long ret;
-	int i, sleep_msecs, do_lock;
-	unsigned long flags;
+	int i, sleep_msecs;
+	unsigned long flags = 0;
 
 	ehca_gen_dbg("opcode=%lx " HCALL7_REGS_FORMAT,
 		     opcode, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
 
-	/* lock H_FREE_RESOURCE(MR) against itself and H_ALLOC_RESOURCE(MR) */
-	if ((opcode == H_FREE_RESOURCE) && (arg7 == 5)) {
-		arg7 = 0; /* better not upset firmware */
-		do_lock = 1;
-	}
-
 	for (i = 0; i < 5; i++) {
-		if (do_lock)
+		/* serialize hCalls to work around firmware issue */
+		if (ehca_lock_hcalls)
 			spin_lock_irqsave(&hcall_lock, flags);
 
 		ret = plpar_hcall_norets(opcode, arg1, arg2, arg3, arg4,
 					 arg5, arg6, arg7);
 
-		if (do_lock)
+		if (ehca_lock_hcalls)
 			spin_unlock_irqrestore(&hcall_lock, flags);
 
 		if (H_IS_LONG_BUSY(ret)) {
@@ -174,24 +169,22 @@ static long ehca_plpar_hcall9(unsigned long opcode,
 			      unsigned long arg9)
 {
 	long ret;
-	int i, sleep_msecs, do_lock;
+	int i, sleep_msecs;
 	unsigned long flags = 0;
 
 	ehca_gen_dbg("INPUT -- opcode=%lx " HCALL9_REGS_FORMAT, opcode,
 		     arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
 
-	/* lock H_ALLOC_RESOURCE(MR) against itself and H_FREE_RESOURCE(MR) */
-	do_lock = ((opcode == H_ALLOC_RESOURCE) && (arg2 == 5));
-
 	for (i = 0; i < 5; i++) {
-		if (do_lock)
+		/* serialize hCalls to work around firmware issue */
+		if (ehca_lock_hcalls)
 			spin_lock_irqsave(&hcall_lock, flags);
 
 		ret = plpar_hcall9(opcode, outs,
 				   arg1, arg2, arg3, arg4, arg5,
 				   arg6, arg7, arg8, arg9);
 
-		if (do_lock)
+		if (ehca_lock_hcalls)
 			spin_unlock_irqrestore(&hcall_lock, flags);
 
 		if (H_IS_LONG_BUSY(ret)) {
@@ -821,7 +814,7 @@ u64 hipz_h_free_resource_mr(const struct ipz_adapter_handle adapter_handle,
 	return ehca_plpar_hcall_norets(H_FREE_RESOURCE,
 				       adapter_handle.handle,    /* r4 */
 				       mr->ipz_mr_handle.handle, /* r5 */
-				       0, 0, 0, 0, 5);
+				       0, 0, 0, 0, 0);
 }
 
 u64 hipz_h_reregister_pmr(const struct ipz_adapter_handle adapter_handle,
diff --git a/drivers/infiniband/hw/ehca/hipz_hw.h b/drivers/infiniband/hw/ehca/hipz_hw.h
index 485b840..bf996c7 100644
--- a/drivers/infiniband/hw/ehca/hipz_hw.h
+++ b/drivers/infiniband/hw/ehca/hipz_hw.h
@@ -378,6 +378,7 @@ struct hipz_query_hca {
 #define HCA_CAP_UD_LL_QP              EHCA_BMASK_IBM(16, 16)
 #define HCA_CAP_RESIZE_MR             EHCA_BMASK_IBM(17, 17)
 #define HCA_CAP_MINI_QP               EHCA_BMASK_IBM(18, 18)
+#define HCA_CAP_H_ALLOC_RES_SYNC      EHCA_BMASK_IBM(19, 19)
 
 /* query port response block */
 struct hipz_query_port {

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2007-12-01  4:03 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2007-12-01  4:03 UTC (permalink / raw)
  To: torvalds; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get two small fixes for 2.6.24:

Jack Morgenstein (1):
      IPoIB: Fix oops if xmit is called when priv->broadcast is NULL

Joachim Fenkes (1):
      IB/ehca: Fix static rate if path faster than link

 drivers/infiniband/hw/ehca/ehca_av.c      |    8 ++++++--
 drivers/infiniband/ulp/ipoib/ipoib_main.c |    3 +++
 2 files changed, 9 insertions(+), 2 deletions(-)


diff --git a/drivers/infiniband/hw/ehca/ehca_av.c b/drivers/infiniband/hw/ehca/ehca_av.c
index 453eb99..f7782c8 100644
--- a/drivers/infiniband/hw/ehca/ehca_av.c
+++ b/drivers/infiniband/hw/ehca/ehca_av.c
@@ -76,8 +76,12 @@ int ehca_calc_ipd(struct ehca_shca *shca, int port,
 
 	link = ib_width_enum_to_int(pa.active_width) * pa.active_speed;
 
-	/* IPD = round((link / path) - 1) */
-	*ipd = ((link + (path >> 1)) / path) - 1;
+	if (path >= link)
+		/* no need to throttle if path faster than link */
+		*ipd = 0;
+	else
+		/* IPD = round((link / path) - 1) */
+		*ipd = ((link + (path >> 1)) / path) - 1;
 
 	return 0;
 }
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index a03a65e..c9f6077 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -460,6 +460,9 @@ static struct ipoib_path *path_rec_create(struct net_device *dev, void *gid)
 	struct ipoib_dev_priv *priv = netdev_priv(dev);
 	struct ipoib_path *path;
 
+	if (!priv->broadcast)
+		return NULL;
+
 	path = kzalloc(sizeof *path, GFP_ATOMIC);
 	if (!path)
 		return NULL;

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2007-11-27  6:21 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2007-11-27  6:21 UTC (permalink / raw)
  To: torvalds; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will pull some small fixes for 2.6.24:

Erez Zilber (1):
      IB/iser: Add missing counter increment in iser_data_buf_aligned_len()

Jack Morgenstein (1):
      mlx4_core: Fix state check in mlx4_qp_modify()

Joachim Fenkes (1):
      IB/ehca: Fix static rate regression

Ralph Campbell (4):
      IB/ipath: Fix offset returned to ibv_resize_cq()
      IB/ipath: Fix error path in QP creation
      IB/ipath: Fix offset returned to ibv_modify_srq()
      IB/ipath: Normalize error return codes for posting work requests

 drivers/infiniband/hw/ehca/ehca_qp.c      |    4 +-
 drivers/infiniband/hw/ipath/ipath_cq.c    |   19 +++++++++---
 drivers/infiniband/hw/ipath/ipath_qp.c    |   15 ++++++----
 drivers/infiniband/hw/ipath/ipath_srq.c   |   44 +++++++++++++++++------------
 drivers/infiniband/hw/ipath/ipath_verbs.c |    8 +++--
 drivers/infiniband/ulp/iser/iser_memory.c |    6 ++-
 drivers/net/mlx4/qp.c                     |    2 +-
 7 files changed, 61 insertions(+), 37 deletions(-)


diff --git a/drivers/infiniband/hw/ehca/ehca_qp.c b/drivers/infiniband/hw/ehca/ehca_qp.c
index 2e3e654..dd12668 100644
--- a/drivers/infiniband/hw/ehca/ehca_qp.c
+++ b/drivers/infiniband/hw/ehca/ehca_qp.c
@@ -1203,7 +1203,7 @@ static int internal_modify_qp(struct ib_qp *ibqp,
 		mqpcb->service_level = attr->ah_attr.sl;
 		update_mask |= EHCA_BMASK_SET(MQPCB_MASK_SERVICE_LEVEL, 1);
 
-		if (ehca_calc_ipd(shca, my_qp->init_attr.port_num,
+		if (ehca_calc_ipd(shca, mqpcb->prim_phys_port,
 				  attr->ah_attr.static_rate,
 				  &mqpcb->max_static_rate)) {
 			ret = -EINVAL;
@@ -1302,7 +1302,7 @@ static int internal_modify_qp(struct ib_qp *ibqp,
 		mqpcb->source_path_bits_al = attr->alt_ah_attr.src_path_bits;
 		mqpcb->service_level_al = attr->alt_ah_attr.sl;
 
-		if (ehca_calc_ipd(shca, my_qp->init_attr.port_num,
+		if (ehca_calc_ipd(shca, mqpcb->alt_phys_port,
 				  attr->alt_ah_attr.static_rate,
 				  &mqpcb->max_static_rate_al)) {
 			ret = -EINVAL;
diff --git a/drivers/infiniband/hw/ipath/ipath_cq.c b/drivers/infiniband/hw/ipath/ipath_cq.c
index 08d8ae1..d1380c7 100644
--- a/drivers/infiniband/hw/ipath/ipath_cq.c
+++ b/drivers/infiniband/hw/ipath/ipath_cq.c
@@ -395,12 +395,9 @@ int ipath_resize_cq(struct ib_cq *ibcq, int cqe, struct ib_udata *udata)
 		goto bail;
 	}
 
-	/*
-	 * Return the address of the WC as the offset to mmap.
-	 * See ipath_mmap() for details.
-	 */
+	/* Check that we can write the offset to mmap. */
 	if (udata && udata->outlen >= sizeof(__u64)) {
-		__u64 offset = (__u64) wc;
+		__u64 offset = 0;
 
 		ret = ib_copy_to_udata(udata, &offset, sizeof(offset));
 		if (ret)
@@ -450,6 +447,18 @@ int ipath_resize_cq(struct ib_cq *ibcq, int cqe, struct ib_udata *udata)
 		struct ipath_mmap_info *ip = cq->ip;
 
 		ipath_update_mmap_info(dev, ip, sz, wc);
+
+		/*
+		 * Return the offset to mmap.
+		 * See ipath_mmap() for details.
+		 */
+		if (udata && udata->outlen >= sizeof(__u64)) {
+			ret = ib_copy_to_udata(udata, &ip->offset,
+					       sizeof(ip->offset));
+			if (ret)
+				goto bail;
+		}
+
 		spin_lock_irq(&dev->pending_lock);
 		if (list_empty(&ip->pending_mmaps))
 			list_add(&ip->pending_mmaps, &dev->pending_mmaps);
diff --git a/drivers/infiniband/hw/ipath/ipath_qp.c b/drivers/infiniband/hw/ipath/ipath_qp.c
index 6a41fdb..b997ff8 100644
--- a/drivers/infiniband/hw/ipath/ipath_qp.c
+++ b/drivers/infiniband/hw/ipath/ipath_qp.c
@@ -835,7 +835,8 @@ struct ib_qp *ipath_create_qp(struct ib_pd *ibpd,
 				      init_attr->qp_type);
 		if (err) {
 			ret = ERR_PTR(err);
-			goto bail_rwq;
+			vfree(qp->r_rq.wq);
+			goto bail_qp;
 		}
 		qp->ip = NULL;
 		ipath_reset_qp(qp);
@@ -863,7 +864,7 @@ struct ib_qp *ipath_create_qp(struct ib_pd *ibpd,
 					       sizeof(offset));
 			if (err) {
 				ret = ERR_PTR(err);
-				goto bail_rwq;
+				goto bail_ip;
 			}
 		} else {
 			u32 s = sizeof(struct ipath_rwq) +
@@ -875,7 +876,7 @@ struct ib_qp *ipath_create_qp(struct ib_pd *ibpd,
 						   qp->r_rq.wq);
 			if (!qp->ip) {
 				ret = ERR_PTR(-ENOMEM);
-				goto bail_rwq;
+				goto bail_ip;
 			}
 
 			err = ib_copy_to_udata(udata, &(qp->ip->offset),
@@ -907,9 +908,11 @@ struct ib_qp *ipath_create_qp(struct ib_pd *ibpd,
 	goto bail;
 
 bail_ip:
-	kfree(qp->ip);
-bail_rwq:
-	vfree(qp->r_rq.wq);
+	if (qp->ip)
+		kref_put(&qp->ip->ref, ipath_release_mmap_info);
+	else
+		vfree(qp->r_rq.wq);
+	ipath_free_qp(&dev->qp_table, qp);
 bail_qp:
 	kfree(qp);
 bail_swq:
diff --git a/drivers/infiniband/hw/ipath/ipath_srq.c b/drivers/infiniband/hw/ipath/ipath_srq.c
index 40c36ec..2fef36f 100644
--- a/drivers/infiniband/hw/ipath/ipath_srq.c
+++ b/drivers/infiniband/hw/ipath/ipath_srq.c
@@ -59,7 +59,7 @@ int ipath_post_srq_receive(struct ib_srq *ibsrq, struct ib_recv_wr *wr,
 
 		if ((unsigned) wr->num_sge > srq->rq.max_sge) {
 			*bad_wr = wr;
-			ret = -ENOMEM;
+			ret = -EINVAL;
 			goto bail;
 		}
 
@@ -211,11 +211,11 @@ int ipath_modify_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr,
 		     struct ib_udata *udata)
 {
 	struct ipath_srq *srq = to_isrq(ibsrq);
+	struct ipath_rwq *wq;
 	int ret = 0;
 
 	if (attr_mask & IB_SRQ_MAX_WR) {
 		struct ipath_rwq *owq;
-		struct ipath_rwq *wq;
 		struct ipath_rwqe *p;
 		u32 sz, size, n, head, tail;
 
@@ -236,27 +236,20 @@ int ipath_modify_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr,
 			goto bail;
 		}
 
-		/*
-		 * Return the address of the RWQ as the offset to mmap.
-		 * See ipath_mmap() for details.
-		 */
+		/* Check that we can write the offset to mmap. */
 		if (udata && udata->inlen >= sizeof(__u64)) {
 			__u64 offset_addr;
-			__u64 offset = (__u64) wq;
+			__u64 offset = 0;
 
 			ret = ib_copy_from_udata(&offset_addr, udata,
 						 sizeof(offset_addr));
-			if (ret) {
-				vfree(wq);
-				goto bail;
-			}
+			if (ret)
+				goto bail_free;
 			udata->outbuf = (void __user *) offset_addr;
 			ret = ib_copy_to_udata(udata, &offset,
 					       sizeof(offset));
-			if (ret) {
-				vfree(wq);
-				goto bail;
-			}
+			if (ret)
+				goto bail_free;
 		}
 
 		spin_lock_irq(&srq->rq.lock);
@@ -277,10 +270,8 @@ int ipath_modify_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr,
 		else
 			n -= tail;
 		if (size <= n) {
-			spin_unlock_irq(&srq->rq.lock);
-			vfree(wq);
 			ret = -EINVAL;
-			goto bail;
+			goto bail_unlock;
 		}
 		n = 0;
 		p = wq->wq;
@@ -314,6 +305,18 @@ int ipath_modify_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr,
 			u32 s = sizeof(struct ipath_rwq) + size * sz;
 
 			ipath_update_mmap_info(dev, ip, s, wq);
+
+			/*
+			 * Return the offset to mmap.
+			 * See ipath_mmap() for details.
+			 */
+			if (udata && udata->inlen >= sizeof(__u64)) {
+				ret = ib_copy_to_udata(udata, &ip->offset,
+						       sizeof(ip->offset));
+				if (ret)
+					goto bail;
+			}
+
 			spin_lock_irq(&dev->pending_lock);
 			if (list_empty(&ip->pending_mmaps))
 				list_add(&ip->pending_mmaps,
@@ -328,7 +331,12 @@ int ipath_modify_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr,
 			srq->limit = attr->srq_limit;
 		spin_unlock_irq(&srq->rq.lock);
 	}
+	goto bail;
 
+bail_unlock:
+	spin_unlock_irq(&srq->rq.lock);
+bail_free:
+	vfree(wq);
 bail:
 	return ret;
 }
diff --git a/drivers/infiniband/hw/ipath/ipath_verbs.c b/drivers/infiniband/hw/ipath/ipath_verbs.c
index 74f77e7..c4c9984 100644
--- a/drivers/infiniband/hw/ipath/ipath_verbs.c
+++ b/drivers/infiniband/hw/ipath/ipath_verbs.c
@@ -302,8 +302,10 @@ static int ipath_post_one_send(struct ipath_qp *qp, struct ib_send_wr *wr)
 	next = qp->s_head + 1;
 	if (next >= qp->s_size)
 		next = 0;
-	if (next == qp->s_last)
-		goto bail_inval;
+	if (next == qp->s_last) {
+		ret = -ENOMEM;
+		goto bail;
+	}
 
 	wqe = get_swqe_ptr(qp, qp->s_head);
 	wqe->wr = *wr;
@@ -404,7 +406,7 @@ static int ipath_post_receive(struct ib_qp *ibqp, struct ib_recv_wr *wr,
 
 		if ((unsigned) wr->num_sge > qp->r_rq.max_sge) {
 			*bad_wr = wr;
-			ret = -ENOMEM;
+			ret = -EINVAL;
 			goto bail;
 		}
 
diff --git a/drivers/infiniband/ulp/iser/iser_memory.c b/drivers/infiniband/ulp/iser/iser_memory.c
index d687980..4a17743 100644
--- a/drivers/infiniband/ulp/iser/iser_memory.c
+++ b/drivers/infiniband/ulp/iser/iser_memory.c
@@ -310,13 +310,15 @@ static unsigned int iser_data_buf_aligned_len(struct iser_data_buf *data,
 		if (i + 1 < data->dma_nents) {
 			next_addr = ib_sg_dma_address(ibdev, sg_next(sg));
 			/* are i, i+1 fragments of the same page? */
-			if (end_addr == next_addr)
+			if (end_addr == next_addr) {
+				cnt++;
 				continue;
-			else if (!IS_4K_ALIGNED(end_addr)) {
+			} else if (!IS_4K_ALIGNED(end_addr)) {
 				ret_len = cnt + 1;
 				break;
 			}
 		}
+		cnt++;
 	}
 	if (i == data->dma_nents)
 		ret_len = cnt;	/* loop ended */
diff --git a/drivers/net/mlx4/qp.c b/drivers/net/mlx4/qp.c
index 42b4763..fa24e65 100644
--- a/drivers/net/mlx4/qp.c
+++ b/drivers/net/mlx4/qp.c
@@ -113,7 +113,7 @@ int mlx4_qp_modify(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
 	struct mlx4_cmd_mailbox *mailbox;
 	int ret = 0;
 
-	if (cur_state >= MLX4_QP_NUM_STATE || cur_state >= MLX4_QP_NUM_STATE ||
+	if (cur_state >= MLX4_QP_NUM_STATE || new_state >= MLX4_QP_NUM_STATE ||
 	    !op[cur_state][new_state])
 		return -EINVAL;
 

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2007-11-14 16:23 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2007-11-14 16:23 UTC (permalink / raw)
  To: torvalds; +Cc: linux-kernel, general

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will pull some low-level driver fixes for 2.6.24:

Ali Ayoub (1):
      mlx4_core: Fix possible bad free in mlx4_buf_free()

Jack Morgenstein (1):
      mlx4_core: Fix thinko in QP destroy (incorrect bitmap_free)

Joachim Fenkes (2):
      IB/ehca: Return physical link information in query_port()
      IB/ehca: Fix static rate calculation

Ralph Campbell (2):
      IB/ipath: Fix memory leak in ipath_resize_cq() if copy_to_user() fails
      IB/ipath: Fix race with ACK retry timeout list management

Steve Wise (1):
      RDMA/cxgb3: Set the max_qp_init_rd_atom attribute in query_device

 drivers/infiniband/hw/cxgb3/iwch_provider.c |    1 +
 drivers/infiniband/hw/ehca/ehca_av.c        |   48 ++++++++++++++++++++++-----
 drivers/infiniband/hw/ehca/ehca_classes.h   |    1 -
 drivers/infiniband/hw/ehca/ehca_hca.c       |   20 ++++++++---
 drivers/infiniband/hw/ehca/ehca_iverbs.h    |    3 ++
 drivers/infiniband/hw/ehca/ehca_main.c      |    3 --
 drivers/infiniband/hw/ehca/ehca_qp.c        |   29 +++++++---------
 drivers/infiniband/hw/ehca/hipz_hw.h        |    6 +++-
 drivers/infiniband/hw/ipath/ipath_cq.c      |   11 ++++--
 drivers/infiniband/hw/ipath/ipath_rc.c      |    5 ++-
 drivers/net/mlx4/alloc.c                    |    7 ++--
 drivers/net/mlx4/qp.c                       |    2 +-
 12 files changed, 89 insertions(+), 47 deletions(-)


diff --git a/drivers/infiniband/hw/cxgb3/iwch_provider.c b/drivers/infiniband/hw/cxgb3/iwch_provider.c
index f0c7775..b5436ca 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_provider.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_provider.c
@@ -1000,6 +1000,7 @@ static int iwch_query_device(struct ib_device *ibdev,
 	props->max_sge = dev->attr.max_sge_per_wr;
 	props->max_sge_rd = 1;
 	props->max_qp_rd_atom = dev->attr.max_rdma_reads_per_qp;
+	props->max_qp_init_rd_atom = dev->attr.max_rdma_reads_per_qp;
 	props->max_cq = dev->attr.max_cqs;
 	props->max_cqe = dev->attr.max_cqes_per_cq;
 	props->max_mr = dev->attr.max_mem_regs;
diff --git a/drivers/infiniband/hw/ehca/ehca_av.c b/drivers/infiniband/hw/ehca/ehca_av.c
index 97d1086..453eb99 100644
--- a/drivers/infiniband/hw/ehca/ehca_av.c
+++ b/drivers/infiniband/hw/ehca/ehca_av.c
@@ -50,6 +50,38 @@
 
 static struct kmem_cache *av_cache;
 
+int ehca_calc_ipd(struct ehca_shca *shca, int port,
+		  enum ib_rate path_rate, u32 *ipd)
+{
+	int path = ib_rate_to_mult(path_rate);
+	int link, ret;
+	struct ib_port_attr pa;
+
+	if (path_rate == IB_RATE_PORT_CURRENT) {
+		*ipd = 0;
+		return 0;
+	}
+
+	if (unlikely(path < 0)) {
+		ehca_err(&shca->ib_device, "Invalid static rate! path_rate=%x",
+			 path_rate);
+		return -EINVAL;
+	}
+
+	ret = ehca_query_port(&shca->ib_device, port, &pa);
+	if (unlikely(ret < 0)) {
+		ehca_err(&shca->ib_device, "Failed to query port  ret=%i", ret);
+		return ret;
+	}
+
+	link = ib_width_enum_to_int(pa.active_width) * pa.active_speed;
+
+	/* IPD = round((link / path) - 1) */
+	*ipd = ((link + (path >> 1)) / path) - 1;
+
+	return 0;
+}
+
 struct ib_ah *ehca_create_ah(struct ib_pd *pd, struct ib_ah_attr *ah_attr)
 {
 	int ret;
@@ -69,15 +101,13 @@ struct ib_ah *ehca_create_ah(struct ib_pd *pd, struct ib_ah_attr *ah_attr)
 	av->av.slid_path_bits = ah_attr->src_path_bits;
 
 	if (ehca_static_rate < 0) {
-		int ah_mult = ib_rate_to_mult(ah_attr->static_rate);
-		int ehca_mult =
-			ib_rate_to_mult(shca->sport[ah_attr->port_num].rate );
-
-		if (ah_mult >= ehca_mult)
-			av->av.ipd = 0;
-		else
-			av->av.ipd = (ah_mult > 0) ?
-				((ehca_mult - 1) / ah_mult) : 0;
+		u32 ipd;
+		if (ehca_calc_ipd(shca, ah_attr->port_num,
+				  ah_attr->static_rate, &ipd)) {
+			ret = -EINVAL;
+			goto create_ah_exit1;
+		}
+		av->av.ipd = ipd;
 	} else
 		av->av.ipd = ehca_static_rate;
 
diff --git a/drivers/infiniband/hw/ehca/ehca_classes.h b/drivers/infiniband/hw/ehca/ehca_classes.h
index 2d660ae..87f12d4 100644
--- a/drivers/infiniband/hw/ehca/ehca_classes.h
+++ b/drivers/infiniband/hw/ehca/ehca_classes.h
@@ -95,7 +95,6 @@ struct ehca_sma_attr {
 struct ehca_sport {
 	struct ib_cq *ibcq_aqp1;
 	struct ib_qp *ibqp_aqp1;
-	enum ib_rate  rate;
 	enum ib_port_state port_state;
 	struct ehca_sma_attr saved_attr;
 };
diff --git a/drivers/infiniband/hw/ehca/ehca_hca.c b/drivers/infiniband/hw/ehca/ehca_hca.c
index 15806d1..5bd7b59 100644
--- a/drivers/infiniband/hw/ehca/ehca_hca.c
+++ b/drivers/infiniband/hw/ehca/ehca_hca.c
@@ -151,7 +151,6 @@ int ehca_query_port(struct ib_device *ibdev,
 	}
 
 	memset(props, 0, sizeof(struct ib_port_attr));
-	props->state = rblock->state;
 
 	switch (rblock->max_mtu) {
 	case 0x1:
@@ -188,11 +187,20 @@ int ehca_query_port(struct ib_device *ibdev,
 	props->subnet_timeout  = rblock->subnet_timeout;
 	props->init_type_reply = rblock->init_type_reply;
 
-	props->active_width    = IB_WIDTH_12X;
-	props->active_speed    = 0x1;
-
-	/* at the moment (logical) link state is always LINK_UP */
-	props->phys_state      = 0x5;
+	if (rblock->state && rblock->phys_width) {
+		props->phys_state      = rblock->phys_pstate;
+		props->state           = rblock->phys_state;
+		props->active_width    = rblock->phys_width;
+		props->active_speed    = rblock->phys_speed;
+	} else {
+		/* old firmware releases don't report physical
+		 * port info, so use default values
+		 */
+		props->phys_state      = 5;
+		props->state           = rblock->state;
+		props->active_width    = IB_WIDTH_12X;
+		props->active_speed    = 0x1;
+	}
 
 query_port1:
 	ehca_free_fw_ctrlblock(rblock);
diff --git a/drivers/infiniband/hw/ehca/ehca_iverbs.h b/drivers/infiniband/hw/ehca/ehca_iverbs.h
index dce503b..5485799 100644
--- a/drivers/infiniband/hw/ehca/ehca_iverbs.h
+++ b/drivers/infiniband/hw/ehca/ehca_iverbs.h
@@ -189,6 +189,9 @@ int ehca_mmap(struct ib_ucontext *context, struct vm_area_struct *vma);
 
 void ehca_poll_eqs(unsigned long data);
 
+int ehca_calc_ipd(struct ehca_shca *shca, int port,
+		  enum ib_rate path_rate, u32 *ipd);
+
 #ifdef CONFIG_PPC_64K_PAGES
 void *ehca_alloc_fw_ctrlblock(gfp_t flags);
 void ehca_free_fw_ctrlblock(void *ptr);
diff --git a/drivers/infiniband/hw/ehca/ehca_main.c b/drivers/infiniband/hw/ehca/ehca_main.c
index c6cd38c..90d4334 100644
--- a/drivers/infiniband/hw/ehca/ehca_main.c
+++ b/drivers/infiniband/hw/ehca/ehca_main.c
@@ -327,9 +327,6 @@ static int ehca_sense_attributes(struct ehca_shca *shca)
 		shca->hw_level = ehca_hw_level;
 	ehca_gen_dbg(" ... hardware level=%x", shca->hw_level);
 
-	shca->sport[0].rate = IB_RATE_30_GBPS;
-	shca->sport[1].rate = IB_RATE_30_GBPS;
-
 	shca->hca_cap = rblock->hca_cap_indicators;
 	ehca_gen_dbg(" ... HCA capabilities:");
 	for (i = 0; i < ARRAY_SIZE(hca_cap_descr); i++)
diff --git a/drivers/infiniband/hw/ehca/ehca_qp.c b/drivers/infiniband/hw/ehca/ehca_qp.c
index de18264..2e3e654 100644
--- a/drivers/infiniband/hw/ehca/ehca_qp.c
+++ b/drivers/infiniband/hw/ehca/ehca_qp.c
@@ -1196,10 +1196,6 @@ static int internal_modify_qp(struct ib_qp *ibqp,
 		update_mask |= EHCA_BMASK_SET(MQPCB_MASK_QKEY, 1);
 	}
 	if (attr_mask & IB_QP_AV) {
-		int ah_mult = ib_rate_to_mult(attr->ah_attr.static_rate);
-		int ehca_mult = ib_rate_to_mult(shca->sport[my_qp->
-						init_attr.port_num].rate);
-
 		mqpcb->dlid = attr->ah_attr.dlid;
 		update_mask |= EHCA_BMASK_SET(MQPCB_MASK_DLID, 1);
 		mqpcb->source_path_bits = attr->ah_attr.src_path_bits;
@@ -1207,11 +1203,12 @@ static int internal_modify_qp(struct ib_qp *ibqp,
 		mqpcb->service_level = attr->ah_attr.sl;
 		update_mask |= EHCA_BMASK_SET(MQPCB_MASK_SERVICE_LEVEL, 1);
 
-		if (ah_mult < ehca_mult)
-			mqpcb->max_static_rate = (ah_mult > 0) ?
-			((ehca_mult - 1) / ah_mult) : 0;
-		else
-			mqpcb->max_static_rate = 0;
+		if (ehca_calc_ipd(shca, my_qp->init_attr.port_num,
+				  attr->ah_attr.static_rate,
+				  &mqpcb->max_static_rate)) {
+			ret = -EINVAL;
+			goto modify_qp_exit2;
+		}
 		update_mask |= EHCA_BMASK_SET(MQPCB_MASK_MAX_STATIC_RATE, 1);
 
 		/*
@@ -1280,10 +1277,6 @@ static int internal_modify_qp(struct ib_qp *ibqp,
 			(MQPCB_MASK_RDMA_ATOMIC_OUTST_DEST_QP, 1);
 	}
 	if (attr_mask & IB_QP_ALT_PATH) {
-		int ah_mult = ib_rate_to_mult(attr->alt_ah_attr.static_rate);
-		int ehca_mult = ib_rate_to_mult(
-			shca->sport[my_qp->init_attr.port_num].rate);
-
 		if (attr->alt_port_num < 1
 		    || attr->alt_port_num > shca->num_ports) {
 			ret = -EINVAL;
@@ -1309,10 +1302,12 @@ static int internal_modify_qp(struct ib_qp *ibqp,
 		mqpcb->source_path_bits_al = attr->alt_ah_attr.src_path_bits;
 		mqpcb->service_level_al = attr->alt_ah_attr.sl;
 
-		if (ah_mult > 0 && ah_mult < ehca_mult)
-			mqpcb->max_static_rate_al = (ehca_mult - 1) / ah_mult;
-		else
-			mqpcb->max_static_rate_al = 0;
+		if (ehca_calc_ipd(shca, my_qp->init_attr.port_num,
+				  attr->alt_ah_attr.static_rate,
+				  &mqpcb->max_static_rate_al)) {
+			ret = -EINVAL;
+			goto modify_qp_exit2;
+		}
 
 		/* OpenIB doesn't support alternate retry counts - copy them */
 		mqpcb->retry_count_al = mqpcb->retry_count;
diff --git a/drivers/infiniband/hw/ehca/hipz_hw.h b/drivers/infiniband/hw/ehca/hipz_hw.h
index d9739e5..485b840 100644
--- a/drivers/infiniband/hw/ehca/hipz_hw.h
+++ b/drivers/infiniband/hw/ehca/hipz_hw.h
@@ -402,7 +402,11 @@ struct hipz_query_port {
 	u64 max_msg_sz;
 	u32 max_mtu;
 	u32 vl_cap;
-	u8  reserved2[1900];
+	u32 phys_pstate;
+	u32 phys_state;
+	u32 phys_speed;
+	u32 phys_width;
+	u8  reserved2[1884];
 	u64 guid_entries[255];
 } __attribute__ ((packed));
 
diff --git a/drivers/infiniband/hw/ipath/ipath_cq.c b/drivers/infiniband/hw/ipath/ipath_cq.c
index 645ed71..08d8ae1 100644
--- a/drivers/infiniband/hw/ipath/ipath_cq.c
+++ b/drivers/infiniband/hw/ipath/ipath_cq.c
@@ -404,7 +404,7 @@ int ipath_resize_cq(struct ib_cq *ibcq, int cqe, struct ib_udata *udata)
 
 		ret = ib_copy_to_udata(udata, &offset, sizeof(offset));
 		if (ret)
-			goto bail;
+			goto bail_free;
 	}
 
 	spin_lock_irq(&cq->lock);
@@ -424,10 +424,8 @@ int ipath_resize_cq(struct ib_cq *ibcq, int cqe, struct ib_udata *udata)
 	else
 		n = head - tail;
 	if (unlikely((u32)cqe < n)) {
-		spin_unlock_irq(&cq->lock);
-		vfree(wc);
 		ret = -EOVERFLOW;
-		goto bail;
+		goto bail_unlock;
 	}
 	for (n = 0; tail != head; n++) {
 		if (cq->ip)
@@ -459,7 +457,12 @@ int ipath_resize_cq(struct ib_cq *ibcq, int cqe, struct ib_udata *udata)
 	}
 
 	ret = 0;
+	goto bail;
 
+bail_unlock:
+	spin_unlock_irq(&cq->lock);
+bail_free:
+	vfree(wc);
 bail:
 	return ret;
 }
diff --git a/drivers/infiniband/hw/ipath/ipath_rc.c b/drivers/infiniband/hw/ipath/ipath_rc.c
index 5c29b2b..120a61b 100644
--- a/drivers/infiniband/hw/ipath/ipath_rc.c
+++ b/drivers/infiniband/hw/ipath/ipath_rc.c
@@ -959,8 +959,9 @@ static int do_rc_ack(struct ipath_qp *qp, u32 aeth, u32 psn, int opcode,
 		/* If this is a partial ACK, reset the retransmit timer. */
 		if (qp->s_last != qp->s_tail) {
 			spin_lock(&dev->pending_lock);
-			list_add_tail(&qp->timerwait,
-				      &dev->pending[dev->pending_index]);
+			if (list_empty(&qp->timerwait))
+				list_add_tail(&qp->timerwait,
+					&dev->pending[dev->pending_index]);
 			spin_unlock(&dev->pending_lock);
 			/*
 			 * If we get a partial ACK for a resent operation,
diff --git a/drivers/net/mlx4/alloc.c b/drivers/net/mlx4/alloc.c
index f8d63d3..b226e01 100644
--- a/drivers/net/mlx4/alloc.c
+++ b/drivers/net/mlx4/alloc.c
@@ -171,9 +171,10 @@ void mlx4_buf_free(struct mlx4_dev *dev, int size, struct mlx4_buf *buf)
 				  buf->u.direct.map);
 	else {
 		for (i = 0; i < buf->nbufs; ++i)
-			dma_free_coherent(&dev->pdev->dev, PAGE_SIZE,
-					  buf->u.page_list[i].buf,
-					  buf->u.page_list[i].map);
+			if (buf->u.page_list[i].buf)
+				dma_free_coherent(&dev->pdev->dev, PAGE_SIZE,
+						  buf->u.page_list[i].buf,
+						  buf->u.page_list[i].map);
 		kfree(buf->u.page_list);
 	}
 }
diff --git a/drivers/net/mlx4/qp.c b/drivers/net/mlx4/qp.c
index cc4b1be..42b4763 100644
--- a/drivers/net/mlx4/qp.c
+++ b/drivers/net/mlx4/qp.c
@@ -240,7 +240,7 @@ void mlx4_qp_free(struct mlx4_dev *dev, struct mlx4_qp *qp)
 	mlx4_table_put(dev, &qp_table->auxc_table, qp->qpn);
 	mlx4_table_put(dev, &qp_table->qp_table, qp->qpn);
 
-	if (qp->qpn < dev->caps.sqp_start + 8)
+	if (qp->qpn >= dev->caps.sqp_start + 8)
 		mlx4_bitmap_free(&qp_table->bitmap, qp->qpn);
 }
 EXPORT_SYMBOL_GPL(mlx4_qp_free);

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2007-10-30 22:17 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2007-10-30 22:17 UTC (permalink / raw)
  To: torvalds; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will pull some fixes for 2.6.24:

Anton Blanchard (1):
      IB/fmr_pool: Stop ib_fmr threads from contributing to load average

Dave Olson (1):
      IB/ipath: Fix incorrect use of sizeof on msg buffer (function argument)

Michael Albaugh (1):
      IB/ipath: Limit length checksummed in eeprom

Ralph Campbell (1):
      IB/ipath: Fix a race where s_last is updated without lock held

Roland Dreier (2):
      IPoIB/cm: Fix receive QP cleanup
      IB/mlx4: Lock SQ lock in mlx4_ib_post_send()

 drivers/infiniband/core/fmr_pool.c         |    8 ++++----
 drivers/infiniband/hw/ipath/ipath_eeprom.c |   10 +++++++++-
 drivers/infiniband/hw/ipath/ipath_intr.c   |   18 +++++++++---------
 drivers/infiniband/hw/ipath/ipath_ruc.c    |   14 +++++++++-----
 drivers/infiniband/hw/mlx4/qp.c            |    4 ++--
 drivers/infiniband/ulp/ipoib/ipoib_cm.c    |    2 +-
 6 files changed, 34 insertions(+), 22 deletions(-)


diff --git a/drivers/infiniband/core/fmr_pool.c b/drivers/infiniband/core/fmr_pool.c
index d7f6452..e8d5f6b 100644
--- a/drivers/infiniband/core/fmr_pool.c
+++ b/drivers/infiniband/core/fmr_pool.c
@@ -291,10 +291,10 @@ struct ib_fmr_pool *ib_create_fmr_pool(struct ib_pd             *pd,
 	atomic_set(&pool->flush_ser, 0);
 	init_waitqueue_head(&pool->force_wait);
 
-	pool->thread = kthread_create(ib_fmr_cleanup_thread,
-				      pool,
-				      "ib_fmr(%s)",
-				      device->name);
+	pool->thread = kthread_run(ib_fmr_cleanup_thread,
+				   pool,
+				   "ib_fmr(%s)",
+				   device->name);
 	if (IS_ERR(pool->thread)) {
 		printk(KERN_WARNING PFX "couldn't start cleanup thread\n");
 		ret = PTR_ERR(pool->thread);
diff --git a/drivers/infiniband/hw/ipath/ipath_eeprom.c b/drivers/infiniband/hw/ipath/ipath_eeprom.c
index bcfa3cc..e7c25db 100644
--- a/drivers/infiniband/hw/ipath/ipath_eeprom.c
+++ b/drivers/infiniband/hw/ipath/ipath_eeprom.c
@@ -538,7 +538,15 @@ static u8 flash_csum(struct ipath_flash *ifp, int adjust)
 	u8 *ip = (u8 *) ifp;
 	u8 csum = 0, len;
 
-	for (len = 0; len < ifp->if_length; len++)
+	/*
+	 * Limit length checksummed to max length of actual data.
+	 * Checksum of erased eeprom will still be bad, but we avoid
+	 * reading past the end of the buffer we were passed.
+	 */
+	len = ifp->if_length;
+	if (len > sizeof(struct ipath_flash))
+		len = sizeof(struct ipath_flash);
+	while (len--)
 		csum += *ip++;
 	csum -= ifp->if_csum;
 	csum = ~csum;
diff --git a/drivers/infiniband/hw/ipath/ipath_intr.c b/drivers/infiniband/hw/ipath/ipath_intr.c
index 6a5dd5c..c61f9da 100644
--- a/drivers/infiniband/hw/ipath/ipath_intr.c
+++ b/drivers/infiniband/hw/ipath/ipath_intr.c
@@ -453,7 +453,7 @@ skip_ibchange:
 }
 
 static void handle_supp_msgs(struct ipath_devdata *dd,
-			     unsigned supp_msgs, char msg[512])
+			     unsigned supp_msgs, char *msg, int msgsz)
 {
 	/*
 	 * Print the message unless it's ibc status change only, which
@@ -461,9 +461,9 @@ static void handle_supp_msgs(struct ipath_devdata *dd,
 	 */
 	if (dd->ipath_lasterror & ~INFINIPATH_E_IBSTATUSCHANGED) {
 		int iserr;
-		iserr = ipath_decode_err(msg, sizeof msg,
-				dd->ipath_lasterror &
-				~INFINIPATH_E_IBSTATUSCHANGED);
+		iserr = ipath_decode_err(msg, msgsz,
+					 dd->ipath_lasterror &
+					 ~INFINIPATH_E_IBSTATUSCHANGED);
 		if (dd->ipath_lasterror &
 			~(INFINIPATH_E_RRCVEGRFULL |
 			INFINIPATH_E_RRCVHDRFULL | INFINIPATH_E_PKTERRS))
@@ -492,8 +492,8 @@ static void handle_supp_msgs(struct ipath_devdata *dd,
 }
 
 static unsigned handle_frequent_errors(struct ipath_devdata *dd,
-				       ipath_err_t errs, char msg[512],
-				       int *noprint)
+				       ipath_err_t errs, char *msg,
+				       int msgsz, int *noprint)
 {
 	unsigned long nc;
 	static unsigned long nextmsg_time;
@@ -512,7 +512,7 @@ static unsigned handle_frequent_errors(struct ipath_devdata *dd,
 				nextmsg_time = nc + HZ * 3;
 		}
 		else if (supp_msgs) {
-			handle_supp_msgs(dd, supp_msgs, msg);
+			handle_supp_msgs(dd, supp_msgs, msg, msgsz);
 			supp_msgs = 0;
 			nmsgs = 0;
 		}
@@ -525,14 +525,14 @@ static unsigned handle_frequent_errors(struct ipath_devdata *dd,
 
 static int handle_errors(struct ipath_devdata *dd, ipath_err_t errs)
 {
-	char msg[512];
+	char msg[128];
 	u64 ignore_this_time = 0;
 	int i, iserr = 0;
 	int chkerrpkts = 0, noprint = 0;
 	unsigned supp_msgs;
 	int log_idx;
 
-	supp_msgs = handle_frequent_errors(dd, errs, msg, &noprint);
+	supp_msgs = handle_frequent_errors(dd, errs, msg, sizeof msg, &noprint);
 
 	/* don't report errors that are masked */
 	errs &= ~dd->ipath_maskederrs;
diff --git a/drivers/infiniband/hw/ipath/ipath_ruc.c b/drivers/infiniband/hw/ipath/ipath_ruc.c
index 4b6b7ee..54c61a9 100644
--- a/drivers/infiniband/hw/ipath/ipath_ruc.c
+++ b/drivers/infiniband/hw/ipath/ipath_ruc.c
@@ -630,11 +630,8 @@ bail:;
 void ipath_send_complete(struct ipath_qp *qp, struct ipath_swqe *wqe,
 			 enum ib_wc_status status)
 {
-	u32 last = qp->s_last;
-
-	if (++last == qp->s_size)
-		last = 0;
-	qp->s_last = last;
+	unsigned long flags;
+	u32 last;
 
 	/* See ch. 11.2.4.1 and 10.7.3.1 */
 	if (!(qp->s_flags & IPATH_S_SIGNAL_REQ_WR) ||
@@ -658,4 +655,11 @@ void ipath_send_complete(struct ipath_qp *qp, struct ipath_swqe *wqe,
 		wc.port_num = 0;
 		ipath_cq_enter(to_icq(qp->ibqp.send_cq), &wc, 0);
 	}
+
+	spin_lock_irqsave(&qp->s_lock, flags);
+	last = qp->s_last;
+	if (++last >= qp->s_size)
+		last = 0;
+	qp->s_last = last;
+	spin_unlock_irqrestore(&qp->s_lock, flags);
 }
diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
index 6b33224..8cba9c5 100644
--- a/drivers/infiniband/hw/mlx4/qp.c
+++ b/drivers/infiniband/hw/mlx4/qp.c
@@ -1282,7 +1282,7 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
 	int size;
 	int i;
 
-	spin_lock_irqsave(&qp->rq.lock, flags);
+	spin_lock_irqsave(&qp->sq.lock, flags);
 
 	ind = qp->sq.head;
 
@@ -1448,7 +1448,7 @@ out:
 			       (qp->sq.wqe_cnt - 1));
 	}
 
-	spin_unlock_irqrestore(&qp->rq.lock, flags);
+	spin_unlock_irqrestore(&qp->sq.lock, flags);
 
 	return err;
 }
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
index 8761077..059cf92 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
@@ -60,7 +60,7 @@ static struct ib_qp_attr ipoib_cm_err_attr = {
 	.qp_state = IB_QPS_ERR
 };
 
-#define IPOIB_CM_RX_DRAIN_WRID 0x7fffffff
+#define IPOIB_CM_RX_DRAIN_WRID 0xffffffff
 
 static struct ib_send_wr ipoib_cm_rx_drain_wr = {
 	.wr_id = IPOIB_CM_RX_DRAIN_WRID,

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2007-10-23 16:30 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2007-10-23 16:30 UTC (permalink / raw)
  To: torvalds; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

this will get some more fixes/changes for 2.6.24.  I have one more
IPoIB feature (support for CM without SRQs) I hope to send later
today, but we'll see...

Anton Blanchard (1):
      IPoIB: Use round_jiffies() for ah_reap_task

Jack Morgenstein (2):
      IB/mlx4: Sanity check userspace send queue sizes
      mlx4_core: Increase command timeout for INIT_HCA to 10 seconds

Joachim Fenkes (5):
      IB/ehca: Supply QP token for SRQ base QPs
      IB/ehca: Fix masking error in {,re}reg_phys_mr()
      IB/ehca: Fix ehca_encode_hwpage_size() and alloc_fmr()
      IB/ehca: Change meaning of hca_cap_mr_pgsize
      IB/ehca: Enable large page MRs by default

Michael S. Tsirkin (1):
      IPoIB/cm: Use common CQ for CM send completions

Roland Dreier (4):
      mlx4_core: Kill mlx4_write64_raw()
      IB/mthca: Avoid alignment traps when writing doorbells
      IPoIB: Rewrite "if (!likely(...))" as "if (unlikely(!(...)))"
      IB/uverbs: Fix checking of userspace object ownership

Sean Hefty (2):
      RDMA/cma: Add locking around QP accesses
      RDMA/cma: Fix deadlock destroying listen requests

 drivers/infiniband/core/cma.c                |  160 +++++++++++++------------
 drivers/infiniband/core/uverbs_cmd.c         |    8 +-
 drivers/infiniband/hw/ehca/ehca_classes.h    |    1 -
 drivers/infiniband/hw/ehca/ehca_hca.c        |    1 +
 drivers/infiniband/hw/ehca/ehca_main.c       |   20 +++-
 drivers/infiniband/hw/ehca/ehca_mrmw.c       |   57 ++++-----
 drivers/infiniband/hw/ehca/ehca_qp.c         |    4 +-
 drivers/infiniband/hw/mlx4/qp.c              |   16 +++-
 drivers/infiniband/hw/mthca/mthca_cq.c       |   53 +++------
 drivers/infiniband/hw/mthca/mthca_doorbell.h |   13 ++-
 drivers/infiniband/hw/mthca/mthca_eq.c       |   21 +---
 drivers/infiniband/hw/mthca/mthca_qp.c       |   45 +++-----
 drivers/infiniband/hw/mthca/mthca_srq.c      |   11 +--
 drivers/infiniband/ulp/ipoib/ipoib.h         |   15 ++-
 drivers/infiniband/ulp/ipoib/ipoib_cm.c      |  114 ++++++++-----------
 drivers/infiniband/ulp/ipoib/ipoib_ib.c      |   52 +++++----
 drivers/infiniband/ulp/ipoib/ipoib_main.c    |    4 +-
 drivers/net/mlx4/fw.c                        |    2 +-
 include/linux/mlx4/doorbell.h                |   11 --
 19 files changed, 284 insertions(+), 324 deletions(-)


diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 93644f8..ee946cc 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -114,13 +114,16 @@ struct rdma_id_private {
 
 	struct rdma_bind_list	*bind_list;
 	struct hlist_node	node;
-	struct list_head	list;
-	struct list_head	listen_list;
+	struct list_head	list; /* listen_any_list or cma_device.list */
+	struct list_head	listen_list; /* per device listens */
 	struct cma_device	*cma_dev;
 	struct list_head	mc_list;
 
+	int			internal_id;
 	enum cma_state		state;
 	spinlock_t		lock;
+	struct mutex		qp_mutex;
+
 	struct completion	comp;
 	atomic_t		refcount;
 	wait_queue_head_t	wait_remove;
@@ -389,6 +392,7 @@ struct rdma_cm_id *rdma_create_id(rdma_cm_event_handler event_handler,
 	id_priv->id.event_handler = event_handler;
 	id_priv->id.ps = ps;
 	spin_lock_init(&id_priv->lock);
+	mutex_init(&id_priv->qp_mutex);
 	init_completion(&id_priv->comp);
 	atomic_set(&id_priv->refcount, 1);
 	init_waitqueue_head(&id_priv->wait_remove);
@@ -474,61 +478,86 @@ EXPORT_SYMBOL(rdma_create_qp);
 
 void rdma_destroy_qp(struct rdma_cm_id *id)
 {
-	ib_destroy_qp(id->qp);
+	struct rdma_id_private *id_priv;
+
+	id_priv = container_of(id, struct rdma_id_private, id);
+	mutex_lock(&id_priv->qp_mutex);
+	ib_destroy_qp(id_priv->id.qp);
+	id_priv->id.qp = NULL;
+	mutex_unlock(&id_priv->qp_mutex);
 }
 EXPORT_SYMBOL(rdma_destroy_qp);
 
-static int cma_modify_qp_rtr(struct rdma_cm_id *id)
+static int cma_modify_qp_rtr(struct rdma_id_private *id_priv)
 {
 	struct ib_qp_attr qp_attr;
 	int qp_attr_mask, ret;
 
-	if (!id->qp)
-		return 0;
+	mutex_lock(&id_priv->qp_mutex);
+	if (!id_priv->id.qp) {
+		ret = 0;
+		goto out;
+	}
 
 	/* Need to update QP attributes from default values. */
 	qp_attr.qp_state = IB_QPS_INIT;
-	ret = rdma_init_qp_attr(id, &qp_attr, &qp_attr_mask);
+	ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask);
 	if (ret)
-		return ret;
+		goto out;
 
-	ret = ib_modify_qp(id->qp, &qp_attr, qp_attr_mask);
+	ret = ib_modify_qp(id_priv->id.qp, &qp_attr, qp_attr_mask);
 	if (ret)
-		return ret;
+		goto out;
 
 	qp_attr.qp_state = IB_QPS_RTR;
-	ret = rdma_init_qp_attr(id, &qp_attr, &qp_attr_mask);
+	ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask);
 	if (ret)
-		return ret;
+		goto out;
 
-	return ib_modify_qp(id->qp, &qp_attr, qp_attr_mask);
+	ret = ib_modify_qp(id_priv->id.qp, &qp_attr, qp_attr_mask);
+out:
+	mutex_unlock(&id_priv->qp_mutex);
+	return ret;
 }
 
-static int cma_modify_qp_rts(struct rdma_cm_id *id)
+static int cma_modify_qp_rts(struct rdma_id_private *id_priv)
 {
 	struct ib_qp_attr qp_attr;
 	int qp_attr_mask, ret;
 
-	if (!id->qp)
-		return 0;
+	mutex_lock(&id_priv->qp_mutex);
+	if (!id_priv->id.qp) {
+		ret = 0;
+		goto out;
+	}
 
 	qp_attr.qp_state = IB_QPS_RTS;
-	ret = rdma_init_qp_attr(id, &qp_attr, &qp_attr_mask);
+	ret = rdma_init_qp_attr(&id_priv->id, &qp_attr, &qp_attr_mask);
 	if (ret)
-		return ret;
+		goto out;
 
-	return ib_modify_qp(id->qp, &qp_attr, qp_attr_mask);
+	ret = ib_modify_qp(id_priv->id.qp, &qp_attr, qp_attr_mask);
+out:
+	mutex_unlock(&id_priv->qp_mutex);
+	return ret;
 }
 
-static int cma_modify_qp_err(struct rdma_cm_id *id)
+static int cma_modify_qp_err(struct rdma_id_private *id_priv)
 {
 	struct ib_qp_attr qp_attr;
+	int ret;
 
-	if (!id->qp)
-		return 0;
+	mutex_lock(&id_priv->qp_mutex);
+	if (!id_priv->id.qp) {
+		ret = 0;
+		goto out;
+	}
 
 	qp_attr.qp_state = IB_QPS_ERR;
-	return ib_modify_qp(id->qp, &qp_attr, IB_QP_STATE);
+	ret = ib_modify_qp(id_priv->id.qp, &qp_attr, IB_QP_STATE);
+out:
+	mutex_unlock(&id_priv->qp_mutex);
+	return ret;
 }
 
 static int cma_ib_init_qp_attr(struct rdma_id_private *id_priv,
@@ -717,50 +746,27 @@ static void cma_cancel_route(struct rdma_id_private *id_priv)
 	}
 }
 
-static inline int cma_internal_listen(struct rdma_id_private *id_priv)
-{
-	return (id_priv->state == CMA_LISTEN) && id_priv->cma_dev &&
-	       cma_any_addr(&id_priv->id.route.addr.src_addr);
-}
-
-static void cma_destroy_listen(struct rdma_id_private *id_priv)
-{
-	cma_exch(id_priv, CMA_DESTROYING);
-
-	if (id_priv->cma_dev) {
-		switch (rdma_node_get_transport(id_priv->id.device->node_type)) {
-		case RDMA_TRANSPORT_IB:
-			if (id_priv->cm_id.ib && !IS_ERR(id_priv->cm_id.ib))
-				ib_destroy_cm_id(id_priv->cm_id.ib);
-			break;
-		case RDMA_TRANSPORT_IWARP:
-			if (id_priv->cm_id.iw && !IS_ERR(id_priv->cm_id.iw))
-				iw_destroy_cm_id(id_priv->cm_id.iw);
-			break;
-		default:
-			break;
-		}
-		cma_detach_from_dev(id_priv);
-	}
-	list_del(&id_priv->listen_list);
-
-	cma_deref_id(id_priv);
-	wait_for_completion(&id_priv->comp);
-
-	kfree(id_priv);
-}
-
 static void cma_cancel_listens(struct rdma_id_private *id_priv)
 {
 	struct rdma_id_private *dev_id_priv;
 
+	/*
+	 * Remove from listen_any_list to prevent added devices from spawning
+	 * additional listen requests.
+	 */
 	mutex_lock(&lock);
 	list_del(&id_priv->list);
 
 	while (!list_empty(&id_priv->listen_list)) {
 		dev_id_priv = list_entry(id_priv->listen_list.next,
 					 struct rdma_id_private, listen_list);
-		cma_destroy_listen(dev_id_priv);
+		/* sync with device removal to avoid duplicate destruction */
+		list_del_init(&dev_id_priv->list);
+		list_del(&dev_id_priv->listen_list);
+		mutex_unlock(&lock);
+
+		rdma_destroy_id(&dev_id_priv->id);
+		mutex_lock(&lock);
 	}
 	mutex_unlock(&lock);
 }
@@ -848,6 +854,9 @@ void rdma_destroy_id(struct rdma_cm_id *id)
 	cma_deref_id(id_priv);
 	wait_for_completion(&id_priv->comp);
 
+	if (id_priv->internal_id)
+		cma_deref_id(id_priv->id.context);
+
 	kfree(id_priv->id.route.path_rec);
 	kfree(id_priv);
 }
@@ -857,11 +866,11 @@ static int cma_rep_recv(struct rdma_id_private *id_priv)
 {
 	int ret;
 
-	ret = cma_modify_qp_rtr(&id_priv->id);
+	ret = cma_modify_qp_rtr(id_priv);
 	if (ret)
 		goto reject;
 
-	ret = cma_modify_qp_rts(&id_priv->id);
+	ret = cma_modify_qp_rts(id_priv);
 	if (ret)
 		goto reject;
 
@@ -871,7 +880,7 @@ static int cma_rep_recv(struct rdma_id_private *id_priv)
 
 	return 0;
 reject:
-	cma_modify_qp_err(&id_priv->id);
+	cma_modify_qp_err(id_priv);
 	ib_send_cm_rej(id_priv->cm_id.ib, IB_CM_REJ_CONSUMER_DEFINED,
 		       NULL, 0, NULL, 0);
 	return ret;
@@ -947,7 +956,7 @@ static int cma_ib_handler(struct ib_cm_id *cm_id, struct ib_cm_event *ib_event)
 		/* ignore event */
 		goto out;
 	case IB_CM_REJ_RECEIVED:
-		cma_modify_qp_err(&id_priv->id);
+		cma_modify_qp_err(id_priv);
 		event.status = ib_event->param.rej_rcvd.reason;
 		event.event = RDMA_CM_EVENT_REJECTED;
 		event.param.conn.private_data = ib_event->private_data;
@@ -1404,14 +1413,13 @@ static void cma_listen_on_dev(struct rdma_id_private *id_priv,
 
 	cma_attach_to_dev(dev_id_priv, cma_dev);
 	list_add_tail(&dev_id_priv->listen_list, &id_priv->listen_list);
+	atomic_inc(&id_priv->refcount);
+	dev_id_priv->internal_id = 1;
 
 	ret = rdma_listen(id, id_priv->backlog);
 	if (ret)
-		goto err;
-
-	return;
-err:
-	cma_destroy_listen(dev_id_priv);
+		printk(KERN_WARNING "RDMA CMA: cma_listen_on_dev, error %d, "
+		       "listening on device %s", ret, cma_dev->device->name);
 }
 
 static void cma_listen_on_all(struct rdma_id_private *id_priv)
@@ -2264,7 +2272,7 @@ static int cma_connect_iw(struct rdma_id_private *id_priv,
 	sin = (struct sockaddr_in*) &id_priv->id.route.addr.dst_addr;
 	cm_id->remote_addr = *sin;
 
-	ret = cma_modify_qp_rtr(&id_priv->id);
+	ret = cma_modify_qp_rtr(id_priv);
 	if (ret)
 		goto out;
 
@@ -2331,7 +2339,7 @@ static int cma_accept_ib(struct rdma_id_private *id_priv,
 	int qp_attr_mask, ret;
 
 	if (id_priv->id.qp) {
-		ret = cma_modify_qp_rtr(&id_priv->id);
+		ret = cma_modify_qp_rtr(id_priv);
 		if (ret)
 			goto out;
 
@@ -2370,7 +2378,7 @@ static int cma_accept_iw(struct rdma_id_private *id_priv,
 	struct iw_cm_conn_param iw_param;
 	int ret;
 
-	ret = cma_modify_qp_rtr(&id_priv->id);
+	ret = cma_modify_qp_rtr(id_priv);
 	if (ret)
 		return ret;
 
@@ -2442,7 +2450,7 @@ int rdma_accept(struct rdma_cm_id *id, struct rdma_conn_param *conn_param)
 
 	return 0;
 reject:
-	cma_modify_qp_err(id);
+	cma_modify_qp_err(id_priv);
 	rdma_reject(id, NULL, 0);
 	return ret;
 }
@@ -2512,7 +2520,7 @@ int rdma_disconnect(struct rdma_cm_id *id)
 
 	switch (rdma_node_get_transport(id->device->node_type)) {
 	case RDMA_TRANSPORT_IB:
-		ret = cma_modify_qp_err(id);
+		ret = cma_modify_qp_err(id_priv);
 		if (ret)
 			goto out;
 		/* Initiate or respond to a disconnect. */
@@ -2543,9 +2551,11 @@ static int cma_ib_mc_handler(int status, struct ib_sa_multicast *multicast)
 	    cma_disable_remove(id_priv, CMA_ADDR_RESOLVED))
 		return 0;
 
+	mutex_lock(&id_priv->qp_mutex);
 	if (!status && id_priv->id.qp)
 		status = ib_attach_mcast(id_priv->id.qp, &multicast->rec.mgid,
 					 multicast->rec.mlid);
+	mutex_unlock(&id_priv->qp_mutex);
 
 	memset(&event, 0, sizeof event);
 	event.status = status;
@@ -2757,16 +2767,12 @@ static void cma_process_remove(struct cma_device *cma_dev)
 		id_priv = list_entry(cma_dev->id_list.next,
 				     struct rdma_id_private, list);
 
-		if (cma_internal_listen(id_priv)) {
-			cma_destroy_listen(id_priv);
-			continue;
-		}
-
+		list_del(&id_priv->listen_list);
 		list_del_init(&id_priv->list);
 		atomic_inc(&id_priv->refcount);
 		mutex_unlock(&lock);
 
-		ret = cma_remove_id_dev(id_priv);
+		ret = id_priv->internal_id ? 1 : cma_remove_id_dev(id_priv);
 		cma_deref_id(id_priv);
 		if (ret)
 			rdma_destroy_id(&id_priv->id);
diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c
index 01d7008..495c803 100644
--- a/drivers/infiniband/core/uverbs_cmd.c
+++ b/drivers/infiniband/core/uverbs_cmd.c
@@ -147,8 +147,12 @@ static struct ib_uobject *__idr_get_uobj(struct idr *idr, int id,
 
 	spin_lock(&ib_uverbs_idr_lock);
 	uobj = idr_find(idr, id);
-	if (uobj)
-		kref_get(&uobj->ref);
+	if (uobj) {
+		if (uobj->context == context)
+			kref_get(&uobj->ref);
+		else
+			uobj = NULL;
+	}
 	spin_unlock(&ib_uverbs_idr_lock);
 
 	return uobj;
diff --git a/drivers/infiniband/hw/ehca/ehca_classes.h b/drivers/infiniband/hw/ehca/ehca_classes.h
index 0f7a55d..365bc5d 100644
--- a/drivers/infiniband/hw/ehca/ehca_classes.h
+++ b/drivers/infiniband/hw/ehca/ehca_classes.h
@@ -323,7 +323,6 @@ extern int ehca_static_rate;
 extern int ehca_port_act_time;
 extern int ehca_use_hp_mr;
 extern int ehca_scaling_code;
-extern int ehca_mr_largepage;
 
 struct ipzu_queue_resp {
 	u32 qe_size;      /* queue entry size */
diff --git a/drivers/infiniband/hw/ehca/ehca_hca.c b/drivers/infiniband/hw/ehca/ehca_hca.c
index 4aa3ffa..15806d1 100644
--- a/drivers/infiniband/hw/ehca/ehca_hca.c
+++ b/drivers/infiniband/hw/ehca/ehca_hca.c
@@ -77,6 +77,7 @@ int ehca_query_device(struct ib_device *ibdev, struct ib_device_attr *props)
 	}
 
 	memset(props, 0, sizeof(struct ib_device_attr));
+	props->page_size_cap   = shca->hca_cap_mr_pgsize;
 	props->fw_ver          = rblock->hw_ver;
 	props->max_mr_size     = rblock->max_mr_size;
 	props->vendor_id       = rblock->vendor_id >> 8;
diff --git a/drivers/infiniband/hw/ehca/ehca_main.c b/drivers/infiniband/hw/ehca/ehca_main.c
index 403467f..2f51c13 100644
--- a/drivers/infiniband/hw/ehca/ehca_main.c
+++ b/drivers/infiniband/hw/ehca/ehca_main.c
@@ -65,7 +65,7 @@ int ehca_port_act_time = 30;
 int ehca_poll_all_eqs  = 1;
 int ehca_static_rate   = -1;
 int ehca_scaling_code  = 0;
-int ehca_mr_largepage  = 0;
+int ehca_mr_largepage  = 1;
 
 module_param_named(open_aqp1,     ehca_open_aqp1,     int, S_IRUGO);
 module_param_named(debug_level,   ehca_debug_level,   int, S_IRUGO);
@@ -260,13 +260,20 @@ static struct cap_descr {
 	{ HCA_CAP_MINI_QP, "HCA_CAP_MINI_QP" },
 };
 
-int ehca_sense_attributes(struct ehca_shca *shca)
+static int ehca_sense_attributes(struct ehca_shca *shca)
 {
 	int i, ret = 0;
 	u64 h_ret;
 	struct hipz_query_hca *rblock;
 	struct hipz_query_port *port;
 
+	static const u32 pgsize_map[] = {
+		HCA_CAP_MR_PGSIZE_4K,  0x1000,
+		HCA_CAP_MR_PGSIZE_64K, 0x10000,
+		HCA_CAP_MR_PGSIZE_1M,  0x100000,
+		HCA_CAP_MR_PGSIZE_16M, 0x1000000,
+	};
+
 	rblock = ehca_alloc_fw_ctrlblock(GFP_KERNEL);
 	if (!rblock) {
 		ehca_gen_err("Cannot allocate rblock memory.");
@@ -329,8 +336,15 @@ int ehca_sense_attributes(struct ehca_shca *shca)
 		if (EHCA_BMASK_GET(hca_cap_descr[i].mask, shca->hca_cap))
 			ehca_gen_dbg("   %s", hca_cap_descr[i].descr);
 
-	shca->hca_cap_mr_pgsize = rblock->memory_page_size_supported;
+	/* translate supported MR page sizes; always support 4K */
+	shca->hca_cap_mr_pgsize = EHCA_PAGESIZE;
+	if (ehca_mr_largepage) { /* support extra sizes only if enabled */
+		for (i = 0; i < ARRAY_SIZE(pgsize_map); i += 2)
+			if (rblock->memory_page_size_supported & pgsize_map[i])
+				shca->hca_cap_mr_pgsize |= pgsize_map[i + 1];
+	}
 
+	/* query max MTU from first port -- it's the same for all ports */
 	port = (struct hipz_query_port *)rblock;
 	h_ret = hipz_h_query_port(shca->ipz_hca_handle, 1, port);
 	if (h_ret != H_SUCCESS) {
diff --git a/drivers/infiniband/hw/ehca/ehca_mrmw.c b/drivers/infiniband/hw/ehca/ehca_mrmw.c
index da88738..bb97915 100644
--- a/drivers/infiniband/hw/ehca/ehca_mrmw.c
+++ b/drivers/infiniband/hw/ehca/ehca_mrmw.c
@@ -72,24 +72,14 @@ enum ehca_mr_pgsize {
 
 static u32 ehca_encode_hwpage_size(u32 pgsize)
 {
-	u32 idx = 0;
-	pgsize >>= 12;
-	/*
-	 * map mr page size into hw code:
-	 * 0, 1, 2, 3 for 4K, 64K, 1M, 64M
-	 */
-	while (!(pgsize & 1)) {
-		idx++;
-		pgsize >>= 4;
-	}
-	return idx;
+	int log = ilog2(pgsize);
+	WARN_ON(log < 12 || log > 24 || log & 3);
+	return (log - 12) / 4;
 }
 
 static u64 ehca_get_max_hwpage_size(struct ehca_shca *shca)
 {
-	if (shca->hca_cap_mr_pgsize & HCA_CAP_MR_PGSIZE_16M)
-		return EHCA_MR_PGSIZE16M;
-	return EHCA_MR_PGSIZE4K;
+	return 1UL << ilog2(shca->hca_cap_mr_pgsize);
 }
 
 static struct ehca_mr *ehca_mr_new(void)
@@ -259,7 +249,7 @@ struct ib_mr *ehca_reg_phys_mr(struct ib_pd *pd,
 		pginfo.u.phy.num_phys_buf = num_phys_buf;
 		pginfo.u.phy.phys_buf_array = phys_buf_array;
 		pginfo.next_hwpage =
-			((u64)iova_start & ~(hw_pgsize - 1)) / hw_pgsize;
+			((u64)iova_start & ~PAGE_MASK) / hw_pgsize;
 
 		ret = ehca_reg_mr(shca, e_mr, iova_start, size, mr_access_flags,
 				  e_pd, &pginfo, &e_mr->ib.ib_mr.lkey,
@@ -296,7 +286,7 @@ struct ib_mr *ehca_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
 		container_of(pd->device, struct ehca_shca, ib_device);
 	struct ehca_pd *e_pd = container_of(pd, struct ehca_pd, ib_pd);
 	struct ehca_mr_pginfo pginfo;
-	int ret;
+	int ret, page_shift;
 	u32 num_kpages;
 	u32 num_hwpages;
 	u64 hwpage_size;
@@ -351,19 +341,20 @@ struct ib_mr *ehca_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
 	/* determine number of MR pages */
 	num_kpages = NUM_CHUNKS((virt % PAGE_SIZE) + length, PAGE_SIZE);
 	/* select proper hw_pgsize */
-	if (ehca_mr_largepage &&
-	    (shca->hca_cap_mr_pgsize & HCA_CAP_MR_PGSIZE_16M)) {
-		int page_shift = PAGE_SHIFT;
-		if (e_mr->umem->hugetlb) {
-			/* determine page_shift, clamp between 4K and 16M */
-			page_shift = (fls64(length - 1) + 3) & ~3;
-			page_shift = min(max(page_shift, EHCA_MR_PGSHIFT4K),
-					 EHCA_MR_PGSHIFT16M);
-		}
-		hwpage_size = 1UL << page_shift;
-	} else
-		hwpage_size = EHCA_MR_PGSIZE4K; /* ehca1 only supports 4k */
-	ehca_dbg(pd->device, "hwpage_size=%lx", hwpage_size);
+	page_shift = PAGE_SHIFT;
+	if (e_mr->umem->hugetlb) {
+		/* determine page_shift, clamp between 4K and 16M */
+		page_shift = (fls64(length - 1) + 3) & ~3;
+		page_shift = min(max(page_shift, EHCA_MR_PGSHIFT4K),
+				 EHCA_MR_PGSHIFT16M);
+	}
+	hwpage_size = 1UL << page_shift;
+
+	/* now that we have the desired page size, shift until it's
+	 * supported, too. 4K is always supported, so this terminates.
+	 */
+	while (!(hwpage_size & shca->hca_cap_mr_pgsize))
+		hwpage_size >>= 4;
 
 reg_user_mr_fallback:
 	num_hwpages = NUM_CHUNKS((virt % hwpage_size) + length, hwpage_size);
@@ -547,7 +538,7 @@ int ehca_rereg_phys_mr(struct ib_mr *mr,
 		pginfo.u.phy.num_phys_buf = num_phys_buf;
 		pginfo.u.phy.phys_buf_array = phys_buf_array;
 		pginfo.next_hwpage =
-			((u64)iova_start & ~(hw_pgsize - 1)) / hw_pgsize;
+			((u64)iova_start & ~PAGE_MASK) / hw_pgsize;
 	}
 	if (mr_rereg_mask & IB_MR_REREG_ACCESS)
 		new_acl = mr_access_flags;
@@ -809,8 +800,9 @@ struct ib_fmr *ehca_alloc_fmr(struct ib_pd *pd,
 		ib_fmr = ERR_PTR(-EINVAL);
 		goto alloc_fmr_exit0;
 	}
-	hw_pgsize = ehca_get_max_hwpage_size(shca);
-	if ((1 << fmr_attr->page_shift) != hw_pgsize) {
+
+	hw_pgsize = 1 << fmr_attr->page_shift;
+	if (!(hw_pgsize & shca->hca_cap_mr_pgsize)) {
 		ehca_err(pd->device, "unsupported fmr_attr->page_shift=%x",
 			 fmr_attr->page_shift);
 		ib_fmr = ERR_PTR(-EINVAL);
@@ -826,6 +818,7 @@ struct ib_fmr *ehca_alloc_fmr(struct ib_pd *pd,
 
 	/* register MR on HCA */
 	memset(&pginfo, 0, sizeof(pginfo));
+	pginfo.hwpage_size = hw_pgsize;
 	/*
 	 * pginfo.num_hwpages==0, ie register_rpages() will not be called
 	 * but deferred to map_phys_fmr()
diff --git a/drivers/infiniband/hw/ehca/ehca_qp.c b/drivers/infiniband/hw/ehca/ehca_qp.c
index e2bd62b..de18264 100644
--- a/drivers/infiniband/hw/ehca/ehca_qp.c
+++ b/drivers/infiniband/hw/ehca/ehca_qp.c
@@ -451,7 +451,6 @@ static struct ehca_qp *internal_create_qp(
 		has_srq = 1;
 		parms.ext_type = EQPT_SRQBASE;
 		parms.srq_qpn = my_srq->real_qp_num;
-		parms.srq_token = my_srq->token;
 	}
 
 	if (is_llqp && has_srq) {
@@ -583,6 +582,9 @@ static struct ehca_qp *internal_create_qp(
 		goto create_qp_exit1;
 	}
 
+	if (has_srq)
+		parms.srq_token = my_qp->token;
+
 	parms.servicetype = ibqptype2servicetype(qp_type);
 	if (parms.servicetype < 0) {
 		ret = -EINVAL;
diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
index 31a480e..6b33224 100644
--- a/drivers/infiniband/hw/mlx4/qp.c
+++ b/drivers/infiniband/hw/mlx4/qp.c
@@ -63,6 +63,10 @@ struct mlx4_ib_sqp {
 	u8			header_buf[MLX4_IB_UD_HEADER_SIZE];
 };
 
+enum {
+	MLX4_IB_MIN_SQ_STRIDE = 6
+};
+
 static const __be32 mlx4_ib_opcode[] = {
 	[IB_WR_SEND]			= __constant_cpu_to_be32(MLX4_OPCODE_SEND),
 	[IB_WR_SEND_WITH_IMM]		= __constant_cpu_to_be32(MLX4_OPCODE_SEND_IMM),
@@ -285,9 +289,17 @@ static int set_kernel_sq_size(struct mlx4_ib_dev *dev, struct ib_qp_cap *cap,
 	return 0;
 }
 
-static int set_user_sq_size(struct mlx4_ib_qp *qp,
+static int set_user_sq_size(struct mlx4_ib_dev *dev,
+			    struct mlx4_ib_qp *qp,
 			    struct mlx4_ib_create_qp *ucmd)
 {
+	/* Sanity check SQ size before proceeding */
+	if ((1 << ucmd->log_sq_bb_count) > dev->dev->caps.max_wqes	 ||
+	    ucmd->log_sq_stride >
+		ilog2(roundup_pow_of_two(dev->dev->caps.max_sq_desc_sz)) ||
+	    ucmd->log_sq_stride < MLX4_IB_MIN_SQ_STRIDE)
+		return -EINVAL;
+
 	qp->sq.wqe_cnt   = 1 << ucmd->log_sq_bb_count;
 	qp->sq.wqe_shift = ucmd->log_sq_stride;
 
@@ -330,7 +342,7 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,
 
 		qp->sq_no_prefetch = ucmd.sq_no_prefetch;
 
-		err = set_user_sq_size(qp, &ucmd);
+		err = set_user_sq_size(dev, qp, &ucmd);
 		if (err)
 			goto err;
 
diff --git a/drivers/infiniband/hw/mthca/mthca_cq.c b/drivers/infiniband/hw/mthca/mthca_cq.c
index be6e1e0..6bd9f13 100644
--- a/drivers/infiniband/hw/mthca/mthca_cq.c
+++ b/drivers/infiniband/hw/mthca/mthca_cq.c
@@ -204,16 +204,11 @@ static void dump_cqe(struct mthca_dev *dev, void *cqe_ptr)
 static inline void update_cons_index(struct mthca_dev *dev, struct mthca_cq *cq,
 				     int incr)
 {
-	__be32 doorbell[2];
-
 	if (mthca_is_memfree(dev)) {
 		*cq->set_ci_db = cpu_to_be32(cq->cons_index);
 		wmb();
 	} else {
-		doorbell[0] = cpu_to_be32(MTHCA_TAVOR_CQ_DB_INC_CI | cq->cqn);
-		doorbell[1] = cpu_to_be32(incr - 1);
-
-		mthca_write64(doorbell,
+		mthca_write64(MTHCA_TAVOR_CQ_DB_INC_CI | cq->cqn, incr - 1,
 			      dev->kar + MTHCA_CQ_DOORBELL,
 			      MTHCA_GET_DOORBELL_LOCK(&dev->doorbell_lock));
 		/*
@@ -731,17 +726,12 @@ repoll:
 
 int mthca_tavor_arm_cq(struct ib_cq *cq, enum ib_cq_notify_flags flags)
 {
-	__be32 doorbell[2];
+	u32 dbhi = ((flags & IB_CQ_SOLICITED_MASK) == IB_CQ_SOLICITED ?
+		    MTHCA_TAVOR_CQ_DB_REQ_NOT_SOL :
+		    MTHCA_TAVOR_CQ_DB_REQ_NOT) |
+		to_mcq(cq)->cqn;
 
-	doorbell[0] = cpu_to_be32(((flags & IB_CQ_SOLICITED_MASK) ==
-				   IB_CQ_SOLICITED ?
-				   MTHCA_TAVOR_CQ_DB_REQ_NOT_SOL :
-				   MTHCA_TAVOR_CQ_DB_REQ_NOT)      |
-				  to_mcq(cq)->cqn);
-	doorbell[1] = (__force __be32) 0xffffffff;
-
-	mthca_write64(doorbell,
-		      to_mdev(cq->device)->kar + MTHCA_CQ_DOORBELL,
+	mthca_write64(dbhi, 0xffffffff, to_mdev(cq->device)->kar + MTHCA_CQ_DOORBELL,
 		      MTHCA_GET_DOORBELL_LOCK(&to_mdev(cq->device)->doorbell_lock));
 
 	return 0;
@@ -750,19 +740,16 @@ int mthca_tavor_arm_cq(struct ib_cq *cq, enum ib_cq_notify_flags flags)
 int mthca_arbel_arm_cq(struct ib_cq *ibcq, enum ib_cq_notify_flags flags)
 {
 	struct mthca_cq *cq = to_mcq(ibcq);
-	__be32 doorbell[2];
-	u32 sn;
-	__be32 ci;
-
-	sn = cq->arm_sn & 3;
-	ci = cpu_to_be32(cq->cons_index);
+	__be32 db_rec[2];
+	u32 dbhi;
+	u32 sn = cq->arm_sn & 3;
 
-	doorbell[0] = ci;
-	doorbell[1] = cpu_to_be32((cq->cqn << 8) | (2 << 5) | (sn << 3) |
-				  ((flags & IB_CQ_SOLICITED_MASK) ==
-				   IB_CQ_SOLICITED ? 1 : 2));
+	db_rec[0] = cpu_to_be32(cq->cons_index);
+	db_rec[1] = cpu_to_be32((cq->cqn << 8) | (2 << 5) | (sn << 3) |
+				((flags & IB_CQ_SOLICITED_MASK) ==
+				 IB_CQ_SOLICITED ? 1 : 2));
 
-	mthca_write_db_rec(doorbell, cq->arm_db);
+	mthca_write_db_rec(db_rec, cq->arm_db);
 
 	/*
 	 * Make sure that the doorbell record in host memory is
@@ -770,14 +757,12 @@ int mthca_arbel_arm_cq(struct ib_cq *ibcq, enum ib_cq_notify_flags flags)
 	 */
 	wmb();
 
-	doorbell[0] = cpu_to_be32((sn << 28)                       |
-				  ((flags & IB_CQ_SOLICITED_MASK) == IB_CQ_SOLICITED ?
-				   MTHCA_ARBEL_CQ_DB_REQ_NOT_SOL :
-				   MTHCA_ARBEL_CQ_DB_REQ_NOT)      |
-				  cq->cqn);
-	doorbell[1] = ci;
+	dbhi = (sn << 28) |
+		((flags & IB_CQ_SOLICITED_MASK) == IB_CQ_SOLICITED ?
+		 MTHCA_ARBEL_CQ_DB_REQ_NOT_SOL :
+		 MTHCA_ARBEL_CQ_DB_REQ_NOT) | cq->cqn;
 
-	mthca_write64(doorbell,
+	mthca_write64(dbhi, cq->cons_index,
 		      to_mdev(ibcq->device)->kar + MTHCA_CQ_DOORBELL,
 		      MTHCA_GET_DOORBELL_LOCK(&to_mdev(ibcq->device)->doorbell_lock));
 
diff --git a/drivers/infiniband/hw/mthca/mthca_doorbell.h b/drivers/infiniband/hw/mthca/mthca_doorbell.h
index dd9a44d..b374dc3 100644
--- a/drivers/infiniband/hw/mthca/mthca_doorbell.h
+++ b/drivers/infiniband/hw/mthca/mthca_doorbell.h
@@ -58,10 +58,10 @@ static inline void mthca_write64_raw(__be64 val, void __iomem *dest)
 	__raw_writeq((__force u64) val, dest);
 }
 
-static inline void mthca_write64(__be32 val[2], void __iomem *dest,
+static inline void mthca_write64(u32 hi, u32 lo, void __iomem *dest,
 				 spinlock_t *doorbell_lock)
 {
-	__raw_writeq(*(u64 *) val, dest);
+	__raw_writeq((__force u64) cpu_to_be64((u64) hi << 32 | lo), dest);
 }
 
 static inline void mthca_write_db_rec(__be32 val[2], __be32 *db)
@@ -87,14 +87,17 @@ static inline void mthca_write64_raw(__be64 val, void __iomem *dest)
 	__raw_writel(((__force u32 *) &val)[1], dest + 4);
 }
 
-static inline void mthca_write64(__be32 val[2], void __iomem *dest,
+static inline void mthca_write64(u32 hi, u32 lo, void __iomem *dest,
 				 spinlock_t *doorbell_lock)
 {
 	unsigned long flags;
 
+	hi = (__force u32) cpu_to_be32(hi);
+	lo = (__force u32) cpu_to_be32(lo);
+
 	spin_lock_irqsave(doorbell_lock, flags);
-	__raw_writel((__force u32) val[0], dest);
-	__raw_writel((__force u32) val[1], dest + 4);
+	__raw_writel(hi, dest);
+	__raw_writel(lo, dest + 4);
 	spin_unlock_irqrestore(doorbell_lock, flags);
 }
 
diff --git a/drivers/infiniband/hw/mthca/mthca_eq.c b/drivers/infiniband/hw/mthca/mthca_eq.c
index 8592b26..b29de51 100644
--- a/drivers/infiniband/hw/mthca/mthca_eq.c
+++ b/drivers/infiniband/hw/mthca/mthca_eq.c
@@ -173,11 +173,6 @@ static inline u64 async_mask(struct mthca_dev *dev)
 
 static inline void tavor_set_eq_ci(struct mthca_dev *dev, struct mthca_eq *eq, u32 ci)
 {
-	__be32 doorbell[2];
-
-	doorbell[0] = cpu_to_be32(MTHCA_EQ_DB_SET_CI | eq->eqn);
-	doorbell[1] = cpu_to_be32(ci & (eq->nent - 1));
-
 	/*
 	 * This barrier makes sure that all updates to ownership bits
 	 * done by set_eqe_hw() hit memory before the consumer index
@@ -187,7 +182,7 @@ static inline void tavor_set_eq_ci(struct mthca_dev *dev, struct mthca_eq *eq, u
 	 * having set_eqe_hw() overwrite the owner field.
 	 */
 	wmb();
-	mthca_write64(doorbell,
+	mthca_write64(MTHCA_EQ_DB_SET_CI | eq->eqn, ci & (eq->nent - 1),
 		      dev->kar + MTHCA_EQ_DOORBELL,
 		      MTHCA_GET_DOORBELL_LOCK(&dev->doorbell_lock));
 }
@@ -212,12 +207,7 @@ static inline void set_eq_ci(struct mthca_dev *dev, struct mthca_eq *eq, u32 ci)
 
 static inline void tavor_eq_req_not(struct mthca_dev *dev, int eqn)
 {
-	__be32 doorbell[2];
-
-	doorbell[0] = cpu_to_be32(MTHCA_EQ_DB_REQ_NOT | eqn);
-	doorbell[1] = 0;
-
-	mthca_write64(doorbell,
+	mthca_write64(MTHCA_EQ_DB_REQ_NOT | eqn, 0,
 		      dev->kar + MTHCA_EQ_DOORBELL,
 		      MTHCA_GET_DOORBELL_LOCK(&dev->doorbell_lock));
 }
@@ -230,12 +220,7 @@ static inline void arbel_eq_req_not(struct mthca_dev *dev, u32 eqn_mask)
 static inline void disarm_cq(struct mthca_dev *dev, int eqn, int cqn)
 {
 	if (!mthca_is_memfree(dev)) {
-		__be32 doorbell[2];
-
-		doorbell[0] = cpu_to_be32(MTHCA_EQ_DB_DISARM_CQ | eqn);
-		doorbell[1] = cpu_to_be32(cqn);
-
-		mthca_write64(doorbell,
+		mthca_write64(MTHCA_EQ_DB_DISARM_CQ | eqn, cqn,
 			      dev->kar + MTHCA_EQ_DOORBELL,
 			      MTHCA_GET_DOORBELL_LOCK(&dev->doorbell_lock));
 	}
diff --git a/drivers/infiniband/hw/mthca/mthca_qp.c b/drivers/infiniband/hw/mthca/mthca_qp.c
index df01b20..0e5461c 100644
--- a/drivers/infiniband/hw/mthca/mthca_qp.c
+++ b/drivers/infiniband/hw/mthca/mthca_qp.c
@@ -1799,15 +1799,11 @@ int mthca_tavor_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
 
 out:
 	if (likely(nreq)) {
-		__be32 doorbell[2];
-
-		doorbell[0] = cpu_to_be32(((qp->sq.next_ind << qp->sq.wqe_shift) +
-					   qp->send_wqe_offset) | f0 | op0);
-		doorbell[1] = cpu_to_be32((qp->qpn << 8) | size0);
-
 		wmb();
 
-		mthca_write64(doorbell,
+		mthca_write64(((qp->sq.next_ind << qp->sq.wqe_shift) +
+			       qp->send_wqe_offset) | f0 | op0,
+			      (qp->qpn << 8) | size0,
 			      dev->kar + MTHCA_SEND_DOORBELL,
 			      MTHCA_GET_DOORBELL_LOCK(&dev->doorbell_lock));
 		/*
@@ -1829,7 +1825,6 @@ int mthca_tavor_post_receive(struct ib_qp *ibqp, struct ib_recv_wr *wr,
 {
 	struct mthca_dev *dev = to_mdev(ibqp->device);
 	struct mthca_qp *qp = to_mqp(ibqp);
-	__be32 doorbell[2];
 	unsigned long flags;
 	int err = 0;
 	int nreq;
@@ -1907,13 +1902,10 @@ int mthca_tavor_post_receive(struct ib_qp *ibqp, struct ib_recv_wr *wr,
 		if (unlikely(nreq == MTHCA_TAVOR_MAX_WQES_PER_RECV_DB)) {
 			nreq = 0;
 
-			doorbell[0] = cpu_to_be32((qp->rq.next_ind << qp->rq.wqe_shift) | size0);
-			doorbell[1] = cpu_to_be32(qp->qpn << 8);
-
 			wmb();
 
-			mthca_write64(doorbell,
-				      dev->kar + MTHCA_RECEIVE_DOORBELL,
+			mthca_write64((qp->rq.next_ind << qp->rq.wqe_shift) | size0,
+				      qp->qpn << 8, dev->kar + MTHCA_RECEIVE_DOORBELL,
 				      MTHCA_GET_DOORBELL_LOCK(&dev->doorbell_lock));
 
 			qp->rq.next_ind = ind;
@@ -1923,13 +1915,10 @@ int mthca_tavor_post_receive(struct ib_qp *ibqp, struct ib_recv_wr *wr,
 
 out:
 	if (likely(nreq)) {
-		doorbell[0] = cpu_to_be32((qp->rq.next_ind << qp->rq.wqe_shift) | size0);
-		doorbell[1] = cpu_to_be32((qp->qpn << 8) | nreq);
-
 		wmb();
 
-		mthca_write64(doorbell,
-			      dev->kar + MTHCA_RECEIVE_DOORBELL,
+		mthca_write64((qp->rq.next_ind << qp->rq.wqe_shift) | size0,
+			      qp->qpn << 8 | nreq, dev->kar + MTHCA_RECEIVE_DOORBELL,
 			      MTHCA_GET_DOORBELL_LOCK(&dev->doorbell_lock));
 	}
 
@@ -1951,7 +1940,7 @@ int mthca_arbel_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
 {
 	struct mthca_dev *dev = to_mdev(ibqp->device);
 	struct mthca_qp *qp = to_mqp(ibqp);
-	__be32 doorbell[2];
+	u32 dbhi;
 	void *wqe;
 	void *prev_wqe;
 	unsigned long flags;
@@ -1981,10 +1970,8 @@ int mthca_arbel_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
 		if (unlikely(nreq == MTHCA_ARBEL_MAX_WQES_PER_SEND_DB)) {
 			nreq = 0;
 
-			doorbell[0] = cpu_to_be32((MTHCA_ARBEL_MAX_WQES_PER_SEND_DB << 24) |
-						  ((qp->sq.head & 0xffff) << 8) |
-						  f0 | op0);
-			doorbell[1] = cpu_to_be32((qp->qpn << 8) | size0);
+			dbhi = (MTHCA_ARBEL_MAX_WQES_PER_SEND_DB << 24) |
+				((qp->sq.head & 0xffff) << 8) | f0 | op0;
 
 			qp->sq.head += MTHCA_ARBEL_MAX_WQES_PER_SEND_DB;
 
@@ -2000,7 +1987,8 @@ int mthca_arbel_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
 			 * write MMIO send doorbell.
 			 */
 			wmb();
-			mthca_write64(doorbell,
+
+			mthca_write64(dbhi, (qp->qpn << 8) | size0,
 				      dev->kar + MTHCA_SEND_DOORBELL,
 				      MTHCA_GET_DOORBELL_LOCK(&dev->doorbell_lock));
 		}
@@ -2154,10 +2142,7 @@ int mthca_arbel_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
 
 out:
 	if (likely(nreq)) {
-		doorbell[0] = cpu_to_be32((nreq << 24)                  |
-					  ((qp->sq.head & 0xffff) << 8) |
-					  f0 | op0);
-		doorbell[1] = cpu_to_be32((qp->qpn << 8) | size0);
+		dbhi = (nreq << 24) | ((qp->sq.head & 0xffff) << 8) | f0 | op0;
 
 		qp->sq.head += nreq;
 
@@ -2173,8 +2158,8 @@ out:
 		 * write MMIO send doorbell.
 		 */
 		wmb();
-		mthca_write64(doorbell,
-			      dev->kar + MTHCA_SEND_DOORBELL,
+
+		mthca_write64(dbhi, (qp->qpn << 8) | size0, dev->kar + MTHCA_SEND_DOORBELL,
 			      MTHCA_GET_DOORBELL_LOCK(&dev->doorbell_lock));
 	}
 
diff --git a/drivers/infiniband/hw/mthca/mthca_srq.c b/drivers/infiniband/hw/mthca/mthca_srq.c
index 3f58c11..553d681 100644
--- a/drivers/infiniband/hw/mthca/mthca_srq.c
+++ b/drivers/infiniband/hw/mthca/mthca_srq.c
@@ -491,7 +491,6 @@ int mthca_tavor_post_srq_recv(struct ib_srq *ibsrq, struct ib_recv_wr *wr,
 {
 	struct mthca_dev *dev = to_mdev(ibsrq->device);
 	struct mthca_srq *srq = to_msrq(ibsrq);
-	__be32 doorbell[2];
 	unsigned long flags;
 	int err = 0;
 	int first_ind;
@@ -563,16 +562,13 @@ int mthca_tavor_post_srq_recv(struct ib_srq *ibsrq, struct ib_recv_wr *wr,
 		if (unlikely(nreq == MTHCA_TAVOR_MAX_WQES_PER_RECV_DB)) {
 			nreq = 0;
 
-			doorbell[0] = cpu_to_be32(first_ind << srq->wqe_shift);
-			doorbell[1] = cpu_to_be32(srq->srqn << 8);
-
 			/*
 			 * Make sure that descriptors are written
 			 * before doorbell is rung.
 			 */
 			wmb();
 
-			mthca_write64(doorbell,
+			mthca_write64(first_ind << srq->wqe_shift, srq->srqn << 8,
 				      dev->kar + MTHCA_RECEIVE_DOORBELL,
 				      MTHCA_GET_DOORBELL_LOCK(&dev->doorbell_lock));
 
@@ -581,16 +577,13 @@ int mthca_tavor_post_srq_recv(struct ib_srq *ibsrq, struct ib_recv_wr *wr,
 	}
 
 	if (likely(nreq)) {
-		doorbell[0] = cpu_to_be32(first_ind << srq->wqe_shift);
-		doorbell[1] = cpu_to_be32((srq->srqn << 8) | nreq);
-
 		/*
 		 * Make sure that descriptors are written before
 		 * doorbell is rung.
 		 */
 		wmb();
 
-		mthca_write64(doorbell,
+		mthca_write64(first_ind << srq->wqe_shift, (srq->srqn << 8) | nreq,
 			      dev->kar + MTHCA_RECEIVE_DOORBELL,
 			      MTHCA_GET_DOORBELL_LOCK(&dev->doorbell_lock));
 	}
diff --git a/drivers/infiniband/ulp/ipoib/ipoib.h b/drivers/infiniband/ulp/ipoib/ipoib.h
index 6545fa7..0a00ea0 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib.h
+++ b/drivers/infiniband/ulp/ipoib/ipoib.h
@@ -84,9 +84,8 @@ enum {
 	IPOIB_MCAST_RUN 	  = 6,
 	IPOIB_STOP_REAPER         = 7,
 	IPOIB_MCAST_STARTED       = 8,
-	IPOIB_FLAG_NETIF_STOPPED  = 9,
-	IPOIB_FLAG_ADMIN_CM 	  = 10,
-	IPOIB_FLAG_UMCAST	  = 11,
+	IPOIB_FLAG_ADMIN_CM 	  = 9,
+	IPOIB_FLAG_UMCAST	  = 10,
 
 	IPOIB_MAX_BACKOFF_SECONDS = 16,
 
@@ -98,9 +97,9 @@ enum {
 
 #define	IPOIB_OP_RECV   (1ul << 31)
 #ifdef CONFIG_INFINIBAND_IPOIB_CM
-#define	IPOIB_CM_OP_SRQ (1ul << 30)
+#define	IPOIB_OP_CM     (1ul << 30)
 #else
-#define	IPOIB_CM_OP_SRQ (0)
+#define	IPOIB_OP_CM     (0)
 #endif
 
 /* structs */
@@ -197,7 +196,6 @@ struct ipoib_cm_rx {
 
 struct ipoib_cm_tx {
 	struct ib_cm_id     *id;
-	struct ib_cq        *cq;
 	struct ib_qp        *qp;
 	struct list_head     list;
 	struct net_device   *dev;
@@ -294,6 +292,7 @@ struct ipoib_dev_priv {
 	unsigned             tx_tail;
 	struct ib_sge        tx_sge;
 	struct ib_send_wr    tx_wr;
+	unsigned             tx_outstanding;
 
 	struct ib_wc ibwc[IPOIB_NUM_WC];
 
@@ -502,6 +501,7 @@ void ipoib_cm_destroy_tx(struct ipoib_cm_tx *tx);
 void ipoib_cm_skb_too_long(struct net_device* dev, struct sk_buff *skb,
 			   unsigned int mtu);
 void ipoib_cm_handle_rx_wc(struct net_device *dev, struct ib_wc *wc);
+void ipoib_cm_handle_tx_wc(struct net_device *dev, struct ib_wc *wc);
 #else
 
 struct ipoib_cm_tx;
@@ -590,6 +590,9 @@ static inline void ipoib_cm_handle_rx_wc(struct net_device *dev, struct ib_wc *w
 {
 }
 
+static inline void ipoib_cm_handle_tx_wc(struct net_device *dev, struct ib_wc *wc)
+{
+}
 #endif
 
 #ifdef CONFIG_INFINIBAND_IPOIB_DEBUG
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
index 0a0dcb8..8761077 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
@@ -87,7 +87,7 @@ static int ipoib_cm_post_receive(struct net_device *dev, int id)
 	struct ib_recv_wr *bad_wr;
 	int i, ret;
 
-	priv->cm.rx_wr.wr_id = id | IPOIB_CM_OP_SRQ;
+	priv->cm.rx_wr.wr_id = id | IPOIB_OP_CM | IPOIB_OP_RECV;
 
 	for (i = 0; i < IPOIB_CM_RX_SG; ++i)
 		priv->cm.rx_sge[i].addr = priv->cm.srq_ring[id].mapping[i];
@@ -401,7 +401,7 @@ static void skb_put_frags(struct sk_buff *skb, unsigned int hdr_space,
 void ipoib_cm_handle_rx_wc(struct net_device *dev, struct ib_wc *wc)
 {
 	struct ipoib_dev_priv *priv = netdev_priv(dev);
-	unsigned int wr_id = wc->wr_id & ~IPOIB_CM_OP_SRQ;
+	unsigned int wr_id = wc->wr_id & ~(IPOIB_OP_CM | IPOIB_OP_RECV);
 	struct sk_buff *skb, *newskb;
 	struct ipoib_cm_rx *p;
 	unsigned long flags;
@@ -412,7 +412,7 @@ void ipoib_cm_handle_rx_wc(struct net_device *dev, struct ib_wc *wc)
 		       wr_id, wc->status);
 
 	if (unlikely(wr_id >= ipoib_recvq_size)) {
-		if (wr_id == (IPOIB_CM_RX_DRAIN_WRID & ~IPOIB_CM_OP_SRQ)) {
+		if (wr_id == (IPOIB_CM_RX_DRAIN_WRID & ~(IPOIB_OP_CM | IPOIB_OP_RECV))) {
 			spin_lock_irqsave(&priv->lock, flags);
 			list_splice_init(&priv->cm.rx_drain_list, &priv->cm.rx_reap_list);
 			ipoib_cm_start_rx_drain(priv);
@@ -434,7 +434,7 @@ void ipoib_cm_handle_rx_wc(struct net_device *dev, struct ib_wc *wc)
 		goto repost;
 	}
 
-	if (!likely(wr_id & IPOIB_CM_RX_UPDATE_MASK)) {
+	if (unlikely(!(wr_id & IPOIB_CM_RX_UPDATE_MASK))) {
 		p = wc->qp->qp_context;
 		if (p && time_after_eq(jiffies, p->jiffies + IPOIB_CM_RX_UPDATE_TIME)) {
 			spin_lock_irqsave(&priv->lock, flags);
@@ -498,7 +498,7 @@ static inline int post_send(struct ipoib_dev_priv *priv,
 	priv->tx_sge.addr             = addr;
 	priv->tx_sge.length           = len;
 
-	priv->tx_wr.wr_id 	      = wr_id;
+	priv->tx_wr.wr_id 	      = wr_id | IPOIB_OP_CM;
 
 	return ib_post_send(tx->qp, &priv->tx_wr, &bad_wr);
 }
@@ -549,20 +549,19 @@ void ipoib_cm_send(struct net_device *dev, struct sk_buff *skb, struct ipoib_cm_
 		dev->trans_start = jiffies;
 		++tx->tx_head;
 
-		if (tx->tx_head - tx->tx_tail == ipoib_sendq_size) {
+		if (++priv->tx_outstanding == ipoib_sendq_size) {
 			ipoib_dbg(priv, "TX ring 0x%x full, stopping kernel net queue\n",
 				  tx->qp->qp_num);
 			netif_stop_queue(dev);
-			set_bit(IPOIB_FLAG_NETIF_STOPPED, &tx->flags);
 		}
 	}
 }
 
-static void ipoib_cm_handle_tx_wc(struct net_device *dev, struct ipoib_cm_tx *tx,
-				  struct ib_wc *wc)
+void ipoib_cm_handle_tx_wc(struct net_device *dev, struct ib_wc *wc)
 {
 	struct ipoib_dev_priv *priv = netdev_priv(dev);
-	unsigned int wr_id = wc->wr_id;
+	struct ipoib_cm_tx *tx = wc->qp->qp_context;
+	unsigned int wr_id = wc->wr_id & ~IPOIB_OP_CM;
 	struct ipoib_tx_buf *tx_req;
 	unsigned long flags;
 
@@ -587,11 +586,10 @@ static void ipoib_cm_handle_tx_wc(struct net_device *dev, struct ipoib_cm_tx *tx
 
 	spin_lock_irqsave(&priv->tx_lock, flags);
 	++tx->tx_tail;
-	if (unlikely(test_bit(IPOIB_FLAG_NETIF_STOPPED, &tx->flags)) &&
-	    tx->tx_head - tx->tx_tail <= ipoib_sendq_size >> 1) {
-		clear_bit(IPOIB_FLAG_NETIF_STOPPED, &tx->flags);
+	if (unlikely(--priv->tx_outstanding == ipoib_sendq_size >> 1) &&
+	    netif_queue_stopped(dev) &&
+	    test_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags))
 		netif_wake_queue(dev);
-	}
 
 	if (wc->status != IB_WC_SUCCESS &&
 	    wc->status != IB_WC_WR_FLUSH_ERR) {
@@ -614,11 +612,6 @@ static void ipoib_cm_handle_tx_wc(struct net_device *dev, struct ipoib_cm_tx *tx
 			tx->neigh = NULL;
 		}
 
-		/* queue would be re-started anyway when TX is destroyed,
-		 * but it makes sense to do it ASAP here. */
-		if (test_and_clear_bit(IPOIB_FLAG_NETIF_STOPPED, &tx->flags))
-			netif_wake_queue(dev);
-
 		if (test_and_clear_bit(IPOIB_FLAG_INITIALIZED, &tx->flags)) {
 			list_move(&tx->list, &priv->cm.reap_list);
 			queue_work(ipoib_workqueue, &priv->cm.reap_task);
@@ -632,19 +625,6 @@ static void ipoib_cm_handle_tx_wc(struct net_device *dev, struct ipoib_cm_tx *tx
 	spin_unlock_irqrestore(&priv->tx_lock, flags);
 }
 
-static void ipoib_cm_tx_completion(struct ib_cq *cq, void *tx_ptr)
-{
-	struct ipoib_cm_tx *tx = tx_ptr;
-	int n, i;
-
-	ib_req_notify_cq(cq, IB_CQ_NEXT_COMP);
-	do {
-		n = ib_poll_cq(cq, IPOIB_NUM_WC, tx->ibwc);
-		for (i = 0; i < n; ++i)
-			ipoib_cm_handle_tx_wc(tx->dev, tx, tx->ibwc + i);
-	} while (n == IPOIB_NUM_WC);
-}
-
 int ipoib_cm_dev_open(struct net_device *dev)
 {
 	struct ipoib_dev_priv *priv = netdev_priv(dev);
@@ -807,17 +787,18 @@ static int ipoib_cm_rep_handler(struct ib_cm_id *cm_id, struct ib_cm_event *even
 	return 0;
 }
 
-static struct ib_qp *ipoib_cm_create_tx_qp(struct net_device *dev, struct ib_cq *cq)
+static struct ib_qp *ipoib_cm_create_tx_qp(struct net_device *dev, struct ipoib_cm_tx *tx)
 {
 	struct ipoib_dev_priv *priv = netdev_priv(dev);
 	struct ib_qp_init_attr attr = {
-		.send_cq		= cq,
+		.send_cq		= priv->cq,
 		.recv_cq		= priv->cq,
 		.srq			= priv->cm.srq,
 		.cap.max_send_wr	= ipoib_sendq_size,
 		.cap.max_send_sge	= 1,
 		.sq_sig_type		= IB_SIGNAL_ALL_WR,
 		.qp_type		= IB_QPT_RC,
+		.qp_context		= tx
         };
 
 	return ib_create_qp(priv->pd, &attr);
@@ -899,21 +880,7 @@ static int ipoib_cm_tx_init(struct ipoib_cm_tx *p, u32 qpn,
 		goto err_tx;
 	}
 
-	p->cq = ib_create_cq(priv->ca, ipoib_cm_tx_completion, NULL, p,
-			     ipoib_sendq_size + 1, 0);
-	if (IS_ERR(p->cq)) {
-		ret = PTR_ERR(p->cq);
-		ipoib_warn(priv, "failed to allocate tx cq: %d\n", ret);
-		goto err_cq;
-	}
-
-	ret = ib_req_notify_cq(p->cq, IB_CQ_NEXT_COMP);
-	if (ret) {
-		ipoib_warn(priv, "failed to request completion notification: %d\n", ret);
-		goto err_req_notify;
-	}
-
-	p->qp = ipoib_cm_create_tx_qp(p->dev, p->cq);
+	p->qp = ipoib_cm_create_tx_qp(p->dev, p);
 	if (IS_ERR(p->qp)) {
 		ret = PTR_ERR(p->qp);
 		ipoib_warn(priv, "failed to allocate tx qp: %d\n", ret);
@@ -950,12 +917,8 @@ err_modify:
 err_id:
 	p->id = NULL;
 	ib_destroy_qp(p->qp);
-err_req_notify:
 err_qp:
 	p->qp = NULL;
-	ib_destroy_cq(p->cq);
-err_cq:
-	p->cq = NULL;
 err_tx:
 	return ret;
 }
@@ -964,6 +927,8 @@ static void ipoib_cm_tx_destroy(struct ipoib_cm_tx *p)
 {
 	struct ipoib_dev_priv *priv = netdev_priv(p->dev);
 	struct ipoib_tx_buf *tx_req;
+	unsigned long flags;
+	unsigned long begin;
 
 	ipoib_dbg(priv, "Destroy active connection 0x%x head 0x%x tail 0x%x\n",
 		  p->qp ? p->qp->qp_num : 0, p->tx_head, p->tx_tail);
@@ -971,27 +936,40 @@ static void ipoib_cm_tx_destroy(struct ipoib_cm_tx *p)
 	if (p->id)
 		ib_destroy_cm_id(p->id);
 
-	if (p->qp)
-		ib_destroy_qp(p->qp);
-
-	if (p->cq)
-		ib_destroy_cq(p->cq);
-
-	if (test_bit(IPOIB_FLAG_NETIF_STOPPED, &p->flags))
-		netif_wake_queue(p->dev);
-
 	if (p->tx_ring) {
+		/* Wait for all sends to complete */
+		begin = jiffies;
 		while ((int) p->tx_tail - (int) p->tx_head < 0) {
-			tx_req = &p->tx_ring[p->tx_tail & (ipoib_sendq_size - 1)];
-			ib_dma_unmap_single(priv->ca, tx_req->mapping, tx_req->skb->len,
-					 DMA_TO_DEVICE);
-			dev_kfree_skb_any(tx_req->skb);
-			++p->tx_tail;
+			if (time_after(jiffies, begin + 5 * HZ)) {
+				ipoib_warn(priv, "timing out; %d sends not completed\n",
+					   p->tx_head - p->tx_tail);
+				goto timeout;
+			}
+
+			msleep(1);
 		}
+	}
 
-		kfree(p->tx_ring);
+timeout:
+
+	while ((int) p->tx_tail - (int) p->tx_head < 0) {
+		tx_req = &p->tx_ring[p->tx_tail & (ipoib_sendq_size - 1)];
+		ib_dma_unmap_single(priv->ca, tx_req->mapping, tx_req->skb->len,
+				    DMA_TO_DEVICE);
+		dev_kfree_skb_any(tx_req->skb);
+		++p->tx_tail;
+		spin_lock_irqsave(&priv->tx_lock, flags);
+		if (unlikely(--priv->tx_outstanding == ipoib_sendq_size >> 1) &&
+		    netif_queue_stopped(p->dev) &&
+		    test_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags))
+			netif_wake_queue(p->dev);
+		spin_unlock_irqrestore(&priv->tx_lock, flags);
 	}
 
+	if (p->qp)
+		ib_destroy_qp(p->qp);
+
+	kfree(p->tx_ring);
 	kfree(p);
 }
 
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_ib.c b/drivers/infiniband/ulp/ipoib/ipoib_ib.c
index 1a77e79..5063dd5 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_ib.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_ib.c
@@ -267,11 +267,10 @@ static void ipoib_ib_handle_tx_wc(struct net_device *dev, struct ib_wc *wc)
 
 	spin_lock_irqsave(&priv->tx_lock, flags);
 	++priv->tx_tail;
-	if (unlikely(test_bit(IPOIB_FLAG_NETIF_STOPPED, &priv->flags)) &&
-	    priv->tx_head - priv->tx_tail <= ipoib_sendq_size >> 1) {
-		clear_bit(IPOIB_FLAG_NETIF_STOPPED, &priv->flags);
+	if (unlikely(--priv->tx_outstanding == ipoib_sendq_size >> 1) &&
+	    netif_queue_stopped(dev) &&
+	    test_bit(IPOIB_FLAG_ADMIN_UP, &priv->flags))
 		netif_wake_queue(dev);
-	}
 	spin_unlock_irqrestore(&priv->tx_lock, flags);
 
 	if (wc->status != IB_WC_SUCCESS &&
@@ -301,14 +300,18 @@ poll_more:
 		for (i = 0; i < n; i++) {
 			struct ib_wc *wc = priv->ibwc + i;
 
-			if (wc->wr_id & IPOIB_CM_OP_SRQ) {
-				++done;
-				ipoib_cm_handle_rx_wc(dev, wc);
-			} else if (wc->wr_id & IPOIB_OP_RECV) {
+			if (wc->wr_id & IPOIB_OP_RECV) {
 				++done;
-				ipoib_ib_handle_rx_wc(dev, wc);
-			} else
-				ipoib_ib_handle_tx_wc(dev, wc);
+				if (wc->wr_id & IPOIB_OP_CM)
+					ipoib_cm_handle_rx_wc(dev, wc);
+				else
+					ipoib_ib_handle_rx_wc(dev, wc);
+			} else {
+				if (wc->wr_id & IPOIB_OP_CM)
+					ipoib_cm_handle_tx_wc(dev, wc);
+				else
+					ipoib_ib_handle_tx_wc(dev, wc);
+			}
 		}
 
 		if (n != t)
@@ -401,10 +404,9 @@ void ipoib_send(struct net_device *dev, struct sk_buff *skb,
 		address->last_send = priv->tx_head;
 		++priv->tx_head;
 
-		if (priv->tx_head - priv->tx_tail == ipoib_sendq_size) {
+		if (++priv->tx_outstanding == ipoib_sendq_size) {
 			ipoib_dbg(priv, "TX ring full, stopping kernel net queue\n");
 			netif_stop_queue(dev);
-			set_bit(IPOIB_FLAG_NETIF_STOPPED, &priv->flags);
 		}
 	}
 }
@@ -436,7 +438,8 @@ void ipoib_reap_ah(struct work_struct *work)
 	__ipoib_reap_ah(dev);
 
 	if (!test_bit(IPOIB_STOP_REAPER, &priv->flags))
-		queue_delayed_work(ipoib_workqueue, &priv->ah_reap_task, HZ);
+		queue_delayed_work(ipoib_workqueue, &priv->ah_reap_task,
+				   round_jiffies_relative(HZ));
 }
 
 int ipoib_ib_dev_open(struct net_device *dev)
@@ -472,7 +475,8 @@ int ipoib_ib_dev_open(struct net_device *dev)
 	}
 
 	clear_bit(IPOIB_STOP_REAPER, &priv->flags);
-	queue_delayed_work(ipoib_workqueue, &priv->ah_reap_task, HZ);
+	queue_delayed_work(ipoib_workqueue, &priv->ah_reap_task,
+			   round_jiffies_relative(HZ));
 
 	set_bit(IPOIB_FLAG_INITIALIZED, &priv->flags);
 
@@ -561,12 +565,17 @@ void ipoib_drain_cq(struct net_device *dev)
 			if (priv->ibwc[i].status == IB_WC_SUCCESS)
 				priv->ibwc[i].status = IB_WC_WR_FLUSH_ERR;
 
-			if (priv->ibwc[i].wr_id & IPOIB_CM_OP_SRQ)
-				ipoib_cm_handle_rx_wc(dev, priv->ibwc + i);
-			else if (priv->ibwc[i].wr_id & IPOIB_OP_RECV)
-				ipoib_ib_handle_rx_wc(dev, priv->ibwc + i);
-			else
-				ipoib_ib_handle_tx_wc(dev, priv->ibwc + i);
+			if (priv->ibwc[i].wr_id & IPOIB_OP_RECV) {
+				if (priv->ibwc[i].wr_id & IPOIB_OP_CM)
+					ipoib_cm_handle_rx_wc(dev, priv->ibwc + i);
+				else
+					ipoib_ib_handle_rx_wc(dev, priv->ibwc + i);
+			} else {
+				if (priv->ibwc[i].wr_id & IPOIB_OP_CM)
+					ipoib_cm_handle_tx_wc(dev, priv->ibwc + i);
+				else
+					ipoib_ib_handle_tx_wc(dev, priv->ibwc + i);
+			}
 		}
 	} while (n == IPOIB_NUM_WC);
 }
@@ -612,6 +621,7 @@ int ipoib_ib_dev_stop(struct net_device *dev, int flush)
 						    DMA_TO_DEVICE);
 				dev_kfree_skb_any(tx_req->skb);
 				++priv->tx_tail;
+				--priv->tx_outstanding;
 			}
 
 			for (i = 0; i < ipoib_recvq_size; ++i) {
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index e072f3c..ace2345 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -148,8 +148,6 @@ static int ipoib_stop(struct net_device *dev)
 
 	netif_stop_queue(dev);
 
-	clear_bit(IPOIB_FLAG_NETIF_STOPPED, &priv->flags);
-
 	/*
 	 * Now flush workqueue to make sure a scheduled task doesn't
 	 * bring our internal state back up.
@@ -895,7 +893,7 @@ int ipoib_dev_init(struct net_device *dev, struct ib_device *ca, int port)
 		goto out_rx_ring_cleanup;
 	}
 
-	/* priv->tx_head & tx_tail are already 0 */
+	/* priv->tx_head, tx_tail & tx_outstanding are already 0 */
 
 	if (ipoib_ib_dev_init(dev, ca, port))
 		goto out_tx_ring_cleanup;
diff --git a/drivers/net/mlx4/fw.c b/drivers/net/mlx4/fw.c
index 6471d33..5064873 100644
--- a/drivers/net/mlx4/fw.c
+++ b/drivers/net/mlx4/fw.c
@@ -736,7 +736,7 @@ int mlx4_INIT_HCA(struct mlx4_dev *dev, struct mlx4_init_hca_param *param)
 	MLX4_PUT(inbox, (u8) (PAGE_SHIFT - 12), INIT_HCA_UAR_PAGE_SZ_OFFSET);
 	MLX4_PUT(inbox, param->log_uar_sz,      INIT_HCA_LOG_UAR_SZ_OFFSET);
 
-	err = mlx4_cmd(dev, mailbox->dma, 0, 0, MLX4_CMD_INIT_HCA, 1000);
+	err = mlx4_cmd(dev, mailbox->dma, 0, 0, MLX4_CMD_INIT_HCA, 10000);
 
 	if (err)
 		mlx4_err(dev, "INIT_HCA returns %d\n", err);
diff --git a/include/linux/mlx4/doorbell.h b/include/linux/mlx4/doorbell.h
index 3f2da44..f31bba2 100644
--- a/include/linux/mlx4/doorbell.h
+++ b/include/linux/mlx4/doorbell.h
@@ -52,11 +52,6 @@
 #define MLX4_INIT_DOORBELL_LOCK(ptr)    do { } while (0)
 #define MLX4_GET_DOORBELL_LOCK(ptr)      (NULL)
 
-static inline void mlx4_write64_raw(__be64 val, void __iomem *dest)
-{
-	__raw_writeq((__force u64) val, dest);
-}
-
 static inline void mlx4_write64(__be32 val[2], void __iomem *dest,
 				spinlock_t *doorbell_lock)
 {
@@ -75,12 +70,6 @@ static inline void mlx4_write64(__be32 val[2], void __iomem *dest,
 #define MLX4_INIT_DOORBELL_LOCK(ptr)     spin_lock_init(ptr)
 #define MLX4_GET_DOORBELL_LOCK(ptr)      (ptr)
 
-static inline void mlx4_write64_raw(__be64 val, void __iomem *dest)
-{
-	__raw_writel(((__force u32 *) &val)[0], dest);
-	__raw_writel(((__force u32 *) &val)[1], dest + 4);
-}
-
 static inline void mlx4_write64(__be32 val[2], void __iomem *dest,
 				spinlock_t *doorbell_lock)
 {

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2007-09-23 20:06 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2007-09-23 20:06 UTC (permalink / raw)
  To: torvalds; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get one fix for a data corruption bug in 2.6.23-rc7:

Jack Morgenstein (1):
      IB/mlx4: Fix data corruption triggered by wrong headroom marking order

 drivers/infiniband/hw/mlx4/qp.c |   62 ++++++++++++++++++++++++++++++--------
 1 files changed, 49 insertions(+), 13 deletions(-)


diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
index ba0428d..85c51bd 100644
--- a/drivers/infiniband/hw/mlx4/qp.c
+++ b/drivers/infiniband/hw/mlx4/qp.c
@@ -1211,12 +1211,42 @@ static void set_datagram_seg(struct mlx4_wqe_datagram_seg *dseg,
 	dseg->qkey = cpu_to_be32(wr->wr.ud.remote_qkey);
 }
 
-static void set_data_seg(struct mlx4_wqe_data_seg *dseg,
-			 struct ib_sge *sg)
+static void set_mlx_icrc_seg(void *dseg)
+{
+	u32 *t = dseg;
+	struct mlx4_wqe_inline_seg *iseg = dseg;
+
+	t[1] = 0;
+
+	/*
+	 * Need a barrier here before writing the byte_count field to
+	 * make sure that all the data is visible before the
+	 * byte_count field is set.  Otherwise, if the segment begins
+	 * a new cacheline, the HCA prefetcher could grab the 64-byte
+	 * chunk and get a valid (!= * 0xffffffff) byte count but
+	 * stale data, and end up sending the wrong data.
+	 */
+	wmb();
+
+	iseg->byte_count = cpu_to_be32((1 << 31) | 4);
+}
+
+static void set_data_seg(struct mlx4_wqe_data_seg *dseg, struct ib_sge *sg)
 {
-	dseg->byte_count = cpu_to_be32(sg->length);
 	dseg->lkey       = cpu_to_be32(sg->lkey);
 	dseg->addr       = cpu_to_be64(sg->addr);
+
+	/*
+	 * Need a barrier here before writing the byte_count field to
+	 * make sure that all the data is visible before the
+	 * byte_count field is set.  Otherwise, if the segment begins
+	 * a new cacheline, the HCA prefetcher could grab the 64-byte
+	 * chunk and get a valid (!= * 0xffffffff) byte count but
+	 * stale data, and end up sending the wrong data.
+	 */
+	wmb();
+
+	dseg->byte_count = cpu_to_be32(sg->length);
 }
 
 int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
@@ -1225,6 +1255,7 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
 	struct mlx4_ib_qp *qp = to_mqp(ibqp);
 	void *wqe;
 	struct mlx4_wqe_ctrl_seg *ctrl;
+	struct mlx4_wqe_data_seg *dseg;
 	unsigned long flags;
 	int nreq;
 	int err = 0;
@@ -1324,22 +1355,27 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
 			break;
 		}
 
-		for (i = 0; i < wr->num_sge; ++i) {
-			set_data_seg(wqe, wr->sg_list + i);
+		/*
+		 * Write data segments in reverse order, so as to
+		 * overwrite cacheline stamp last within each
+		 * cacheline.  This avoids issues with WQE
+		 * prefetching.
+		 */
 
-			wqe  += sizeof (struct mlx4_wqe_data_seg);
-			size += sizeof (struct mlx4_wqe_data_seg) / 16;
-		}
+		dseg = wqe;
+		dseg += wr->num_sge - 1;
+		size += wr->num_sge * (sizeof (struct mlx4_wqe_data_seg) / 16);
 
 		/* Add one more inline data segment for ICRC for MLX sends */
-		if (qp->ibqp.qp_type == IB_QPT_SMI || qp->ibqp.qp_type == IB_QPT_GSI) {
-			((struct mlx4_wqe_inline_seg *) wqe)->byte_count =
-				cpu_to_be32((1 << 31) | 4);
-			((u32 *) wqe)[1] = 0;
-			wqe  += sizeof (struct mlx4_wqe_data_seg);
+		if (unlikely(qp->ibqp.qp_type == IB_QPT_SMI ||
+			     qp->ibqp.qp_type == IB_QPT_GSI)) {
+			set_mlx_icrc_seg(dseg + 1);
 			size += sizeof (struct mlx4_wqe_data_seg) / 16;
 		}
 
+		for (i = wr->num_sge - 1; i >= 0; --i, --dseg)
+			set_data_seg(dseg, wr->sg_list + i);
+
 		ctrl->fence_size = (wr->send_flags & IB_SEND_FENCE ?
 				    MLX4_WQE_CTRL_FENCE : 0) | size;
 

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2007-07-30 20:18 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2007-07-30 20:18 UTC (permalink / raw)
  To: torvalds; +Cc: general, linux-kernel

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get some small fixes for 2.6.23:

Dave Olson (4):
      IB/ipath: Remove unsafe fastrcvint code from interrupt handler
      IB/ipath: Use faster put_tid_2 routine after initialization
      IB/ipath: Fix some issues with buffer cancel and sendctrl register update
      IB/ipath: Workaround problem of errormask register being overwritten

Hoang-Nam Nguyen (2):
      IB/ehca: Fix include order to better match kernel style
      IB/ehca: Move extern declarations from .c files to .h files

Jack Morgenstein (1):
      mlx4_core: Remove kfree() in mlx4_mr_alloc() error flow

Roland Dreier (1):
      IB/mlx4: Whitespace fix

Tom Tucker (1):
      RDMA/amso1100: Initialize the wait_queue_head_t in the c2_qp structure

 drivers/infiniband/hw/amso1100/c2_qp.c        |    1 +
 drivers/infiniband/hw/ehca/ehca_classes.h     |    1 +
 drivers/infiniband/hw/ehca/ehca_mrmw.c        |    6 +--
 drivers/infiniband/hw/ehca/ehca_pd.c          |    1 -
 drivers/infiniband/hw/ehca/hcp_if.c           |    1 -
 drivers/infiniband/hw/ehca/ipz_pt_fn.h        |    2 +
 drivers/infiniband/hw/ipath/ipath_common.h    |    3 +-
 drivers/infiniband/hw/ipath/ipath_driver.c    |   11 +++--
 drivers/infiniband/hw/ipath/ipath_iba6120.c   |   20 +++++---
 drivers/infiniband/hw/ipath/ipath_init_chip.c |    7 ++-
 drivers/infiniband/hw/ipath/ipath_intr.c      |   63 ++++++------------------
 drivers/infiniband/hw/ipath/ipath_kernel.h    |   13 +----
 drivers/infiniband/hw/ipath/ipath_stats.c     |   54 +++++++++++++++++++--
 drivers/infiniband/hw/mlx4/qp.c               |    1 -
 drivers/net/mlx4/mr.c                         |   15 +-----
 15 files changed, 101 insertions(+), 98 deletions(-)

diff --git a/drivers/infiniband/hw/amso1100/c2_qp.c b/drivers/infiniband/hw/amso1100/c2_qp.c
index 420c138..01d0786 100644
--- a/drivers/infiniband/hw/amso1100/c2_qp.c
+++ b/drivers/infiniband/hw/amso1100/c2_qp.c
@@ -506,6 +506,7 @@ int c2_alloc_qp(struct c2_dev *c2dev,
 	qp->send_sgl_depth = qp_attrs->cap.max_send_sge;
 	qp->rdma_write_sgl_depth = qp_attrs->cap.max_send_sge;
 	qp->recv_sgl_depth = qp_attrs->cap.max_recv_sge;
+	init_waitqueue_head(&qp->wait);
 
 	/* Initialize the SQ MQ */
 	q_size = be32_to_cpu(reply->sq_depth);
diff --git a/drivers/infiniband/hw/ehca/ehca_classes.h b/drivers/infiniband/hw/ehca/ehca_classes.h
index 3725aa8..b5e9603 100644
--- a/drivers/infiniband/hw/ehca/ehca_classes.h
+++ b/drivers/infiniband/hw/ehca/ehca_classes.h
@@ -322,6 +322,7 @@ extern int ehca_static_rate;
 extern int ehca_port_act_time;
 extern int ehca_use_hp_mr;
 extern int ehca_scaling_code;
+extern int ehca_mr_largepage;
 
 struct ipzu_queue_resp {
 	u32 qe_size;      /* queue entry size */
diff --git a/drivers/infiniband/hw/ehca/ehca_mrmw.c b/drivers/infiniband/hw/ehca/ehca_mrmw.c
index c1b868b..d97eda3 100644
--- a/drivers/infiniband/hw/ehca/ehca_mrmw.c
+++ b/drivers/infiniband/hw/ehca/ehca_mrmw.c
@@ -40,10 +40,10 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <rdma/ib_umem.h>
-
 #include <asm/current.h>
 
+#include <rdma/ib_umem.h>
+
 #include "ehca_iverbs.h"
 #include "ehca_mrmw.h"
 #include "hcp_if.h"
@@ -64,8 +64,6 @@ enum ehca_mr_pgsize {
 	EHCA_MR_PGSIZE16M = 0x1000000L
 };
 
-extern int ehca_mr_largepage;
-
 static u32 ehca_encode_hwpage_size(u32 pgsize)
 {
 	u32 idx = 0;
diff --git a/drivers/infiniband/hw/ehca/ehca_pd.c b/drivers/infiniband/hw/ehca/ehca_pd.c
index 3dafd7f..43bcf08 100644
--- a/drivers/infiniband/hw/ehca/ehca_pd.c
+++ b/drivers/infiniband/hw/ehca/ehca_pd.c
@@ -88,7 +88,6 @@ int ehca_dealloc_pd(struct ib_pd *pd)
 	u32 cur_pid = current->tgid;
 	struct ehca_pd *my_pd = container_of(pd, struct ehca_pd, ib_pd);
 	int i, leftovers = 0;
-	extern struct kmem_cache *small_qp_cache;
 	struct ipz_small_queue_page *page, *tmp;
 
 	if (my_pd->ib_pd.uobject && my_pd->ib_pd.uobject->context &&
diff --git a/drivers/infiniband/hw/ehca/hcp_if.c b/drivers/infiniband/hw/ehca/hcp_if.c
index fdbfebe..24f4541 100644
--- a/drivers/infiniband/hw/ehca/hcp_if.c
+++ b/drivers/infiniband/hw/ehca/hcp_if.c
@@ -758,7 +758,6 @@ u64 hipz_h_register_rpage_mr(const struct ipz_adapter_handle adapter_handle,
 			     const u64 logical_address_of_page,
 			     const u64 count)
 {
-	extern int ehca_debug_level;
 	u64 ret;
 
 	if (unlikely(ehca_debug_level >= 2)) {
diff --git a/drivers/infiniband/hw/ehca/ipz_pt_fn.h b/drivers/infiniband/hw/ehca/ipz_pt_fn.h
index c6937a0..a801274 100644
--- a/drivers/infiniband/hw/ehca/ipz_pt_fn.h
+++ b/drivers/infiniband/hw/ehca/ipz_pt_fn.h
@@ -54,6 +54,8 @@
 struct ehca_pd;
 struct ipz_small_queue_page;
 
+extern struct kmem_cache *small_qp_cache;
+
 /* struct generic ehca page */
 struct ipz_page {
 	u8 entries[EHCA_PAGESIZE];
diff --git a/drivers/infiniband/hw/ipath/ipath_common.h b/drivers/infiniband/hw/ipath/ipath_common.h
index b4b786d..6ad822c 100644
--- a/drivers/infiniband/hw/ipath/ipath_common.h
+++ b/drivers/infiniband/hw/ipath/ipath_common.h
@@ -100,8 +100,7 @@ struct infinipath_stats {
 	__u64 sps_hwerrs;
 	/* number of times IB link changed state unexpectedly */
 	__u64 sps_iblink;
-	/* kernel receive interrupts that didn't read intstat */
-	__u64 sps_fastrcvint;
+	__u64 sps_unused; /* was fastrcvint, no longer implemented */
 	/* number of kernel (port0) packets received */
 	__u64 sps_port0pkts;
 	/* number of "ethernet" packets sent by driver */
diff --git a/drivers/infiniband/hw/ipath/ipath_driver.c b/drivers/infiniband/hw/ipath/ipath_driver.c
index 09c5fd8..6ccba36 100644
--- a/drivers/infiniband/hw/ipath/ipath_driver.c
+++ b/drivers/infiniband/hw/ipath/ipath_driver.c
@@ -740,7 +740,7 @@ void ipath_disarm_piobufs(struct ipath_devdata *dd, unsigned first,
 	 * pioavail updates to memory to stop.
 	 */
 	ipath_write_kreg(dd, dd->ipath_kregs->kr_sendctrl,
-			 sendorig & ~IPATH_S_PIOBUFAVAILUPD);
+			 sendorig & ~INFINIPATH_S_PIOBUFAVAILUPD);
 	sendorig = ipath_read_kreg64(dd, dd->ipath_kregs->kr_scratch);
 	ipath_write_kreg(dd, dd->ipath_kregs->kr_sendctrl,
 			 dd->ipath_sendctrl);
@@ -1614,7 +1614,7 @@ int ipath_waitfor_mdio_cmdready(struct ipath_devdata *dd)
  * it's safer to always do it.
  * PIOAvail bits are updated by the chip as if normal send had happened.
  */
-void ipath_cancel_sends(struct ipath_devdata *dd)
+void ipath_cancel_sends(struct ipath_devdata *dd, int restore_sendctrl)
 {
 	ipath_dbg("Cancelling all in-progress send buffers\n");
 	dd->ipath_lastcancel = jiffies+HZ/2; /* skip armlaunch errs a bit */
@@ -1627,6 +1627,9 @@ void ipath_cancel_sends(struct ipath_devdata *dd)
 	ipath_read_kreg64(dd, dd->ipath_kregs->kr_scratch);
 	ipath_disarm_piobufs(dd, 0,
 		(unsigned)(dd->ipath_piobcnt2k + dd->ipath_piobcnt4k));
+	if (restore_sendctrl) /* else done by caller later */
+		ipath_write_kreg(dd, dd->ipath_kregs->kr_sendctrl,
+				 dd->ipath_sendctrl);
 
 	/* and again, be sure all have hit the chip */
 	ipath_read_kreg64(dd, dd->ipath_kregs->kr_scratch);
@@ -1655,7 +1658,7 @@ static void ipath_set_ib_lstate(struct ipath_devdata *dd, int which)
 	/* flush all queued sends when going to DOWN or INIT, to be sure that
 	 * they don't block MAD packets */
 	if (!linkcmd || linkcmd == INFINIPATH_IBCC_LINKCMD_INIT)
-		ipath_cancel_sends(dd);
+		ipath_cancel_sends(dd, 1);
 
 	ipath_write_kreg(dd, dd->ipath_kregs->kr_ibcctrl,
 			 dd->ipath_ibcctrl | which);
@@ -2000,7 +2003,7 @@ void ipath_shutdown_device(struct ipath_devdata *dd)
 
 	ipath_set_ib_lstate(dd, INFINIPATH_IBCC_LINKINITCMD_DISABLE <<
 			    INFINIPATH_IBCC_LINKINITCMD_SHIFT);
-	ipath_cancel_sends(dd);
+	ipath_cancel_sends(dd, 0);
 
 	/* disable IBC */
 	dd->ipath_control &= ~INFINIPATH_C_LINKENABLE;
diff --git a/drivers/infiniband/hw/ipath/ipath_iba6120.c b/drivers/infiniband/hw/ipath/ipath_iba6120.c
index 9868ccd..5b6ac9a 100644
--- a/drivers/infiniband/hw/ipath/ipath_iba6120.c
+++ b/drivers/infiniband/hw/ipath/ipath_iba6120.c
@@ -321,6 +321,8 @@ static const struct ipath_hwerror_msgs ipath_6120_hwerror_msgs[] = {
 		        << INFINIPATH_HWE_TXEMEMPARITYERR_SHIFT)
 
 static int ipath_pe_txe_recover(struct ipath_devdata *);
+static void ipath_pe_put_tid_2(struct ipath_devdata *, u64 __iomem *,
+			       u32, unsigned long);
 
 /**
  * ipath_pe_handle_hwerrors - display hardware errors.
@@ -555,8 +557,11 @@ static int ipath_pe_boardname(struct ipath_devdata *dd, char *name,
 		ipath_dev_err(dd, "Unsupported InfiniPath hardware revision %u.%u!\n",
 			      dd->ipath_majrev, dd->ipath_minrev);
 		ret = 1;
-	} else
+	} else {
 		ret = 0;
+		if (dd->ipath_minrev >= 2)
+			dd->ipath_f_put_tid = ipath_pe_put_tid_2;
+	}
 
 	return ret;
 }
@@ -1220,7 +1225,7 @@ static void ipath_pe_clear_tids(struct ipath_devdata *dd, unsigned port)
 		 port * dd->ipath_rcvtidcnt * sizeof(*tidbase));
 
 	for (i = 0; i < dd->ipath_rcvtidcnt; i++)
-		ipath_pe_put_tid(dd, &tidbase[i], RCVHQ_RCV_TYPE_EXPECTED,
+		dd->ipath_f_put_tid(dd, &tidbase[i], RCVHQ_RCV_TYPE_EXPECTED,
 				 tidinv);
 
 	tidbase = (u64 __iomem *)
@@ -1229,7 +1234,7 @@ static void ipath_pe_clear_tids(struct ipath_devdata *dd, unsigned port)
 		 port * dd->ipath_rcvegrcnt * sizeof(*tidbase));
 
 	for (i = 0; i < dd->ipath_rcvegrcnt; i++)
-		ipath_pe_put_tid(dd, &tidbase[i], RCVHQ_RCV_TYPE_EAGER,
+		dd->ipath_f_put_tid(dd, &tidbase[i], RCVHQ_RCV_TYPE_EAGER,
 				 tidinv);
 }
 
@@ -1395,10 +1400,11 @@ void ipath_init_iba6120_funcs(struct ipath_devdata *dd)
 	dd->ipath_f_quiet_serdes = ipath_pe_quiet_serdes;
 	dd->ipath_f_bringup_serdes = ipath_pe_bringup_serdes;
 	dd->ipath_f_clear_tids = ipath_pe_clear_tids;
-	if (dd->ipath_minrev >= 2)
-		dd->ipath_f_put_tid = ipath_pe_put_tid_2;
-	else
-		dd->ipath_f_put_tid = ipath_pe_put_tid;
+	/*
+	 * this may get changed after we read the chip revision,
+	 * but we start with the safe version for all revs
+	 */
+	dd->ipath_f_put_tid = ipath_pe_put_tid;
 	dd->ipath_f_cleanup = ipath_setup_pe_cleanup;
 	dd->ipath_f_setextled = ipath_setup_pe_setextled;
 	dd->ipath_f_get_base_info = ipath_pe_get_base_info;
diff --git a/drivers/infiniband/hw/ipath/ipath_init_chip.c b/drivers/infiniband/hw/ipath/ipath_init_chip.c
index 49951d5..9dd0bac 100644
--- a/drivers/infiniband/hw/ipath/ipath_init_chip.c
+++ b/drivers/infiniband/hw/ipath/ipath_init_chip.c
@@ -782,7 +782,7 @@ int ipath_init_chip(struct ipath_devdata *dd, int reinit)
 	 * Follows early_init because some chips have to initialize
 	 * PIO buffers in early_init to avoid false parity errors.
 	 */
-	ipath_cancel_sends(dd);
+	ipath_cancel_sends(dd, 0);
 
 	/* early_init sets rcvhdrentsize and rcvhdrsize, so this must be
 	 * done after early_init */
@@ -851,13 +851,14 @@ int ipath_init_chip(struct ipath_devdata *dd, int reinit)
 	ipath_write_kreg(dd, dd->ipath_kregs->kr_hwerrmask,
 			 dd->ipath_hwerrmask);
 
-	dd->ipath_maskederrs = dd->ipath_ignorederrs;
 	/* clear all */
 	ipath_write_kreg(dd, dd->ipath_kregs->kr_errorclear, -1LL);
 	/* enable errors that are masked, at least this first time. */
 	ipath_write_kreg(dd, dd->ipath_kregs->kr_errormask,
 			 ~dd->ipath_maskederrs);
-	/* clear any interrups up to this point (ints still not enabled) */
+	dd->ipath_errormask = ipath_read_kreg64(dd,
+		dd->ipath_kregs->kr_errormask);
+	/* clear any interrupts up to this point (ints still not enabled) */
 	ipath_write_kreg(dd, dd->ipath_kregs->kr_intclear, -1LL);
 
 	/*
diff --git a/drivers/infiniband/hw/ipath/ipath_intr.c b/drivers/infiniband/hw/ipath/ipath_intr.c
index 1fd91c5..b29fe7e 100644
--- a/drivers/infiniband/hw/ipath/ipath_intr.c
+++ b/drivers/infiniband/hw/ipath/ipath_intr.c
@@ -303,7 +303,7 @@ static void handle_e_ibstatuschanged(struct ipath_devdata *dd,
 		 * Flush all queued sends when link went to DOWN or INIT,
 		 * to be sure that they don't block SMA and other MAD packets
 		 */
-		ipath_cancel_sends(dd);
+		ipath_cancel_sends(dd, 1);
 	}
 	else if (lstate == IPATH_IBSTATE_INIT || lstate == IPATH_IBSTATE_ARM ||
 	    lstate == IPATH_IBSTATE_ACTIVE) {
@@ -517,10 +517,7 @@ static int handle_errors(struct ipath_devdata *dd, ipath_err_t errs)
 
 	supp_msgs = handle_frequent_errors(dd, errs, msg, &noprint);
 
-	/*
-	 * don't report errors that are masked (includes those always
-	 * ignored)
-	 */
+	/* don't report errors that are masked */
 	errs &= ~dd->ipath_maskederrs;
 
 	/* do these first, they are most important */
@@ -566,19 +563,19 @@ static int handle_errors(struct ipath_devdata *dd, ipath_err_t errs)
 		 * ones on this particular interrupt, which also isn't great
 		 */
 		dd->ipath_maskederrs |= dd->ipath_lasterror | errs;
+		dd->ipath_errormask &= ~dd->ipath_maskederrs;
 		ipath_write_kreg(dd, dd->ipath_kregs->kr_errormask,
-				 ~dd->ipath_maskederrs);
+			dd->ipath_errormask);
 		s_iserr = ipath_decode_err(msg, sizeof msg,
-				 (dd->ipath_maskederrs & ~dd->
-				  ipath_ignorederrs));
+			dd->ipath_maskederrs);
 
-		if ((dd->ipath_maskederrs & ~dd->ipath_ignorederrs) &
+		if (dd->ipath_maskederrs &
 			~(INFINIPATH_E_RRCVEGRFULL |
 			INFINIPATH_E_RRCVHDRFULL | INFINIPATH_E_PKTERRS))
 			ipath_dev_err(dd, "Temporarily disabling "
 			    "error(s) %llx reporting; too frequent (%s)\n",
-				(unsigned long long) (dd->ipath_maskederrs &
-				~dd->ipath_ignorederrs), msg);
+				(unsigned long long)dd->ipath_maskederrs,
+				msg);
 		else {
 			/*
 			 * rcvegrfull and rcvhdrqfull are "normal",
@@ -793,19 +790,22 @@ void ipath_clear_freeze(struct ipath_devdata *dd)
 	/* disable error interrupts, to avoid confusion */
 	ipath_write_kreg(dd, dd->ipath_kregs->kr_errormask, 0ULL);
 
+	/* also disable interrupts; errormask is sometimes overwriten */
+	ipath_write_kreg(dd, dd->ipath_kregs->kr_intmask, 0ULL);
+
 	/*
 	 * clear all sends, because they have may been
 	 * completed by usercode while in freeze mode, and
 	 * therefore would not be sent, and eventually
 	 * might cause the process to run out of bufs
 	 */
-	ipath_cancel_sends(dd);
+	ipath_cancel_sends(dd, 0);
 	ipath_write_kreg(dd, dd->ipath_kregs->kr_control,
 			 dd->ipath_control);
 
 	/* ensure pio avail updates continue */
 	ipath_write_kreg(dd, dd->ipath_kregs->kr_sendctrl,
-		 dd->ipath_sendctrl & ~IPATH_S_PIOBUFAVAILUPD);
+		 dd->ipath_sendctrl & ~INFINIPATH_S_PIOBUFAVAILUPD);
 	ipath_read_kreg64(dd, dd->ipath_kregs->kr_scratch);
 	ipath_write_kreg(dd, dd->ipath_kregs->kr_sendctrl,
 		 dd->ipath_sendctrl);
@@ -817,7 +817,7 @@ void ipath_clear_freeze(struct ipath_devdata *dd)
 	for (i = 0; i < dd->ipath_pioavregs; i++) {
 		/* deal with 6110 chip bug */
 		im = i > 3 ? ((i&1) ? i-1 : i+1) : i;
-		val = ipath_read_kreg64(dd, 0x1000+(im*sizeof(u64)));
+		val = ipath_read_kreg64(dd, (0x1000/sizeof(u64))+im);
 		dd->ipath_pioavailregs_dma[i] = dd->ipath_pioavailshadow[i]
 			= le64_to_cpu(val);
 	}
@@ -832,7 +832,8 @@ void ipath_clear_freeze(struct ipath_devdata *dd)
 	ipath_write_kreg(dd, dd->ipath_kregs->kr_errorclear,
 		E_SPKT_ERRS_IGNORE);
 	ipath_write_kreg(dd, dd->ipath_kregs->kr_errormask,
-		~dd->ipath_maskederrs);
+		dd->ipath_errormask);
+	ipath_write_kreg(dd, dd->ipath_kregs->kr_intmask, -1LL);
 	ipath_write_kreg(dd, dd->ipath_kregs->kr_intclear, 0ULL);
 }
 
@@ -1002,7 +1003,6 @@ irqreturn_t ipath_intr(int irq, void *data)
 	u32 istat, chk0rcv = 0;
 	ipath_err_t estat = 0;
 	irqreturn_t ret;
-	u32 oldhead, curtail;
 	static unsigned unexpected = 0;
 	static const u32 port0rbits = (1U<<INFINIPATH_I_RCVAVAIL_SHIFT) |
 		 (1U<<INFINIPATH_I_RCVURG_SHIFT);
@@ -1035,36 +1035,6 @@ irqreturn_t ipath_intr(int irq, void *data)
 		goto bail;
 	}
 
-	/*
-	 * We try to avoid reading the interrupt status register, since
-	 * that's a PIO read, and stalls the processor for up to about
-	 * ~0.25 usec. The idea is that if we processed a port0 packet,
-	 * we blindly clear the  port 0 receive interrupt bits, and nothing
-	 * else, then return.  If other interrupts are pending, the chip
-	 * will re-interrupt us as soon as we write the intclear register.
-	 * We then won't process any more kernel packets (if not the 2nd
-	 * time, then the 3rd or 4th) and we'll then handle the other
-	 * interrupts.   We clear the interrupts first so that we don't
-	 * lose intr for later packets that arrive while we are processing.
-	 */
-	oldhead = dd->ipath_port0head;
-	curtail = (u32)le64_to_cpu(*dd->ipath_hdrqtailptr);
-	if (oldhead != curtail) {
-		if (dd->ipath_flags & IPATH_GPIO_INTR) {
-			ipath_write_kreg(dd, dd->ipath_kregs->kr_gpio_clear,
-					 (u64) (1 << IPATH_GPIO_PORT0_BIT));
-			istat = port0rbits | INFINIPATH_I_GPIO;
-		}
-		else
-			istat = port0rbits;
-		ipath_write_kreg(dd, dd->ipath_kregs->kr_intclear, istat);
-		ipath_kreceive(dd);
-		if (oldhead != dd->ipath_port0head) {
-			ipath_stats.sps_fastrcvint++;
-			goto done;
-		}
-	}
-
 	istat = ipath_read_kreg32(dd, dd->ipath_kregs->kr_intstatus);
 
 	if (unlikely(!istat)) {
@@ -1225,7 +1195,6 @@ irqreturn_t ipath_intr(int irq, void *data)
 		handle_layer_pioavail(dd);
 	}
 
-done:
 	ret = IRQ_HANDLED;
 
 bail:
diff --git a/drivers/infiniband/hw/ipath/ipath_kernel.h b/drivers/infiniband/hw/ipath/ipath_kernel.h
index ace63ef..7a7966f 100644
--- a/drivers/infiniband/hw/ipath/ipath_kernel.h
+++ b/drivers/infiniband/hw/ipath/ipath_kernel.h
@@ -261,18 +261,10 @@ struct ipath_devdata {
 	 * limiting of hwerror reporting
 	 */
 	ipath_err_t ipath_lasthwerror;
-	/*
-	 * errors masked because they occur too fast, also includes errors
-	 * that are always ignored (ipath_ignorederrs)
-	 */
+	/* errors masked because they occur too fast */
 	ipath_err_t ipath_maskederrs;
 	/* time in jiffies at which to re-enable maskederrs */
 	unsigned long ipath_unmasktime;
-	/*
-	 * errors always ignored (masked), at least for a given
-	 * chip/device, because they are wrong or not useful
-	 */
-	ipath_err_t ipath_ignorederrs;
 	/* count of egrfull errors, combined for all ports */
 	u64 ipath_last_tidfull;
 	/* for ipath_qcheck() */
@@ -436,6 +428,7 @@ struct ipath_devdata {
 	u64 ipath_lastibcstat;
 	/* hwerrmask shadow */
 	ipath_err_t ipath_hwerrmask;
+	ipath_err_t ipath_errormask; /* errormask shadow */
 	/* interrupt config reg shadow */
 	u64 ipath_intconfig;
 	/* kr_sendpiobufbase value */
@@ -683,7 +676,7 @@ int ipath_unordered_wc(void);
 
 void ipath_disarm_piobufs(struct ipath_devdata *, unsigned first,
 			  unsigned cnt);
-void ipath_cancel_sends(struct ipath_devdata *);
+void ipath_cancel_sends(struct ipath_devdata *, int);
 
 int ipath_create_rcvhdrq(struct ipath_devdata *, struct ipath_portdata *);
 void ipath_free_pddata(struct ipath_devdata *, struct ipath_portdata *);
diff --git a/drivers/infiniband/hw/ipath/ipath_stats.c b/drivers/infiniband/hw/ipath/ipath_stats.c
index 73ed17d..bae4f56 100644
--- a/drivers/infiniband/hw/ipath/ipath_stats.c
+++ b/drivers/infiniband/hw/ipath/ipath_stats.c
@@ -196,6 +196,45 @@ static void ipath_qcheck(struct ipath_devdata *dd)
 	}
 }
 
+static void ipath_chk_errormask(struct ipath_devdata *dd)
+{
+	static u32 fixed;
+	u32 ctrl;
+	unsigned long errormask;
+	unsigned long hwerrs;
+
+	if (!dd->ipath_errormask || !(dd->ipath_flags & IPATH_INITTED))
+		return;
+
+	errormask = ipath_read_kreg64(dd, dd->ipath_kregs->kr_errormask);
+
+	if (errormask == dd->ipath_errormask)
+		return;
+	fixed++;
+
+	hwerrs = ipath_read_kreg64(dd, dd->ipath_kregs->kr_hwerrstatus);
+	ctrl = ipath_read_kreg32(dd, dd->ipath_kregs->kr_control);
+
+	ipath_write_kreg(dd, dd->ipath_kregs->kr_errormask,
+		dd->ipath_errormask);
+
+	if ((hwerrs & dd->ipath_hwerrmask) ||
+		(ctrl & INFINIPATH_C_FREEZEMODE)) {
+		/* force re-interrupt of pending events, just in case */
+		ipath_write_kreg(dd, dd->ipath_kregs->kr_hwerrclear, 0ULL);
+		ipath_write_kreg(dd, dd->ipath_kregs->kr_errorclear, 0ULL);
+		ipath_write_kreg(dd, dd->ipath_kregs->kr_intclear, 0ULL);
+		dev_info(&dd->pcidev->dev,
+			"errormask fixed(%u) %lx -> %lx, ctrl %x hwerr %lx\n",
+			fixed, errormask, (unsigned long)dd->ipath_errormask,
+			ctrl, hwerrs);
+	} else
+		ipath_dbg("errormask fixed(%u) %lx -> %lx, no freeze\n",
+			fixed, errormask,
+			(unsigned long)dd->ipath_errormask);
+}
+
+
 /**
  * ipath_get_faststats - get word counters from chip before they overflow
  * @opaque - contains a pointer to the infinipath device ipath_devdata
@@ -251,14 +290,13 @@ void ipath_get_faststats(unsigned long opaque)
 		dd->ipath_lasterror = 0;
 	if (dd->ipath_lasthwerror)
 		dd->ipath_lasthwerror = 0;
-	if ((dd->ipath_maskederrs & ~dd->ipath_ignorederrs)
+	if (dd->ipath_maskederrs
 	    && time_after(jiffies, dd->ipath_unmasktime)) {
 		char ebuf[256];
 		int iserr;
 		iserr = ipath_decode_err(ebuf, sizeof ebuf,
-				 (dd->ipath_maskederrs & ~dd->
-				  ipath_ignorederrs));
-		if ((dd->ipath_maskederrs & ~dd->ipath_ignorederrs) &
+			dd->ipath_maskederrs);
+		if (dd->ipath_maskederrs &
 				~(INFINIPATH_E_RRCVEGRFULL | INFINIPATH_E_RRCVHDRFULL |
 				INFINIPATH_E_PKTERRS ))
 			ipath_dev_err(dd, "Re-enabling masked errors "
@@ -278,9 +316,12 @@ void ipath_get_faststats(unsigned long opaque)
 				ipath_cdbg(ERRPKT, "Re-enabling packet"
 						" problem interrupt (%s)\n", ebuf);
 		}
-		dd->ipath_maskederrs = dd->ipath_ignorederrs;
+
+		/* re-enable masked errors */
+		dd->ipath_errormask |= dd->ipath_maskederrs;
 		ipath_write_kreg(dd, dd->ipath_kregs->kr_errormask,
-				 ~dd->ipath_maskederrs);
+			dd->ipath_errormask);
+		dd->ipath_maskederrs = 0;
 	}
 
 	/* limit qfull messages to ~one per minute per port */
@@ -294,6 +335,7 @@ void ipath_get_faststats(unsigned long opaque)
 		}
 	}
 
+	ipath_chk_errormask(dd);
 done:
 	mod_timer(&dd->ipath_stats_timer, jiffies + HZ * 5);
 }
diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
index f6315df..ba0428d 100644
--- a/drivers/infiniband/hw/mlx4/qp.c
+++ b/drivers/infiniband/hw/mlx4/qp.c
@@ -1209,7 +1209,6 @@ static void set_datagram_seg(struct mlx4_wqe_datagram_seg *dseg,
 	memcpy(dseg->av, &to_mah(wr->wr.ud.ah)->av, sizeof (struct mlx4_av));
 	dseg->dqpn = cpu_to_be32(wr->wr.ud.remote_qpn);
 	dseg->qkey = cpu_to_be32(wr->wr.ud.remote_qkey);
-
 }
 
 static void set_data_seg(struct mlx4_wqe_data_seg *dseg,
diff --git a/drivers/net/mlx4/mr.c b/drivers/net/mlx4/mr.c
index d0808fa..5b87183 100644
--- a/drivers/net/mlx4/mr.c
+++ b/drivers/net/mlx4/mr.c
@@ -255,10 +255,8 @@ int mlx4_mr_alloc(struct mlx4_dev *dev, u32 pd, u64 iova, u64 size, u32 access,
 	int err;
 
 	index = mlx4_bitmap_alloc(&priv->mr_table.mpt_bitmap);
-	if (index == -1) {
-		err = -ENOMEM;
-		goto err;
-	}
+	if (index == -1)
+		return -ENOMEM;
 
 	mr->iova       = iova;
 	mr->size       = size;
@@ -269,15 +267,8 @@ int mlx4_mr_alloc(struct mlx4_dev *dev, u32 pd, u64 iova, u64 size, u32 access,
 
 	err = mlx4_mtt_init(dev, npages, page_shift, &mr->mtt);
 	if (err)
-		goto err_index;
-
-	return 0;
-
-err_index:
-	mlx4_bitmap_free(&priv->mr_table.mpt_bitmap, index);
+		mlx4_bitmap_free(&priv->mr_table.mpt_bitmap, index);
 
-err:
-	kfree(mr);
 	return err;
 }
 EXPORT_SYMBOL_GPL(mlx4_mr_alloc);

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2007-07-21  4:56 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2007-07-21  4:56 UTC (permalink / raw)
  To: torvalds; +Cc: linux-kernel, general

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get another small batch of changes for 2.6.23:

Arthur Jones (1):
      IB/ipath: Remove ipath_layer dead code

Florin Malita (1):
      IB/mlx4: Fix leaks in __mlx4_ib_modify_qp

Hoang-Nam Nguyen (3):
      IB/ehca: Support large page MRs
      IB/ehca: Generate async event when SRQ limit reached
      IB/ehca: Move ehca2ib_return_code() out of line

Joachim Fenkes (1):
      IB/ehca: Make internal_create/destroy_qp() static

Michael S. Tsirkin (1):
      IB/mthca: Change command token on timeout

Roland Dreier (2):
      mlx4_core: Change command token on timeout
      IB/mlx4: Fix error path in create_qp_common()

Stefan Roscher (1):
      IB/ehca: Support small QP queues

 drivers/infiniband/hw/ehca/ehca_classes.h |   50 +++--
 drivers/infiniband/hw/ehca/ehca_cq.c      |    8 +-
 drivers/infiniband/hw/ehca/ehca_eq.c      |    8 +-
 drivers/infiniband/hw/ehca/ehca_irq.c     |   42 +++-
 drivers/infiniband/hw/ehca/ehca_main.c    |   49 ++++-
 drivers/infiniband/hw/ehca/ehca_mrmw.c    |  371 ++++++++++++++++++++++++-----
 drivers/infiniband/hw/ehca/ehca_mrmw.h    |    2 +-
 drivers/infiniband/hw/ehca/ehca_pd.c      |   25 ++-
 drivers/infiniband/hw/ehca/ehca_qp.c      |  178 ++++++++------
 drivers/infiniband/hw/ehca/ehca_tools.h   |   19 +--
 drivers/infiniband/hw/ehca/ehca_uverbs.c  |    2 +-
 drivers/infiniband/hw/ehca/hcp_if.c       |   50 +++-
 drivers/infiniband/hw/ehca/ipz_pt_fn.c    |  222 +++++++++++++----
 drivers/infiniband/hw/ehca/ipz_pt_fn.h    |   26 ++-
 drivers/infiniband/hw/ipath/Makefile      |    1 -
 drivers/infiniband/hw/ipath/ipath_layer.c |  365 ----------------------------
 drivers/infiniband/hw/ipath/ipath_layer.h |   71 ------
 drivers/infiniband/hw/ipath/ipath_verbs.h |    2 -
 drivers/infiniband/hw/mlx4/qp.c           |   20 +-
 drivers/infiniband/hw/mthca/mthca_cmd.c   |    3 +-
 drivers/net/mlx4/cmd.c                    |    3 +-
 21 files changed, 802 insertions(+), 715 deletions(-)
 delete mode 100644 drivers/infiniband/hw/ipath/ipath_layer.c
 delete mode 100644 drivers/infiniband/hw/ipath/ipath_layer.h

^ permalink raw reply	[flat|nested] 223+ messages in thread

* [GIT PULL] please pull infiniband.git
@ 2007-07-18 22:52 Roland Dreier
  0 siblings, 0 replies; 223+ messages in thread
From: Roland Dreier @ 2007-07-18 22:52 UTC (permalink / raw)
  To: torvalds; +Cc: linux-kernel, general

Linus, please pull from

    master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This tree is also available from kernel.org mirrors at:

    git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus

This will get another batch of changes for 2.6.23, including the
beginnings of cleaning up the work request posting code in mthca and
mlx4:

Dotan Barak (2):
      IB/mlx4: Take sizeof the correct pointer in call to memset()
      RDMA/cma: Remove local write permission from QP access flags

Hoang-Nam Nguyen (7):
      IB/ehca: Fix memory leak in error path of ehca_get_dma_mr()
      IB/ehca: Use common error code mapping instead of specific ones
      IB/ehca: Use #define for "pages per register_rpage" instead of hardcoded value
      IB/ehca: Use macro to calculate number of chunks in a mem block
      IB/ehca: MR/MW structure refactoring
      IB/ehca: Restructure ehca_set_pagebuf()
      IB/ehca: Fix warnings issued by checkpatch.pl

Jack Morgenstein (4):
      IB/mlx4: Fix flow label returned from query QP
      IB/mlx4: Fix port returned from query QP for QPs in INIT state
      mlx4_core: Reset device when internal error is detected
      IB/mlx4: Increase max outstanding RDMA reads as target

Joachim Fenkes (1):
      IB/ehca: Fix HW level autodetection

Roland Dreier (14):
      IB/mthca: Schedule MSI support for removal
      IB/mthca: Fix printk format used for firmware version in warning
      IB/iser: Make a couple of functions static
      IB/ipath: Make a few functions static
      IB/ipath: Remove ipath_get_user_pages_nocopy()
      IB/cm: Make internal function cm_get_ack_delay() static
      IB/mthca: Use uninitialized_var() for f0
      IB/mlx4: Return receive queue sizes for userspace QPs from query QP
      IB/mthca: Factor out setting WQE data segment entries
      IB/mlx4: Factor out setting WQE data segment entries
      IB/mlx4: Factor out setting other WQE segments
      IB/mthca: Factor out setting WQE remote address and atomic segment entries
      IB/mthca: Factor out setting WQE UD segment entries
      IB/mthca: Simplify use of size0 in work request posting

Steve Wise (1):
      RDMA/cxgb3: Remove cm_id reference on listen failures

 Documentation/feature-removal-schedule.txt        |   10 +
 drivers/infiniband/core/cm.c                      |    2 +-
 drivers/infiniband/core/cma.c                     |    2 +-
 drivers/infiniband/hw/cxgb3/iwch_cm.c             |    1 +
 drivers/infiniband/hw/ehca/ehca_av.c              |    2 +-
 drivers/infiniband/hw/ehca/ehca_classes.h         |   54 +-
 drivers/infiniband/hw/ehca/ehca_classes_pSeries.h |  156 ++--
 drivers/infiniband/hw/ehca/ehca_cq.c              |    2 +-
 drivers/infiniband/hw/ehca/ehca_eq.c              |    3 +-
 drivers/infiniband/hw/ehca/ehca_hca.c             |   28 +-
 drivers/infiniband/hw/ehca/ehca_irq.c             |   56 +-
 drivers/infiniband/hw/ehca/ehca_iverbs.h          |    7 +-
 drivers/infiniband/hw/ehca/ehca_main.c            |   50 +-
 drivers/infiniband/hw/ehca/ehca_mrmw.c            | 1087 ++++++++-------------
 drivers/infiniband/hw/ehca/ehca_mrmw.h            |   21 +-
 drivers/infiniband/hw/ehca/ehca_qes.h             |   22 +-
 drivers/infiniband/hw/ehca/ehca_qp.c              |   39 +-
 drivers/infiniband/hw/ehca/ehca_reqs.c            |   15 +-
 drivers/infiniband/hw/ehca/ehca_tools.h           |   31 +-
 drivers/infiniband/hw/ehca/ehca_uverbs.c          |   10 +-
 drivers/infiniband/hw/ehca/hcp_if.c               |    8 +-
 drivers/infiniband/hw/ehca/hcp_phyp.c             |    2 +-
 drivers/infiniband/hw/ehca/hipz_fns_core.h        |    4 +-
 drivers/infiniband/hw/ehca/hipz_hw.h              |   24 +-
 drivers/infiniband/hw/ehca/ipz_pt_fn.c            |    2 +-
 drivers/infiniband/hw/ehca/ipz_pt_fn.h            |    4 +-
 drivers/infiniband/hw/ipath/ipath_driver.c        |    2 +-
 drivers/infiniband/hw/ipath/ipath_eeprom.c        |    4 +-
 drivers/infiniband/hw/ipath/ipath_intr.c          |    2 +-
 drivers/infiniband/hw/ipath/ipath_kernel.h        |    2 -
 drivers/infiniband/hw/ipath/ipath_ruc.c           |    2 +-
 drivers/infiniband/hw/ipath/ipath_user_pages.c    |   26 -
 drivers/infiniband/hw/ipath/ipath_verbs.c         |    2 +-
 drivers/infiniband/hw/ipath/ipath_verbs.h         |    4 -
 drivers/infiniband/hw/mlx4/qp.c                   |  115 ++-
 drivers/infiniband/hw/mthca/mthca_main.c          |   22 +-
 drivers/infiniband/hw/mthca/mthca_qp.c            |  221 ++---
 drivers/infiniband/hw/mthca/mthca_srq.c           |   28 +-
 drivers/infiniband/hw/mthca/mthca_wqe.h           |   15 +
 drivers/infiniband/ulp/iser/iscsi_iser.h          |    5 -
 drivers/infiniband/ulp/iser/iser_memory.c         |    4 +-
 drivers/infiniband/ulp/iser/iser_verbs.c          |   47 +-
 drivers/net/mlx4/catas.c                          |  106 ++-
 drivers/net/mlx4/eq.c                             |   56 +-
 drivers/net/mlx4/intf.c                           |    2 +
 drivers/net/mlx4/main.c                           |   26 +-
 drivers/net/mlx4/mlx4.h                           |   13 +-
 47 files changed, 1055 insertions(+), 1291 deletions(-)

^ permalink raw reply	[flat|nested] 223+ messages in thread
<