Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp2854490ybk; Tue, 12 May 2020 09:41:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzCeleF7QnBT+ivzBuR20QN5PT8yZgZRLvFGDI6o0VFGs4tGm5socMqzbU7HahscUSEfWJU X-Received: by 2002:a50:bf04:: with SMTP id f4mr10050287edk.91.1589301681725; Tue, 12 May 2020 09:41:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589301681; cv=none; d=google.com; s=arc-20160816; b=LnLDB23+yPq4VFZsDoLAPIHAU221ToJFFN5K16tvQYJturHyIGZGp3HCQ2AQGA9gOn Fr1pu4TOxHoHfoXWdJ+pEOQII9Pc1BBd4YizTxs2UESmOeo4xi6jFk5zEwr7OYdamOsk qDPyQloAMZbQQhOSP7qHyw4T4EugVvxfWMmbsNPjHXphDQn1fSn0jsl7rsYdN+WcxaYt mbfrdOAB2Ou2L5nN8R1wgoVr4RzoNdn9mQmSBp2qzGywijUasFAIVAebsIN3YKhMVRNZ Rn3fqiEXvk9EUWEZ9GncEjYaoqkH1IIpl6W+3cWETmiFYlzmpMsrLThxxiRE5l6gc3FA xZ2Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=wBA/X/8LEF2/kwe3eKVgHZUc/oSPTTRgLnnWRSdSQLs=; b=RmZHMOZqcJHjsmjk2Ay/cBpDHRaCdDJHOrGRudb2Q6430KRMkNU+bMZhy4SgWiXRYv Pq1/pk3wPiu6VXn2v4oPgXoRxOi7jIPQttU30ueNS9JZP9RLeYBl8L+jcR58jnEELv+/ fni5AXo6N85jr5QbWnSsZEvAcWNKNcBzuP3FO1pWWvUxTYh7ZZ2EO1HGBIxMZgPDMgFE mnc0XkEApx3x9hsU5H+SPbREDL3GHeu4o81UiiavLxs9H8h/HlnvdRGc/oIG3Z0uZdJz CVgvcQR4WdJfccIEsKAK8xuc0virtcPTA9Wc1SFbHQZ02ZdibR7Cm3VkGbQokrxVBM+e E5EA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f30si406106edj.524.2020.05.12.09.40.57; Tue, 12 May 2020 09:41:21 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727118AbgELQhS (ORCPT + 99 others); Tue, 12 May 2020 12:37:18 -0400 Received: from mail-ot1-f67.google.com ([209.85.210.67]:36196 "EHLO mail-ot1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725851AbgELQhR (ORCPT ); Tue, 12 May 2020 12:37:17 -0400 Received: by mail-ot1-f67.google.com with SMTP id t3so11003112otp.3; Tue, 12 May 2020 09:37:16 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=wBA/X/8LEF2/kwe3eKVgHZUc/oSPTTRgLnnWRSdSQLs=; b=f9zX+lWL/nAnW69HFhgqo0rUJre4q5gF56HVm+z4agkVTKwFhzeUUgtyTBrEJ+BGZz MlAKujhLZ971mWDMRlOhHBFUt1ZdHPUlaZtLmmQjlowZDpi0kux3ZpKjswQ8UjC5qj8y rIbwfyUo+CYTwJp3zUaXTIkcGXVK0ROWoOvcgI9NgFYDeSEXWxQ4Uj8og91jUINQYdMX gzB09BhvwHAA7sPqq0/Jk2BoeK8449VyhB/xKzA86uY/41DvWY8zdgBAviT1Ir+yFLk6 RDXgfNNvagZ9fwbL+8++DvZ4yHGqqMDvll2NYvq7m1H5sp4xrzeRmVyxCY0h59jVrl1H mfdg== X-Gm-Message-State: AGi0PuZtcSjVC8WY9TrbFK8lToPMeR/qxGaVcfcKWALAYxmZeTy3byg2 Y8sqFqHZLp1b4CFLjs9Y0A== X-Received: by 2002:a9d:7a98:: with SMTP id l24mr18180169otn.79.1589301436443; Tue, 12 May 2020 09:37:16 -0700 (PDT) Received: from rob-hp-laptop (24-155-109-49.dyn.grandenetworks.net. [24.155.109.49]) by smtp.gmail.com with ESMTPSA id 61sm3538453oty.56.2020.05.12.09.37.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 May 2020 09:37:15 -0700 (PDT) Received: (nullmailer pid 10735 invoked by uid 1000); Tue, 12 May 2020 16:37:14 -0000 Date: Tue, 12 May 2020 11:37:14 -0500 From: Rob Herring To: Brian Starkey Cc: John Stultz , Robin Murphy , lkml , Sumit Semwal , "Andrew F. Davis" , Benjamin Gaignard , Liam Mark , Pratik Patel , Laura Abbott , Chenbo Feng , Alistair Strachan , Sandeep Patil , Hridya Valsaraju , Christoph Hellwig , Marek Szyprowski , Andrew Morton , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , dri-devel , linux-mm , nd Subject: Re: [RFC][PATCH 3/4] dma-buf: cma_heap: Extend logic to export CMA regions tagged with "linux,cma-heap" Message-ID: <20200512163714.GA22577@bogus> References: <20200501073949.120396-1-john.stultz@linaro.org> <20200501073949.120396-4-john.stultz@linaro.org> <20200501102143.xcckvsfecumbei3c@DESKTOP-E1NTVVP.localdomain> <47e7eded-7240-887a-39e1-97c55bf752e7@arm.com> <20200504090628.d2q32dwyg6em5pp7@DESKTOP-E1NTVVP.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200504090628.d2q32dwyg6em5pp7@DESKTOP-E1NTVVP.localdomain> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 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 > > > >> Cc: Sumit Semwal > > > >> Cc: "Andrew F. Davis" > > > >> Cc: Benjamin Gaignard > > > >> Cc: Liam Mark > > > >> Cc: Pratik Patel > > > >> Cc: Laura Abbott > > > >> Cc: Brian Starkey > > > >> Cc: Chenbo Feng > > > >> Cc: Alistair Strachan > > > >> Cc: Sandeep Patil > > > >> Cc: Hridya Valsaraju > > > >> Cc: Christoph Hellwig > > > >> Cc: Marek Szyprowski > > > >> Cc: Robin Murphy > > > >> Cc: Andrew Morton > > > >> Cc: devicetree@vger.kernel.org > > > >> Cc: dri-devel@lists.freedesktop.org > > > >> Cc: linux-mm@kvack.org > > > >> Signed-off-by: John Stultz > > > >> --- > > > >> 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