From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: Re: [DPU PATCH 4/4] drm/msm/dpu: use private obj to track hw resources Date: Wed, 13 Jun 2018 10:44:56 -0600 Message-ID: <20180613164456.GK11565@jcrouse-lnx.qualcomm.com> References: <1528852667-14833-1-git-send-email-jsanka@codeaurora.org> <1528852667-14833-5-git-send-email-jsanka@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1528852667-14833-5-git-send-email-jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Jeykumar Sankaran Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, hoegsberg-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gVHVlLCBKdW4gMTIsIDIwMTggYXQgMDY6MTc6NDdQTSAtMDcwMCwgSmV5a3VtYXIgU2Fua2Fy YW4gd3JvdGU6Cj4gU3dpdGNoIHRvIHN0YXRlIGJhc2VkIHJlc291cmNlIG1hbmFnZW1lbnQuIFRo aXMgcGF0Y2gKPiBvdmVyaGF1bHMgdGhlIHJlc291cmNlIG1hbmFnZXIgYW5kIEhXIGFsbG9jYXRp b24gbWV0aG9kcyBieQo+IG1haW50YWluaW5nIHRoZSBnbG9iYWwgcmVzb3VyY2UgcG9vbCBhbmQg YWxsb2NhdGVkIGh3Cj4gYmxvY2tzIGluIHJlc3BlY3RpdmUgZHJtIGNvbXBvbmVudCBzdGF0ZXMu Cj4gCj4gR2xvYmFsIHJlc291cmNlIG1hbmFnZXIoUk0pIGlzIHRyYWNrZWQgaW4gcHJpdmF0ZSBv YmplY3QuCj4gQWxsb2NhdGlvbiBzdHJhdGVneSBpcyBzd2l0Y2hlZCBmcm9tIHNpbmdsZSBwb2lu dCBhbGxvY2F0aW9uCj4gb2YgSFcgcmVzb3VyY2VzIGZvciB0aGUgZGlzcGxheSBwaXBlbGluZSB0 byBwZXIgY29tcG9uZW50Cj4gYmFzZWQgYWxsb2NhdGlvbiwgd2hlcmUgZWFjaCBkcm0gY29tcG9u ZW50IGFsbG9jYXRlcyBIVwo+IGJsb2NrcyBtYXBwZWQgdG8gaXQncyBkb21haW4gYW5kIHRyYWNr cyB0aGVtIGluIHRoZWlyIHJlc3BlY3RpdmUKPiBzdGF0ZSBvYmplY3RzLgo+IAo+IEZpeGVzIHJl c291cmNlIGNvbnRlbnRpb24gZHVlIHRvIHJhY2UgY29uZGl0aW9ucyBiZXR3ZWVuCj4gdXNlciBz cGFjZSBhbmQgZGlzcGxheSB0aHJlYWQgYnkgcmVzZXJ2aW5nIHJlc291cmNlcwo+IG9ubHkgaW4g YXRvbWljIGNoZWNrLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEpleWt1bWFyIFNhbmthcmFuIDxqc2Fu a2FAY29kZWF1cm9yYS5vcmc+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9jcnRjLmMgICAgICAgICAgIHwgMjEwICsrKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfY3J0Yy5oICAgICAgICAgICB8ICA1OSArLQo+ICBkcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5jICAgICAgICB8IDIyMyArKy0tLS0KPiAgZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuaCAgICAgICAgfCAgIDQgLQo+ ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzLmggICB8ICAg OSArLQo+ICAuLi4vZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfY21kLmMg ICB8ICAzMiArLQo+ICAuLi4vZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNf dmlkLmMgICB8ICA4NiArLS0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2tt cy5jICAgICAgICAgICAgfCAgMTkgKy0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2ttcy5oICAgICAgICAgICAgfCAgIDggKy0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X3JtLmMgICAgICAgICAgICAgfCA4MDUgKysrKysrLS0tLS0tLS0tLS0tLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5oICAgICAgICAgICAgIHwgMTQ5 ICsrLS0KPiAgMTEgZmlsZXMgY2hhbmdlZCwgNTM0IGluc2VydGlvbnMoKyksIDEwNzAgZGVsZXRp b25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jCj4gaW5k ZXggNDI2ZTJhZC4uYTQ4NGMwNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfY3J0Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2NydGMuYwo+IEBAIC00Nyw2ICs0Nyw4IEBACj4gICNkZWZpbmUgUklHSFRfTUlYRVIgMQo+ ICAKPiAgI2RlZmluZSBNSVNSX0JVRkZfU0laRQkJCTI1Ngo+ICsjZGVmaW5lIE1BWF9WRElTUExB WV9TUExJVAkJMTA4MAo+ICsKPiAgCj4gIHN0YXRpYyBpbmxpbmUgc3RydWN0IGRwdV9rbXMgKl9k cHVfY3J0Y19nZXRfa21zKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgewo+IEBAIC0xNDIsOSAr MTQ0LDkgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX3Byb2dyYW1fbG1fb3V0cHV0X3JvaShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpCj4gIAljcnRjX3N0YXRlID0gdG9fZHB1X2NydGNfc3RhdGUoY3J0 Yy0+c3RhdGUpOwo+ICAKPiAgCWxtX2hvcml6X3Bvc2l0aW9uID0gMDsKPiAtCWZvciAobG1faWR4 ID0gMDsgbG1faWR4IDwgZHB1X2NydGMtPm51bV9taXhlcnM7IGxtX2lkeCsrKSB7Cj4gKwlmb3Ig KGxtX2lkeCA9IDA7IGxtX2lkeCA8IGNydGNfc3RhdGUtPm51bV9taXhlcnM7IGxtX2lkeCsrKSB7 Cj4gIAkJY29uc3Qgc3RydWN0IGRwdV9yZWN0ICpsbV9yb2kgPSAmY3J0Y19zdGF0ZS0+bG1fYm91 bmRzW2xtX2lkeF07Cj4gLQkJc3RydWN0IGRwdV9od19taXhlciAqaHdfbG0gPSBkcHVfY3J0Yy0+ bWl4ZXJzW2xtX2lkeF0uaHdfbG07Cj4gKwkJc3RydWN0IGRwdV9od19taXhlciAqaHdfbG0gPSBj cnRjX3N0YXRlLT5taXhlcnNbbG1faWR4XS5od19sbTsKPiAgCQlzdHJ1Y3QgZHB1X2h3X21peGVy X2NmZyBjZmc7Cj4gIAo+ICAJCWlmIChkcHVfa21zX3JlY3RfaXNfbnVsbChsbV9yb2kpKQo+IEBA IC0xODIsNyArMTg0LDcgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX2JsZW5kX3NldHVwX21peGVy KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gIAo+IC0JY3RsID0g bWl4ZXItPmh3X2N0bDsKPiArCWN0bCA9IG1peGVyLT5sbV9jdGw7Cj4gIAlsbSA9IG1peGVyLT5o d19sbTsKPiAgCXN0YWdlX2NmZyA9ICZkcHVfY3J0Yy0+c3RhZ2VfY2ZnOwo+ICAJY3N0YXRlID0g dG9fZHB1X2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+IEBAIC0yMzcsNyArMjM5LDcgQEAgc3Rh dGljIHZvaWQgX2RwdV9jcnRjX2JsZW5kX3NldHVwX21peGVyKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKPiAgCQkJZm9ybWF0LT5iYXNlLnBpeGVsX2Zvcm1hdCwgZmIgPyBmYi0+bW9kaWZpZXIgOiAw KTsKPiAgCj4gIAkJLyogYmxlbmQgY29uZmlnIHVwZGF0ZSAqLwo+IC0JCWZvciAobG1faWR4ID0g MDsgbG1faWR4IDwgZHB1X2NydGMtPm51bV9taXhlcnM7IGxtX2lkeCsrKSB7Cj4gKwkJZm9yIChs bV9pZHggPSAwOyBsbV9pZHggPCBjc3RhdGUtPm51bV9taXhlcnM7IGxtX2lkeCsrKSB7Cj4gIAkJ CV9kcHVfY3J0Y19zZXR1cF9ibGVuZF9jZmcobWl4ZXIgKyBsbV9pZHgsIHBzdGF0ZSk7Cj4gIAo+ ICAJCQltaXhlcltsbV9pZHhdLmZsdXNoX21hc2sgfD0gZmx1c2hfbWFzazsKPiBAQCAtMjYwLDcg KzI2Miw3IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19ibGVuZF9zZXR1cF9taXhlcihzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCj4gIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19ibGVuZF9zZXR1cChzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpCj4gIHsKPiAgCXN0cnVjdCBkcHVfY3J0YyAqZHB1X2NydGM7Cj4g LQlzdHJ1Y3QgZHB1X2NydGNfc3RhdGUgKmRwdV9jcnRjX3N0YXRlOwo+ICsJc3RydWN0IGRwdV9j cnRjX3N0YXRlICpjc3RhdGU7Cj4gIAlzdHJ1Y3QgZHB1X2NydGNfbWl4ZXIgKm1peGVyOwo+ICAJ c3RydWN0IGRwdV9od19jdGwgKmN0bDsKPiAgCXN0cnVjdCBkcHVfaHdfbWl4ZXIgKmxtOwo+IEBA IC0yNzEsMjYgKzI3MywyNiBAQCBzdGF0aWMgdm9pZCBfZHB1X2NydGNfYmxlbmRfc2V0dXAoc3Ry dWN0IGRybV9jcnRjICpjcnRjKQo+ICAJCXJldHVybjsKPiAgCj4gIAlkcHVfY3J0YyA9IHRvX2Rw dV9jcnRjKGNydGMpOwo+IC0JZHB1X2NydGNfc3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZShjcnRj LT5zdGF0ZSk7Cj4gLQltaXhlciA9IGRwdV9jcnRjLT5taXhlcnM7Cj4gKwljc3RhdGUgPSB0b19k cHVfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Cj4gKwltaXhlciA9IGNzdGF0ZS0+bWl4ZXJzOwo+ ICAKPiAgCURQVV9ERUJVRygiJXNcbiIsIGRwdV9jcnRjLT5uYW1lKTsKPiAgCj4gLQlpZiAoZHB1 X2NydGMtPm51bV9taXhlcnMgPiBDUlRDX0RVQUxfTUlYRVJTKSB7Cj4gLQkJRFBVX0VSUk9SKCJp bnZhbGlkIG51bWJlciBtaXhlcnM6ICVkXG4iLCBkcHVfY3J0Yy0+bnVtX21peGVycyk7Cj4gKwlp ZiAoY3N0YXRlLT5udW1fbWl4ZXJzID4gQ1JUQ19EVUFMX01JWEVSUykgewo+ICsJCURQVV9FUlJP UigiaW52YWxpZCBudW1iZXIgbWl4ZXJzOiAlZFxuIiwgY3N0YXRlLT5udW1fbWl4ZXJzKTsKCk5p dCAtIHRoaXMgY291bGQgYmUgd29yZGVkIGEgYml0IGJldHRlciAtICJ0b28gbWFueSBtaXhlcnMi IHdvdWxkIGJlIGJldHRlciwgYnV0CkkgaGF2ZSB0byBhc2sgLSB1bmRlciB3aGF0IGNpcmN1bXN0 YW5jZXMgd291bGQgdGhlIG51bWJlciBvZiBtaXhlcnMgYmUgbGFyZ2VyCnRoYW4gQ1JUQ19EVUFM X01JWEVSUyBhbmQvb3Igd2h5IGRvbid0IHdlIHN1cHBvcnQgYSBkeW5hbWljIG51bWJlciBvZiBt aXhlcnM/Cgo+ICAJCXJldHVybjsKPiAgCX0KCjxzaGlwPgoKPiArc3RhdGljIHZvaWQgX2RwdV9j cnRjX3NldHVwX21peGVycyhzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsK PiAtCXN0cnVjdCBkcHVfY3J0YyAqZHB1X2NydGMgPSB0b19kcHVfY3J0YyhjcnRjKTsKPiAtCXN0 cnVjdCBkcHVfa21zICpkcHVfa21zID0gX2RwdV9jcnRjX2dldF9rbXMoY3J0Yyk7Cj4gLQlzdHJ1 Y3QgZHB1X3JtICpybSA9ICZkcHVfa21zLT5ybTsKPiArCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAq Y3N0YXRlID0gdG9fZHB1X2NydGNfc3RhdGUoY3J0Y19zdGF0ZSk7Cj4gIAlzdHJ1Y3QgZHB1X2Ny dGNfbWl4ZXIgKm1peGVyOwo+IC0Jc3RydWN0IGRwdV9od19jdGwgKmxhc3RfdmFsaWRfY3RsID0g TlVMTDsKPiAgCWludCBpOwo+IC0Jc3RydWN0IGRwdV9ybV9od19pdGVyIGxtX2l0ZXIsIGN0bF9p dGVyOwo+ICAKPiAtCWRwdV9ybV9pbml0X2h3X2l0ZXIoJmxtX2l0ZXIsIGVuYy0+YmFzZS5pZCwg RFBVX0hXX0JMS19MTSk7Cj4gLQlkcHVfcm1faW5pdF9od19pdGVyKCZjdGxfaXRlciwgZW5jLT5i YXNlLmlkLCBEUFVfSFdfQkxLX0NUTCk7Cj4gKwlpZiAoIWNzdGF0ZS0+bnVtX21peGVycyB8fCAh Y3N0YXRlLT5udW1fY3Rscykgewo+ICsJCURQVV9FUlJPUigiaW52YWxpZCBodyBjb3VudC1sbSdz OiVkIGN0bCdzOiVkXG4iLAo+ICsJCQljc3RhdGUtPm51bV9taXhlcnMsIGNzdGF0ZS0+bnVtX2N0 bHMpOwoKVGhpcyBjYW4gYWxzbyBiZSByZXdvcmRlZCAtIEkgZG9uJ3Qga25vdyB3aGF0IGxtIGlz LCBhbmQgeW91IHNob3VsZG4ndCB1c2UgYW4KYXBvc3Ryb3BoZSAtIGl0IHdvdWxkIGp1c3QgYmUg J2N0bHMnIG9yICdtaXhlcnMnLiAgSW5zdGVhZCBvZiBpbnZhbGlkLCBwZXJoYXBzCnVzaW5nICJu byBtaXhlcnMgZGVmaW5lZCIgYW5kICJubyBjb250cm9scyBkZWZpbmVkIi4KCgo+ICsJCXJldHVy bjsKPiArCX0KCjxzbmlwPgoKPiBAQCAtMTU4NCw2ICsxNTc5LDIzIEBAIHN0YXRpYyBpbnQgZHB1 X2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQl9Cj4gIAl9Cj4g IAo+ICsJLyogUmVzb3VyY2UgYWxsb2NhdGlvbiAqLwo+ICsJZHB1X3ByaXZfc3RhdGUgPSBkcHVf Z2V0X3ByaXZhdGVfc3RhdGUoc3RhdGUtPnN0YXRlKTsKPiArCgpBaCwgaGVyZSBpcyBhIHVzZSBv ZiBkcHVfZ2V0X3ByaXZhdGVfc3RhdGUoKSB0aGF0IGFzc3VtZXMgZHB1X3ByaXZfc3RhdGUgaXMK dmFsaWQgLSB0aGlzIGNvdWxkIHVzZSBhIEVSUiBjaGVjayBidXQgSSB0aGluayBpdCBhbHNvIGlt cGxpZXMgdGhhdApkcHVfZ2V0X3ByaXZhdGVfc3RhdGUoKSBkb2Vzbid0IGhhdmUgYSBsZWdpdGlt YXRlIHJlYXNvbiB0byByZXR1cm4gTlVMTC4KCj4gKwl0b3BvbG9neSA9IGRwdV9jcnRjX2dldF90 b3BvbG9neShjc3RhdGUsICZzdGF0ZS0+YWRqdXN0ZWRfbW9kZSk7Cj4gKwlpZiAoIXRvcG9sb2d5 Lm5lZWRzX3JlYWxsb2MpCj4gKwkJZ290byBlbmQ7Cj4gKwo+ICsJZHB1X3JtX3JlbGVhc2VfY3J0 Y19yZXMoJmRwdV9wcml2X3N0YXRlLT5ybSwgY3N0YXRlKTsKPiArCXJjID0gZHB1X3JtX3Jlc2Vy dmVfY3J0Y19yZXMoJmRwdV9wcml2X3N0YXRlLT5ybSwgY3N0YXRlLCAmdG9wb2xvZ3kpOwo+ICsJ aWYgKHJjKSB7Cj4gKwkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gYWxsb2NhdGUgcmVzb3VyY2VzIGZv ciBjcnRjOiAlZFxuIiwKPiArCQkJCWNydGMtPmJhc2UuaWQpOwo+ICsJCWdvdG8gZW5kOwo+ICsJ fQo+ICsKPiArCV9kcHVfY3J0Y19zZXR1cF9taXhlcnMoc3RhdGUpOwo+ICsKPiAgZW5kOgo+ICAJ cmV0dXJuIHJjOwo+ICB9Cgo8c25pcD4KCj4gQEAgLTY1NywyNyArNjY2LDMxIEBAIHN0YXRpYyBp bnQgZHB1X2VuY29kZXJfdmlydF9hdG9taWNfY2hlY2soCj4gIAkJfQo+ICAJfQo+ICAKPiAtCXRv cG9sb2d5ID0gZHB1X2VuY29kZXJfZ2V0X3RvcG9sb2d5KGRwdV9lbmMsIGRwdV9rbXMsIGFkal9t b2RlKTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBlbmQ7Cj4gIAo+IC0JLyogUmVzZXJ2ZSBkeW5h bWljIHJlc291cmNlcyBub3cuIEluZGljYXRpbmcgQXRvbWljVGVzdCBwaGFzZSAqLwo+IC0JaWYg KCFyZXQpIHsKPiAtCQkvKgo+IC0JCSAqIEF2b2lkIHJlc2VydmluZyByZXNvdXJjZXMgd2hlbiBt b2RlIHNldCBpcyBwZW5kaW5nLiBUb3BvbG9neQo+IC0JCSAqIGluZm8gbWF5IG5vdCBiZSBhdmFp bGFibGUgdG8gY29tcGxldGUgcmVzZXJ2YXRpb24uCj4gLQkJICovCj4gLQkJaWYgKGRybV9hdG9t aWNfY3J0Y19uZWVkc19tb2Rlc2V0KGNydGNfc3RhdGUpCj4gLQkJCQkmJiBkcHVfZW5jLT5tb2Rl X3NldF9jb21wbGV0ZSkgewo+IC0JCQlyZXQgPSBkcHVfcm1fcmVzZXJ2ZSgmZHB1X2ttcy0+cm0s IGRybV9lbmMsIGNydGNfc3RhdGUsCj4gLQkJCQljb25uX3N0YXRlLCB0b3BvbG9neSwgdHJ1ZSk7 Cj4gLQkJCWRwdV9lbmMtPm1vZGVfc2V0X2NvbXBsZXRlID0gZmFsc2U7Cj4gLQkJfQo+ICsJLyog aHcgcmVzb3VyY2UgYWxsb2NhdGlvbiAqLwo+ICsJZHB1X2VuY29kZXJfZ2V0X2h3X3Jlc291cmNl cyhkcm1fZW5jLCAmZW5jX2h3X3JlcywgY29ubl9zdGF0ZSk7Cj4gKwo+ICsJZHB1X3ByaXZfc3Rh dGUgPSBkcHVfZ2V0X3ByaXZhdGVfc3RhdGUoY3J0Y19zdGF0ZS0+c3RhdGUpOwoKSGVyZSBpcyBh bm90aGVyIHVzZSBvZiBkcHVfZ2V0X3ByaXZhdGVfc3RhdGUoKSB0aGF0IGFzc3VtZXMgYSB2YWxp ZCBwb2ludGVyLgoKPiArCXRvcG9sb2d5ID0gZHB1X2VuY29kZXJfZ2V0X3RvcG9sb2d5KGRwdV9l bmMsIGRwdV9jc3RhdGUpOwo+ICsJaWYgKCF0b3BvbG9neS5uZWVkc19yZWFsbG9jKQo+ICsJCWdv dG8gZW5kOwo+ICsKPiArCWRwdV9ybV9yZWxlYXNlX2VuY29kZXJfcmVzKCZkcHVfcHJpdl9zdGF0 ZS0+cm0sIGRwdV9jc3RhdGUpOwo+ICsJcmV0ID0gZHB1X3JtX3Jlc2VydmVfZW5jb2Rlcl9yZXMo JmRwdV9wcml2X3N0YXRlLT5ybSwKPiArCQkJCQkJICAgICBkcHVfY3N0YXRlLCAmZW5jX2h3X3Jl cyk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJRFBVX0VSUk9SX0VOQyhkcHVfZW5jLAo+ICsJCQkJImZh aWxlZCB0byBhbGxvY2F0ZSBodyByZXNvdXJjZXNcbiIpOwo+ICsJCWdvdG8gZW5kOwo+ICAJfQo+ ICAKPiAtCWlmICghcmV0KQo+IC0JCWRybV9tb2RlX3NldF9jcnRjaW5mbyhhZGpfbW9kZSwgMCk7 Cj4gKwlkcm1fbW9kZV9zZXRfY3J0Y2luZm8oYWRqX21vZGUsIDApOwo+ICAKPiAgCURQVV9FVlQz MihEUk1JRChkcm1fZW5jKSwgYWRqX21vZGUtPmZsYWdzLCBhZGpfbW9kZS0+cHJpdmF0ZV9mbGFn cyk7Cj4gLQo+ICtlbmQ6Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cgo8c25pcD4KCj4gQEAgLTExNzAs MzUgKzExNTksNDggQEAgdm9pZCBkcHVfZW5jb2Rlcl92aXJ0X3Jlc3RvcmUoc3RydWN0IGRybV9l bmNvZGVyICpkcm1fZW5jKQo+ICBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl92aXJ0X2VuYWJsZShz dHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMpCj4gIHsKPiAgCXN0cnVjdCBkcHVfZW5jb2Rlcl92 aXJ0ICpkcHVfZW5jID0gTlVMTDsKPiArCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzICA9 IE5VTEw7Cj4gIAlpbnQgaSwgcmV0ID0gMDsKPiAtCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpj dXJfbW9kZSA9IE5VTEw7Cj4gIAo+ICAJaWYgKCFkcm1fZW5jKSB7Cj4gIAkJRFBVX0VSUk9SKCJp bnZhbGlkIGVuY29kZXJcbiIpOwo+ICAJCXJldHVybjsKPiAgCX0KPiAgCWRwdV9lbmMgPSB0b19k cHVfZW5jb2Rlcl92aXJ0KGRybV9lbmMpOwo+IC0JY3VyX21vZGUgPSAmZHB1X2VuYy0+YmFzZS5j cnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZTsKPiAgCj4gIAlEUFVfREVCVUdfRU5DKGRwdV9lbmMs ICJcbiIpOwo+IC0JRFBVX0VWVDMyKERSTUlEKGRybV9lbmMpLCBjdXJfbW9kZS0+aGRpc3BsYXks IGN1cl9tb2RlLT52ZGlzcGxheSk7Cj4gIAo+ICAJZHB1X2VuYy0+Y3VyX21hc3RlciA9IE5VTEw7 Cj4gKwlkcHVfZW5jLT5jdXJfc2xhdmUgPSBOVUxMOwo+ICAJZm9yIChpID0gMDsgaSA8IGRwdV9l bmMtPm51bV9waHlzX2VuY3M7IGkrKykgewo+IC0JCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpw aHlzID0gZHB1X2VuYy0+cGh5c19lbmNzW2ldOwo+ICsJCXBoeXMgPSBkcHVfZW5jLT5waHlzX2Vu Y3NbaV07Cj4gIAo+IC0JCWlmIChwaHlzICYmIHBoeXMtPm9wcy5pc19tYXN0ZXIgJiYgcGh5cy0+ b3BzLmlzX21hc3RlcihwaHlzKSkgewo+IC0JCQlEUFVfREVCVUdfRU5DKGRwdV9lbmMsICJtYXN0 ZXIgaXMgbm93IGlkeCAlZFxuIiwgaSk7Cj4gKwkJaWYgKCFwaHlzIHx8ICFwaHlzLT5vcHMuaXNf bWFzdGVyKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJaWYgKHBoeXMtPm9wcy5pc19tYXN0ZXIo cGh5cykpIHsKPiArCQkJRFBVX0RFQlVHX0VOQyhkcHVfZW5jLCAibWFzdGVyIGlzIGF0IGlkeCAl ZFxuIiwgaSk7Cj4gIAkJCWRwdV9lbmMtPmN1cl9tYXN0ZXIgPSBwaHlzOwo+IC0JCQlicmVhazsK PiArCQl9IGVsc2Ugewo+ICsJCQlEUFVfREVCVUdfRU5DKGRwdV9lbmMsICJzbGF2ZSBpcyBhdCBp ZHggJWRcbiIsIGkpOwo+ICsJCQlkcHVfZW5jLT5jdXJfc2xhdmUgPSBwaHlzOwo+ICAJCX0KPiAg CX0KPiAgCj4gIAlpZiAoIWRwdV9lbmMtPmN1cl9tYXN0ZXIpIHsKPiAtCQlEUFVfRVJST1IoInZp cnQgZW5jb2RlciBoYXMgbm8gbWFzdGVyISBudW1fcGh5cyAlZFxuIiwgaSk7Cj4gKwkJRFBVX0VS Uk9SKCJ2aXJ0IGVuY29kZXIgaGFzIG5vIG1hc3RlciFcbiIpOwoKSSBkb24ndCB0aGluayB0aGlz IHJpc2VzIHRvIHRoZSBvY2Nhc2lvbiBvZiBuZWVkaW5nIGEgZXhjbGFtYXRpb24gcG9pbnQuCgo8 c25pcD4KCi0tIApUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBtZW1i ZXIgb2YgQ29kZSBBdXJvcmEgRm9ydW0sCmEgTGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZl IFByb2plY3QKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K RnJlZWRyZW5vIG1haWxpbmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg==