From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v3 2/4] drm/rockchip: add an common abstracted PSR driver Date: Tue, 12 Jul 2016 14:38:26 +0200 Message-ID: <20160712123826.GU23520@phenom.ffwll.local> References: <1467364685-21390-1-git-send-email-ykk@rock-chips.com> <1467364754-21674-1-git-send-email-ykk@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Sean Paul Cc: Krzysztof Kozlowski , linux-samsung-soc , linux-rockchip@lists.infradead.org, Mark Yao , Jingoo Han , Emil Velikov , Doug Anderson , dri-devel , Tomasz Figa , Javier Martinez Canillas , Daniel Vetter , =?iso-8859-1?Q?St=E9phane?= Marchesin , Thierry Reding , Linux Kernel Mailing List List-Id: linux-samsung-soc@vger.kernel.org T24gRnJpLCBKdWwgMDEsIDIwMTYgYXQgMDI6MDA6MDBQTSAtMDQwMCwgU2VhbiBQYXVsIHdyb3Rl Ogo+IE9uIEZyaSwgSnVsIDEsIDIwMTYgYXQgNToxOSBBTSwgWWFraXIgWWFuZyA8eWtrQHJvY2st Y2hpcHMuY29tPiB3cm90ZToKPiA+IFRoZSBQU1IgZHJpdmVyIGhhdmUgZXhwb3J0ZWQgZm91ciBz eW1ib2xzIGZvciBzcGVjaWZpYyBkZXZpY2UgZHJpdmVyOgo+ID4gLSByb2NrY2hpcF9kcm1fcHNy X3JlZ2lzdGVyKCkKPiA+IC0gcm9ja2NoaXBfZHJtX3Bzcl91bnJlZ2lzdGVyKCkKPiA+IC0gcm9j a2NoaXBfZHJtX3Bzcl9lbmFibGUoKQo+ID4gLSByb2NrY2hpcF9kcm1fcHNyX2Rpc2FibGUoKQo+ ID4gLSByb2NrY2hpcF9kcm1fcHNyX2ZsdXNoKCkKPiA+Cj4gPiBFbmNvZGVyIGRyaXZlciBzaG91 bGQgY2FsbCB0aGUgcmVnaXN0ZXIvdW5yZWdpc3RlciBpbnRlcmZhY2VzIHRvIGhvb2sKPiA+IGl0 c2VsZiBpbnRvIGNvbW1vbiBQU1IgZHJpdmVyLCBlbmNvZGVyIGhhdmUgaW1wbGVtZW50IHRoZSAn cHNyX3NldCcKPiA+IGNhbGxiYWNrIHdoaWNoIHVzZSB0aGUgc2V0IFBTUiBzdGF0ZSBpbiBoYXJk d2FyZSBzaWRlLgo+ID4KPiA+IENydGMgZHJpdmVyIHdvdWxkIGNhbGwgdGhlIGVuYWJsZS9kaXNh YmxlIGludGVyZmFjZXMgd2hlbiB2YmxhbmsgaXMKPiA+IGVuYWJsZS9kaXNhYmxlLCBhZnRlciB0 aGF0IHRoZSBjb21tb24gUFNSIGRyaXZlciB3b3VsZCBjYWxsIHRoZSBlbmNvZGVyCj4gPiByZWdp c3RlcmVkIGNhbGxiYWNrIHRvIHNldCB0aGUgUFNSIHN0YXRlLgo+ID4KPiAKPiBUaGlzIGZlZWxz IG92ZXJseSBjb21wbGljYXRlZC4gSXQgc2VlbXMgbGlrZSB5b3UgY291bGQgY3V0IG91dCBhIGJ1 bmNoCj4gb2YgY29kZSBieSBqdXN0IGNvZGluZyB0aGUgcHNyIGZ1bmN0aW9ucyBpbnRvIHZvcCBh bmQKPiBhbmFsb2dpeF9kcC1yb2NrY2hpcC4gSSBzdXBwb3NlIHRoZSBvbmx5IHJlYXNvbiB0byBr ZWVwIGl0IGFic3RyYWN0ZWQKPiB3b3VsZCBiZSBpZiB5b3UgcGxhbiBvbiBzdXBwb3J0aW5nIHBz ciBpbiBhIGRpZmZlcmVudCBlbmNvZGVyIG9yIGNydGMKPiBpbiByb2NrY2hpcCwgb3IgaWYgeW91 J3JlIHBsYW5uaW5nIG9uIG1vdmluZyB0aGlzIGludG8gZHJtIGNvcmUuCgpBZ3JlZWQgb24gdGhl IGxheWVycyBvZiBpbmRpcmVjdGlvbi4gQWxzbywgeW91IGVuZCB1cCB3aXRoIDMgZGVsYXllZAp0 aW1lcnMgaW4gdG90YWw6Ci0gZGVmaW8gdGltZXIgZnJvbSBmYmRldiBlbXVsYXRpb24KLSB0aW1l ciBpbiB0aGlzIGFic3RyYWN0aW9uCi0gZGVsYXllZCB3b3JrIGluIHRoZSBwc3IgYmFja2VuZCBk cml2ZXIKCkknZCBjdXQgb3V0IGF0IGxlYXN0IHRoZSBtaWRkbGUgb25lLgoKQnV0IHNpbmNlIHRo aXMgc2VlbXMgdG8gY29ycmVjdGx5IHVzZSB0aGUgLT5kaXJ0eSBjYWxsYmFjayBpdCBnZXRzIG15 IEFjawplaXRoZXIgd2F5IDstKQoKQ2hlZXJzLCBEYW5pZWwKCj4gCj4gUGVyaGFwcyBvdGhlcnMg d2lsbCBkaXNhZ3JlZSB3aXRoIHRoaXMgc2VudGltZW50IGFuZCB0aGlzIGlzIHRoZSByaWdodAo+ IHRoaW5nIHRvIGRvLgo+IAo+ID4gRmIgZHJpdmVyIHdvdWxkIGNhbGwgdGhlIGZsdXNoIGludGVy ZmFjZSBpbiAnZmItPmRpcnR5JyBjYWxsYmFjaywgdGhpcwo+ID4gaGVscGVyIGZ1bmN0aW9uIHdv dWxkIGZvcmNlIGFsbCBQU1IgZW5hYmxlZCBlbmNvZGVycyB0byBleGl0IGZyb20gUFNSCj4gPiBm b3IgMyBzZWNvbmRzLgo+ID4KPiA+IFNpZ25lZC1vZmYtYnk6IFlha2lyIFlhbmcgPHlra0Byb2Nr LWNoaXBzLmNvbT4KPiA+IC0tLQo+ID4gQ2hhbmdlcyBpbiB2MzoKPiA+IC0gc3BsaXQgdGhlIHBz ciBmbG93IGludG8gYW4gY29tbW9uIGFic3RyYWN0ZWQgUFNSIGRyaXZlcgo+ID4gLSBpbXBsZW1l bnQgdGhlICdmYi0+ZGlydHknIGNhbGxiYWNrIGZ1bmN0aW9uIChEYW5pZWwpCj4gPiAtIGF2b2lk IHRvIHVzZSBub3RpZnkgdG8gYWNxaXVyZSBmb3IgdmFjdCBldmVudCAoRGFuaWVsKQo+ID4gLSBy ZW1vdmUgcHNyX2FjdGl2ZSgpIGNhbGxiYWNrIHdoaWNoIGludHJvZHVjZSBpbiB2Mgo+ID4KPiA+ IENoYW5nZXMgaW4gdjI6IE5vbmUKPiA+Cj4gPiAgZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL01h a2VmaWxlICAgICAgICAgICB8ICAgMiArLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9y b2NrY2hpcF9kcm1fZmIuYyAgfCAgMTIgKysKPiA+ICBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAv cm9ja2NoaXBfZHJtX3Bzci5jIHwgMjAwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ ICBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3Bzci5oIHwgIDEyICsrCj4g PiAgZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuYyB8ICAyNCArKysr Cj4gPiAgNSBmaWxlcyBjaGFuZ2VkLCAyNDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBf ZHJtX3Bzci5jCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hp cC9yb2NrY2hpcF9kcm1fcHNyLmgKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3JvY2tjaGlwL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL01ha2VmaWxlCj4g PiBpbmRleCAwNWQwNzEzLi45NzQ2MzY1IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L3JvY2tjaGlwL01ha2VmaWxlCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvTWFr ZWZpbGUKPiA+IEBAIC0zLDcgKzMsNyBAQAo+ID4gICMgRGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0 cnVjdHVyZSAoRFJJKSBpbiBYRnJlZTg2IDQuMS4wIGFuZCBoaWdoZXIuCj4gPgo+ID4gIHJvY2tj aGlwZHJtLXkgOj0gcm9ja2NoaXBfZHJtX2Rydi5vIHJvY2tjaGlwX2RybV9mYi5vIFwKPiA+IC0g ICAgICAgICAgICAgICByb2NrY2hpcF9kcm1fZ2VtLm8gcm9ja2NoaXBfZHJtX3ZvcC5vCj4gPiAr ICAgICAgICAgICAgICAgcm9ja2NoaXBfZHJtX2dlbS5vIHJvY2tjaGlwX2RybV9wc3IubyByb2Nr Y2hpcF9kcm1fdm9wLm8KPiA+ICByb2NrY2hpcGRybS0kKENPTkZJR19EUk1fRkJERVZfRU1VTEFU SU9OKSArPSByb2NrY2hpcF9kcm1fZmJkZXYubwo+ID4KPiA+ICBvYmotJChDT05GSUdfUk9DS0NI SVBfQU5BTE9HSVhfRFApICs9IGFuYWxvZ2l4X2RwLXJvY2tjaGlwLm8KPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2ZiLmMgYi9kcml2ZXJzL2dw dS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2ZiLmMKPiA+IGluZGV4IDIwZjEyYmMuLjBmZWMx OGYgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJt X2ZiLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZmIu Ywo+ID4gQEAgLTIxLDYgKzIxLDcgQEAKPiA+Cj4gPiAgI2luY2x1ZGUgInJvY2tjaGlwX2RybV9k cnYuaCIKPiA+ICAjaW5jbHVkZSAicm9ja2NoaXBfZHJtX2dlbS5oIgo+ID4gKyNpbmNsdWRlICJy b2NrY2hpcF9kcm1fcHNyLmgiCj4gPgo+ID4gICNkZWZpbmUgdG9fcm9ja2NoaXBfZmIoeCkgY29u dGFpbmVyX29mKHgsIHN0cnVjdCByb2NrY2hpcF9kcm1fZmIsIGZiKQo+ID4KPiA+IEBAIC02Niw5 ICs2NywyMCBAQCBzdGF0aWMgaW50IHJvY2tjaGlwX2RybV9mYl9jcmVhdGVfaGFuZGxlKHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJvY2tjaGlwX2ZiLT5vYmpbMF0sIGhhbmRsZSk7Cj4gPiAgfQo+ID4KPiA+ICtzdGF0 aWMgaW50IHJvY2tjaGlwX2RybV9mYl9kaXJ0eShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwK PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmls ZSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmbGFn cywgdW5zaWduZWQgaW50IGNvbG9yLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGRybV9jbGlwX3JlY3QgKmNsaXBzLAo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50IG51bV9jbGlwcykKPiA+ICt7Cj4gPiArICAgICAgIHJv Y2tjaGlwX2RybV9wc3JfZmx1c2goKTsKPiA+ICsgICAgICAgcmV0dXJuIDA7Cj4gPiArfQo+ID4g Kwo+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzIHJvY2tjaGlw X2RybV9mYl9mdW5jcyA9IHsKPiA+ICAgICAgICAgLmRlc3Ryb3kgICAgICAgID0gcm9ja2NoaXBf ZHJtX2ZiX2Rlc3Ryb3ksCj4gPiAgICAgICAgIC5jcmVhdGVfaGFuZGxlICA9IHJvY2tjaGlwX2Ry bV9mYl9jcmVhdGVfaGFuZGxlLAo+ID4gKyAgICAgICAuZGlydHkgICAgICAgICAgPSByb2NrY2hp cF9kcm1fZmJfZGlydHksCj4gPiAgfTsKPiA+Cj4gPiAgc3RhdGljIHN0cnVjdCByb2NrY2hpcF9k cm1fZmIgKgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hp cF9kcm1fcHNyLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3Bzci5j Cj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMC4uYzA0NDQ0Mwo+ID4g LS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlw X2RybV9wc3IuYwo+ID4gQEAgLTAsMCArMSwyMDAgQEAKPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9j cnRjX2hlbHBlci5oPgo+ID4gKwo+ID4gKyNpbmNsdWRlICJyb2NrY2hpcF9kcm1fcHNyLmgiCj4g PiArCj4gPiArI2RlZmluZSBQU1JfRkxVU0hfVElNRU9VVCAgICAgIG1zZWNzX3RvX2ppZmZpZXMo MzAwMCkgLyogMyBzZWNvbmRzICovCj4gPiArCj4gPiArc3RhdGljIExJU1RfSEVBRChwc3JfbGlz dCk7Cj4gPiArc3RhdGljIERFRklORV9NVVRFWChwc3JfbGlzdF9tdXRleCk7Cj4gCj4gSSdtIG5v dCBjcmF6eSBhYm91dCB0aGVzZSBnbG9iYWxzLiBQZXJoYXBzIHlvdSBjYW4gaW5pdGlhbGl6ZSB0 aGVtCj4gd2l0aCB0aGUgcm9ja2NoaXAgZHJpdmVyIGFuZCB0dWNrIHRoZW0gaW4gYSBkcml2ZXIt bGV2ZWwgc3RydWN0Cj4gKHJvY2tjaGlwX2RybV9wcml2YXRlIG9yIHNvbWV0aGluZykuCj4gCj4g Cj4gPiArCj4gPiArZW51bSBwc3Jfc3RhdGUgewo+ID4gKyAgICAgICBQU1JfRkxVU0gsCj4gPiAr ICAgICAgIFBTUl9FTkFCTEUsCj4gPiArICAgICAgIFBTUl9ESVNBQkxFLAo+ID4gK307Cj4gPiAr Cj4gPiArc3RydWN0IHBzcl9kcnYgewo+ID4gKyAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7 Cj4gPiArICAgICAgIGVudW0gcHNyX3N0YXRlIHN0YXRlOwo+ID4gKyAgICAgICBzdHJ1Y3QgbXV0 ZXggc3RhdGVfbXV0ZXg7Cj4gPiArCj4gPiArICAgICAgIHN0cnVjdCB0aW1lcl9saXN0IGZsdXNo X3RpbWVyOwo+ID4gKwo+ID4gKyAgICAgICBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7Cj4g PiArICAgICAgIGludCAoKnNldCkoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLCBib29sIGVu YWJsZSk7Cj4gPiArfTsKPiA+ICsKPiA+ICtzdGF0aWMgc3RydWN0IHBzcl9kcnYgKmZpbmRfcHNy X2J5X2NydGMoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ID4gK3sKPiA+ICsgICAgICAgc3RydWN0 IHBzcl9kcnYgKnBzcjsKPiA+ICsKPiA+ICsgICAgICAgbXV0ZXhfbG9jaygmcHNyX2xpc3RfbXV0 ZXgpOwo+ID4gKyAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KHBzciwgJnBzcl9saXN0LCBsaXN0 KSB7Cj4gPiArICAgICAgICAgICAgICAgaWYgKHBzci0+ZW5jb2Rlci0+Y3J0YyA9PSBjcnRjKSB7 Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBtdXRleF91bmxvY2soJnBzcl9saXN0X211dGV4 KTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwc3I7Cj4gPiArICAgICAgICAg ICAgICAgfQo+ID4gKyAgICAgICB9Cj4gPiArICAgICAgIG11dGV4X3VubG9jaygmcHNyX2xpc3Rf bXV0ZXgpOwo+ID4gKwo+ID4gKyAgICAgICByZXR1cm4gRVJSX1BUUigtRU5PREVWKTsKPiA+ICt9 Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgcHNyX2VuYWJsZShzdHJ1Y3QgcHNyX2RydiAqcHNyKQo+ ID4gK3sKPiA+ICsgICAgICAgaWYgKHBzci0+c3RhdGUgPT0gUFNSX0VOQUJMRSkKPiA+ICsgICAg ICAgICAgICAgICByZXR1cm47Cj4gCj4gU2hvdWxkIHlvdSBiZSB3b3JyaWVkIGFib3V0IHJhY2Vz IGJ5IGFjY2Vzc2luZyB0aGlzIG91dHNpZGUgb2YgdGhlIHN0YXRlIG11dGV4Pwo+IAo+ID4gKwo+ ID4gKyAgICAgICBtdXRleF9sb2NrKCZwc3ItPnN0YXRlX211dGV4KTsKPiA+ICsgICAgICAgcHNy LT5zdGF0ZSA9IFBTUl9FTkFCTEU7Cj4gPiArICAgICAgIHBzci0+c2V0KHBzci0+ZW5jb2Rlciwg dHJ1ZSk7Cj4gPiArICAgICAgIG11dGV4X3VubG9jaygmcHNyLT5zdGF0ZV9tdXRleCk7Cj4gPiAr fQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIHBzcl9kaXNhYmxlKHN0cnVjdCBwc3JfZHJ2ICpwc3Ip Cj4gPiArewo+ID4gKyAgICAgICBpZiAocHNyLT5zdGF0ZSA9PSBQU1JfRElTQUJMRSkKPiA+ICsg ICAgICAgICAgICAgICByZXR1cm47Cj4gPiArCj4gPiArICAgICAgIG11dGV4X2xvY2soJnBzci0+ c3RhdGVfbXV0ZXgpOwo+ID4gKyAgICAgICBwc3ItPnN0YXRlID0gUFNSX0RJU0FCTEU7Cj4gPiAr ICAgICAgIHBzci0+c2V0KHBzci0+ZW5jb2RlciwgZmFsc2UpOwo+ID4gKyAgICAgICBtdXRleF91 bmxvY2soJnBzci0+c3RhdGVfbXV0ZXgpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBw c3JfZmx1c2hfaGFuZGxlcih1bnNpZ25lZCBsb25nIGRhdGEpCj4gPiArewo+ID4gKyAgICAgICBz dHJ1Y3QgcHNyX2RydiAqcHNyID0gKHN0cnVjdCBwc3JfZHJ2ICopZGF0YTsKPiA+ICsKPiA+ICsg ICAgICAgaWYgKCFwc3IgfHwgcHNyLT5zdGF0ZSAhPSBQU1JfRkxVU0gpCj4gPiArICAgICAgICAg ICAgICAgcmV0dXJuOwo+ID4gKwo+ID4gKyAgICAgICBwc3JfZW5hYmxlKHBzcik7Cj4gPiArfQo+ ID4gKwo+ID4gKy8qKgo+ID4gKyAqIHJvY2tjaGlwX2RybV9wc3JfZW5hYmxlIC0gZW5hYmxlIHRo ZSBlbmNvZGVyIFBTUiB3aGljaCBiaW5kIHRvIGdpdmVuIENSVEMKPiA+ICsgKiBAY3J0YzogQ1JU QyB0byBvYnRhaW4gdGhlIFBTUiBlbmNvZGVyCj4gPiArICoKPiA+ICsgKiBSZXR1cm5zOgo+ID4g KyAqIFplcm8gb24gc3VjY2VzcywgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS4KPiA+ICsgKi8K PiA+ICtpbnQgcm9ja2NoaXBfZHJtX3Bzcl9lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ ID4gK3sKPiA+ICsgICAgICAgc3RydWN0IHBzcl9kcnYgKnBzciA9IGZpbmRfcHNyX2J5X2NydGMo Y3J0Yyk7Cj4gPiArCj4gPiArICAgICAgIGlmIChJU19FUlIocHNyKSkKPiA+ICsgICAgICAgICAg ICAgICByZXR1cm4gUFRSX0VSUihwc3IpOwo+ID4gKwo+ID4gKyAgICAgICBwc3JfZW5hYmxlKHBz cik7Cj4gPiArICAgICAgIHJldHVybiAwOwo+ID4gK30KPiA+ICtFWFBPUlRfU1lNQk9MKHJvY2tj aGlwX2RybV9wc3JfZW5hYmxlKTsKPiA+ICsKPiA+ICsvKioKPiA+ICsgKiByb2NrY2hpcF9kcm1f cHNyX2Rpc2FibGUgLSBkaXNhYmxlIHRoZSBlbmNvZGVyIFBTUiB3aGljaCBiaW5kIHRvIGdpdmVu IENSVEMKPiA+ICsgKiBAY3J0YzogQ1JUQyB0byBvYnRhaW4gdGhlIFBTUiBlbmNvZGVyCj4gPiAr ICoKPiA+ICsgKiBSZXR1cm5zOgo+ID4gKyAqIFplcm8gb24gc3VjY2VzcywgbmVnYXRpdmUgZXJy bm8gb24gZmFpbHVyZS4KPiA+ICsgKi8KPiA+ICtpbnQgcm9ja2NoaXBfZHJtX3Bzcl9kaXNhYmxl KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiA+ICt7Cj4gPiArICAgICAgIHN0cnVjdCBwc3JfZHJ2 ICpwc3IgPSBmaW5kX3Bzcl9ieV9jcnRjKGNydGMpOwo+ID4gKwo+ID4gKyAgICAgICBpZiAoSVNf RVJSKHBzcikpCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIocHNyKTsKPiA+ICsK PiA+ICsgICAgICAgcHNyX2Rpc2FibGUocHNyKTsKPiA+ICsgICAgICAgcmV0dXJuIDA7Cj4gPiAr fQo+ID4gK0VYUE9SVF9TWU1CT0wocm9ja2NoaXBfZHJtX3Bzcl9kaXNhYmxlKTsKPiA+ICsKPiA+ ICsvKioKPiA+ICsgKiByb2NrY2hpcF9kcm1fcHNyX2ZsdXNoIC0gZm9yY2UgdG8gZmx1c2ggYWxs IHJlZ2lzdGVyZWQgUFNSIGVuY29kZXJzCj4gPiArICoKPiA+ICsgKiBEaXNhYmxlIHRoZSBQU1Ig ZnVuY3Rpb24gZm9yIGFsbCByZWdpc3RlcmVkIGVuY29kZXJzLCBhbmQgdGhlbiBlbmFibGUgdGhl Cj4gPiArICogUFNSIGZ1bmN0aW9uIGJhY2sgYWZ0ZXIgNSBzZWNvbmQuIElmIGVuY29kZXIgUFNS IHN0YXRlIGhhdmUgYmVlbiBjaGFuZ2VkCj4gCj4gcy81IHNlY29uZC9QU1JfRkxVU0hfVElNRU9V VC8KPiAKPiA+ICsgKiBkdXJpbmcgZmx1c2ggdGltZSwgdGhlbiBrZWVwIHRoZSBzdGF0ZSBubyBj aGFuZ2UgYWZ0ZXIgZmx1c2ggdGltZW91dC4KPiA+ICsgKgo+ID4gKyAqIFJldHVybnM6Cj4gPiAr ICogWmVybyBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJubyBvbiBmYWlsdXJlLgo+ID4gKyAqLwo+ ID4gK3ZvaWQgcm9ja2NoaXBfZHJtX3Bzcl9mbHVzaCh2b2lkKQo+ID4gK3sKPiA+ICsgICAgICAg c3RydWN0IHBzcl9kcnYgKnBzcjsKPiA+ICsKPiA+ICsgICAgICAgbXV0ZXhfbG9jaygmcHNyX2xp c3RfbXV0ZXgpOwo+ID4gKyAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KHBzciwgJnBzcl9saXN0 LCBsaXN0KSB7Cj4gPiArICAgICAgICAgICAgICAgaWYgKHBzci0+c3RhdGUgPT0gUFNSX0RJU0FC TEUpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+ICsKPiA+ICsgICAg ICAgICAgICAgICBtb2RfdGltZXIoJnBzci0+Zmx1c2hfdGltZXIsCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgIHJvdW5kX2ppZmZpZXNfdXAoamlmZmllcyArIFBTUl9GTFVTSF9USU1FT1VU KSk7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgcHNyX2Rpc2FibGUocHNyKTsKPiA+ICsgICAg ICAgICAgICAgICBwc3ItPnN0YXRlID0gUFNSX0ZMVVNIOwo+IAo+IFRoaXMgaXMgc2V0IG91dHNp ZGUgb2Ygc3RhdGVfbXV0ZXgsIGlzIHRoYXQgaW50ZW50aW9uYWw/Cj4gCj4gPiArICAgICAgIH0K PiA+ICsgICAgICAgbXV0ZXhfdW5sb2NrKCZwc3JfbGlzdF9tdXRleCk7Cj4gPiArfQo+ID4gK0VY UE9SVF9TWU1CT0wocm9ja2NoaXBfZHJtX3Bzcl9mbHVzaCk7Cj4gPiArCj4gPiArLyoqCj4gPiAr ICogcm9ja2NoaXBfZHJtX3Bzcl9yZWdpc3RlciAtIHJlZ2lzdGVyIGVuY29kZXIgdG8gcHNyIGRy aXZlcgo+ID4gKyAqIEBlbmNvZGVyOiBlbmNvZGVyIHRoYXQgb2J0YWluIHRoZSBQU1IgZnVuY3Rp b24KPiA+ICsgKiBAcHNyX3NldDogY2FsbCBiYWNrIHRvIHNldCBQU1Igc3RhdGUKPiA+ICsgKgo+ ID4gKyAqIFJldHVybnM6Cj4gPiArICogWmVybyBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJubyBv biBmYWlsdXJlLgo+ID4gKyAqLwo+ID4gK2ludCByb2NrY2hpcF9kcm1fcHNyX3JlZ2lzdGVyKHN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludCAoKnBzcl9zZXQpKHN0cnVjdCBkcm1fZW5jb2RlciAqLCBib29sIGVuYWJsZSkpCj4g PiArewo+ID4gKyAgICAgICBzdHJ1Y3QgcHNyX2RydiAqcHNyOwo+ID4gKwo+ID4gKyAgICAgICBp ZiAoIWVuY29kZXIgfHwgIXBzcl9zZXQpCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5W QUw7Cj4gPiArCj4gPiArICAgICAgIHBzciA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBwc3JfZHJ2 KSwgR0ZQX0tFUk5FTCk7Cj4gPiArICAgICAgIGlmICghcHNyKQo+ID4gKyAgICAgICAgICAgICAg IHJldHVybiAtRU5PTUVNOwo+ID4gKwo+ID4gKyAgICAgICBzZXR1cF90aW1lcigmcHNyLT5mbHVz aF90aW1lciwgcHNyX2ZsdXNoX2hhbmRsZXIsICh1bnNpZ25lZCBsb25nKXBzcik7Cj4gPiArCj4g PiArICAgICAgIG11dGV4X2luaXQoJnBzci0+c3RhdGVfbXV0ZXgpOwo+ID4gKwo+ID4gKyAgICAg ICBwc3ItPnN0YXRlID0gUFNSX0RJU0FCTEU7Cj4gPiArICAgICAgIHBzci0+ZW5jb2RlciA9IGVu Y29kZXI7Cj4gPiArICAgICAgIHBzci0+c2V0ID0gcHNyX3NldDsKPiA+ICsKPiA+ICsgICAgICAg bXV0ZXhfbG9jaygmcHNyX2xpc3RfbXV0ZXgpOwo+ID4gKyAgICAgICBsaXN0X2FkZF90YWlsKCZw c3ItPmxpc3QsICZwc3JfbGlzdCk7Cj4gPiArICAgICAgIG11dGV4X3VubG9jaygmcHNyX2xpc3Rf bXV0ZXgpOwo+ID4gKwo+ID4gKyAgICAgICByZXR1cm4gMDsKPiA+ICt9Cj4gPiArRVhQT1JUX1NZ TUJPTChyb2NrY2hpcF9kcm1fcHNyX3JlZ2lzdGVyKTsKPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBy b2NrY2hpcF9kcm1fcHNyX3VucmVnaXN0ZXIgLSB1bnJlZ2lzdGVyIGVuY29kZXIgdG8gcHNyIGRy aXZlcgo+ID4gKyAqIEBlbmNvZGVyOiBlbmNvZGVyIHRoYXQgb2J0YWluIHRoZSBQU1IgZnVuY3Rp b24KPiA+ICsgKiBAcHNyX3NldDogY2FsbCBiYWNrIHRvIHNldCBQU1Igc3RhdGUKPiA+ICsgKgo+ ID4gKyAqIFJldHVybnM6Cj4gPiArICogWmVybyBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJubyBv biBmYWlsdXJlLgo+ID4gKyAqLwo+ID4gK3ZvaWQgcm9ja2NoaXBfZHJtX3Bzcl91bnJlZ2lzdGVy KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKPiA+ICt7Cj4gPiArICAgICAgIHN0cnVjdCBw c3JfZHJ2ICpwc3I7Cj4gPiArCj4gPiArICAgICAgIG11dGV4X2xvY2soJnBzcl9saXN0X211dGV4 KTsKPiA+ICsgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShwc3IsICZwc3JfbGlzdCwgbGlzdCkg ewo+ID4gKyAgICAgICAgICAgICAgIGlmIChwc3ItPmVuY29kZXIgPT0gZW5jb2Rlcikgewo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgZGVsX3RpbWVyKCZwc3ItPmZsdXNoX3RpbWVyKTsKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfZGVsKCZwc3ItPmxpc3QpOwo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAga2ZyZWUocHNyKTsKPiA+ICsgICAgICAgICAgICAgICB9Cj4gPiAr ICAgICAgIH0KPiA+ICsgICAgICAgbXV0ZXhfdW5sb2NrKCZwc3JfbGlzdF9tdXRleCk7Cj4gPiAr fQo+ID4gK0VYUE9SVF9TWU1CT0wocm9ja2NoaXBfZHJtX3Bzcl91bnJlZ2lzdGVyKTsKPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3Bzci5oIGIv ZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9wc3IuaAo+ID4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAuLjYyMmY2MDUKPiA+IC0tLSAvZGV2L251bGwK PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fcHNyLmgKPiA+ IEBAIC0wLDAgKzEsMTIgQEAKPiA+ICsjaWZuZGVmIF9fUk9DS0NISVBfRFJNX1BTUl9fXwo+ID4g KyNkZWZpbmUgX19ST0NLQ0hJUF9EUk1fUFNSX19fCj4gPiArCj4gPiArdm9pZCByb2NrY2hpcF9k cm1fcHNyX2ZsdXNoKHZvaWQpOwo+ID4gK2ludCByb2NrY2hpcF9kcm1fcHNyX2VuYWJsZShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpOwo+ID4gK2ludCByb2NrY2hpcF9kcm1fcHNyX2Rpc2FibGUoc3Ry dWN0IGRybV9jcnRjICpjcnRjKTsKPiA+ICsKPiA+ICtpbnQgcm9ja2NoaXBfZHJtX3Bzcl9yZWdp c3RlcihzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50ICgqcHNyX3NldCkoc3RydWN0IGRybV9lbmNvZGVyICosIGJvb2wgZW5hYmxl KSk7Cj4gPiArdm9pZCByb2NrY2hpcF9kcm1fcHNyX3VucmVnaXN0ZXIoc3RydWN0IGRybV9lbmNv ZGVyICplbmNvZGVyKTsKPiA+ICsKPiA+ICsjZW5kaWYgLyogX19ST0NLQ0hJUF9EUk1fUFNSX18g Ki8KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJt X3ZvcC5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuYwo+ID4g aW5kZXggY2QzY2FjNS4uM2M2ZGZjNSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9y b2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2Nr Y2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMKPiA+IEBAIC0zNCw2ICszNCw3IEBACj4gPiAgI2luY2x1 ZGUgInJvY2tjaGlwX2RybV9kcnYuaCIKPiA+ICAjaW5jbHVkZSAicm9ja2NoaXBfZHJtX2dlbS5o Igo+ID4gICNpbmNsdWRlICJyb2NrY2hpcF9kcm1fZmIuaCIKPiA+ICsjaW5jbHVkZSAicm9ja2No aXBfZHJtX3Bzci5oIgo+ID4gICNpbmNsdWRlICJyb2NrY2hpcF9kcm1fdm9wLmgiCj4gPgo+ID4g ICNkZWZpbmUgX19SRUdfU0VUX1JFTEFYRUQoeCwgb2ZmLCBtYXNrLCBzaGlmdCwgdiwgd3JpdGVf bWFzaykgXAo+ID4gQEAgLTEyMSw2ICsxMjIsOSBAQCBzdHJ1Y3Qgdm9wIHsKPiA+ICAgICAgICAg LyogcHJvdGVjdGVkIGJ5IGRldi0+ZXZlbnRfbG9jayAqLwo+ID4gICAgICAgICBzdHJ1Y3QgZHJt X3BlbmRpbmdfdmJsYW5rX2V2ZW50ICpldmVudDsKPiA+Cj4gPiArICAgICAgIGJvb2wgcHNyX2Vu YWJsZWQ7Cj4gPiArICAgICAgIHN0cnVjdCBkZWxheWVkX3dvcmsgcHNyX3dvcms7Cj4gPiArCj4g PiAgICAgICAgIHN0cnVjdCBjb21wbGV0aW9uIGxpbmVfZmxhZ19jb21wbGV0aW9uOwo+ID4KPiA+ ICAgICAgICAgY29uc3Qgc3RydWN0IHZvcF9kYXRhICpkYXRhOwo+ID4gQEAgLTkxMSw2ICs5MTUs MTYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3Mgdm9wX3BsYW5lX2Z1bmNz ID0gewo+ID4gICAgICAgICAuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSB2b3BfYXRvbWljX3BsYW5l X2Rlc3Ryb3lfc3RhdGUsCj4gPiAgfTsKPiA+Cj4gPiArc3RhdGljIHZvaWQgdm9wX3Bzcl93b3Jr KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiA+ICt7Cj4gPiArICAgICAgIHN0cnVjdCB2b3Ag KnZvcCA9IGNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKnZvcCksIHBzcl93b3JrLndvcmspOwo+ ID4gKwo+ID4gKyAgICAgICBpZiAodm9wLT5wc3JfZW5hYmxlZCkKPiA+ICsgICAgICAgICAgICAg ICByb2NrY2hpcF9kcm1fcHNyX2VuYWJsZSgmdm9wLT5jcnRjKTsKPiA+ICsgICAgICAgZWxzZQo+ ID4gKyAgICAgICAgICAgICAgIHJvY2tjaGlwX2RybV9wc3JfZGlzYWJsZSgmdm9wLT5jcnRjKTsK PiA+ICt9Cj4gPiArCj4gPiAgc3RhdGljIGludCB2b3BfY3J0Y19lbmFibGVfdmJsYW5rKHN0cnVj dCBkcm1fY3J0YyAqY3J0YykKPiA+ICB7Cj4gPiAgICAgICAgIHN0cnVjdCB2b3AgKnZvcCA9IHRv X3ZvcChjcnRjKTsKPiA+IEBAIC05MjUsNiArOTM5LDkgQEAgc3RhdGljIGludCB2b3BfY3J0Y19l bmFibGVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiA+Cj4gPiAgICAgICAgIHNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJnZvcC0+aXJxX2xvY2ssIGZsYWdzKTsKPiA+Cj4gPiArICAgICAg IHZvcC0+cHNyX2VuYWJsZWQgPSBmYWxzZTsKPiA+ICsgICAgICAgc2NoZWR1bGVfZGVsYXllZF93 b3JrKCZ2b3AtPnBzcl93b3JrLCBtc2Vjc190b19qaWZmaWVzKDEwKSk7Cj4gPiArCj4gPiAgICAg ICAgIHJldHVybiAwOwo+ID4gIH0KPiA+Cj4gPiBAQCAtOTQxLDYgKzk1OCw5IEBAIHN0YXRpYyB2 b2lkIHZvcF9jcnRjX2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiA+ICAg ICAgICAgVk9QX0lOVFJfU0VUX1RZUEUodm9wLCBlbmFibGUsIEZTX0lOVFIsIDApOwo+ID4KPiA+ ICAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdm9wLT5pcnFfbG9jaywgZmxhZ3MpOwo+ ID4gKwo+ID4gKyAgICAgICB2b3AtPnBzcl9lbmFibGVkID0gdHJ1ZTsKPiA+ICsgICAgICAgc2No ZWR1bGVfZGVsYXllZF93b3JrKCZ2b3AtPnBzcl93b3JrLCBtc2Vjc190b19qaWZmaWVzKDEwKSk7 Cj4gPiAgfQo+ID4KPiA+ICBzdGF0aWMgdm9pZCB2b3BfY3J0Y193YWl0X2Zvcl91cGRhdGUoc3Ry dWN0IGRybV9jcnRjICpjcnRjKQo+ID4gQEAgLTE1ODIsNiArMTYwMiwxMCBAQCBzdGF0aWMgaW50 IHZvcF9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLCB2b2lk ICpkYXRhKQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPgo+ID4gICAgICAgICBw bV9ydW50aW1lX2VuYWJsZSgmcGRldi0+ZGV2KTsKPiA+ICsKPiA+ICsgICAgICAgdm9wLT5wc3Jf ZW5hYmxlZCA9IGZhbHNlOwo+ID4gKyAgICAgICBJTklUX0RFTEFZRURfV09SSygmdm9wLT5wc3Jf d29yaywgdm9wX3Bzcl93b3JrKTsKPiA+ICsKPiA+ICAgICAgICAgcmV0dXJuIDA7Cj4gPiAgfQo+ ID4KPiA+IC0tCj4gPiAxLjkuMQo+ID4KPiA+CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBF bmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcg bGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==