Merge tag 'for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford...
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 5 Aug 2016 00:26:31 +0000 (20:26 -0400)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 5 Aug 2016 00:26:31 +0000 (20:26 -0400)
Pull second round of rdma updates from Doug Ledford:
 "This can be split out into just two categories:

   - fixes to the RDMA R/W API in regards to SG list length limits
     (about 5 patches)

   - fixes/features for the Intel hfi1 driver (everything else)

  The hfi1 driver is still being brought to full feature support by
  Intel, and they have a lot of people working on it, so that amounts to
  almost the entirety of this pull request"

* tag 'for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma: (84 commits)
  IB/hfi1: Add cache evict LRU list
  IB/hfi1: Fix memory leak during unexpected shutdown
  IB/hfi1: Remove unneeded mm argument in remove function
  IB/hfi1: Consistently call ops->remove outside spinlock
  IB/hfi1: Use evict mmu rb operation
  IB/hfi1: Add evict operation to the mmu rb handler
  IB/hfi1: Fix TID caching actions
  IB/hfi1: Make the cache handler own its rb tree root
  IB/hfi1: Make use of mm consistent
  IB/hfi1: Fix user SDMA racy user request claim
  IB/hfi1: Fix error condition that needs to clean up
  IB/hfi1: Release node on insert failure
  IB/hfi1: Validate SDMA user iovector count
  IB/hfi1: Validate SDMA user request index
  IB/hfi1: Use the same capability state for all shared contexts
  IB/hfi1: Prevent null pointer dereference
  IB/hfi1: Rename TID mmu_rb_* functions
  IB/hfi1: Remove unneeded empty check in hfi1_mmu_rb_unregister()
  IB/hfi1: Restructure hfi1_file_open
  IB/hfi1: Make iovec loop index easy to understand
  ...

1  2 
drivers/infiniband/core/verbs.c
drivers/infiniband/hw/hfi1/Kconfig
drivers/infiniband/hw/hfi1/file_ops.c
drivers/infiniband/hw/hfi1/hfi.h
drivers/infiniband/hw/hfi1/verbs.c
include/rdma/ib_verbs.h

Simple merge
@@@ -1,8 -1,10 +1,9 @@@
  config INFINIBAND_HFI1
        tristate "Intel OPA Gen1 support"
-       depends on X86_64 && INFINIBAND_RDMAVT
+       depends on X86_64 && INFINIBAND_RDMAVT && I2C
        select MMU_NOTIFIER
        select CRC32
 -      default m
+       select I2C_ALGOBIT
        ---help---
        This is a low-level driver for Intel OPA Gen1 adapter.
  config HFI1_DEBUG_SDMA_ORDER
Simple merge
Simple merge
Simple merge
@@@ -1433,63 -1428,10 +1433,67 @@@ struct ib_srq 
        } ext;
  };
  
 +enum ib_wq_type {
 +      IB_WQT_RQ
 +};
 +
 +enum ib_wq_state {
 +      IB_WQS_RESET,
 +      IB_WQS_RDY,
 +      IB_WQS_ERR
 +};
 +
 +struct ib_wq {
 +      struct ib_device       *device;
 +      struct ib_uobject      *uobject;
 +      void                *wq_context;
 +      void                (*event_handler)(struct ib_event *, void *);
 +      struct ib_pd           *pd;
 +      struct ib_cq           *cq;
 +      u32             wq_num;
 +      enum ib_wq_state       state;
 +      enum ib_wq_type wq_type;
 +      atomic_t                usecnt;
 +};
 +
 +struct ib_wq_init_attr {
 +      void                   *wq_context;
 +      enum ib_wq_type wq_type;
 +      u32             max_wr;
 +      u32             max_sge;
 +      struct  ib_cq          *cq;
 +      void                (*event_handler)(struct ib_event *, void *);
 +};
 +
 +enum ib_wq_attr_mask {
 +      IB_WQ_STATE     = 1 << 0,
 +      IB_WQ_CUR_STATE = 1 << 1,
 +};
 +
 +struct ib_wq_attr {
 +      enum    ib_wq_state     wq_state;
 +      enum    ib_wq_state     curr_wq_state;
 +};
 +
 +struct ib_rwq_ind_table {
 +      struct ib_device        *device;
 +      struct ib_uobject      *uobject;
 +      atomic_t                usecnt;
 +      u32             ind_tbl_num;
 +      u32             log_ind_tbl_size;
 +      struct ib_wq    **ind_tbl;
 +};
 +
 +struct ib_rwq_ind_table_init_attr {
 +      u32             log_ind_tbl_size;
 +      /* Each entry is a pointer to Receive Work Queue */
 +      struct ib_wq    **ind_tbl;
 +};
 +
+ /*
+  * @max_write_sge: Maximum SGE elements per RDMA WRITE request.
+  * @max_read_sge:  Maximum SGE elements per RDMA READ request.
+  */
  struct ib_qp {
        struct ib_device       *device;
        struct ib_pd           *pd;
        void                  (*event_handler)(struct ib_event *, void *);
        void                   *qp_context;
        u32                     qp_num;
+       u32                     max_write_sge;
+       u32                     max_read_sge;
        enum ib_qp_type         qp_type;
 +      struct ib_rwq_ind_table *rwq_ind_tbl;
  };
  
  struct ib_mr {