Please pull RDMA subsystem changes
Hi Linus,
The is the first pull request for the merge window. We are aware of another 20-30 patches that didn't make the cutoff and are various kinds of fixes and code quality improvements. Due to this we are anticipating a 2nd pull request next week.
This cycle had two conflicts between the RDMA tree and v4.15 due to netdev and RDMA patches that went into the -rc cycle. I checked with the Mellanox teams involved and they confirm they were co-ordinated about this and felt the -rc patches needed to go ahead. There were also two conflicts between RDMA -rc patches and RDMA -next patches that were resolved by applying for-next patches overtop of RDMA -rc and merging into RDMA -next.
Since the conflict with v4.15 involves some code motion and is not so trivial, so I have included a merge to tag v4.15 as the top commit in this PR that has the resolution reviewed by the patch authors and tested in linux-next. The tag 'for-linus-unmerged' is available without this merge if you desire.
Overall this cycle did not have any major excitement, and did not require any shared branch with netdev. Lots of driver updates, particularly of the scale-up and performance variety. The largest body of core work was Parav's patches fixing and restructing some of the core code to make way for future RDMA containerization.
There is one commit out of our tree:
lib/kobject.c | 2 +
That was Ack'd by GKH
Regards,
Jason
The following changes since commit d8a5b80568a9cb66810e75b182018e9edb68e8ff:
Linux 4.15 (2018-01-28 13:20:33 -0800)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git tags/for-linus
for you to fetch changes up to e7996a9a77fc669387da43ff4823b91cc4872bd0:
Merge tag v4.15 of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git (2018-01-30 09:30:00 -0700)
----------------------------------------------------------------
First merge window pull request for 4.16
- Misc small driver fixups to bnxt_re/hfi1/qib/hns/ocrdma/rdmavt/vmw_pvrdma/nes
- Several major feature adds to bnxt_re driver: SRIOV VF RoCE support, HugePages support, extended hardware stats support, and SRQ support
- A notable number of fixes to the i40iw driver from debugging scale up testing
- More work to enable the new hip08 chip in the hns driver
- Misc small ULP fixups to srp/srpt//ipoib
- Preparation for srp initiator and target to support the RDMA-CM protocol for connections
- Add RDMA-CM support to srp initiator, srp target is still a WIP
- Fixes for a couple of places where ipoib could spam the dmesg log
- Fix encode/decode of FDR/EDR data rates in the core
- Many patches from Parav with ongoing work to clean up inconsistencies and bugs in RoCE support around the rdma_cm
- mlx5 driver support for the userspace features 'thread domain', 'wallclock timestamps' and 'DV Direct Connected transport'. Support for the firmware dual port rocee capability
- Core support for more than 32 rdma devices in the char dev allocation
- kernel doc updates from Randy Dunlap
- New netlink uAPI for inspecting RDMA objects similar in spirit to 'ss'
- One minor change to the kobject code acked by GKH
----------------------------------------------------------------
Alex Estrin (1):
IB/ipoib: Fix for notify send CQ failure messages
Amrani, Ram (1):
MAINTAINERS: Remove Ram Amrani from Q-Logic RDMA driver
Andrew F. Davis (1):
IB/ocrdma: Remove unneeded conversions to bool
Andy Shevchenko (1):
IB/srp: replace custom implementation of hex2bin()
Anton Vasilyev (1):
RDMA/ocrdma: Fix permissions for OCRDMA_RESET_STATS
Arnd Bergmann (4):
i40iw: remove unused 'timeval' struct member
nes: remove unused 'timeval' struct member IB/mlx5: revisit -Wmaybe-uninitialized warning
infiniband: cxgb4: use ktime_get for timestamps
Artemy Kovalyov (1):
IB/umem: Fix use of npages/nmap fields
Arvind Yadav (1):
RDMA/bnxt_re: Remove redundant bnxt_qplib_disable_nq() call
Bart Van Assche (35):
IB/core: Fix two kernel warnings triggered by rxe registration IB/srpt: Remove an unused structure member
IB/srpt: Fix kernel-doc warnings in ib_srpt.c
IB/srpt: Document all structure members in ib_srpt.h IB/srpt: Rename a local variable, a member variable and a constant IB/srpt: Reduce the severity level of a log message IB/srpt: Verify port numbers in srpt_event_handler() IB/srpt: Use the IPv6 format for GIDs in log messages IB/srpt: Convert a warning into a debug message IB/srpt: Reduce frequency of receive failure messages IB/srpt: Introduce srpt_format_guid()
IB/srpt: Inline srpt_get_cmd_state()
IB/srpt: Micro-optimize I/O context state manipulation RDMA/rxe: Fix a race condition related to the QP error state RDMA/rxe: Fix a race condition in rxe_requester() RDMA/rxe: Fix rxe_qp_cleanup()
IB/srp: Use kstrtoull() instead of simple_strtoull() IB/srp: Improve path record query error message IB/srp: Refactor srp_send_req()
IB/srpt: Make it safe to use RCU for srpt_device.rch_list IB/srpt: Rework srpt_disconnect_ch_sync()
IB/srpt: Add P_Key support
IB/srpt: One target per port
IB/srpt: Use the source GID as session name
IB/srpt: Rework multi-channel support
IB/srpt: Simplify srpt_close_session()
IB/srpt: Log all zero-length writes and completions IB/srpt: Fix login-related race conditions
IB/srpt: Fix a race condition related to wait list processing IB/srpt: Don't allow reordering of commands on wait list IB/srpt: Preparations for adding RDMA/CM support IB/srpt: Move the code for parsing struct ib_cm_req_event_param
kobject: Export kobj_ns_grab_current() and kobj_ns_drop() IB/srp: Add RDMA/CM support
IB/srp: Add target_can_queue login parameter
Bharat Potnuri (2):
iser-target: avoid reinitializing rdma contexts for isert commands
iw_cxgb4: Change error/warn prints to pr_debug
Bodong Wang (1):
IB/core: Fix ib_wc structure size to remain in 64 bytes boundary
Bryan Tan (5):
RDMA/vmw_pvrdma: Add UAR SRQ macros in ABI header file RDMA/vmw_pvrdma: Clarify QP and CQ is_kernel logic RDMA/vmw_pvrdma: Use more specific sizeof in kcalloc RDMA/vmw_pvrdma: Use refcount_t instead of atomic_t RDMA/vmw_pvrdma: Remove usage of BIT() from UAPI header
Chien Tin Tung (1):
i40iw: Use sqsize to initialize cqp_requests elements
Colin Ian King (3):
IB/qib: remove redundant setting of any in for-loop
iw_cxgb4: make pointer reg_workq static IB/mlx5: remove redundant assignment of mdev
Corentin Labbe (2):
IB/mthca: remove mthca_user.h
IB/qib: remove qib_keys.c
Dan Carpenter (2):
RDMA/cxgb4: Add a sanity check in process_work() IB/mlx4: Potential buffer overflow in _mlx4_set_path()
Daniel Jurgens (14):
IB/cm: Add debug prints to ib_cm
net/mlx5: Fix race for multiple RoCE enable net/mlx5: Set software owner ID during init HCA IB/core: Change roce_rescan_device to return void IB/mlx5: Reduce the use of num_port capability IB/mlx5: Make netdev notifications multiport capable {net, IB}/mlx5: Manage port association for multiport RoCE IB/mlx5: Move IB event processing onto a workqueue IB/mlx5: Implement dual port functionality in query routines IB/mlx5: Update counter implementation for dual port RoCE {net, IB}/mlx5: Change set_roce_gid to take a port number IB/mlx5: Route MADs for dual port RoCE
IB/mlx5: Don't advertise RAW QP support in dual port mode net/mlx5: Set num_vhca_ports capability
Davidlohr Bueso (1):
IB/mthca: Fix gup usage in mthca_map_user_db()
Dennis Dalessandro (1):
rdma: Update maintainer contact for Intel RDMA drivers
Devesh Sharma (1):
RDMA/bnxt_re: Add SRQ support for Broadcom adapters
Don Hiatt (4):
IB/hfi1: Mask the path bits with the LMC for 16B RC Acks IB/CM: Change sgid to IB GID when handling CM request IB/core: Use rdma_cap_opa_mad to check for OPA IB/hfi1: Change slid arg in ingress_pkey_table_fail to 32bit
Doug Ledford (2):
Merge branch 'bart-srpt-for-next' into k.o/wip/dl-for-next
MAINTAINERS: Fix the location of the rdma git repo
Erez Alfasi (1):
IB/mlx4: Remove unused ibpd parameter
Erez Shitrit (2):
IB/ipoib: Avoid memory leak if the SA returns a different DGID IB/ipoib: Update pathrec field if not valid record
Feras Daoud (2):
net/mlx5e: Add clock info page to mlx5 core devices IB/mlx5: Mmap the HCA's clock info to user-space
Geert Uytterhoeven (2):
i40w: Remove garbage at end of INFINIBAND_I40IW Kconfig section RDMA/iwpm: Fix uninitialized error code in iwpm_send_mapinfo()
Gomonovych, Vasyl (1):
IB/core: Use PTR_ERR_OR_ZERO()
Guy Levi (1):
IB/mlx4: Add support to RSS hash for inner headers
Hans Westgaard Ry (1):
RDMA/core: Add encode/decode FDR/EDR rates
Henry Orosco (1):
i40iw: Change accelerated flag to bool
Himanshu Jha (5):
IB/ocrdma: Use zeroing memory allocator than allocator/memset RDMA/vmw_pvrdma: Use zeroing memory allocator than allocator/memset RDMA/qedr: Use zeroing memory allocator than allocator/memset RDMA/bnxt_re: Use zeroing memory allocator than allocator/memset IB/mthca: Use zeroing memory allocator than allocator/memset
Huy Nguyen (2):
IB/core: Remove the locking for character device bitmaps IB/core: Increase number of char device minors
Jack Morgenstein (2):
IB/mlx4: Fix incorrectly releasing steerable UD QPs when have only ETH ports IB/umad: Fix use of unprotected device pointer
Jan Sokolowski (1):
IB/hfi1: Use 4096 for default active MTU in query_qp
Jason Gunthorpe (8):
Merge branch 'from-rc' of git://git.kernel.org/.../rdma/rdma.git
RDMA: Mark imm_data as be32 in the verbs uapi header RDMA/hns: Fix endian problems around imm_data and rkey RDMA/qedr: Fix endian problems around imm_data RDMA/uverbs: Use an unambiguous errno for method not supported IB/rxe: Change RDMA_RXE kconfig to use select
RDMA: Move enum ib_cq_creation_flags to uapi headers Merge tag v4.15 of git://git.kernel.org/.../torvalds/linux-2.6.git
Jia-Ju Bai (1):
i40iw: Replace mdelay with msleep in i40iw_wait_pe_ready
Joe Perches (1):
IB/qib: Cleanup qib_set_part_key() with direct returns
Jonathan Toppins (1):
bnxt_re: report RoCE device support at info level
Kaike Wan (2):
IB/rdmavt: No need to cancel RNRNAK retry timer when it is running IB/rdmavt: Add trace for RNRNAK timer
Kalderon, Michal (1):
RDMA/qedr: lower print level of flushed CQEs
Leon Romanovsky (17):
RDMA/rxe: Remove useless EXPORT_SYMBOL
RDMA/netlink: Simplify code of autoload modules
RDMA/core: Replace open-coded variant of put_device RDMA/nldev: Refactor setting the nldev handle to a common function RDMA/cma: Mark end of CMA ID messages
RDMA/mlx5: Remove redundant allocation warning print RDMA/srpt: Fix RCU debug build error
RDMA/mlx5: Avoid memory leak in case of XRCD dealloc failure RDMA/cm: Fix access to uninitialized variable
RDMA/core: Use the MODNAME instead of the function name for pd callers RDMA/core: Save kernel caller name when creating PD and CQ objects RDMA/restrack: Add general infrastructure to track RDMA resources RDMA/core: Add resource tracking for create and destroy QPs RDMA/core: Add resource tracking for create and destroy CQs RDMA/core: Add resource tracking for create and destroy PDs RDMA/nldev: Provide global resource utilization RDMA/nldev: Provide detailed QP information
Majd Dibbiny (1):
IB/core: Make sure that PSN does not overflow
Maor Gottlieb (1):
IB/mlx5: Report inner RSS capability
Mark Bloch (6):
IB/mlx5: Create profile infrastructure to add and remove stages IB/mlx5: Move RoCE/ETH initialization to the corresponding stage IB/mlx5: Move ODP initialization to the corresponding stage IB/mlx5: Move hardware counters initialization to the corresponding stage IB/mlx5: Move loopback initialization to the corresponding stage IB/mlx5: Move locks initialization to the corresponding stage
Markus Elfring (3):
IB/iser: Delete an error message for a failed memory allocation in iser_send_data_out() IB/iser: Delete an unnecessary variable initialisation in iser_send_data_out() IB/iser: Combine substrings for three messages
Matan Barak (1):
IB/core: Fix memory leak in cm_req_handler error flows
Max Gurtovoy (1):
IB/core: postpone WR initialization during queue drain
Michael J. Ruhl (4):
IB/hfi1: Add RQ/SRQ information to QP stats
IB/{rdmavt, hfi1, qib}: Self determine driver name IB/{rdmavt, hfi1, qib}: Remove get_card_name() downcall IB/{hfi1, qib}: Fix a concurrency issue with device name in logging
Mike Marciniszyn (3):
IB/qib: Fix comparison error with qperf compare/swap test IB/rdmavt: Use correct numa node for SRQ allocation IB/rdmavt: Allocate CQ memory on the correct node
Moni Shoua (6):
net/mlx5: Add DCT command interface net/mlx5: Enable DC transport
IB/core: Introduce driver QP type
IB/mlx5: Handle type IB_QPT_DRIVER when creating a QP IB/mlx5: Add support for DC Initiator QP IB/mlx5: Add support for DC target QP
Mustafa Ismail (3):
i40iw: Reinitialize add_sd_cnt
i40iw: Remove setting of rem_addr.len
i40iw: Free IEQ resources
Parav Pandit (44):
IB/{core/cm}: Fix generating a return AH for RoCEE
IB/core: Depend on IPv6 stack to resolve link local address for RoCEv2 IB/core: Avoid exporting module internal function
RDMA/cma: Use correct size when writing netlink stats
RDMA/cma: Set default GID type as RoCE when resolving RoCE route RDMA/cma: Simplify netdev check
RDMA/cma: Avoid setting path record type twice
RDMA/cma: Introduce and use helper functions to init work
IB/core: Avoid unnecessary type cast
IB/core: Refactor to avoid unnecessary check on GID lookup miss IB/rxe: Avoid passing unused index pointer which is optional
IB/core: Avoid exporting module internal ib_find_gid_by_filter() RDMA/core: Avoid redundant memcpy in rdma_addr_find_l2_eth_by_grh IB/core: Removed unused function
RDMA/{core, cma}: Simplify rdma_translate_ip
RDMA/core: Avoid copying ifindex twice
IB/{core, ipoib}: Simplify ib_find_gid to search only for IB link layer IB/{cm, umad}: Handle av init error
IB/cm: Handle address handle attribute init error
IB/cm: Fix sleeping while spin lock is held
IB/{core, cm, cma, ipoib}: Rename ib_init_ah_from_path to ib_init_ah_attr_from_path IB/{core, umad, cm}: Rename ib_init_ah_from_wc to ib_init_ah_attr_from_wc IB/cm: Refactor to avoid setting path record software only fields IB/mlx5: Change debugfs to have per port contents
RDMA/cma: Use the right net namespace for the rdma_cm_id
RDMA/cma: Provide a function to set RoCE path record L2 parameters RDMA/{cma, ucma}: Simplify and rename rdma_set_ib_paths
RDMA/cma: Fix rdma_cm raw IB path setting for RoCE
RDMA/cma: Fix rdma_cm path querying for RoCE
IB/core: Perform modify QP on real one
IB/core: Limit DMAC resolution to userspace QPs
IB/core: Attempt DMAC resolution for only RoCE
IB/core: Limit DMAC resolution to RoCE Connected QPs
RDMA/core: Clarify rdma_ah_find_type
RDMA/cma: Introduce API to read GIDs for multiple transports RDMA/ucma: Use rdma cm API to query GID
net/rds: Use rdma_read_gids to read connection GIDs
RDMA/core: Simplify rdma_addr_get_sgid() to not support RoCE RDMA/cma: Check existence of netdevice during port validation RDMA/cma: Refactor to access multiple fields of rdma_dev_addr RDMA/cma: Update cma_validate_port to honor net namespace
RDMA/cma: Update RoCE multicast routines to use net namespace IB/core: Avoid SGID attributes query while converting GID from OPA to IB RDMA/cma: Use existing netif_is_bond_master function
Pravin Shedge (1):
drivers: infiniband: remove duplicate includes
Randy Dunlap (5):
infiniband: drop unknown function from core_priv.h
infiniband: fix core/verbs.c kernel-doc notation
infiniband: fix core/fmr_pool.c kernel-doc notation
infiniband: fix ulp/opa_vnic/opa_vnic_vema.c kernel-doc notation
infiniband: fix sw/rdmavt/* kernel-doc notation
Sagi Grimberg (1):
IB/cq: Don't force IB_POLL_DIRECT poll context for ib_process_cq_direct
Sebastian Sanchez (1):
IB/hfi1: Fix infinite loop in 8051 command error path
Selvin Xavier (3):
RDMA/bnxt_re: Enable RoCE on virtual functions RDMA/bnxt_re: Add support for query firmware version RDMA/bnxt_re: expose detailed stats retrieved from HW
Shiraz Saleem (10):
nes: Change accelerated flag to bool
i40iw: Set MAX_IRD_SIZE to 64
i40iw: Use utility function roundup_pow_of_two()
i40iw: Correct Q1/XF object count equation
i40iw: Add notifier for network device events
i40iw: Selectively teardown QPs on IP addr change event
i40iw: Fix sequence number for the first partial FPDU
i40iw: Ignore LLP_DOUBT_REACHABILITY AE
i40iw: Remove extra call to i40iw_est_sd()
i40iw: Zero-out consumer key on allocate stag for FMR
Sindhu Devale (1):
i40iw: Remove limit on re-posting AEQ entries to HW
Somnath Kotur (1):
RDMA/bnxt_re: Add support for MRs with Huge pages
Tatyana Nikolova (2):
i40iw: Validate correct IRD/ORD connection parameters
i40iw: Fix the connection ORD value for loopback
Venkata Sandeep Dhanalakota (1):
IB/SA: Check dlid before SA agent queries for ClassPortInfo
Xiongfeng Wang (1):
IB/cma: use strlcpy() instead of strncpy()
Yishai Hadas (3):
IB/mlx5: Extend UAR stuff to support dynamic allocation IB/mlx5: Expose dynamic mmap allocation IB/mlx5: Enable QP creation with a given blue flame index
Yixian Liu (4):
RDMA/hns: Refactor eq code for hip06
RDMA/hns: Add eq support of hip08
RDMA/hns: Add detailed comments for mb() call RDMA/hns: Fix QP state judgement before sending work requests
Yuval Shaia (3):
RDMA/vmw_pvrdma: Do not re-calculate npages IB/ipoib: Replace printk with pr_warn IB/ipoib: Warn when one port fails to initialize
Zhu Yanjun (2):
IB/rxe: add the static type to the variable IB/rxe: remove unnecessary skb_clone in xmit
oulijun (12):
RDMA/hns: Add rq inline data support for hip08 RoCE RDMA/hns: Update the usage of sr_max and rr_max field RDMA/hns: Set access flags of hip08 RoCE RDMA/hns: Filter for zero length of sge in hip08 kernel mode RDMA/hns: Assign dest_qp when deregistering mr RDMA/hns: Assign the correct value for tx_cqn RDMA/hns: Create gsi qp in hip08
RDMA/hns: Add gsi qp support for modifying qp in hip08 RDMA/hns: Fill sq wqe context of ud type in hip08 RDMA/hns: Assign zero for pkey_index of wc in hip08 RDMA/hns: Update the verbs of polling for completion RDMA/hns: Set the guid for hip08 RoCE device
weiyongjun (A) (1):
RDMA/hns: Remove unnecessary platform_get_resource() error check
MAINTAINERS | 7 +- drivers/infiniband/core/Makefile | 2 +- drivers/infiniband/core/addr.c | 65 +- drivers/infiniband/core/cache.c | 23 +- drivers/infiniband/core/cm.c | 227 ++- drivers/infiniband/core/cma.c | 252 ++- drivers/infiniband/core/cma_configfs.c | 2 +- drivers/infiniband/core/core_priv.h | 52 +- drivers/infiniband/core/cq.c | 39 +- drivers/infiniband/core/device.c | 42 +- drivers/infiniband/core/fmr_pool.c | 12 +- drivers/infiniband/core/iwpm_util.c | 1 + drivers/infiniband/core/mad.c | 1 - drivers/infiniband/core/netlink.c | 10 +- drivers/infiniband/core/nldev.c | 394 ++++- drivers/infiniband/core/restrack.c | 164 ++ drivers/infiniband/core/roce_gid_mgmt.c | 13 +- drivers/infiniband/core/sa_query.c | 18 +- drivers/infiniband/core/security.c | 10 +- drivers/infiniband/core/sysfs.c | 1 - drivers/infiniband/core/ucm.c | 73 +- drivers/infiniband/core/ucma.c | 19 +- drivers/infiniband/core/umem.c | 2 +- drivers/infiniband/core/user_mad.c | 123 +- drivers/infiniband/core/uverbs_cmd.c | 14 +- drivers/infiniband/core/uverbs_ioctl.c | 19 +- drivers/infiniband/core/uverbs_main.c | 95 +- drivers/infiniband/core/uverbs_std_types.c | 3 + drivers/infiniband/core/verbs.c | 312 ++-- drivers/infiniband/hw/bnxt_re/bnxt_re.h | 43 +- drivers/infiniband/hw/bnxt_re/hw_counters.c | 145 +- drivers/infiniband/hw/bnxt_re/hw_counters.h | 39 + drivers/infiniband/hw/bnxt_re/ib_verbs.c | 404 ++++- drivers/infiniband/hw/bnxt_re/ib_verbs.h | 20 + drivers/infiniband/hw/bnxt_re/main.c | 251 ++- drivers/infiniband/hw/bnxt_re/qplib_fp.c | 463 ++++- drivers/infiniband/hw/bnxt_re/qplib_fp.h | 78 +- drivers/infiniband/hw/bnxt_re/qplib_rcfw.c | 5 +- drivers/infiniband/hw/bnxt_re/qplib_rcfw.h | 7 +- drivers/infiniband/hw/bnxt_re/qplib_res.c | 9 +- drivers/infiniband/hw/bnxt_re/qplib_sp.c | 141 +- drivers/infiniband/hw/bnxt_re/qplib_sp.h | 91 +- drivers/infiniband/hw/bnxt_re/roce_hsi.h | 127 +- drivers/infiniband/hw/cxgb4/cm.c | 27 +- drivers/infiniband/hw/cxgb4/device.c | 36 +- drivers/infiniband/hw/cxgb4/ev.c | 2 +- drivers/infiniband/hw/cxgb4/iw_cxgb4.h | 4 +- drivers/infiniband/hw/cxgb4/qp.c | 6 +- drivers/infiniband/hw/cxgb4/t4.h | 4 +- drivers/infiniband/hw/hfi1/chip.c | 87 +- drivers/infiniband/hw/hfi1/chip.h | 2 +- drivers/infiniband/hw/hfi1/driver.c | 16 - drivers/infiniband/hw/hfi1/firmware.c | 64 +- drivers/infiniband/hw/hfi1/hfi.h | 25 +- drivers/infiniband/hw/hfi1/init.c | 2 + drivers/infiniband/hw/hfi1/mad.c | 6 +- drivers/infiniband/hw/hfi1/qp.c | 10 +- drivers/infiniband/hw/hfi1/rc.c | 8 +- drivers/infiniband/hw/hfi1/verbs.c | 6 +- drivers/infiniband/hw/hns/Makefile | 2 +- drivers/infiniband/hw/hns/hns_roce_cmd.c | 1 + drivers/infiniband/hw/hns/hns_roce_cmd.h | 10 + drivers/infiniband/hw/hns/hns_roce_common.h | 11 + drivers/infiniband/hw/hns/hns_roce_cq.c | 19 +- drivers/infiniband/hw/hns/hns_roce_device.h | 103 +- drivers/infiniband/hw/hns/hns_roce_eq.c | 759 -------- drivers/infiniband/hw/hns/hns_roce_eq.h | 134 -- drivers/infiniband/hw/hns/hns_roce_hw_v1.c | 758 +++++++- drivers/infiniband/hw/hns/hns_roce_hw_v1.h | 44 +- drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 1837 ++++++++++++++++++-- drivers/infiniband/hw/hns/hns_roce_hw_v2.h | 283 ++- drivers/infiniband/hw/hns/hns_roce_main.c | 16 +- drivers/infiniband/hw/hns/hns_roce_qp.c | 72 +- drivers/infiniband/hw/i40iw/Kconfig | 1 - drivers/infiniband/hw/i40iw/i40iw.h | 3 + drivers/infiniband/hw/i40iw/i40iw_cm.c | 68 +- drivers/infiniband/hw/i40iw/i40iw_cm.h | 8 +- drivers/infiniband/hw/i40iw/i40iw_ctrl.c | 25 +- drivers/infiniband/hw/i40iw/i40iw_d.h | 1 + drivers/infiniband/hw/i40iw/i40iw_hw.c | 3 +- drivers/infiniband/hw/i40iw/i40iw_main.c | 13 +- drivers/infiniband/hw/i40iw/i40iw_puda.c | 5 +- drivers/infiniband/hw/i40iw/i40iw_puda.h | 1 + drivers/infiniband/hw/i40iw/i40iw_uk.c | 18 +- drivers/infiniband/hw/i40iw/i40iw_user.h | 3 +- drivers/infiniband/hw/i40iw/i40iw_utils.c | 50 +- drivers/infiniband/hw/i40iw/i40iw_verbs.c | 5 +- drivers/infiniband/hw/mlx4/cq.c | 4 +- drivers/infiniband/hw/mlx4/main.c | 19 +- drivers/infiniband/hw/mlx4/qp.c | 20 +- drivers/infiniband/hw/mlx5/cong.c | 83 +- drivers/infiniband/hw/mlx5/cq.c | 2 +- drivers/infiniband/hw/mlx5/mad.c | 23 +- drivers/infiniband/hw/mlx5/main.c | 1411 +++++++++++---- drivers/infiniband/hw/mlx5/mlx5_ib.h | 111 +- drivers/infiniband/hw/mlx5/mr.c | 3 + drivers/infiniband/hw/mlx5/odp.c | 9 - drivers/infiniband/hw/mlx5/qp.c | 432 ++++- drivers/infiniband/hw/mthca/mthca_memfree.c | 7 +- drivers/infiniband/hw/mthca/mthca_user.h | 112 -- drivers/infiniband/hw/nes/nes_cm.c | 2 +- drivers/infiniband/hw/nes/nes_cm.h | 3 +- drivers/infiniband/hw/ocrdma/ocrdma_hw.c | 19 +- drivers/infiniband/hw/ocrdma/ocrdma_stats.c | 8 +- drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 10 +- drivers/infiniband/hw/qedr/verbs.c | 15 +- drivers/infiniband/hw/qib/qib.h | 8 +- drivers/infiniband/hw/qib/qib_driver.c | 16 - drivers/infiniband/hw/qib/qib_eeprom.c | 3 +- drivers/infiniband/hw/qib/qib_file_ops.c | 68 +- drivers/infiniband/hw/qib/qib_init.c | 2 + drivers/infiniband/hw/qib/qib_keys.c | 235 --- drivers/infiniband/hw/qib/qib_rc.c | 6 +- drivers/infiniband/hw/qib/qib_verbs.c | 2 - drivers/infiniband/hw/usnic/usnic_ib_sysfs.c | 1 - drivers/infiniband/hw/usnic/usnic_ib_verbs.c | 1 - drivers/infiniband/hw/vmw_pvrdma/pvrdma.h | 4 +- drivers/infiniband/hw/vmw_pvrdma/pvrdma_cq.c | 13 +- drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c | 21 +- drivers/infiniband/hw/vmw_pvrdma/pvrdma_mr.c | 15 +- drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c | 11 +- drivers/infiniband/sw/rdmavt/cq.c | 15 +- drivers/infiniband/sw/rdmavt/mcast.c | 4 +- drivers/infiniband/sw/rdmavt/mr.c | 2 +- drivers/infiniband/sw/rdmavt/qp.c | 27 +- drivers/infiniband/sw/rdmavt/srq.c | 16 +- drivers/infiniband/sw/rdmavt/trace.h | 4 +- drivers/infiniband/sw/rdmavt/trace_qp.h | 42 + drivers/infiniband/sw/rdmavt/vt.c | 10 +- drivers/infiniband/sw/rdmavt/vt.h | 6 +- drivers/infiniband/sw/rxe/Kconfig | 4 +- drivers/infiniband/sw/rxe/rxe.c | 6 - drivers/infiniband/sw/rxe/rxe.h | 6 +- drivers/infiniband/sw/rxe/rxe_loc.h | 1 - drivers/infiniband/sw/rxe/rxe_net.c | 18 +- drivers/infiniband/sw/rxe/rxe_net.h | 1 - drivers/infiniband/sw/rxe/rxe_qp.c | 12 +- drivers/infiniband/sw/rxe/rxe_recv.c | 3 +- drivers/infiniband/sw/rxe/rxe_req.c | 9 +- drivers/infiniband/sw/rxe/rxe_resp.c | 5 +- drivers/infiniband/sw/rxe/rxe_verbs.c | 2 + drivers/infiniband/sw/rxe/rxe_verbs.h | 3 + drivers/infiniband/ulp/ipoib/ipoib_cm.c | 18 +- drivers/infiniband/ulp/ipoib/ipoib_ib.c | 5 +- drivers/infiniband/ulp/ipoib/ipoib_main.c | 98 +- drivers/infiniband/ulp/ipoib/ipoib_verbs.c | 6 +- drivers/infiniband/ulp/iser/iser_initiator.c | 16 +- drivers/infiniband/ulp/isert/ib_isert.c | 7 + drivers/infiniband/ulp/isert/ib_isert.h | 1 + drivers/infiniband/ulp/opa_vnic/opa_vnic_vema.c | 2 +- drivers/infiniband/ulp/srp/ib_srp.c | 795 +++++++-- drivers/infiniband/ulp/srp/ib_srp.h | 43 +- drivers/infiniband/ulp/srpt/ib_srpt.c | 962 ++++++---- drivers/infiniband/ulp/srpt/ib_srpt.h | 100 +- drivers/net/ethernet/mellanox/mlx4/qp.c | 3 + drivers/net/ethernet/mellanox/mlx5/core/eq.c | 9 +- .../net/ethernet/mellanox/mlx5/core/fpga/conn.c | 11 +- drivers/net/ethernet/mellanox/mlx5/core/fw.c | 10 +- .../net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c | 2 +- .../net/ethernet/mellanox/mlx5/core/lib/clock.c | 55 + drivers/net/ethernet/mellanox/mlx5/core/lib/gid.c | 5 +- drivers/net/ethernet/mellanox/mlx5/core/main.c | 15 +- .../net/ethernet/mellanox/mlx5/core/mlx5_core.h | 2 +- drivers/net/ethernet/mellanox/mlx5/core/qp.c | 125 +- drivers/net/ethernet/mellanox/mlx5/core/vport.c | 91 +- include/linux/mlx5/device.h | 16 + include/linux/mlx5/driver.h | 43 +- include/linux/mlx5/mlx5_ifc.h | 32 +- include/linux/mlx5/qp.h | 12 + include/linux/mlx5/vport.h | 4 + include/rdma/ib_addr.h | 38 +- include/rdma/ib_sa.h | 10 +- include/rdma/ib_verbs.h | 64 +- include/rdma/opa_addr.h | 16 + include/rdma/rdma_cm.h | 19 + include/rdma/rdma_cm_ib.h | 8 +- include/rdma/rdma_vt.h | 31 +- include/rdma/restrack.h | 157 ++ include/scsi/srp.h | 17 + include/uapi/rdma/bnxt_re-abi.h | 9 + include/uapi/rdma/ib_user_verbs.h | 11 +- include/uapi/rdma/mlx4-abi.h | 7 +- include/uapi/rdma/mlx5-abi.h | 53 +- include/uapi/rdma/rdma_netlink.h | 49 + include/uapi/rdma/vmw_pvrdma-abi.h | 12 +- lib/kobject.c | 2 + net/rds/ib.c | 6 +- 187 files changed, 10240 insertions(+), 4028 deletions(-) create mode 100644 drivers/infiniband/core/restrack.c delete mode 100644 drivers/infiniband/hw/hns/hns_roce_eq.c delete mode 100644 drivers/infiniband/hw/hns/hns_roce_eq.h delete mode 100644 drivers/infiniband/hw/mthca/mthca_user.h delete mode 100644 drivers/infiniband/hw/qib/qib_keys.c create mode 100644 include/rdma/restrack.h
A message that is not in the archive (sent off-list or not yet received): 20180131174735.GA18568-uk2M96/[email protected]
Quoted 6 lines · Jason Gunthorpe
Since the conflict with v4.15 involves some code motion and is not so trivial, so I have included a merge to tag v4.15 as the top commit in this PR that has the resolution reviewed by the patch authors and tested in linux-next. The tag 'for-linus-unmerged' is available without this merge if you desire.
Thanks, this was well done. A thoughtful merge with explanation for why the conflict happened and why back-merge was done, and taking a sane merge point (v4.15 rather than some random daily point).
Maybe the back-merge commit itself could have had a slightly more complete merge message (the kind you had in the pull request here), but that's a small nit.
So I thought I'd send out a "good job" email just as a contrast to me having to sometimes complain about back-merges.
Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): CA+55aFxmnW-iu1Na3QC8Ci8Q_Qdfn2Ak_9wDB6+A564R=Xn9Ag-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org
Quoted 11 lines · Linus Torvalds
Quoted 6 lines · Jason Gunthorpe
Since the conflict with v4.15 involves some code motion and is not so trivial, so I have included a merge to tag v4.15 as the top commit in this PR that has the resolution reviewed by the patch authors and tested in linux-next. The tag 'for-linus-unmerged' is available without this merge if you desire.
Thanks, this was well done. A thoughtful merge with explanation for why the conflict happened and why back-merge was done, and taking a sane merge point (v4.15 rather than some random daily point).
Thanks Linus, it is good to know I've understood your past remarks properly!
On the topic of back merges, can you give some guidance?
With some success, we've encouraged all the driver vendors to test -rc kernels and test our RDMA for-next internally during the entire -rc cycle. Most of the testers are taking RDMA for-next and merging it with latest -rcX then testing the result.
Due to the conflict above our tree was left with complicated merge conflicts for about 3-4 weeks, and some of the testers have had pain due to this.
Would back merging -rcX ealier, with a similar but better merge commit, be an acceptable practice?
I'm unsure since we'd be doing this to support testers/users and not as a development requirement.
In this case we'd send you a PR with the back merge for conflict resolution well down the commit list.
Thanks,
Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): 20180131210457.GE23352-VPRAkNaXOzVWk0Htik3J/[email protected]
Quoted 8 lines · Jason Gunthorpe
On the topic of back merges, can you give some guidance?
With some success, we've encouraged all the driver vendors to test -rc kernels and test our RDMA for-next internally during the entire -rc cycle. Most of the testers are taking RDMA for-next and merging it with latest -rcX then testing the result.
Quoted 6 lines
Due to the conflict above our tree was left with complicated merge conflicts for about 3-4 weeks, and some of the testers have had pain due to this.
Would back merging -rcX ealier, with a similar but better merge commit, be an acceptable practice?
I'd hesitate to say "sure" in general.
For pure testing of temporary kernels that aren't actually in any way upstream anyway, is there any reason why you can't just have a separate kernel with the merges in place, but not make them part of your development tree? Think of how "linux-next" works on a big scale:
there's tons of random merges there exactly so that people can test the end result, but those merges are understood to be temporary and not part of the development trees themselves.
So back-merges are not necessarily evil, and they _can_ be done well. But I don't actually see your case as being a reason for them in general.
Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): CA+55aFxySLoCHcmZgx2PiF6jEazVOSy=2idccRsWqOzmyK2gaw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org
Quoted 4 lines · Linus Torvalds
For pure testing of temporary kernels that aren't actually in any way upstream anyway, is there any reason why you can't just have a separate kernel with the merges in place, but not make them part of your development tree?
Okay, thanks, I appreciate the clarity here.
We can work something like this into our process, a temporary throw away branch is certainly easy enough to create.
Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html