Re: [PATCH for-next v7 00/11] RDMA/efa: Elastic Fabric Adapter (EFA) driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 06-May-19 21:20, Jason Gunthorpe wrote:
> On Sun, May 05, 2019 at 08:59:20PM +0300, Gal Pressman wrote:
>> Hello all,
>> The following v7 patchset introduces the Amazon Elastic Fabric Adapter (EFA)
>> driver.
>>
>> EFA is a networking adapter designed to support user space network
>> communication, initially offered in the Amazon EC2 environment. First release
>> of EFA supports datagram send/receive operations and does not support
>> connection-oriented or read/write operations.
>>
>> EFA supports Unreliable Datagrams (UD) as well as a new unordered, Scalable
>> Reliable Datagram protocol (SRD). SRD provides support for reliable datagrams
>> and more complete error handling than typical RD, but, unlike RD, it does not
>> support ordering nor segmentation.
>>
>> EFA reliable datagram transport provides reliable out-of-order delivery,
>> transparently utilizing multiple network paths to reduce network tail
>> latency. Its interface is similar to UD, in particular it supports
>> message size up to MTU, with error handling extended to support reliable
>> communication. More information regarding SRD can be found at [1].
>>
>> Kernel verbs and in-kernel services are initially not supported but are planned
>> for future releases.
>>
>> EFA enabled EC2 instances have two different devices allocated, one for ENA
>> (netdev) and one for EFA, the two are separate pci devices with no in-kernel
>> communication between them.
>>
>> This patchset also introduces RDMA subsystem ibdev_* print helpers which should
>> be used by the other new drivers that are currently under review (irdma, siw)
>> and over time by all drivers in the subsystem.
>> The print format is similar to the netdev_* helpers.
>>
>> PR for rdma-core provider was sent:
>> https://github.com/linux-rdma/rdma-core/pull/475
>>
>> Thanks to everyone who took the time to review our last submissions (Jason, Doug,
>> Sean, Dennis, Leon, Christoph, Parav, Sagi, Steve, Shiraz), it is very
>> appreciated.
>>
>> Issues addressed in v7:
>> * Remove unused list field in mmap entry (Jason)
>> * Protect mmap xarray operations with a lock (Jason)
>> * Outstanding comments will be fixed in follow-up submission
>>
>> Issues addressed in v6:
>> * Remove BUG_ONs from __dynamic_ibdev_dbg
>> * Remove redundant udata checks (Leon)
>> * Remove rdma_user_mmap_page usage
>> * Remove umem->page_shift usage
>> * Make efa_destroy_qp_handle function static
>> * Misc prints cleanups
>>
>> Issues addressed in v5:
>> * Adapt to subsystem verbs API changes
>> * Remove unnecessary 'do ... while' in ibdev_dbg (Jason)
>> * Use a non-macro implementation for ibdev_dbg (Jason)
>> * Use for_each_sg_dma_page() in umem iterations (Jason)
>> * Remove unused enum value EFA_ADMIN_START_CMD_RANGE (Leon)
>> * Don't assume the sg element offset is zero (Jason)
>> * Cherry-picked Shiraz's new ib_umem_find_single_pg_size() work, encountered
>>   some issues, debugging with Shiraz off-list. Will convert to use his work once
>>   solved.
>>
>> Issues addressed in v4:
>> * Add RDMA subsystem ibdev_* printk helpers (Leon, Jason)
>> * Use xarray for mmap keys (Jason)
>> * Use module_pci_driver macro (Jason)
>> * Remove redundant cast in efa_remove (Jason)
>> * Avoid unnecessary use of pci_get_drvdata (Jason)
>> * Remove unnecessary admin queue sizes macros (Leon)
>> * Remove EFA_DEVICE_RUNNING bit (Leon, Jason)
>> * Remove incorrect comment in efa_com_validate_version (Leon)
>> * Keep lists sorted (Jason)
>> * Keep efa_com_dev as part of efa_dev instead of allocating it (Jason)
>>
>> Issues addressed in v3:
>> * Use new rdma_udata_to_drv_context API
>> * Adapt to new core ucontext allocations
>> * Remove EFA transport/protocol/node type and use unspecified instead (Leon, Jason)
>> * Replace stats lock with atomic variables (Leon, Jason, Steve)
>> * Remove vertical alignment from structs (Steve)
>> * Remove license text from ABI file (Leon)
>> * Undefine macro when it's no longer used (Steve)
>> * Fix kdoc formatting (Steve)
>> * Remove unneeded lock from reg read destroy flow (Steve)
>> * Prefer {} initializations over memset (Leon)
>> * Remove highmem WARN_ON_ONCE (Steve)
>> * ib_alloc_device returns NULL in case of error (Leon)
>> * Remove redundant check from remove remove device flow (Leon)
>> * Remove redundant zero assignments after memsets
>> * Remove unnecessary WARN_ON_ONCEs from create QP verbs (Steve)
>> * Remove redundant memsets (Steve, Shiraz)
>> * Change all non-privileged flows error prints to debug level (Steve, Leon, Jason, Shiraz)
>> * Remove likely/unlikelys from control path (Leon, Jason)
>> * Fixes to reg MR indirect flow wrong PAGE_SIZE usage (Jason)
>> * Use decimal array size in ABI file (Steve)
>> * Remove redundant comments (Steve, Shiraz)
>> * Change efa_verbs.c to GPL-2.0 OR Linux-OpenIB license (Leon, Jason)
>> * Replace WARN in admin completion processing with WARN_ONCE (Steve)
>>
>> Major issues addressed in this v2:
>> * Userspace libibverbs provider is implemented and attached for review.
>> * Respect the atomic requirement of create/destroy AH flows using the new
>>   sleepable flag [2].
>> * Change link layer from Ethernet to Unspecified (Proprietary EC2 link layer).
>> * Use RDMA mmap API.
>> * Coherent DMA memory is no longer mapped to the userspace, streaming DMA
>>   mappings are used instead.
>> * Introduce alloc/dealloc PD admin commands, PDs are now backed by an object on
>>   the device. This removes the bitmap used for PD number allocations.
>> * Addressed the mmap lifetime issues:
>>   Each ucontext now uses a new User Access Region (UAR) abstraction.
>>   Objects which are tied to a specific UAR will not be allocated to a different
>>   user until the UAR is deallocated (on application exit).
>>   DMA memory will be unmapped when the QP/CQ is destroyed, but the buffers will
>>   remain allocated until application exit.
>>   The mmap entries now remain valid until application exit and allow for reuse
>>   of the same mmap key more than once.
>> * SRD QP type is now a driver QP type (previously was IB_QPT_SRD).
>> * Match UD QP Infiniband semantics, including 40 bytes offset, state transitions,
>>   QKey validation, etc.
>> * Move AH reference counts to the device (previously was in the driver).
>>   When creating more than one AH with the same GID, the same device resource is
>>   used internally. Instead of keeping the reference count in the driver (and issue
>>   one create AH command only), each AH creation is now passed on to the device
>>   (accompanied with the PD number).
>>   This allows for future optimizations for AHs that are no longer used by a
>>   specific PD.
>> * Removed all stub functions, which will mark EFA driver as a non-kverbs provider [3].
>> * Replace all pr_* prints with dev_* prints
>>
>> [1] https://github.com/amzn/rdma-core/wiki/SRD
>> [2] https://patchwork.kernel.org/cover/10725727/
>> [3] https://patchwork.kernel.org/cover/10775039/
>>
>> Thanks,
>> Gal
>>
>> Gal Pressman (11):
>>   RDMA: Add EFA related definitions
>>   RDMA/efa: Add EFA device definitions
>>   RDMA/efa: Add the efa.h header file
>>   RDMA/efa: Add the efa_com.h file
>>   RDMA/efa: Add the com service API definitions
>>   RDMA/efa: Add the ABI definitions
>>   RDMA/efa: Implement functions that submit and complete admin commands
>>   RDMA/efa: Add common command handlers
>>   RDMA/efa: Add EFA verbs implementation
>>   RDMA/efa: Add the efa module
>>   RDMA/efa: Add driver to Kconfig/Makefile
> 
> I've tentatively applied this to for-next, pending your ack of my
> changes.

Thanks!
Other than the minor fixes I posted the changes looks good.

Acked-by: Gal Pressman <galpress@xxxxxxxxxx>



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux