From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH 10/14] drm/msm/dpu: move hw resource tracking to crtc state Date: Fri, 31 Aug 2018 16:13:30 -0400 Message-ID: <20180831201330.GT188300@art_vandelay> 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" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Jeykumar Sankaran Cc: Sean Paul , dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, hoegsberg-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBBdWcgMzEsIDIwMTggYXQgMTI6MjI6MDRQTSAtMDcwMCwgSmV5a3VtYXIgU2Fua2Fy YW4gd3JvdGU6Cj4gT24gMjAxOC0wOC0zMSAwNzo1NiwgU2VhbiBQYXVsIHdyb3RlOgo+ID4gT24g VHVlLCBBdWcgMjgsIDIwMTggYXQgMDU6Mzk6NTlQTSAtMDcwMCwgSmV5a3VtYXIgU2Fua2FyYW4g d3JvdGU6Cj4gPiA+IFByZXAgY2hhbmdlcyBmb3Igc3RhdGUgYmFzZWQgcmVzb3VyY2UgbWFuYWdl bWVudC4KPiA+ID4gCj4gPiA+IE1vdmVzIGFsbCB0aGUgaHcgYmxvY2sgdHJhY2tpbmcgZm9yIHRo ZSBjcnRjIHRvIHRoZSBzdGF0ZQo+ID4gPiBvYmplY3QuCj4gPiAKPiA+IENoYW5nZXMgaW4gdjQu Li4KPiA+IAo+ID4gPiAKPiA+ID4gU2lnbmVkLW9mZi1ieTogSmV5a3VtYXIgU2Fua2FyYW4gPGpz YW5rYUBjb2RlYXVyb3JhLm9yZz4KPiA+ID4gLS0tCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfY3J0Yy5jIHwgNjAKPiA+ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5oIHwg MjIgKysrKysrLS0tLS0tCj4gPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDQ0IGluc2VydGlvbnMoKyks IDM4IGRlbGV0aW9ucygtKQo+ID4gPiAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2NydGMuYwo+ID4gPiBpbmRleCBlMDYxODQ3Li43YWIzMjBkIDEwMDY0NAo+ID4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jCj4gPiA+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMKPiA+ID4gQEAgLTE2 Myw5ICsxNjMsOSBAQCBzdGF0aWMgdm9pZCBfZHB1X2NydGNfcHJvZ3JhbV9sbV9vdXRwdXRfcm9p KHN0cnVjdAo+ID4gZHJtX2NydGMgKmNydGMpCj4gPiA+ICAJY3J0Y19zdGF0ZSA9IHRvX2RwdV9j cnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPiA+ID4gCj4gPiA+ICAJbG1faG9yaXpfcG9zaXRpb24g PSAwOwo+ID4gPiAtCWZvciAobG1faWR4ID0gMDsgbG1faWR4IDwgZHB1X2NydGMtPm51bV9taXhl cnM7IGxtX2lkeCsrKSB7Cj4gPiA+ICsJZm9yIChsbV9pZHggPSAwOyBsbV9pZHggPCBjcnRjX3N0 YXRlLT5udW1fbWl4ZXJzOyBsbV9pZHgrKykgewo+ID4gPiAgCQljb25zdCBzdHJ1Y3QgZHJtX3Jl Y3QgKmxtX3JvaSA9Cj4gPiAmY3J0Y19zdGF0ZS0+bG1fYm91bmRzW2xtX2lkeF07Cj4gPiA+IC0J CXN0cnVjdCBkcHVfaHdfbWl4ZXIgKmh3X2xtID0KPiA+IGRwdV9jcnRjLT5taXhlcnNbbG1faWR4 XS5od19sbTsKPiA+ID4gKwkJc3RydWN0IGRwdV9od19taXhlciAqaHdfbG0gPQo+ID4gY3J0Y19z dGF0ZS0+bWl4ZXJzW2xtX2lkeF0uaHdfbG07Cj4gPiA+ICAJCXN0cnVjdCBkcHVfaHdfbWl4ZXJf Y2ZnIGNmZzsKPiA+ID4gCj4gPiA+ICAJCWlmICghbG1fcm9pIHx8ICFkcm1fcmVjdF92aXNpYmxl KGxtX3JvaSkpCj4gPiA+IEBAIC0yNDYsNyArMjQ2LDcgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRj X2JsZW5kX3NldHVwX21peGVyKHN0cnVjdAo+ID4gZHJtX2NydGMgKmNydGMsCj4gPiA+ICAJCQkJ CSAgIGZiID8gZmItPm1vZGlmaWVyIDogMCk7Cj4gPiA+IAo+ID4gPiAgCQkvKiBibGVuZCBjb25m aWcgdXBkYXRlICovCj4gPiA+IC0JCWZvciAobG1faWR4ID0gMDsgbG1faWR4IDwgZHB1X2NydGMt Pm51bV9taXhlcnM7IGxtX2lkeCsrKQo+ID4gewo+ID4gPiArCQlmb3IgKGxtX2lkeCA9IDA7IGxt X2lkeCA8IGNzdGF0ZS0+bnVtX21peGVyczsgbG1faWR4KyspIHsKPiA+ID4gIAkJCV9kcHVfY3J0 Y19zZXR1cF9ibGVuZF9jZmcobWl4ZXIgKyBsbV9pZHgsCj4gPiA+ICAJCQkJCQlwc3RhdGUsIGZv cm1hdCk7Cj4gPiA+IAo+ID4gPiBAQCAtMjcwLDcgKzI3MCw3IEBAIHN0YXRpYyB2b2lkIF9kcHVf Y3J0Y19ibGVuZF9zZXR1cF9taXhlcihzdHJ1Y3QKPiA+IGRybV9jcnRjICpjcnRjLAo+ID4gPiAg c3RhdGljIHZvaWQgX2RwdV9jcnRjX2JsZW5kX3NldHVwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK PiA+ID4gIHsKPiA+ID4gIAlzdHJ1Y3QgZHB1X2NydGMgKmRwdV9jcnRjOwo+ID4gPiAtCXN0cnVj dCBkcHVfY3J0Y19zdGF0ZSAqZHB1X2NydGNfc3RhdGU7Cj4gPiA+ICsJc3RydWN0IGRwdV9jcnRj X3N0YXRlICpjc3RhdGU7Cj4gPiA+ICAJc3RydWN0IGRwdV9jcnRjX21peGVyICptaXhlcjsKPiA+ ID4gIAlzdHJ1Y3QgZHB1X2h3X2N0bCAqY3RsOwo+ID4gPiAgCXN0cnVjdCBkcHVfaHdfbWl4ZXIg KmxtOwo+ID4gPiBAQCAtMjgxLDE3ICsyODEsMTcgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX2Js ZW5kX3NldHVwKHN0cnVjdAo+ID4gPiBkcm1fY3J0Ywo+ID4gKmNydGMpCj4gPiA+ICAJCXJldHVy bjsKPiA+ID4gCj4gPiA+ICAJZHB1X2NydGMgPSB0b19kcHVfY3J0YyhjcnRjKTsKPiA+ID4gLQlk cHVfY3J0Y19zdGF0ZSA9IHRvX2RwdV9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPiA+ID4gLQlt aXhlciA9IGRwdV9jcnRjLT5taXhlcnM7Cj4gPiA+ICsJY3N0YXRlID0gdG9fZHB1X2NydGNfc3Rh dGUoY3J0Yy0+c3RhdGUpOwo+ID4gPiArCW1peGVyID0gY3N0YXRlLT5taXhlcnM7Cj4gPiA+IAo+ ID4gPiAgCURQVV9ERUJVRygiJXNcbiIsIGRwdV9jcnRjLT5uYW1lKTsKPiA+ID4gCj4gPiA+IC0J aWYgKGRwdV9jcnRjLT5udW1fbWl4ZXJzID4gQ1JUQ19EVUFMX01JWEVSUykgewo+ID4gPiAtCQlE UFVfRVJST1IoImludmFsaWQgbnVtYmVyIG1peGVyczogJWRcbiIsCj4gPiBkcHVfY3J0Yy0+bnVt X21peGVycyk7Cj4gPiA+ICsJaWYgKGNzdGF0ZS0+bnVtX21peGVycyA+IENSVENfRFVBTF9NSVhF UlMpIHsKPiA+IAo+ID4gVGhpcyBpcyBub3QgcG9zc2libGUuCj4gPiAKPiA+ID4gKwkJRFBVX0VS Uk9SKCJpbnZhbGlkIG51bWJlciBtaXhlcnM6ICVkXG4iLAo+ID4gY3N0YXRlLT5udW1fbWl4ZXJz KTsKPiA+ID4gIAkJcmV0dXJuOwo+ID4gPiAgCX0KPiA+ID4gCj4gPiA+IC0JZm9yIChpID0gMDsg aSA8IGRwdV9jcnRjLT5udW1fbWl4ZXJzOyBpKyspIHsKPiA+ID4gKwlmb3IgKGkgPSAwOyBpIDwg Y3N0YXRlLT5udW1fbWl4ZXJzOyBpKyspIHsKPiA+ID4gIAkJaWYgKCFtaXhlcltpXS5od19sbSB8 fCAhbWl4ZXJbaV0uaHdfY3RsKSB7Cj4gPiA+ICAJCQlEUFVfRVJST1IoImludmFsaWQgbG0gb3Ig Y3RsIGFzc2lnbmVkIHRvCj4gPiBtaXhlclxuIik7Cj4gPiA+ICAJCQlyZXR1cm47Cj4gPiA+IEBA IC0zMDgsNyArMzA4LDcgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX2JsZW5kX3NldHVwKHN0cnVj dCBkcm1fY3J0Ywo+ID4gKmNydGMpCj4gPiA+IAo+ID4gPiAgCV9kcHVfY3J0Y19ibGVuZF9zZXR1 cF9taXhlcihjcnRjLCBkcHVfY3J0YywgbWl4ZXIpOwo+ID4gPiAKPiA+ID4gLQlmb3IgKGkgPSAw OyBpIDwgZHB1X2NydGMtPm51bV9taXhlcnM7IGkrKykgewo+ID4gPiArCWZvciAoaSA9IDA7IGkg PCBjc3RhdGUtPm51bV9taXhlcnM7IGkrKykgewo+ID4gPiAgCQljdGwgPSBtaXhlcltpXS5od19j dGw7Cj4gPiA+ICAJCWxtID0gbWl4ZXJbaV0uaHdfbG07Cj4gPiA+IAo+ID4gPiBAQCAtNTMwLDcg KzUzMCw3IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19zZXR1cF9taXhlcl9mb3JfZW5jb2RlcigK PiA+ID4gIAkJc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ID4gPiAgCQlzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuYykKPiA+ID4gIHsKPiA+ID4gLQlzdHJ1Y3QgZHB1X2NydGMgKmRwdV9jcnRjID0gdG9f ZHB1X2NydGMoY3J0Yyk7Cj4gPiA+ICsJc3RydWN0IGRwdV9jcnRjX3N0YXRlICpjc3RhdGUgPSB0 b19kcHVfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Cj4gPiA+ICAJc3RydWN0IGRwdV9rbXMgKmRw dV9rbXMgPSBfZHB1X2NydGNfZ2V0X2ttcyhjcnRjKTsKPiA+ID4gIAlzdHJ1Y3QgZHB1X3JtICpy bSA9ICZkcHVfa21zLT5ybTsKPiA+ID4gIAlzdHJ1Y3QgZHB1X2NydGNfbWl4ZXIgKm1peGVyOwo+ ID4gPiBAQCAtNTQyLDggKzU0Miw4IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19zZXR1cF9taXhl cl9mb3JfZW5jb2RlcigKPiA+ID4gIAlkcHVfcm1faW5pdF9od19pdGVyKCZjdGxfaXRlciwgZW5j LT5iYXNlLmlkLCBEUFVfSFdfQkxLX0NUTCk7Cj4gPiA+IAo+ID4gPiAgCS8qIFNldCB1cCBhbGwg dGhlIG1peGVycyBhbmQgY3RscyByZXNlcnZlZCBieSB0aGlzIGVuY29kZXIgKi8KPiA+ID4gLQlm b3IgKGkgPSBkcHVfY3J0Yy0+bnVtX21peGVyczsgaSA8IEFSUkFZX1NJWkUoZHB1X2NydGMtPm1p eGVycyk7Cj4gPiBpKyspIHsKPiA+ID4gLQkJbWl4ZXIgPSAmZHB1X2NydGMtPm1peGVyc1tpXTsK PiA+ID4gKwlmb3IgKGkgPSBjc3RhdGUtPm51bV9taXhlcnM7IGkgPCBBUlJBWV9TSVpFKGNzdGF0 ZS0+bWl4ZXJzKTsgaSsrKQo+ID4gewo+ID4gPiArCQltaXhlciA9ICZjc3RhdGUtPm1peGVyc1tp XTsKPiA+ID4gCj4gPiA+ICAJCWlmICghZHB1X3JtX2dldF9odyhybSwgJmxtX2l0ZXIpKQo+ID4g PiAgCQkJYnJlYWs7Cj4gPiA+IEBAIC01NjgsNyArNTY4LDcgQEAgc3RhdGljIHZvaWQgX2RwdV9j cnRjX3NldHVwX21peGVyX2Zvcl9lbmNvZGVyKAo+ID4gPiAKPiA+ID4gIAkJbWl4ZXItPmVuY29k ZXIgPSBlbmM7Cj4gPiA+IAo+ID4gPiAtCQlkcHVfY3J0Yy0+bnVtX21peGVycysrOwo+ID4gPiAr CQljc3RhdGUtPm51bV9taXhlcnMrKzsKPiA+ID4gIAkJRFBVX0RFQlVHKCJzZXR1cCBtaXhlciAl ZDogbG0gJWRcbiIsCj4gPiA+ICAJCQkJaSwgbWl4ZXItPmh3X2xtLT5pZHggLSBMTV8wKTsKPiA+ ID4gIAkJRFBVX0RFQlVHKCJzZXR1cCBtaXhlciAlZDogY3RsICVkXG4iLAo+ID4gPiBAQCAtNTc5 LDExICs1NzksMTEgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX3NldHVwX21peGVyX2Zvcl9lbmNv ZGVyKAo+ID4gPiAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX3NldHVwX21peGVycyhzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCj4gPiA+ICB7Cj4gPiA+ICAJc3RydWN0IGRwdV9jcnRjICpkcHVfY3J0YyA9 IHRvX2RwdV9jcnRjKGNydGMpOwo+ID4gPiArCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAqY3N0YXRl ID0gdG9fZHB1X2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+ID4gPiAgCXN0cnVjdCBkcm1fZW5j b2RlciAqZW5jOwo+ID4gPiAKPiA+ID4gLQlkcHVfY3J0Yy0+bnVtX21peGVycyA9IDA7Cj4gPiA+ IC0JZHB1X2NydGMtPm1peGVyc19zd2FwcGVkID0gZmFsc2U7Cj4gPiA+IC0JbWVtc2V0KGRwdV9j cnRjLT5taXhlcnMsIDAsIHNpemVvZihkcHVfY3J0Yy0+bWl4ZXJzKSk7Cj4gPiA+ICsJY3N0YXRl LT5udW1fbWl4ZXJzID0gMDsKPiA+ID4gKwltZW1zZXQoY3N0YXRlLT5taXhlcnMsIDAsIHNpemVv Zihjc3RhdGUtPm1peGVycykpOwo+ID4gCj4gPiBXaHkgaXMgdGhpcyBuZWNlc3Nhcnk/Cj4gPiAK PiA+ID4gCj4gPiA+ICAJbXV0ZXhfbG9jaygmZHB1X2NydGMtPmNydGNfbG9jayk7Cj4gPiA+ICAJ LyogQ2hlY2sgZm9yIG1peGVycyBvbiBhbGwgZW5jb2RlcnMgYXR0YWNoZWQgdG8gdGhpcyBjcnRj ICovCj4gPiA+IEBAIC02MTgsNyArNjE4LDcgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX3NldHVw X2xtX2JvdW5kcyhzdHJ1Y3QKPiA+IGRybV9jcnRjICpjcnRjLAo+ID4gPiAgCWNydGNfc3BsaXRf d2lkdGggPSBfZHB1X2NydGNfZ2V0X21peGVyX3dpZHRoKGRwdV9jcnRjLCBjc3RhdGUsCj4gPiA+ ICAJCQkJCQkgICAgYWRqX21vZGUpOwo+ID4gPiAKPiA+ID4gLQlmb3IgKGkgPSAwOyBpIDwgZHB1 X2NydGMtPm51bV9taXhlcnM7IGkrKykgewo+ID4gPiArCWZvciAoaSA9IDA7IGkgPCBjc3RhdGUt Pm51bV9taXhlcnM7IGkrKykgewo+ID4gPiAgCQlzdHJ1Y3QgZHJtX3JlY3QgKnIgPSAmY3N0YXRl LT5sbV9ib3VuZHNbaV07Cj4gPiA+ICAJCXItPngxID0gY3J0Y19zcGxpdF93aWR0aCAqIGk7Cj4g PiA+ICAJCXItPnkxID0gMDsKPiA+ID4gQEAgLTYzNSw2ICs2MzUsNyBAQCBzdGF0aWMgdm9pZCBk cHVfY3J0Y19hdG9taWNfYmVnaW4oc3RydWN0IGRybV9jcnRjCj4gPiAqY3J0YywKPiA+ID4gIAkJ c3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfc3RhdGUpCj4gPiA+ICB7Cj4gPiA+ICAJc3RydWN0 IGRwdV9jcnRjICpkcHVfY3J0YzsKPiA+ID4gKwlzdHJ1Y3QgZHB1X2NydGNfc3RhdGUgKmNzdGF0 ZTsKPiA+ID4gIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7Cj4gPiA+ICAJc3RydWN0IGRy bV9kZXZpY2UgKmRldjsKPiA+ID4gIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ID4gPiBAQCAtNjU0 LDEwICs2NTUsMTEgQEAgc3RhdGljIHZvaWQgZHB1X2NydGNfYXRvbWljX2JlZ2luKHN0cnVjdAo+ ID4gPiBkcm1fY3J0Ywo+ID4gKmNydGMsCj4gPiA+ICAJRFBVX0RFQlVHKCJjcnRjJWRcbiIsIGNy dGMtPmJhc2UuaWQpOwo+ID4gPiAKPiA+ID4gIAlkcHVfY3J0YyA9IHRvX2RwdV9jcnRjKGNydGMp Owo+ID4gPiArCWNzdGF0ZSA9IHRvX2RwdV9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPiA+ID4g IAlkZXYgPSBjcnRjLT5kZXY7Cj4gPiA+ICAJc21tdV9zdGF0ZSA9ICZkcHVfY3J0Yy0+c21tdV9z dGF0ZTsKPiA+ID4gCj4gPiA+IC0JaWYgKCFkcHVfY3J0Yy0+bnVtX21peGVycykgewo+ID4gPiAr CWlmICghY3N0YXRlLT5udW1fbWl4ZXJzKSB7Cj4gPiA+ICAJCV9kcHVfY3J0Y19zZXR1cF9taXhl cnMoY3J0Yyk7Cj4gPiA+ICAJCV9kcHVfY3J0Y19zZXR1cF9sbV9ib3VuZHMoY3J0YywgY3J0Yy0+ c3RhdGUpOwo+ID4gPiAgCX0KPiA+ID4gQEAgLTY4NCw3ICs2ODYsNyBAQCBzdGF0aWMgdm9pZCBk cHVfY3J0Y19hdG9taWNfYmVnaW4oc3RydWN0IGRybV9jcnRjCj4gPiAqY3J0YywKPiA+ID4gIAkg KiBpdCBtZWFucyB3ZSBhcmUgdHJ5aW5nIHRvIGZsdXNoIGEgQ1JUQyB3aG9zZSBzdGF0ZSBpcyBk aXNhYmxlZDoKPiA+ID4gIAkgKiBub3RoaW5nIGVsc2UgbmVlZHMgdG8gYmUgZG9uZS4KPiA+ID4g IAkgKi8KPiA+ID4gLQlpZiAodW5saWtlbHkoIWRwdV9jcnRjLT5udW1fbWl4ZXJzKSkKPiA+ID4g KwlpZiAodW5saWtlbHkoIWNzdGF0ZS0+bnVtX21peGVycykpCj4gPiA+ICAJCXJldHVybjsKPiA+ ID4gCj4gPiA+ICAJX2RwdV9jcnRjX2JsZW5kX3NldHVwKGNydGMpOwo+ID4gPiBAQCAtNzQ4LDcg Kzc1MCw3IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2F0b21pY19mbHVzaChzdHJ1Y3QgZHJtX2Ny dGMKPiA+ICpjcnRjLAo+ID4gPiAgCSAqIGl0IG1lYW5zIHdlIGFyZSB0cnlpbmcgdG8gZmx1c2gg YSBDUlRDIHdob3NlIHN0YXRlIGlzIGRpc2FibGVkOgo+ID4gPiAgCSAqIG5vdGhpbmcgZWxzZSBu ZWVkcyB0byBiZSBkb25lLgo+ID4gPiAgCSAqLwo+ID4gPiAtCWlmICh1bmxpa2VseSghZHB1X2Ny dGMtPm51bV9taXhlcnMpKQo+ID4gPiArCWlmICh1bmxpa2VseSghY3N0YXRlLT5udW1fbWl4ZXJz KSkKPiA+ID4gIAkJcmV0dXJuOwo+ID4gPiAKPiA+ID4gIAkvKgo+ID4gPiBAQCAtODYzLDcgKzg2 NSw3IEBAIHZvaWQgZHB1X2NydGNfY29tbWl0X2tpY2tvZmYoc3RydWN0IGRybV9jcnRjCj4gPiA+ ICpjcnRjKQo+ID4gPiAgCSAqIGl0IG1lYW5zIHdlIGFyZSB0cnlpbmcgdG8gc3RhcnQgYSBDUlRD IHdob3NlIHN0YXRlIGlzIGRpc2FibGVkOgo+ID4gPiAgCSAqIG5vdGhpbmcgZWxzZSBuZWVkcyB0 byBiZSBkb25lLgo+ID4gPiAgCSAqLwo+ID4gPiAtCWlmICh1bmxpa2VseSghZHB1X2NydGMtPm51 bV9taXhlcnMpKQo+ID4gPiArCWlmICh1bmxpa2VseSghY3N0YXRlLT5udW1fbWl4ZXJzKSkKPiA+ ID4gIAkJcmV0dXJuOwo+ID4gPiAKPiA+ID4gIAlEUFVfQVRSQUNFX0JFR0lOKCJjcnRjX2NvbW1p dCIpOwo+ID4gPiBAQCAtMTA5NywxMiArMTA5OSwxNCBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19o YW5kbGVfcG93ZXJfZXZlbnQodTMyCj4gPiBldmVudF90eXBlLCB2b2lkICphcmcpCj4gPiA+ICAJ c3RydWN0IGRybV9jcnRjICpjcnRjID0gYXJnOwo+ID4gPiAgCXN0cnVjdCBkcHVfY3J0YyAqZHB1 X2NydGM7Cj4gPiA+ICAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwo+ID4gPiArCXN0cnVj dCBkcHVfY3J0Y19zdGF0ZSAqY3N0YXRlOwo+ID4gPiAKPiA+ID4gIAlpZiAoIWNydGMpIHsKPiA+ ID4gIAkJRFBVX0VSUk9SKCJpbnZhbGlkIGNydGNcbiIpOwo+ID4gPiAgCQlyZXR1cm47Cj4gPiA+ ICAJfQo+ID4gPiAgCWRwdV9jcnRjID0gdG9fZHB1X2NydGMoY3J0Yyk7Cj4gPiA+ICsJY3N0YXRl ID0gdG9fZHB1X2NydGNfc3RhdGUoZHB1X2NydGMtPmJhc2Uuc3RhdGUpOwo+ID4gPiAKPiA+ID4g IAltdXRleF9sb2NrKCZkcHVfY3J0Yy0+Y3J0Y19sb2NrKTsKPiA+ID4gCj4gPiA+IEBAIC0xMTk3 LDkgKzEyMDEsOCBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0 Ywo+ID4gKmNydGMpCj4gPiA+ICAJCWRwdV9wb3dlcl9oYW5kbGVfdW5yZWdpc3Rlcl9ldmVudChk cHVfY3J0Yy0+cGhhbmRsZSwKPiA+ID4gIAkJCQlkcHVfY3J0Yy0+cG93ZXJfZXZlbnQpOwo+ID4g PiAKPiA+ID4gLQltZW1zZXQoZHB1X2NydGMtPm1peGVycywgMCwgc2l6ZW9mKGRwdV9jcnRjLT5t aXhlcnMpKTsKPiA+ID4gLQlkcHVfY3J0Yy0+bnVtX21peGVycyA9IDA7Cj4gPiA+IC0JZHB1X2Ny dGMtPm1peGVyc19zd2FwcGVkID0gZmFsc2U7Cj4gPiA+ICsJbWVtc2V0KGNzdGF0ZS0+bWl4ZXJz LCAwLCBzaXplb2YoY3N0YXRlLT5taXhlcnMpKTsKPiA+IAo+ID4gU2FtZSBxdWVzdGlvbiBoZXJl LCB3aHkgaXMgdGhpcyBuZWNlc3Nhcnk/Cj4gPiAKPiA+ID4gKwljc3RhdGUtPm51bV9taXhlcnMg PSAwOwo+ID4gPiAKPiA+ID4gIAkvKiBkaXNhYmxlIGNsayAmIGJ3IGNvbnRyb2wgdW50aWwgY2xr ICYgYncgcHJvcGVydGllcyBhcmUgc2V0ICovCj4gPiA+ICAJY3N0YXRlLT5id19jb250cm9sID0g ZmFsc2U7Cj4gPiA+IEBAIC0xNTQ3LDYgKzE1NTAsOCBAQCBzdGF0aWMgaW50IF9kcHVfZGVidWdm c19zdGF0dXNfc2hvdyhzdHJ1Y3QKPiA+IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKQo+ID4gPiAK PiA+ID4gIAlkcHVfY3J0YyA9IHMtPnByaXZhdGU7Cj4gPiA+ICAJY3J0YyA9ICZkcHVfY3J0Yy0+ YmFzZTsKPiA+ID4gKwo+ID4gPiArCWRybV9tb2Rlc2V0X2xvY2soJmNydGMtPm11dGV4LCBOVUxM KTsKPiA+IAo+ID4gV2hlbiBJIHN1Z2dlc3RlZCB0aGlzLCBJIHdhcyBob3BpbmcgeW91J2QgcHV0 IGl0IGluIGEgc2VwYXJhdGUgcGF0Y2guCj4gPiBBZGRpdGlvbmFsbHksIHlvdSdsbCBwcm9iYWJs eSB3YW50IG1vZGVzZXRfbG9ja19hbGwgaW5zdGVhZC4KPiAKPiBjcnRjIHN0YXRlIHJldHJpZXZh bCBpcyBpbnRyb2R1Y2VkIGluIHRoaXMgcGF0Y2guIFNvIEkgdGhvdWdodCBpdCB3b3VsZCBtYWtl Cj4gc2Vuc2UgdG8gYWRkIHRoZSBsb2NraW5nIGFzIHdlbGwgYSBwYXJ0IG9mIHRoaXMgcGF0Y2gu Cj4gCj4gPiAKPiA+ID4gIAljc3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7 CgpGcm9tIHRoaXMgbGluZSwgaXQgbG9va3MgbGlrZSBjcnRjIHN0YXRlIHJldHJpZXZhbCBhbHJl YWR5IGV4aXN0ZWQuIE5vdCBhIGh1Z2UKZGVhbCBlaXRoZXIgd2F5IGFzIGxvbmcgYXMgdGhlIGxv Y2tpbmcgaXMgY29ycmVjdGVkLgoKU2VhbgoKPiA+ID4gCj4gPiA+ICAJbXV0ZXhfbG9jaygmZHB1 X2NydGMtPmNydGNfbG9jayk7Cj4gPiA+IEBAIC0xNTU4LDggKzE1NjMsOCBAQCBzdGF0aWMgaW50 IF9kcHVfZGVidWdmc19zdGF0dXNfc2hvdyhzdHJ1Y3QKPiA+IHNlcV9maWxlICpzLCB2b2lkICpk YXRhKQo+ID4gPiAKPiA+ID4gIAlzZXFfcHV0cyhzLCAiXG4iKTsKPiA+ID4gCj4gPiA+IC0JZm9y IChpID0gMDsgaSA8IGRwdV9jcnRjLT5udW1fbWl4ZXJzOyArK2kpIHsKPiA+ID4gLQkJbSA9ICZk cHVfY3J0Yy0+bWl4ZXJzW2ldOwo+ID4gPiArCWZvciAoaSA9IDA7IGkgPCBjc3RhdGUtPm51bV9t aXhlcnM7ICsraSkgewo+ID4gPiArCQltID0gJmNzdGF0ZS0+bWl4ZXJzW2ldOwo+ID4gPiAgCQlp ZiAoIW0tPmh3X2xtKQo+ID4gPiAgCQkJc2VxX3ByaW50ZihzLCAiXHRtaXhlclslZF0gaGFzIG5v IGxtXG4iLCBpKTsKPiA+ID4gIAkJZWxzZSBpZiAoIW0tPmh3X2N0bCkKPiA+ID4gQEAgLTE2Mzks NiArMTY0NCw3IEBAIHN0YXRpYyBpbnQgX2RwdV9kZWJ1Z2ZzX3N0YXR1c19zaG93KHN0cnVjdAo+ ID4gc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpCj4gPiA+ICAJc2VxX3ByaW50ZihzLCAidmJsYW5r X2VuYWJsZTolZFxuIiwgZHB1X2NydGMtPnZibGFua19yZXF1ZXN0ZWQpOwo+ID4gPiAKPiA+ID4g IAltdXRleF91bmxvY2soJmRwdV9jcnRjLT5jcnRjX2xvY2spOwo+ID4gPiArCWRybV9tb2Rlc2V0 X3VubG9jaygmY3J0Yy0+bXV0ZXgpOwo+ID4gPiAKPiA+ID4gIAlyZXR1cm4gMDsKPiA+ID4gIH0K PiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRj LmgKPiA+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuaAo+ID4gPiBp bmRleCA1ZTRkYzVjLi43YWE3NzJmIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5oCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9jcnRjLmgKPiA+ID4gQEAgLTEyMSwxMSArMTIxLDYgQEAgc3RydWN0IGRw dV9jcnRjX2ZyYW1lX2V2ZW50IHsKPiA+ID4gICAqIHN0cnVjdCBkcHVfY3J0YyAtIHZpcnR1YWxp emVkIENSVEMgZGF0YSBzdHJ1Y3R1cmUKPiA+ID4gICAqIEBiYXNlICAgICAgICAgIDogQmFzZSBk cm0gY3J0YyBzdHJ1Y3R1cmUKPiA+ID4gICAqIEBuYW1lICAgICAgICAgIDogQVNDSUkgZGVzY3Jp cHRpb24gb2YgdGhpcyBjcnRjCj4gPiA+IC0gKiBAbnVtX2N0bHMgICAgICA6IE51bWJlciBvZiBj dGwgcGF0aHMgaW4gdXNlCj4gPiA+IC0gKiBAbnVtX21peGVycyAgICA6IE51bWJlciBvZiBtaXhl cnMgaW4gdXNlCj4gPiA+IC0gKiBAbWl4ZXJzX3N3YXBwZWQ6IFdoZXRoZXIgdGhlIG1peGVycyBo YXZlIGJlZW4gc3dhcHBlZCBmb3IKPiA+ID4gbGVmdC9yaWdodAo+ID4gdXBkYXRlCj4gPiA+IC0g KiAgICAgICAgICAgICAgICAgIGVzcGVjaWFsbHkgaW4gdGhlIGNhc2Ugb2YgRFNDIE1lcmdlLgo+ ID4gPiAtICogQG1peGVycyAgICAgICAgOiBMaXN0IG9mIGFjdGl2ZSBtaXhlcnMKPiA+ID4gICAq IEBldmVudCAgICAgICAgIDogUG9pbnRlciB0byBsYXN0IHJlY2VpdmVkIGRybSB2YmxhbmsgZXZl bnQuIElmCj4gPiA+IHRoZXJlCj4gPiBpcyBhCj4gPiA+ICAgKiAgICAgICAgICAgICAgICAgIHBl bmRpbmcgdmJsYW5rIGV2ZW50LCB0aGlzIHdpbGwgYmUgbm9uLW51bGwuCj4gPiA+ICAgKiBAdnN5 bmNfY291bnQgICA6IFJ1bm5pbmcgY291bnQgb2YgcmVjZWl2ZWQgdnN5bmMgZXZlbnRzCj4gPiA+ IEBAIC0xNjQsMTIgKzE1OSw2IEBAIHN0cnVjdCBkcHVfY3J0YyB7Cj4gPiA+ICAJc3RydWN0IGRy bV9jcnRjIGJhc2U7Cj4gPiA+ICAJY2hhciBuYW1lW0RQVV9DUlRDX05BTUVfU0laRV07Cj4gPiA+ IAo+ID4gPiAtCS8qIEhXIFJlc291cmNlcyByZXNlcnZlZCBmb3IgdGhlIGNydGMgKi8KPiA+ID4g LQl1MzIgbnVtX2N0bHM7Cj4gPiA+IC0JdTMyIG51bV9taXhlcnM7Cj4gPiA+IC0JYm9vbCBtaXhl cnNfc3dhcHBlZDsKPiA+ID4gLQlzdHJ1Y3QgZHB1X2NydGNfbWl4ZXIgbWl4ZXJzW0NSVENfRFVB TF9NSVhFUlNdOwo+ID4gPiAtCj4gPiA+ICAJc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVu dCAqZXZlbnQ7Cj4gPiA+ICAJdTMyIHZzeW5jX2NvdW50Owo+ID4gPiAKPiA+ID4gQEAgLTIyMSw2 ICsyMTAsMTAgQEAgc3RydWN0IGRwdV9jcnRjIHsKPiA+ID4gICAqIEBwcm9wZXJ0eV92YWx1ZXM6 IEN1cnJlbnQgY3J0YyBwcm9wZXJ0eSB2YWx1ZXMKPiA+ID4gICAqIEBpbnB1dF9mZW5jZV90aW1l b3V0X25zIDogQ2FjaGVkIGlucHV0IGZlbmNlIHRpbWVvdXQsIGluIG5zCj4gPiA+ICAgKiBAbmV3 X3BlcmY6IG5ldyBwZXJmb3JtYW5jZSBzdGF0ZSBiZWluZyByZXF1ZXN0ZWQKPiA+ID4gKyAqIEBu dW1fbWl4ZXJzICAgIDogTnVtYmVyIG9mIG1peGVycyBpbiB1c2UKPiA+ID4gKyAqIEBtaXhlcnMg ICAgICAgIDogTGlzdCBvZiBhY3RpdmUgbWl4ZXJzCj4gPiA+ICsgKiBAbnVtX2N0bHMgICAgICA6 IE51bWJlciBvZiBjdGwgcGF0aHMgaW4gdXNlCj4gPiA+ICsgKiBAaHdfY3RscyAgICAgICA6IExp c3Qgb2YgYWN0aXZlIGN0bCBwYXRocwo+ID4gPiAgICovCj4gPiA+ICBzdHJ1Y3QgZHB1X2NydGNf c3RhdGUgewo+ID4gPiAgCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSBiYXNlOwo+ID4gPiBAQCAtMjMy LDYgKzIyNSwxMyBAQCBzdHJ1Y3QgZHB1X2NydGNfc3RhdGUgewo+ID4gPiAgCXVpbnQ2NF90IGlu cHV0X2ZlbmNlX3RpbWVvdXRfbnM7Cj4gPiA+IAo+ID4gPiAgCXN0cnVjdCBkcHVfY29yZV9wZXJm X3BhcmFtcyBuZXdfcGVyZjsKPiA+ID4gKwo+ID4gPiArCS8qIEhXIFJlc291cmNlcyByZXNlcnZl ZCBmb3IgdGhlIGNydGMgKi8KPiA+ID4gKwl1MzIgbnVtX21peGVyczsKPiA+ID4gKwlzdHJ1Y3Qg ZHB1X2NydGNfbWl4ZXIgbWl4ZXJzW0NSVENfRFVBTF9NSVhFUlNdOwo+ID4gPiArCj4gPiA+ICsJ dTMyIG51bV9jdGxzOwo+ID4gPiArCXN0cnVjdCBkcHVfaHdfY3RsICpod19jdGxzW0NSVENfRFVB TF9NSVhFUlNdOwo+ID4gPiAgfTsKPiA+ID4gCj4gPiA+ICAjZGVmaW5lIHRvX2RwdV9jcnRjX3N0 YXRlKHgpIFwKPiA+ID4gLS0KPiA+ID4gVGhlIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJ bmMuIGlzIGEgbWVtYmVyIG9mIHRoZSBDb2RlIEF1cm9yYQo+ID4gRm9ydW0sCj4gPiA+IGEgTGlu dXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2plY3QKPiA+ID4gCj4gCj4gLS0gCj4gSmV5 a3VtYXIgUwoKLS0gClNlYW4gUGF1bCwgU29mdHdhcmUgRW5naW5lZXIsIEdvb2dsZSAvIENocm9t aXVtIE9TCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZy ZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=