From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: Re: [DPU PATCH 4/4] drm/msm/dpu: use private obj to track hw resources Date: Wed, 13 Jun 2018 12:01:21 -0700 Message-ID: <959717757a071673682236e39de59680@codeaurora.org> References: <1528852667-14833-1-git-send-email-jsanka@codeaurora.org> <1528852667-14833-5-git-send-email-jsanka@codeaurora.org> <20180613164456.GK11565@jcrouse-lnx.qualcomm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180613164456.GK11565-9PYrDHPZ2Orvke4nUoYGnHL1okKdlPRT@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Jordan Crouse 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 T24gMjAxOC0wNi0xMyAwOTo0NCwgSm9yZGFuIENyb3VzZSB3cm90ZToKPiBPbiBUdWUsIEp1biAx MiwgMjAxOCBhdCAwNjoxNzo0N1BNIC0wNzAwLCBKZXlrdW1hciBTYW5rYXJhbiB3cm90ZToKPj4g U3dpdGNoIHRvIHN0YXRlIGJhc2VkIHJlc291cmNlIG1hbmFnZW1lbnQuIFRoaXMgcGF0Y2gKPj4g b3ZlcmhhdWxzIHRoZSByZXNvdXJjZSBtYW5hZ2VyIGFuZCBIVyBhbGxvY2F0aW9uIG1ldGhvZHMg YnkKPj4gbWFpbnRhaW5pbmcgdGhlIGdsb2JhbCByZXNvdXJjZSBwb29sIGFuZCBhbGxvY2F0ZWQg aHcKPj4gYmxvY2tzIGluIHJlc3BlY3RpdmUgZHJtIGNvbXBvbmVudCBzdGF0ZXMuCj4+IAo+PiBH bG9iYWwgcmVzb3VyY2UgbWFuYWdlcihSTSkgaXMgdHJhY2tlZCBpbiBwcml2YXRlIG9iamVjdC4K Pj4gQWxsb2NhdGlvbiBzdHJhdGVneSBpcyBzd2l0Y2hlZCBmcm9tIHNpbmdsZSBwb2ludCBhbGxv Y2F0aW9uCj4+IG9mIEhXIHJlc291cmNlcyBmb3IgdGhlIGRpc3BsYXkgcGlwZWxpbmUgdG8gcGVy IGNvbXBvbmVudAo+PiBiYXNlZCBhbGxvY2F0aW9uLCB3aGVyZSBlYWNoIGRybSBjb21wb25lbnQg YWxsb2NhdGVzIEhXCj4+IGJsb2NrcyBtYXBwZWQgdG8gaXQncyBkb21haW4gYW5kIHRyYWNrcyB0 aGVtIGluIHRoZWlyIHJlc3BlY3RpdmUKPj4gc3RhdGUgb2JqZWN0cy4KPj4gCj4+IEZpeGVzIHJl c291cmNlIGNvbnRlbnRpb24gZHVlIHRvIHJhY2UgY29uZGl0aW9ucyBiZXR3ZWVuCj4+IHVzZXIg c3BhY2UgYW5kIGRpc3BsYXkgdGhyZWFkIGJ5IHJlc2VydmluZyByZXNvdXJjZXMKPj4gb25seSBp biBhdG9taWMgY2hlY2suCj4+IAo+PiBTaWduZWQtb2ZmLWJ5OiBKZXlrdW1hciBTYW5rYXJhbiA8 anNhbmthQGNvZGVhdXJvcmEub3JnPgo+PiAtLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9jcnRjLmMgICAgICAgICAgIHwgMjEwICsrKy0tLQo+PiAgZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuaCAgICAgICAgICAgfCAgNTkgKy0KPj4gIGRyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMgICAgICAgIHwgMjIzICsrLS0t LQo+PiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuaCAgICAgICAg fCAgIDQgLQo+PiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5 cy5oICAgfCAgIDkgKy0KPj4gIC4uLi9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJf cGh5c19jbWQuYyAgIHwgIDMyICstCj4+ICAuLi4vZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9l bmNvZGVyX3BoeXNfdmlkLmMgICB8ICA4NiArLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9rbXMuYyAgICAgICAgICAgIHwgIDE5ICstCj4+ICBkcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfa21zLmggICAgICAgICAgICB8ICAgOCArLQo+PiAgZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmMgICAgICAgICAgICAgfCA4MDUKPiArKysrKyst LS0tLS0tLS0tLS0tLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5o ICAgICAgICAgICAgIHwgMTQ5ICsrLS0KPj4gIDExIGZpbGVzIGNoYW5nZWQsIDUzNCBpbnNlcnRp b25zKCspLCAxMDcwIGRlbGV0aW9ucygtKQo+PiAKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9jcnRjLmMKPj4gaW5kZXggNDI2ZTJhZC4uYTQ4NGMwNiAxMDA2NDQKPj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYwo+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jCj4+IEBAIC00Nyw2ICs0Nyw4IEBA Cj4+ICAjZGVmaW5lIFJJR0hUX01JWEVSIDEKPj4gCj4+ICAjZGVmaW5lIE1JU1JfQlVGRl9TSVpF CQkJMjU2Cj4+ICsjZGVmaW5lIE1BWF9WRElTUExBWV9TUExJVAkJMTA4MAo+PiArCj4+IAo+PiAg c3RhdGljIGlubGluZSBzdHJ1Y3QgZHB1X2ttcyAqX2RwdV9jcnRjX2dldF9rbXMoc3RydWN0IGRy bV9jcnRjIAo+PiAqY3J0YykKPj4gIHsKPj4gQEAgLTE0Miw5ICsxNDQsOSBAQCBzdGF0aWMgdm9p ZCBfZHB1X2NydGNfcHJvZ3JhbV9sbV9vdXRwdXRfcm9pKHN0cnVjdAo+IGRybV9jcnRjICpjcnRj KQo+PiAgCWNydGNfc3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Cj4+IAo+ PiAgCWxtX2hvcml6X3Bvc2l0aW9uID0gMDsKPj4gLQlmb3IgKGxtX2lkeCA9IDA7IGxtX2lkeCA8 IGRwdV9jcnRjLT5udW1fbWl4ZXJzOyBsbV9pZHgrKykgewo+PiArCWZvciAobG1faWR4ID0gMDsg bG1faWR4IDwgY3J0Y19zdGF0ZS0+bnVtX21peGVyczsgbG1faWR4KyspIHsKPj4gIAkJY29uc3Qg c3RydWN0IGRwdV9yZWN0ICpsbV9yb2kgPQo+ICZjcnRjX3N0YXRlLT5sbV9ib3VuZHNbbG1faWR4 XTsKPj4gLQkJc3RydWN0IGRwdV9od19taXhlciAqaHdfbG0gPQo+IGRwdV9jcnRjLT5taXhlcnNb bG1faWR4XS5od19sbTsKPj4gKwkJc3RydWN0IGRwdV9od19taXhlciAqaHdfbG0gPQo+IGNydGNf c3RhdGUtPm1peGVyc1tsbV9pZHhdLmh3X2xtOwo+PiAgCQlzdHJ1Y3QgZHB1X2h3X21peGVyX2Nm ZyBjZmc7Cj4+IAo+PiAgCQlpZiAoZHB1X2ttc19yZWN0X2lzX251bGwobG1fcm9pKSkKPj4gQEAg LTE4Miw3ICsxODQsNyBAQCBzdGF0aWMgdm9pZCBfZHB1X2NydGNfYmxlbmRfc2V0dXBfbWl4ZXIo c3RydWN0Cj4gZHJtX2NydGMgKmNydGMsCj4+ICAJCXJldHVybjsKPj4gIAl9Cj4+IAo+PiAtCWN0 bCA9IG1peGVyLT5od19jdGw7Cj4+ICsJY3RsID0gbWl4ZXItPmxtX2N0bDsKPj4gIAlsbSA9IG1p eGVyLT5od19sbTsKPj4gIAlzdGFnZV9jZmcgPSAmZHB1X2NydGMtPnN0YWdlX2NmZzsKPj4gIAlj c3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Cj4+IEBAIC0yMzcsNyArMjM5 LDcgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX2JsZW5kX3NldHVwX21peGVyKHN0cnVjdAo+IGRy bV9jcnRjICpjcnRjLAo+PiAgCQkJZm9ybWF0LT5iYXNlLnBpeGVsX2Zvcm1hdCwgZmIgPyBmYi0+ bW9kaWZpZXIgOiAwKTsKPj4gCj4+ICAJCS8qIGJsZW5kIGNvbmZpZyB1cGRhdGUgKi8KPj4gLQkJ Zm9yIChsbV9pZHggPSAwOyBsbV9pZHggPCBkcHVfY3J0Yy0+bnVtX21peGVyczsgbG1faWR4Kysp Cj4gewo+PiArCQlmb3IgKGxtX2lkeCA9IDA7IGxtX2lkeCA8IGNzdGF0ZS0+bnVtX21peGVyczsg bG1faWR4KyspIHsKPj4gIAkJCV9kcHVfY3J0Y19zZXR1cF9ibGVuZF9jZmcobWl4ZXIgKyBsbV9p ZHgsIHBzdGF0ZSk7Cj4+IAo+PiAgCQkJbWl4ZXJbbG1faWR4XS5mbHVzaF9tYXNrIHw9IGZsdXNo X21hc2s7Cj4+IEBAIC0yNjAsNyArMjYyLDcgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX2JsZW5k X3NldHVwX21peGVyKHN0cnVjdAo+IGRybV9jcnRjICpjcnRjLAo+PiAgc3RhdGljIHZvaWQgX2Rw dV9jcnRjX2JsZW5kX3NldHVwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPj4gIHsKPj4gIAlzdHJ1 Y3QgZHB1X2NydGMgKmRwdV9jcnRjOwo+PiAtCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAqZHB1X2Ny dGNfc3RhdGU7Cj4+ICsJc3RydWN0IGRwdV9jcnRjX3N0YXRlICpjc3RhdGU7Cj4+ICAJc3RydWN0 IGRwdV9jcnRjX21peGVyICptaXhlcjsKPj4gIAlzdHJ1Y3QgZHB1X2h3X2N0bCAqY3RsOwo+PiAg CXN0cnVjdCBkcHVfaHdfbWl4ZXIgKmxtOwo+PiBAQCAtMjcxLDI2ICsyNzMsMjYgQEAgc3RhdGlj IHZvaWQgX2RwdV9jcnRjX2JsZW5kX3NldHVwKHN0cnVjdCAKPj4gZHJtX2NydGMKPiAqY3J0YykK Pj4gIAkJcmV0dXJuOwo+PiAKPj4gIAlkcHVfY3J0YyA9IHRvX2RwdV9jcnRjKGNydGMpOwo+PiAt CWRwdV9jcnRjX3N0YXRlID0gdG9fZHB1X2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+PiAtCW1p eGVyID0gZHB1X2NydGMtPm1peGVyczsKPj4gKwljc3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZShj cnRjLT5zdGF0ZSk7Cj4+ICsJbWl4ZXIgPSBjc3RhdGUtPm1peGVyczsKPj4gCj4+ICAJRFBVX0RF QlVHKCIlc1xuIiwgZHB1X2NydGMtPm5hbWUpOwo+PiAKPj4gLQlpZiAoZHB1X2NydGMtPm51bV9t aXhlcnMgPiBDUlRDX0RVQUxfTUlYRVJTKSB7Cj4+IC0JCURQVV9FUlJPUigiaW52YWxpZCBudW1i ZXIgbWl4ZXJzOiAlZFxuIiwKPiBkcHVfY3J0Yy0+bnVtX21peGVycyk7Cj4+ICsJaWYgKGNzdGF0 ZS0+bnVtX21peGVycyA+IENSVENfRFVBTF9NSVhFUlMpIHsKPj4gKwkJRFBVX0VSUk9SKCJpbnZh bGlkIG51bWJlciBtaXhlcnM6ICVkXG4iLAo+IGNzdGF0ZS0+bnVtX21peGVycyk7Cj4gCj4gTml0 IC0gdGhpcyBjb3VsZCBiZSB3b3JkZWQgYSBiaXQgYmV0dGVyIC0gInRvbyBtYW55IG1peGVycyIg d291bGQgYmUKPiBiZXR0ZXIsIGJ1dAo+IEkgaGF2ZSB0byBhc2sgLSB1bmRlciB3aGF0IGNpcmN1 bXN0YW5jZXMgd291bGQgdGhlIG51bWJlciBvZiBtaXhlcnMgYmUKPiBsYXJnZXIKPiB0aGFuIENS VENfRFVBTF9NSVhFUlMgYW5kL29yIHdoeSBkb24ndCB3ZSBzdXBwb3J0IGEgZHluYW1pYyBudW1i ZXIgb2YKPiBtaXhlcnM/Cj4gCkNvbWVzIGZyb20gZG93bnN0cmVhbSBkcml2ZXIgaW1wbGVtZW50 YXRpb24gd2hlcmUgQ1JUQyBpdGVyYXRlcyB0aHJvdWdoClJNIGZyZWUgcG9vbCB0byBpZGVudGlm eSBtaXhlcnMgdGFnZ2VkIHdpdGggdGhlIGN1cnJlbnQgY3J0YyBpZC4gSWYgdGhlCnByZXZpb3Vz IGNsZWFuIHVwIHdhcyBzY3Jld2VkIHVwIHRoaXMgbWF5IGhhdmUgbW9yZSB0aGFuIDIgbWl4ZXJz LiBXaXRoCnRoZSBuZXcgc3RhdGUgYmFzZWQgUk0sIGl0cyB2ZXJ5IHVubGlrZWx5IHdlIGhpdCB0 aGlzIGNvbmRpdGlvbi4KCldlIGRvIHN1cHBvcnQgZHluYW1pYyBtaXhlciBjb3VudHMuIEJhc2Vk IG9uIHRoZSBjb25uZWN0b3IgKHBhbmVsKSAKcmVzb2x1dGlvbiwKQ1JUQyBhbGxvY2F0ZXMgMSBv ciAyIChwYW5lbF93aWR0aCA+IGh3IG1peGVyIHdpZHRoKSBtaXhlciBibG9jayhzKSBvbiAKdGhl IGZpcnN0CmF0b21pYyBjaGVjay4gRFBVIGxpbWl0cyBtYXggbm8uIG9mIGh3IG1peGVycyB0aGF0 IGNhbiBiZSBnYW5nZWQgdXAgZm9yIAphIGRpc3BsYXkgdG8gMi4KCj4+ICAJCXJldHVybjsKPj4g IAl9Cj4gCj4gPHNoaXA+Cj4gCj4+ICtzdGF0aWMgdm9pZCBfZHB1X2NydGNfc2V0dXBfbWl4ZXJz KHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPj4gIHsKPj4gLQlzdHJ1Y3QgZHB1 X2NydGMgKmRwdV9jcnRjID0gdG9fZHB1X2NydGMoY3J0Yyk7Cj4+IC0Jc3RydWN0IGRwdV9rbXMg KmRwdV9rbXMgPSBfZHB1X2NydGNfZ2V0X2ttcyhjcnRjKTsKPj4gLQlzdHJ1Y3QgZHB1X3JtICpy bSA9ICZkcHVfa21zLT5ybTsKPj4gKwlzdHJ1Y3QgZHB1X2NydGNfc3RhdGUgKmNzdGF0ZSA9IHRv X2RwdV9jcnRjX3N0YXRlKGNydGNfc3RhdGUpOwo+PiAgCXN0cnVjdCBkcHVfY3J0Y19taXhlciAq bWl4ZXI7Cj4+IC0Jc3RydWN0IGRwdV9od19jdGwgKmxhc3RfdmFsaWRfY3RsID0gTlVMTDsKPj4g IAlpbnQgaTsKPj4gLQlzdHJ1Y3QgZHB1X3JtX2h3X2l0ZXIgbG1faXRlciwgY3RsX2l0ZXI7Cj4+ IAo+PiAtCWRwdV9ybV9pbml0X2h3X2l0ZXIoJmxtX2l0ZXIsIGVuYy0+YmFzZS5pZCwgRFBVX0hX X0JMS19MTSk7Cj4+IC0JZHB1X3JtX2luaXRfaHdfaXRlcigmY3RsX2l0ZXIsIGVuYy0+YmFzZS5p ZCwgRFBVX0hXX0JMS19DVEwpOwo+PiArCWlmICghY3N0YXRlLT5udW1fbWl4ZXJzIHx8ICFjc3Rh dGUtPm51bV9jdGxzKSB7Cj4+ICsJCURQVV9FUlJPUigiaW52YWxpZCBodyBjb3VudC1sbSdzOiVk IGN0bCdzOiVkXG4iLAo+PiArCQkJY3N0YXRlLT5udW1fbWl4ZXJzLCBjc3RhdGUtPm51bV9jdGxz KTsKPiAKPiBUaGlzIGNhbiBhbHNvIGJlIHJld29yZGVkIC0gSSBkb24ndCBrbm93IHdoYXQgbG0g aXMsIGFuZCB5b3Ugc2hvdWxkbid0IAo+IHVzZQo+IGFuCj4gYXBvc3Ryb3BoZSAtIGl0IHdvdWxk IGp1c3QgYmUgJ2N0bHMnIG9yICdtaXhlcnMnLiAgSW5zdGVhZCBvZiBpbnZhbGlkLAo+IHBlcmhh cHMKPiB1c2luZyAibm8gbWl4ZXJzIGRlZmluZWQiIGFuZCAibm8gY29udHJvbHMgZGVmaW5lZCIu Cj4gCj4gCj4+ICsJCXJldHVybjsKPj4gKwl9Cj4gCj4gPHNuaXA+Cj4gCj4+IEBAIC0xNTg0LDYg KzE1NzksMjMgQEAgc3RhdGljIGludCBkcHVfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0IAo+PiBk cm1fY3J0Ywo+ICpjcnRjLAo+PiAgCQl9Cj4+ICAJfQo+PiAKPj4gKwkvKiBSZXNvdXJjZSBhbGxv Y2F0aW9uICovCj4+ICsJZHB1X3ByaXZfc3RhdGUgPSBkcHVfZ2V0X3ByaXZhdGVfc3RhdGUoc3Rh dGUtPnN0YXRlKTsKPj4gKwo+IAo+IEFoLCBoZXJlIGlzIGEgdXNlIG9mIGRwdV9nZXRfcHJpdmF0 ZV9zdGF0ZSgpIHRoYXQgYXNzdW1lcyAKPiBkcHVfcHJpdl9zdGF0ZQo+IGlzCj4gdmFsaWQgLSB0 aGlzIGNvdWxkIHVzZSBhIEVSUiBjaGVjayBidXQgSSB0aGluayBpdCBhbHNvIGltcGxpZXMgdGhh dAo+IGRwdV9nZXRfcHJpdmF0ZV9zdGF0ZSgpIGRvZXNuJ3QgaGF2ZSBhIGxlZ2l0aW1hdGUgcmVh c29uIHRvIHJldHVybiAKPiBOVUxMLgo+IAo+PiArCXRvcG9sb2d5ID0gZHB1X2NydGNfZ2V0X3Rv cG9sb2d5KGNzdGF0ZSwgJnN0YXRlLT5hZGp1c3RlZF9tb2RlKTsKPj4gKwlpZiAoIXRvcG9sb2d5 Lm5lZWRzX3JlYWxsb2MpCj4+ICsJCWdvdG8gZW5kOwo+PiArCj4+ICsJZHB1X3JtX3JlbGVhc2Vf Y3J0Y19yZXMoJmRwdV9wcml2X3N0YXRlLT5ybSwgY3N0YXRlKTsKPj4gKwlyYyA9IGRwdV9ybV9y ZXNlcnZlX2NydGNfcmVzKCZkcHVfcHJpdl9zdGF0ZS0+cm0sIGNzdGF0ZSwKPiAmdG9wb2xvZ3kp Owo+PiArCWlmIChyYykgewo+PiArCQlEUFVfRVJST1IoImZhaWxlZCB0byBhbGxvY2F0ZSByZXNv dXJjZXMgZm9yIGNydGM6ICVkXG4iLAo+PiArCQkJCWNydGMtPmJhc2UuaWQpOwo+PiArCQlnb3Rv IGVuZDsKPj4gKwl9Cj4+ICsKPj4gKwlfZHB1X2NydGNfc2V0dXBfbWl4ZXJzKHN0YXRlKTsKPj4g Kwo+PiAgZW5kOgo+PiAgCXJldHVybiByYzsKPj4gIH0KPiAKPiA8c25pcD4KPiAKPj4gQEAgLTY1 NywyNyArNjY2LDMxIEBAIHN0YXRpYyBpbnQgZHB1X2VuY29kZXJfdmlydF9hdG9taWNfY2hlY2so Cj4+ICAJCX0KPj4gIAl9Cj4+IAo+PiAtCXRvcG9sb2d5ID0gZHB1X2VuY29kZXJfZ2V0X3RvcG9s b2d5KGRwdV9lbmMsIGRwdV9rbXMsIGFkal9tb2RlKTsKPj4gKwlpZiAocmV0KQo+PiArCQlnb3Rv IGVuZDsKPj4gCj4+IC0JLyogUmVzZXJ2ZSBkeW5hbWljIHJlc291cmNlcyBub3cuIEluZGljYXRp bmcgQXRvbWljVGVzdCBwaGFzZSAqLwo+PiAtCWlmICghcmV0KSB7Cj4+IC0JCS8qCj4+IC0JCSAq IEF2b2lkIHJlc2VydmluZyByZXNvdXJjZXMgd2hlbiBtb2RlIHNldCBpcyBwZW5kaW5nLgo+IFRv cG9sb2d5Cj4+IC0JCSAqIGluZm8gbWF5IG5vdCBiZSBhdmFpbGFibGUgdG8gY29tcGxldGUgcmVz ZXJ2YXRpb24uCj4+IC0JCSAqLwo+PiAtCQlpZiAoZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVz ZXQoY3J0Y19zdGF0ZSkKPj4gLQkJCQkmJiBkcHVfZW5jLT5tb2RlX3NldF9jb21wbGV0ZSkgewo+ PiAtCQkJcmV0ID0gZHB1X3JtX3Jlc2VydmUoJmRwdV9rbXMtPnJtLCBkcm1fZW5jLAo+IGNydGNf c3RhdGUsCj4+IC0JCQkJY29ubl9zdGF0ZSwgdG9wb2xvZ3ksIHRydWUpOwo+PiAtCQkJZHB1X2Vu Yy0+bW9kZV9zZXRfY29tcGxldGUgPSBmYWxzZTsKPj4gLQkJfQo+PiArCS8qIGh3IHJlc291cmNl IGFsbG9jYXRpb24gKi8KPj4gKwlkcHVfZW5jb2Rlcl9nZXRfaHdfcmVzb3VyY2VzKGRybV9lbmMs ICZlbmNfaHdfcmVzLCBjb25uX3N0YXRlKTsKPj4gKwo+PiArCWRwdV9wcml2X3N0YXRlID0gZHB1 X2dldF9wcml2YXRlX3N0YXRlKGNydGNfc3RhdGUtPnN0YXRlKTsKPiAKPiBIZXJlIGlzIGFub3Ro ZXIgdXNlIG9mIGRwdV9nZXRfcHJpdmF0ZV9zdGF0ZSgpIHRoYXQgYXNzdW1lcyBhIHZhbGlkCj4g cG9pbnRlci4KV2lsbCBhZGQgSVNfRVJSIGNoZWNrLgo+IAo+PiArCXRvcG9sb2d5ID0gZHB1X2Vu Y29kZXJfZ2V0X3RvcG9sb2d5KGRwdV9lbmMsIGRwdV9jc3RhdGUpOwo+PiArCWlmICghdG9wb2xv Z3kubmVlZHNfcmVhbGxvYykKPj4gKwkJZ290byBlbmQ7Cj4+ICsKPj4gKwlkcHVfcm1fcmVsZWFz ZV9lbmNvZGVyX3JlcygmZHB1X3ByaXZfc3RhdGUtPnJtLCBkcHVfY3N0YXRlKTsKPj4gKwlyZXQg PSBkcHVfcm1fcmVzZXJ2ZV9lbmNvZGVyX3JlcygmZHB1X3ByaXZfc3RhdGUtPnJtLAo+PiArCQkJ CQkJICAgICBkcHVfY3N0YXRlLAo+ICZlbmNfaHdfcmVzKTsKPj4gKwlpZiAocmV0KSB7Cj4+ICsJ CURQVV9FUlJPUl9FTkMoZHB1X2VuYywKPj4gKwkJCQkiZmFpbGVkIHRvIGFsbG9jYXRlIGh3IHJl c291cmNlc1xuIik7Cj4+ICsJCWdvdG8gZW5kOwo+PiAgCX0KPj4gCj4+IC0JaWYgKCFyZXQpCj4+ IC0JCWRybV9tb2RlX3NldF9jcnRjaW5mbyhhZGpfbW9kZSwgMCk7Cj4+ICsJZHJtX21vZGVfc2V0 X2NydGNpbmZvKGFkal9tb2RlLCAwKTsKPj4gCj4+ICAJRFBVX0VWVDMyKERSTUlEKGRybV9lbmMp LCBhZGpfbW9kZS0+ZmxhZ3MsCj4gYWRqX21vZGUtPnByaXZhdGVfZmxhZ3MpOwo+PiAtCj4+ICtl bmQ6Cj4+ICAJcmV0dXJuIHJldDsKPj4gIH0KPiAKPiA8c25pcD4KPiAKPj4gQEAgLTExNzAsMzUg KzExNTksNDggQEAgdm9pZCBkcHVfZW5jb2Rlcl92aXJ0X3Jlc3RvcmUoc3RydWN0IAo+PiBkcm1f ZW5jb2Rlcgo+ICpkcm1fZW5jKQo+PiAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfdmlydF9lbmFi bGUoc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jKQo+PiAgewo+PiAgCXN0cnVjdCBkcHVfZW5j b2Rlcl92aXJ0ICpkcHVfZW5jID0gTlVMTDsKPj4gKwlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAq cGh5cyAgPSBOVUxMOwo+PiAgCWludCBpLCByZXQgPSAwOwo+PiAtCXN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICpjdXJfbW9kZSA9IE5VTEw7Cj4+IAo+PiAgCWlmICghZHJtX2VuYykgewo+PiAgCQlE UFVfRVJST1IoImludmFsaWQgZW5jb2RlclxuIik7Cj4+ICAJCXJldHVybjsKPj4gIAl9Cj4+ICAJ ZHB1X2VuYyA9IHRvX2RwdV9lbmNvZGVyX3ZpcnQoZHJtX2VuYyk7Cj4+IC0JY3VyX21vZGUgPSAm ZHB1X2VuYy0+YmFzZS5jcnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZTsKPj4gCj4+ICAJRFBVX0RF QlVHX0VOQyhkcHVfZW5jLCAiXG4iKTsKPj4gLQlEUFVfRVZUMzIoRFJNSUQoZHJtX2VuYyksIGN1 cl9tb2RlLT5oZGlzcGxheSwgY3VyX21vZGUtPnZkaXNwbGF5KTsKPj4gCj4+ICAJZHB1X2VuYy0+ Y3VyX21hc3RlciA9IE5VTEw7Cj4+ICsJZHB1X2VuYy0+Y3VyX3NsYXZlID0gTlVMTDsKPj4gIAlm b3IgKGkgPSAwOyBpIDwgZHB1X2VuYy0+bnVtX3BoeXNfZW5jczsgaSsrKSB7Cj4+IC0JCXN0cnVj dCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzID0gZHB1X2VuYy0+cGh5c19lbmNzW2ldOwo+PiArCQlw aHlzID0gZHB1X2VuYy0+cGh5c19lbmNzW2ldOwo+PiAKPj4gLQkJaWYgKHBoeXMgJiYgcGh5cy0+ b3BzLmlzX21hc3RlciAmJgo+IHBoeXMtPm9wcy5pc19tYXN0ZXIocGh5cykpIHsKPj4gLQkJCURQ VV9ERUJVR19FTkMoZHB1X2VuYywgIm1hc3RlciBpcyBub3cgaWR4ICVkXG4iLAo+IGkpOwo+PiAr CQlpZiAoIXBoeXMgfHwgIXBoeXMtPm9wcy5pc19tYXN0ZXIpCj4+ICsJCQljb250aW51ZTsKPj4g Kwo+PiArCQlpZiAocGh5cy0+b3BzLmlzX21hc3RlcihwaHlzKSkgewo+PiArCQkJRFBVX0RFQlVH X0VOQyhkcHVfZW5jLCAibWFzdGVyIGlzIGF0IGlkeCAlZFxuIiwKPiBpKTsKPj4gIAkJCWRwdV9l bmMtPmN1cl9tYXN0ZXIgPSBwaHlzOwo+PiAtCQkJYnJlYWs7Cj4+ICsJCX0gZWxzZSB7Cj4+ICsJ CQlEUFVfREVCVUdfRU5DKGRwdV9lbmMsICJzbGF2ZSBpcyBhdCBpZHggJWRcbiIsIGkpOwo+PiAr CQkJZHB1X2VuYy0+Y3VyX3NsYXZlID0gcGh5czsKPj4gIAkJfQo+PiAgCX0KPj4gCj4+ICAJaWYg KCFkcHVfZW5jLT5jdXJfbWFzdGVyKSB7Cj4+IC0JCURQVV9FUlJPUigidmlydCBlbmNvZGVyIGhh cyBubyBtYXN0ZXIhIG51bV9waHlzICVkXG4iLCBpKTsKPj4gKwkJRFBVX0VSUk9SKCJ2aXJ0IGVu Y29kZXIgaGFzIG5vIG1hc3RlciFcbiIpOwo+IAo+IEkgZG9uJ3QgdGhpbmsgdGhpcyByaXNlcyB0 byB0aGUgb2NjYXNpb24gb2YgbmVlZGluZyBhIGV4Y2xhbWF0aW9uIAo+IHBvaW50Lgo+IAo+IDxz bmlwPgoKV2lsbCBhZGRyZXNzIHJlc3Qgb2YgdGhlIGNvbW1lbnRzIGluIFYyLgotLSAKSmV5a3Vt YXIgUwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVl ZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K