From patchwork Wed Nov 20 17:04:49 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ismail, Mustafa" X-Patchwork-Id: 1198429 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org (client-ip=140.211.166.136; helo=silver.osuosl.org; envelope-from=intel-wired-lan-bounces@osuosl.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=intel.com Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 47J9cj17LLz9s7T for ; Thu, 21 Nov 2019 05:06:44 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 815FB245E3; Wed, 20 Nov 2019 18:06:43 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6O8RhMuYpubQ; Wed, 20 Nov 2019 18:06:40 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id CDDCC204D9; Wed, 20 Nov 2019 18:06:40 +0000 (UTC) X-Original-To: intel-wired-lan@lists.osuosl.org Delivered-To: intel-wired-lan@lists.osuosl.org Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id BEE421BF3D0 for ; Wed, 20 Nov 2019 17:05:17 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id AB63787D42 for ; Wed, 20 Nov 2019 17:05:17 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id V+XFlp2HmlO5 for ; Wed, 20 Nov 2019 17:05:16 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by whitealder.osuosl.org (Postfix) with ESMTPS id 23B0587D36 for ; Wed, 20 Nov 2019 17:05:16 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 20 Nov 2019 09:05:15 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,222,1571727600"; d="scan'208";a="237810703" Received: from mustafai-mobl1.amr.corp.intel.com ([10.122.128.226]) by fmsmga002.fm.intel.com with ESMTP; 20 Nov 2019 09:05:15 -0800 From: Mustafa Ismail To: intel-wired-lan@lists.osuosl.org Date: Wed, 20 Nov 2019 11:04:49 -0600 Message-Id: <20191120170505.34804-1-mustafa.ismail@intel.com> X-Mailer: git-send-email 2.17.0 X-Mailman-Approved-At: Wed, 20 Nov 2019 18:06:27 +0000 Subject: [Intel-wired-lan] [PATCH rdma-next 00/16] Add Intel Ethernet Protocol Driver for RDMA (irdma) X-BeenThere: intel-wired-lan@osuosl.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Wired Ethernet Linux Kernel Driver Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mustafa.ismail@intel.com, sindhu.devale@intel.com, "Shiraz, Saleem" MIME-Version: 1.0 Errors-To: intel-wired-lan-bounces@osuosl.org Sender: "Intel-wired-lan" From: "Shiraz, Saleem" This patchset adds a unified Intel Ethernet Protocol Driver for RDMA that supports a new network device E810 (iWARP and RoCEv2 capable) and the existing X722 iWARP device. The driver architecture provides the extensibility for future generations of Intel HW supporting RDMA. This driver replaces the legacy X722 driver i40iw and extends the ABI already defined for i40iw. It is backward compatible with legacy X722 rdma-core provider (libi40iw). This series was built against the rdma for-next branch. RFC-->v0: ------------ *Rehashed the design to unify RDMA driver. irdma is registered as a virtbus driver which binds to virtbus devices added by individual netdev drivers i40e/ice. Listening to netdev notifiers or running netdev lists are no longer needed for attachment. There is no load order dependencies between netdev drivers and irdma in the new model. *Remove asynchronous handling in i40iw_l2param_change() and serialize l2 param change *Remove major/minor peer driver ver. checks *Cleanup QP resources while unwinding from error in irdma_kmode_qp() itself. *Remove MAKE_MASK macro *Separate SQ and RQ work tracker array instead of using a single tracker array to hold non-uniform objects. *Remove i40iw driver in current series. *Use netdev_to_ibdev API to reliably get iwdev in notifiers. Remove VSI dev list tracking as a result. *Fixed build make W=1 issues, sparse endianness warnings, 0-day 32-bit compile warnings. *Test for userspaceness with udata and remove uobject references. *Remove abstractions for memory allocators, dev_* and pr_* prints. *Remove redundant castings in the driver. *Relax barriers to a dma_wmb()/dma_rmb() since we are using coherent mappings. *Clang-format run on various portions of the driver. *Remove internal verb objects tracking from driver as its already done in IB core. *Report correct values for max_send_wr and max_recv_wr in irdma_query_qp() *Check and fail the call for invalid input values on irdma_create_qp(). *ABI fixups - __aligned_u64 on all u64s. Fix travis hit and removed irdma_hw_attrs struct out of ABI. *Use IRDMA_RING_MOVE_HEAD_NO_CHECK on cq_ring *Sort call tables, Kconfig, Makefiles *Add CQ resize feature and few fixes since RFC was published. *Use same DRIVER_ID enum for irdma as i40iw. *Updated ib_copy_from_udata/ib_copy_to_udata calls to do a safe copy() *Adapt to core handling verb object allocations and other core API changes *devlink is used to switch between RoCE and iWARP on a per function basis *various driver fixes. Michael J. Ruhl (1): RDMA/irdma: Add dynamic tracing for CM Mustafa Ismail (13): RDMA/irdma: Add driver framework definitions RDMA/irdma: Implement device initialization definitions RDMA/irdma: Implement HW Admin Queue OPs RDMA/irdma: Add HMC backing store setup functions RDMA/irdma: Add privileged UDA queue implementation RDMA/irdma: Add QoS definitions RDMA/irdma: Add connection manager RDMA/irdma: Add PBLE resource manager RDMA/irdma: Implement device supported verb APIs RDMA/irdma: Add RoCEv2 UD OP support RDMA/irdma: Add user/kernel shared libraries RDMA/irdma: Add miscellaneous utility definitions RDMA/irdma: Add ABI definitions Shiraz Saleem (2): RDMA: Add irdma Kconfig/Makefile and remove i40iw RDMA/irdma: Update MAINTAINERS file Documentation/ABI/stable/sysfs-class-infiniband | 18 - MAINTAINERS | 8 +- drivers/infiniband/Kconfig | 2 +- drivers/infiniband/hw/Makefile | 2 +- drivers/infiniband/hw/i40iw/Kconfig | 9 - drivers/infiniband/hw/i40iw/Makefile | 9 - drivers/infiniband/hw/i40iw/i40iw.h | 602 --- drivers/infiniband/hw/i40iw/i40iw_cm.c | 4422 ----------------- drivers/infiniband/hw/i40iw/i40iw_cm.h | 462 -- drivers/infiniband/hw/i40iw/i40iw_ctrl.c | 5198 -------------------- drivers/infiniband/hw/i40iw/i40iw_d.h | 1737 ------- drivers/infiniband/hw/i40iw/i40iw_hmc.c | 821 ---- drivers/infiniband/hw/i40iw/i40iw_hmc.h | 241 - drivers/infiniband/hw/i40iw/i40iw_hw.c | 852 ---- drivers/infiniband/hw/i40iw/i40iw_main.c | 2068 -------- drivers/infiniband/hw/i40iw/i40iw_osdep.h | 217 - drivers/infiniband/hw/i40iw/i40iw_p.h | 128 - drivers/infiniband/hw/i40iw/i40iw_pble.c | 612 --- drivers/infiniband/hw/i40iw/i40iw_pble.h | 131 - drivers/infiniband/hw/i40iw/i40iw_puda.c | 1493 ------ drivers/infiniband/hw/i40iw/i40iw_puda.h | 188 - drivers/infiniband/hw/i40iw/i40iw_register.h | 1030 ---- drivers/infiniband/hw/i40iw/i40iw_status.h | 101 - drivers/infiniband/hw/i40iw/i40iw_type.h | 1363 ------ drivers/infiniband/hw/i40iw/i40iw_uk.c | 1232 ----- drivers/infiniband/hw/i40iw/i40iw_user.h | 430 -- drivers/infiniband/hw/i40iw/i40iw_utils.c | 1557 ------ drivers/infiniband/hw/i40iw/i40iw_verbs.c | 2788 ----------- drivers/infiniband/hw/i40iw/i40iw_verbs.h | 179 - drivers/infiniband/hw/i40iw/i40iw_vf.c | 85 - drivers/infiniband/hw/i40iw/i40iw_vf.h | 62 - drivers/infiniband/hw/i40iw/i40iw_virtchnl.c | 756 --- drivers/infiniband/hw/i40iw/i40iw_virtchnl.h | 124 - drivers/infiniband/hw/irdma/Kconfig | 11 + drivers/infiniband/hw/irdma/Makefile | 28 + drivers/infiniband/hw/irdma/cm.c | 4515 +++++++++++++++++ drivers/infiniband/hw/irdma/cm.h | 414 ++ drivers/infiniband/hw/irdma/ctrl.c | 5990 +++++++++++++++++++++++ drivers/infiniband/hw/irdma/defs.h | 2129 ++++++++ drivers/infiniband/hw/irdma/hmc.c | 705 +++ drivers/infiniband/hw/irdma/hmc.h | 218 + drivers/infiniband/hw/irdma/hw.c | 2596 ++++++++++ drivers/infiniband/hw/irdma/i40iw_hw.c | 209 + drivers/infiniband/hw/irdma/i40iw_hw.h | 162 + drivers/infiniband/hw/irdma/i40iw_if.c | 222 + drivers/infiniband/hw/irdma/icrdma_hw.c | 74 + drivers/infiniband/hw/irdma/icrdma_hw.h | 62 + drivers/infiniband/hw/irdma/irdma.h | 190 + drivers/infiniband/hw/irdma/irdma_if.c | 463 ++ drivers/infiniband/hw/irdma/main.c | 625 +++ drivers/infiniband/hw/irdma/main.h | 652 +++ drivers/infiniband/hw/irdma/osdep.h | 106 + drivers/infiniband/hw/irdma/pble.c | 510 ++ drivers/infiniband/hw/irdma/pble.h | 135 + drivers/infiniband/hw/irdma/protos.h | 91 + drivers/infiniband/hw/irdma/puda.c | 1690 +++++++ drivers/infiniband/hw/irdma/puda.h | 186 + drivers/infiniband/hw/irdma/status.h | 69 + drivers/infiniband/hw/irdma/trace.c | 112 + drivers/infiniband/hw/irdma/trace.h | 3 + drivers/infiniband/hw/irdma/trace_cm.h | 458 ++ drivers/infiniband/hw/irdma/type.h | 1709 +++++++ drivers/infiniband/hw/irdma/uda.c | 390 ++ drivers/infiniband/hw/irdma/uda.h | 64 + drivers/infiniband/hw/irdma/uda_d.h | 382 ++ drivers/infiniband/hw/irdma/uk.c | 1744 +++++++ drivers/infiniband/hw/irdma/user.h | 450 ++ drivers/infiniband/hw/irdma/utils.c | 2407 +++++++++ drivers/infiniband/hw/irdma/verbs.c | 4358 +++++++++++++++++ drivers/infiniband/hw/irdma/verbs.h | 199 + drivers/infiniband/hw/irdma/ws.c | 395 ++ drivers/infiniband/hw/irdma/ws.h | 39 + include/uapi/rdma/i40iw-abi.h | 107 - include/uapi/rdma/ib_user_ioctl_verbs.h | 1 + include/uapi/rdma/irdma-abi.h | 131 + 75 files changed, 34900 insertions(+), 29028 deletions(-) delete mode 100644 drivers/infiniband/hw/i40iw/Kconfig delete mode 100644 drivers/infiniband/hw/i40iw/Makefile delete mode 100644 drivers/infiniband/hw/i40iw/i40iw.h delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_cm.c delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_cm.h delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_ctrl.c delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_d.h delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_hmc.c delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_hmc.h delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_hw.c delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_main.c delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_osdep.h delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_p.h delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_pble.c delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_pble.h delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_puda.c delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_puda.h delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_register.h delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_status.h delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_type.h delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_uk.c delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_user.h delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_utils.c delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_verbs.c delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_verbs.h delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_vf.c delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_vf.h delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_virtchnl.c delete mode 100644 drivers/infiniband/hw/i40iw/i40iw_virtchnl.h create mode 100644 drivers/infiniband/hw/irdma/Kconfig create mode 100644 drivers/infiniband/hw/irdma/Makefile create mode 100644 drivers/infiniband/hw/irdma/cm.c create mode 100644 drivers/infiniband/hw/irdma/cm.h create mode 100644 drivers/infiniband/hw/irdma/ctrl.c create mode 100644 drivers/infiniband/hw/irdma/defs.h create mode 100644 drivers/infiniband/hw/irdma/hmc.c create mode 100644 drivers/infiniband/hw/irdma/hmc.h create mode 100644 drivers/infiniband/hw/irdma/hw.c create mode 100644 drivers/infiniband/hw/irdma/i40iw_hw.c create mode 100644 drivers/infiniband/hw/irdma/i40iw_hw.h create mode 100644 drivers/infiniband/hw/irdma/i40iw_if.c create mode 100644 drivers/infiniband/hw/irdma/icrdma_hw.c create mode 100644 drivers/infiniband/hw/irdma/icrdma_hw.h create mode 100644 drivers/infiniband/hw/irdma/irdma.h create mode 100644 drivers/infiniband/hw/irdma/irdma_if.c create mode 100644 drivers/infiniband/hw/irdma/main.c create mode 100644 drivers/infiniband/hw/irdma/main.h create mode 100644 drivers/infiniband/hw/irdma/osdep.h create mode 100644 drivers/infiniband/hw/irdma/pble.c create mode 100644 drivers/infiniband/hw/irdma/pble.h create mode 100644 drivers/infiniband/hw/irdma/protos.h create mode 100644 drivers/infiniband/hw/irdma/puda.c create mode 100644 drivers/infiniband/hw/irdma/puda.h create mode 100644 drivers/infiniband/hw/irdma/status.h create mode 100644 drivers/infiniband/hw/irdma/trace.c create mode 100644 drivers/infiniband/hw/irdma/trace.h create mode 100644 drivers/infiniband/hw/irdma/trace_cm.h create mode 100644 drivers/infiniband/hw/irdma/type.h create mode 100644 drivers/infiniband/hw/irdma/uda.c create mode 100644 drivers/infiniband/hw/irdma/uda.h create mode 100644 drivers/infiniband/hw/irdma/uda_d.h create mode 100644 drivers/infiniband/hw/irdma/uk.c create mode 100644 drivers/infiniband/hw/irdma/user.h create mode 100644 drivers/infiniband/hw/irdma/utils.c create mode 100644 drivers/infiniband/hw/irdma/verbs.c create mode 100644 drivers/infiniband/hw/irdma/verbs.h create mode 100644 drivers/infiniband/hw/irdma/ws.c create mode 100644 drivers/infiniband/hw/irdma/ws.h delete mode 100644 include/uapi/rdma/i40iw-abi.h create mode 100644 include/uapi/rdma/irdma-abi.h