From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: Re: [PATCH 10/14] drm/msm/dpu: move hw resource tracking to crtc state Date: Fri, 31 Aug 2018 12:22:04 -0700 Message-ID: References: <1535503203-22054-1-git-send-email-jsanka@codeaurora.org> <1535503203-22054-11-git-send-email-jsanka@codeaurora.org> <20180831145647.GB91962@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180831145647.GB91962@art_vandelay> 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, 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: dri-devel@lists.freedesktop.org T24gMjAxOC0wOC0zMSAwNzo1NiwgU2VhbiBQYXVsIHdyb3RlOgo+IE9uIFR1ZSwgQXVnIDI4LCAy MDE4IGF0IDA1OjM5OjU5UE0gLTA3MDAsIEpleWt1bWFyIFNhbmthcmFuIHdyb3RlOgo+PiBQcmVw IGNoYW5nZXMgZm9yIHN0YXRlIGJhc2VkIHJlc291cmNlIG1hbmFnZW1lbnQuCj4+IAo+PiBNb3Zl cyBhbGwgdGhlIGh3IGJsb2NrIHRyYWNraW5nIGZvciB0aGUgY3J0YyB0byB0aGUgc3RhdGUKPj4g b2JqZWN0Lgo+IAo+IENoYW5nZXMgaW4gdjQuLi4KPiAKPj4gCj4+IFNpZ25lZC1vZmYtYnk6IEpl eWt1bWFyIFNhbmthcmFuIDxqc2Fua2FAY29kZWF1cm9yYS5vcmc+Cj4+IC0tLQo+PiAgZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYyB8IDYwCj4gKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9j cnRjLmggfCAyMiArKysrKystLS0tLS0KPj4gIDIgZmlsZXMgY2hhbmdlZCwgNDQgaW5zZXJ0aW9u cygrKSwgMzggZGVsZXRpb25zKC0pCj4+IAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYwo+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2NydGMuYwo+PiBpbmRleCBlMDYxODQ3Li43YWIzMjBkIDEwMDY0NAo+PiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jCj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMKPj4gQEAgLTE2Myw5ICsxNjMsOSBAQCBz dGF0aWMgdm9pZCBfZHB1X2NydGNfcHJvZ3JhbV9sbV9vdXRwdXRfcm9pKHN0cnVjdAo+IGRybV9j cnRjICpjcnRjKQo+PiAgCWNydGNfc3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZShjcnRjLT5zdGF0 ZSk7Cj4+IAo+PiAgCWxtX2hvcml6X3Bvc2l0aW9uID0gMDsKPj4gLQlmb3IgKGxtX2lkeCA9IDA7 IGxtX2lkeCA8IGRwdV9jcnRjLT5udW1fbWl4ZXJzOyBsbV9pZHgrKykgewo+PiArCWZvciAobG1f aWR4ID0gMDsgbG1faWR4IDwgY3J0Y19zdGF0ZS0+bnVtX21peGVyczsgbG1faWR4KyspIHsKPj4g IAkJY29uc3Qgc3RydWN0IGRybV9yZWN0ICpsbV9yb2kgPQo+ICZjcnRjX3N0YXRlLT5sbV9ib3Vu ZHNbbG1faWR4XTsKPj4gLQkJc3RydWN0IGRwdV9od19taXhlciAqaHdfbG0gPQo+IGRwdV9jcnRj LT5taXhlcnNbbG1faWR4XS5od19sbTsKPj4gKwkJc3RydWN0IGRwdV9od19taXhlciAqaHdfbG0g PQo+IGNydGNfc3RhdGUtPm1peGVyc1tsbV9pZHhdLmh3X2xtOwo+PiAgCQlzdHJ1Y3QgZHB1X2h3 X21peGVyX2NmZyBjZmc7Cj4+IAo+PiAgCQlpZiAoIWxtX3JvaSB8fCAhZHJtX3JlY3RfdmlzaWJs ZShsbV9yb2kpKQo+PiBAQCAtMjQ2LDcgKzI0Niw3IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19i bGVuZF9zZXR1cF9taXhlcihzdHJ1Y3QKPiBkcm1fY3J0YyAqY3J0YywKPj4gIAkJCQkJICAgZmIg PyBmYi0+bW9kaWZpZXIgOiAwKTsKPj4gCj4+ICAJCS8qIGJsZW5kIGNvbmZpZyB1cGRhdGUgKi8K Pj4gLQkJZm9yIChsbV9pZHggPSAwOyBsbV9pZHggPCBkcHVfY3J0Yy0+bnVtX21peGVyczsgbG1f aWR4KyspCj4gewo+PiArCQlmb3IgKGxtX2lkeCA9IDA7IGxtX2lkeCA8IGNzdGF0ZS0+bnVtX21p eGVyczsgbG1faWR4KyspIHsKPj4gIAkJCV9kcHVfY3J0Y19zZXR1cF9ibGVuZF9jZmcobWl4ZXIg KyBsbV9pZHgsCj4+ICAJCQkJCQlwc3RhdGUsIGZvcm1hdCk7Cj4+IAo+PiBAQCAtMjcwLDcgKzI3 MCw3IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19ibGVuZF9zZXR1cF9taXhlcihzdHJ1Y3QKPiBk cm1fY3J0YyAqY3J0YywKPj4gIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19ibGVuZF9zZXR1cChzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpCj4+ICB7Cj4+ICAJc3RydWN0IGRwdV9jcnRjICpkcHVfY3J0YzsK Pj4gLQlzdHJ1Y3QgZHB1X2NydGNfc3RhdGUgKmRwdV9jcnRjX3N0YXRlOwo+PiArCXN0cnVjdCBk cHVfY3J0Y19zdGF0ZSAqY3N0YXRlOwo+PiAgCXN0cnVjdCBkcHVfY3J0Y19taXhlciAqbWl4ZXI7 Cj4+ICAJc3RydWN0IGRwdV9od19jdGwgKmN0bDsKPj4gIAlzdHJ1Y3QgZHB1X2h3X21peGVyICps bTsKPj4gQEAgLTI4MSwxNyArMjgxLDE3IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19ibGVuZF9z ZXR1cChzdHJ1Y3QgCj4+IGRybV9jcnRjCj4gKmNydGMpCj4+ICAJCXJldHVybjsKPj4gCj4+ICAJ ZHB1X2NydGMgPSB0b19kcHVfY3J0YyhjcnRjKTsKPj4gLQlkcHVfY3J0Y19zdGF0ZSA9IHRvX2Rw dV9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPj4gLQltaXhlciA9IGRwdV9jcnRjLT5taXhlcnM7 Cj4+ICsJY3N0YXRlID0gdG9fZHB1X2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+PiArCW1peGVy ID0gY3N0YXRlLT5taXhlcnM7Cj4+IAo+PiAgCURQVV9ERUJVRygiJXNcbiIsIGRwdV9jcnRjLT5u YW1lKTsKPj4gCj4+IC0JaWYgKGRwdV9jcnRjLT5udW1fbWl4ZXJzID4gQ1JUQ19EVUFMX01JWEVS Uykgewo+PiAtCQlEUFVfRVJST1IoImludmFsaWQgbnVtYmVyIG1peGVyczogJWRcbiIsCj4gZHB1 X2NydGMtPm51bV9taXhlcnMpOwo+PiArCWlmIChjc3RhdGUtPm51bV9taXhlcnMgPiBDUlRDX0RV QUxfTUlYRVJTKSB7Cj4gCj4gVGhpcyBpcyBub3QgcG9zc2libGUuCj4gCj4+ICsJCURQVV9FUlJP UigiaW52YWxpZCBudW1iZXIgbWl4ZXJzOiAlZFxuIiwKPiBjc3RhdGUtPm51bV9taXhlcnMpOwo+ PiAgCQlyZXR1cm47Cj4+ICAJfQo+PiAKPj4gLQlmb3IgKGkgPSAwOyBpIDwgZHB1X2NydGMtPm51 bV9taXhlcnM7IGkrKykgewo+PiArCWZvciAoaSA9IDA7IGkgPCBjc3RhdGUtPm51bV9taXhlcnM7 IGkrKykgewo+PiAgCQlpZiAoIW1peGVyW2ldLmh3X2xtIHx8ICFtaXhlcltpXS5od19jdGwpIHsK Pj4gIAkJCURQVV9FUlJPUigiaW52YWxpZCBsbSBvciBjdGwgYXNzaWduZWQgdG8KPiBtaXhlclxu Iik7Cj4+ICAJCQlyZXR1cm47Cj4+IEBAIC0zMDgsNyArMzA4LDcgQEAgc3RhdGljIHZvaWQgX2Rw dV9jcnRjX2JsZW5kX3NldHVwKHN0cnVjdCBkcm1fY3J0Ywo+ICpjcnRjKQo+PiAKPj4gIAlfZHB1 X2NydGNfYmxlbmRfc2V0dXBfbWl4ZXIoY3J0YywgZHB1X2NydGMsIG1peGVyKTsKPj4gCj4+IC0J Zm9yIChpID0gMDsgaSA8IGRwdV9jcnRjLT5udW1fbWl4ZXJzOyBpKyspIHsKPj4gKwlmb3IgKGkg PSAwOyBpIDwgY3N0YXRlLT5udW1fbWl4ZXJzOyBpKyspIHsKPj4gIAkJY3RsID0gbWl4ZXJbaV0u aHdfY3RsOwo+PiAgCQlsbSA9IG1peGVyW2ldLmh3X2xtOwo+PiAKPj4gQEAgLTUzMCw3ICs1MzAs NyBAQCBzdGF0aWMgdm9pZCBfZHB1X2NydGNfc2V0dXBfbWl4ZXJfZm9yX2VuY29kZXIoCj4+ICAJ CXN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPj4gIAkJc3RydWN0IGRybV9lbmNvZGVyICplbmMpCj4+ ICB7Cj4+IC0Jc3RydWN0IGRwdV9jcnRjICpkcHVfY3J0YyA9IHRvX2RwdV9jcnRjKGNydGMpOwo+ PiArCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAqY3N0YXRlID0gdG9fZHB1X2NydGNfc3RhdGUoY3J0 Yy0+c3RhdGUpOwo+PiAgCXN0cnVjdCBkcHVfa21zICpkcHVfa21zID0gX2RwdV9jcnRjX2dldF9r bXMoY3J0Yyk7Cj4+ICAJc3RydWN0IGRwdV9ybSAqcm0gPSAmZHB1X2ttcy0+cm07Cj4+ICAJc3Ry dWN0IGRwdV9jcnRjX21peGVyICptaXhlcjsKPj4gQEAgLTU0Miw4ICs1NDIsOCBAQCBzdGF0aWMg dm9pZCBfZHB1X2NydGNfc2V0dXBfbWl4ZXJfZm9yX2VuY29kZXIoCj4+ICAJZHB1X3JtX2luaXRf aHdfaXRlcigmY3RsX2l0ZXIsIGVuYy0+YmFzZS5pZCwgRFBVX0hXX0JMS19DVEwpOwo+PiAKPj4g IAkvKiBTZXQgdXAgYWxsIHRoZSBtaXhlcnMgYW5kIGN0bHMgcmVzZXJ2ZWQgYnkgdGhpcyBlbmNv ZGVyICovCj4+IC0JZm9yIChpID0gZHB1X2NydGMtPm51bV9taXhlcnM7IGkgPCBBUlJBWV9TSVpF KGRwdV9jcnRjLT5taXhlcnMpOwo+IGkrKykgewo+PiAtCQltaXhlciA9ICZkcHVfY3J0Yy0+bWl4 ZXJzW2ldOwo+PiArCWZvciAoaSA9IGNzdGF0ZS0+bnVtX21peGVyczsgaSA8IEFSUkFZX1NJWkUo Y3N0YXRlLT5taXhlcnMpOyBpKyspCj4gewo+PiArCQltaXhlciA9ICZjc3RhdGUtPm1peGVyc1tp XTsKPj4gCj4+ICAJCWlmICghZHB1X3JtX2dldF9odyhybSwgJmxtX2l0ZXIpKQo+PiAgCQkJYnJl YWs7Cj4+IEBAIC01NjgsNyArNTY4LDcgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX3NldHVwX21p eGVyX2Zvcl9lbmNvZGVyKAo+PiAKPj4gIAkJbWl4ZXItPmVuY29kZXIgPSBlbmM7Cj4+IAo+PiAt CQlkcHVfY3J0Yy0+bnVtX21peGVycysrOwo+PiArCQljc3RhdGUtPm51bV9taXhlcnMrKzsKPj4g IAkJRFBVX0RFQlVHKCJzZXR1cCBtaXhlciAlZDogbG0gJWRcbiIsCj4+ICAJCQkJaSwgbWl4ZXIt Pmh3X2xtLT5pZHggLSBMTV8wKTsKPj4gIAkJRFBVX0RFQlVHKCJzZXR1cCBtaXhlciAlZDogY3Rs ICVkXG4iLAo+PiBAQCAtNTc5LDExICs1NzksMTEgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX3Nl dHVwX21peGVyX2Zvcl9lbmNvZGVyKAo+PiAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX3NldHVwX21p eGVycyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4+ICB7Cj4+ICAJc3RydWN0IGRwdV9jcnRjICpk cHVfY3J0YyA9IHRvX2RwdV9jcnRjKGNydGMpOwo+PiArCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAq Y3N0YXRlID0gdG9fZHB1X2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+PiAgCXN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jOwo+PiAKPj4gLQlkcHVfY3J0Yy0+bnVtX21peGVycyA9IDA7Cj4+IC0JZHB1 X2NydGMtPm1peGVyc19zd2FwcGVkID0gZmFsc2U7Cj4+IC0JbWVtc2V0KGRwdV9jcnRjLT5taXhl cnMsIDAsIHNpemVvZihkcHVfY3J0Yy0+bWl4ZXJzKSk7Cj4+ICsJY3N0YXRlLT5udW1fbWl4ZXJz ID0gMDsKPj4gKwltZW1zZXQoY3N0YXRlLT5taXhlcnMsIDAsIHNpemVvZihjc3RhdGUtPm1peGVy cykpOwo+IAo+IFdoeSBpcyB0aGlzIG5lY2Vzc2FyeT8KPiAKPj4gCj4+ICAJbXV0ZXhfbG9jaygm ZHB1X2NydGMtPmNydGNfbG9jayk7Cj4+ICAJLyogQ2hlY2sgZm9yIG1peGVycyBvbiBhbGwgZW5j b2RlcnMgYXR0YWNoZWQgdG8gdGhpcyBjcnRjICovCj4+IEBAIC02MTgsNyArNjE4LDcgQEAgc3Rh dGljIHZvaWQgX2RwdV9jcnRjX3NldHVwX2xtX2JvdW5kcyhzdHJ1Y3QKPiBkcm1fY3J0YyAqY3J0 YywKPj4gIAljcnRjX3NwbGl0X3dpZHRoID0gX2RwdV9jcnRjX2dldF9taXhlcl93aWR0aChkcHVf Y3J0YywgY3N0YXRlLAo+PiAgCQkJCQkJICAgIGFkal9tb2RlKTsKPj4gCj4+IC0JZm9yIChpID0g MDsgaSA8IGRwdV9jcnRjLT5udW1fbWl4ZXJzOyBpKyspIHsKPj4gKwlmb3IgKGkgPSAwOyBpIDwg Y3N0YXRlLT5udW1fbWl4ZXJzOyBpKyspIHsKPj4gIAkJc3RydWN0IGRybV9yZWN0ICpyID0gJmNz dGF0ZS0+bG1fYm91bmRzW2ldOwo+PiAgCQlyLT54MSA9IGNydGNfc3BsaXRfd2lkdGggKiBpOwo+ PiAgCQlyLT55MSA9IDA7Cj4+IEBAIC02MzUsNiArNjM1LDcgQEAgc3RhdGljIHZvaWQgZHB1X2Ny dGNfYXRvbWljX2JlZ2luKHN0cnVjdCBkcm1fY3J0Ywo+ICpjcnRjLAo+PiAgCQlzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgKm9sZF9zdGF0ZSkKPj4gIHsKPj4gIAlzdHJ1Y3QgZHB1X2NydGMgKmRwdV9j cnRjOwo+PiArCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAqY3N0YXRlOwo+PiAgCXN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jb2RlcjsKPj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2Owo+PiAgCXVuc2ln bmVkIGxvbmcgZmxhZ3M7Cj4+IEBAIC02NTQsMTAgKzY1NSwxMSBAQCBzdGF0aWMgdm9pZCBkcHVf Y3J0Y19hdG9taWNfYmVnaW4oc3RydWN0IAo+PiBkcm1fY3J0Ywo+ICpjcnRjLAo+PiAgCURQVV9E RUJVRygiY3J0YyVkXG4iLCBjcnRjLT5iYXNlLmlkKTsKPj4gCj4+ICAJZHB1X2NydGMgPSB0b19k cHVfY3J0YyhjcnRjKTsKPj4gKwljc3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZShjcnRjLT5zdGF0 ZSk7Cj4+ICAJZGV2ID0gY3J0Yy0+ZGV2Owo+PiAgCXNtbXVfc3RhdGUgPSAmZHB1X2NydGMtPnNt bXVfc3RhdGU7Cj4+IAo+PiAtCWlmICghZHB1X2NydGMtPm51bV9taXhlcnMpIHsKPj4gKwlpZiAo IWNzdGF0ZS0+bnVtX21peGVycykgewo+PiAgCQlfZHB1X2NydGNfc2V0dXBfbWl4ZXJzKGNydGMp Owo+PiAgCQlfZHB1X2NydGNfc2V0dXBfbG1fYm91bmRzKGNydGMsIGNydGMtPnN0YXRlKTsKPj4g IAl9Cj4+IEBAIC02ODQsNyArNjg2LDcgQEAgc3RhdGljIHZvaWQgZHB1X2NydGNfYXRvbWljX2Jl Z2luKHN0cnVjdCBkcm1fY3J0Ywo+ICpjcnRjLAo+PiAgCSAqIGl0IG1lYW5zIHdlIGFyZSB0cnlp bmcgdG8gZmx1c2ggYSBDUlRDIHdob3NlIHN0YXRlIGlzIGRpc2FibGVkOgo+PiAgCSAqIG5vdGhp bmcgZWxzZSBuZWVkcyB0byBiZSBkb25lLgo+PiAgCSAqLwo+PiAtCWlmICh1bmxpa2VseSghZHB1 X2NydGMtPm51bV9taXhlcnMpKQo+PiArCWlmICh1bmxpa2VseSghY3N0YXRlLT5udW1fbWl4ZXJz KSkKPj4gIAkJcmV0dXJuOwo+PiAKPj4gIAlfZHB1X2NydGNfYmxlbmRfc2V0dXAoY3J0Yyk7Cj4+ IEBAIC03NDgsNyArNzUwLDcgQEAgc3RhdGljIHZvaWQgZHB1X2NydGNfYXRvbWljX2ZsdXNoKHN0 cnVjdCBkcm1fY3J0Ywo+ICpjcnRjLAo+PiAgCSAqIGl0IG1lYW5zIHdlIGFyZSB0cnlpbmcgdG8g Zmx1c2ggYSBDUlRDIHdob3NlIHN0YXRlIGlzIGRpc2FibGVkOgo+PiAgCSAqIG5vdGhpbmcgZWxz ZSBuZWVkcyB0byBiZSBkb25lLgo+PiAgCSAqLwo+PiAtCWlmICh1bmxpa2VseSghZHB1X2NydGMt Pm51bV9taXhlcnMpKQo+PiArCWlmICh1bmxpa2VseSghY3N0YXRlLT5udW1fbWl4ZXJzKSkKPj4g IAkJcmV0dXJuOwo+PiAKPj4gIAkvKgo+PiBAQCAtODYzLDcgKzg2NSw3IEBAIHZvaWQgZHB1X2Ny dGNfY29tbWl0X2tpY2tvZmYoc3RydWN0IGRybV9jcnRjIAo+PiAqY3J0YykKPj4gIAkgKiBpdCBt ZWFucyB3ZSBhcmUgdHJ5aW5nIHRvIHN0YXJ0IGEgQ1JUQyB3aG9zZSBzdGF0ZSBpcyBkaXNhYmxl ZDoKPj4gIAkgKiBub3RoaW5nIGVsc2UgbmVlZHMgdG8gYmUgZG9uZS4KPj4gIAkgKi8KPj4gLQlp ZiAodW5saWtlbHkoIWRwdV9jcnRjLT5udW1fbWl4ZXJzKSkKPj4gKwlpZiAodW5saWtlbHkoIWNz dGF0ZS0+bnVtX21peGVycykpCj4+ICAJCXJldHVybjsKPj4gCj4+ICAJRFBVX0FUUkFDRV9CRUdJ TigiY3J0Y19jb21taXQiKTsKPj4gQEAgLTEwOTcsMTIgKzEwOTksMTQgQEAgc3RhdGljIHZvaWQg ZHB1X2NydGNfaGFuZGxlX3Bvd2VyX2V2ZW50KHUzMgo+IGV2ZW50X3R5cGUsIHZvaWQgKmFyZykK Pj4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBhcmc7Cj4+ICAJc3RydWN0IGRwdV9jcnRjICpk cHVfY3J0YzsKPj4gIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7Cj4+ICsJc3RydWN0IGRw dV9jcnRjX3N0YXRlICpjc3RhdGU7Cj4+IAo+PiAgCWlmICghY3J0Yykgewo+PiAgCQlEUFVfRVJS T1IoImludmFsaWQgY3J0Y1xuIik7Cj4+ICAJCXJldHVybjsKPj4gIAl9Cj4+ICAJZHB1X2NydGMg PSB0b19kcHVfY3J0YyhjcnRjKTsKPj4gKwljc3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZShkcHVf Y3J0Yy0+YmFzZS5zdGF0ZSk7Cj4+IAo+PiAgCW11dGV4X2xvY2soJmRwdV9jcnRjLT5jcnRjX2xv Y2spOwo+PiAKPj4gQEAgLTExOTcsOSArMTIwMSw4IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2Rp c2FibGUoc3RydWN0IGRybV9jcnRjCj4gKmNydGMpCj4+ICAJCWRwdV9wb3dlcl9oYW5kbGVfdW5y ZWdpc3Rlcl9ldmVudChkcHVfY3J0Yy0+cGhhbmRsZSwKPj4gIAkJCQlkcHVfY3J0Yy0+cG93ZXJf ZXZlbnQpOwo+PiAKPj4gLQltZW1zZXQoZHB1X2NydGMtPm1peGVycywgMCwgc2l6ZW9mKGRwdV9j cnRjLT5taXhlcnMpKTsKPj4gLQlkcHVfY3J0Yy0+bnVtX21peGVycyA9IDA7Cj4+IC0JZHB1X2Ny dGMtPm1peGVyc19zd2FwcGVkID0gZmFsc2U7Cj4+ICsJbWVtc2V0KGNzdGF0ZS0+bWl4ZXJzLCAw LCBzaXplb2YoY3N0YXRlLT5taXhlcnMpKTsKPiAKPiBTYW1lIHF1ZXN0aW9uIGhlcmUsIHdoeSBp cyB0aGlzIG5lY2Vzc2FyeT8KPiAKPj4gKwljc3RhdGUtPm51bV9taXhlcnMgPSAwOwo+PiAKPj4g IAkvKiBkaXNhYmxlIGNsayAmIGJ3IGNvbnRyb2wgdW50aWwgY2xrICYgYncgcHJvcGVydGllcyBh cmUgc2V0ICovCj4+ICAJY3N0YXRlLT5id19jb250cm9sID0gZmFsc2U7Cj4+IEBAIC0xNTQ3LDYg KzE1NTAsOCBAQCBzdGF0aWMgaW50IF9kcHVfZGVidWdmc19zdGF0dXNfc2hvdyhzdHJ1Y3QKPiBz ZXFfZmlsZSAqcywgdm9pZCAqZGF0YSkKPj4gCj4+ICAJZHB1X2NydGMgPSBzLT5wcml2YXRlOwo+ PiAgCWNydGMgPSAmZHB1X2NydGMtPmJhc2U7Cj4+ICsKPj4gKwlkcm1fbW9kZXNldF9sb2NrKCZj cnRjLT5tdXRleCwgTlVMTCk7Cj4gCj4gV2hlbiBJIHN1Z2dlc3RlZCB0aGlzLCBJIHdhcyBob3Bp bmcgeW91J2QgcHV0IGl0IGluIGEgc2VwYXJhdGUgcGF0Y2guCj4gQWRkaXRpb25hbGx5LCB5b3Un bGwgcHJvYmFibHkgd2FudCBtb2Rlc2V0X2xvY2tfYWxsIGluc3RlYWQuCgpjcnRjIHN0YXRlIHJl dHJpZXZhbCBpcyBpbnRyb2R1Y2VkIGluIHRoaXMgcGF0Y2guIFNvIEkgdGhvdWdodCBpdCB3b3Vs ZCAKbWFrZQpzZW5zZSB0byBhZGQgdGhlIGxvY2tpbmcgYXMgd2VsbCBhIHBhcnQgb2YgdGhpcyBw YXRjaC4KCj4gCj4+ICAJY3N0YXRlID0gdG9fZHB1X2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+ PiAKPj4gIAltdXRleF9sb2NrKCZkcHVfY3J0Yy0+Y3J0Y19sb2NrKTsKPj4gQEAgLTE1NTgsOCAr MTU2Myw4IEBAIHN0YXRpYyBpbnQgX2RwdV9kZWJ1Z2ZzX3N0YXR1c19zaG93KHN0cnVjdAo+IHNl cV9maWxlICpzLCB2b2lkICpkYXRhKQo+PiAKPj4gIAlzZXFfcHV0cyhzLCAiXG4iKTsKPj4gCj4+ IC0JZm9yIChpID0gMDsgaSA8IGRwdV9jcnRjLT5udW1fbWl4ZXJzOyArK2kpIHsKPj4gLQkJbSA9 ICZkcHVfY3J0Yy0+bWl4ZXJzW2ldOwo+PiArCWZvciAoaSA9IDA7IGkgPCBjc3RhdGUtPm51bV9t aXhlcnM7ICsraSkgewo+PiArCQltID0gJmNzdGF0ZS0+bWl4ZXJzW2ldOwo+PiAgCQlpZiAoIW0t Pmh3X2xtKQo+PiAgCQkJc2VxX3ByaW50ZihzLCAiXHRtaXhlclslZF0gaGFzIG5vIGxtXG4iLCBp KTsKPj4gIAkJZWxzZSBpZiAoIW0tPmh3X2N0bCkKPj4gQEAgLTE2MzksNiArMTY0NCw3IEBAIHN0 YXRpYyBpbnQgX2RwdV9kZWJ1Z2ZzX3N0YXR1c19zaG93KHN0cnVjdAo+IHNlcV9maWxlICpzLCB2 b2lkICpkYXRhKQo+PiAgCXNlcV9wcmludGYocywgInZibGFua19lbmFibGU6JWRcbiIsIGRwdV9j cnRjLT52YmxhbmtfcmVxdWVzdGVkKTsKPj4gCj4+ICAJbXV0ZXhfdW5sb2NrKCZkcHVfY3J0Yy0+ Y3J0Y19sb2NrKTsKPj4gKwlkcm1fbW9kZXNldF91bmxvY2soJmNydGMtPm11dGV4KTsKPj4gCj4+ ICAJcmV0dXJuIDA7Cj4+ICB9Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfY3J0Yy5oCj4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf Y3J0Yy5oCj4+IGluZGV4IDVlNGRjNWMuLjdhYTc3MmYgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2NydGMuaAo+PiBAQCAtMTIxLDExICsxMjEsNiBAQCBzdHJ1Y3Qg ZHB1X2NydGNfZnJhbWVfZXZlbnQgewo+PiAgICogc3RydWN0IGRwdV9jcnRjIC0gdmlydHVhbGl6 ZWQgQ1JUQyBkYXRhIHN0cnVjdHVyZQo+PiAgICogQGJhc2UgICAgICAgICAgOiBCYXNlIGRybSBj cnRjIHN0cnVjdHVyZQo+PiAgICogQG5hbWUgICAgICAgICAgOiBBU0NJSSBkZXNjcmlwdGlvbiBv ZiB0aGlzIGNydGMKPj4gLSAqIEBudW1fY3RscyAgICAgIDogTnVtYmVyIG9mIGN0bCBwYXRocyBp biB1c2UKPj4gLSAqIEBudW1fbWl4ZXJzICAgIDogTnVtYmVyIG9mIG1peGVycyBpbiB1c2UKPj4g LSAqIEBtaXhlcnNfc3dhcHBlZDogV2hldGhlciB0aGUgbWl4ZXJzIGhhdmUgYmVlbiBzd2FwcGVk IGZvciAKPj4gbGVmdC9yaWdodAo+IHVwZGF0ZQo+PiAtICogICAgICAgICAgICAgICAgICBlc3Bl Y2lhbGx5IGluIHRoZSBjYXNlIG9mIERTQyBNZXJnZS4KPj4gLSAqIEBtaXhlcnMgICAgICAgIDog TGlzdCBvZiBhY3RpdmUgbWl4ZXJzCj4+ICAgKiBAZXZlbnQgICAgICAgICA6IFBvaW50ZXIgdG8g bGFzdCByZWNlaXZlZCBkcm0gdmJsYW5rIGV2ZW50LiBJZiAKPj4gdGhlcmUKPiBpcyBhCj4+ICAg KiAgICAgICAgICAgICAgICAgIHBlbmRpbmcgdmJsYW5rIGV2ZW50LCB0aGlzIHdpbGwgYmUgbm9u LW51bGwuCj4+ICAgKiBAdnN5bmNfY291bnQgICA6IFJ1bm5pbmcgY291bnQgb2YgcmVjZWl2ZWQg dnN5bmMgZXZlbnRzCj4+IEBAIC0xNjQsMTIgKzE1OSw2IEBAIHN0cnVjdCBkcHVfY3J0YyB7Cj4+ ICAJc3RydWN0IGRybV9jcnRjIGJhc2U7Cj4+ICAJY2hhciBuYW1lW0RQVV9DUlRDX05BTUVfU0la RV07Cj4+IAo+PiAtCS8qIEhXIFJlc291cmNlcyByZXNlcnZlZCBmb3IgdGhlIGNydGMgKi8KPj4g LQl1MzIgbnVtX2N0bHM7Cj4+IC0JdTMyIG51bV9taXhlcnM7Cj4+IC0JYm9vbCBtaXhlcnNfc3dh cHBlZDsKPj4gLQlzdHJ1Y3QgZHB1X2NydGNfbWl4ZXIgbWl4ZXJzW0NSVENfRFVBTF9NSVhFUlNd Owo+PiAtCj4+ICAJc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAqZXZlbnQ7Cj4+ICAJ dTMyIHZzeW5jX2NvdW50Owo+PiAKPj4gQEAgLTIyMSw2ICsyMTAsMTAgQEAgc3RydWN0IGRwdV9j cnRjIHsKPj4gICAqIEBwcm9wZXJ0eV92YWx1ZXM6IEN1cnJlbnQgY3J0YyBwcm9wZXJ0eSB2YWx1 ZXMKPj4gICAqIEBpbnB1dF9mZW5jZV90aW1lb3V0X25zIDogQ2FjaGVkIGlucHV0IGZlbmNlIHRp bWVvdXQsIGluIG5zCj4+ICAgKiBAbmV3X3BlcmY6IG5ldyBwZXJmb3JtYW5jZSBzdGF0ZSBiZWlu ZyByZXF1ZXN0ZWQKPj4gKyAqIEBudW1fbWl4ZXJzICAgIDogTnVtYmVyIG9mIG1peGVycyBpbiB1 c2UKPj4gKyAqIEBtaXhlcnMgICAgICAgIDogTGlzdCBvZiBhY3RpdmUgbWl4ZXJzCj4+ICsgKiBA bnVtX2N0bHMgICAgICA6IE51bWJlciBvZiBjdGwgcGF0aHMgaW4gdXNlCj4+ICsgKiBAaHdfY3Rs cyAgICAgICA6IExpc3Qgb2YgYWN0aXZlIGN0bCBwYXRocwo+PiAgICovCj4+ICBzdHJ1Y3QgZHB1 X2NydGNfc3RhdGUgewo+PiAgCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSBiYXNlOwo+PiBAQCAtMjMy LDYgKzIyNSwxMyBAQCBzdHJ1Y3QgZHB1X2NydGNfc3RhdGUgewo+PiAgCXVpbnQ2NF90IGlucHV0 X2ZlbmNlX3RpbWVvdXRfbnM7Cj4+IAo+PiAgCXN0cnVjdCBkcHVfY29yZV9wZXJmX3BhcmFtcyBu ZXdfcGVyZjsKPj4gKwo+PiArCS8qIEhXIFJlc291cmNlcyByZXNlcnZlZCBmb3IgdGhlIGNydGMg Ki8KPj4gKwl1MzIgbnVtX21peGVyczsKPj4gKwlzdHJ1Y3QgZHB1X2NydGNfbWl4ZXIgbWl4ZXJz W0NSVENfRFVBTF9NSVhFUlNdOwo+PiArCj4+ICsJdTMyIG51bV9jdGxzOwo+PiArCXN0cnVjdCBk cHVfaHdfY3RsICpod19jdGxzW0NSVENfRFVBTF9NSVhFUlNdOwo+PiAgfTsKPj4gCj4+ICAjZGVm aW5lIHRvX2RwdV9jcnRjX3N0YXRlKHgpIFwKPj4gLS0KPj4gVGhlIFF1YWxjb21tIElubm92YXRp b24gQ2VudGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9mIHRoZSBDb2RlIEF1cm9yYQo+IEZvcnVtLAo+ PiBhIExpbnV4IEZvdW5kYXRpb24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0Cj4+IAoKLS0gCkpleWt1 bWFyIFMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRnJl ZWRyZW5vIG1haWxpbmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg==