From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tomasz Figa Subject: Re: [PATCH v12 1/4] iommu/arm-smmu: Add pm_runtime/sleep ops Date: Wed, 11 Jul 2018 21:51:39 +0900 Message-ID: References: <20180708173413.1965-1-vivek.gautam@codeaurora.org> <20180708173413.1965-2-vivek.gautam@codeaurora.org> <17407514.unFVTGoGrn@aspire.rjw.lan> 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: rafael-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, Vivek Gautam Cc: Mark Rutland , devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Archit Taneja , jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, Alex Williamson , Linux PM , sboyd-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, Will Deacon , "list-Y9sIeH5OGRo@public.gmane.org:IOMMU DRIVERS , Joerg Roedel , " , "Rafael J. Wysocki" , Linux Kernel Mailing List "list-Y9sIeH5OGRo@public.gmane.org:IOMMU DRIVERS , Joerg Roedel , " , Rob Herring , Rob Clark , linux-arm-msm , Sricharan R , freedreno , Robin Murphy , Marek Szyprowski List-Id: linux-arm-msm@vger.kernel.org T24gV2VkLCBKdWwgMTEsIDIwMTggYXQgODoxMSBQTSBSYWZhZWwgSi4gV3lzb2NraSA8cmFmYWVs QGtlcm5lbC5vcmc+IHdyb3RlOgo+Cj4gT24gV2VkLCBKdWwgMTEsIDIwMTggYXQgMTI6NTUgUE0s IFZpdmVrIEdhdXRhbQo+IDx2aXZlay5nYXV0YW1AY29kZWF1cm9yYS5vcmc+IHdyb3RlOgo+ID4g SGkgUmFmYWVsLAo+ID4KPiA+Cj4gPiBPbiBXZWQsIEp1bCAxMSwgMjAxOCBhdCAzOjIwIFBNLCBS YWZhZWwgSi4gV3lzb2NraSA8cmp3QHJqd3lzb2NraS5uZXQ+IHdyb3RlOgo+ID4+IE9uIFN1bmRh eSwgSnVseSA4LCAyMDE4IDc6MzQ6MTAgUE0gQ0VTVCBWaXZlayBHYXV0YW0gd3JvdGU6Cj4gPj4+ IEZyb206IFNyaWNoYXJhbiBSIDxzcmljaGFyYW5AY29kZWF1cm9yYS5vcmc+Cj4gPj4+Cj4gPj4+ IFRoZSBzbW11IG5lZWRzIHRvIGJlIGZ1bmN0aW9uYWwgb25seSB3aGVuIHRoZSByZXNwZWN0aXZl Cj4gPj4+IG1hc3RlcidzIHVzaW5nIGl0IGFyZSBhY3RpdmUuIFRoZSBkZXZpY2VfbGluayBmZWF0 dXJlCj4gPj4+IGhlbHBzIHRvIHRyYWNrIHN1Y2ggZnVuY3Rpb25hbCBkZXBlbmRlbmNpZXMsIHNv IHRoYXQgdGhlCj4gPj4+IGlvbW11IGdldHMgcG93ZXJlZCB3aGVuIHRoZSBtYXN0ZXIgZGV2aWNl IGVuYWJsZXMgaXRzZWxmCj4gPj4+IHVzaW5nIHBtX3J1bnRpbWUuIFNvIGJ5IGFkYXB0aW5nIHRo ZSBzbW11IGRyaXZlciBmb3IKPiA+Pj4gcnVudGltZSBwbSwgYWJvdmUgc2FpZCBkZXBlbmRlbmN5 IGNhbiBiZSBhZGRyZXNzZWQuCj4gPj4+Cj4gPj4+IFRoaXMgcGF0Y2ggYWRkcyB0aGUgcG0gcnVu dGltZS9zbGVlcCBjYWxsYmFja3MgdG8gdGhlCj4gPj4+IGRyaXZlciBhbmQgYWxzbyB0aGUgZnVu Y3Rpb25zIHRvIHBhcnNlIHRoZSBzbW11IGNsb2Nrcwo+ID4+PiBmcm9tIERUIGFuZCBlbmFibGUg dGhlbSBpbiByZXN1bWUvc3VzcGVuZC4KPiA+Pj4KPiA+Pj4gU2lnbmVkLW9mZi1ieTogU3JpY2hh cmFuIFIgPHNyaWNoYXJhbkBjb2RlYXVyb3JhLm9yZz4KPiA+Pj4gU2lnbmVkLW9mZi1ieTogQXJj aGl0IFRhbmVqYSA8YXJjaGl0dEBjb2RlYXVyb3JhLm9yZz4KPiA+Pj4gW3ZpdmVrOiBDbG9jayBy ZXdvcmsgdG8gcmVxdWVzdCBidWxrIG9mIGNsb2Nrc10KPiA+Pj4gU2lnbmVkLW9mZi1ieTogVml2 ZWsgR2F1dGFtIDx2aXZlay5nYXV0YW1AY29kZWF1cm9yYS5vcmc+Cj4gPj4+IFJldmlld2VkLWJ5 OiBUb21hc3ogRmlnYSA8dGZpZ2FAY2hyb21pdW0ub3JnPgo+ID4+PiAtLS0KPiA+Pj4KPiA+Pj4g IC0gTm8gY2hhbmdlIHNpbmNlIHYxMS4KPiA+Pj4KPiA+Pj4gIGRyaXZlcnMvaW9tbXUvYXJtLXNt bXUuYyB8IDYwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LQo+ID4+PiAgMSBmaWxlIGNoYW5nZWQsIDU4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0p Cj4gPj4+Cj4gPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2FybS1zbW11LmMgYi9kcml2 ZXJzL2lvbW11L2FybS1zbW11LmMKPiA+Pj4gaW5kZXggZjdhOTZiY2Y5NGE2Li5hMDFkMGRkZTIx ZGQgMTAwNjQ0Cj4gPj4+IC0tLSBhL2RyaXZlcnMvaW9tbXUvYXJtLXNtbXUuYwo+ID4+PiArKysg Yi9kcml2ZXJzL2lvbW11L2FybS1zbW11LmMKPiA+Pj4gQEAgLTQ4LDYgKzQ4LDcgQEAKPiA+Pj4g ICNpbmNsdWRlIDxsaW51eC9vZl9pb21tdS5oPgo+ID4+PiAgI2luY2x1ZGUgPGxpbnV4L3BjaS5o Pgo+ID4+PiAgI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+ID4+PiArI2luY2x1 ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4KPiA+Pj4gICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4g Pj4+ICAjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4KPiA+Pj4KPiA+Pj4gQEAgLTIwNSw2ICsy MDYsOCBAQCBzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlIHsKPiA+Pj4gICAgICAgdTMyICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBudW1fZ2xvYmFsX2lycXM7Cj4gPj4+ICAgICAgIHUzMiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbnVtX2NvbnRleHRfaXJxczsKPiA+Pj4gICAgICAgdW5z aWduZWQgaW50ICAgICAgICAgICAgICAgICAgICAqaXJxczsKPiA+Pj4gKyAgICAgc3RydWN0IGNs a19idWxrX2RhdGEgICAgICAgICAgICAqY2xrczsKPiA+Pj4gKyAgICAgaW50ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBudW1fY2xrczsKPiA+Pj4KPiA+Pj4gICAgICAgdTMyICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjYXZpdW1faWRfYmFzZTsgLyogU3BlY2lmaWMgdG8gQ2F2aXVt ICovCj4gPj4+Cj4gPj4+IEBAIC0xODk3LDEwICsxOTAwLDEyIEBAIHN0YXRpYyBpbnQgYXJtX3Nt bXVfZGV2aWNlX2NmZ19wcm9iZShzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11KQo+ID4+PiAg c3RydWN0IGFybV9zbW11X21hdGNoX2RhdGEgewo+ID4+PiAgICAgICBlbnVtIGFybV9zbW11X2Fy Y2hfdmVyc2lvbiB2ZXJzaW9uOwo+ID4+PiAgICAgICBlbnVtIGFybV9zbW11X2ltcGxlbWVudGF0 aW9uIG1vZGVsOwo+ID4+PiArICAgICBjb25zdCBjaGFyICogY29uc3QgKmNsa3M7Cj4gPj4+ICsg ICAgIGludCBudW1fY2xrczsKPiA+Pj4gIH07Cj4gPj4+Cj4gPj4+ICAjZGVmaW5lIEFSTV9TTU1V X01BVENIX0RBVEEobmFtZSwgdmVyLCBpbXApICBcCj4gPj4+IC1zdGF0aWMgc3RydWN0IGFybV9z bW11X21hdGNoX2RhdGEgbmFtZSA9IHsgLnZlcnNpb24gPSB2ZXIsIC5tb2RlbCA9IGltcCB9Cj4g Pj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGFybV9zbW11X21hdGNoX2RhdGEgbmFtZSA9IHsgLnZl cnNpb24gPSB2ZXIsIC5tb2RlbCA9IGltcCB9Cj4gPj4+Cj4gPj4+ICBBUk1fU01NVV9NQVRDSF9E QVRBKHNtbXVfZ2VuZXJpY192MSwgQVJNX1NNTVVfVjEsIEdFTkVSSUNfU01NVSk7Cj4gPj4+ICBB Uk1fU01NVV9NQVRDSF9EQVRBKHNtbXVfZ2VuZXJpY192MiwgQVJNX1NNTVVfVjIsIEdFTkVSSUNf U01NVSk7Cj4gPj4+IEBAIC0xOTE5LDYgKzE5MjQsMjMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBv Zl9kZXZpY2VfaWQgYXJtX3NtbXVfb2ZfbWF0Y2hbXSA9IHsKPiA+Pj4gIH07Cj4gPj4+ICBNT0RV TEVfREVWSUNFX1RBQkxFKG9mLCBhcm1fc21tdV9vZl9tYXRjaCk7Cj4gPj4+Cj4gPj4+ICtzdGF0 aWMgdm9pZCBhcm1fc21tdV9maWxsX2Nsa19kYXRhKHN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNt bXUsCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBj b25zdCAqY2xrcykKPiA+Pj4gK3sKPiA+Pj4gKyAgICAgaW50IGk7Cj4gPj4+ICsKPiA+Pj4gKyAg ICAgaWYgKHNtbXUtPm51bV9jbGtzIDwgMSkKPiA+Pj4gKyAgICAgICAgICAgICByZXR1cm47Cj4g Pj4+ICsKPiA+Pj4gKyAgICAgc21tdS0+Y2xrcyA9IGRldm1fa2NhbGxvYyhzbW11LT5kZXYsIHNt bXUtPm51bV9jbGtzLAo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVv Zigqc21tdS0+Y2xrcyksIEdGUF9LRVJORUwpOwo+ID4+PiArICAgICBpZiAoIXNtbXUtPmNsa3Mp Cj4gPj4+ICsgICAgICAgICAgICAgcmV0dXJuOwo+ID4+PiArCj4gPj4+ICsgICAgIGZvciAoaSA9 IDA7IGkgPCBzbW11LT5udW1fY2xrczsgaSsrKQo+ID4+PiArICAgICAgICAgICAgIHNtbXUtPmNs a3NbaV0uaWQgPSBjbGtzW2ldOwo+ID4+PiArfQo+ID4+PiArCj4gPj4+ICAjaWZkZWYgQ09ORklH X0FDUEkKPiA+Pj4gIHN0YXRpYyBpbnQgYWNwaV9zbW11X2dldF9kYXRhKHUzMiBtb2RlbCwgc3Ry dWN0IGFybV9zbW11X2RldmljZSAqc21tdSkKPiA+Pj4gIHsKPiA+Pj4gQEAgLTIwMDEsNiArMjAy Myw5IEBAIHN0YXRpYyBpbnQgYXJtX3NtbXVfZGV2aWNlX2R0X3Byb2JlKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYsCj4gPj4+ICAgICAgIGRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2Rh dGEoZGV2KTsKPiA+Pj4gICAgICAgc21tdS0+dmVyc2lvbiA9IGRhdGEtPnZlcnNpb247Cj4gPj4+ ICAgICAgIHNtbXUtPm1vZGVsID0gZGF0YS0+bW9kZWw7Cj4gPj4+ICsgICAgIHNtbXUtPm51bV9j bGtzID0gZGF0YS0+bnVtX2Nsa3M7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgYXJtX3NtbXVfZmlsbF9j bGtfZGF0YShzbW11LCBkYXRhLT5jbGtzKTsKPiA+Pj4KPiA+Pj4gICAgICAgcGFyc2VfZHJpdmVy X29wdGlvbnMoc21tdSk7Cj4gPj4+Cj4gPj4+IEBAIC0yMDk5LDYgKzIxMjQsMTQgQEAgc3RhdGlj IGludCBhcm1fc21tdV9kZXZpY2VfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK PiA+Pj4gICAgICAgICAgICAgICBzbW11LT5pcnFzW2ldID0gaXJxOwo+ID4+PiAgICAgICB9Cj4g Pj4+Cj4gPj4+ICsgICAgIGVyciA9IGRldm1fY2xrX2J1bGtfZ2V0KHNtbXUtPmRldiwgc21tdS0+ bnVtX2Nsa3MsIHNtbXUtPmNsa3MpOwo+ID4+PiArICAgICBpZiAoZXJyKQo+ID4+PiArICAgICAg ICAgICAgIHJldHVybiBlcnI7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgZXJyID0gY2xrX2J1bGtfcHJl cGFyZShzbW11LT5udW1fY2xrcywgc21tdS0+Y2xrcyk7Cj4gPj4+ICsgICAgIGlmIChlcnIpCj4g Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIGVycjsKPiA+Pj4gKwo+ID4+PiAgICAgICBlcnIgPSBh cm1fc21tdV9kZXZpY2VfY2ZnX3Byb2JlKHNtbXUpOwo+ID4+PiAgICAgICBpZiAoZXJyKQo+ID4+ PiAgICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4gPj4+IEBAIC0yMTgxLDYgKzIyMTQsOSBAQCBz dGF0aWMgaW50IGFybV9zbW11X2RldmljZV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKPiA+Pj4KPiA+Pj4gICAgICAgLyogVHVybiB0aGUgdGhpbmcgb2ZmICovCj4gPj4+ICAg ICAgIHdyaXRlbChzQ1IwX0NMSUVOVFBELCBBUk1fU01NVV9HUjBfTlMoc21tdSkgKyBBUk1fU01N VV9HUjBfc0NSMCk7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgY2xrX2J1bGtfdW5wcmVwYXJlKHNtbXUt Pm51bV9jbGtzLCBzbW11LT5jbGtzKTsKPiA+Pj4gKwo+ID4+PiAgICAgICByZXR1cm4gMDsKPiA+ Pj4gIH0KPiA+Pj4KPiA+Pj4gQEAgLTIxOTcsNyArMjIzMywyNyBAQCBzdGF0aWMgaW50IF9fbWF5 YmVfdW51c2VkIGFybV9zbW11X3BtX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gPj4+ICAg ICAgIHJldHVybiAwOwo+ID4+PiAgfQo+ID4+Pgo+ID4+PiAtc3RhdGljIFNJTVBMRV9ERVZfUE1f T1BTKGFybV9zbW11X3BtX29wcywgTlVMTCwgYXJtX3NtbXVfcG1fcmVzdW1lKTsKPiA+Pj4gK3N0 YXRpYyBpbnQgX19tYXliZV91bnVzZWQgYXJtX3NtbXVfcnVudGltZV9yZXN1bWUoc3RydWN0IGRl dmljZSAqZGV2KQo+ID4+PiArewo+ID4+PiArICAgICBzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpz bW11ID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgcmV0dXJuIGNs a19idWxrX2VuYWJsZShzbW11LT5udW1fY2xrcywgc21tdS0+Y2xrcyk7Cj4gPj4+ICt9Cj4gPj4+ ICsKPiA+Pj4gK3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgYXJtX3NtbXVfcnVudGltZV9zdXNw ZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPiA+Pj4gK3sKPiA+Pj4gKyAgICAgc3RydWN0IGFybV9z bW11X2RldmljZSAqc21tdSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ID4+PiArCj4gPj4+ICsg ICAgIGNsa19idWxrX2Rpc2FibGUoc21tdS0+bnVtX2Nsa3MsIHNtbXUtPmNsa3MpOwo+ID4+PiAr Cj4gPj4+ICsgICAgIHJldHVybiAwOwo+ID4+PiArfQo+ID4+PiArCj4gPj4+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGRldl9wbV9vcHMgYXJtX3NtbXVfcG1fb3BzID0gewo+ID4+PiArICAgICBTRVRf U1lTVEVNX1NMRUVQX1BNX09QUyhOVUxMLCBhcm1fc21tdV9wbV9yZXN1bWUpCj4gPj4KPiA+PiBU aGlzIGlzIHN1c3BpY2lvdXMuCj4gPj4KPiA+PiBJZiB5b3UgbmVlZCBhIHJ1bnRpbWUgc3VzcGVu ZCBtZXRob2QsIHdoeSBkbyB5b3UgdGhpbmsgdGhhdCBpdCBpcyBub3QgbmVjZXNzYXJ5Cj4gPj4g dG8gc3VzcGVuZCB0aGUgZGV2aWNlIGR1cmluZyBzeXN0ZW0td2lkZSB0cmFuc2l0aW9ucz8KPiA+ Cj4gPiBPa2F5LCBzbyB5b3Ugc3VnZ2VzdCB0byBwdXQgY2xvY2sgZGlzYWJsaW5nIGluIHNheSBh cm1fc21tdV9wbV9zdXNwZW5kKCk/Cj4gPiBJbiB0aGF0IGNhc2UgdGhlIGNsb2NrcyBoYXZlIHRv IGJlIGVuYWJsZWQgaW4gdGhlIHJlc3VtZSBwYXRoIHRvby4KPiA+Cj4gPiBJIHJlbWVtYmVyIFRv bWFzeiBwb2ludGVkIHRvIHRoYXQgd2Ugc2hvdWxkbid0IG5lZWQgY2xvY2sgZW5hYmxlIGluIHJl c3VtZQo+ID4gcGF0aCBbMV0uCj4gPgo+ID4gWzFdIGh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDE4 LzMvMTUvNjAKClRoYXQgd2FzIGFuIGFuc3dlciBmb3IgYSBkaWZmZXJlbnQgcXVlc3Rpb24uIEkg ZG9uJ3QgcmVtZW1iZXIKc3VnZ2VzdGluZyBoYXZpbmcgbm8gc3VzcGVuZCBmdW5jdGlvbi4gQWx0 aG91Z2gsIGdpdmVuIHRoZSBQTQpzdWJzeXN0ZW0gaW50ZXJuYWxzLCB0aGUgc3VzcGVuZCBmdW5j dGlvbiB3b3VsZG4ndCBiZSBjYWxsZWQgb24gU01NVQppbXBsZW1lbnRhdGlvbiBuZWVkZWQgcG93 ZXIgY29udHJvbCAoc2luY2UgdGhleSB3b3VsZCBoYXZlIHJ1bnRpbWUgUE0KZW5hYmxlZCkgYW5k IG9uIG90aGVycywgaXQgd291bGQgYmUgY2FsbGVkIGJ1dCBkbyBub3RoaW5nIChzaW5jZSBubwpj bG9ja3MpLgoKPgo+IEhvbmVzdGx5LCBJIGp1c3QgZG9uJ3Qga25vdy4gOi0pCj4KPiBJdCBqdXN0 IGxvb2tzIG9kZCB0aGUgd2F5IGl0IGlzIGRvbmUuICBJIHRoaW5rIHRoZSBjbG9jayBzaG91bGQg YmUKPiBnYXRlZCBkdXJpbmcgc3lzdGVtLXdpZGUgc3VzcGVuZCB0b28sIGJlY2F1c2UgdGhlIHN5 c3RlbSBjYW4gc3BlbmQKPiBtdWNoIG1vcmUgdGltZSBpbiBhIHNsZWVwIHN0YXRlIHRoYW4gaW4g dGhlIHdvcmtpbmcgc3RhdGUsIG9uIGF2ZXJhZ2UuCj4KPiBBbmQgbm90ZSB0aGF0IHlvdSBjYW5u b3QgcmVseSBvbiBydW50aW1lIFBNIHRvIGFsd2F5cyBkbyBpdCBmb3IgeW91LAo+IGJlY2F1c2Ug aXQgbWF5IGJlIGRpc2FibGVkIGF0IGEgY2xpZW50IGRldmljZSBvciBldmVuIGJsb2NrZWQgYnkg dXNlcgo+IHNwYWNlIHZpYSBwb3dlci9jb250cm9sIGluIHN5c2ZzIGFuZCB0aGF0IHNob3VsZG4n dCBtYXR0ZXIgZm9yCj4gc3lzdGVtLXdpZGUgUE0uCgpVc2VyIHNwYWNlIGJsb2NraW5nIHJ1bnRp bWUgUE0gdGhyb3VnaCBzeXNmcyBpcyBhIGdvb2QgcG9pbnQuIEknbSBub3QKMTAwJSBzdXJlIGhv dyB0aGUgUE0gc3Vic3lzdGVtIGRlYWxzIHdpdGggdGhhdCBpbiBjYXNlIG9mIHN5c3RlbS13aWRl CnN1c3BlbmQuIEkgZ3Vlc3MgZm9yIGNvbnNpc3RlbmN5IGFuZCBzYWZldHksIHdlIHNob3VsZCBo YXZlIHRoZQpzdXNwZW5kIGNhbGxiYWNrLgoKQmVzdCByZWdhcmRzLApUb21hc3oKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5vIG1haWxpbmcg bGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg== 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=-0.9 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,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 D95C1C5CFEB for ; Wed, 11 Jul 2018 12:59:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 87FBA2086B for ; Wed, 11 Jul 2018 12:59:18 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="cuOYaHut" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 87FBA2086B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=chromium.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 S2387601AbeGKNDa (ORCPT ); Wed, 11 Jul 2018 09:03:30 -0400 Received: from mail-yw0-f196.google.com ([209.85.161.196]:47088 "EHLO mail-yw0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732544AbeGKNDa (ORCPT ); Wed, 11 Jul 2018 09:03:30 -0400 Received: by mail-yw0-f196.google.com with SMTP id e23-v6so8581436ywe.13 for ; Wed, 11 Jul 2018 05:59:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=SDLeo/868n8Rwo3UbTW1G8tdmWnKLZnbd2H1n9G1yQA=; b=cuOYaHutfm+MS4zKflr6ijokGsoA1kEMsezZEkye5LitrefdeK1tnV3vZmGaP9ftBM 21eCApKSGuZEvoxIF31buQX5fXCQZnoelAK9jup+3/Ygnfd6Unm1M+0y1Q3UYVLKWLkj qHurnkde0AXoeKWtYduJ6sIwVf3XlZqeDyCow= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=SDLeo/868n8Rwo3UbTW1G8tdmWnKLZnbd2H1n9G1yQA=; b=ovizCFOtXJLbocEasrZYioNAzeXnF3HR/h466045+u+QwyvqyYhMK40BUCMYBbNb7t 8VmGGnWmydLSEKT1YJmZpW4GASGKoRI2I7c2y2T4iEmeQhrzjTnOZm930J/nYy3m5wEq g56sUttm9SUTbkiMlxTlGBgFjW2gfeXq4QYzCRx0SzSVaIIf+o+X7rb3++5EZ8TCUjxj R9/rXRN6TOVn5NUYHiLyY6srQu/n+q2V6mg9NFU0KQKDCjce+Ncpdc/GnEtpIovWOQdL TUJlHCE7UHHq9apUwv2A4TNKK5zfwwpo+ReHyxiP+CCFQmW4EtfykpTwpKDua2+cLsmW s1oA== X-Gm-Message-State: APt69E2d921i26wDG3L/x/VPTYQVXbHCpqtPu6DtLKyBNnwXaFHBkc1C 80pQKEjmOcGbNqua7tnt5YC5/oQDIEc= X-Google-Smtp-Source: AAOMgpdCB3HDEnVbrS1xpWAjy7W7uG7zBew2HH+iaZq9bPCT3YtC8ktOQX/cNb7+u0wkUYQyuAYHJw== X-Received: by 2002:a81:5ac6:: with SMTP id o189-v6mr13798589ywb.444.1531313955362; Wed, 11 Jul 2018 05:59:15 -0700 (PDT) Received: from mail-yb0-f173.google.com (mail-yb0-f173.google.com. [209.85.213.173]) by smtp.gmail.com with ESMTPSA id q12-v6sm1385714ywl.26.2018.07.11.05.59.15 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Jul 2018 05:59:15 -0700 (PDT) Received: by mail-yb0-f173.google.com with SMTP id c10-v6so8208723ybf.9 for ; Wed, 11 Jul 2018 05:59:15 -0700 (PDT) X-Received: by 2002:a25:7146:: with SMTP id m67-v6mr12450695ybc.226.1531313510809; Wed, 11 Jul 2018 05:51:50 -0700 (PDT) MIME-Version: 1.0 References: <20180708173413.1965-1-vivek.gautam@codeaurora.org> <20180708173413.1965-2-vivek.gautam@codeaurora.org> <17407514.unFVTGoGrn@aspire.rjw.lan> In-Reply-To: From: Tomasz Figa Date: Wed, 11 Jul 2018 21:51:39 +0900 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v12 1/4] iommu/arm-smmu: Add pm_runtime/sleep ops To: rafael@kernel.org, Vivek Gautam Cc: "Rafael J. Wysocki" , "list@263.net:IOMMU DRIVERS , Joerg Roedel ," , Rob Herring , Mark Rutland , Robin Murphy , Will Deacon , "list@263.net:IOMMU DRIVERS , Joerg Roedel ," , devicetree@vger.kernel.org, Linux Kernel Mailing List , Alex Williamson , Rob Clark , Linux PM , freedreno , sboyd@kernel.org, Sricharan R , Marek Szyprowski , Archit Taneja , linux-arm-msm , jcrouse@codeaurora.org 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 Wed, Jul 11, 2018 at 8:11 PM Rafael J. Wysocki wrote: > > On Wed, Jul 11, 2018 at 12:55 PM, Vivek Gautam > wrote: > > Hi Rafael, > > > > > > On Wed, Jul 11, 2018 at 3:20 PM, Rafael J. Wysocki wrote: > >> On Sunday, July 8, 2018 7:34:10 PM CEST 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. > >>> > >>> Signed-off-by: Sricharan R > >>> Signed-off-by: Archit Taneja > >>> [vivek: Clock rework to request bulk of clocks] > >>> Signed-off-by: Vivek Gautam > >>> Reviewed-by: Tomasz Figa > >>> --- > >>> > >>> - No change since v11. > >>> > >>> drivers/iommu/arm-smmu.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++-- > >>> 1 file changed, 58 insertions(+), 2 deletions(-) > >>> > >>> diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c > >>> index f7a96bcf94a6..a01d0dde21dd 100644 > >>> --- a/drivers/iommu/arm-smmu.c > >>> +++ b/drivers/iommu/arm-smmu.c > >>> @@ -48,6 +48,7 @@ > >>> #include > >>> #include > >>> #include > >>> +#include > >>> #include > >>> #include > >>> > >>> @@ -205,6 +206,8 @@ struct arm_smmu_device { > >>> u32 num_global_irqs; > >>> u32 num_context_irqs; > >>> unsigned int *irqs; > >>> + struct clk_bulk_data *clks; > >>> + int num_clks; > >>> > >>> u32 cavium_id_base; /* Specific to Cavium */ > >>> > >>> @@ -1897,10 +1900,12 @@ static int arm_smmu_device_cfg_probe(struct arm_smmu_device *smmu) > >>> struct arm_smmu_match_data { > >>> enum arm_smmu_arch_version version; > >>> enum arm_smmu_implementation model; > >>> + const char * const *clks; > >>> + int num_clks; > >>> }; > >>> > >>> #define ARM_SMMU_MATCH_DATA(name, ver, imp) \ > >>> -static struct arm_smmu_match_data name = { .version = ver, .model = imp } > >>> +static const struct arm_smmu_match_data name = { .version = ver, .model = imp } > >>> > >>> ARM_SMMU_MATCH_DATA(smmu_generic_v1, ARM_SMMU_V1, GENERIC_SMMU); > >>> ARM_SMMU_MATCH_DATA(smmu_generic_v2, ARM_SMMU_V2, GENERIC_SMMU); > >>> @@ -1919,6 +1924,23 @@ static const struct of_device_id arm_smmu_of_match[] = { > >>> }; > >>> MODULE_DEVICE_TABLE(of, arm_smmu_of_match); > >>> > >>> +static void arm_smmu_fill_clk_data(struct arm_smmu_device *smmu, > >>> + const char * const *clks) > >>> +{ > >>> + int i; > >>> + > >>> + if (smmu->num_clks < 1) > >>> + return; > >>> + > >>> + smmu->clks = devm_kcalloc(smmu->dev, smmu->num_clks, > >>> + sizeof(*smmu->clks), GFP_KERNEL); > >>> + if (!smmu->clks) > >>> + return; > >>> + > >>> + for (i = 0; i < smmu->num_clks; i++) > >>> + smmu->clks[i].id = clks[i]; > >>> +} > >>> + > >>> #ifdef CONFIG_ACPI > >>> static int acpi_smmu_get_data(u32 model, struct arm_smmu_device *smmu) > >>> { > >>> @@ -2001,6 +2023,9 @@ static int arm_smmu_device_dt_probe(struct platform_device *pdev, > >>> data = of_device_get_match_data(dev); > >>> smmu->version = data->version; > >>> smmu->model = data->model; > >>> + smmu->num_clks = data->num_clks; > >>> + > >>> + arm_smmu_fill_clk_data(smmu, data->clks); > >>> > >>> parse_driver_options(smmu); > >>> > >>> @@ -2099,6 +2124,14 @@ static int arm_smmu_device_probe(struct platform_device *pdev) > >>> smmu->irqs[i] = irq; > >>> } > >>> > >>> + err = devm_clk_bulk_get(smmu->dev, smmu->num_clks, smmu->clks); > >>> + if (err) > >>> + return err; > >>> + > >>> + err = clk_bulk_prepare(smmu->num_clks, smmu->clks); > >>> + if (err) > >>> + return err; > >>> + > >>> err = arm_smmu_device_cfg_probe(smmu); > >>> if (err) > >>> return err; > >>> @@ -2181,6 +2214,9 @@ static int arm_smmu_device_remove(struct platform_device *pdev) > >>> > >>> /* Turn the thing off */ > >>> writel(sCR0_CLIENTPD, ARM_SMMU_GR0_NS(smmu) + ARM_SMMU_GR0_sCR0); > >>> + > >>> + clk_bulk_unprepare(smmu->num_clks, smmu->clks); > >>> + > >>> return 0; > >>> } > >>> > >>> @@ -2197,7 +2233,27 @@ static int __maybe_unused arm_smmu_pm_resume(struct device *dev) > >>> return 0; > >>> } > >>> > >>> -static SIMPLE_DEV_PM_OPS(arm_smmu_pm_ops, NULL, arm_smmu_pm_resume); > >>> +static int __maybe_unused arm_smmu_runtime_resume(struct device *dev) > >>> +{ > >>> + struct arm_smmu_device *smmu = dev_get_drvdata(dev); > >>> + > >>> + return clk_bulk_enable(smmu->num_clks, smmu->clks); > >>> +} > >>> + > >>> +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 const struct dev_pm_ops arm_smmu_pm_ops = { > >>> + SET_SYSTEM_SLEEP_PM_OPS(NULL, arm_smmu_pm_resume) > >> > >> This is suspicious. > >> > >> If you need a runtime suspend method, why do you think that it is not necessary > >> to suspend the device during system-wide transitions? > > > > Okay, so you suggest to put clock disabling in say arm_smmu_pm_suspend()? > > In that case the clocks have to be enabled in the resume path too. > > > > I remember Tomasz pointed to that we shouldn't need clock enable in resume > > path [1]. > > > > [1] https://lkml.org/lkml/2018/3/15/60 That was an answer for a different question. I don't remember suggesting having no suspend function. Although, given the PM subsystem internals, the suspend function wouldn't be called on SMMU implementation needed power control (since they would have runtime PM enabled) and on others, it would be called but do nothing (since no clocks). > > Honestly, I just don't know. :-) > > It just looks odd the way it is done. I think the clock should be > gated during system-wide suspend too, because the system can spend > much more time in a sleep state than in the working state, on average. > > And note that you cannot rely on runtime PM to always do it for you, > because it may be disabled at a client device or even blocked by user > space via power/control in sysfs and that shouldn't matter for > system-wide PM. User space blocking runtime PM through sysfs is a good point. I'm not 100% sure how the PM subsystem deals with that in case of system-wide suspend. I guess for consistency and safety, we should have the suspend callback. Best regards, Tomasz