From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vivek Gautam Subject: [PATCH v12 0/4] iommu/arm-smmu: Add runtime pm/sleep support Date: Sun, 8 Jul 2018 23:04:09 +0530 Message-ID: <20180708173413.1965-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, mark.rutland-5wv7dgnIgG8@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: 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-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org List-Id: devicetree@vger.kernel.org VGhpcyBzZXJpZXMgcHJvdmlkZXMgdGhlIHN1cHBvcnQgZm9yIHR1cm5pbmcgb24gdGhlIGFybS1z bW11J3MKY2xvY2tzL3Bvd2VyIGRvbWFpbnMgdXNpbmcgcnVudGltZSBwbS4gVGhpcyBpcyBkb25l IHVzaW5nIHRoZQpyZWNlbnRseSBpbnRyb2R1Y2VkIGRldmljZSBsaW5rcyBwYXRjaGVzLCB3aGlj aCBsZXRzIHRoZSBzbW11J3MKcnVudGltZSB0byBmb2xsb3cgdGhlIG1hc3RlcidzIHJ1bnRpbWUg cG0sIHNvIHRoZSBzbW11IHJlbWFpbnMKcG93ZXJlZCBvbmx5IHdoZW4gdGhlIG1hc3RlcnMgdXNl IGl0LgpBcyBub3QgYWxsIGltcGxlbWVudGF0aW9ucyBzdXBwb3J0IGNsb2NrL3Bvd2VyIGdhdGlu Zywgd2UgYXJlIGNoZWNraW5nCmZvciBhIHZhbGlkICdzbW11LT5kZXYncyBwbV9kb21haW4nIHRv IGNvbmRpdGlvbmFsbHkgZW5hYmxlIHRoZSBydW50aW1lCnBvd2VyIG1hbmFnZW1lbnQgZm9yIHN1 Y2ggc21tdSBpbXBsZW1lbnRhdGlvbnMgdGhhdCBjYW4gc3VwcG9ydCBpdC4KV2l0aCBhZGRpdGlv biBvZiBhIG5ldyBkZXZpY2UgbGluayBmbGFnIERMX0ZMQUdfQVVUT1JFTU9WRV9TVVBQTElFUiBb MTFdCnRoZSBkZXZpY2UgbGlua3MgY3JlYXRlZCBiZXR3ZWVuIGFybS1zbW11IGFuZCBpdHMgY2xp ZW50cyB3aWxsIGJlCmF1dG9tYXRpY2FsbHkgcHVyZ2VkIHdoZW4gYXJtLXNtbXUgZHJpdmVyIHVu YmluZHMgZnJvbSBpdHMgZGV2aWNlLgoKVGhpcyBzZXJpZXMgYWxzbyBhZGRzIHN1cHBvcnQgZm9y IFFjb20ncyBhcm0tc21tdS12MiB2YXJpYW50IHRoYXQKaGFzIGRpZmZlcmVudCBjbG9ja3MgYW5k IHBvd2VyIHJlcXVpcmVtZW50cy4KClRvb2sgc29tZSByZWZlcmVuY2UgZnJvbSB0aGUgZXh5bm9z IHJ1bnRpbWUgcGF0Y2hlcyBbMV0uCgpXaXRoIGNvbmRpdGlvbmFsIHJ1bnRpbWUgcG0gbm93LCB3 ZSBhdm9pZCB0b3VjaGluZyBkZXYtPnBvd2VyLmxvY2sKaW4gZmFzdHBhdGhzIGZvciBzbW11IGlt cGxlbWVudGF0aW9ucyB0aGF0IGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcKdXNlZnVsIHdpdGgg cG1fcnVudGltZS4KVGhpcyBsZXRzIHVzIHRvIHVzZSB0aGUgbXVjaC1hcmd1ZWQgcG1fcnVudGlt ZV9nZXRfc3luYy9wdXRfc3luYygpCmNhbGxzIGluIG1hcC91bm1hcCBjYWxsYmFja3Mgc28gdGhh dCB0aGUgY2xpZW50cyBkbyBub3QgaGF2ZSB0bwp3b3JyeSBhYm91dCBoYW5kbGluZyBhbnkgb2Yg dGhlIGFybS1zbW11J3MgcG93ZXIuCgpQcmV2aW91cyB2ZXJzaW9uIG9mIHRoaXMgcGF0Y2ggc2Vy aWVzIGlzIEAgWzVdLgoKTm90ZTogVGhpcyBzZXJpZXMgaXMgbm93IGJhc2VkIG9uIHRoZSBkZXZp Y2UgbGluayBjaGFuZ2VzIFsxMV0gZm9yCmFkZGluZyBuZXcgZmxhZyAtIERMX0ZMQUdfQVVUT1JF TU9WRV9TVVBQTElFUi4KUmFmYWVsIHdpbGwgcHVsbCBpbiB0aGUgZGV2aWNlIGxpbmsgY2hhbmdl cyBhbmQgdGhlc2UgcGF0Y2hlcyBoYXZlCnRvIGJlIHB1bGxlZCBpbiBiYXNlZCBvbiBSYWZhZWwn cyBicmFuY2guIEFzIFJhZmFlbCBzYWlkIC0KIkkgd291bGQgcHJlZmVyIHRvIGFwcGx5IHRoZW0g bXlzZWxmIHRvIGJlIGhvbmVzdCBhbmQgcHV0IHRoZW0gb24gYW4KcHVibGljIGdpdCBicmFuY2gg Zm9yIHlvdSB0byBwdWxsIGZyb20uIgoKW3YxMl0KICAgKiBVc2UgbmV3IGRldmljZSBsaW5rJ3Mg ZmxhZyBpbnRyb2R1Y2VkIGluIFsxMV0gLQogICAgIERMX0ZMQUdfQVVUT1JFTU9WRV9TVVBQTElF Ui4gV2l0aCB0aGlzIGRldmljZXMgbGlua3MgYXJlIGF1dG9tYXRpY2FsbHkKICAgICBwdXJnZWQg d2hlbiBhcm0tc21tdSBkcml2ZXIgdW5iaW5kcy4KICAgKiBVc2luZyBwbV9ydW50aW1lX2ZvcmNl X3N1c3BlbmQoKSBpbnN0ZWFkIG9mIHBtX3J1bnRpbWVfZGlzYWJsZSgpIHRvCiAgICAgYXZvaWQg Zm9sbG93aW5nIHdhcm5pbmcgZnJvbSBhcm1fc21tdV9kZXZpY2VfcmVtb3ZlKCkKCiAgICAgWzI5 NTcxMS41Mzc1MDddIC0tLS0tLS0tLS0tLVsgY3V0IGhlcmUgXS0tLS0tLS0tLS0tLQogICAgIFsy OTU3MTEuNTQ0MjI2XSBVbnByZXBhcmluZyBlbmFibGVkIHNtbXVfbWRwX2FoYl9jbGsKICAgICBb Mjk1NzExLjU0OTA5OV0gV0FSTklORzogQ1BVOiAwIFBJRDogMSBhdCAuLi9kcml2ZXJzL2Nsay9j bGsuYzo2OTcKICAgICAgICAgICAgICAgICAgICAgY2xrX2NvcmVfdW5wcmVwYXJlKzB4ZDgvMHhl MAogICAgIC4uLgogICAgIFsyOTU3MTEuNjc0MDczXSBDYWxsIHRyYWNlOgogICAgIFsyOTU3MTEu Njc5NDU0XSAgY2xrX2NvcmVfdW5wcmVwYXJlKzB4ZDgvMHhlMAogICAgIFsyOTU3MTEuNjgyMDU5 XSAgY2xrX3VucHJlcGFyZSsweDI4LzB4NDAKICAgICBbMjk1NzExLjY4NTk2NF0gIGNsa19idWxr X3VucHJlcGFyZSsweDI4LzB4NDAKICAgICBbMjk1NzExLjY4OTcwMV0gIGFybV9zbW11X2Rldmlj ZV9yZW1vdmUrMHg4OC8weGQ4CiAgICAgWzI5NTcxMS42OTM2OTJdICBhcm1fc21tdV9kZXZpY2Vf c2h1dGRvd24rMHhjLzB4MTgKICAgICBbMjk1NzExLjY5ODEyMF0gIHBsYXRmb3JtX2Rydl9zaHV0 ZG93bisweDIwLzB4MzAKClt2MTFdCiAgICogU29tZSBtb3JlIGNsZWFudXBzIGZvciBkZXZpY2Ug bGluay4gV2UgZG9uJ3QgbmVlZCBhbiBleHBsaWNpdAogICAgIGRlbGV0ZSBmb3IgZGV2aWNlIGxp bmsgZnJvbSB0aGUgZHJpdmVyLCBidXQganVzdCBzZXQgdGhlIGZsYWcKICAgICBETF9GTEFHX0FV VE9SRU1PVkUuCiAgICAgZGV2aWNlX2xpbmtfYWRkKCkgQVBJIGRlc2NyaXB0aW9uIHNheXMgLQog ICAgICJJZiB0aGUgRExfRkxBR19BVVRPUkVNT1ZFIGlzIHNldCwgdGhlIGxpbmsgd2lsbCBiZSBy ZW1vdmVkCiAgICAgYXV0b21hdGljYWxseSB3aGVuIHRoZSBjb25zdW1lciBkZXZpY2UgZHJpdmVy IHVuYmluZHMuIgogICAqIEFkZHJlc3NlZCB0aGUgY29tbWVudHMgZm9yICdzbW11JyBpbiBhcm1f c21tdV9tYXAvdW5tYXAoKS4KICAgKiBEcm9wcGVkIHRoZSBwYXRjaCBbMTBdIHRoYXQgaW50cm9k dWNlZCBkZXZpY2VfbGlua19kZWxfZGV2KCkgQVBJLiAKClt2MTBdCiAgICogSW50cm9kdWNlIGRl dmljZV9saW5rX2RlbF9kZXYoKSBBUEkgdG8gZGVsZXRlIHRoZSBsaW5rIGJldHdlZW4KICAgICBn aXZlbiBjb25zdW1lciBhbmQgc3VwcGxpZXIgZGV2aWNlcy4gVGhlIHVzZXJzIG9mIGRldmljZSBs aW5rCiAgICAgZG8gbm90IG5lZWQgdG8gc3RvcmUgbGluayBwb2ludGVyIHRvIGRlbGV0ZSB0aGUg bGluayBsYXRlci4KICAgICBUaGV5IGNhbiBzdHJhaWdodGF3YXkgdXNlIHRoaXMgQVBJIGJ5IHBh c3NpbmcgY29uc3VtZXIgYW5kCiAgICAgc3VwcGxpZXIgZGV2aWNlcy4KICAgKiBNYWRlIGNvcnJl c3BvbmRpbmcgY2hhbmdlcyB0byBhcm0tc21tdSBkcml2ZXIgcGF0Y2ggaGFuZGxpbmcgdGhlCiAg ICAgZGV2aWNlIGxpbmtzLgogICAqIERyb3BwZWQgdGhlIHBhdGNoIFs5XSB0aGF0IHdhcyBhZGRp bmcgZGV2aWNlX2xpbmtfZmluZCgpIEFQSSB0bwogICAgIGRldmljZSBjb3JlIGxheWVyLiBkZXZp Y2VfbGlua19kZWxfZGV2KCkgc2VydmVzIHRoZSBwdXJwb3NlIHRvCiAgICAgZGlyZWN0bHkgZGVs ZXRlIHRoZSBsaW5rIGJldHdlZW4gdHdvIGdpdmVuIGRldmljZXMuCgpbdjldCiAgICogUmVtb3Zl ZCAncnBtX3N1cHBvcnRlZCcgZmxhZywgaW5zdGVhZCBjaGVja2luZyBvbiBwbV9kb21haW4KICAg ICB0byBlbmFibGUgcnVudGltZSBwbS4KICAgKiBDcmVhdGluZyBkZXZpY2UgbGluayBvbmx5IHdo ZW4gdGhlIHJ1bnRpbWUgcG0gaXMgZW5hYmxlZCwgYXMgd2UKICAgICBkb24ndCBuZWVkIGEgZGV2 aWNlIGxpbmsgYmVzaWRlcyBtYW5hZ2luZyB0aGUgcG93ZXIgZGVwZW5kZW5jeQogICAgIGJldHdl ZW4gc3VwcGxpZXIgYW5kIGNvbnN1bWVyIGRldmljZXMuCiAgICogSW50cm9kdWNpbmcgYSBwYXRj aCB0byBhZGQgZGV2aWNlX2xpbmtfZmluZCgpIEFQSSB0aGF0IGZpbmRzCiAgICAgYW5kIGV4aXN0 aW5nIGxpbmsgYmV0d2VlbiBzdXBwbGllciBhbmQgY29uc3VtZXIgZGV2aWNlcy4KICAgICBBbHNv LCBtYWRlIG5lY2Vzc2FyeSBjaGFuZ2UgdG8gZGV2aWNlX2xpbmtfYWRkKCkgdG8gdXNlIHRoaXMg QVBJLgogICAqIGFybV9zbW11X3JlbW92ZV9kZXZpY2UoKSBub3cgdXNlcyB0aGlzIGRldmljZV9s aW5rX2ZpbmQoKSB0byBmaW5kCiAgICAgdGhlIGRldmljZSBsaW5rIGJldHdlZW4gc21tdSBkZXZp Y2UgYW5kIHRoZSBtYXN0ZXIgZGV2aWNlLCBhbmQgdGhlbgogICAgIGRlbGV0ZSB0aGlzIGxpbmsu CiAgICogRHJvcHBlZCB0aGUgZGVzdHJveV9kb21haW5fY29udGV4dCgpIGZpeCBbOF0gYXMgaXQg d2FzIHJhdGhlciwKICAgICBpbnRyb2R1Y2luZyBjYXRhc3Ryb3BoaWNhbGx5IGJhZCBwcm9ibGVt IGJ5IGRlc3Ryb3lpbmcKICAgICAnZ29vZCBkZXYncyBkb21haW4gY29udGV4dC4KICAgKiBBZGRl ZCAnUmV2aXdlZC1ieScgdGFnIGZvciBUb21hc3oncyByZXZpZXcuCgpbdjhdCiAgICogTWFqb3Ig Y2hhbmdlIC0KICAgICAtIEFkZGVkIGEgZmxhZyAncnBtX3N1cHBvcnRlZCcgd2hpY2ggZWFjaCBw bGF0Zm9ybSB0aGF0IHN1cHBvcnRzCiAgICAgICBydW50aW1lIHBtLCBjYW4gZW5hYmxlLCBhbmQg d2UgZW5hYmxlIHJ1bnRpbWVfcG0gb3ZlciBhcm0tc21tdQogICAgICAgb25seSB3aGVuIHRoaXMg ZmxhZyBpcyBzZXQuCiAgICAgLSBBZGRpbmcgdGhlIGNvbmRpdGlvbmFsIHBtX3J1bnRpbWVfZ2V0 L3B1dCgpIGNhbGxzIHRvIC5tYXAsIC51bm1hcAogICAgICAgYW5kIC5hdHRhY2hfZGV2IG9wcy4K ICAgICAtIERyb3BwZWQgdGhlIHBhdGNoIFs2XSB0aGF0IGV4cG9ydGVkIHBtX3J1bnRpbV9nZXQv cHV0X3N1dXBsaWVycygpLAogICAgICAgYW5kIGFsc28gZHJvcHBlZCB0aGUgdXNlciBkcml2ZXIg cGF0Y2ggWzddIGZvciB0aGVzZSBBUElzLgoKICAgKiBDbG9jayBjb2RlIGZ1cnRoZXIgY2xlYW51 cAogICAgIC0gZG9pbmcgb25seSBjbGtfYnVsa19lbmFibGUoKSBhbmQgY2xrX2J1bGtfZGlzYWJs ZSgpIGluIHJ1bnRpbWUgcG0KICAgICAgIGNhbGxiYWNrcy4gV2Ugc2hvdWxkbid0IGJlIHRha2lu ZyBhIHNsb3cgcGF0aCAoY2xrX3ByZXBhcmUvdW5wcmVwYXJlKCkpCiAgICAgICBmcm9tIHRoZXNl IHJ1bnRpbWUgcG0gY2FsbGJhY2tzLiBUaGVyZWJ5LCBtb3ZlZCBjbGtfYnVsa19wcmVwYXJlKCkg dG8KICAgICAgIGFybV9zbW11X2RldmljZV9wcm9iZSgpLCBhbmQgY2xrX2J1bGtfdW5wcmVwYXJl KCkgdG8KICAgICAgIGFybV9zbW11X2RldmljZV9yZW1vdmUoKS4KICAgICAtIGNsayBkYXRhIGZp bGxpbmcgdG8gYSBjb21tb24gbWV0aG9kIGFybV9zbW11X2ZpbGxfY2xrX2RhdGEoKSB0aGF0CiAg ICAgICBmaWxscyB0aGUgY2xvY2sgaWRzIGFuZCBudW1iZXIgb2YgY2xvY2tzLgoKICAgKiBBZGRy ZXNzZWQgb3RoZXIgbml0cyBhbmQgY29tbWVudHMKICAgICAtIGRldmljZV9saW5rX2FkZCgpIGVy cm9yIHBhdGggZml4ZWQuCiAgICAgLSBGaXggZm9yIGNoZWNraW5nIG5lZ2F0aXZlIGVycm9yIHZh bHVlIGZyb20gcG1fcnVudGltZV9nZXRfc3luYygpLgogICAgIC0gRG9jdW1lbnRhdGlvbiByZWRv LgoKICAgKiBBZGRlZCBhbm90aGVyIHBhdGNoIGZpeGluZyB0aGUgZXJyb3IgcGF0aCBpbiBhcm1f c21tdV9hdHRhY2hfZGV2KCkKICAgICB0byBkZXN0cm95IGFsbG9jYXRlZCBkb21haW4gY29udGV4 dC4KClt2N10KICAgKiBBZGRyZXNzZWQgcmV2aWV3IGNvbW1lbnRzIGdpdmVuIGJ5IFJvYmluIE11 cnBoeSAtCiAgICAgLSBBZGRlZCBkZXZpY2VfbGlua19kZWwoKSBpbiAucmVtb3ZlX2RldmljZSBw YXRoLgogICAgIC0gRXJyb3IgcGF0aCBjbGVhbnVwIGluIGFybV9zbW11X2FkZF9kZXZpY2UoKS4K ICAgICAtIEFkZGVkIHBtX3J1bnRpbWVfZ2V0L3B1dF9zeW5jKCkgaW4gLnJlbW92ZSBwYXRoLCBh bmQgcmVwbGFjZWQKICAgICAgICBwbV9ydW50aW1lX2ZvcmNlX3N1c3BlbmQoKSB3aXRoIHBtX3J1 bnRpbWVfZGlzYWJsZSgpLgogICAgIC0gY2xrX25hbWVzIGNsZWFudXAgaW4gYXJtX3NtbXVfaW5p dF9jbGtzKCkKICAgKiBBZGRlZCAnUmV2aWV3ZWQtYnknIGdpdmVuIGJ5IFJvYiBILgoKW1Y2XQog ICAqIEFkZGVkIEFjayBnaXZlbiBieSBSYWZhZWwgdG8gZmlyc3QgcGF0Y2ggaW4gdGhlIHNlcmll cy4KICAgKiBBZGRyZXNzZWQgUm9iIEhlcnJpbmcncyBjb21tZW50IGZvciBhZGRpbmcgc29jIHNw ZWNpZmljIGNvbXBhdGlibGUKICAgICBzdHJpbmcgYXMgd2VsbCBiZXNpZGVzICdxY29tLHNtbXUt djInLgoKW1Y1XQogICAqIERyb3BwZWQgcnVudGltZSBwbSBjYWxscyBmcm9tICJhcm1fc21tdV91 bm1hcCIgb3AgYXMgZGlzY3Vzc2VkIG92ZXIKICAgICB0aGUgbGlzdCBbM10gZm9yIHRoZSBsYXN0 IHBhdGNoIHNlcmllcy4KICAgKiBBZGRlZCBhIHBhdGNoIHRvIGV4cG9ydCBwbV9ydW50aW1lX2dl dC9wdXRfc3VwcGxpZXJzKCkgQVBJcyB0byB0aGUKICAgICBzZXJpZXMgYXMgYWdyZWVkIHdpdGgg UmFmYWVsIFs0XS4KICAgKiBBZGRlZCB0aGUgcmVsYXRlZCBwYXRjaCBmb3IgbXNtIGRybSBpb21t dSBsYXllciB0byB1c2UKICAgICBwbV9ydW50aW1lX2dldC9wdXRfc3VwcGxpZXJzKCkgQVBJcyBp biBtc21fbW11X2Z1bmNzLgogICAqIERyb3BwZWQgYXJtLW1tdTUwMCBjbG9jayBwYXRjaCBzaW5j ZSB0aGF0IHdvdWxkIGJyZWFrIGV4aXN0aW5nCiAgICAgcGxhdGZvcm1zLgogICAqIENoYW5nZWQg Y29tcGF0aWJsZSAncWNvbSxtc204OTk2LXNtbXUtdjInIHRvICdxY29tLHNtbXUtdjInIHRvIHJl ZmxlY3QKICAgICB0aGUgSVAgdmVyc2lvbiByYXRoZXIgdGhhbiB0aGUgcGxhdGZvcm0gb24gd2hp Y2ggaXQgaXMgdXNlZC4KICAgICBUaGUgc2FtZSBJUCBpcyB1c2VkIGFjcm9zcyBtdWx0aXBsZSBw bGF0Zm9ybXMgaW5jbHVkaW5nIG1zbTg5OTYsCiAgICAgYW5kIHNkbTg0NSBldGMuCiAgICogVXNp bmcgY2xvY2sgYnVsayBBUElzIHRvIGhhbmRsZSB0aGUgY2xvY2tzIGF2YWlsYWJsZSB0byB0aGUg SVAgYXMKICAgICBzdWdnZXN0ZWQgYnkgU3RlcGhlbiBCb3lkLgogICAqIFRoZSBmaXJzdCBwYXRj aCBpbiB2NCB2ZXJzaW9uIG9mIHRoZSBwYXRjaC1zZXJpZXM6CiAgICAgKCJpb21tdS9hcm0tc21t dTogRml4IHRoZSBlcnJvciBwYXRoIGluIGFybV9zbW11X2FkZF9kZXZpY2UiKSBoYXMKICAgICBh bHJlYWR5IG1hZGUgaXQgdG8gbWFpbmxpbmUuCgpbVjRdCiAgICogUmV3b3JrZWQgdGhlIGNsb2Nr IGhhbmRsaW5nIHBhcnQuIFdlIG5vdyB0YWtlIGNsb2NrIG5hbWVzIGFzIGRhdGEKICAgICBpbiB0 aGUgZHJpdmVyIGZvciBzdXBwb3J0ZWQgY29tcGF0aWJsZSB2ZXJzaW9ucywgYW5kIGxvb3Agb3Zl ciB0aGVtCiAgICAgdG8gZ2V0LCBlbmFibGUsIGFuZCBkaXNhYmxlIHRoZSBjbG9ja3MuCiAgICog VXNpbmcgcWNvbSxtc204OTk2IGJhc2VkIGNvbXBhdGlibGVzIGZvciBiaW5kaW5ncyBpbnN0ZWFk IG9mIGEgZ2VuZXJpYwogICAgIHFjb20gY29tcGF0aWJsZS4KICAgKiBSZWZhY3RvciBNTVU1MDAg cGF0Y2ggdG8ganVzdCBhZGQgdGhlIG5lY2Vzc2FyeSBjbG9jayBuYW1lcyBkYXRhIGFuZAogICAg IGNvcnJlc3BvbmRpbmcgYmluZGluZ3MuCiAgICogQWRkZWQgdGhlIHBtX3J1bnRpbWVfZ2V0L3B1 dCgpIGNhbGxzIGluIC51bm1hcCBpb21tdSBvcCAoZml4IGFkZGVkIGJ5CiAgICAgU3RhbmltaXIg b24gdG9wIG9mIHByZXZpb3VzIHBhdGNoIHZlcnNpb24uCiAgICogQWRkZWQgYSBwYXRjaCB0byBm aXggZXJyb3IgcGF0aCBpbiBhcm1fc21tdV9hZGRfZGV2aWNlKCkKICAgKiBSZW1vdmVkIHBhdGNo IDMvNSBvZiBWMyBwYXRjaCBzZXJpZXMgdGhhdCBhZGRlZCBxY29tLHNtbXUtdjIgYmluZGluZ3Mu CgpbVjNdCiAgICogUmV3b3JrZWQgdGhlIHBhdGNoZXMgdG8ga2VlcCB0aGUgY2xvY2tzIGluaXQv ZW5hYmxpbmcgZnVuY3Rpb24KICAgICBzZXBhcmF0ZWx5IGZvciBlYWNoIGNvbXBhdGlibGUuCgog ICAqIEFkZGVkIGNsb2NrcyBiaW5kaW5ncyBmb3IgTU1VNDB4LzUwMC4KCiAgICogQWRkZWQgYSBu ZXcgY29tcGF0aWJsZSBmb3IgcWNvbSxzbW11LXYyIGltcGxlbWVudGF0aW9uIGFuZAogICAgIHRo ZSBjbG9jayBiaW5kaW5ncyBmb3IgdGhlIHNhbWUuCgogICAqIFJlYmFzZWQgb24gdG9wIG9mIDQu MTEtcmMxCgpbVjJdCiAgICogU3BsaXQgdGhlIHBhdGNoZXMgbGl0dGxlIGRpZmZlcmVudGx5LgoK ICAgKiBBZGRyZXNzZWQgY29tbWVudHMuCgogICAqIFJlbW92ZWQgdGhlIHBhdGNoICM0IFsyXSBm cm9tIHByZXZpb3VzIHBvc3QKICAgICBmb3IgYXJtLXNtbXUgY29udGV4dCBzYXZlIHJlc3RvcmUu IFBsYW5uaW5nIHRvCiAgICAgcG9zdCB0aGlzIHNlcGFyYXRlbHkgYWZ0ZXIgcmV3b3JraW5nL2Fk ZHJlc3NpbmcgUm9iaW4ncwogICAgIGZlZWRiYWNrLgoKICAgKiBSZXZlcnNlZCB0aGUgc2VxdWVu Y2UgdG8gZGlzYWJsZSBjbG9ja3MgdGhhbiBlbmFibGluZy4KICAgICBUaGlzIHdhcyByZXF1aXJl ZCBmb3IgdGhvc2UgY2FzZXMgd2hlcmUgdGhlCiAgICAgY2xvY2tzIGFyZSBwb3B1bGF0ZWQgaW4g YSBkZXBlbmRlbnQgb3JkZXIgZnJvbSBEVC4KClsxXSBodHRwczovL2xrbWwub3JnL2xrbWwvMjAx Ni8xMC8yMC83MApbMl0gaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wYXRjaC85Mzg5NzE3 LwpbM10gaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wYXRjaC8xMDIwNDkyNS8KWzRdIGh0 dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gvMTAxMDI0NDUvCls1XSBodHRwczovL2xr bWwub3JnL2xrbWwvMjAxOC8zLzIyLzE5MQpbNl0gaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9y Zy9wYXRjaC8xMDIwNDk0NS8KWzddIGh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gv MTAyMDQ5MjUvCls4XSBodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3BhdGNoLzEwMjU0MTA1 LwpbOV0gaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wYXRjaC8xMDI3Nzk3NS8KWzEwXSBo dHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3BhdGNoLzEwMjgxNjEzLwpbMTFdIGh0dHBzOi8v cGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gvMTA0OTE0ODEvCgpTcmljaGFyYW4gUiAoMyk6CiAg aW9tbXUvYXJtLXNtbXU6IEFkZCBwbV9ydW50aW1lL3NsZWVwIG9wcwogIGlvbW11L2FybS1zbW11 OiBJbnZva2UgcG1fcnVudGltZSBkdXJpbmcgcHJvYmUsIGFkZC9yZW1vdmUgZGV2aWNlCiAgaW9t bXUvYXJtLXNtbXU6IEFkZCB0aGUgZGV2aWNlX2xpbmsgYmV0d2VlbiBtYXN0ZXJzIGFuZCBzbW11 CgpWaXZlayBHYXV0YW0gKDEpOgogIGlvbW11L2FybS1zbW11OiBBZGQgc3VwcG9ydCBmb3IgcWNv bSxzbW11LXYyIHZhcmlhbnQKCiAuLi4vZGV2aWNldHJlZS9iaW5kaW5ncy9pb21tdS9hcm0sc21t dS50eHQgICAgICAgICB8ICA0MiArKysrKwogZHJpdmVycy9pb21tdS9hcm0tc21tdS5jICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAxNzggKysrKysrKysrKysrKysrKysrKy0tCiAyIGZpbGVz IGNoYW5nZWQsIDIxMCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKCi0tIApRVUFMQ09N TSBJTkRJQSwgb24gYmVoYWxmIG9mIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlz IGEgbWVtYmVyCm9mIENvZGUgQXVyb3JhIEZvcnVtLCBob3N0ZWQgYnkgVGhlIExpbnV4IEZvdW5k YXRpb24KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZy ZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=