RE: [PATCH for-next v3 00/12] Elastic RDMA Adapter (ERDMA) driver

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

 



> -----Original Message-----
> From: Cheng Xu <chengyou.xc@xxxxxxxxxxxxxxx>
> Sent: Thursday, 17 February 2022 04:01
> To: jgg@xxxxxxxx; dledford@xxxxxxxxxx
> Cc: leon@xxxxxxxxxx; linux-rdma@xxxxxxxxxxxxxxx;
> KaiShen@xxxxxxxxxxxxxxxxx; chengyou@xxxxxxxxxxxxxxxxx;
> tonylu@xxxxxxxxxxxxxxxxx
> Subject: [EXTERNAL] [PATCH for-next v3 00/12] Elastic RDMA Adapter (ERDMA)
> driver
> 
> From: Cheng Xu <chengyou@xxxxxxxxxxxxxxxxx>
> 
> Hello all,
> 
> This v3 patch set introduces the Elastic RDMA Adapter (ERDMA) driver,
> which released in Apsara Conference 2021 by Alibaba. The PR of ERDMA
> userspace provider has already been created [1].
> 

Is this only at my side? I did not get [09/12] of that v3 set.
If yes, I'll find a way to comment on that as well if
needed. I see it at patchwork.

I am traveling these days, therefore cannot comment before mid
next week.

Thanks,
Bernard.

> ERDMA enables large-scale RDMA acceleration capability in Alibaba ECS
> environment, initially offered in g7re instance. It can improve the
> efficiency of large-scale distributed computing and communication
> significantly and expand dynamically with the cluster scale of Alibaba
> Cloud.
> 
> ERDMA is a RDMA networking adapter based on the Alibaba MOC hardware. It
> works in the VPC network environment (overlay network), and uses iWarp
> tranport protocol. ERDMA supports reliable connection (RC). ERDMA also
> supports both kernel space and user space verbs. Now we have already
> supported HPC/AI applications with libfabric, NoF and some other internal
> verbs libraries, such as xrdma, epsl, etc,.
> 
> For the ECS instance with RDMA enabled, our MOC hardware generates two
> kinds of PCI devices: one for ERDMA, and one for the original net device
> (virtio-net). They are separated PCI devices, using "rdma link" command
> with a filter inside our rdma_link_ops.newlink implementation can bind
> them together properly.
> 
> Besides, this patchset contains a change in iw_query_port to fix this
> issue [2]. This change lets the device drivers decide the return value of
> iw_query_port when attached netdev is NULL. After this change, erdma can
> register device successfully in pci probe function, and keep port state
> invalid until a netdev is binded to it.
> 
> Fixed issues or changes in v3:
> - Change char limit of column from 100 to 80.
> - Remove unnecessary field or structure definitions in erdma.h.
> - Use exactly type (bool, unsigned int) instead of "int" in erdma_dev.
> - Make ibdev and pci device having the same lifecycle. ERDMA will remain
>   an invalid port state until binded to the corresponding netdev.
> - ib_core: allow query_port when netdev is NULL for iWarp device.
> - Move large inline function in erdma.h to .c files.
> - Use dev_{info, warn, err} or ibdev_{info, warn, err} instead of
>   pr_{info, warn, err} function calls.
> - Remove print function calls in userspace-triggered paths.
> - Add necessary comments in CM part.
> - Remove unused entries in map_cqe_opcode[] table.
> - Use rdma_is_kernel_res instead of self-definitions.
> - Remove unsed resources counter in erdma_dev.
> - Use pgprot_device instead of pgprot_noncached in erdma_mmap.
> - Remove disassociate_ucontext interface implementation
> 
> Fixed issues in v2:
> - No "extern" to function declarations.
> - No inline functions in .c files, no void casting for functions with
>   return values.
> - Based on siw's newest kernel version, rewrite the code (mainly CM and
>   CM related part) which originally based on an old siw version.
>   version.
> - remove debugfs.
> - fix issues reported by kernel test rebot.
> - Using RDMA_NLDEV_CMD_NEWLINK instead of binding in net notifiers.
> 
> [1] INVALID URI REMOVED
> 2Drdma_rdma-2Dcore_pull_1126&d=DwIDAg&c=jf_iaSHvJObTbx-siA1ZOg&r=2TaYXQ0T-
> r8ZO1PP1alNwU_QJcRRLfmYTAgd3QCvqSc&m=9gxrBXG7blRayxtoienSVg7YyPPJMAAu4E7n8
> f0iVb0&s=kts7JTxieb-ucOD3UuuDRc5Uj11VfZzDaGgM4sqSja8&e=
> [2] INVALID URI REMOVED
> 3A__lore.kernel.org_all_20220118141324.GF8034-
> 40ziepe.ca_&d=DwIDAg&c=jf_iaSHvJObTbx-siA1ZOg&r=2TaYXQ0T-
> r8ZO1PP1alNwU_QJcRRLfmYTAgd3QCvqSc&m=9gxrBXG7blRayxtoienSVg7YyPPJMAAu4E7n8
> f0iVb0&s=pVyZk1TUR5kwTKlSwxvwRyqKCt8ABKRxNf5Qze860Lc&e=
> 
> Thanks,
> Cheng Xu
> 
> Cheng Xu (12):
>   RDMA: Add ERDMA to rdma_driver_id definition
>   RDMA/core: Allow calling query_port when netdev isn't attached in
>     iWarp
>   RDMA/erdma: Add the hardware related definitions
>   RDMA/erdma: Add main include file
>   RDMA/erdma: Add cmdq implementation
>   RDMA/erdma: Add event queue implementation
>   RDMA/erdma: Add verbs header file
>   RDMA/erdma: Add verbs implementation
>   RDMA/erdma: Add connection management (CM) support
>   RDMA/erdma: Add the erdma module
>   RDMA/erdma: Add the ABI definitions
>   RDMA/erdma: Add driver to kernel build environment
> 
>  MAINTAINERS                               |    8 +
>  drivers/infiniband/Kconfig                |    1 +
>  drivers/infiniband/core/device.c          |    7 +-
>  drivers/infiniband/hw/Makefile            |    1 +
>  drivers/infiniband/hw/erdma/Kconfig       |   10 +
>  drivers/infiniband/hw/erdma/Makefile      |    4 +
>  drivers/infiniband/hw/erdma/erdma.h       |  288 ++++
>  drivers/infiniband/hw/erdma/erdma_cm.c    | 1440 ++++++++++++++++++++
>  drivers/infiniband/hw/erdma/erdma_cm.h    |  167 +++
>  drivers/infiniband/hw/erdma/erdma_cmdq.c  |  512 ++++++++
>  drivers/infiniband/hw/erdma/erdma_cq.c    |  202 +++
>  drivers/infiniband/hw/erdma/erdma_eq.c    |  366 ++++++
>  drivers/infiniband/hw/erdma/erdma_hw.h    |  480 +++++++
>  drivers/infiniband/hw/erdma/erdma_main.c  |  629 +++++++++
>  drivers/infiniband/hw/erdma/erdma_qp.c    |  567 ++++++++
>  drivers/infiniband/hw/erdma/erdma_verbs.c | 1447 +++++++++++++++++++++
>  drivers/infiniband/hw/erdma/erdma_verbs.h |  345 +++++
>  include/uapi/rdma/erdma-abi.h             |   49 +
>  include/uapi/rdma/ib_user_ioctl_verbs.h   |    1 +
>  19 files changed, 6523 insertions(+), 1 deletion(-)
>  create mode 100644 drivers/infiniband/hw/erdma/Kconfig
>  create mode 100644 drivers/infiniband/hw/erdma/Makefile
>  create mode 100644 drivers/infiniband/hw/erdma/erdma.h
>  create mode 100644 drivers/infiniband/hw/erdma/erdma_cm.c
>  create mode 100644 drivers/infiniband/hw/erdma/erdma_cm.h
>  create mode 100644 drivers/infiniband/hw/erdma/erdma_cmdq.c
>  create mode 100644 drivers/infiniband/hw/erdma/erdma_cq.c
>  create mode 100644 drivers/infiniband/hw/erdma/erdma_eq.c
>  create mode 100644 drivers/infiniband/hw/erdma/erdma_hw.h
>  create mode 100644 drivers/infiniband/hw/erdma/erdma_main.c
>  create mode 100644 drivers/infiniband/hw/erdma/erdma_qp.c
>  create mode 100644 drivers/infiniband/hw/erdma/erdma_verbs.c
>  create mode 100644 drivers/infiniband/hw/erdma/erdma_verbs.h
>  create mode 100644 include/uapi/rdma/erdma-abi.h
> 
> --
> 2.27.0





[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