From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: Re: [PATCH 07/25] drm/msm/dpu: reserve using crtc state Date: Fri, 12 Oct 2018 15:19:35 -0700 Message-ID: <455b85f16dfaab1f0f19cc97c5fd05ec@codeaurora.org> References: <1539059262-8326-1-git-send-email-jsanka@codeaurora.org> <1539059262-8326-8-git-send-email-jsanka@codeaurora.org> <20181009210600.GQ154160@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Sean Paul Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, hoegsberg-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gMjAxOC0xMC0wOSAyMzoyOCwgSmV5a3VtYXIgU2Fua2FyYW4gd3JvdGU6Cj4gT24gMjAxOC0x MC0wOSAxNDowNiwgU2VhbiBQYXVsIHdyb3RlOgo+PiBPbiBNb24sIE9jdCAwOCwgMjAxOCBhdCAw OToyNzoyNFBNIC0wNzAwLCBKZXlrdW1hciBTYW5rYXJhbiB3cm90ZToKPj4+IERQVSBtYWludGFp bmVkIHJlc2VydmF0aW9uIGxpc3RzIHRvIGNhY2hlIGFzc2lnbmVkCj4+PiBIVyBibG9ja3MgZm9y IHRoZSBkaXNwbGF5IGFuZCBhIHJldHJpZXZhbCBtZWNoYW5pc20gZm9yCj4+PiB0aGUgaW5kaXZp ZHVhbCBEUk0gY29tcG9uZW50cyB0byBxdWVyeSB0aGVpciByZXNwZWN0aXZlCj4+PiBIVyBibG9j a3MuCj4+PiAKPj4+IFRoaXMgcGF0Y2ggdXNlcyB0aGUgc3ViLWNsYXNzZWQgQ1JUQyBzdGF0ZSB0 byBzdG9yZQo+Pj4gYW5kIHRyYWNrIEhXIGJsb2NrcyBhc3NpZ25lZCBmb3IgZGlmZmVyZW50IGNv bXBvbmVudHMKPj4+IG9mIHRoZSBkaXNwbGF5IHBpcGVsaW5lLiBJdCBoZWxwcyB0aGUgZHJpdmVy Ogo+Pj4gLSB0byBnZXQgcmlkIG9mIHVud2FudGVkIHN0b3JlIGFuZCByZXRyaWV2YWwgUk0gQVBJ J3MKPj4+IC0gdG8gcHJlc2VydmUgSFcgcmVzb3VyY2VzIGFzc2lnbmVkIGluIGF0b21pY19jaGVj awo+Pj4gICB0aHJvdWdoIGF0b21pYyBzd2FwL2R1cGxpY2F0ZS4KPj4+IAo+Pj4gU2VwYXJhdGUg cGF0Y2ggaXMgc3VibWl0dGVkIHRvIHJlbW92ZSByZXNvdXJjZQo+Pj4gcmVzZXJ2YXRpb24gaW4g YXRvbWljX2NvbW1pdCBwYXRoLgo+Pj4gCj4+PiBTaWduZWQtb2ZmLWJ5OiBKZXlrdW1hciBTYW5r YXJhbiA8anNhbmthQGNvZGVhdXJvcmEub3JnPgo+Pj4gLS0tCj4+PiAgZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYyAgICAgICAgICAgfCA2NQo+PiArKystLS0tLS0tLS0t LS0tLS0tLS0tCj4+PiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuaCAg ICAgICAgICAgfCAxNCArKysrKwo+Pj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9lbmNvZGVyLmMgICAgICAgIHwgMjggKysrLS0tLS0tLQo+Pj4gIC4uLi9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c192aWQuYyAgIHwgMjAgKystLS0tLQo+Pj4gIGRyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jICAgICAgICAgICAgIHwgNTgKPj4gKysr KysrKysrKysrLS0tLS0tLQo+Pj4gIDUgZmlsZXMgY2hhbmdlZCwgNzIgaW5zZXJ0aW9ucygrKSwg MTEzIGRlbGV0aW9ucygtKQo+Pj4gCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2NydGMuYwo+PiBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9jcnRjLmMKPj4+IGluZGV4IDQ5NjA2NDEuLjA2MjVmNTYgMTAwNjQ0Cj4+PiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jCj4+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jCj4+PiBAQCAtNDIxLDY5ICs0MjEsMjAg QEAgdm9pZCBkcHVfY3J0Y19jb21wbGV0ZV9jb21taXQoc3RydWN0IGRybV9jcnRjCj4+ICpjcnRj LAo+Pj4gIAl0cmFjZV9kcHVfY3J0Y19jb21wbGV0ZV9jb21taXQoRFJNSUQoY3J0YykpOwo+Pj4g IH0KPj4+IAo+Pj4gLXN0YXRpYyB2b2lkIF9kcHVfY3J0Y19zZXR1cF9taXhlcl9mb3JfZW5jb2Rl cigKPj4+IC0JCXN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPj4+IC0JCXN0cnVjdCBkcm1fZW5jb2Rl ciAqZW5jKQo+Pj4gK3N0YXRpYyB2b2lkIF9kcHVfY3J0Y19zZXR1cF9taXhlcnMoc3RydWN0IGRy bV9jcnRjICpjcnRjKQo+Pj4gIHsKPj4+ICAJc3RydWN0IGRwdV9jcnRjX3N0YXRlICpjc3RhdGUg PSB0b19kcHVfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Cj4+PiAtCXN0cnVjdCBkcHVfa21zICpk cHVfa21zID0gX2RwdV9jcnRjX2dldF9rbXMoY3J0Yyk7Cj4+PiAtCXN0cnVjdCBkcHVfcm0gKnJt ID0gJmRwdV9rbXMtPnJtOwo+Pj4gIAlzdHJ1Y3QgZHB1X2NydGNfbWl4ZXIgKm1peGVyOwo+Pj4g LQlzdHJ1Y3QgZHB1X2h3X2N0bCAqbGFzdF92YWxpZF9jdGwgPSBOVUxMOwo+Pj4gLQlpbnQgaTsK Pj4+IC0Jc3RydWN0IGRwdV9ybV9od19pdGVyIGxtX2l0ZXIsIGN0bF9pdGVyOwo+Pj4gLQo+Pj4g LQlkcHVfcm1faW5pdF9od19pdGVyKCZsbV9pdGVyLCBlbmMtPmJhc2UuaWQsIERQVV9IV19CTEtf TE0pOwo+Pj4gLQlkcHVfcm1faW5pdF9od19pdGVyKCZjdGxfaXRlciwgZW5jLT5iYXNlLmlkLCBE UFVfSFdfQkxLX0NUTCk7Cj4+PiArCWludCBpLCBjdGxfaW5kZXg7Cj4+PiAKPj4+ICAJLyogU2V0 IHVwIGFsbCB0aGUgbWl4ZXJzIGFuZCBjdGxzIHJlc2VydmVkIGJ5IHRoaXMgZW5jb2RlciAqLwo+ Pj4gLQlmb3IgKGkgPSBjc3RhdGUtPm51bV9taXhlcnM7IGkgPCBBUlJBWV9TSVpFKGNzdGF0ZS0+ bWl4ZXJzKTsgaSsrKQo+PiB7Cj4+PiArCWZvciAoaSA9IDA7IGkgPCBjc3RhdGUtPm51bV9taXhl cnM7IGkrKykgewo+Pj4gIAkJbWl4ZXIgPSAmY3N0YXRlLT5taXhlcnNbaV07Cj4+PiAKPj4+IC0J CWlmICghZHB1X3JtX2dldF9odyhybSwgJmxtX2l0ZXIpKQo+Pj4gLQkJCWJyZWFrOwo+Pj4gLQkJ bWl4ZXItPmh3X2xtID0gKHN0cnVjdCBkcHVfaHdfbWl4ZXIgKilsbV9pdGVyLmh3Owo+Pj4gLQo+ Pj4gIAkJLyogQ1RMIG1heSBiZSA8PSBMTXMsIGlmIDwsIG11bHRpcGxlIExNcyBjb250cm9sbGVk IGJ5IDEKPj4gQ1RMICovCj4+PiAtCQlpZiAoIWRwdV9ybV9nZXRfaHcocm0sICZjdGxfaXRlcikp IHsKPj4+IC0JCQlEUFVfREVCVUcoIm5vIGN0bCBhc3NpZ25lZCB0byBsbSAlZCwgdXNpbmcKPj4g cHJldmlvdXNcbiIsCj4+PiAtCQkJCQltaXhlci0+aHdfbG0tPmlkeCAtIExNXzApOwo+Pj4gLQkJ CW1peGVyLT5sbV9jdGwgPSBsYXN0X3ZhbGlkX2N0bDsKPj4+IC0JCX0gZWxzZSB7Cj4+PiAtCQkJ bWl4ZXItPmxtX2N0bCA9IChzdHJ1Y3QgZHB1X2h3X2N0bCAqKWN0bF9pdGVyLmh3Owo+Pj4gLQkJ CWxhc3RfdmFsaWRfY3RsID0gbWl4ZXItPmxtX2N0bDsKPj4+IC0JCX0KPj4+IC0KPj4+IC0JCS8q IFNob3VsZG4ndCBoYXBwZW4sIG1peGVycyBhcmUgYWx3YXlzID49IGN0bHMgKi8KPj4+IC0JCWlm ICghbWl4ZXItPmxtX2N0bCkgewo+Pj4gLQkJCURQVV9FUlJPUigibm8gdmFsaWQgY3RscyBmb3Vu ZCBmb3IgbG0gJWRcbiIsCj4+PiAtCQkJCQltaXhlci0+aHdfbG0tPmlkeCAtIExNXzApOwo+Pj4g LQkJCXJldHVybjsKPj4+IC0JCX0KPj4+IC0KPj4+IC0JCWNzdGF0ZS0+bnVtX21peGVycysrOwo+ Pj4gLQkJRFBVX0RFQlVHKCJzZXR1cCBtaXhlciAlZDogbG0gJWRcbiIsCj4+PiAtCQkJCWksIG1p eGVyLT5od19sbS0+aWR4IC0gTE1fMCk7Cj4+PiAtCQlEUFVfREVCVUcoInNldHVwIG1peGVyICVk OiBjdGwgJWRcbiIsCj4+PiAtCQkJCWksIG1peGVyLT5sbV9jdGwtPmlkeCAtIENUTF8wKTsKPj4+ IC0JfQo+Pj4gLX0KPj4+IC0KPj4+IC1zdGF0aWMgdm9pZCBfZHB1X2NydGNfc2V0dXBfbWl4ZXJz KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPj4+IC17Cj4+PiAtCXN0cnVjdCBkcHVfY3J0YyAqZHB1 X2NydGMgPSB0b19kcHVfY3J0YyhjcnRjKTsKPj4+IC0Jc3RydWN0IGRybV9lbmNvZGVyICplbmM7 Cj4+PiAtCj4+PiAtCW11dGV4X2xvY2soJmRwdV9jcnRjLT5jcnRjX2xvY2spOwo+Pj4gLQkvKiBD aGVjayBmb3IgbWl4ZXJzIG9uIGFsbCBlbmNvZGVycyBhdHRhY2hlZCB0byB0aGlzIGNydGMgKi8K Pj4+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShlbmMsICZjcnRjLT5kZXYtPm1vZGVfY29uZmlnLmVu Y29kZXJfbGlzdCwKPj4gaGVhZCkgewo+Pj4gLQkJaWYgKGVuYy0+Y3J0YyAhPSBjcnRjKQo+Pj4g LQkJCWNvbnRpbnVlOwo+Pj4gLQo+Pj4gLQkJX2RwdV9jcnRjX3NldHVwX21peGVyX2Zvcl9lbmNv ZGVyKGNydGMsIGVuYyk7Cj4+PiArCQljdGxfaW5kZXggPSBtaW4oaSwgY3N0YXRlLT5udW1fY3Rs cyAtIDEpOwo+PiAKPj4gVGhpcyBpcyBhbm90aGVyIG9uZSBvZiB0aG9zZSBwbGFjZXMgSSBtZW50 aW9uZWQgd2hlcmUgd2UncmUganVzdCAKPj4gYXNzdW1pbmcKPj4gYQo+PiB2YWx1ZSBpcyBnb2lu ZyB0byBiZSBpbiBhIGNlcnRhaW4gcmFuZ2UuIElmCj4+IG51bV9jdGxzL251bV9pbnRmcy9udW1f cGh5c19lbmNzCj4+IChhbGwgdGhlIHNhbWUgdmFsdWUgYWZhaWN0KSBpcyAwLCB3ZSBlbmQgdXAg aW4gYSBiYWQgcGxhY2UuCj4gRXZlbiB0aG91Z2ggYWxsIHRoZXNlIHZhcmlhYmxlcyBoYXZlIHRo ZSBzYW1lIHZhbHVlLCB0aGV5IGFyZSAKPiByZXByZXNlbnRpbmcgdGhlCj4gc2l6ZXMgb2YgbG9n aWNhbGx5IHNlcGVyYXRlIGNvbXBvbmVudHMuCj4gCj4+IAo+PiBBdCBhIG1pbmltdW0sIHRoZXJl IHNob3VsZCBiZSBhIFdBUk5fT04vQlVHX09OIHNvbWV3aGVyZSBlbnN1cmluZyB0aGlzIAo+PiBj YW4KPj4gbmV2ZXIKPj4gZHJvcCBiZWxvdyAwLgo+IElzbid0IFJNIGd1YXJhbnRlZWluZyB0aGF0 PyBJIGNhbiBhZGQgdGhlIFdBUk5fT04gY2hlY2tzIG9uIHRoZXNlCj4gbnVtX3h4eCB3aGVuIHRo ZSBIVyBibG9ja3MgYXJlIGFsbG9jYXRlZC4KPiAKPiBUaGFua3MsCj4gSmV5a3VtYXIgUy4KPj4g Cj4+PiArCQltaXhlci0+bG1fY3RsID0gY3N0YXRlLT5od19jdGxzW2N0bF9pbmRleF07Cj4+PiAg CX0KPj4+IC0KPj4+IC0JbXV0ZXhfdW5sb2NrKCZkcHVfY3J0Yy0+Y3J0Y19sb2NrKTsKPj4+ICB9 Cj4+PiAKPj4+ICBzdGF0aWMgdm9pZCBfZHB1X2NydGNfc2V0dXBfbG1fYm91bmRzKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKPj4+IEBAIC01MzYsMTAgKzQ4Nyw4IEBAIHN0YXRpYyB2b2lkIGRwdV9j cnRjX2F0b21pY19iZWdpbihzdHJ1Y3QgCj4+PiBkcm1fY3J0Ywo+PiAqY3J0YywKPj4+ICAJZGV2 ID0gY3J0Yy0+ZGV2Owo+Pj4gIAlzbW11X3N0YXRlID0gJmRwdV9jcnRjLT5zbW11X3N0YXRlOwo+ Pj4gCj4+PiAtCWlmICghY3N0YXRlLT5udW1fbWl4ZXJzKSB7Cj4+PiAtCQlfZHB1X2NydGNfc2V0 dXBfbWl4ZXJzKGNydGMpOwo+Pj4gLQkJX2RwdV9jcnRjX3NldHVwX2xtX2JvdW5kcyhjcnRjLCBj cnRjLT5zdGF0ZSk7Cj4+PiAtCX0KPj4+ICsJX2RwdV9jcnRjX3NldHVwX21peGVycyhjcnRjKTsK Pj4+ICsJX2RwdV9jcnRjX3NldHVwX2xtX2JvdW5kcyhjcnRjLCBjcnRjLT5zdGF0ZSk7Cj4+PiAK Pj4+ICAJaWYgKGRwdV9jcnRjLT5ldmVudCkgewo+Pj4gIAkJV0FSTl9PTihkcHVfY3J0Yy0+ZXZl bnQpOwo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9j cnRjLmgKPj4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5oCj4+PiBp bmRleCA3NWZkZDNjLi4xN2FhYWQ3IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2NydGMuaAo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2NydGMuaAo+Pj4gQEAgLTg0LDEyICs4NCwxNCBAQCBzdHJ1Y3QgZHB1X2NydGNf c21tdV9zdGF0ZV9kYXRhIHsKPj4+ICAgKiBzdHJ1Y3QgZHB1X2NydGNfbWl4ZXI6IHN0b3JlcyB0 aGUgbWFwIGZvciBlYWNoIHZpcnR1YWwgcGlwZWxpbmUgCj4+PiBpbgo+PiB0aGUgQ1JUQwo+Pj4g ICAqIEBod19sbToJTE0gSFcgRHJpdmVyIGNvbnRleHQKPj4+ICAgKiBAbG1fY3RsOglDVEwgUGF0 aCBIVyBkcml2ZXIgY29udGV4dAo+Pj4gKyAqIEBod19wcDoJUGluZ3BvbmcgSFcgZHJpdmVyIGNv bnRleHQKPj4+ICAgKiBAbWl4ZXJfb3BfbW9kZToJbWl4ZXIgYmxlbmRpbmcgb3BlcmF0aW9uIG1v ZGUKPj4+ICAgKiBAZmx1c2hfbWFzazoJbWl4ZXIgZmx1c2ggbWFzayBmb3IgY3RsLCBtaXhlciBh bmQgcGlwZQo+Pj4gICAqLwo+Pj4gIHN0cnVjdCBkcHVfY3J0Y19taXhlciB7Cj4+PiAgCXN0cnVj dCBkcHVfaHdfbWl4ZXIgKmh3X2xtOwo+Pj4gIAlzdHJ1Y3QgZHB1X2h3X2N0bCAqbG1fY3RsOwo+ Pj4gKwlzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICpod19wcDsKPj4+ICAJdTMyIG1peGVyX29wX21v ZGU7Cj4+PiAgCXUzMiBmbHVzaF9tYXNrOwo+Pj4gIH07Cj4+PiBAQCAtMjMwLDYgKzIzMiwxOCBA QCBzdHJ1Y3QgZHB1X2NydGNfc3RhdGUgewo+Pj4gCj4+PiAgCXUzMiBudW1fY3RsczsKPj4+ICAJ c3RydWN0IGRwdV9od19jdGwgKmh3X2N0bHNbQ1JUQ19EVUFMX01JWEVSU107Cj4+PiArCj4+PiAr CS8qKgo+Pj4gKwkgKiBhcyBkcm0gZW5jb2RlcnMgZG9lc24ndCBoYXZlIGRlZGljYXRlcyBzdGF0 ZSBvYmplY3RzCj4+PiArCSAqIGFuZCBkcm0gY29ubmVjdG9ycyBhcmUgbm90IG93bmVkIGJ5IERQ VSwgbWFpbnRhaW4KPj4+ICsJICogSFcgaW50ZXJmYWNlIGFuZCBvdGhlciBpbnRlcmZhY2UgcmVs YXRlZCBibG9ja3MKPj4+ICsJICogaW4gY3J0YyBzdGF0ZQo+PiAKPj4gQ2FuIHlvdSB1c2UgcHJp dmF0ZSBzdGF0ZSBpbnN0ZWFkPwo+IGhtbS4uIEl0J3MgdGltZSBmb3IgbWUgdG8gcmV2aXNpdCB0 aGUgb2xkIHBhdGNoOgo+IGh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC8y MzAxMDAvCj4+IApQbGVhc2Ugbm90ZSB0aGF0IHVzaW5nIGRybV9wcml2X29ial9zdGF0ZSB0byB0 cmFjayB0aGUgcGVyCmRpc3BsYXkgaHcgcmVzZXJ2YXRpb24sIEkgbmVlZCB0byBtYWludGFpbiBN QVhfQ1JUQ1MgZHJtX3ByaXZfb2JqJ3MKaW4gZHB1X2ttcy4KClRoZSBkZXNpZ24gd291bGQgbm90 IGJlIHRoZSBzYW1lIGFzIG1kcDUgbW9kZWwgc2luY2UgbWRwNSB1c2VzIHRoZQpzYW1lIHByaXZf b2JqIHRvIHRyYWNrIHRoZSByZXNvdXJjZXMgb2YgYWxsIENSVEMncyBhbmQgYWxzbyBtYWludGFp bnMKdGhlIHBlciBjcnRjIGh3IGluZm9ybWF0aW9uIGluIG1kcDVfY3J0Y19zdGF0ZS4KClRoYW5r cywKSmV5a3VtYXIgUy4KCj4+PiArCSAqCj4+PiArCSAqIFRPRE86IE5vIHN1cHBvcnQgZm9yIGNs b25lIG1vZGUgeWV0IHdoZXJlIGEgY3J0Ywo+Pj4gKwkgKiBjYW4gYmUgYXR0YWNoZWQgd2l0aCBt b3JlIHRoYW4gb25lIGVuY29kZXIvY29ubmVjdG9yLgo+Pj4gKwkgKi8KPj4+ICsJdTMyIG51bV9p bnRmczsKPj4+ICsJc3RydWN0IGRwdV9od19pbnRmICpod19pbnRmc1tDUlRDX0RVQUxfTUlYRVJT XTsKPj4+ICB9Owo+Pj4gCj4+PiAgI2RlZmluZSB0b19kcHVfY3J0Y19zdGF0ZSh4KSBcCj4+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuYwo+ PiBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMKPj4+IGluZGV4 IGQxMmY4OTYuLjE3ZGJiYzMgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfZW5jb2Rlci5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfZW5jb2Rlci5jCj4+PiBAQCAtMTAwMSw5ICsxMDAxLDggQEAgc3RhdGljIHZvaWQg ZHB1X2VuY29kZXJfdmlydF9tb2RlX3NldChzdHJ1Y3QKPj4gZHJtX2VuY29kZXIgKmRybV9lbmMs Cj4+PiAgCXN0cnVjdCBkcHVfa21zICpkcHVfa21zOwo+Pj4gIAlzdHJ1Y3QgbGlzdF9oZWFkICpj b25uZWN0b3JfbGlzdDsKPj4+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm4gPSBOVUxMLCAq Y29ubl9pdGVyOwo+Pj4gLQlzdHJ1Y3QgZHB1X3JtX2h3X2l0ZXIgcHBfaXRlciwgY3RsX2l0ZXI7 Cj4+PiArCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAqZHB1X2NzdGF0ZTsKPj4+ICAJc3RydWN0IG1z bV9kaXNwbGF5X3RvcG9sb2d5IHRvcG9sb2d5Owo+Pj4gLQlzdHJ1Y3QgZHB1X2h3X2N0bCAqaHdf Y3RsW01BWF9DSEFOTkVMU19QRVJfRU5DXSA9IHsgTlVMTCB9Owo+Pj4gIAlpbnQgaSA9IDAsIHJl dDsKPj4+IAo+Pj4gIAlpZiAoIWRybV9lbmMpIHsKPj4+IEBAIC0xMDQzLDI3ICsxMDQyLDE0IEBA IHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3ZpcnRfbW9kZV9zZXQoc3RydWN0Cj4+IGRybV9lbmNv ZGVyICpkcm1fZW5jLAo+Pj4gIAkJcmV0dXJuOwo+Pj4gIAl9Cj4+PiAKPj4+IC0JZHB1X3JtX2lu aXRfaHdfaXRlcigmcHBfaXRlciwgZHJtX2VuYy0+YmFzZS5pZCwKPj4gRFBVX0hXX0JMS19QSU5H UE9ORyk7Cj4+PiAtCWZvciAoaSA9IDA7IGkgPCBNQVhfQ0hBTk5FTFNfUEVSX0VOQzsgaSsrKSB7 Cj4+PiAtCQlkcHVfZW5jLT5od19wcFtpXSA9IE5VTEw7Cj4+PiAtCQlpZiAoIWRwdV9ybV9nZXRf aHcoJmRwdV9rbXMtPnJtLCAmcHBfaXRlcikpCj4+PiAtCQkJYnJlYWs7Cj4+PiAtCQlkcHVfZW5j LT5od19wcFtpXSA9IChzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICopIHBwX2l0ZXIuaHc7Cj4+PiAt CX0KPj4+IC0KPj4+IC0JZHB1X3JtX2luaXRfaHdfaXRlcigmY3RsX2l0ZXIsIGRybV9lbmMtPmJh c2UuaWQsIERQVV9IV19CTEtfQ1RMKTsKPj4+IC0JZm9yIChpID0gMDsgaSA8IE1BWF9DSEFOTkVM U19QRVJfRU5DOyBpKyspIHsKPj4+IC0JCWlmICghZHB1X3JtX2dldF9odygmZHB1X2ttcy0+cm0s ICZjdGxfaXRlcikpCj4+PiAtCQkJYnJlYWs7Cj4+PiAtCQlod19jdGxbaV0gPSAoc3RydWN0IGRw dV9od19jdGwgKiljdGxfaXRlci5odzsKPj4+IC0JfQo+Pj4gKwlkcHVfY3N0YXRlID0gdG9fZHB1 X2NydGNfc3RhdGUoZHJtX2VuYy0+Y3J0Yy0+c3RhdGUpOwo+Pj4gCj4+PiAgCWZvciAoaSA9IDA7 IGkgPCBkcHVfZW5jLT5udW1fcGh5c19lbmNzOyBpKyspIHsKPj4+ICAJCXN0cnVjdCBkcHVfZW5j b2Rlcl9waHlzICpwaHlzID0gZHB1X2VuYy0+cGh5c19lbmNzW2ldOwo+Pj4gIAkJaW50IGN0bF9p bmRleDsKPj4+IAo+Pj4gIAkJaWYgKHBoeXMpIHsKPj4+IC0JCQlpZiAoIWRwdV9lbmMtPmh3X3Bw W2ldKSB7Cj4+PiArCQkJaWYgKCFkcHVfY3N0YXRlLT5taXhlcnNbaV0uaHdfcHApIHsKPj4+ICAJ CQkJRFBVX0VSUk9SX0VOQyhkcHVfZW5jLCAibm8gcHAgYmxvY2sKPj4gYXNzaWduZWQiCj4+PiAg CQkJCQkgICAgICJhdCBpZHg6ICVkXG4iLCBpKTsKPj4+ICAJCQkJcmV0dXJuOwo+Pj4gQEAgLTEw NzEsMTQgKzEwNTcsMTYgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfdmlydF9tb2RlX3NldChz dHJ1Y3QKPj4gZHJtX2VuY29kZXIgKmRybV9lbmMsCj4+PiAKPj4+ICAJCQljdGxfaW5kZXggPSBw aHlzLT5zcGxpdF9yb2xlID09IEVOQ19ST0xFX1NMQVZFID8gMQo+PiA6IDA7Cj4+PiAKPj4+IC0J CQlpZiAoIWh3X2N0bFtjdGxfaW5kZXhdKSB7Cj4+PiArCQkJaWYgKCFkcHVfY3N0YXRlLT5od19j dGxzW2N0bF9pbmRleF0pIHsKPj4+ICAJCQkJRFBVX0VSUk9SX0VOQyhkcHVfZW5jLCAibm8gY3Rs IGJsb2NrCj4+IGFzc2lnbmVkIgo+Pj4gIAkJCQkJICAgICAiYXQgaWR4OiAlZFxuIiwgY3RsX2lu ZGV4KTsKPj4+ICAJCQkJcmV0dXJuOwo+Pj4gIAkJCX0KPj4+IAo+Pj4gLQkJCXBoeXMtPmh3X3Bw ID0gZHB1X2VuYy0+aHdfcHBbaV07Cj4+PiAtCQkJcGh5cy0+aHdfY3RsID0gaHdfY3RsW2N0bF9p bmRleF07Cj4+PiArCQkJZHB1X2VuYy0+aHdfcHBbaV0gPSBkcHVfY3N0YXRlLT5taXhlcnNbaV0u aHdfcHA7Cj4+PiArCj4+PiArCQkJcGh5cy0+aHdfcHAgPSBkcHVfY3N0YXRlLT5taXhlcnNbaV0u aHdfcHA7Cj4+PiArCQkJcGh5cy0+aHdfY3RsID0gZHB1X2NzdGF0ZS0+aHdfY3Rsc1tjdGxfaW5k ZXhdOwo+Pj4gCj4+PiAgCQkJcGh5cy0+Y29ubmVjdG9yID0gY29ubi0+c3RhdGUtPmNvbm5lY3Rv cjsKPj4+ICAJCQlpZiAocGh5cy0+b3BzLm1vZGVfc2V0KQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfdmlkLmMKPj4gYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5jCj4+PiBpbmRl eCA4NGRlMzg1Li40NTYzZjhkIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c192aWQuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c192aWQuYwo+Pj4gQEAgLTQ2MSwyOCArNDYx LDIwIEBAIHN0YXRpYyBpbnQKPj4gZHB1X2VuY29kZXJfcGh5c192aWRfY29udHJvbF92Ymxhbmtf aXJxKAo+Pj4gCj4+PiAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c192aWRfZW5hYmxlKHN0 cnVjdCBkcHVfZW5jb2Rlcl9waHlzCj4+ICpwaHlzX2VuYykKPj4+ICB7Cj4+PiAtCXN0cnVjdCBt c21fZHJtX3ByaXZhdGUgKnByaXY7Cj4+PiAgCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzX3ZpZCAq dmlkX2VuYzsKPj4+IC0Jc3RydWN0IGRwdV9ybV9od19pdGVyIGl0ZXI7Cj4+PiAgCXN0cnVjdCBk cHVfaHdfY3RsICpjdGw7Cj4+PiArCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAqZHB1X2NzdGF0ZTsK Pj4+ICsJaW50IGk7Cj4+PiAgCXUzMiBmbHVzaF9tYXNrID0gMDsKPj4+IAo+Pj4gLQlpZiAoIXBo eXNfZW5jIHx8ICFwaHlzX2VuYy0+cGFyZW50IHx8ICFwaHlzX2VuYy0+cGFyZW50LT5kZXYgfHwK Pj4+IC0JCQkhcGh5c19lbmMtPnBhcmVudC0+ZGV2LT5kZXZfcHJpdmF0ZSkgewo+Pj4gLQkJRFBV X0VSUk9SKCJpbnZhbGlkIGVuY29kZXIvZGV2aWNlXG4iKTsKPj4+IC0JCXJldHVybjsKPj4+IC0J fQo+Pj4gLQlwcml2ID0gcGh5c19lbmMtPnBhcmVudC0+ZGV2LT5kZXZfcHJpdmF0ZTsKPj4+ICsJ ZHB1X2NzdGF0ZSA9IHRvX2RwdV9jcnRjX3N0YXRlKHBoeXNfZW5jLT5wYXJlbnQtPmNydGMtPnN0 YXRlKTsKPj4+IAo+Pj4gIAl2aWRfZW5jID0gdG9fZHB1X2VuY29kZXJfcGh5c192aWQocGh5c19l bmMpOwo+Pj4gIAljdGwgPSBwaHlzX2VuYy0+aHdfY3RsOwo+Pj4gCj4+PiAtCWRwdV9ybV9pbml0 X2h3X2l0ZXIoJml0ZXIsIHBoeXNfZW5jLT5wYXJlbnQtPmJhc2UuaWQsCj4+IERQVV9IV19CTEtf SU5URik7Cj4+PiAtCXdoaWxlIChkcHVfcm1fZ2V0X2h3KCZwaHlzX2VuYy0+ZHB1X2ttcy0+cm0s ICZpdGVyKSkgewo+Pj4gLQkJc3RydWN0IGRwdV9od19pbnRmICpod19pbnRmID0gKHN0cnVjdCBk cHVfaHdfaW50Zgo+PiAqKWl0ZXIuaHc7Cj4+PiAtCj4+PiAtCQlpZiAoaHdfaW50Zi0+aWR4ID09 IHBoeXNfZW5jLT5pbnRmX2lkeCkgewo+Pj4gLQkJCXZpZF9lbmMtPmh3X2ludGYgPSBod19pbnRm Owo+Pj4gKwlmb3IgKGkgPSAwOyBpIDwgZHB1X2NzdGF0ZS0+bnVtX2ludGZzOyBpKyspIHsKPj4+ ICsJCWlmIChkcHVfY3N0YXRlLT5od19pbnRmc1tpXS0+aWR4ID09IHBoeXNfZW5jLT5pbnRmX2lk eCkgewo+Pj4gKwkJCXZpZF9lbmMtPmh3X2ludGYgPSBkcHVfY3N0YXRlLT5od19pbnRmc1tpXTsK Pj4+ICAJCQlicmVhazsKPj4+ICAJCX0KPj4+ICAJfQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCj4+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X3JtLmMKPj4+IGluZGV4IDM3N2RlZjcuLjU3MDNiMTEgMTAwNjQ0Cj4+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uYwo+Pj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmMKPj4+IEBAIC0zODgsNiArMzg4LDcg QEAgc3RhdGljIGJvb2wgCj4+PiBfZHB1X3JtX2NoZWNrX2xtX2FuZF9nZXRfY29ubmVjdGVkX2Js a3MoCj4+PiAgfQo+Pj4gCj4+PiAgc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVfbG1zKHN0cnVj dCBkcHVfcm0gKnJtLCB1aW50MzJfdCBlbmNfaWQsCj4+PiArCQkJICAgICAgIHN0cnVjdCBkcHVf Y3J0Y19zdGF0ZSAqZHB1X2NzdGF0ZSwKPj4+ICAJCQkgICAgICAgc3RydWN0IGRwdV9ybV9yZXF1 aXJlbWVudHMgKnJlcXMpCj4+PiAKPj4+ICB7Cj4+PiBAQCAtNDQ5LDE2ICs0NTAsMjIgQEAgc3Rh dGljIGludCBfZHB1X3JtX3Jlc2VydmVfbG1zKHN0cnVjdCBkcHVfcm0gCj4+PiAqcm0sCj4+IHVp bnQzMl90IGVuY19pZCwKPj4+ICAJCWxtW2ldLT5lbmNfaWQgPSBlbmNfaWQ7Cj4+PiAgCQlwcFtp XS0+ZW5jX2lkID0gZW5jX2lkOwo+Pj4gCj4+PiArCQlkcHVfY3N0YXRlLT5taXhlcnNbaV0uaHdf bG0gPSB0b19kcHVfaHdfbWl4ZXIobG1baV0tPmh3KTsKPj4+ICsJCWRwdV9jc3RhdGUtPm1peGVy c1tpXS5od19wcCA9Cj4+IHRvX2RwdV9od19waW5ncG9uZyhwcFtpXS0+aHcpOwo+Pj4gKwo+Pj4g IAkJdHJhY2VfZHB1X3JtX3Jlc2VydmVfbG1zKGxtW2ldLT5pZCwgRFBVX0hXX0JMS19MTSwgZW5j X2lkLAo+Pj4gIAkJCQkJIHBwW2ldLT5pZCk7Cj4+PiAgCX0KPj4+IAo+Pj4gKwlkcHVfY3N0YXRl LT5udW1fbWl4ZXJzID0gbG1fY291bnQ7Cj4+PiArCj4+PiAgCXJldHVybiByYzsKPj4+ICB9Cj4+ PiAKPj4+ICBzdGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9jdGxzKAo+Pj4gIAkJc3RydWN0IGRw dV9ybSAqcm0sCj4+PiAgCQl1aW50MzJfdCBlbmNfaWQsCj4+PiArCQlzdHJ1Y3QgZHB1X2NydGNf c3RhdGUgKmRwdV9jc3RhdGUsCj4+PiAgCQljb25zdCBzdHJ1Y3QgbXNtX2Rpc3BsYXlfdG9wb2xv Z3kgKnRvcCkKPj4+ICB7Cj4+PiAgCXN0cnVjdCBkcHVfcm1faHdfYmxrICpjdGxzW01BWF9CTE9D S1NdOwo+Pj4gQEAgLTUwMSwyMSArNTA4LDI0IEBAIHN0YXRpYyBpbnQgX2RwdV9ybV9yZXNlcnZl X2N0bHMoCj4+PiAKPj4+ICAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY3RscykgJiYgaSA8 IG51bV9jdGxzOyBpKyspIHsKPj4+ICAJCWN0bHNbaV0tPmVuY19pZCA9IGVuY19pZDsKPj4+ICsJ CWRwdV9jc3RhdGUtPmh3X2N0bHNbaV0gPSB0b19kcHVfaHdfY3RsKGN0bHNbaV0tPmh3KTsKPj4+ ICsKPj4+ICAJCXRyYWNlX2RwdV9ybV9yZXNlcnZlX2N0bHMoY3Rsc1tpXS0+aWQsIERQVV9IV19C TEtfQ1RMLAo+Pj4gIAkJCQkJICBlbmNfaWQpOwo+Pj4gIAl9Cj4+PiAKPj4+ICsJZHB1X2NzdGF0 ZS0+bnVtX2N0bHMgPSBudW1fY3RsczsKPj4+ICsKPj4+ICAJcmV0dXJuIDA7Cj4+PiAgfQo+Pj4g Cj4+PiAtc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVfaW50ZigKPj4+ICtzdGF0aWMgc3RydWN0 IGRwdV9ybV9od19ibGsgKl9kcHVfcm1fcmVzZXJ2ZV9pbnRmKAo+Pj4gIAkJc3RydWN0IGRwdV9y bSAqcm0sCj4+PiAgCQl1aW50MzJfdCBlbmNfaWQsCj4+PiAgCQl1aW50MzJfdCBpZCwKPj4+ICAJ CWVudW0gZHB1X2h3X2Jsa190eXBlIHR5cGUpCj4+PiAgewo+Pj4gIAlzdHJ1Y3QgZHB1X3JtX2h3 X2l0ZXIgaXRlcjsKPj4+IC0JaW50IHJldCA9IDA7Cj4+PiAKPj4+ICAJLyogRmluZCB0aGUgYmxv Y2sgZW50cnkgaW4gdGhlIHJtLCBhbmQgbm90ZSB0aGUgcmVzZXJ2YXRpb24gKi8KPj4+ICAJZHB1 X3JtX2luaXRfaHdfaXRlcigmaXRlciwgMCwgdHlwZSk7Cj4+PiBAQCAtNTI1LDcgKzUzNSw3IEBA IHN0YXRpYyBpbnQgX2RwdV9ybV9yZXNlcnZlX2ludGYoCj4+PiAKPj4+ICAJCWlmIChSRVNFUlZF RF9CWV9PVEhFUihpdGVyLmJsaywgZW5jX2lkKSkgewo+Pj4gIAkJCURQVV9FUlJPUigidHlwZSAl ZCBpZCAlZCBhbHJlYWR5IHJlc2VydmVkXG4iLAo+PiB0eXBlLCBpZCk7Cj4+PiAtCQkJcmV0dXJu IC1FTkFWQUlMOwo+Pj4gKwkJCXJldHVybiBOVUxMOwo+Pj4gIAkJfQo+Pj4gCj4+PiAgCQlpdGVy LmJsay0+ZW5jX2lkID0gZW5jX2lkOwo+Pj4gQEAgLTUzNSw1NiArNTQ1LDYzIEBAIHN0YXRpYyBp bnQgX2RwdV9ybV9yZXNlcnZlX2ludGYoCj4+PiAgCX0KPj4+IAo+Pj4gIAkvKiBTaG91bGRuJ3Qg aGFwcGVuIHNpbmNlIGludGZzIGFyZSBmaXhlZCBhdCBwcm9iZSAqLwo+Pj4gLQlpZiAoIWl0ZXIu aHcpIHsKPj4+ICsJaWYgKCFpdGVyLmJsaykgewo+Pj4gIAkJRFBVX0VSUk9SKCJjb3VsZG4ndCBm aW5kIHR5cGUgJWQgaWQgJWRcbiIsIHR5cGUsIGlkKTsKPj4+IC0JCXJldHVybiAtRUlOVkFMOwo+ Pj4gKwkJcmV0dXJuIE5VTEw7Cj4+PiAgCX0KPj4+IAo+Pj4gLQlyZXR1cm4gcmV0Owo+Pj4gKwly ZXR1cm4gaXRlci5ibGs7Cj4+PiAgfQo+Pj4gCj4+PiAgc3RhdGljIGludCBfZHB1X3JtX3Jlc2Vy dmVfaW50Zl9yZWxhdGVkX2h3KAo+Pj4gIAkJc3RydWN0IGRwdV9ybSAqcm0sCj4+PiAgCQl1aW50 MzJfdCBlbmNfaWQsCj4+PiArCQlzdHJ1Y3QgZHB1X2NydGNfc3RhdGUgKmRwdV9jc3RhdGUsCj4+ PiAgCQlzdHJ1Y3QgZHB1X2VuY29kZXJfaHdfcmVzb3VyY2VzICpod19yZXMpCj4+PiAgewo+Pj4g LQlpbnQgaSwgcmV0ID0gMDsKPj4+IC0JdTMyIGlkOwo+Pj4gKwlzdHJ1Y3QgZHB1X3JtX2h3X2Js ayAqYmxrOwo+Pj4gKwlpbnQgaSwgbnVtX2ludGZzID0gMDsKPj4+IAo+Pj4gIAlmb3IgKGkgPSAw OyBpIDwgQVJSQVlfU0laRShod19yZXMtPmludGZzKTsgaSsrKSB7Cj4+PiAgCQlpZiAoaHdfcmVz LT5pbnRmc1tpXSA9PSBJTlRGX01PREVfTk9ORSkKPj4+ICAJCQljb250aW51ZTsKPj4+IC0JCWlk ID0gaSArIElOVEZfMDsKPj4+IC0JCXJldCA9IF9kcHVfcm1fcmVzZXJ2ZV9pbnRmKHJtLCBlbmNf aWQsIGlkLAo+Pj4gKwo+Pj4gKwkJYmxrID0gX2RwdV9ybV9yZXNlcnZlX2ludGYocm0sIGVuY19p ZCwgaSArIElOVEZfMCwKPj4+ICAJCQkJRFBVX0hXX0JMS19JTlRGKTsKPj4+IC0JCWlmIChyZXQp Cj4+PiAtCQkJcmV0dXJuIHJldDsKPj4+ICsJCWlmICghYmxrKQo+Pj4gKwkJCXJldHVybiAtRU5B VkFJTDsKPj4+ICsKPj4+ICsJCWRwdV9jc3RhdGUtPmh3X2ludGZzW251bV9pbnRmcysrXSA9Cj4+ IHRvX2RwdV9od19pbnRmKGJsay0+aHcpOwo+Pj4gIAl9Cj4+PiAKPj4+IC0JcmV0dXJuIHJldDsK Pj4+ICsJZHB1X2NzdGF0ZS0+bnVtX2ludGZzID0gbnVtX2ludGZzOwo+Pj4gKwo+Pj4gKwlyZXR1 cm4gMDsKPj4+ICB9Cj4+PiAKPj4+ICBzdGF0aWMgaW50IF9kcHVfcm1fbWFrZV9yZXNlcnZhdGlv bigKPj4+ICAJCXN0cnVjdCBkcHVfcm0gKnJtLAo+Pj4gIAkJc3RydWN0IGRybV9lbmNvZGVyICpl bmMsCj4+PiAtCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4+PiArCQlzdHJ1 Y3QgZHB1X2NydGNfc3RhdGUgKmRwdV9jc3RhdGUsCj4+PiAgCQlzdHJ1Y3QgZHB1X3JtX3JlcXVp cmVtZW50cyAqcmVxcykKPj4+ICB7Cj4+PiAgCWludCByZXQ7Cj4+PiAKPj4+IC0JcmV0ID0gX2Rw dV9ybV9yZXNlcnZlX2xtcyhybSwgZW5jLT5iYXNlLmlkLCByZXFzKTsKPj4+ICsJcmV0ID0gX2Rw dV9ybV9yZXNlcnZlX2xtcyhybSwgZW5jLT5iYXNlLmlkLCBkcHVfY3N0YXRlLCByZXFzKTsKPj4+ ICAJaWYgKHJldCkgewo+Pj4gIAkJRFBVX0VSUk9SKCJ1bmFibGUgdG8gZmluZCBhcHByb3ByaWF0 ZSBtaXhlcnNcbiIpOwo+Pj4gIAkJcmV0dXJuIHJldDsKPj4+ICAJfQo+Pj4gCj4+PiAtCXJldCA9 IF9kcHVfcm1fcmVzZXJ2ZV9jdGxzKHJtLCBlbmMtPmJhc2UuaWQsICZyZXFzLT50b3BvbG9neSk7 Cj4+PiArCXJldCA9IF9kcHVfcm1fcmVzZXJ2ZV9jdGxzKHJtLCBlbmMtPmJhc2UuaWQsIGRwdV9j c3RhdGUsCj4+PiArCQkJCSAgICZyZXFzLT50b3BvbG9neSk7Cj4+PiAgCWlmIChyZXQpIHsKPj4+ ICAJCURQVV9FUlJPUigidW5hYmxlIHRvIGZpbmQgYXBwcm9wcmlhdGUgQ1RMXG4iKTsKPj4+ICAJ CXJldHVybiByZXQ7Cj4+PiAgCX0KPj4+IAo+Pj4gLQlyZXQgPSBfZHB1X3JtX3Jlc2VydmVfaW50 Zl9yZWxhdGVkX2h3KHJtLCBlbmMtPmJhc2UuaWQsCj4+ICZyZXFzLT5od19yZXMpOwo+Pj4gKwly ZXQgPSBfZHB1X3JtX3Jlc2VydmVfaW50Zl9yZWxhdGVkX2h3KHJtLCBlbmMtPmJhc2UuaWQsCj4+ IGRwdV9jc3RhdGUsCj4+PiArCQkJCQkgICAgICAmcmVxcy0+aHdfcmVzKTsKPj4+ICAJaWYgKHJl dCkKPj4+ICAJCXJldHVybiByZXQ7Cj4+PiAKPj4+IEBAIC01OTQsNyArNjExLDYgQEAgc3RhdGlj IGludCBfZHB1X3JtX21ha2VfcmVzZXJ2YXRpb24oCj4+PiAgc3RhdGljIGludCBfZHB1X3JtX3Bv cHVsYXRlX3JlcXVpcmVtZW50cygKPj4+ICAJCXN0cnVjdCBkcHVfcm0gKnJtLAo+Pj4gIAkJc3Ry dWN0IGRybV9lbmNvZGVyICplbmMsCj4+PiAtCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsCj4+PiAgCQlzdHJ1Y3QgZHB1X3JtX3JlcXVpcmVtZW50cyAqcmVxcywKPj4+ICAJCXN0 cnVjdCBtc21fZGlzcGxheV90b3BvbG9neSByZXFfdG9wb2xvZ3kpCj4+PiAgewo+Pj4gQEAgLTY0 Miw2ICs2NTgsNyBAQCBpbnQgZHB1X3JtX3Jlc2VydmUoCj4+PiAgCQlib29sIHRlc3Rfb25seSkK Pj4+ICB7Cj4+PiAgCXN0cnVjdCBkcHVfcm1fcmVxdWlyZW1lbnRzIHJlcXM7Cj4+PiArCXN0cnVj dCBkcHVfY3J0Y19zdGF0ZSAqZHB1X2NzdGF0ZSA9IHRvX2RwdV9jcnRjX3N0YXRlKGNydGNfc3Rh dGUpOwo+Pj4gIAlpbnQgcmV0Owo+Pj4gCj4+PiAgCS8qIENoZWNrIGlmIHRoaXMgaXMganVzdCBh IHBhZ2UtZmxpcCAqLwo+Pj4gQEAgLTY1MywxNCArNjcwLDEzIEBAIGludCBkcHVfcm1fcmVzZXJ2 ZSgKPj4+IAo+Pj4gIAltdXRleF9sb2NrKCZybS0+cm1fbG9jayk7Cj4+PiAKPj4+IC0JcmV0ID0g X2RwdV9ybV9wb3B1bGF0ZV9yZXF1aXJlbWVudHMocm0sIGVuYywgY3J0Y19zdGF0ZSwgJnJlcXMs Cj4+PiAtCQkJCQkgICAgdG9wb2xvZ3kpOwo+Pj4gKwlyZXQgPSBfZHB1X3JtX3BvcHVsYXRlX3Jl cXVpcmVtZW50cyhybSwgZW5jLCAmcmVxcywgdG9wb2xvZ3kpOwo+Pj4gIAlpZiAocmV0KSB7Cj4+ PiAgCQlEUFVfRVJST1IoImZhaWxlZCB0byBwb3B1bGF0ZSBodyByZXF1aXJlbWVudHNcbiIpOwo+ Pj4gIAkJZ290byBlbmQ7Cj4+PiAgCX0KPj4+IAo+Pj4gLQlyZXQgPSBfZHB1X3JtX21ha2VfcmVz ZXJ2YXRpb24ocm0sIGVuYywgY3J0Y19zdGF0ZSwgJnJlcXMpOwo+Pj4gKwlyZXQgPSBfZHB1X3Jt X21ha2VfcmVzZXJ2YXRpb24ocm0sIGVuYywgZHB1X2NzdGF0ZSwgJnJlcXMpOwo+Pj4gIAlpZiAo cmV0KSB7Cj4+PiAgCQlEUFVfRVJST1IoImZhaWxlZCB0byByZXNlcnZlIGh3IHJlc291cmNlczog JWRcbiIsIHJldCk7Cj4+PiAgCQlfZHB1X3JtX3JlbGVhc2VfcmVzZXJ2YXRpb24ocm0sIGVuYy0+ YmFzZS5pZCk7Cj4+PiAtLQo+Pj4gVGhlIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMu IGlzIGEgbWVtYmVyIG9mIHRoZSBDb2RlIEF1cm9yYQo+PiBGb3J1bSwKPj4+IGEgTGludXggRm91 bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2plY3QKPj4+IAoKLS0gCkpleWt1bWFyIFMKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5vIG1haWxp bmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg==