All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Bernard Metzler" <BMT@zurich.ibm.com>
To: "Michal Kalderon" <michal.kalderon@marvell.com>
Cc: <mkalderon@marvell.com>, <aelior@marvell.com>, <jgg@ziepe.ca>,
	<dledford@redhat.com>, <galpress@amazon.com>, <sleybo@amazon.com>,
	<leon@kernel.org>, <linux-rdma@vger.kernel.org>
Subject: Re: [PATCH v9 rdma-next 0/7] RDMA/qedr: Use the doorbell overflow recovery mechanism for RDMA
Date: Tue, 3 Sep 2019 11:37:13 +0000	[thread overview]
Message-ID: <OF54E87903.EA13ABB5-ON0025846A.003EBEF2-0025846A.003FD51F@notes.na.collabserv.com> (raw)
In-Reply-To: <20190902162314.17508-1-michal.kalderon@marvell.com>

-----"Michal Kalderon" <michal.kalderon@marvell.com> wrote: -----

>To: <mkalderon@marvell.com>, <aelior@marvell.com>, <jgg@ziepe.ca>,
><dledford@redhat.com>, <bmt@zurich.ibm.com>, <galpress@amazon.com>,
><sleybo@amazon.com>, <leon@kernel.org>
>From: "Michal Kalderon" <michal.kalderon@marvell.com>
>Date: 09/02/2019 06:25PM
>Cc: <linux-rdma@vger.kernel.org>, "Michal Kalderon"
><michal.kalderon@marvell.com>
>Subject: [EXTERNAL] [PATCH v9 rdma-next 0/7] RDMA/qedr: Use the
>doorbell overflow recovery mechanism for RDMA
>
>This patch series uses the doorbell overflow recovery mechanism
>introduced in
>commit 36907cd5cd72 ("qed: Add doorbell overflow recovery mechanism")
>for rdma ( RoCE and iWARP )
>


Hi Michal,

I wanted to try out things -- can you please help me:
Where would that patch apply to? I tried rdma-next
master and for-next. I am getting conflicts in
drivers/infiniband/core/ib_core_uverbs.c. Is there
any previous patch needed for this series?

Thanks very much and best regards,
Bernard.


>The first five patches modify the core code to contain helper
>functions for managing mmap_xa inserting, getting and freeing
>entries. The code was based on the code from efa driver.
>There is still an open discussion on whether we should take
>this even further and make the entire mmap generic. Until a
>decision is made, I only created the database API and modified
>the efa, qedr, siw driver to use it. The functions are integrated
>with the umap mechanism.
>
>The doorbell recovery code is based on the common code.
>
>Efa driver was compile tested and checked only modprobe/rmmod.
>SIW was compile tested and checked only modprobe/rmmod.
>
>rdma-core pull request #493
>
>Changes from V8:
>- CORE changes
>  - Fix race between getting an entry and deleting it. Increase
>    the refcount under the lock only if it is not zero.  Erase all
>entries
>    with __xa_erase instead of xa_erase and take the lock outside the
>loop.
>  - Fix comment when erasing all the xa_entries of a single
>mmap_entry.
>  - Take comment out of loop
>  - Change length field in driver structures to be size_t instead of
>u64
>    suggested by Bernard Metzler
>  - Change do..while(true) to while(true)
>- COMMON driver changes
>  - Change mmap length to be size_t instead of u64.
>  - In mmap, call put_entry if there is a length error.
>- EFA changes:
>  - Reverse mmap entries remove order.
>  - Give meaningful label names in create_qp error flows.
>  - In error flow undo change that frees pages based only on key and
>    make sure rq_size > 0 first.
>  - Fix xmas tree alignment, move ucontext initialization to
>declaration
>    line.
>- SIW changes:
>  - Changes received from Bernard Metzler
>	- make the siw_user_mmap_entry.address a void *, which
>	  naturally fits with remap_vmalloc_range. also avoids
>	  other casting during resource address assignment.
>	- do not kfree SQ/RQ/CQ/SRQ in preparation of mmap.
>	  Those resources are always further needed ;)
>	- Fix check for correct mmap range in siw_mmap().
>	  - entry->length is the object length. We have to
>	    expand to PAGE_ALIGN(entry->length), since mmap
>	    comes with complete page(s) containing the
>	    object.
>	  - put mmap_entry if that check fails. Otherwise
>	    entry object ref counting screws up, and later
>	    crashes during context close.
>	- simplify siw_mmap_free() - it must just free
>	  the entry.
>  - Change length to size_t instead of u64
>
>Changes from V7:
>- Remove license text, SPDX id should suffice.
>- Fix some comments text.
>- Add comment regarding vm_ops being set in ib_uverbs_mmap.
>- Allocate the rdma_user_mmap_entry in the driver and not in the
>  ib_core_uverbs. This lead to defining three new structures per
>driver
>  and seperating the fields between the driver private structures and
>  the common rdma_user_mmap_entry. Freeing the entry was also moved
>  to the drivers.
>- Fix bug found by Gal Pressman. Call mmap_free only once per entry.
>- Add a mutex around xa_mmap insert to assure threads won't intefere
>  while the xa lock is released when inserting an entry into the
>range.
>- Modify the insert algorithm to be more elegant using the
>  xas_next_entry instead of foreach.
>- Remove the rdma_user_mmap_entries_remove_free function, now that
>umap.
>  and mmap_xa are integrated we should not have any entries in the
>mmap_xa
>  when ucontext is released. Replace the function with a
>WARN_ON(!xa_empty).
>- Rdma_umap_open needs to reset the vm_private_data before
>initializing it.
>- Decrease rdma_user_mmap_entry reference count on mmap disassociate.
>- Remove WARN_ON(!kref_read) this is checked when kref debug is on.
>- Remove some redundant defines from ib_verbs.h.
>- Better error handling for efa create qp flow.
>- Add a function that wraps the entry allocation and
>rdma_user_mmap_entry_insert
>  which is used in all places that need to add an entry to the
>xarray.
>- Remove rq_entry_inserted field in efa create qp flow.
>- Add mmap_free to siw and free the memory only on mmap free and not
>before.
>
>Changes from V6:
>- Modified series description to be closer to what the series is now.
>- Create a new file for the new rdma_user_mmap function. The file
>  is called ib_uverbs_core. This file should contain functions
>related
>  to user which are called by hw to eventually enable ib_uverbs to be
>  optional.
>- Modify SIW driver to use new mmap api.
>- When calculating number of pages, need to round it up to PAGE_SIZE.
>- Integrate the mmap_xa and umap mechanism so that the entries in
>  mmap_xa now have a reference count and can be removed. Previously
>  entries existed until context was destroyed. This modified the
>  algorithm for allocating a free page range.
>- Modify algorithm for inserting an entry into the mmap_xa.
>- Rdma_umap_priv is now also used for all mmaps done using the
>  mmap_xa helpers.
>- Move remove_free header to core_priv.
>- Rdma_user_mmap_entry now has a kref that is increase on mmap
>  and umap_open and decreased on umap_close.
>- Modify efa + qedr to remove the entry from xa_map. This will
>  decrease the refcnt and free memory only if refcnt is zero.
>- Rdma_user_mmap_io slightly modified to enable drivers not using
>  the xa_mmap API to continue using it.
>- Modify page allocation for user to use GFP_USER instead of
>GFP_KERNEL
>
>Changes from V5:
>- Switch between driver dealloc_ucontext and mmap_entries_remove
>call.
>- No need to verify the key after using the key to load an entry from
>  the mmap_xa.
>- Change mmap_free api to pass an 'entry' object.
>- Add documentation for mmap_free and for newly exported functions.
>- Fix some extra/missing line breaks.
>
>Changes from V4:
>- Add common mmap database and cookie helper functions.
>
>Changes from V3:
>- Remove casts from void to u8. Pointer arithmetic can be done on
>void
>- rebase to tip of rdma-next
>
>Changes from V2:
>- Don't use long-lived kmap. Instead use user-trigger mmap for the
>  doorbell recovery entries.
>- Modify dpi_addr to be denoted with __iomem and avoid redundant
>  casts
>
>Changes from V1:
>- call kmap to map virtual address into kernel space
>- modify db_rec_delete to be void
>- remove some cpu_to_le16 that were added to previous patch which are
>  correct but not related to the overflow recovery mechanism. Will be
>  submitted as part of a different patch
>
>
>Michal Kalderon (7):
>  RDMA/core: Move core content from ib_uverbs to ib_core
>  RDMA/core: Create mmap database and cookie helper functions
>  RDMA/efa: Use the common mmap_xa helpers
>  RDMA/siw: Use the common mmap_xa helpers
>  RDMA/qedr: Use the common mmap API
>  RDMA/qedr: Add doorbell overflow recovery support
>  RDMA/qedr: Add iWARP doorbell recovery support
>
> drivers/infiniband/core/Makefile         |   2 +-
> drivers/infiniband/core/core_priv.h      |  16 +
> drivers/infiniband/core/device.c         |   1 +
> drivers/infiniband/core/ib_core_uverbs.c | 353 ++++++++++++++++++++
> drivers/infiniband/core/rdma_core.c      |   1 +
> drivers/infiniband/core/uverbs_cmd.c     |   1 +
> drivers/infiniband/core/uverbs_main.c    |  97 +-----
> drivers/infiniband/hw/efa/efa.h          |  18 +-
> drivers/infiniband/hw/efa/efa_main.c     |   1 +
> drivers/infiniband/hw/efa/efa_verbs.c    | 360 ++++++++++----------
> drivers/infiniband/hw/qedr/main.c        |   1 +
> drivers/infiniband/hw/qedr/qedr.h        |  45 ++-
> drivers/infiniband/hw/qedr/verbs.c       | 544
>++++++++++++++++++++++---------
> drivers/infiniband/hw/qedr/verbs.h       |   3 +-
> drivers/infiniband/sw/siw/siw.h          |  20 +-
> drivers/infiniband/sw/siw/siw_main.c     |   1 +
> drivers/infiniband/sw/siw/siw_verbs.c    | 216 ++++++------
> drivers/infiniband/sw/siw/siw_verbs.h    |   1 +
> include/rdma/ib_verbs.h                  |  37 ++-
> include/uapi/rdma/qedr-abi.h             |  25 ++
> 20 files changed, 1196 insertions(+), 547 deletions(-)
> create mode 100644 drivers/infiniband/core/ib_core_uverbs.c
>
>-- 
>2.14.5
>
>


  parent reply	other threads:[~2019-09-03 11:37 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-02 16:23 [PATCH v9 rdma-next 0/7] RDMA/qedr: Use the doorbell overflow recovery mechanism for RDMA Michal Kalderon
2019-09-02 16:23 ` [PATCH v9 rdma-next 1/7] RDMA/core: Move core content from ib_uverbs to ib_core Michal Kalderon
2019-09-02 16:23 ` [PATCH v9 rdma-next 2/7] RDMA/core: Create mmap database and cookie helper functions Michal Kalderon
2019-09-02 16:23 ` [PATCH v9 rdma-next 3/7] RDMA/efa: Use the common mmap_xa helpers Michal Kalderon
2019-09-03  8:47   ` Gal Pressman
2019-09-03  9:31     ` Michal Kalderon
2019-09-03 15:07       ` Gal Pressman
2019-09-04  6:48         ` Michal Kalderon
2019-09-02 16:23 ` [PATCH v9 rdma-next 4/7] RDMA/siw: " Michal Kalderon
2019-09-02 16:23 ` [PATCH v9 rdma-next 5/7] RDMA/qedr: Use the common mmap API Michal Kalderon
2019-09-02 16:23 ` [PATCH v9 rdma-next 6/7] RDMA/qedr: Add doorbell overflow recovery support Michal Kalderon
2019-09-02 16:23 ` [PATCH v9 rdma-next 7/7] RDMA/qedr: Add iWARP doorbell " Michal Kalderon
2019-09-03 11:37 ` Bernard Metzler [this message]
2019-09-03 12:50   ` [EXT] Re: [PATCH v9 rdma-next 0/7] RDMA/qedr: Use the doorbell overflow recovery mechanism for RDMA Michal Kalderon
2019-09-03 13:39   ` Bernard Metzler
2019-09-03 14:15 ` [PATCH v9 rdma-next 4/7] RDMA/siw: Use the common mmap_xa helpers Bernard Metzler
2019-09-04  6:50   ` [EXT] " Michal Kalderon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=OF54E87903.EA13ABB5-ON0025846A.003EBEF2-0025846A.003FD51F@notes.na.collabserv.com \
    --to=bmt@zurich.ibm.com \
    --cc=aelior@marvell.com \
    --cc=dledford@redhat.com \
    --cc=galpress@amazon.com \
    --cc=jgg@ziepe.ca \
    --cc=leon@kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=michal.kalderon@marvell.com \
    --cc=mkalderon@marvell.com \
    --cc=sleybo@amazon.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.