From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2 1/5] drm: Add helpers to kick off self refresh mode in drivers Date: Wed, 27 Mar 2019 19:15:00 +0100 Message-ID: <20190327181500.GP2665@phenom.ffwll.local> References: <20190326204509.96515-1-sean@poorly.run> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by gabe.freedesktop.org (Postfix) with ESMTPS id 83A4988FD4 for ; Wed, 27 Mar 2019 18:15:05 +0000 (UTC) Received: by mail-ed1-x543.google.com with SMTP id s16so5623227edr.3 for ; Wed, 27 Mar 2019 11:15:05 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20190326204509.96515-1-sean@poorly.run> 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: Zain Wang , David Airlie , Jose Souza , Tomasz Figa , Maxime Ripard , Sean Paul , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBNYXIgMjYsIDIwMTkgYXQgMDQ6NDQ6NTRQTSAtMDQwMCwgU2VhbiBQYXVsIHdyb3Rl Ogo+IEZyb206IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgo+IAo+IFRoaXMgcGF0 Y2ggYWRkcyBhIG5ldyBkcm0gaGVscGVyIGxpYnJhcnkgdG8gaGVscCBkcml2ZXJzIGltcGxlbWVu dAo+IHNlbGYgcmVmcmVzaC4gRHJpdmVycyBjaG9vc2luZyB0byB1c2UgaXQgd2lsbCByZWdpc3Rl ciBjcnRjcyBhbmQKPiB3aWxsIHJlY2VpdmUgY2FsbGJhY2tzIHdoZW4gaXQncyB0aW1lIHRvIGVu dGVyIG9yIGV4aXQgc2VsZiByZWZyZXNoCj4gbW9kZS4KPiAKPiBJbiBpdHMgY3VycmVudCBmb3Jt LCBpdCBoYXMgYSB0aW1lciB3aGljaCB3aWxsIHRyaWdnZXIgYWZ0ZXIgYQo+IGRyaXZlci1zcGVj aWZpZWQgYW1vdW50IG9mIGluYWN0aXZpdHkuIFdoZW4gdGhlIHRpbWVyIHRyaWdnZXJzLCB0aGUK PiBoZWxwZXJzIHdpbGwgc3VibWl0IGEgbmV3IGF0b21pYyBjb21taXQgdG8gc2h1dCB0aGUgcmVm cmVzaGluZyBwaXBlCj4gb2ZmLiBPbiB0aGUgbmV4dCBhdG9taWMgY29tbWl0LCB0aGUgZHJtIGNv cmUgd2lsbCByZXZlcnQgdGhlIHNlbGYKPiByZWZyZXNoIHN0YXRlIGFuZCBicmluZyBldmVyeXRo aW5nIGJhY2sgdXAgdG8gYmUgYWN0aXZlbHkgZHJpdmVuLgo+IAo+IEZyb20gdGhlIGRyaXZlcidz IHBlcnNwZWN0aXZlLCB0aGlzIHdvcmtzIGxpa2UgYSByZWd1bGFyIGRpc2FibGUvZW5hYmxlCj4g Y3ljbGUuIFRoZSBkcml2ZXIgbmVlZCBvbmx5IGNoZWNrIHRoZSAnc2VsZl9yZWZyZXNoX2FjdGl2 ZScgYW5kL29yCj4gJ3NlbGZfcmVmcmVzaF9jaGFuZ2VkJyBzdGF0ZSBpbiBjcnRjX3N0YXRlIGFu ZCBjb25uZWN0b3Jfc3RhdGUuIEl0Cj4gc2hvdWxkIGluaXRpYXRlIHNlbGYgcmVmcmVzaCBtb2Rl IG9uIHRoZSBwYW5lbCBhbmQgZW50ZXIgYW4gb2ZmIG9yCj4gbG93LXBvd2VyIHN0YXRlLgo+IAo+ IENoYW5nZXMgaW4gdjI6Cj4gLSBzL3Bzci9zZWxmX3JlZnJlc2gvIChEYW5pZWwpCj4gLSBpbnRl Z3JhdGVkIHRoZSBwc3IgZXhpdCBpbnRvIHRoZSBjb21taXQgdGhhdCB3YWtlcyBpdCB1cCAoSm9z ZS9EYW5pZWwpCj4gLSBtYWRlIHRoZSBwc3Igc3RhdGUgcGVyLWNydGMgKEpvc2UvRGFuaWVsKQo+ IAo+IExpbmsgdG8gdjE6IGh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC9t c2dpZC8yMDE5MDIyODIxMDkzOS44MzM4Ni0yLXNlYW5AcG9vcmx5LnJ1bgo+IAo+IENjOiBEYW5p ZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+Cj4gQ2M6IEpvc2UgU291emEgPGpvc2Uuc291emFA aW50ZWwuY29tPgo+IENjOiBaYWluIFdhbmcgPHd6ekByb2NrLWNoaXBzLmNvbT4KPiBDYzogVG9t YXN6IEZpZ2EgPHRmaWdhQGNocm9taXVtLm9yZz4KPiBTaWduZWQtb2ZmLWJ5OiBTZWFuIFBhdWwg PHNlYW5wYXVsQGNocm9taXVtLm9yZz4KPiAtLS0KPiAgRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWtt cy1oZWxwZXJzLnJzdCAgICAgfCAgIDkgKwo+ICBkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgICAg ICAgICAgICAgICAgICB8ICAgMyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jICAg ICAgICAgICAgICB8ICAgNCArCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5j ICAgICAgIHwgIDM2ICsrKy0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfc3RhdGVfaGVs cGVyLmMgfCAgIDggKwo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY191YXBpLmMgICAgICAg ICB8ICAgNSArLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXIuYyB8 IDIxMiArKysrKysrKysrKysrKysrKysrKysrCj4gIGluY2x1ZGUvZHJtL2RybV9hdG9taWMuaCAg ICAgICAgICAgICAgICAgIHwgIDE1ICsrCj4gIGluY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCAg ICAgICAgICAgICAgIHwgIDMxICsrKysKPiAgaW5jbHVkZS9kcm0vZHJtX2NydGMuaCAgICAgICAg ICAgICAgICAgICAgfCAgMTkgKysKPiAgaW5jbHVkZS9kcm0vZHJtX3NlbGZfcmVmcmVzaF9oZWxw ZXIuaCAgICAgfCAgMjMgKysrCj4gIDExIGZpbGVzIGNoYW5nZWQsIDM2MCBpbnNlcnRpb25zKCsp LCA1IGRlbGV0aW9ucygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2Ry bV9zZWxmX3JlZnJlc2hfaGVscGVyLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvZHJt L2RybV9zZWxmX3JlZnJlc2hfaGVscGVyLmgKPiAKPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlv bi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdCBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVs cGVycy5yc3QKPiBpbmRleCA1OGIzNzVlNDc2MTUuLmIwYjcxZjczODI5ZiAxMDA2NDQKPiAtLS0g YS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0Cj4gKysrIGIvRG9jdW1lbnRh dGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdAo+IEBAIC0xMDcsNiArMTA3LDE1IEBAIGZiZGV2 IEhlbHBlciBGdW5jdGlvbnMgUmVmZXJlbmNlCj4gIC4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dw dS9kcm0vZHJtX2ZiX2hlbHBlci5jCj4gICAgIDpleHBvcnQ6Cj4gIAo+ICtQYW5lbCBTZWxmIFJl ZnJlc2ggSGVscGVyIFJlZmVyZW5jZQo+ICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQo+ICsKPiArLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1fc2VsZl9yZWZy ZXNoX2hlbHBlci5jCj4gKyAgIDpkb2M6IG92ZXJ2aWV3Cj4gKwo+ICsuLiBrZXJuZWwtZG9jOjog ZHJpdmVycy9ncHUvZHJtL2RybV9zZWxmX3JlZnJlc2hfaGVscGVyLmMKPiArICAgOmV4cG9ydDoK PiArCj4gIEZyYW1lYnVmZmVyIENNQSBIZWxwZXIgRnVuY3Rpb25zIFJlZmVyZW5jZQo+ICA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPiAgCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+IGlu ZGV4IGU2MzBlY2NiOTUxYy4uNWIzYTFlMjZlYzk0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+IEBAIC0zOCw3 ICszOCw4IEBAIGRybV9rbXNfaGVscGVyLXkgOj0gZHJtX2NydGNfaGVscGVyLm8gZHJtX2RwX2hl bHBlci5vIGRybV9kc2MubyBkcm1fcHJvYmVfaGVscGVyCj4gIAkJZHJtX2ttc19oZWxwZXJfY29t bW9uLm8gZHJtX2RwX2R1YWxfbW9kZV9oZWxwZXIubyBcCj4gIAkJZHJtX3NpbXBsZV9rbXNfaGVs cGVyLm8gZHJtX21vZGVzZXRfaGVscGVyLm8gXAo+ICAJCWRybV9zY2RjX2hlbHBlci5vIGRybV9n ZW1fZnJhbWVidWZmZXJfaGVscGVyLm8gXAo+IC0JCWRybV9hdG9taWNfc3RhdGVfaGVscGVyLm8g ZHJtX2RhbWFnZV9oZWxwZXIubwo+ICsJCWRybV9hdG9taWNfc3RhdGVfaGVscGVyLm8gZHJtX2Rh bWFnZV9oZWxwZXIubyBcCj4gKwkJZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXIubwo+ICAKPiAgZHJt X2ttc19oZWxwZXItJChDT05GSUdfRFJNX1BBTkVMX0JSSURHRSkgKz0gYnJpZGdlL3BhbmVsLm8K PiAgZHJtX2ttc19oZWxwZXItJChDT05GSUdfRFJNX0ZCREVWX0VNVUxBVElPTikgKz0gZHJtX2Zi X2hlbHBlci5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gaW5kZXggNWViNDAxMzBmYWZiLi5hMDZmZTU1 YjVlYmYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiBAQCAtMzc5LDYgKzM3OSw3IEBAIHN0YXRp YyB2b2lkIGRybV9hdG9taWNfY3J0Y19wcmludF9zdGF0ZShzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAs Cj4gIAlkcm1fcHJpbnRmKHAsICJjcnRjWyV1XTogJXNcbiIsIGNydGMtPmJhc2UuaWQsIGNydGMt Pm5hbWUpOwo+ICAJZHJtX3ByaW50ZihwLCAiXHRlbmFibGU9JWRcbiIsIHN0YXRlLT5lbmFibGUp Owo+ICAJZHJtX3ByaW50ZihwLCAiXHRhY3RpdmU9JWRcbiIsIHN0YXRlLT5hY3RpdmUpOwo+ICsJ ZHJtX3ByaW50ZihwLCAiXHRzZWxmX3JlZnJlc2hfYWN0aXZlPSVkXG4iLCBzdGF0ZS0+c2VsZl9y ZWZyZXNoX2FjdGl2ZSk7Cj4gIAlkcm1fcHJpbnRmKHAsICJcdHBsYW5lc19jaGFuZ2VkPSVkXG4i LCBzdGF0ZS0+cGxhbmVzX2NoYW5nZWQpOwo+ICAJZHJtX3ByaW50ZihwLCAiXHRtb2RlX2NoYW5n ZWQ9JWRcbiIsIHN0YXRlLT5tb2RlX2NoYW5nZWQpOwo+ICAJZHJtX3ByaW50ZihwLCAiXHRhY3Rp dmVfY2hhbmdlZD0lZFxuIiwgc3RhdGUtPmFjdGl2ZV9jaGFuZ2VkKTsKPiBAQCAtODgxLDYgKzg4 Miw5IEBAIHN0YXRpYyB2b2lkIGRybV9hdG9taWNfY29ubmVjdG9yX3ByaW50X3N0YXRlKHN0cnVj dCBkcm1fcHJpbnRlciAqcCwKPiAgCj4gIAlkcm1fcHJpbnRmKHAsICJjb25uZWN0b3JbJXVdOiAl c1xuIiwgY29ubmVjdG9yLT5iYXNlLmlkLCBjb25uZWN0b3ItPm5hbWUpOwo+ICAJZHJtX3ByaW50 ZihwLCAiXHRjcnRjPSVzXG4iLCBzdGF0ZS0+Y3J0YyA/IHN0YXRlLT5jcnRjLT5uYW1lIDogIihu dWxsKSIpOwo+ICsJZHJtX3ByaW50ZihwLCAiXHRzZWxmX3JlZnJlc2hfYWN0aXZlPSVkXG4iLCBz dGF0ZS0+c2VsZl9yZWZyZXNoX2FjdGl2ZSk7Cj4gKwlkcm1fcHJpbnRmKHAsICJcdHNlbGZfcmVm cmVzaF9hd2FyZT0lZFxuIiwgc3RhdGUtPnNlbGZfcmVmcmVzaF9hd2FyZSk7Cj4gKwlkcm1fcHJp bnRmKHAsICJcdHNlbGZfcmVmcmVzaF9jaGFuZ2VkPSVkXG4iLCBzdGF0ZS0+c2VsZl9yZWZyZXNo X2NoYW5nZWQpOwo+ICAKPiAgCWlmIChjb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlID09IERSTV9N T0RFX0NPTk5FQ1RPUl9XUklURUJBQ0spCj4gIAkJaWYgKHN0YXRlLT53cml0ZWJhY2tfam9iICYm IHN0YXRlLT53cml0ZWJhY2tfam9iLT5mYikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2RybV9hdG9taWNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIu Ywo+IGluZGV4IDI0NTM2NzhkMTE4Ni4uYzY1OWRiMTA1MTMzIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9hdG9taWNfaGVscGVyLmMKPiBAQCAtMzAsNiArMzAsNyBAQAo+ICAjaW5jbHVkZSA8ZHJtL2Ry bV9hdG9taWNfdWFwaS5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9oZWxwZXIuaD4KPiAg I2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9z ZWxmX3JlZnJlc2hfaGVscGVyLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX3dyaXRlYmFjay5oPgo+ ICAjaW5jbHVkZSA8ZHJtL2RybV9kYW1hZ2VfaGVscGVyLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9k bWEtZmVuY2UuaD4KPiBAQCAtOTUwLDEwICs5NTEsMzMgQEAgaW50IGRybV9hdG9taWNfaGVscGVy X2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlpZiAoc3RhdGUtPmxlZ2FjeV9jdXJz b3JfdXBkYXRlKQo+ICAJCXN0YXRlLT5hc3luY191cGRhdGUgPSAhZHJtX2F0b21pY19oZWxwZXJf YXN5bmNfY2hlY2soZGV2LCBzdGF0ZSk7Cj4gIAo+ICsJZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXJf YWx0ZXJfc3RhdGUoc3RhdGUpOwo+ICsKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgRVhQT1JUX1NZ TUJPTChkcm1fYXRvbWljX2hlbHBlcl9jaGVjayk7Cj4gIAo+ICtzdGF0aWMgYm9vbAo+ICtjcnRj X25lZWRzX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfc3RhdGUsCj4gKwkJICAg c3RydWN0IGRybV9jcnRjX3N0YXRlICpuZXdfc3RhdGUpCj4gK3sKPiArCS8qCj4gKwkgKiBObyBu ZXdfc3RhdGUgbWVhbnMgdGhlIGNydGMgaXMgb2ZmLCBzbyB0aGUgb25seSBjcml0ZXJpYSBpcyB3 aGV0aGVyCj4gKwkgKiBpdCdzIGN1cnJlbnRseSBhY3RpdmUgb3IgaW4gc2VsZiByZWZyZXNoIG1v ZGUuCj4gKwkgKi8KPiArCWlmICghbmV3X3N0YXRlKQo+ICsJCXJldHVybiBkcm1fYXRvbWljX2Ny dGNfZWZmZWN0aXZlbHlfYWN0aXZlKG9sZF9zdGF0ZSk7Cj4gKwo+ICsJLyoKPiArCSAqIFdlIG5l ZWQgdG8gcnVuIHRocm91Z2ggdGhlIGNydGNfZnVuY3MtPmRpc2FibGUoKSBmdW5jdGlvbiBpZiB0 aGUgY3J0Ywo+ICsJICogaXMgY3VycmVudGx5IG9uLCBpZiBpdCdzIHRyYW5zaXRpb25pbmcgdG8g c2VsZiByZWZyZXNoIG1vZGUsIG9yIGlmCj4gKwkgKiBpdCdzIGluIHNlbGYgcmVmcmVzaCBtb2Rl IGFuZCBuZWVkcyB0byBiZSBmdWxseSBkaXNhYmxlZC4KPiArCSAqLwo+ICsJcmV0dXJuIG9sZF9z dGF0ZS0+YWN0aXZlIHx8Cj4gKwkgICAgICAgKG9sZF9zdGF0ZS0+c2VsZl9yZWZyZXNoX2FjdGl2 ZSAmJiAhbmV3X3N0YXRlLT5lbmFibGUpIHx8Cj4gKwkgICAgICAgbmV3X3N0YXRlLT5zZWxmX3Jl ZnJlc2hfYWN0aXZlOwo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9pZAo+ICBkaXNhYmxlX291dHB1dHMo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0 ZSkKPiAgewo+IEBAIC05NzQsNyArOTk4LDE0IEBAIGRpc2FibGVfb3V0cHV0cyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQo+ICAKPiAg CQlvbGRfY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X29sZF9jcnRjX3N0YXRlKG9sZF9zdGF0 ZSwgb2xkX2Nvbm5fc3RhdGUtPmNydGMpOwo+ICAKPiAtCQlpZiAoIW9sZF9jcnRjX3N0YXRlLT5h Y3RpdmUgfHwKPiArCQlpZiAobmV3X2Nvbm5fc3RhdGUtPmNydGMpCj4gKwkJCW5ld19jcnRjX3N0 YXRlID0gZHJtX2F0b21pY19nZXRfbmV3X2NydGNfc3RhdGUoCj4gKwkJCQkJCW9sZF9zdGF0ZSwK PiArCQkJCQkJbmV3X2Nvbm5fc3RhdGUtPmNydGMpOwo+ICsJCWVsc2UKPiArCQkJbmV3X2NydGNf c3RhdGUgPSBOVUxMOwo+ICsKPiArCQlpZiAoIWNydGNfbmVlZHNfZGlzYWJsZShvbGRfY3J0Y19z dGF0ZSwgbmV3X2NydGNfc3RhdGUpIHx8Cj4gIAkJICAgICFkcm1fYXRvbWljX2NydGNfbmVlZHNf bW9kZXNldChvbGRfY29ubl9zdGF0ZS0+Y3J0Yy0+c3RhdGUpKQoKSSBoYXZlIGEgcmVhbGx5IGhh cmQgdGltZSBwYXJzaW5nIHRoZSBsb2dpYyBoZXJlIGFuZCBpbiB0aGUgaGVscGVyLCBzaW5jZQpp dCdzIGFsc28gc3ByZWFkIGFyb3VuZC4gSSB0aGluayB5b3VyIGhlbHBlciBzaG91bGQgYWxzbyBp bmNsdWRlIHRoZQpuZWVkc19tb2Rlc2V0IGNoZWNrLiBQbHVzIHlvdXIgY29tbWVudHMgbG9vayBh IGJpdCBzdHJhbmdlIC0gZS5nLiB3aXRoIHRoZQpkb3VibGUgbmVnYXRpb24gdGhlIHJlYXNvbiBm b3IgdGhlIG9sZF9jcnRjLT5hY3RpdmUgY2hlY2sgaXNuJ3QgdGhhdCB3ZQpuZWVkIHRvIGRpc2Fi bGUgaWYgaXQncyBhY3RpdmUsIGJ1dCB0aGF0IHdlIGRvbid0IG5lZWQgdG8gZGlzYWJsZSBpZiBp dCdzCm5vdCBhY3RpdmUgKHlvdSBjb21iaW5lIHdpdGggfHwgaGVyZSwgbm90ICYmKS4KCkJ1dCBh c2lkZSBmcm9tIGFsbCB0aGF0LCB3aHkgZG8geW91IGV2ZW4gY2hhbmdlIHN0dWZmIGhlcmU/IFRo ZSBzZWxmCnJlZnJlc2ggd29ya2VyIGNoYW5nZXMgLT5hY3RpdmUgdG8gZmFsc2UsIHdoaWNoIG1l YW5zIG5lZWRzX21vZGVzZXQgd2lsbApmaXJlLCBhbmQgbm8gY2hhbmdlIHNob3VsZCBiZSBuZWVk ZWQgaW4gdGhlIGNvbW1pdCBjb2RlIGF0IGFsbC4KClRoYXQncyB3aHkgSSBzdWdnZXN0ZWQgdGhl IHRyaWNrIHdpdGgKZHJtX2F0b21pY19jcnRjX2VmZmVjdGl2ZWx5X2FjdGl2ZSgpLCBpdCBhbGxv d3MgdXMgdG8ga2VlcCB0aGUgZW50aXJlCmNoZWNrL2NvbW1pdCBkcml2ZXIgY29kZSBhcy1pcy4K Cj4gIAkJCWNvbnRpbnVlOwo+ICAKPiBAQCAtMTAxOCw3ICsxMDQ5LDcgQEAgZGlzYWJsZV9vdXRw dXRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRf c3RhdGUpCj4gIAkJaWYgKCFkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldChuZXdfY3J0Y19z dGF0ZSkpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAtCQlpZiAoIW9sZF9jcnRjX3N0YXRlLT5hY3Rp dmUpCj4gKwkJaWYgKCFjcnRjX25lZWRzX2Rpc2FibGUob2xkX2NydGNfc3RhdGUsIG5ld19jcnRj X3N0YXRlKSkKPiAgCQkJY29udGludWU7Cj4gIAo+ICAJCWZ1bmNzID0gY3J0Yy0+aGVscGVyX3By aXZhdGU7Cj4gQEAgLTI5NDgsNiArMjk3OSw3IEBAIGludCBkcm1fYXRvbWljX2hlbHBlcl9zZXRf Y29uZmlnKHN0cnVjdCBkcm1fbW9kZV9zZXQgKnNldCwKPiAgCQlyZXR1cm4gLUVOT01FTTsKPiAg Cj4gIAlzdGF0ZS0+YWNxdWlyZV9jdHggPSBjdHg7Cj4gKwo+ICAJcmV0ID0gX19kcm1fYXRvbWlj X2hlbHBlcl9zZXRfY29uZmlnKHNldCwgc3RhdGUpOwo+ICAJaWYgKHJldCAhPSAwKQo+ICAJCWdv dG8gZmFpbDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfc3RhdGVf aGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19zdGF0ZV9oZWxwZXIuYwo+IGlu ZGV4IDQ5ODUzODRlNTFmNi4uZWM5MGM1MjdkZWVkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fYXRvbWljX3N0YXRlX2hlbHBlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9hdG9taWNfc3RhdGVfaGVscGVyLmMKPiBAQCAtMTA1LDYgKzEwNSwxMCBAQCB2b2lkIF9fZHJt X2F0b21pY19oZWxwZXJfY3J0Y19kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRj LAo+ICAJc3RhdGUtPmNvbW1pdCA9IE5VTEw7Cj4gIAlzdGF0ZS0+ZXZlbnQgPSBOVUxMOwo+ICAJ c3RhdGUtPnBhZ2VmbGlwX2ZsYWdzID0gMDsKPiArCj4gKwkvKiBTZWxmIHJlZnJlc2ggc2hvdWxk IGJlIGNhbmNlbGVkIHdoZW4gYSBuZXcgdXBkYXRlIGlzIGF2YWlsYWJsZSAqLwo+ICsJc3RhdGUt PmFjdGl2ZSA9IGRybV9hdG9taWNfY3J0Y19lZmZlY3RpdmVseV9hY3RpdmUoc3RhdGUpOwo+ICsJ c3RhdGUtPnNlbGZfcmVmcmVzaF9hY3RpdmUgPSBmYWxzZTsKPiAgfQo+ICBFWFBPUlRfU1lNQk9M KF9fZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kdXBsaWNhdGVfc3RhdGUpOwo+ICAKPiBAQCAtMzcw LDYgKzM3NCwxMCBAQCBfX2RybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3Rh dGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAgCj4gIAkvKiBEb24ndCBjb3B5 IG92ZXIgYSB3cml0ZWJhY2sgam9iLCB0aGV5IGFyZSB1c2VkIG9ubHkgb25jZSAqLwo+ICAJc3Rh dGUtPndyaXRlYmFja19qb2IgPSBOVUxMOwo+ICsKPiArCS8qIFNlbGYgcmVmcmVzaCBzaG91bGQg YmUgY2FuY2VsZWQgd2hlbiBhIG5ldyB1cGRhdGUgaXMgYXZhaWxhYmxlICovCj4gKwlzdGF0ZS0+ c2VsZl9yZWZyZXNoX2NoYW5nZWQgPSBzdGF0ZS0+c2VsZl9yZWZyZXNoX2FjdGl2ZTsKPiArCXN0 YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZlID0gZmFsc2U7CgpXaHkgdGhlIGR1cGxpY2F0aW9uIGlu IHNlbGYtcmVmcmVzaCB0cmFja2luZz8gQ29ubmVjdG9ycyBuZXZlciBoYXZlIGEKZGlmZmVyZW50 IHNlbGYtcmVmcmVzaCBzdGF0ZSwgYW5kIHlvdSBjYW4gYWx3YXlzIGxvb2sgYXQgdGhlIHJpZ2h0 CmNydGNfc3RhdGUuIER1cGxpY2F0aW9uIGp1c3QgZ2l2ZXMgdXMgdGhlIGNoYW5jZSB0byBzY3Jl dyB1cCBhbmQgZ2V0IG91dApvZiBzeW5jIChlLmcuIGlmIHRoZSBjcnRjIGZvciBhIGNvbm5lY3Rv ciBjaGFuZ2VzKS4KCj4gIH0KPiAgRVhQT1JUX1NZTUJPTChfX2RybV9hdG9taWNfaGVscGVyX2Nv bm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2RybV9hdG9taWNfdWFwaS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfdWFwaS5j Cj4gaW5kZXggNGViODFmMTBiYzU0Li5kMjA4NTMzMjE3MmIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2RybV9hdG9taWNfdWFwaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9h dG9taWNfdWFwaS5jCj4gQEAgLTQ5MCw3ICs0OTAsNyBAQCBkcm1fYXRvbWljX2NydGNfZ2V0X3By b3BlcnR5KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCXN0cnVjdCBkcm1fbW9kZV9jb25maWcg KmNvbmZpZyA9ICZkZXYtPm1vZGVfY29uZmlnOwo+ICAKPiAgCWlmIChwcm9wZXJ0eSA9PSBjb25m aWctPnByb3BfYWN0aXZlKQo+IC0JCSp2YWwgPSBzdGF0ZS0+YWN0aXZlOwo+ICsJCSp2YWwgPSBk cm1fYXRvbWljX2NydGNfZWZmZWN0aXZlbHlfYWN0aXZlKHN0YXRlKTsKPiAgCWVsc2UgaWYgKHBy b3BlcnR5ID09IGNvbmZpZy0+cHJvcF9tb2RlX2lkKQo+ICAJCSp2YWwgPSAoc3RhdGUtPm1vZGVf YmxvYikgPyBzdGF0ZS0+bW9kZV9ibG9iLT5iYXNlLmlkIDogMDsKPiAgCWVsc2UgaWYgKHByb3Bl cnR5ID09IGNvbmZpZy0+cHJvcF92cnJfZW5hYmxlZCkKPiBAQCAtNzg1LDcgKzc4NSw4IEBAIGRy bV9hdG9taWNfY29ubmVjdG9yX2dldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLAo+ICAJaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+cHJvcF9jcnRjX2lkKSB7Cj4gIAkJ KnZhbCA9IChzdGF0ZS0+Y3J0YykgPyBzdGF0ZS0+Y3J0Yy0+YmFzZS5pZCA6IDA7Cj4gIAl9IGVs c2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+ZHBtc19wcm9wZXJ0eSkgewo+IC0JCSp2YWwgPSBj b25uZWN0b3ItPmRwbXM7Cj4gKwkJKnZhbCA9IHN0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZlID8g RFJNX01PREVfRFBNU19PTiA6Cj4gKwkJCWNvbm5lY3Rvci0+ZHBtczsKPiAgCX0gZWxzZSBpZiAo cHJvcGVydHkgPT0gY29uZmlnLT50dl9zZWxlY3Rfc3ViY29ubmVjdG9yX3Byb3BlcnR5KSB7Cj4g IAkJKnZhbCA9IHN0YXRlLT50di5zdWJjb25uZWN0b3I7Cj4gIAl9IGVsc2UgaWYgKHByb3BlcnR5 ID09IGNvbmZpZy0+dHZfbGVmdF9tYXJnaW5fcHJvcGVydHkpIHsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2RybV9zZWxmX3JlZnJlc2hfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXIuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg MDAwMDAwMDAwMDAwLi5hM2FmYTAzMTQ4MGUKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9zZWxmX3JlZnJlc2hfaGVscGVyLmMKPiBAQCAtMCwwICsxLDIxMiBAQAo+ ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUICovCj4gKy8qCj4gKyAqIENvcHlyaWdo dCAoQykgMjAxOSBHb29nbGUsIEluYy4KPiArICoKPiArICogQXV0aG9yczoKPiArICogU2VhbiBQ YXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+Cj4gKyAqLwo+ICsjaW5jbHVkZSA8ZHJtL2RybV9h dG9taWMuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ICsjaW5jbHVk ZSA8ZHJtL2RybV9jb25uZWN0b3IuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgo+ICsj aW5jbHVkZSA8ZHJtL2RybV9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fbW9kZV9jb25m aWcuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fbW9kZXNldF9sb2NrLmg+Cj4gKyNpbmNsdWRlIDxk cm0vZHJtX3ByaW50Lmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXIu aD4KPiArI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPgo+ICsjaW5jbHVkZSA8bGludXgvc2xhYi5o Pgo+ICsjaW5jbHVkZSA8bGludXgvd29ya3F1ZXVlLmg+Cj4gKwo+ICsvKioKPiArICogRE9DOiBv dmVydmlldwo+ICsgKgo+ICsgKiBUaGlzIGhlbHBlciBsaWJyYXJ5IHByb3ZpZGVzIGFuIGVhc3kg d2F5IGZvciBkcml2ZXJzIHRvIGxldmVyYWdlIHRoZSBhdG9taWMKPiArICogZnJhbWV3b3JrIHRv IGltcGxlbWVudCBwYW5lbCBzZWxmIHJlZnJlc2ggKFNSKSBzdXBwb3J0LiBEcml2ZXJzIGFyZQo+ ICsgKiByZXNwb25zaWJsZSBmb3IgcmVnaXN0ZXJpbmcgYW5kIHVucmVnaXN0ZXJpbmcgdGhlIFNS IGhlbHBlcnMgb24gbG9hZC91bmxvYWQuCj4gKyAqCj4gKyAqIE9uY2UgYSBjcnRjIGhhcyBlbmFi bGVkIFNSLCB0aGUgaGVscGVycyB3aWxsIG1vbml0b3IgYWN0aXZpdHkgYW5kCj4gKyAqIGNhbGwg YmFjayBpbnRvIHRoZSBkcml2ZXIgdG8gZW5hYmxlL2Rpc2FibGUgU1IgYXMgYXBwcm9wcmlhdGUu IFRoZSBiZXN0IHdheQo+ICsgKiB0byB0aGluayBhYm91dCB0aGlzIGlzIHRoYXQgaXQncyBhIERQ TVMgb24vb2ZmIHJlcXVlc3Qgd2l0aCBhIGZsYWcgc2V0IGluCj4gKyAqIHN0YXRlIHRoYXQgdGVs bHMgeW91IHRvIGRpc2FibGUvZW5hYmxlIFNSIG9uIHRoZSBwYW5lbCBpbnN0ZWFkIG9mIHBvd2Vy LQo+ICsgKiBjeWNsaW5nIGl0Lgo+ICsgKgo+ICsgKiBEcml2ZXJzIG1heSBjaG9vc2UgdG8gZnVs bHkgZGlzYWJsZSB0aGVpciBjcnRjL2VuY29kZXIvYnJpZGdlIGhhcmR3YXJlLCBvcgo+ICsgKiB0 aGV5IGNhbiB1c2UgdGhlICJzZWxmX3JlZnJlc2hfYWN0aXZlIiBhbmQgInNlbGZfcmVmcmVzaF9j aGFuZ2VkIiBmbGFncyBpbgo+ICsgKiBvYmplY3Qgc3RhdGUgaWYgdGhleSB3YW50IHRvIGVudGVy IGxvdyBwb3dlciBtb2RlIHdpdGhvdXQgZnVsbCBkaXNhYmxlIChpbgo+ICsgKiBjYXNlIGZ1bGwg ZGlzYWJsZS9lbmFibGUgaXMgdG9vIHNsb3cpLgo+ICsgKgo+ICsgKiBTUiB3aWxsIGJlIGRlYWN0 aXZhdGVkIGlmIHRoZXJlIGFyZSBhbnkgYXRvbWljIHVwZGF0ZXMgYWZmZWN0aW5nIHRoZQo+ICsg KiBwaXBlIHRoYXQgaXMgaW4gU1IgbW9kZS4gSWYgYSBjcnRjIGlzIGRyaXZpbmcgbXVsdGlwbGUg Y29ubmVjdG9ycywgYWxsCj4gKyAqIGNvbm5lY3RvcnMgbXVzdCBiZSBTUiBhd2FyZSBhbmQgYWxs IHdpbGwgZW50ZXIgU1IgbW9kZS4KPiArICovCj4gKwo+ICtzdHJ1Y3QgZHJtX3NlbGZfcmVmcmVz aF9zdGF0ZSB7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gKwlzdHJ1Y3QgZGVsYXllZF93 b3JrIGVudHJ5X3dvcms7Cj4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc2F2ZV9zdGF0ZTsK PiArCXVuc2lnbmVkIGludCBlbnRyeV9kZWxheV9tczsKPiArfTsKPiArCj4gK3N0YXRpYyB2b2lk IGRybV9zZWxmX3JlZnJlc2hfaGVscGVyX2VudHJ5X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3 b3JrKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX3NlbGZfcmVmcmVzaF9zdGF0ZSAqc3Jfc3RhdGUgPSBj b250YWluZXJfb2YoCj4gKwkJCQl0b19kZWxheWVkX3dvcmsod29yayksCj4gKwkJCQlzdHJ1Y3Qg ZHJtX3NlbGZfcmVmcmVzaF9zdGF0ZSwgZW50cnlfd29yayk7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMg KmNydGMgPSBzcl9zdGF0ZS0+Y3J0YzsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRj LT5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggY3R4Owo+ICsJc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm47 Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZTsKPiArCXN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiArCWludCBpLCByZXQ7Cj4gKwo+ICsJZHJtX21v ZGVzZXRfYWNxdWlyZV9pbml0KCZjdHgsIDApOwo+ICsKPiArCXN0YXRlID0gZHJtX2F0b21pY19z dGF0ZV9hbGxvYyhkZXYpOwo+ICsJaWYgKCFzdGF0ZSkgewo+ICsJCXJldCA9IC1FTk9NRU07Cj4g KwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+ICtyZXRyeToKPiArCXN0YXRlLT5hY3F1aXJlX2N0eCA9 ICZjdHg7Cj4gKwo+ICsJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3Rh dGUsIGNydGMpOwo+ICsJaWYgKElTX0VSUihjcnRjX3N0YXRlKSkgewo+ICsJCXJldCA9IFBUUl9F UlIoY3J0Y19zdGF0ZSk7Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+ICsJaWYgKCFjcnRjX3N0 YXRlLT5lbmFibGUpCj4gKwkJZ290byBvdXQ7Cj4gKwo+ICsJcmV0ID0gZHJtX2F0b21pY19hZGRf YWZmZWN0ZWRfY29ubmVjdG9ycyhzdGF0ZSwgY3J0Yyk7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8g b3V0Owo+ICsKPiArCWNydGNfc3RhdGUtPmFjdGl2ZSA9IGZhbHNlOwo+ICsJY3J0Y19zdGF0ZS0+ c2VsZl9yZWZyZXNoX2FjdGl2ZSA9IHRydWU7Cj4gKwo+ICsJZm9yX2VhY2hfbmV3X2Nvbm5lY3Rv cl9pbl9zdGF0ZShzdGF0ZSwgY29ubiwgY29ubl9zdGF0ZSwgaSkgewo+ICsJCWlmICghY29ubl9z dGF0ZS0+c2VsZl9yZWZyZXNoX2F3YXJlKQo+ICsJCQlnb3RvIG91dDsKPiArCj4gKwkJY29ubl9z dGF0ZS0+c2VsZl9yZWZyZXNoX2NoYW5nZWQgPSB0cnVlOwo+ICsJCWNvbm5fc3RhdGUtPnNlbGZf cmVmcmVzaF9hY3RpdmUgPSB0cnVlOwo+ICsJfQoKSSB3b25kZXIgd2hldGhlciB3ZSBzaG91bGQg cmVqZWN0IHRoZSB0aW1lciBoZXJlIGJlZm9yZSBnb2luZyBhaGVhZC4KVGhlcmUncyBvZmMgc3Rp bGwgYSByYWNlLCBidXQgaWYgd2UncmUgdW5sdWNreSBhbmQgdGhlIHNlbGYgZnJlc2ggd29yawpm aXJlcyBhdCB0aGUgc2FtZSB0aW1lIGFzIHVzZXJzcGFjZSBkb2VzIGEgbmV3IGF0b21pYyBjb21t aXQgd2UgY291bGQgZW5kCnVwIHdpdGggdGhlIGZvbGxvd2luZyBzZXF1ZW5jZToKMS4gc2VsZi1y ZWZyZXNoIHdvcmsgc3RhcnRzCjIuIHVzZXJzcGFjZSBkb2VzIGlvY3Rscywgc3RhcnRzIHRvIGdy YWIgc29tZSBsb2NrcwozLiBzZWxmLXJlZnJlc2ggZ3JhYnMgc2V0cyB1cCB0aGUgYWNxdWlyZSBj dHgKNC4gYXRvbWljIGlvY3RsIHB1bGxzIHRocm91Z2gsIGRvZXMgYSBjb21taXQsIGJsb2NraW5n IHRoZSBzZWxmLXJlZnJlc2gKd29yawo1LiBzZWxmLXJlZnJlc2ggd29yayBmaW5hbGx5IGdldHMg YWxsIHRoZSBsb2NrcywgZ29lcyBhaGVhZCBhbmQgcHV0cyB0aGUKZGlzcGxheSBpbnRvIHNlbGYt cmVmcmVzaC4KCk5vdCBzdXJlIGhvdyBtdWNoIHdlIGNhcmUgYWJvdXQgdGhpcyByZWFsbHksIG9y IHdoZXRoZXIgZGVsYXlpbmcgdGhlIHRpbWVyCmZyb20gYWxsIGF0b21pY19jaGVjayAoaW5jbHVk aW5nIFRFU1RfT05MWSkgaXMgZW5vdWdoIHRvIHBhcGVyIG92ZXIgdGhpcy4KCj4gKwo+ICsJcmV0 ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIG91dDsK PiArCj4gK291dDoKPiArCWlmIChyZXQgPT0gLUVERUFETEspIHsKPiArCQlkcm1fYXRvbWljX3N0 YXRlX2NsZWFyKHN0YXRlKTsKPiArCQlyZXQgPSBkcm1fbW9kZXNldF9iYWNrb2ZmKCZjdHgpOwo+ ICsJCWlmICghcmV0KQo+ICsJCQlnb3RvIHJldHJ5Owo+ICsJfQo+ICsKPiArCWRybV9hdG9taWNf c3RhdGVfcHV0KHN0YXRlKTsKPiArCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7Cj4gKwlk cm1fbW9kZXNldF9hY3F1aXJlX2ZpbmkoJmN0eCk7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBkcm1f c2VsZl9yZWZyZXNoX2hlbHBlcl9hbHRlcl9zdGF0ZSAtIEFsdGVycyB0aGUgYXRvbWljIHN0YXRl IGZvciBTUiBleGl0Cj4gKyAqIEBzdGF0ZTogdGhlIHN0YXRlIGN1cnJlbnRseSBiZWluZyBjaGVj a2VkCj4gKyAqCj4gKyAqIENhbGxlZCBhdCB0aGUgZW5kIG9mIGF0b21pYyBjaGVjay4gVGhpcyBm dW5jdGlvbiBjaGVja3MgdGhlIHN0YXRlIGZvciBmbGFncwo+ICsgKiBpbmNvbXBhdGlibGUgd2l0 aCBzZWxmIHJlZnJlc2ggZXhpdCBhbmQgY2hhbmdlcyB0aGVtLiBUaGlzIGlzIGEgYml0Cj4gKyAq IGRpc2luZ2VudW91cyBzaW5jZSB1c2Vyc3BhY2UgaXMgZXhwZWN0aW5nIG9uZSB0aGluZyBhbmQg d2UncmUgZ2l2aW5nIGl0Cj4gKyAqIGFub3RoZXIuIEhvd2V2ZXIgaW4gb3JkZXIgdG8ga2VlcCBz ZWxmIHJlZnJlc2ggZW50aXJlbHkgaGlkZGVuIGZyb20KPiArICogdXNlcnNwYWNlLCB0aGlzIGlz IHJlcXVpcmVkLgo+ICsgKgo+ICsgKiBBdCB0aGUgZW5kLCB3ZSBxdWV1ZSB1cCB0aGUgc2VsZiBy ZWZyZXNoIGVudHJ5IHdvcmsgc28gd2UgY2FuIGVudGVyIFBTUiBhZnRlcgo+ICsgKiB0aGUgZGVz aXJlZCBkZWxheS4KPiArICovCj4gK3ZvaWQgZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXJfYWx0ZXJf c3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJt X2NydGMgKmNydGM7Cj4gKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gKwlp bnQgaTsKPiArCj4gKwlpZiAoc3RhdGUtPmFzeW5jX3VwZGF0ZSkgewo+ICsJCWZvcl9lYWNoX29s ZF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gKwkJCWlmIChj cnRjX3N0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZlKSB7Cj4gKwkJCQlzdGF0ZS0+YXN5bmNfdXBk YXRlID0gZmFsc2U7Cj4gKwkJCQlicmVhazsKPiArCQkJfQo+ICsJCX0KPiArCX0KPiArCWlmICgh c3RhdGUtPmFsbG93X21vZGVzZXQpIHsKPiArCQlmb3JfZWFjaF9vbGRfY3J0Y19pbl9zdGF0ZShz dGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+ICsJCQlpZiAoY3J0Y19zdGF0ZS0+c2VsZl9y ZWZyZXNoX2FjdGl2ZSkgewo+ICsJCQkJc3RhdGUtPmFsbG93X21vZGVzZXQgPSB0cnVlOwo+ICsJ CQkJYnJlYWs7Cj4gKwkJCX0KPiArCQl9Cj4gKwl9CgpJIHRoaW5rIHlvdSBjYW4gZmxhdHRlbiB0 aGUgYWJvdmUgdHdvIHRvOgoKCWZvcl9lYWNoX29sZF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRj LCBjcnRjX3N0YXRlLCBpKSB7CgkJaWYgKGNydGNfc3RhdGUtPnNlbGZfcmVmcmVzaF9hY3RpdmUp IHsKCQkJc3RhdGUtPmFsbG93X21vZGVzZXQgPSB0cnVlOwoJCQlzdGF0ZS0+YXN5bmNfdXBkYXRl ID0gZmFsc2U7CgkJCWJyZWFrOwoJCX0KCX0KClBsdXMgYSBjb21tZW50IHRoYXQgdGhpcyBicmVh a3MgdWFwaSwgYnV0IHdobyBjYXJlczoKCgkvKiBUaGlzIGJyZWFrcyB1YXBpLCBidXQgd2Ugd2Fu dCBzZWxmLXJlZnJlc2ggdG8gYmUgYXMgdHJhbnNwYXJlbnQKCSAqIHRvIHVzZXJzcGFjZSBhcyBw b3NzaWJsZS4gUGx1cyB0aGUgYXNzdW1wdGlvbiBpcyB0aGF0IHdpdGggdGhlCgkgKiBkaXNwbGF5 IHN0aWxsIG9uLCB0aGUgbW9kZXNldCB3aWxsIHRha2UgYXQgbW9zdCBhIGZldyB2YmxhbmtzLAoJ ICogYW5kIHRoYXQncyBzdGlsbCBvay4gKi8KCj4gKwo+ICsJZm9yX2VhY2hfbmV3X2NydGNfaW5f c3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKPiArCQlzdHJ1Y3QgZHJtX3NlbGZf cmVmcmVzaF9zdGF0ZSAqc3Jfc3RhdGU7Cj4gKwo+ICsJCS8qIERvbid0IHRyaWdnZXIgdGhlIGVu dHJ5IHRpbWVyIHdoZW4gd2UncmUgYWxyZWFkeSBpbiBTUiAqLwo+ICsJCWlmIChjcnRjX3N0YXRl LT5zZWxmX3JlZnJlc2hfYWN0aXZlKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJc3Jfc3RhdGUg PSBjcnRjLT5zZWxmX3JlZnJlc2hfc3RhdGU7Cj4gKwkJbW9kX2RlbGF5ZWRfd29yayhzeXN0ZW1f d3EsICZzcl9zdGF0ZS0+ZW50cnlfd29yaywKPiArCQkJIG1zZWNzX3RvX2ppZmZpZXMoc3Jfc3Rh dGUtPmVudHJ5X2RlbGF5X21zKSk7CgpUaGlzIGJpdCBuZWVkcyB0byBiZSBpbiBhdG9taWNfY29t bWl0LCBub3QgYXRvbWljIGNoZWNrLiBPciBhdCBsZWFzdCBpdApmZWVscyBhIGJpdCB3cm9uZyB0 byBkZWxheSBzZWxmLXJlZnJlc2ggaWYgdXNlcnNwYWNlIGRvZXMgYSBmZXcgVEVTVF9PTkxZCmNv bW1pdHMuCgpJZiB5b3UgZmVlbCBsaWtlIHdlIHNob3VsZCBkbyB0aGF0LCB0aGVuIHdlIG5lZWQg YSBjb21tZW50IGhlcmUsIHNpbmNlCml0J3MgY2xlYXJseSBhZ2FpbnN0IGFsbCB0aGUgIm5ldmVy IHRvdWNoIGFueXRoaW5nIG91dHNpZGUgb2YgdGhlIGZyZWUKc3RhbmRpbmcgc3RhdGUgc3RydWN0 dXJlcyBmcm9tIGF0b21pY19jaGVjayBjb2RlIiBydWxlcy4KCj4gKwl9Cj4gK30KPiArRVhQT1JU X1NZTUJPTChkcm1fc2VsZl9yZWZyZXNoX2hlbHBlcl9hbHRlcl9zdGF0ZSk7Cj4gKwo+ICsvKioK PiArICogZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXJfcmVnaXN0ZXIgLSBSZWdpc3RlcnMgc2VsZiBy ZWZyZXNoIGhlbHBlcnMgZm9yIGEgY3J0Ywo+ICsgKiBAY3J0YzogdGhlIGNydGMgd2hpY2ggc3Vw cG9ydHMgc2VsZiByZWZyZXNoIHN1cHBvcnRlZCBkaXNwbGF5cwo+ICsgKiBAZW50cnlfZGVsYXlf bXM6IGFtb3VudCBvZiBpbmFjdGl2aXR5IHRvIHdhaXQgYmVmb3JlIGVudGVyaW5nIHNlbGYgcmVm cmVzaAo+ICsgKi8KPiAraW50IGRybV9zZWxmX3JlZnJlc2hfaGVscGVyX3JlZ2lzdGVyKHN0cnVj dCBkcm1fY3J0YyAqY3J0YywKPiArCQkJCSAgICAgdW5zaWduZWQgaW50IGVudHJ5X2RlbGF5X21z KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX3NlbGZfcmVmcmVzaF9zdGF0ZSAqc3Jfc3RhdGUgPSBjcnRj LT5zZWxmX3JlZnJlc2hfc3RhdGU7Cj4gKwo+ICsJLyogSGVscGVyIGlzIGFscmVhZHkgcmVnaXN0 ZXJlZCAqLwo+ICsJaWYgKFdBUk5fT04oc3Jfc3RhdGUpKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ ICsKPiArCXNyX3N0YXRlID0ga3phbGxvYyhzaXplb2YoKnNyX3N0YXRlKSwgR0ZQX0tFUk5FTCk7 Cj4gKwlpZiAoIXNyX3N0YXRlKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCUlOSVRfREVM QVlFRF9XT1JLKCZzcl9zdGF0ZS0+ZW50cnlfd29yaywKPiArCQkJICBkcm1fc2VsZl9yZWZyZXNo X2hlbHBlcl9lbnRyeV93b3JrKTsKPiArCXNyX3N0YXRlLT5lbnRyeV9kZWxheV9tcyA9IGVudHJ5 X2RlbGF5X21zOwo+ICsJc3Jfc3RhdGUtPmNydGMgPSBjcnRjOwo+ICsKPiArCWNydGMtPnNlbGZf cmVmcmVzaF9zdGF0ZSA9IHNyX3N0YXRlOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArRVhQT1JUX1NZ TUJPTChkcm1fc2VsZl9yZWZyZXNoX2hlbHBlcl9yZWdpc3Rlcik7Cj4gKwo+ICsvKioKPiArICog ZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXJfdW5yZWdpc3RlciAtIFVucmVnaXN0ZXJzIHNlbGYgcmVm cmVzaCBoZWxwZXJzCj4gKyAqIEBjcnRjOiB0aGUgY3J0YyB0byB1bnJlZ2lzdGVyCj4gKyAqLwo+ ICt2b2lkIGRybV9zZWxmX3JlZnJlc2hfaGVscGVyX3VucmVnaXN0ZXIoc3RydWN0IGRybV9jcnRj ICpjcnRjKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX3NlbGZfcmVmcmVzaF9zdGF0ZSAqc3Jfc3RhdGUg PSBjcnRjLT5zZWxmX3JlZnJlc2hfc3RhdGU7Cj4gKwo+ICsJLyogSGVscGVyIGlzIGFscmVhZHkg dW5yZWdpc3RlcmVkICovCj4gKwlpZiAoc3Jfc3RhdGUpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWNy dGMtPnNlbGZfcmVmcmVzaF9zdGF0ZSA9IE5VTEw7Cj4gKwo+ICsJY2FuY2VsX2RlbGF5ZWRfd29y a19zeW5jKCZzcl9zdGF0ZS0+ZW50cnlfd29yayk7Cj4gKwlrZnJlZShzcl9zdGF0ZSk7Cj4gK30K PiArRVhQT1JUX1NZTUJPTChkcm1fc2VsZl9yZWZyZXNoX2hlbHBlcl91bnJlZ2lzdGVyKTsKPiBk aWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5oIGIvaW5jbHVkZS9kcm0vZHJtX2F0 b21pYy5oCj4gaW5kZXggODI0YTVlZDRlMjE2Li4xZTljYWIxZGE5N2EgMTAwNjQ0Cj4gLS0tIGEv aW5jbHVkZS9kcm0vZHJtX2F0b21pYy5oCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5o Cj4gQEAgLTk0NCw0ICs5NDQsMTkgQEAgZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQoY29u c3Qgc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSkKPiAgCSAgICAgICBzdGF0ZS0+Y29ubmVj dG9yc19jaGFuZ2VkOwo+ICB9Cj4gIAo+ICsvKioKPiArICogZHJtX2F0b21pY19jcnRjX2VmZmVj dGl2ZWx5X2FjdGl2ZSAtIGNvbXB1dGUgd2hldGhlciBjcnRjIGlzIGFjdHVhbGx5IGFjdGl2ZQo+ ICsgKiBAc3RhdGU6ICZkcm1fY3J0Y19zdGF0ZSBmb3IgdGhlIENSVEMKPiArICoKPiArICogV2hl biBpbiBzZWxmIHJlZnJlc2ggbW9kZSwgdGhlIGNydGNfc3RhdGUtPmFjdGl2ZSB2YWx1ZSB3aWxs IGJlIGZhbHNlLCBzaW5jZQo+ICsgKiB0aGUgY3J0YyBpcyBvZmYuIEhvd2V2ZXIgaW4gc29tZSBj YXNlcyB3ZSdyZSBpbnRlcmVzdGVkIGluIHdoZXRoZXIgdGhlIGNydGMKPiArICogaXMgYWN0aXZl LCBvciBlZmZlY3RpdmVseSBhY3RpdmUgKGllOiBpdCdzIGNvbm5lY3RlZCB0byBhbiBhY3RpdmUg ZGlzcGxheSkuCj4gKyAqIEluIHRoZXNlIGNhc2VzLCB1c2UgdGhpcyBmdW5jdGlvbiBpbnN0ZWFk IG9mIGp1c3QgY2hlY2tpbmcgYWN0aXZlLgo+ICsgKi8KPiArc3RhdGljIGlubGluZSBib29sCj4g K2RybV9hdG9taWNfY3J0Y19lZmZlY3RpdmVseV9hY3RpdmUoY29uc3Qgc3RydWN0IGRybV9jcnRj X3N0YXRlICpzdGF0ZSkKPiArewo+ICsJcmV0dXJuIHN0YXRlLT5hY3RpdmUgfHwgc3RhdGUtPnNl bGZfcmVmcmVzaF9hY3RpdmU7Cj4gK30KPiArCj4gICNlbmRpZiAvKiBEUk1fQVRPTUlDX0hfICov Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCBiL2luY2x1ZGUvZHJt L2RybV9jb25uZWN0b3IuaAo+IGluZGV4IGM4MDYxOTkyZDZjYi4uMGFlN2U4MTJlYzYyIDEwMDY0 NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaAo+ICsrKyBiL2luY2x1ZGUvZHJt L2RybV9jb25uZWN0b3IuaAo+IEBAIC01MDEsNiArNTAxLDM3IEBAIHN0cnVjdCBkcm1fY29ubmVj dG9yX3N0YXRlIHsKPiAgCS8qKiBAdHY6IFRWIGNvbm5lY3RvciBzdGF0ZSAqLwo+ICAJc3RydWN0 IGRybV90dl9jb25uZWN0b3Jfc3RhdGUgdHY7Cj4gIAo+ICsJLyoqCj4gKwkgKiBAc2VsZl9yZWZy ZXNoX2NoYW5nZWQ6Cj4gKwkgKgo+ICsJICogU2V0IHRydWUgd2hlbiBzZWxmIHJlZnJlc2ggc3Rh dHVzIGhhcyBjaGFuZ2VkLiBUaGlzIGlzIHVzZWZ1bCBmb3IKPiArCSAqIHVzZSBpbiBlbmNvZGVy L2JyaWRnZSBlbmFibGUgd2hlcmUgdGhlIG9sZCBzdGF0ZSBpcyB1bmF2YWlsYWJsZSB0bwo+ICsJ ICogdGhlIGRyaXZlciBhbmQgaXQgbmVlZHMgdG8ga25vdyB3aGV0aGVyIHRoZSBlbmFibGUgdHJh bnNpdGlvbiBpcyBhCj4gKwkgKiBmdWxsIHRyYW5zaXRpb24sIG9yIGlmIGl0IGp1c3QgbmVlZHMg dG8gZXhpdCBzZWxmIHJlZnJlc2ggbW9kZS4KClVoLCB3ZSBqdXN0IG5lZWQgcHJvcGVyIGF0b21p YyBjYWxsYmFja3Mgd2l0aCBhbGwgdGhlIHN0YXRlcyBhdmFpbGFibGUuCk9uY2UgeW91IGhhdmUg b25lLCB5b3UgY2FuIGdldCBhdCB0aGUgb3RoZXJzLgoKPiArCSAqLwo+ICsJYm9vbCBzZWxmX3Jl ZnJlc2hfY2hhbmdlZDsKPiArCj4gKwkvKioKPiArCSAqIEBzZWxmX3JlZnJlc2hfYWN0aXZlOgo+ ICsJICoKPiArCSAqIFVzZWQgYnkgdGhlIHNlbGYgcmVmcmVzaCAoU1IpIGhlbHBlcnMgdG8gZGVu b3RlIHdoZW4gdGhlIGRpc3BsYXkKPiArCSAqIHNob3VsZCBiZSBzZWxmIHJlZnJlc2hpbmcuIElm IHlvdXIgY29ubmVjdG9yIGlzIFNSLWNhcGFibGUsIGNoZWNrCj4gKwkgKiB0aGlzIGZsYWcgaW4g LmRpc2FibGUoKS4gSWYgaXQgaXMgdHJ1ZSwgaW5zdGVhZCBvZiBzaHV0dGluZyBvZmYgdGhlCj4g KwkgKiBwYW5lbCwgcHV0IGl0IGludG8gc2VsZiByZWZyZXNoaW5nIG1vZGUuCj4gKwkgKi8KPiAr CWJvb2wgc2VsZl9yZWZyZXNoX2FjdGl2ZTsKPiArCj4gKwkvKioKPiArCSAqIEBzZWxmX3JlZnJl c2hfYXdhcmU6Cj4gKwkgKgo+ICsJICogVGhpcyB0cmFja3Mgd2hldGhlciBhIGNvbm5lY3RvciBp cyBhd2FyZSBvZiB0aGUgc2VsZiByZWZyZXNoIHN0YXRlLgo+ICsJICogSXQgc2hvdWxkIGJlIHNl dCB0byB0cnVlIGZvciB0aG9zZSBjb25uZWN0b3IgaW1wbGVtZW50YXRpb25zIHdoaWNoCj4gKwkg KiB1bmRlcnN0YW5kIHRoZSBzZWxmIHJlZnJlc2ggc3RhdGUuIFRoaXMgaXMgbmVlZGVkIHNpbmNl IHRoZSBjcnRjCj4gKwkgKiByZWdpc3RlcnMgdGhlIHNlbGYgcmVmcmVzaCBoZWxwZXJzIGFuZCBp dCBkb2Vzbid0IGtub3cgaWYgdGhlCj4gKwkgKiBjb25uZWN0b3JzIGRvd25zdHJlYW0gaGF2ZSBp bXBsZW1lbnRlZCBzZWxmIHJlZnJlc2ggZW50cnkvZXhpdC4KCk1heWJlIGdvb2QgdG8gY2xhcmlm eSB3aGV0aGVyIGRyaXZlcnMgY2FuIGFkanVzdCB0aGlzIGF0IHJ1bnRpbWUgZnJvbQp0aGVpciBh dG9taWNfY2hlY2sgY29kZT8gSSB0aGluayB0aGV5IGNhbiAuLi4KCj4gKwkgKi8KPiArCWJvb2wg c2VsZl9yZWZyZXNoX2F3YXJlOwo+ICsKPiAgCS8qKgo+ICAJICogQHBpY3R1cmVfYXNwZWN0X3Jh dGlvOiBDb25uZWN0b3IgcHJvcGVydHkgdG8gY29udHJvbCB0aGUKPiAgCSAqIEhETUkgaW5mb2Zy YW1lIGFzcGVjdCByYXRpbyBzZXR0aW5nLgo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1f Y3J0Yy5oIGIvaW5jbHVkZS9kcm0vZHJtX2NydGMuaAo+IGluZGV4IGY3YzMwMjJkYmRmNC4uMjA4 ZDY4MTI5YjRjIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKPiArKysgYi9p bmNsdWRlL2RybS9kcm1fY3J0Yy5oCj4gQEAgLTUzLDYgKzUzLDcgQEAgc3RydWN0IGRybV9tb2Rl X3NldDsKPiAgc3RydWN0IGRybV9maWxlOwo+ICBzdHJ1Y3QgZHJtX2NsaXBfcmVjdDsKPiAgc3Ry dWN0IGRybV9wcmludGVyOwo+ICtzdHJ1Y3QgZHJtX3NlbGZfcmVmcmVzaF9zdGF0ZTsKPiAgc3Ry dWN0IGRldmljZV9ub2RlOwo+ICBzdHJ1Y3QgZG1hX2ZlbmNlOwo+ICBzdHJ1Y3QgZWRpZDsKPiBA QCAtMjk5LDYgKzMwMCwxNyBAQCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgewo+ICAJICovCj4gIAli b29sIHZycl9lbmFibGVkOwo+ICAKPiArCS8qKgo+ICsJICogQHNlbGZfcmVmcmVzaF9hY3RpdmU6 Cj4gKwkgKgo+ICsJICogVXNlZCBieSB0aGUgc2VsZiByZWZyZXNoIGhlbHBlcnMgdG8gZGVub3Rl IHdoZW4gYSBzZWxmIHJlZnJlc2gKPiArCSAqIHRyYW5zaXRpb24gaXMgb2NjdXJpbmcuIFRoaXMg d2lsbCBiZSBzZXQgb24gZW5hYmxlL2Rpc2FibGUgY2FsbGJhY2tzCj4gKwkgKiB3aGVuIHNlbGYg cmVmcmVzaCBpcyBiZWluZyBlbmFibGVkIG9yIGRpc2FibGVkLiBJbiBzb21lIGNhc2VzLCBpdCBt YXkKPiArCSAqIG5vdCBiZSBkZXNpcmFibGUgdG8gZnVsbHkgc2h1dCBvZmYgdGhlIGNydGMgZHVy aW5nIHNlbGYgcmVmcmVzaC4KPiArCSAqIENSVEMncyBjYW4gaW5zcGVjdCB0aGlzIGZsYWcgYW5k IGRldGVybWluZSB0aGUgYmVzdCBjb3Vyc2Ugb2YgYWN0aW9uLgo+ICsJICovCj4gKwlib29sIHNl bGZfcmVmcmVzaF9hY3RpdmU7Cj4gKwo+ICAJLyoqCj4gIAkgKiBAZXZlbnQ6Cj4gIAkgKgo+IEBA IC0xMDg3LDYgKzEwOTksMTMgQEAgc3RydWN0IGRybV9jcnRjIHsKPiAgCSAqIFRoZSBuYW1lIG9m IHRoZSBDUlRDJ3MgZmVuY2UgdGltZWxpbmUuCj4gIAkgKi8KPiAgCWNoYXIgdGltZWxpbmVfbmFt ZVszMl07Cj4gKwo+ICsJLyoqCj4gKwkgKiBAc2VsZl9yZWZyZXNoX3N0YXRlOiBIb2xkcyB0aGUg c3RhdGUgZm9yIHRoZSBzZWxmIHJlZnJlc2ggaGVscGVycwo+ICsJICoKPiArCSAqIEluaXRpYWxp emVkIHZpYSBkcm1fc2VsZl9yZWZyZXNoX2hlbHBlcl9yZWdpc3RlcigpLgo+ICsJICovCj4gKwlz dHJ1Y3QgZHJtX3NlbGZfcmVmcmVzaF9zdGF0ZSAqc2VsZl9yZWZyZXNoX3N0YXRlOwoKQ2FuIHdl IGRyb3AgdGhlIF9zdGF0ZSBoZXJlPyBJbiBhdG9taWMgc3RydWN0dXJlcyB3aXRoIF9zdGF0ZSBz dWZmaXggaGF2ZQp2ZXJ5IHNwZWNpZmljIG1lYW5pbmcmc2VtYW50aWNzLCB0aGlzIGlzbid0IG9u ZSBvZiB0aGVtLiBzL3N0YXRlL2RhdGUvIGlzCmltbyBjbGVhcmVyIGluIHRoZSBkZXNjcmlwdGlv biB0b28uCgo+ICB9Owo+ICAKPiAgLyoqCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9z ZWxmX3JlZnJlc2hfaGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1fc2VsZl9yZWZyZXNoX2hlbHBl ci5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjAxNWRhY2I4 YTgwNwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9pbmNsdWRlL2RybS9kcm1fc2VsZl9yZWZyZXNo X2hlbHBlci5oCj4gQEAgLTAsMCArMSwyMyBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogTUlUICovCj4gKy8qCj4gKyAqIENvcHlyaWdodCAoQykgMjAxOSBHb29nbGUsIEluYy4KPiAr ICoKPiArICogQXV0aG9yczoKPiArICogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+ Cj4gKyAqLwo+ICsjaWZuZGVmIERSTV9TRUxGX1JFRlJFU0hfSEVMUEVSX0hfCj4gKyNkZWZpbmUg RFJNX1NFTEZfUkVGUkVTSF9IRUxQRVJfSF8KPiArCj4gK3N0cnVjdCBkcm1fYXRvbWljX3N0YXRl Owo+ICtzdHJ1Y3QgZHJtX2Nvbm5lY3RvcjsKPiArc3RydWN0IGRybV9kZXZpY2U7Cj4gK3N0cnVj dCBkcm1fc2VsZl9yZWZyZXNoX3N0YXRlOwo+ICtzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9j dHg7Cj4gKwo+ICt2b2lkIGRybV9zZWxmX3JlZnJlc2hfaGVscGVyX2FsdGVyX3N0YXRlKHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Cj4gKwo+ICtpbnQgZHJtX3NlbGZfcmVmcmVzaF9o ZWxwZXJfcmVnaXN0ZXIoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICsJCQkJICAgICB1bnNpZ25l ZCBpbnQgZW50cnlfZGVsYXlfbXMpOwo+ICsKPiArdm9pZCBkcm1fc2VsZl9yZWZyZXNoX2hlbHBl cl91bnJlZ2lzdGVyKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4gKyNlbmRpZgo+IC0tIAo+IFNl YW4gUGF1bCwgU29mdHdhcmUgRW5naW5lZXIsIEdvb2dsZSAvIENocm9taXVtIE9TCgpBc2lkZSBm cm9tIHRoZSBiaWtlc2hlZHMgYW5kIHN1Z2dlc3Rpb25zLCBsb29rcyBhbGwgZ29vZCB0byBtZS4g SSB0aGluawppdCdkIGJlIGdvb2QgdG8gYWxzbyBoYXZlIGFuIGFjayBmcm9tIHNvbWUgb3RoZXIg c29jIGRpc3BsYXkgbWFpbnRhaW5lcgp0aGF0IHRoaXMgaXMgdXNlZnVsIChUb21pLCBMYXVyZW50 LCBMaXZpdSwgb3Igc29tZW9uZSBlbHNlKS4gSXQncyBhbHdheXMKZ29vZCB0byBjaGVjayBhIGRl c2lnbiBhZ2FpbnN0IGEgaGFuZGZ1bCBvZiBhY3R1YWwgZHJpdmVycyBpbnN0ZWFkIG9mIHNvbWUK bW9vbnNob3QgY2xlYW4gc2hlZXQgZGVzaWduIDotKQoKQnV0IHRoZXJlJ3MgYSBiaWcgb25lOiBX b3VsZCBiZSByZWFsbHkgbG92ZWx5IHRvIGhhdmUgc2VsZnRlc3RzIGZvciB0aGlzCnN0dWZmLCBr aW5kYSBhcyBhIHN0YXJ0IGZvciBtYWtpbmcgc3VyZSB3ZSBoYXZlIGEgc29saWQgbW9kZWwgb2Yg dGhlCmF0b21pYyBoZWxwZXJzIC4uLgoKQ2hlZXJzLCBEYW5pZWwKLS0gCkRhbmllbCBWZXR0ZXIK U29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNo Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==