From: Rob Herring <robh@kernel.org>
To: Brian Starkey <brian.starkey@arm.com>
Cc: John Stultz <john.stultz@linaro.org>,
Robin Murphy <robin.murphy@arm.com>,
lkml <linux-kernel@vger.kernel.org>,
Sumit Semwal <sumit.semwal@linaro.org>,
"Andrew F. Davis" <afd@ti.com>,
Benjamin Gaignard <benjamin.gaignard@linaro.org>,
Liam Mark <lmark@codeaurora.org>,
Pratik Patel <pratikp@codeaurora.org>,
Laura Abbott <labbott@redhat.com>, Chenbo Feng <fengc@google.com>,
Alistair Strachan <astrachan@google.com>,
Sandeep Patil <sspatil@google.com>,
Hridya Valsaraju <hridya@google.com>,
Christoph Hellwig <hch@lst.de>,
Marek Szyprowski <m.szyprowski@samsung.com>,
Andrew Morton <akpm@linux-foundation.org>,
"open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS"
<devicetree@vger.kernel.org>,
dri-devel <dri-devel@lists.freedesktop.org>,
linux-mm <linux-mm@kvack.org>, nd <nd@arm.com>
Subject: Re: [RFC][PATCH 3/4] dma-buf: cma_heap: Extend logic to export CMA regions tagged with "linux,cma-heap"
Date: Tue, 12 May 2020 11:37:14 -0500 [thread overview]
Message-ID: <20200512163714.GA22577@bogus> (raw)
In-Reply-To: <20200504090628.d2q32dwyg6em5pp7@DESKTOP-E1NTVVP.localdomain>
On Mon, May 04, 2020 at 10:06:28AM +0100, Brian Starkey wrote:
> On Fri, May 01, 2020 at 12:01:40PM -0700, John Stultz wrote:
> > On Fri, May 1, 2020 at 4:08 AM Robin Murphy <robin.murphy@arm.com> wrote:
> > >
> > > On 2020-05-01 11:21 am, Brian Starkey wrote:
> > > > Hi John,
> > > >
> > > > On Fri, May 01, 2020 at 07:39:48AM +0000, John Stultz wrote:
> > > >> This patch reworks the cma_heap initialization so that
> > > >> we expose both the default CMA region and any CMA regions
> > > >> tagged with "linux,cma-heap" in the device-tree.
> > > >>
> > > >> Cc: Rob Herring <robh+dt@kernel.org>
> > > >> Cc: Sumit Semwal <sumit.semwal@linaro.org>
> > > >> Cc: "Andrew F. Davis" <afd@ti.com>
> > > >> Cc: Benjamin Gaignard <benjamin.gaignard@linaro.org>
> > > >> Cc: Liam Mark <lmark@codeaurora.org>
> > > >> Cc: Pratik Patel <pratikp@codeaurora.org>
> > > >> Cc: Laura Abbott <labbott@redhat.com>
> > > >> Cc: Brian Starkey <Brian.Starkey@arm.com>
> > > >> Cc: Chenbo Feng <fengc@google.com>
> > > >> Cc: Alistair Strachan <astrachan@google.com>
> > > >> Cc: Sandeep Patil <sspatil@google.com>
> > > >> Cc: Hridya Valsaraju <hridya@google.com>
> > > >> Cc: Christoph Hellwig <hch@lst.de>
> > > >> Cc: Marek Szyprowski <m.szyprowski@samsung.com>
> > > >> Cc: Robin Murphy <robin.murphy@arm.com>
> > > >> Cc: Andrew Morton <akpm@linux-foundation.org>
> > > >> Cc: devicetree@vger.kernel.org
> > > >> Cc: dri-devel@lists.freedesktop.org
> > > >> Cc: linux-mm@kvack.org
> > > >> Signed-off-by: John Stultz <john.stultz@linaro.org>
> > > >> ---
> > > >> drivers/dma-buf/heaps/cma_heap.c | 18 +++++++++---------
> > > >> 1 file changed, 9 insertions(+), 9 deletions(-)
> > > >>
> > > >> diff --git a/drivers/dma-buf/heaps/cma_heap.c b/drivers/dma-buf/heaps/cma_heap.c
> > > >> index 626cf7fd033a..dd154e2db101 100644
> > > >> --- a/drivers/dma-buf/heaps/cma_heap.c
> > > >> +++ b/drivers/dma-buf/heaps/cma_heap.c
> > > >> @@ -141,6 +141,11 @@ static int __add_cma_heap(struct cma *cma, void *data)
> > > >> {
> > > >> struct cma_heap *cma_heap;
> > > >> struct dma_heap_export_info exp_info;
> > > >> + struct cma *default_cma = dev_get_cma_area(NULL);
> > > >> +
> > > >> + /* We only add the default heap and explicitly tagged heaps */
> > > >> + if (cma != default_cma && !cma_dma_heap_enabled(cma))
> > > >> + return 0;
> > > >
> > > > Thinking about the pl111 thread[1], I'm wondering if we should also
> > > > let drivers call this directly to expose their CMA pools, even if they
> > > > aren't tagged for dma-heaps in DT. But perhaps that's too close to
> > > > policy.
> > >
> > > That sounds much like what my first thoughts were - apologies if I'm
> > > wildly off-base here, but as far as I understand:
> > >
> > > - Device drivers know whether they have their own "memory-region" or not.
> > > - Device drivers already have to do *something* to participate in dma-buf.
> > > - Device drivers know best how they make use of both the above.
> > > - Therefore couldn't it be left to drivers to choose whether to register
> > > their CMA regions as heaps, without having to mess with DT at all?
+1, but I'm biased toward any solution not using DT. :)
> > I guess I'm not opposed to this. But I guess I'd like to see some more
> > details? You're thinking the pl111 driver would add the
> > "memory-region" node itself?
> >
> > Assuming that's the case, my only worry is what if that memory-region
> > node isn't a CMA area, but instead something like a carveout? Does the
> > driver need to parse enough of the dt to figure out where to register
> > the region as a heap?
>
> My thinking was more like there would already be a reserved-memory
> node in DT for the chunk of memory, appropriately tagged so that it
> gets added as a CMA region.
>
> The device's node would have "memory-region=<&blah>;" and would use
> of_reserved_mem_device_init() to link up dev->cma_area to the
> corresponding cma region.
>
> So far, that's all in-place already. The bit that's missing is
> exposing that dev->cma_area to userspace as a dma_heap - so we could
> just have "int cma_heap_add(struct cma *cma)" or "int
> cma_heap_dev_add(struct device *dev)" or something exported for
> drivers to expose their device-assigned cma region if they wanted to.
>
> I don't think this runs into the lifetime problems of generalised
> heaps-as-modules either, because the CMA region will never go away
> even if the driver does.
>
> Alongside that, I do think the completely DT-driven approach can be
> useful too - because there may be regions which aren't associated with
> any specific device driver, that we want exported as heaps.
And they are associated with the hardware description rather than the
userspace environment?
Rob
WARNING: multiple messages have this Message-ID (diff)
From: Rob Herring <robh@kernel.org>
To: Brian Starkey <brian.starkey@arm.com>
Cc: "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS"
<devicetree@vger.kernel.org>, nd <nd@arm.com>,
Alistair Strachan <astrachan@google.com>,
Sandeep Patil <sspatil@google.com>,
Christoph Hellwig <hch@lst.de>,
Pratik Patel <pratikp@codeaurora.org>,
Chenbo Feng <fengc@google.com>,
lkml <linux-kernel@vger.kernel.org>,
Liam Mark <lmark@codeaurora.org>, "Andrew F. Davis" <afd@ti.com>,
linux-mm <linux-mm@kvack.org>,
dri-devel <dri-devel@lists.freedesktop.org>,
Hridya Valsaraju <hridya@google.com>,
Andrew Morton <akpm@linux-foundation.org>,
Laura Abbott <labbott@redhat.com>,
Robin Murphy <robin.murphy@arm.com>,
Marek Szyprowski <m.szyprowski@samsung.com>
Subject: Re: [RFC][PATCH 3/4] dma-buf: cma_heap: Extend logic to export CMA regions tagged with "linux,cma-heap"
Date: Tue, 12 May 2020 11:37:14 -0500 [thread overview]
Message-ID: <20200512163714.GA22577@bogus> (raw)
In-Reply-To: <20200504090628.d2q32dwyg6em5pp7@DESKTOP-E1NTVVP.localdomain>
On Mon, May 04, 2020 at 10:06:28AM +0100, Brian Starkey wrote:
> On Fri, May 01, 2020 at 12:01:40PM -0700, John Stultz wrote:
> > On Fri, May 1, 2020 at 4:08 AM Robin Murphy <robin.murphy@arm.com> wrote:
> > >
> > > On 2020-05-01 11:21 am, Brian Starkey wrote:
> > > > Hi John,
> > > >
> > > > On Fri, May 01, 2020 at 07:39:48AM +0000, John Stultz wrote:
> > > >> This patch reworks the cma_heap initialization so that
> > > >> we expose both the default CMA region and any CMA regions
> > > >> tagged with "linux,cma-heap" in the device-tree.
> > > >>
> > > >> Cc: Rob Herring <robh+dt@kernel.org>
> > > >> Cc: Sumit Semwal <sumit.semwal@linaro.org>
> > > >> Cc: "Andrew F. Davis" <afd@ti.com>
> > > >> Cc: Benjamin Gaignard <benjamin.gaignard@linaro.org>
> > > >> Cc: Liam Mark <lmark@codeaurora.org>
> > > >> Cc: Pratik Patel <pratikp@codeaurora.org>
> > > >> Cc: Laura Abbott <labbott@redhat.com>
> > > >> Cc: Brian Starkey <Brian.Starkey@arm.com>
> > > >> Cc: Chenbo Feng <fengc@google.com>
> > > >> Cc: Alistair Strachan <astrachan@google.com>
> > > >> Cc: Sandeep Patil <sspatil@google.com>
> > > >> Cc: Hridya Valsaraju <hridya@google.com>
> > > >> Cc: Christoph Hellwig <hch@lst.de>
> > > >> Cc: Marek Szyprowski <m.szyprowski@samsung.com>
> > > >> Cc: Robin Murphy <robin.murphy@arm.com>
> > > >> Cc: Andrew Morton <akpm@linux-foundation.org>
> > > >> Cc: devicetree@vger.kernel.org
> > > >> Cc: dri-devel@lists.freedesktop.org
> > > >> Cc: linux-mm@kvack.org
> > > >> Signed-off-by: John Stultz <john.stultz@linaro.org>
> > > >> ---
> > > >> drivers/dma-buf/heaps/cma_heap.c | 18 +++++++++---------
> > > >> 1 file changed, 9 insertions(+), 9 deletions(-)
> > > >>
> > > >> diff --git a/drivers/dma-buf/heaps/cma_heap.c b/drivers/dma-buf/heaps/cma_heap.c
> > > >> index 626cf7fd033a..dd154e2db101 100644
> > > >> --- a/drivers/dma-buf/heaps/cma_heap.c
> > > >> +++ b/drivers/dma-buf/heaps/cma_heap.c
> > > >> @@ -141,6 +141,11 @@ static int __add_cma_heap(struct cma *cma, void *data)
> > > >> {
> > > >> struct cma_heap *cma_heap;
> > > >> struct dma_heap_export_info exp_info;
> > > >> + struct cma *default_cma = dev_get_cma_area(NULL);
> > > >> +
> > > >> + /* We only add the default heap and explicitly tagged heaps */
> > > >> + if (cma != default_cma && !cma_dma_heap_enabled(cma))
> > > >> + return 0;
> > > >
> > > > Thinking about the pl111 thread[1], I'm wondering if we should also
> > > > let drivers call this directly to expose their CMA pools, even if they
> > > > aren't tagged for dma-heaps in DT. But perhaps that's too close to
> > > > policy.
> > >
> > > That sounds much like what my first thoughts were - apologies if I'm
> > > wildly off-base here, but as far as I understand:
> > >
> > > - Device drivers know whether they have their own "memory-region" or not.
> > > - Device drivers already have to do *something* to participate in dma-buf.
> > > - Device drivers know best how they make use of both the above.
> > > - Therefore couldn't it be left to drivers to choose whether to register
> > > their CMA regions as heaps, without having to mess with DT at all?
+1, but I'm biased toward any solution not using DT. :)
> > I guess I'm not opposed to this. But I guess I'd like to see some more
> > details? You're thinking the pl111 driver would add the
> > "memory-region" node itself?
> >
> > Assuming that's the case, my only worry is what if that memory-region
> > node isn't a CMA area, but instead something like a carveout? Does the
> > driver need to parse enough of the dt to figure out where to register
> > the region as a heap?
>
> My thinking was more like there would already be a reserved-memory
> node in DT for the chunk of memory, appropriately tagged so that it
> gets added as a CMA region.
>
> The device's node would have "memory-region=<&blah>;" and would use
> of_reserved_mem_device_init() to link up dev->cma_area to the
> corresponding cma region.
>
> So far, that's all in-place already. The bit that's missing is
> exposing that dev->cma_area to userspace as a dma_heap - so we could
> just have "int cma_heap_add(struct cma *cma)" or "int
> cma_heap_dev_add(struct device *dev)" or something exported for
> drivers to expose their device-assigned cma region if they wanted to.
>
> I don't think this runs into the lifetime problems of generalised
> heaps-as-modules either, because the CMA region will never go away
> even if the driver does.
>
> Alongside that, I do think the completely DT-driven approach can be
> useful too - because there may be regions which aren't associated with
> any specific device driver, that we want exported as heaps.
And they are associated with the hardware description rather than the
userspace environment?
Rob
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2020-05-12 16:37 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-01 7:39 [RFC][PATCH 0/4] Support non-default CMA regions to the dmabuf heaps interface John Stultz
2020-05-01 7:39 ` John Stultz
2020-05-01 7:39 ` [RFC][PATCH 1/4] devicetree: bindings: Add linux,cma-heap tag for reserved memory John Stultz
2020-05-01 7:39 ` [RFC][PATCH 1/4] devicetree: bindings: Add linux, cma-heap " John Stultz
2020-05-01 10:42 ` [RFC][PATCH 1/4] devicetree: bindings: Add linux,cma-heap " Brian Starkey
2020-05-01 10:42 ` Brian Starkey
2020-05-01 18:40 ` John Stultz
2020-05-01 18:40 ` [RFC][PATCH 1/4] devicetree: bindings: Add linux, cma-heap " John Stultz
2020-05-04 8:50 ` [RFC][PATCH 1/4] devicetree: bindings: Add linux,cma-heap " Brian Starkey
2020-05-04 8:50 ` Brian Starkey
2020-05-06 16:04 ` Andrew F. Davis
2020-05-06 16:04 ` [RFC][PATCH 1/4] devicetree: bindings: Add linux, cma-heap " Andrew F. Davis
2020-05-06 16:30 ` [RFC][PATCH 1/4] devicetree: bindings: Add linux,cma-heap " John Stultz
2020-05-06 16:30 ` [RFC][PATCH 1/4] devicetree: bindings: Add linux, cma-heap " John Stultz
2020-05-06 17:35 ` [RFC][PATCH 1/4] devicetree: bindings: Add linux,cma-heap " Andrew F. Davis
2020-05-06 17:35 ` [RFC][PATCH 1/4] devicetree: bindings: Add linux, cma-heap " Andrew F. Davis
2020-05-06 18:34 ` [RFC][PATCH 1/4] devicetree: bindings: Add linux,cma-heap " John Stultz
2020-05-06 18:34 ` [RFC][PATCH 1/4] devicetree: bindings: Add linux, cma-heap " John Stultz
2020-05-01 7:39 ` [RFC][PATCH 2/4] mm: cma: Add dma_heap flag to cma structure John Stultz
2020-05-01 7:39 ` John Stultz
2020-05-01 10:48 ` Brian Starkey
2020-05-01 10:48 ` Brian Starkey
2020-05-01 18:42 ` John Stultz
2020-05-01 18:42 ` John Stultz
2020-05-01 7:39 ` [RFC][PATCH 3/4] dma-buf: cma_heap: Extend logic to export CMA regions tagged with "linux,cma-heap" John Stultz
2020-05-01 7:39 ` [RFC][PATCH 3/4] dma-buf: cma_heap: Extend logic to export CMA regions tagged with "linux, cma-heap" John Stultz
2020-05-01 10:21 ` [RFC][PATCH 3/4] dma-buf: cma_heap: Extend logic to export CMA regions tagged with "linux,cma-heap" Brian Starkey
2020-05-01 10:21 ` Brian Starkey
2020-05-01 11:08 ` Robin Murphy
2020-05-01 11:08 ` Robin Murphy
2020-05-01 19:01 ` John Stultz
2020-05-01 19:01 ` John Stultz
2020-05-04 9:06 ` Brian Starkey
2020-05-04 9:06 ` Brian Starkey
2020-05-12 16:37 ` Rob Herring [this message]
2020-05-12 16:37 ` Rob Herring
2020-05-13 10:44 ` Brian Starkey
2020-05-13 10:44 ` Brian Starkey
2020-05-14 14:52 ` Rob Herring
2020-05-14 14:52 ` Rob Herring
2020-05-15 9:32 ` Brian Starkey
2020-05-15 9:32 ` Brian Starkey
2020-05-01 7:39 ` [RFC][PATCH 4/4] example: dts: hi3660-hikey960: Add dts entries to test cma heap binding John Stultz
2020-05-01 7:39 ` John Stultz
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=20200512163714.GA22577@bogus \
--to=robh@kernel.org \
--cc=afd@ti.com \
--cc=akpm@linux-foundation.org \
--cc=astrachan@google.com \
--cc=benjamin.gaignard@linaro.org \
--cc=brian.starkey@arm.com \
--cc=devicetree@vger.kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=fengc@google.com \
--cc=hch@lst.de \
--cc=hridya@google.com \
--cc=john.stultz@linaro.org \
--cc=labbott@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lmark@codeaurora.org \
--cc=m.szyprowski@samsung.com \
--cc=nd@arm.com \
--cc=pratikp@codeaurora.org \
--cc=robin.murphy@arm.com \
--cc=sspatil@google.com \
--cc=sumit.semwal@linaro.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.