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
>
>
next prev 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).