From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: Re: [PATCH 07/25] drm/msm/dpu: reserve using crtc state Date: Tue, 09 Oct 2018 23:28:37 -0700 Message-ID: References: <1539059262-8326-1-git-send-email-jsanka@codeaurora.org> <1539059262-8326-8-git-send-email-jsanka@codeaurora.org> <20181009210600.GQ154160@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181009210600.GQ154160@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, jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@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 T24gMjAxOC0xMC0wOSAxNDowNiwgU2VhbiBQYXVsIHdyb3RlOgo+IE9uIE1vbiwgT2N0IDA4LCAy MDE4IGF0IDA5OjI3OjI0UE0gLTA3MDAsIEpleWt1bWFyIFNhbmthcmFuIHdyb3RlOgo+PiBEUFUg bWFpbnRhaW5lZCByZXNlcnZhdGlvbiBsaXN0cyB0byBjYWNoZSBhc3NpZ25lZAo+PiBIVyBibG9j a3MgZm9yIHRoZSBkaXNwbGF5IGFuZCBhIHJldHJpZXZhbCBtZWNoYW5pc20gZm9yCj4+IHRoZSBp bmRpdmlkdWFsIERSTSBjb21wb25lbnRzIHRvIHF1ZXJ5IHRoZWlyIHJlc3BlY3RpdmUKPj4gSFcg YmxvY2tzLgo+PiAKPj4gVGhpcyBwYXRjaCB1c2VzIHRoZSBzdWItY2xhc3NlZCBDUlRDIHN0YXRl IHRvIHN0b3JlCj4+IGFuZCB0cmFjayBIVyBibG9ja3MgYXNzaWduZWQgZm9yIGRpZmZlcmVudCBj b21wb25lbnRzCj4+IG9mIHRoZSBkaXNwbGF5IHBpcGVsaW5lLiBJdCBoZWxwcyB0aGUgZHJpdmVy Ogo+PiAtIHRvIGdldCByaWQgb2YgdW53YW50ZWQgc3RvcmUgYW5kIHJldHJpZXZhbCBSTSBBUEkn cwo+PiAtIHRvIHByZXNlcnZlIEhXIHJlc291cmNlcyBhc3NpZ25lZCBpbiBhdG9taWNfY2hlY2sK Pj4gICB0aHJvdWdoIGF0b21pYyBzd2FwL2R1cGxpY2F0ZS4KPj4gCj4+IFNlcGFyYXRlIHBhdGNo IGlzIHN1Ym1pdHRlZCB0byByZW1vdmUgcmVzb3VyY2UKPj4gcmVzZXJ2YXRpb24gaW4gYXRvbWlj X2NvbW1pdCBwYXRoLgo+PiAKPj4gU2lnbmVkLW9mZi1ieTogSmV5a3VtYXIgU2Fua2FyYW4gPGpz YW5rYUBjb2RlYXVyb3JhLm9yZz4KPj4gLS0tCj4+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfY3J0Yy5jICAgICAgICAgICB8IDY1Cj4gKysrLS0tLS0tLS0tLS0tLS0tLS0tLQo+ PiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuaCAgICAgICAgICAgfCAx NCArKysrKwo+PiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuYyAg ICAgICAgfCAyOCArKystLS0tLS0tCj4+ICAuLi4vZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9l bmNvZGVyX3BoeXNfdmlkLmMgICB8IDIwICsrLS0tLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9ybS5jICAgICAgICAgICAgIHwgNTgKPiArKysrKysrKysrKystLS0tLS0t Cj4+ICA1IGZpbGVzIGNoYW5nZWQsIDcyIGluc2VydGlvbnMoKyksIDExMyBkZWxldGlvbnMoLSkK Pj4gCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0 Yy5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jCj4+IGluZGV4 IDQ5NjA2NDEuLjA2MjVmNTYgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9jcnRjLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2NydGMuYwo+PiBAQCAtNDIxLDY5ICs0MjEsMjAgQEAgdm9pZCBkcHVfY3J0Y19jb21wbGV0 ZV9jb21taXQoc3RydWN0IGRybV9jcnRjCj4gKmNydGMsCj4+ICAJdHJhY2VfZHB1X2NydGNfY29t cGxldGVfY29tbWl0KERSTUlEKGNydGMpKTsKPj4gIH0KPj4gCj4+IC1zdGF0aWMgdm9pZCBfZHB1 X2NydGNfc2V0dXBfbWl4ZXJfZm9yX2VuY29kZXIoCj4+IC0JCXN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKPj4gLQkJc3RydWN0IGRybV9lbmNvZGVyICplbmMpCj4+ICtzdGF0aWMgdm9pZCBfZHB1X2Ny dGNfc2V0dXBfbWl4ZXJzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPj4gIHsKPj4gIAlzdHJ1Y3Qg ZHB1X2NydGNfc3RhdGUgKmNzdGF0ZSA9IHRvX2RwdV9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsK Pj4gLQlzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcyA9IF9kcHVfY3J0Y19nZXRfa21zKGNydGMpOwo+ PiAtCXN0cnVjdCBkcHVfcm0gKnJtID0gJmRwdV9rbXMtPnJtOwo+PiAgCXN0cnVjdCBkcHVfY3J0 Y19taXhlciAqbWl4ZXI7Cj4+IC0Jc3RydWN0IGRwdV9od19jdGwgKmxhc3RfdmFsaWRfY3RsID0g TlVMTDsKPj4gLQlpbnQgaTsKPj4gLQlzdHJ1Y3QgZHB1X3JtX2h3X2l0ZXIgbG1faXRlciwgY3Rs X2l0ZXI7Cj4+IC0KPj4gLQlkcHVfcm1faW5pdF9od19pdGVyKCZsbV9pdGVyLCBlbmMtPmJhc2Uu aWQsIERQVV9IV19CTEtfTE0pOwo+PiAtCWRwdV9ybV9pbml0X2h3X2l0ZXIoJmN0bF9pdGVyLCBl bmMtPmJhc2UuaWQsIERQVV9IV19CTEtfQ1RMKTsKPj4gKwlpbnQgaSwgY3RsX2luZGV4Owo+PiAK Pj4gIAkvKiBTZXQgdXAgYWxsIHRoZSBtaXhlcnMgYW5kIGN0bHMgcmVzZXJ2ZWQgYnkgdGhpcyBl bmNvZGVyICovCj4+IC0JZm9yIChpID0gY3N0YXRlLT5udW1fbWl4ZXJzOyBpIDwgQVJSQVlfU0la RShjc3RhdGUtPm1peGVycyk7IGkrKykKPiB7Cj4+ICsJZm9yIChpID0gMDsgaSA8IGNzdGF0ZS0+ bnVtX21peGVyczsgaSsrKSB7Cj4+ICAJCW1peGVyID0gJmNzdGF0ZS0+bWl4ZXJzW2ldOwo+PiAK Pj4gLQkJaWYgKCFkcHVfcm1fZ2V0X2h3KHJtLCAmbG1faXRlcikpCj4+IC0JCQlicmVhazsKPj4g LQkJbWl4ZXItPmh3X2xtID0gKHN0cnVjdCBkcHVfaHdfbWl4ZXIgKilsbV9pdGVyLmh3Owo+PiAt Cj4+ICAJCS8qIENUTCBtYXkgYmUgPD0gTE1zLCBpZiA8LCBtdWx0aXBsZSBMTXMgY29udHJvbGxl ZCBieSAxCj4gQ1RMICovCj4+IC0JCWlmICghZHB1X3JtX2dldF9odyhybSwgJmN0bF9pdGVyKSkg ewo+PiAtCQkJRFBVX0RFQlVHKCJubyBjdGwgYXNzaWduZWQgdG8gbG0gJWQsIHVzaW5nCj4gcHJl dmlvdXNcbiIsCj4+IC0JCQkJCW1peGVyLT5od19sbS0+aWR4IC0gTE1fMCk7Cj4+IC0JCQltaXhl ci0+bG1fY3RsID0gbGFzdF92YWxpZF9jdGw7Cj4+IC0JCX0gZWxzZSB7Cj4+IC0JCQltaXhlci0+ bG1fY3RsID0gKHN0cnVjdCBkcHVfaHdfY3RsICopY3RsX2l0ZXIuaHc7Cj4+IC0JCQlsYXN0X3Zh bGlkX2N0bCA9IG1peGVyLT5sbV9jdGw7Cj4+IC0JCX0KPj4gLQo+PiAtCQkvKiBTaG91bGRuJ3Qg aGFwcGVuLCBtaXhlcnMgYXJlIGFsd2F5cyA+PSBjdGxzICovCj4+IC0JCWlmICghbWl4ZXItPmxt X2N0bCkgewo+PiAtCQkJRFBVX0VSUk9SKCJubyB2YWxpZCBjdGxzIGZvdW5kIGZvciBsbSAlZFxu IiwKPj4gLQkJCQkJbWl4ZXItPmh3X2xtLT5pZHggLSBMTV8wKTsKPj4gLQkJCXJldHVybjsKPj4g LQkJfQo+PiAtCj4+IC0JCWNzdGF0ZS0+bnVtX21peGVycysrOwo+PiAtCQlEUFVfREVCVUcoInNl dHVwIG1peGVyICVkOiBsbSAlZFxuIiwKPj4gLQkJCQlpLCBtaXhlci0+aHdfbG0tPmlkeCAtIExN XzApOwo+PiAtCQlEUFVfREVCVUcoInNldHVwIG1peGVyICVkOiBjdGwgJWRcbiIsCj4+IC0JCQkJ aSwgbWl4ZXItPmxtX2N0bC0+aWR4IC0gQ1RMXzApOwo+PiAtCX0KPj4gLX0KPj4gLQo+PiAtc3Rh dGljIHZvaWQgX2RwdV9jcnRjX3NldHVwX21peGVycyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4+ IC17Cj4+IC0Jc3RydWN0IGRwdV9jcnRjICpkcHVfY3J0YyA9IHRvX2RwdV9jcnRjKGNydGMpOwo+ PiAtCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jOwo+PiAtCj4+IC0JbXV0ZXhfbG9jaygmZHB1X2Ny dGMtPmNydGNfbG9jayk7Cj4+IC0JLyogQ2hlY2sgZm9yIG1peGVycyBvbiBhbGwgZW5jb2RlcnMg YXR0YWNoZWQgdG8gdGhpcyBjcnRjICovCj4+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShlbmMsICZj cnRjLT5kZXYtPm1vZGVfY29uZmlnLmVuY29kZXJfbGlzdCwKPiBoZWFkKSB7Cj4+IC0JCWlmIChl bmMtPmNydGMgIT0gY3J0YykKPj4gLQkJCWNvbnRpbnVlOwo+PiAtCj4+IC0JCV9kcHVfY3J0Y19z ZXR1cF9taXhlcl9mb3JfZW5jb2RlcihjcnRjLCBlbmMpOwo+PiArCQljdGxfaW5kZXggPSBtaW4o aSwgY3N0YXRlLT5udW1fY3RscyAtIDEpOwo+IAo+IFRoaXMgaXMgYW5vdGhlciBvbmUgb2YgdGhv c2UgcGxhY2VzIEkgbWVudGlvbmVkIHdoZXJlIHdlJ3JlIGp1c3QgCj4gYXNzdW1pbmcKPiBhCj4g dmFsdWUgaXMgZ29pbmcgdG8gYmUgaW4gYSBjZXJ0YWluIHJhbmdlLiBJZgo+IG51bV9jdGxzL251 bV9pbnRmcy9udW1fcGh5c19lbmNzCj4gKGFsbCB0aGUgc2FtZSB2YWx1ZSBhZmFpY3QpIGlzIDAs IHdlIGVuZCB1cCBpbiBhIGJhZCBwbGFjZS4KRXZlbiB0aG91Z2ggYWxsIHRoZXNlIHZhcmlhYmxl cyBoYXZlIHRoZSBzYW1lIHZhbHVlLCB0aGV5IGFyZSAKcmVwcmVzZW50aW5nIHRoZQpzaXplcyBv ZiBsb2dpY2FsbHkgc2VwZXJhdGUgY29tcG9uZW50cy4KCj4gCj4gQXQgYSBtaW5pbXVtLCB0aGVy ZSBzaG91bGQgYmUgYSBXQVJOX09OL0JVR19PTiBzb21ld2hlcmUgZW5zdXJpbmcgdGhpcyAKPiBj YW4KPiBuZXZlcgo+IGRyb3AgYmVsb3cgMC4KSXNuJ3QgUk0gZ3VhcmFudGVlaW5nIHRoYXQ/IEkg Y2FuIGFkZCB0aGUgV0FSTl9PTiBjaGVja3Mgb24gdGhlc2UKbnVtX3h4eCB3aGVuIHRoZSBIVyBi bG9ja3MgYXJlIGFsbG9jYXRlZC4KClRoYW5rcywKSmV5a3VtYXIgUy4KPiAKPj4gKwkJbWl4ZXIt PmxtX2N0bCA9IGNzdGF0ZS0+aHdfY3Rsc1tjdGxfaW5kZXhdOwo+PiAgCX0KPj4gLQo+PiAtCW11 dGV4X3VubG9jaygmZHB1X2NydGMtPmNydGNfbG9jayk7Cj4+ICB9Cj4+IAo+PiAgc3RhdGljIHZv aWQgX2RwdV9jcnRjX3NldHVwX2xtX2JvdW5kcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4+IEBA IC01MzYsMTAgKzQ4Nyw4IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2F0b21pY19iZWdpbihzdHJ1 Y3QgZHJtX2NydGMKPiAqY3J0YywKPj4gIAlkZXYgPSBjcnRjLT5kZXY7Cj4+ICAJc21tdV9zdGF0 ZSA9ICZkcHVfY3J0Yy0+c21tdV9zdGF0ZTsKPj4gCj4+IC0JaWYgKCFjc3RhdGUtPm51bV9taXhl cnMpIHsKPj4gLQkJX2RwdV9jcnRjX3NldHVwX21peGVycyhjcnRjKTsKPj4gLQkJX2RwdV9jcnRj X3NldHVwX2xtX2JvdW5kcyhjcnRjLCBjcnRjLT5zdGF0ZSk7Cj4+IC0JfQo+PiArCV9kcHVfY3J0 Y19zZXR1cF9taXhlcnMoY3J0Yyk7Cj4+ICsJX2RwdV9jcnRjX3NldHVwX2xtX2JvdW5kcyhjcnRj LCBjcnRjLT5zdGF0ZSk7Cj4+IAo+PiAgCWlmIChkcHVfY3J0Yy0+ZXZlbnQpIHsKPj4gIAkJV0FS Tl9PTihkcHVfY3J0Yy0+ZXZlbnQpOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2NydGMuaAo+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2NydGMuaAo+PiBpbmRleCA3NWZkZDNjLi4xN2FhYWQ3IDEwMDY0NAo+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmgKPj4gQEAgLTg0LDEyICs4NCwxNCBAQCBzdHJ1 Y3QgZHB1X2NydGNfc21tdV9zdGF0ZV9kYXRhIHsKPj4gICAqIHN0cnVjdCBkcHVfY3J0Y19taXhl cjogc3RvcmVzIHRoZSBtYXAgZm9yIGVhY2ggdmlydHVhbCBwaXBlbGluZSBpbgo+IHRoZSBDUlRD Cj4+ICAgKiBAaHdfbG06CUxNIEhXIERyaXZlciBjb250ZXh0Cj4+ICAgKiBAbG1fY3RsOglDVEwg UGF0aCBIVyBkcml2ZXIgY29udGV4dAo+PiArICogQGh3X3BwOglQaW5ncG9uZyBIVyBkcml2ZXIg Y29udGV4dAo+PiAgICogQG1peGVyX29wX21vZGU6CW1peGVyIGJsZW5kaW5nIG9wZXJhdGlvbiBt b2RlCj4+ICAgKiBAZmx1c2hfbWFzazoJbWl4ZXIgZmx1c2ggbWFzayBmb3IgY3RsLCBtaXhlciBh bmQgcGlwZQo+PiAgICovCj4+ICBzdHJ1Y3QgZHB1X2NydGNfbWl4ZXIgewo+PiAgCXN0cnVjdCBk cHVfaHdfbWl4ZXIgKmh3X2xtOwo+PiAgCXN0cnVjdCBkcHVfaHdfY3RsICpsbV9jdGw7Cj4+ICsJ c3RydWN0IGRwdV9od19waW5ncG9uZyAqaHdfcHA7Cj4+ICAJdTMyIG1peGVyX29wX21vZGU7Cj4+ ICAJdTMyIGZsdXNoX21hc2s7Cj4+ICB9Owo+PiBAQCAtMjMwLDYgKzIzMiwxOCBAQCBzdHJ1Y3Qg ZHB1X2NydGNfc3RhdGUgewo+PiAKPj4gIAl1MzIgbnVtX2N0bHM7Cj4+ICAJc3RydWN0IGRwdV9o d19jdGwgKmh3X2N0bHNbQ1JUQ19EVUFMX01JWEVSU107Cj4+ICsKPj4gKwkvKioKPj4gKwkgKiBh cyBkcm0gZW5jb2RlcnMgZG9lc24ndCBoYXZlIGRlZGljYXRlcyBzdGF0ZSBvYmplY3RzCj4+ICsJ ICogYW5kIGRybSBjb25uZWN0b3JzIGFyZSBub3Qgb3duZWQgYnkgRFBVLCBtYWludGFpbgo+PiAr CSAqIEhXIGludGVyZmFjZSBhbmQgb3RoZXIgaW50ZXJmYWNlIHJlbGF0ZWQgYmxvY2tzCj4+ICsJ ICogaW4gY3J0YyBzdGF0ZQo+IAo+IENhbiB5b3UgdXNlIHByaXZhdGUgc3RhdGUgaW5zdGVhZD8K aG1tLi4gSXQncyB0aW1lIGZvciBtZSB0byByZXZpc2l0IHRoZSBvbGQgcGF0Y2g6Cmh0dHBzOi8v cGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC8yMzAxMDAvCj4gCj4+ICsJICoKPj4gKwkg KiBUT0RPOiBObyBzdXBwb3J0IGZvciBjbG9uZSBtb2RlIHlldCB3aGVyZSBhIGNydGMKPj4gKwkg KiBjYW4gYmUgYXR0YWNoZWQgd2l0aCBtb3JlIHRoYW4gb25lIGVuY29kZXIvY29ubmVjdG9yLgo+ PiArCSAqLwo+PiArCXUzMiBudW1faW50ZnM7Cj4+ICsJc3RydWN0IGRwdV9od19pbnRmICpod19p bnRmc1tDUlRDX0RVQUxfTUlYRVJTXTsKPj4gIH07Cj4+IAo+PiAgI2RlZmluZSB0b19kcHVfY3J0 Y19zdGF0ZSh4KSBcCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfZW5jb2Rlci5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5j b2Rlci5jCj4+IGluZGV4IGQxMmY4OTYuLjE3ZGJiYzMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMKPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuYwo+PiBAQCAtMTAwMSw5ICsxMDAxLDggQEAg c3RhdGljIHZvaWQgZHB1X2VuY29kZXJfdmlydF9tb2RlX3NldChzdHJ1Y3QKPiBkcm1fZW5jb2Rl ciAqZHJtX2VuYywKPj4gIAlzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttczsKPj4gIAlzdHJ1Y3QgbGlz dF9oZWFkICpjb25uZWN0b3JfbGlzdDsKPj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubiA9 IE5VTEwsICpjb25uX2l0ZXI7Cj4+IC0Jc3RydWN0IGRwdV9ybV9od19pdGVyIHBwX2l0ZXIsIGN0 bF9pdGVyOwo+PiArCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAqZHB1X2NzdGF0ZTsKPj4gIAlzdHJ1 Y3QgbXNtX2Rpc3BsYXlfdG9wb2xvZ3kgdG9wb2xvZ3k7Cj4+IC0Jc3RydWN0IGRwdV9od19jdGwg Kmh3X2N0bFtNQVhfQ0hBTk5FTFNfUEVSX0VOQ10gPSB7IE5VTEwgfTsKPj4gIAlpbnQgaSA9IDAs IHJldDsKPj4gCj4+ICAJaWYgKCFkcm1fZW5jKSB7Cj4+IEBAIC0xMDQzLDI3ICsxMDQyLDE0IEBA IHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3ZpcnRfbW9kZV9zZXQoc3RydWN0Cj4gZHJtX2VuY29k ZXIgKmRybV9lbmMsCj4+ICAJCXJldHVybjsKPj4gIAl9Cj4+IAo+PiAtCWRwdV9ybV9pbml0X2h3 X2l0ZXIoJnBwX2l0ZXIsIGRybV9lbmMtPmJhc2UuaWQsCj4gRFBVX0hXX0JMS19QSU5HUE9ORyk7 Cj4+IC0JZm9yIChpID0gMDsgaSA8IE1BWF9DSEFOTkVMU19QRVJfRU5DOyBpKyspIHsKPj4gLQkJ ZHB1X2VuYy0+aHdfcHBbaV0gPSBOVUxMOwo+PiAtCQlpZiAoIWRwdV9ybV9nZXRfaHcoJmRwdV9r bXMtPnJtLCAmcHBfaXRlcikpCj4+IC0JCQlicmVhazsKPj4gLQkJZHB1X2VuYy0+aHdfcHBbaV0g PSAoc3RydWN0IGRwdV9od19waW5ncG9uZyAqKSBwcF9pdGVyLmh3Owo+PiAtCX0KPj4gLQo+PiAt CWRwdV9ybV9pbml0X2h3X2l0ZXIoJmN0bF9pdGVyLCBkcm1fZW5jLT5iYXNlLmlkLCBEUFVfSFdf QkxLX0NUTCk7Cj4+IC0JZm9yIChpID0gMDsgaSA8IE1BWF9DSEFOTkVMU19QRVJfRU5DOyBpKysp IHsKPj4gLQkJaWYgKCFkcHVfcm1fZ2V0X2h3KCZkcHVfa21zLT5ybSwgJmN0bF9pdGVyKSkKPj4g LQkJCWJyZWFrOwo+PiAtCQlod19jdGxbaV0gPSAoc3RydWN0IGRwdV9od19jdGwgKiljdGxfaXRl ci5odzsKPj4gLQl9Cj4+ICsJZHB1X2NzdGF0ZSA9IHRvX2RwdV9jcnRjX3N0YXRlKGRybV9lbmMt PmNydGMtPnN0YXRlKTsKPj4gCj4+ICAJZm9yIChpID0gMDsgaSA8IGRwdV9lbmMtPm51bV9waHlz X2VuY3M7IGkrKykgewo+PiAgCQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5cyA9IGRwdV9l bmMtPnBoeXNfZW5jc1tpXTsKPj4gIAkJaW50IGN0bF9pbmRleDsKPj4gCj4+ICAJCWlmIChwaHlz KSB7Cj4+IC0JCQlpZiAoIWRwdV9lbmMtPmh3X3BwW2ldKSB7Cj4+ICsJCQlpZiAoIWRwdV9jc3Rh dGUtPm1peGVyc1tpXS5od19wcCkgewo+PiAgCQkJCURQVV9FUlJPUl9FTkMoZHB1X2VuYywgIm5v IHBwIGJsb2NrCj4gYXNzaWduZWQiCj4+ICAJCQkJCSAgICAgImF0IGlkeDogJWRcbiIsIGkpOwo+ PiAgCQkJCXJldHVybjsKPj4gQEAgLTEwNzEsMTQgKzEwNTcsMTYgQEAgc3RhdGljIHZvaWQgZHB1 X2VuY29kZXJfdmlydF9tb2RlX3NldChzdHJ1Y3QKPiBkcm1fZW5jb2RlciAqZHJtX2VuYywKPj4g Cj4+ICAJCQljdGxfaW5kZXggPSBwaHlzLT5zcGxpdF9yb2xlID09IEVOQ19ST0xFX1NMQVZFID8g MQo+IDogMDsKPj4gCj4+IC0JCQlpZiAoIWh3X2N0bFtjdGxfaW5kZXhdKSB7Cj4+ICsJCQlpZiAo IWRwdV9jc3RhdGUtPmh3X2N0bHNbY3RsX2luZGV4XSkgewo+PiAgCQkJCURQVV9FUlJPUl9FTkMo ZHB1X2VuYywgIm5vIGN0bCBibG9jawo+IGFzc2lnbmVkIgo+PiAgCQkJCQkgICAgICJhdCBpZHg6 ICVkXG4iLCBjdGxfaW5kZXgpOwo+PiAgCQkJCXJldHVybjsKPj4gIAkJCX0KPj4gCj4+IC0JCQlw aHlzLT5od19wcCA9IGRwdV9lbmMtPmh3X3BwW2ldOwo+PiAtCQkJcGh5cy0+aHdfY3RsID0gaHdf Y3RsW2N0bF9pbmRleF07Cj4+ICsJCQlkcHVfZW5jLT5od19wcFtpXSA9IGRwdV9jc3RhdGUtPm1p eGVyc1tpXS5od19wcDsKPj4gKwo+PiArCQkJcGh5cy0+aHdfcHAgPSBkcHVfY3N0YXRlLT5taXhl cnNbaV0uaHdfcHA7Cj4+ICsJCQlwaHlzLT5od19jdGwgPSBkcHVfY3N0YXRlLT5od19jdGxzW2N0 bF9pbmRleF07Cj4+IAo+PiAgCQkJcGh5cy0+Y29ubmVjdG9yID0gY29ubi0+c3RhdGUtPmNvbm5l Y3RvcjsKPj4gIAkJCWlmIChwaHlzLT5vcHMubW9kZV9zZXQpCj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5jCj4gYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5jCj4+IGluZGV4 IDg0ZGUzODUuLjQ1NjNmOGQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfdmlkLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c192aWQuYwo+PiBAQCAtNDYxLDI4ICs0NjEsMjAg QEAgc3RhdGljIGludAo+IGRwdV9lbmNvZGVyX3BoeXNfdmlkX2NvbnRyb2xfdmJsYW5rX2lycSgK Pj4gCj4+ICBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX3ZpZF9lbmFibGUoc3RydWN0IGRw dV9lbmNvZGVyX3BoeXMKPiAqcGh5c19lbmMpCj4+ICB7Cj4+IC0Jc3RydWN0IG1zbV9kcm1fcHJp dmF0ZSAqcHJpdjsKPj4gIAlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5c192aWQgKnZpZF9lbmM7Cj4+ IC0Jc3RydWN0IGRwdV9ybV9od19pdGVyIGl0ZXI7Cj4+ICAJc3RydWN0IGRwdV9od19jdGwgKmN0 bDsKPj4gKwlzdHJ1Y3QgZHB1X2NydGNfc3RhdGUgKmRwdV9jc3RhdGU7Cj4+ICsJaW50IGk7Cj4+ ICAJdTMyIGZsdXNoX21hc2sgPSAwOwo+PiAKPj4gLQlpZiAoIXBoeXNfZW5jIHx8ICFwaHlzX2Vu Yy0+cGFyZW50IHx8ICFwaHlzX2VuYy0+cGFyZW50LT5kZXYgfHwKPj4gLQkJCSFwaHlzX2VuYy0+ cGFyZW50LT5kZXYtPmRldl9wcml2YXRlKSB7Cj4+IC0JCURQVV9FUlJPUigiaW52YWxpZCBlbmNv ZGVyL2RldmljZVxuIik7Cj4+IC0JCXJldHVybjsKPj4gLQl9Cj4+IC0JcHJpdiA9IHBoeXNfZW5j LT5wYXJlbnQtPmRldi0+ZGV2X3ByaXZhdGU7Cj4+ICsJZHB1X2NzdGF0ZSA9IHRvX2RwdV9jcnRj X3N0YXRlKHBoeXNfZW5jLT5wYXJlbnQtPmNydGMtPnN0YXRlKTsKPj4gCj4+ICAJdmlkX2VuYyA9 IHRvX2RwdV9lbmNvZGVyX3BoeXNfdmlkKHBoeXNfZW5jKTsKPj4gIAljdGwgPSBwaHlzX2VuYy0+ aHdfY3RsOwo+PiAKPj4gLQlkcHVfcm1faW5pdF9od19pdGVyKCZpdGVyLCBwaHlzX2VuYy0+cGFy ZW50LT5iYXNlLmlkLAo+IERQVV9IV19CTEtfSU5URik7Cj4+IC0Jd2hpbGUgKGRwdV9ybV9nZXRf aHcoJnBoeXNfZW5jLT5kcHVfa21zLT5ybSwgJml0ZXIpKSB7Cj4+IC0JCXN0cnVjdCBkcHVfaHdf aW50ZiAqaHdfaW50ZiA9IChzdHJ1Y3QgZHB1X2h3X2ludGYKPiAqKWl0ZXIuaHc7Cj4+IC0KPj4g LQkJaWYgKGh3X2ludGYtPmlkeCA9PSBwaHlzX2VuYy0+aW50Zl9pZHgpIHsKPj4gLQkJCXZpZF9l bmMtPmh3X2ludGYgPSBod19pbnRmOwo+PiArCWZvciAoaSA9IDA7IGkgPCBkcHVfY3N0YXRlLT5u dW1faW50ZnM7IGkrKykgewo+PiArCQlpZiAoZHB1X2NzdGF0ZS0+aHdfaW50ZnNbaV0tPmlkeCA9 PSBwaHlzX2VuYy0+aW50Zl9pZHgpIHsKPj4gKwkJCXZpZF9lbmMtPmh3X2ludGYgPSBkcHVfY3N0 YXRlLT5od19pbnRmc1tpXTsKPj4gIAkJCWJyZWFrOwo+PiAgCQl9Cj4+ICAJfQo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmMKPiBiL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCj4+IGluZGV4IDM3N2RlZjcuLjU3MDNiMTEg MTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCj4+IEBAIC0zODgs NiArMzg4LDcgQEAgc3RhdGljIGJvb2wgCj4+IF9kcHVfcm1fY2hlY2tfbG1fYW5kX2dldF9jb25u ZWN0ZWRfYmxrcygKPj4gIH0KPj4gCj4+ICBzdGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9sbXMo c3RydWN0IGRwdV9ybSAqcm0sIHVpbnQzMl90IGVuY19pZCwKPj4gKwkJCSAgICAgICBzdHJ1Y3Qg ZHB1X2NydGNfc3RhdGUgKmRwdV9jc3RhdGUsCj4+ICAJCQkgICAgICAgc3RydWN0IGRwdV9ybV9y ZXF1aXJlbWVudHMgKnJlcXMpCj4+IAo+PiAgewo+PiBAQCAtNDQ5LDE2ICs0NTAsMjIgQEAgc3Rh dGljIGludCBfZHB1X3JtX3Jlc2VydmVfbG1zKHN0cnVjdCBkcHVfcm0gCj4+ICpybSwKPiB1aW50 MzJfdCBlbmNfaWQsCj4+ICAJCWxtW2ldLT5lbmNfaWQgPSBlbmNfaWQ7Cj4+ICAJCXBwW2ldLT5l bmNfaWQgPSBlbmNfaWQ7Cj4+IAo+PiArCQlkcHVfY3N0YXRlLT5taXhlcnNbaV0uaHdfbG0gPSB0 b19kcHVfaHdfbWl4ZXIobG1baV0tPmh3KTsKPj4gKwkJZHB1X2NzdGF0ZS0+bWl4ZXJzW2ldLmh3 X3BwID0KPiB0b19kcHVfaHdfcGluZ3BvbmcocHBbaV0tPmh3KTsKPj4gKwo+PiAgCQl0cmFjZV9k cHVfcm1fcmVzZXJ2ZV9sbXMobG1baV0tPmlkLCBEUFVfSFdfQkxLX0xNLCBlbmNfaWQsCj4+ICAJ CQkJCSBwcFtpXS0+aWQpOwo+PiAgCX0KPj4gCj4+ICsJZHB1X2NzdGF0ZS0+bnVtX21peGVycyA9 IGxtX2NvdW50Owo+PiArCj4+ICAJcmV0dXJuIHJjOwo+PiAgfQo+PiAKPj4gIHN0YXRpYyBpbnQg X2RwdV9ybV9yZXNlcnZlX2N0bHMoCj4+ICAJCXN0cnVjdCBkcHVfcm0gKnJtLAo+PiAgCQl1aW50 MzJfdCBlbmNfaWQsCj4+ICsJCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAqZHB1X2NzdGF0ZSwKPj4g IAkJY29uc3Qgc3RydWN0IG1zbV9kaXNwbGF5X3RvcG9sb2d5ICp0b3ApCj4+ICB7Cj4+ICAJc3Ry dWN0IGRwdV9ybV9od19ibGsgKmN0bHNbTUFYX0JMT0NLU107Cj4+IEBAIC01MDEsMjEgKzUwOCwy NCBAQCBzdGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9jdGxzKAo+PiAKPj4gIAlmb3IgKGkgPSAw OyBpIDwgQVJSQVlfU0laRShjdGxzKSAmJiBpIDwgbnVtX2N0bHM7IGkrKykgewo+PiAgCQljdGxz W2ldLT5lbmNfaWQgPSBlbmNfaWQ7Cj4+ICsJCWRwdV9jc3RhdGUtPmh3X2N0bHNbaV0gPSB0b19k cHVfaHdfY3RsKGN0bHNbaV0tPmh3KTsKPj4gKwo+PiAgCQl0cmFjZV9kcHVfcm1fcmVzZXJ2ZV9j dGxzKGN0bHNbaV0tPmlkLCBEUFVfSFdfQkxLX0NUTCwKPj4gIAkJCQkJICBlbmNfaWQpOwo+PiAg CX0KPj4gCj4+ICsJZHB1X2NzdGF0ZS0+bnVtX2N0bHMgPSBudW1fY3RsczsKPj4gKwo+PiAgCXJl dHVybiAwOwo+PiAgfQo+PiAKPj4gLXN0YXRpYyBpbnQgX2RwdV9ybV9yZXNlcnZlX2ludGYoCj4+ ICtzdGF0aWMgc3RydWN0IGRwdV9ybV9od19ibGsgKl9kcHVfcm1fcmVzZXJ2ZV9pbnRmKAo+PiAg CQlzdHJ1Y3QgZHB1X3JtICpybSwKPj4gIAkJdWludDMyX3QgZW5jX2lkLAo+PiAgCQl1aW50MzJf dCBpZCwKPj4gIAkJZW51bSBkcHVfaHdfYmxrX3R5cGUgdHlwZSkKPj4gIHsKPj4gIAlzdHJ1Y3Qg ZHB1X3JtX2h3X2l0ZXIgaXRlcjsKPj4gLQlpbnQgcmV0ID0gMDsKPj4gCj4+ICAJLyogRmluZCB0 aGUgYmxvY2sgZW50cnkgaW4gdGhlIHJtLCBhbmQgbm90ZSB0aGUgcmVzZXJ2YXRpb24gKi8KPj4g IAlkcHVfcm1faW5pdF9od19pdGVyKCZpdGVyLCAwLCB0eXBlKTsKPj4gQEAgLTUyNSw3ICs1MzUs NyBAQCBzdGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9pbnRmKAo+PiAKPj4gIAkJaWYgKFJFU0VS VkVEX0JZX09USEVSKGl0ZXIuYmxrLCBlbmNfaWQpKSB7Cj4+ICAJCQlEUFVfRVJST1IoInR5cGUg JWQgaWQgJWQgYWxyZWFkeSByZXNlcnZlZFxuIiwKPiB0eXBlLCBpZCk7Cj4+IC0JCQlyZXR1cm4g LUVOQVZBSUw7Cj4+ICsJCQlyZXR1cm4gTlVMTDsKPj4gIAkJfQo+PiAKPj4gIAkJaXRlci5ibGst PmVuY19pZCA9IGVuY19pZDsKPj4gQEAgLTUzNSw1NiArNTQ1LDYzIEBAIHN0YXRpYyBpbnQgX2Rw dV9ybV9yZXNlcnZlX2ludGYoCj4+ICAJfQo+PiAKPj4gIAkvKiBTaG91bGRuJ3QgaGFwcGVuIHNp bmNlIGludGZzIGFyZSBmaXhlZCBhdCBwcm9iZSAqLwo+PiAtCWlmICghaXRlci5odykgewo+PiAr CWlmICghaXRlci5ibGspIHsKPj4gIAkJRFBVX0VSUk9SKCJjb3VsZG4ndCBmaW5kIHR5cGUgJWQg aWQgJWRcbiIsIHR5cGUsIGlkKTsKPj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4+ICsJCXJldHVybiBO VUxMOwo+PiAgCX0KPj4gCj4+IC0JcmV0dXJuIHJldDsKPj4gKwlyZXR1cm4gaXRlci5ibGs7Cj4+ ICB9Cj4+IAo+PiAgc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVfaW50Zl9yZWxhdGVkX2h3KAo+ PiAgCQlzdHJ1Y3QgZHB1X3JtICpybSwKPj4gIAkJdWludDMyX3QgZW5jX2lkLAo+PiArCQlzdHJ1 Y3QgZHB1X2NydGNfc3RhdGUgKmRwdV9jc3RhdGUsCj4+ICAJCXN0cnVjdCBkcHVfZW5jb2Rlcl9o d19yZXNvdXJjZXMgKmh3X3JlcykKPj4gIHsKPj4gLQlpbnQgaSwgcmV0ID0gMDsKPj4gLQl1MzIg aWQ7Cj4+ICsJc3RydWN0IGRwdV9ybV9od19ibGsgKmJsazsKPj4gKwlpbnQgaSwgbnVtX2ludGZz ID0gMDsKPj4gCj4+ICAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaHdfcmVzLT5pbnRmcyk7 IGkrKykgewo+PiAgCQlpZiAoaHdfcmVzLT5pbnRmc1tpXSA9PSBJTlRGX01PREVfTk9ORSkKPj4g IAkJCWNvbnRpbnVlOwo+PiAtCQlpZCA9IGkgKyBJTlRGXzA7Cj4+IC0JCXJldCA9IF9kcHVfcm1f cmVzZXJ2ZV9pbnRmKHJtLCBlbmNfaWQsIGlkLAo+PiArCj4+ICsJCWJsayA9IF9kcHVfcm1fcmVz ZXJ2ZV9pbnRmKHJtLCBlbmNfaWQsIGkgKyBJTlRGXzAsCj4+ICAJCQkJRFBVX0hXX0JMS19JTlRG KTsKPj4gLQkJaWYgKHJldCkKPj4gLQkJCXJldHVybiByZXQ7Cj4+ICsJCWlmICghYmxrKQo+PiAr CQkJcmV0dXJuIC1FTkFWQUlMOwo+PiArCj4+ICsJCWRwdV9jc3RhdGUtPmh3X2ludGZzW251bV9p bnRmcysrXSA9Cj4gdG9fZHB1X2h3X2ludGYoYmxrLT5odyk7Cj4+ICAJfQo+PiAKPj4gLQlyZXR1 cm4gcmV0Owo+PiArCWRwdV9jc3RhdGUtPm51bV9pbnRmcyA9IG51bV9pbnRmczsKPj4gKwo+PiAr CXJldHVybiAwOwo+PiAgfQo+PiAKPj4gIHN0YXRpYyBpbnQgX2RwdV9ybV9tYWtlX3Jlc2VydmF0 aW9uKAo+PiAgCQlzdHJ1Y3QgZHB1X3JtICpybSwKPj4gIAkJc3RydWN0IGRybV9lbmNvZGVyICpl bmMsCj4+IC0JCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPj4gKwkJc3RydWN0 IGRwdV9jcnRjX3N0YXRlICpkcHVfY3N0YXRlLAo+PiAgCQlzdHJ1Y3QgZHB1X3JtX3JlcXVpcmVt ZW50cyAqcmVxcykKPj4gIHsKPj4gIAlpbnQgcmV0Owo+PiAKPj4gLQlyZXQgPSBfZHB1X3JtX3Jl c2VydmVfbG1zKHJtLCBlbmMtPmJhc2UuaWQsIHJlcXMpOwo+PiArCXJldCA9IF9kcHVfcm1fcmVz ZXJ2ZV9sbXMocm0sIGVuYy0+YmFzZS5pZCwgZHB1X2NzdGF0ZSwgcmVxcyk7Cj4+ICAJaWYgKHJl dCkgewo+PiAgCQlEUFVfRVJST1IoInVuYWJsZSB0byBmaW5kIGFwcHJvcHJpYXRlIG1peGVyc1xu Iik7Cj4+ICAJCXJldHVybiByZXQ7Cj4+ICAJfQo+PiAKPj4gLQlyZXQgPSBfZHB1X3JtX3Jlc2Vy dmVfY3RscyhybSwgZW5jLT5iYXNlLmlkLCAmcmVxcy0+dG9wb2xvZ3kpOwo+PiArCXJldCA9IF9k cHVfcm1fcmVzZXJ2ZV9jdGxzKHJtLCBlbmMtPmJhc2UuaWQsIGRwdV9jc3RhdGUsCj4+ICsJCQkJ ICAgJnJlcXMtPnRvcG9sb2d5KTsKPj4gIAlpZiAocmV0KSB7Cj4+ICAJCURQVV9FUlJPUigidW5h YmxlIHRvIGZpbmQgYXBwcm9wcmlhdGUgQ1RMXG4iKTsKPj4gIAkJcmV0dXJuIHJldDsKPj4gIAl9 Cj4+IAo+PiAtCXJldCA9IF9kcHVfcm1fcmVzZXJ2ZV9pbnRmX3JlbGF0ZWRfaHcocm0sIGVuYy0+ YmFzZS5pZCwKPiAmcmVxcy0+aHdfcmVzKTsKPj4gKwlyZXQgPSBfZHB1X3JtX3Jlc2VydmVfaW50 Zl9yZWxhdGVkX2h3KHJtLCBlbmMtPmJhc2UuaWQsCj4gZHB1X2NzdGF0ZSwKPj4gKwkJCQkJICAg ICAgJnJlcXMtPmh3X3Jlcyk7Cj4+ICAJaWYgKHJldCkKPj4gIAkJcmV0dXJuIHJldDsKPj4gCj4+ IEBAIC01OTQsNyArNjExLDYgQEAgc3RhdGljIGludCBfZHB1X3JtX21ha2VfcmVzZXJ2YXRpb24o Cj4+ICBzdGF0aWMgaW50IF9kcHVfcm1fcG9wdWxhdGVfcmVxdWlyZW1lbnRzKAo+PiAgCQlzdHJ1 Y3QgZHB1X3JtICpybSwKPj4gIAkJc3RydWN0IGRybV9lbmNvZGVyICplbmMsCj4+IC0JCXN0cnVj dCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPj4gIAkJc3RydWN0IGRwdV9ybV9yZXF1aXJl bWVudHMgKnJlcXMsCj4+ICAJCXN0cnVjdCBtc21fZGlzcGxheV90b3BvbG9neSByZXFfdG9wb2xv Z3kpCj4+ICB7Cj4+IEBAIC02NDIsNiArNjU4LDcgQEAgaW50IGRwdV9ybV9yZXNlcnZlKAo+PiAg CQlib29sIHRlc3Rfb25seSkKPj4gIHsKPj4gIAlzdHJ1Y3QgZHB1X3JtX3JlcXVpcmVtZW50cyBy ZXFzOwo+PiArCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAqZHB1X2NzdGF0ZSA9IHRvX2RwdV9jcnRj X3N0YXRlKGNydGNfc3RhdGUpOwo+PiAgCWludCByZXQ7Cj4+IAo+PiAgCS8qIENoZWNrIGlmIHRo aXMgaXMganVzdCBhIHBhZ2UtZmxpcCAqLwo+PiBAQCAtNjUzLDE0ICs2NzAsMTMgQEAgaW50IGRw dV9ybV9yZXNlcnZlKAo+PiAKPj4gIAltdXRleF9sb2NrKCZybS0+cm1fbG9jayk7Cj4+IAo+PiAt CXJldCA9IF9kcHVfcm1fcG9wdWxhdGVfcmVxdWlyZW1lbnRzKHJtLCBlbmMsIGNydGNfc3RhdGUs ICZyZXFzLAo+PiAtCQkJCQkgICAgdG9wb2xvZ3kpOwo+PiArCXJldCA9IF9kcHVfcm1fcG9wdWxh dGVfcmVxdWlyZW1lbnRzKHJtLCBlbmMsICZyZXFzLCB0b3BvbG9neSk7Cj4+ICAJaWYgKHJldCkg ewo+PiAgCQlEUFVfRVJST1IoImZhaWxlZCB0byBwb3B1bGF0ZSBodyByZXF1aXJlbWVudHNcbiIp Owo+PiAgCQlnb3RvIGVuZDsKPj4gIAl9Cj4+IAo+PiAtCXJldCA9IF9kcHVfcm1fbWFrZV9yZXNl cnZhdGlvbihybSwgZW5jLCBjcnRjX3N0YXRlLCAmcmVxcyk7Cj4+ICsJcmV0ID0gX2RwdV9ybV9t YWtlX3Jlc2VydmF0aW9uKHJtLCBlbmMsIGRwdV9jc3RhdGUsICZyZXFzKTsKPj4gIAlpZiAocmV0 KSB7Cj4+ICAJCURQVV9FUlJPUigiZmFpbGVkIHRvIHJlc2VydmUgaHcgcmVzb3VyY2VzOiAlZFxu IiwgcmV0KTsKPj4gIAkJX2RwdV9ybV9yZWxlYXNlX3Jlc2VydmF0aW9uKHJtLCBlbmMtPmJhc2Uu aWQpOwo+PiAtLQo+PiBUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBt ZW1iZXIgb2YgdGhlIENvZGUgQXVyb3JhCj4gRm9ydW0sCj4+IGEgTGludXggRm91bmRhdGlvbiBD b2xsYWJvcmF0aXZlIFByb2plY3QKPj4gCgotLSAKSmV5a3VtYXIgUwpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZy ZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K