Re: [PATCH for-next v4] RDMA/efa: CQ notifications

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

 



On Sun, Oct 03, 2021 at 01:56:04PM +0300, Gal Pressman wrote:
> This patch adds support for CQ notifications through the standard verbs
> api.
> 
> In order to achieve that, a new event queue (EQ) object is introduced,
> which is in charge of reporting completion events to the driver.
> On driver load, EQs are allocated and their affinity is set to a single
> cpu. When a user app creates a CQ with a completion channel, the
> completion vector number is converted to a EQ number, which is in charge
> of reporting the CQ events.
> 
> In addition, the CQ creation admin command now returns an offset for the
> CQ doorbell, which is mapped to the userspace provider and is used to
> arm the CQ when requested by the user.
> 
> The EQs use a single doorbell (located on the registers BAR), which
> encodes the EQ number and arm as part of the doorbell value.
> The EQs are polled by the driver on each new EQE, and arm it when the
> poll is completed.
> 
> Reviewed-by: Firas JahJah <firasj@xxxxxxxxxx>
> Reviewed-by: Yossi Leybovich <sleybo@xxxxxxxxxx>
> Signed-off-by: Gal Pressman <galpress@xxxxxxxxxx>
> ---
> PR was sent:
> https://github.com/linux-rdma/rdma-core/pull/1044
> 
> Changelog -
> v3->v4: https://lore.kernel.org/linux-rdma/20210930121602.63131-1-galpress@xxxxxxxxxx/
> * Change destroy EQ functions' return value to void
> 
> v2->v3: https://lore.kernel.org/linux-rdma/20210913120406.61745-1-galpress@xxxxxxxxxx/
> * Only store CQs with interrupts enabled in the CQs xarray
> * Add a comment before the xa_load to explain why it is safe
> 
> v1->v2: https://lore.kernel.org/linux-rdma/20210811151131.39138-1-galpress@xxxxxxxxxx/
> * Replace xa_init_flags() with xa_init()
> * Add a synchronize_irq() in destroy_cq flow to prevent a race with
>   interrupt flow.
> ---
>  drivers/infiniband/hw/efa/efa.h               |  19 +-
>  .../infiniband/hw/efa/efa_admin_cmds_defs.h   | 100 +++++++++-
>  drivers/infiniband/hw/efa/efa_admin_defs.h    |  41 ++++
>  drivers/infiniband/hw/efa/efa_com.c           | 164 ++++++++++++++++
>  drivers/infiniband/hw/efa/efa_com.h           |  38 +++-
>  drivers/infiniband/hw/efa/efa_com_cmd.c       |  35 +++-
>  drivers/infiniband/hw/efa/efa_com_cmd.h       |  10 +-
>  drivers/infiniband/hw/efa/efa_main.c          | 181 +++++++++++++++---
>  drivers/infiniband/hw/efa/efa_regs_defs.h     |   7 +-
>  drivers/infiniband/hw/efa/efa_verbs.c         |  67 ++++++-
>  include/uapi/rdma/efa-abi.h                   |  18 +-
>  11 files changed, 625 insertions(+), 55 deletions(-)

Applied to for-next, thanks

Jason



[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