From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tomasz Figa Subject: Re: [PATCH v7 6/6] drm/msm: iommu: Replace runtime calls with runtime suppliers Date: Thu, 22 Feb 2018 17:13:56 +0900 Message-ID: References: <1517999482-17317-1-git-send-email-vivek.gautam@codeaurora.org> <7406f1ce-c2c9-a6bd-2886-5a34de45add6@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Robin Murphy Cc: Mark Rutland , devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, Linux PM , David Airlie , "Rafael J. Wysocki" , Joerg Roedel , Will Deacon , "list-Y9sIeH5OGRo@public.gmane.org:IOMMU DRIVERS" , dri-devel , Linux Kernel Mailing List , Rob Clark , Rob Herring , Vivek Gautam , Greg KH , freedreno , Stephen Boyd , linux-arm-msm List-Id: linux-arm-msm@vger.kernel.org T24gRnJpLCBGZWIgMTYsIDIwMTggYXQgOToxMyBBTSwgVG9tYXN6IEZpZ2EgPHRmaWdhQGNocm9t aXVtLm9yZz4gd3JvdGU6Cj4gT24gRnJpLCBGZWIgMTYsIDIwMTggYXQgMjoxNCBBTSwgUm9iaW4g TXVycGh5IDxyb2Jpbi5tdXJwaHlAYXJtLmNvbT4gd3JvdGU6Cj4+IE9uIDE1LzAyLzE4IDA0OjE3 LCBUb21hc3ogRmlnYSB3cm90ZToKPj4gWy4uLl0KPj4+Pgo+Pj4+IENvdWxkIHlvdSBlbGFib3Jh dGUgb24gd2hhdCBraW5kIG9mIGxvY2tpbmcgeW91IGFyZSBjb25jZXJuZWQgYWJvdXQ/Cj4+Pj4g QXMgSSBleHBsYWluZWQgYmVmb3JlLCB0aGUgbm9ybWFsbHkgaGFwcGVuaW5nIGZhc3QgcGF0aCB3 b3VsZCBsb2NrCj4+Pj4gZGV2LT5wb3dlcl9sb2NrIG9ubHkgZm9yIHRoZSBicmllZiBtb21lbnQg b2YgaW5jcmVtZW50aW5nIHRoZSBydW50aW1lCj4+Pj4gUE0gdXNhZ2UgY291bnRlci4KPj4+Cj4+ Pgo+Pj4gTXkgYmFkLCB0aGF0J3Mgbm90IGV2ZW4gaXQuCj4+Pgo+Pj4gVGhlIGF0b21pYyB1c2Fn ZSBjb3VudGVyIGlzIGluY3JlbWVudGVkIGJlZm9yZWhhbmRzLCB3aXRob3V0IGFueQo+Pj4gbG9j a2luZyBbMV0gYW5kIHRoZSBzcGlubG9jayBpcyBhY3F1aXJlZCBvbmx5IGZvciB0aGUgc2FrZSBv Zgo+Pj4gdmFsaWRhdGluZyB0aGF0IGRldmljZSdzIHJ1bnRpbWUgUE0gc3RhdGUgcmVtYWluZWQg dmFsaWQgaW5kZWVkIFsyXSwKPj4+IHdoaWNoIHdvdWxkIGJlIHRoZSBjYXNlIGluIHRoZSBmYXN0 IHBhdGggb2YgdGhlIHNhbWUgZHJpdmVyIGRvaW5nIHR3bwo+Pj4gbWFwcGluZ3MgaW4gcGFyYWxs ZWwsIHdpdGggdGhlIG1hc3RlciBwb3dlcmVkIG9uIChhbmQgc28gdGhlIFNNTVUsCj4+PiB0aHJv dWdoIGRldmljZSBsaW5rczsgaWYgbWFzdGVyIHdhcyBub3QgcG93ZXJlZCBvbiBhbHJlYWR5LCBw b3dlcmluZwo+Pj4gb24gdGhlIFNNTVUgaXMgdW5hdm9pZGFibGUgYW55d2F5IGFuZCBpdCB3b3Vs ZCBhZGQgbXVjaCBtb3JlIGxhdGVuY3kKPj4+IHRoYW4gdGhlIHNwaW5sb2NrIGl0c2VsZikuCj4+ Cj4+Cj4+IFdlIG5vdyBoYXZlIG5vIGxvY2tpbmcgYXQgYWxsIGluIHRoZSBtYXAgcGF0aCwgYW5k IG9ubHkgYSBwZXItZG9tYWluIGxvY2sKPj4gYXJvdW5kIFRMQiBzeW5jIGluIHVubWFwIHdoaWNo IGlzIHVuZm9ydHVuYXRlbHkgbmVjZXNzYXJ5IGZvciBjb3JyZWN0bmVzczsKPj4gdGhlIGxhdHRl ciBpc24ndCB0b28gdGVycmlibGUsIHNpbmNlIGluICJzZXJpb3VzIiBoYXJkd2FyZSBpdCBzaG91 bGQgb25seSBiZQo+PiBzZXJpYWxpc2luZyBhIGZldyBjcHVzIHNlcnZpbmcgdGhlIHNhbWUgZGV2 aWNlIGFnYWluc3QgZWFjaCBvdGhlciAoZS5nLiBmb3IKPj4gbXVsdGlwbGUgcXVldWVzIG9uIGEg c2luZ2xlIE5JQykuCj4+Cj4+IFB1dHRpbmcgaW4gYSBnbG9iYWwgbG9jayB3aGljaCBzZXJpYWxp c2VzICphbGwqIGNvbmN1cnJlbnQgbWFwIGFuZCB1bm1hcAo+PiBjYWxscyBmb3IgKmFsbCogdW5y ZWxhdGVkIGRldmljZXMgbWFrZXMgdGhpbmdzIHdvcnNlLiBQZXJpb2QuIEV2ZW4gaWYgdGhlCj4+ IGxvY2sgaXRzZWxmIHdlcmUgaGVsZCBmb3IgdGhlIG1pbmltdW0gcG9zc2libGUgdGltZSwgaS5l LiB0cml2aWFsbHkKPj4gInNwaW5fbG9jaygmbG9jayk7IHNwaW5fdW5sb2NrKCZsb2NrKSIsIHRo ZSBjb3N0IG9mIHJlcGVhdGVkbHkgYm91bmNpbmcgdGhhdAo+PiBvbmUgY2FjaGUgbGluZSBhcm91 bmQgYmV0d2VlbiA5NiBDUFVzIGFjcm9zcyB0d28gc29ja2V0cyBpcyBub3QgbmVnbGlnaWJsZS4K Pgo+IEZhaXIgZW5vdWdoLiBOb3RlIHRoYXQgd2UncmUgaW4gYSBxdWl0ZSBpbnRlcmVzdGluZyBz aXR1YXRpb24gbm93Ogo+ICBhKSBXZSBuZWVkIHRvIGhhdmUgcnVudGltZSBQTSBlbmFibGVkIG9u IFF1YWxjb21tIFNvQyB0byBoYXZlIHBvd2VyCj4gcHJvcGVybHkgbWFuYWdlZCwKPiAgYikgV2Ug bmVlZCB0byBoYXZlIGxvY2stZnJlZSBtYXAvdW5tYXAgb24gc3VjaCBkaXN0cmlidXRlZCBzeXN0 ZW1zLAo+ICBjKSBJZiBydW50aW1lIFBNIGlzIGVuYWJsZWQsIHdlIG5lZWQgdG8gY2FsbCBpbnRv IHJ1bnRpbWUgUE0gZnJvbSBhbnkKPiBjb2RlIHRoYXQgZG9lcyBoYXJkd2FyZSBhY2Nlc3Nlcywg b3RoZXJ3aXNlIHRoZSBJT01NVSBBUEkgKGFuZCBzbyBETUEKPiBBUEkgYW5kIHRoZW4gYW55IFY0 TDIgZHJpdmVyKSBiZWNvbWVzIHVudXNhYmxlLgo+Cj4gSSBjYW4gc2VlIG9uZSBtb3JlIHdheSB0 aGF0IGNvdWxkIHBvdGVudGlhbGx5IGxldCB1cyBoYXZlIGFsbCB0aGUKPiB0aHJlZS4gSG93IGFi b3V0IGVuYWJsaW5nIHJ1bnRpbWUgUE0gb25seSBvbiBzZWxlY3RlZCBpbXBsZW1lbnRhdGlvbnMK PiAoZS5nLiBxY29tLHNtbXUpIGFuZCB0aGVuIGhhdmluZyBhbGwgdGhlIHJ1bnRpbWUgUE0gY2Fs bHMgc3Vycm91bmRlZAo+IHdpdGggaWYgKHBtX3J1bnRpbWVfZW5hYmxlZCgpKSwgd2hpY2ggaXMg bG9ja2xlc3M/Cj4KClNvcnJ5IGZvciBwaW5naW5nLCBidXQgYW55IG9waW5pb24gb24gdGhpcyBr aW5kIG9mIGFwcHJvYWNoPwoKQmVzdCByZWdhcmRzLApUb21hc3oKCj4+Cj4+PiBbMV0KPj4+IGh0 dHA6Ly9lbGl4aXIuZnJlZS1lbGVjdHJvbnMuY29tL2xpbnV4L3Y0LjE2LXJjMS9zb3VyY2UvZHJp dmVycy9iYXNlL3Bvd2VyL3J1bnRpbWUuYyNMMTAyOAo+Pj4gWzJdCj4+PiBodHRwOi8vZWxpeGly LmZyZWUtZWxlY3Ryb25zLmNvbS9saW51eC92NC4xNi1yYzEvc291cmNlL2RyaXZlcnMvYmFzZS9w b3dlci9ydW50aW1lLmMjTDYxMwo+Pj4KPj4+IEluIGFueSBjYXNlLCBJIGNhbid0IGltYWdpbmUg dGhpcyB3b3JraW5nIHdpdGggVjRMMiBvciBhbnl0aGluZyBlbHNlCj4+PiByZWx5aW5nIG9uIGFu eSBtZW1vcnkgbWFuYWdlbWVudCBtb3JlIGdlbmVyaWMgdGhhbiBjYWxsaW5nIElPTU1VIEFQSQo+ Pj4gZGlyZWN0bHkgZnJvbSB0aGUgZHJpdmVyLCB3aXRoIHRoZSBJT01NVSBkZXZpY2UgaGF2aW5n IHJ1bnRpbWUgUE0KPj4+IGVuYWJsZWQsIGJ1dCB3aXRob3V0IG1hbmFnaW5nIHRoZSBydW50aW1l IFBNIGZyb20gdGhlIElPTU1VIGRyaXZlcidzCj4+PiBjYWxsYmFja3MgdGhhdCBuZWVkIGFjY2Vz cyB0byB0aGUgaGFyZHdhcmUuIEFzIEkgbWVudGlvbmVkIGJlZm9yZSwKPj4+IG9ubHkgdGhlIElP TU1VIGRyaXZlciBrbm93cyB3aGVuIGV4YWN0bHkgdGhlIHJlYWwgaGFyZHdhcmUgYWNjZXNzCj4+ PiBuZWVkcyB0byBiZSBkb25lIChlLmcuIFJvY2tjaGlwL0V4eW5vcyBkb24ndCBuZWVkIHRvIGRv IHRoYXQgZm9yCj4+PiBtYXAvdW5tYXAgaWYgdGhlIHBvd2VyIGlzIGRvd24sIGJ1dCBzb21lIGlt cGxlbWVudGF0aW9ucyBvZiBTTU1VIHdpdGgKPj4+IFRMQiBwb3dlcmVkIHNlcGFyYXRlbHkgbWln aHQgbmVlZCB0byBkbyBzbykuCj4+Cj4+Cj4+IEl0J3Mgd29ydGggbm90aW5nIHRoYXQgRXh5bm9z IGFuZCBSb2NrY2hpcCBhcmUgcmVsYXRpdmVseSBzbWFsbAo+PiBzZWxmLWNvbnRhaW5lZCBJUCBi bG9ja3MgaW50ZWdyYXRlZCBjbG9zZWx5IHdpdGggdGhlIGludGVyZmFjZXMgb2YgdGhlaXIKPj4g cmVsZXZhbnQgbWFzdGVyIGRldmljZXM7IFNNTVUgaXMgYW4gYXJjaGl0ZWN0dXJlLCBpbXBsZW1l bnRhdGlvbnMgb2Ygd2hpY2gKPj4gbWF5IGJlIGxhcmdlLCBkaXN0cmlidXRlZCwgYW5kIGhhdmUg Y29tcGxleCBhbmQgd2lsZGx5IGRpZmZlcmluZyBpbnRlcm5hbAo+PiB0b3BvbG9naWVzLiBBcyBz dWNoLCBpdCdzIGEgbG90IGhhcmRlciB0byBtYWtlIGhhcmR3YXJlLXNwZWNpZmljIGFzc3VtcHRp b25zCj4+IGFuZC9vciBiZSBjb3JyZWN0IGZvciBhbGwgcG9zc2libGUgY2FzZXMuCj4+Cj4+IERv bid0IGdldCBtZSB3cm9uZywgSSBkbyB1bHRpbWF0ZWx5IGFncmVlIHRoYXQgdGhlIElPTU1VIGRy aXZlciBpcyB0aGUgb25seQo+PiBhZ2VudCB3aG8gdWx0aW1hdGVseSBrbm93cyB3aGF0IGNhbGxz IGFyZSBnb2luZyB0byBiZSBuZWNlc3NhcnkgZm9yIHdoYXRldmVyCj4+IG9wZXJhdGlvbiBpdCdz IHBlcmZvcm1pbmcgb24gaXRzIG93biBoYXJkd2FyZSo7IGl0J3MganVzdCB0aGF0IGZvciBTTU1V IGl0Cj4+IG5lZWRzIHRvIGJlIGltcGxlbWVudGVkIGluIGEgd2F5IHRoYXQgaGFzIHplcm8gaW1w YWN0IG9uIHRoZSBjYXNlcyB3aGVyZSBpdAo+PiBkb2Vzbid0IG1hdHRlciwgYmVjYXVzZSBpdCdz IG5vdCB2aWFibGUgdG8gc3BlY2lhbGlzZSB0aGF0IGRyaXZlciBmb3IgYW55Cj4+IHBhcnRpY3Vs YXIgSVAgaW1wbGVtZW50YXRpb24vdXNlLWNhc2UuCj4KPiBTdGlsbCwgZXhhY3RseSB0aGUgc2Ft ZSBob2xkcyBmb3IgdGhlIGxvdyBwb3dlciBlbWJlZGRlZCB1c2UgY2FzZXMsCj4gd2hlcmUgd2Ug c3RyaXZlIGZvciB0aGUgbG93ZXN0IHBvc3NpYmxlIHBvd2VyIGNvbnN1bXB0aW9uLCB3aGlsZQo+ IG1haW50YWluaW5nIHBlcmZvcm1hbmNlIGxldmVscyBoaWdoIGFzIHdlbGwuIEFuZCBzbyB0aGUg U01NVSBjb2RlIGlzCj4gZXhwZWN0ZWQgdG8gYWxzbyB3b3JrIHdpdGggb3VyIHVzZSBjYXNlcywg c3VjaCBhcyBWNEwyIG9yIERSTSBkcml2ZXJzLgo+IFNpbmNlIHRoZXNlIHBvaW50cyBkb24ndCBo b2xkIGZvciBjdXJyZW50IFNNTVUgY29kZSwgSSBjb3VsZCBzYXkgdGhhdAo+IHRoZSBpdCBoYXMg YmVlbiBhbHJlYWR5IHNwZWNpYWxpemVkIGZvciBsYXJnZSwgZGlzdHJpYnV0ZWQKPiBpbXBsZW1l bnRhdGlvbnMuCj4KPiBCZXN0IHJlZ2FyZHMsCj4gVG9tYXN6Cl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRy ZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: ARC-Seal: i=1; a=rsa-sha256; t=1519287260; cv=none; d=google.com; s=arc-20160816; b=fT6WH6Z0ybt1N3fVFAvdowmAsWK+kA3/p99Qbjo4n5KmFSQMYobe2Iq+YDPNf3xA70 VMopLclmi8t24Sqq17QbKi4P/y0U5ewjuBD6v73OldJ+UsgOB5WCupce7eg07K5718RM 2kJCdrehJv8gwZZAuper585zIQS8EAAraVJ8zqBXMe5K0XJM+USdAKIg5JLbpRjUGz8d Tia3hVcR6Pn82JzmNErPujDVwGIDe09+eYIVOymoJvTY3WaG72C65rhH9tJSoxu5q/Pu MXZv5P0o7qfUz3+w2HyM268hBOCJMpnxpLfk2fSqIrv5ZbaZ8ZUxqmQJglISBTTTBS+y pVGw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:subject:message-id:date:from:references:in-reply-to :mime-version:dkim-signature:arc-authentication-results; bh=UPe2xENpwVEV7++/tpPycq87ZBVkgIZnCE2KZfW7dpo=; b=J9ASscLPHB7RL2OS9MD5/1+HEe3MqRssEjQo+AJF0NgbbAKyt7R55ViV+UJ8Y2krTM L+v7dE5qI9+9QklkCfBYGlvdvGAQf4Ie+G4KNIvVS/eWO6DgcgNwtZhi7aXjq8PgTOPi XwYlBqI11ARXvCr7F5E5woX5v2A1WZt9XZcshp8VWQ21VNySpQ7gyA26ArFCrhSAUvAY 0lGY+8dbesm7lHrewwDUamMTvvHzsubTC4l+zrFB3ntQriTHddZ2dHMAikEI9DczOeFf J4wbIEB8KjEZtp0pRdnvtEvvdPPC5FxLDfyajnxxl1mouWU7WQsZ1yfI/Ji+jMAJGPhH 0bRg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=OhBFNeM+; spf=pass (google.com: domain of tfiga@chromium.org designates 209.85.220.41 as permitted sender) smtp.mailfrom=tfiga@chromium.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=OhBFNeM+; spf=pass (google.com: domain of tfiga@chromium.org designates 209.85.220.41 as permitted sender) smtp.mailfrom=tfiga@chromium.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org X-Google-Smtp-Source: AH8x226SIjNdgCOQdhZXkrk1QOCiJUG+u2cMOhbFuRp0qBHB9MPQP2QEW8p5WatICe6rxs5k1h0OKg== MIME-Version: 1.0 In-Reply-To: References: <1517999482-17317-1-git-send-email-vivek.gautam@codeaurora.org> <7406f1ce-c2c9-a6bd-2886-5a34de45add6@arm.com> From: Tomasz Figa Date: Thu, 22 Feb 2018 17:13:56 +0900 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v7 6/6] drm/msm: iommu: Replace runtime calls with runtime suppliers To: Robin Murphy Cc: Will Deacon , Rob Clark , "list@263.net:IOMMU DRIVERS" , Joerg Roedel , Rob Herring , Mark Rutland , "Rafael J. Wysocki" , devicetree@vger.kernel.org, Linux Kernel Mailing List , Linux PM , dri-devel , freedreno , David Airlie , Greg KH , Stephen Boyd , linux-arm-msm , jcrouse@codeaurora.org, Vivek Gautam Content-Type: text/plain; charset="UTF-8" X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: =?utf-8?q?1591737886832187485?= X-GMAIL-MSGID: =?utf-8?q?1593088158935654402?= X-Mailing-List: linux-kernel@vger.kernel.org List-ID: On Fri, Feb 16, 2018 at 9:13 AM, Tomasz Figa wrote: > On Fri, Feb 16, 2018 at 2:14 AM, Robin Murphy wrote: >> On 15/02/18 04:17, Tomasz Figa wrote: >> [...] >>>> >>>> Could you elaborate on what kind of locking you are concerned about? >>>> As I explained before, the normally happening fast path would lock >>>> dev->power_lock only for the brief moment of incrementing the runtime >>>> PM usage counter. >>> >>> >>> My bad, that's not even it. >>> >>> The atomic usage counter is incremented beforehands, without any >>> locking [1] and the spinlock is acquired only for the sake of >>> validating that device's runtime PM state remained valid indeed [2], >>> which would be the case in the fast path of the same driver doing two >>> mappings in parallel, with the master powered on (and so the SMMU, >>> through device links; if master was not powered on already, powering >>> on the SMMU is unavoidable anyway and it would add much more latency >>> than the spinlock itself). >> >> >> We now have no locking at all in the map path, and only a per-domain lock >> around TLB sync in unmap which is unfortunately necessary for correctness; >> the latter isn't too terrible, since in "serious" hardware it should only be >> serialising a few cpus serving the same device against each other (e.g. for >> multiple queues on a single NIC). >> >> Putting in a global lock which serialises *all* concurrent map and unmap >> calls for *all* unrelated devices makes things worse. Period. Even if the >> lock itself were held for the minimum possible time, i.e. trivially >> "spin_lock(&lock); spin_unlock(&lock)", the cost of repeatedly bouncing that >> one cache line around between 96 CPUs across two sockets is not negligible. > > Fair enough. Note that we're in a quite interesting situation now: > a) We need to have runtime PM enabled on Qualcomm SoC to have power > properly managed, > b) We need to have lock-free map/unmap on such distributed systems, > c) If runtime PM is enabled, we need to call into runtime PM from any > code that does hardware accesses, otherwise the IOMMU API (and so DMA > API and then any V4L2 driver) becomes unusable. > > I can see one more way that could potentially let us have all the > three. How about enabling runtime PM only on selected implementations > (e.g. qcom,smmu) and then having all the runtime PM calls surrounded > with if (pm_runtime_enabled()), which is lockless? > Sorry for pinging, but any opinion on this kind of approach? Best regards, Tomasz >> >>> [1] >>> http://elixir.free-electrons.com/linux/v4.16-rc1/source/drivers/base/power/runtime.c#L1028 >>> [2] >>> http://elixir.free-electrons.com/linux/v4.16-rc1/source/drivers/base/power/runtime.c#L613 >>> >>> In any case, I can't imagine this working with V4L2 or anything else >>> relying on any memory management more generic than calling IOMMU API >>> directly from the driver, with the IOMMU device having runtime PM >>> enabled, but without managing the runtime PM from the IOMMU driver's >>> callbacks that need access to the hardware. As I mentioned before, >>> only the IOMMU driver knows when exactly the real hardware access >>> needs to be done (e.g. Rockchip/Exynos don't need to do that for >>> map/unmap if the power is down, but some implementations of SMMU with >>> TLB powered separately might need to do so). >> >> >> It's worth noting that Exynos and Rockchip are relatively small >> self-contained IP blocks integrated closely with the interfaces of their >> relevant master devices; SMMU is an architecture, implementations of which >> may be large, distributed, and have complex and wildly differing internal >> topologies. As such, it's a lot harder to make hardware-specific assumptions >> and/or be correct for all possible cases. >> >> Don't get me wrong, I do ultimately agree that the IOMMU driver is the only >> agent who ultimately knows what calls are going to be necessary for whatever >> operation it's performing on its own hardware*; it's just that for SMMU it >> needs to be implemented in a way that has zero impact on the cases where it >> doesn't matter, because it's not viable to specialise that driver for any >> particular IP implementation/use-case. > > Still, exactly the same holds for the low power embedded use cases, > where we strive for the lowest possible power consumption, while > maintaining performance levels high as well. And so the SMMU code is > expected to also work with our use cases, such as V4L2 or DRM drivers. > Since these points don't hold for current SMMU code, I could say that > the it has been already specialized for large, distributed > implementations. > > Best regards, > Tomasz