From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5D09AC4332D for ; Sat, 16 Jan 2021 17:08:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3AF3622B37 for ; Sat, 16 Jan 2021 17:08:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727986AbhAPRIj convert rfc822-to-8bit (ORCPT ); Sat, 16 Jan 2021 12:08:39 -0500 Received: from relay8-d.mail.gandi.net ([217.70.183.201]:35311 "EHLO relay8-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727943AbhAPRIg (ORCPT ); Sat, 16 Jan 2021 12:08:36 -0500 X-Originating-IP: 93.29.109.196 Received: from collins (196.109.29.93.rev.sfr.net [93.29.109.196]) (Authenticated sender: paul.kocialkowski@bootlin.com) by relay8-d.mail.gandi.net (Postfix) with ESMTPSA id 6BD541BF205; Sat, 16 Jan 2021 17:07:52 +0000 (UTC) Date: Sat, 16 Jan 2021 18:07:51 +0100 From: Paul Kocialkowski To: Robin Murphy Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Jernej Skrabec , Daniel Vetter , Maxime Ripard , Chen-Yu Tsai , Rob Herring , Thomas Petazzoni , Frank Rowand Subject: Re: [PATCH 1/2] of: device: Allow DMA range map to be set before of_dma_configure_id Message-ID: References: <20210115175831.1184260-1-paul.kocialkowski@bootlin.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8BIT In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Robin, Le Sat 16 Jan 21, 14:57, Robin Murphy a écrit : > On 2021-01-15 17:58, Paul Kocialkowski wrote: > > A mechanism was recently introduced for the sunxi architecture where > > the DMA offset for specific devices (under the MBUS) is set by a common > > driver (sunxi_mbus). This driver calls dma_direct_set_offset to set > > the device's dma_range_map manually. > > > > However this information was overwritten by of_dma_configure_id, which > > obtains the map from of_dma_get_range (or keeps it NULL when it fails > > and the force_dma argument is true, which is the case for platform > > devices). > > > > As a result, the dma_range_map was always overwritten and the mechanism > > could not correctly take effect. > > > > This adds a check to ensure that no previous DMA range map is > > overwritten and prints a warning when the map was already set while > > also being available from dt. In this case, the map that was already > > set is kept. > > Hang on, the hard-coded offset is only intended to be installed when there > *isn't* anything described in DT, in which case of_dma_get_range() should > always bail out early without touching it anyway. This sounds like > something's not quite right in the MBUS driver, so I don't think working > around it in core code is really the right thing to do. That's right, there is no practical case where the two are in conflict. The problem that I'm solving here is that dev->dma_range_map is *always* assigned, even when of_dma_get_range bailed and map still is NULL. This has the effect of always overwriting what the MBUS driver does (and leaking its memory too). > Do you have a case where one of the relevant devices inherits a "dma-ranges" > via the regular hierarchy without indirecting via an "interconnects" > reference? Currently you're only checking for the latter, so that would be > one way things could go awry (although to be a problem, said "dma-ranges" > would also have to encode something *other* than the appropriate MBUS > offset, which implies an incorrect or at least inaccurately-structured DT as > well). No, I think things are good in that regard. No messed up dt or anything like that :) Cheers, Paul > Robin. > > > Fixes: b4bdc4fbf8d0 ("soc: sunxi: Deal with the MBUS DMA offsets in a central place") > > Signed-off-by: Paul Kocialkowski > > --- > > drivers/of/device.c | 9 ++++++++- > > 1 file changed, 8 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/of/device.c b/drivers/of/device.c > > index aedfaaafd3e7..db1b8634c2c7 100644 > > --- a/drivers/of/device.c > > +++ b/drivers/of/device.c > > @@ -181,7 +181,14 @@ int of_dma_configure_id(struct device *dev, struct device_node *np, > > arch_setup_dma_ops(dev, dma_start, size, iommu, coherent); > > - dev->dma_range_map = map; > > + if (!dev->dma_range_map) { > > + dev->dma_range_map = map; > > + } else if (map) { > > + dev_warn(dev, > > + "DMA range map was already set, ignoring range map from dt\n"); > > + kfree(map); > > + } > > + > > return 0; > > } > > EXPORT_SYMBOL_GPL(of_dma_configure_id); > > -- Paul Kocialkowski, Bootlin Embedded Linux and kernel engineering https://bootlin.com From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-14.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AB1D5C433E0 for ; Sat, 16 Jan 2021 17:09:47 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 63CE020700 for ; Sat, 16 Jan 2021 17:09:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 63CE020700 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=bootlin.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=6pRngbViPbAwoSrqe7DhgwLSbXeUInacXwWvGFD/5VE=; b=hAZWRRWKY5VNGYLjhyLfCmNdI /IIE8AxKsmdh7FBIEpuqw4ZEaOtBeB2TM/qxTlgT41F6gJ2QJRFxO7FHKJ3HkQ79Av88fk+fs1suj o/2CL/He35vCovLw2i0LrK4gUigJ62Fc2lsCkAjLRKZj7cqqibHzx39Clui1WtV4RBILtebf7ojtx qggfTyUG5zH4EUWAPTPMI1AYdYAdyX4cex0qwzX38PBs6WEIII9impg29qa4KgyeybSxhXYRbssR8 cjOC4FqeRmr7JiFO8LR+FMaKzrpf0mqJMKhr7d9hpYhccz/8h75Qk0f8yBlaA+6xIp4q2FJ2b66vt hy5mjmdiw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1l0p3R-0001dy-8g; Sat, 16 Jan 2021 17:08:01 +0000 Received: from relay8-d.mail.gandi.net ([217.70.183.201]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1l0p3N-0001dK-B0 for linux-arm-kernel@lists.infradead.org; Sat, 16 Jan 2021 17:07:59 +0000 X-Originating-IP: 93.29.109.196 Received: from collins (196.109.29.93.rev.sfr.net [93.29.109.196]) (Authenticated sender: paul.kocialkowski@bootlin.com) by relay8-d.mail.gandi.net (Postfix) with ESMTPSA id 6BD541BF205; Sat, 16 Jan 2021 17:07:52 +0000 (UTC) Date: Sat, 16 Jan 2021 18:07:51 +0100 From: Paul Kocialkowski To: Robin Murphy Subject: Re: [PATCH 1/2] of: device: Allow DMA range map to be set before of_dma_configure_id Message-ID: References: <20210115175831.1184260-1-paul.kocialkowski@bootlin.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210116_120757_866348_BD159AF0 X-CRM114-Status: GOOD ( 32.12 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, Jernej Skrabec , Daniel Vetter , linux-kernel@vger.kernel.org, Maxime Ripard , Chen-Yu Tsai , Rob Herring , Thomas Petazzoni , Frank Rowand , linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgUm9iaW4sCgpMZSBTYXQgMTYgSmFuIDIxLCAxNDo1NywgUm9iaW4gTXVycGh5IGEgw6ljcml0 IDoKPiBPbiAyMDIxLTAxLTE1IDE3OjU4LCBQYXVsIEtvY2lhbGtvd3NraSB3cm90ZToKPiA+IEEg bWVjaGFuaXNtIHdhcyByZWNlbnRseSBpbnRyb2R1Y2VkIGZvciB0aGUgc3VueGkgYXJjaGl0ZWN0 dXJlIHdoZXJlCj4gPiB0aGUgRE1BIG9mZnNldCBmb3Igc3BlY2lmaWMgZGV2aWNlcyAodW5kZXIg dGhlIE1CVVMpIGlzIHNldCBieSBhIGNvbW1vbgo+ID4gZHJpdmVyIChzdW54aV9tYnVzKS4gVGhp cyBkcml2ZXIgY2FsbHMgZG1hX2RpcmVjdF9zZXRfb2Zmc2V0IHRvIHNldAo+ID4gdGhlIGRldmlj ZSdzIGRtYV9yYW5nZV9tYXAgbWFudWFsbHkuCj4gPiAKPiA+IEhvd2V2ZXIgdGhpcyBpbmZvcm1h dGlvbiB3YXMgb3ZlcndyaXR0ZW4gYnkgb2ZfZG1hX2NvbmZpZ3VyZV9pZCwgd2hpY2gKPiA+IG9i dGFpbnMgdGhlIG1hcCBmcm9tIG9mX2RtYV9nZXRfcmFuZ2UgKG9yIGtlZXBzIGl0IE5VTEwgd2hl biBpdCBmYWlscwo+ID4gYW5kIHRoZSBmb3JjZV9kbWEgYXJndW1lbnQgaXMgdHJ1ZSwgd2hpY2gg aXMgdGhlIGNhc2UgZm9yIHBsYXRmb3JtCj4gPiBkZXZpY2VzKS4KPiA+IAo+ID4gQXMgYSByZXN1 bHQsIHRoZSBkbWFfcmFuZ2VfbWFwIHdhcyBhbHdheXMgb3ZlcndyaXR0ZW4gYW5kIHRoZSBtZWNo YW5pc20KPiA+IGNvdWxkIG5vdCBjb3JyZWN0bHkgdGFrZSBlZmZlY3QuCj4gPiAKPiA+IFRoaXMg YWRkcyBhIGNoZWNrIHRvIGVuc3VyZSB0aGF0IG5vIHByZXZpb3VzIERNQSByYW5nZSBtYXAgaXMK PiA+IG92ZXJ3cml0dGVuIGFuZCBwcmludHMgYSB3YXJuaW5nIHdoZW4gdGhlIG1hcCB3YXMgYWxy ZWFkeSBzZXQgd2hpbGUKPiA+IGFsc28gYmVpbmcgYXZhaWxhYmxlIGZyb20gZHQuIEluIHRoaXMg Y2FzZSwgdGhlIG1hcCB0aGF0IHdhcyBhbHJlYWR5Cj4gPiBzZXQgaXMga2VwdC4KPiAKPiBIYW5n IG9uLCB0aGUgaGFyZC1jb2RlZCBvZmZzZXQgaXMgb25seSBpbnRlbmRlZCB0byBiZSBpbnN0YWxs ZWQgd2hlbiB0aGVyZQo+ICppc24ndCogYW55dGhpbmcgZGVzY3JpYmVkIGluIERULCBpbiB3aGlj aCBjYXNlIG9mX2RtYV9nZXRfcmFuZ2UoKSBzaG91bGQKPiBhbHdheXMgYmFpbCBvdXQgZWFybHkg d2l0aG91dCB0b3VjaGluZyBpdCBhbnl3YXkuIFRoaXMgc291bmRzIGxpa2UKPiBzb21ldGhpbmcn cyBub3QgcXVpdGUgcmlnaHQgaW4gdGhlIE1CVVMgZHJpdmVyLCBzbyBJIGRvbid0IHRoaW5rIHdv cmtpbmcKPiBhcm91bmQgaXQgaW4gY29yZSBjb2RlIGlzIHJlYWxseSB0aGUgcmlnaHQgdGhpbmcg dG8gZG8uCgpUaGF0J3MgcmlnaHQsIHRoZXJlIGlzIG5vIHByYWN0aWNhbCBjYXNlIHdoZXJlIHRo ZSB0d28gYXJlIGluIGNvbmZsaWN0LgpUaGUgcHJvYmxlbSB0aGF0IEknbSBzb2x2aW5nIGhlcmUg aXMgdGhhdCBkZXYtPmRtYV9yYW5nZV9tYXAgaXMgKmFsd2F5cyoKYXNzaWduZWQsIGV2ZW4gd2hl biBvZl9kbWFfZ2V0X3JhbmdlIGJhaWxlZCBhbmQgbWFwIHN0aWxsIGlzIE5VTEwuCgpUaGlzIGhh cyB0aGUgZWZmZWN0IG9mIGFsd2F5cyBvdmVyd3JpdGluZyB3aGF0IHRoZSBNQlVTIGRyaXZlciBk b2VzCihhbmQgbGVha2luZyBpdHMgbWVtb3J5IHRvbykuCgo+IERvIHlvdSBoYXZlIGEgY2FzZSB3 aGVyZSBvbmUgb2YgdGhlIHJlbGV2YW50IGRldmljZXMgaW5oZXJpdHMgYSAiZG1hLXJhbmdlcyIK PiB2aWEgdGhlIHJlZ3VsYXIgaGllcmFyY2h5IHdpdGhvdXQgaW5kaXJlY3RpbmcgdmlhIGFuICJp bnRlcmNvbm5lY3RzIgo+IHJlZmVyZW5jZT8gQ3VycmVudGx5IHlvdSdyZSBvbmx5IGNoZWNraW5n IGZvciB0aGUgbGF0dGVyLCBzbyB0aGF0IHdvdWxkIGJlCj4gb25lIHdheSB0aGluZ3MgY291bGQg Z28gYXdyeSAoYWx0aG91Z2ggdG8gYmUgYSBwcm9ibGVtLCBzYWlkICJkbWEtcmFuZ2VzIgo+IHdv dWxkIGFsc28gaGF2ZSB0byBlbmNvZGUgc29tZXRoaW5nICpvdGhlciogdGhhbiB0aGUgYXBwcm9w cmlhdGUgTUJVUwo+IG9mZnNldCwgd2hpY2ggaW1wbGllcyBhbiBpbmNvcnJlY3Qgb3IgYXQgbGVh c3QgaW5hY2N1cmF0ZWx5LXN0cnVjdHVyZWQgRFQgYXMKPiB3ZWxsKS4KCk5vLCBJIHRoaW5rIHRo aW5ncyBhcmUgZ29vZCBpbiB0aGF0IHJlZ2FyZC4gTm8gbWVzc2VkIHVwIGR0IG9yIGFueXRoaW5n IGxpa2UKdGhhdCA6KQoKQ2hlZXJzLAoKUGF1bAoKPiBSb2Jpbi4KPiAKPiA+IEZpeGVzOiBiNGJk YzRmYmY4ZDAgKCJzb2M6IHN1bnhpOiBEZWFsIHdpdGggdGhlIE1CVVMgRE1BIG9mZnNldHMgaW4g YSBjZW50cmFsIHBsYWNlIikKPiA+IFNpZ25lZC1vZmYtYnk6IFBhdWwgS29jaWFsa293c2tpIDxw YXVsLmtvY2lhbGtvd3NraUBib290bGluLmNvbT4KPiA+IC0tLQo+ID4gICBkcml2ZXJzL29mL2Rl dmljZS5jIHwgOSArKysrKysrKy0KPiA+ICAgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9vZi9kZXZpY2Uu YyBiL2RyaXZlcnMvb2YvZGV2aWNlLmMKPiA+IGluZGV4IGFlZGZhYWFmZDNlNy4uZGIxYjg2MzRj MmM3IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9vZi9kZXZpY2UuYwo+ID4gKysrIGIvZHJpdmVy cy9vZi9kZXZpY2UuYwo+ID4gQEAgLTE4MSw3ICsxODEsMTQgQEAgaW50IG9mX2RtYV9jb25maWd1 cmVfaWQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLAo+ID4gICAJ YXJjaF9zZXR1cF9kbWFfb3BzKGRldiwgZG1hX3N0YXJ0LCBzaXplLCBpb21tdSwgY29oZXJlbnQp Owo+ID4gLQlkZXYtPmRtYV9yYW5nZV9tYXAgPSBtYXA7Cj4gPiArCWlmICghZGV2LT5kbWFfcmFu Z2VfbWFwKSB7Cj4gPiArCQlkZXYtPmRtYV9yYW5nZV9tYXAgPSBtYXA7Cj4gPiArCX0gZWxzZSBp ZiAobWFwKSB7Cj4gPiArCQlkZXZfd2FybihkZXYsCj4gPiArCQkJICJETUEgcmFuZ2UgbWFwIHdh cyBhbHJlYWR5IHNldCwgaWdub3JpbmcgcmFuZ2UgbWFwIGZyb20gZHRcbiIpOwo+ID4gKwkJa2Zy ZWUobWFwKTsKPiA+ICsJfQo+ID4gKwo+ID4gICAJcmV0dXJuIDA7Cj4gPiAgIH0KPiA+ICAgRVhQ T1JUX1NZTUJPTF9HUEwob2ZfZG1hX2NvbmZpZ3VyZV9pZCk7Cj4gPiAKCi0tIApQYXVsIEtvY2lh bGtvd3NraSwgQm9vdGxpbgpFbWJlZGRlZCBMaW51eCBhbmQga2VybmVsIGVuZ2luZWVyaW5nCmh0 dHBzOi8vYm9vdGxpbi5jb20KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK