Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 16 Dec 2020 21:42:26 +0000 (13:42 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 16 Dec 2020 21:42:26 +0000 (13:42 -0800)
Pull rdma updates from Jason Gunthorpe:
 "A smaller set of patches, nothing stands out as being particularly
  major this cycle. The biggest item would be the new HIP09 HW support
  from HNS, otherwise it was pretty quiet for new work here:

   - Driver bug fixes and updates: bnxt_re, cxgb4, rxe, hns, i40iw,
     cxgb4, mlx4 and mlx5

   - Bug fixes and polishing for the new rts ULP

   - Cleanup of uverbs checking for allowed driver operations

   - Use sysfs_emit all over the place

   - Lots of bug fixes and clarity improvements for hns

   - hip09 support for hns

   - NDR and 50/100Gb signaling rates

   - Remove dma_virt_ops and go back to using the IB DMA wrappers

   - mlx5 optimizations for contiguous DMA regions"

* tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma: (147 commits)
  RDMA/cma: Don't overwrite sgid_attr after device is released
  RDMA/mlx5: Fix MR cache memory leak
  RDMA/rxe: Use acquire/release for memory ordering
  RDMA/hns: Simplify AEQE process for different types of queue
  RDMA/hns: Fix inaccurate prints
  RDMA/hns: Fix incorrect symbol types
  RDMA/hns: Clear redundant variable initialization
  RDMA/hns: Fix coding style issues
  RDMA/hns: Remove unnecessary access right set during INIT2INIT
  RDMA/hns: WARN_ON if get a reserved sl from users
  RDMA/hns: Avoid filling sl in high 3 bits of vlan_id
  RDMA/hns: Do shift on traffic class when using RoCEv2
  RDMA/hns: Normalization the judgment of some features
  RDMA/hns: Limit the length of data copied between kernel and userspace
  RDMA/mlx4: Remove bogus dev_base_lock usage
  RDMA/uverbs: Fix incorrect variable type
  RDMA/core: Do not indicate device ready when device enablement fails
  RDMA/core: Clean up cq pool mechanism
  RDMA/core: Update kernel documentation for ib_create_named_qp()
  MAINTAINERS: SOFT-ROCE: Change Zhu Yanjun's email address
  ...

13 files changed:
1  2 
.mailmap
MAINTAINERS
drivers/infiniband/core/cm.c
drivers/infiniband/hw/efa/efa_verbs.c
drivers/infiniband/hw/mlx5/main.c
drivers/infiniband/hw/mlx5/mlx5_ib.h
drivers/infiniband/hw/qedr/verbs.c
drivers/infiniband/ulp/isert/ib_isert.c
drivers/infiniband/ulp/srpt/ib_srpt.c
drivers/nvme/host/rdma.c
drivers/pci/p2pdma.c
include/rdma/ib_verbs.h
tools/testing/scatterlist/main.c

diff --cc .mailmap
Simple merge
diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
@@@ -4851,49 -4806,17 +4808,38 @@@ static void mlx5r_remove(struct auxilia
        __mlx5_ib_remove(dev, dev->profile, MLX5_IB_STAGE_MAX);
  }
  
 -static struct mlx5_interface mlx5_ib_interface = {
 -      .add            = mlx5_ib_add,
 -      .remove         = mlx5_ib_remove,
 -      .protocol       = MLX5_INTERFACE_PROTOCOL_IB,
 +static const struct auxiliary_device_id mlx5r_mp_id_table[] = {
 +      { .name = MLX5_ADEV_NAME ".multiport", },
 +      {},
 +};
 +
 +static const struct auxiliary_device_id mlx5r_id_table[] = {
 +      { .name = MLX5_ADEV_NAME ".rdma", },
 +      {},
 +};
 +
 +MODULE_DEVICE_TABLE(auxiliary, mlx5r_mp_id_table);
 +MODULE_DEVICE_TABLE(auxiliary, mlx5r_id_table);
 +
 +static struct auxiliary_driver mlx5r_mp_driver = {
 +      .name = "multiport",
 +      .probe = mlx5r_mp_probe,
 +      .remove = mlx5r_mp_remove,
 +      .id_table = mlx5r_mp_id_table,
 +};
 +
 +static struct auxiliary_driver mlx5r_driver = {
 +      .name = "rdma",
 +      .probe = mlx5r_probe,
 +      .remove = mlx5r_remove,
 +      .id_table = mlx5r_id_table,
  };
  
- unsigned long mlx5_ib_get_xlt_emergency_page(void)
- {
-       mutex_lock(&xlt_emergency_page_mutex);
-       return xlt_emergency_page;
- }
- void mlx5_ib_put_xlt_emergency_page(void)
- {
-       mutex_unlock(&xlt_emergency_page_mutex);
- }
  static int __init mlx5_ib_init(void)
  {
 -      int err;
 +      int ret;
  
-       xlt_emergency_page = __get_free_page(GFP_KERNEL);
+       xlt_emergency_page = (void *)__get_free_page(GFP_KERNEL);
        if (!xlt_emergency_page)
                return -ENOMEM;
  
@@@ -4929,13 -4835,9 +4873,12 @@@ rep_err
  
  static void __exit mlx5_ib_cleanup(void)
  {
 -      mlx5_unregister_interface(&mlx5_ib_interface);
 +      auxiliary_driver_unregister(&mlx5r_driver);
 +      auxiliary_driver_unregister(&mlx5r_mp_driver);
 +      mlx5r_rep_cleanup();
 +
        destroy_workqueue(mlx5_ib_event_wq);
-       mutex_destroy(&xlt_emergency_page_mutex);
-       free_page(xlt_emergency_page);
+       free_page((unsigned long)xlt_emergency_page);
  }
  
  module_init(mlx5_ib_init);
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -50,29 -51,36 +51,36 @@@ static void fail(struct test *test, str
  
  int main(void)
  {
 -      const unsigned int sgmax = SCATTERLIST_MAX_SEGMENT;
 +      const unsigned int sgmax = UINT_MAX;
        struct test *test, tests[] = {
-               { -EINVAL, 1, pfn(0), PAGE_SIZE, 0, 1 },
-               { 0, 1, pfn(0), PAGE_SIZE, PAGE_SIZE + 1, 1 },
-               { 0, 1, pfn(0), PAGE_SIZE, sgmax + 1, 1 },
-               { 0, 1, pfn(0), PAGE_SIZE, sgmax, 1 },
-               { 0, 1, pfn(0), 1, sgmax, 1 },
-               { 0, 2, pfn(0, 1), 2 * PAGE_SIZE, sgmax, 1 },
-               { 0, 2, pfn(1, 0), 2 * PAGE_SIZE, sgmax, 2 },
-               { 0, 3, pfn(0, 1, 2), 3 * PAGE_SIZE, sgmax, 1 },
-               { 0, 3, pfn(0, 2, 1), 3 * PAGE_SIZE, sgmax, 3 },
-               { 0, 3, pfn(0, 1, 3), 3 * PAGE_SIZE, sgmax, 2 },
-               { 0, 3, pfn(1, 2, 4), 3 * PAGE_SIZE, sgmax, 2 },
-               { 0, 3, pfn(1, 3, 4), 3 * PAGE_SIZE, sgmax, 2 },
-               { 0, 4, pfn(0, 1, 3, 4), 4 * PAGE_SIZE, sgmax, 2 },
-               { 0, 5, pfn(0, 1, 3, 4, 5), 5 * PAGE_SIZE, sgmax, 2 },
-               { 0, 5, pfn(0, 1, 3, 4, 6), 5 * PAGE_SIZE, sgmax, 3 },
-               { 0, 5, pfn(0, 1, 2, 3, 4), 5 * PAGE_SIZE, sgmax, 1 },
-               { 0, 5, pfn(0, 1, 2, 3, 4), 5 * PAGE_SIZE, 2 * PAGE_SIZE, 3 },
-               { 0, 6, pfn(0, 1, 2, 3, 4, 5), 6 * PAGE_SIZE, 2 * PAGE_SIZE, 3 },
-               { 0, 6, pfn(0, 2, 3, 4, 5, 6), 6 * PAGE_SIZE, 2 * PAGE_SIZE, 4 },
-               { 0, 6, pfn(0, 1, 3, 4, 5, 6), 6 * PAGE_SIZE, 2 * PAGE_SIZE, 3 },
-               { 0, 0, NULL, 0, 0, 0 },
+               { -EINVAL, 1, pfn(0), NULL, PAGE_SIZE, 0, 1 },
+               { 0, 1, pfn(0), NULL, PAGE_SIZE, PAGE_SIZE + 1, 1 },
+               { 0, 1, pfn(0), NULL, PAGE_SIZE, sgmax + 1, 1 },
+               { 0, 1, pfn(0), NULL, PAGE_SIZE, sgmax, 1 },
+               { 0, 1, pfn(0), NULL, 1, sgmax, 1 },
+               { 0, 2, pfn(0, 1), NULL, 2 * PAGE_SIZE, sgmax, 1 },
+               { 0, 2, pfn(1, 0), NULL, 2 * PAGE_SIZE, sgmax, 2 },
+               { 0, 3, pfn(0, 1, 2), NULL, 3 * PAGE_SIZE, sgmax, 1 },
+               { 0, 3, pfn(0, 1, 2), NULL, 3 * PAGE_SIZE, sgmax, 1 },
+               { 0, 3, pfn(0, 1, 2), pfn(3, 4, 5), 3 * PAGE_SIZE, sgmax, 1 },
+               { 0, 3, pfn(0, 1, 2), pfn(4, 5, 6), 3 * PAGE_SIZE, sgmax, 2 },
+               { 0, 3, pfn(0, 2, 1), NULL, 3 * PAGE_SIZE, sgmax, 3 },
+               { 0, 3, pfn(0, 1, 3), NULL, 3 * PAGE_SIZE, sgmax, 2 },
+               { 0, 3, pfn(1, 2, 4), NULL, 3 * PAGE_SIZE, sgmax, 2 },
+               { 0, 3, pfn(1, 3, 4), NULL, 3 * PAGE_SIZE, sgmax, 2 },
+               { 0, 4, pfn(0, 1, 3, 4), NULL, 4 * PAGE_SIZE, sgmax, 2 },
+               { 0, 5, pfn(0, 1, 3, 4, 5), NULL, 5 * PAGE_SIZE, sgmax, 2 },
+               { 0, 5, pfn(0, 1, 3, 4, 6), NULL, 5 * PAGE_SIZE, sgmax, 3 },
+               { 0, 5, pfn(0, 1, 2, 3, 4), NULL, 5 * PAGE_SIZE, sgmax, 1 },
+               { 0, 5, pfn(0, 1, 2, 3, 4), NULL, 5 * PAGE_SIZE, 2 * PAGE_SIZE,
+                 3 },
+               { 0, 6, pfn(0, 1, 2, 3, 4, 5), NULL, 6 * PAGE_SIZE,
+                 2 * PAGE_SIZE, 3 },
+               { 0, 6, pfn(0, 2, 3, 4, 5, 6), NULL, 6 * PAGE_SIZE,
+                 2 * PAGE_SIZE, 4 },
+               { 0, 6, pfn(0, 1, 3, 4, 5, 6), pfn(7, 8, 9, 10, 11, 12),
+                 6 * PAGE_SIZE, 12 * PAGE_SIZE, 2 },
+               { 0, 0, NULL, NULL, 0, 0, 0 },
        };
        unsigned int i;