From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH v3 08/13] drm/msm/dpu: move hw resource tracking to crtc state Date: Tue, 14 Aug 2018 15:57:19 -0400 Message-ID: <20180814195719.GH164269@art_vandelay> References: <1533697956-29686-1-git-send-email-jsanka@codeaurora.org> <1533697956-29686-9-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: <1533697956-29686-9-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, 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 T24gVHVlLCBBdWcgMDcsIDIwMTggYXQgMDg6MTI6MzVQTSAtMDcwMCwgSmV5a3VtYXIgU2Fua2Fy YW4gd3JvdGU6Cj4gUHJlcCBjaGFuZ2VzIGZvciBzdGF0ZSBiYXNlZCByZXNvdXJjZSBtYW5hZ2Vt ZW50Lgo+IAo+IE1vdmVzIGFsbCB0aGUgaHcgYmxvY2sgdHJhY2tpbmcgZm9yIHRoZSBjcnRjIHRv IHRoZSBzdGF0ZQo+IG9iamVjdC4KPiAKPiBjaGFuZ2VzIGluIHYyOgo+IAktIG5vbmUKPiBjaGFu Z2VzIGluIHYzOgo+IAktIG5vbmUKPiAKPiBDaGFuZ2UtSWQ6IEkyODE2ZTllMjhiMjdmMTEyNmI0 NzdkNjJlYjM4NThhMzBhNjUyNzQ3Cj4gU2lnbmVkLW9mZi1ieTogSmV5a3VtYXIgU2Fua2FyYW4g PGpzYW5rYUBjb2RlYXVyb3JhLm9yZz4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2NydGMuYyB8IDc3ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmggfCAyNSArKysrKy0tLS0t LQo+ICAyIGZpbGVzIGNoYW5nZWQsIDU0IGluc2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQo+ IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5j IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYwo+IGluZGV4IDFmMmQy MjMuLjUxNWIwZTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2NydGMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRj LmMKPiBAQCAtMTM2LDkgKzEzNiw5IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19wcm9ncmFtX2xt X291dHB1dF9yb2koc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJY3J0Y19zdGF0ZSA9IHRvX2Rw dV9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPiAgCj4gIAlsbV9ob3Jpel9wb3NpdGlvbiA9IDA7 Cj4gLQlmb3IgKGxtX2lkeCA9IDA7IGxtX2lkeCA8IGRwdV9jcnRjLT5udW1fbWl4ZXJzOyBsbV9p ZHgrKykgewo+ICsJZm9yIChsbV9pZHggPSAwOyBsbV9pZHggPCBjcnRjX3N0YXRlLT5udW1fbWl4 ZXJzOyBsbV9pZHgrKykgewo+ICAJCWNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqbG1fcm9pID0gJmNy dGNfc3RhdGUtPmxtX2JvdW5kc1tsbV9pZHhdOwo+IC0JCXN0cnVjdCBkcHVfaHdfbWl4ZXIgKmh3 X2xtID0gZHB1X2NydGMtPm1peGVyc1tsbV9pZHhdLmh3X2xtOwo+ICsJCXN0cnVjdCBkcHVfaHdf bWl4ZXIgKmh3X2xtID0gY3J0Y19zdGF0ZS0+bWl4ZXJzW2xtX2lkeF0uaHdfbG07Cj4gIAkJc3Ry dWN0IGRwdV9od19taXhlcl9jZmcgY2ZnOwo+ICAKPiAgCQlpZiAoIWxtX3JvaSB8fCAhZHJtX3Jl Y3RfdmlzaWJsZShsbV9yb2kpKQo+IEBAIC0yMTksNyArMjE5LDcgQEAgc3RhdGljIHZvaWQgX2Rw dV9jcnRjX2JsZW5kX3NldHVwX21peGVyKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQkJCQkg ICBmYiA/IGZiLT5tb2RpZmllciA6IDApOwo+ICAKPiAgCQkvKiBibGVuZCBjb25maWcgdXBkYXRl ICovCj4gLQkJZm9yIChsbV9pZHggPSAwOyBsbV9pZHggPCBkcHVfY3J0Yy0+bnVtX21peGVyczsg bG1faWR4KyspIHsKPiArCQlmb3IgKGxtX2lkeCA9IDA7IGxtX2lkeCA8IGNzdGF0ZS0+bnVtX21p eGVyczsgbG1faWR4KyspIHsKPiAgCQkJX2RwdV9jcnRjX3NldHVwX2JsZW5kX2NmZyhtaXhlciAr IGxtX2lkeCwgcHN0YXRlKTsKPiAgCj4gIAkJCW1peGVyW2xtX2lkeF0uZmx1c2hfbWFzayB8PSBm bHVzaF9tYXNrOwo+IEBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX2Js ZW5kX3NldHVwX21peGVyKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgc3RhdGljIHZvaWQgX2Rw dV9jcnRjX2JsZW5kX3NldHVwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgewo+ICAJc3RydWN0 IGRwdV9jcnRjICpkcHVfY3J0YzsKPiAtCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAqZHB1X2NydGNf c3RhdGU7Cj4gKwlzdHJ1Y3QgZHB1X2NydGNfc3RhdGUgKmNzdGF0ZTsKClVucmVsYXRlZCB2YXIg cmVuYW1lcyBhcmUga2luZCBvZiBub2lzeSwgYnV0IEkgc3VwcG9zZSBpdCdzIGp1c3Qgb25lLCBz byB0aGF0J3MKb2suCgo+ICAJc3RydWN0IGRwdV9jcnRjX21peGVyICptaXhlcjsKPiAgCXN0cnVj dCBkcHVfaHdfY3RsICpjdGw7Cj4gIAlzdHJ1Y3QgZHB1X2h3X21peGVyICpsbTsKPiBAQCAtMjUz LDE3ICsyNTMsMTcgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX2JsZW5kX3NldHVwKHN0cnVjdCBk cm1fY3J0YyAqY3J0YykKPiAgCQlyZXR1cm47Cj4gIAo+ICAJZHB1X2NydGMgPSB0b19kcHVfY3J0 YyhjcnRjKTsKPiAtCWRwdV9jcnRjX3N0YXRlID0gdG9fZHB1X2NydGNfc3RhdGUoY3J0Yy0+c3Rh dGUpOwo+IC0JbWl4ZXIgPSBkcHVfY3J0Yy0+bWl4ZXJzOwo+ICsJY3N0YXRlID0gdG9fZHB1X2Ny dGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+ICsJbWl4ZXIgPSBjc3RhdGUtPm1peGVyczsKPiAgCj4g IAlEUFVfREVCVUcoIiVzXG4iLCBkcHVfY3J0Yy0+bmFtZSk7Cj4gIAo+IC0JaWYgKGRwdV9jcnRj LT5udW1fbWl4ZXJzID4gQ1JUQ19EVUFMX01JWEVSUykgewo+IC0JCURQVV9FUlJPUigiaW52YWxp ZCBudW1iZXIgbWl4ZXJzOiAlZFxuIiwgZHB1X2NydGMtPm51bV9taXhlcnMpOwo+ICsJaWYgKGNz dGF0ZS0+bnVtX21peGVycyA+IENSVENfRFVBTF9NSVhFUlMpIHsKPiArCQlEUFVfRVJST1IoImlu dmFsaWQgbnVtYmVyIG1peGVyczogJWRcbiIsIGNzdGF0ZS0+bnVtX21peGVycyk7Cj4gIAkJcmV0 dXJuOwo+ICAJfQo+ICAKPiAtCWZvciAoaSA9IDA7IGkgPCBkcHVfY3J0Yy0+bnVtX21peGVyczsg aSsrKSB7Cj4gKwlmb3IgKGkgPSAwOyBpIDwgY3N0YXRlLT5udW1fbWl4ZXJzOyBpKyspIHsKPiAg CQlpZiAoIW1peGVyW2ldLmh3X2xtIHx8ICFtaXhlcltpXS5od19jdGwpIHsKPiAgCQkJRFBVX0VS Uk9SKCJpbnZhbGlkIGxtIG9yIGN0bCBhc3NpZ25lZCB0byBtaXhlclxuIik7Cj4gIAkJCXJldHVy bjsKPiBAQCAtMjgwLDcgKzI4MCw3IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19ibGVuZF9zZXR1 cChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAo+ICAJX2RwdV9jcnRjX2JsZW5kX3NldHVwX21p eGVyKGNydGMsIGRwdV9jcnRjLCBtaXhlcik7Cj4gIAo+IC0JZm9yIChpID0gMDsgaSA8IGRwdV9j cnRjLT5udW1fbWl4ZXJzOyBpKyspIHsKPiArCWZvciAoaSA9IDA7IGkgPCBjc3RhdGUtPm51bV9t aXhlcnM7IGkrKykgewo+ICAJCWN0bCA9IG1peGVyW2ldLmh3X2N0bDsKPiAgCQlsbSA9IG1peGVy W2ldLmh3X2xtOwo+ICAKPiBAQCAtNTAyLDcgKzUwMiw3IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0 Y19zZXR1cF9taXhlcl9mb3JfZW5jb2RlcigKPiAgCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4g IAkJc3RydWN0IGRybV9lbmNvZGVyICplbmMpCj4gIHsKPiAtCXN0cnVjdCBkcHVfY3J0YyAqZHB1 X2NydGMgPSB0b19kcHVfY3J0YyhjcnRjKTsKPiArCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAqY3N0 YXRlID0gdG9fZHB1X2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+ICAJc3RydWN0IGRwdV9rbXMg KmRwdV9rbXMgPSBfZHB1X2NydGNfZ2V0X2ttcyhjcnRjKTsKPiAgCXN0cnVjdCBkcHVfcm0gKnJt ID0gJmRwdV9rbXMtPnJtOwo+ICAJc3RydWN0IGRwdV9jcnRjX21peGVyICptaXhlcjsKPiBAQCAt NTE0LDggKzUxNCw4IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19zZXR1cF9taXhlcl9mb3JfZW5j b2RlcigKPiAgCWRwdV9ybV9pbml0X2h3X2l0ZXIoJmN0bF9pdGVyLCBlbmMtPmJhc2UuaWQsIERQ VV9IV19CTEtfQ1RMKTsKPiAgCj4gIAkvKiBTZXQgdXAgYWxsIHRoZSBtaXhlcnMgYW5kIGN0bHMg cmVzZXJ2ZWQgYnkgdGhpcyBlbmNvZGVyICovCj4gLQlmb3IgKGkgPSBkcHVfY3J0Yy0+bnVtX21p eGVyczsgaSA8IEFSUkFZX1NJWkUoZHB1X2NydGMtPm1peGVycyk7IGkrKykgewo+IC0JCW1peGVy ID0gJmRwdV9jcnRjLT5taXhlcnNbaV07Cj4gKwlmb3IgKGkgPSBjc3RhdGUtPm51bV9taXhlcnM7 IGkgPCBBUlJBWV9TSVpFKGNzdGF0ZS0+bWl4ZXJzKTsgaSsrKSB7Cj4gKwkJbWl4ZXIgPSAmY3N0 YXRlLT5taXhlcnNbaV07Cj4gIAo+ICAJCWlmICghZHB1X3JtX2dldF9odyhybSwgJmxtX2l0ZXIp KQo+ICAJCQlicmVhazsKPiBAQCAtNTQwLDcgKzU0MCw3IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0 Y19zZXR1cF9taXhlcl9mb3JfZW5jb2RlcigKPiAgCj4gIAkJbWl4ZXItPmVuY29kZXIgPSBlbmM7 Cj4gIAo+IC0JCWRwdV9jcnRjLT5udW1fbWl4ZXJzKys7Cj4gKwkJY3N0YXRlLT5udW1fbWl4ZXJz Kys7Cj4gIAkJRFBVX0RFQlVHKCJzZXR1cCBtaXhlciAlZDogbG0gJWRcbiIsCj4gIAkJCQlpLCBt aXhlci0+aHdfbG0tPmlkeCAtIExNXzApOwo+ICAJCURQVV9ERUJVRygic2V0dXAgbWl4ZXIgJWQ6 IGN0bCAlZFxuIiwKPiBAQCAtNTUxLDExICs1NTEsMTEgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRj X3NldHVwX21peGVyX2Zvcl9lbmNvZGVyKAo+ICBzdGF0aWMgdm9pZCBfZHB1X2NydGNfc2V0dXBf bWl4ZXJzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgewo+ICAJc3RydWN0IGRwdV9jcnRjICpk cHVfY3J0YyA9IHRvX2RwdV9jcnRjKGNydGMpOwo+ICsJc3RydWN0IGRwdV9jcnRjX3N0YXRlICpj c3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Cj4gIAlzdHJ1Y3QgZHJtX2Vu Y29kZXIgKmVuYzsKPiAgCj4gLQlkcHVfY3J0Yy0+bnVtX21peGVycyA9IDA7Cj4gLQlkcHVfY3J0 Yy0+bWl4ZXJzX3N3YXBwZWQgPSBmYWxzZTsKPiAtCW1lbXNldChkcHVfY3J0Yy0+bWl4ZXJzLCAw LCBzaXplb2YoZHB1X2NydGMtPm1peGVycykpOwo+ICsJY3N0YXRlLT5udW1fbWl4ZXJzID0gMDsK PiArCW1lbXNldChjc3RhdGUtPm1peGVycywgMCwgc2l6ZW9mKGNzdGF0ZS0+bWl4ZXJzKSk7Cj4g IAo+ICAJbXV0ZXhfbG9jaygmZHB1X2NydGMtPmNydGNfbG9jayk7Cj4gIAkvKiBDaGVjayBmb3Ig bWl4ZXJzIG9uIGFsbCBlbmNvZGVycyBhdHRhY2hlZCB0byB0aGlzIGNydGMgKi8KPiBAQCAtNTg5 LDcgKzU4OSw3IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19zZXR1cF9sbV9ib3VuZHMoc3RydWN0 IGRybV9jcnRjICpjcnRjLAo+ICAJYWRqX21vZGUgPSAmc3RhdGUtPmFkanVzdGVkX21vZGU7Cj4g IAljcnRjX3NwbGl0X3dpZHRoID0gZHB1X2NydGNfZ2V0X21peGVyX3dpZHRoKGRwdV9jcnRjLCBj c3RhdGUsIGFkal9tb2RlKTsKPiAgCj4gLQlmb3IgKGkgPSAwOyBpIDwgZHB1X2NydGMtPm51bV9t aXhlcnM7IGkrKykgewo+ICsJZm9yIChpID0gMDsgaSA8IGNzdGF0ZS0+bnVtX21peGVyczsgaSsr KSB7Cj4gIAkJc3RydWN0IGRybV9yZWN0ICpyID0gJmNzdGF0ZS0+bG1fYm91bmRzW2ldOwo+ICAJ CXItPngxID0gY3J0Y19zcGxpdF93aWR0aCAqIGk7Cj4gIAkJci0+eTEgPSAwOwo+IEBAIC02MDYs NiArNjA2LDcgQEAgc3RhdGljIHZvaWQgZHB1X2NydGNfYXRvbWljX2JlZ2luKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKPiAgCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9zdGF0ZSkKPiAgewo+ ICAJc3RydWN0IGRwdV9jcnRjICpkcHVfY3J0YzsKPiArCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAq Y3N0YXRlOwo+ICAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwo+ICAJc3RydWN0IGRybV9k ZXZpY2UgKmRldjsKPiAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gQEAgLTYyNSwxMCArNjI2LDEx IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2F0b21pY19iZWdpbihzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCj4gIAlEUFVfREVCVUcoImNydGMlZFxuIiwgY3J0Yy0+YmFzZS5pZCk7Cj4gIAo+ICAJZHB1 X2NydGMgPSB0b19kcHVfY3J0YyhjcnRjKTsKPiArCWNzdGF0ZSA9IHRvX2RwdV9jcnRjX3N0YXRl KGNydGMtPnN0YXRlKTsKPiAgCWRldiA9IGNydGMtPmRldjsKPiAgCXNtbXVfc3RhdGUgPSAmZHB1 X2NydGMtPnNtbXVfc3RhdGU7Cj4gIAo+IC0JaWYgKCFkcHVfY3J0Yy0+bnVtX21peGVycykgewo+ ICsJaWYgKCFjc3RhdGUtPm51bV9taXhlcnMpIHsKPiAgCQlfZHB1X2NydGNfc2V0dXBfbWl4ZXJz KGNydGMpOwo+ICAJCV9kcHVfY3J0Y19zZXR1cF9sbV9ib3VuZHMoY3J0YywgY3J0Yy0+c3RhdGUp Owo+ICAJfQo+IEBAIC02NTUsNyArNjU3LDcgQEAgc3RhdGljIHZvaWQgZHB1X2NydGNfYXRvbWlj X2JlZ2luKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCSAqIGl0IG1lYW5zIHdlIGFyZSB0cnlp bmcgdG8gZmx1c2ggYSBDUlRDIHdob3NlIHN0YXRlIGlzIGRpc2FibGVkOgo+ICAJICogbm90aGlu ZyBlbHNlIG5lZWRzIHRvIGJlIGRvbmUuCj4gIAkgKi8KPiAtCWlmICh1bmxpa2VseSghZHB1X2Ny dGMtPm51bV9taXhlcnMpKQo+ICsJaWYgKHVubGlrZWx5KCFjc3RhdGUtPm51bV9taXhlcnMpKQo+ ICAJCXJldHVybjsKPiAgCj4gIAlfZHB1X2NydGNfYmxlbmRfc2V0dXAoY3J0Yyk7Cj4gQEAgLTcx OSw3ICs3MjEsNyBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19hdG9taWNfZmx1c2goc3RydWN0IGRy bV9jcnRjICpjcnRjLAo+ICAJICogaXQgbWVhbnMgd2UgYXJlIHRyeWluZyB0byBmbHVzaCBhIENS VEMgd2hvc2Ugc3RhdGUgaXMgZGlzYWJsZWQ6Cj4gIAkgKiBub3RoaW5nIGVsc2UgbmVlZHMgdG8g YmUgZG9uZS4KPiAgCSAqLwo+IC0JaWYgKHVubGlrZWx5KCFkcHVfY3J0Yy0+bnVtX21peGVycykp Cj4gKwlpZiAodW5saWtlbHkoIWNzdGF0ZS0+bnVtX21peGVycykpCj4gIAkJcmV0dXJuOwo+ICAK PiAgCS8qCj4gQEAgLTgzNCw3ICs4MzYsNyBAQCB2b2lkIGRwdV9jcnRjX2NvbW1pdF9raWNrb2Zm KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCSAqIGl0IG1lYW5zIHdlIGFyZSB0cnlpbmcgdG8g c3RhcnQgYSBDUlRDIHdob3NlIHN0YXRlIGlzIGRpc2FibGVkOgo+ICAJICogbm90aGluZyBlbHNl IG5lZWRzIHRvIGJlIGRvbmUuCj4gIAkgKi8KPiAtCWlmICh1bmxpa2VseSghZHB1X2NydGMtPm51 bV9taXhlcnMpKQo+ICsJaWYgKHVubGlrZWx5KCFjc3RhdGUtPm51bV9taXhlcnMpKQo+ICAJCXJl dHVybjsKPiAgCj4gIAlEUFVfQVRSQUNFX0JFR0lOKCJjcnRjX2NvbW1pdCIpOwo+IEBAIC0xMDY5 LDYgKzEwNzEsNyBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19oYW5kbGVfcG93ZXJfZXZlbnQodTMy IGV2ZW50X3R5cGUsIHZvaWQgKmFyZykKPiAgCXN0cnVjdCBkcHVfY3J0YyAqZHB1X2NydGM7Cj4g IAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7Cj4gIAlzdHJ1Y3QgZHB1X2NydGNfbWl4ZXIg Km07Cj4gKwlzdHJ1Y3QgZHB1X2NydGNfc3RhdGUgKmNzdGF0ZTsKPiAgCXUzMiBpLCBtaXNyX3N0 YXR1czsKPiAgCj4gIAlpZiAoIWNydGMpIHsKPiBAQCAtMTA3Niw2ICsxMDc5LDcgQEAgc3RhdGlj IHZvaWQgZHB1X2NydGNfaGFuZGxlX3Bvd2VyX2V2ZW50KHUzMiBldmVudF90eXBlLCB2b2lkICph cmcpCj4gIAkJcmV0dXJuOwo+ICAJfQo+ICAJZHB1X2NydGMgPSB0b19kcHVfY3J0YyhjcnRjKTsK PiArCWNzdGF0ZSA9IHRvX2RwdV9jcnRjX3N0YXRlKGRwdV9jcnRjLT5iYXNlLnN0YXRlKTsKPiAg Cj4gIAltdXRleF9sb2NrKCZkcHVfY3J0Yy0+Y3J0Y19sb2NrKTsKPiAgCj4gQEAgLTEwOTEsOCAr MTA5NSw4IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2hhbmRsZV9wb3dlcl9ldmVudCh1MzIgZXZl bnRfdHlwZSwgdm9pZCAqYXJnKQo+ICAJCQlkcHVfZW5jb2Rlcl92aXJ0X3Jlc3RvcmUoZW5jb2Rl cik7Cj4gIAkJfQo+ICAKPiAtCQlmb3IgKGkgPSAwOyBpIDwgZHB1X2NydGMtPm51bV9taXhlcnM7 ICsraSkgewo+IC0JCQltID0gJmRwdV9jcnRjLT5taXhlcnNbaV07Cj4gKwkJZm9yIChpID0gMDsg aSA8IGNzdGF0ZS0+bnVtX21peGVyczsgKytpKSB7Cj4gKwkJCW0gPSAmY3N0YXRlLT5taXhlcnNb aV07Cj4gIAkJCWlmICghbS0+aHdfbG0gfHwgIW0tPmh3X2xtLT5vcHMuc2V0dXBfbWlzciB8fAo+ ICAJCQkJCSFkcHVfY3J0Yy0+bWlzcl9lbmFibGUpCj4gIAkJCQljb250aW51ZTsKPiBAQCAtMTEw Miw4ICsxMTA2LDggQEAgc3RhdGljIHZvaWQgZHB1X2NydGNfaGFuZGxlX3Bvd2VyX2V2ZW50KHUz MiBldmVudF90eXBlLCB2b2lkICphcmcpCj4gIAkJfQo+ICAJCWJyZWFrOwo+ICAJY2FzZSBEUFVf UE9XRVJfRVZFTlRfUFJFX0RJU0FCTEU6Cj4gLQkJZm9yIChpID0gMDsgaSA8IGRwdV9jcnRjLT5u dW1fbWl4ZXJzOyArK2kpIHsKPiAtCQkJbSA9ICZkcHVfY3J0Yy0+bWl4ZXJzW2ldOwo+ICsJCWZv ciAoaSA9IDA7IGkgPCBjc3RhdGUtPm51bV9taXhlcnM7ICsraSkgewo+ICsJCQltID0gJmNzdGF0 ZS0+bWl4ZXJzW2ldOwo+ICAJCQlpZiAoIW0tPmh3X2xtIHx8ICFtLT5od19sbS0+b3BzLmNvbGxl Y3RfbWlzciB8fAo+ICAJCQkJCSFkcHVfY3J0Yy0+bWlzcl9lbmFibGUpCj4gIAkJCQljb250aW51 ZTsKPiBAQCAtMTE5MSw5ICsxMTk1LDggQEAgc3RhdGljIHZvaWQgZHB1X2NydGNfZGlzYWJsZShz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAkJZHB1X3Bvd2VyX2hhbmRsZV91bnJlZ2lzdGVyX2V2 ZW50KGRwdV9jcnRjLT5waGFuZGxlLAo+ICAJCQkJZHB1X2NydGMtPnBvd2VyX2V2ZW50KTsKPiAg Cj4gLQltZW1zZXQoZHB1X2NydGMtPm1peGVycywgMCwgc2l6ZW9mKGRwdV9jcnRjLT5taXhlcnMp KTsKPiAtCWRwdV9jcnRjLT5udW1fbWl4ZXJzID0gMDsKPiAtCWRwdV9jcnRjLT5taXhlcnNfc3dh cHBlZCA9IGZhbHNlOwo+ICsJbWVtc2V0KGNzdGF0ZS0+bWl4ZXJzLCAwLCBzaXplb2YoY3N0YXRl LT5taXhlcnMpKTsKPiArCWNzdGF0ZS0+bnVtX21peGVycyA9IDA7Cj4gIAo+ICAJLyogZGlzYWJs ZSBjbGsgJiBidyBjb250cm9sIHVudGlsIGNsayAmIGJ3IHByb3BlcnRpZXMgYXJlIHNldCAqLwo+ ICAJY3N0YXRlLT5id19jb250cm9sID0gZmFsc2U7Cj4gQEAgLTE1NTIsOCArMTU1NSw4IEBAIHN0 YXRpYyBpbnQgX2RwdV9kZWJ1Z2ZzX3N0YXR1c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9p ZCAqZGF0YSkKPiAgCj4gIAlzZXFfcHV0cyhzLCAiXG4iKTsKPiAgCj4gLQlmb3IgKGkgPSAwOyBp IDwgZHB1X2NydGMtPm51bV9taXhlcnM7ICsraSkgewo+IC0JCW0gPSAmZHB1X2NydGMtPm1peGVy c1tpXTsKPiArCWZvciAoaSA9IDA7IGkgPCBjc3RhdGUtPm51bV9taXhlcnM7ICsraSkgewo+ICsJ CW0gPSAmY3N0YXRlLT5taXhlcnNbaV07CgpIbW1tLCB0aGUgc3RhdGUgYWNjZXNzZXMgaW4gdGhp cyBmdW5jdGlvbiBhcmVuJ3QgcHJvcGVybHkgc2VyaWFsaXplZC4gQ291bGQgeW91CnBsZWFzZSB3 aGlwIHVwIGEgcGF0Y2ggdG8gYWNxdWlyZSB0aGUgbW9kZXNldCBsb2Nrcz8KCj4gIAkJaWYgKCFt LT5od19sbSkKPiAgCQkJc2VxX3ByaW50ZihzLCAiXHRtaXhlclslZF0gaGFzIG5vIGxtXG4iLCBp KTsKPiAgCQllbHNlIGlmICghbS0+aHdfY3RsKQo+IEBAIC0xNjQ2LDYgKzE2NDksNyBAQCBzdGF0 aWMgc3NpemVfdCBfZHB1X2NydGNfbWlzcl9zZXR1cChzdHJ1Y3QgZmlsZSAqZmlsZSwKPiAgCQlj b25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQo+ ICB7Cj4gIAlzdHJ1Y3QgZHB1X2NydGMgKmRwdV9jcnRjOwo+ICsJc3RydWN0IGRwdV9jcnRjX3N0 YXRlICpjc3RhdGU7Cj4gIAlzdHJ1Y3QgZHB1X2NydGNfbWl4ZXIgKm07Cj4gIAlpbnQgaSA9IDAs IHJjOwo+ICAJY2hhciBidWZbTUlTUl9CVUZGX1NJWkUgKyAxXTsKPiBAQCAtMTY1Niw2ICsxNjYw LDcgQEAgc3RhdGljIHNzaXplX3QgX2RwdV9jcnRjX21pc3Jfc2V0dXAoc3RydWN0IGZpbGUgKmZp bGUsCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+ICAJZHB1X2NydGMgPSBmaWxlLT5wcml2YXRl X2RhdGE7Cj4gKwljc3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZShkcHVfY3J0Yy0+YmFzZS5zdGF0 ZSk7CgpTYW1lIGhlcmUKCj4gIAlidWZmX2NvcHkgPSBtaW5fdChzaXplX3QsIGNvdW50LCBNSVNS X0JVRkZfU0laRSk7Cj4gIAlpZiAoY29weV9mcm9tX3VzZXIoYnVmLCB1c2VyX2J1ZiwgYnVmZl9j b3B5KSkgewo+ICAJCURQVV9FUlJPUigiYnVmZmVyIGNvcHkgZmFpbGVkXG4iKTsKPiBAQCAtMTY3 NCw5ICsxNjc5LDkgQEAgc3RhdGljIHNzaXplX3QgX2RwdV9jcnRjX21pc3Jfc2V0dXAoc3RydWN0 IGZpbGUgKmZpbGUsCj4gIAltdXRleF9sb2NrKCZkcHVfY3J0Yy0+Y3J0Y19sb2NrKTsKPiAgCWRw dV9jcnRjLT5taXNyX2VuYWJsZSA9IGVuYWJsZTsKPiAgCWRwdV9jcnRjLT5taXNyX2ZyYW1lX2Nv dW50ID0gZnJhbWVfY291bnQ7Cj4gLQlmb3IgKGkgPSAwOyBpIDwgZHB1X2NydGMtPm51bV9taXhl cnM7ICsraSkgewo+ICsJZm9yIChpID0gMDsgaSA8IGNzdGF0ZS0+bnVtX21peGVyczsgKytpKSB7 Cj4gIAkJZHB1X2NydGMtPm1pc3JfZGF0YVtpXSA9IDA7Cj4gLQkJbSA9ICZkcHVfY3J0Yy0+bWl4 ZXJzW2ldOwo+ICsJCW0gPSAmY3N0YXRlLT5taXhlcnNbaV07Cj4gIAkJaWYgKCFtLT5od19sbSB8 fCAhbS0+aHdfbG0tPm9wcy5zZXR1cF9taXNyKQo+ICAJCQljb250aW51ZTsKPiAgCj4gQEAgLTE2 OTIsNiArMTY5Nyw3IEBAIHN0YXRpYyBzc2l6ZV90IF9kcHVfY3J0Y19taXNyX3JlYWQoc3RydWN0 IGZpbGUgKmZpbGUsCj4gIAkJY2hhciBfX3VzZXIgKnVzZXJfYnVmZiwgc2l6ZV90IGNvdW50LCBs b2ZmX3QgKnBwb3MpCj4gIHsKPiAgCXN0cnVjdCBkcHVfY3J0YyAqZHB1X2NydGM7Cj4gKwlzdHJ1 Y3QgZHB1X2NydGNfc3RhdGUgKmNzdGF0ZTsKPiAgCXN0cnVjdCBkcHVfY3J0Y19taXhlciAqbTsK PiAgCWludCBpID0gMCwgcmM7Cj4gIAl1MzIgbWlzcl9zdGF0dXM7Cj4gQEAgLTE3MDUsNiArMTcx MSw3IEBAIHN0YXRpYyBzc2l6ZV90IF9kcHVfY3J0Y19taXNyX3JlYWQoc3RydWN0IGZpbGUgKmZp bGUsCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+ICAJZHB1X2NydGMgPSBmaWxlLT5wcml2YXRl X2RhdGE7Cj4gKwljc3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZShkcHVfY3J0Yy0+YmFzZS5zdGF0 ZSk7CgpBbmQgaGVyZQoKPiAgCXJjID0gX2RwdV9jcnRjX3Bvd2VyX2VuYWJsZShkcHVfY3J0Yywg dHJ1ZSk7Cj4gIAlpZiAocmMpCj4gIAkJcmV0dXJuIHJjOwo+IEBAIC0xNzE2LDggKzE3MjMsOCBA QCBzdGF0aWMgc3NpemVfdCBfZHB1X2NydGNfbWlzcl9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLAo+ ICAJCWdvdG8gYnVmZl9jaGVjazsKPiAgCX0KPiAgCj4gLQlmb3IgKGkgPSAwOyBpIDwgZHB1X2Ny dGMtPm51bV9taXhlcnM7ICsraSkgewo+IC0JCW0gPSAmZHB1X2NydGMtPm1peGVyc1tpXTsKPiAr CWZvciAoaSA9IDA7IGkgPCBjc3RhdGUtPm51bV9taXhlcnM7ICsraSkgewo+ICsJCW0gPSAmY3N0 YXRlLT5taXhlcnNbaV07Cj4gIAkJaWYgKCFtLT5od19sbSB8fCAhbS0+aHdfbG0tPm9wcy5jb2xs ZWN0X21pc3IpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9jcnRjLmgKPiBpbmRleCBlNjMyNjUxLi45MTc3ZWU2IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5oCj4gQEAgLTEyMSwxMSArMTIxLDYgQEAgc3Ry dWN0IGRwdV9jcnRjX2ZyYW1lX2V2ZW50IHsKPiAgICogc3RydWN0IGRwdV9jcnRjIC0gdmlydHVh bGl6ZWQgQ1JUQyBkYXRhIHN0cnVjdHVyZQo+ICAgKiBAYmFzZSAgICAgICAgICA6IEJhc2UgZHJt IGNydGMgc3RydWN0dXJlCj4gICAqIEBuYW1lICAgICAgICAgIDogQVNDSUkgZGVzY3JpcHRpb24g b2YgdGhpcyBjcnRjCj4gLSAqIEBudW1fY3RscyAgICAgIDogTnVtYmVyIG9mIGN0bCBwYXRocyBp biB1c2UKPiAtICogQG51bV9taXhlcnMgICAgOiBOdW1iZXIgb2YgbWl4ZXJzIGluIHVzZQo+IC0g KiBAbWl4ZXJzX3N3YXBwZWQ6IFdoZXRoZXIgdGhlIG1peGVycyBoYXZlIGJlZW4gc3dhcHBlZCBm b3IgbGVmdC9yaWdodCB1cGRhdGUKPiAtICogICAgICAgICAgICAgICAgICBlc3BlY2lhbGx5IGlu IHRoZSBjYXNlIG9mIERTQyBNZXJnZS4KPiAtICogQG1peGVycyAgICAgICAgOiBMaXN0IG9mIGFj dGl2ZSBtaXhlcnMKPiAgICogQGV2ZW50ICAgICAgICAgOiBQb2ludGVyIHRvIGxhc3QgcmVjZWl2 ZWQgZHJtIHZibGFuayBldmVudC4gSWYgdGhlcmUgaXMgYQo+ICAgKiAgICAgICAgICAgICAgICAg IHBlbmRpbmcgdmJsYW5rIGV2ZW50LCB0aGlzIHdpbGwgYmUgbm9uLW51bGwuCj4gICAqIEB2c3lu Y19jb3VudCAgIDogUnVubmluZyBjb3VudCBvZiByZWNlaXZlZCB2c3luYyBldmVudHMKPiBAQCAt MTY3LDEyICsxNjIsNiBAQCBzdHJ1Y3QgZHB1X2NydGMgewo+ICAJc3RydWN0IGRybV9jcnRjIGJh c2U7Cj4gIAljaGFyIG5hbWVbRFBVX0NSVENfTkFNRV9TSVpFXTsKPiAgCj4gLQkvKiBIVyBSZXNv dXJjZXMgcmVzZXJ2ZWQgZm9yIHRoZSBjcnRjICovCj4gLQl1MzIgbnVtX2N0bHM7Cj4gLQl1MzIg bnVtX21peGVyczsKPiAtCWJvb2wgbWl4ZXJzX3N3YXBwZWQ7Cj4gLQlzdHJ1Y3QgZHB1X2NydGNf bWl4ZXIgbWl4ZXJzW0NSVENfRFVBTF9NSVhFUlNdOwo+IC0KPiAgCXN0cnVjdCBkcm1fcGVuZGlu Z192YmxhbmtfZXZlbnQgKmV2ZW50Owo+ICAJdTMyIHZzeW5jX2NvdW50Owo+ICAKPiBAQCAtMjI3 LDYgKzIxNiwxMCBAQCBzdHJ1Y3QgZHB1X2NydGMgewo+ICAgKiBAcHJvcGVydHlfdmFsdWVzOiBD dXJyZW50IGNydGMgcHJvcGVydHkgdmFsdWVzCj4gICAqIEBpbnB1dF9mZW5jZV90aW1lb3V0X25z IDogQ2FjaGVkIGlucHV0IGZlbmNlIHRpbWVvdXQsIGluIG5zCj4gICAqIEBuZXdfcGVyZjogbmV3 IHBlcmZvcm1hbmNlIHN0YXRlIGJlaW5nIHJlcXVlc3RlZAo+ICsgKiBAbnVtX21peGVycyAgICA6 IE51bWJlciBvZiBtaXhlcnMgaW4gdXNlCj4gKyAqIEBtaXhlcnMgICAgICAgIDogTGlzdCBvZiBh Y3RpdmUgbWl4ZXJzCj4gKyAqIEBudW1fY3RscyAgICAgIDogTnVtYmVyIG9mIGN0bCBwYXRocyBp biB1c2UKPiArICogQGh3X2N0bHMgICAgICAgOiBMaXN0IG9mIGFjdGl2ZWwgY3RsIHBhdGhzCgph Y3RpdmVsCgo+ICAgKi8KPiAgc3RydWN0IGRwdV9jcnRjX3N0YXRlIHsKPiAgCXN0cnVjdCBkcm1f Y3J0Y19zdGF0ZSBiYXNlOwo+IEBAIC0yMzYsOCArMjI5LDE0IEBAIHN0cnVjdCBkcHVfY3J0Y19z dGF0ZSB7Cj4gIAlzdHJ1Y3QgZHJtX3JlY3QgbG1fYm91bmRzW0NSVENfRFVBTF9NSVhFUlNdOwo+ ICAKPiAgCXVpbnQ2NF90IGlucHV0X2ZlbmNlX3RpbWVvdXRfbnM7Cj4gLQoKdW5yZWxhdGVkIHdo aXRlc3BhY2UKCj4gIAlzdHJ1Y3QgZHB1X2NvcmVfcGVyZl9wYXJhbXMgbmV3X3BlcmY7Cj4gKwo+ ICsJLyogSFcgUmVzb3VyY2VzIHJlc2VydmVkIGZvciB0aGUgY3J0YyAqLwo+ICsJdTMyIG51bV9t aXhlcnM7Cj4gKwlzdHJ1Y3QgZHB1X2NydGNfbWl4ZXIgbWl4ZXJzW0NSVENfRFVBTF9NSVhFUlNd Owo+ICsKPiArCXUzMiBudW1fY3RsczsKPiArCXN0cnVjdCBkcHVfaHdfY3RsICpod19jdGxzW0NS VENfRFVBTF9NSVhFUlNdOwo+ICB9Owo+ICAKPiAgI2RlZmluZSB0b19kcHVfY3J0Y19zdGF0ZSh4 KSBcCj4gQEAgLTI1NSw3ICsyNTQsNyBAQCBzdGF0aWMgaW5saW5lIGludCBkcHVfY3J0Y19nZXRf bWl4ZXJfd2lkdGgoc3RydWN0IGRwdV9jcnRjICpkcHVfY3J0YywKPiAgCWlmICghZHB1X2NydGMg fHwgIWNzdGF0ZSB8fCAhbW9kZSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gLQltaXhlcl93aWR0aCA9 IChkcHVfY3J0Yy0+bnVtX21peGVycyA9PSBDUlRDX0RVQUxfTUlYRVJTID8KPiArCW1peGVyX3dp ZHRoID0gKGNzdGF0ZS0+bnVtX21peGVycyA9PSBDUlRDX0RVQUxfTUlYRVJTID8KPiAgCQkJbW9k ZS0+aGRpc3BsYXkgLyBDUlRDX0RVQUxfTUlYRVJTIDogbW9kZS0+aGRpc3BsYXkpOwoKQ2FuIHlv dSBwbGVhc2UgYWRkIGEgbmV3IHBhdGNoIHRoYXQgcHJlY2VkZXMgdGhpcyB0byBtb3ZlIHRoaXMg ZnVuY3Rpb24gaW50bwpkcHVfY3J0YyBhcyBhIHN0YXRpYyBmdW5jdGlvbj8KClNlYW4KCj4gIAo+ ICAJcmV0dXJuIG1peGVyX3dpZHRoOwo+IC0tIAo+IFRoZSBRdWFsY29tbSBJbm5vdmF0aW9uIENl bnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sCj4gYSBMaW51 eCBGb3VuZGF0aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdAo+IAoKLS0gClNlYW4gUGF1bCwgU29m dHdhcmUgRW5naW5lZXIsIEdvb2dsZSAvIENocm9taXVtIE9TCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRy ZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=