Received: by 2002:a25:e7d8:0:0:0:0:0 with SMTP id e207csp432623ybh; Wed, 18 Mar 2020 02:39:08 -0700 (PDT) X-Google-Smtp-Source: ADFU+vu4UXPB4Eu6Iw/LrsN7jpEqCFA4UsQ/+Sye7x+N92UjcwwcpSpu7TOvdbuTxWuAO3CrTDkD X-Received: by 2002:a9d:75c1:: with SMTP id c1mr3140578otl.281.1584524348392; Wed, 18 Mar 2020 02:39:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1584524348; cv=none; d=google.com; s=arc-20160816; b=UWCp1Vma2AH4/eh+74MTTdC8/yfSqbwbJ5paRn++0S3FgU2fJDrzprl4VdFk9UHjst 1VmO3QxtgUPd7tiza8oX9sVCPHHEmTaQFFzqX/OpNpThJlB8aT4vyLBw18eQjb3F5EY3 nPgV2De1rsKSi6+NG77Q7hHVMH1JGLCIJTOWUwyQN/ENHzCuz5sYHeDIq7Fonmxu3hAS 5LU5xyxsNezQkoIWCbWU8ksRA5uug6BtIgQmZsZNkursvkWgp6tO3aiKaR+ZgPcHfrJT LbNxaIqM7++v8xTsKGt1d438s2GCGQ0x0ov4Wh7JLDFgIvOqCYGwpK714mGahE1X7eya 28yA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dkim-signature; bh=TG411fQ151Ls0rjVlozc0vrbRdPS52F0qzbMBEw9UR4=; b=qW01lmbGqMCB+NGhP5rOHQDptr/zsRJZ9dPA3IsGhRpG9i6iShItblbMOGTFkAgML4 RQX4YWkrQvTyHd5Wa/PB2sI3Q/kV/MazKM7y2o7433Wzn9Sar3J+RrSOBc2Qn/y9MXGi HvVegCU+DK7rydwbAHjmHFYOfgCxVidmuAbM4j9pFG+sBZKAAbi1gbDKawHr01EHEVEv p+DI3T2ognPv4TSoA5x9N+5Fd2tXxpkxkNYcY6tr8cyTPmmoFZzlU4dIgtQmbqbRN1KU vZg62b6JcDAF9geTqmLCzrhugcckCMDTCWctPCGCcQGnCzfuWszIpOvqkD/rfLY9SsEG O3Yw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=jVXpj2S3; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t132si3100851oih.173.2020.03.18.02.38.56; Wed, 18 Mar 2020 02:39:08 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=jVXpj2S3; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727554AbgCRJhd (ORCPT + 99 others); Wed, 18 Mar 2020 05:37:33 -0400 Received: from lelv0142.ext.ti.com ([198.47.23.249]:40150 "EHLO lelv0142.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726586AbgCRJhc (ORCPT ); Wed, 18 Mar 2020 05:37:32 -0400 Received: from lelv0265.itg.ti.com ([10.180.67.224]) by lelv0142.ext.ti.com (8.15.2/8.15.2) with ESMTP id 02I9bS0J020453; Wed, 18 Mar 2020 04:37:28 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1584524248; bh=TG411fQ151Ls0rjVlozc0vrbRdPS52F0qzbMBEw9UR4=; h=Subject:To:CC:References:From:Date:In-Reply-To; b=jVXpj2S3QBKpKP/CXZiSv8/KxCWpcS6qgrufxY+Y+s4Cd66noCtgRX6AahV7e4axJ sDZxWLpsT1K48fvMir5LHy1TkMkXWtMT6JwYbJ9jKChfw7lHZ+9TljjyQkvALeQWpg BKjrs0B3umRxwLgYqooL43eREuRcdMZXsOPetftY= Received: from DLEE112.ent.ti.com (dlee112.ent.ti.com [157.170.170.23]) by lelv0265.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 02I9bSNi086123 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 18 Mar 2020 04:37:28 -0500 Received: from DLEE102.ent.ti.com (157.170.170.32) by DLEE112.ent.ti.com (157.170.170.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1847.3; Wed, 18 Mar 2020 04:37:28 -0500 Received: from lelv0326.itg.ti.com (10.180.67.84) by DLEE102.ent.ti.com (157.170.170.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1847.3 via Frontend Transport; Wed, 18 Mar 2020 04:37:28 -0500 Received: from [127.0.0.1] (ileax41-snat.itg.ti.com [10.172.224.153]) by lelv0326.itg.ti.com (8.15.2/8.15.2) with ESMTP id 02I9bPj2035219; Wed, 18 Mar 2020 04:37:26 -0500 Subject: Re: [PATCH 1/2] remoteproc: fall back to using parent memory pool if no dedicated available To: Arnaud POULIQUEN , Suman Anna , Bjorn Andersson , Loic PALLARDY CC: Mathieu Poirier , "linux-remoteproc@vger.kernel.org" , "linux-kernel@vger.kernel.org" References: <20200305224108.21351-1-s-anna@ti.com> <20200305224108.21351-2-s-anna@ti.com> From: Tero Kristo Message-ID: Date: Wed, 18 Mar 2020 11:37:24 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8"; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 13/03/2020 18:52, Arnaud POULIQUEN wrote: > Hi Suman, > >> -----Original Message----- >> From: Suman Anna >> Sent: jeudi 5 mars 2020 23:41 >> To: Bjorn Andersson ; Loic PALLARDY >> >> Cc: Mathieu Poirier ; Arnaud POULIQUEN >> ; Tero Kristo ; linux- >> remoteproc@vger.kernel.org; linux-kernel@vger.kernel.org; Suman Anna >> >> Subject: [PATCH 1/2] remoteproc: fall back to using parent memory pool if no >> dedicated available >> >> From: Tero Kristo >> >> In some cases, like with OMAP remoteproc, we are not creating dedicated >> memory pool for the virtio device. Instead, we use the same memory pool >> for all shared memories. The current virtio memory pool handling forces a >> split between these two, as a separate device is created for it, causing >> memory to be allocated from bad location if the dedicated pool is not >> available. Fix this by falling back to using the parent device memory pool if >> dedicated is not available. >> >> Fixes: 086d08725d34 ("remoteproc: create vdev subdevice with specific dma >> memory pool") >> Signed-off-by: Tero Kristo >> Signed-off-by: Suman Anna >> --- >> drivers/remoteproc/remoteproc_virtio.c | 10 ++++++++++ >> 1 file changed, 10 insertions(+) >> >> diff --git a/drivers/remoteproc/remoteproc_virtio.c >> b/drivers/remoteproc/remoteproc_virtio.c >> index 8c07cb2ca8ba..4723ebe574b8 100644 >> --- a/drivers/remoteproc/remoteproc_virtio.c >> +++ b/drivers/remoteproc/remoteproc_virtio.c >> @@ -368,6 +368,16 @@ int rproc_add_virtio_dev(struct rproc_vdev *rvdev, >> int id) >> goto out; >> } >> } >> + } else { >> + struct device_node *np = rproc->dev.parent->of_node; >> + >> + /* >> + * If we don't have dedicated buffer, just attempt to >> + * re-assign the reserved memory from our parent. >> + * Failure is non-critical so don't check return value >> + * either. >> + */ >> + of_reserved_mem_device_init_by_idx(dev, np, 0); >> } > I aven't tested your patchset yet, but reviewing you code, I wonder if you cannot declare your memory pool > in your platform driver using rproc_of_resm_mem_entry_init. Something like: > struct device_node *mem_node; > struct reserved_mem *rmem; > > mem_node = of_parse_phandle(dev->of_node, "memory-region", 0); > rmem = of_reserved_mem_lookup(mem_node); > mem = rproc_of_resm_mem_entry_init(dev, 0, > rmem->size, > rmem->base, > " vdev0buffer"); > > A main advantage of this implementation would be that the index of the memory region would not be hard coded to 0. It seems like that would work for us also, and thus this patch can be dropped. See the following patch. Suman, any comments on this? If this seems acceptable, I can send this as a proper patch to the list. ------ From: Tero Kristo Date: Wed, 18 Mar 2020 11:22:58 +0200 Subject: [PATCH] remoteproc/omap: Allocate vdev0buffer memory from reserved memory pool Since 086d08725d34 ("remoteproc: create vdev subdevice with specific dma memory pool"), remoteprocs must allocate separate vdev memory buffer. As OMAP remoteproc does not do this yet, the memory gets allocated from default DMA pool, and this memory is not suitable for the use. To fix the issue, map the vdev0buffer to use the same device reserved memory pool as the rest of the remoteproc. Signed-off-by: Tero Kristo --- drivers/remoteproc/omap_remoteproc.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/remoteproc/omap_remoteproc.c b/drivers/remoteproc/omap_remoteproc.c index 29d19a608af8..024330e31a9e 100644 --- a/drivers/remoteproc/omap_remoteproc.c +++ b/drivers/remoteproc/omap_remoteproc.c @@ -1273,6 +1273,9 @@ static int omap_rproc_probe(struct platform_device *pdev) const char *firmware; int ret; struct reset_control *reset; + struct device_node *mem_node; + struct reserved_mem *rmem; + struct rproc_mem_entry *mem; if (!np) { dev_err(&pdev->dev, "only DT-based devices are supported\n"); @@ -1335,6 +1338,19 @@ static int omap_rproc_probe(struct platform_device *pdev) dev_warn(&pdev->dev, "device does not have specific CMA pool.\n"); dev_warn(&pdev->dev, "Typically this should be provided,\n"); dev_warn(&pdev->dev, "only omit if you know what you are doing.\n"); + } else { + mem_node = of_parse_phandle(pdev->dev.of_node, "memory-region", + 0); + rmem = of_reserved_mem_lookup(mem_node); + mem = rproc_of_resm_mem_entry_init(&pdev->dev, 0, rmem->size, + rmem->base, "vdev0buffer"); + + if (!mem) { + ret = -ENOMEM; + goto release_mem; + } + + rproc_add_carveout(rproc, mem); } platform_set_drvdata(pdev, rproc); -- 2.17.1 -- Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki