From: Rik van Riel <riel@surriel.com>
To: Jason Gunthorpe <jgg@ziepe.ca>, "Liam R. Howlett" <liam@infradead.org>
Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com,
robin.murphy@arm.com, joro@8bytes.org, will@kernel.org,
iommu@lists.linux.dev, kyle@mcmartin.ca,
Rik van Riel <riel@meta.com>
Subject: Re: [PATCH v3 3/3] iova: defer maple tree erase on GFP_ATOMIC failure
Date: Fri, 12 Jun 2026 13:23:58 -0400 [thread overview]
Message-ID: <ff5f9e09edbcb9c87feac6af00a1d835c783be4f.camel@surriel.com> (raw)
In-Reply-To: <20260612164852.GL1066031@ziepe.ca>
On Fri, 2026-06-12 at 13:48 -0300, Jason Gunthorpe wrote:
> On Fri, Jun 12, 2026 at 12:02:55PM -0400, Rik van Riel wrote:
> >
> > The mas_erase() function calls mas_nomem(mas, GFP_KERNEL),
> > which is not safe to call while holding a spinlock.
>
> Oh, the kdoc doesn't say that, it doesn't return any error code if it
> can't allocate memory, and not a single caller checks for erase
> failures.
>
> I assumed internally it "somehow worked out" even though there are
> allocations in the callchains..
>
> This is probably a better question for Liam? Can mtree_erase actually
> fail ENOMEM? Is it safe to call it in an atomic context?
Yes, it can fail.
When it does, __free_iova and friends fall back to
asynchronously freeing the iova from a worker.
If we are ok with always asynchronously freeing
iovas, we might be able to simplify the code by
always going through that helper.
If there are cases where asynchronously freeing
the iova breaks the system, we cannot use the
maple tree, but need the augmented rbtree, instead.
I do still have a cleaned up version of the augmented
rbtree, if asynchronous freeing is a real concern.
--
All Rights Reversed.
next prev parent reply other threads:[~2026-06-12 17:24 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-03 3:35 [PATCH v3 0/3] iova: use maple tree for O(log n) allocation Rik van Riel
2026-06-03 3:35 ` [PATCH v3 1/3] iova: convert from rbtree to maple tree Rik van Riel
2026-06-17 19:55 ` Liam R. Howlett
2026-06-19 3:47 ` Rik van Riel
2026-06-03 3:35 ` [PATCH v3 2/3] iova: add KUnit test suite Rik van Riel
2026-06-03 3:35 ` [PATCH v3 3/3] iova: defer maple tree erase on GFP_ATOMIC failure Rik van Riel
2026-06-09 13:04 ` Jason Gunthorpe
2026-06-11 2:22 ` Rik van Riel
2026-06-12 16:02 ` Rik van Riel
2026-06-12 16:48 ` Jason Gunthorpe
2026-06-12 17:23 ` Rik van Riel [this message]
2026-06-12 18:03 ` Jason Gunthorpe
2026-06-12 18:44 ` Liam R. Howlett
2026-06-15 11:56 ` Jason Gunthorpe
2026-06-17 17:45 ` Liam R. Howlett
2026-06-17 18:04 ` Jason Gunthorpe
2026-06-18 14:50 ` Liam R. Howlett
2026-06-18 15:24 ` Jason Gunthorpe
2026-06-18 17:27 ` Liam R. Howlett
2026-06-18 17:30 ` Rik van Riel
2026-06-18 19:13 ` Liam R. Howlett
2026-06-19 12:08 ` Jason Gunthorpe
2026-06-30 18:39 ` Liam R. Howlett
2026-06-19 3:51 ` Rik van Riel
2026-06-19 4:54 ` Liam R. Howlett
2026-06-19 12:13 ` Jason Gunthorpe
2026-06-19 18:54 ` Rik van Riel
2026-06-21 0:08 ` Ashok Raj
2026-06-21 1:53 ` Rik van Riel
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=ff5f9e09edbcb9c87feac6af00a1d835c783be4f.camel@surriel.com \
--to=riel@surriel.com \
--cc=iommu@lists.linux.dev \
--cc=jgg@ziepe.ca \
--cc=joro@8bytes.org \
--cc=kernel-team@meta.com \
--cc=kyle@mcmartin.ca \
--cc=liam@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=riel@meta.com \
--cc=robin.murphy@arm.com \
--cc=will@kernel.org \
/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
Powered by JetHome