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: Tue, 2 Apr 2019 11:53:40 +0200 Message-ID: <20190402095340.GL2665@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-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6DEAB6E76B for ; Tue, 2 Apr 2019 09:53:44 +0000 (UTC) Received: by mail-ed1-x544.google.com with SMTP id q3so11093827edg.0 for ; Tue, 02 Apr 2019 02:53:44 -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 L2RybV9zZWxmX3JlZnJlc2hfaGVscGVyLmgKCk92ZXJzaWdodCBvZiBhbiBlbnRpcmVseSBkaWZm ZXJlbnQgYXJlYSB0aGF0IEkganVzdCByZWFsaXplZCAoYW5kIHdoaWNoCnJvdXRpbmVseSBsZWFk cyB0byBwYWluIGluIGk5MTUgc2VsZiByZWZyZXNoIHRyaWNrZXJ5KToKCldoYXQgYWJvdXQgdmJs YW5rIGFuZCB0aGUgdmJsYW5rIHF1ZXJ5IGlvY3Rscz8KCkFwcHMga2luZGEgZXhwZWN0IHRob3Nl IHRvIGtlZXAgdGlja2luZywgZm9yIGZyYW1lIHNjaGVkdWxpbmcgcHVycG9zZXMsCmJ1dCBpZiB3 ZSBjYWxsIGludG8gdGhlIGNydGMgZGlzYWJsZSBob29rcywgd2hpY2ggc2hvdWxkIGNhbGwgaW50 bwpkcm1fdmJsYW5rX29mZiwgdXNlcnNwYWNlIHdpbGwgZ2V0IGFuIEVJTlZBTC4gV2hpY2ggbWln aHQgdHJpZ2dlciBzb21lCmZhbGxiYWNrcywgYnV0IG5vdCByZWFsbHkgd2hhdCB3ZSB3YW50IEkg dGhpbmsuCgpJbiBpOTE1IHdlJ3JlIHRyeWluZyBoYXJkIHRvIGtlZXAgdGhlIHZibGFua3Mgcm9s bGluZywgYnkgZXN0aW1hdGluZyBzb21lCmZha2UgdmJsYW5rIGNvdW50IGFuZCB0aW1lc3RhbXBz LCBhbmQgdGhlbiBjb3JyZWN0aW5nIHdoZW4gd2UgcmVzdGFydCB0aGUKcGlwZS4KCkFsc28gbm8g aWRlYSBob3cgdG8gZml0IHRoYXQgaW50byBoZWxwZXJzIC4uLiB3ZSBtaWdodCBuZWVkIGEKZHJt X3ZibGFua19zZWxmX3JlZnJlc2guIEFsc28sIHByb2JhYmx5IG5lZWRzIGltbWVkaWF0ZV9kaXNh YmxlIG1vZGUsCndoaWNoIG5lZWRzIGFjY3VyYXRlIHRpbWVzdGFtcHMuIEF0IGxlYXN0IHRoZSB0 cmlja3Mgd2UgZG8gaW4gaTkxNS4KCk5vIGlkZWEgeWV0IHdoYXQgdG8gZG8uCi1EYW5pZWwKPiAK PiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdCBiL0Rv Y3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QKPiBpbmRleCA1OGIzNzVlNDc2MTUu LmIwYjcxZjczODI5ZiAxMDA2NDQKPiAtLS0gYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhl bHBlcnMucnN0Cj4gKysrIGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdAo+ IEBAIC0xMDcsNiArMTA3LDE1IEBAIGZiZGV2IEhlbHBlciBGdW5jdGlvbnMgUmVmZXJlbmNlCj4g IC4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCj4gICAgIDpl eHBvcnQ6Cj4gIAo+ICtQYW5lbCBTZWxmIFJlZnJlc2ggSGVscGVyIFJlZmVyZW5jZQo+ICs9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+ICsKPiArLi4ga2VybmVsLWRvYzo6IGRy aXZlcnMvZ3B1L2RybS9kcm1fc2VsZl9yZWZyZXNoX2hlbHBlci5jCj4gKyAgIDpkb2M6IG92ZXJ2 aWV3Cj4gKwo+ICsuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9zZWxmX3JlZnJl c2hfaGVscGVyLmMKPiArICAgOmV4cG9ydDoKPiArCj4gIEZyYW1lYnVmZmVyIENNQSBIZWxwZXIg RnVuY3Rpb25zIFJlZmVyZW5jZQo+ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2Ry aXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+IGluZGV4IGU2MzBlY2NiOTUxYy4uNWIzYTFlMjZlYzk0 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9NYWtlZmlsZQo+IEBAIC0zOCw3ICszOCw4IEBAIGRybV9rbXNfaGVscGVyLXkgOj0g ZHJtX2NydGNfaGVscGVyLm8gZHJtX2RwX2hlbHBlci5vIGRybV9kc2MubyBkcm1fcHJvYmVfaGVs cGVyCj4gIAkJZHJtX2ttc19oZWxwZXJfY29tbW9uLm8gZHJtX2RwX2R1YWxfbW9kZV9oZWxwZXIu byBcCj4gIAkJZHJtX3NpbXBsZV9rbXNfaGVscGVyLm8gZHJtX21vZGVzZXRfaGVscGVyLm8gXAo+ ICAJCWRybV9zY2RjX2hlbHBlci5vIGRybV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLm8gXAo+IC0J CWRybV9hdG9taWNfc3RhdGVfaGVscGVyLm8gZHJtX2RhbWFnZV9oZWxwZXIubwo+ICsJCWRybV9h dG9taWNfc3RhdGVfaGVscGVyLm8gZHJtX2RhbWFnZV9oZWxwZXIubyBcCj4gKwkJZHJtX3NlbGZf cmVmcmVzaF9oZWxwZXIubwo+ICAKPiAgZHJtX2ttc19oZWxwZXItJChDT05GSUdfRFJNX1BBTkVM X0JSSURHRSkgKz0gYnJpZGdlL3BhbmVsLm8KPiAgZHJtX2ttc19oZWxwZXItJChDT05GSUdfRFJN X0ZCREVWX0VNVUxBVElPTikgKz0gZHJtX2ZiX2hlbHBlci5vCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4g aW5kZXggNWViNDAxMzBmYWZiLi5hMDZmZTU1YjVlYmYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9hdG9taWMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMK PiBAQCAtMzc5LDYgKzM3OSw3IEBAIHN0YXRpYyB2b2lkIGRybV9hdG9taWNfY3J0Y19wcmludF9z dGF0ZShzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsCj4gIAlkcm1fcHJpbnRmKHAsICJjcnRjWyV1XTog JXNcbiIsIGNydGMtPmJhc2UuaWQsIGNydGMtPm5hbWUpOwo+ICAJZHJtX3ByaW50ZihwLCAiXHRl bmFibGU9JWRcbiIsIHN0YXRlLT5lbmFibGUpOwo+ICAJZHJtX3ByaW50ZihwLCAiXHRhY3RpdmU9 JWRcbiIsIHN0YXRlLT5hY3RpdmUpOwo+ICsJZHJtX3ByaW50ZihwLCAiXHRzZWxmX3JlZnJlc2hf YWN0aXZlPSVkXG4iLCBzdGF0ZS0+c2VsZl9yZWZyZXNoX2FjdGl2ZSk7Cj4gIAlkcm1fcHJpbnRm KHAsICJcdHBsYW5lc19jaGFuZ2VkPSVkXG4iLCBzdGF0ZS0+cGxhbmVzX2NoYW5nZWQpOwo+ICAJ ZHJtX3ByaW50ZihwLCAiXHRtb2RlX2NoYW5nZWQ9JWRcbiIsIHN0YXRlLT5tb2RlX2NoYW5nZWQp Owo+ICAJZHJtX3ByaW50ZihwLCAiXHRhY3RpdmVfY2hhbmdlZD0lZFxuIiwgc3RhdGUtPmFjdGl2 ZV9jaGFuZ2VkKTsKPiBAQCAtODgxLDYgKzg4Miw5IEBAIHN0YXRpYyB2b2lkIGRybV9hdG9taWNf Y29ubmVjdG9yX3ByaW50X3N0YXRlKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwKPiAgCj4gIAlkcm1f cHJpbnRmKHAsICJjb25uZWN0b3JbJXVdOiAlc1xuIiwgY29ubmVjdG9yLT5iYXNlLmlkLCBjb25u ZWN0b3ItPm5hbWUpOwo+ICAJZHJtX3ByaW50ZihwLCAiXHRjcnRjPSVzXG4iLCBzdGF0ZS0+Y3J0 YyA/IHN0YXRlLT5jcnRjLT5uYW1lIDogIihudWxsKSIpOwo+ICsJZHJtX3ByaW50ZihwLCAiXHRz ZWxmX3JlZnJlc2hfYWN0aXZlPSVkXG4iLCBzdGF0ZS0+c2VsZl9yZWZyZXNoX2FjdGl2ZSk7Cj4g Kwlkcm1fcHJpbnRmKHAsICJcdHNlbGZfcmVmcmVzaF9hd2FyZT0lZFxuIiwgc3RhdGUtPnNlbGZf cmVmcmVzaF9hd2FyZSk7Cj4gKwlkcm1fcHJpbnRmKHAsICJcdHNlbGZfcmVmcmVzaF9jaGFuZ2Vk PSVkXG4iLCBzdGF0ZS0+c2VsZl9yZWZyZXNoX2NoYW5nZWQpOwo+ICAKPiAgCWlmIChjb25uZWN0 b3ItPmNvbm5lY3Rvcl90eXBlID09IERSTV9NT0RFX0NPTk5FQ1RPUl9XUklURUJBQ0spCj4gIAkJ aWYgKHN0YXRlLT53cml0ZWJhY2tfam9iICYmIHN0YXRlLT53cml0ZWJhY2tfam9iLT5mYikKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+IGluZGV4IDI0NTM2NzhkMTE4Ni4uYzY1OWRi MTA1MTMzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiBAQCAtMzAsNiAr MzAsNyBAQAo+ICAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfdWFwaS5oPgo+ICAjaW5jbHVkZSA8 ZHJtL2RybV9wbGFuZV9oZWxwZXIuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBl ci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9zZWxmX3JlZnJlc2hfaGVscGVyLmg+Cj4gICNpbmNs dWRlIDxkcm0vZHJtX3dyaXRlYmFjay5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9kYW1hZ2VfaGVs cGVyLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9kbWEtZmVuY2UuaD4KPiBAQCAtOTUwLDEwICs5NTEs MzMgQEAgaW50IGRybV9hdG9taWNfaGVscGVyX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4gIAlpZiAoc3RhdGUtPmxlZ2FjeV9jdXJzb3JfdXBkYXRlKQo+ICAJCXN0YXRlLT5hc3luY191 cGRhdGUgPSAhZHJtX2F0b21pY19oZWxwZXJfYXN5bmNfY2hlY2soZGV2LCBzdGF0ZSk7Cj4gIAo+ ICsJZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXJfYWx0ZXJfc3RhdGUoc3RhdGUpOwo+ICsKPiAgCXJl dHVybiByZXQ7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9jaGVjayk7 Cj4gIAo+ICtzdGF0aWMgYm9vbAo+ICtjcnRjX25lZWRzX2Rpc2FibGUoc3RydWN0IGRybV9jcnRj X3N0YXRlICpvbGRfc3RhdGUsCj4gKwkJICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpuZXdfc3Rh dGUpCj4gK3sKPiArCS8qCj4gKwkgKiBObyBuZXdfc3RhdGUgbWVhbnMgdGhlIGNydGMgaXMgb2Zm LCBzbyB0aGUgb25seSBjcml0ZXJpYSBpcyB3aGV0aGVyCj4gKwkgKiBpdCdzIGN1cnJlbnRseSBh Y3RpdmUgb3IgaW4gc2VsZiByZWZyZXNoIG1vZGUuCj4gKwkgKi8KPiArCWlmICghbmV3X3N0YXRl KQo+ICsJCXJldHVybiBkcm1fYXRvbWljX2NydGNfZWZmZWN0aXZlbHlfYWN0aXZlKG9sZF9zdGF0 ZSk7Cj4gKwo+ICsJLyoKPiArCSAqIFdlIG5lZWQgdG8gcnVuIHRocm91Z2ggdGhlIGNydGNfZnVu Y3MtPmRpc2FibGUoKSBmdW5jdGlvbiBpZiB0aGUgY3J0Ywo+ICsJICogaXMgY3VycmVudGx5IG9u LCBpZiBpdCdzIHRyYW5zaXRpb25pbmcgdG8gc2VsZiByZWZyZXNoIG1vZGUsIG9yIGlmCj4gKwkg KiBpdCdzIGluIHNlbGYgcmVmcmVzaCBtb2RlIGFuZCBuZWVkcyB0byBiZSBmdWxseSBkaXNhYmxl ZC4KPiArCSAqLwo+ICsJcmV0dXJuIG9sZF9zdGF0ZS0+YWN0aXZlIHx8Cj4gKwkgICAgICAgKG9s ZF9zdGF0ZS0+c2VsZl9yZWZyZXNoX2FjdGl2ZSAmJiAhbmV3X3N0YXRlLT5lbmFibGUpIHx8Cj4g KwkgICAgICAgbmV3X3N0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZlOwo+ICt9Cj4gKwo+ICBzdGF0 aWMgdm9pZAo+ICBkaXNhYmxlX291dHB1dHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPiAgewo+IEBAIC05NzQsNyArOTk4LDE0IEBA IGRpc2FibGVfb3V0cHV0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqb2xkX3N0YXRlKQo+ICAKPiAgCQlvbGRfY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNf Z2V0X29sZF9jcnRjX3N0YXRlKG9sZF9zdGF0ZSwgb2xkX2Nvbm5fc3RhdGUtPmNydGMpOwo+ICAK PiAtCQlpZiAoIW9sZF9jcnRjX3N0YXRlLT5hY3RpdmUgfHwKPiArCQlpZiAobmV3X2Nvbm5fc3Rh dGUtPmNydGMpCj4gKwkJCW5ld19jcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfbmV3X2NydGNf c3RhdGUoCj4gKwkJCQkJCW9sZF9zdGF0ZSwKPiArCQkJCQkJbmV3X2Nvbm5fc3RhdGUtPmNydGMp Owo+ICsJCWVsc2UKPiArCQkJbmV3X2NydGNfc3RhdGUgPSBOVUxMOwo+ICsKPiArCQlpZiAoIWNy dGNfbmVlZHNfZGlzYWJsZShvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUpIHx8Cj4gIAkJ ICAgICFkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldChvbGRfY29ubl9zdGF0ZS0+Y3J0Yy0+ c3RhdGUpKQo+ICAJCQljb250aW51ZTsKPiAgCj4gQEAgLTEwMTgsNyArMTA0OSw3IEBAIGRpc2Fi bGVfb3V0cHV0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqb2xkX3N0YXRlKQo+ICAJCWlmICghZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQobmV3 X2NydGNfc3RhdGUpKQo+ICAJCQljb250aW51ZTsKPiAgCj4gLQkJaWYgKCFvbGRfY3J0Y19zdGF0 ZS0+YWN0aXZlKQo+ICsJCWlmICghY3J0Y19uZWVkc19kaXNhYmxlKG9sZF9jcnRjX3N0YXRlLCBu ZXdfY3J0Y19zdGF0ZSkpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAgCQlmdW5jcyA9IGNydGMtPmhl bHBlcl9wcml2YXRlOwo+IEBAIC0yOTQ4LDYgKzI5NzksNyBAQCBpbnQgZHJtX2F0b21pY19oZWxw ZXJfc2V0X2NvbmZpZyhzdHJ1Y3QgZHJtX21vZGVfc2V0ICpzZXQsCj4gIAkJcmV0dXJuIC1FTk9N RU07Cj4gIAo+ICAJc3RhdGUtPmFjcXVpcmVfY3R4ID0gY3R4Owo+ICsKPiAgCXJldCA9IF9fZHJt X2F0b21pY19oZWxwZXJfc2V0X2NvbmZpZyhzZXQsIHN0YXRlKTsKPiAgCWlmIChyZXQgIT0gMCkK PiAgCQlnb3RvIGZhaWw7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWlj X3N0YXRlX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfc3RhdGVfaGVscGVy LmMKPiBpbmRleCA0OTg1Mzg0ZTUxZjYuLmVjOTBjNTI3ZGVlZCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19zdGF0ZV9oZWxwZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1fYXRvbWljX3N0YXRlX2hlbHBlci5jCj4gQEAgLTEwNSw2ICsxMDUsMTAgQEAgdm9p ZCBfX2RybV9hdG9taWNfaGVscGVyX2NydGNfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKPiAgCXN0YXRlLT5jb21taXQgPSBOVUxMOwo+ICAJc3RhdGUtPmV2ZW50ID0gTlVM TDsKPiAgCXN0YXRlLT5wYWdlZmxpcF9mbGFncyA9IDA7Cj4gKwo+ICsJLyogU2VsZiByZWZyZXNo IHNob3VsZCBiZSBjYW5jZWxlZCB3aGVuIGEgbmV3IHVwZGF0ZSBpcyBhdmFpbGFibGUgKi8KPiAr CXN0YXRlLT5hY3RpdmUgPSBkcm1fYXRvbWljX2NydGNfZWZmZWN0aXZlbHlfYWN0aXZlKHN0YXRl KTsKPiArCXN0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZlID0gZmFsc2U7Cj4gIH0KPiAgRVhQT1JU X1NZTUJPTChfX2RybV9hdG9taWNfaGVscGVyX2NydGNfZHVwbGljYXRlX3N0YXRlKTsKPiAgCj4g QEAgLTM3MCw2ICszNzQsMTAgQEAgX19kcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGlj YXRlX3N0YXRlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gIAo+ICAJLyogRG9u J3QgY29weSBvdmVyIGEgd3JpdGViYWNrIGpvYiwgdGhleSBhcmUgdXNlZCBvbmx5IG9uY2UgKi8K PiAgCXN0YXRlLT53cml0ZWJhY2tfam9iID0gTlVMTDsKPiArCj4gKwkvKiBTZWxmIHJlZnJlc2gg c2hvdWxkIGJlIGNhbmNlbGVkIHdoZW4gYSBuZXcgdXBkYXRlIGlzIGF2YWlsYWJsZSAqLwo+ICsJ c3RhdGUtPnNlbGZfcmVmcmVzaF9jaGFuZ2VkID0gc3RhdGUtPnNlbGZfcmVmcmVzaF9hY3RpdmU7 Cj4gKwlzdGF0ZS0+c2VsZl9yZWZyZXNoX2FjdGl2ZSA9IGZhbHNlOwo+ICB9Cj4gIEVYUE9SVF9T WU1CT0woX19kcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlKTsKPiAg Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3VhcGkuYyBiL2RyaXZl cnMvZ3B1L2RybS9kcm1fYXRvbWljX3VhcGkuYwo+IGluZGV4IDRlYjgxZjEwYmM1NC4uZDIwODUz MzIxNzJiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3VhcGkuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3VhcGkuYwo+IEBAIC00OTAsNyArNDkw LDcgQEAgZHJtX2F0b21pY19jcnRjX2dldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2NydGMgKmNydGMs Cj4gIAlzdHJ1Y3QgZHJtX21vZGVfY29uZmlnICpjb25maWcgPSAmZGV2LT5tb2RlX2NvbmZpZzsK PiAgCj4gIAlpZiAocHJvcGVydHkgPT0gY29uZmlnLT5wcm9wX2FjdGl2ZSkKPiAtCQkqdmFsID0g c3RhdGUtPmFjdGl2ZTsKPiArCQkqdmFsID0gZHJtX2F0b21pY19jcnRjX2VmZmVjdGl2ZWx5X2Fj dGl2ZShzdGF0ZSk7Cj4gIAllbHNlIGlmIChwcm9wZXJ0eSA9PSBjb25maWctPnByb3BfbW9kZV9p ZCkKPiAgCQkqdmFsID0gKHN0YXRlLT5tb2RlX2Jsb2IpID8gc3RhdGUtPm1vZGVfYmxvYi0+YmFz ZS5pZCA6IDA7Cj4gIAllbHNlIGlmIChwcm9wZXJ0eSA9PSBjb25maWctPnByb3BfdnJyX2VuYWJs ZWQpCj4gQEAgLTc4NSw3ICs3ODUsOCBAQCBkcm1fYXRvbWljX2Nvbm5lY3Rvcl9nZXRfcHJvcGVy dHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAgCWlmIChwcm9wZXJ0eSA9PSBj b25maWctPnByb3BfY3J0Y19pZCkgewo+ICAJCSp2YWwgPSAoc3RhdGUtPmNydGMpID8gc3RhdGUt PmNydGMtPmJhc2UuaWQgOiAwOwo+ICAJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBjb25maWctPmRw bXNfcHJvcGVydHkpIHsKPiAtCQkqdmFsID0gY29ubmVjdG9yLT5kcG1zOwo+ICsJCSp2YWwgPSBz dGF0ZS0+c2VsZl9yZWZyZXNoX2FjdGl2ZSA/IERSTV9NT0RFX0RQTVNfT04gOgo+ICsJCQljb25u ZWN0b3ItPmRwbXM7Cj4gIAl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+dHZfc2VsZWN0 X3N1YmNvbm5lY3Rvcl9wcm9wZXJ0eSkgewo+ICAJCSp2YWwgPSBzdGF0ZS0+dHYuc3ViY29ubmVj dG9yOwo+ICAJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBjb25maWctPnR2X2xlZnRfbWFyZ2luX3By b3BlcnR5KSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc2VsZl9yZWZyZXNo X2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zZWxmX3JlZnJlc2hfaGVscGVyLmMKPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uYTNhZmEwMzE0ODBlCj4g LS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc2VsZl9yZWZyZXNoX2hl bHBlci5jCj4gQEAgLTAsMCArMSwyMTIgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IE1JVCAqLwo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTkgR29vZ2xlLCBJbmMuCj4gKyAq Cj4gKyAqIEF1dGhvcnM6Cj4gKyAqIFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgo+ ICsgKi8KPiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJt X2F0b21pY19oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fY29ubmVjdG9yLmg+Cj4gKyNp bmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZGV2aWNlLmg+Cj4g KyNpbmNsdWRlIDxkcm0vZHJtX21vZGVfY29uZmlnLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX21v ZGVzZXRfbG9jay5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9wcmludC5oPgo+ICsjaW5jbHVkZSA8 ZHJtL2RybV9zZWxmX3JlZnJlc2hfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9iaXRvcHMu aD4KPiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1 ZS5oPgo+ICsKPiArLyoqCj4gKyAqIERPQzogb3ZlcnZpZXcKPiArICoKPiArICogVGhpcyBoZWxw ZXIgbGlicmFyeSBwcm92aWRlcyBhbiBlYXN5IHdheSBmb3IgZHJpdmVycyB0byBsZXZlcmFnZSB0 aGUgYXRvbWljCj4gKyAqIGZyYW1ld29yayB0byBpbXBsZW1lbnQgcGFuZWwgc2VsZiByZWZyZXNo IChTUikgc3VwcG9ydC4gRHJpdmVycyBhcmUKPiArICogcmVzcG9uc2libGUgZm9yIHJlZ2lzdGVy aW5nIGFuZCB1bnJlZ2lzdGVyaW5nIHRoZSBTUiBoZWxwZXJzIG9uIGxvYWQvdW5sb2FkLgo+ICsg Kgo+ICsgKiBPbmNlIGEgY3J0YyBoYXMgZW5hYmxlZCBTUiwgdGhlIGhlbHBlcnMgd2lsbCBtb25p dG9yIGFjdGl2aXR5IGFuZAo+ICsgKiBjYWxsIGJhY2sgaW50byB0aGUgZHJpdmVyIHRvIGVuYWJs ZS9kaXNhYmxlIFNSIGFzIGFwcHJvcHJpYXRlLiBUaGUgYmVzdCB3YXkKPiArICogdG8gdGhpbmsg YWJvdXQgdGhpcyBpcyB0aGF0IGl0J3MgYSBEUE1TIG9uL29mZiByZXF1ZXN0IHdpdGggYSBmbGFn IHNldCBpbgo+ICsgKiBzdGF0ZSB0aGF0IHRlbGxzIHlvdSB0byBkaXNhYmxlL2VuYWJsZSBTUiBv biB0aGUgcGFuZWwgaW5zdGVhZCBvZiBwb3dlci0KPiArICogY3ljbGluZyBpdC4KPiArICoKPiAr ICogRHJpdmVycyBtYXkgY2hvb3NlIHRvIGZ1bGx5IGRpc2FibGUgdGhlaXIgY3J0Yy9lbmNvZGVy L2JyaWRnZSBoYXJkd2FyZSwgb3IKPiArICogdGhleSBjYW4gdXNlIHRoZSAic2VsZl9yZWZyZXNo X2FjdGl2ZSIgYW5kICJzZWxmX3JlZnJlc2hfY2hhbmdlZCIgZmxhZ3MgaW4KPiArICogb2JqZWN0 IHN0YXRlIGlmIHRoZXkgd2FudCB0byBlbnRlciBsb3cgcG93ZXIgbW9kZSB3aXRob3V0IGZ1bGwg ZGlzYWJsZSAoaW4KPiArICogY2FzZSBmdWxsIGRpc2FibGUvZW5hYmxlIGlzIHRvbyBzbG93KS4K PiArICoKPiArICogU1Igd2lsbCBiZSBkZWFjdGl2YXRlZCBpZiB0aGVyZSBhcmUgYW55IGF0b21p YyB1cGRhdGVzIGFmZmVjdGluZyB0aGUKPiArICogcGlwZSB0aGF0IGlzIGluIFNSIG1vZGUuIElm IGEgY3J0YyBpcyBkcml2aW5nIG11bHRpcGxlIGNvbm5lY3RvcnMsIGFsbAo+ICsgKiBjb25uZWN0 b3JzIG11c3QgYmUgU1IgYXdhcmUgYW5kIGFsbCB3aWxsIGVudGVyIFNSIG1vZGUuCj4gKyAqLwo+ ICsKPiArc3RydWN0IGRybV9zZWxmX3JlZnJlc2hfc3RhdGUgewo+ICsJc3RydWN0IGRybV9jcnRj ICpjcnRjOwo+ICsJc3RydWN0IGRlbGF5ZWRfd29yayBlbnRyeV93b3JrOwo+ICsJc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnNhdmVfc3RhdGU7Cj4gKwl1bnNpZ25lZCBpbnQgZW50cnlfZGVsYXlf bXM7Cj4gK307Cj4gKwo+ICtzdGF0aWMgdm9pZCBkcm1fc2VsZl9yZWZyZXNoX2hlbHBlcl9lbnRy eV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiArewo+ICsJc3RydWN0IGRybV9zZWxm X3JlZnJlc2hfc3RhdGUgKnNyX3N0YXRlID0gY29udGFpbmVyX29mKAo+ICsJCQkJdG9fZGVsYXll ZF93b3JrKHdvcmspLAo+ICsJCQkJc3RydWN0IGRybV9zZWxmX3JlZnJlc2hfc3RhdGUsIGVudHJ5 X3dvcmspOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gc3Jfc3RhdGUtPmNydGM7Cj4gKwlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICsJc3RydWN0IGRybV9tb2Rlc2V0 X2FjcXVpcmVfY3R4IGN0eDsKPiArCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKPiAr CXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3Jfc3Rh dGUgKmNvbm5fc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4g KwlpbnQgaSwgcmV0Owo+ICsKPiArCWRybV9tb2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4LCAwKTsK PiArCj4gKwlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKPiArCWlmICghc3Rh dGUpIHsKPiArCQlyZXQgPSAtRU5PTUVNOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsKPiArcmV0 cnk6Cj4gKwlzdGF0ZS0+YWNxdWlyZV9jdHggPSAmY3R4Owo+ICsKPiArCWNydGNfc3RhdGUgPSBk cm1fYXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPiArCWlmIChJU19FUlIoY3J0 Y19zdGF0ZSkpIHsKPiArCQlyZXQgPSBQVFJfRVJSKGNydGNfc3RhdGUpOwo+ICsJCWdvdG8gb3V0 Owo+ICsJfQo+ICsKPiArCWlmICghY3J0Y19zdGF0ZS0+ZW5hYmxlKQo+ICsJCWdvdG8gb3V0Owo+ ICsKPiArCXJldCA9IGRybV9hdG9taWNfYWRkX2FmZmVjdGVkX2Nvbm5lY3RvcnMoc3RhdGUsIGNy dGMpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIG91dDsKPiArCj4gKwljcnRjX3N0YXRlLT5hY3Rp dmUgPSBmYWxzZTsKPiArCWNydGNfc3RhdGUtPnNlbGZfcmVmcmVzaF9hY3RpdmUgPSB0cnVlOwo+ ICsKPiArCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm4sIGNvbm5f c3RhdGUsIGkpIHsKPiArCQlpZiAoIWNvbm5fc3RhdGUtPnNlbGZfcmVmcmVzaF9hd2FyZSkKPiAr CQkJZ290byBvdXQ7Cj4gKwo+ICsJCWNvbm5fc3RhdGUtPnNlbGZfcmVmcmVzaF9jaGFuZ2VkID0g dHJ1ZTsKPiArCQljb25uX3N0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZlID0gdHJ1ZTsKPiArCX0K PiArCj4gKwlyZXQgPSBkcm1fYXRvbWljX2NvbW1pdChzdGF0ZSk7Cj4gKwlpZiAocmV0KQo+ICsJ CWdvdG8gb3V0Owo+ICsKPiArb3V0Ogo+ICsJaWYgKHJldCA9PSAtRURFQURMSykgewo+ICsJCWRy bV9hdG9taWNfc3RhdGVfY2xlYXIoc3RhdGUpOwo+ICsJCXJldCA9IGRybV9tb2Rlc2V0X2JhY2tv ZmYoJmN0eCk7Cj4gKwkJaWYgKCFyZXQpCj4gKwkJCWdvdG8gcmV0cnk7Cj4gKwl9Cj4gKwo+ICsJ ZHJtX2F0b21pY19zdGF0ZV9wdXQoc3RhdGUpOwo+ICsJZHJtX21vZGVzZXRfZHJvcF9sb2Nrcygm Y3R4KTsKPiArCWRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKPiArfQo+ICsKPiArLyoq Cj4gKyAqIGRybV9zZWxmX3JlZnJlc2hfaGVscGVyX2FsdGVyX3N0YXRlIC0gQWx0ZXJzIHRoZSBh dG9taWMgc3RhdGUgZm9yIFNSIGV4aXQKPiArICogQHN0YXRlOiB0aGUgc3RhdGUgY3VycmVudGx5 IGJlaW5nIGNoZWNrZWQKPiArICoKPiArICogQ2FsbGVkIGF0IHRoZSBlbmQgb2YgYXRvbWljIGNo ZWNrLiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0aGUgc3RhdGUgZm9yIGZsYWdzCj4gKyAqIGluY29t cGF0aWJsZSB3aXRoIHNlbGYgcmVmcmVzaCBleGl0IGFuZCBjaGFuZ2VzIHRoZW0uIFRoaXMgaXMg YSBiaXQKPiArICogZGlzaW5nZW51b3VzIHNpbmNlIHVzZXJzcGFjZSBpcyBleHBlY3Rpbmcgb25l IHRoaW5nIGFuZCB3ZSdyZSBnaXZpbmcgaXQKPiArICogYW5vdGhlci4gSG93ZXZlciBpbiBvcmRl ciB0byBrZWVwIHNlbGYgcmVmcmVzaCBlbnRpcmVseSBoaWRkZW4gZnJvbQo+ICsgKiB1c2Vyc3Bh Y2UsIHRoaXMgaXMgcmVxdWlyZWQuCj4gKyAqCj4gKyAqIEF0IHRoZSBlbmQsIHdlIHF1ZXVlIHVw IHRoZSBzZWxmIHJlZnJlc2ggZW50cnkgd29yayBzbyB3ZSBjYW4gZW50ZXIgUFNSIGFmdGVyCj4g KyAqIHRoZSBkZXNpcmVkIGRlbGF5Lgo+ICsgKi8KPiArdm9pZCBkcm1fc2VsZl9yZWZyZXNoX2hl bHBlcl9hbHRlcl9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gK3sKPiAr CXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZTsKPiArCWludCBpOwo+ICsKPiArCWlmIChzdGF0ZS0+YXN5bmNfdXBkYXRlKSB7Cj4gKwkJ Zm9yX2VhY2hfb2xkX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsK PiArCQkJaWYgKGNydGNfc3RhdGUtPnNlbGZfcmVmcmVzaF9hY3RpdmUpIHsKPiArCQkJCXN0YXRl LT5hc3luY191cGRhdGUgPSBmYWxzZTsKPiArCQkJCWJyZWFrOwo+ICsJCQl9Cj4gKwkJfQo+ICsJ fQo+ICsJaWYgKCFzdGF0ZS0+YWxsb3dfbW9kZXNldCkgewo+ICsJCWZvcl9lYWNoX29sZF9jcnRj X2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gKwkJCWlmIChjcnRjX3N0 YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZlKSB7Cj4gKwkJCQlzdGF0ZS0+YWxsb3dfbW9kZXNldCA9 IHRydWU7Cj4gKwkJCQlicmVhazsKPiArCQkJfQo+ICsJCX0KPiArCX0KPiArCj4gKwlmb3JfZWFj aF9uZXdfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+ICsJCXN0 cnVjdCBkcm1fc2VsZl9yZWZyZXNoX3N0YXRlICpzcl9zdGF0ZTsKPiArCj4gKwkJLyogRG9uJ3Qg dHJpZ2dlciB0aGUgZW50cnkgdGltZXIgd2hlbiB3ZSdyZSBhbHJlYWR5IGluIFNSICovCj4gKwkJ aWYgKGNydGNfc3RhdGUtPnNlbGZfcmVmcmVzaF9hY3RpdmUpCj4gKwkJCWNvbnRpbnVlOwo+ICsK PiArCQlzcl9zdGF0ZSA9IGNydGMtPnNlbGZfcmVmcmVzaF9zdGF0ZTsKPiArCQltb2RfZGVsYXll ZF93b3JrKHN5c3RlbV93cSwgJnNyX3N0YXRlLT5lbnRyeV93b3JrLAo+ICsJCQkgbXNlY3NfdG9f amlmZmllcyhzcl9zdGF0ZS0+ZW50cnlfZGVsYXlfbXMpKTsKPiArCX0KPiArfQo+ICtFWFBPUlRf U1lNQk9MKGRybV9zZWxmX3JlZnJlc2hfaGVscGVyX2FsdGVyX3N0YXRlKTsKPiArCj4gKy8qKgo+ ICsgKiBkcm1fc2VsZl9yZWZyZXNoX2hlbHBlcl9yZWdpc3RlciAtIFJlZ2lzdGVycyBzZWxmIHJl ZnJlc2ggaGVscGVycyBmb3IgYSBjcnRjCj4gKyAqIEBjcnRjOiB0aGUgY3J0YyB3aGljaCBzdXBw b3J0cyBzZWxmIHJlZnJlc2ggc3VwcG9ydGVkIGRpc3BsYXlzCj4gKyAqIEBlbnRyeV9kZWxheV9t czogYW1vdW50IG9mIGluYWN0aXZpdHkgdG8gd2FpdCBiZWZvcmUgZW50ZXJpbmcgc2VsZiByZWZy ZXNoCj4gKyAqLwo+ICtpbnQgZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXJfcmVnaXN0ZXIoc3RydWN0 IGRybV9jcnRjICpjcnRjLAo+ICsJCQkJICAgICB1bnNpZ25lZCBpbnQgZW50cnlfZGVsYXlfbXMp Cj4gK3sKPiArCXN0cnVjdCBkcm1fc2VsZl9yZWZyZXNoX3N0YXRlICpzcl9zdGF0ZSA9IGNydGMt PnNlbGZfcmVmcmVzaF9zdGF0ZTsKPiArCj4gKwkvKiBIZWxwZXIgaXMgYWxyZWFkeSByZWdpc3Rl cmVkICovCj4gKwlpZiAoV0FSTl9PTihzcl9zdGF0ZSkpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4g Kwo+ICsJc3Jfc3RhdGUgPSBremFsbG9jKHNpemVvZigqc3Jfc3RhdGUpLCBHRlBfS0VSTkVMKTsK PiArCWlmICghc3Jfc3RhdGUpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJSU5JVF9ERUxB WUVEX1dPUksoJnNyX3N0YXRlLT5lbnRyeV93b3JrLAo+ICsJCQkgIGRybV9zZWxmX3JlZnJlc2hf aGVscGVyX2VudHJ5X3dvcmspOwo+ICsJc3Jfc3RhdGUtPmVudHJ5X2RlbGF5X21zID0gZW50cnlf ZGVsYXlfbXM7Cj4gKwlzcl9zdGF0ZS0+Y3J0YyA9IGNydGM7Cj4gKwo+ICsJY3J0Yy0+c2VsZl9y ZWZyZXNoX3N0YXRlID0gc3Jfc3RhdGU7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICtFWFBPUlRfU1lN Qk9MKGRybV9zZWxmX3JlZnJlc2hfaGVscGVyX3JlZ2lzdGVyKTsKPiArCj4gKy8qKgo+ICsgKiBk cm1fc2VsZl9yZWZyZXNoX2hlbHBlcl91bnJlZ2lzdGVyIC0gVW5yZWdpc3RlcnMgc2VsZiByZWZy ZXNoIGhlbHBlcnMKPiArICogQGNydGM6IHRoZSBjcnRjIHRvIHVucmVnaXN0ZXIKPiArICovCj4g K3ZvaWQgZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXJfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCj4gK3sKPiArCXN0cnVjdCBkcm1fc2VsZl9yZWZyZXNoX3N0YXRlICpzcl9zdGF0ZSA9 IGNydGMtPnNlbGZfcmVmcmVzaF9zdGF0ZTsKPiArCj4gKwkvKiBIZWxwZXIgaXMgYWxyZWFkeSB1 bnJlZ2lzdGVyZWQgKi8KPiArCWlmIChzcl9zdGF0ZSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJY3J0 Yy0+c2VsZl9yZWZyZXNoX3N0YXRlID0gTlVMTDsKPiArCj4gKwljYW5jZWxfZGVsYXllZF93b3Jr X3N5bmMoJnNyX3N0YXRlLT5lbnRyeV93b3JrKTsKPiArCWtmcmVlKHNyX3N0YXRlKTsKPiArfQo+ ICtFWFBPUlRfU1lNQk9MKGRybV9zZWxmX3JlZnJlc2hfaGVscGVyX3VucmVnaXN0ZXIpOwo+IGRp ZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fYXRvbWljLmggYi9pbmNsdWRlL2RybS9kcm1fYXRv bWljLmgKPiBpbmRleCA4MjRhNWVkNGUyMTYuLjFlOWNhYjFkYTk3YSAxMDA2NDQKPiAtLS0gYS9p bmNsdWRlL2RybS9kcm1fYXRvbWljLmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1fYXRvbWljLmgK PiBAQCAtOTQ0LDQgKzk0NCwxOSBAQCBkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldChjb25z dCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQo+ICAJICAgICAgIHN0YXRlLT5jb25uZWN0 b3JzX2NoYW5nZWQ7Cj4gIH0KPiAgCj4gKy8qKgo+ICsgKiBkcm1fYXRvbWljX2NydGNfZWZmZWN0 aXZlbHlfYWN0aXZlIC0gY29tcHV0ZSB3aGV0aGVyIGNydGMgaXMgYWN0dWFsbHkgYWN0aXZlCj4g KyAqIEBzdGF0ZTogJmRybV9jcnRjX3N0YXRlIGZvciB0aGUgQ1JUQwo+ICsgKgo+ICsgKiBXaGVu IGluIHNlbGYgcmVmcmVzaCBtb2RlLCB0aGUgY3J0Y19zdGF0ZS0+YWN0aXZlIHZhbHVlIHdpbGwg YmUgZmFsc2UsIHNpbmNlCj4gKyAqIHRoZSBjcnRjIGlzIG9mZi4gSG93ZXZlciBpbiBzb21lIGNh c2VzIHdlJ3JlIGludGVyZXN0ZWQgaW4gd2hldGhlciB0aGUgY3J0Ywo+ICsgKiBpcyBhY3RpdmUs IG9yIGVmZmVjdGl2ZWx5IGFjdGl2ZSAoaWU6IGl0J3MgY29ubmVjdGVkIHRvIGFuIGFjdGl2ZSBk aXNwbGF5KS4KPiArICogSW4gdGhlc2UgY2FzZXMsIHVzZSB0aGlzIGZ1bmN0aW9uIGluc3RlYWQg b2YganVzdCBjaGVja2luZyBhY3RpdmUuCj4gKyAqLwo+ICtzdGF0aWMgaW5saW5lIGJvb2wKPiAr ZHJtX2F0b21pY19jcnRjX2VmZmVjdGl2ZWx5X2FjdGl2ZShjb25zdCBzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKnN0YXRlKQo+ICt7Cj4gKwlyZXR1cm4gc3RhdGUtPmFjdGl2ZSB8fCBzdGF0ZS0+c2Vs Zl9yZWZyZXNoX2FjdGl2ZTsKPiArfQo+ICsKPiAgI2VuZGlmIC8qIERSTV9BVE9NSUNfSF8gKi8K PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oIGIvaW5jbHVkZS9kcm0v ZHJtX2Nvbm5lY3Rvci5oCj4gaW5kZXggYzgwNjE5OTJkNmNiLi4wYWU3ZTgxMmVjNjIgMTAwNjQ0 Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gKysrIGIvaW5jbHVkZS9kcm0v ZHJtX2Nvbm5lY3Rvci5oCj4gQEAgLTUwMSw2ICs1MDEsMzcgQEAgc3RydWN0IGRybV9jb25uZWN0 b3Jfc3RhdGUgewo+ICAJLyoqIEB0djogVFYgY29ubmVjdG9yIHN0YXRlICovCj4gIAlzdHJ1Y3Qg ZHJtX3R2X2Nvbm5lY3Rvcl9zdGF0ZSB0djsKPiAgCj4gKwkvKioKPiArCSAqIEBzZWxmX3JlZnJl c2hfY2hhbmdlZDoKPiArCSAqCj4gKwkgKiBTZXQgdHJ1ZSB3aGVuIHNlbGYgcmVmcmVzaCBzdGF0 dXMgaGFzIGNoYW5nZWQuIFRoaXMgaXMgdXNlZnVsIGZvcgo+ICsJICogdXNlIGluIGVuY29kZXIv YnJpZGdlIGVuYWJsZSB3aGVyZSB0aGUgb2xkIHN0YXRlIGlzIHVuYXZhaWxhYmxlIHRvCj4gKwkg KiB0aGUgZHJpdmVyIGFuZCBpdCBuZWVkcyB0byBrbm93IHdoZXRoZXIgdGhlIGVuYWJsZSB0cmFu c2l0aW9uIGlzIGEKPiArCSAqIGZ1bGwgdHJhbnNpdGlvbiwgb3IgaWYgaXQganVzdCBuZWVkcyB0 byBleGl0IHNlbGYgcmVmcmVzaCBtb2RlLgo+ICsJICovCj4gKwlib29sIHNlbGZfcmVmcmVzaF9j aGFuZ2VkOwo+ICsKPiArCS8qKgo+ICsJICogQHNlbGZfcmVmcmVzaF9hY3RpdmU6Cj4gKwkgKgo+ ICsJICogVXNlZCBieSB0aGUgc2VsZiByZWZyZXNoIChTUikgaGVscGVycyB0byBkZW5vdGUgd2hl biB0aGUgZGlzcGxheQo+ICsJICogc2hvdWxkIGJlIHNlbGYgcmVmcmVzaGluZy4gSWYgeW91ciBj b25uZWN0b3IgaXMgU1ItY2FwYWJsZSwgY2hlY2sKPiArCSAqIHRoaXMgZmxhZyBpbiAuZGlzYWJs ZSgpLiBJZiBpdCBpcyB0cnVlLCBpbnN0ZWFkIG9mIHNodXR0aW5nIG9mZiB0aGUKPiArCSAqIHBh bmVsLCBwdXQgaXQgaW50byBzZWxmIHJlZnJlc2hpbmcgbW9kZS4KPiArCSAqLwo+ICsJYm9vbCBz ZWxmX3JlZnJlc2hfYWN0aXZlOwo+ICsKPiArCS8qKgo+ICsJICogQHNlbGZfcmVmcmVzaF9hd2Fy ZToKPiArCSAqCj4gKwkgKiBUaGlzIHRyYWNrcyB3aGV0aGVyIGEgY29ubmVjdG9yIGlzIGF3YXJl IG9mIHRoZSBzZWxmIHJlZnJlc2ggc3RhdGUuCj4gKwkgKiBJdCBzaG91bGQgYmUgc2V0IHRvIHRy dWUgZm9yIHRob3NlIGNvbm5lY3RvciBpbXBsZW1lbnRhdGlvbnMgd2hpY2gKPiArCSAqIHVuZGVy c3RhbmQgdGhlIHNlbGYgcmVmcmVzaCBzdGF0ZS4gVGhpcyBpcyBuZWVkZWQgc2luY2UgdGhlIGNy dGMKPiArCSAqIHJlZ2lzdGVycyB0aGUgc2VsZiByZWZyZXNoIGhlbHBlcnMgYW5kIGl0IGRvZXNu J3Qga25vdyBpZiB0aGUKPiArCSAqIGNvbm5lY3RvcnMgZG93bnN0cmVhbSBoYXZlIGltcGxlbWVu dGVkIHNlbGYgcmVmcmVzaCBlbnRyeS9leGl0Lgo+ICsJICovCj4gKwlib29sIHNlbGZfcmVmcmVz aF9hd2FyZTsKPiArCj4gIAkvKioKPiAgCSAqIEBwaWN0dXJlX2FzcGVjdF9yYXRpbzogQ29ubmVj dG9yIHByb3BlcnR5IHRvIGNvbnRyb2wgdGhlCj4gIAkgKiBIRE1JIGluZm9mcmFtZSBhc3BlY3Qg cmF0aW8gc2V0dGluZy4KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2NydGMuaCBiL2lu Y2x1ZGUvZHJtL2RybV9jcnRjLmgKPiBpbmRleCBmN2MzMDIyZGJkZjQuLjIwOGQ2ODEyOWI0YyAx MDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCj4gKysrIGIvaW5jbHVkZS9kcm0v ZHJtX2NydGMuaAo+IEBAIC01Myw2ICs1Myw3IEBAIHN0cnVjdCBkcm1fbW9kZV9zZXQ7Cj4gIHN0 cnVjdCBkcm1fZmlsZTsKPiAgc3RydWN0IGRybV9jbGlwX3JlY3Q7Cj4gIHN0cnVjdCBkcm1fcHJp bnRlcjsKPiArc3RydWN0IGRybV9zZWxmX3JlZnJlc2hfc3RhdGU7Cj4gIHN0cnVjdCBkZXZpY2Vf bm9kZTsKPiAgc3RydWN0IGRtYV9mZW5jZTsKPiAgc3RydWN0IGVkaWQ7Cj4gQEAgLTI5OSw2ICsz MDAsMTcgQEAgc3RydWN0IGRybV9jcnRjX3N0YXRlIHsKPiAgCSAqLwo+ICAJYm9vbCB2cnJfZW5h YmxlZDsKPiAgCj4gKwkvKioKPiArCSAqIEBzZWxmX3JlZnJlc2hfYWN0aXZlOgo+ICsJICoKPiAr CSAqIFVzZWQgYnkgdGhlIHNlbGYgcmVmcmVzaCBoZWxwZXJzIHRvIGRlbm90ZSB3aGVuIGEgc2Vs ZiByZWZyZXNoCj4gKwkgKiB0cmFuc2l0aW9uIGlzIG9jY3VyaW5nLiBUaGlzIHdpbGwgYmUgc2V0 IG9uIGVuYWJsZS9kaXNhYmxlIGNhbGxiYWNrcwo+ICsJICogd2hlbiBzZWxmIHJlZnJlc2ggaXMg YmVpbmcgZW5hYmxlZCBvciBkaXNhYmxlZC4gSW4gc29tZSBjYXNlcywgaXQgbWF5Cj4gKwkgKiBu b3QgYmUgZGVzaXJhYmxlIHRvIGZ1bGx5IHNodXQgb2ZmIHRoZSBjcnRjIGR1cmluZyBzZWxmIHJl ZnJlc2guCj4gKwkgKiBDUlRDJ3MgY2FuIGluc3BlY3QgdGhpcyBmbGFnIGFuZCBkZXRlcm1pbmUg dGhlIGJlc3QgY291cnNlIG9mIGFjdGlvbi4KPiArCSAqLwo+ICsJYm9vbCBzZWxmX3JlZnJlc2hf YWN0aXZlOwo+ICsKPiAgCS8qKgo+ICAJICogQGV2ZW50Ogo+ICAJICoKPiBAQCAtMTA4Nyw2ICsx MDk5LDEzIEBAIHN0cnVjdCBkcm1fY3J0YyB7Cj4gIAkgKiBUaGUgbmFtZSBvZiB0aGUgQ1JUQydz IGZlbmNlIHRpbWVsaW5lLgo+ICAJICovCj4gIAljaGFyIHRpbWVsaW5lX25hbWVbMzJdOwo+ICsK PiArCS8qKgo+ICsJICogQHNlbGZfcmVmcmVzaF9zdGF0ZTogSG9sZHMgdGhlIHN0YXRlIGZvciB0 aGUgc2VsZiByZWZyZXNoIGhlbHBlcnMKPiArCSAqCj4gKwkgKiBJbml0aWFsaXplZCB2aWEgZHJt X3NlbGZfcmVmcmVzaF9oZWxwZXJfcmVnaXN0ZXIoKS4KPiArCSAqLwo+ICsJc3RydWN0IGRybV9z ZWxmX3JlZnJlc2hfc3RhdGUgKnNlbGZfcmVmcmVzaF9zdGF0ZTsKPiAgfTsKPiAgCj4gIC8qKgo+ IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fc2VsZl9yZWZyZXNoX2hlbHBlci5oIGIvaW5j bHVkZS9kcm0vZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXIuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi4wMTVkYWNiOGE4MDcKPiAtLS0gL2Rldi9udWxsCj4gKysr IGIvaW5jbHVkZS9kcm0vZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXIuaAo+IEBAIC0wLDAgKzEsMjMg QEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVCAqLwo+ICsvKgo+ICsgKiBDb3B5 cmlnaHQgKEMpIDIwMTkgR29vZ2xlLCBJbmMuCj4gKyAqCj4gKyAqIEF1dGhvcnM6Cj4gKyAqIFNl YW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgo+ICsgKi8KPiArI2lmbmRlZiBEUk1fU0VM Rl9SRUZSRVNIX0hFTFBFUl9IXwo+ICsjZGVmaW5lIERSTV9TRUxGX1JFRlJFU0hfSEVMUEVSX0hf Cj4gKwo+ICtzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZTsKPiArc3RydWN0IGRybV9jb25uZWN0b3I7 Cj4gK3N0cnVjdCBkcm1fZGV2aWNlOwo+ICtzdHJ1Y3QgZHJtX3NlbGZfcmVmcmVzaF9zdGF0ZTsK PiArc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4Owo+ICsKPiArdm9pZCBkcm1fc2VsZl9y ZWZyZXNoX2hlbHBlcl9hbHRlcl9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUp Owo+ICsKPiAraW50IGRybV9zZWxmX3JlZnJlc2hfaGVscGVyX3JlZ2lzdGVyKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKPiArCQkJCSAgICAgdW5zaWduZWQgaW50IGVudHJ5X2RlbGF5X21zKTsKPiAr Cj4gK3ZvaWQgZHJtX3NlbGZfcmVmcmVzaF9oZWxwZXJfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpOwo+ICsjZW5kaWYKPiAtLSAKPiBTZWFuIFBhdWwsIFNvZnR3YXJlIEVuZ2luZWVy LCBHb29nbGUgLyBDaHJvbWl1bSBPUwo+IAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5n aW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==