Merge tag 'for-linus-unmerged' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 7 Apr 2018 00:35:43 +0000 (17:35 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 7 Apr 2018 00:35:43 +0000 (17:35 -0700)
Pull rdma updates from Jason Gunthorpe:
 "Doug and I are at a conference next week so if another PR is sent I
  expect it to only be bug fixes. Parav noted yesterday that there are
  some fringe case behavior changes in his work that he would like to
  fix, and I see that Intel has a number of rc looking patches for HFI1
  they posted yesterday.

  Parav is again the biggest contributor by patch count with his ongoing
  work to enable container support in the RDMA stack, followed by Leon
  doing syzkaller inspired cleanups, though most of the actual fixing
  went to RC.

  There is one uncomfortable series here fixing the user ABI to actually
  work as intended in 32 bit mode. There are lots of notes in the commit
  messages, but the basic summary is we don't think there is an actual
  32 bit kernel user of drivers/infiniband for several good reasons.

  However we are seeing people want to use a 32 bit user space with 64
  bit kernel, which didn't completely work today. So in fixing it we
  required a 32 bit rxe user to upgrade their userspace. rxe users are
  still already quite rare and we think a 32 bit one is non-existing.

   - Fix RDMA uapi headers to actually compile in userspace and be more
     complete

   - Three shared with netdev pull requests from Mellanox:

      * 7 patches, mostly to net with 1 IB related one at the back).
        This series addresses an IRQ performance issue (patch 1),
        cleanups related to the fix for the IRQ performance problem
        (patches 2-6), and then extends the fragmented completion queue
        support that already exists in the net side of the driver to the
        ib side of the driver (patch 7).

      * Mostly IB, with 5 patches to net that are needed to support the
        remaining 10 patches to the IB subsystem. This series extends
        the current 'representor' framework when the mlx5 driver is in
        switchdev mode from being a netdev only construct to being a
        netdev/IB dev construct. The IB dev is limited to raw Eth queue
        pairs only, but by having an IB dev of this type attached to the
        representor for a switchdev port, it enables DPDK to work on the
        switchdev device.

      * All net related, but needed as infrastructure for the rdma
        driver

   - Updates for the hns, i40iw, bnxt_re, cxgb3, cxgb4, hns drivers

   - SRP performance updates

   - IB uverbs write path cleanup patch series from Leon

   - Add RDMA_CM support to ib_srpt. This is disabled by default. Users
     need to set the port for ib_srpt to listen on in configfs in order
     for it to be enabled
     (/sys/kernel/config/target/srpt/discovery_auth/rdma_cm_port)

   - TSO and Scatter FCS support in mlx4

   - Refactor of modify_qp routine to resolve problems seen while
     working on new code that is forthcoming

   - More refactoring and updates of RDMA CM for containers support from
     Parav

   - mlx5 'fine grained packet pacing', 'ipsec offload' and 'device
     memory' user API features

   - Infrastructure updates for the new IOCTL interface, based on
     increased usage

   - ABI compatibility bug fixes to fully support 32 bit userspace on 64
     bit kernel as was originally intended. See the commit messages for
     extensive details

   - Syzkaller bugs and code cleanups motivated by them"

* tag 'for-linus-unmerged' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma: (199 commits)
  IB/rxe: Fix for oops in rxe_register_device on ppc64le arch
  IB/mlx5: Device memory mr registration support
  net/mlx5: Mkey creation command adjustments
  IB/mlx5: Device memory support in mlx5_ib
  net/mlx5: Query device memory capabilities
  IB/uverbs: Add device memory registration ioctl support
  IB/uverbs: Add alloc/free dm uverbs ioctl support
  IB/uverbs: Add device memory capabilities reporting
  IB/uverbs: Expose device memory capabilities to user
  RDMA/qedr: Fix wmb usage in qedr
  IB/rxe: Removed GID add/del dummy routines
  RDMA/qedr: Zero stack memory before copying to user space
  IB/mlx5: Add ability to hash by IPSEC_SPI when creating a TIR
  IB/mlx5: Add information for querying IPsec capabilities
  IB/mlx5: Add IPsec support for egress and ingress
  {net,IB}/mlx5: Add ipsec helper
  IB/mlx5: Add modify_flow_action_esp verb
  IB/mlx5: Add implementation for create and destroy action_xfrm
  IB/uverbs: Introduce ESP steering match filter
  IB/uverbs: Add modify ESP flow_action
  ...

22 files changed:
1  2 
.mailmap
MAINTAINERS
drivers/infiniband/core/addr.c
drivers/infiniband/core/cma.c
drivers/infiniband/core/device.c
drivers/infiniband/core/ucma.c
drivers/infiniband/hw/cxgb4/device.c
drivers/infiniband/hw/hns/hns_roce_hw_v2.c
drivers/infiniband/hw/mlx5/main.c
drivers/infiniband/hw/mlx5/mr.c
drivers/infiniband/hw/mlx5/qp.c
drivers/infiniband/hw/qedr/main.c
drivers/infiniband/hw/qedr/verbs.c
drivers/infiniband/hw/usnic/usnic_ib_main.c
drivers/infiniband/hw/usnic/usnic_transport.c
drivers/net/ethernet/mellanox/mlx4/main.c
drivers/net/ethernet/mellanox/mlx5/core/en_main.c
drivers/net/ethernet/mellanox/mlx5/core/fw.c
include/linux/mlx5/device.h
include/linux/mlx5/mlx5_ifc.h
include/rdma/ib_addr.h
include/rdma/ib_verbs.h

diff --cc .mailmap
Simple merge
diff --cc MAINTAINERS
index f1be26eb7e802e417d60b1babd217b407f197c46,556672eea6d5d7151f782ae650c99496c2fc567f..0407846a96822e9c5a42045c296a7f9f2cf867d2
@@@ -7214,15 -7226,8 +7214,16 @@@ M:    Shiraz Saleem <shiraz.saleem@intel.c
  L:    linux-rdma@vger.kernel.org
  S:    Supported
  F:    drivers/infiniband/hw/i40iw/
+ F:    include/uapi/rdma/i40iw-abi.h
  
 +INTEL SHA MULTIBUFFER DRIVER
 +M:    Megha Dey <megha.dey@linux.intel.com>
 +R:    Tim Chen <tim.c.chen@linux.intel.com>
 +L:    linux-crypto@vger.kernel.org
 +S:    Supported
 +F:    arch/x86/crypto/sha*-mb
 +F:    crypto/mcryptd.c
 +
  INTEL TELEMETRY DRIVER
  M:    Souvik Kumar Chakravarty <souvik.k.chakravarty@intel.com>
  L:    platform-driver-x86@vger.kernel.org
Simple merge
Simple merge
Simple merge
index d933336d7e01eb0cb4ca4451d440040dd8131af9,5e4f2cce7383f9b7994460c31488dcdb4dd46999..74329483af6d424d97970719d1b1c1733737b334
@@@ -477,10 -481,10 +482,10 @@@ static ssize_t ucma_create_id(struct uc
                return -ENOMEM;
  
        ctx->uid = cmd.uid;
-       cm_id = rdma_create_id(current->nsproxy->net_ns,
-                              ucma_event_handler, ctx, cmd.ps, qp_type);
 -      ctx->cm_id = __rdma_create_id(current->nsproxy->net_ns,
 -                            ucma_event_handler, ctx, cmd.ps, qp_type, NULL);
 -      if (IS_ERR(ctx->cm_id)) {
 -              ret = PTR_ERR(ctx->cm_id);
++      cm_id = __rdma_create_id(current->nsproxy->net_ns,
++                               ucma_event_handler, ctx, cmd.ps, qp_type, NULL);
 +      if (IS_ERR(cm_id)) {
 +              ret = PTR_ERR(cm_id);
                goto err1;
        }
  
@@@ -1312,10 -1305,10 +1320,10 @@@ static ssize_t ucma_set_option(struct u
        if (IS_ERR(ctx))
                return PTR_ERR(ctx);
  
 -      if (unlikely(cmd.optval > KMALLOC_MAX_SIZE))
 +      if (unlikely(cmd.optlen > KMALLOC_MAX_SIZE))
                return -EINVAL;
  
-       optval = memdup_user((void __user *) (unsigned long) cmd.optval,
+       optval = memdup_user(u64_to_user_ptr(cmd.optval),
                             cmd.optlen);
        if (IS_ERR(optval)) {
                ret = PTR_ERR(optval);
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 415e0996001760312d82c475d97ebf8cfb426531,e8860a46754a4ea042f1d2446aaaed844ea98c0a..a08cc72789802fd49bfacb0c8fafca1b93540b4c
@@@ -130,14 -126,7 +126,9 @@@ void rdma_copy_addr(struct rdma_dev_add
                    const unsigned char *dst_dev_addr);
  
  int rdma_addr_size(struct sockaddr *addr);
 +int rdma_addr_size_in6(struct sockaddr_in6 *addr);
 +int rdma_addr_size_kss(struct __kernel_sockaddr_storage *addr);
  
- int rdma_addr_find_l2_eth_by_grh(const union ib_gid *sgid,
-                                const union ib_gid *dgid,
-                                u8 *dmac, const struct net_device *ndev,
-                                int *hoplimit);
  static inline u16 ib_addr_get_pkey(struct rdma_dev_addr *dev_addr)
  {
        return ((u16)dev_addr->broadcast[8] << 8) | (u16)dev_addr->broadcast[9];
Simple merge