All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vincent Donnefort <vdonnefort@google.com>
To: Thierry Reding <thierry.reding@kernel.org>
Cc: "Rob Herring" <robh@kernel.org>,
	"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Jonathan Hunter" <jonathanh@nvidia.com>,
	"David Airlie" <airlied@gmail.com>,
	"Simona Vetter" <simona@ffwll.ch>,
	"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
	"Maxime Ripard" <mripard@kernel.org>,
	"Thomas Zimmermann" <tzimmermann@suse.de>,
	"Sowjanya Komatineni" <skomatineni@nvidia.com>,
	"Luca Ceresoli" <luca.ceresoli@bootlin.com>,
	"Mikko Perttunen" <mperttunen@nvidia.com>,
	"Yury Norov" <yury.norov@gmail.com>,
	"Rasmus Villemoes" <linux@rasmusvillemoes.dk>,
	"Russell King" <linux@armlinux.org.uk>,
	"Alexander Gordeev" <agordeev@linux.ibm.com>,
	"Gerald Schaefer" <gerald.schaefer@linux.ibm.com>,
	"Heiko Carstens" <hca@linux.ibm.com>,
	"Vasily Gorbik" <gor@linux.ibm.com>,
	"Christian Borntraeger" <borntraeger@linux.ibm.com>,
	"Sven Schnelle" <svens@linux.ibm.com>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"David Hildenbrand" <david@kernel.org>,
	"Lorenzo Stoakes" <ljs@kernel.org>,
	"Liam R. Howlett" <liam@infradead.org>,
	"Vlastimil Babka" <vbabka@kernel.org>,
	"Mike Rapoport" <rppt@kernel.org>,
	"Suren Baghdasaryan" <surenb@google.com>,
	"Michal Hocko" <mhocko@suse.com>,
	"Marek Szyprowski" <m.szyprowski@samsung.com>,
	"Robin Murphy" <robin.murphy@arm.com>,
	"Sumit Semwal" <sumit.semwal@linaro.org>,
	"Benjamin Gaignard" <benjamin.gaignard@collabora.com>,
	"Brian Starkey" <Brian.Starkey@arm.com>,
	"John Stultz" <jstultz@google.com>,
	"T.J. Mercier" <tjmercier@google.com>,
	"Christian König" <christian.koenig@amd.com>,
	"Steven Rostedt" <rostedt@goodmis.org>,
	"Masami Hiramatsu" <mhiramat@kernel.org>,
	"Mathieu Desnoyers" <mathieu.desnoyers@efficios.com>,
	"Catalin Marinas" <catalin.marinas@arm.com>,
	"Will Deacon" <will@kernel.org>, "Chun Ng" <chunn@nvidia.com>,
	"Thierry Reding" <thierry.reding@gmail.com>,
	devicetree@vger.kernel.org, linux-tegra@vger.kernel.org,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	linux-media@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-s390@vger.kernel.org,
	linux-mm@kvack.org, iommu@lists.linux.dev,
	linaro-mm-sig@lists.linaro.org,
	linux-trace-kernel@vger.kernel.org,
	"Thierry Reding" <treding@nvidia.com>,
	pavan.kondeti@oss.qualcomm.com
Subject: Re: [PATCH v4 07/10] dma-buf: heaps: Add support for Tegra VPR
Date: Mon, 24 Aug 2026 14:07:23 +0100	[thread overview]
Message-ID: <aoxCC1yPFdutU5vB@google.com> (raw)
In-Reply-To: <aoi4wZJIutMWu9Ux@google.com>

On Fri, Aug 21, 2026 at 09:44:49PM +0100, Vincent Donnefort wrote:
> [...]
> 
> > > > Interesting. I had been thinking more along the lines of adding this
> > > > directly into memblock using a new entry in enum memblock_flags. None of
> > > > the existing ones seem to do what we need here, though some are closely
> > > > related. MEMBLOCK_SECURE or MEMBLOCK_PROTECTED are quite specific and
> > > > don't necessarily mean that we need the mapping to be page-granular, so
> > > > MEMBLOCK_PAGE_GRANULAR is perhaps clearer.
> > > 
> > > I thought it would be interesting to not have to modify memblock since it is
> > > used for all architectures, while the DT is at least slightly less widespread.
> > 
> > This isn't something that is DT specific. On the Tegra side, I suspect
> > we might need this on ACPI platforms eventually, too. And it's not an
> > ARM specific feature either. Other platforms could use shared carveouts,
> > too.
> 
> Agreed, and actually I have tried the memblock version and it looks quite neat!
> 
> I will share what I have after the merge-window.
> 
> > 
> > > Also, cma_init_reserved_mem() could use an order 9. In that case PTE-level isn't
> > > necessary and we could just use PMD-level. Extending that support would be more
> > > cumbersome with a memblock flag than with a callback.
> > > 
> > > rmem_cma_setup() hardcoding an order 0, perhaps this isn't really a problem at
> > > the moment?
> > 
> > How so? memblock is really just used as a way of backing the CMA. How
> > CMA subdivides it doesn't really matter, right?
> > 
> > Or are you suggesting that if we use an entire PMD as granularity, we
> > could equally well remove the entire PMD from the linear mapping instead
> > of doing it page-by-page? I think that'd work really well for at least
> > VPR, since it is 1 MiB aligned anyway. Using a granularity of 2 MiB is
> > easily doable.
> 
> Yes, that is what I meant. We could easily force a PMD-level mapping instead of
> PTE-level one. But then that means declaring another memblock flag. 
> 
> > 
> > For anything that doesn't require a single contiguous area to be
> > protected this might be a bit more challenging since it potentially
> > wastes a lot of memory. On the other hand, a lot of this is heavily
> > custom code anyway, so the entire stack could be modified to make
> > efficient use of this (i.e. userspace could allocate a larger chunk
> > for a pool of buffers, etc.).
> > 
> > > But yeah, the alternative is to create a "memblock_mark_forcepte" (it seems
> > > memblock_setclr_flag does split memblocks) and let of_reserved_mem call that
> > > function. Finally the arm64 mmu code can simply check for the flag before
> > > calling __map_memblock. Perhaps it isn't that bad in the end?
> > 
> > It sounds like the right level of abstraction to me. But I'm not too
> > familiar with this code, so it'd be good to hear from the MM and/or ARM
> > maintainers what they think about this.
> > 
> > [...]
> > > I had in mind to extend "shared-dma-pool" to handle
> > > set_direct_map_invalid_noflush()/set_direct_map_default_noflush() based on an
> > > option. But perhaps it is better to create another separate driver. And VPR
> > > needing a specific dma-heap driver anyway, it could call the direct-map
> > > functions there too without relying on CMA to do anything?
> > 
> > I think it'd be nice to have separate APIs for this case where we know
> > the memory region is already page-granular (or, I suppose, PMD granular)
> > and removing from (or adding back to) the linear mapping is safe. That
> > way we could avoid the checks for can_set_direct_map() for each page.
> > 
> > It'd also be nice to have a version that can update the protection bits
> > for a range of pages (would map directly to update_range_prot()) instead
> > of having to manually iterate over each page in a range.
> >
> 
> How about?
> 
>   /* True if can_set_direct_map() or [start, end) is mapped at PTE-level */
>   can_set_direct_map_range(phys_addr_t start, phys_addr_t end); 
> 
>   /* Must check can_set_direct_map() or can_set_direct_map_range() first */
>   __set_direct_map_invalid_noflush(phys_addr_t start, phys_addr_t end)
>   __set_direct_map_default_noflush(phys_addr_t start, phys_addr_t end)
> 
> > A good middle-ground might be to have helpers that do the grunt work and
> > they can then be called from VPR and the shared-dma-pool drivers to have
> > pages removed from the linear mapping. VPR and similar can then perform
> > the hardware protection bits on top of that.
> 
> I believe between the reserved-memory attribute to force the last-level mappings
> and the direct map functions above, there's enough for the VPR driver?
> 
> -- 
> Vincent
> 
> > 
> > Thierry

I have pushed a first version here [1]. I am waiting for the merge window to end
before posting anything on the list, but let me know if you have any comment.

[1] https://android-kvm.googlesource.com/linux/+/refs/heads/vdonnefort/ffa-lend-pool

-- 
Vincent

  reply	other threads:[~2026-08-24 13:07 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-07 15:54 [PATCH v4 00/10] dma-buf: heaps: Add support for Tegra VPR Thierry Reding
2026-08-07 15:54 ` [PATCH v4 01/10] dt-bindings: reserved-memory: Document " Thierry Reding
2026-08-07 16:08   ` sashiko-bot
2026-08-07 15:54 ` [PATCH v4 02/10] dt-bindings: display: tegra: Document memory regions Thierry Reding
2026-08-07 16:05   ` sashiko-bot
2026-08-12 22:33   ` Rob Herring (Arm)
2026-08-07 15:54 ` [PATCH v4 03/10] dt-bindings: gpu: host1x: Document memory-regions for NVDEC Thierry Reding
2026-08-07 16:05   ` sashiko-bot
2026-08-12 22:34   ` Rob Herring (Arm)
2026-08-07 15:54 ` [PATCH v4 04/10] bitmap: Add bitmap_allocate() function Thierry Reding
2026-08-07 16:11   ` sashiko-bot
2026-08-07 15:54 ` [PATCH v4 05/10] mm/cma: Allow dynamically creating CMA areas Thierry Reding
2026-08-07 16:15   ` sashiko-bot
2026-08-07 16:16   ` David Hildenbrand (Arm)
2026-08-10 14:14     ` Thierry Reding
2026-08-10 19:06       ` David Hildenbrand (Arm)
2026-08-07 15:54 ` [PATCH v4 06/10] dma-buf: heaps: Add debugfs support Thierry Reding
2026-08-07 16:19   ` sashiko-bot
2026-08-10 12:25   ` Christian König
2026-08-07 15:54 ` [PATCH v4 07/10] dma-buf: heaps: Add support for Tegra VPR Thierry Reding
2026-08-07 16:12   ` sashiko-bot
2026-08-13 18:25   ` Vincent Donnefort
2026-08-14 12:56     ` Thierry Reding
2026-08-17 17:22       ` Vincent Donnefort
2026-08-18 10:48         ` Thierry Reding
2026-08-19  9:10           ` Vincent Donnefort
2026-08-20 10:16             ` Thierry Reding
2026-08-21 20:44               ` Vincent Donnefort
2026-08-24 13:07                 ` Vincent Donnefort [this message]
2026-08-07 15:54 ` [PATCH v4 08/10] arm64: tegra: Add VPR placeholder node on Tegra234 Thierry Reding
2026-08-07 16:06   ` sashiko-bot
2026-08-07 15:54 ` [PATCH v4 09/10] arm64: tegra: Hook up VPR to host1x Thierry Reding
2026-08-07 16:16   ` sashiko-bot
2026-08-07 15:54 ` [PATCH v4 10/10] arm64: tegra: Add VPR placeholder node on Tegra264 Thierry Reding
2026-08-07 16:09   ` sashiko-bot

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=aoxCC1yPFdutU5vB@google.com \
    --to=vdonnefort@google.com \
    --cc=Brian.Starkey@arm.com \
    --cc=agordeev@linux.ibm.com \
    --cc=airlied@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=benjamin.gaignard@collabora.com \
    --cc=borntraeger@linux.ibm.com \
    --cc=catalin.marinas@arm.com \
    --cc=christian.koenig@amd.com \
    --cc=chunn@nvidia.com \
    --cc=conor+dt@kernel.org \
    --cc=david@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=gerald.schaefer@linux.ibm.com \
    --cc=gor@linux.ibm.com \
    --cc=hca@linux.ibm.com \
    --cc=iommu@lists.linux.dev \
    --cc=jonathanh@nvidia.com \
    --cc=jstultz@google.com \
    --cc=krzk+dt@kernel.org \
    --cc=liam@infradead.org \
    --cc=linaro-mm-sig@lists.linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=linux-trace-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=linux@rasmusvillemoes.dk \
    --cc=ljs@kernel.org \
    --cc=luca.ceresoli@bootlin.com \
    --cc=m.szyprowski@samsung.com \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mhiramat@kernel.org \
    --cc=mhocko@suse.com \
    --cc=mperttunen@nvidia.com \
    --cc=mripard@kernel.org \
    --cc=pavan.kondeti@oss.qualcomm.com \
    --cc=robh@kernel.org \
    --cc=robin.murphy@arm.com \
    --cc=rostedt@goodmis.org \
    --cc=rppt@kernel.org \
    --cc=simona@ffwll.ch \
    --cc=skomatineni@nvidia.com \
    --cc=sumit.semwal@linaro.org \
    --cc=surenb@google.com \
    --cc=svens@linux.ibm.com \
    --cc=thierry.reding@gmail.com \
    --cc=thierry.reding@kernel.org \
    --cc=tjmercier@google.com \
    --cc=treding@nvidia.com \
    --cc=tzimmermann@suse.de \
    --cc=vbabka@kernel.org \
    --cc=will@kernel.org \
    --cc=yury.norov@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.