From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH v2 18/27] drm/i915: Handle disabling planes better. Date: Wed, 10 Jun 2015 18:37:32 -0700 Message-ID: <20150611013732.GI15024@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 489486E1A8 for ; Wed, 10 Jun 2015 18:37:33 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1433422077-14907-19-git-send-email-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBKdW4gMDQsIDIwMTUgYXQgMDI6NDc6NDhQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gUmVhZCBvdXQgdGhlIGluaXRpYWwgc3RhdGUsIGFuZCBhZGQgYSBxdWlyayB0 byBmb3JjZSBkaXNhYmxlIGFsbCBwbGFuZQo+IHRoYXQgd2VyZSBpbml0aWFsbHkgYWN0aXZlLiBV c2UgdGhpcyB0byBkaXNhYmxlIHBsYW5lcyBkdXJpbmcgbW9kZXNldAo+IHRvby4KPiAKPiBTaWdu ZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50 ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYyAgfCAg IDcgKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgMTM5ICsrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oICAgICB8ICAgNyArKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDExNCBpbnNlcnRpb25z KCspLCAzOSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYwo+ IGluZGV4IDg0NDdhMWZlZjMzMi4uNTYyN2RmMjgwN2IwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfYXRvbWljLmMKPiBAQCAtOTYsNiArOTYsMTMgQEAgaW50IGludGVsX2F0b21pY19jaGVj ayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAJfQo+ICAK PiArCWlmIChjcnRjX3N0YXRlICYmCj4gKwkgICAgY3J0Y19zdGF0ZS0+cXVpcmtzICYgUElQRV9D T05GSUdfUVVJUktfSU5IRVJJVEVEX01PREUpIHsKPiArCQlyZXQgPSBkcm1fYXRvbWljX2FkZF9h ZmZlY3RlZF9wbGFuZXMoc3RhdGUsICZudWNsZWFyX2NydGMtPmJhc2UpOwo+ICsJCWlmIChyZXQp Cj4gKwkJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICAJcmV0ID0gZHJtX2F0b21pY19oZWxwZXJf Y2hlY2tfcGxhbmVzKGRldiwgc3RhdGUpOwo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCBiNzI3MjQxMjFmNTcuLjNi NWQyMzY5MjkzNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAt NDgzMCwxMSArNDgzMCwyMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2VuYWJsZV9wbGFuZXMo c3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJaW50ZWxfZnJvbnRidWZmZXJfZmxpcChkZXYsIElO VEVMX0ZST05UQlVGRkVSX0FMTF9NQVNLKHBpcGUpKTsKPiAgfQo+ICAKPiArc3RhdGljIHZvaWQg aW50ZWxfZGlzYWJsZV9wbGFuZXNfb25fY3J0YyhzdHJ1Y3QgZHJtX2NydGMgKmMpCj4gK3sKPiAr CXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjKTsKPiArCXN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lOwo+ICsKPiArCWRybV9mb3JfZWFjaF9wbGFuZV9tYXNrKHBsYW5lLCBj cnRjLT5iYXNlLmRldiwKPiArCQkJCWNydGMtPmF0b21pYy5mb3JjZV9kaXNhYmxlZF9wbGFuZXMp Cj4gKwkJdG9faW50ZWxfcGxhbmUocGxhbmUpLT5kaXNhYmxlX3BsYW5lKHBsYW5lLCBjKTsKPiAr fQo+ICsKPiAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19kaXNhYmxlX3BsYW5lcyhzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7 Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7 Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lOwo+ICAJaW50IHBpcGUgPSBpbnRl bF9jcnRjLT5waXBlOwo+ICAKPiAgCWludGVsX2NydGNfd2FpdF9mb3JfcGVuZGluZ19mbGlwcyhj cnRjKTsKPiBAQCAtNDg0MiwxNCArNDg1MSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNfZGlz YWJsZV9wbGFuZXMoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJaW50ZWxfcHJlX2Rpc2FibGVf cHJpbWFyeShjcnRjKTsKPiAgCj4gIAlpbnRlbF9jcnRjX2RwbXNfb3ZlcmxheV9kaXNhYmxlKGlu dGVsX2NydGMpOwo+IC0JZm9yX2VhY2hfaW50ZWxfcGxhbmUoZGV2LCBpbnRlbF9wbGFuZSkgewo+ IC0JCWlmIChpbnRlbF9wbGFuZS0+cGlwZSA9PSBwaXBlKSB7Cj4gLQkJCXN0cnVjdCBkcm1fY3J0 YyAqZnJvbSA9IGludGVsX3BsYW5lLT5iYXNlLmNydGM7Cj4gLQo+IC0JCQlpbnRlbF9wbGFuZS0+ ZGlzYWJsZV9wbGFuZSgmaW50ZWxfcGxhbmUtPmJhc2UsCj4gLQkJCQkJCSAgIGZyb20gPzogY3J0 Yyk7Cj4gLQkJfQo+IC0JfQo+ICsJaW50ZWxfZGlzYWJsZV9wbGFuZXNfb25fY3J0YyhjcnRjKTsK PiAgCj4gIAkvKgo+ICAJICogRklYTUU6IE9uY2Ugd2UgZ3JvdyBwcm9wZXIgbnVjbGVhciBmbGlw IHN1cHBvcnQgb3V0IG9mIHRoaXMgd2UgbmVlZAo+IEBAIC0xMTU1NCw2ICsxMTU1NiwyMSBAQCBp bnQgaW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hhbmdlcyhzdHJ1Y3QgZHJtX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCj4gIAlpZiAoIWludGVsX2NydGMtPmFjdGl2ZSB8fCBtb2RlX2NoYW5nZWQp Cj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICsJaWYgKHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19zdGF0 ZSktPnF1aXJrcyAmCj4gKwkgICAgUElQRV9DT05GSUdfUVVJUktfSU5JVElBTF9QTEFORVMpIHsK PiArCQlpZiAoIXBsYW5lX3N0YXRlLT5jcnRjKSB7Cj4gKwkJCWludGVsX2NydGMtPmF0b21pYy5m b3JjZV9kaXNhYmxlZF9wbGFuZXMgfD0KPiArCQkJCTEgPDwgZHJtX3BsYW5lX2luZGV4KHBsYW5l KTsKPiArCQkJY3J0Y19zdGF0ZS0+cGxhbmVfbWFzayAmPQo+ICsJCQkJfigxIDw8IGRybV9wbGFu ZV9pbmRleChwbGFuZSkpOwo+ICsJCX0KPiArCj4gKwkJLyogSW5pdGlhbCBzdGF0ZSBmb3Igc3By aXRlIHBsYW5lcyBpcyB1bmtub3duLAo+ICsJCSAqIG5vIG5lZWQgdG8gdXBkYXRlIHNwcml0ZSB3 YXRlcm1hcmtzICovCj4gKwkJaWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX09WRVJM QVkpCj4gKwkJCW1vZGVfY2hhbmdlZCA9IHRydWU7Cj4gKwl9Cj4gKwo+ICAJd2FzX3Zpc2libGUg PSBvbGRfcGxhbmVfc3RhdGUtPnZpc2libGU7Cj4gIAl2aXNpYmxlID0gdG9faW50ZWxfcGxhbmVf c3RhdGUocGxhbmVfc3RhdGUpLT52aXNpYmxlOwo+ICAKPiBAQCAtMTE2MzMsNyArMTE2NTAsNyBA QCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hhbmdlcyhzdHJ1Y3QgZHJtX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCj4gIAkJCWludGVsX2NydGMtPmF0b21pYy5mYl9iaXRzIHw9Cj4gIAkJ CSAgICBJTlRFTF9GUk9OVEJVRkZFUl9TUFJJVEUoaW50ZWxfY3J0Yy0+cGlwZSk7Cj4gIAo+IC0J CWlmICh0dXJuX29mZiAmJiBpc19jcnRjX2VuYWJsZWQpIHsKPiArCQlpZiAodHVybl9vZmYgJiYg IW1vZGVfY2hhbmdlZCkgewo+ICAJCQlpbnRlbF9jcnRjLT5hdG9taWMud2FpdF92YmxhbmsgPSB0 cnVlOwo+ICAJCQlpbnRlbF9jcnRjLT5hdG9taWMudXBkYXRlX3Nwcml0ZV93YXRlcm1hcmtzIHw9 Cj4gIAkJCQkxIDw8IGk7Cj4gQEAgLTExNzE0LDYgKzExNzMxLDExIEBAIHN0YXRpYyBpbnQgaW50 ZWxfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCSJbQ1JUQzol aV0gbWlzbWF0Y2ggYmV0d2VlbiBzdGF0ZS0+YWN0aXZlKCVpKSBhbmQgY3J0Yy0+YWN0aXZlKCVp KVxuIiwKPiAgCQlpZHgsIGNydGMtPnN0YXRlLT5hY3RpdmUsIGludGVsX2NydGMtPmFjdGl2ZSk7 Cj4gIAo+ICsJLyogcGxhbmUgbWFzayBpcyBmaXhlZCB1cCBhZnRlciBhbGwgaW5pdGlhbCBwbGFu ZXMgYXJlIGNhbGN1bGF0ZWQgKi8KPiArCXBpcGVfY29uZmlnLT5xdWlya3MgJj0gflBJUEVfQ09O RklHX1FVSVJLX0lOSVRJQUxfUExBTkVTOwo+ICsJaWYgKG1vZGVfY2hhbmdlZCkKPiArCQlpbnRl bF9jcnRjLT5hdG9taWMuZm9yY2VfZGlzYWJsZWRfcGxhbmVzID0gY3J0Yy0+c3RhdGUtPnBsYW5l X21hc2s7Cj4gKwo+ICAJaWYgKG1vZGVfY2hhbmdlZCAmJiBjcnRjX3N0YXRlLT5lbmFibGUgJiYK PiAgCSAgICBkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2NvbXB1dGVfY2xvY2sgJiYKPiAgCSAgICAh V0FSTl9PTihwaXBlX2NvbmZpZy0+c2hhcmVkX2RwbGwgIT0gRFBMTF9JRF9QUklWQVRFKSkgewo+ IEBAIC0xMjg4Myw2ICsxMjkwNSwxMyBAQCBpbnRlbF9tb2Rlc2V0X2NvbXB1dGVfY29uZmlnKHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAgCWZv cl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKPiArCQlp ZiAodG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjX3N0YXRlKS0+cXVpcmtzICYKPiArCQkgICAgUElQ RV9DT05GSUdfUVVJUktfSU5JVElBTF9QTEFORVMpIHsKPiArCQkJcmV0ID0gZHJtX2F0b21pY19h ZGRfYWZmZWN0ZWRfcGxhbmVzKHN0YXRlLCBjcnRjKTsKPiArCQkJaWYgKHJldCkKPiArCQkJCXJl dHVybiByZXQ7Cj4gKwkJfQo+ICsKPiAgCQlpZiAoIW5lZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSkp Cj4gIAkJCWNvbnRpbnVlOwo+ICAKPiBAQCAtMTM1MjksMTMgKzEzNTU4LDE3IEBAIHN0YXRpYyB2 b2lkIGludGVsX2JlZ2luX2NydGNfY29tbWl0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCWlu dGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiAgCj4gIAkvKiBQZXJmb3JtIHZibGFuayBl dmFzaW9uIGFyb3VuZCBjb21taXQgb3BlcmF0aW9uICovCj4gLQlpZiAoY3J0Yy0+c3RhdGUtPmFj dGl2ZSAmJiAhbmVlZHNfbW9kZXNldChjcnRjLT5zdGF0ZSkpCj4gKwlpZiAoY3J0Yy0+c3RhdGUt PmFjdGl2ZSAmJiAhbmVlZHNfbW9kZXNldChjcnRjLT5zdGF0ZSkpIHsKPiAgCQlpbnRlbF9jcnRj LT5hdG9taWMuZXZhZGUgPQo+ICAJCQlpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChpbnRlbF9jcnRj LAo+ICAJCQkJCQkmaW50ZWxfY3J0Yy0+YXRvbWljLnN0YXJ0X3ZibF9jb3VudCk7Cj4gIAo+ICsJ CWlmIChpbnRlbF9jcnRjLT5hdG9taWMuZm9yY2VfZGlzYWJsZWRfcGxhbmVzKQo+ICsJCQlpbnRl bF9kaXNhYmxlX3BsYW5lc19vbl9jcnRjKGNydGMpOwo+ICsJfQo+ICsKPiAgCWlmICghbmVlZHNf bW9kZXNldChjcnRjLT5zdGF0ZSkgJiYgSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkKPiAtCQlz a2xfZGV0YWNoX3NjYWxlcnMoaW50ZWxfY3J0Yyk7Cj4gKyAgICAgICAgICAgICAgICBza2xfZGV0 YWNoX3NjYWxlcnMoaW50ZWxfY3J0Yyk7CgpVbmludGVudGlvbmFsIGNoYW5nZSBmcm9tIHRhYnMg dG8gc3BhY2VzIG9uIHRoaXMgbGluZT8KCj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGludGVsX2Zp bmlzaF9jcnRjX2NvbW1pdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gQEAgLTE1MDQwLDE0ICsx NTA3Myw2MyBAQCB2b2lkIGk5MTVfcmVkaXNhYmxlX3ZnYShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICAJaTkxNV9yZWRpc2FibGVfdmdhX3Bvd2VyX29uKGRldik7Cj4gIH0KPiAgCj4gLXN0YXRp YyBib29sIHByaW1hcnlfZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICtz dGF0aWMgYm9vbCBpbnRlbF9yZWFkX2h3X3BsYW5lX3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjLAo+ICsJCQkJICAgICAgc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSkKPiAgewo+ IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gY3J0Yy0+YmFzZS5kZXYtPmRl dl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK PiAgCj4gLQlpZiAoIWNydGMtPmJhc2UuZW5hYmxlZCkKPiAtCQlyZXR1cm4gZmFsc2U7Cj4gKwlz d2l0Y2ggKGludGVsX3BsYW5lLT5iYXNlLnR5cGUpIHsKPiArCWNhc2UgRFJNX1BMQU5FX1RZUEVf UFJJTUFSWToKPiArCQlyZXR1cm4gSTkxNV9SRUFEKERTUENOVFIoY3J0Yy0+cGxhbmUpKSAmIERJ U1BMQVlfUExBTkVfRU5BQkxFOwo+ICsKPiArCWNhc2UgRFJNX1BMQU5FX1RZUEVfQ1VSU09SOgo+ ICsJCWlmIChJU184NDVHKGRldikgfHwgSVNfSTg2NUcoZGV2KSkKPiArCQkJcmV0dXJuIEk5MTVf UkVBRChfQ1VSQUNOVFIpICYgQ1VSU09SX0VOQUJMRTsKPiArCQllbHNlCj4gKwkJCXJldHVybiBJ OTE1X1JFQUQoQ1VSQ05UUihjcnRjLT5wbGFuZSkpICYgQ1VSU09SX01PREU7Cj4gKwoKSWYgd2Un cmUgbm90IHRyeWluZyB0byBzZWFtbGVzc2x5IGluaGVyaXQgdGhlIGN1cnNvciBpbWFnZSwgSSdt IG5vdCBzdXJlCkkgdW5kZXJzdGFuZCB3aGF0IHRoZSBiZW5lZml0IG9mIGZpZ3VyaW5nIG91dCB3 aGV0aGVyIHRoZSBjdXJzb3IgaXMKYWN0dWFsbHkgb24gb3Igbm90IGlzLiAgSnVzdCBhc3N1bWlu ZyB0cnVlLCBhcyB3ZSBkbyBmb3Igc3ByaXRlcywgd291bGQKYmUgZW5vdWdoIHRvIG1ha2UgdGhl IGN1cnNvciBhbHdheXMgdHVybiBvZmYsIHJpZ2h0PwoKPiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJu IHRydWU7Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgcmVhZG91dF9wbGFuZV9zdGF0ZShz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gKwkJCSAgICAgICBzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YywKPiArCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnA7Cj4gKwlzdHJ1Y3QgZHJtX3BsYW5l X3N0YXRlICpkcm1fcGxhbmVfc3RhdGU7Cj4gKwlib29sIGFjdGl2ZSA9IGNydGNfc3RhdGUtPmJh c2UuYWN0aXZlOwo+ICsKPiArCWlmIChhY3RpdmUpIHsKPiArCQljcnRjX3N0YXRlLT5xdWlya3Mg fD0gUElQRV9DT05GSUdfUVVJUktfSU5JVElBTF9QTEFORVM7Cj4gIAo+IC0JcmV0dXJuIEk5MTVf UkVBRChEU1BDTlRSKGNydGMtPnBsYW5lKSkgJiBESVNQTEFZX1BMQU5FX0VOQUJMRTsKPiArCQkv KiBhcHBseSB0byBwcmV2aW91cyBzdyBzdGF0ZSB0b28gKi8KPiArCQl0b19pbnRlbF9jcnRjX3N0 YXRlKGNydGMtPmJhc2Uuc3RhdGUpLT5xdWlya3MgfD0KPiArCQkJUElQRV9DT05GSUdfUVVJUktf SU5JVElBTF9QTEFORVM7Cj4gKwl9Cj4gKwo+ICsJZm9yX2VhY2hfaW50ZWxfcGxhbmUoc3RhdGUt PmRldiwgcCkgewo+ICsJCWlmIChjcnRjLT5wbGFuZSAhPSBwLT5wbGFuZSkKPiArCQkJY29udGlu dWU7CgpXYXMgdGhpcyBzdXBwb3NlZCB0byBiZSBjb21wYXJpbmcgLT5waXBlIHJhdGhlciB0aGFu IC0+cGxhbmU/ICBGb3IKcHJpbWFyeSBhbmQgY3Vyc29yIHBsYW5lcyBJIGJlbGlldmUgdGhpcyB3 b3JrcyBvdXQgb2theSBzaW5jZSAtPnBsYW5lCmFuZCAtPnBpcGUgYXJlIGJhc2ljYWxseSB0aGUg c2FtZSAoZXhjZXB0IGZvciBwcmUtZ2VuNCBGQkMgc3dhcHBpbmcpLApidXQgZm9yIHNwcml0ZSBw bGFuZXMsIHRoZSAtPnBsYW5lIHBvaW50ZXIgaW5kaWNhdGVzIHdoZXRoZXIgaXQncyB0aGUKZmly c3QsIHNlY29uZCwgdGhpcmQsIGV0Yy4gc3ByaXRlIG9mIHRoYXQgc3BlY2lmaWMgQ1JUQy4KCkFz IHdyaXR0ZW4sIEkgdGhpbmsgeW91J2xsIG9ubHkgYmUgb3BlcmF0aW5nIG9uIHRoZSBmaXJzdCBz cHJpdGUgcGxhbmUKb2YgQ1JUQyAwLCB0aGUgc2Vjb25kIHNwcml0ZSBwbGFuZSBvZiBDUlRDIDEs IGV0Yy4KCgpNYXR0Cgo+ICsKPiArCQlkcm1fcGxhbmVfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9w bGFuZV9zdGF0ZShzdGF0ZSwgJnAtPmJhc2UpOwo+ICsJCWlmIChJU19FUlIoZHJtX3BsYW5lX3N0 YXRlKSkKPiArCQkJcmV0dXJuIFBUUl9FUlIoZHJtX3BsYW5lX3N0YXRlKTsKPiArCj4gKwkJaWYg KGFjdGl2ZSAmJiBpbnRlbF9yZWFkX2h3X3BsYW5lX3N0YXRlKGNydGMsIHApKSB7Cj4gKwkJCXRv X2ludGVsX3BsYW5lX3N0YXRlKGRybV9wbGFuZV9zdGF0ZSktPnZpc2libGUgPSB0cnVlOwo+ICsJ CQljcnRjX3N0YXRlLT5iYXNlLnBsYW5lX21hc2sgfD0gMSA8PCBkcm1fcGxhbmVfaW5kZXgoJnAt PmJhc2UpOwo+ICsJCQlwLT5iYXNlLmNydGMgPSAmY3J0Yy0+YmFzZTsKPiArCQl9IGVsc2Ugewo+ ICsJCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShkcm1fcGxhbmVfc3RhdGUpLT52aXNpYmxlID0gZmFs c2U7Cj4gKwkJCWNydGNfc3RhdGUtPmJhc2UucGxhbmVfbWFzayAmPSB+KDEgPDwgZHJtX3BsYW5l X2luZGV4KCZwLT5iYXNlKSk7Cj4gKwkJCXAtPmJhc2UuY3J0YyA9IGRybV9wbGFuZV9zdGF0ZS0+ Y3J0YzsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gIHN0YXRpYyBp bnQgcmVhZG91dF9od19jcnRjX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwK PiBAQCAtMTUwNTUsMTkgKzE1MTM3LDExIEBAIHN0YXRpYyBpbnQgcmVhZG91dF9od19jcnRjX3N0 YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgewo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+ZGV2KTsKPiAgCXN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+IC0Jc3RydWN0IGRybV9wbGFuZSAqcHJpbWFy eSA9IGNydGMtPmJhc2UucHJpbWFyeTsKPiAtCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKmRybV9w bGFuZV9zdGF0ZTsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7Cj4g LQlpbnQgcmV0Owo+ICAKPiAgCWNydGNfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3Rh dGUoc3RhdGUsIGNydGMpOwo+ICAJaWYgKElTX0VSUihjcnRjX3N0YXRlKSkKPiAgCQlyZXR1cm4g UFRSX0VSUihjcnRjX3N0YXRlKTsKPiAgCj4gLQlyZXQgPSBkcm1fYXRvbWljX2FkZF9hZmZlY3Rl ZF9wbGFuZXMoc3RhdGUsICZjcnRjLT5iYXNlKTsKPiAtCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJl dDsKPiAtCj4gIAltZW1zZXQoY3J0Y19zdGF0ZSwgMCwgc2l6ZW9mKCpjcnRjX3N0YXRlKSk7Cj4g IAljcnRjX3N0YXRlLT5iYXNlLmNydGMgPSAmY3J0Yy0+YmFzZTsKPiAgCWNydGNfc3RhdGUtPmJh c2Uuc3RhdGUgPSBzdGF0ZTsKPiBAQCAtMTUwODEsMjQgKzE1MTU1LDExIEBAIHN0YXRpYyBpbnQg cmVhZG91dF9od19jcnRjX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAg CWNydGMtPmFjdGl2ZSA9IGNydGNfc3RhdGUtPmJhc2UuYWN0aXZlOwo+ICAJY3J0Yy0+Y29uZmln ID0gY3J0Y19zdGF0ZTsKPiAgCj4gLQlkcm1fcGxhbmVfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9w bGFuZV9zdGF0ZShzdGF0ZSwgcHJpbWFyeSk7Cj4gLQlpZiAoSVNfRVJSKGRybV9wbGFuZV9zdGF0 ZSkpCj4gLQkJcmV0dXJuIFBUUl9FUlIoZHJtX3BsYW5lX3N0YXRlKTsKPiAtCj4gLQlwbGFuZV9z dGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKGRybV9wbGFuZV9zdGF0ZSk7Cj4gLQlwbGFuZV9z dGF0ZS0+dmlzaWJsZSA9IHByaW1hcnlfZ2V0X2h3X3N0YXRlKGNydGMpOwo+IC0KPiAtCWlmIChw bGFuZV9zdGF0ZS0+dmlzaWJsZSkgewo+IC0JCXByaW1hcnktPmNydGMgPSAmY3J0Yy0+YmFzZTsK PiAtCQljcnRjX3N0YXRlLT5iYXNlLnBsYW5lX21hc2sgfD0gMSA8PCBkcm1fcGxhbmVfaW5kZXgo cHJpbWFyeSk7Cj4gLQl9IGVsc2UKPiAtCQljcnRjX3N0YXRlLT5iYXNlLnBsYW5lX21hc2sgJj0g figxIDw8IGRybV9wbGFuZV9pbmRleChwcmltYXJ5KSk7Cj4gLQo+ICAJRFJNX0RFQlVHX0tNUygi W0NSVEM6JWRdIGh3IHN0YXRlIHJlYWRvdXQ6ICVzXG4iLAo+ICAJCSAgICAgIGNydGMtPmJhc2Uu YmFzZS5pZCwKPiAgCQkgICAgICBjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSA/ICJlbmFibGVkIiA6 ICJkaXNhYmxlZCIpOwo+ICAKPiAtCXJldHVybiAwOwo+ICsJcmV0dXJuIHJlYWRvdXRfcGxhbmVf c3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IHJl YWRvdXRfaHdfcGxsX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IGQ5NmM5YTI0Yjk0Yi4uN2IxYTEzZjYzODcyIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMzI3LDYgKzMyNyw3IEBAIHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlIHsKPiAgCSAqLwo+ICAjZGVmaW5lIFBJUEVfQ09ORklHX1FVSVJL X01PREVfU1lOQ19GTEFHUwkoMTw8MCkgLyogdW5yZWxpYWJsZSBzeW5jIG1vZGUuZmxhZ3MgKi8K PiAgI2RlZmluZSBQSVBFX0NPTkZJR19RVUlSS19JTkhFUklURURfTU9ERQkoMTw8MSkgLyogbW9k ZSBpbmhlcml0ZWQgZnJvbSBmaXJtd2FyZSAqLwo+ICsjZGVmaW5lIFBJUEVfQ09ORklHX1FVSVJL X0lOSVRJQUxfUExBTkVTCSgxPDwyKSAvKiBwbGFuZXMgYXJlIGluIHVua25vd24gc3RhdGUgKi8K PiAgCXVuc2lnbmVkIGxvbmcgcXVpcmtzOwo+ICAKPiAgCS8qIFBpcGUgc291cmNlIHNpemUgKGll LiBwYW5lbCBmaXR0ZXIgaW5wdXQgc2l6ZSkKPiBAQCAtNDg1LDggKzQ4NiwxNCBAQCBzdHJ1Y3Qg aW50ZWxfY3J0Y19hdG9taWNfY29tbWl0IHsKPiAgCWJvb2wgZGlzYWJsZV9mYmM7Cj4gIAlib29s IHByZV9kaXNhYmxlX3ByaW1hcnk7Cj4gIAlib29sIHVwZGF0ZV93bTsKPiArCj4gKwkvKiBwbGFu ZXMgdGhhdCB3aWxsIGJlIGRpc2FibGVkIGluIGEgbm9ybWFsIHdheSAqLwo+ICAJdW5zaWduZWQg ZGlzYWJsZWRfcGxhbmVzOwo+ICAKPiArCS8qIHBsYW5lcyB0aGF0IHdpbGwgYmUgZGlzYWJsZWQg ZHVyaW5nIG1vZGVzZXQsCj4gKwkgKiBvciBpbml0aWFsbHkgZW5hYmxlZCBwbGFuZXMgKi8KPiAr CXVuc2lnbmVkIGZvcmNlX2Rpc2FibGVkX3BsYW5lczsKPiArCj4gIAkvKiBTbGVlcGFibGUgb3Bl cmF0aW9ucyB0byBwZXJmb3JtIGFmdGVyIGNvbW1pdCAqLwo+ICAJdW5zaWduZWQgZmJfYml0czsK PiAgCWJvb2wgd2FpdF92Ymxhbms7Cj4gLS0gCj4gMi4xLjAKPiAKPiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QK PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gCk1hdHQgUm9wZXIKR3JhcGhp Y3MgU29mdHdhcmUgRW5naW5lZXIKSW9URyBQbGF0Zm9ybSBFbmFibGluZyAmIERldmVsb3BtZW50 CkludGVsIENvcnBvcmF0aW9uCig5MTYpIDM1Ni0yNzk1Cl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==