Please pull RDMA subsystem changes
Hi Linus,
Here are the RDMA patches for for 4.17.
This cycle we have some interesting conflicts, a syzkaller related bug fix in rc clashed very badly with the Mellanox shared pull request. Doug made the resolution in the RDMA tree for-next tree and DaveM refered to it when he pulled in the same patches. This turned out to create two commits to the same file which then also creates an unexpected conflict here. In retrospect perhaps we should have tried to push the conflict resolution as a shared patch as well.
So at this point we have conflicts between net-next, RDMA for-rc and RDMA for-next. As before I've resolved them in the top commit, but this couldn't be done against a nice tag. I choose to use your merge of net-next, which has all the necessary patches.
The for-linus-unmerged tag is the same PR without this resolution. In this case the conflicts are easy to resolve by hand. Just deleting the conflict markers is correct in every case execpt umca.c which requires this:
- 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);
++ 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);
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.
Thanks,
Jason
The following changes since commit 5bb053bef82523a8fd78d650bca81c9f114fa276:
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next (2018-04-03 14:04:18 -0700)
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 423009d1cbb77b67f6eba65efd116874e6b6b69d:
Merge net-next of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git (2018-04-05 20:57:10 -0600)
----------------------------------------------------------------
Merge candidates for 4.17 merge window
- 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
----------------------------------------------------------------
Andrew Morton (2):
drivers/infiniband/core/verbs.c: fix build with gcc-4.4.4 drivers/infiniband/ulp/srpt/ib_srpt.c: fix build with gcc-4.4.4
Andy Shevchenko (1):
RDMA/hns: Replace __raw_write*(cpu_to_le*()) with LE write*()
Ariel Levkovich (8):
IB/uverbs: Expose device memory capabilities to user IB/uverbs: Add device memory capabilities reporting IB/uverbs: Add alloc/free dm uverbs ioctl support IB/uverbs: Add device memory registration ioctl support net/mlx5: Query device memory capabilities IB/mlx5: Device memory support in mlx5_ib net/mlx5: Mkey creation command adjustments IB/mlx5: Device memory mr registration support
Arnd Bergmann (3):
infiniband: qplib_fp: fix pointer cast
infiniband: bnxt_re: use BIT_ULL() for 64-bit bit masks RDMA/i40iw: include linux/irq.h
Arushi (1):
infiniband: hw: Drop unnecessary continue
Aviad Yehezkel (3):
IB/mlx5: Add implementation for create and destroy action_xfrm {net,IB}/mlx5: Add ipsec helper
IB/mlx5: Add IPsec support for egress and ingress
Bart Van Assche (13):
IB/srp: Fix completion vector assignment algorithm
IB/srp: Fix srp_abort()
Revert "IB/srp: Avoid that a cable pull can trigger a kernel crash" IB/srp: Use %pIS instead of inet_ntop()
RDMA/core: Avoid that ib_drain_qp() triggers an out-of-bounds stack access RDMA/rxe: Fix an out-of-bounds read
IB/srpt: Fix an out-of-bounds stack access in srpt_zerolength_write() IB/hfi1: Add a missing rcu_read_unlock()
IB/srpt: Add RDMA/CM support
IB/hfi1: Fix a kernel-doc warning
RDMA/bnxt_re: Remove an unused variable
IB/srp: Fix IPv6 address parsing
IB/srp: Disallow duplicate RDMA/CM connections
Bharat Potnuri (1):
iw_cxgb4: print mapped ports correctly
Bodong Wang (2):
net/mlx5: Packet pacing enhancement IB/mlx5: Packet packing enhancement for RAW QP
Boris Pismenny (2):
IB/mlx4: Check for egress flow steering
IB/uverbs: Introduce egress flow steering
Colin Ian King (2):
infiniband: remove redundant assignment to pointer 'rdi'
qedr: Fix spelling mistake: "hanlde" -> "handle"
Corentin Labbe (1):
IB/cxgb3: remove cxio_dbg.c
Daniel Jurgens (1):
IB/mlx5: Only synchronize RCU once when removing mkeys
Doug Ledford (6):
Merge tag 'mlx5-updates-2018-02-21' of git://git.kernel.org/.../mellanox/linux into k.o/wip/dl-for-next
Merge branch 'k.o/for-rc' into k.o/wip/dl-for-next
Merge tag 'mlx5-updates-2018-02-23' of git://git.kernel.org/.../mellanox/linux into k.o/wip/dl-for-next
Merge tag 'mlx5-updates-2018-02-28-1' of git://git.kernel.org/.../mellanox/linux into k.o/wip/dl-for-next
Merge tag 'mlx5-updates-2018-02-28-2' of git://git.kernel.org/.../mellanox/linux into k.o/wip/dl-for-next
Merge branch 'k.o/wip/dl-for-rc' into k.o/wip/dl-for-nextGustavo A. R. Silva (2):
RDMA/bnxt_re/qplib_sp: Use true and false for boolean values IB/ocrdma_hw: Remove redundant checks and goto labels
Guy Levi (1):
IB/mlx4: Add Scatter FCS support over WQ creation
Henry Orosco (2):
i40iw: Refactor of driver generated AEs
i40iw: Tear-down connection after CQP Modify QP failure
Hernán Gonzalez (3):
IB/qib: Remove unused variable (char *qib_sdma_event_names[])
IB/qib: Move char *qib_sdma_state_names[] and constify while there.
IB/rxe: Remove unused variable (char *rxe_qp_state_name[])Honggang Li (2):
IB/core: Set speed string to SDR for invalid active rates IB/mlx5: Set the default active rate and width to QDR and 4X
Ilya Lesokhin (1):
IB/mlx5: Maintain a single emergency page
Jason Gunthorpe (23):
RDMA: Do not used __packed in uapi headers
rxe: Do not use 'struct sockaddr' in a uapi header IB/uverbs: Tidy uverbs_uobject_add
RDMA/rxe: Get rid of confusing udata parameter to rxe_cq_chk_attr RDMA/rxe: Use structs to describe the uABI instead of opencoding RDMA/mlx4: Move flag constants to uapi header RDMA/i40iw: Move uapi header to include/uapi
RDMA/hns: Use structs to describe the uABI instead of opencoding RDMA/cxgb4: Use structs to describe the uABI instead of opencoding RDMA/bnxt: Fix structure layout for bnxt_re_pd_resp RDMA/cxgb3: Use structs to describe the uABI instead of opencoding RDMA/ocrdma: Fix structure layout for ocrdma_alloc_pd
RDMA: Remove minor pahole differences between 32/64 RDMA/ucma: Fix uABI structure layouts for 32/64 compat RDMA/qedr: Fix uABI structure layouts for 32/64 compat RDMA/mlx4: Fix uABI structure layouts for 32/64 compat RDMA/rxe: Fix uABI structure layouts for 32/64 compat
RDMA: Change all uapi headers to use __aligned_u64 instead of __u64 Merge branch '32compat'
RDMA: Use u64_to_user_ptr everywhere
RDMA/mlx5: Fix definition of mlx5_ib_create_qp_resp RDMA/qedr: Zero stack memory before copying to user space Merge net-next of git://git.kernel.org/.../torvalds/linux-2.6.git
Kalderon, Michal (1):
RDMA/qedr: Fix wmb usage in qedr
Leon Romanovsky (28):
RDMA/uverbs: Convert command mask validity check function to be bool RDMA/uverbs: Update sizeof users
RDMA/uverbs: Refactor flags checks and update return value RDMA/uverbs: Fail as early as possible if not enough header data was provided RDMA/uverbs: Return not supported error code for unsupported commands RDMA/uverbs: Unify return values of not supported command RDMA/uverbs: Refactor command header processing
RDMA/uverbs: Properly check command supported mask
RDMA/uverbs: Move uncontext check before SRCU read lock RDMa/uverbs: Copy ex_hdr outside of SRCU read lock
RDMA/uverbs: Refactor the header validation logic
RDMA/uverbs: Replace user's types with kernel's types RDMA/uverbs: Reduce number of command header flags checks RDMA/verbs: Return proper error code for not supported system call
mailmap: Map Leon Romanovsky's emails
RDMA/mlx5: Refactor QP type check to be as early as possible RDMA/mlx5: Fix NULL dereference while accessing XRC_TGT QPs RDMA/uverbs: Ensure validity of current QP state value RDMA/pvrdma: Properly annotate QP states
RDMA/verbs: Simplify modify QP check
RDMA/mlx5: Protect from NULL pointer derefence
RDMA/mlx5: Return proper value for not-supported command RDMA/mlx5: Unify error flows in rereg MR failure paths RDMA/mlx5: Guard ODP specific assignments with specific CONFIG RDMA/mlx5: Simplify clean and destroy MR calls
RDMA/restrack: Don't rely on uninitialized variable in restrack_add flow RDMA/restrack: Remove ambiguity in resource track clean logic RDMA/nldev: Provide netdevice name and index
Majd Dibbiny (2):
IB/mlx5: Enable ECN capable bits for UD RoCE v2 QPs IB/mlx5: Respect new UMR capabilities
Mark Bloch (2):
IB/mlx5: Expose more priorities for bypass namespace IB/core: Protect against concurrent access to hardware stats
Markus Elfring (2):
IB/usnic: Delete an error message for a failed memory allocation in usnic_transport_init() RDMA/iwpm: Delete an error message for a failed memory allocation in iwpm_create_nlmsg()
Martin Wilck (1):
rdma_rxe: make rxe work over 802.1q VLAN devices
Matan Barak (19):
IB/uverbs: Move to new headers and make naming consistent IB/uverbs: Extend uverbs_ioctl header with driver_id IB/uverbs: Enable compact representation of uverbs_attr_spec IB/uverbs: Safely extend existing attributes
IB/uverbs: Expose parsing tree of all common objects to providers IB/uverbs: Move ioctl path of create_cq and destroy_cq to a new file IB/uverbs: Add macros to simplify adding driver specific attributes IB/uverbs: Enable ioctl() uAPI by default for new verbs IB/uverbs: UAPI pointers should use __aligned_u64 type IB/mlx5: Initialize the parsing tree root without the help of uverbs IB/uverbs: Add enum attribute type to ioctl() interface IB/uverbs: Refactor kern_spec_to_ib_spec_filter IB/uverbs: Add flow_action create and destroy verbs IB/uverbs: Add action_handle flow steering specification IB/uverbs: Add modify ESP flow_action
IB/uverbs: Introduce ESP steering match filter
IB/mlx5: Add modify_flow_action_esp verb
IB/mlx5: Add information for querying IPsec capabilities IB/mlx5: Add ability to hash by IPSEC_SPI when creating a TIR
Mikhail Malygin (1):
IB/rxe: Fix for oops in rxe_register_device on ppc64le arch
Mustafa Ismail (1):
i40iw: Refactor handling of txpend list
Parav Pandit (31):
IB/core: Fix comments of GID query functions
IB/{core, ipoib}: Simplify ib_find_gid() for unused ndev IB/core: Honor return status of ib_init_ah_from_mcmember() IB/core: Honor port_num while resolving GID for IB link layer IB/cma: Use rdma_protocol_roce() and remove cma_protocol_roce_dev_port() IB/core: Remove rdma_resolve_ip_route() as exported symbol IB/ocrdma: Removed GID add/del null routines
IB/cm: Add and use a helper function to add cm_id's to the port list IB/core: Refactor ib_init_ah_attr_from_path() for RoCE IB/cm: Introduce and use helper function to get cm_port from path IB/core: Move rdma_addr_find_l2_eth_by_grh to core_priv.h IB/core: Use rdma_is_port_valid()
IB/core: Remove unimplemented ib_peek_cq
IB/core: Refer to RoCE port property instead of GID table property IB/cma: Resolve route only while receiving CM requests IB/cm: Block processing alternate path handling RoCE Rx cm messages IB/core: Generate GID change event regardless of RoCE GID table property IB/core: Refer to RoCE port property instead of GID table property IB/core: Search GID only for IB link layer
IB/core: Refer to RoCE port property to decide building cache IB/addr: Constify dst_entry pointer
RDMA/cma: Move rdma_cm_state to cma_priv.h
IB/qedr: Remove GID add/del dummy routines
RDMA/core: Update query_gid documentation for HCA drivers RDMA/providers: Simplify query_gid callback of RoCE providers IB/core: Simplify ib_query_gid to always refer to cache IB/core: Refactor GID modify code for RoCE
IB/providers: Avoid zero GID check for RoCE
IB/providers: Avoid null netdev check for RoCE
RDMA: Use ib_gid_attr during GID modification
IB/rxe: Removed GID add/del dummy routines
Roland Dreier (1):
RDMA/ucma: Don't allow setting RDMA_OPTION_IB_PATH without an RDMA device
Sergey Gorenko (1):
IB/srp: Use the IB_DEVICE_SG_GAPS_REG HCA feature if supported
Shiraz Saleem (3):
i40iw: Improve CM node lookup time on connection setup
i40iw: Implement get_vector_affinity API
i40iw: Remove pre-production workaround for resource profile 1
Sinan Kaya (2):
RDMA/qedr: eliminate duplicate barriers on weakly-ordered archs IB/mlx4: Eliminate duplicate barriers on weakly-ordered archs
Steve Wise (13):
RDMA/restrack: clean up res_to_dev() RDMA/nldev: common resource dumpit function RDMA/CM: move rdma_id_private to cma_priv.h RDMA/nldev: provide detailed CM_ID information RDMA/nldev: provide detailed CQ information
iw_cxgb4: initialize ib_mr fields for user mrs
mlx4_ib: set user mr attributes in struct ib_mr RDMA/nldev: provide detailed MR information
mlx4_ib: zero out struct ib_pd when allocating RDMA/nldev: provide detailed PD information
iw_cxgb4: Add ib_device->get_netdev support RDMA/CMA: remove RDMA_PS_SDP
RDMA/CMA: Add rdma_port_space to UAPI
Tejun Heo (1):
RDMAVT: Fix synchronization around percpu_ref
Yishai Hadas (2):
IB/mlx4: Move mlx4_uverbs_ex_query_device_resp to include/uapi/ IB/mlx4: Report TSO capabilities
Yixian Liu (8):
RDMA/hns: Fix QP state judgement before receiving work requests RDMA/hns: Support rq record doorbell for the user space RDMA/hns: Support cq record doorbell for the user space RDMA/hns: Support rq record doorbell for kernel space RDMA/hns: Support cq record doorbell for kernel space RDMA/hns: Fix cqn type and init resp
RDMA/hns: Fix init resp when alloc ucontext RDMA/hns: Fix cq record doorbell enable in kernel
Yuval Shaia (1):
IB/ipoib: Delete unused struct
Zhu Yanjun (5):
IB/rxe: remove unnecessary skb_clone
IB/rxe: remove unnecessary rxe in rxe_send IB/rxe: change the function rxe_init_device_param type
IB: remove duplicate header files
IB/rxe: optimize mcast recv process
oulijun (2):
RDMA/hns: Fix a bug with modifying mac address RDMA/hns: Use free_pages function instead of free_page
.mailmap | 2 + MAINTAINERS | 1 + drivers/infiniband/Kconfig | 11 +- drivers/infiniband/core/Makefile | 4 +- drivers/infiniband/core/addr.c | 13 +- drivers/infiniband/core/cache.c | 533 ++++++++++--------- drivers/infiniband/core/cm.c | 67 ++- drivers/infiniband/core/cma.c | 160 +++--- drivers/infiniband/core/cma_priv.h | 97 ++++ drivers/infiniband/core/core_priv.h | 11 + drivers/infiniband/core/device.c | 18 +- drivers/infiniband/core/iwpm_util.c | 5 +- drivers/infiniband/core/multicast.c | 26 +- drivers/infiniband/core/nldev.c | 364 +++++++++++-- drivers/infiniband/core/rdma_core.c | 13 +- drivers/infiniband/core/restrack.c | 121 +++-- drivers/infiniband/core/sa_query.c | 202 ++++---- drivers/infiniband/core/sysfs.c | 53 +- drivers/infiniband/core/ucm.c | 18 +- drivers/infiniband/core/ucma.c | 40 +- drivers/infiniband/core/uverbs.h | 41 ++ drivers/infiniband/core/uverbs_cmd.c | 279 +++++++--- drivers/infiniband/core/uverbs_ioctl.c | 60 ++- drivers/infiniband/core/uverbs_ioctl_merge.c | 2 +- drivers/infiniband/core/uverbs_main.c | 218 ++++---- drivers/infiniband/core/uverbs_std_types.c | 326 ++++-------- drivers/infiniband/core/uverbs_std_types_cq.c | 210 ++++++++ drivers/infiniband/core/uverbs_std_types_dm.c | 108 ++++ .../infiniband/core/uverbs_std_types_flow_action.c | 435 ++++++++++++++++ drivers/infiniband/core/uverbs_std_types_mr.c | 147 ++++++ drivers/infiniband/core/verbs.c | 87 ++-- drivers/infiniband/hw/bnxt_re/ib_verbs.c | 20 +- drivers/infiniband/hw/bnxt_re/ib_verbs.h | 6 +- drivers/infiniband/hw/bnxt_re/main.c | 2 +- drivers/infiniband/hw/bnxt_re/qplib_sp.c | 2 +- drivers/infiniband/hw/cxgb3/Kconfig | 9 - drivers/infiniband/hw/cxgb3/Makefile | 2 - drivers/infiniband/hw/cxgb3/cxio_dbg.c | 206 -------- drivers/infiniband/hw/cxgb3/cxio_hal.h | 9 - drivers/infiniband/hw/cxgb3/iwch_cq.c | 6 - drivers/infiniband/hw/cxgb3/iwch_provider.c | 5 +- drivers/infiniband/hw/cxgb4/device.c | 24 +- drivers/infiniband/hw/cxgb4/mem.c | 3 + drivers/infiniband/hw/cxgb4/provider.c | 24 +- drivers/infiniband/hw/hfi1/driver.c | 1 + drivers/infiniband/hw/hfi1/hfi.h | 1 - drivers/infiniband/hw/hfi1/qp.c | 1 - drivers/infiniband/hw/hfi1/user_exp_rcv.c | 4 +- drivers/infiniband/hw/hfi1/verbs.c | 2 +- drivers/infiniband/hw/hns/Makefile | 2 +- drivers/infiniband/hw/hns/hns_roce_ah.c | 8 +- drivers/infiniband/hw/hns/hns_roce_cq.c | 54 +- drivers/infiniband/hw/hns/hns_roce_db.c | 180 +++++++ drivers/infiniband/hw/hns/hns_roce_device.h | 59 ++- drivers/infiniband/hw/hns/hns_roce_hw_v1.c | 8 +- drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 80 +-- drivers/infiniband/hw/hns/hns_roce_hw_v2.h | 3 + drivers/infiniband/hw/hns/hns_roce_main.c | 41 +- drivers/infiniband/hw/hns/hns_roce_mr.c | 2 +- drivers/infiniband/hw/hns/hns_roce_pd.c | 5 +- drivers/infiniband/hw/hns/hns_roce_qp.c | 70 ++- drivers/infiniband/hw/i40iw/i40iw.h | 11 +- drivers/infiniband/hw/i40iw/i40iw_cm.c | 129 +++-- drivers/infiniband/hw/i40iw/i40iw_cm.h | 5 +- drivers/infiniband/hw/i40iw/i40iw_ctrl.c | 56 +- drivers/infiniband/hw/i40iw/i40iw_d.h | 5 +- drivers/infiniband/hw/i40iw/i40iw_hw.c | 35 ++ drivers/infiniband/hw/i40iw/i40iw_main.c | 2 - drivers/infiniband/hw/i40iw/i40iw_puda.c | 8 +- drivers/infiniband/hw/i40iw/i40iw_type.h | 11 + drivers/infiniband/hw/i40iw/i40iw_utils.c | 10 +- drivers/infiniband/hw/i40iw/i40iw_verbs.c | 57 +- drivers/infiniband/hw/mlx4/ah.c | 10 +- drivers/infiniband/hw/mlx4/main.c | 102 ++-- drivers/infiniband/hw/mlx4/mlx4_ib.h | 19 +- drivers/infiniband/hw/mlx4/mr.c | 3 + drivers/infiniband/hw/mlx4/qp.c | 27 +- drivers/infiniband/hw/mlx5/ah.c | 12 + drivers/infiniband/hw/mlx5/cmd.c | 104 ++++ drivers/infiniband/hw/mlx5/cmd.h | 4 + drivers/infiniband/hw/mlx5/main.c | 572 +++++++++++++++++++-- drivers/infiniband/hw/mlx5/mlx5_ib.h | 71 ++- drivers/infiniband/hw/mlx5/mr.c | 257 ++++++--- drivers/infiniband/hw/mlx5/qp.c | 156 ++++-- drivers/infiniband/hw/mthca/mthca_provider.c | 1 + drivers/infiniband/hw/nes/nes_verbs.c | 1 + drivers/infiniband/hw/ocrdma/ocrdma_ah.c | 8 +- drivers/infiniband/hw/ocrdma/ocrdma_hw.c | 22 +- drivers/infiniband/hw/ocrdma/ocrdma_main.c | 4 +- drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 34 -- drivers/infiniband/hw/ocrdma/ocrdma_verbs.h | 12 - drivers/infiniband/hw/qedr/main.c | 9 +- drivers/infiniband/hw/qedr/qedr_roce_cm.c | 16 +- drivers/infiniband/hw/qedr/verbs.c | 155 ++---- drivers/infiniband/hw/qedr/verbs.h | 6 - drivers/infiniband/hw/qib/qib.h | 3 - drivers/infiniband/hw/qib/qib_diag.c | 2 +- drivers/infiniband/hw/qib/qib_file_ops.c | 8 +- drivers/infiniband/hw/qib/qib_iba7322.c | 10 + drivers/infiniband/hw/qib/qib_init.c | 4 +- drivers/infiniband/hw/qib/qib_sdma.c | 24 - drivers/infiniband/hw/qib/qib_verbs.c | 2 +- drivers/infiniband/hw/usnic/usnic_ib_main.c | 1 + drivers/infiniband/hw/usnic/usnic_transport.c | 4 +- drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c | 32 +- drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c | 2 +- drivers/infiniband/sw/rdmavt/vt.c | 5 +- drivers/infiniband/sw/rdmavt/vt.h | 1 - drivers/infiniband/sw/rxe/rxe.c | 4 +- drivers/infiniband/sw/rxe/rxe.h | 6 +- drivers/infiniband/sw/rxe/rxe_av.c | 5 +- drivers/infiniband/sw/rxe/rxe_cq.c | 15 +- drivers/infiniband/sw/rxe/rxe_loc.h | 20 +- drivers/infiniband/sw/rxe/rxe_net.c | 56 +- drivers/infiniband/sw/rxe/rxe_qp.c | 35 +- drivers/infiniband/sw/rxe/rxe_queue.c | 24 +- drivers/infiniband/sw/rxe/rxe_queue.h | 5 +- drivers/infiniband/sw/rxe/rxe_recv.c | 16 +- drivers/infiniband/sw/rxe/rxe_resp.c | 15 +- drivers/infiniband/sw/rxe/rxe_srq.c | 44 +- drivers/infiniband/sw/rxe/rxe_verbs.c | 101 ++-- drivers/infiniband/sw/rxe/rxe_verbs.h | 2 - drivers/infiniband/ulp/ipoib/ipoib.h | 5 - drivers/infiniband/ulp/ipoib/ipoib_ib.c | 2 +- drivers/infiniband/ulp/srp/ib_srp.c | 181 +++---- drivers/infiniband/ulp/srpt/ib_srpt.c | 396 +++++++++++--- drivers/infiniband/ulp/srpt/ib_srpt.h | 8 +- drivers/net/ethernet/mellanox/mlx4/fw.c | 1 + drivers/net/ethernet/mellanox/mlx4/main.c | 1 + .../net/ethernet/mellanox/mlx5/core/en_common.c | 2 +- drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 21 +- .../net/ethernet/mellanox/mlx5/core/fpga/conn.c | 2 +- drivers/net/ethernet/mellanox/mlx5/core/fw.c | 6 + drivers/net/ethernet/mellanox/mlx5/core/rl.c | 63 ++- include/linux/mlx4/device.h | 4 - include/linux/mlx5/device.h | 12 +- include/linux/mlx5/driver.h | 15 +- include/linux/mlx5/fs_helpers.h | 8 + include/linux/mlx5/mlx5_ifc.h | 102 +++- include/rdma/ib_addr.h | 9 - include/rdma/ib_cache.h | 29 -- include/rdma/ib_sa.h | 13 + include/rdma/ib_verbs.h | 212 ++++++-- include/rdma/rdma_cm.h | 44 +- include/rdma/rdma_vt.h | 2 +- include/rdma/restrack.h | 26 +- include/rdma/uverbs_ioctl.h | 153 +++++- include/rdma/uverbs_named_ioctl.h | 90 ++++ include/rdma/uverbs_std_types.h | 34 +- include/uapi/rdma/bnxt_re-abi.h | 21 +- include/uapi/rdma/cxgb3-abi.h | 17 +- include/uapi/rdma/cxgb4-abi.h | 29 +- include/uapi/rdma/hfi/hfi1_ioctl.h | 32 +- include/uapi/rdma/hfi/hfi1_user.h | 10 +- include/uapi/rdma/hns-abi.h | 22 +- .../uapi/rdma/i40iw-abi.h | 16 +- include/uapi/rdma/ib_user_cm.h | 48 +- include/uapi/rdma/ib_user_ioctl_cmds.h | 134 +++++ include/uapi/rdma/ib_user_ioctl_verbs.h | 96 ++-- include/uapi/rdma/ib_user_mad.h | 4 +- include/uapi/rdma/ib_user_verbs.h | 195 ++++--- include/uapi/rdma/mlx4-abi.h | 52 +- include/uapi/rdma/mlx5-abi.h | 72 ++- include/uapi/rdma/mlx5_user_ioctl_cmds.h | 48 ++ include/uapi/rdma/mlx5_user_ioctl_verbs.h | 43 ++ include/uapi/rdma/mthca-abi.h | 10 +- include/uapi/rdma/nes-abi.h | 6 +- include/uapi/rdma/ocrdma-abi.h | 36 +- include/uapi/rdma/qedr-abi.h | 20 +- include/uapi/rdma/rdma_netlink.h | 51 ++ include/uapi/rdma/rdma_user_cm.h | 49 +- include/uapi/rdma/rdma_user_ioctl.h | 38 +- include/uapi/rdma/rdma_user_ioctl_cmds.h | 99 ++++ include/uapi/rdma/rdma_user_rxe.h | 58 ++- include/uapi/rdma/vmw_pvrdma-abi.h | 49 +- 175 files changed, 6672 insertions(+), 2915 deletions(-) create mode 100644 drivers/infiniband/core/cma_priv.h create mode 100644 drivers/infiniband/core/uverbs_std_types_cq.c create mode 100644 drivers/infiniband/core/uverbs_std_types_dm.c create mode 100644 drivers/infiniband/core/uverbs_std_types_flow_action.c create mode 100644 drivers/infiniband/core/uverbs_std_types_mr.c delete mode 100644 drivers/infiniband/hw/cxgb3/cxio_dbg.c create mode 100644 drivers/infiniband/hw/hns/hns_roce_db.c create mode 100644 include/rdma/uverbs_named_ioctl.h rename drivers/infiniband/hw/i40iw/i40iw_ucontext.h => include/uapi/rdma/i40iw-abi.h (90%) create mode 100644 include/uapi/rdma/ib_user_ioctl_cmds.h create mode 100644 include/uapi/rdma/mlx5_user_ioctl_cmds.h create mode 100644 include/uapi/rdma/mlx5_user_ioctl_verbs.h create mode 100644 include/uapi/rdma/rdma_user_ioctl_cmds.h
Quoted 1 line · Jason Gunthorpe
RDMA: Change all uapi headers to use
__aligned_u64instead of__u64
Looks like this change changed the size of struct hfi1_ctxt_info and the value of HFI1_IOCTL_CTXT_INFO ioctl number as a result.
Quoted 1 line
IB/uverbs: Extend
uverbs_ioctlheader withdriver_id
This patch changed the value of the RDMA_VERBS_IOCTL ioctl number.
(see https://lists.strace.io/pipermail/strace-devel/2018-May/008196.html
for the reference)
Quoted 4 lines · Eugene Syromiatnikov
Quoted 1 line · Jason Gunthorpe
RDMA: Change all uapi headers to use
__aligned_u64instead of__u64Looks like this change changed the size of struct
hfi1_ctxt_infoand the value ofHFI1_IOCTL_CTXT_INFOioctl number as a result.
Only on 32 bit..
HF1 does not build on 32 bit kernels, so the 32 bit version of the ioctl is never supported.
HFI1 also does not define '.compat_ioctl' so even a 32 bit user space on 64 bit kernel cannot call this ioctl.
So, yes it changed, but it doesn't matter.
Quoted 5 lines
Quoted 1 line
IB/uverbs: Extend
uverbs_ioctlheader withdriver_idThis patch changed the value of the
RDMA_VERBS_IOCTLioctl number.(see https://lists.strace.io/pipermail/strace-devel/2018-May/008196.html
for the reference)
Yes.
RDMA_VERBS_IOCTL has been considered experimental and was protected by a CONFIG option.
After the above commit the experimental was dropped and the ABI was fixed, but prior to doing so, the struct was revised based on feedback.
There is no userspace user of the old struct, only the new struct.
Basically from strace's perspective it should use the new ioctl #'s across all kernel revs and it will be correct as there is no user space that will issue the old ioctls.
Jason
Quoted 31 lines · Jason Gunthorpe
Quoted 4 lines · Eugene Syromiatnikov
Quoted 1 line · Jason Gunthorpe
RDMA: Change all uapi headers to use
__aligned_u64instead of__u64Looks like this change changed the size of struct
hfi1_ctxt_infoand the value ofHFI1_IOCTL_CTXT_INFOioctl number as a result.Only on 32 bit..
HF1 does not build on 32 bit kernels, so the 32 bit version of the ioctl is never supported.
HFI1 also does not define '.compat_ioctl' so even a 32 bit user space on 64 bit kernel cannot call this ioctl.
So, yes it changed, but it doesn't matter.
Quoted 5 lines
Quoted 1 line
IB/uverbs: Extend
uverbs_ioctlheader withdriver_idThis patch changed the value of the
RDMA_VERBS_IOCTLioctl number.(see https://lists.strace.io/pipermail/strace-devel/2018-May/008196.html
for the reference)Yes.
RDMA_VERBS_IOCTLhas been considered experimental and was protected by a CONFIG option.After the above commit the experimental was dropped and the ABI was fixed, but prior to doing so, the struct was revised based on feedback.
Quoted 5 lines
There is no userspace user of the old struct, only the new struct.
Basically from strace's perspective it should use the new ioctl #'s across all kernel revs and it will be correct as there is no user space that will issue the old ioctls.
Got it, thanks for the clarification!