From: Jason Gunthorpe <jgg@nvidia.com>
To: Robert Pearson <rpearsonhpe@gmail.com>
Cc: Zhu Yanjun <zyjzyj2000@gmail.com>,
RDMA mailing list <linux-rdma@vger.kernel.org>
Subject: Re: [PATCH for-next v10 04/11] RDMA/rxe: Replace red-black trees by xarrays
Date: Mon, 28 Feb 2022 13:56:19 -0400 [thread overview]
Message-ID: <20220228175619.GN219866@nvidia.com> (raw)
In-Reply-To: <CAFc_bgasCdwwb6C79cwsHVPv5tw+Sk+vJfe38M0OGbzCaMhv+Q@mail.gmail.com>
On Mon, Feb 28, 2022 at 11:28:44AM -0600, Robert Pearson wrote:
> There is a xa_lock_irqsave()/ublock_irqrestore but I actually need
> some things that they don't support.
> In particular there is not an option to call xa_alloc_cyclic_irqsave
Well, yes, there is actually good reason for this. The lock/unlock
scheme that the allocating xarray functions use can't be trivially
nested like this.
When, and only when, you need to allocate the non-blocking AH you
should use this pattern
xa_lock_irqsave(..)
__xa_alloc_cyclic_reserve(..., GFP_ATOMIC);
xa_lock_irq_restore(..)
Everything else should use a simple _irq (is this even needed?)
variant without nesting under another spinlock
> and I also need an irqsave version of kref_put_lock and had to code
> one which calls the refcount version but again that takes the
> address of a lock and not an xarray. All this is because rdmacm is
> crazy and makes verbs api calls with spinlocks held.
You shouldn't need kref_put_lock at all. It isn't really a kref, just
use a normal refcount and trigger the completion when it reaches
0. Nothing fancy required.
Jason
next prev parent reply other threads:[~2022-02-28 18:19 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-25 19:57 [PATCH for-next v10 00/11] Fix race conditions in rxe_pool Bob Pearson
2022-02-25 19:57 ` [PATCH for-next v10 01/11] RDMA/rxe: Reverse the sense of RXE_POOL_NO_ALLOC Bob Pearson
2022-02-28 17:15 ` Jason Gunthorpe
2022-02-25 19:57 ` [PATCH for-next v10 02/11] RDMA/rxe: Delete _locked() APIs for pool objects Bob Pearson
2022-02-25 19:57 ` [PATCH for-next v10 03/11] RDMA/rxe: Replace obj by elem in declaration Bob Pearson
2022-02-25 19:57 ` [PATCH for-next v10 04/11] RDMA/rxe: Replace red-black trees by xarrays Bob Pearson
2022-02-28 16:57 ` Jason Gunthorpe
2022-02-28 17:28 ` Robert Pearson
2022-02-28 17:56 ` Jason Gunthorpe [this message]
2022-02-25 19:57 ` [PATCH for-next v10 05/11] RDMA/rxe: Stop lookup of partially built objects Bob Pearson
2022-02-28 17:01 ` Jason Gunthorpe
2022-02-25 19:57 ` [PATCH for-next v10 06/11] RDMA/rxe: Add wait_for_completion to pool objects Bob Pearson
2022-02-28 17:05 ` Jason Gunthorpe
2022-02-25 19:57 ` [PATCH for-next v10 07/11] RDMA/rxe: Fix ref error in rxe_av.c Bob Pearson
2022-02-28 17:06 ` Jason Gunthorpe
2022-02-25 19:57 ` [PATCH for-next v10 08/11] RDMA/rxe: Replace mr by rkey in responder resources Bob Pearson
2022-02-25 19:57 ` [PATCH for-next v10 09/11] RDMA/rxe: Convert read side locking to rcu Bob Pearson
2022-02-28 17:12 ` Jason Gunthorpe
2022-02-25 19:57 ` [PATCH for-next v10 10/11] RDMA/rxe: Move max_elem into rxe_type_info Bob Pearson
2022-02-25 19:57 ` [PATCH for-next v10 11/11] RDMA/rxe: Cleanup rxe_pool.c Bob Pearson
2022-02-25 20:46 ` [PATCH for-next v10 00/11] Fix race conditions in rxe_pool Jason Gunthorpe
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=20220228175619.GN219866@nvidia.com \
--to=jgg@nvidia.com \
--cc=linux-rdma@vger.kernel.org \
--cc=rpearsonhpe@gmail.com \
--cc=zyjzyj2000@gmail.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.