From: Vincent Donnefort via OP-TEE <op-tee@lists.trustedfirmware.org>
To: Sumit Garg <sumit.garg@kernel.org>
Cc: Will Deacon <will@kernel.org>,
brendan.jackman@linux.dev, catalin.marinas@arm.com,
rppt@kernel.org, akpm@linux-foundation.org,
sudeep.holla@kernel.org, jenswi@kernel.org, robh@kernel.org,
mark.rutland@arm.com, ardb@kernel.org, thierry.reding@kernel.org,
david@kernel.org, danielmentz@google.com,
linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org,
op-tee@lists.trustedfirmware.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 0/8] arm64: Unmap FF-A lent memory from direct map
Date: Tue, 13 Oct 2026 10:37:59 +0100 [thread overview]
Message-ID: <as3798SFCfKFirag@google.com> (raw)
In-Reply-To: <aszdnInyJxLhSQRp@sumit-xelite>
On Mon, Oct 12, 2026 at 06:46:12PM +0530, Sumit Garg wrote:
> On Mon, 05 Oct 2026 at 12:02:55 +0100, Vincent Donnefort wrote:
> > Sorry, not sure why Sumit's email was dropped...
>
> The problem was with my mutt config, it should be fixed now.
>
> >
> > On Mon, Oct 05, 2026 at 11:48:00AM +0100, Vincent Donnefort wrote:
> > > On Thu, Oct 01, 2026 at 06:04:06PM +0530, Sumit Garg wrote:
> > > > On Tue, 29 Sep 2026 at 12:33:07 +0100, Will Deacon wrote:
> > > > > On Sat, Sep 26, 2026 at 05:43:08PM +0530, Sumit Garg wrote:
> > > > > > Looks like you dropped me from your reply.
> > > > >
> > > > > Huh, that's weird. If I hit reply-all ('g') in mutt, it moves the entire
> > > > > CC list to To: and drops you. I suspect the same thing happened to Thierry
> > > > > when he replied here:
> > > > >
> > > > > https://lore.kernel.org/all/arJcN60nagFKXj2Q@orome/
> > > > >
> > > > > I can't figure out why that's happening :/
> > > > > I manually tried to fix the To: and Cc: lines in this message.
> > > >
> > > > Thanks.
> > > >
> > > > >
> > > > > > On Tue, 22 Sep 2026 at 15:55:59 +0100, Will Deacon wrote:
> > > > > > > I spoke to Brendan at LPC (?) last year but this doesn't really work
> > > > > > > for arm64 because it relies on being able to unmap arbitrary parts of
> > > > > > > the linear map, which isn't generally possible unless you force pte-level
> > > > > > > mappings for everything, which is prohibitive for perf/power.
> > > > > >
> > > > > > As per the cover letter it's about allocating pages that are not present
> > > > > > in the direct map. This essentially fits the protected DMABufs use-case
> > > > > > where we don't want any kernel mapping to exist at any time. Bufers
> > > > > > allocated from protected DMABufs are only meant to be accessed by the
> > > > > > TEE implementation or HW accelerators like in the secure media pipeline.
> > > > >
> > > > > That sounds like it should probably build on top of this series, then.
> > > >
> > > > The main problem I see with this series is it tries to move from the generic
> > > > CMA allocator to a reserved FF-A CMA pool which again comes from the
> > > > DT. We already support reserved pool allocations via "no-map" which are
> > > > discovered dynamically from OP-TEE.
> > >
> > > I can't think of a way around a DT declaration. We need to know what region is
> > > PTE-level before the direct map is installed and of_reserved_mem is very handy
> > > for that purpose. And as this PTE-level mapping is costly we certainly only want
> > > to enable it for platforms that absolutely need it.
> > >
>
> I am rather thinking of a way to turn the default CMA allocator to be
> PTE-level mapped. Since the overall idea for this dynamic protected
> buffers was to reuse memory efficiently, otherwise the reserved buffer
> approach is already there to use as "no-map" via DT.
When the default CMA allocator is setup, it is already too late
(dma_contiguous_reserve() is called after map_mem()). I am not sure this can be
reordered easily due to the dependency on dma_limits_init().
So the only case it would work would be when a reserved memory has set
"linux,cma-default".
--
Vincent
>
> If we can have "cma_unmap" cmdline option alongside "cma" then it can
> turn the existing default CMA allocator to support unmapping buffers.
> Not requiring a DT change at all, although we can have the DT property
> for the default pool too if platforms want to opt for.
>
> > > >
> > > > If we can rather support a generic CMA like allocator for arm64 which
> > > > can support unmapped allocations then I am all for it. These platform
> > > > specific reserved pools isn't a scalable solution.
> > >
> > > What do you mean by generic CMA allocator here? An extension to
> > > shared-dma-pool? Or having the CMA automatically doing the unmap/map on
> > > cma_alloc() cma_release()?
> > >
> > > Right now I have created an API for the unmapping/remapping part. It adds a
> > > burden on the caller, but the alternative solution is introducing post-alloc
> > > pre-dealloc callbacks in the CMA, which looked a bit overkilled to me when
> > > the users of that "ffa-pool" are only optee and the nvidia video dma-buf heap.
> > >
>
> I am not too worried about where the actual implementation lives but
> looks like CMA driver to be the better place. I think use-cases like
> guest_memfd proposed as a user for __GFP_UNMAPPED on arm64 will also be
> looking for this feature.
>
> -Sumit
>
> > >
> > > >
> > > > > You could allocate the DMABufs from a CMA region that has no linear alias.
> > > >
> > > > Allocation from generic CMA pool is already the case here:
> > > >
> > > > tee_shm_alloc_dma_mem() ->
> > > > dma_alloc_pages()
> > > >
> > > > Do you mean it's just fine to unmap buffers allocated from generic CMA
> > > > region since it doesn't have any linear alias?
> > > >
> > > > >
> > > > > > > Vincent's series tackles that by using a pool so that only that part of
> > > > > > > memory requires the pte-level mappings in the linear map. That's the
> > > > > > > whole point of it, so I don't think it makes sense to drop it in favour
> > > > > > > of Brendan's approach (which doesn't work).
> > > > > > >
> > > > > >
> > > > > > For protected DMABufs, we even don't require any pte-level mappings in
> > > > > > linear map. The whole idea of mapping and unmapping is just a bottleneck
> > > > > > for performance sensitive secure media pipeline use-cases. That's why if
> > > > > > we can support __GFP_UNMAPPED with the memory allocator on arm64 would
> > > > > > be the best fit for this use-case.
> > > > >
> > > > > The point is that you will require pte-level mappings for the linear map
> > > > > if you want to unmap from it at runtime on arm64. If you don't, then you
> > > > > can end up needing to split a block mapping (e.g. pmd-level) when you
> > > > > decide to unmap only part of it and there isn't a safe way to do that on
> > > > > arm64 without transiently unmapping the entire block, which can lead to
> > > > > fatal translation faults during that window.
> > > >
> > > > I agree with you here, what I am rather trying to find if on arm64 there
> > > > is any possibilty to have a generic allocator for unmapped pages. That's
> > > > the use-case here as well as what Brendan't patch-set was trying to address.
> > > >
> > > > >
> > > > > > Now the question is why arm64 can't support __GFP_UNMAPPED similar to
> > > > > > how Brendan is doing it for x86?
> > > > >
> > > > > Because arm64 != x86? Presumably x86 doesn't have the strict
> > > > > break-before-make requirements we have on arm64.
> > > > >
> > > >
> > > > Sure, sounds like you are eluding to that the generic MM flag
> > > > __GFP_UNMAPPED being proposed can't be supported on arm64, right?
> > > >
> > > > -Sumit
> >
> > --
> > Vincent
WARNING: multiple messages have this Message-ID (diff)
From: Vincent Donnefort <vdonnefort@google.com>
To: Sumit Garg <sumit.garg@kernel.org>
Cc: Will Deacon <will@kernel.org>,
brendan.jackman@linux.dev, catalin.marinas@arm.com,
rppt@kernel.org, akpm@linux-foundation.org,
sudeep.holla@kernel.org, jenswi@kernel.org, robh@kernel.org,
mark.rutland@arm.com, ardb@kernel.org, thierry.reding@kernel.org,
david@kernel.org, danielmentz@google.com,
linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org,
op-tee@lists.trustedfirmware.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 0/8] arm64: Unmap FF-A lent memory from direct map
Date: Tue, 13 Oct 2026 10:37:59 +0100 [thread overview]
Message-ID: <as3798SFCfKFirag@google.com> (raw)
In-Reply-To: <aszdnInyJxLhSQRp@sumit-xelite>
On Mon, Oct 12, 2026 at 06:46:12PM +0530, Sumit Garg wrote:
> On Mon, 05 Oct 2026 at 12:02:55 +0100, Vincent Donnefort wrote:
> > Sorry, not sure why Sumit's email was dropped...
>
> The problem was with my mutt config, it should be fixed now.
>
> >
> > On Mon, Oct 05, 2026 at 11:48:00AM +0100, Vincent Donnefort wrote:
> > > On Thu, Oct 01, 2026 at 06:04:06PM +0530, Sumit Garg wrote:
> > > > On Tue, 29 Sep 2026 at 12:33:07 +0100, Will Deacon wrote:
> > > > > On Sat, Sep 26, 2026 at 05:43:08PM +0530, Sumit Garg wrote:
> > > > > > Looks like you dropped me from your reply.
> > > > >
> > > > > Huh, that's weird. If I hit reply-all ('g') in mutt, it moves the entire
> > > > > CC list to To: and drops you. I suspect the same thing happened to Thierry
> > > > > when he replied here:
> > > > >
> > > > > https://lore.kernel.org/all/arJcN60nagFKXj2Q@orome/
> > > > >
> > > > > I can't figure out why that's happening :/
> > > > > I manually tried to fix the To: and Cc: lines in this message.
> > > >
> > > > Thanks.
> > > >
> > > > >
> > > > > > On Tue, 22 Sep 2026 at 15:55:59 +0100, Will Deacon wrote:
> > > > > > > I spoke to Brendan at LPC (?) last year but this doesn't really work
> > > > > > > for arm64 because it relies on being able to unmap arbitrary parts of
> > > > > > > the linear map, which isn't generally possible unless you force pte-level
> > > > > > > mappings for everything, which is prohibitive for perf/power.
> > > > > >
> > > > > > As per the cover letter it's about allocating pages that are not present
> > > > > > in the direct map. This essentially fits the protected DMABufs use-case
> > > > > > where we don't want any kernel mapping to exist at any time. Bufers
> > > > > > allocated from protected DMABufs are only meant to be accessed by the
> > > > > > TEE implementation or HW accelerators like in the secure media pipeline.
> > > > >
> > > > > That sounds like it should probably build on top of this series, then.
> > > >
> > > > The main problem I see with this series is it tries to move from the generic
> > > > CMA allocator to a reserved FF-A CMA pool which again comes from the
> > > > DT. We already support reserved pool allocations via "no-map" which are
> > > > discovered dynamically from OP-TEE.
> > >
> > > I can't think of a way around a DT declaration. We need to know what region is
> > > PTE-level before the direct map is installed and of_reserved_mem is very handy
> > > for that purpose. And as this PTE-level mapping is costly we certainly only want
> > > to enable it for platforms that absolutely need it.
> > >
>
> I am rather thinking of a way to turn the default CMA allocator to be
> PTE-level mapped. Since the overall idea for this dynamic protected
> buffers was to reuse memory efficiently, otherwise the reserved buffer
> approach is already there to use as "no-map" via DT.
When the default CMA allocator is setup, it is already too late
(dma_contiguous_reserve() is called after map_mem()). I am not sure this can be
reordered easily due to the dependency on dma_limits_init().
So the only case it would work would be when a reserved memory has set
"linux,cma-default".
--
Vincent
>
> If we can have "cma_unmap" cmdline option alongside "cma" then it can
> turn the existing default CMA allocator to support unmapping buffers.
> Not requiring a DT change at all, although we can have the DT property
> for the default pool too if platforms want to opt for.
>
> > > >
> > > > If we can rather support a generic CMA like allocator for arm64 which
> > > > can support unmapped allocations then I am all for it. These platform
> > > > specific reserved pools isn't a scalable solution.
> > >
> > > What do you mean by generic CMA allocator here? An extension to
> > > shared-dma-pool? Or having the CMA automatically doing the unmap/map on
> > > cma_alloc() cma_release()?
> > >
> > > Right now I have created an API for the unmapping/remapping part. It adds a
> > > burden on the caller, but the alternative solution is introducing post-alloc
> > > pre-dealloc callbacks in the CMA, which looked a bit overkilled to me when
> > > the users of that "ffa-pool" are only optee and the nvidia video dma-buf heap.
> > >
>
> I am not too worried about where the actual implementation lives but
> looks like CMA driver to be the better place. I think use-cases like
> guest_memfd proposed as a user for __GFP_UNMAPPED on arm64 will also be
> looking for this feature.
>
> -Sumit
>
> > >
> > > >
> > > > > You could allocate the DMABufs from a CMA region that has no linear alias.
> > > >
> > > > Allocation from generic CMA pool is already the case here:
> > > >
> > > > tee_shm_alloc_dma_mem() ->
> > > > dma_alloc_pages()
> > > >
> > > > Do you mean it's just fine to unmap buffers allocated from generic CMA
> > > > region since it doesn't have any linear alias?
> > > >
> > > > >
> > > > > > > Vincent's series tackles that by using a pool so that only that part of
> > > > > > > memory requires the pte-level mappings in the linear map. That's the
> > > > > > > whole point of it, so I don't think it makes sense to drop it in favour
> > > > > > > of Brendan's approach (which doesn't work).
> > > > > > >
> > > > > >
> > > > > > For protected DMABufs, we even don't require any pte-level mappings in
> > > > > > linear map. The whole idea of mapping and unmapping is just a bottleneck
> > > > > > for performance sensitive secure media pipeline use-cases. That's why if
> > > > > > we can support __GFP_UNMAPPED with the memory allocator on arm64 would
> > > > > > be the best fit for this use-case.
> > > > >
> > > > > The point is that you will require pte-level mappings for the linear map
> > > > > if you want to unmap from it at runtime on arm64. If you don't, then you
> > > > > can end up needing to split a block mapping (e.g. pmd-level) when you
> > > > > decide to unmap only part of it and there isn't a safe way to do that on
> > > > > arm64 without transiently unmapping the entire block, which can lead to
> > > > > fatal translation faults during that window.
> > > >
> > > > I agree with you here, what I am rather trying to find if on arm64 there
> > > > is any possibilty to have a generic allocator for unmapped pages. That's
> > > > the use-case here as well as what Brendan't patch-set was trying to address.
> > > >
> > > > >
> > > > > > Now the question is why arm64 can't support __GFP_UNMAPPED similar to
> > > > > > how Brendan is doing it for x86?
> > > > >
> > > > > Because arm64 != x86? Presumably x86 doesn't have the strict
> > > > > break-before-make requirements we have on arm64.
> > > > >
> > > >
> > > > Sure, sounds like you are eluding to that the generic MM flag
> > > > __GFP_UNMAPPED being proposed can't be supported on arm64, right?
> > > >
> > > > -Sumit
> >
> > --
> > Vincent
next prev parent reply other threads:[~2026-10-13 9:38 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-21 11:00 [PATCH v2 0/8] arm64: Unmap FF-A lent memory from direct map Vincent Donnefort
2026-09-21 11:00 ` Vincent Donnefort via OP-TEE
2026-09-21 11:00 ` [PATCH v2 1/8] memblock: Introduce MEMBLOCK_PTEMAP Vincent Donnefort
2026-09-21 11:00 ` Vincent Donnefort via OP-TEE
2026-09-21 11:00 ` [PATCH v2 2/8] arm64: Introduce can_set_direct_map_range() Vincent Donnefort
2026-09-21 11:00 ` Vincent Donnefort via OP-TEE
2026-09-21 11:00 ` [PATCH v2 3/8] arm64: Introduce __set_direct_map*() Vincent Donnefort
2026-09-21 11:00 ` Vincent Donnefort via OP-TEE
2026-09-21 11:00 ` [PATCH v2 4/8] arm64: Add support for MEMBLOCK_PTEMAP Vincent Donnefort
2026-09-21 11:00 ` Vincent Donnefort via OP-TEE
2026-09-21 11:00 ` [PATCH v2 5/8] firmware: arm_ffa: Introduce ffa-lend-pool Vincent Donnefort
2026-09-21 11:00 ` Vincent Donnefort via OP-TEE
2026-09-21 11:48 ` sashiko-bot
2026-09-21 11:00 ` [PATCH v2 6/8] optee: Add support for arm,ffa-lend-pool Vincent Donnefort
2026-09-21 11:00 ` Vincent Donnefort via OP-TEE
2026-09-21 12:04 ` sashiko-bot
2026-09-21 11:00 ` [PATCH v2 7/8] dt-bindings: reserved-memory: Add Arm FF-A lend pool Vincent Donnefort
2026-09-21 11:00 ` Vincent Donnefort via OP-TEE
2026-09-21 15:20 ` Rob Herring (Arm)
2026-09-21 15:20 ` Rob Herring (Arm) via OP-TEE
2026-09-21 11:00 ` [PATCH v2 8/8] dt-bindings: firmware: optee: Add memory-region property Vincent Donnefort
2026-09-21 11:00 ` Vincent Donnefort via OP-TEE
2026-09-22 5:57 ` [PATCH v2 0/8] arm64: Unmap FF-A lent memory from direct map Sumit Garg
2026-09-22 5:57 ` Sumit Garg via OP-TEE
2026-09-22 10:57 ` Thierry Reding
2026-09-22 10:57 ` Thierry Reding via OP-TEE
2026-09-22 14:55 ` Will Deacon
2026-09-22 14:55 ` Will Deacon via OP-TEE
2026-09-26 12:13 ` Sumit Garg
2026-09-26 12:13 ` Sumit Garg via OP-TEE
2026-09-29 11:33 ` Will Deacon
2026-09-29 11:33 ` Will Deacon via OP-TEE
2026-10-01 12:34 ` Sumit Garg
2026-10-01 12:34 ` Sumit Garg via OP-TEE
2026-10-05 10:48 ` Vincent Donnefort
2026-10-05 10:48 ` Vincent Donnefort via OP-TEE
2026-10-05 11:02 ` Vincent Donnefort
2026-10-05 11:02 ` Vincent Donnefort via OP-TEE
2026-10-12 13:16 ` Sumit Garg
2026-10-12 13:16 ` Sumit Garg via OP-TEE
2026-10-13 9:37 ` Vincent Donnefort via OP-TEE [this message]
2026-10-13 9:37 ` Vincent Donnefort
2026-10-13 9:56 ` Sumit Garg
2026-10-13 9:56 ` Sumit Garg via OP-TEE
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=as3798SFCfKFirag@google.com \
--to=op-tee@lists.trustedfirmware.org \
--cc=akpm@linux-foundation.org \
--cc=ardb@kernel.org \
--cc=brendan.jackman@linux.dev \
--cc=catalin.marinas@arm.com \
--cc=danielmentz@google.com \
--cc=david@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=jenswi@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mark.rutland@arm.com \
--cc=robh@kernel.org \
--cc=rppt@kernel.org \
--cc=sudeep.holla@kernel.org \
--cc=sumit.garg@kernel.org \
--cc=thierry.reding@kernel.org \
--cc=vdonnefort@google.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 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.