From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vivek Gautam Subject: [PATCH v16 0/5] iommu/arm-smmu: Add runtime pm/sleep support Date: Thu, 30 Aug 2018 20:15:36 +0530 Message-ID: <20180830144541.17740-1-vivek.gautam@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org, robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, robin.murphy-5wv7dgnIgG8@public.gmane.org, will.deacon-5wv7dgnIgG8@public.gmane.org, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: mark.rutland-5wv7dgnIgG8@public.gmane.org, architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, sboyd-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, sricharan-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, rjw-LthD3rsA81gm4RdzfppkhA@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, tfiga-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, alex.williamson-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, Vivek Gautam , linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org VGhpcyBzZXJpZXMgcHJvdmlkZXMgdGhlIHN1cHBvcnQgZm9yIHR1cm5pbmcgb24gdGhlIGFybS1z bW11J3MKY2xvY2tzL3Bvd2VyIGRvbWFpbnMgdXNpbmcgcnVudGltZSBwbS4gVGhpcyBpcyBkb25l IHVzaW5nCmRldmljZSBsaW5rcyBiZXR3ZWVuIHNtbXUgYW5kIGNsaWVudCBkZXZpY2VzLiBUaGUg ZGV2aWNlIGxpbmsKZnJhbWV3b3JrIGtlZXBzIHRoZSB0d28gZGV2aWNlcyBpbiBjb3JyZWN0IG9y ZGVyIGZvciBwb3dlci1jeWNsaW5nCmFjcm9zcyBydW50aW1lIFBNIG9yIGFjcm9zcyBzeXN0ZW0t d2lkZSBQTS4KCldpdGggYWRkaXRpb24gb2YgYSBuZXcgZGV2aWNlIGxpbmsgZmxhZyBETF9GTEFH X0FVVE9SRU1PVkVfU1VQUExJRVIgWzddLAp0aGUgZGV2aWNlIGxpbmtzIGNyZWF0ZWQgYmV0d2Vl biBhcm0tc21tdSBhbmQgaXRzIGNsaWVudHMgd2lsbCBiZQphdXRvbWF0aWNhbGx5IHB1cmdlZCB3 aGVuIGFybS1zbW11IGRyaXZlciB1bmJpbmRzIGZyb20gaXRzIGRldmljZS4KCkFzIG5vdCBhbGwg aW1wbGVtZW50YXRpb25zIHN1cHBvcnQgY2xvY2svcG93ZXIgZ2F0aW5nLCB3ZSBhcmUgY2hlY2tp bmcKZm9yIGEgdmFsaWQgJ3NtbXUtPmRldidzIHBtX2RvbWFpbicgdG8gY29uZGl0aW9uYWxseSBl bmFibGUgdGhlIHJ1bnRpbWUKcG93ZXIgbWFuYWdlbWVudCBmb3Igc3VjaCBzbW11IGltcGxlbWVu dGF0aW9ucyB0aGF0IGNhbiBzdXBwb3J0IGl0LgpPdGhlcndpc2UsIHRoZSBjbG9ja3MgYXJlIHR1 cm5lZCB0byBiZSBhbHdheXMgb24gaW4gLnByb2JlIHVudGlsIC5yZW1vdmUuCldpdGggY29uZGl0 aW9uYWwgcnVudGltZSBwbSBub3csIHdlIGF2b2lkIHRvdWNoaW5nIGRldi0+cG93ZXIubG9jawpp biBmYXN0cGF0aHMgZm9yIHNtbXUgaW1wbGVtZW50YXRpb25zIHRoYXQgZG9uJ3QgbmVlZCB0byBk byBhbnl0aGluZwp1c2VmdWwgd2l0aCBwbV9ydW50aW1lLgpUaGlzIGxldHMgdXMgdG8gdXNlIHRo ZSBtdWNoLWFyZ3VlZCBwbV9ydW50aW1lX2dldF9zeW5jL3B1dF9zeW5jKCkKY2FsbHMgaW4gbWFw L3VubWFwIGNhbGxiYWNrcyBzbyB0aGF0IHRoZSBjbGllbnRzIGRvIG5vdCBoYXZlIHRvCndvcnJ5 IGFib3V0IGhhbmRsaW5nIGFueSBvZiB0aGUgYXJtLXNtbXUncyBwb3dlci4KClRoaXMgc2VyaWVz IGFsc28gYWRkcyBzdXBwb3J0IGZvciBRY29tJ3MgYXJtLXNtbXUtdjIgdmFyaWFudCB0aGF0Cmhh cyBkaWZmZXJlbnQgY2xvY2tzIGFuZCBwb3dlciByZXF1aXJlbWVudHMuCgpQcmV2aW91cyB2ZXJz aW9uIG9mIHRoaXMgcGF0Y2ggc2VyaWVzIGlzIEAgWzFdLgoKQnVpbGQgdGVzdGVkIHRoZSBzZXJp ZXMgYmFzZWQgb24gNC4xOS1yYzEuCgpbdjE2XSAKICAgKiBBZGRyZXNzZWQgcmV2aWV3IGNvbW1l bnRzIGZyb20gUm9iIGFib3V0IHNvYyBzcGVjaWZpYyBjb21wYXRpYmxlcy4KICAgKiBSZW1vdmVk IHBtX3J1bnRpbWVfZ2V0L3B1dCBjYWxscyBmcm9tIGFybV9zbW11X2RldmljZV9wcm9iZSgpLCBh cwogICAgIGRvaW5nIGEgcnVudGltZV9nZXQoKSBldmVudHVhbGx5IGNhbGxzIGFybV9zbW11X2Rl dmljZV9yZXNldCgpLgogICAgIGFybV9zbW11X2RldmljZV9yZXNldCgpIHNob3VsZCBiZSBjYWxs ZWQgb25seSBhZnRlcgogICAgIGFybV9zbW11X2RldmljZV9jZmdfcHJvYmUoKS4KICAgICBFbmFi bGluZyB0aGUgY2xvY2tzIGJ5IGRlZmF1bHQgaW4gdGhlIHByb2JlLCBhbmQgdXNpbmcKICAgICBw bV9ydW50aW1lX3NldF9hY3RpdmUoKSBhcyBzdWdnZXN0ZWQgYnkgVG9tYXN6IHRvIGRpc2FibGUg dGhlCiAgICAgY2xvY2tzIHdoZW4gcG1fcnVudGltZSBpcyBlbmFibGVkLgoKW3YxNV0KICAgKiBB ZGRlZCBhIGxpc3Qgb2YgdmFsaWQgdmFsdWVzIG9mICc8c29jPicgaW4gInFjb20sPHNvYz4tc21t dS12MiIKICAgICBjb21wYXRpYmxlIHN0cmluZyBhcyBwb2ludGVkIG91dCBieSBSb2JpbiwgYW5k IFJvYiBpbiB0aGUgdGhyZWFkIFs4XToKICAgKiBBZGRlZCBTcmluaSdzIFRlc3RlZC1ieS4KICAg KiBTZXBhcmF0ZWQgb3V0IHRoZSBkdC1iaW5kaW5ncyBjaGFuZ2UgZnJvbSBkcml2ZXIgY2hhbmdl IGludG8gYSBuZXcKICAgICBwYXRjaCBhcyBzdWdnZXN0ZWQgYnkgbmV3IGNoZWNrcGF0Y2ggd2Fy bmluZy4KCiAgICAgUm9iLCBJIHRvb2sgdGhlIGxpYmVydHkgb2YgcmVtb3ZpbmcgeW91ciBSZXZp ZXdlZC1ieSAoZm9yIHlvdXIKICAgICBjb21tZW50IG9uICc8c29jPicpIGZvciB0aGUgbmV3IGR0 LWJpbmRpbmdzIHBhdGNoIDQvNS4KICAgICBQbGVhc2UgZmVlbCBmcmVlIHRvIHJldmlldyBpdCBh Z2Fpbi4gVGhhbmtzIQoKW3YxNF0KICAgKiBNb3ZlZCBhcm1fc21tdV9kZXZpY2VfcmVzZXQoKSBm cm9tIGFybV9zbW11X3BtX3Jlc3VtZSgpIHRvCiAgICAgYXJtX3NtbXVfcnVudGltZV9yZXN1bWUo KSBzbyB0aGF0IHRoZSBwbV9yZXN1bWUgY2FsbGJhY2sgY2FsbHMKICAgICBvbmx5IHJ1bnRpbWVf cmVzdW1lIHRvIHJlc3VtZSB0aGUgZGV2aWNlLgogICAgIFRoaXMgc2hvdWxkIHRha2UgY2FyZSBv ZiByZXN0b3JpbmcgdGhlIHN0YXRlIG9mIHNtbXUgaW4gc3lzdGVtcwogICAgIGluIHdoaWNoIHNt bXUgbG9zZSByZWdpc3RlciBzdGF0ZSBvbiBwb3dlci1kb21haW4gY29sbGFwc2UuCgpbdjEzXQog ICBBZGRyZXNzaW5nIFJhZmFlbCdzIGNvbW1lbnRzOgogICAqIEFkZGVkIC5zdXNwZW5kIHBtIGNh bGxiYWNrIHRvIGRpc2FibGUgdGhlIGNsb2NrcyBpbiBzeXN0ZW0gd2lkZSBzdXNwZW5kLgogICAq IEFkZGVkIGNvcnJlc3BvbmRpbmcgY2xvY2sgZW5hYmxlIGluIC5yZXN1bWUgcG0gY2FsbGJhY2su CiAgICogRXhwbGljaXRseSBlbmFibGluZy9kaXNhYmxpbmcgdGhlIGNsb2NrcyBub3cgd2hlbiBy dW50aW1lIFBNIGlzIGRpc2FibGVkLgogICAqIGRldmljZV9saW5rX2FkZCgpIGRvZXNuJ3QgZGVw ZW5kIG9uIHBtX3J1bnRpbWVfZW5hYmxlZCgpIGFzIHdlIGNhbgogICAgIHVzZSBkZXZpY2UgbGlu a3MgYWNyb3NzIHN5c3RlbSBzdXNwZW5kL3Jlc3VtZSB0b28uCgogICBBZGRyZXNzaW5nIFJvYmlu J3MgY29tbWVudHM6CiAgICogTWFraW5nIGRldmljZV9saW5rX2FkZCBmYWlsdXJlcyBhcyBub24t ZmF0YWwuCgogICAqIFJlbW92ZWQgSU9NTVVfT0ZfREVDTEFSRSgpIGRlY2xhcmF0aW9uIGFzIHdl IGRvbid0IG5lZWQgdGhpcyBhZnRlciBSb2IncwogICAgIHBhdGNoIHRoYXQgcmVtb3ZlZCBhbGwg b2YgdGhlc2UgZGVjbGFyYXRpb25zLgoKW3YxMl0KICAgKiBVc2UgbmV3IGRldmljZSBsaW5rJ3Mg ZmxhZyBpbnRyb2R1Y2VkIGluIFs3XSAtCiAgICAgRExfRkxBR19BVVRPUkVNT1ZFX1NVUFBMSUVS LiBXaXRoIHRoaXMgZGV2aWNlcyBsaW5rcyBhcmUgYXV0b21hdGljYWxseQogICAgIHB1cmdlZCB3 aGVuIGFybS1zbW11IGRyaXZlciB1bmJpbmRzLgogICAqIFVzaW5nIHBtX3J1bnRpbWVfZm9yY2Vf c3VzcGVuZCgpIGluc3RlYWQgb2YgcG1fcnVudGltZV9kaXNhYmxlKCkgdG8KICAgICBhdm9pZCBm b2xsb3dpbmcgd2FybmluZyBmcm9tIGFybV9zbW11X2RldmljZV9yZW1vdmUoKQoKICAgICBbMjk1 NzExLjUzNzUwN10gLS0tLS0tLS0tLS0tWyBjdXQgaGVyZSBdLS0tLS0tLS0tLS0tCiAgICAgWzI5 NTcxMS41NDQyMjZdIFVucHJlcGFyaW5nIGVuYWJsZWQgc21tdV9tZHBfYWhiX2NsawogICAgIFsy OTU3MTEuNTQ5MDk5XSBXQVJOSU5HOiBDUFU6IDAgUElEOiAxIGF0IC4uL2RyaXZlcnMvY2xrL2Ns ay5jOjY5NwogICAgICAgICAgICAgICAgICAgICBjbGtfY29yZV91bnByZXBhcmUrMHhkOC8weGUw CiAgICAgLi4uCiAgICAgWzI5NTcxMS42NzQwNzNdIENhbGwgdHJhY2U6CiAgICAgWzI5NTcxMS42 Nzk0NTRdICBjbGtfY29yZV91bnByZXBhcmUrMHhkOC8weGUwCiAgICAgWzI5NTcxMS42ODIwNTld ICBjbGtfdW5wcmVwYXJlKzB4MjgvMHg0MAogICAgIFsyOTU3MTEuNjg1OTY0XSAgY2xrX2J1bGtf dW5wcmVwYXJlKzB4MjgvMHg0MAogICAgIFsyOTU3MTEuNjg5NzAxXSAgYXJtX3NtbXVfZGV2aWNl X3JlbW92ZSsweDg4LzB4ZDgKICAgICBbMjk1NzExLjY5MzY5Ml0gIGFybV9zbW11X2RldmljZV9z aHV0ZG93bisweGMvMHgxOAogICAgIFsyOTU3MTEuNjk4MTIwXSAgcGxhdGZvcm1fZHJ2X3NodXRk b3duKzB4MjAvMHgzMAoKW3YxMV0KICAgKiBTb21lIG1vcmUgY2xlYW51cHMgZm9yIGRldmljZSBs aW5rLiBXZSBkb24ndCBuZWVkIGFuIGV4cGxpY2l0CiAgICAgZGVsZXRlIGZvciBkZXZpY2UgbGlu ayBmcm9tIHRoZSBkcml2ZXIsIGJ1dCBqdXN0IHNldCB0aGUgZmxhZwogICAgIERMX0ZMQUdfQVVU T1JFTU9WRS4KICAgICBkZXZpY2VfbGlua19hZGQoKSBBUEkgZGVzY3JpcHRpb24gc2F5cyAtCiAg ICAgIklmIHRoZSBETF9GTEFHX0FVVE9SRU1PVkUgaXMgc2V0LCB0aGUgbGluayB3aWxsIGJlIHJl bW92ZWQKICAgICBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIGNvbnN1bWVyIGRldmljZSBkcml2ZXIg dW5iaW5kcy4iCiAgICogQWRkcmVzc2VkIHRoZSBjb21tZW50cyBmb3IgJ3NtbXUnIGluIGFybV9z bW11X21hcC91bm1hcCgpLgogICAqIERyb3BwZWQgdGhlIHBhdGNoIFs2XSB0aGF0IGludHJvZHVj ZWQgZGV2aWNlX2xpbmtfZGVsX2RldigpIEFQSS4gCgpbdjEwXQogICAqIEludHJvZHVjZSBkZXZp Y2VfbGlua19kZWxfZGV2KCkgQVBJIHRvIGRlbGV0ZSB0aGUgbGluayBiZXR3ZWVuCiAgICAgZ2l2 ZW4gY29uc3VtZXIgYW5kIHN1cHBsaWVyIGRldmljZXMuIFRoZSB1c2VycyBvZiBkZXZpY2UgbGlu awogICAgIGRvIG5vdCBuZWVkIHRvIHN0b3JlIGxpbmsgcG9pbnRlciB0byBkZWxldGUgdGhlIGxp bmsgbGF0ZXIuCiAgICAgVGhleSBjYW4gc3RyYWlnaHRhd2F5IHVzZSB0aGlzIEFQSSBieSBwYXNz aW5nIGNvbnN1bWVyIGFuZAogICAgIHN1cHBsaWVyIGRldmljZXMuCiAgICogTWFkZSBjb3JyZXNw b25kaW5nIGNoYW5nZXMgdG8gYXJtLXNtbXUgZHJpdmVyIHBhdGNoIGhhbmRsaW5nIHRoZQogICAg IGRldmljZSBsaW5rcy4KICAgKiBEcm9wcGVkIHRoZSBwYXRjaCBbNV0gdGhhdCB3YXMgYWRkaW5n IGRldmljZV9saW5rX2ZpbmQoKSBBUEkgdG8KICAgICBkZXZpY2UgY29yZSBsYXllci4gZGV2aWNl X2xpbmtfZGVsX2RldigpIHNlcnZlcyB0aGUgcHVycG9zZSB0bwogICAgIGRpcmVjdGx5IGRlbGV0 ZSB0aGUgbGluayBiZXR3ZWVuIHR3byBnaXZlbiBkZXZpY2VzLgoKW3Y5XQogICAqIFJlbW92ZWQg J3JwbV9zdXBwb3J0ZWQnIGZsYWcsIGluc3RlYWQgY2hlY2tpbmcgb24gcG1fZG9tYWluCiAgICAg dG8gZW5hYmxlIHJ1bnRpbWUgcG0uCiAgICogQ3JlYXRpbmcgZGV2aWNlIGxpbmsgb25seSB3aGVu IHRoZSBydW50aW1lIHBtIGlzIGVuYWJsZWQsIGFzIHdlCiAgICAgZG9uJ3QgbmVlZCBhIGRldmlj ZSBsaW5rIGJlc2lkZXMgbWFuYWdpbmcgdGhlIHBvd2VyIGRlcGVuZGVuY3kKICAgICBiZXR3ZWVu IHN1cHBsaWVyIGFuZCBjb25zdW1lciBkZXZpY2VzLgogICAqIEludHJvZHVjaW5nIGEgcGF0Y2gg dG8gYWRkIGRldmljZV9saW5rX2ZpbmQoKSBBUEkgdGhhdCBmaW5kcwogICAgIGFuZCBleGlzdGlu ZyBsaW5rIGJldHdlZW4gc3VwcGxpZXIgYW5kIGNvbnN1bWVyIGRldmljZXMuCiAgICAgQWxzbywg bWFkZSBuZWNlc3NhcnkgY2hhbmdlIHRvIGRldmljZV9saW5rX2FkZCgpIHRvIHVzZSB0aGlzIEFQ SS4KICAgKiBhcm1fc21tdV9yZW1vdmVfZGV2aWNlKCkgbm93IHVzZXMgdGhpcyBkZXZpY2VfbGlu a19maW5kKCkgdG8gZmluZAogICAgIHRoZSBkZXZpY2UgbGluayBiZXR3ZWVuIHNtbXUgZGV2aWNl IGFuZCB0aGUgbWFzdGVyIGRldmljZSwgYW5kIHRoZW4KICAgICBkZWxldGUgdGhpcyBsaW5rLgog ICAqIERyb3BwZWQgdGhlIGRlc3Ryb3lfZG9tYWluX2NvbnRleHQoKSBmaXggWzRdIGFzIGl0IHdh cyByYXRoZXIsCiAgICAgaW50cm9kdWNpbmcgY2F0YXN0cm9waGljYWxseSBiYWQgcHJvYmxlbSBi eSBkZXN0cm95aW5nCiAgICAgJ2dvb2QgZGV2J3MgZG9tYWluIGNvbnRleHQuCiAgICogQWRkZWQg J1Jldml3ZWQtYnknIHRhZyBmb3IgVG9tYXN6J3MgcmV2aWV3LgoKW3Y4XQogICAqIE1ham9yIGNo YW5nZSAtCiAgICAgLSBBZGRlZCBhIGZsYWcgJ3JwbV9zdXBwb3J0ZWQnIHdoaWNoIGVhY2ggcGxh dGZvcm0gdGhhdCBzdXBwb3J0cwogICAgICAgcnVudGltZSBwbSwgY2FuIGVuYWJsZSwgYW5kIHdl IGVuYWJsZSBydW50aW1lX3BtIG92ZXIgYXJtLXNtbXUKICAgICAgIG9ubHkgd2hlbiB0aGlzIGZs YWcgaXMgc2V0LgogICAgIC0gQWRkaW5nIHRoZSBjb25kaXRpb25hbCBwbV9ydW50aW1lX2dldC9w dXQoKSBjYWxscyB0byAubWFwLCAudW5tYXAKICAgICAgIGFuZCAuYXR0YWNoX2RldiBvcHMuCiAg ICAgLSBEcm9wcGVkIHRoZSBwYXRjaCBbMl0gdGhhdCBleHBvcnRlZCBwbV9ydW50aW1fZ2V0L3B1 dF9zdXVwbGllcnMoKSwKICAgICAgIGFuZCBhbHNvIGRyb3BwZWQgdGhlIHVzZXIgZHJpdmVyIHBh dGNoIFszXSBmb3IgdGhlc2UgQVBJcy4KCiAgICogQ2xvY2sgY29kZSBmdXJ0aGVyIGNsZWFudXAK ICAgICAtIGRvaW5nIG9ubHkgY2xrX2J1bGtfZW5hYmxlKCkgYW5kIGNsa19idWxrX2Rpc2FibGUo KSBpbiBydW50aW1lIHBtCiAgICAgICBjYWxsYmFja3MuIFdlIHNob3VsZG4ndCBiZSB0YWtpbmcg YSBzbG93IHBhdGggKGNsa19wcmVwYXJlL3VucHJlcGFyZSgpKQogICAgICAgZnJvbSB0aGVzZSBy dW50aW1lIHBtIGNhbGxiYWNrcy4gVGhlcmVieSwgbW92ZWQgY2xrX2J1bGtfcHJlcGFyZSgpIHRv CiAgICAgICBhcm1fc21tdV9kZXZpY2VfcHJvYmUoKSwgYW5kIGNsa19idWxrX3VucHJlcGFyZSgp IHRvCiAgICAgICBhcm1fc21tdV9kZXZpY2VfcmVtb3ZlKCkuCiAgICAgLSBjbGsgZGF0YSBmaWxs aW5nIHRvIGEgY29tbW9uIG1ldGhvZCBhcm1fc21tdV9maWxsX2Nsa19kYXRhKCkgdGhhdAogICAg ICAgZmlsbHMgdGhlIGNsb2NrIGlkcyBhbmQgbnVtYmVyIG9mIGNsb2Nrcy4KCiAgICogQWRkcmVz c2VkIG90aGVyIG5pdHMgYW5kIGNvbW1lbnRzCiAgICAgLSBkZXZpY2VfbGlua19hZGQoKSBlcnJv ciBwYXRoIGZpeGVkLgogICAgIC0gRml4IGZvciBjaGVja2luZyBuZWdhdGl2ZSBlcnJvciB2YWx1 ZSBmcm9tIHBtX3J1bnRpbWVfZ2V0X3N5bmMoKS4KICAgICAtIERvY3VtZW50YXRpb24gcmVkby4K CiAgICogQWRkZWQgYW5vdGhlciBwYXRjaCBmaXhpbmcgdGhlIGVycm9yIHBhdGggaW4gYXJtX3Nt bXVfYXR0YWNoX2RldigpCiAgICAgdG8gZGVzdHJveSBhbGxvY2F0ZWQgZG9tYWluIGNvbnRleHQu CgoqKiBDaGFuZ2UgbG9ncyBmb3IgcHJldmlvdXMgdmVyc2lvbnMgaXMgYXZhaWxhYmxlIGluIHBy ZXZpb3VzIHNlcmllcyBbOV0uCgpbMV0gaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9jb3Zl ci8xMDU3NjkyMS8KWzJdIGh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gvMTAyMDQ5 NDUvClszXSBodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3BhdGNoLzEwMjA0OTI1LwpbNF0g aHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wYXRjaC8xMDI1NDEwNS8KWzVdIGh0dHBzOi8v cGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gvMTAyNzc5NzUvCls2XSBodHRwczovL3BhdGNod29y ay5rZXJuZWwub3JnL3BhdGNoLzEwMjgxNjEzLwpbN10gaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVs Lm9yZy9wYXRjaC8xMDQ5MTQ4MS8KWzhdIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL3BhdGNod29y ay9wYXRjaC85NzQxMTYvCls5XSBodHRwczovL2xrbWwub3JnL2xrbWwvMjAxOC83LzgvMTI0CgpT cmljaGFyYW4gUiAoMyk6CiAgaW9tbXUvYXJtLXNtbXU6IEFkZCBwbV9ydW50aW1lL3NsZWVwIG9w cwogIGlvbW11L2FybS1zbW11OiBJbnZva2UgcG1fcnVudGltZSBkdXJpbmcgcHJvYmUsIGFkZC9y ZW1vdmUgZGV2aWNlCiAgaW9tbXUvYXJtLXNtbXU6IEFkZCB0aGUgZGV2aWNlX2xpbmsgYmV0d2Vl biBtYXN0ZXJzIGFuZCBzbW11CgpWaXZlayBHYXV0YW0gKDIpOgogIGR0LWJpbmRpbmdzOiBhcm0t c21tdTogQWRkIGJpbmRpbmdzIGZvciBxY29tLHNtbXUtdjIKICBpb21tdS9hcm0tc21tdTogQWRk IHN1cHBvcnQgZm9yIHFjb20sc21tdS12MiB2YXJpYW50CgogLi4uL2RldmljZXRyZWUvYmluZGlu Z3MvaW9tbXUvYXJtLHNtbXUudHh0ICAgICAgICAgfCAgMzkgKysrKysKIGRyaXZlcnMvaW9tbXUv YXJtLXNtbXUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTgwICsrKysrKysrKysrKysr KysrKystLQogMiBmaWxlcyBjaGFuZ2VkLCAyMDkgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25z KC0pCgotLSAKUVVBTENPTU0gSU5ESUEsIG9uIGJlaGFsZiBvZiBRdWFsY29tbSBJbm5vdmF0aW9u IENlbnRlciwgSW5jLiBpcyBhIG1lbWJlcgpvZiBDb2RlIEF1cm9yYSBGb3J1bSwgaG9zdGVkIGJ5 IFRoZSBMaW51eCBGb3VuZGF0aW9uCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9mcmVlZHJlbm8K 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=-2.6 required=3.0 tests=DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_PASS,T_DKIM_INVALID, URIBL_BLOCKED,USER_AGENT_GIT 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 C908DC433F4 for ; Thu, 30 Aug 2018 14:46:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 6EB2220834 for ; Thu, 30 Aug 2018 14:46:09 +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="cEnmawEk"; dkim=fail reason="key not found in DNS" (0-bit key) header.d=codeaurora.org header.i=@codeaurora.org header.b="Ri8nrAqX" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6EB2220834 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 S1729675AbeH3Ssg (ORCPT ); Thu, 30 Aug 2018 14:48:36 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:56338 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729208AbeH3Ssg (ORCPT ); Thu, 30 Aug 2018 14:48:36 -0400 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id BB25B6074F; Thu, 30 Aug 2018 14:46:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1535640365; bh=XQhimsAtwVSvCiXqMtIbkXi57z9iWZFzqA09/xlkOrI=; h=From:To:Cc:Subject:Date:From; b=cEnmawEk1NgjVZalKkSmuHu3EeAwrDppON805m3HtBbyxhYTShM++s/Fxv6yj+eFQ eLFdwYd7InsAIVHYhZqRH2IbAUJaqvo+hi8KBhrSDeA4IO/bnu2oCSW69OA3AffVHN FfhYkiTWPXaRzXR5Fw3frpNY5ba3hDwwMUCynPno= Received: from blr-ubuntu-41.ap.qualcomm.com (blr-bdr-fw-01_globalnat_allzones-outside.qualcomm.com [103.229.18.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: vivek.gautam@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id A4B2060159; Thu, 30 Aug 2018 14:45:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1535640363; bh=XQhimsAtwVSvCiXqMtIbkXi57z9iWZFzqA09/xlkOrI=; h=From:To:Cc:Subject:Date:From; b=Ri8nrAqXEzDn6wgvPaGCYRshZdjSJdreZz2mK0D7RhM9XGDsMU95ydNvyGfCQ5ntD eSiGLqY/u/S0o0OOcgUSn3jZDiGmX88n6dbnBZVmblhQGEXhBtTxwpofBCP6l00dr0 6Zj/UwAdv0dDD3N2zive12b5qUii2GlxgM65hU6w= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org A4B2060159 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 From: Vivek Gautam To: joro@8bytes.org, robh+dt@kernel.org, robin.murphy@arm.com, will.deacon@arm.com, iommu@lists.linux-foundation.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: alex.williamson@redhat.com, mark.rutland@arm.com, rjw@rjwysocki.net, robdclark@gmail.com, linux-pm@vger.kernel.org, freedreno@lists.freedesktop.org, sboyd@kernel.org, tfiga@chromium.org, jcrouse@codeaurora.org, sricharan@codeaurora.org, m.szyprowski@samsung.com, architt@codeaurora.org, linux-arm-msm@vger.kernel.org, Vivek Gautam Subject: [PATCH v16 0/5] iommu/arm-smmu: Add runtime pm/sleep support Date: Thu, 30 Aug 2018 20:15:36 +0530 Message-Id: <20180830144541.17740-1-vivek.gautam@codeaurora.org> X-Mailer: git-send-email 2.16.1.72.g5be1f00a9a70 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This series provides the support for turning on the arm-smmu's clocks/power domains using runtime pm. This is done using device links between smmu and client devices. The device link framework keeps the two devices in correct order for power-cycling across runtime PM or across system-wide PM. With addition of a new device link flag DL_FLAG_AUTOREMOVE_SUPPLIER [7], the device links created between arm-smmu and its clients will be automatically purged when arm-smmu driver unbinds from its device. As not all implementations support clock/power gating, we are checking for a valid 'smmu->dev's pm_domain' to conditionally enable the runtime power management for such smmu implementations that can support it. Otherwise, the clocks are turned to be always on in .probe until .remove. With conditional runtime pm now, we avoid touching dev->power.lock in fastpaths for smmu implementations that don't need to do anything useful with pm_runtime. This lets us to use the much-argued pm_runtime_get_sync/put_sync() calls in map/unmap callbacks so that the clients do not have to worry about handling any of the arm-smmu's power. This series also adds support for Qcom's arm-smmu-v2 variant that has different clocks and power requirements. Previous version of this patch series is @ [1]. Build tested the series based on 4.19-rc1. [v16] * Addressed review comments from Rob about soc specific compatibles. * Removed pm_runtime_get/put calls from arm_smmu_device_probe(), as doing a runtime_get() eventually calls arm_smmu_device_reset(). arm_smmu_device_reset() should be called only after arm_smmu_device_cfg_probe(). Enabling the clocks by default in the probe, and using pm_runtime_set_active() as suggested by Tomasz to disable the clocks when pm_runtime is enabled. [v15] * Added a list of valid values of '' in "qcom,-smmu-v2" compatible string as pointed out by Robin, and Rob in the thread [8]: * Added Srini's Tested-by. * Separated out the dt-bindings change from driver change into a new patch as suggested by new checkpatch warning. Rob, I took the liberty of removing your Reviewed-by (for your comment on '') for the new dt-bindings patch 4/5. Please feel free to review it again. Thanks! [v14] * Moved arm_smmu_device_reset() from arm_smmu_pm_resume() to arm_smmu_runtime_resume() so that the pm_resume callback calls only runtime_resume to resume the device. This should take care of restoring the state of smmu in systems in which smmu lose register state on power-domain collapse. [v13] Addressing Rafael's comments: * Added .suspend pm callback to disable the clocks in system wide suspend. * Added corresponding clock enable in .resume pm callback. * Explicitly enabling/disabling the clocks now when runtime PM is disabled. * device_link_add() doesn't depend on pm_runtime_enabled() as we can use device links across system suspend/resume too. Addressing Robin's comments: * Making device_link_add failures as non-fatal. * Removed IOMMU_OF_DECLARE() declaration as we don't need this after Rob's patch that removed all of these declarations. [v12] * Use new device link's flag introduced in [7] - DL_FLAG_AUTOREMOVE_SUPPLIER. With this devices links are automatically purged when arm-smmu driver unbinds. * Using pm_runtime_force_suspend() instead of pm_runtime_disable() to avoid following warning from arm_smmu_device_remove() [295711.537507] ------------[ cut here ]------------ [295711.544226] Unpreparing enabled smmu_mdp_ahb_clk [295711.549099] WARNING: CPU: 0 PID: 1 at ../drivers/clk/clk.c:697 clk_core_unprepare+0xd8/0xe0 ... [295711.674073] Call trace: [295711.679454] clk_core_unprepare+0xd8/0xe0 [295711.682059] clk_unprepare+0x28/0x40 [295711.685964] clk_bulk_unprepare+0x28/0x40 [295711.689701] arm_smmu_device_remove+0x88/0xd8 [295711.693692] arm_smmu_device_shutdown+0xc/0x18 [295711.698120] platform_drv_shutdown+0x20/0x30 [v11] * Some more cleanups for device link. We don't need an explicit delete for device link from the driver, but just set the flag DL_FLAG_AUTOREMOVE. device_link_add() API description says - "If the DL_FLAG_AUTOREMOVE is set, the link will be removed automatically when the consumer device driver unbinds." * Addressed the comments for 'smmu' in arm_smmu_map/unmap(). * Dropped the patch [6] that introduced device_link_del_dev() API. [v10] * Introduce device_link_del_dev() API to delete the link between given consumer and supplier devices. The users of device link do not need to store link pointer to delete the link later. They can straightaway use this API by passing consumer and supplier devices. * Made corresponding changes to arm-smmu driver patch handling the device links. * Dropped the patch [5] that was adding device_link_find() API to device core layer. device_link_del_dev() serves the purpose to directly delete the link between two given devices. [v9] * Removed 'rpm_supported' flag, instead checking on pm_domain to enable runtime pm. * Creating device link only when the runtime pm is enabled, as we don't need a device link besides managing the power dependency between supplier and consumer devices. * Introducing a patch to add device_link_find() API that finds and existing link between supplier and consumer devices. Also, made necessary change to device_link_add() to use this API. * arm_smmu_remove_device() now uses this device_link_find() to find the device link between smmu device and the master device, and then delete this link. * Dropped the destroy_domain_context() fix [4] as it was rather, introducing catastrophically bad problem by destroying 'good dev's domain context. * Added 'Reviwed-by' tag for Tomasz's review. [v8] * Major change - - Added a flag 'rpm_supported' which each platform that supports runtime pm, can enable, and we enable runtime_pm over arm-smmu only when this flag is set. - Adding the conditional pm_runtime_get/put() calls to .map, .unmap and .attach_dev ops. - Dropped the patch [2] that exported pm_runtim_get/put_suupliers(), and also dropped the user driver patch [3] for these APIs. * Clock code further cleanup - doing only clk_bulk_enable() and clk_bulk_disable() in runtime pm callbacks. We shouldn't be taking a slow path (clk_prepare/unprepare()) from these runtime pm callbacks. Thereby, moved clk_bulk_prepare() to arm_smmu_device_probe(), and clk_bulk_unprepare() to arm_smmu_device_remove(). - clk data filling to a common method arm_smmu_fill_clk_data() that fills the clock ids and number of clocks. * Addressed other nits and comments - device_link_add() error path fixed. - Fix for checking negative error value from pm_runtime_get_sync(). - Documentation redo. * Added another patch fixing the error path in arm_smmu_attach_dev() to destroy allocated domain context. ** Change logs for previous versions is available in previous series [9]. [1] https://patchwork.kernel.org/cover/10576921/ [2] https://patchwork.kernel.org/patch/10204945/ [3] https://patchwork.kernel.org/patch/10204925/ [4] https://patchwork.kernel.org/patch/10254105/ [5] https://patchwork.kernel.org/patch/10277975/ [6] https://patchwork.kernel.org/patch/10281613/ [7] https://patchwork.kernel.org/patch/10491481/ [8] https://lore.kernel.org/patchwork/patch/974116/ [9] https://lkml.org/lkml/2018/7/8/124 Sricharan R (3): iommu/arm-smmu: Add pm_runtime/sleep ops iommu/arm-smmu: Invoke pm_runtime during probe, add/remove device iommu/arm-smmu: Add the device_link between masters and smmu Vivek Gautam (2): dt-bindings: arm-smmu: Add bindings for qcom,smmu-v2 iommu/arm-smmu: Add support for qcom,smmu-v2 variant .../devicetree/bindings/iommu/arm,smmu.txt | 39 +++++ drivers/iommu/arm-smmu.c | 180 +++++++++++++++++++-- 2 files changed, 209 insertions(+), 10 deletions(-) -- QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation