From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH 22/42] drm/i915: Pass old state to crtc_disable and use it. Date: Mon, 11 May 2015 16:24:58 +0200 Message-ID: <1431354318-11995-23-git-send-email-maarten.lankhorst@linux.intel.com> References: <1431354318-11995-1-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 mblankhorst.nl (mblankhorst.nl [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTP id A59A86E407 for ; Mon, 11 May 2015 07:25:44 -0700 (PDT) In-Reply-To: <1431354318-11995-1-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: intel-gfx@lists.freedesktop.org Cc: Ander Conselvan de Oliveira List-Id: intel-gfx@lists.freedesktop.org U2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4 LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAg IDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDIwNyArKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHAuYyAgICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8 ICAxMCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyAgIHwgICAzICstCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90di5jICAgICAgfCAgIDIgKy0KIDYgZmlsZXMgY2hh bmdlZCwgMTIwIGluc2VydGlvbnMoKyksIDEwNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAppbmRleCBhNmQzYWI5NGVjMTUuLjNiYTE1ZGY0YzkzYSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCkBAIC01NzMsNyArNTczLDggQEAgc3RydWN0IGRybV9pOTE1X2Rpc3BsYXlfZnVu Y3MgewogCWludCAoKmNydGNfY29tcHV0ZV9jbG9jaykoc3RydWN0IGludGVsX2NydGMgKmNydGMs CiAJCQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7CiAJdm9pZCAoKmNy dGNfZW5hYmxlKShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwotCXZvaWQgKCpjcnRjX2Rpc2FibGUp KHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CisJdm9pZCAoKmNydGNfZGlzYWJsZSkoc3RydWN0IGRy bV9jcnRjICpjcnRjLAorCQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX3N0YXRl KTsKIAl2b2lkICgqYXVkaW9fY29kZWNfZW5hYmxlKShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLAogCQkJCSAgIHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQkJCSAgIHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwppbmRleCA5YmYzMTM3MWVkNDkuLjMxMWE0YjQ0YmViZSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYwpAQCAtOTgyLDggKzk4Miw2IEBAIGJvb2wgYnh0X2ZpbmRfYmVzdF9k cGxsKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLCBpbnQgdGFyZ2V0X2Nsb2Nr LAogCiBib29sIGludGVsX2NydGNfYWN0aXZlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIHsKLQlz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0KIAkv KiBCZSBwYXJhbm9pZCBhcyB3ZSBjYW4gYXJyaXZlIGhlcmUgd2l0aCBvbmx5IHBhcnRpYWwKIAkg KiBzdGF0ZSByZXRyaWV2ZWQgZnJvbSB0aGUgaGFyZHdhcmUgZHVyaW5nIHNldHVwLgogCSAqCkBA IC05OTcsMTcgKzk5NSw4IEBAIGJvb2wgaW50ZWxfY3J0Y19hY3RpdmUoc3RydWN0IGRybV9jcnRj ICpjcnRjKQogCSAqIGNydGMtPnN0YXRlLT5hY3RpdmUgb25jZSB3ZSBoYXZlIHByb3BlciBDUlRD IHN0YXRlcyB3aXJlZCB1cAogCSAqIGZvciBhdG9taWMuCiAJICovCi0JcmV0dXJuIGludGVsX2Ny dGMtPmFjdGl2ZSAmJiBjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+ZmIgJiYKLQkJaW50ZWxfY3J0Yy0+ Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKLX0KLQotZW51bSB0cmFuc2Nv ZGVyIGludGVsX3BpcGVfdG9fY3B1X3RyYW5zY29kZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAotCQkJCQkgICAgIGVudW0gcGlwZSBwaXBlKQotewotCXN0cnVjdCBkcm1fY3J0 YyAqY3J0YyA9IGRldl9wcml2LT5waXBlX3RvX2NydGNfbWFwcGluZ1twaXBlXTsKLQlzdHJ1Y3Qg aW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0KLQlyZXR1cm4g aW50ZWxfY3J0Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2RlcjsKKwlyZXR1cm4gY3J0Yy0+c3RhdGUt PmFjdGl2ZSAmJiBjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+ZmIgJiYKKwkJY3J0Yy0+c3RhdGUtPmFk anVzdGVkX21vZGUuY3J0Y19jbG9jazsKIH0KIAogc3RhdGljIGJvb2wgcGlwZV9kc2xfc3RvcHBl ZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSkKQEAgLTEwMjksOSArMTAx OCwxMCBAQCBzdGF0aWMgYm9vbCBwaXBlX2RzbF9zdG9wcGVkKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIGVudW0gcGlwZSBwaXBlKQogCXJldHVybiBsaW5lMSA9PSBsaW5lMjsKIH0KIAotLyoKKy8q KgogICogaW50ZWxfd2FpdF9mb3JfcGlwZV9vZmYgLSB3YWl0IGZvciBwaXBlIHRvIHR1cm4gb2Zm CiAgKiBAY3J0YzogY3J0YyB3aG9zZSBwaXBlIHRvIHdhaXQgZm9yCisgKiBAb2xkX3N0YXRlOiBj dXJyZW50bHkgYXBwbGllZCBjb25maWcKICAqCiAgKiBBZnRlciBkaXNhYmxpbmcgYSBwaXBlLCB3 ZSBjYW4ndCB3YWl0IGZvciB2YmxhbmsgaW4gdGhlIHVzdWFsIHdheSwKICAqIHNwaW5uaW5nIG9u IHRoZSB2YmxhbmsgaW50ZXJydXB0IHN0YXR1cyBiaXQsIHNpbmNlIHdlIHdvbid0IGFjdHVhbGx5 CkBAIC0xMDQ1LDExICsxMDM1LDEyIEBAIHN0YXRpYyBib29sIHBpcGVfZHNsX3N0b3BwZWQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBpcGUpCiAgKiAgIGVuZHMgdXAgc3RvcHBp bmcgYXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IGZyYW1lKS4KICAqCiAgKi8KLXN0YXRpYyB2b2lk IGludGVsX3dhaXRfZm9yX3BpcGVfb2ZmKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQorc3RhdGlj IHZvaWQgaW50ZWxfd2FpdF9mb3JfcGlwZV9vZmYoc3RydWN0IGludGVsX2NydGMgKmNydGMsCisJ CQkJICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfc3RhdGUpCiB7CiAJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0JZW51bSB0cmFuc2NvZGVyIGNwdV90cmFu c2NvZGVyID0gY3J0Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2RlcjsKKwllbnVtIHRyYW5zY29kZXIg Y3B1X3RyYW5zY29kZXIgPSBvbGRfc3RhdGUtPmNwdV90cmFuc2NvZGVyOwogCWVudW0gcGlwZSBw aXBlID0gY3J0Yy0+cGlwZTsKIAogCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7CkBA IC0xMTgwLDEzICsxMTcxLDEyIEBAIHZvaWQgYXNzZXJ0X3NoYXJlZF9kcGxsKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIH0KIAogc3RhdGljIHZvaWQgYXNzZXJ0X2ZkaV90eChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgIGVudW0gdHJhbnNjb2RlciBj cHVfdHJhbnNjb2RlciwKIAkJCSAgZW51bSBwaXBlIHBpcGUsIGJvb2wgc3RhdGUpCiB7CiAJaW50 IHJlZzsKIAl1MzIgdmFsOwogCWJvb2wgY3VyX3N0YXRlOwotCWVudW0gdHJhbnNjb2RlciBjcHVf dHJhbnNjb2RlciA9IGludGVsX3BpcGVfdG9fY3B1X3RyYW5zY29kZXIoZGV2X3ByaXYsCi0JCQkJ CQkJCSAgICAgIHBpcGUpOwogCiAJaWYgKEhBU19EREkoZGV2X3ByaXYtPmRldikpIHsKIAkJLyog RERJIGRvZXMgbm90IGhhdmUgYSBzcGVjaWZpYyBGRElfVFggcmVnaXN0ZXIgKi8KQEAgLTEyMDIs OCArMTE5Miw4IEBAIHN0YXRpYyB2b2lkIGFzc2VydF9mZGlfdHgoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAogCSAgICAgIkZESSBUWCBzdGF0ZSBhc3NlcnRpb24gZmFpbHVyZSAo ZXhwZWN0ZWQgJXMsIGN1cnJlbnQgJXMpXG4iLAogCSAgICAgc3RhdGVfc3RyaW5nKHN0YXRlKSwg c3RhdGVfc3RyaW5nKGN1cl9zdGF0ZSkpOwogfQotI2RlZmluZSBhc3NlcnRfZmRpX3R4X2VuYWJs ZWQoZCwgcCkgYXNzZXJ0X2ZkaV90eChkLCBwLCB0cnVlKQotI2RlZmluZSBhc3NlcnRfZmRpX3R4 X2Rpc2FibGVkKGQsIHApIGFzc2VydF9mZGlfdHgoZCwgcCwgZmFsc2UpCisjZGVmaW5lIGFzc2Vy dF9mZGlfdHhfZW5hYmxlZChkLCBjLCBwKSBhc3NlcnRfZmRpX3R4KGQsIGMsIHAsIHRydWUpCisj ZGVmaW5lIGFzc2VydF9mZGlfdHhfZGlzYWJsZWQoZCwgYywgcCkgYXNzZXJ0X2ZkaV90eChkLCBj LCBwLCBmYWxzZSkKIAogc3RhdGljIHZvaWQgYXNzZXJ0X2ZkaV9yeChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkgIGVudW0gcGlwZSBwaXBlLCBib29sIHN0YXRlKQpAQCAt MTMxNywxMyArMTMwNywxMiBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfY3Vyc29yKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKICNkZWZpbmUgYXNzZXJ0X2N1cnNvcl9kaXNhYmxlZChk LCBwKSBhc3NlcnRfY3Vyc29yKGQsIHAsIGZhbHNlKQogCiB2b2lkIGFzc2VydF9waXBlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJIGVudW0gdHJhbnNjb2RlciBjcHVfdHJh bnNjb2RlciwKIAkJIGVudW0gcGlwZSBwaXBlLCBib29sIHN0YXRlKQogewogCWludCByZWc7CiAJ dTMyIHZhbDsKIAlib29sIGN1cl9zdGF0ZTsKLQllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29k ZXIgPSBpbnRlbF9waXBlX3RvX2NwdV90cmFuc2NvZGVyKGRldl9wcml2LAotCQkJCQkJCQkgICAg ICBwaXBlKTsKIAogCS8qIGlmIHdlIG5lZWQgdGhlIHBpcGUgcXVpcmsgaXQgbXVzdCBiZSBhbHdh eXMgb24gKi8KIAlpZiAoKHBpcGUgPT0gUElQRV9BICYmIGRldl9wcml2LT5xdWlya3MgJiBRVUlS S19QSVBFQV9GT1JDRSkgfHwKQEAgLTE2MTUsNyArMTYwNCw3IEBAIHN0YXRpYyB2b2lkIHZsdl9l bmFibGVfcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCWludCByZWcgPSBEUExMKGNydGMt PnBpcGUpOwogCXUzMiBkcGxsID0gcGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUuZHBsbDsKIAot CWFzc2VydF9waXBlX2Rpc2FibGVkKGRldl9wcml2LCBjcnRjLT5waXBlKTsKKwlhc3NlcnRfcGlw ZV9kaXNhYmxlZChkZXZfcHJpdiwgcGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyLCBjcnRjLT5w aXBlKTsKIAogCS8qIE5vIHJlYWxseSwgbm90IGZvciBJTEsrICovCiAJQlVHX09OKCFJU19WQUxM RVlWSUVXKGRldl9wcml2LT5kZXYpKTsKQEAgLTE2NTUsNyArMTY0NCw3IEBAIHN0YXRpYyB2b2lk IGNodl9lbmFibGVfcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCWVudW0gZHBpb19jaGFu bmVsIHBvcnQgPSB2bHZfcGlwZV90b19jaGFubmVsKHBpcGUpOwogCXUzMiB0bXA7CiAKLQlhc3Nl cnRfcGlwZV9kaXNhYmxlZChkZXZfcHJpdiwgY3J0Yy0+cGlwZSk7CisJYXNzZXJ0X3BpcGVfZGlz YWJsZWQoZGV2X3ByaXYsIHBpcGVfY29uZmlnLT5jcHVfdHJhbnNjb2RlciwgY3J0Yy0+cGlwZSk7 CiAKIAlCVUdfT04oIUlTX0NIRVJSWVZJRVcoZGV2X3ByaXYtPmRldikpOwogCkBAIC0xNjk3LDE0 ICsxNjg2LDE0IEBAIHN0YXRpYyBpbnQgaW50ZWxfbnVtX2R2b19waXBlcyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQogCXJldHVybiBjb3VudDsKIH0KIAotc3RhdGljIHZvaWQgaTl4eF9lbmFibGVf cGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQorc3RhdGljIHZvaWQgaTl4eF9lbmFibGVfcGxs KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9j b25maWcpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2OwogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJaW50 IHJlZyA9IERQTEwoY3J0Yy0+cGlwZSk7CiAJdTMyIGRwbGwgPSBjcnRjLT5jb25maWctPmRwbGxf aHdfc3RhdGUuZHBsbDsKIAotCWFzc2VydF9waXBlX2Rpc2FibGVkKGRldl9wcml2LCBjcnRjLT5w aXBlKTsKKwlhc3NlcnRfcGlwZV9kaXNhYmxlZChkZXZfcHJpdiwgcGlwZV9jb25maWctPmNwdV90 cmFuc2NvZGVyLCBjcnRjLT5waXBlKTsKIAogCS8qIE5vIHJlYWxseSwgbm90IGZvciBJTEsrICov CiAJQlVHX09OKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDUpOwpAQCAtMTc1NywxMyArMTc0Niwx NCBAQCBzdGF0aWMgdm9pZCBpOXh4X2VuYWJsZV9wbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMp CiAvKioKICAqIGk5eHhfZGlzYWJsZV9wbGwgLSBkaXNhYmxlIGEgUExMCiAgKiBAZGV2X3ByaXY6 IGk5MTUgcHJpdmF0ZSBzdHJ1Y3R1cmUKLSAqIEBwaXBlOiBwaXBlIFBMTCB0byBkaXNhYmxlCisg KiBAcGlwZV9jb25maWc6IGN1cnJlbnRseSBhcHBsaWVkIGNvbmZpZwogICoKICAqIERpc2FibGUg dGhlIFBMTCBmb3IgQHBpcGUsIG1ha2luZyBzdXJlIHRoZSBwaXBlIGlzIG9mZiBmaXJzdC4KICAq CiAgKiBOb3RlISAgVGhpcyBpcyBmb3IgcHJlLUlMSyBvbmx5LgogICovCi1zdGF0aWMgdm9pZCBp OXh4X2Rpc2FibGVfcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQorc3RhdGljIHZvaWQgaTl4 eF9kaXNhYmxlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKKwkJCSAgICAgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjcnRjLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwpAQCAtMTc4NSw3ICsxNzc1LDcgQEAgc3RhdGljIHZvaWQgaTl4eF9k aXNhYmxlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIAkJcmV0dXJuOwogCiAJLyogTWFr ZSBzdXJlIHRoZSBwaXBlIGlzbid0IHN0aWxsIHJlbHlpbmcgb24gdXMgKi8KLQlhc3NlcnRfcGlw ZV9kaXNhYmxlZChkZXZfcHJpdiwgcGlwZSk7CisJYXNzZXJ0X3BpcGVfZGlzYWJsZWQoZGV2X3By aXYsIHBpcGVfY29uZmlnLT5jcHVfdHJhbnNjb2RlciwgcGlwZSk7CiAKIAlJOTE1X1dSSVRFKERQ TEwocGlwZSksIDApOwogCVBPU1RJTkdfUkVBRChEUExMKHBpcGUpKTsKQEAgLTE3OTUsOSArMTc4 NSw2IEBAIHN0YXRpYyB2b2lkIHZsdl9kaXNhYmxlX3BsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBlKQogewogCXUzMiB2YWwgPSAwOwogCi0JLyogTWFr ZSBzdXJlIHRoZSBwaXBlIGlzbid0IHN0aWxsIHJlbHlpbmcgb24gdXMgKi8KLQlhc3NlcnRfcGlw ZV9kaXNhYmxlZChkZXZfcHJpdiwgcGlwZSk7Ci0KIAkvKgogCSAqIExlYXZlIGludGVncmF0ZWQg Y2xvY2sgc291cmNlIGFuZCByZWZlcmVuY2UgY2xvY2sgZW5hYmxlZCBmb3IgcGlwZSBCLgogCSAq IFRoZSBsYXR0ZXIgaXMgbmVlZGVkIGZvciBWR0EgaG90cGx1ZyAvIG1hbnVhbCBkZXRlY3Rpb24u CkBAIC0xODE0LDkgKzE4MDEsNiBAQCBzdGF0aWMgdm9pZCBjaHZfZGlzYWJsZV9wbGwoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSkKIAllbnVtIGRwaW9f Y2hhbm5lbCBwb3J0ID0gdmx2X3BpcGVfdG9fY2hhbm5lbChwaXBlKTsKIAl1MzIgdmFsOwogCi0J LyogTWFrZSBzdXJlIHRoZSBwaXBlIGlzbid0IHN0aWxsIHJlbHlpbmcgb24gdXMgKi8KLQlhc3Nl cnRfcGlwZV9kaXNhYmxlZChkZXZfcHJpdiwgcGlwZSk7Ci0KIAkvKiBTZXQgUExMIGVuID0gMCAq LwogCXZhbCA9IERQTExfU1NDX1JFRl9DTE9DS19DSFYgfCBEUExMX1JFRkFfQ0xLX0VOQUJMRV9W TFY7CiAJaWYgKHBpcGUgIT0gUElQRV9BKQpAQCAtMTk2OCw3ICsxOTUyLDggQEAgc3RhdGljIHZv aWQgaW50ZWxfZGlzYWJsZV9zaGFyZWRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIH0K IAogc3RhdGljIHZvaWQgaXJvbmxha2VfZW5hYmxlX3BjaF90cmFuc2NvZGVyKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCQkJICAgZW51bSBwaXBlIHBpcGUpCisJCQkJCSAg IGVudW0gcGlwZSBwaXBlLAorCQkJCQkgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9j b25maWcpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7CiAJc3Ry dWN0IGRybV9jcnRjICpjcnRjID0gZGV2X3ByaXYtPnBpcGVfdG9fY3J0Y19tYXBwaW5nW3BpcGVd OwpAQCAtMTk4Myw3ICsxOTY4LDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfZW5hYmxlX3BjaF90 cmFuc2NvZGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkgICBpbnRl bF9jcnRjX3RvX3NoYXJlZF9kcGxsKGludGVsX2NydGMpKTsKIAogCS8qIEZESSBtdXN0IGJlIGZl ZWRpbmcgdXMgYml0cyBmb3IgUENIIHBvcnRzICovCi0JYXNzZXJ0X2ZkaV90eF9lbmFibGVkKGRl dl9wcml2LCBwaXBlKTsKKwlhc3NlcnRfZmRpX3R4X2VuYWJsZWQoZGV2X3ByaXYsIHBpcGVfY29u ZmlnLT5jcHVfdHJhbnNjb2RlciwgcGlwZSk7CiAJYXNzZXJ0X2ZkaV9yeF9lbmFibGVkKGRldl9w cml2LCBwaXBlKTsKIAogCWlmIChIQVNfUENIX0NQVChkZXYpKSB7CkBAIC0yMDMyLDcgKzIwMTcs NyBAQCBzdGF0aWMgdm9pZCBscHRfZW5hYmxlX3BjaF90cmFuc2NvZGVyKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKIAlCVUdfT04oIUhBU19QQ0hfU1BMSVQoZGV2X3ByaXYtPmRl dikpOwogCiAJLyogRkRJIG11c3QgYmUgZmVlZGluZyB1cyBiaXRzIGZvciBQQ0ggcG9ydHMgKi8K LQlhc3NlcnRfZmRpX3R4X2VuYWJsZWQoZGV2X3ByaXYsIChlbnVtIHBpcGUpIGNwdV90cmFuc2Nv ZGVyKTsKKwlhc3NlcnRfZmRpX3R4X2VuYWJsZWQoZGV2X3ByaXYsIGNwdV90cmFuc2NvZGVyLCAo ZW51bSBwaXBlKSBjcHVfdHJhbnNjb2Rlcik7CiAJYXNzZXJ0X2ZkaV9yeF9lbmFibGVkKGRldl9w cml2LCBUUkFOU0NPREVSX0EpOwogCiAJLyogV29ya2Fyb3VuZDogc2V0IHRpbWluZyBvdmVycmlk ZSBiaXQuICovCkBAIC0yMDU1LDEzICsyMDQwLDE0IEBAIHN0YXRpYyB2b2lkIGxwdF9lbmFibGVf cGNoX3RyYW5zY29kZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogfQogCiBz dGF0aWMgdm9pZCBpcm9ubGFrZV9kaXNhYmxlX3BjaF90cmFuc2NvZGVyKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkJICAgIGVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNj b2RlciwKIAkJCQkJICAgIGVudW0gcGlwZSBwaXBlKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBkZXZfcHJpdi0+ZGV2OwogCXVpbnQzMl90IHJlZywgdmFsOwogCiAJLyogRkRJIHJlbGll cyBvbiB0aGUgdHJhbnNjb2RlciAqLwotCWFzc2VydF9mZGlfdHhfZGlzYWJsZWQoZGV2X3ByaXYs IHBpcGUpOworCWFzc2VydF9mZGlfdHhfZGlzYWJsZWQoZGV2X3ByaXYsIGNwdV90cmFuc2NvZGVy LCBwaXBlKTsKIAlhc3NlcnRfZmRpX3J4X2Rpc2FibGVkKGRldl9wcml2LCBwaXBlKTsKIAogCS8q IFBvcnRzIG11c3QgYmUgb2ZmIGFzIHdlbGwgKi8KQEAgLTIxMTMsOCArMjA5OSw5IEBAIHN0YXRp YyB2b2lkIGludGVsX2VuYWJsZV9waXBlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCWVudW0gcGlwZSBwaXBlID0gY3J0 Yy0+cGlwZTsKLQllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBpbnRlbF9waXBlX3Rv X2NwdV90cmFuc2NvZGVyKGRldl9wcml2LAotCQkJCQkJCQkgICAgICBwaXBlKTsKKwlzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcgPQorCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNy dGMtPmJhc2Uuc3RhdGUpOworCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IHBpcGVf Y29uZmlnLT5jcHVfdHJhbnNjb2RlcjsKIAllbnVtIHBpcGUgcGNoX3RyYW5zY29kZXI7CiAJaW50 IHJlZzsKIAl1MzIgdmFsOwpAQCAtMjE2Myw2ICsyMTUwLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf ZW5hYmxlX3BpcGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiAvKioKICAqIGludGVsX2Rpc2Fi bGVfcGlwZSAtIGRpc2FibGUgYSBwaXBlLCBhc3NlcnRpbmcgcmVxdWlyZW1lbnRzCiAgKiBAY3J0 YzogY3J0YyB3aG9zZSBwaXBlcyBpcyB0byBiZSBkaXNhYmxlZAorICogQG9sZF9zdGF0ZTogY3Vy cmVudGx5IGFwcGxpZWQgY29uZmlnCiAgKgogICogRGlzYWJsZSB0aGUgcGlwZSBvZiBAY3J0Yywg bWFraW5nIHN1cmUgdGhhdCB2YXJpb3VzIGhhcmR3YXJlCiAgKiBzcGVjaWZpYyByZXF1aXJlbWVu dHMgYXJlIG1ldCwgaWYgYXBwbGljYWJsZSwgZS5nLiBwbGFuZQpAQCAtMjE3MCwxMCArMjE1OCwx MSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfcGlwZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YykKICAqCiAgKiBXaWxsIHdhaXQgdW50aWwgdGhlIHBpcGUgaGFzIHNodXQgZG93biBiZWZvcmUg cmV0dXJuaW5nLgogICovCi1zdGF0aWMgdm9pZCBpbnRlbF9kaXNhYmxlX3BpcGUoc3RydWN0IGlu dGVsX2NydGMgKmNydGMpCitzdGF0aWMgdm9pZCBpbnRlbF9kaXNhYmxlX3BpcGUoc3RydWN0IGlu dGVsX2NydGMgKmNydGMsCisJCQkgICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9z dGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBjcnRjLT5iYXNl LmRldi0+ZGV2X3ByaXZhdGU7Ci0JZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gY3J0 Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2RlcjsKKwllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29k ZXIgPSBvbGRfc3RhdGUtPmNwdV90cmFuc2NvZGVyOwogCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+ cGlwZTsKIAlpbnQgcmVnOwogCXUzMiB2YWw7CkBAIC0yMTk1LDcgKzIxODQsNyBAQCBzdGF0aWMg dm9pZCBpbnRlbF9kaXNhYmxlX3BpcGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiAJICogRG91 YmxlIHdpZGUgaGFzIGltcGxpY2F0aW9ucyBmb3IgcGxhbmVzCiAJICogc28gYmVzdCBrZWVwIGl0 IGRpc2FibGVkIHdoZW4gbm90IG5lZWRlZC4KIAkgKi8KLQlpZiAoY3J0Yy0+Y29uZmlnLT5kb3Vi bGVfd2lkZSkKKwlpZiAob2xkX3N0YXRlLT5kb3VibGVfd2lkZSkKIAkJdmFsICY9IH5QSVBFQ09O Rl9ET1VCTEVfV0lERTsKIAogCS8qIERvbid0IGRpc2FibGUgcGlwZSBvciBwaXBlIFBMTHMgaWYg bmVlZGVkICovCkBAIC0yMjA1LDcgKzIxOTQsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kaXNhYmxl X3BpcGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiAKIAlJOTE1X1dSSVRFKHJlZywgdmFsKTsK IAlpZiAoKHZhbCAmIFBJUEVDT05GX0VOQUJMRSkgPT0gMCkKLQkJaW50ZWxfd2FpdF9mb3JfcGlw ZV9vZmYoY3J0Yyk7CisJCWludGVsX3dhaXRfZm9yX3BpcGVfb2ZmKGNydGMsIG9sZF9zdGF0ZSk7 CiB9CiAKIC8qCkBAIC0zMzk1LDkgKzMzODQsNiBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9mZGlf bGlua190cmFpbihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJaW50IHBpcGUgPSBpbnRlbF9jcnRj LT5waXBlOwogCXUzMiByZWcsIHRlbXAsIHRyaWVzOwogCi0JLyogRkRJIG5lZWRzIGJpdHMgZnJv bSBwaXBlIGZpcnN0ICovCi0JYXNzZXJ0X3BpcGVfZW5hYmxlZChkZXZfcHJpdiwgcGlwZSk7Ci0K IAkvKiBUcmFpbiAxOiB1bWFzayBGREkgUlggSW50ZXJydXB0IHN5bWJvbF9sb2NrIGFuZCBiaXRf bG9jayBiaXQKIAkgICBmb3IgdHJhaW4gcmVzdWx0ICovCiAJcmVnID0gRkRJX1JYX0lNUihwaXBl KTsKQEAgLTM3MzcsNyArMzcyMyw4IEBAIHRyYWluX2RvbmU6CiAJRFJNX0RFQlVHX0tNUygiRkRJ IHRyYWluIGRvbmUuXG4iKTsKIH0KIAotc3RhdGljIHZvaWQgaXJvbmxha2VfZmRpX3BsbF9lbmFi bGUoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMpCitzdGF0aWMgdm9pZCBpcm9ubGFrZV9m ZGlfcGxsX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKKwkJCQkgICAgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQogewogCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwpAQCAtMzc0OSw3ICszNzM2LDcgQEAgc3RhdGlj IHZvaWQgaXJvbmxha2VfZmRpX3BsbF9lbmFibGUoc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMpCiAJcmVnID0gRkRJX1JYX0NUTChwaXBlKTsKIAl0ZW1wID0gSTkxNV9SRUFEKHJlZyk7CiAJ dGVtcCAmPSB+KEZESV9EUF9QT1JUX1dJRFRIX01BU0sgfCAoMHg3IDw8IDE2KSk7Ci0JdGVtcCB8 PSBGRElfRFBfUE9SVF9XSURUSChpbnRlbF9jcnRjLT5jb25maWctPmZkaV9sYW5lcyk7CisJdGVt cCB8PSBGRElfRFBfUE9SVF9XSURUSChwaXBlX2NvbmZpZy0+ZmRpX2xhbmVzKTsKIAl0ZW1wIHw9 IChJOTE1X1JFQUQoUElQRUNPTkYocGlwZSkpICYgUElQRUNPTkZfQlBDX01BU0spIDw8IDExOwog CUk5MTVfV1JJVEUocmVnLCB0ZW1wIHwgRkRJX1JYX1BMTF9FTkFCTEUpOwogCkBAIC00MDkzLDcg KzQwODAsNyBAQCBzdGF0aWMgdm9pZCBpdnlicmlkZ2VfdXBkYXRlX2ZkaV9iY19iaWZ1cmNhdGlv bihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKICAqICAgLSBEUCB0cmFuc2NvZGluZyBi aXRzCiAgKiAgIC0gdHJhbnNjb2RlcgogICovCi1zdGF0aWMgdm9pZCBpcm9ubGFrZV9wY2hfZW5h YmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3N0YXRpYyB2b2lkIGlyb25sYWtlX3BjaF9lbmFi bGUoc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9j b25maWcpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwpAQCAtNDEyMiw3 ICs0MTA5LDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfcGNoX2VuYWJsZShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpCiAJCXRlbXAgPSBJOTE1X1JFQUQoUENIX0RQTExfU0VMKTsKIAkJdGVtcCB8PSBU UkFOU19EUExMX0VOQUJMRShwaXBlKTsKIAkJc2VsID0gVFJBTlNfRFBMTEJfU0VMKHBpcGUpOwot CQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5zaGFyZWRfZHBsbCA9PSBEUExMX0lEX1BDSF9QTExf QikKKwkJaWYgKHBpcGVfY29uZmlnLT5zaGFyZWRfZHBsbCA9PSBEUExMX0lEX1BDSF9QTExfQikK IAkJCXRlbXAgfD0gc2VsOwogCQllbHNlCiAJCQl0ZW1wICY9IH5zZWw7CkBAIC00MTQ1LDcgKzQx MzIsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9wY2hfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YykKIAlpbnRlbF9mZGlfbm9ybWFsX3RyYWluKGNydGMpOwogCiAJLyogRm9yIFBDSCBEUCwg ZW5hYmxlIFRSQU5TX0RQX0NUTCAqLwotCWlmIChIQVNfUENIX0NQVChkZXYpICYmIGludGVsX2Ny dGMtPmNvbmZpZy0+aGFzX2RwX2VuY29kZXIpIHsKKwlpZiAoSEFTX1BDSF9DUFQoZGV2KSAmJiBw aXBlX2NvbmZpZy0+aGFzX2RwX2VuY29kZXIpIHsKIAkJdTMyIGJwYyA9IChJOTE1X1JFQUQoUElQ RUNPTkYocGlwZSkpICYgUElQRUNPTkZfQlBDX01BU0spID4+IDU7CiAJCXJlZyA9IFRSQU5TX0RQ X0NUTChwaXBlKTsKIAkJdGVtcCA9IEk5MTVfUkVBRChyZWcpOwpAQCAtNDE3OCw3ICs0MTY1LDcg QEAgc3RhdGljIHZvaWQgaXJvbmxha2VfcGNoX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMp CiAJCUk5MTVfV1JJVEUocmVnLCB0ZW1wKTsKIAl9CiAKLQlpcm9ubGFrZV9lbmFibGVfcGNoX3Ry YW5zY29kZXIoZGV2X3ByaXYsIHBpcGUpOworCWlyb25sYWtlX2VuYWJsZV9wY2hfdHJhbnNjb2Rl cihkZXZfcHJpdiwgcGlwZSwgcGlwZV9jb25maWcpOwogfQogCiBzdGF0aWMgdm9pZCBscHRfcGNo X2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCkBAIC00Nzg5LDIzICs0Nzc2LDI1IEBAIHN0 YXRpYyB2b2lkIGlyb25sYWtlX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CiAJc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7CiAJaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBl OworCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZzsKIAogCVdBUk5fT04oIWNy dGMtPnN0YXRlLT5lbmFibGUpOwogCi0JaWYgKGludGVsX2NydGMtPmFjdGl2ZSkKKwlpZiAoV0FS Tl9PTihpbnRlbF9jcnRjLT5hY3RpdmUpKQogCQlyZXR1cm47CisJcGlwZV9jb25maWcgPSB0b19p bnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKIAotCWlmIChpbnRlbF9jcnRjLT5jb25maWct Pmhhc19wY2hfZW5jb2RlcikKKwlpZiAocGlwZV9jb25maWctPmhhc19wY2hfZW5jb2RlcikKIAkJ aW50ZWxfcHJlcGFyZV9zaGFyZWRfZHBsbChpbnRlbF9jcnRjKTsKIAotCWlmIChpbnRlbF9jcnRj LT5jb25maWctPmhhc19kcF9lbmNvZGVyKQorCWlmIChwaXBlX2NvbmZpZy0+aGFzX2RwX2VuY29k ZXIpCiAJCWludGVsX2RwX3NldF9tX24oaW50ZWxfY3J0YywgTTFfTjEpOwogCiAJaW50ZWxfc2V0 X3BpcGVfdGltaW5ncyhpbnRlbF9jcnRjKTsKIAotCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmhh c19wY2hfZW5jb2RlcikgeworCWlmIChwaXBlX2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKSB7CiAJ CWludGVsX2NwdV90cmFuc2NvZGVyX3NldF9tX24oaW50ZWxfY3J0YywKLQkJCQkgICAgICZpbnRl bF9jcnRjLT5jb25maWctPmZkaV9tX24sIE5VTEwpOworCQkJCSAgICAgJnBpcGVfY29uZmlnLT5m ZGlfbV9uLCBOVUxMKTsKIAl9CiAKIAlpcm9ubGFrZV9zZXRfcGlwZWNvbmYoY3J0Yyk7CkBAIC00 ODIzLDkgKzQ4MTIsOSBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9jcnRjX2VuYWJsZShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCiAJCS8qIE5vdGU6IEZESSBQTEwgZW5hYmxpbmcgX211c3RfIGJlIGRv bmUgYmVmb3JlIHdlIGVuYWJsZSB0aGUKIAkJICogY3B1IHBpcGVzLCBoZW5jZSB0aGlzIGlzIHNl cGFyYXRlIGZyb20gYWxsIHRoZSBvdGhlciBmZGkvcGNoCiAJCSAqIGVuYWJsaW5nLiAqLwotCQlp cm9ubGFrZV9mZGlfcGxsX2VuYWJsZShpbnRlbF9jcnRjKTsKKwkJaXJvbmxha2VfZmRpX3BsbF9l bmFibGUoaW50ZWxfY3J0YywgcGlwZV9jb25maWcpOwogCX0gZWxzZSB7Ci0JCWFzc2VydF9mZGlf dHhfZGlzYWJsZWQoZGV2X3ByaXYsIHBpcGUpOworCQlhc3NlcnRfZmRpX3R4X2Rpc2FibGVkKGRl dl9wcml2LCBwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXIsIHBpcGUpOwogCQlhc3NlcnRfZmRp X3J4X2Rpc2FibGVkKGRldl9wcml2LCBwaXBlKTsKIAl9CiAKQEAgLTQ4NDEsNyArNDgzMCw3IEBA IHN0YXRpYyB2b2lkIGlyb25sYWtlX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK IAlpbnRlbF9lbmFibGVfcGlwZShpbnRlbF9jcnRjKTsKIAogCWlmIChpbnRlbF9jcnRjLT5jb25m aWctPmhhc19wY2hfZW5jb2RlcikKLQkJaXJvbmxha2VfcGNoX2VuYWJsZShjcnRjKTsKKwkJaXJv bmxha2VfcGNoX2VuYWJsZShjcnRjLCBwaXBlX2NvbmZpZyk7CiAKIAlhc3NlcnRfdmJsYW5rX2Rp c2FibGVkKGNydGMpOwogCWRybV9jcnRjX3ZibGFua19vbihjcnRjKTsKQEAgLTQ4OTMsMzAgKzQ4 ODIsMzIgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKKwlzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqcGlwZV9jb25maWc7CiAJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7 CiAJaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwogCiAJV0FSTl9PTighY3J0Yy0+c3RhdGUt PmVuYWJsZSk7CiAKLQlpZiAoaW50ZWxfY3J0Yy0+YWN0aXZlKQorCWlmIChXQVJOX09OKGludGVs X2NydGMtPmFjdGl2ZSkpCiAJCXJldHVybjsKIAorCXBpcGVfY29uZmlnID0gdG9faW50ZWxfY3J0 Y19zdGF0ZShjcnRjLT5zdGF0ZSk7CiAJaWYgKGludGVsX2NydGNfdG9fc2hhcmVkX2RwbGwoaW50 ZWxfY3J0YykpCiAJCWludGVsX2VuYWJsZV9zaGFyZWRfZHBsbChpbnRlbF9jcnRjKTsKIAotCWlm IChpbnRlbF9jcnRjLT5jb25maWctPmhhc19kcF9lbmNvZGVyKQorCWlmIChwaXBlX2NvbmZpZy0+ aGFzX2RwX2VuY29kZXIpCiAJCWludGVsX2RwX3NldF9tX24oaW50ZWxfY3J0YywgTTFfTjEpOwog CiAJaW50ZWxfc2V0X3BpcGVfdGltaW5ncyhpbnRlbF9jcnRjKTsKIAotCWlmIChpbnRlbF9jcnRj LT5jb25maWctPmNwdV90cmFuc2NvZGVyICE9IFRSQU5TQ09ERVJfRURQKSB7Ci0JCUk5MTVfV1JJ VEUoUElQRV9NVUxUKGludGVsX2NydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXIpLAotCQkJICAg aW50ZWxfY3J0Yy0+Y29uZmlnLT5waXhlbF9tdWx0aXBsaWVyIC0gMSk7CisJaWYgKHBpcGVfY29u ZmlnLT5jcHVfdHJhbnNjb2RlciAhPSBUUkFOU0NPREVSX0VEUCkgeworCQlJOTE1X1dSSVRFKFBJ UEVfTVVMVChwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXIpLAorCQkJICAgcGlwZV9jb25maWct PnBpeGVsX211bHRpcGxpZXIgLSAxKTsKIAl9CiAKLQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5o YXNfcGNoX2VuY29kZXIpIHsKKwlpZiAocGlwZV9jb25maWctPmhhc19wY2hfZW5jb2Rlcikgewog CQlpbnRlbF9jcHVfdHJhbnNjb2Rlcl9zZXRfbV9uKGludGVsX2NydGMsCi0JCQkJICAgICAmaW50 ZWxfY3J0Yy0+Y29uZmlnLT5mZGlfbV9uLCBOVUxMKTsKKwkJCQkgICAgICZwaXBlX2NvbmZpZy0+ ZmRpX21fbiwgTlVMTCk7CiAJfQogCiAJaGFzd2VsbF9zZXRfcGlwZWNvbmYoY3J0Yyk7CkBAIC00 OTMwLDkgKzQ5MjEsMTAgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCiAJCWlmIChlbmNvZGVyLT5wcmVfZW5hYmxlKQogCQkJZW5jb2Rlci0+ cHJlX2VuYWJsZShlbmNvZGVyKTsKIAotCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmhhc19wY2hf ZW5jb2RlcikgeworCWlmIChwaXBlX2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKSB7CiAJCWludGVs X3NldF9wY2hfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIFRSQU5TQ09ERVJfQSwK IAkJCQkJCSAgICAgIHRydWUpOworCiAJCWRldl9wcml2LT5kaXNwbGF5LmZkaV9saW5rX3RyYWlu KGNydGMpOwogCX0KIApAQCAtNDk5MSw3ICs0OTgzLDggQEAgc3RhdGljIHZvaWQgaXJvbmxha2Vf cGZpdF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogCX0KIH0KIAotc3RhdGljIHZv aWQgaXJvbmxha2VfY3J0Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3N0YXRpYyB2 b2lkIGlyb25sYWtlX2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCQkJICBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX3N0YXRlKQogewogCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBjcnRjLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKQEAgLTUwMDYsMTAgKzQ5OTksMTAgQEAgc3RhdGljIHZvaWQgaXJv bmxha2VfY3J0Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlkcm1fY3J0Y192Ymxh bmtfb2ZmKGNydGMpOwogCWFzc2VydF92YmxhbmtfZGlzYWJsZWQoY3J0Yyk7CiAKLQlpZiAoaW50 ZWxfY3J0Yy0+Y29uZmlnLT5oYXNfcGNoX2VuY29kZXIpCisJaWYgKG9sZF9zdGF0ZS0+aGFzX3Bj aF9lbmNvZGVyKQogCQlpbnRlbF9zZXRfcGNoX2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRldl9w cml2LCBwaXBlLCBmYWxzZSk7CiAKLQlpbnRlbF9kaXNhYmxlX3BpcGUoaW50ZWxfY3J0Yyk7CisJ aW50ZWxfZGlzYWJsZV9waXBlKGludGVsX2NydGMsIG9sZF9zdGF0ZSk7CiAKIAlpcm9ubGFrZV9w Zml0X2Rpc2FibGUoaW50ZWxfY3J0Yyk7CiAKQEAgLTUwMTcsMTAgKzUwMTAsMTAgQEAgc3RhdGlj IHZvaWQgaXJvbmxha2VfY3J0Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAkJaWYg KGVuY29kZXItPnBvc3RfZGlzYWJsZSkKIAkJCWVuY29kZXItPnBvc3RfZGlzYWJsZShlbmNvZGVy KTsKIAotCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmhhc19wY2hfZW5jb2RlcikgeworCWlmIChv bGRfc3RhdGUtPmhhc19wY2hfZW5jb2RlcikgewogCQlpcm9ubGFrZV9mZGlfZGlzYWJsZShjcnRj KTsKIAotCQlpcm9ubGFrZV9kaXNhYmxlX3BjaF90cmFuc2NvZGVyKGRldl9wcml2LCBwaXBlKTsK KwkJaXJvbmxha2VfZGlzYWJsZV9wY2hfdHJhbnNjb2RlcihkZXZfcHJpdiwgb2xkX3N0YXRlLT5j cHVfdHJhbnNjb2RlciwgcGlwZSk7CiAKIAkJaWYgKEhBU19QQ0hfQ1BUKGRldikpIHsKIAkJCS8q IGRpc2FibGUgVFJBTlNfRFBfQ1RMICovCkBAIC01MDQxLDcgKzUwMzQsOCBAQCBzdGF0aWMgdm9p ZCBpcm9ubGFrZV9jcnRjX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCX0KIH0KIAot c3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQor c3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAor CQkJCSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX3N0YXRlKQogewogCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKQEAgLTUwNjAsNyArNTA1NCw3IEBAIHN0YXRpYyB2b2lk IGhhc3dlbGxfY3J0Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlpZiAoaW50ZWxf Y3J0Yy0+Y29uZmlnLT5oYXNfcGNoX2VuY29kZXIpCiAJCWludGVsX3NldF9wY2hfZmlmb191bmRl cnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIFRSQU5TQ09ERVJfQSwKIAkJCQkJCSAgICAgIGZhbHNl KTsKLQlpbnRlbF9kaXNhYmxlX3BpcGUoaW50ZWxfY3J0Yyk7CisJaW50ZWxfZGlzYWJsZV9waXBl KGludGVsX2NydGMsIG9sZF9zdGF0ZSk7CiAKIAlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5kcF9l bmNvZGVyX2lzX21zdCkKIAkJaW50ZWxfZGRpX3NldF92Y19wYXlsb2FkX2FsbG9jKGNydGMsIGZh bHNlKTsKQEAgLTUwODYsMTEgKzUwODAsMTEgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2Rp c2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCQkJZW5jb2Rlci0+cG9zdF9kaXNhYmxlKGVu Y29kZXIpOwogfQogCi1zdGF0aWMgdm9pZCBpOXh4X3BmaXRfZW5hYmxlKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjKQorc3RhdGljIHZvaWQgaTl4eF9wZml0X2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKKwkJCSAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQog ewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCXN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyA9IGNydGMtPmNvbmZpZzsKIAogCWlmICghcGlwZV9j b25maWctPmdtY2hfcGZpdC5jb250cm9sKQogCQlyZXR1cm47CkBAIC01MTAwLDcgKzUwOTQsNyBA QCBzdGF0aWMgdm9pZCBpOXh4X3BmaXRfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQog CSAqIGFjY29yZGluZyB0byByZWdpc3RlciBkZXNjcmlwdGlvbiBhbmQgUFJNLgogCSAqLwogCVdB Uk5fT04oSTkxNV9SRUFEKFBGSVRfQ09OVFJPTCkgJiBQRklUX0VOQUJMRSk7Ci0JYXNzZXJ0X3Bp cGVfZGlzYWJsZWQoZGV2X3ByaXYsIGNydGMtPnBpcGUpOworCWFzc2VydF9waXBlX2Rpc2FibGVk KGRldl9wcml2LCBwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXIsIGNydGMtPnBpcGUpOwogCiAJ STkxNV9XUklURShQRklUX1BHTV9SQVRJT1MsIHBpcGVfY29uZmlnLT5nbWNoX3BmaXQucGdtX3Jh dGlvcyk7CiAJSTkxNV9XUklURShQRklUX0NPTlRST0wsIHBpcGVfY29uZmlnLT5nbWNoX3BmaXQu Y29udHJvbCk7CkBAIC01MTY3LDcgKzUxNjEsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBnZXRf Y3J0Y19wb3dlcl9kb21haW5zKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAl1bnNpZ25lZCBsb25n IG1hc2s7CiAJZW51bSB0cmFuc2NvZGVyIHRyYW5zY29kZXI7CiAKLQl0cmFuc2NvZGVyID0gaW50 ZWxfcGlwZV90b19jcHVfdHJhbnNjb2RlcihkZXYtPmRldl9wcml2YXRlLCBwaXBlKTsKKwl0cmFu c2NvZGVyID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSktPmNwdV90cmFuc2NvZGVy OwogCiAJbWFzayA9IEJJVChQT1dFUl9ET01BSU5fUElQRShwaXBlKSk7CiAJbWFzayB8PSBCSVQo UE9XRVJfRE9NQUlOX1RSQU5TQ09ERVIodHJhbnNjb2RlcikpOwpAQCAtNTc2NywyMiArNTc2MSwy NCBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YykKIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsKIAlpbnQgcGlwZSA9IGludGVs X2NydGMtPnBpcGU7CiAJYm9vbCBpc19kc2k7CisJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBp cGVfY29uZmlnOwogCiAJV0FSTl9PTighY3J0Yy0+c3RhdGUtPmFjdGl2ZSk7CiAKLQlpZiAoaW50 ZWxfY3J0Yy0+YWN0aXZlKQorCWlmIChXQVJOX09OKGludGVsX2NydGMtPmFjdGl2ZSkpCiAJCXJl dHVybjsKKwlwaXBlX2NvbmZpZyA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwog CiAJaXNfZHNpID0gaW50ZWxfcGlwZV9oYXNfdHlwZShpbnRlbF9jcnRjLCBJTlRFTF9PVVRQVVRf RFNJKTsKIAogCWlmICghaXNfZHNpKSB7CiAJCWlmIChJU19DSEVSUllWSUVXKGRldikpCi0JCQlj aHZfcHJlcGFyZV9wbGwoaW50ZWxfY3J0YywgaW50ZWxfY3J0Yy0+Y29uZmlnKTsKKwkJCWNodl9w cmVwYXJlX3BsbChpbnRlbF9jcnRjLCBwaXBlX2NvbmZpZyk7CiAJCWVsc2UKLQkJCXZsdl9wcmVw YXJlX3BsbChpbnRlbF9jcnRjLCBpbnRlbF9jcnRjLT5jb25maWcpOworCQkJdmx2X3ByZXBhcmVf cGxsKGludGVsX2NydGMsIHBpcGVfY29uZmlnKTsKIAl9CiAKLQlpZiAoaW50ZWxfY3J0Yy0+Y29u ZmlnLT5oYXNfZHBfZW5jb2RlcikKKwlpZiAocGlwZV9jb25maWctPmhhc19kcF9lbmNvZGVyKQog CQlpbnRlbF9kcF9zZXRfbV9uKGludGVsX2NydGMsIE0xX04xKTsKIAogCWludGVsX3NldF9waXBl X3RpbWluZ3MoaW50ZWxfY3J0Yyk7CkBAIC01ODA2LDE2ICs1ODAyLDE2IEBAIHN0YXRpYyB2b2lk IHZhbGxleXZpZXdfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCiAJaWYgKCFp c19kc2kpIHsKIAkJaWYgKElTX0NIRVJSWVZJRVcoZGV2KSkKLQkJCWNodl9lbmFibGVfcGxsKGlu dGVsX2NydGMsIGludGVsX2NydGMtPmNvbmZpZyk7CisJCQljaHZfZW5hYmxlX3BsbChpbnRlbF9j cnRjLCBwaXBlX2NvbmZpZyk7CiAJCWVsc2UKLQkJCXZsdl9lbmFibGVfcGxsKGludGVsX2NydGMs IGludGVsX2NydGMtPmNvbmZpZyk7CisJCQl2bHZfZW5hYmxlX3BsbChpbnRlbF9jcnRjLCBwaXBl X2NvbmZpZyk7CiAJfQogCiAJZm9yX2VhY2hfZW5jb2Rlcl9vbl9jcnRjKGRldiwgY3J0YywgZW5j b2RlcikKIAkJaWYgKGVuY29kZXItPnByZV9lbmFibGUpCiAJCQllbmNvZGVyLT5wcmVfZW5hYmxl KGVuY29kZXIpOwogCi0JaTl4eF9wZml0X2VuYWJsZShpbnRlbF9jcnRjKTsKKwlpOXh4X3BmaXRf ZW5hYmxlKGludGVsX2NydGMsIHBpcGVfY29uZmlnKTsKIAogCWludGVsX2NydGNfbG9hZF9sdXQo Y3J0Yyk7CiAKQEAgLTU4NDQsMTEgKzU4NDAsMTMgQEAgc3RhdGljIHZvaWQgaTl4eF9jcnRjX2Vu YWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShkZXYpOwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0g dG9faW50ZWxfY3J0YyhjcnRjKTsKIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsKKwlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWc7CiAJaW50IHBpcGUgPSBpbnRlbF9j cnRjLT5waXBlOwogCi0JV0FSTl9PTighY3J0Yy0+c3RhdGUtPmFjdGl2ZSk7CisJcGlwZV9jb25m aWcgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKKwlXQVJOX09OKCFwaXBlX2Nv bmZpZy0+YmFzZS5hY3RpdmUpOwogCi0JaWYgKGludGVsX2NydGMtPmFjdGl2ZSkKKwlpZiAoV0FS Tl9PTihpbnRlbF9jcnRjLT5hY3RpdmUpKQogCQlyZXR1cm47CiAKIAlpOXh4X3NldF9wbGxfZGl2 aWRlcnMoaW50ZWxfY3J0Yyk7CkBAIC01ODY5LDkgKzU4NjcsOSBAQCBzdGF0aWMgdm9pZCBpOXh4 X2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAkJaWYgKGVuY29kZXItPnByZV9l bmFibGUpCiAJCQllbmNvZGVyLT5wcmVfZW5hYmxlKGVuY29kZXIpOwogCi0JaTl4eF9lbmFibGVf cGxsKGludGVsX2NydGMpOworCWk5eHhfZW5hYmxlX3BsbChpbnRlbF9jcnRjLCBwaXBlX2NvbmZp Zyk7CiAKLQlpOXh4X3BmaXRfZW5hYmxlKGludGVsX2NydGMpOworCWk5eHhfcGZpdF9lbmFibGUo aW50ZWxfY3J0YywgcGlwZV9jb25maWcpOwogCiAJaW50ZWxfY3J0Y19sb2FkX2x1dChjcnRjKTsK IApAQCAtNTg5MywxNCArNTg5MSwxMyBAQCBzdGF0aWMgdm9pZCBpOXh4X3BmaXRfZGlzYWJsZShz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIAlpZiAoIWNydGMtPmNvbmZpZy0+Z21jaF9wZml0LmNv bnRyb2wpCiAJCXJldHVybjsKIAotCWFzc2VydF9waXBlX2Rpc2FibGVkKGRldl9wcml2LCBjcnRj LT5waXBlKTsKLQogCURSTV9ERUJVR19EUklWRVIoImRpc2FibGluZyBwZml0LCBjdXJyZW50OiAw eCUwOHhcbiIsCiAJCQkgSTkxNV9SRUFEKFBGSVRfQ09OVFJPTCkpOwogCUk5MTVfV1JJVEUoUEZJ VF9DT05UUk9MLCAwKTsKIH0KIAotc3RhdGljIHZvaWQgaTl4eF9jcnRjX2Rpc2FibGUoc3RydWN0 IGRybV9jcnRjICpjcnRjKQorc3RhdGljIHZvaWQgaTl4eF9jcnRjX2Rpc2FibGUoc3RydWN0IGRy bV9jcnRjICpjcnRjLAorCQkJICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9zdGF0 ZSkKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OwogCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CkBAIC01OTIyLDcgKzU5 MTksNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpCiAJZHJtX2NydGNfdmJsYW5rX29mZihjcnRjKTsKIAlhc3NlcnRfdmJsYW5rX2Rpc2FibGVk KGNydGMpOwogCi0JaW50ZWxfZGlzYWJsZV9waXBlKGludGVsX2NydGMpOworCWludGVsX2Rpc2Fi bGVfcGlwZShpbnRlbF9jcnRjLCBvbGRfc3RhdGUpOwogCiAJaTl4eF9wZml0X2Rpc2FibGUoaW50 ZWxfY3J0Yyk7CiAKQEAgLTU5MzYsNyArNTkzMyw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfY3J0Y19k aXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAkJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhk ZXYpKQogCQkJdmx2X2Rpc2FibGVfcGxsKGRldl9wcml2LCBwaXBlKTsKIAkJZWxzZQotCQkJaTl4 eF9kaXNhYmxlX3BsbChpbnRlbF9jcnRjKTsKKwkJCWk5eHhfZGlzYWJsZV9wbGwoaW50ZWxfY3J0 Yywgb2xkX3N0YXRlKTsKIAl9CiAKIAlpZiAoIUlTX0dFTjIoZGV2KSkKQEAgLTY5ODksMTAgKzY5 ODYsMTIgQEAgdm9pZCB2bHZfZm9yY2VfcGxsX29uKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVu dW0gcGlwZSBwaXBlLAogewogCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0KIAkJdG9faW50ZWxf Y3J0YyhpbnRlbF9nZXRfY3J0Y19mb3JfcGlwZShkZXYsIHBpcGUpKTsKKwlzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUp OwogCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlIHBpcGVfY29uZmlnID0gewogCQkuYmFzZS5jcnRj ID0gJmNydGMtPmJhc2UsCiAJCS5waXhlbF9tdWx0aXBsaWVyID0gMSwKIAkJLmRwbGwgPSAqZHBs bCwKKwkJLmNwdV90cmFuc2NvZGVyID0gc3RhdGUtPmNwdV90cmFuc2NvZGVyLAogCX07CiAKIAlp ZiAoSVNfQ0hFUlJZVklFVyhkZXYpKSB7CkBAIC03MDE2LDYgKzcwMTUsMTYgQEAgdm9pZCB2bHZf Zm9yY2VfcGxsX29uKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcGlwZSBwaXBlLAogICov CiB2b2lkIHZsdl9mb3JjZV9wbGxfb2ZmKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcGlw ZSBwaXBlKQogeworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2 X3ByaXZhdGU7CisJc3RydWN0IGRybV9jcnRjICpjcnRjID0gaW50ZWxfZ2V0X2NydGNfZm9yX3Bp cGUoZGV2LCBwaXBlKTsKKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqc3RhdGUgPSB0b19pbnRl bF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKKworCS8qIElzIHN0YXRlLT5jcHVfdHJhbnNjb2Rl ciBjb3JyZWN0IHRvIHVzZT8gKi8KKwlXQVJOX09OKGNydGMtPnN0YXRlICE9ICZ0b19pbnRlbF9j cnRjKGNydGMpLT5jb25maWctPmJhc2UpOworCisJLyogTWFrZSBzdXJlIHRoZSBwaXBlIGlzbid0 IHN0aWxsIHJlbHlpbmcgb24gdXMgKi8KKwlhc3NlcnRfcGlwZV9kaXNhYmxlZChkZXZfcHJpdiwg c3RhdGUtPmNwdV90cmFuc2NvZGVyLCBwaXBlKTsKKwogCWlmIChJU19DSEVSUllWSUVXKGRldikp CiAJCWNodl9kaXNhYmxlX3BsbCh0b19pOTE1KGRldiksIHBpcGUpOwogCWVsc2UKQEAgLTEyMjc1 LDYgKzEyMjg0LDcgQEAgc3RhdGljIGludCBfX2ludGVsX3NldF9tb2RlKHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSkKIAogCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMs IG9sZF9jcnRjX3N0YXRlLCBpKSB7CiAJCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0g dG9faW50ZWxfY3J0YyhjcnRjKTsKKwkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29u ZmlnOwogCiAJCWlmICghbmVlZHNfbW9kZXNldChjcnRjLT5zdGF0ZSkpCiAJCQljb250aW51ZTsK QEAgLTEyMjgyLDggKzEyMjkyLDkgQEAgc3RhdGljIGludCBfX2ludGVsX3NldF9tb2RlKHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAkJaWYgKCFvbGRfY3J0Y19zdGF0ZS0+YWN0aXZl KQogCQkJY29udGludWU7CiAKKwkJcGlwZV9jb25maWcgPSB0b19pbnRlbF9jcnRjX3N0YXRlKG9s ZF9jcnRjX3N0YXRlKTsKIAkJaW50ZWxfY3J0Y19kcG1zX292ZXJsYXlfZGlzYWJsZSh0b19pbnRl bF9jcnRjKGNydGMpKTsKLQkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19kaXNhYmxlKGNydGMpOwor CQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2Rpc2FibGUoY3J0YywgcGlwZV9jb25maWcpOwogCiAJ CWludGVsX2NydGMtPmFjdGl2ZSA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwppbmRl eCA4MmRjYzZlZDhiMWQuLjgzZGUzNmJmZGRjMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCkBA IC0yMDkwLDYgKzIwOTAsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9lZHBfcGxsX29uKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJdTMyIGRwYV9jdGw7CiAKIAlhc3NlcnRfcGlwZV9kaXNh YmxlZChkZXZfcHJpdiwKKwkJCSAgICAgdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSkt PmNwdV90cmFuc2NvZGVyLAogCQkJICAgICB0b19pbnRlbF9jcnRjKGNydGMpLT5waXBlKTsKIAog CURSTV9ERUJVR19LTVMoIlxuIik7CkBAIC0yMTE2LDYgKzIxMTcsNyBAQCBzdGF0aWMgdm9pZCBp cm9ubGFrZV9lZHBfcGxsX29mZihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCXUzMiBkcGFf Y3RsOwogCiAJYXNzZXJ0X3BpcGVfZGlzYWJsZWQoZGV2X3ByaXYsCisJCQkgICAgIHRvX2ludGVs X2NydGMoY3J0YyktPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXIsCiAJCQkgICAgIHRvX2ludGVsX2Ny dGMoY3J0YyktPnBpcGUpOwogCiAJZHBhX2N0bCA9IEk5MTVfUkVBRChEUF9BKTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKaW5kZXggOWVmODljOTFhYTVjLi41ODI0MGU2MzYzMGMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCkBAIC05OTgsOCArOTk4LDYgQEAgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKmludGVsX2NydGNfbW9kZV9nZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIGVudW0g cGlwZSBpbnRlbF9nZXRfcGlwZV9mcm9tX2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IpOwogaW50IGludGVsX2dldF9waXBlX2Zyb21fY3J0Y19pZChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2 KTsKLWVudW0gdHJhbnNjb2RlciBpbnRlbF9waXBlX3RvX2NwdV90cmFuc2NvZGVyKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCQkJICAgICBlbnVtIHBpcGUgcGlwZSk7CiBi b29sIGludGVsX3BpcGVfaGFzX3R5cGUoc3RydWN0IGludGVsX2NydGMgKmNydGMsIGVudW0gaW50 ZWxfb3V0cHV0X3R5cGUgdHlwZSk7CiBzdGF0aWMgaW5saW5lIHZvaWQKIGludGVsX3dhaXRfZm9y X3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcGlwZSkKQEAgLTEwODUsOSArMTA4 MywxMSBAQCB2b2lkIGFzc2VydF9mZGlfcnhfcGxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIAkJICAgICAgIGVudW0gcGlwZSBwaXBlLCBib29sIHN0YXRlKTsKICNkZWZpbmUg YXNzZXJ0X2ZkaV9yeF9wbGxfZW5hYmxlZChkLCBwKSBhc3NlcnRfZmRpX3J4X3BsbChkLCBwLCB0 cnVlKQogI2RlZmluZSBhc3NlcnRfZmRpX3J4X3BsbF9kaXNhYmxlZChkLCBwKSBhc3NlcnRfZmRp X3J4X3BsbChkLCBwLCBmYWxzZSkKLXZvaWQgYXNzZXJ0X3BpcGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSwgYm9vbCBzdGF0ZSk7Ci0jZGVmaW5lIGFz c2VydF9waXBlX2VuYWJsZWQoZCwgcCkgYXNzZXJ0X3BpcGUoZCwgcCwgdHJ1ZSkKLSNkZWZpbmUg YXNzZXJ0X3BpcGVfZGlzYWJsZWQoZCwgcCkgYXNzZXJ0X3BpcGUoZCwgcCwgZmFsc2UpCit2b2lk IGFzc2VydF9waXBlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJIGVudW0g dHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciwKKwkJIGVudW0gcGlwZSBwaXBlLCBib29sIHN0YXRl KTsKKyNkZWZpbmUgYXNzZXJ0X3BpcGVfZW5hYmxlZChkLCBjLCBwKSBhc3NlcnRfcGlwZShkLCBj LCBwLCB0cnVlKQorI2RlZmluZSBhc3NlcnRfcGlwZV9kaXNhYmxlZChkLCBjLCBwKSBhc3NlcnRf cGlwZShkLCBjLCBwLCBmYWxzZSkKIHVuc2lnbmVkIGxvbmcgaW50ZWxfZ2VuNF9jb21wdXRlX3Bh Z2Vfb2Zmc2V0KGludCAqeCwgaW50ICp5LAogCQkJCQkgICAgIHVuc2lnbmVkIGludCB0aWxpbmdf bW9kZSwKIAkJCQkJICAgICB1bnNpZ25lZCBpbnQgYnBwLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bh bmVsLmMKaW5kZXggN2Q4MzUyN2Y5NWY3Li42N2VhZmEyNzQwMGIgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcGFuZWwuYwpAQCAtODM3LDkgKzgzNyw4IEBAIHN0YXRpYyB2b2lkIHBjaF9lbmFibGVf YmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKIAlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBpbnRlbF9wYW5lbCAq cGFuZWwgPSAmY29ubmVjdG9yLT5wYW5lbDsKLQllbnVtIHBpcGUgcGlwZSA9IGludGVsX2dldF9w aXBlX2Zyb21fY29ubmVjdG9yKGNvbm5lY3Rvcik7CiAJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFu c2NvZGVyID0KLQkJaW50ZWxfcGlwZV90b19jcHVfdHJhbnNjb2RlcihkZXZfcHJpdiwgcGlwZSk7 CisJCXRvX2ludGVsX2NydGNfc3RhdGUoY29ubmVjdG9yLT5lbmNvZGVyLT5iYXNlLmNydGMtPnN0 YXRlKS0+Y3B1X3RyYW5zY29kZXI7CiAJdTMyIGNwdV9jdGwyLCBwY2hfY3RsMSwgcGNoX2N0bDI7 CiAKIAljcHVfY3RsMiA9IEk5MTVfUkVBRChCTENfUFdNX0NQVV9DVEwyKTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3R2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF90di5jCmluZGV4IDhiOWQzMjViZGEzYy4uYjRhZWIyNTYxMjhmIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF90di5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3R2LmMKQEAgLTExMTcsNyArMTExNyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3R2X3By ZV9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiAJCQkgICAoKHZpZGVvX2xl dmVscy0+YmxhY2sgPDwgVFZfQkxBQ0tfTEVWRUxfU0hJRlQpIHwKIAkJCSAgICAodmlkZW9fbGV2 ZWxzLT5ibGFuayA8PCBUVl9CTEFOS19MRVZFTF9TSElGVCkpKTsKIAotCWFzc2VydF9waXBlX2Rp c2FibGVkKGRldl9wcml2LCBpbnRlbF9jcnRjLT5waXBlKTsKKwlhc3NlcnRfcGlwZV9kaXNhYmxl ZChkZXZfcHJpdiwgdG9faW50ZWxfY3J0Y19zdGF0ZShpbnRlbF9jcnRjLT5iYXNlLnN0YXRlKS0+ Y3B1X3RyYW5zY29kZXIsIGludGVsX2NydGMtPnBpcGUpOwogCiAJLyogRmlsdGVyIGN0bCBtdXN0 IGJlIHNldCBiZWZvcmUgVFZfV0lOX1NJWkUgKi8KIAlJOTE1X1dSSVRFKFRWX0ZJTFRFUl9DVExf MSwgVFZfQVVUT19TQ0FMRSk7Ci0tIAoyLjEuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK