Skip to contentSkip to conversation

Please pull rdma.git

GIT PULL Doug Ledford 2 participants 6 messages Mar 22, 2016 – Mar 28, 2016 5 messages not in the archive InfiniBand

lore
Share & tools
lore
#0 lore raw

Hi Linus,

This is a monster pull request. I held off on the hfi1 driver updates (the hfi1 driver is intimately tied to the qib driver and the new rdmavt software library that was created to help both of them) in my first pull request. The hfi1/qib/rdmavt update is probably 90% of this pull request. The hfi1 driver is being left in staging so that it can be fixed up in regards to the API that Al and yourself didn't like. Intel has agreed to do the work, but in the meantime, this clears out 300+ patches in the backlog queue and brings my tree and their tree closer to sync. There were some conflicts in the linux-next merge process for these patches, but they were all minor and basically the result of some patches coming in via GKH and some from me. It seems that no matter how well we update the docs on the driver in staging to indicate that patches should go to linux-rdma@, some still go to the typical staging mailing list and invariably a few get picked up by GKH. As soon as we get the driver out of staging that issue will go away of course.

This also includes about 10 patches to the core and a few to mlx5 to create an infrastructure for configuring SRIOV ports on IB devices. That series includes one patch to the net core that we sent to netdev@ and Dave Miller with each of the three revisions to the series. We didn't get any response to the patch, so we took that as implicit approval.

Finally, this series includes Intel's new iWARP driver for their x722 cards. It's not nearly the beast as the hfi1 driver. It also has a linux-next merge issue, but that has been resolved and it now passes just fine.

I've not ever put in a pull request this large. Let me know if you need me to do things differently.

BTW, if you look at the topic branches that created this set, I should note that there is one lone patch applied directly to the for-4.6 branch before I merged the three topic branches. Trying to avoid any surprises in diffstat outputs or such like we had with the last pull request.

Here's the git request pull boilerplate:

The following changes since commit 082eaa50838c6b70a8244f8b01d7ed7d686f84db:

Merge branches 'nes', 'cxgb4' and 'iwpm' into k.o/for-4.6 (2016-03-16
13:57:43 -0400)

are available in the git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma.git
tags/for-linus

for you to fetch changes up to 520a07bff6fbb23cac905007d74c67058b189acb:

Merge branches 'i40iw', 'sriov' and 'hfi1' into k.o/for-4.6
(2016-03-21 17:32:23 -0400)

----------------------------------------------------------------
Round two of 4.6 merge window patches

- A few minor core fixups needed for the next patch series
- The IB SRIOV series. This has bounced around for several versions. Of note is the fact that the first patch in this series effects the net core. It was directed to netdev and DaveM for each iteration of the series (three versions total). Dave did not object, but did not respond either. I've taken this as permission to move forward with the series.
- The new Intel X722 iWARP driver
- A huge set of updates to the Intel hfi1 driver. Of particular interest here is that we have left the driver in staging since it still has an API that people object to. Intel is working on a fix, but getting these patches in now helps keep me sane as the upstream and Intel's trees were over 300 patches apart.

----------------------------------------------------------------
Alex Estrin (1):
IB/rdmavt: Post receive for QP in ERR state

Anjali Singhai Jain (1):
i40e: Add support for client interface for IWARP driver

Ashutosh Dixit (1):
staging/rdma/hfi1: Add support for enabling/disabling PCIe ASPM

Bryan Morgan (1):
staging/rdma/hfi1: HFI reports wrong offline disabled reason when
cable removed

Dan Carpenter (1):
ib_srpt: fix a WARN_ON() message

Dean Luick (35):
staging/hfi1: set Gen3 half-swing for integrated devices staging/hfi1: Remove unneeded variable index staging/rdma/hfi1: Fix missing firmware NULL dereference staging/rdma/hfi1: Only warn when board description is not found staging/rdma/hfi1: Make firmware failure messages warnings staging/rdma/hfi1: No firmware retry for simulation staging/rdma/hfi1: Skip lcb init for simulation staging/rdma/hfi1: Fix for generic I2C interface staging/rdma/hfi1: Use device file minor to identify EPROM staging/rdma/hfi1: correctly check for post-interrupt packets staging/rdma/hfi1: Report physical state changes per device
instead of globally
staging/rdma/hfi1: Fix fabric serdes reset by re-downloading firmware staging/rdma/hfi1: Split last 8 bytes of copy to user buffer staging/rdma/hfi1: Remove PCIe AER diagnostic message staging/rdma/hfi1: Correct TWSI reset
staging/rdma/hfi1: Fix snoop packet length calculation staging/rdma/hfi1: Make EPROM check per device staging/rdma/hfi1: Remove unused variable nsbr staging/rdma/hfi1: Fix xmit discard error weight staging/rdma/hfi1: Fix debugfs access race staging/rdma/hfi1: Disclose more information when i2c fails staging/rdma/hfi1: Guard i2c access against cp staging/rdma/hfi1: Fix counter read for cp
IB/hfi1: Remove ASIC block clear
IB/hfi1: Add shared ASIC structure
IB/hfi1: Add ASIC resource reservation functions
IB/hfi1: Change EPROM handling to use resource reservation IB/hfi1: Change SBus handling to use resource reservation IB/hfi1: Change QSFP functions to use resource reservation IB/hfi1: Change thermal init to use resource reservation IB/hfi1: Remove unused HFI1_DO_INIT_ASIC flag
IB/hfi1: Reduce hardware mutex timeout
IB/hfi1: Hold i2c resource across debugfs open/close IB/hfi1: Add ASIC flag view/clear
IB/hfi1: Add adaptive cacheless verbs copy

Dennis Dalessandro (100):
IB/rdmavt: Create module framework and handle driver registration IB/rdmavt: Consolidate dma ops in rdmavt.
IB/rdmavt: Add protection domain to rdmavt.
IB/rdmavt: Add ib core device attributes to rvt driver params list IB/rdmavt: Macroize override checks during driver registration IB/rdmavt: Add query and modify device stubs
IB/rdmavt: Add query and modify port stubs
IB/rdmavt: Add pkey query stub
IB/rdmavt: Add query gid stub
IB/rdmavt: Alloc and dealloc ucontexts
IB/rdmavt: Add queue pair function stubs
IB/rdmavt: Add address handle stubs
IB/rdmavt: Add memory region stubs
IB/rdmavt: Add SRQ stubs
IB/rdmavt: Add multicast stubs
IB/rdmavt: Add process MAD stub
IB/rdmavt: Add mmap stub
IB/rdmavt: Add get port immutable stub
IB/rdmavt: Add completion queue function stubs IB/rdmavt: Add post send and recv stubs
IB/rdmavt: Move MR datastructures into rvt
IB/rdmavt: Add queue pair data structure to rdmavt IB/rdmavt: Move driver helper functions to a common structure IB/rdmavt: Add device specific info prints
IB/rdmavt: Add the start of capability flags
IB/rdmavt: Move memory registration into rdmavt IB/rdmavt: Do not use rvt prints which rely on driver too early IB/rdmavt: Move SRQ data structure into rdmavt IB/rdmavt: Add an ibport data structure to rdmavt IB/rdmavt: Add driver notification for new AH
IB/rdmavt: Break rdma_vt main include header file up IB/rdmavt: Initialize and teardown of qpn table IB/rdmavt: Add mmap related functions
IB/rdmavt: Add pkey support
IB/qib: Begin to use rdmavt for verbs
IB/qib: Remove dma.c and use rdmavt version of dma functions IB/qib: Use rdmavt protection domain
IB/qib: Remove most uses of QIB_PERMISSIVE_LID and
QIB_MULTICAST_LID_BASE
IB/qib: Use rdmavt lid defines in qib
IB/qib: Remove driver specific members from qib qp type IB/qib: Add device specific info prints
IB/qib: Remove qp and mr functionality from qib
IB/qib: Use address handle in rdmavt and remove from qib IB/qib: Remove srq from qib
IB/rdmavt: Add R and S flags for queue pairs
IB/rdmavt: Add create queue pair functionality IB/rdmavt: Export reset_qp in rdmavt
IB/rdmavt: Add completion queue functions
IB/rdmavt: Add post send to rdmavt
IB/rdmavt: Add support for tracing events
IB/rdmavt: Add modify qp
IB/rdmavt: Add destroy qp verb
IB/rdmavt: Add post receive to rdmavt
IB/rdmavt: Add multicast functions
IB/rdmavt: Add misc dev register functionality IB/rdmavt: Add device structure allocation
IB/rdmavt: Add mad agents to rdmavt
IB/rdmavt: Fix copyright date
IB/qib: Use rdmavt device allocation function
IB/qib: Remove create and free mad agents
IB/rdmavt: Clean up distinction between port number and index IB/rdmavt: Add query gid support.
IB/qib: Clean up register_ib_device
IB/qib: Support query gid in rdmavt
staging/rdma/hfi1: Begin to use rdmavt for verbs staging/rdma/hfi1: Add basic rdmavt capability flags for hfi1 staging/rdma/hfi1: Use rdmavt protection domain staging/rdma/hfi1: Remove MR data structures from hfi1 staging/rdma/hfi1: Remove driver specific members from hfi1 qp type staging/rdma/hfi1: Add device specific info prints staging/rdma/hfi1: Use correct rdmavt header files after move. staging/rdma/hfi1: Use address handle in rdmavt and remove from hfi1 staging/rdma/hfi1: Implement hfi1 support for AH notification staging/rdma/hfi1: Remove hfi1 MR and hfi1 specific qp type staging/rdma/hfi1: Remove srq from hfi1 staging/rdma/hfi1: Remove ibport and use rdmavt version staging/rdma/hfi1: Remove mmap from hfi1 staging/rdma/hfi1: Use rdmavt pkey verbs function staging/rdma/hfi1: Use rdmavt send flags and recv flags staging/rdma/hfi1: Remove qpdev and qpn table from hfi1 staging/rdma/hfi1: Remove create_qp functionality staging/rdma/hfi1: Remove CQ data structures and functions from hfi1 staging/rdma/hfi1: Clean up return handling staging/rdma/hfi1: Use rdmavt version of post_send staging/rdma/hfi1: Remove multicast verbs functions staging/rdma/hfi1: Remove modify queue pair from hfi1 staging/rdma/hfi1: Remove destroy qp verb staging/rdma/hfi1: Remove post_recv and use rdmavt version staging/rdma/hfi1: Clean up register device staging/rdma/hfi1: Use rdmavt device allocation function staging/rdma/hfi1: Remove create and free mad agents staging/rdma/hfi1: Support query gid in rdmavt IB/rdmavt: Clean up comments and add more documentation IB/rdmavt: Add per verb driver callback checking
IB/qib: Setup notify free/create mad agent callbacks for rdmavt IB/qib,rdmavt: Move smi_ah to qib
IB/rdmavt: Remove RVT_FLAGs
IB/rdmavt: Remove signal_supported and comments IB/rdmavt: Remove unnecessary exported functions staging/rdma/hfi1: Remove header memcpy from sdma send path.

Doug Ledford (1):

      Merge branches 'i40iw', 'sriov' and 'hfi1' into k.o/for-4.6

Easwar Hariharan (13):
staging/rdma/hfi1: cleanup messages on qsfp_read() failure staging/rdma/hfi1: Add active and optical cable support staging/rdma/hfi1: Get port type from configuration file staging/rdma/hfi1: Support external device configuration requests
from 8051
staging/rdma/hfi1: Don't attempt to qualify or tune loopback plugs staging/rdma/hfi1: Reduce syslog message severity and provide
speed information
staging/rdma/hfi1: Implement LED beaconing for maintenance staging/rdma/hfi1, IB/core: Fix LinkDownReason define for consistency staging/rdma/hfi1: Fetch platform configuration data from EFI variable staging/rdma/hfi1: Tune for unknown channel if configuration file
is absent
staging/rdma/hfi1: Cleanup comments and logs in PHY code staging/rdma/hfi1: Fix reporting of LED status in Get(LedInfo) and
Get(PortInfo)
IB/hfi1: Improve LED beaconing

Edward Mascarenhas (1):
staging/hfi1: Clean up comments

Eli Cohen (10):
net/core: Add support for configuring VF GUIDs IB/mlx5: Fix decision on using MAD_IFC IB/core: Add subnet prefix to port info IB/core: Support accessing SA in virtualized environment IB/core: Add interfaces to control VF attributes IB/ipoib: Add ndo operations for configuring VFs net/mlx5_core: Add VF param when querying vport counter net/mlx5_core: Implement modify HCA vport command IB/mlx5: Implement callbacks for manipulating VFs IB/ipoib: Allow mcast packets from other VFs

Faisal Latif (16):
i40iw: add entry in rdma_netlink
i40iw: add main, hdr, status
i40iw: add connection management code
i40iw: add puda code
i40iw: add pble resource files
i40iw: add hmc resource files
i40iw: add hw and utils files
i40iw: add files for iwarp interface
i40iw: use shared code for port mapper
i40iw: add file to handle cqp calls
i40iw: add hardware related header files
i40iw: add X722 register file
i40iw: user kernel shared files
i40iw: virtual channel handling files
i40iw: Kconfig and Makefile for iwarp module
i40iw: changes for build of i40iw module

Hari Prasath Gujulan Elango (1):
IB/qib,staging/rdma/hfi1: use setup_timer api

Harish Chegondi (34):
staging/hfi1: Move s_sde to read mostly section of hfi1_qp IB/rdmavt: Add IB user context allocation and de-alloction functions IB/rdmavt: Allow reserving just one qpn
IB/rdmavt: Add support for rvt_query_device function IB/qib: Remove ibport and use rdmavt version
IB/qib: Implement qib support for AH notification
IB/qib: Remove mmap from qib
IB/qib: Use rdmavt pkey verbs function
IB/qib: Remove qpn, qp tables and related variables from qib IB/qib: Delete QIB user context allocation and de-alloction functions IB/qib: Remove qib_query_device function
IB/qib: Use rdmavt send and receive flags
IB/qib: Remove create qp and create qp table functionality IB/rdmavt: Add support for rvt_query_qp
IB/qib: Remove completion queue data structures and functions from qib IB/qib: Use rdmavt version of post_send
IB/qib: Remove qib_post_receive and use rdmavt version IB/qib: Remove qib multicast verbs functions
IB/qib: Remove qib_query_qp function
IB/rdmavt: Add support for query_port, modify_port and
get_port_immutable
IB/qib: Remove qib_lookup_qpn and use rvt_lookup_qpn instead IB/qib: Remove modify queue pair code
IB/qib: Remove destroy queue pair code
IB/qib: Remove modify_port and port_immutable functions staging/rdma/hfi1: Remove user context allocation and de-alloction
functions
staging/rdma/hfi1: Remove query_device function staging/rdma/hfi1: Remove hfi1_query_qp function staging/rdma/hfi1: Remove modify_port and port_immutable functions IB/qib: Rename several functions by adding a "qib_" prefix IB/rdmavt: Add trace and error print statements in post_one_wr IB/qib: Destroy SMI AH before de-allocating the protection domain IB/hfi1: Add the break statement that was removed in an earlier patch IB/hfi1: Move constant to the right in bitwise operations IB/hfi1: Replace kmalloc and memcpy with a kmemdup

Ira Weiny (8):
staging/hfi1: add dd_dev_dbg
staging/hfi1: Fix Xmit Wait calculation IB/rdmavt: Remove unused variable from Queue Pair IB/rdmavt: add modify queue pair driver helpers IB/rdmavt: Add hardware driver send work request check IB/rdmavt: Properly pass gfp to hw driver function staging/rdma/hfi1: Consolidate dma ops for hfi1 staging/rdma/hfi1: Fix SL->SC checks

Jianxin Xiong (1):
staging/rdma/hfi1: Fix header size calculation for RC/UC QPs with
GRH enabled

Jim Snow (1):

      staging/hfi1: check for ARMED->ACTIVE change in recv int

Jubin John (31):
IB/rdmavt: Add srq functionality to rdmavt IB/qib: Remove srq functionality staging/rdma/hfi1: Remove srq functionality staging/rdma/hfi1: Clean up init_cntrs() staging/rdma/hfi1: Add s_sendcontext priv field staging/rdma/hfi1: Add qp to send context mapping for PIO staging/rdma/hfi1: Add send context sw index staging/rdma/hfi1: Add spaces around binary operators staging/rdma/hfi1: Remove multiple blank lines staging/rdma/hfi1: Remove space after cast staging/rdma/hfi1: Fix comparison to NULL staging/rdma/hfi1: Remove blank line after an open brace staging/rdma/hfi1: Remove blank line before close brace staging/rdma/hfi1: Fix logical continuations staging/rdma/hfi1: Add blank link after declarations staging/rdma/hfi1: Remove unnecessary parentheses staging/rdma/hfi1: Use BIT_ULL macro staging/rdma/hfi1: Split multiple assignments staging/rdma/hfi1: Fix misspellings staging/rdma/hfi1: Remove CamelCase staging/rdma/hfi1: Use pointer instead of struct name staging/rdma/hfi1: Remove void function return statement staging/rdma/hfi1: Add comment for spinlock_t definition staging/rdma/hfi1: Fix block comments staging/rdma/hfi1: Fix code alignment staging/rdma/hfi1: Add braces on all arms of statement staging/rdma/hfi1: Remove else after break staging/rdma/hfi1: Fix header
IB/rdmavt: Check lkey_table_size value before use staging/rdma/hfi1: Fix memory leaks
IB/hfi1: Handle host handshake timeout

Kaike Wan (4):
staging/rdma/hfi1: Put QPs into error state after SL->SC table changes staging/rdma/hfi1: Avoid using upstream component if it is not
accessible
staging/rdma/hfi1: Check interrupt registers mapping IB/hfi1: Don't call cond_resched in atomic mode when sending packets

Kamal Heib (2):
IB/rdmavt: Add common LID defines to rdmavt
IB/rdmavt: Add AH to rdmavt

Leon Romanovsky (4):
net/mlx5_core: Fix caching ATOMIC endian mode capability net/mlx5_core: Refactor device capability function IB/core: Replace setting the zero values in ib_uverbs_ex_query_device IB/{core, ulp} Support above 32 possible device capability flags

Mark F. Brown (1):
staging/hfi1: change krcvqs mod param from byte to uint

Mike Marciniszyn (36):
IB/rdmavt: Support creating qps with GFP_NOIO flag staging/rdma/hfi1: Fix QSFP memory read/write across 128 byte boundary staging/rdma/hfi1: Fix per-VL transmit discard counts staging/rdma/hfi1: centralize timer routines into rc staging/rdma/hfi1: use new timer routines staging/rdma/hfi1: use mod_timer when appropriate staging/rdma/hfi1: add unique rnr timer
staging/rdma/hfi1: use new RNR timer
staging/rdma/hfi1: remove duplicate timeout print staging/rdma/hfi1: add s_retry to diagnostics staging/rdma/hfi1: Insure last cursor is updated prior to complete IB/qib: Insure last cursor is updated prior to complete IB/rdmavt: remove unused qp field
staging/rdma/hfi1: actually use new RNR timer API in loopback path IB/qib, staging/rdma/hfi1: add s_hlock for use in post send staging/rdma/hfi1: add s_avail to qp_stats
IB/rdmvt: close send engine struct holes staging/rdma/hfi1: move txreq header code staging/rdma/hfi1: remove s_rdma_mr
staging/rdma/hfi1: avoid passing pmtu
staging/rdma/hfi1: fix panic in send engine staging/rdma/hfi1: use u8 for vl/sl
staging/rdma/hfi1: Adaptive PIO for short messages
IB/qib, staging/rdma/hfi1, IB/rdmavt: progress selection changes staging/rdma/hfi: fix CQ completion order issue staging/rdma/hfi1: Determine actual operational VLs staging/rdma/hfi1: fix 0-day syntax error
IB/rdamvt: fix cross build with rdmavt
IB/hfi1: Report pid in qp_stats to aid debug
IB/hfi1: Fix issues with qp_stats print
IB/hfi1: Add unique trace point for pio and sdma send IB/hfi1: Fix ordering of trace for accuracy
IB/hfi1: Fix PIO wakeup timing hole
IB/hfi1: Fix panic in adaptive pio
IB/hfi1: Fix adaptive pio packet corruption
IB/hfi1: Enable adaptive pio by default

Mitko Haralanov (41):
staging/hfi1: Add function stubs for TID caching uapi/hfi1_user: Correct comment for capability bit uapi/hfi1_user: Add command and event for TID caching staging/hfi1: Add definitions needed for TID cache staging/hfi1: Remove un-needed variable
staging/hfi1: TID group definitions and support funcs staging/hfi1: Add building blocks for TID caching staging/hfi1: Convert lock to mutex
staging/hfi1: Add TID cache receive init and free funcs staging/hfi1: Add MMU notifier callback function staging/hfi1: Add TID free/clear function bodies staging/hfi1: Add TID entry program function body staging/hfi1: Enable TID caching feature
IB/rdmavt: Add Mem affinity support
staging/rdma/hfi1: Correctly set RcvCtxtCtrl register staging/rdma/hfi1: Remove unused code staging/rdma/hfi1: Remove unnecessary duplicated variable staging/rdma/hfi1: Consolidate CPU/IRQ affinity support staging/rdma/hfi1: Allocate send ctxt on device NUMA node staging/rdma/hfi1: Verbs Mem affinity support staging/rdma/hfi1: Improve performance of TID cache look up staging/rdma/hfi1: Improve performance of SDMA transfers staging/rdma/hfi1: Properly determine error status of SDMA slots staging/rdma/hfi1: Improve performance of user SDMA staging/rdma/hfi1: Fix bug that could block the process on context
exit
IB/hfi1: Re-factor MMU notification code
IB/hfi1: Allow MMU function execution in IRQ context IB/hfi1: Prevent NULL pointer dereference
IB/hfi1: Allow remove MMU callbacks to free nodes IB/hfi1: Remove the use of add/remove RB function pointers IB/hfi1: Notify remove MMU/RB callback of calling context IB/hfi1: Use interval RB trees
IB/hfi1: Add MMU tracing
IB/hfi1: Remove compare callback
IB/hfi1: Add filter callback
IB/hfi1: Adjust last address values for intervals IB/hfi1: Implement SDMA-side buffer caching
IB/hfi1: Add pin query function
IB/hfi1: Specify mm when releasing pages
IB/hfi1: Switch to using the pin query function IB/hfi1: Add SDMA cache eviction algorithm

Sadanand Warrier (1):
staging/rdma/hfi1: Add credits for VL0 to VL7 in snoop mode

Sagi Grimberg (1):
net/mlx5_core: Introduce offload arithmetic hardware capabilities

Sebastian Sanchez (7):
staging/rdma/hfi1: Fix for 32-bit counter overflow in driver and
hfi1stats
staging/rdma/hfi1: Fix for module parameter rcvhdrcnt when it's
2097152
staging/rdma/hfi1: Change for data type of port number staging/rdma/hfi1: Replacement of goto's for break/returns staging/rdma/hfi1: Adding support for hfi counters via sysfs staging/rdma/hfi1: Removing unused struct hfi1_verbs_counters staging/rdma/hfi1: Turning off LED without checking if stepping is Ax

Tatyana Nikolova (1):
i40iw: Replace the obsolete crypto hash interface with shash

Vennila Megavannan (6):
staging/hfi1: add per SDMA engine stats to hfistats staging/rdma/hfi1: Method to toggle "fast ECN" detection staging/rdma/hfi1: Change send_schedule counter to a per cpu counter staging/rdma/hfi1: Allow a fair scheduling of QPs IB/rdmavt, staging/rdma/hfi1: use qps to dynamically scale timeout
value
staging/rdma/hfi1: add cq head and tail information to qpstats

[email protected] (2):
staging/hfi1: Use BIT macro staging/hfi1: Change default krcvqs

 Documentation/infiniband/sysfs.txt                 |    3 +-
 MAINTAINERS                                        |   16 +
 drivers/infiniband/Kconfig                         |    3 +
 drivers/infiniband/Makefile                        |    1 +
 drivers/infiniband/core/device.c                   |   15 +-
 drivers/infiniband/core/sa_query.c                 |    5 +
 drivers/infiniband/core/uverbs_cmd.c               |   17 +-
 drivers/infiniband/core/verbs.c                    |   40 +
 drivers/infiniband/hw/Makefile                     |    1 +
 drivers/infiniband/hw/i40iw/Kconfig                |    7 +
 drivers/infiniband/hw/i40iw/Makefile               |    9 +
 drivers/infiniband/hw/i40iw/i40iw.h                |  570 +++
 drivers/infiniband/hw/i40iw/i40iw_cm.c             | 4141 +++++++++++++++++
 drivers/infiniband/hw/i40iw/i40iw_cm.h             |  456 ++
 drivers/infiniband/hw/i40iw/i40iw_ctrl.c           | 4743
++++++++++++++++++++
 drivers/infiniband/hw/i40iw/i40iw_d.h              | 1713 +++++++
 drivers/infiniband/hw/i40iw/i40iw_hmc.c            |  821 ++++
 drivers/infiniband/hw/i40iw/i40iw_hmc.h            |  241 +
 drivers/infiniband/hw/i40iw/i40iw_hw.c             |  730 +++
 drivers/infiniband/hw/i40iw/i40iw_main.c           | 1910 ++++++++
 drivers/infiniband/hw/i40iw/i40iw_osdep.h          |  215 +
 drivers/infiniband/hw/i40iw/i40iw_p.h              |  106 +
 drivers/infiniband/hw/i40iw/i40iw_pble.c           |  618 +++
 drivers/infiniband/hw/i40iw/i40iw_pble.h           |  131 +
 drivers/infiniband/hw/i40iw/i40iw_puda.c           | 1436 ++++++
 drivers/infiniband/hw/i40iw/i40iw_puda.h           |  183 +
 drivers/infiniband/hw/i40iw/i40iw_register.h       | 1030 +++++
 drivers/infiniband/hw/i40iw/i40iw_status.h         |  100 +
 drivers/infiniband/hw/i40iw/i40iw_type.h           | 1312 ++++++
 drivers/infiniband/hw/i40iw/i40iw_ucontext.h       |  107 +
 drivers/infiniband/hw/i40iw/i40iw_uk.c             | 1204 +++++
 drivers/infiniband/hw/i40iw/i40iw_user.h           |  442 ++
 drivers/infiniband/hw/i40iw/i40iw_utils.c          | 1270 ++++++
 drivers/infiniband/hw/i40iw/i40iw_verbs.c          | 2437 ++++++++++
 drivers/infiniband/hw/i40iw/i40iw_verbs.h          |  173 +
 drivers/infiniband/hw/i40iw/i40iw_vf.c             |   85 +
 drivers/infiniband/hw/i40iw/i40iw_vf.h             |   62 +
 drivers/infiniband/hw/i40iw/i40iw_virtchnl.c       |  748 +++
 drivers/infiniband/hw/i40iw/i40iw_virtchnl.h       |  124 +
 drivers/infiniband/hw/mlx5/Makefile                |    2 +-
 drivers/infiniband/hw/mlx5/ib_virt.c               |  194 +
 drivers/infiniband/hw/mlx5/mad.c                   |    2 +-
 drivers/infiniband/hw/mlx5/main.c                  |   12 +-
 drivers/infiniband/hw/mlx5/mlx5_ib.h               |    8 +
 drivers/infiniband/hw/qib/Kconfig                  |    2 +-
 drivers/infiniband/hw/qib/Makefile                 |   10 +-
 drivers/infiniband/hw/qib/qib.h                    |   33 +-
 drivers/infiniband/hw/qib/qib_common.h             |    3 -
 drivers/infiniband/hw/qib/qib_cq.c                 |  545 ---
 drivers/infiniband/hw/qib/qib_driver.c             |   71 +-
 drivers/infiniband/hw/qib/qib_iba6120.c            |    8 +-
 drivers/infiniband/hw/qib/qib_iba7322.c            |    6 +-
 drivers/infiniband/hw/qib/qib_init.c               |   25 +-
 drivers/infiniband/hw/qib/qib_intr.c               |    2 +-
 drivers/infiniband/hw/qib/qib_keys.c               |  186 +-
 drivers/infiniband/hw/qib/qib_mad.c                |  338 +-
 drivers/infiniband/hw/qib/qib_mmap.c               |  174 -
 drivers/infiniband/hw/qib/qib_mr.c                 |  490 --
 drivers/infiniband/hw/qib/qib_qp.c                 | 1178 +----
 drivers/infiniband/hw/qib/qib_rc.c                 |  409 +-
 drivers/infiniband/hw/qib/qib_ruc.c                |  191 +-
 drivers/infiniband/hw/qib/qib_sdma.c               |   41 +-
 drivers/infiniband/hw/qib/qib_srq.c                |  380 --
 drivers/infiniband/hw/qib/qib_sysfs.c              |   85 +-
 drivers/infiniband/hw/qib/qib_uc.c                 |   79 +-
 drivers/infiniband/hw/qib/qib_ud.c                 |  142 +-
 drivers/infiniband/hw/qib/qib_verbs.c              | 1223 ++---
 drivers/infiniband/hw/qib/qib_verbs.h              |  812 +---
 drivers/infiniband/hw/qib/qib_verbs_mcast.c        |  363 --
 drivers/infiniband/sw/Makefile                     |    1 +
 drivers/infiniband/sw/rdmavt/Kconfig               |    6 +
 drivers/infiniband/sw/rdmavt/Makefile              |   13 +
 drivers/infiniband/sw/rdmavt/ah.c                  |  196 +
 drivers/infiniband/sw/rdmavt/ah.h                  |   59 +
 .../rdma/hfi1 => infiniband/sw/rdmavt}/cq.c        |  325 +-
 drivers/infiniband/sw/rdmavt/cq.h                  |   64 +
 drivers/infiniband/sw/rdmavt/dma.c                 |  184 +
 drivers/infiniband/sw/rdmavt/dma.h                 |   53 +
 drivers/infiniband/sw/rdmavt/mad.c                 |  171 +
 drivers/infiniband/sw/rdmavt/mad.h                 |   60 +
 .../verbs_mcast.c => infiniband/sw/rdmavt/mcast.c} |  262 +-
 drivers/infiniband/sw/rdmavt/mcast.h               |   58 +
 .../rdma/hfi1 => infiniband/sw/rdmavt}/mmap.c      |  142 +-
 drivers/infiniband/sw/rdmavt/mmap.h                |   63 +
 drivers/infiniband/sw/rdmavt/mr.c                  |  830 ++++
 drivers/infiniband/sw/rdmavt/mr.h                  |   92 +
 drivers/infiniband/sw/rdmavt/pd.c                  |  119 +
 drivers/infiniband/sw/rdmavt/pd.h                  |   58 +
 drivers/infiniband/sw/rdmavt/qp.c                  | 1696 +++++++
 drivers/infiniband/sw/rdmavt/qp.h                  |   69 +
 .../rdma/hfi1 => infiniband/sw/rdmavt}/srq.c       |  204 +-
 drivers/infiniband/sw/rdmavt/srq.h                 |   62 +
 drivers/infiniband/sw/rdmavt/trace.c               |   49 +
 drivers/infiniband/sw/rdmavt/trace.h               |  187 +
 drivers/infiniband/sw/rdmavt/vt.c                  |  873 ++++
 drivers/infiniband/sw/rdmavt/vt.h                  |  104 +
 drivers/infiniband/ulp/ipoib/ipoib.h               |    2 +-
 drivers/infiniband/ulp/ipoib/ipoib_ib.c            |   27 +-
 drivers/infiniband/ulp/ipoib/ipoib_main.c          |   65 +-
 drivers/infiniband/ulp/srpt/ib_srpt.c              |    2 +-
 drivers/net/ethernet/intel/i40e/Makefile           |    1 +
 drivers/net/ethernet/intel/i40e/i40e.h             |   22 +
 drivers/net/ethernet/intel/i40e/i40e_client.c      | 1012 +++++
 drivers/net/ethernet/intel/i40e/i40e_client.h      |  232 +
 drivers/net/ethernet/intel/i40e/i40e_main.c        |  115 +-
 drivers/net/ethernet/intel/i40e/i40e_type.h        |    3 +-
 drivers/net/ethernet/intel/i40e/i40e_virtchnl.h    |   34 +
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c |  247 +-
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h |    4 +
 drivers/net/ethernet/mellanox/mlx5/core/cmd.c      |    6 +
 drivers/net/ethernet/mellanox/mlx5/core/fw.c       |   57 +-
 drivers/net/ethernet/mellanox/mlx5/core/main.c     |   24 +-
 drivers/net/ethernet/mellanox/mlx5/core/vport.c    |   72 +-
 drivers/staging/rdma/hfi1/Kconfig                  |   13 +-
 drivers/staging/rdma/hfi1/Makefile                 |   10 +-
 drivers/staging/rdma/hfi1/affinity.c               |  430 ++
 drivers/staging/rdma/hfi1/affinity.h               |   91 +
 drivers/staging/rdma/hfi1/aspm.h                   |  309 ++
 drivers/staging/rdma/hfi1/chip.c                   | 2457 +++++-----
 drivers/staging/rdma/hfi1/chip.h                   |  151 +-
 drivers/staging/rdma/hfi1/chip_registers.h         |   20 +-
 drivers/staging/rdma/hfi1/common.h                 |   12 +-
 drivers/staging/rdma/hfi1/debugfs.c                |  332 +-
 drivers/staging/rdma/hfi1/debugfs.h                |    5 +-
 drivers/staging/rdma/hfi1/device.c                 |    5 +-
 drivers/staging/rdma/hfi1/device.h                 |    5 +-
 drivers/staging/rdma/hfi1/diag.c                   |  103 +-
 drivers/staging/rdma/hfi1/dma.c                    |   17 +-
 drivers/staging/rdma/hfi1/driver.c                 |  346 +-
 drivers/staging/rdma/hfi1/efivar.c                 |    8 +-
 drivers/staging/rdma/hfi1/efivar.h                 |    5 +-
 drivers/staging/rdma/hfi1/eprom.c                  |  117 +-
 drivers/staging/rdma/hfi1/eprom.h                  |    7 +-
 drivers/staging/rdma/hfi1/file_ops.c               |  552 +--
 drivers/staging/rdma/hfi1/firmware.c               |  587 ++-
 drivers/staging/rdma/hfi1/hfi.h                    |  259 +-
 drivers/staging/rdma/hfi1/init.c                   |  183 +-
 drivers/staging/rdma/hfi1/intr.c                   |   29 +-
 drivers/staging/rdma/hfi1/iowait.h                 |  126 +-
 drivers/staging/rdma/hfi1/keys.c                   |  356 --
 drivers/staging/rdma/hfi1/mad.c                    | 1048 +++--
 drivers/staging/rdma/hfi1/mad.h                    |   14 +-
 drivers/staging/rdma/hfi1/mmu_rb.c                 |  292 ++
 drivers/staging/rdma/hfi1/mmu_rb.h                 |   73 +
 drivers/staging/rdma/hfi1/mr.c                     |  473 --
 drivers/staging/rdma/hfi1/opa_compat.h             |   20 +-
 drivers/staging/rdma/hfi1/pcie.c                   |  276 +-
 drivers/staging/rdma/hfi1/pio.c                    |  365 +-
 drivers/staging/rdma/hfi1/pio.h                    |  118 +-
 drivers/staging/rdma/hfi1/pio_copy.c               |   67 +-
 drivers/staging/rdma/hfi1/platform.c               |  893 ++++
 .../rdma/hfi1/{platform_config.h => platform.h}    |   58 +-
 drivers/staging/rdma/hfi1/qp.c                     | 1642 ++-----
 drivers/staging/rdma/hfi1/qp.h                     |  198 +-
 drivers/staging/rdma/hfi1/qsfp.c                   |  270 +-
 drivers/staging/rdma/hfi1/qsfp.h                   |   57 +-
 drivers/staging/rdma/hfi1/rc.c                     |  765 ++--
 drivers/staging/rdma/hfi1/ruc.c                    |  373 +-
 drivers/staging/rdma/hfi1/sdma.c                   |  365 +-
 drivers/staging/rdma/hfi1/sdma.h                   |  116 +-
 drivers/staging/rdma/hfi1/sdma_txreq.h             |  135 +
 drivers/staging/rdma/hfi1/sysfs.c                  |  136 +-
 drivers/staging/rdma/hfi1/trace.c                  |   53 +-
 drivers/staging/rdma/hfi1/trace.h                  | 1477 +++---
 drivers/staging/rdma/hfi1/twsi.c                   |  205 +-
 drivers/staging/rdma/hfi1/twsi.h                   |    9 +-
 drivers/staging/rdma/hfi1/uc.c                     |  164 +-
 drivers/staging/rdma/hfi1/ud.c                     |  250 +-
 drivers/staging/rdma/hfi1/user_exp_rcv.c           | 1044 +++++
 drivers/staging/rdma/hfi1/user_exp_rcv.h           |   13 +-
 drivers/staging/rdma/hfi1/user_pages.c             |   74 +-
 drivers/staging/rdma/hfi1/user_sdma.c              |  621 +--
 drivers/staging/rdma/hfi1/user_sdma.h              |   11 +-
 drivers/staging/rdma/hfi1/verbs.c                  | 1667 +++----
 drivers/staging/rdma/hfi1/verbs.h                  |  824 +---
 drivers/staging/rdma/hfi1/verbs_txreq.c            |  149 +
 drivers/staging/rdma/hfi1/verbs_txreq.h            |  116 +
 include/linux/mlx5/device.h                        |    6 +
 include/linux/mlx5/driver.h                        |    8 +-
 include/linux/mlx5/mlx5_ifc.h                      |   37 +-
 include/linux/mlx5/vport.h                         |    7 +-
 include/linux/netdevice.h                          |    3 +
 include/rdma/ib_verbs.h                            |   29 +-
 include/rdma/opa_port_info.h                       |    2 +-
 include/rdma/rdma_vt.h                             |  481 ++
 include/rdma/rdmavt_cq.h                           |   99 +
 include/rdma/rdmavt_mr.h                           |  139 +
 include/rdma/rdmavt_qp.h                           |  446 ++
 include/uapi/linux/if_link.h                       |    7 +
 include/uapi/rdma/hfi/hfi1_user.h                  |   14 +-
 include/uapi/rdma/rdma_netlink.h                   |    1 +
 net/core/rtnetlink.c                               |   36 +
 192 files changed, 49197 insertions(+), 15248 deletions(-)
 create mode 100644 drivers/infiniband/hw/i40iw/Kconfig
 create mode 100644 drivers/infiniband/hw/i40iw/Makefile
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw.h
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_cm.c
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_cm.h
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_ctrl.c
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_d.h
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_hmc.c
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_hmc.h
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_hw.c
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_main.c
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_osdep.h
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_p.h
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_pble.c
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_pble.h
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_puda.c
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_puda.h
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_register.h
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_status.h
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_type.h
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_ucontext.h
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_uk.c
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_user.h
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_utils.c
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_verbs.c
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_verbs.h
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_vf.c
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_vf.h
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_virtchnl.c
 create mode 100644 drivers/infiniband/hw/i40iw/i40iw_virtchnl.h
 create mode 100644 drivers/infiniband/hw/mlx5/ib_virt.c
 delete mode 100644 drivers/infiniband/hw/qib/qib_cq.c
 delete mode 100644 drivers/infiniband/hw/qib/qib_mmap.c
 delete mode 100644 drivers/infiniband/hw/qib/qib_mr.c
 delete mode 100644 drivers/infiniband/hw/qib/qib_srq.c
 delete mode 100644 drivers/infiniband/hw/qib/qib_verbs_mcast.c
 create mode 100644 drivers/infiniband/sw/Makefile
 create mode 100644 drivers/infiniband/sw/rdmavt/Kconfig
 create mode 100644 drivers/infiniband/sw/rdmavt/Makefile
 create mode 100644 drivers/infiniband/sw/rdmavt/ah.c
 create mode 100644 drivers/infiniband/sw/rdmavt/ah.h
 rename drivers/{staging/rdma/hfi1 => infiniband/sw/rdmavt}/cq.c (72%)
 create mode 100644 drivers/infiniband/sw/rdmavt/cq.h
 create mode 100644 drivers/infiniband/sw/rdmavt/dma.c
 create mode 100644 drivers/infiniband/sw/rdmavt/dma.h
 create mode 100644 drivers/infiniband/sw/rdmavt/mad.c
 create mode 100644 drivers/infiniband/sw/rdmavt/mad.h
 rename drivers/{staging/rdma/hfi1/verbs_mcast.c =>
infiniband/sw/rdmavt/mcast.c} (58%)
 create mode 100644 drivers/infiniband/sw/rdmavt/mcast.h
 rename drivers/{staging/rdma/hfi1 => infiniband/sw/rdmavt}/mmap.c (55%)
 create mode 100644 drivers/infiniband/sw/rdmavt/mmap.h
 create mode 100644 drivers/infiniband/sw/rdmavt/mr.c
 create mode 100644 drivers/infiniband/sw/rdmavt/mr.h
 create mode 100644 drivers/infiniband/sw/rdmavt/pd.c
 create mode 100644 drivers/infiniband/sw/rdmavt/pd.h
 create mode 100644 drivers/infiniband/sw/rdmavt/qp.c
 create mode 100644 drivers/infiniband/sw/rdmavt/qp.h
 rename drivers/{staging/rdma/hfi1 => infiniband/sw/rdmavt}/srq.c (64%)
 create mode 100644 drivers/infiniband/sw/rdmavt/srq.h
 create mode 100644 drivers/infiniband/sw/rdmavt/trace.c
 create mode 100644 drivers/infiniband/sw/rdmavt/trace.h
 create mode 100644 drivers/infiniband/sw/rdmavt/vt.c
 create mode 100644 drivers/infiniband/sw/rdmavt/vt.h
 create mode 100644 drivers/net/ethernet/intel/i40e/i40e_client.c
 create mode 100644 drivers/net/ethernet/intel/i40e/i40e_client.h
 create mode 100644 drivers/staging/rdma/hfi1/affinity.c
 create mode 100644 drivers/staging/rdma/hfi1/affinity.h
 create mode 100644 drivers/staging/rdma/hfi1/aspm.h
 delete mode 100644 drivers/staging/rdma/hfi1/keys.c
 create mode 100644 drivers/staging/rdma/hfi1/mmu_rb.c
 create mode 100644 drivers/staging/rdma/hfi1/mmu_rb.h
 delete mode 100644 drivers/staging/rdma/hfi1/mr.c
 create mode 100644 drivers/staging/rdma/hfi1/platform.c
 rename drivers/staging/rdma/hfi1/{platform_config.h => platform.h} (89%)
 create mode 100644 drivers/staging/rdma/hfi1/sdma_txreq.h
 create mode 100644 drivers/staging/rdma/hfi1/user_exp_rcv.c
 create mode 100644 drivers/staging/rdma/hfi1/verbs_txreq.c
 create mode 100644 drivers/staging/rdma/hfi1/verbs_txreq.h
 create mode 100644 include/rdma/rdma_vt.h
 create mode 100644 include/rdma/rdmavt_cq.h
 create mode 100644 include/rdma/rdmavt_mr.h
 create mode 100644 include/rdma/rdmavt_qp.h
Signature · 2 lines
Doug Ledford <[email protected]>
              GPG KeyID: 0E572FDD

A message that is not in the archive (sent off-list or not yet received): [email protected]

#2 lore raw
Quoted 6 lines · Doug Ledford

This is a monster pull request. I held off on the hfi1 driver updates (the hfi1 driver is intimately tied to the qib driver and the new rdmavt software library that was created to help both of them) in my first pull request. The hfi1/qib/rdmavt update is probably 90% of this pull request. The hfi1 driver is being left in staging so that it can be fixed up in regards to the API that Al and yourself didn't like.

[...]

Quoted 1 line

Round two of 4.6 merge window patches

[...]

Quoted 7 lines

- A huge set of updates to the Intel hfi1 driver. Of particular interest here is that we have left the driver in staging since it still has an API that people object to. Intel is working on a fix, but getting these patches in now helps keep me sane as the upstream and Intel's trees were over 300 patches apart.

Mitko Haralanov (41):

[...]

Quoted 8 lines

IB/hfi1: Re-factor MMU notification code IB/hfi1: Allow MMU function execution in IRQ context IB/hfi1: Prevent NULL pointer dereference IB/hfi1: Allow remove MMU callbacks to free nodes IB/hfi1: Remove the use of add/remove RB function pointers IB/hfi1: Notify remove MMU/RB callback of calling context IB/hfi1: Use interval RB trees
IB/hfi1: Add MMU tracing

Quoted 8 lines

IB/hfi1: Remove compare callback IB/hfi1: Add filter callback
IB/hfi1: Adjust last address values for intervals IB/hfi1: Implement SDMA-side buffer caching IB/hfi1: Add pin query function
IB/hfi1: Specify mm when releasing pages IB/hfi1: Switch to using the pin query function IB/hfi1: Add SDMA cache eviction algorithm

Doug, this series is under review and a reviewer (me...) have posted comments claiming that such pin down cache doesn't belong to kernel but rather to be part of a user-space library [1]

This comment still hold even though the cache is serving a proprietary (non verbs) user-space code b/c it claims that code X doesn't belong to the kernel and we need not load into the kernel what doesn't belong there.

Could you please comment why not let the discussion converge and/or hear your maintainer opinion on the matter before this is pushed up to Linus?

Or.

[1] http://marc.info/?t=145746462200001&r=1&w=2
--
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): CAJ3xEMhG0x_+DAAY+Cv0OAnW=2VmMuHZUv8DOP_YCkNHfSjX9A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org

#4 lore raw
Quoted 44 lines · Or Gerlitz
Quoted 6 lines · Doug Ledford

This is a monster pull request. I held off on the hfi1 driver updates (the hfi1 driver is intimately tied to the qib driver and the new rdmavt software library that was created to help both of them) in my first pull request. The hfi1/qib/rdmavt update is probably 90% of this pull request. The hfi1 driver is being left in staging so that it can be fixed up in regards to the API that Al and yourself didn't like.

[...]

Quoted 1 line

Round two of 4.6 merge window patches

[...]

Quoted 7 lines

- A huge set of updates to the Intel hfi1 driver. Of particular interest here is that we have left the driver in staging since it still has an API that people object to. Intel is working on a fix, but getting these patches in now helps keep me sane as the upstream and Intel's trees were over 300 patches apart.

Mitko Haralanov (41):

[...]

Quoted 8 lines

IB/hfi1: Re-factor MMU notification code IB/hfi1: Allow MMU function execution in IRQ context IB/hfi1: Prevent NULL pointer dereference IB/hfi1: Allow remove MMU callbacks to free nodes IB/hfi1: Remove the use of add/remove RB function pointers IB/hfi1: Notify remove MMU/RB callback of calling context IB/hfi1: Use interval RB trees
IB/hfi1: Add MMU tracing

Quoted 8 lines

IB/hfi1: Remove compare callback IB/hfi1: Add filter callback
IB/hfi1: Adjust last address values for intervals IB/hfi1: Implement SDMA-side buffer caching IB/hfi1: Add pin query function
IB/hfi1: Specify mm when releasing pages IB/hfi1: Switch to using the pin query function IB/hfi1: Add SDMA cache eviction algorithm

Doug, this series is under review and a reviewer (me...) have posted comments claiming that such pin down cache doesn't belong to kernel but rather to be part of a user-space library [1]

This comment still hold even though the cache is serving a proprietary (non verbs) user-space code b/c it claims that code X doesn't belong to the kernel and we need not load into the kernel what doesn't belong there.

Quoted 8 lines

Could you please comment why not let the discussion converge and/or hear your maintainer opinion on the matter before this is pushed up to Linus?

Or.

[1] http://marc.info/?t=145746462200001&r=1&w=2

You made your arguments, which I thought were nebulous in the first place ("does not belong in the kernel" is not a well defined objection, it's like saying "I don't like that", you would need a more concise objection to carry stronger weight). Their response to your argument was that putting it in the kernel saves multiple context switches per memory region in the cache. This was a sufficient answer IMO (context switches are expensive and on 100GBit hardware, multiple context switches that aren't needed is positively huge).

A message that is not in the archive (sent off-list or not yet received): [email protected]

#6 lore raw
Quoted 34 lines · Doug Ledford
Quoted 32 lines · Or Gerlitz

On Tue, Mar 22, 2016 at 10:50 PM, Doug Ledford <[email protected]>

Quoted 1 line

Mitko Haralanov (41):

[...]

Quoted 8 lines

IB/hfi1: Re-factor MMU notification code IB/hfi1: Allow MMU function execution in IRQ context IB/hfi1: Prevent NULL pointer dereference IB/hfi1: Allow remove MMU callbacks to free nodes IB/hfi1: Remove the use of add/remove RB function pointers IB/hfi1: Notify remove MMU/RB callback of calling context IB/hfi1: Use interval RB trees
IB/hfi1: Add MMU tracing

Quoted 8 lines

IB/hfi1: Remove compare callback IB/hfi1: Add filter callback
IB/hfi1: Adjust last address values for intervals IB/hfi1: Implement SDMA-side buffer caching IB/hfi1: Add pin query function
IB/hfi1: Specify mm when releasing pages IB/hfi1: Switch to using the pin query function IB/hfi1: Add SDMA cache eviction algorithm

Doug, this series is under review and a reviewer (me...) have posted comments claiming that such pin down cache doesn't belong to kernel but rather to be part of a user-space library [1]

This comment still hold even though the cache is serving a proprietary (non verbs) user-space code b/c it claims that code X doesn't belong to the kernel and we need not load into the kernel what doesn't belong there.

Could you please comment why not let the discussion converge and/or hear your maintainer opinion on the matter before this is pushed up to Linus?

Quoted 6 lines
Quoted 1 line

[1] http://marc.info/?t=145746462200001&r=1&w=2

You made your arguments, which I thought were nebulous in the first place ("does not belong in the kernel" is not a well defined objection, it's like saying "I don't like that", you would need a more concise objection to carry stronger weight).

Doug, by all means my review was not in a "you should do X, period" or "Y doesn't belong to the kernel, bump", take 5m and see:

OG:"Actually, the cache itself belongs to user space. What is needed in the kernel is code that uses MMU notifications to invalidate the cache when munmap and friends were done on a cache entry. This is too generic functionality that you
can add to the IB core which does have a char device or (better) to a generic char device you will write and PSM to use. There have been some works on that in the 2000s, look for code from Roland Dreier and/or Pete Wyckoff"

DD:"Our position continues to be that this is best located in the hfi1 driver."

DD: few more email w.o technical justifications for the cache to be in the kernel

DD: "Taking a performance standpoint we don't want this in user space. If the cache were at the user level there would end up being a system call to pin the buffer, another to do the SDMA transfer from said buffer, and another to unpin the buffer when the kernel notifier has invalidated that buffer. This gets even more complex when you consider cache evictions due to reaching the limit on pinned pages. These extra system calls add overhead, which may be acceptable for a normal server or desktop environment, but are not acceptable when dealing with a high performance interconnect where we want the absolute best performance."

OG: "The cache comes to amortize the cost of pin/unpin and such, correct? this means that over longs runs, if there's nice locality of the same process using the same pages, you pay the register/pin cost once, later use lazy de-registration/pinning, and only do that when MMU notifier tells you this is a must, or under some eviction policy. Since the cost is amortized, the system calls over-head should be negligible (also, the same system call can be used to evict X and register Y), do you have performance data that shows otherwise?"

DD: "I did check into the performance aspect here and have been assured there is a performance problem with the increased number of system calls. Though I do not have any published data to point you to. We are particularly worried about the eviction case which is where the amortization argument doesn't hold up. If the eviction policy is set to evict buffers which have not been used recently in favor of a new buffer (which is a very common policy), this happens more often than you realize. We do not want any additional cost in this case."

Quoted 5 lines

Their response to your argument
was that putting it in the kernel saves multiple context switches per memory region in the cache. This was a sufficient answer IMO (context switches are expensive and on 100GBit hardware, multiple context switches that aren't needed is positively huge).

So it tool quiet a lot of time and effort to have Denny make these statements which are still not backed up by any published performance data. This review is incomplete by far, we never heard the author of the patches speaking and the driver maintainer made the comments deep into the 4.6 merge window.

Quoted 1 line

This was a sufficient answer IMO

Any reason we can't hear you speaking in real time over a reviewing thread, and have a fair chance to convince you that things are actually the other way around vs. your position, but rather get your opinion in the form of blank pulling of patches? Should someone be Al V and/or Linus T to make comments over this list which will get you to speak up and have a conversation/discussion?

In bunch of other cases w. reviews done over this list, e.g by you, Jason, Ira, Sean and others to code posted e.g by Matan, Leon and others the submitter had to work really hard and make lots of changes in their code for the patches to go in and respond to reviewers in proper time and with proper content. This is very far what what happened here.

Or.
--
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): CAJ3xEMhu7pKONneEAMDhJUtiz2nqnibynHMWe8vmgPCy+7DH5A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org

#8 lore raw
Quoted 37 lines · Or Gerlitz
Quoted 35 lines · Doug Ledford
Quoted 34 lines · Or Gerlitz

On Tue, Mar 22, 2016 at 10:50 PM, Doug Ledford <[email protected]>

Quoted 1 line

Mitko Haralanov (41):

[...]

Quoted 8 lines

IB/hfi1: Re-factor MMU notification code IB/hfi1: Allow MMU function execution in IRQ context IB/hfi1: Prevent NULL pointer dereference IB/hfi1: Allow remove MMU callbacks to free nodes IB/hfi1: Remove the use of add/remove RB function pointers IB/hfi1: Notify remove MMU/RB callback of calling context IB/hfi1: Use interval RB trees
IB/hfi1: Add MMU tracing

Quoted 8 lines

IB/hfi1: Remove compare callback IB/hfi1: Add filter callback
IB/hfi1: Adjust last address values for intervals IB/hfi1: Implement SDMA-side buffer caching IB/hfi1: Add pin query function
IB/hfi1: Specify mm when releasing pages IB/hfi1: Switch to using the pin query function IB/hfi1: Add SDMA cache eviction algorithm

Doug, this series is under review and a reviewer (me...) have posted comments claiming that such pin down cache doesn't belong to kernel but rather to be part of a user-space library [1]

This comment still hold even though the cache is serving a proprietary (non verbs) user-space code b/c it claims that code X doesn't belong to the kernel and we need not load into the kernel what doesn't belong there.

Could you please comment why not let the discussion converge and/or hear your maintainer opinion on the matter before this is pushed up to Linus?

[1] http://marc.info/?t=145746462200001&r=1&w=2

Quoted 7 lines
Quoted 4 lines

You made your arguments, which I thought were nebulous in the first place ("does not belong in the kernel" is not a well defined objection, it's like saying "I don't like that", you would need a more concise objection to carry stronger weight).

Doug, by all means my review was not in a "you should do X, period" or "Y doesn't belong to the kernel, bump", take 5m and see:

[ snip ]

I read it all the first time Or. I don't need to read it again.

Quoted 9 lines
Quoted 5 lines

Their response to your argument
was that putting it in the kernel saves multiple context switches per memory region in the cache. This was a sufficient answer IMO (context switches are expensive and on 100GBit hardware, multiple context switches that aren't needed is positively huge).

So it tool quiet a lot of time and effort to have Denny make these statements which are still not backed up by any published performance data.

Yes, so? Do we have to have published performance numbers for every patch? Especially ones that intuitively sound correct? Because I don't see people putting those requirements on Mellanox, so I'm curious why you think that level of burden should be placed on Intel?

Quoted 4 lines

Any reason we can't hear you speaking in real time over a reviewing thread, and have a fair chance to convince you that things are actually the other way around vs. your position, but rather get your opinion in the form of blank pulling of patches?

You've already made your arguments. I listened, I evaluated, I made my decision, I moved forward. I had (and still have) too much work to do this merge cycle to belabor things just because you want to prevent Intel from architecting their driver they way they want. I would be more inclined to listen if this wasn't private to their driver, but it is, and you are trying to push in on their design with your own requirements that bear no relation to the core IB code or your company's drivers, and your requirement is one that Intel has already stated will have a negative impact on their performance.

Intel has worked their ass off in the name of your review requests so far. The entire rdmavt code base was at your request. And while Mellanox originally promised to make their soft-rxe driver use the rdmavt code base too, that appears to have been completely dropped at this point. So from my position, Intel lived up to their requirements in regards to rdmavt, but Mellanox has not and does not appear to intend to.

So, no Or, when it comes to you being able to block Intel's work on their hfi1 driver, you are now on a short leash. If you make obviously correct review comments, I'll listen. If you make dubious review comments, but third parties back them up, again I'll listen. But if you make a dubious comment, and Intel has valid reasoning for how things are, then the burden of disproving Intel will fall on you. At least for a while.

Quoted 3 lines

Should someone be Al
V and/or Linus T to make comments over this list which will get you to speak up and have a conversation/discussion?

I have conversations on this list on a regular basis Or. I just didn't argue a point you wanted me to argue.

Signature · 2 lines
Doug Ledford <[email protected]>
              GPG KeyID: 0E572FDD

A message that is not in the archive (sent off-list or not yet received): [email protected]

#10 lore raw
Quoted 8 lines · Doug Ledford
Quoted 6 lines · Or Gerlitz
Quoted 4 lines · Doug Ledford

You made your arguments, which I thought were nebulous in the first place ("does not belong in the kernel" is not a well defined objection, it's like saying "I don't like that", you would need a more concise objection to carry stronger weight).

Quoted 4 lines
Quoted 2 lines

Doug, by all means my review was not in a "you should do X, period" or "Y doesn't belong to the kernel, bump", take 5m and see:

I read it all the first time Or. I don't need to read it again.

You wrote that I was just pushing things back w.o any argumentation why I find them wrong, which is simply not the case. You also did very (very) little commenting (if any) on this thread (and many others too). This brought me to a point where I couldn't see how you read the reviewer comments and made this response, so I had to paste things.

Quoted 6 lines
Quoted 5 lines
Quoted 5 lines

Their response to your argument
was that putting it in the kernel saves multiple context switches per memory region in the cache. This was a sufficient answer IMO (context switches are expensive and on 100GBit hardware, multiple context switches that aren't needed is positively huge).

Quoted 8 lines
Quoted 3 lines

So it tool quiet a lot of time and effort to have Denny make these statements which are still not backed up by any published performance data.

Yes, so? Do we have to have published performance numbers for every patch? Especially ones that intuitively sound correct? Because I don't see people putting those requirements on Mellanox, so I'm curious why you think that level of burden should be placed on Intel?

Someone suggests a kernel patch for something the reviewer pointed him that can be put in user-space, and justifies pushing the code into the kernel as of performance reasons. What's wrong for the reviewer to ask for performance data? It's not a burden, it's a 100% legitimate request as part of professional review session.

Quoted 9 lines
Quoted 4 lines

Any reason we can't hear you speaking in real time over a reviewing thread, and have a fair chance to convince you that things are actually the other way around vs. your position, but rather get your opinion in the form of blank pulling of patches?

You've already made your arguments. I listened, I evaluated, I made my decision, I moved forward. I had (and still have) too much work to do this merge cycle to belabor things just because you want to prevent Intel from architecting their driver they way they want. I would be

Yes, we keep hearing you claiming that you don't have time. But this is part of what we want to see from maintainer. You don't have to act as the major reviewer if you don't want to, but if there is a review that goes on, respect it and when the time comes, say your opinion or even enforce it (but say you did it).

Quoted 5 lines

more inclined to listen if this wasn't private to their driver, but it is, and you are trying to push in on their design with your own requirements that bear no relation to the core IB code or your company's drivers, and your requirement is one that Intel has already stated will have a negative impact on their performance.

The fact that the cache is private to their driver should make you more worrying, not the other way around. The driver maintainer (the author of the patches refuses to respond, are you okay with that BTW?) claimed that this would have negative performance impact, but I challenged his claims and asked for performance data, I know no other way to do professional engineering.

As I wrote over the thread, AFAIK, two lead developers that were involved in the past with this community (Roland D. and Pyte W.) were working on user-space cache with small kernel part that only deals with propagating MMU notifications to user-space, I don't think they did it 10y ago just to stop hfi1 novel developments in 2016, do you think so?

Quoted 2 lines

Intel has worked their ass off in the name of your review requests so far. The entire rdmavt code base was at your request.

[...]

And where are you Doug, re this code repetition in three drivers @ row?

Or.
--
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