From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH v2 18/27] drm/i915: Handle disabling planes better. Date: Thu, 11 Jun 2015 05:51:27 +0200 Message-ID: <557905BF.6070805@linux.intel.com> References: <1433422077-14907-1-git-send-email-maarten.lankhorst@linux.intel.com> <1433422077-14907-19-git-send-email-maarten.lankhorst@linux.intel.com> <20150611013732.GI15024@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 4FA766E005 for ; Wed, 10 Jun 2015 20:51:29 -0700 (PDT) In-Reply-To: <20150611013732.GI15024@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMTEtMDYtMTUgb20gMDM6Mzcgc2NocmVlZiBNYXR0IFJvcGVyOgo+IE9uIFRodSwgSnVuIDA0 LCAyMDE1IGF0IDAyOjQ3OjQ4UE0gKzAyMDAsIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3RlOgo+PiBS ZWFkIG91dCB0aGUgaW5pdGlhbCBzdGF0ZSwgYW5kIGFkZCBhIHF1aXJrIHRvIGZvcmNlIGRpc2Fi bGUgYWxsIHBsYW5lCj4+IHRoYXQgd2VyZSBpbml0aWFsbHkgYWN0aXZlLiBVc2UgdGhpcyB0byBk aXNhYmxlIHBsYW5lcyBkdXJpbmcgbW9kZXNldAo+PiB0b28uCj4+Cj4+IFNpZ25lZC1vZmYtYnk6 IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4+ IC0tLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMgIHwgICA3ICsrCj4+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAxMzkgKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oICAgICB8ICAgNyArKwo+PiAgMyBmaWxlcyBjaGFuZ2VkLCAxMTQgaW5zZXJ0aW9ucygrKSwg MzkgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9hdG9taWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jCj4+IGlu ZGV4IDg0NDdhMWZlZjMzMi4uNTYyN2RmMjgwN2IwIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9hdG9taWMuYwo+PiBAQCAtOTYsNiArOTYsMTMgQEAgaW50IGludGVsX2F0b21pY19jaGVj ayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgCQlyZXR1cm4gLUVJTlZBTDsKPj4gIAl9Cj4+ ICAKPj4gKwlpZiAoY3J0Y19zdGF0ZSAmJgo+PiArCSAgICBjcnRjX3N0YXRlLT5xdWlya3MgJiBQ SVBFX0NPTkZJR19RVUlSS19JTkhFUklURURfTU9ERSkgewo+PiArCQlyZXQgPSBkcm1fYXRvbWlj X2FkZF9hZmZlY3RlZF9wbGFuZXMoc3RhdGUsICZudWNsZWFyX2NydGMtPmJhc2UpOwo+PiArCQlp ZiAocmV0KQo+PiArCQkJcmV0dXJuIHJldDsKPj4gKwl9Cj4+ICsKPj4gIAlyZXQgPSBkcm1fYXRv bWljX2hlbHBlcl9jaGVja19wbGFuZXMoZGV2LCBzdGF0ZSk7Cj4+ICAJaWYgKHJldCkKPj4gIAkJ cmV0dXJuIHJldDsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+PiBpbmRleCBi NzI3MjQxMjFmNTcuLjNiNWQyMzY5MjkzNSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+PiBAQCAtNDgzMCwxMSArNDgzMCwyMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9j cnRjX2VuYWJsZV9wbGFuZXMoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+PiAgCWludGVsX2Zyb250 YnVmZmVyX2ZsaXAoZGV2LCBJTlRFTF9GUk9OVEJVRkZFUl9BTExfTUFTSyhwaXBlKSk7Cj4+ICB9 Cj4+ICAKPj4gK3N0YXRpYyB2b2lkIGludGVsX2Rpc2FibGVfcGxhbmVzX29uX2NydGMoc3RydWN0 IGRybV9jcnRjICpjKQo+PiArewo+PiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50 ZWxfY3J0YyhjKTsKPj4gKwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPj4gKwo+PiArCWRybV9m b3JfZWFjaF9wbGFuZV9tYXNrKHBsYW5lLCBjcnRjLT5iYXNlLmRldiwKPj4gKwkJCQljcnRjLT5h dG9taWMuZm9yY2VfZGlzYWJsZWRfcGxhbmVzKQo+PiArCQl0b19pbnRlbF9wbGFuZShwbGFuZSkt PmRpc2FibGVfcGxhbmUocGxhbmUsIGMpOwo+PiArfQo+PiArCj4+ICBzdGF0aWMgdm9pZCBpbnRl bF9jcnRjX2Rpc2FibGVfcGxhbmVzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPj4gIHsKPj4gIAlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+PiAgCXN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPj4gLQlzdHJ1Y3QgaW50ZWxfcGxh bmUgKmludGVsX3BsYW5lOwo+PiAgCWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPj4gIAo+ PiAgCWludGVsX2NydGNfd2FpdF9mb3JfcGVuZGluZ19mbGlwcyhjcnRjKTsKPj4gQEAgLTQ4NDIs MTQgKzQ4NTEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2Rpc2FibGVfcGxhbmVzKHN0cnVj dCBkcm1fY3J0YyAqY3J0YykKPj4gIAlpbnRlbF9wcmVfZGlzYWJsZV9wcmltYXJ5KGNydGMpOwo+ PiAgCj4+ICAJaW50ZWxfY3J0Y19kcG1zX292ZXJsYXlfZGlzYWJsZShpbnRlbF9jcnRjKTsKPj4g LQlmb3JfZWFjaF9pbnRlbF9wbGFuZShkZXYsIGludGVsX3BsYW5lKSB7Cj4+IC0JCWlmIChpbnRl bF9wbGFuZS0+cGlwZSA9PSBwaXBlKSB7Cj4+IC0JCQlzdHJ1Y3QgZHJtX2NydGMgKmZyb20gPSBp bnRlbF9wbGFuZS0+YmFzZS5jcnRjOwo+PiAtCj4+IC0JCQlpbnRlbF9wbGFuZS0+ZGlzYWJsZV9w bGFuZSgmaW50ZWxfcGxhbmUtPmJhc2UsCj4+IC0JCQkJCQkgICBmcm9tID86IGNydGMpOwo+PiAt CQl9Cj4+IC0JfQo+PiArCWludGVsX2Rpc2FibGVfcGxhbmVzX29uX2NydGMoY3J0Yyk7Cj4+ICAK Pj4gIAkvKgo+PiAgCSAqIEZJWE1FOiBPbmNlIHdlIGdyb3cgcHJvcGVyIG51Y2xlYXIgZmxpcCBz dXBwb3J0IG91dCBvZiB0aGlzIHdlIG5lZWQKPj4gQEAgLTExNTU0LDYgKzExNTU2LDIxIEBAIGlu dCBpbnRlbF9wbGFuZV9hdG9taWNfY2FsY19jaGFuZ2VzKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKPj4gIAlpZiAoIWludGVsX2NydGMtPmFjdGl2ZSB8fCBtb2RlX2NoYW5nZWQp Cj4+ICAJCXJldHVybiAwOwo+PiAgCj4+ICsJaWYgKHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19z dGF0ZSktPnF1aXJrcyAmCj4+ICsJICAgIFBJUEVfQ09ORklHX1FVSVJLX0lOSVRJQUxfUExBTkVT KSB7Cj4+ICsJCWlmICghcGxhbmVfc3RhdGUtPmNydGMpIHsKPj4gKwkJCWludGVsX2NydGMtPmF0 b21pYy5mb3JjZV9kaXNhYmxlZF9wbGFuZXMgfD0KPj4gKwkJCQkxIDw8IGRybV9wbGFuZV9pbmRl eChwbGFuZSk7Cj4+ICsJCQljcnRjX3N0YXRlLT5wbGFuZV9tYXNrICY9Cj4+ICsJCQkJfigxIDw8 IGRybV9wbGFuZV9pbmRleChwbGFuZSkpOwo+PiArCQl9Cj4+ICsKPj4gKwkJLyogSW5pdGlhbCBz dGF0ZSBmb3Igc3ByaXRlIHBsYW5lcyBpcyB1bmtub3duLAo+PiArCQkgKiBubyBuZWVkIHRvIHVw ZGF0ZSBzcHJpdGUgd2F0ZXJtYXJrcyAqLwo+PiArCQlpZiAocGxhbmUtPnR5cGUgPT0gRFJNX1BM QU5FX1RZUEVfT1ZFUkxBWSkKPj4gKwkJCW1vZGVfY2hhbmdlZCA9IHRydWU7Cj4+ICsJfQo+PiAr Cj4+ICAJd2FzX3Zpc2libGUgPSBvbGRfcGxhbmVfc3RhdGUtPnZpc2libGU7Cj4+ICAJdmlzaWJs ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lX3N0YXRlKS0+dmlzaWJsZTsKPj4gIAo+PiBA QCAtMTE2MzMsNyArMTE2NTAsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hhbmdl cyhzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4+ICAJCQlpbnRlbF9jcnRjLT5h dG9taWMuZmJfYml0cyB8PQo+PiAgCQkJICAgIElOVEVMX0ZST05UQlVGRkVSX1NQUklURShpbnRl bF9jcnRjLT5waXBlKTsKPj4gIAo+PiAtCQlpZiAodHVybl9vZmYgJiYgaXNfY3J0Y19lbmFibGVk KSB7Cj4+ICsJCWlmICh0dXJuX29mZiAmJiAhbW9kZV9jaGFuZ2VkKSB7Cj4+ICAJCQlpbnRlbF9j cnRjLT5hdG9taWMud2FpdF92YmxhbmsgPSB0cnVlOwo+PiAgCQkJaW50ZWxfY3J0Yy0+YXRvbWlj LnVwZGF0ZV9zcHJpdGVfd2F0ZXJtYXJrcyB8PQo+PiAgCQkJCTEgPDwgaTsKPj4gQEAgLTExNzE0 LDYgKzExNzMxLDExIEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0 IGRybV9jcnRjICpjcnRjLAo+PiAgCQkiW0NSVEM6JWldIG1pc21hdGNoIGJldHdlZW4gc3RhdGUt PmFjdGl2ZSglaSkgYW5kIGNydGMtPmFjdGl2ZSglaSlcbiIsCj4+ICAJCWlkeCwgY3J0Yy0+c3Rh dGUtPmFjdGl2ZSwgaW50ZWxfY3J0Yy0+YWN0aXZlKTsKPj4gIAo+PiArCS8qIHBsYW5lIG1hc2sg aXMgZml4ZWQgdXAgYWZ0ZXIgYWxsIGluaXRpYWwgcGxhbmVzIGFyZSBjYWxjdWxhdGVkICovCj4+ ICsJcGlwZV9jb25maWctPnF1aXJrcyAmPSB+UElQRV9DT05GSUdfUVVJUktfSU5JVElBTF9QTEFO RVM7Cj4+ICsJaWYgKG1vZGVfY2hhbmdlZCkKPj4gKwkJaW50ZWxfY3J0Yy0+YXRvbWljLmZvcmNl X2Rpc2FibGVkX3BsYW5lcyA9IGNydGMtPnN0YXRlLT5wbGFuZV9tYXNrOwo+PiArCj4+ICAJaWYg KG1vZGVfY2hhbmdlZCAmJiBjcnRjX3N0YXRlLT5lbmFibGUgJiYKPj4gIAkgICAgZGV2X3ByaXYt PmRpc3BsYXkuY3J0Y19jb21wdXRlX2Nsb2NrICYmCj4+ICAJICAgICFXQVJOX09OKHBpcGVfY29u ZmlnLT5zaGFyZWRfZHBsbCAhPSBEUExMX0lEX1BSSVZBVEUpKSB7Cj4+IEBAIC0xMjg4Myw2ICsx MjkwNSwxMyBAQCBpbnRlbF9tb2Rlc2V0X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSkKPj4gIAkJcmV0dXJuIHJldDsKPj4gIAo+PiAgCWZvcl9lYWNoX2NydGNf aW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKPj4gKwkJaWYgKHRvX2ludGVs X2NydGNfc3RhdGUoY3J0Y19zdGF0ZSktPnF1aXJrcyAmCj4+ICsJCSAgICBQSVBFX0NPTkZJR19R VUlSS19JTklUSUFMX1BMQU5FUykgewo+PiArCQkJcmV0ID0gZHJtX2F0b21pY19hZGRfYWZmZWN0 ZWRfcGxhbmVzKHN0YXRlLCBjcnRjKTsKPj4gKwkJCWlmIChyZXQpCj4+ICsJCQkJcmV0dXJuIHJl dDsKPj4gKwkJfQo+PiArCj4+ICAJCWlmICghbmVlZHNfbW9kZXNldChjcnRjX3N0YXRlKSkKPj4g IAkJCWNvbnRpbnVlOwo+PiAgCj4+IEBAIC0xMzUyOSwxMyArMTM1NTgsMTcgQEAgc3RhdGljIHZv aWQgaW50ZWxfYmVnaW5fY3J0Y19jb21taXQoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+PiAgCWlu dGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPj4gIAo+PiAgCS8qIFBlcmZvcm0gdmJsYW5r IGV2YXNpb24gYXJvdW5kIGNvbW1pdCBvcGVyYXRpb24gKi8KPj4gLQlpZiAoY3J0Yy0+c3RhdGUt PmFjdGl2ZSAmJiAhbmVlZHNfbW9kZXNldChjcnRjLT5zdGF0ZSkpCj4+ICsJaWYgKGNydGMtPnN0 YXRlLT5hY3RpdmUgJiYgIW5lZWRzX21vZGVzZXQoY3J0Yy0+c3RhdGUpKSB7Cj4+ICAJCWludGVs X2NydGMtPmF0b21pYy5ldmFkZSA9Cj4+ICAJCQlpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChpbnRl bF9jcnRjLAo+PiAgCQkJCQkJJmludGVsX2NydGMtPmF0b21pYy5zdGFydF92YmxfY291bnQpOwo+ PiAgCj4+ICsJCWlmIChpbnRlbF9jcnRjLT5hdG9taWMuZm9yY2VfZGlzYWJsZWRfcGxhbmVzKQo+ PiArCQkJaW50ZWxfZGlzYWJsZV9wbGFuZXNfb25fY3J0YyhjcnRjKTsKPj4gKwl9Cj4+ICsKPj4g IAlpZiAoIW5lZWRzX21vZGVzZXQoY3J0Yy0+c3RhdGUpICYmIElOVEVMX0lORk8oZGV2KS0+Z2Vu ID49IDkpCj4+IC0JCXNrbF9kZXRhY2hfc2NhbGVycyhpbnRlbF9jcnRjKTsKPj4gKyAgICAgICAg ICAgICAgICBza2xfZGV0YWNoX3NjYWxlcnMoaW50ZWxfY3J0Yyk7Cj4gVW5pbnRlbnRpb25hbCBj aGFuZ2UgZnJvbSB0YWJzIHRvIHNwYWNlcyBvbiB0aGlzIGxpbmU/Ck9vcHMuCgo+PiAgfQo+PiAg Cj4+ICBzdGF0aWMgdm9pZCBpbnRlbF9maW5pc2hfY3J0Y19jb21taXQoc3RydWN0IGRybV9jcnRj ICpjcnRjKQo+PiBAQCAtMTUwNDAsMTQgKzE1MDczLDYzIEBAIHZvaWQgaTkxNV9yZWRpc2FibGVf dmdhKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICAJaTkxNV9yZWRpc2FibGVfdmdhX3Bvd2Vy X29uKGRldik7Cj4+ICB9Cj4+ICAKPj4gLXN0YXRpYyBib29sIHByaW1hcnlfZ2V0X2h3X3N0YXRl KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+PiArc3RhdGljIGJvb2wgaW50ZWxfcmVhZF9od19w bGFuZV9zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPj4gKwkJCQkgICAgICBzdHJ1Y3Qg aW50ZWxfcGxhbmUgKmludGVsX3BsYW5lKQo+PiAgewo+PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGNydGMtPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKPj4gKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4gIAo+PiAtCWlmICghY3J0Yy0+ YmFzZS5lbmFibGVkKQo+PiAtCQlyZXR1cm4gZmFsc2U7Cj4+ICsJc3dpdGNoIChpbnRlbF9wbGFu ZS0+YmFzZS50eXBlKSB7Cj4+ICsJY2FzZSBEUk1fUExBTkVfVFlQRV9QUklNQVJZOgo+PiArCQly ZXR1cm4gSTkxNV9SRUFEKERTUENOVFIoY3J0Yy0+cGxhbmUpKSAmIERJU1BMQVlfUExBTkVfRU5B QkxFOwo+PiArCj4+ICsJY2FzZSBEUk1fUExBTkVfVFlQRV9DVVJTT1I6Cj4+ICsJCWlmIChJU184 NDVHKGRldikgfHwgSVNfSTg2NUcoZGV2KSkKPj4gKwkJCXJldHVybiBJOTE1X1JFQUQoX0NVUkFD TlRSKSAmIENVUlNPUl9FTkFCTEU7Cj4+ICsJCWVsc2UKPj4gKwkJCXJldHVybiBJOTE1X1JFQUQo Q1VSQ05UUihjcnRjLT5wbGFuZSkpICYgQ1VSU09SX01PREU7Cj4+ICsKPiBJZiB3ZSdyZSBub3Qg dHJ5aW5nIHRvIHNlYW1sZXNzbHkgaW5oZXJpdCB0aGUgY3Vyc29yIGltYWdlLCBJJ20gbm90IHN1 cmUKPiBJIHVuZGVyc3RhbmQgd2hhdCB0aGUgYmVuZWZpdCBvZiBmaWd1cmluZyBvdXQgd2hldGhl ciB0aGUgY3Vyc29yIGlzCj4gYWN0dWFsbHkgb24gb3Igbm90IGlzLiAgSnVzdCBhc3N1bWluZyB0 cnVlLCBhcyB3ZSBkbyBmb3Igc3ByaXRlcywgd291bGQKPiBiZSBlbm91Z2ggdG8gbWFrZSB0aGUg Y3Vyc29yIGFsd2F5cyB0dXJuIG9mZiwgcmlnaHQ/ClllYWgsIHdoZW4gcmV3b3JraW5nIHRoaXMg cGF0Y2ggdG8gYXBwbHkgYWZ0ZXIgbW9kZXNldCByZXZlcnQgSSBmaXhlZCB0aGF0LCBidXQga2Vw dCBjdXJzb3IgcmVhZG91dCBzaW5jZSBJIHdyb3RlIGl0IGFueXdheS4KCkFsc28gZ290IG1lIHJp ZCBvZiB0cmFja2luZyBmb3JjZSBkaXNhYmxlZCBwbGFuZXMuIDotKQo+PiArCWRlZmF1bHQ6Cj4+ ICsJCXJldHVybiB0cnVlOwo+PiArCX0KPj4gK30KPj4gKwo+PiArc3RhdGljIGludCByZWFkb3V0 X3BsYW5lX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPj4gKwkJCSAgICAg ICBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPj4gKwkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPj4gK3sKPj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnA7Cj4+ ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqZHJtX3BsYW5lX3N0YXRlOwo+PiArCWJvb2wgYWN0 aXZlID0gY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmU7Cj4+ICsKPj4gKwlpZiAoYWN0aXZlKSB7Cj4+ ICsJCWNydGNfc3RhdGUtPnF1aXJrcyB8PSBQSVBFX0NPTkZJR19RVUlSS19JTklUSUFMX1BMQU5F UzsKPj4gIAo+PiAtCXJldHVybiBJOTE1X1JFQUQoRFNQQ05UUihjcnRjLT5wbGFuZSkpICYgRElT UExBWV9QTEFORV9FTkFCTEU7Cj4+ICsJCS8qIGFwcGx5IHRvIHByZXZpb3VzIHN3IHN0YXRlIHRv byAqLwo+PiArCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpLT5xdWlya3Mg fD0KPj4gKwkJCVBJUEVfQ09ORklHX1FVSVJLX0lOSVRJQUxfUExBTkVTOwo+PiArCX0KPj4gKwo+ PiArCWZvcl9lYWNoX2ludGVsX3BsYW5lKHN0YXRlLT5kZXYsIHApIHsKPj4gKwkJaWYgKGNydGMt PnBsYW5lICE9IHAtPnBsYW5lKQo+PiArCQkJY29udGludWU7Cj4gV2FzIHRoaXMgc3VwcG9zZWQg dG8gYmUgY29tcGFyaW5nIC0+cGlwZSByYXRoZXIgdGhhbiAtPnBsYW5lPyAgRm9yCj4gcHJpbWFy eSBhbmQgY3Vyc29yIHBsYW5lcyBJIGJlbGlldmUgdGhpcyB3b3JrcyBvdXQgb2theSBzaW5jZSAt PnBsYW5lCj4gYW5kIC0+cGlwZSBhcmUgYmFzaWNhbGx5IHRoZSBzYW1lIChleGNlcHQgZm9yIHBy ZS1nZW40IEZCQyBzd2FwcGluZyksCj4gYnV0IGZvciBzcHJpdGUgcGxhbmVzLCB0aGUgLT5wbGFu ZSBwb2ludGVyIGluZGljYXRlcyB3aGV0aGVyIGl0J3MgdGhlCj4gZmlyc3QsIHNlY29uZCwgdGhp cmQsIGV0Yy4gc3ByaXRlIG9mIHRoYXQgc3BlY2lmaWMgQ1JUQy4KPgo+IEFzIHdyaXR0ZW4sIEkg dGhpbmsgeW91J2xsIG9ubHkgYmUgb3BlcmF0aW5nIG9uIHRoZSBmaXJzdCBzcHJpdGUgcGxhbmUK PiBvZiBDUlRDIDAsIHRoZSBzZWNvbmQgc3ByaXRlIHBsYW5lIG9mIENSVEMgMSwgZXRjLgpBaCB0 aGFua3MsIHRoYXQgd291bGQgZXhwbGFpbiBpdC4gOikKCn5NYWFydGVuCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==