From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vivek Gautam Subject: Re: [PATCH v16 1/5] iommu/arm-smmu: Add pm_runtime/sleep ops Date: Mon, 1 Oct 2018 15:51:56 +0530 Message-ID: References: <20180830144541.17740-1-vivek.gautam@codeaurora.org> <20180830144541.17740-2-vivek.gautam@codeaurora.org> 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: Ulf Hansson Cc: Mark Rutland , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , Linux PM , sboyd-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, Will Deacon , "Rafael J. Wysocki" , open list , "list-Y9sIeH5OGRo@public.gmane.org:IOMMU DRIVERS , Joerg Roedel , " , alex.williamson-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, robh+dt , linux-arm-msm , freedreno , Robin Murphy List-Id: linux-arm-msm@vger.kernel.org T24gTW9uLCBPY3QgMSwgMjAxOCBhdCAzOjA5IFBNIFVsZiBIYW5zc29uIDx1bGYuaGFuc3NvbkBs aW5hcm8ub3JnPiB3cm90ZToKPgo+IE9uIDEgT2N0b2JlciAyMDE4IGF0IDA3OjQ5LCBWaXZlayBH YXV0YW0gPHZpdmVrLmdhdXRhbUBjb2RlYXVyb3JhLm9yZz4gd3JvdGU6Cj4gPiBISSBVbGYsCj4g Pgo+ID4gT24gRnJpLCBTZXAgMjgsIDIwMTggYXQgNTozMCBQTSBVbGYgSGFuc3NvbiA8dWxmLmhh bnNzb25AbGluYXJvLm9yZz4gd3JvdGU6Cj4gPj4KPiA+PiBPbiAzMCBBdWd1c3QgMjAxOCBhdCAx Njo0NSwgVml2ZWsgR2F1dGFtIDx2aXZlay5nYXV0YW1AY29kZWF1cm9yYS5vcmc+IHdyb3RlOgo+ ID4+ID4gRnJvbTogU3JpY2hhcmFuIFIgPHNyaWNoYXJhbkBjb2RlYXVyb3JhLm9yZz4KPiA+PiA+ Cj4gPj4gPiBUaGUgc21tdSBuZWVkcyB0byBiZSBmdW5jdGlvbmFsIG9ubHkgd2hlbiB0aGUgcmVz cGVjdGl2ZQo+ID4+ID4gbWFzdGVyJ3MgdXNpbmcgaXQgYXJlIGFjdGl2ZS4gVGhlIGRldmljZV9s aW5rIGZlYXR1cmUKPiA+PiA+IGhlbHBzIHRvIHRyYWNrIHN1Y2ggZnVuY3Rpb25hbCBkZXBlbmRl bmNpZXMsIHNvIHRoYXQgdGhlCj4gPj4gPiBpb21tdSBnZXRzIHBvd2VyZWQgd2hlbiB0aGUgbWFz dGVyIGRldmljZSBlbmFibGVzIGl0c2VsZgo+ID4+ID4gdXNpbmcgcG1fcnVudGltZS4gU28gYnkg YWRhcHRpbmcgdGhlIHNtbXUgZHJpdmVyIGZvcgo+ID4+ID4gcnVudGltZSBwbSwgYWJvdmUgc2Fp ZCBkZXBlbmRlbmN5IGNhbiBiZSBhZGRyZXNzZWQuCj4gPj4gPgo+ID4+ID4gVGhpcyBwYXRjaCBh ZGRzIHRoZSBwbSBydW50aW1lL3NsZWVwIGNhbGxiYWNrcyB0byB0aGUKPiA+PiA+IGRyaXZlciBh bmQgYWxzbyB0aGUgZnVuY3Rpb25zIHRvIHBhcnNlIHRoZSBzbW11IGNsb2Nrcwo+ID4+ID4gZnJv bSBEVCBhbmQgZW5hYmxlIHRoZW0gaW4gcmVzdW1lL3N1c3BlbmQuCj4gPj4gPgo+ID4+ID4gQWxz bywgd2hpbGUgd2UgZW5hYmxlIHRoZSBydW50aW1lIHBtIGFkZCBhIHBtIHNsZWVwIHN1c3BlbmQK PiA+PiA+IGNhbGxiYWNrIHRoYXQgcHVzaGVzIGRldmljZXMgdG8gbG93IHBvd2VyIHN0YXRlIGJ5 IHR1cm5pbmcKPiA+PiA+IHRoZSBjbG9ja3Mgb2ZmIGluIGEgc3lzdGVtIHNsZWVwLgo+ID4+ID4g QWxzbyBhZGQgY29ycmVzcG9uZGluZyBjbG9jayBlbmFibGUgcGF0aCBpbiByZXN1bWUgY2FsbGJh Y2suCj4gPj4gPgo+ID4+ID4gU2lnbmVkLW9mZi1ieTogU3JpY2hhcmFuIFIgPHNyaWNoYXJhbkBj b2RlYXVyb3JhLm9yZz4KPiA+PiA+IFNpZ25lZC1vZmYtYnk6IEFyY2hpdCBUYW5lamEgPGFyY2hp dHRAY29kZWF1cm9yYS5vcmc+Cj4gPj4gPiBbdml2ZWs6IHJld29yayBmb3IgY2xvY2sgYW5kIHBt IG9wc10KPiA+PiA+IFNpZ25lZC1vZmYtYnk6IFZpdmVrIEdhdXRhbSA8dml2ZWsuZ2F1dGFtQGNv ZGVhdXJvcmEub3JnPgo+ID4+ID4gUmV2aWV3ZWQtYnk6IFRvbWFzeiBGaWdhIDx0ZmlnYUBjaHJv bWl1bS5vcmc+Cj4gPj4gPiBUZXN0ZWQtYnk6IFNyaW5pdmFzIEthbmRhZ2F0bGEgPHNyaW5pdmFz LmthbmRhZ2F0bGFAbGluYXJvLm9yZz4KPiA+PiA+IC0tLQo+ID4+ID4gIGRyaXZlcnMvaW9tbXUv YXJtLXNtbXUuYyB8IDc3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLQo+ID4+ID4gIDEgZmlsZSBjaGFuZ2VkLCA3NCBpbnNlcnRpb25zKCspLCAzIGRlbGV0 aW9ucygtKQo+ID4+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvYXJtLXNtbXUuYyBiL2Ry aXZlcnMvaW9tbXUvYXJtLXNtbXUuYwo+ID4+Cj4gPj4gWy4uLl0KPiA+Pgo+ID4+ID4gLXN0YXRp YyBpbnQgX19tYXliZV91bnVzZWQgYXJtX3NtbXVfcG1fcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRl dikKPiA+PiA+ICtzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGFybV9zbW11X3J1bnRpbWVfcmVz dW1lKHN0cnVjdCBkZXZpY2UgKmRldikKPiA+PiA+ICB7Cj4gPj4gPiAgICAgICAgIHN0cnVjdCBh cm1fc21tdV9kZXZpY2UgKnNtbXUgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiA+PiA+ICsgICAg ICAgaW50IHJldDsKPiA+PiA+ICsKPiA+PiA+ICsgICAgICAgcmV0ID0gY2xrX2J1bGtfZW5hYmxl KHNtbXUtPm51bV9jbGtzLCBzbW11LT5jbGtzKTsKPiA+PiA+ICsgICAgICAgaWYgKHJldCkKPiA+ PiA+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4+ID4KPiA+PiA+ICAgICAgICAgYXJt X3NtbXVfZGV2aWNlX3Jlc2V0KHNtbXUpOwo+ID4+ID4gKwo+ID4+ID4gICAgICAgICByZXR1cm4g MDsKPiA+PiA+ICB9Cj4gPj4gPgo+ID4+ID4gLXN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhhcm1f c21tdV9wbV9vcHMsIE5VTEwsIGFybV9zbW11X3BtX3Jlc3VtZSk7Cj4gPj4gPiArc3RhdGljIGlu dCBfX21heWJlX3VudXNlZCBhcm1fc21tdV9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAq ZGV2KQo+ID4+ID4gK3sKPiA+PiA+ICsgICAgICAgc3RydWN0IGFybV9zbW11X2RldmljZSAqc21t dSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ID4+ID4gKwo+ID4+ID4gKyAgICAgICBjbGtfYnVs a19kaXNhYmxlKHNtbXUtPm51bV9jbGtzLCBzbW11LT5jbGtzKTsKPiA+PiA+ICsKPiA+PiA+ICsg ICAgICAgcmV0dXJuIDA7Cj4gPj4gPiArfQo+ID4+ID4gKwo+ID4+ID4gK3N0YXRpYyBpbnQgX19t YXliZV91bnVzZWQgYXJtX3NtbXVfcG1fcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKPiA+PiA+ ICt7Cj4gPj4gPiArICAgICAgIGlmIChwbV9ydW50aW1lX3N1c3BlbmRlZChkZXYpKQo+ID4+ID4g KyAgICAgICAgICAgICAgIHJldHVybiAwOwo+ID4+Cj4gPj4gTG9va3MgbGlrZSB5b3Ugc2hvdWxk IGJlIGFibGUgdXNlIHBtX3J1bnRpbWVfZm9yY2VfcmVzdW1lKCksIGluc3RlYWQKPiA+PiBvZiB1 c2luZyB0aGlzIGxvY2FsIHRyaWNrLiBVbmxlc3MgSSBhbSBtaXNzaW5nIHNvbWV0aGluZywgb2Yg Y291cnNlLgo+ID4+Cj4gPj4gSW4gb3RoZXIgd29yZHMsIGp1c3QgYXNzaWduIHRoZSBzeXN0ZW0g c2xlZXAgY2FsbGJhY2tzIGZvciByZXN1bWUsIHRvCj4gPj4gcG1fcnVudGltZV9mb3JjZV9yZXN1 bWUoKS4gQW5kIHZpY2UgdmVyc2UgZm9yIHRoZSBzeXN0ZW0gc3VzcGVuZAo+ID4+IGNhbGxiYWNr cywgcG1fcnVudGltZV9mb3JjZV9zdXNwZW5kKCksIG9mIGNvdXJzZS4KPiA+Cj4gPiBUaGFua3Mg Zm9yIHRoZSByZXZpZXcuIEkgd2lsbCBjaGFuZ2UgdGhpcyBhcyBzdWdnZXN0ZWQuCj4gPgo+ID4+ Cj4gPj4gPiArCj4gPj4gPiArICAgICAgIHJldHVybiBhcm1fc21tdV9ydW50aW1lX3Jlc3VtZShk ZXYpOwo+ID4+ID4gK30KPiA+PiA+ICsKPiA+PiA+ICtzdGF0aWMgaW50IF9fbWF5YmVfdW51c2Vk IGFybV9zbW11X3BtX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQo+ID4+ID4gK3sKPiA+PiA+ ICsgICAgICAgaWYgKHBtX3J1bnRpbWVfc3VzcGVuZGVkKGRldikpCj4gPj4gPiArICAgICAgICAg ICAgICAgcmV0dXJuIDA7Cj4gPj4gPiArCj4gPj4gPiArICAgICAgIHJldHVybiBhcm1fc21tdV9y dW50aW1lX3N1c3BlbmQoZGV2KTsKPiA+PiA+ICt9Cj4gPj4gPiArCj4gPj4gPiArc3RhdGljIGNv bnN0IHN0cnVjdCBkZXZfcG1fb3BzIGFybV9zbW11X3BtX29wcyA9IHsKPiA+PiA+ICsgICAgICAg U0VUX1NZU1RFTV9TTEVFUF9QTV9PUFMoYXJtX3NtbXVfcG1fc3VzcGVuZCwgYXJtX3NtbXVfcG1f cmVzdW1lKQo+ID4+Cj4gPj4gSSBhbSB3b25kZXJpbmcgaWYgdXNpbmcgdGhlIC0+c3VzcGVuZHxy ZXN1bWUoKSBjYWxsYmFjayBpcyByZWFsbHkKPiA+PiAibGF0ZS9lYXJseSIgZW5vdWdoIGluIHRo ZSBkZXZpY2Ugc3VzcGVuZCBwaGFzZT8KPiA+Pgo+ID4+IE90aGVycyBpcyB1c2luZyB0aGUgbm9p cnEgcGhhc2UgYW5kIHNvbWUgaXMgZXZlbiB1c2luZyB0aGUgc3lzY29yZQo+ID4+IG9wcy4gT2Yg Y291cnNlIGl0IGRlcGVuZHMgb24gdGhlIGJlaGF2aW9yIG9mIHRoZSBjb25zdW1lcnMgb2YgaW9t bXUKPiA+PiBkZXZpY2UsIGFuZCBJIGd1ZXNzIG5vdCBldmVyeW9uZSBpcyB1c2luZyBkZXZpY2Ug bGlua3MsIHdoaWNoIGZvciBzdXJlCj4gPj4gaW1wcm92ZXMgdGhpbmdzIGluIHRoaXMgcmVnYXJk cyBhcyB3ZWxsLgo+ID4KPiA+IFdlbGwgeWVzLCBhcyB5b3Ugc2FpZCB0aGUgZGV2aWNlIGxpbmtz IHNob3VsZCBiZSBhYmxlIHRvIHRha2UgY2FyZSBvZgo+ID4gbWFpbnRhaW5pbmcgdGhlIGNvcnJl Y3Qgc3VzcGVuZC9yZXN1bWUgb3JkZXIgb2Ygc21tdSBhbmQgaXRzIGNsaWVudHMsCj4gPiBvciBh bSBJIG1pc3NpbmcgeW91ciBwb2ludCBoZXJlPwo+ID4gTGV0IG1lIGtub3cgYW5kIEkgd2lsbCBi ZSBoYXBweSB0byBpbmNvcnBvcmF0ZSBhbnkgc3VnZ2VzdGlvbnMuCj4gPiBUaGFua3MKPgo+IElm IGl0IHdvcmtzIGZpbmUsIHRoZW4geW91IG1heSBrZWVwIGl0IGFzIGlzLgo+Cj4gSnVzdCB3YW50 ZWQgdG8gcG9pbnQgb3V0IHRoYXQgaWYgYW55IGNvbnN1bWVycyByZWxpZXMgb24gdGhlIGlvbW11 IHRvCj4gb3BlcmF0aW9uYWwgdG8gc2F5IHVudGlsIHRoZSBzdXNwZW5kLWxhdGUgcGhhc2UsIHRo ZW4gdGhpcyBkb2Vzbid0Cj4gcGxheS4gVGhlbiB5b3UgbmVlZCB0byBtb3ZlIHlvdXIgY2FsbGJh Y2tzIHRvIHRoZSBjb3JyZXNwb25kaW5nIHNhbWUKPiBwaGFzZS4KCkFsdGhvdWdoIEkgaGF2ZSBu byBtZWFucyB0byB0ZXN0IHRoZSBzdXNwZW5kLWxhdGUgcGhhc2UsIHRlc3RzIHdpdGggZ3JhcGhp Y3MKYW5kIGRpc3BsYXkgb24gZGI4MjAgaGF2ZW4ndCBzaG93biBhbnkgYW5vbWFseS4KCltzbmlw XQoKQmVzdCByZWdhcmRzClZpdmVrCgotLSAKUVVBTENPTU0gSU5ESUEsIG9uIGJlaGFsZiBvZiBR dWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBpcyBhIG1lbWJlcgpvZiBDb2RlIEF1cm9y YSBGb3J1bSwgaG9zdGVkIGJ5IFRoZSBMaW51eCBGb3VuZGF0aW9uCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJl ZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo= 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=-6.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS 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 84653C43143 for ; Mon, 1 Oct 2018 10:22:14 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 2974B20C0A for ; Mon, 1 Oct 2018 10:22:14 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="LkMA1i4o"; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="o9+2fyFJ" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2974B20C0A Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729035AbeJAQ7R (ORCPT ); Mon, 1 Oct 2018 12:59:17 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:59920 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728855AbeJAQ7R (ORCPT ); Mon, 1 Oct 2018 12:59:17 -0400 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id 063436081B; Mon, 1 Oct 2018 10:22:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1538389331; bh=04pVCcxSjK+2aanFPI34QFhVBNgdTvLc2B02fq6XA/4=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=LkMA1i4ozk+Uh5H9e7HyxD2O89KLHYrhATGl+4SPXmV5kPQXiOcBzAMsM9ILSX3Qq e6uZsUagD50adnCuhAJOgcWDrt+QOApADKq85C1/kJs3eYIc6aXKlUIsC1K253B3L4 ghO6jeVnWr8KiknFLrH8tYZjzvgJRSjo+g8HWQxs= Received: from mail-qk1-f180.google.com (mail-qk1-f180.google.com [209.85.222.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: vivek.gautam@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id 7574C6053C; Mon, 1 Oct 2018 10:22:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1538389329; bh=04pVCcxSjK+2aanFPI34QFhVBNgdTvLc2B02fq6XA/4=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=o9+2fyFJ8CrtkvGckwGEmuY0nlrxT0/oXCs2oyHg7Nn/3u/BcF4wNTs8n0fYCxknR 7PkJo91NMrBwUymoFN3WYE1QuszdIFYt3mLiuHTb1BVoNDY/YHzr3EtCyg+23lC3SY YwwqlFXOcJr3l9AjmGylxrrC1jhDVKVvvA4Zq4tM= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 7574C6053C Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=vivek.gautam@codeaurora.org Received: by mail-qk1-f180.google.com with SMTP id v18-v6so7680087qka.10; Mon, 01 Oct 2018 03:22:09 -0700 (PDT) X-Gm-Message-State: ABuFfogsMQfjB9H89Pf839HgTIloP404sw5dciADkf07UtopX1cFPweA mkRZ0D2wjZx6HAqoF1F4dCLLhTdZiqb4QeKRFeU= X-Google-Smtp-Source: ACcGV61NwWzmy3DbLPWuMZu/HrM7xhXn7eUbcmtUBr+j7+4fNhb4INBbsFVhELHgBZRVQ64UsZSXeqnhAPXhALkGRX8= X-Received: by 2002:a37:9904:: with SMTP id b4-v6mr7680341qke.102.1538389328640; Mon, 01 Oct 2018 03:22:08 -0700 (PDT) MIME-Version: 1.0 References: <20180830144541.17740-1-vivek.gautam@codeaurora.org> <20180830144541.17740-2-vivek.gautam@codeaurora.org> In-Reply-To: From: Vivek Gautam Date: Mon, 1 Oct 2018 15:51:56 +0530 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v16 1/5] iommu/arm-smmu: Add pm_runtime/sleep ops To: Ulf Hansson Cc: Mark Rutland , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , alex.williamson@redhat.com, Linux PM , sboyd@kernel.org, "Rafael J. Wysocki" , Will Deacon , open list , "list@263.net:IOMMU DRIVERS , Joerg Roedel ," , "robh+dt" , linux-arm-msm , freedreno , Robin Murphy Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Oct 1, 2018 at 3:09 PM Ulf Hansson wrote: > > On 1 October 2018 at 07:49, Vivek Gautam wrote: > > HI Ulf, > > > > On Fri, Sep 28, 2018 at 5:30 PM Ulf Hansson wrote: > >> > >> On 30 August 2018 at 16:45, Vivek Gautam wrote: > >> > From: Sricharan R > >> > > >> > The smmu needs to be functional only when the respective > >> > master's using it are active. The device_link feature > >> > helps to track such functional dependencies, so that the > >> > iommu gets powered when the master device enables itself > >> > using pm_runtime. So by adapting the smmu driver for > >> > runtime pm, above said dependency can be addressed. > >> > > >> > This patch adds the pm runtime/sleep callbacks to the > >> > driver and also the functions to parse the smmu clocks > >> > from DT and enable them in resume/suspend. > >> > > >> > Also, while we enable the runtime pm add a pm sleep suspend > >> > callback that pushes devices to low power state by turning > >> > the clocks off in a system sleep. > >> > Also add corresponding clock enable path in resume callback. > >> > > >> > Signed-off-by: Sricharan R > >> > Signed-off-by: Archit Taneja > >> > [vivek: rework for clock and pm ops] > >> > Signed-off-by: Vivek Gautam > >> > Reviewed-by: Tomasz Figa > >> > Tested-by: Srinivas Kandagatla > >> > --- > >> > drivers/iommu/arm-smmu.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++-- > >> > 1 file changed, 74 insertions(+), 3 deletions(-) > >> > diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c > >> > >> [...] > >> > >> > -static int __maybe_unused arm_smmu_pm_resume(struct device *dev) > >> > +static int __maybe_unused arm_smmu_runtime_resume(struct device *dev) > >> > { > >> > struct arm_smmu_device *smmu = dev_get_drvdata(dev); > >> > + int ret; > >> > + > >> > + ret = clk_bulk_enable(smmu->num_clks, smmu->clks); > >> > + if (ret) > >> > + return ret; > >> > > >> > arm_smmu_device_reset(smmu); > >> > + > >> > return 0; > >> > } > >> > > >> > -static SIMPLE_DEV_PM_OPS(arm_smmu_pm_ops, NULL, arm_smmu_pm_resume); > >> > +static int __maybe_unused arm_smmu_runtime_suspend(struct device *dev) > >> > +{ > >> > + struct arm_smmu_device *smmu = dev_get_drvdata(dev); > >> > + > >> > + clk_bulk_disable(smmu->num_clks, smmu->clks); > >> > + > >> > + return 0; > >> > +} > >> > + > >> > +static int __maybe_unused arm_smmu_pm_resume(struct device *dev) > >> > +{ > >> > + if (pm_runtime_suspended(dev)) > >> > + return 0; > >> > >> Looks like you should be able use pm_runtime_force_resume(), instead > >> of using this local trick. Unless I am missing something, of course. > >> > >> In other words, just assign the system sleep callbacks for resume, to > >> pm_runtime_force_resume(). And vice verse for the system suspend > >> callbacks, pm_runtime_force_suspend(), of course. > > > > Thanks for the review. I will change this as suggested. > > > >> > >> > + > >> > + return arm_smmu_runtime_resume(dev); > >> > +} > >> > + > >> > +static int __maybe_unused arm_smmu_pm_suspend(struct device *dev) > >> > +{ > >> > + if (pm_runtime_suspended(dev)) > >> > + return 0; > >> > + > >> > + return arm_smmu_runtime_suspend(dev); > >> > +} > >> > + > >> > +static const struct dev_pm_ops arm_smmu_pm_ops = { > >> > + SET_SYSTEM_SLEEP_PM_OPS(arm_smmu_pm_suspend, arm_smmu_pm_resume) > >> > >> I am wondering if using the ->suspend|resume() callback is really > >> "late/early" enough in the device suspend phase? > >> > >> Others is using the noirq phase and some is even using the syscore > >> ops. Of course it depends on the behavior of the consumers of iommu > >> device, and I guess not everyone is using device links, which for sure > >> improves things in this regards as well. > > > > Well yes, as you said the device links should be able to take care of > > maintaining the correct suspend/resume order of smmu and its clients, > > or am I missing your point here? > > Let me know and I will be happy to incorporate any suggestions. > > Thanks > > If it works fine, then you may keep it as is. > > Just wanted to point out that if any consumers relies on the iommu to > operational to say until the suspend-late phase, then this doesn't > play. Then you need to move your callbacks to the corresponding same > phase. Although I have no means to test the suspend-late phase, tests with graphics and display on db820 haven't shown any anomaly. [snip] Best regards Vivek -- QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation