From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 6/7] drm/i915: Use plane state for primary plane updates. Date: Thu, 7 Jan 2016 14:38:47 +0200 Message-ID: <20160107123847.GY4437@intel.com> References: <1452164052-21752-1-git-send-email-maarten.lankhorst@linux.intel.com> <1452164052-21752-7-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id B89818A3C0 for ; Thu, 7 Jan 2016 04:38:50 -0800 (PST) Content-Disposition: inline In-Reply-To: <1452164052-21752-7-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 T24gVGh1LCBKYW4gMDcsIDIwMTYgYXQgMTE6NTQ6MTFBTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gUGFzcyBpbiB0aGUgYXRvbWljIHN0YXRlcyB0byBhbGxvdyBmb3IgcHJvcGVy IHVwZGF0ZXMuCj4gVGhpcyByZW1vdmVzIHVzZXMgb2YgaW50ZWxfY3J0Yy0+Y29uZmlnIGFuZCBk aXJlY3QgYWNjZXNzCj4gdG8gcGxhbmUtPnN0YXRlLgo+IAo+IFRoaXMgYnJlYWtzIHRoZSBsYXN0 IGJpdCBvZiBrZ2Rib2MsIGJ1dCB0aGF0IGFwcGVhcnMgdG8gYmUgZGVhZCBjb2RlLgo+IAo+IFNp Z25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5p bnRlbC5jb20+CgpsZ3RtLgoKUmV2aWV3ZWQtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3ly amFsYUBsaW51eC5pbnRlbC5jb20+Cgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oICAgICAgfCAgIDMgLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMgfCAyNDggKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgMiBmaWxlcyBj aGFuZ2VkLCAxMDMgaW5zZXJ0aW9ucygrKSwgMTQ4IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAo+IGluZGV4IGJkZTljNzY0YjQxNS4uNzVkOGY4OTA4OGFhIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTY0OCw5ICs2NDgsNiBAQCBzdHJ1Y3QgZHJtX2k5 MTVfZGlzcGxheV9mdW5jcyB7Cj4gIAkJCSAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKPiAgCQkJICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgCQkJICB1aW50 MzJfdCBmbGFncyk7Cj4gLQl2b2lkICgqdXBkYXRlX3ByaW1hcnlfcGxhbmUpKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKPiAtCQkJCSAgICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gLQkJ CQkgICAgIGludCB4LCBpbnQgeSk7Cj4gIAl2b2lkICgqaHBkX2lycV9zZXR1cCkoc3RydWN0IGRy bV9kZXZpY2UgKmRldik7Cj4gIAkvKiBjbG9jayB1cGRhdGVzIGZvciBtb2RlIHNldCAqLwo+ICAJ LyogY3Vyc29yIHVwZGF0ZXMgKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4g aW5kZXggZjdjMjkzNjM4ZGY0Li5mMjc2Y2FmNjVhNjggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCj4gQEAgLTI2NzksMzYgKzI2NzksMjMgQEAgdmFsaWRfZmI6Cj4gIAlv YmotPmZyb250YnVmZmVyX2JpdHMgfD0gdG9faW50ZWxfcGxhbmUocHJpbWFyeSktPmZyb250YnVm ZmVyX2JpdDsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcHJpbWFyeV9wbGFu ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gLQkJCQkgICAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiwKPiAtCQkJCSAgICAgIGludCB4LCBpbnQgeSkKPiArc3RhdGljIHZvaWQgaTl4eF91 cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5LAo+ICsJCQkJICAg ICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJCQkgICAg ICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICsJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IHByaW1hcnktPmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9 IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gLQlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gY3J0 Yy0+cHJpbWFyeTsKPiAtCWJvb2wgdmlzaWJsZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKHByaW1h cnktPnN0YXRlKS0+dmlzaWJsZTsKPiAtCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7 Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19z dGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVf c3RhdGUtPmJhc2UuZmI7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50 ZWxfZmJfb2JqKGZiKTsKPiAgCWludCBwbGFuZSA9IGludGVsX2NydGMtPnBsYW5lOwo+ICAJdW5z aWduZWQgbG9uZyBsaW5lYXJfb2Zmc2V0Owo+ICsJaW50IHggPSBwbGFuZV9zdGF0ZS0+c3JjLngx ID4+IDE2Owo+ICsJaW50IHkgPSBwbGFuZV9zdGF0ZS0+c3JjLnkxID4+IDE2Owo+ICAJdTMyIGRz cGNudHI7Cj4gIAlpOTE1X3JlZ190IHJlZyA9IERTUENOVFIocGxhbmUpOwo+ICAJaW50IHBpeGVs X3NpemU7Cj4gIAo+IC0JaWYgKCF2aXNpYmxlIHx8ICFmYikgewo+IC0JCUk5MTVfV1JJVEUocmVn LCAwKTsKPiAtCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkKPiAtCQkJSTkxNV9XUklU RShEU1BTVVJGKHBsYW5lKSwgMCk7Cj4gLQkJZWxzZQo+IC0JCQlJOTE1X1dSSVRFKERTUEFERFIo cGxhbmUpLCAwKTsKPiAtCQlQT1NUSU5HX1JFQUQocmVnKTsKPiAtCQlyZXR1cm47Cj4gLQl9Cj4g LQo+IC0Jb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKPiAtCWlmIChXQVJOX09OKG9iaiA9PSBOVUxM KSkKPiAtCQlyZXR1cm47Cj4gLQo+ICAJcGl4ZWxfc2l6ZSA9IGRybV9mb3JtYXRfcGxhbmVfY3Bw KGZiLT5waXhlbF9mb3JtYXQsIDApOwo+ICAKPiAgCWRzcGNudHIgPSBESVNQUExBTkVfR0FNTUFf RU5BQkxFOwo+IEBAIC0yNzIzLDEzICsyNzEwLDEzIEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRl X3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCSAqIHdoaWNoIHNob3Vs ZCBhbHdheXMgYmUgdGhlIHVzZXIncyByZXF1ZXN0ZWQgc2l6ZS4KPiAgCQkgKi8KPiAgCQlJOTE1 X1dSSVRFKERTUFNJWkUocGxhbmUpLAo+IC0JCQkgICAoKGludGVsX2NydGMtPmNvbmZpZy0+cGlw ZV9zcmNfaCAtIDEpIDw8IDE2KSB8Cj4gLQkJCSAgIChpbnRlbF9jcnRjLT5jb25maWctPnBpcGVf c3JjX3cgLSAxKSk7Cj4gKwkJCSAgICgoY3J0Y19zdGF0ZS0+cGlwZV9zcmNfaCAtIDEpIDw8IDE2 KSB8Cj4gKwkJCSAgIChjcnRjX3N0YXRlLT5waXBlX3NyY193IC0gMSkpOwo+ICAJCUk5MTVfV1JJ VEUoRFNQUE9TKHBsYW5lKSwgMCk7Cj4gIAl9IGVsc2UgaWYgKElTX0NIRVJSWVZJRVcoZGV2KSAm JiBwbGFuZSA9PSBQTEFORV9CKSB7Cj4gIAkJSTkxNV9XUklURShQUklNU0laRShwbGFuZSksCj4g LQkJCSAgICgoaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY19oIC0gMSkgPDwgMTYpIHwKPiAt CQkJICAgKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfdyAtIDEpKTsKPiArCQkJICAgKChj cnRjX3N0YXRlLT5waXBlX3NyY19oIC0gMSkgPDwgMTYpIHwKPiArCQkJICAgKGNydGNfc3RhdGUt PnBpcGVfc3JjX3cgLSAxKSk7Cj4gIAkJSTkxNV9XUklURShQUklNUE9TKHBsYW5lKSwgMCk7Cj4g IAkJSTkxNV9XUklURShQUklNQ05TVEFMUEhBKHBsYW5lKSwgMCk7Cj4gIAl9Cj4gQEAgLTI3ODAs MTcgKzI3NjcsMTcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJaW50ZWxfY3J0Yy0+ZHNwYWRkcl9vZmZzZXQgPSBsaW5l YXJfb2Zmc2V0Owo+ICAJfQo+ICAKPiAtCWlmIChjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+cm90YXRp b24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkgewo+ICsJaWYgKHBsYW5lX3N0YXRlLT5iYXNlLnJv dGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkpIHsKPiAgCQlkc3BjbnRyIHw9IERJU1BQTEFO RV9ST1RBVEVfMTgwOwo+ICAKPiAtCQl4ICs9IChpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3Jj X3cgLSAxKTsKPiAtCQl5ICs9IChpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX2ggLSAxKTsK PiArCQl4ICs9IChjcnRjX3N0YXRlLT5waXBlX3NyY193IC0gMSk7Cj4gKwkJeSArPSAoY3J0Y19z dGF0ZS0+cGlwZV9zcmNfaCAtIDEpOwo+ICAKPiAgCQkvKiBGaW5kaW5nIHRoZSBsYXN0IHBpeGVs IG9mIHRoZSBsYXN0IGxpbmUgb2YgdGhlIGRpc3BsYXkKPiAgCQlkYXRhIGFuZCBhZGRpbmcgdG8g bGluZWFyX29mZnNldCovCj4gIAkJbGluZWFyX29mZnNldCArPQo+IC0JCQkoaW50ZWxfY3J0Yy0+ Y29uZmlnLT5waXBlX3NyY19oIC0gMSkgKiBmYi0+cGl0Y2hlc1swXSArCj4gLQkJCShpbnRlbF9j cnRjLT5jb25maWctPnBpcGVfc3JjX3cgLSAxKSAqIHBpeGVsX3NpemU7Cj4gKwkJCShjcnRjX3N0 YXRlLT5waXBlX3NyY19oIC0gMSkgKiBmYi0+cGl0Y2hlc1swXSArCj4gKwkJCShjcnRjX3N0YXRl LT5waXBlX3NyY193IC0gMSkgKiBwaXhlbF9zaXplOwo+ICAJfQo+ICAKPiAgCWludGVsX2NydGMt PmFkanVzdGVkX3ggPSB4Owo+IEBAIC0yODA5LDM3ICsyNzk2LDQwIEBAIHN0YXRpYyB2b2lkIGk5 eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJUE9TVElO R19SRUFEKHJlZyk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGlyb25sYWtlX3VwZGF0ZV9wcmlt YXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAtCQkJCQkgIHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiLAo+IC0JCQkJCSAgaW50IHgsIGludCB5KQo+ICtzdGF0aWMgdm9pZCBpOXh4 X2Rpc2FibGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5LAo+ICsJCQkJ ICAgICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGNydGMtPmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Yyk7Cj4gLQlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gY3J0Yy0+ cHJpbWFyeTsKPiAtCWJvb2wgdmlzaWJsZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKHByaW1hcnkt PnN0YXRlKS0+dmlzaWJsZTsKPiAtCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4g IAlpbnQgcGxhbmUgPSBpbnRlbF9jcnRjLT5wbGFuZTsKPiAtCXVuc2lnbmVkIGxvbmcgbGluZWFy X29mZnNldDsKPiAtCXUzMiBkc3BjbnRyOwo+IC0JaTkxNV9yZWdfdCByZWcgPSBEU1BDTlRSKHBs YW5lKTsKPiAtCWludCBwaXhlbF9zaXplOwo+ICAKPiAtCWlmICghdmlzaWJsZSB8fCAhZmIpIHsK PiAtCQlJOTE1X1dSSVRFKHJlZywgMCk7Cj4gKwlJOTE1X1dSSVRFKERTUENOVFIocGxhbmUpLCAw KTsKPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDQpCj4gIAkJSTkxNV9XUklU RShEU1BTVVJGKHBsYW5lKSwgMCk7Cj4gLQkJUE9TVElOR19SRUFEKHJlZyk7Cj4gLQkJcmV0dXJu Owo+IC0JfQo+IC0KPiAtCW9iaiA9IGludGVsX2ZiX29iaihmYik7Cj4gLQlpZiAoV0FSTl9PTihv YmogPT0gTlVMTCkpCj4gLQkJcmV0dXJuOwo+ICsJZWxzZQo+ICsJCUk5MTVfV1JJVEUoRFNQQURE UihwbGFuZSksIDApOwo+ICsJUE9TVElOR19SRUFEKERTUENOVFIocGxhbmUpKTsKPiArfQo+ICAK PiAtCXBpeGVsX3NpemUgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAw KTsKPiArc3RhdGljIHZvaWQgaXJvbmxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRy bV9wbGFuZSAqcHJpbWFyeSwKPiArCQkJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAo+ICsJCQkJCSAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpw bGFuZV9zdGF0ZSkKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHByaW1hcnktPmRl djsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxh bmVfc3RhdGUtPmJhc2UuZmI7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0g aW50ZWxfZmJfb2JqKGZiKTsKPiArCWludCBwbGFuZSA9IGludGVsX2NydGMtPnBsYW5lOwo+ICsJ dW5zaWduZWQgbG9uZyBsaW5lYXJfb2Zmc2V0Owo+ICsJdTMyIGRzcGNudHI7Cj4gKwlpOTE1X3Jl Z190IHJlZyA9IERTUENOVFIocGxhbmUpOwo+ICsJaW50IHBpeGVsX3NpemUgPSBkcm1fZm9ybWF0 X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiArCWludCB4ID0gcGxhbmVfc3RhdGUt PnNyYy54MSA+PiAxNjsKPiArCWludCB5ID0gcGxhbmVfc3RhdGUtPnNyYy55MSA+PiAxNjsKPiAg Cj4gIAlkc3BjbnRyID0gRElTUFBMQU5FX0dBTU1BX0VOQUJMRTsKPiAtCj4gIAlkc3BjbnRyIHw9 IERJU1BMQVlfUExBTkVfRU5BQkxFOwo+ICAKPiAgCWlmIChJU19IQVNXRUxMKGRldikgfHwgSVNf QlJPQURXRUxMKGRldikpCj4gQEAgLTI4ODEsMTggKzI4NzEsMTggQEAgc3RhdGljIHZvaWQgaXJv bmxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCQkJ CSAgICAgICBwaXhlbF9zaXplLAo+ICAJCQkJCSAgICAgICBmYi0+cGl0Y2hlc1swXSk7Cj4gIAls aW5lYXJfb2Zmc2V0IC09IGludGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0Owo+IC0JaWYgKGNydGMt PnByaW1hcnktPnN0YXRlLT5yb3RhdGlvbiA9PSBCSVQoRFJNX1JPVEFURV8xODApKSB7Cj4gKwlp ZiAocGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkgewo+ ICAJCWRzcGNudHIgfD0gRElTUFBMQU5FX1JPVEFURV8xODA7Cj4gIAo+ICAJCWlmICghSVNfSEFT V0VMTChkZXYpICYmICFJU19CUk9BRFdFTEwoZGV2KSkgewo+IC0JCQl4ICs9IChpbnRlbF9jcnRj LT5jb25maWctPnBpcGVfc3JjX3cgLSAxKTsKPiAtCQkJeSArPSAoaW50ZWxfY3J0Yy0+Y29uZmln LT5waXBlX3NyY19oIC0gMSk7Cj4gKwkJCXggKz0gKGNydGNfc3RhdGUtPnBpcGVfc3JjX3cgLSAx KTsKPiArCQkJeSArPSAoY3J0Y19zdGF0ZS0+cGlwZV9zcmNfaCAtIDEpOwo+ICAKPiAgCQkJLyog RmluZGluZyB0aGUgbGFzdCBwaXhlbCBvZiB0aGUgbGFzdCBsaW5lIG9mIHRoZSBkaXNwbGF5Cj4g IAkJCWRhdGEgYW5kIGFkZGluZyB0byBsaW5lYXJfb2Zmc2V0Ki8KPiAgCQkJbGluZWFyX29mZnNl dCArPQo+IC0JCQkJKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfaCAtIDEpICogZmItPnBp dGNoZXNbMF0gKwo+IC0JCQkJKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfdyAtIDEpICog cGl4ZWxfc2l6ZTsKPiArCQkJCShjcnRjX3N0YXRlLT5waXBlX3NyY19oIC0gMSkgKiBmYi0+cGl0 Y2hlc1swXSArCj4gKwkJCQkoY3J0Y19zdGF0ZS0+cGlwZV9zcmNfdyAtIDEpICogcGl4ZWxfc2l6 ZTsKPiAgCQl9Cj4gIAl9Cj4gIAo+IEBAIC0zMDgzLDM2ICszMDczLDMwIEBAIHUzMiBza2xfcGxh bmVfY3RsX3JvdGF0aW9uKHVuc2lnbmVkIGludCByb3RhdGlvbikKPiAgCXJldHVybiAwOwo+ICB9 Cj4gIAo+IC1zdGF0aWMgdm9pZCBza3lsYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKPiAtCQkJCQkgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gLQkJ CQkJIGludCB4LCBpbnQgeSkKPiArc3RhdGljIHZvaWQgc2t5bGFrZV91cGRhdGVfcHJpbWFyeV9w bGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiArCQkJCQkgY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJCQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBj cnRjLT5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcGxhbmUtPmRldjsKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQlz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gLQlz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9IGNydGMtPnByaW1hcnk7Cj4gLQlib29sIHZpc2libGUg PSB0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+c3RhdGUpLT52aXNpYmxlOwo+IC0Jc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPiArCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+ICAJaW50IHBpcGUgPSBp bnRlbF9jcnRjLT5waXBlOwo+ICAJdTMyIHBsYW5lX2N0bCwgc3RyaWRlX2Rpdiwgc3RyaWRlOwo+ ICAJdTMyIHRpbGVfaGVpZ2h0LCBwbGFuZV9vZmZzZXQsIHBsYW5lX3NpemU7Cj4gLQl1bnNpZ25l ZCBpbnQgcm90YXRpb247Cj4gKwl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+ YmFzZS5yb3RhdGlvbjsKPiAgCWludCB4X29mZnNldCwgeV9vZmZzZXQ7Cj4gIAl1MzIgc3VyZl9h ZGRyOwo+IC0Jc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPSBpbnRlbF9jcnRj LT5jb25maWc7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOwo+IC0J aW50IHNyY194ID0gMCwgc3JjX3kgPSAwLCBzcmNfdyA9IDAsIHNyY19oID0gMDsKPiAtCWludCBk c3RfeCA9IDAsIGRzdF95ID0gMCwgZHN0X3cgPSAwLCBkc3RfaCA9IDA7Cj4gLQlpbnQgc2NhbGVy X2lkID0gLTE7Cj4gLQo+IC0JcGxhbmVfc3RhdGUgPSB0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFu ZS0+c3RhdGUpOwo+IC0KPiAtCWlmICghdmlzaWJsZSB8fCAhZmIpIHsKPiAtCQlJOTE1X1dSSVRF KFBMQU5FX0NUTChwaXBlLCAwKSwgMCk7Cj4gLQkJSTkxNV9XUklURShQTEFORV9TVVJGKHBpcGUs IDApLCAwKTsKPiAtCQlQT1NUSU5HX1JFQUQoUExBTkVfQ1RMKHBpcGUsIDApKTsKPiAtCQlyZXR1 cm47Cj4gLQl9Cj4gKwlpbnQgc2NhbGVyX2lkID0gcGxhbmVfc3RhdGUtPnNjYWxlcl9pZDsKPiAr CWludCBzcmNfeCA9IHBsYW5lX3N0YXRlLT5zcmMueDEgPj4gMTY7Cj4gKwlpbnQgc3JjX3kgPSBw bGFuZV9zdGF0ZS0+c3JjLnkxID4+IDE2Owo+ICsJaW50IHNyY193ID0gZHJtX3JlY3Rfd2lkdGgo JnBsYW5lX3N0YXRlLT5zcmMpID4+IDE2Owo+ICsJaW50IHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0 KCZwbGFuZV9zdGF0ZS0+c3JjKSA+PiAxNjsKPiArCWludCBkc3RfeCA9IHBsYW5lX3N0YXRlLT5k c3QueDE7Cj4gKwlpbnQgZHN0X3kgPSBwbGFuZV9zdGF0ZS0+ZHN0LnkxOwo+ICsJaW50IGRzdF93 ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5kc3QpOwo+ICsJaW50IGRzdF9oID0gZHJt X3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+ZHN0KTsKPiAgCj4gIAlwbGFuZV9jdGwgPSBQTEFO RV9DVExfRU5BQkxFIHwKPiAgCQkgICAgUExBTkVfQ1RMX1BJUEVfR0FNTUFfRU5BQkxFIHwKPiBA QCAtMzEyMSw0MSArMzEwNSwyNiBAQCBzdGF0aWMgdm9pZCBza3lsYWtlX3VwZGF0ZV9wcmltYXJ5 X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCXBsYW5lX2N0bCB8PSBza2xfcGxhbmVf Y3RsX2Zvcm1hdChmYi0+cGl4ZWxfZm9ybWF0KTsKPiAgCXBsYW5lX2N0bCB8PSBza2xfcGxhbmVf Y3RsX3RpbGluZyhmYi0+bW9kaWZpZXJbMF0pOwo+ICAJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9Q TEFORV9HQU1NQV9ESVNBQkxFOwo+IC0KPiAtCXJvdGF0aW9uID0gcGxhbmUtPnN0YXRlLT5yb3Rh dGlvbjsKPiAgCXBsYW5lX2N0bCB8PSBza2xfcGxhbmVfY3RsX3JvdGF0aW9uKHJvdGF0aW9uKTsK PiAgCj4gLQlvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+ICAJc3RyaWRlX2RpdiA9IGludGVsX2Zi X3N0cmlkZV9hbGlnbm1lbnQoZGV2LCBmYi0+bW9kaWZpZXJbMF0sCj4gIAkJCQkJICAgICAgIGZi LT5waXhlbF9mb3JtYXQpOwo+ICAJc3VyZl9hZGRyID0gaW50ZWxfcGxhbmVfb2JqX29mZnNldCh0 b19pbnRlbF9wbGFuZShwbGFuZSksIG9iaiwgMCk7Cj4gIAo+ICAJV0FSTl9PTihkcm1fcmVjdF93 aWR0aCgmcGxhbmVfc3RhdGUtPnNyYykgPT0gMCk7Cj4gIAo+IC0Jc2NhbGVyX2lkID0gcGxhbmVf c3RhdGUtPnNjYWxlcl9pZDsKPiAtCXNyY194ID0gcGxhbmVfc3RhdGUtPnNyYy54MSA+PiAxNjsK PiAtCXNyY195ID0gcGxhbmVfc3RhdGUtPnNyYy55MSA+PiAxNjsKPiAtCXNyY193ID0gZHJtX3Jl Y3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5zcmMpID4+IDE2Owo+IC0Jc3JjX2ggPSBkcm1fcmVjdF9o ZWlnaHQoJnBsYW5lX3N0YXRlLT5zcmMpID4+IDE2Owo+IC0JZHN0X3ggPSBwbGFuZV9zdGF0ZS0+ ZHN0LngxOwo+IC0JZHN0X3kgPSBwbGFuZV9zdGF0ZS0+ZHN0LnkxOwo+IC0JZHN0X3cgPSBkcm1f cmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmRzdCk7Cj4gLQlkc3RfaCA9IGRybV9yZWN0X2hlaWdo dCgmcGxhbmVfc3RhdGUtPmRzdCk7Cj4gLQo+IC0JV0FSTl9PTih4ICE9IHNyY194IHx8IHkgIT0g c3JjX3kpOwo+IC0KPiAgCWlmIChpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAocm90YXRpb24pKSB7 Cj4gIAkJLyogc3RyaWRlID0gU3VyZmFjZSBoZWlnaHQgaW4gdGlsZXMgKi8KPiAgCQl0aWxlX2hl aWdodCA9IGludGVsX3RpbGVfaGVpZ2h0KGRldiwgZmItPnBpeGVsX2Zvcm1hdCwKPiAgCQkJCQkJ ZmItPm1vZGlmaWVyWzBdLCAwKTsKPiAgCQlzdHJpZGUgPSBESVZfUk9VTkRfVVAoZmItPmhlaWdo dCwgdGlsZV9oZWlnaHQpOwo+IC0JCXhfb2Zmc2V0ID0gc3RyaWRlICogdGlsZV9oZWlnaHQgLSB5 IC0gc3JjX2g7Cj4gLQkJeV9vZmZzZXQgPSB4Owo+ICsJCXhfb2Zmc2V0ID0gc3RyaWRlICogdGls ZV9oZWlnaHQgLSBzcmNfeSAtIHNyY19oOwo+ICsJCXlfb2Zmc2V0ID0gc3JjX3g7Cj4gIAkJcGxh bmVfc2l6ZSA9IChzcmNfdyAtIDEpIDw8IDE2IHwgKHNyY19oIC0gMSk7Cj4gIAl9IGVsc2Ugewo+ ICAJCXN0cmlkZSA9IGZiLT5waXRjaGVzWzBdIC8gc3RyaWRlX2RpdjsKPiAtCQl4X29mZnNldCA9 IHg7Cj4gLQkJeV9vZmZzZXQgPSB5Owo+ICsJCXhfb2Zmc2V0ID0gc3JjX3g7Cj4gKwkJeV9vZmZz ZXQgPSBzcmNfeTsKPiAgCQlwbGFuZV9zaXplID0gKHNyY19oIC0gMSkgPDwgMTYgfCAoc3JjX3cg LSAxKTsKPiAgCX0KPiAgCXBsYW5lX29mZnNldCA9IHlfb2Zmc2V0IDw8IDE2IHwgeF9vZmZzZXQ7 Cj4gQEAgLTMxODgsMjAgKzMxNTcsMzAgQEAgc3RhdGljIHZvaWQgc2t5bGFrZV91cGRhdGVfcHJp bWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAlQT1NUSU5HX1JFQUQoUExBTkVf U1VSRihwaXBlLCAwKSk7Cj4gIH0KPiAgCj4gLS8qIEFzc3VtZSBmYiBvYmplY3QgaXMgcGlubmVk ICYgaWRsZSAmIGZlbmNlZCBhbmQganVzdCB1cGRhdGUgYmFzZSBwb2ludGVycyAqLwo+IC1zdGF0 aWMgaW50Cj4gLWludGVsX3BpcGVfc2V0X2Jhc2VfYXRvbWljKHN0cnVjdCBkcm1fY3J0YyAqY3J0 Yywgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gLQkJCSAgIGludCB4LCBpbnQgeSwgZW51 bSBtb2RlX3NldF9hdG9taWMgc3RhdGUpCj4gK3N0YXRpYyB2b2lkIHNreWxha2VfZGlzYWJsZV9w cmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnksCj4gKwkJCQkJICBzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5k ZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2 YXRlOwo+ICsJaW50IHBpcGUgPSB0b19pbnRlbF9jcnRjKGNydGMpLT5waXBlOwo+ICAKPiAgCWlm IChkZXZfcHJpdi0+ZmJjLmRlYWN0aXZhdGUpCj4gIAkJZGV2X3ByaXYtPmZiYy5kZWFjdGl2YXRl KGRldl9wcml2KTsKPiAgCj4gLQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfcHJpbWFyeV9wbGFu ZShjcnRjLCBmYiwgeCwgeSk7Cj4gKwlJOTE1X1dSSVRFKFBMQU5FX0NUTChwaXBlLCAwKSwgMCk7 Cj4gKwlJOTE1X1dSSVRFKFBMQU5FX1NVUkYocGlwZSwgMCksIDApOwo+ICsJUE9TVElOR19SRUFE KFBMQU5FX1NVUkYocGlwZSwgMCkpOwo+ICt9Cj4gIAo+IC0JcmV0dXJuIDA7Cj4gKy8qIEFzc3Vt ZSBmYiBvYmplY3QgaXMgcGlubmVkICYgaWRsZSAmIGZlbmNlZCBhbmQganVzdCB1cGRhdGUgYmFz ZSBwb2ludGVycyAqLwo+ICtzdGF0aWMgaW50Cj4gK2ludGVsX3BpcGVfc2V0X2Jhc2VfYXRvbWlj KHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gKwkJ CSAgIGludCB4LCBpbnQgeSwgZW51bSBtb2RlX3NldF9hdG9taWMgc3RhdGUpCj4gK3sKPiArCS8q IFN1cHBvcnQgZm9yIGtnZGJvYyBpcyBkaXNhYmxlZCwgdGhpcyBuZWVkcyBhIG1ham9yIHJld29y ay4gKi8KPiArCURSTV9FUlJPUigibGVnYWN5IHBhbmljIGhhbmRsZXIgbm90IHN1cHBvcnRlZCBh bnkgbW9yZS5cbiIpOwo+ICsKPiArCXJldHVybiAtRU5PREVWOwo+ICB9Cj4gIAo+ICBzdGF0aWMg dm9pZCBpbnRlbF9jb21wbGV0ZV9wYWdlX2ZsaXBzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g QEAgLTMyMjgsOCArMzIwNywxMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF91cGRhdGVfcHJpbWFyeV9w bGFuZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQlkcm1fbW9kZXNldF9sb2NrX2NydGMo Y3J0YywgJnBsYW5lLT5iYXNlKTsKPiAgCQlwbGFuZV9zdGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0 YXRlKHBsYW5lLT5iYXNlLnN0YXRlKTsKPiAgCj4gLQkJaWYgKGNydGMtPnN0YXRlLT5hY3RpdmUg JiYgcGxhbmVfc3RhdGUtPmJhc2UuZmIpCj4gLQkJCXBsYW5lLT5jb21taXRfcGxhbmUoJnBsYW5l LT5iYXNlLCBwbGFuZV9zdGF0ZSk7Cj4gKwkJaWYgKHBsYW5lX3N0YXRlLT52aXNpYmxlKQo+ICsJ CQlwbGFuZS0+dXBkYXRlX3BsYW5lKCZwbGFuZS0+YmFzZSwKPiArCQkJCQkgICAgdG9faW50ZWxf Y3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSksCj4gKwkJCQkJICAgIHBsYW5lX3N0YXRlKTsKPiAgCj4g IAkJZHJtX21vZGVzZXRfdW5sb2NrX2NydGMoY3J0Yyk7Cj4gIAl9Cj4gQEAgLTEzOTU4LDMyICsx MzkzOSw2IEBAIGludGVsX2NoZWNrX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsCj4gIAkJCQkJICAgICAmc3RhdGUtPnZpc2libGUpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9p ZAo+IC1pbnRlbF9jb21taXRfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK PiAtCQkJICAgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZSkKPiAtewo+IC0Jc3RydWN0 IGRybV9jcnRjICpjcnRjID0gc3RhdGUtPmJhc2UuY3J0YzsKPiAtCXN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiID0gc3RhdGUtPmJhc2UuZmI7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g cGxhbmUtPmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7Cj4gLQo+IC0JY3J0YyA9IGNydGMgPyBjcnRjIDogcGxhbmUtPmNydGM7Cj4g LQo+IC0JZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3ByaW1hcnlfcGxhbmUoY3J0YywgZmIsCj4g LQkJCQkJICAgICAgIHN0YXRlLT5zcmMueDEgPj4gMTYsCj4gLQkJCQkJICAgICAgIHN0YXRlLT5z cmMueTEgPj4gMTYpOwo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZAo+IC1pbnRlbF9kaXNhYmxlX3By aW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gLQkJCSAgICBzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCj4gLXsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2 Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKPiAtCj4gLQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfcHJpbWFyeV9wbGFuZShjcnRjLCBO VUxMLCAwLCAwKTsKPiAtfQo+IC0KPiAgc3RhdGljIHZvaWQgaW50ZWxfYmVnaW5fY3J0Y19jb21t aXQoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCQkJICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0 ZSAqb2xkX2NydGNfc3RhdGUpCj4gIHsKPiBAQCAtMTQwNjgsMjAgKzE0MDIzLDMzIEBAIHN0YXRp YyBzdHJ1Y3QgZHJtX3BsYW5lICppbnRlbF9wcmltYXJ5X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAo+ICAJcHJpbWFyeS0+cGxhbmUgPSBwaXBlOwo+ICAJcHJpbWFyeS0+ZnJv bnRidWZmZXJfYml0ID0gSU5URUxfRlJPTlRCVUZGRVJfUFJJTUFSWShwaXBlKTsKPiAgCXByaW1h cnktPmNoZWNrX3BsYW5lID0gaW50ZWxfY2hlY2tfcHJpbWFyeV9wbGFuZTsKPiAtCXByaW1hcnkt PmNvbW1pdF9wbGFuZSA9IGludGVsX2NvbW1pdF9wcmltYXJ5X3BsYW5lOwo+IC0JcHJpbWFyeS0+ ZGlzYWJsZV9wbGFuZSA9IGludGVsX2Rpc2FibGVfcHJpbWFyeV9wbGFuZTsKPiAgCWlmIChIQVNf RkJDKGRldikgJiYgSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0KQo+ICAJCXByaW1hcnktPnBsYW5l ID0gIXBpcGU7Cj4gIAo+ICAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpIHsKPiAgCQlp bnRlbF9wcmltYXJ5X2Zvcm1hdHMgPSBza2xfcHJpbWFyeV9mb3JtYXRzOwo+ICAJCW51bV9mb3Jt YXRzID0gQVJSQVlfU0laRShza2xfcHJpbWFyeV9mb3JtYXRzKTsKPiArCj4gKwkJcHJpbWFyeS0+ dXBkYXRlX3BsYW5lID0gc2t5bGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZTsKPiArCQlwcmltYXJ5 LT5kaXNhYmxlX3BsYW5lID0gc2t5bGFrZV9kaXNhYmxlX3ByaW1hcnlfcGxhbmU7Cj4gKwl9IGVs c2UgaWYgKEhBU19QQ0hfU1BMSVQoZGV2KSkgewo+ICsJCWludGVsX3ByaW1hcnlfZm9ybWF0cyA9 IGk5NjVfcHJpbWFyeV9mb3JtYXRzOwo+ICsJCW51bV9mb3JtYXRzID0gQVJSQVlfU0laRShpOTY1 X3ByaW1hcnlfZm9ybWF0cyk7Cj4gKwo+ICsJCXByaW1hcnktPnVwZGF0ZV9wbGFuZSA9IGlyb25s YWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lOwo+ICsJCXByaW1hcnktPmRpc2FibGVfcGxhbmUgPSBp OXh4X2Rpc2FibGVfcHJpbWFyeV9wbGFuZTsKPiAgCX0gZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYp LT5nZW4gPj0gNCkgewo+ICAJCWludGVsX3ByaW1hcnlfZm9ybWF0cyA9IGk5NjVfcHJpbWFyeV9m b3JtYXRzOwo+ICAJCW51bV9mb3JtYXRzID0gQVJSQVlfU0laRShpOTY1X3ByaW1hcnlfZm9ybWF0 cyk7Cj4gKwo+ICsJCXByaW1hcnktPnVwZGF0ZV9wbGFuZSA9IGk5eHhfdXBkYXRlX3ByaW1hcnlf cGxhbmU7Cj4gKwkJcHJpbWFyeS0+ZGlzYWJsZV9wbGFuZSA9IGk5eHhfZGlzYWJsZV9wcmltYXJ5 X3BsYW5lOwo+ICAJfSBlbHNlIHsKPiAgCQlpbnRlbF9wcmltYXJ5X2Zvcm1hdHMgPSBpOHh4X3By aW1hcnlfZm9ybWF0czsKPiAgCQludW1fZm9ybWF0cyA9IEFSUkFZX1NJWkUoaTh4eF9wcmltYXJ5 X2Zvcm1hdHMpOwo+ICsKPiArCQlwcmltYXJ5LT51cGRhdGVfcGxhbmUgPSBpOXh4X3VwZGF0ZV9w cmltYXJ5X3BsYW5lOwo+ICsJCXByaW1hcnktPmRpc2FibGVfcGxhbmUgPSBpOXh4X2Rpc2FibGVf cHJpbWFyeV9wbGFuZTsKPiAgCX0KPiAgCj4gIAlkcm1fdW5pdmVyc2FsX3BsYW5lX2luaXQoZGV2 LCAmcHJpbWFyeS0+YmFzZSwgMCwKPiBAQCAtMTQ5MDksOCArMTQ4NzcsNiBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9pbml0X2Rpc3BsYXkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQkJaGFzd2Vs bF9jcnRjX2NvbXB1dGVfY2xvY2s7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19lbmFibGUg PSBoYXN3ZWxsX2NydGNfZW5hYmxlOwo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmNydGNfZGlzYWJs ZSA9IGhhc3dlbGxfY3J0Y19kaXNhYmxlOwo+IC0JCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9w cmltYXJ5X3BsYW5lID0KPiAtCQkJc2t5bGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZTsKPiAgCX0g ZWxzZSBpZiAoSEFTX0RESShkZXYpKSB7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X3BpcGVf Y29uZmlnID0gaGFzd2VsbF9nZXRfcGlwZV9jb25maWc7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXku Z2V0X2luaXRpYWxfcGxhbmVfY29uZmlnID0KPiBAQCAtMTQ5MTksOCArMTQ4ODUsNiBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9pbml0X2Rpc3BsYXkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQkJ aGFzd2VsbF9jcnRjX2NvbXB1dGVfY2xvY2s7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19l bmFibGUgPSBoYXN3ZWxsX2NydGNfZW5hYmxlOwo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmNydGNf ZGlzYWJsZSA9IGhhc3dlbGxfY3J0Y19kaXNhYmxlOwo+IC0JCWRldl9wcml2LT5kaXNwbGF5LnVw ZGF0ZV9wcmltYXJ5X3BsYW5lID0KPiAtCQkJaXJvbmxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmU7 Cj4gIAl9IGVsc2UgaWYgKEhBU19QQ0hfU1BMSVQoZGV2KSkgewo+ICAJCWRldl9wcml2LT5kaXNw bGF5LmdldF9waXBlX2NvbmZpZyA9IGlyb25sYWtlX2dldF9waXBlX2NvbmZpZzsKPiAgCQlkZXZf cHJpdi0+ZGlzcGxheS5nZXRfaW5pdGlhbF9wbGFuZV9jb25maWcgPQo+IEBAIC0xNDkyOSw4ICsx NDg5Myw2IEBAIHN0YXRpYyB2b2lkIGludGVsX2luaXRfZGlzcGxheShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+ICAJCQlpcm9ubGFrZV9jcnRjX2NvbXB1dGVfY2xvY2s7Cj4gIAkJZGV2X3ByaXYt PmRpc3BsYXkuY3J0Y19lbmFibGUgPSBpcm9ubGFrZV9jcnRjX2VuYWJsZTsKPiAgCQlkZXZfcHJp di0+ZGlzcGxheS5jcnRjX2Rpc2FibGUgPSBpcm9ubGFrZV9jcnRjX2Rpc2FibGU7Cj4gLQkJZGV2 X3ByaXYtPmRpc3BsYXkudXBkYXRlX3ByaW1hcnlfcGxhbmUgPQo+IC0JCQlpcm9ubGFrZV91cGRh dGVfcHJpbWFyeV9wbGFuZTsKPiAgCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElT X0NIRVJSWVZJRVcoZGV2KSkgewo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmdldF9waXBlX2NvbmZp ZyA9IGk5eHhfZ2V0X3BpcGVfY29uZmlnOwo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmdldF9pbml0 aWFsX3BsYW5lX2NvbmZpZyA9Cj4gQEAgLTE0OTM4LDggKzE0OTAwLDYgQEAgc3RhdGljIHZvaWQg aW50ZWxfaW5pdF9kaXNwbGF5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJZGV2X3ByaXYt PmRpc3BsYXkuY3J0Y19jb21wdXRlX2Nsb2NrID0gaTl4eF9jcnRjX2NvbXB1dGVfY2xvY2s7Cj4g IAkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19lbmFibGUgPSB2YWxsZXl2aWV3X2NydGNfZW5hYmxl Owo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmNydGNfZGlzYWJsZSA9IGk5eHhfY3J0Y19kaXNhYmxl Owo+IC0JCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9wcmltYXJ5X3BsYW5lID0KPiAtCQkJaTl4 eF91cGRhdGVfcHJpbWFyeV9wbGFuZTsKPiAgCX0gZWxzZSB7Cj4gIAkJZGV2X3ByaXYtPmRpc3Bs YXkuZ2V0X3BpcGVfY29uZmlnID0gaTl4eF9nZXRfcGlwZV9jb25maWc7Cj4gIAkJZGV2X3ByaXYt PmRpc3BsYXkuZ2V0X2luaXRpYWxfcGxhbmVfY29uZmlnID0KPiBAQCAtMTQ5NDcsOCArMTQ5MDcs NiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9pbml0X2Rpc3BsYXkoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2NvbXB1dGVfY2xvY2sgPSBpOXh4X2NydGNf Y29tcHV0ZV9jbG9jazsKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2VuYWJsZSA9IGk5eHhf Y3J0Y19lbmFibGU7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19kaXNhYmxlID0gaTl4eF9j cnRjX2Rpc2FibGU7Cj4gLQkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3ByaW1hcnlfcGxhbmUg PQo+IC0JCQlpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lOwo+ICAJfQo+ICAKPiAgCS8qIFJldHVy bnMgdGhlIGNvcmUgZGlzcGxheSBjbG9jayBzcGVlZCAqLwo+IC0tIAo+IDIuMS4wCj4gCj4gX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZngg bWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApWaWxs ZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==