From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [PATCH 2/2] drm/i915: rewrite FBC's atomic CRTC-choosing code Date: Fri, 23 Dec 2016 13:38:30 -0200 Message-ID: <1482507510.2641.85.camel@intel.com> References: <20161223134023.GT31595@intel.com> <1482506976-13830-1-git-send-email-paulo.r.zanoni@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 97F836E093 for ; Fri, 23 Dec 2016 15:38:34 +0000 (UTC) In-Reply-To: <1482506976-13830-1-git-send-email-paulo.r.zanoni@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RW0gU2V4LCAyMDE2LTEyLTIzIMOgcyAxMzoyOSAtMDIwMCwgUGF1bG8gWmFub25pIGVzY3JldmV1 Ogo+IFZpbGxlIHBvaW50ZWQgb3V0IHRoYXQgaW50ZWxfZmJjX2Nob29zZV9jcnRjKCkgaXMgaXRl cmF0aW5nIG92ZXIgYWxsCj4gcGxhbmVzIGluc3RlYWQgb2YganVzdCB0aGUgcHJpbWFyeSBwbGFu ZXMuIFRoZXJlIGFyZSBubyByZWFsCj4gY29uc2VxdWVuY2VzIG9mIHRoaXMgcHJvYmxlbSBmb3Ig SFNXKywgYW5kIGZvciB0aGUgb3RoZXIgcGxhdGZvcm1zIGl0Cj4ganVzdCBtZWFucyB0aGF0IGlu IHNvbWUgb2JzY3VyZSBtdWx0aS1zY3JlZW4gY2FzZXMgd2UnbGwga2VlcCBGQkMKPiBkaXNhYmxl ZCB3aGVuIHdlIGNvdWxkIGhhdmUgZW5hYmxlZCBpdC4gU3RpbGwsIGl0ZXJhdGluZyBvdmVyIGFs bAo+IHBsYW5lcyBkb2Vzbid0IHNlZW0gdG8gYmUgdGhlIGJlc3QgdGhpbmcgdG8gZG8uCj4gCj4g TXkgaW5pdGlhbCBpZGVhIHdhcyB0byBqdXN0IGFkZCBhIGNoZWNrIGZvciBwbGFuZS0+dHlwZSBh bmQgYmUgZG9uZSwKPiBidXQgdGhlbiBJIHJlYWxpemVkIHRoYXQgaW4gY29tbWl0cyBub3QgaW52 b2x2aW5nIHRoZSBwcmltYXJ5IHBsYW5lCj4gd2UKPiB3b3VsZCByZXNldCBjcnRjX3N0YXRlLT5l bmFibGVfZmJjIGJhY2sgdG8gZmFsc2UgZXZlbiB3aGVuIEZCQyBpcwo+IGVuYWJsZWQuIFRoYXQg YWxzbyB3b3VsZG4ndCByZXN1bHQgaW4gYSBidWcgZHVlIHRvIHRoZSB3YXkgdGhlCj4gZW5hYmxl X2ZiYyB2YXJpYWJsZSBpcyBjaGVja2VkLCBidXQsIHN0aWxsLCBvdXIgY29kZSBjYW4gYmUgYmV0 dGVyCj4gdGhhbiB0aGlzLgo+IAo+IFNvIEkgd2VudCBmb3IgdGhlIHNvbHV0aW9uIHRoYXQgaW52 b2x2ZXMgdHJhY2tpbmcgZW5hYmxlX2ZiYyBpbiB0aGUKPiBwcmltYXJ5IHBsYW5lIHN0YXRlIGlu c3RlYWQgb2YgdGhlIENSVEMgc3RhdGUuIFRoaXMgd2F5LCBpZiBhIGNvbW1pdAo+IGRvZXNuJ3Qg aW52b2x2ZSB0aGUgcHJpbWFyeSBwbGFuZSBmb3IgdGhlIENSVEMgd2Ugd29uJ3QgYmUgcmVzZXR0 aW5nCj4gZW5hYmxlX2ZiYyBiYWNrIHRvIGZhbHNlLCBzbyB0aGUgdmFyaWFibGUgd2lsbCBhbHdh eXMgcmVmbGVjdCB0aGUKPiByZWFsaXR5LiBBbmQgdGhpcyBjaGFuZ2UgYWxzbyBtYWtlcyBtb3Jl IHNlbnNlIHNpbmNlIEZCQyBpcyBhY3R1YWxseQo+IHRpZWQgdG8gdGhlIHNpbmdsZSBwbGFuZSBh bmQgbm90IHRoZSBmdWxsIHBpcGUuIEFzIGEgYm9udXMsIHdlIG9ubHkKPiBpdGVyYXRlIG92ZXIg dGhlIENSVENzIGluc3RlYWQgb2YgaXRlcmF0aW5nIG92ZXIgYWxsIHBsYW5lcy4KPiAKPiB2MjoK PiAKPiBCdXQgVmlsbGUgcG9pbnRlZCB0aGF0IHRoaXMgb25seSB3b3JrcyBwcm9wZXJseSBpZiB3 ZSBoYXZlIGEgc2luZ2xlCj4gY29tbWl0IHdpdGggbXVsdGlwbGUgQ1JUQ3MuIElmIHdlIGhhdmUg bXVsdGlwbGUgcGFyYWxsZWwgY29tbWl0cywKPiBlYWNoCj4gd2l0aCBpdHMgb3duIENSVEMsIHdl J2xsIGVuZCB3aXRoIGVuYWJsZV9mYmMgc2V0IHRvIHRydWUgaW4gbW9yZSB0aGFuCj4gb25lIHBs YW5lLgo+IAo+IFNvIHRoZSBzb2x1dGlvbiB3YXMgdG8gcmVuYW1lIGVuYWJsZV9mYmMgdG8gY2Fu X2VuYWJsZV9mYmMuIElmIHdlCj4ganVzdAo+IGRpZCB0aGUgcmVuYW1lIGFzIHRoZSBwYXRjaCB3 YXMsIHdlJ2QgZW5kIHVwIHdpdGggYSBzaW5nbGUgcGxhbmUgd2l0aAo+IGNhbl9lbmFibGVfZmJj IG9uIGNvbW1pdHMgaW52b2x2aW5nIG11bHRpcGxlIENSVENzOiB3ZSdkIGNob29zZSB0aGUKPiBi ZXN0IG9uZSwgYnV0IHdlJ2Qgc3RpbGwgZW5kIHVwIHdpdGggYSB2YXJpYWJsZSB0aGF0IGRvZXNu J3QgMTAwJQo+IHJlZmxlY3QgcmVhbGl0eS4KPiAKPiBTbyBpbiB0aGUgZW5kIEkgYWRvcHRlZCBW aWxsZSdzIHN1Z2dlc3Rpb24gb2YgdGhlIGZiY19zY29yZSB2YXJpYWJsZS4KPiBBbmQgdGhlbiwg aW5zdGVhZCBvZiBjaGVja2luZyB0aGUgc2NvcmUgYXQgaW50ZWxfZmJjX2Nob29zZV9jcnRjKCkK PiBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gY2hlY2sgZm9yIHRoZSBzY29yZSBhdCBpbnRlbF9m YmNfZW5hYmxlKCkuCj4gVGhpcyBhbGxvd3MgdXMgdG8gc2ltcGxpZnkgaW50ZWxfZmJjX2Nob29z ZV9jcnRjKCkgdG8gdGhlIHBvaW50IHdoZXJlCj4gaXQgb25seSBuZWVkcyB0byBsb29rIGF0IHRo ZSBnaXZlbiBwbGFuZSBpbiBvcmRlciB0byBhc3NpZ24gaXRzIHNjb3JlCj4gaW5zdGVhZCBvZiBs b29raW5nIGF0IGV2ZXJ5IHByaW1hcnkgcGxhbmUgb24gdGhlIHNhbWUgY29tbWl0Lgo+IAo+IFdl IHN0aWxsIG9ubHkgc2V0IHNjb3JlcyBvZiAwIGFuZCAxIGFuZCB3ZSBkb24ndCByZWFsbHkgZG8g dGhlCj4gc2NvcmUtY2hlY2tpbmcgbG9vcC4KPiAKPiB2MzogUmViYXNlLgo+IAo+IHY0Ogo+IAo+ IE1vdmUgaW50ZWxfZmJjX2NoZWNrX3BsYW5lKCkgY2FsbCB1cCBzbyBpdCB3aWxsIHN0aWxsIHpl cm8gdGhlIHNjb3JlCj4gaWYgdGhlIHBsYW5lIGhhcyBubyBGQi4gKFZpbGxlKS4KCk9oLCBvaywg c28gYWZ0ZXIgbW92aW5nIHRoZSBjYWxsIHVwIHRoZSBjYXNlIHdoZXJlIHRoZSBDUlRDIGlzIE5V TEwgY2FuCmFjdHVhbGx5IGhhcHBlbi4gUHJldmlvdXNseSBpdCB3YXMgcHJldmVudGVkIGJlY2F1 c2Ugd2UgYWx3YXlzIHJhbiB0aGUKZnVuY3Rpb24gd2hlbiB3ZSBoYWQgYW4gRkIuCgpJIHJlY2Fs bCB0aGlzIHBhdGNoLiBTaG91bGRuJ3QgaGF2ZSBzZW50IGl0IHNvIHNvb24uCgo+IAo+IENjOiBW aWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IFJlcG9ydGVk LWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IFNp Z25lZC1vZmYtYnk6IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPgo+IC0t LQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHzCoMKgMyArLQo+IMKg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmjCoMKgwqDCoMKgfMKgwqA4ICsrLS0KPiDC oGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jwqDCoMKgwqDCoHwgODUgKysrKysrKysr KysrLS0tLS0tLS0tLS0tCj4gLS0tLS0tLS0tLS0tCj4gwqAzIGZpbGVzIGNoYW5nZWQsIDM1IGlu c2VydGlvbnMoKyksIDYxIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+IGluZGV4IGQ4ZWZmZDQuLjU2YWUzMmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTE0MTkxLDcgKzE0MTkxLDYgQEAgc3RhdGljIGludCBp bnRlbF9hdG9taWNfY2hlY2soc3RydWN0Cj4gZHJtX2RldmljZSAqZGV2LAo+IMKgCWlmIChyZXQp Cj4gwqAJCXJldHVybiByZXQ7Cj4gwqAKPiAtCWludGVsX2ZiY19jaG9vc2VfY3J0YyhkZXZfcHJp diwgc3RhdGUpOwo+IMKgCXJldHVybiBjYWxjX3dhdGVybWFya19kYXRhKHN0YXRlKTsKPiDCoH0K PiDCoAo+IEBAIC0xNDk1Nyw2ICsxNDk1Niw4IEBAIGludGVsX2NoZWNrX3ByaW1hcnlfcGxhbmUo c3RydWN0IGRybV9wbGFuZQo+ICpwbGFuZSwKPiDCoAlpZiAocmV0KQo+IMKgCQlyZXR1cm4gcmV0 Owo+IMKgCj4gKwlpbnRlbF9mYmNfY2hlY2tfcGxhbmUoc3RhdGUpOwo+ICsKPiDCoAlpZiAoIXN0 YXRlLT5iYXNlLmZiKQo+IMKgCQlyZXR1cm4gMDsKPiDCoAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKPiBpbmRleCAwMjVlNGM4Li43NDMwMDgyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKPiBAQCAtNDA2LDYgKzQwNiw5IEBAIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSB7Cj4g wqAJwqAqLwo+IMKgCWludCBzY2FsZXJfaWQ7Cj4gwqAKPiArCS8qIDA6IG5vdCBzdWl0YWJsZSBm b3IgRkJDLCAxKzogc3VpdGFibGUgZm9yIEZCQywgbW9yZSBpcwo+IGJldHRlci4gKi8KPiArCXVu c2lnbmVkIGludCBmYmNfc2NvcmU7Cj4gKwo+IMKgCXN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2Nv bG9ya2V5IGNrZXk7Cj4gwqB9Owo+IMKgCj4gQEAgLTY1Miw4ICs2NTUsNiBAQCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSB7Cj4gwqAKPiDCoAlib29sIGlwc19lbmFibGVkOwo+IMKgCj4gLQlib29s IGVuYWJsZV9mYmM7Cj4gLQo+IMKgCWJvb2wgZG91YmxlX3dpZGU7Cj4gwqAKPiDCoAlpbnQgcGJu Owo+IEBAIC0xNTM1LDggKzE1MzYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQKPiBpbnRlbF9mYmRl dl9yZXN0b3JlX21vZGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiDCoCNlbmRpZgo+IMKgCj4g wqAvKiBpbnRlbF9mYmMuYyAqLwo+IC12b2lkIGludGVsX2ZiY19jaG9vc2VfY3J0YyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJCcKgwqDCoHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSk7Cj4gK3ZvaWQgaW50ZWxfZmJjX2NoZWNrX3BsYW5lKHN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpOwo+IMKgYm9vbCBpbnRlbF9mYmNfaXNfYWN0aXZl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gwqB2b2lkIGludGVsX2ZiY19w cmVfdXBkYXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+IMKgCQkJwqDCoHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9mYmMuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKPiBp bmRleCAyNmE4MWE5Li5jZWRhNmY0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2ZiYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKPiBA QCAtMTA0MCw2OCArMTA0MCwzMiBAQCB2b2lkIGludGVsX2ZiY19mbHVzaChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZQo+ICpkZXZfcHJpdiwKPiDCoH0KPiDCoAo+IMKgLyoqCj4gLSAqIGludGVsX2Zi Y19jaG9vc2VfY3J0YyAtIHNlbGVjdCBhIENSVEMgdG8gZW5hYmxlIEZCQyBvbgo+IC0gKiBAZGV2 X3ByaXY6IGk5MTUgZGV2aWNlIGluc3RhbmNlCj4gLSAqIEBzdGF0ZTogdGhlIGF0b21pYyBzdGF0 ZSBzdHJ1Y3R1cmUKPiArICogaW50ZWxfZmJjX2NoZWNrX3BsYW5lIC0gY2hlY2sgcGxhbmUgZm9y IEZCQyBzdWl0YWJpbGl0eQo+ICsgKiBAcGxhbmVfc3RhdGU6IHRoZSBwbGFuZSBzdGF0ZQo+IMKg ICoKPiAtICogVGhpcyBmdW5jdGlvbiBsb29rcyBhdCB0aGUgcHJvcG9zZWQgc3RhdGUgZm9yIENS VENzIGFuZCBwbGFuZXMsCj4gdGhlbiBjaG9vc2VzCj4gLSAqIHdoaWNoIHBpcGUgaXMgZ29pbmcg dG8gaGF2ZSBGQkMgYnkgc2V0dGluZyBpbnRlbF9jcnRjX3N0YXRlLQo+ID5lbmFibGVfZmJjIHRv Cj4gLSAqIHRydWUuCj4gKyAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIHNldCBmYmNfc2NvcmUgYmFz ZWQgb24gaG93IHN1aXRhYmxlIHRoZQo+IHBsYW5lIGlzIGZvcgo+ICsgKiBGQkMuIEZvciBub3cg dGhlIG9ubHkgc2NvcmVzIHVzZWQgYXJlIDAgYW5kIDEuCj4gwqAgKgo+IC0gKiBMYXRlciwgaW50 ZWxfZmJjX2VuYWJsZSBpcyBnb2luZyB0byBsb29rIGZvciBzdGF0ZS0+ZW5hYmxlX2ZiYwo+IGFu ZCB0aGVuIG1heWJlCj4gLSAqIGVuYWJsZSBGQkMgZm9yIHRoZSBjaG9zZW4gQ1JUQy4gSWYgaXQg ZG9lcywgaXQgd2lsbCBzZXQgZGV2X3ByaXYtCj4gPmZiYy5jcnRjLgo+ICsgKiBXZSdyZSBub3Qg Y2hhbmdpbmcgZGV2X3ByaXYtPmZiYywgc28gdGhlcmUncyBubyBuZWVkIGZvciB0aGUgRkJDCj4g bG9jay4KPiDCoCAqLwo+IC12b2lkIGludGVsX2ZiY19jaG9vc2VfY3J0YyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJCcKgwqDCoHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSkKPiArdm9pZCBpbnRlbF9mYmNfY2hlY2tfcGxhbmUoc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSkKPiDCoHsKPiAtCXN0cnVjdCBpbnRlbF9mYmMgKmZiYyA9ICZk ZXZfcHJpdi0+ZmJjOwo+IC0Jc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4gLQlzdHJ1Y3QgZHJt X3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKPiAtCWJvb2wgY3J0Y19jaG9zZW4gPSBmYWxzZTsK PiAtCWludCBpOwo+ICsJc3RydWN0IGRybV9wbGFuZSAqcGxhbmUgPSBwbGFuZV9zdGF0ZS0+YmFz ZS5wbGFuZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo cGxhbmUtPmRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMo cGxhbmVfc3RhdGUtCj4gPmJhc2UuY3J0Yyk7Cj4gwqAKPiAtCW11dGV4X2xvY2soJmZiYy0+bG9j ayk7Cj4gLQo+IC0JLyogRG9lcyB0aGlzIGF0b21pYyBjb21taXQgaW52b2x2ZSB0aGUgQ1JUQyBj dXJyZW50bHkgdGllZAo+IHRvIEZCQz8gKi8KPiAtCWlmIChmYmMtPmNydGMgJiYKPiAtCcKgwqDC oMKgIWRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2NydGNfc3RhdGUoc3RhdGUsICZmYmMtPmNydGMt Cj4gPmJhc2UpKQo+IC0JCWdvdG8gb3V0Owo+ICsJcGxhbmVfc3RhdGUtPmZiY19zY29yZSA9IDA7 Cj4gwqAKPiDCoAlpZiAoIWludGVsX2ZiY19jYW5fZW5hYmxlKGRldl9wcml2KSkKPiAtCQlnb3Rv IG91dDsKPiAtCj4gLQkvKiBTaW1wbHkgY2hvb3NlIHRoZSBmaXJzdCBDUlRDIHRoYXQgaXMgY29t cGF0aWJsZSBhbmQgaGFzIGEKPiB2aXNpYmxlCj4gLQnCoCogcGxhbmUuIFdlIGNvdWxkIGdvIGZv ciBmYW5jaWVyIHNjaGVtZXMgc3VjaCBhcyBjaGVja2luZwo+IHRoZSBwbGFuZQo+IC0JwqAqIHNp emUsIGJ1dCB0aGlzIHdvdWxkIGp1c3QgYWZmZWN0IHRoZSBmZXcgcGxhdGZvcm1zIHRoYXQKPiBk b24ndCB0aWUgRkJDCj4gLQnCoCogdG8gcGlwZSBvciBwbGFuZSBBLiAqLwo+IC0JZm9yX2VhY2hf cGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBwbGFuZV9zdGF0ZSwgaSkgewo+IC0JCXN0cnVj dCBpbnRlbF9wbGFuZV9zdGF0ZSAqaW50ZWxfcGxhbmVfc3RhdGUgPQo+IC0JCQl0b19pbnRlbF9w bGFuZV9zdGF0ZShwbGFuZV9zdGF0ZSk7Cj4gLQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmlu dGVsX2NydGNfc3RhdGU7Cj4gLQkJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9j cnRjKHBsYW5lX3N0YXRlLQo+ID5jcnRjKTsKPiAtCj4gLQkJaWYgKCFpbnRlbF9wbGFuZV9zdGF0 ZS0+YmFzZS52aXNpYmxlKQo+IC0JCQljb250aW51ZTsKPiAtCj4gLQkJaWYgKGZiY19vbl9waXBl X2Ffb25seShkZXZfcHJpdikgJiYgY3J0Yy0+cGlwZSAhPQo+IFBJUEVfQSkKPiAtCQkJY29udGlu dWU7Cj4gLQo+IC0JCWlmIChmYmNfb25fcGxhbmVfYV9vbmx5KGRldl9wcml2KSAmJiBjcnRjLT5w bGFuZSAhPQo+IFBMQU5FX0EpCj4gLQkJCWNvbnRpbnVlOwo+IC0KPiAtCQlpbnRlbF9jcnRjX3N0 YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZSgKPiAtCQkJZHJtX2F0b21pY19nZXRfZXhpc3Rpbmdf Y3J0Y19zdGF0ZShzdGF0ZSwKPiAmY3J0Yy0+YmFzZSkpOwo+IC0KPiAtCQlpbnRlbF9jcnRjX3N0 YXRlLT5lbmFibGVfZmJjID0gdHJ1ZTsKPiAtCQljcnRjX2Nob3NlbiA9IHRydWU7Cj4gLQkJYnJl YWs7Cj4gLQl9Cj4gLQo+IC0JaWYgKCFjcnRjX2Nob3NlbikKPiAtCQlmYmMtPm5vX2ZiY19yZWFz b24gPSAibm8gc3VpdGFibGUgQ1JUQyBmb3IgRkJDIjsKPiArCQlyZXR1cm47Cj4gKwlpZiAoZmJj X29uX3BpcGVfYV9vbmx5KGRldl9wcml2KSAmJiBjcnRjLT5waXBlICE9IFBJUEVfQSkKPiArCQly ZXR1cm47Cj4gKwlpZiAoZmJjX29uX3BsYW5lX2Ffb25seShkZXZfcHJpdikgJiYgY3J0Yy0+cGxh bmUgIT0gUExBTkVfQSkKPiArCQlyZXR1cm47Cj4gKwlpZiAoIXBsYW5lX3N0YXRlLT5iYXNlLnZp c2libGUpCj4gKwkJcmV0dXJuOwo+IMKgCj4gLW91dDoKPiAtCW11dGV4X3VubG9jaygmZmJjLT5s b2NrKTsKPiArCXBsYW5lX3N0YXRlLT5mYmNfc2NvcmUgPSAxOwo+IMKgfQo+IMKgCj4gwqAvKioK PiBAQCAtMTExNCw2ICsxMDc4LDEzIEBAIHZvaWQgaW50ZWxfZmJjX2Nob29zZV9jcnRjKHN0cnVj dAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IMKgICogcG9zc2libGUuIE5vdGljZSB0 aGF0IGl0IGRvZXNuJ3QgYWN0aXZhdGUgRkJDLiBJdCBpcyB2YWxpZCB0bwo+IGNhbGwKPiDCoCAq IGludGVsX2ZiY19lbmFibGUgbXVsdGlwbGUgdGltZXMgZm9yIHRoZSBzYW1lIHBpcGUgd2l0aG91 dCBhbgo+IMKgICogaW50ZWxfZmJjX2Rpc2FibGUgaW4gdGhlIG1pZGRsZSwgYXMgbG9uZyBhcyBp dCBpcyBkZWFjdGl2YXRlZC4KPiArICoKPiArICogSW4gdGhlIGZ1dHVyZSB0aGlzIGZ1bmN0aW9u IGNvdWxkIG1ha2UgYmV0dGVyIHVzZSBvZiB0aGUKPiBmYmNfc2NvcmUgdmFyaWFibGUuCj4gKyAq IFdlIGNvdWxkLCBmb3IgZXhhbXBsZSwgbG9vcCB0aHJvdWdoIGFsbCB0aGUgcHJpbWFyeSBwbGFu ZXMKPiBpbnZvbHZlZCBpbiB0aGUKPiArICogYXRvbWljIGNvbW1pdCBhbmQgb25seSBlbmFibGUg RkJDIGZvciB0aGUgcGxhbmUgd2l0aCB0aGUgYmVzdAo+IGZiY19zY29yZS4gV2UKPiArICogY291 bGQgYWxzbyB0cnkgdG8gZG8gc29tZSBzY2hlbWUgd2hlcmUgYSBwbGFuZSB3aXRoIGJldHRlciBz Y29yZQo+IHRha2VzIG92ZXIKPiArICogRkJDIGZyb20gYW5vdGhlciBwbGFuZSwgYnV0IG91ciBk cml2ZXIgY3VycmVudGx5IGNhbid0IGhhbmRsZSB0aGUKPiBjb21wbGV4aXR5Cj4gKyAqIG9mIHN3 aXRjaGluZyBwbGFuZXMgb24gdGhlIGZseS4gVGhpcyB3b3VsZCBvbmx5IGFmZmVjdCBmcm9tIEdl biA0Cj4gdXAgdG8gSVZCLgo+IMKgICovCj4gwqB2b2lkIGludGVsX2ZiY19lbmFibGUoc3RydWN0 IGludGVsX2NydGMgKmNydGMsCj4gwqAJCcKgwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAo+IEBAIC0xMTMwLDE0ICsxMTAxLDE2IEBAIHZvaWQgaW50ZWxfZmJj X2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Ywo+ICpjcnRjLAo+IMKgCWlmIChmYmMtPmVuYWJsZWQp IHsKPiDCoAkJV0FSTl9PTihmYmMtPmNydGMgPT0gTlVMTCk7Cj4gwqAJCWlmIChmYmMtPmNydGMg PT0gY3J0Yykgewo+IC0JCQlXQVJOX09OKCFjcnRjX3N0YXRlLT5lbmFibGVfZmJjKTsKPiArCQkJ V0FSTl9PTihwbGFuZV9zdGF0ZS0+ZmJjX3Njb3JlID09IDApOwo+IMKgCQkJV0FSTl9PTihmYmMt PmFjdGl2ZSk7Cj4gwqAJCX0KPiDCoAkJZ290byBvdXQ7Cj4gwqAJfQo+IMKgCj4gLQlpZiAoIWNy dGNfc3RhdGUtPmVuYWJsZV9mYmMpCj4gKwlpZiAocGxhbmVfc3RhdGUtPmZiY19zY29yZSA9PSAw KSB7Cj4gKwkJZmJjLT5ub19mYmNfcmVhc29uID0gIm5vIHN1aXRhYmxlIENSVEMgZm9yIEZCQyI7 Cj4gwqAJCWdvdG8gb3V0Owo+ICsJfQo+IMKgCj4gwqAJV0FSTl9PTihmYmMtPmFjdGl2ZSk7Cj4g wqAJV0FSTl9PTihmYmMtPmNydGMgIT0gTlVMTCk7Cl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=