From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 22/42] drm/i915: Pass old state to crtc_disable and use it. Date: Tue, 12 May 2015 11:13:49 +0200 Message-ID: <20150512091349.GI15256@phenom.ffwll.local> References: <1431354318-11995-1-git-send-email-maarten.lankhorst@linux.intel.com> <1431354318-11995-23-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 mail-wi0-f178.google.com (mail-wi0-f178.google.com [209.85.212.178]) by gabe.freedesktop.org (Postfix) with ESMTP id 37DCE6E5B1 for ; Tue, 12 May 2015 02:11:29 -0700 (PDT) Received: by wizk4 with SMTP id k4so143129916wiz.1 for ; Tue, 12 May 2015 02:11:28 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1431354318-11995-23-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: Ander Conselvan de Oliveira , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBNYXkgMTEsIDIwMTUgYXQgMDQ6MjQ6NThQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFu a2hvcnN0QGxpbnV4LmludGVsLmNvbT4KCldoeT8gUGxlYXNlIG5vdCBxdWl0ZSBzbyB0ZXJzZSBj b21taXQgbWVzc2FnZXMgLi4uCgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oICAgICAgfCAgIDMgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j IHwgMjA3ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICB8ICAgMiArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oICAgICB8ICAxMCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w YW5lbC5jICAgfCAgIDMgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdHYuYyAgICAg IHwgICAyICstCj4gIDYgZmlsZXMgY2hhbmdlZCwgMTIwIGluc2VydGlvbnMoKyksIDEwNyBkZWxl dGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCBhNmQzYWI5NGVjMTUu LjNiYTE1ZGY0YzkzYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC01NzMsNyAr NTczLDggQEAgc3RydWN0IGRybV9pOTE1X2Rpc3BsYXlfZnVuY3Mgewo+ICAJaW50ICgqY3J0Y19j b21wdXRlX2Nsb2NrKShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQkJCSAgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+ICAJdm9pZCAoKmNydGNfZW5hYmxlKShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpOwo+IC0Jdm9pZCAoKmNydGNfZGlzYWJsZSkoc3RydWN0IGRybV9j cnRjICpjcnRjKTsKPiArCXZvaWQgKCpjcnRjX2Rpc2FibGUpKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKPiArCQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX3N0YXRlKTsKPiAgCXZv aWQgKCphdWRpb19jb2RlY19lbmFibGUpKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Is Cj4gIAkJCQkgICBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJCSAgIHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptb2RlKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCj4gaW5kZXggOWJmMzEzNzFlZDQ5Li4zMTFhNGI0NGJlYmUgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTk4Miw4ICs5ODIsNiBAQCBib29sIGJ4dF9maW5k X2Jlc3RfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwgaW50IHRhcmdl dF9jbG9jaywKPiAgCj4gIGJvb2wgaW50ZWxfY3J0Y19hY3RpdmUoc3RydWN0IGRybV9jcnRjICpj cnRjKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2Ny dGMoY3J0Yyk7Cj4gLQo+ICAJLyogQmUgcGFyYW5vaWQgYXMgd2UgY2FuIGFycml2ZSBoZXJlIHdp dGggb25seSBwYXJ0aWFsCj4gIAkgKiBzdGF0ZSByZXRyaWV2ZWQgZnJvbSB0aGUgaGFyZHdhcmUg ZHVyaW5nIHNldHVwLgo+ICAJICoKPiBAQCAtOTk3LDE3ICs5OTUsOCBAQCBib29sIGludGVsX2Ny dGNfYWN0aXZlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCSAqIGNydGMtPnN0YXRlLT5hY3Rp dmUgb25jZSB3ZSBoYXZlIHByb3BlciBDUlRDIHN0YXRlcyB3aXJlZCB1cAo+ICAJICogZm9yIGF0 b21pYy4KPiAgCSAqLwo+IC0JcmV0dXJuIGludGVsX2NydGMtPmFjdGl2ZSAmJiBjcnRjLT5wcmlt YXJ5LT5zdGF0ZS0+ZmIgJiYKPiAtCQlpbnRlbF9jcnRjLT5jb25maWctPmJhc2UuYWRqdXN0ZWRf bW9kZS5jcnRjX2Nsb2NrOwo+IC19Cj4gLQo+IC1lbnVtIHRyYW5zY29kZXIgaW50ZWxfcGlwZV90 b19jcHVfdHJhbnNjb2RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJ CQkJICAgICBlbnVtIHBpcGUgcGlwZSkKPiAtewo+IC0Jc3RydWN0IGRybV9jcnRjICpjcnRjID0g ZGV2X3ByaXYtPnBpcGVfdG9fY3J0Y19tYXBwaW5nW3BpcGVdOwo+IC0Jc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+IC0KPiAtCXJldHVybiBpbnRl bF9jcnRjLT5jb25maWctPmNwdV90cmFuc2NvZGVyOwo+ICsJcmV0dXJuIGNydGMtPnN0YXRlLT5h Y3RpdmUgJiYgY3J0Yy0+cHJpbWFyeS0+c3RhdGUtPmZiICYmCj4gKwkJY3J0Yy0+c3RhdGUtPmFk anVzdGVkX21vZGUuY3J0Y19jbG9jazsKPiAgfQoKU2VwYXJhdGUgY29tbWl0IGltby4KCj4gIAo+ ICBzdGF0aWMgYm9vbCBwaXBlX2RzbF9zdG9wcGVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVu dW0gcGlwZSBwaXBlKQo+IEBAIC0xMDI5LDkgKzEwMTgsMTAgQEAgc3RhdGljIGJvb2wgcGlwZV9k c2xfc3RvcHBlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSkKPiAgCXJl dHVybiBsaW5lMSA9PSBsaW5lMjsKPiAgfQo+ICAKPiAtLyoKPiArLyoqCj4gICAqIGludGVsX3dh aXRfZm9yX3BpcGVfb2ZmIC0gd2FpdCBmb3IgcGlwZSB0byB0dXJuIG9mZgo+ICAgKiBAY3J0Yzog Y3J0YyB3aG9zZSBwaXBlIHRvIHdhaXQgZm9yCj4gKyAqIEBvbGRfc3RhdGU6IGN1cnJlbnRseSBh cHBsaWVkIGNvbmZpZwo+ICAgKgo+ICAgKiBBZnRlciBkaXNhYmxpbmcgYSBwaXBlLCB3ZSBjYW4n dCB3YWl0IGZvciB2YmxhbmsgaW4gdGhlIHVzdWFsIHdheSwKPiAgICogc3Bpbm5pbmcgb24gdGhl IHZibGFuayBpbnRlcnJ1cHQgc3RhdHVzIGJpdCwgc2luY2Ugd2Ugd29uJ3QgYWN0dWFsbHkKPiBA QCAtMTA0NSwxMSArMTAzNSwxMiBAQCBzdGF0aWMgYm9vbCBwaXBlX2RzbF9zdG9wcGVkKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcGlwZSBwaXBlKQo+ICAgKiAgIGVuZHMgdXAgc3RvcHBp bmcgYXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IGZyYW1lKS4KPiAgICoKPiAgICovCj4gLXN0YXRp YyB2b2lkIGludGVsX3dhaXRfZm9yX3BpcGVfb2ZmKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ ICtzdGF0aWMgdm9pZCBpbnRlbF93YWl0X2Zvcl9waXBlX29mZihzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywKPiArCQkJCSAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX3N0YXRlKQo+ICB7 Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0JZW51bSB0 cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gY3J0Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2RlcjsK PiArCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IG9sZF9zdGF0ZS0+Y3B1X3RyYW5z Y29kZXI7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gIAo+ICAJaWYgKElOVEVM X0lORk8oZGV2KS0+Z2VuID49IDQpIHsKPiBAQCAtMTE4MCwxMyArMTE3MSwxMiBAQCB2b2lkIGFz c2VydF9zaGFyZWRfZHBsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIH0K PiAgCj4gIHN0YXRpYyB2b2lkIGFzc2VydF9mZGlfdHgoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ICsJCQkgIGVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciwKPiAgCQkJ ICBlbnVtIHBpcGUgcGlwZSwgYm9vbCBzdGF0ZSkKPiAgewo+ICAJaW50IHJlZzsKPiAgCXUzMiB2 YWw7Cj4gIAlib29sIGN1cl9zdGF0ZTsKPiAtCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2Rl ciA9IGludGVsX3BpcGVfdG9fY3B1X3RyYW5zY29kZXIoZGV2X3ByaXYsCj4gLQkJCQkJCQkJICAg ICAgcGlwZSk7Cj4gIAo+ICAJaWYgKEhBU19EREkoZGV2X3ByaXYtPmRldikpIHsKPiAgCQkvKiBE REkgZG9lcyBub3QgaGF2ZSBhIHNwZWNpZmljIEZESV9UWCByZWdpc3RlciAqLwo+IEBAIC0xMjAy LDggKzExOTIsOCBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfZmRpX3R4KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAgCSAgICAgIkZESSBUWCBzdGF0ZSBhc3NlcnRpb24gZmFpbHVy ZSAoZXhwZWN0ZWQgJXMsIGN1cnJlbnQgJXMpXG4iLAo+ICAJICAgICBzdGF0ZV9zdHJpbmcoc3Rh dGUpLCBzdGF0ZV9zdHJpbmcoY3VyX3N0YXRlKSk7Cj4gIH0KPiAtI2RlZmluZSBhc3NlcnRfZmRp X3R4X2VuYWJsZWQoZCwgcCkgYXNzZXJ0X2ZkaV90eChkLCBwLCB0cnVlKQo+IC0jZGVmaW5lIGFz c2VydF9mZGlfdHhfZGlzYWJsZWQoZCwgcCkgYXNzZXJ0X2ZkaV90eChkLCBwLCBmYWxzZSkKPiAr I2RlZmluZSBhc3NlcnRfZmRpX3R4X2VuYWJsZWQoZCwgYywgcCkgYXNzZXJ0X2ZkaV90eChkLCBj LCBwLCB0cnVlKQo+ICsjZGVmaW5lIGFzc2VydF9mZGlfdHhfZGlzYWJsZWQoZCwgYywgcCkgYXNz ZXJ0X2ZkaV90eChkLCBjLCBwLCBmYWxzZSkKPiAgCj4gIHN0YXRpYyB2b2lkIGFzc2VydF9mZGlf cngoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkgIGVudW0gcGlwZSBw aXBlLCBib29sIHN0YXRlKQo+IEBAIC0xMzE3LDEzICsxMzA3LDEyIEBAIHN0YXRpYyB2b2lkIGFz c2VydF9jdXJzb3Ioc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAjZGVmaW5l IGFzc2VydF9jdXJzb3JfZGlzYWJsZWQoZCwgcCkgYXNzZXJ0X2N1cnNvcihkLCBwLCBmYWxzZSkK PiAgCj4gIHZvaWQgYXNzZXJ0X3BpcGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ICsJCSBlbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIsCj4gIAkJIGVudW0gcGlwZSBw aXBlLCBib29sIHN0YXRlKQo+ICB7Cj4gIAlpbnQgcmVnOwo+ICAJdTMyIHZhbDsKPiAgCWJvb2wg Y3VyX3N0YXRlOwo+IC0JZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gaW50ZWxfcGlw ZV90b19jcHVfdHJhbnNjb2RlcihkZXZfcHJpdiwKPiAtCQkJCQkJCQkgICAgICBwaXBlKTsKPiAg Cj4gIAkvKiBpZiB3ZSBuZWVkIHRoZSBwaXBlIHF1aXJrIGl0IG11c3QgYmUgYWx3YXlzIG9uICov Cj4gIAlpZiAoKHBpcGUgPT0gUElQRV9BICYmIGRldl9wcml2LT5xdWlya3MgJiBRVUlSS19QSVBF QV9GT1JDRSkgfHwKPiBAQCAtMTYxNSw3ICsxNjA0LDcgQEAgc3RhdGljIHZvaWQgdmx2X2VuYWJs ZV9wbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAlpbnQgcmVnID0gRFBMTChjcnRjLT5w aXBlKTsKPiAgCXUzMiBkcGxsID0gcGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUuZHBsbDsKPiAg Cj4gLQlhc3NlcnRfcGlwZV9kaXNhYmxlZChkZXZfcHJpdiwgY3J0Yy0+cGlwZSk7Cj4gKwlhc3Nl cnRfcGlwZV9kaXNhYmxlZChkZXZfcHJpdiwgcGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyLCBj cnRjLT5waXBlKTsKPiAgCj4gIAkvKiBObyByZWFsbHksIG5vdCBmb3IgSUxLKyAqLwo+ICAJQlVH X09OKCFJU19WQUxMRVlWSUVXKGRldl9wcml2LT5kZXYpKTsKPiBAQCAtMTY1NSw3ICsxNjQ0LDcg QEAgc3RhdGljIHZvaWQgY2h2X2VuYWJsZV9wbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4g IAllbnVtIGRwaW9fY2hhbm5lbCBwb3J0ID0gdmx2X3BpcGVfdG9fY2hhbm5lbChwaXBlKTsKPiAg CXUzMiB0bXA7Cj4gIAo+IC0JYXNzZXJ0X3BpcGVfZGlzYWJsZWQoZGV2X3ByaXYsIGNydGMtPnBp cGUpOwo+ICsJYXNzZXJ0X3BpcGVfZGlzYWJsZWQoZGV2X3ByaXYsIHBpcGVfY29uZmlnLT5jcHVf dHJhbnNjb2RlciwgY3J0Yy0+cGlwZSk7Cj4gIAo+ICAJQlVHX09OKCFJU19DSEVSUllWSUVXKGRl dl9wcml2LT5kZXYpKTsKPiAgCj4gQEAgLTE2OTcsMTQgKzE2ODYsMTQgQEAgc3RhdGljIGludCBp bnRlbF9udW1fZHZvX3BpcGVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlyZXR1cm4gY291 bnQ7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGk5eHhfZW5hYmxlX3BsbChzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YykKPiArc3RhdGljIHZvaWQgaTl4eF9lbmFibGVfcGxsKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gIHsKPiAg CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlpbnQgcmVnID0g RFBMTChjcnRjLT5waXBlKTsKPiAgCXUzMiBkcGxsID0gY3J0Yy0+Y29uZmlnLT5kcGxsX2h3X3N0 YXRlLmRwbGw7Cj4gIAo+IC0JYXNzZXJ0X3BpcGVfZGlzYWJsZWQoZGV2X3ByaXYsIGNydGMtPnBp cGUpOwo+ICsJYXNzZXJ0X3BpcGVfZGlzYWJsZWQoZGV2X3ByaXYsIHBpcGVfY29uZmlnLT5jcHVf dHJhbnNjb2RlciwgY3J0Yy0+cGlwZSk7Cj4gIAo+ICAJLyogTm8gcmVhbGx5LCBub3QgZm9yIElM SysgKi8KPiAgCUJVR19PTihJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA1KTsKPiBAQCAtMTc1Nywx MyArMTc0NiwxNCBAQCBzdGF0aWMgdm9pZCBpOXh4X2VuYWJsZV9wbGwoc3RydWN0IGludGVsX2Ny dGMgKmNydGMpCj4gIC8qKgo+ICAgKiBpOXh4X2Rpc2FibGVfcGxsIC0gZGlzYWJsZSBhIFBMTAo+ ICAgKiBAZGV2X3ByaXY6IGk5MTUgcHJpdmF0ZSBzdHJ1Y3R1cmUKPiAtICogQHBpcGU6IHBpcGUg UExMIHRvIGRpc2FibGUKPiArICogQHBpcGVfY29uZmlnOiBjdXJyZW50bHkgYXBwbGllZCBjb25m aWcKPiAgICoKPiAgICogRGlzYWJsZSB0aGUgUExMIGZvciBAcGlwZSwgbWFraW5nIHN1cmUgdGhl IHBpcGUgaXMgb2ZmIGZpcnN0Lgo+ICAgKgo+ICAgKiBOb3RlISAgVGhpcyBpcyBmb3IgcHJlLUlM SyBvbmx5Lgo+ICAgKi8KPiAtc3RhdGljIHZvaWQgaTl4eF9kaXNhYmxlX3BsbChzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YykKPiArc3RhdGljIHZvaWQgaTl4eF9kaXNhYmxlX3BsbChzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YywKPiArCQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9j b25maWcpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsK PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 Cj4gQEAgLTE3ODUsNyArMTc3NSw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfZGlzYWJsZV9wbGwoc3Ry dWN0IGludGVsX2NydGMgKmNydGMpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCS8qIE1ha2Ugc3VyZSB0 aGUgcGlwZSBpc24ndCBzdGlsbCByZWx5aW5nIG9uIHVzICovCj4gLQlhc3NlcnRfcGlwZV9kaXNh YmxlZChkZXZfcHJpdiwgcGlwZSk7Cj4gKwlhc3NlcnRfcGlwZV9kaXNhYmxlZChkZXZfcHJpdiwg cGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyLCBwaXBlKTsKPiAgCj4gIAlJOTE1X1dSSVRFKERQ TEwocGlwZSksIDApOwo+ICAJUE9TVElOR19SRUFEKERQTEwocGlwZSkpOwo+IEBAIC0xNzk1LDkg KzE3ODUsNiBAQCBzdGF0aWMgdm9pZCB2bHZfZGlzYWJsZV9wbGwoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSkKPiAgewo+ICAJdTMyIHZhbCA9IDA7Cj4g IAo+IC0JLyogTWFrZSBzdXJlIHRoZSBwaXBlIGlzbid0IHN0aWxsIHJlbHlpbmcgb24gdXMgKi8K PiAtCWFzc2VydF9waXBlX2Rpc2FibGVkKGRldl9wcml2LCBwaXBlKTsKPiAtCj4gIAkvKgo+ICAJ ICogTGVhdmUgaW50ZWdyYXRlZCBjbG9jayBzb3VyY2UgYW5kIHJlZmVyZW5jZSBjbG9jayBlbmFi bGVkIGZvciBwaXBlIEIuCj4gIAkgKiBUaGUgbGF0dGVyIGlzIG5lZWRlZCBmb3IgVkdBIGhvdHBs dWcgLyBtYW51YWwgZGV0ZWN0aW9uLgo+IEBAIC0xODE0LDkgKzE4MDEsNiBAQCBzdGF0aWMgdm9p ZCBjaHZfZGlzYWJsZV9wbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVt IHBpcGUgcGlwZSkKPiAgCWVudW0gZHBpb19jaGFubmVsIHBvcnQgPSB2bHZfcGlwZV90b19jaGFu bmVsKHBpcGUpOwo+ICAJdTMyIHZhbDsKPiAgCj4gLQkvKiBNYWtlIHN1cmUgdGhlIHBpcGUgaXNu J3Qgc3RpbGwgcmVseWluZyBvbiB1cyAqLwo+IC0JYXNzZXJ0X3BpcGVfZGlzYWJsZWQoZGV2X3By aXYsIHBpcGUpOwo+IC0KPiAgCS8qIFNldCBQTEwgZW4gPSAwICovCj4gIAl2YWwgPSBEUExMX1NT Q19SRUZfQ0xPQ0tfQ0hWIHwgRFBMTF9SRUZBX0NMS19FTkFCTEVfVkxWOwo+ICAJaWYgKHBpcGUg IT0gUElQRV9BKQo+IEBAIC0xOTY4LDcgKzE5NTIsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kaXNh YmxlX3NoYXJlZF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICB9Cj4gIAo+ICBzdGF0 aWMgdm9pZCBpcm9ubGFrZV9lbmFibGVfcGNoX3RyYW5zY29kZXIoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+IC0JCQkJCSAgIGVudW0gcGlwZSBwaXBlKQo+ICsJCQkJCSAgIGVu dW0gcGlwZSBwaXBlLAo+ICsJCQkJCSAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2Nv bmZpZykKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7Cj4g IAlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBkZXZfcHJpdi0+cGlwZV90b19jcnRjX21hcHBpbmdb cGlwZV07Cj4gQEAgLTE5ODMsNyArMTk2OCw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX2VuYWJs ZV9wY2hfdHJhbnNjb2RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJ CQkgICBpbnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsKGludGVsX2NydGMpKTsKPiAgCj4gIAkvKiBG REkgbXVzdCBiZSBmZWVkaW5nIHVzIGJpdHMgZm9yIFBDSCBwb3J0cyAqLwo+IC0JYXNzZXJ0X2Zk aV90eF9lbmFibGVkKGRldl9wcml2LCBwaXBlKTsKPiArCWFzc2VydF9mZGlfdHhfZW5hYmxlZChk ZXZfcHJpdiwgcGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyLCBwaXBlKTsKPiAgCWFzc2VydF9m ZGlfcnhfZW5hYmxlZChkZXZfcHJpdiwgcGlwZSk7Cj4gIAo+ICAJaWYgKEhBU19QQ0hfQ1BUKGRl dikpIHsKPiBAQCAtMjAzMiw3ICsyMDE3LDcgQEAgc3RhdGljIHZvaWQgbHB0X2VuYWJsZV9wY2hf dHJhbnNjb2RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlCVUdfT04o IUhBU19QQ0hfU1BMSVQoZGV2X3ByaXYtPmRldikpOwo+ICAKPiAgCS8qIEZESSBtdXN0IGJlIGZl ZWRpbmcgdXMgYml0cyBmb3IgUENIIHBvcnRzICovCj4gLQlhc3NlcnRfZmRpX3R4X2VuYWJsZWQo ZGV2X3ByaXYsIChlbnVtIHBpcGUpIGNwdV90cmFuc2NvZGVyKTsKPiArCWFzc2VydF9mZGlfdHhf ZW5hYmxlZChkZXZfcHJpdiwgY3B1X3RyYW5zY29kZXIsIChlbnVtIHBpcGUpIGNwdV90cmFuc2Nv ZGVyKTsKPiAgCWFzc2VydF9mZGlfcnhfZW5hYmxlZChkZXZfcHJpdiwgVFJBTlNDT0RFUl9BKTsK CkkgdGhpbmsgdGhlIGFzc2VydCBjaGFuZ2VzIHdvdWxkIGFsc28gbG9vayBnb29kIGluIGEgc2Vw YXJhdGUgY29tbWl0LgoKPiAgCj4gIAkvKiBXb3JrYXJvdW5kOiBzZXQgdGltaW5nIG92ZXJyaWRl IGJpdC4gKi8KPiBAQCAtMjA1NSwxMyArMjA0MCwxNCBAQCBzdGF0aWMgdm9pZCBscHRfZW5hYmxl X3BjaF90cmFuc2NvZGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgfQo+ ICAKPiAgc3RhdGljIHZvaWQgaXJvbmxha2VfZGlzYWJsZV9wY2hfdHJhbnNjb2RlcihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQkJICAgIGVudW0gdHJhbnNjb2RlciBj cHVfdHJhbnNjb2RlciwKPiAgCQkJCQkgICAgZW51bSBwaXBlIHBpcGUpCj4gIHsKPiAgCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ZGV2Owo+ICAJdWludDMyX3QgcmVnLCB2YWw7 Cj4gIAo+ICAJLyogRkRJIHJlbGllcyBvbiB0aGUgdHJhbnNjb2RlciAqLwo+IC0JYXNzZXJ0X2Zk aV90eF9kaXNhYmxlZChkZXZfcHJpdiwgcGlwZSk7Cj4gKwlhc3NlcnRfZmRpX3R4X2Rpc2FibGVk KGRldl9wcml2LCBjcHVfdHJhbnNjb2RlciwgcGlwZSk7Cj4gIAlhc3NlcnRfZmRpX3J4X2Rpc2Fi bGVkKGRldl9wcml2LCBwaXBlKTsKPiAgCj4gIAkvKiBQb3J0cyBtdXN0IGJlIG9mZiBhcyB3ZWxs ICovCj4gQEAgLTIxMTMsOCArMjA5OSw5IEBAIHN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9waXBl KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNy dGMtPmJhc2UuZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKPiAgCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiAtCWVudW0g dHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGludGVsX3BpcGVfdG9fY3B1X3RyYW5zY29kZXIo ZGV2X3ByaXYsCj4gLQkJCQkJCQkJICAgICAgcGlwZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqcGlwZV9jb25maWcgPQo+ICsJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5z dGF0ZSk7Cj4gKwllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBwaXBlX2NvbmZpZy0+ Y3B1X3RyYW5zY29kZXI7Cj4gIAllbnVtIHBpcGUgcGNoX3RyYW5zY29kZXI7Cj4gIAlpbnQgcmVn Owo+ICAJdTMyIHZhbDsKPiBAQCAtMjE2Myw2ICsyMTUwLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf ZW5hYmxlX3BpcGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gIC8qKgo+ICAgKiBpbnRlbF9k aXNhYmxlX3BpcGUgLSBkaXNhYmxlIGEgcGlwZSwgYXNzZXJ0aW5nIHJlcXVpcmVtZW50cwo+ICAg KiBAY3J0YzogY3J0YyB3aG9zZSBwaXBlcyBpcyB0byBiZSBkaXNhYmxlZAo+ICsgKiBAb2xkX3N0 YXRlOiBjdXJyZW50bHkgYXBwbGllZCBjb25maWcKPiAgICoKPiAgICogRGlzYWJsZSB0aGUgcGlw ZSBvZiBAY3J0YywgbWFraW5nIHN1cmUgdGhhdCB2YXJpb3VzIGhhcmR3YXJlCj4gICAqIHNwZWNp ZmljIHJlcXVpcmVtZW50cyBhcmUgbWV0LCBpZiBhcHBsaWNhYmxlLCBlLmcuIHBsYW5lCj4gQEAg LTIxNzAsMTAgKzIxNTgsMTEgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX3BpcGUoc3RydWN0 IGludGVsX2NydGMgKmNydGMpCj4gICAqCj4gICAqIFdpbGwgd2FpdCB1bnRpbCB0aGUgcGlwZSBo YXMgc2h1dCBkb3duIGJlZm9yZSByZXR1cm5pbmcuCj4gICAqLwo+IC1zdGF0aWMgdm9pZCBpbnRl bF9kaXNhYmxlX3BpcGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gK3N0YXRpYyB2b2lkIGlu dGVsX2Rpc2FibGVfcGlwZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiArCQkJICAgICAgIHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGNydGMtPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCWVu dW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGNydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29k ZXI7Cj4gKwllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBvbGRfc3RhdGUtPmNwdV90 cmFuc2NvZGVyOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICAJaW50IHJlZzsK PiAgCXUzMiB2YWw7Cj4gQEAgLTIxOTUsNyArMjE4NCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2Rp c2FibGVfcGlwZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgCSAqIERvdWJsZSB3aWRlIGhh cyBpbXBsaWNhdGlvbnMgZm9yIHBsYW5lcwo+ICAJICogc28gYmVzdCBrZWVwIGl0IGRpc2FibGVk IHdoZW4gbm90IG5lZWRlZC4KPiAgCSAqLwo+IC0JaWYgKGNydGMtPmNvbmZpZy0+ZG91YmxlX3dp ZGUpCj4gKwlpZiAob2xkX3N0YXRlLT5kb3VibGVfd2lkZSkKPiAgCQl2YWwgJj0gflBJUEVDT05G X0RPVUJMRV9XSURFOwo+ICAKPiAgCS8qIERvbid0IGRpc2FibGUgcGlwZSBvciBwaXBlIFBMTHMg aWYgbmVlZGVkICovCj4gQEAgLTIyMDUsNyArMjE5NCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2Rp c2FibGVfcGlwZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgCj4gIAlJOTE1X1dSSVRFKHJl ZywgdmFsKTsKPiAgCWlmICgodmFsICYgUElQRUNPTkZfRU5BQkxFKSA9PSAwKQo+IC0JCWludGVs X3dhaXRfZm9yX3BpcGVfb2ZmKGNydGMpOwo+ICsJCWludGVsX3dhaXRfZm9yX3BpcGVfb2ZmKGNy dGMsIG9sZF9zdGF0ZSk7Cj4gIH0KPiAgCj4gIC8qCj4gQEAgLTMzOTUsOSArMzM4NCw2IEBAIHN0 YXRpYyB2b2lkIGlyb25sYWtlX2ZkaV9saW5rX3RyYWluKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK PiAgCWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAgCXUzMiByZWcsIHRlbXAsIHRyaWVz Owo+ICAKPiAtCS8qIEZESSBuZWVkcyBiaXRzIGZyb20gcGlwZSBmaXJzdCAqLwo+IC0JYXNzZXJ0 X3BpcGVfZW5hYmxlZChkZXZfcHJpdiwgcGlwZSk7Cj4gLQo+ICAJLyogVHJhaW4gMTogdW1hc2sg RkRJIFJYIEludGVycnVwdCBzeW1ib2xfbG9jayBhbmQgYml0X2xvY2sgYml0Cj4gIAkgICBmb3Ig dHJhaW4gcmVzdWx0ICovCj4gIAlyZWcgPSBGRElfUlhfSU1SKHBpcGUpOwo+IEBAIC0zNzM3LDcg KzM3MjMsOCBAQCB0cmFpbl9kb25lOgo+ICAJRFJNX0RFQlVHX0tNUygiRkRJIHRyYWluIGRvbmUu XG4iKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgaXJvbmxha2VfZmRpX3BsbF9lbmFibGUoc3Ry dWN0IGludGVsX2NydGMgKmludGVsX2NydGMpCj4gK3N0YXRpYyB2b2lkIGlyb25sYWtlX2ZkaV9w bGxfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ICsJCQkJICAgIHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAgewo+ICAJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGludGVsX2NydGMtPmJhc2UuZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiBAQCAtMzc0OSw3ICszNzM2LDcgQEAg c3RhdGljIHZvaWQgaXJvbmxha2VfZmRpX3BsbF9lbmFibGUoc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMpCj4gIAlyZWcgPSBGRElfUlhfQ1RMKHBpcGUpOwo+ICAJdGVtcCA9IEk5MTVfUkVB RChyZWcpOwo+ICAJdGVtcCAmPSB+KEZESV9EUF9QT1JUX1dJRFRIX01BU0sgfCAoMHg3IDw8IDE2 KSk7Cj4gLQl0ZW1wIHw9IEZESV9EUF9QT1JUX1dJRFRIKGludGVsX2NydGMtPmNvbmZpZy0+ZmRp X2xhbmVzKTsKPiArCXRlbXAgfD0gRkRJX0RQX1BPUlRfV0lEVEgocGlwZV9jb25maWctPmZkaV9s YW5lcyk7Cj4gIAl0ZW1wIHw9IChJOTE1X1JFQUQoUElQRUNPTkYocGlwZSkpICYgUElQRUNPTkZf QlBDX01BU0spIDw8IDExOwo+ICAJSTkxNV9XUklURShyZWcsIHRlbXAgfCBGRElfUlhfUExMX0VO QUJMRSk7Cj4gIAo+IEBAIC00MDkzLDcgKzQwODAsNyBAQCBzdGF0aWMgdm9pZCBpdnlicmlkZ2Vf dXBkYXRlX2ZkaV9iY19iaWZ1cmNhdGlvbihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykK PiAgICogICAtIERQIHRyYW5zY29kaW5nIGJpdHMKPiAgICogICAtIHRyYW5zY29kZXIKPiAgICov Cj4gLXN0YXRpYyB2b2lkIGlyb25sYWtlX3BjaF9lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRj KQo+ICtzdGF0aWMgdm9pZCBpcm9ubGFrZV9wY2hfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0 Yywgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICB7Cj4gIAlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiBAQCAtNDEyMiw3ICs0MTA5LDcgQEAgc3Rh dGljIHZvaWQgaXJvbmxha2VfcGNoX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAkJ dGVtcCA9IEk5MTVfUkVBRChQQ0hfRFBMTF9TRUwpOwo+ICAJCXRlbXAgfD0gVFJBTlNfRFBMTF9F TkFCTEUocGlwZSk7Cj4gIAkJc2VsID0gVFJBTlNfRFBMTEJfU0VMKHBpcGUpOwo+IC0JCWlmIChp bnRlbF9jcnRjLT5jb25maWctPnNoYXJlZF9kcGxsID09IERQTExfSURfUENIX1BMTF9CKQo+ICsJ CWlmIChwaXBlX2NvbmZpZy0+c2hhcmVkX2RwbGwgPT0gRFBMTF9JRF9QQ0hfUExMX0IpCj4gIAkJ CXRlbXAgfD0gc2VsOwo+ICAJCWVsc2UKPiAgCQkJdGVtcCAmPSB+c2VsOwo+IEBAIC00MTQ1LDcg KzQxMzIsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9wY2hfZW5hYmxlKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YykKPiAgCWludGVsX2ZkaV9ub3JtYWxfdHJhaW4oY3J0Yyk7Cj4gIAo+ICAJLyogRm9y IFBDSCBEUCwgZW5hYmxlIFRSQU5TX0RQX0NUTCAqLwo+IC0JaWYgKEhBU19QQ0hfQ1BUKGRldikg JiYgaW50ZWxfY3J0Yy0+Y29uZmlnLT5oYXNfZHBfZW5jb2Rlcikgewo+ICsJaWYgKEhBU19QQ0hf Q1BUKGRldikgJiYgcGlwZV9jb25maWctPmhhc19kcF9lbmNvZGVyKSB7Cj4gIAkJdTMyIGJwYyA9 IChJOTE1X1JFQUQoUElQRUNPTkYocGlwZSkpICYgUElQRUNPTkZfQlBDX01BU0spID4+IDU7Cj4g IAkJcmVnID0gVFJBTlNfRFBfQ1RMKHBpcGUpOwo+ICAJCXRlbXAgPSBJOTE1X1JFQUQocmVnKTsK PiBAQCAtNDE3OCw3ICs0MTY1LDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfcGNoX2VuYWJsZShz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAkJSTkxNV9XUklURShyZWcsIHRlbXApOwo+ICAJfQo+ ICAKPiAtCWlyb25sYWtlX2VuYWJsZV9wY2hfdHJhbnNjb2RlcihkZXZfcHJpdiwgcGlwZSk7Cj4g Kwlpcm9ubGFrZV9lbmFibGVfcGNoX3RyYW5zY29kZXIoZGV2X3ByaXYsIHBpcGUsIHBpcGVfY29u ZmlnKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgbHB0X3BjaF9lbmFibGUoc3RydWN0IGRybV9j cnRjICpjcnRjKQo+IEBAIC00Nzg5LDIzICs0Nzc2LDI1IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtl X2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCXN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgCXN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyOwo+ICAJaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ICsJc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnOwo+ICAKPiAgCVdBUk5fT04oIWNydGMtPnN0 YXRlLT5lbmFibGUpOwo+ICAKPiAtCWlmIChpbnRlbF9jcnRjLT5hY3RpdmUpCj4gKwlpZiAoV0FS Tl9PTihpbnRlbF9jcnRjLT5hY3RpdmUpKQo+ICAJCXJldHVybjsKPiArCXBpcGVfY29uZmlnID0g dG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Cj4gIAo+IC0JaWYgKGludGVsX2NydGMt PmNvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKQo+ICsJaWYgKHBpcGVfY29uZmlnLT5oYXNfcGNoX2Vu Y29kZXIpCj4gIAkJaW50ZWxfcHJlcGFyZV9zaGFyZWRfZHBsbChpbnRlbF9jcnRjKTsKPiAgCj4g LQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5oYXNfZHBfZW5jb2RlcikKPiArCWlmIChwaXBlX2Nv bmZpZy0+aGFzX2RwX2VuY29kZXIpCj4gIAkJaW50ZWxfZHBfc2V0X21fbihpbnRlbF9jcnRjLCBN MV9OMSk7Cj4gIAo+ICAJaW50ZWxfc2V0X3BpcGVfdGltaW5ncyhpbnRlbF9jcnRjKTsKPiAgCj4g LQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5oYXNfcGNoX2VuY29kZXIpIHsKPiArCWlmIChwaXBl X2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKSB7Cj4gIAkJaW50ZWxfY3B1X3RyYW5zY29kZXJfc2V0 X21fbihpbnRlbF9jcnRjLAo+IC0JCQkJICAgICAmaW50ZWxfY3J0Yy0+Y29uZmlnLT5mZGlfbV9u LCBOVUxMKTsKPiArCQkJCSAgICAgJnBpcGVfY29uZmlnLT5mZGlfbV9uLCBOVUxMKTsKPiAgCX0K PiAgCj4gIAlpcm9ubGFrZV9zZXRfcGlwZWNvbmYoY3J0Yyk7Cj4gQEAgLTQ4MjMsOSArNDgxMiw5 IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YykKPiAgCQkvKiBOb3RlOiBGREkgUExMIGVuYWJsaW5nIF9tdXN0XyBiZSBkb25lIGJlZm9yZSB3 ZSBlbmFibGUgdGhlCj4gIAkJICogY3B1IHBpcGVzLCBoZW5jZSB0aGlzIGlzIHNlcGFyYXRlIGZy b20gYWxsIHRoZSBvdGhlciBmZGkvcGNoCj4gIAkJICogZW5hYmxpbmcuICovCj4gLQkJaXJvbmxh a2VfZmRpX3BsbF9lbmFibGUoaW50ZWxfY3J0Yyk7Cj4gKwkJaXJvbmxha2VfZmRpX3BsbF9lbmFi bGUoaW50ZWxfY3J0YywgcGlwZV9jb25maWcpOwoKVG9ucyBvZiBjaGFuZ2VzIGluIF9lbmFibGUg Y29kZSB3aGljaCByZWFsbHkgc2hvdWxkbid0IGJlIHBhcnQgb2YgdGhpcwpwYXRjaCBoZXJlLgoK PiAgCX0gZWxzZSB7Cj4gLQkJYXNzZXJ0X2ZkaV90eF9kaXNhYmxlZChkZXZfcHJpdiwgcGlwZSk7 Cj4gKwkJYXNzZXJ0X2ZkaV90eF9kaXNhYmxlZChkZXZfcHJpdiwgcGlwZV9jb25maWctPmNwdV90 cmFuc2NvZGVyLCBwaXBlKTsKPiAgCQlhc3NlcnRfZmRpX3J4X2Rpc2FibGVkKGRldl9wcml2LCBw aXBlKTsKPiAgCX0KPiAgCj4gQEAgLTQ4NDEsNyArNDgzMCw3IEBAIHN0YXRpYyB2b2lkIGlyb25s YWtlX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCWludGVsX2VuYWJsZV9w aXBlKGludGVsX2NydGMpOwo+ICAKPiAgCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmhhc19wY2hf ZW5jb2RlcikKPiAtCQlpcm9ubGFrZV9wY2hfZW5hYmxlKGNydGMpOwo+ICsJCWlyb25sYWtlX3Bj aF9lbmFibGUoY3J0YywgcGlwZV9jb25maWcpOwo+ICAKPiAgCWFzc2VydF92YmxhbmtfZGlzYWJs ZWQoY3J0Yyk7Cj4gIAlkcm1fY3J0Y192Ymxhbmtfb24oY3J0Yyk7Cj4gQEAgLTQ4OTMsMzAgKzQ4 ODIsMzIgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiArCXN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZzsKPiAgCXN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyOwo+ICAJaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ICAKPiAgCVdBUk5f T04oIWNydGMtPnN0YXRlLT5lbmFibGUpOwo+ICAKPiAtCWlmIChpbnRlbF9jcnRjLT5hY3RpdmUp Cj4gKwlpZiAoV0FSTl9PTihpbnRlbF9jcnRjLT5hY3RpdmUpKQo+ICAJCXJldHVybjsKPiAgCj4g KwlwaXBlX2NvbmZpZyA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+ICAJaWYg KGludGVsX2NydGNfdG9fc2hhcmVkX2RwbGwoaW50ZWxfY3J0YykpCj4gIAkJaW50ZWxfZW5hYmxl X3NoYXJlZF9kcGxsKGludGVsX2NydGMpOwo+ICAKPiAtCWlmIChpbnRlbF9jcnRjLT5jb25maWct Pmhhc19kcF9lbmNvZGVyKQo+ICsJaWYgKHBpcGVfY29uZmlnLT5oYXNfZHBfZW5jb2RlcikKPiAg CQlpbnRlbF9kcF9zZXRfbV9uKGludGVsX2NydGMsIE0xX04xKTsKPiAgCj4gIAlpbnRlbF9zZXRf cGlwZV90aW1pbmdzKGludGVsX2NydGMpOwo+ICAKPiAtCWlmIChpbnRlbF9jcnRjLT5jb25maWct PmNwdV90cmFuc2NvZGVyICE9IFRSQU5TQ09ERVJfRURQKSB7Cj4gLQkJSTkxNV9XUklURShQSVBF X01VTFQoaW50ZWxfY3J0Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2RlciksCj4gLQkJCSAgIGludGVs X2NydGMtPmNvbmZpZy0+cGl4ZWxfbXVsdGlwbGllciAtIDEpOwo+ICsJaWYgKHBpcGVfY29uZmln LT5jcHVfdHJhbnNjb2RlciAhPSBUUkFOU0NPREVSX0VEUCkgewo+ICsJCUk5MTVfV1JJVEUoUElQ RV9NVUxUKHBpcGVfY29uZmlnLT5jcHVfdHJhbnNjb2RlciksCj4gKwkJCSAgIHBpcGVfY29uZmln LT5waXhlbF9tdWx0aXBsaWVyIC0gMSk7Cj4gIAl9Cj4gIAo+IC0JaWYgKGludGVsX2NydGMtPmNv bmZpZy0+aGFzX3BjaF9lbmNvZGVyKSB7Cj4gKwlpZiAocGlwZV9jb25maWctPmhhc19wY2hfZW5j b2Rlcikgewo+ICAJCWludGVsX2NwdV90cmFuc2NvZGVyX3NldF9tX24oaW50ZWxfY3J0YywKPiAt CQkJCSAgICAgJmludGVsX2NydGMtPmNvbmZpZy0+ZmRpX21fbiwgTlVMTCk7Cj4gKwkJCQkgICAg ICZwaXBlX2NvbmZpZy0+ZmRpX21fbiwgTlVMTCk7Cj4gIAl9Cj4gIAo+ICAJaGFzd2VsbF9zZXRf cGlwZWNvbmYoY3J0Yyk7Cj4gQEAgLTQ5MzAsOSArNDkyMSwxMCBAQCBzdGF0aWMgdm9pZCBoYXN3 ZWxsX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCQlpZiAoZW5jb2Rlci0+ cHJlX2VuYWJsZSkKPiAgCQkJZW5jb2Rlci0+cHJlX2VuYWJsZShlbmNvZGVyKTsKPiAgCj4gLQlp ZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5oYXNfcGNoX2VuY29kZXIpIHsKPiArCWlmIChwaXBlX2Nv bmZpZy0+aGFzX3BjaF9lbmNvZGVyKSB7Cj4gIAkJaW50ZWxfc2V0X3BjaF9maWZvX3VuZGVycnVu X3JlcG9ydGluZyhkZXZfcHJpdiwgVFJBTlNDT0RFUl9BLAo+ICAJCQkJCQkgICAgICB0cnVlKTsK PiArCj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZmRpX2xpbmtfdHJhaW4oY3J0Yyk7Cj4gIAl9Cj4g IAo+IEBAIC00OTkxLDcgKzQ5ODMsOCBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9wZml0X2Rpc2Fi bGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gIAl9Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lk IGlyb25sYWtlX2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gK3N0YXRpYyB2 b2lkIGlyb25sYWtlX2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gKwkJCQkg IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IEBAIC01MDA2LDEwICs0OTk5LDEwIEBAIHN0YXRp YyB2b2lkIGlyb25sYWtlX2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAlk cm1fY3J0Y192Ymxhbmtfb2ZmKGNydGMpOwo+ICAJYXNzZXJ0X3ZibGFua19kaXNhYmxlZChjcnRj KTsKPiAgCj4gLQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5oYXNfcGNoX2VuY29kZXIpCj4gKwlp ZiAob2xkX3N0YXRlLT5oYXNfcGNoX2VuY29kZXIpCj4gIAkJaW50ZWxfc2V0X3BjaF9maWZvX3Vu ZGVycnVuX3JlcG9ydGluZyhkZXZfcHJpdiwgcGlwZSwgZmFsc2UpOwo+ICAKPiAtCWludGVsX2Rp c2FibGVfcGlwZShpbnRlbF9jcnRjKTsKPiArCWludGVsX2Rpc2FibGVfcGlwZShpbnRlbF9jcnRj LCBvbGRfc3RhdGUpOwo+ICAKPiAgCWlyb25sYWtlX3BmaXRfZGlzYWJsZShpbnRlbF9jcnRjKTsK PiAgCj4gQEAgLTUwMTcsMTAgKzUwMTAsMTAgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfY3J0Y19k aXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCQlpZiAoZW5jb2Rlci0+cG9zdF9kaXNh YmxlKQo+ICAJCQllbmNvZGVyLT5wb3N0X2Rpc2FibGUoZW5jb2Rlcik7Cj4gIAo+IC0JaWYgKGlu dGVsX2NydGMtPmNvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKSB7Cj4gKwlpZiAob2xkX3N0YXRlLT5o YXNfcGNoX2VuY29kZXIpIHsKPiAgCQlpcm9ubGFrZV9mZGlfZGlzYWJsZShjcnRjKTsKPiAgCj4g LQkJaXJvbmxha2VfZGlzYWJsZV9wY2hfdHJhbnNjb2RlcihkZXZfcHJpdiwgcGlwZSk7Cj4gKwkJ aXJvbmxha2VfZGlzYWJsZV9wY2hfdHJhbnNjb2RlcihkZXZfcHJpdiwgb2xkX3N0YXRlLT5jcHVf dHJhbnNjb2RlciwgcGlwZSk7Cj4gIAo+ICAJCWlmIChIQVNfUENIX0NQVChkZXYpKSB7Cj4gIAkJ CS8qIGRpc2FibGUgVFJBTlNfRFBfQ1RMICovCj4gQEAgLTUwNDEsNyArNTAzNCw4IEBAIHN0YXRp YyB2b2lkIGlyb25sYWtlX2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAl9 Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19kaXNhYmxlKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YykKPiArc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2Rpc2FibGUoc3RydWN0IGRy bV9jcnRjICpjcnRjLAo+ICsJCQkJIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfc3RhdGUp Cj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IEBAIC01MDYw LDcgKzUwNTQsNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCj4gIAlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5oYXNfcGNoX2VuY29kZXIp Cj4gIAkJaW50ZWxfc2V0X3BjaF9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXZfcHJpdiwgVFJB TlNDT0RFUl9BLAo+ICAJCQkJCQkgICAgICBmYWxzZSk7Cj4gLQlpbnRlbF9kaXNhYmxlX3BpcGUo aW50ZWxfY3J0Yyk7Cj4gKwlpbnRlbF9kaXNhYmxlX3BpcGUoaW50ZWxfY3J0Yywgb2xkX3N0YXRl KTsKPiAgCj4gIAlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5kcF9lbmNvZGVyX2lzX21zdCkKPiAg CQlpbnRlbF9kZGlfc2V0X3ZjX3BheWxvYWRfYWxsb2MoY3J0YywgZmFsc2UpOwo+IEBAIC01MDg2 LDExICs1MDgwLDExIEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19kaXNhYmxlKHN0cnVjdCBk cm1fY3J0YyAqY3J0YykKPiAgCQkJZW5jb2Rlci0+cG9zdF9kaXNhYmxlKGVuY29kZXIpOwo+ICB9 Cj4gIAo+IC1zdGF0aWMgdm9pZCBpOXh4X3BmaXRfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjKQo+ICtzdGF0aWMgdm9pZCBpOXh4X3BmaXRfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjLAo+ICsJCQkgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAg ewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCXN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyA9IGNydGMtPmNvbmZpZzsKPiAgCj4gIAlp ZiAoIXBpcGVfY29uZmlnLT5nbWNoX3BmaXQuY29udHJvbCkKPiAgCQlyZXR1cm47Cj4gQEAgLTUx MDAsNyArNTA5NCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfcGZpdF9lbmFibGUoc3RydWN0IGludGVs X2NydGMgKmNydGMpCj4gIAkgKiBhY2NvcmRpbmcgdG8gcmVnaXN0ZXIgZGVzY3JpcHRpb24gYW5k IFBSTS4KPiAgCSAqLwo+ICAJV0FSTl9PTihJOTE1X1JFQUQoUEZJVF9DT05UUk9MKSAmIFBGSVRf RU5BQkxFKTsKPiAtCWFzc2VydF9waXBlX2Rpc2FibGVkKGRldl9wcml2LCBjcnRjLT5waXBlKTsK PiArCWFzc2VydF9waXBlX2Rpc2FibGVkKGRldl9wcml2LCBwaXBlX2NvbmZpZy0+Y3B1X3RyYW5z Y29kZXIsIGNydGMtPnBpcGUpOwo+ICAKPiAgCUk5MTVfV1JJVEUoUEZJVF9QR01fUkFUSU9TLCBw aXBlX2NvbmZpZy0+Z21jaF9wZml0LnBnbV9yYXRpb3MpOwo+ICAJSTkxNV9XUklURShQRklUX0NP TlRST0wsIHBpcGVfY29uZmlnLT5nbWNoX3BmaXQuY29udHJvbCk7Cj4gQEAgLTUxNjcsNyArNTE2 MSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGdldF9jcnRjX3Bvd2VyX2RvbWFpbnMoc3RydWN0 IGRybV9jcnRjICpjcnRjKQo+ICAJdW5zaWduZWQgbG9uZyBtYXNrOwo+ICAJZW51bSB0cmFuc2Nv ZGVyIHRyYW5zY29kZXI7Cj4gIAo+IC0JdHJhbnNjb2RlciA9IGludGVsX3BpcGVfdG9fY3B1X3Ry YW5zY29kZXIoZGV2LT5kZXZfcHJpdmF0ZSwgcGlwZSk7Cj4gKwl0cmFuc2NvZGVyID0gdG9faW50 ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSktPmNwdV90cmFuc2NvZGVyOwo+ICAKPiAgCW1hc2sg PSBCSVQoUE9XRVJfRE9NQUlOX1BJUEUocGlwZSkpOwo+ICAJbWFzayB8PSBCSVQoUE9XRVJfRE9N QUlOX1RSQU5TQ09ERVIodHJhbnNjb2RlcikpOwo+IEBAIC01NzY3LDIyICs1NzYxLDI0IEBAIHN0 YXRpYyB2b2lkIHZhbGxleXZpZXdfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ ICAJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7Cj4gIAlpbnQgcGlwZSA9IGludGVsX2Ny dGMtPnBpcGU7Cj4gIAlib29sIGlzX2RzaTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpw aXBlX2NvbmZpZzsKPiAgCj4gIAlXQVJOX09OKCFjcnRjLT5zdGF0ZS0+YWN0aXZlKTsKPiAgCj4g LQlpZiAoaW50ZWxfY3J0Yy0+YWN0aXZlKQo+ICsJaWYgKFdBUk5fT04oaW50ZWxfY3J0Yy0+YWN0 aXZlKSkKPiAgCQlyZXR1cm47Cj4gKwlwaXBlX2NvbmZpZyA9IHRvX2ludGVsX2NydGNfc3RhdGUo Y3J0Yy0+c3RhdGUpOwo+ICAKPiAgCWlzX2RzaSA9IGludGVsX3BpcGVfaGFzX3R5cGUoaW50ZWxf Y3J0YywgSU5URUxfT1VUUFVUX0RTSSk7Cj4gIAo+ICAJaWYgKCFpc19kc2kpIHsKPiAgCQlpZiAo SVNfQ0hFUlJZVklFVyhkZXYpKQo+IC0JCQljaHZfcHJlcGFyZV9wbGwoaW50ZWxfY3J0YywgaW50 ZWxfY3J0Yy0+Y29uZmlnKTsKPiArCQkJY2h2X3ByZXBhcmVfcGxsKGludGVsX2NydGMsIHBpcGVf Y29uZmlnKTsKPiAgCQllbHNlCj4gLQkJCXZsdl9wcmVwYXJlX3BsbChpbnRlbF9jcnRjLCBpbnRl bF9jcnRjLT5jb25maWcpOwo+ICsJCQl2bHZfcHJlcGFyZV9wbGwoaW50ZWxfY3J0YywgcGlwZV9j b25maWcpOwo+ICAJfQo+ICAKPiAtCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmhhc19kcF9lbmNv ZGVyKQo+ICsJaWYgKHBpcGVfY29uZmlnLT5oYXNfZHBfZW5jb2RlcikKPiAgCQlpbnRlbF9kcF9z ZXRfbV9uKGludGVsX2NydGMsIE0xX04xKTsKPiAgCj4gIAlpbnRlbF9zZXRfcGlwZV90aW1pbmdz KGludGVsX2NydGMpOwo+IEBAIC01ODA2LDE2ICs1ODAyLDE2IEBAIHN0YXRpYyB2b2lkIHZhbGxl eXZpZXdfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAKPiAgCWlmICghaXNf ZHNpKSB7Cj4gIAkJaWYgKElTX0NIRVJSWVZJRVcoZGV2KSkKPiAtCQkJY2h2X2VuYWJsZV9wbGwo aW50ZWxfY3J0YywgaW50ZWxfY3J0Yy0+Y29uZmlnKTsKPiArCQkJY2h2X2VuYWJsZV9wbGwoaW50 ZWxfY3J0YywgcGlwZV9jb25maWcpOwo+ICAJCWVsc2UKPiAtCQkJdmx2X2VuYWJsZV9wbGwoaW50 ZWxfY3J0YywgaW50ZWxfY3J0Yy0+Y29uZmlnKTsKPiArCQkJdmx2X2VuYWJsZV9wbGwoaW50ZWxf Y3J0YywgcGlwZV9jb25maWcpOwo+ICAJfQo+ICAKPiAgCWZvcl9lYWNoX2VuY29kZXJfb25fY3J0 YyhkZXYsIGNydGMsIGVuY29kZXIpCj4gIAkJaWYgKGVuY29kZXItPnByZV9lbmFibGUpCj4gIAkJ CWVuY29kZXItPnByZV9lbmFibGUoZW5jb2Rlcik7Cj4gIAo+IC0JaTl4eF9wZml0X2VuYWJsZShp bnRlbF9jcnRjKTsKPiArCWk5eHhfcGZpdF9lbmFibGUoaW50ZWxfY3J0YywgcGlwZV9jb25maWcp Owo+ICAKPiAgCWludGVsX2NydGNfbG9hZF9sdXQoY3J0Yyk7Cj4gIAo+IEBAIC01ODQ0LDExICs1 ODQwLDEzIEBAIHN0YXRpYyB2b2lkIGk5eHhfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpj cnRjKQo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYp Owo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMp Owo+ICAJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqcGlwZV9jb25maWc7Cj4gIAlpbnQgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4g IAo+IC0JV0FSTl9PTighY3J0Yy0+c3RhdGUtPmFjdGl2ZSk7Cj4gKwlwaXBlX2NvbmZpZyA9IHRv X2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+ICsJV0FSTl9PTighcGlwZV9jb25maWct PmJhc2UuYWN0aXZlKTsKPiAgCj4gLQlpZiAoaW50ZWxfY3J0Yy0+YWN0aXZlKQo+ICsJaWYgKFdB Uk5fT04oaW50ZWxfY3J0Yy0+YWN0aXZlKSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJaTl4eF9zZXRf cGxsX2RpdmlkZXJzKGludGVsX2NydGMpOwo+IEBAIC01ODY5LDkgKzU4NjcsOSBAQCBzdGF0aWMg dm9pZCBpOXh4X2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCQlpZiAoZW5j b2Rlci0+cHJlX2VuYWJsZSkKPiAgCQkJZW5jb2Rlci0+cHJlX2VuYWJsZShlbmNvZGVyKTsKPiAg Cj4gLQlpOXh4X2VuYWJsZV9wbGwoaW50ZWxfY3J0Yyk7Cj4gKwlpOXh4X2VuYWJsZV9wbGwoaW50 ZWxfY3J0YywgcGlwZV9jb25maWcpOwo+ICAKPiAtCWk5eHhfcGZpdF9lbmFibGUoaW50ZWxfY3J0 Yyk7Cj4gKwlpOXh4X3BmaXRfZW5hYmxlKGludGVsX2NydGMsIHBpcGVfY29uZmlnKTsKPiAgCj4g IAlpbnRlbF9jcnRjX2xvYWRfbHV0KGNydGMpOwo+ICAKPiBAQCAtNTg5MywxNCArNTg5MSwxMyBA QCBzdGF0aWMgdm9pZCBpOXh4X3BmaXRfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykK PiAgCWlmICghY3J0Yy0+Y29uZmlnLT5nbWNoX3BmaXQuY29udHJvbCkKPiAgCQlyZXR1cm47Cj4g IAo+IC0JYXNzZXJ0X3BpcGVfZGlzYWJsZWQoZGV2X3ByaXYsIGNydGMtPnBpcGUpOwo+IC0KPiAg CURSTV9ERUJVR19EUklWRVIoImRpc2FibGluZyBwZml0LCBjdXJyZW50OiAweCUwOHhcbiIsCj4g IAkJCSBJOTE1X1JFQUQoUEZJVF9DT05UUk9MKSk7Cj4gIAlJOTE1X1dSSVRFKFBGSVRfQ09OVFJP TCwgMCk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGk5eHhfY3J0Y19kaXNhYmxlKHN0cnVjdCBk cm1fY3J0YyAqY3J0YykKPiArc3RhdGljIHZvaWQgaTl4eF9jcnRjX2Rpc2FibGUoc3RydWN0IGRy bV9jcnRjICpjcnRjLAo+ICsJCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX3N0 YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiBAQCAt NTkyMiw3ICs1OTE5LDcgQEAgc3RhdGljIHZvaWQgaTl4eF9jcnRjX2Rpc2FibGUoc3RydWN0IGRy bV9jcnRjICpjcnRjKQo+ICAJZHJtX2NydGNfdmJsYW5rX29mZihjcnRjKTsKPiAgCWFzc2VydF92 YmxhbmtfZGlzYWJsZWQoY3J0Yyk7Cj4gIAo+IC0JaW50ZWxfZGlzYWJsZV9waXBlKGludGVsX2Ny dGMpOwo+ICsJaW50ZWxfZGlzYWJsZV9waXBlKGludGVsX2NydGMsIG9sZF9zdGF0ZSk7Cj4gIAo+ ICAJaTl4eF9wZml0X2Rpc2FibGUoaW50ZWxfY3J0Yyk7Cj4gIAo+IEBAIC01OTM2LDcgKzU5MzMs NyBAQCBzdGF0aWMgdm9pZCBpOXh4X2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMp Cj4gIAkJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ICAJCQl2bHZfZGlzYWJsZV9wbGwo ZGV2X3ByaXYsIHBpcGUpOwo+ICAJCWVsc2UKPiAtCQkJaTl4eF9kaXNhYmxlX3BsbChpbnRlbF9j cnRjKTsKPiArCQkJaTl4eF9kaXNhYmxlX3BsbChpbnRlbF9jcnRjLCBvbGRfc3RhdGUpOwo+ICAJ fQo+ICAKPiAgCWlmICghSVNfR0VOMihkZXYpKQo+IEBAIC02OTg5LDEwICs2OTg2LDEyIEBAIHZv aWQgdmx2X2ZvcmNlX3BsbF9vbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlw ZSwKPiAgewo+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPQo+ICAJCXRvX2ludGVsX2NydGMo aW50ZWxfZ2V0X2NydGNfZm9yX3BpcGUoZGV2LCBwaXBlKSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpOwo+ ICAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgcGlwZV9jb25maWcgPSB7Cj4gIAkJLmJhc2UuY3J0 YyA9ICZjcnRjLT5iYXNlLAo+ICAJCS5waXhlbF9tdWx0aXBsaWVyID0gMSwKPiAgCQkuZHBsbCA9 ICpkcGxsLAo+ICsJCS5jcHVfdHJhbnNjb2RlciA9IHN0YXRlLT5jcHVfdHJhbnNjb2RlciwKPiAg CX07Cj4gIAo+ICAJaWYgKElTX0NIRVJSWVZJRVcoZGV2KSkgewo+IEBAIC03MDE2LDYgKzcwMTUs MTYgQEAgdm9pZCB2bHZfZm9yY2VfcGxsX29uKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0g cGlwZSBwaXBlLAo+ICAgKi8KPiAgdm9pZCB2bHZfZm9yY2VfcGxsX29mZihzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSkKPiAgewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0 YyA9IGludGVsX2dldF9jcnRjX2Zvcl9waXBlKGRldiwgcGlwZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPiAr Cj4gKwkvKiBJcyBzdGF0ZS0+Y3B1X3RyYW5zY29kZXIgY29ycmVjdCB0byB1c2U/ICovCj4gKwlX QVJOX09OKGNydGMtPnN0YXRlICE9ICZ0b19pbnRlbF9jcnRjKGNydGMpLT5jb25maWctPmJhc2Up Owo+ICsKPiArCS8qIE1ha2Ugc3VyZSB0aGUgcGlwZSBpc24ndCBzdGlsbCByZWx5aW5nIG9uIHVz ICovCj4gKwlhc3NlcnRfcGlwZV9kaXNhYmxlZChkZXZfcHJpdiwgc3RhdGUtPmNwdV90cmFuc2Nv ZGVyLCBwaXBlKTsKPiArCj4gIAlpZiAoSVNfQ0hFUlJZVklFVyhkZXYpKQo+ICAJCWNodl9kaXNh YmxlX3BsbCh0b19pOTE1KGRldiksIHBpcGUpOwo+ICAJZWxzZQo+IEBAIC0xMjI3NSw2ICsxMjI4 NCw3IEBAIHN0YXRpYyBpbnQgX19pbnRlbF9zZXRfbW9kZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUpCj4gIAo+ICAJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xk X2NydGNfc3RhdGUsIGkpIHsKPiAgCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Yyk7Cj4gKwkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29u ZmlnOwo+ICAKPiAgCQlpZiAoIW5lZWRzX21vZGVzZXQoY3J0Yy0+c3RhdGUpKQo+ICAJCQljb250 aW51ZTsKPiBAQCAtMTIyODIsOCArMTIyOTIsOSBAQCBzdGF0aWMgaW50IF9faW50ZWxfc2V0X21v ZGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJCWlmICghb2xkX2NydGNfc3Rh dGUtPmFjdGl2ZSkKPiAgCQkJY29udGludWU7Cj4gIAo+ICsJCXBpcGVfY29uZmlnID0gdG9faW50 ZWxfY3J0Y19zdGF0ZShvbGRfY3J0Y19zdGF0ZSk7Cj4gIAkJaW50ZWxfY3J0Y19kcG1zX292ZXJs YXlfZGlzYWJsZSh0b19pbnRlbF9jcnRjKGNydGMpKTsKPiAtCQlkZXZfcHJpdi0+ZGlzcGxheS5j cnRjX2Rpc2FibGUoY3J0Yyk7Cj4gKwkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19kaXNhYmxlKGNy dGMsIHBpcGVfY29uZmlnKTsKPiAgCj4gIAkJaW50ZWxfY3J0Yy0+YWN0aXZlID0gZmFsc2U7Cj4g IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IGluZGV4IDgyZGNjNmVkOGIxZC4uODNkZTM2YmZk ZGMxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gQEAgLTIwOTAsNiArMjA5MCw3IEBA IHN0YXRpYyB2b2lkIGlyb25sYWtlX2VkcF9wbGxfb24oc3RydWN0IGludGVsX2RwICppbnRlbF9k cCkKPiAgCXUzMiBkcGFfY3RsOwo+ICAKPiAgCWFzc2VydF9waXBlX2Rpc2FibGVkKGRldl9wcml2 LAo+ICsJCQkgICAgIHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpLT5jcHVfdHJhbnNj b2RlciwKPiAgCQkJICAgICB0b19pbnRlbF9jcnRjKGNydGMpLT5waXBlKTsKPiAgCj4gIAlEUk1f REVCVUdfS01TKCJcbiIpOwo+IEBAIC0yMTE2LDYgKzIxMTcsNyBAQCBzdGF0aWMgdm9pZCBpcm9u bGFrZV9lZHBfcGxsX29mZihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAJdTMyIGRwYV9j dGw7Cj4gIAo+ICAJYXNzZXJ0X3BpcGVfZGlzYWJsZWQoZGV2X3ByaXYsCj4gKwkJCSAgICAgdG9f aW50ZWxfY3J0YyhjcnRjKS0+Y29uZmlnLT5jcHVfdHJhbnNjb2RlciwKPiAgCQkJICAgICB0b19p bnRlbF9jcnRjKGNydGMpLT5waXBlKTsKPiAgCj4gIAlkcGFfY3RsID0gSTkxNV9SRUFEKERQX0Ep Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggOWVmODljOTFhYTVjLi41ODI0MGU2 MzYzMGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC05OTgsOCArOTk4LDYg QEAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmludGVsX2NydGNfbW9kZV9nZXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPiAgZW51bSBwaXBlIGludGVsX2dldF9waXBlX2Zyb21fY29ubmVjdG9y KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4gIGludCBpbnRlbF9nZXRfcGlw ZV9mcm9tX2NydGNfaWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCQkJ CXN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKPiAtZW51bSB0cmFuc2NvZGVyIGludGVsX3Bp cGVfdG9fY3B1X3RyYW5zY29kZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ IC0JCQkJCSAgICAgZW51bSBwaXBlIHBpcGUpOwo+ICBib29sIGludGVsX3BpcGVfaGFzX3R5cGUo c3RydWN0IGludGVsX2NydGMgKmNydGMsIGVudW0gaW50ZWxfb3V0cHV0X3R5cGUgdHlwZSk7Cj4g IHN0YXRpYyBpbmxpbmUgdm9pZAo+ICBpbnRlbF93YWl0X2Zvcl92Ymxhbmsoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgaW50IHBpcGUpCj4gQEAgLTEwODUsOSArMTA4MywxMSBAQCB2b2lkIGFzc2Vy dF9mZGlfcnhfcGxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkgICAg ICAgZW51bSBwaXBlIHBpcGUsIGJvb2wgc3RhdGUpOwo+ICAjZGVmaW5lIGFzc2VydF9mZGlfcnhf cGxsX2VuYWJsZWQoZCwgcCkgYXNzZXJ0X2ZkaV9yeF9wbGwoZCwgcCwgdHJ1ZSkKPiAgI2RlZmlu ZSBhc3NlcnRfZmRpX3J4X3BsbF9kaXNhYmxlZChkLCBwKSBhc3NlcnRfZmRpX3J4X3BsbChkLCBw LCBmYWxzZSkKPiAtdm9pZCBhc3NlcnRfcGlwZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIGVudW0gcGlwZSBwaXBlLCBib29sIHN0YXRlKTsKPiAtI2RlZmluZSBhc3NlcnRfcGlw ZV9lbmFibGVkKGQsIHApIGFzc2VydF9waXBlKGQsIHAsIHRydWUpCj4gLSNkZWZpbmUgYXNzZXJ0 X3BpcGVfZGlzYWJsZWQoZCwgcCkgYXNzZXJ0X3BpcGUoZCwgcCwgZmFsc2UpCj4gK3ZvaWQgYXNz ZXJ0X3BpcGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCSBlbnVtIHRy YW5zY29kZXIgY3B1X3RyYW5zY29kZXIsCj4gKwkJIGVudW0gcGlwZSBwaXBlLCBib29sIHN0YXRl KTsKPiArI2RlZmluZSBhc3NlcnRfcGlwZV9lbmFibGVkKGQsIGMsIHApIGFzc2VydF9waXBlKGQs IGMsIHAsIHRydWUpCj4gKyNkZWZpbmUgYXNzZXJ0X3BpcGVfZGlzYWJsZWQoZCwgYywgcCkgYXNz ZXJ0X3BpcGUoZCwgYywgcCwgZmFsc2UpCj4gIHVuc2lnbmVkIGxvbmcgaW50ZWxfZ2VuNF9jb21w dXRlX3BhZ2Vfb2Zmc2V0KGludCAqeCwgaW50ICp5LAo+ICAJCQkJCSAgICAgdW5zaWduZWQgaW50 IHRpbGluZ19tb2RlLAo+ICAJCQkJCSAgICAgdW5zaWduZWQgaW50IGJwcCwKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BhbmVsLmMKPiBpbmRleCA3ZDgzNTI3Zjk1ZjcuLjY3ZWFmYTI3NDAwYiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+IEBAIC04MzcsOSArODM3LDggQEAgc3Rh dGljIHZvaWQgcGNoX2VuYWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29u bmVjdG9yKQo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+YmFzZS5kZXY7 Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRl Owo+ICAJc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZjb25uZWN0b3ItPnBhbmVsOwo+IC0J ZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9nZXRfcGlwZV9mcm9tX2Nvbm5lY3Rvcihjb25uZWN0b3Ip Owo+ICAJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0KPiAtCQlpbnRlbF9waXBlX3Rv X2NwdV90cmFuc2NvZGVyKGRldl9wcml2LCBwaXBlKTsKPiArCQl0b19pbnRlbF9jcnRjX3N0YXRl KGNvbm5lY3Rvci0+ZW5jb2Rlci0+YmFzZS5jcnRjLT5zdGF0ZSktPmNwdV90cmFuc2NvZGVyOwo+ ICAJdTMyIGNwdV9jdGwyLCBwY2hfY3RsMSwgcGNoX2N0bDI7Cj4gIAo+ICAJY3B1X2N0bDIgPSBJ OTE1X1JFQUQoQkxDX1BXTV9DUFVfQ1RMMik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3R2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90di5jCj4gaW5k ZXggOGI5ZDMyNWJkYTNjLi5iNGFlYjI1NjEyOGYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfdHYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3R2 LmMKPiBAQCAtMTExNyw3ICsxMTE3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfdHZfcHJlX2VuYWJs ZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgCQkJICAgKCh2aWRlb19sZXZlbHMt PmJsYWNrIDw8IFRWX0JMQUNLX0xFVkVMX1NISUZUKSB8Cj4gIAkJCSAgICAodmlkZW9fbGV2ZWxz LT5ibGFuayA8PCBUVl9CTEFOS19MRVZFTF9TSElGVCkpKTsKPiAgCj4gLQlhc3NlcnRfcGlwZV9k aXNhYmxlZChkZXZfcHJpdiwgaW50ZWxfY3J0Yy0+cGlwZSk7Cj4gKwlhc3NlcnRfcGlwZV9kaXNh YmxlZChkZXZfcHJpdiwgdG9faW50ZWxfY3J0Y19zdGF0ZShpbnRlbF9jcnRjLT5iYXNlLnN0YXRl KS0+Y3B1X3RyYW5zY29kZXIsIGludGVsX2NydGMtPnBpcGUpOwoKVGhlc2UgdHdvIGh1bmtzIGxv b2sgbWlzcGxhY2VkLCBzaG91bGQgYmUgaW4gYSBkaWZmZXJlbnQgcGF0Y2guIEkgZGlkbid0CmNv bW1lbnQgYWJvdXQgYWxsIG9mIHRoZW0sIGJ1dCBpbW8gdGhlIHBhdGNoIHRvIHJvbGwgb3V0IHRo ZSBvbGQgc3RhdGUgZm9yCmNydGNfZGlzYWJsZSBzaG91bGRuJ3QgbWl4IGh1bmtzIHdpdGggX2Vu YWJsIGNvZGUsIHNpbmNlIHRoZW4gY2hlY2tpbmcgZm9yCndoZXRoZXIgd2UgbmVlZCB0aGUgb2xk IG9yIG5ldyBzdGF0ZSBnZXRzIHJlYWxseSBxdWlja2x5IGNvbmZ1c2luZy4KLURhbmllbAoKCj4g IAo+ICAJLyogRmlsdGVyIGN0bCBtdXN0IGJlIHNldCBiZWZvcmUgVFZfV0lOX1NJWkUgKi8KPiAg CUk5MTVfV1JJVEUoVFZfRklMVEVSX0NUTF8xLCBUVl9BVVRPX1NDQUxFKTsKPiAtLSAKPiAyLjEu MAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK PiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24K aHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK