From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: [PATCH 6/7] drm/i915: Use wait_until_reg macros Date: Tue, 17 May 2016 18:43:27 +0300 Message-ID: <1463499808-3335-7-git-send-email-mika.kuoppala@intel.com> References: <1463499808-3335-1-git-send-email-mika.kuoppala@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 890546E68A for ; Tue, 17 May 2016 15:43:33 +0000 (UTC) In-Reply-To: <1463499808-3335-1-git-send-email-mika.kuoppala@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 List-Id: intel-gfx@lists.freedesktop.org VXNlIHdhaXRfdW50aWxfcmVnIGluc3RlYWQgb2YgZ2VuZXJpYyB3YWl0X2ZvciBtYWNybyBvbgp0 aGUgcmVsZXZhbnQgY2FsbHNpdGVzLgoKU2lnbmVkLW9mZi1ieTogTWlrYSBLdW9wcGFsYSA8bWlr YS5rdW9wcGFsYUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu YyAgICAgICAgIHwgMTkgKysrKysrLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVnLmggICAgICAgICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQu YyAgICAgICAgfCAxNSArKysrKysrLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k ZGkuYyAgICAgICAgfCAgOCArKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMgICAgfCAzOCArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICAgICB8ICA2ICsrLS0tLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMgICAgIHwgIDMgKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcGxsX21nci5jICAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHNpLmMgICAgICAgIHwgMTkgKysrKysrKy0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RzaV9wbGwuYyAgICB8ICA1ICsrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9mYmMuYyAgICAgICAgfCAgMyArLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j ICAgICAgICB8ICAzICsrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jICAgICAg IHwgIDQgKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgIHwgIDYg KystLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYyAgICAgICAgfCAxOSArKysr KysrKystLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIHwg MTIgKysrKystLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYyB8 IDI1ICsrKysrKysrKysrKy0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Np ZGViYW5kLmMgICB8IDIwICsrKysrKysrLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF91bmNvcmUuYyAgICAgfCAgNiArKy0tLS0KIDE5IGZpbGVzIGNoYW5nZWQsIDEwMCBpbnNl cnRpb25zKCspLCAxMTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXgg ZGJhMDNjMDI2MTUxLi40YmQ0MGVmM2M5YjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAt MTM1Nyw4ICsxMzU3LDYgQEAgaW50IHZsdl9mb3JjZV9nZnhfY2xvY2soc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCBib29sIGZvcmNlX29uKQogCXUzMiB2YWw7CiAJaW50IGVycjsK IAotI2RlZmluZSBDT05EIChJOTE1X1JFQUQoVkxWX0dUTENfU1VSVklWQUJJTElUWV9SRUcpICYg VkxWX0dGWF9DTEtfU1RBVFVTX0JJVCkKLQogCXZhbCA9IEk5MTVfUkVBRChWTFZfR1RMQ19TVVJW SVZBQklMSVRZX1JFRyk7CiAJdmFsICY9IH5WTFZfR0ZYX0NMS19GT1JDRV9PTl9CSVQ7CiAJaWYg KGZvcmNlX29uKQpAQCAtMTM2OCwxMyArMTM2NiwxMyBAQCBpbnQgdmx2X2ZvcmNlX2dmeF9jbG9j ayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgZm9yY2Vfb24pCiAJaWYg KCFmb3JjZV9vbikKIAkJcmV0dXJuIDA7CiAKLQllcnIgPSB3YWl0X2ZvcihDT05ELCAyMCk7CisJ ZXJyID0gd2FpdF91bnRpbF9yZWdfc2V0KFZMVl9HVExDX1NVUlZJVkFCSUxJVFlfUkVHLAorCQkJ CSBWTFZfR0ZYX0NMS19TVEFUVVNfQklULCAyMCk7CiAJaWYgKGVycikKIAkJRFJNX0VSUk9SKCJ0 aW1lb3V0IHdhaXRpbmcgZm9yIEdGWCBjbG9jayBmb3JjZS1vbiAoJTA4eClcbiIsCiAJCQkgIEk5 MTVfUkVBRChWTFZfR1RMQ19TVVJWSVZBQklMSVRZX1JFRykpOwogCiAJcmV0dXJuIGVycjsKLSN1 bmRlZiBDT05ECiB9CiAKIHN0YXRpYyBpbnQgdmx2X2FsbG93X2d0X3dha2Uoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCBib29sIGFsbG93KQpAQCAtMTM4OSwxMyArMTM4NywxMiBA QCBzdGF0aWMgaW50IHZsdl9hbGxvd19ndF93YWtlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgYm9vbCBhbGxvdykKIAlJOTE1X1dSSVRFKFZMVl9HVExDX1dBS0VfQ1RSTCwgdmFs KTsKIAlQT1NUSU5HX1JFQUQoVkxWX0dUTENfV0FLRV9DVFJMKTsKIAotI2RlZmluZSBDT05EICgh IShJOTE1X1JFQUQoVkxWX0dUTENfUFdfU1RBVFVTKSAmIFZMVl9HVExDX0FMTE9XV0FLRUFDSykg PT0gXAotCSAgICAgIGFsbG93KQotCWVyciA9IHdhaXRfZm9yKENPTkQsIDEpOworCWVyciA9IHdh aXRfdW50aWxfcmVnKFZMVl9HVExDX1BXX1NUQVRVUywKKwkJCSAgICAgVkxWX0dUTENfQUxMT1dX QUtFQUNLLCBhbGxvdywgMSk7CiAJaWYgKGVycikKIAkJRFJNX0VSUk9SKCJ0aW1lb3V0IGRpc2Fi bGluZyBHVCB3YWtpbmdcbiIpOworCiAJcmV0dXJuIGVycjsKLSN1bmRlZiBDT05ECiB9CiAKIHN0 YXRpYyBpbnQgdmx2X3dhaXRfZm9yX2d0X3dlbGxzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKQEAgLTE0MDcsOSArMTQwNCw2IEBAIHN0YXRpYyBpbnQgdmx2X3dhaXRfZm9yX2d0 X3dlbGxzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogCW1hc2sgPSBWTFZf R1RMQ19QV19NRURJQV9TVEFUVVNfTUFTSyB8IFZMVl9HVExDX1BXX1JFTkRFUl9TVEFUVVNfTUFT SzsKIAl2YWwgPSB3YWl0X2Zvcl9vbiA/IG1hc2sgOiAwOwotI2RlZmluZSBDT05EICgoSTkxNV9S RUFEKFZMVl9HVExDX1BXX1NUQVRVUykgJiBtYXNrKSA9PSB2YWwpCi0JaWYgKENPTkQpCi0JCXJl dHVybiAwOwogCiAJRFJNX0RFQlVHX0tNUygid2FpdGluZyBmb3IgR1Qgd2VsbHMgdG8gZ28gJXMg KCUwOHgpXG4iLAogCQkgICAgICBvbm9mZih3YWl0X2Zvcl9vbiksCkBAIC0xNDE5LDEzICsxNDEz LDEyIEBAIHN0YXRpYyBpbnQgdmx2X3dhaXRfZm9yX2d0X3dlbGxzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIAkgKiBSQzYgdHJhbnNpdGlvbmluZyBjYW4gYmUgZGVsYXllZCB1 cCB0byAyIG1zZWMgKHNlZQogCSAqIHZhbGxleXZpZXdfZW5hYmxlX3JwcyksIHVzZSAzIG1zZWMg Zm9yIHNhZmV0eS4KIAkgKi8KLQllcnIgPSB3YWl0X2ZvcihDT05ELCAzKTsKKwllcnIgPSB3YWl0 X3VudGlsX3JlZyhWTFZfR1RMQ19QV19TVEFUVVMsIG1hc2ssIHZhbCwgMyk7CiAJaWYgKGVycikK IAkJRFJNX0VSUk9SKCJ0aW1lb3V0IHdhaXRpbmcgZm9yIEdUIHdlbGxzIHRvIGdvICVzXG4iLAog CQkJICBvbm9mZih3YWl0X2Zvcl9vbikpOwogCiAJcmV0dXJuIGVycjsKLSN1bmRlZiBDT05ECiB9 CiAKIHN0YXRpYyB2b2lkIHZsdl9jaGVja19ub19ndF9hY2Nlc3Moc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKaW5kZXggODZmYmY3MjNlY2E3 Li41MzU1ZDUyNzJhZDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVn LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaApAQCAtMjIyMiw3ICsyMjIy LDcgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7CiAjZGVmaW5lIElWQl9GQkNfUlRfQkFT RQkJCV9NTUlPKDB4NzAyMCkKIAogI2RlZmluZSBJUFNfQ1RMCQlfTU1JTygweDQzNDA4KQotI2Rl ZmluZSAgIElQU19FTkFCTEUJKDEgPDwgMzEpCisjZGVmaW5lICAgSVBTX0VOQUJMRQkoMVVMTCA8 PCAzMSkKIAogI2RlZmluZSBNU0dfRkJDX1JFTkRfU1RBVEUJX01NSU8oMHg1MDM4MCkKICNkZWZp bmUgICBGQkNfUkVORF9OVUtFCQkoMTw8MikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2NydC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMKaW5kZXgg M2ZiYjZmYzY2NDUxLi5jMWM2MTk1MDUzOTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2NydC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NydC5jCkBA IC0zMDEsOCArMzAxLDggQEAgc3RhdGljIGJvb2wgaW50ZWxfaXJvbmxha2VfY3J0X2RldGVjdF9o b3RwbHVnKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiAKIAkJSTkxNV9XUklURShj cnQtPmFkcGFfcmVnLCBhZHBhKTsKIAotCQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChjcnQtPmFk cGFfcmVnKSAmIEFEUEFfQ1JUX0hPVFBMVUdfRk9SQ0VfVFJJR0dFUikgPT0gMCwKLQkJCSAgICAg MTAwMCkpCisJCWlmICh3YWl0X3VudGlsX3JlZ19jbHIoY3J0LT5hZHBhX3JlZywKKwkJCQkgICAg ICAgQURQQV9DUlRfSE9UUExVR19GT1JDRV9UUklHR0VSLCAxMDAwKSkKIAkJCURSTV9ERUJVR19L TVMoInRpbWVkIG91dCB3YWl0aW5nIGZvciBGT1JDRV9UUklHR0VSIik7CiAKIAkJaWYgKHR1cm5f b2ZmX2RhYykgewpAQCAtMzM4LDggKzMzOCw5IEBAIHN0YXRpYyBib29sIHZhbGxleXZpZXdfY3J0 X2RldGVjdF9ob3RwbHVnKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiAKIAlJOTE1 X1dSSVRFKGNydC0+YWRwYV9yZWcsIGFkcGEpOwogCi0JaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQo Y3J0LT5hZHBhX3JlZykgJiBBRFBBX0NSVF9IT1RQTFVHX0ZPUkNFX1RSSUdHRVIpID09IDAsCi0J CSAgICAgMTAwMCkpIHsKKwlpZiAod2FpdF91bnRpbF9yZWdfY2xyKGNydC0+YWRwYV9yZWcsCisJ CQkgICAgICAgQURQQV9DUlRfSE9UUExVR19GT1JDRV9UUklHR0VSLAorCQkJICAgICAgIDEwMDAp KSB7CiAJCURSTV9ERUJVR19LTVMoInRpbWVkIG91dCB3YWl0aW5nIGZvciBGT1JDRV9UUklHR0VS Iik7CiAJCUk5MTVfV1JJVEUoY3J0LT5hZHBhX3JlZywgc2F2ZV9hZHBhKTsKIAl9CkBAIC0zOTQs OSArMzk1LDkgQEAgc3RhdGljIGJvb2wgaW50ZWxfY3J0X2RldGVjdF9ob3RwbHVnKHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiAJCQkJCSAgICAgIENSVF9IT1RQTFVHX0ZPUkNFX0RF VEVDVCwKIAkJCQkJICAgICAgQ1JUX0hPVFBMVUdfRk9SQ0VfREVURUNUKTsKIAkJLyogd2FpdCBm b3IgRk9SQ0VfREVURUNUIHRvIGdvIG9mZiAqLwotCQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChQ T1JUX0hPVFBMVUdfRU4pICYKLQkJCSAgICAgIENSVF9IT1RQTFVHX0ZPUkNFX0RFVEVDVCkgPT0g MCwKLQkJCSAgICAgMTAwMCkpCisJCWlmICh3YWl0X3VudGlsX3JlZ19jbHIoUE9SVF9IT1RQTFVH X0VOLAorCQkJCSAgICAgICBDUlRfSE9UUExVR19GT1JDRV9ERVRFQ1QsCisJCQkJICAgICAgIDEw MDApKQogCQkJRFJNX0RFQlVHX0tNUygidGltZWQgb3V0IHdhaXRpbmcgZm9yIEZPUkNFX0RFVEVD VCB0byBnbyBvZmYiKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKaW5kZXggYTYyYzYw YzZmYjBiLi43MjM0YWY5MGUwZTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RkaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCkBAIC0xNzgz LDcgKzE3ODMsNyBAQCBzdGF0aWMgdTMyIGJyb3h0b25fZ2V0X2dyYyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gZHBpb19waHkgcGh5KQogc3RhdGljIHZvaWQgYnJveHRv bl9waHlfd2FpdF9ncmNfZG9uZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ CQkJICAgICAgZW51bSBkcGlvX3BoeSBwaHkpCiB7Ci0JaWYgKHdhaXRfZm9yKEk5MTVfUkVBRChC WFRfUE9SVF9SRUZfRFczKHBoeSkpICYgR1JDX0RPTkUsIDEwKSkKKwlpZiAod2FpdF91bnRpbF9y ZWdfc2V0KEJYVF9QT1JUX1JFRl9EVzMocGh5KSwgR1JDX0RPTkUsIDEwKSkKIAkJRFJNX0VSUk9S KCJ0aW1lb3V0IHdhaXRpbmcgZm9yIFBIWSVkIEdSQ1xuIiwgcGh5KTsKIH0KIApAQCAtMTgyNiw4 ICsxODI2LDkgQEAgc3RhdGljIHZvaWQgYnJveHRvbl9waHlfaW5pdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCiAJICogSFcgdGVhbSBjb25maXJtZWQgdGhhdCB0aGUgdGltZSB0 byByZWFjaCBwaHlwb3dlcmdvb2Qgc3RhdHVzIGlzCiAJICogYW55d2hlcmUgYmV0d2VlbiA1MCB1 cyBhbmQgMTAwdXMuCiAJICovCi0JaWYgKHdhaXRfZm9yKCgoSTkxNV9SRUFEKEJYVF9QT1JUX0NM MUNNX0RXMChwaHkpKSAmCi0JCShQSFlfUkVTRVJWRUQgfCBQSFlfUE9XRVJfR09PRCkpID09IFBI WV9QT1dFUl9HT09EKSwgMSkpIHsKKwlpZiAod2FpdF91bnRpbF9yZWcoQlhUX1BPUlRfQ0wxQ01f RFcwKHBoeSksCisJCQkgICAoUEhZX1JFU0VSVkVEIHwgUEhZX1BPV0VSX0dPT0QpLAorCQkJICAg UEhZX1BPV0VSX0dPT0QsIDEpKSB7CiAJCURSTV9FUlJPUigidGltZW91dCBkdXJpbmcgUEhZJWQg cG93ZXIgb25cbiIsIHBoeSk7CiAJfQogCkBAIC0xODk5LDYgKzE5MDAsNyBAQCBzdGF0aWMgdm9p ZCBicm94dG9uX3BoeV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJ ICogdGhlIGNvcnJlc3BvbmRpbmcgY2FsaWJyYXRlZCB2YWx1ZSBmcm9tIFBIWTEsIGFuZCBkaXNh YmxlCiAJCSAqIHRoZSBhdXRvbWF0aWMgY2FsaWJyYXRpb24gb24gUEhZMC4KIAkJICovCisKIAkJ YnJveHRvbl9waHlfd2FpdF9ncmNfZG9uZShkZXZfcHJpdiwgRFBJT19QSFkxKTsKIAogCQl2YWwg PSBkZXZfcHJpdi0+Ynh0X3BoeV9ncmMgPSBicm94dG9uX2dldF9ncmMoZGV2X3ByaXYsCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggMDVkNGEyYjM2NWY4Li5iOTU1MTk2NDJl OTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTExMTgsOCArMTExOCw3 IEBAIHN0YXRpYyB2b2lkIGludGVsX3dhaXRfZm9yX3BpcGVfb2ZmKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjKQogCQlpOTE1X3JlZ190IHJlZyA9IFBJUEVDT05GKGNwdV90cmFuc2NvZGVyKTsKIAog CQkvKiBXYWl0IGZvciB0aGUgUGlwZSBTdGF0ZSB0byBnbyBvZmYgKi8KLQkJaWYgKHdhaXRfZm9y KChJOTE1X1JFQUQocmVnKSAmIEk5NjVfUElQRUNPTkZfQUNUSVZFKSA9PSAwLAotCQkJICAgICAx MDApKQorCQlpZiAod2FpdF91bnRpbF9yZWdfY2xyKHJlZywgSTk2NV9QSVBFQ09ORl9BQ1RJVkUs IDEwMCkpCiAJCQlXQVJOKDEsICJwaXBlX29mZiB3YWl0IHRpbWVkIG91dFxuIik7CiAJfSBlbHNl IHsKIAkJLyogV2FpdCBmb3IgdGhlIGRpc3BsYXkgbGluZSB0byBzZXR0bGUgKi8KQEAgLTE1Mzgs NyArMTUzNyw3IEBAIHN0YXRpYyB2b2lkIF92bHZfZW5hYmxlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKIAlQT1NUSU5HX1JFQUQoRFBMTChwaXBlKSk7CiAJdWRlbGF5KDE1MCk7CiAKLQlp ZiAod2FpdF9mb3IoKChJOTE1X1JFQUQoRFBMTChwaXBlKSkgJiBEUExMX0xPQ0tfVkxWKSA9PSBE UExMX0xPQ0tfVkxWKSwgMSkpCisJaWYgKHdhaXRfdW50aWxfcmVnX3NldChEUExMKHBpcGUpLCBE UExMX0xPQ0tfVkxWLCAxKSkKIAkJRFJNX0VSUk9SKCJEUExMICVkIGZhaWxlZCB0byBsb2NrXG4i LCBwaXBlKTsKIH0KIApAQCAtMTU4Nyw3ICsxNTg2LDcgQEAgc3RhdGljIHZvaWQgX2Nodl9lbmFi bGVfcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCUk5MTVfV1JJVEUoRFBMTChwaXBlKSwg cGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUuZHBsbCk7CiAKIAkvKiBDaGVjayBQTEwgaXMgbG9j a2VkICovCi0JaWYgKHdhaXRfZm9yKCgoSTkxNV9SRUFEKERQTEwocGlwZSkpICYgRFBMTF9MT0NL X1ZMVikgPT0gRFBMTF9MT0NLX1ZMViksIDEpKQorCWlmICh3YWl0X3VudGlsX3JlZ19zZXQoRFBM TChwaXBlKSwgRFBMTF9MT0NLX1ZMViwgMSkpCiAJCURSTV9FUlJPUigiUExMICVkIGZhaWxlZCB0 byBsb2NrXG4iLCBwaXBlKTsKIH0KIApAQCAtMTgwNyw3ICsxODA2LDcgQEAgdm9pZCB2bHZfd2Fp dF9wb3J0X3JlYWR5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJQlVHKCk7 CiAJfQogCi0JaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoZHBsbF9yZWcpICYgcG9ydF9tYXNrKSA9 PSBleHBlY3RlZF9tYXNrLCAxMDAwKSkKKwlpZiAod2FpdF91bnRpbF9yZWcoZHBsbF9yZWcsIHBv cnRfbWFzaywgZXhwZWN0ZWRfbWFzaywgMTAwMCkpCiAJCVdBUk4oMSwgInRpbWVkIG91dCB3YWl0 aW5nIGZvciBwb3J0ICVjIHJlYWR5OiBnb3QgMHgleCwgZXhwZWN0ZWQgMHgleFxuIiwKIAkJICAg ICBwb3J0X25hbWUoZHBvcnQtPnBvcnQpLCBJOTE1X1JFQUQoZHBsbF9yZWcpICYgcG9ydF9tYXNr LCBleHBlY3RlZF9tYXNrKTsKIH0KQEAgLTE4NjUsNyArMTg2NCw3IEBAIHN0YXRpYyB2b2lkIGly b25sYWtlX2VuYWJsZV9wY2hfdHJhbnNjb2RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCiAJCXZhbCB8PSBUUkFOU19QUk9HUkVTU0lWRTsKIAogCUk5MTVfV1JJVEUocmVnLCB2 YWwgfCBUUkFOU19FTkFCTEUpOwotCWlmICh3YWl0X2ZvcihJOTE1X1JFQUQocmVnKSAmIFRSQU5T X1NUQVRFX0VOQUJMRSwgMTAwKSkKKwlpZiAod2FpdF91bnRpbF9yZWdfc2V0KHJlZywgVFJBTlNf U1RBVEVfRU5BQkxFLCAxMDApKQogCQlEUk1fRVJST1IoImZhaWxlZCB0byBlbmFibGUgdHJhbnNj b2RlciAlY1xuIiwgcGlwZV9uYW1lKHBpcGUpKTsKIH0KIApAQCAtMTg5Myw3ICsxODkyLDcgQEAg c3RhdGljIHZvaWQgbHB0X2VuYWJsZV9wY2hfdHJhbnNjb2RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCiAJCXZhbCB8PSBUUkFOU19QUk9HUkVTU0lWRTsKIAogCUk5MTVfV1JJ VEUoTFBUX1RSQU5TQ09ORiwgdmFsKTsKLQlpZiAod2FpdF9mb3IoSTkxNV9SRUFEKExQVF9UUkFO U0NPTkYpICYgVFJBTlNfU1RBVEVfRU5BQkxFLCAxMDApKQorCWlmICh3YWl0X3VudGlsX3JlZ19z ZXQoTFBUX1RSQU5TQ09ORiwgVFJBTlNfU1RBVEVfRU5BQkxFLCAxMDApKQogCQlEUk1fRVJST1Io IkZhaWxlZCB0byBlbmFibGUgUENIIHRyYW5zY29kZXJcbiIpOwogfQogCkBAIC0xOTE2LDcgKzE5 MTUsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9kaXNhYmxlX3BjaF90cmFuc2NvZGVyKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAl2YWwgJj0gflRSQU5TX0VOQUJMRTsKIAlJ OTE1X1dSSVRFKHJlZywgdmFsKTsKIAkvKiB3YWl0IGZvciBQQ0ggdHJhbnNjb2RlciBvZmYsIHRy YW5zY29kZXIgc3RhdGUgKi8KLQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChyZWcpICYgVFJBTlNf U1RBVEVfRU5BQkxFKSA9PSAwLCA1MCkpCisJaWYgKHdhaXRfdW50aWxfcmVnX2NscihyZWcsIFRS QU5TX1NUQVRFX0VOQUJMRSwgNTApKQogCQlEUk1fRVJST1IoImZhaWxlZCB0byBkaXNhYmxlIHRy YW5zY29kZXIgJWNcbiIsIHBpcGVfbmFtZShwaXBlKSk7CiAKIAlpZiAoSEFTX1BDSF9DUFQoZGV2 KSkgewpAQCAtMTkzNiw3ICsxOTM1LDcgQEAgc3RhdGljIHZvaWQgbHB0X2Rpc2FibGVfcGNoX3Ry YW5zY29kZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXZhbCAmPSB+VFJB TlNfRU5BQkxFOwogCUk5MTVfV1JJVEUoTFBUX1RSQU5TQ09ORiwgdmFsKTsKIAkvKiB3YWl0IGZv ciBQQ0ggdHJhbnNjb2RlciBvZmYsIHRyYW5zY29kZXIgc3RhdGUgKi8KLQlpZiAod2FpdF9mb3Io KEk5MTVfUkVBRChMUFRfVFJBTlNDT05GKSAmIFRSQU5TX1NUQVRFX0VOQUJMRSkgPT0gMCwgNTAp KQorCWlmICh3YWl0X3VudGlsX3JlZ19jbHIoTFBUX1RSQU5TQ09ORiwgVFJBTlNfU1RBVEVfRU5B QkxFLCA1MCkpCiAJCURSTV9FUlJPUigiRmFpbGVkIHRvIGRpc2FibGUgUENIIHRyYW5zY29kZXJc biIpOwogCiAJLyogV29ya2Fyb3VuZDogY2xlYXIgdGltaW5nIG92ZXJyaWRlIGJpdC4gKi8KQEAg LTQ0NjEsNyArNDQ2MCw3IEBAIHZvaWQgaHN3X2Rpc2FibGVfaXBzKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjKQogCQlXQVJOX09OKHNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlKGRldl9wcml2LCBESVNQ TEFZX0lQU19DT05UUk9MLCAwKSk7CiAJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnJwcy5od19s b2NrKTsKIAkJLyogd2FpdCBmb3IgcGNvZGUgdG8gZmluaXNoIGRpc2FibGluZyBJUFMsIHdoaWNo IG1heSB0YWtlIHVwIHRvIDQybXMgKi8KLQkJaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoSVBTX0NU TCkgJiBJUFNfRU5BQkxFKSA9PSAwLCA0MikpCisJCWlmICh3YWl0X3VudGlsX3JlZ19jbHIoSVBT X0NUTCwgSVBTX0VOQUJMRSwgNDIpKQogCQkJRFJNX0VSUk9SKCJUaW1lZCBvdXQgd2FpdGluZyBm b3IgSVBTIGRpc2FibGVcbiIpOwogCX0gZWxzZSB7CiAJCUk5MTVfV1JJVEUoSVBTX0NUTCwgMCk7 CkBAIC01NDExLDggKzU0MTAsNyBAQCBzdGF0aWMgdm9pZCBicm94dG9uX3NldF9jZGNsayhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBjZGNsaykKIAkgICAgY3VycmVudF9j ZGNsayA9PSA2MjQwMDApIHsKIAkJSTkxNV9XUklURShCWFRfREVfUExMX0VOQUJMRSwgfkJYVF9E RV9QTExfUExMX0VOQUJMRSk7CiAJCS8qIFRpbWVvdXQgMjAwdXMgKi8KLQkJaWYgKHdhaXRfZm9y KCEoSTkxNV9SRUFEKEJYVF9ERV9QTExfRU5BQkxFKSAmIEJYVF9ERV9QTExfTE9DSyksCi0JCQkg ICAgIDEpKQorCQlpZiAod2FpdF91bnRpbF9yZWdfY2xyKEJYVF9ERV9QTExfRU5BQkxFLCBCWFRf REVfUExMX0xPQ0ssIDEpKQogCQkJRFJNX0VSUk9SKCJ0aW1vdXQgd2FpdGluZyBmb3IgREUgUExM IHVubG9ja1xuIik7CiAJfQogCkBAIC01NDI2LDcgKzU0MjQsNyBAQCBzdGF0aWMgdm9pZCBicm94 dG9uX3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBjZGNs aykKIAogCQlJOTE1X1dSSVRFKEJYVF9ERV9QTExfRU5BQkxFLCBCWFRfREVfUExMX1BMTF9FTkFC TEUpOwogCQkvKiBUaW1lb3V0IDIwMHVzICovCi0JCWlmICh3YWl0X2ZvcihJOTE1X1JFQUQoQlhU X0RFX1BMTF9FTkFCTEUpICYgQlhUX0RFX1BMTF9MT0NLLCAxKSkKKwkJaWYgKHdhaXRfdW50aWxf cmVnX3NldChCWFRfREVfUExMX0VOQUJMRSwgQlhUX0RFX1BMTF9MT0NLLCAxKSkKIAkJCURSTV9F UlJPUigidGltZW91dCB3YWl0aW5nIGZvciBERSBQTEwgbG9ja1xuIik7CiAKIAkJdmFsID0gZGl2 aWRlciB8IHNrbF9jZGNsa19kZWNpbWFsKGNkY2xrKTsKQEAgLTU1OTYsNyArNTU5NCw3IEBAIHNr bF9kcGxsMF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgdmNv KQogCiAJSTkxNV9XUklURShMQ1BMTDFfQ1RMLCBJOTE1X1JFQUQoTENQTEwxX0NUTCkgfCBMQ1BM TF9QTExfRU5BQkxFKTsKIAotCWlmICh3YWl0X2ZvcihJOTE1X1JFQUQoTENQTEwxX0NUTCkgJiBM Q1BMTF9QTExfTE9DSywgNSkpCisJaWYgKHdhaXRfdW50aWxfcmVnX3NldChMQ1BMTDFfQ1RMLCBM Q1BMTF9QTExfTE9DSywgNSkpCiAJCURSTV9FUlJPUigiRFBMTDAgbm90IGxvY2tlZFxuIik7CiB9 CiAKQEAgLTU2MDQsNyArNTYwMiw3IEBAIHN0YXRpYyB2b2lkCiBza2xfZHBsbDBfZGlzYWJsZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJSTkxNV9XUklURShMQ1BMTDFf Q1RMLCBJOTE1X1JFQUQoTENQTEwxX0NUTCkgJiB+TENQTExfUExMX0VOQUJMRSk7Ci0JaWYgKHdh aXRfZm9yKCEoSTkxNV9SRUFEKExDUExMMV9DVEwpICYgTENQTExfUExMX0xPQ0spLCAxKSkKKwlp ZiAod2FpdF91bnRpbF9yZWdfY2xyKExDUExMMV9DVEwsIExDUExMX1BMTF9MT0NLLCAxKSkKIAkJ RFJNX0VSUk9SKCJDb3VsZG4ndCBkaXNhYmxlIERQTEwwXG4iKTsKIH0KIApAQCAtOTQxNSw3ICs5 NDEzLDcgQEAgc3RhdGljIHZvaWQgaHN3X2Rpc2FibGVfbGNwbGwoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAogCUk5MTVfV1JJVEUoTENQTExfQ1RMLCB2YWwpOwogCVBPU1RJTkdf UkVBRChMQ1BMTF9DVEwpOwogCi0JaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoTENQTExfQ1RMKSAm IExDUExMX1BMTF9MT0NLKSA9PSAwLCAxKSkKKwlpZiAod2FpdF91bnRpbF9yZWdfY2xyKExDUExM X0NUTCwgTENQTExfUExMX0xPQ0ssIDEpKQogCQlEUk1fRVJST1IoIkxDUExMIHN0aWxsIGxvY2tl ZFxuIik7CiAKIAl2YWwgPSBoc3dfcmVhZF9kY29tcChkZXZfcHJpdik7CkBAIC05NDcwLDcgKzk0 NjgsNyBAQCBzdGF0aWMgdm9pZCBoc3dfcmVzdG9yZV9sY3BsbChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiAJdmFsICY9IH5MQ1BMTF9QTExfRElTQUJMRTsKIAlJOTE1X1dSSVRF KExDUExMX0NUTCwgdmFsKTsKIAotCWlmICh3YWl0X2ZvcihJOTE1X1JFQUQoTENQTExfQ1RMKSAm IExDUExMX1BMTF9MT0NLLCA1KSkKKwlpZiAod2FpdF91bnRpbF9yZWdfc2V0KExDUExMX0NUTCwg TENQTExfUExMX0xPQ0ssIDUpKQogCQlEUk1fRVJST1IoIkxDUExMIG5vdCBsb2NrZWQgeWV0XG4i KTsKIAogCWlmICh2YWwgJiBMQ1BMTF9DRF9TT1VSQ0VfRkNMSykgewpAQCAtOTYxOSw4ICs5NjE3 LDcgQEAgc3RhdGljIHZvaWQgYnJvYWR3ZWxsX3NldF9jZGNsayhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBpbnQgY2RjbGspCiAJdmFsIHw9IExDUExMX0NEX1NPVVJDRV9GQ0xLOwogCUk5MTVfV1JJ VEUoTENQTExfQ1RMLCB2YWwpOwogCi0JaWYgKHdhaXRfZm9yKEk5MTVfUkVBRChMQ1BMTF9DVEwp ICYKLQkJICAgICBMQ1BMTF9DRF9TT1VSQ0VfRkNMS19ET05FLCAxKSkKKwlpZiAod2FpdF91bnRp bF9yZWdfc2V0KExDUExMX0NUTCwgTENQTExfQ0RfU09VUkNFX0ZDTEtfRE9ORSwgMSkpCiAJCURS TV9FUlJPUigiU3dpdGNoaW5nIHRvIEZDTEsgZmFpbGVkXG4iKTsKIAogCXZhbCA9IEk5MTVfUkVB RChMQ1BMTF9DVEwpOwpAQCAtOTY1NCw4ICs5NjUxLDcgQEAgc3RhdGljIHZvaWQgYnJvYWR3ZWxs X3NldF9jZGNsayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY2RjbGspCiAJdmFsICY9IH5M Q1BMTF9DRF9TT1VSQ0VfRkNMSzsKIAlJOTE1X1dSSVRFKExDUExMX0NUTCwgdmFsKTsKIAotCWlm ICh3YWl0X2ZvcigoSTkxNV9SRUFEKExDUExMX0NUTCkgJgotCQkgICAgICBMQ1BMTF9DRF9TT1VS Q0VfRkNMS19ET05FKSA9PSAwLCAxKSkKKwlpZiAod2FpdF91bnRpbF9yZWdfY2xyKExDUExMX0NU TCwgTENQTExfQ0RfU09VUkNFX0ZDTEtfRE9ORSwgMSkpCiAJCURSTV9FUlJPUigiU3dpdGNoaW5n IGJhY2sgdG8gTENQTEwgZmFpbGVkXG4iKTsKIAogCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMu aHdfbG9jayk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwppbmRleCBiMTQ3NjFmNTg1ZTkuLmYzMmU1 ZDBhOTcxZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCkBAIC0xNjk5LDggKzE2OTksNyBAQCBz dGF0aWMgdm9pZCB3YWl0X3BhbmVsX3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAog CQkJSTkxNV9SRUFEKHBwX3N0YXRfcmVnKSwKIAkJCUk5MTVfUkVBRChwcF9jdHJsX3JlZykpOwog Ci0JaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQocHBfc3RhdF9yZWcpICYgbWFzaykgPT0gdmFsdWUs Ci0JCSAgICAgNSAqIE1TRUNfUEVSX1NFQykpCisJaWYgKHdhaXRfdW50aWxfcmVnKHBwX3N0YXRf cmVnLCBtYXNrLCB2YWx1ZSwgNSAqIE1TRUNfUEVSX1NFQykpCiAJCURSTV9FUlJPUigiUGFuZWwg c3RhdHVzIHRpbWVvdXQ6IHN0YXR1cyAlMDh4IGNvbnRyb2wgJTA4eFxuIiwKIAkJCQlJOTE1X1JF QUQocHBfc3RhdF9yZWcpLAogCQkJCUk5MTVfUkVBRChwcF9jdHJsX3JlZykpOwpAQCAtMzI1Miw4 ICszMjUxLDcgQEAgdm9pZCBpbnRlbF9kcF9zZXRfaWRsZV9saW5rX3RyYWluKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCiAJaWYgKHBvcnQgPT0gUE9SVF9BKQogCQlyZXR1cm47CiAKLQlpZiAo d2FpdF9mb3IoKEk5MTVfUkVBRChEUF9UUF9TVEFUVVMocG9ydCkpICYgRFBfVFBfU1RBVFVTX0lE TEVfRE9ORSksCi0JCSAgICAgMSkpCisJaWYgKHdhaXRfdW50aWxfcmVnX3NldChEUF9UUF9TVEFU VVMocG9ydCksIERQX1RQX1NUQVRVU19JRExFX0RPTkUsIDEpKQogCQlEUk1fRVJST1IoIlRpbWVk IG91dCB3YWl0aW5nIGZvciBEUCBpZGxlIHBhdHRlcm5zXG4iKTsKIH0KIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcF9tc3QuYwppbmRleCA3YTM0MDkwY2VmMzQuLjhhMDY2ZGQ2NzBjNSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMKQEAgLTIxMyw4ICsyMTMsNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9tc3RfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQogCiAJ RFJNX0RFQlVHX0tNUygiJWRcbiIsIGludGVsX2RwLT5hY3RpdmVfbXN0X2xpbmtzKTsKIAotCWlm ICh3YWl0X2ZvcigoSTkxNV9SRUFEKERQX1RQX1NUQVRVUyhwb3J0KSkgJiBEUF9UUF9TVEFUVVNf QUNUX1NFTlQpLAotCQkgICAgIDEpKQorCWlmICh3YWl0X3VudGlsX3JlZ19zZXQoRFBfVFBfU1RB VFVTKHBvcnQpLCBEUF9UUF9TVEFUVVNfQUNUX1NFTlQsIDEpKQogCQlEUk1fRVJST1IoIlRpbWVk IG91dCB3YWl0aW5nIGZvciBBQ1Qgc2VudFxuIik7CiAKIAlyZXQgPSBkcm1fZHBfY2hlY2tfYWN0 X3N0YXR1cygmaW50ZWxfZHAtPm1zdF9tZ3IpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHBsbF9tZ3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxf bWdyLmMKaW5kZXggYzI4M2JhNGJhYmU4Li45Njk5Y2JjZGVmMTkgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwbGxfbWdyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHBsbF9tZ3IuYwpAQCAtODUzLDcgKzg1Myw3IEBAIHN0YXRpYyB2b2lkIHNrbF9k ZGlfcGxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJSTkxNV9X UklURShyZWdzW3BsbC0+aWRdLmN0bCwKIAkJICAgSTkxNV9SRUFEKHJlZ3NbcGxsLT5pZF0uY3Rs KSB8IExDUExMX1BMTF9FTkFCTEUpOwogCi0JaWYgKHdhaXRfZm9yKEk5MTVfUkVBRChEUExMX1NU QVRVUykgJiBEUExMX0xPQ0socGxsLT5pZCksIDUpKQorCWlmICh3YWl0X3VudGlsX3JlZ19zZXQo RFBMTF9TVEFUVVMsIERQTExfTE9DSyhwbGwtPmlkKSwgNSkpCiAJCURSTV9FUlJPUigiRFBMTCAl ZCBub3QgbG9ja2VkXG4iLCBwbGwtPmlkKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYwpp bmRleCA0MDA5NjE4YTViMzQuLjYwZDJmNzNkNjhkMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHNpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNp LmMKQEAgLTkwLDcgKzkwLDcgQEAgc3RhdGljIHZvaWQgd2FpdF9mb3JfZHNpX2ZpZm9fZW1wdHko c3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpLCBlbnVtIHBvcnQgcG9ydCkKIAltYXNrID0gTFBf Q1RSTF9GSUZPX0VNUFRZIHwgSFNfQ1RSTF9GSUZPX0VNUFRZIHwKIAkJTFBfREFUQV9GSUZPX0VN UFRZIHwgSFNfREFUQV9GSUZPX0VNUFRZOwogCi0JaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoTUlQ SV9HRU5fRklGT19TVEFUKHBvcnQpKSAmIG1hc2spID09IG1hc2ssIDEwMCkpCisJaWYgKHdhaXRf dW50aWxfcmVnKE1JUElfR0VOX0ZJRk9fU1RBVChwb3J0KSwgbWFzaywgbWFzaywgMTAwKSkKIAkJ RFJNX0VSUk9SKCJEUEkgRklGT3MgYXJlIG5vdCBlbXB0eVxuIik7CiB9CiAKQEAgLTE1OSw3ICsx NTksNyBAQCBzdGF0aWMgc3NpemVfdCBpbnRlbF9kc2lfaG9zdF90cmFuc2ZlcihzdHJ1Y3QgbWlw aV9kc2lfaG9zdCAqaG9zdCwKIAkvKiBub3RlOiB0aGlzIGlzIG5ldmVyIHRydWUgZm9yIHJlYWRz ICovCiAJaWYgKHBhY2tldC5wYXlsb2FkX2xlbmd0aCkgewogCi0JCWlmICh3YWl0X2ZvcigoSTkx NV9SRUFEKE1JUElfR0VOX0ZJRk9fU1RBVChwb3J0KSkgJiBkYXRhX21hc2spID09IDAsIDUwKSkK KwkJaWYgKHdhaXRfdW50aWxfcmVnX2NscihNSVBJX0dFTl9GSUZPX1NUQVQocG9ydCksIGRhdGFf bWFzaywgNTApKQogCQkJRFJNX0VSUk9SKCJUaW1lb3V0IHdhaXRpbmcgZm9yIEhTL0xQIERBVEEg RklGTyAhZnVsbFxuIik7CiAKIAkJd3JpdGVfZGF0YShkZXZfcHJpdiwgZGF0YV9yZWcsIHBhY2tl dC5wYXlsb2FkLApAQCAtMTcwLDE2ICsxNzAsMTUgQEAgc3RhdGljIHNzaXplX3QgaW50ZWxfZHNp X2hvc3RfdHJhbnNmZXIoc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3QsCiAJCUk5MTVfV1JJVEUo TUlQSV9JTlRSX1NUQVQocG9ydCksIEdFTl9SRUFEX0RBVEFfQVZBSUwpOwogCX0KIAotCWlmICh3 YWl0X2ZvcigoSTkxNV9SRUFEKE1JUElfR0VOX0ZJRk9fU1RBVChwb3J0KSkgJiBjdHJsX21hc2sp ID09IDAsIDUwKSkgeworCWlmICh3YWl0X3VudGlsX3JlZ19jbHIoTUlQSV9HRU5fRklGT19TVEFU KHBvcnQpLCBjdHJsX21hc2ssIDUwKSkKIAkJRFJNX0VSUk9SKCJUaW1lb3V0IHdhaXRpbmcgZm9y IEhTL0xQIENUUkwgRklGTyAhZnVsbFxuIik7Ci0JfQogCiAJSTkxNV9XUklURShjdHJsX3JlZywg aGVhZGVyWzJdIDw8IDE2IHwgaGVhZGVyWzFdIDw8IDggfCBoZWFkZXJbMF0pOwogCiAJLyogLT5y eF9sZW4gaXMgc2V0IG9ubHkgZm9yIHJlYWRzICovCiAJaWYgKG1zZy0+cnhfbGVuKSB7Ci0JCWRh dGFfbWFzayA9IEdFTl9SRUFEX0RBVEFfQVZBSUw7Ci0JCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFE KE1JUElfSU5UUl9TVEFUKHBvcnQpKSAmIGRhdGFfbWFzaykgPT0gZGF0YV9tYXNrLCA1MCkpCisJ CWlmICh3YWl0X3VudGlsX3JlZ19zZXQoTUlQSV9JTlRSX1NUQVQocG9ydCksCisJCQkJICAgICAg IEdFTl9SRUFEX0RBVEFfQVZBSUwsIDUwKSkKIAkJCURSTV9FUlJPUigiVGltZW91dCB3YWl0aW5n IGZvciByZWFkIGRhdGEuXG4iKTsKIAogCQlyZWFkX2RhdGEoZGV2X3ByaXYsIGRhdGFfcmVnLCBt c2ctPnJ4X2J1ZiwgbXNnLT5yeF9sZW4pOwpAQCAtMjUxLDcgKzI1MCw2IEBAIHN0YXRpYyBpbnQg ZHBpX3NlbmRfY21kKHN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSwgdTMyIGNtZCwgYm9vbCBo cywKIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIgPSAmaW50ZWxfZHNpLT5iYXNlLmJhc2U7 CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmRldjsKIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCXUzMiBtYXNrOwogCiAJ LyogWFhYOiBwaXBlLCBocyAqLwogCWlmIChocykKQEAgLTI2OCw4ICsyNjYsOCBAQCBzdGF0aWMg aW50IGRwaV9zZW5kX2NtZChzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2ksIHUzMiBjbWQsIGJv b2wgaHMsCiAKIAlJOTE1X1dSSVRFKE1JUElfRFBJX0NPTlRST0wocG9ydCksIGNtZCk7CiAKLQlt YXNrID0gU1BMX1BLVF9TRU5UX0lOVEVSUlVQVDsKLQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChN SVBJX0lOVFJfU1RBVChwb3J0KSkgJiBtYXNrKSA9PSBtYXNrLCAxMDApKQorCWlmICh3YWl0X3Vu dGlsX3JlZ19zZXQoTUlQSV9JTlRSX1NUQVQocG9ydCksIFNQTF9QS1RfU0VOVF9JTlRFUlJVUFQs CisJCQkgICAgICAgMTAwKSkKIAkJRFJNX0VSUk9SKCJWaWRlbyBtb2RlIGNvbW1hbmQgMHglMDh4 IHNlbmQgZmFpbGVkLlxuIiwgY21kKTsKIAogCXJldHVybiAwOwpAQCAtNjY3LDggKzY2NSw3IEBA IHN0YXRpYyB2b2lkIGludGVsX2RzaV9jbGVhcl9kZXZpY2VfcmVhZHkoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIpCiAJCS8qIFdhaXQgdGlsbCBDbG9jayBsYW5lcyBhcmUgaW4gTFAtMDAg c3RhdGUgZm9yIE1JUEkgUG9ydCBBCiAJCSAqIG9ubHkuIE1JUEkgUG9ydCBDIGhhcyBubyBzaW1p bGFyIGJpdCBmb3IgY2hlY2tpbmcKIAkJICovCi0JCWlmICh3YWl0X2ZvcigoKEk5MTVfUkVBRChw b3J0X2N0cmwpICYgQUZFX0xBVENIT1VUKQotCQkJCQkJPT0gMHgwMDAwMCksIDMwKSkKKwkJaWYg KHdhaXRfdW50aWxfcmVnX2Nscihwb3J0X2N0cmwsIEFGRV9MQVRDSE9VVCwgMzApKQogCQkJRFJN X0VSUk9SKCJEU0kgTFAgbm90IGdvaW5nIExvd1xuIik7CiAKIAkJLyogRGlzYWJsZSBNSVBJIFBI WSB0cmFuc3BhcmVudCBsYXRjaCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHNpX3BsbC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX3BsbC5jCmlu ZGV4IDE3NjVlNmUxOGYyYy4uMmZlYmE4MzZlZTM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kc2lfcGxsLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHNpX3BsbC5jCkBAIC0yMzQsOCArMjM0LDcgQEAgc3RhdGljIHZvaWQgYnh0X2Rpc2FibGVfZHNp X3BsbChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIAkgKiBQTEwgbG9jayBzaG91bGQg ZGVhc3NlcnQgd2l0aGluIDIwMHVzLgogCSAqIFdhaXQgdXAgdG8gMW1zIGJlZm9yZSB0aW1pbmcg b3V0LgogCSAqLwotCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKEJYVF9EU0lfUExMX0VOQUJMRSkK LQkJCQkJJiBCWFRfRFNJX1BMTF9MT0NLRUQpID09IDAsIDEpKQorCWlmICh3YWl0X3VudGlsX3Jl Z19jbHIoQlhUX0RTSV9QTExfRU5BQkxFLCBCWFRfRFNJX1BMTF9MT0NLRUQsIDEpKQogCQlEUk1f RVJST1IoIlRpbWVvdXQgd2FpdGluZyBmb3IgUExMIGxvY2sgZGVhc3NlcnRpb25cbiIpOwogfQog CkBAIC00ODYsNyArNDg1LDcgQEAgc3RhdGljIHZvaWQgYnh0X2VuYWJsZV9kc2lfcGxsKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCUk5MTVfV1JJVEUoQlhUX0RTSV9QTExfRU5BQkxF LCB2YWwpOwogCiAJLyogVGltZW91dCBhbmQgZmFpbCBpZiBQTEwgbm90IGxvY2tlZCAqLwotCWlm ICh3YWl0X2ZvcihJOTE1X1JFQUQoQlhUX0RTSV9QTExfRU5BQkxFKSAmIEJYVF9EU0lfUExMX0xP Q0tFRCwgMSkpIHsKKwlpZiAod2FpdF91bnRpbF9yZWdfc2V0KEJYVF9EU0lfUExMX0VOQUJMRSwg QlhUX0RTSV9QTExfTE9DS0VELCAxKSkgewogCQlEUk1fRVJST1IoIlRpbWVkIG91dCB3YWl0aW5n IGZvciBEU0kgUExMIHRvIGxvY2tcbiIpOwogCQlyZXR1cm47CiAJfQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9mYmMuYwppbmRleCAwZGVhNWZiY2Q4YWEuLjE5Y2E3OTlmNDc5MyAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZmJjLmMKQEAgLTEyMyw4ICsxMjMsNyBAQCBzdGF0aWMgdm9pZCBpOHh4X2ZiY19kZWFj dGl2YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlmYmNfY3RsICY9IH5G QkNfQ1RMX0VOOwogCUk5MTVfV1JJVEUoRkJDX0NPTlRST0wsIGZiY19jdGwpOwogCi0JLyogV2Fp dCBmb3IgY29tcHJlc3NpbmcgYml0IHRvIGNsZWFyICovCi0JaWYgKHdhaXRfZm9yKChJOTE1X1JF QUQoRkJDX1NUQVRVUykgJiBGQkNfU1RBVF9DT01QUkVTU0lORykgPT0gMCwgMTApKSB7CisJaWYg KHdhaXRfdW50aWxfcmVnX2NscihGQkNfU1RBVFVTLCBGQkNfU1RBVF9DT01QUkVTU0lORywgMTAp KSB7CiAJCURSTV9ERUJVR19LTVMoIkZCQyBpZGxlIHRpbWVkIG91dFxuIik7CiAJCXJldHVybjsK IAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IGRiMTBjOTYxZTBmNC4uNjJhZTJlOTM4 MDg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtOTExLDcgKzkxMSw4IEBAIHZvaWQg aW50ZWxfbG9naWNhbF9yaW5nX3N0b3Aoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog CiAJLyogVE9ETzogSXMgdGhpcyBjb3JyZWN0IHdpdGggRXhlY2xpc3RzIGVuYWJsZWQ/ICovCiAJ STkxNV9XUklURV9NT0RFKGVuZ2luZSwgX01BU0tFRF9CSVRfRU5BQkxFKFNUT1BfUklORykpOwot CWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEX01PREUoZW5naW5lKSAmIE1PREVfSURMRSkgIT0gMCwg MTAwMCkpIHsKKwlpZiAod2FpdF91bnRpbF9yZWdfc2V0KFJJTkdfTUlfTU9ERShlbmdpbmUtPm1t aW9fYmFzZSksIE1PREVfSURMRSwKKwkJCSAgICAgICAxMDAwKSkgewogCQlEUk1fRVJST1IoIiVz IDp0aW1lZCBvdXQgdHJ5aW5nIHRvIHN0b3AgcmluZ1xuIiwgZW5naW5lLT5uYW1lKTsKIAkJcmV0 dXJuOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYwppbmRleCBkNjVmZDk0NTYwN2EuLjg3 NTRmOGJmNWUwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYwpAQCAtMjMxLDcgKzIzMSw3 IEBAIHN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9sdmRzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyKQogCiAJSTkxNV9XUklURShjdGxfcmVnLCBJOTE1X1JFQUQoY3RsX3JlZykgfCBQT1dF Ul9UQVJHRVRfT04pOwogCVBPU1RJTkdfUkVBRChsdmRzX2VuY29kZXItPnJlZyk7Ci0JaWYgKHdh aXRfZm9yKChJOTE1X1JFQUQoc3RhdF9yZWcpICYgUFBfT04pICE9IDAsIDEwMDApKQorCWlmICh3 YWl0X3VudGlsX3JlZ19zZXQoc3RhdF9yZWcsIFBQX09OLCAxMDAwKSkKIAkJRFJNX0VSUk9SKCJ0 aW1lZCBvdXQgd2FpdGluZyBmb3IgcGFuZWwgdG8gcG93ZXIgb25cbiIpOwogCiAJaW50ZWxfcGFu ZWxfZW5hYmxlX2JhY2tsaWdodChpbnRlbF9jb25uZWN0b3IpOwpAQCAtMjUzLDcgKzI1Myw3IEBA IHN0YXRpYyB2b2lkIGludGVsX2Rpc2FibGVfbHZkcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlcikKIAl9CiAKIAlJOTE1X1dSSVRFKGN0bF9yZWcsIEk5MTVfUkVBRChjdGxfcmVnKSAmIH5Q T1dFUl9UQVJHRVRfT04pOwotCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKHN0YXRfcmVnKSAmIFBQ X09OKSA9PSAwLCAxMDAwKSkKKwlpZiAod2FpdF91bnRpbF9yZWdfY2xyKHN0YXRfcmVnLCBQUF9P TiwgMTAwMCkpCiAJCURSTV9FUlJPUigidGltZWQgb3V0IHdhaXRpbmcgZm9yIHBhbmVsIHRvIHBv d2VyIG9mZlxuIik7CiAKIAlJOTE1X1dSSVRFKGx2ZHNfZW5jb2Rlci0+cmVnLCBJOTE1X1JFQUQo bHZkc19lbmNvZGVyLT5yZWcpICYgfkxWRFNfUE9SVF9FTik7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0u YwppbmRleCBhZGI2NDYzOGY1OTUuLmU3Mjg5MDIxMGE2ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w bS5jCkBAIC03NDMxLDggKzc0MzEsNyBAQCBpbnQgc2FuZHlicmlkZ2VfcGNvZGVfcmVhZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBtYm94LCB1MzIgKnZhbAogCUk5MTVf V1JJVEUoR0VONl9QQ09ERV9EQVRBMSwgMCk7CiAJSTkxNV9XUklURShHRU42X1BDT0RFX01BSUxC T1gsIEdFTjZfUENPREVfUkVBRFkgfCBtYm94KTsKIAotCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFE KEdFTjZfUENPREVfTUFJTEJPWCkgJiBHRU42X1BDT0RFX1JFQURZKSA9PSAwLAotCQkgICAgIDUw MCkpIHsKKwlpZiAod2FpdF91bnRpbF9yZWdfY2xyKEdFTjZfUENPREVfTUFJTEJPWCwgR0VONl9Q Q09ERV9SRUFEWSwgNTAwKSkgewogCQlEUk1fRVJST1IoInRpbWVvdXQgd2FpdGluZyBmb3IgcGNv ZGUgcmVhZCAoJWQpIHRvIGZpbmlzaFxuIiwgbWJveCk7CiAJCXJldHVybiAtRVRJTUVET1VUOwog CX0KQEAgLTc0NTUsOCArNzQ1NCw3IEBAIGludCBzYW5keWJyaWRnZV9wY29kZV93cml0ZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBtYm94LCB1MzIgdmFsCiAJSTkxNV9X UklURShHRU42X1BDT0RFX0RBVEEsIHZhbCk7CiAJSTkxNV9XUklURShHRU42X1BDT0RFX01BSUxC T1gsIEdFTjZfUENPREVfUkVBRFkgfCBtYm94KTsKIAotCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFE KEdFTjZfUENPREVfTUFJTEJPWCkgJiBHRU42X1BDT0RFX1JFQURZKSA9PSAwLAotCQkgICAgIDUw MCkpIHsKKwlpZiAod2FpdF91bnRpbF9yZWdfY2xyKEdFTjZfUENPREVfTUFJTEJPWCwgR0VONl9Q Q09ERV9SRUFEWSwgNTAwKSkgewogCQlEUk1fRVJST1IoInRpbWVvdXQgd2FpdGluZyBmb3IgcGNv ZGUgd3JpdGUgKCVkKSB0byBmaW5pc2hcbiIsIG1ib3gpOwogCQlyZXR1cm4gLUVUSU1FRE9VVDsK IAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCmluZGV4IDkxMjMxMmI3OWVkYS4uYmIxYWIwZDEz ZWU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYwpAQCAtNDc5LDggKzQ3OSw4IEBAIHN0YXRp YyB2b2lkIHZsdl9wc3JfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCiAJaWYg KGRldl9wcml2LT5wc3IuYWN0aXZlKSB7CiAJCS8qIFB1dCBWTFYgUFNSIGJhY2sgdG8gUFNSX3N0 YXRlIDAgdGhhdCBpcyBQU1IgRGlzYWJsZWQuICovCi0JCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFE KFZMVl9QU1JTVEFUKGludGVsX2NydGMtPnBpcGUpKSAmCi0JCQkgICAgICBWTFZfRURQX1BTUl9J Tl9UUkFOUykgPT0gMCwgMSkpCisJCWlmICh3YWl0X3VudGlsX3JlZ19jbHIoVkxWX1BTUlNUQVQo aW50ZWxfY3J0Yy0+cGlwZSksCisJCQkJICAgICAgIFZMVl9FRFBfUFNSX0lOX1RSQU5TLCAxKSkK IAkJCVdBUk4oMSwgIlBTUiB0cmFuc2l0aW9uIHRvb2sgbG9uZ2VyIHRoYW4gZXhwZWN0ZWRcbiIp OwogCiAJCXZhbCA9IEk5MTVfUkVBRChWTFZfUFNSQ1RMKGludGVsX2NydGMtPnBpcGUpKTsKQEAg LTUwNiw5ICs1MDYsOSBAQCBzdGF0aWMgdm9pZCBoc3dfcHNyX2Rpc2FibGUoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCkKIAkJCSAgIEk5MTVfUkVBRChFRFBfUFNSX0NUTCkgJiB+RURQX1BTUl9F TkFCTEUpOwogCiAJCS8qIFdhaXQgdGlsbCBQU1IgaXMgaWRsZSAqLwotCQlpZiAod2FpdF9mb3Io KEk5MTVfUkVBRChFRFBfUFNSX1NUQVRVU19DVEwpICYKLQkJCSAgICAgIEVEUF9QU1JfU1RBVFVT X1NUQVRFX01BU0spID09IDAsCi0JCQkgICAgIDIgKiBNU0VDX1BFUl9TRUMpKQorCQlpZiAod2Fp dF91bnRpbF9yZWcoRURQX1BTUl9TVEFUVVNfQ1RMLAorCQkJCSAgIEVEUF9QU1JfU1RBVFVTX1NU QVRFX01BU0ssIDAsCisJCQkJICAgMiAqIE1TRUNfUEVSX1NFQykpCiAJCQlEUk1fRVJST1IoIlRp bWVkIG91dCB3YWl0aW5nIGZvciBQU1IgSWRsZSBTdGF0ZVxuIik7CiAKIAkJZGV2X3ByaXYtPnBz ci5hY3RpdmUgPSBmYWxzZTsKQEAgLTU2MywxNSArNTYzLDE2IEBAIHN0YXRpYyB2b2lkIGludGVs X3Bzcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkgKiBQU1IgbWlnaHQgdGFrZSBz b21lIHRpbWUgdG8gZ2V0IGZ1bGx5IGRpc2FibGVkCiAJICogYW5kIGJlIHJlYWR5IGZvciByZS1l bmFibGUuCiAJICovCisKIAlpZiAoSEFTX0RESShkZXZfcHJpdikpIHsKLQkJaWYgKHdhaXRfZm9y KChJOTE1X1JFQUQoRURQX1BTUl9TVEFUVVNfQ1RMKSAmCi0JCQkgICAgICBFRFBfUFNSX1NUQVRV U19TVEFURV9NQVNLKSA9PSAwLCA1MCkpIHsKKwkJaWYgKHdhaXRfdW50aWxfcmVnKEVEUF9QU1Jf U1RBVFVTX0NUTCwKKwkJCQkgICBFRFBfUFNSX1NUQVRVU19TVEFURV9NQVNLLCAwLCA1MCkpIHsK IAkJCURSTV9FUlJPUigiVGltZWQgb3V0IHdhaXRpbmcgZm9yIFBTUiBJZGxlIGZvciByZS1lbmFi bGVcbiIpOwogCQkJcmV0dXJuOwogCQl9CiAJfSBlbHNlIHsKLQkJaWYgKHdhaXRfZm9yKChJOTE1 X1JFQUQoVkxWX1BTUlNUQVQocGlwZSkpICYKLQkJCSAgICAgIFZMVl9FRFBfUFNSX0lOX1RSQU5T KSA9PSAwLCAxKSkgeworCQlpZiAod2FpdF91bnRpbF9yZWdfY2xyKFZMVl9QU1JTVEFUKHBpcGUp LAorCQkJCSAgICAgICBWTFZfRURQX1BTUl9JTl9UUkFOUywgMSkpIHsKIAkJCURSTV9FUlJPUigi VGltZWQgb3V0IHdhaXRpbmcgZm9yIFBTUiBJZGxlIGZvciByZS1lbmFibGVcbiIpOwogCQkJcmV0 dXJuOwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKaW5kZXggOGQz NWEzOTc4ZjliLi40NjcwMjU5NGY5M2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmMKQEAgLTUxNSw4ICs1MTUsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9yaW5nX3NldHVw X3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJSTkxNV9XUklU RShyZWcsCiAJCQkgICBfTUFTS0VEX0JJVF9FTkFCTEUoSU5TVFBNX1RMQl9JTlZBTElEQVRFIHwK IAkJCQkJICAgICAgSU5TVFBNX1NZTkNfRkxVU0gpKTsKLQkJaWYgKHdhaXRfZm9yKChJOTE1X1JF QUQocmVnKSAmIElOU1RQTV9TWU5DX0ZMVVNIKSA9PSAwLAotCQkJICAgICAxMDAwKSkKKwkJaWYg KHdhaXRfdW50aWxfcmVnX2NscihyZWcsIElOU1RQTV9TWU5DX0ZMVVNILCAxMDAwKSkKIAkJCURS TV9FUlJPUigiJXM6IHdhaXQgZm9yIFN5bmNGbHVzaCB0byBjb21wbGV0ZSBmb3IgVExCIGludmFs aWRhdGlvbiB0aW1lZCBvdXRcbiIsCiAJCQkJICBlbmdpbmUtPm5hbWUpOwogCX0KQEAgLTUyOCw3 ICs1MjcsOCBAQCBzdGF0aWMgYm9vbCBzdG9wX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQogCiAJaWYgKCFJU19HRU4yKGRldl9wcml2KSkgewogCQlJOTE1X1dSSVRFX01PREUo ZW5naW5lLCBfTUFTS0VEX0JJVF9FTkFCTEUoU1RPUF9SSU5HKSk7Ci0JCWlmICh3YWl0X2Zvcigo STkxNV9SRUFEX01PREUoZW5naW5lKSAmIE1PREVfSURMRSkgIT0gMCwgMTAwMCkpIHsKKwkJaWYg KHdhaXRfdW50aWxfcmVnX3NldChSSU5HX01JX01PREUoZW5naW5lLT5tbWlvX2Jhc2UpLAorCQkJ CSAgICAgICBNT0RFX0lETEUsIDEwMDApKSB7CiAJCQlEUk1fRVJST1IoIiVzIDogdGltZWQgb3V0 IHRyeWluZyB0byBzdG9wIHJpbmdcbiIsCiAJCQkJICBlbmdpbmUtPm5hbWUpOwogCQkJLyogU29t ZXRpbWVzIHdlIG9ic2VydmUgdGhhdCB0aGUgaWRsZSBmbGFnIGlzIG5vdApAQCAtMjU0NSw5ICsy NTQ1LDkgQEAgc3RhdGljIHZvaWQgZ2VuNl9ic2RfcmluZ193cml0ZV90YWlsKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSwKIAlJOTE1X1dSSVRFNjQoR0VONl9CU0RfUk5DSUQsIDB4MCk7 CiAKIAkvKiBXYWl0IGZvciB0aGUgcmluZyBub3QgdG8gYmUgaWRsZSwgaS5lLiBmb3IgaXQgdG8g d2FrZSB1cC4gKi8KLQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChHRU42X0JTRF9TTEVFUF9QU01J X0NPTlRST0wpICYKLQkJICAgICAgR0VONl9CU0RfU0xFRVBfSU5ESUNBVE9SKSA9PSAwLAotCQkg ICAgIDUwKSkKKwlpZiAod2FpdF91bnRpbF9yZWdfY2xyKEdFTjZfQlNEX1NMRUVQX1BTTUlfQ09O VFJPTCwKKwkJCSAgICAgICBHRU42X0JTRF9TTEVFUF9JTkRJQ0FUT1IsCisJCQkgICAgICAgNTAp KQogCQlEUk1fRVJST1IoInRpbWVkIG91dCB3YWl0aW5nIGZvciB0aGUgQlNEIHJpbmcgdG8gd2Fr ZSB1cFxuIik7CiAKIAkvKiBOb3cgdGhhdCB0aGUgcmluZyBpcyBmdWxseSBwb3dlcmVkIHVwLCB1 cGRhdGUgdGhlIHRhaWwgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3J1bnRpbWVfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwpp bmRleCBiNjliOTM1NTE2ZmIuLmExMTM0MmM5ZGRkNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3J1bnRpbWVfcG0uYwpAQCAtMzQ1LDggKzM0NSw4IEBAIHN0YXRpYyB2b2lkIGhzd19zZXRf cG93ZXJfd2VsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAKIAkJaWYgKCFp c19lbmFibGVkKSB7CiAJCQlEUk1fREVCVUdfS01TKCJFbmFibGluZyBwb3dlciB3ZWxsXG4iKTsK LQkJCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKEhTV19QV1JfV0VMTF9EUklWRVIpICYKLQkJCQkg ICAgICBIU1dfUFdSX1dFTExfU1RBVEVfRU5BQkxFRCksIDIwKSkKKwkJCWlmICh3YWl0X3VudGls X3JlZ19zZXQoSFNXX1BXUl9XRUxMX0RSSVZFUiwKKwkJCQkJICAgICAgIEhTV19QV1JfV0VMTF9T VEFURV9FTkFCTEVELCAyMCkpCiAJCQkJRFJNX0VSUk9SKCJUaW1lb3V0IGVuYWJsaW5nIHBvd2Vy IHdlbGxcbiIpOwogCQkJaHN3X3Bvd2VyX3dlbGxfcG9zdF9lbmFibGUoZGV2X3ByaXYpOwogCQl9 CkBAIC02NjksOCArNjY5LDggQEAgc3RhdGljIHZvaWQgc2tsX3NldF9wb3dlcl93ZWxsKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogCXN3aXRjaCAocG93ZXJfd2VsbC0+ZGF0 YSkgewogCWNhc2UgU0tMX0RJU1BfUFdfMToKLQkJaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoU0tM X0ZVU0VfU1RBVFVTKSAmCi0JCQlTS0xfRlVTRV9QRzBfRElTVF9TVEFUVVMpLCAxKSkgeworCQlp ZiAod2FpdF91bnRpbF9yZWdfc2V0KFNLTF9GVVNFX1NUQVRVUywKKwkJCQkgICAgICAgU0tMX0ZV U0VfUEcwX0RJU1RfU1RBVFVTLCAxKSkgewogCQkJRFJNX0VSUk9SKCJQRzAgbm90IGVuYWJsZWRc biIpOwogCQkJcmV0dXJuOwogCQl9CkBAIC03MzEsMTIgKzczMSwxMiBAQCBzdGF0aWMgdm9pZCBz a2xfc2V0X3Bvd2VyX3dlbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCiAJ aWYgKGNoZWNrX2Z1c2Vfc3RhdHVzKSB7CiAJCWlmIChwb3dlcl93ZWxsLT5kYXRhID09IFNLTF9E SVNQX1BXXzEpIHsKLQkJCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKFNLTF9GVVNFX1NUQVRVUykg JgotCQkJCVNLTF9GVVNFX1BHMV9ESVNUX1NUQVRVUyksIDEpKQorCQkJaWYgKHdhaXRfdW50aWxf cmVnX3NldChTS0xfRlVTRV9TVEFUVVMsCisJCQkJCSAgICAgICBTS0xfRlVTRV9QRzFfRElTVF9T VEFUVVMsIDEpKQogCQkJCURSTV9FUlJPUigiUEcxIGRpc3RyaWJ1dGluZyBzdGF0dXMgdGltZW91 dFxuIik7CiAJCX0gZWxzZSBpZiAocG93ZXJfd2VsbC0+ZGF0YSA9PSBTS0xfRElTUF9QV18yKSB7 Ci0JCQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChTS0xfRlVTRV9TVEFUVVMpICYKLQkJCQlTS0xf RlVTRV9QRzJfRElTVF9TVEFUVVMpLCAxKSkKKwkJCWlmICh3YWl0X3VudGlsX3JlZ19zZXQoU0tM X0ZVU0VfU1RBVFVTLAorCQkJCQkgICAgICAgU0tMX0ZVU0VfUEcyX0RJU1RfU1RBVFVTLCAxKSkK IAkJCQlEUk1fRVJST1IoIlBHMiBkaXN0cmlidXRpbmcgc3RhdHVzIHRpbWVvdXRcbiIpOwogCQl9 CiAJfQpAQCAtMTA5Nyw3ICsxMDk3LDYgQEAgc3RhdGljIHZvaWQgYXNzZXJ0X2Nodl9waHlfc3Rh dHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAl1MzIgcGh5X2NvbnRyb2wg PSBkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sOwogCXUzMiBwaHlfc3RhdHVzID0gMDsKIAl1MzIg cGh5X3N0YXR1c19tYXNrID0gMHhmZmZmZmZmZjsKLQl1MzIgdG1wOwogCiAJLyoKIAkgKiBUaGUg QklPUyBjYW4gbGVhdmUgdGhlIFBIWSBpcyBzb21lIHdlaXJkIHN0YXRlCkBAIC0xMTg1LDEwICsx MTg0LDE0IEBAIHN0YXRpYyB2b2lkIGFzc2VydF9jaHZfcGh5X3N0YXR1cyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJICogVGhlIFBIWSBtYXkgYmUgYnVzeSB3aXRoIHNvbWUg aW5pdGlhbCBjYWxpYnJhdGlvbiBhbmQgd2hhdG5vdCwKIAkgKiBzbyB0aGUgcG93ZXIgc3RhdGUg Y2FuIHRha2UgYSB3aGlsZSB0byBhY3R1YWxseSBjaGFuZ2UuCiAJICovCi0JaWYgKHdhaXRfZm9y KCh0bXAgPSBJOTE1X1JFQUQoRElTUExBWV9QSFlfU1RBVFVTKSAmIHBoeV9zdGF0dXNfbWFzaykg PT0gcGh5X3N0YXR1cywgMTApKQorCWlmICh3YWl0X3VudGlsX3JlZyhESVNQTEFZX1BIWV9TVEFU VVMsCisJCQkgICBwaHlfc3RhdHVzX21hc2ssIHBoeV9zdGF0dXMsIDEwKSkgeworCQl1MzIgdG1w ID0gSTkxNV9SRUFEKERJU1BMQVlfUEhZX1NUQVRVUyk7CisKIAkJV0FSTihwaHlfc3RhdHVzICE9 IHRtcCwKIAkJICAgICAiVW5leHBlY3RlZCBQSFlfU1RBVFVTIDB4JTA4eCwgZXhwZWN0ZWQgMHgl MDh4IChQSFlfQ09OVFJPTD0weCUwOHgpXG4iLAogCQkgICAgIHRtcCwgcGh5X3N0YXR1cywgZGV2 X3ByaXYtPmNodl9waHlfY29udHJvbCk7CisJfQogfQogCiAjdW5kZWYgQklUU19TRVQKQEAgLTEy MTYsNyArMTIxOSw3IEBAIHN0YXRpYyB2b2lkIGNodl9kcGlvX2Ntbl9wb3dlcl93ZWxsX2VuYWJs ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJdmx2X3NldF9wb3dlcl93ZWxs KGRldl9wcml2LCBwb3dlcl93ZWxsLCB0cnVlKTsKIAogCS8qIFBvbGwgZm9yIHBoeXB3cmdvb2Qg c2lnbmFsICovCi0JaWYgKHdhaXRfZm9yKEk5MTVfUkVBRChESVNQTEFZX1BIWV9TVEFUVVMpICYg UEhZX1BPV0VSR09PRChwaHkpLCAxKSkKKwlpZiAod2FpdF91bnRpbF9yZWdfc2V0KERJU1BMQVlf UEhZX1NUQVRVUywgUEhZX1BPV0VSR09PRChwaHkpLCAxKSkKIAkJRFJNX0VSUk9SKCJEaXNwbGF5 IFBIWSAlZCBpcyBub3QgcG93ZXIgdXBcbiIsIHBoeSk7CiAKIAltdXRleF9sb2NrKCZkZXZfcHJp di0+c2JfbG9jayk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRl YmFuZC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2lkZWJhbmQuYwppbmRleCBjMzk5 ODE4OGNmMzUuLjJiNWJiOWJhMTYwZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfc2lkZWJhbmQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRlYmFu ZC5jCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyBpbnQgdmx2X3NpZGViYW5kX3J3KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIGRldmZuLAogCiAJV0FSTl9PTighbXV0ZXhf aXNfbG9ja2VkKCZkZXZfcHJpdi0+c2JfbG9jaykpOwogCi0JaWYgKHdhaXRfZm9yKChJOTE1X1JF QUQoVkxWX0lPU0ZfRE9PUkJFTExfUkVRKSAmIElPU0ZfU0JfQlVTWSkgPT0gMCwgNSkpIHsKKwlp ZiAod2FpdF91bnRpbF9yZWdfY2xyKFZMVl9JT1NGX0RPT1JCRUxMX1JFUSwgSU9TRl9TQl9CVVNZ LCA1KSkgewogCQlEUk1fREVCVUdfRFJJVkVSKCJJT1NGIHNpZGViYW5kIGlkbGUgd2FpdCAoJXMp IHRpbWVkIG91dFxuIiwKIAkJCQkgaXNfcmVhZCA/ICJyZWFkIiA6ICJ3cml0ZSIpOwogCQlyZXR1 cm4gLUVBR0FJTjsKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIGludCB2bHZfc2lkZWJhbmRfcnco c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgZGV2Zm4sCiAJCUk5MTVfV1JJ VEUoVkxWX0lPU0ZfREFUQSwgKnZhbCk7CiAJSTkxNV9XUklURShWTFZfSU9TRl9ET09SQkVMTF9S RVEsIGNtZCk7CiAKLQlpZiAod2FpdF9mb3IoKEk5MTVfUkVBRChWTFZfSU9TRl9ET09SQkVMTF9S RVEpICYgSU9TRl9TQl9CVVNZKSA9PSAwLCA1KSkgeworCWlmICh3YWl0X3VudGlsX3JlZ19jbHIo VkxWX0lPU0ZfRE9PUkJFTExfUkVRLCBJT1NGX1NCX0JVU1ksIDUpKSB7CiAJCURSTV9ERUJVR19E UklWRVIoIklPU0Ygc2lkZWJhbmQgZmluaXNoIHdhaXQgKCVzKSB0aW1lZCBvdXRcbiIsCiAJCQkJ IGlzX3JlYWQgPyAicmVhZCIgOiAid3JpdGUiKTsKIAkJcmV0dXJuIC1FVElNRURPVVQ7CkBAIC0y MDIsOCArMjAyLDcgQEAgdTMyIGludGVsX3NiaV9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgdTE2IHJlZywKIAl1MzIgdmFsdWUgPSAwOwogCVdBUk5fT04oIW11dGV4X2lz X2xvY2tlZCgmZGV2X3ByaXYtPnNiX2xvY2spKTsKIAotCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFE KFNCSV9DVExfU1RBVCkgJiBTQklfQlVTWSkgPT0gMCwKLQkJCQkxMDApKSB7CisJaWYgKHdhaXRf dW50aWxfcmVnX2NscihTQklfQ1RMX1NUQVQsIFNCSV9CVVNZLCAxMDApKSB7CiAJCURSTV9FUlJP UigidGltZW91dCB3YWl0aW5nIGZvciBTQkkgdG8gYmVjb21lIHJlYWR5XG4iKTsKIAkJcmV0dXJu IDA7CiAJfQpAQCAtMjE2LDggKzIxNSw5IEBAIHUzMiBpbnRlbF9zYmlfcmVhZChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUxNiByZWcsCiAJCXZhbHVlID0gU0JJX0NUTF9ERVNU X01QSFkgfCBTQklfQ1RMX09QX0lPUkQ7CiAJSTkxNV9XUklURShTQklfQ1RMX1NUQVQsIHZhbHVl IHwgU0JJX0JVU1kpOwogCi0JaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQoU0JJX0NUTF9TVEFUKSAm IChTQklfQlVTWSB8IFNCSV9SRVNQT05TRV9GQUlMKSkgPT0gMCwKLQkJCQkxMDApKSB7CisJaWYg KHdhaXRfdW50aWxfcmVnKFNCSV9DVExfU1RBVCwKKwkJCSAgIChTQklfQlVTWSB8IFNCSV9SRVNQ T05TRV9GQUlMKSwgMCwKKwkJCSAgIDEwMCkpIHsKIAkJRFJNX0VSUk9SKCJ0aW1lb3V0IHdhaXRp bmcgZm9yIFNCSSB0byBjb21wbGV0ZSByZWFkIHRyYW5zYWN0aW9uXG4iKTsKIAkJcmV0dXJuIDA7 CiAJfQpAQCAtMjMyLDggKzIzMiw3IEBAIHZvaWQgaW50ZWxfc2JpX3dyaXRlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTE2IHJlZywgdTMyIHZhbHVlLAogCiAJV0FSTl9PTigh bXV0ZXhfaXNfbG9ja2VkKCZkZXZfcHJpdi0+c2JfbG9jaykpOwogCi0JaWYgKHdhaXRfZm9yKChJ OTE1X1JFQUQoU0JJX0NUTF9TVEFUKSAmIFNCSV9CVVNZKSA9PSAwLAotCQkJCTEwMCkpIHsKKwlp ZiAod2FpdF91bnRpbF9yZWdfY2xyKFNCSV9DVExfU1RBVCwgU0JJX0JVU1ksIDEwMCkpIHsKIAkJ RFJNX0VSUk9SKCJ0aW1lb3V0IHdhaXRpbmcgZm9yIFNCSSB0byBiZWNvbWUgcmVhZHlcbiIpOwog CQlyZXR1cm47CiAJfQpAQCAtMjQ3LDggKzI0Niw5IEBAIHZvaWQgaW50ZWxfc2JpX3dyaXRlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTE2IHJlZywgdTMyIHZhbHVlLAogCQl0 bXAgPSBTQklfQ1RMX0RFU1RfTVBIWSB8IFNCSV9DVExfT1BfSU9XUjsKIAlJOTE1X1dSSVRFKFNC SV9DVExfU1RBVCwgU0JJX0JVU1kgfCB0bXApOwogCi0JaWYgKHdhaXRfZm9yKChJOTE1X1JFQUQo U0JJX0NUTF9TVEFUKSAmIChTQklfQlVTWSB8IFNCSV9SRVNQT05TRV9GQUlMKSkgPT0gMCwKLQkJ CQkxMDApKSB7CisJaWYgKHdhaXRfdW50aWxfcmVnKFNCSV9DVExfU1RBVCwKKwkJCSAgIChTQklf QlVTWSB8IFNCSV9SRVNQT05TRV9GQUlMKSwgMCwKKwkJCSAgIDEwMCkpIHsKIAkJRFJNX0VSUk9S KCJ0aW1lb3V0IHdhaXRpbmcgZm9yIFNCSSB0byBjb21wbGV0ZSB3cml0ZSB0cmFuc2FjdGlvblxu Iik7CiAJCXJldHVybjsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF91bmNvcmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCmluZGV4IGUy MTc5OTdhOWZhMC4uZjcyNDIwZTAwNjIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF91bmNvcmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUu YwpAQCAtMTUzMCwxNSArMTUzMCwxMyBAQCBzdGF0aWMgaW50IGlyb25sYWtlX2RvX3Jlc2V0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogCUk5MTVfV1JJVEUoSUxLX0dEU1Is CiAJCSAgIElMS19HUkRPTV9SRU5ERVIgfCBJTEtfR1JET01fUkVTRVRfRU5BQkxFKTsKLQlyZXQg PSB3YWl0X2ZvcigoSTkxNV9SRUFEKElMS19HRFNSKSAmCi0JCQlJTEtfR1JET01fUkVTRVRfRU5B QkxFKSA9PSAwLCA1MDApOworCXJldCA9IHdhaXRfdW50aWxfcmVnX2NscihJTEtfR0RTUiwgSUxL X0dSRE9NX1JFU0VUX0VOQUJMRSwgNTAwKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCiAJ STkxNV9XUklURShJTEtfR0RTUiwKIAkJICAgSUxLX0dSRE9NX01FRElBIHwgSUxLX0dSRE9NX1JF U0VUX0VOQUJMRSk7Ci0JcmV0ID0gd2FpdF9mb3IoKEk5MTVfUkVBRChJTEtfR0RTUikgJgotCQkJ SUxLX0dSRE9NX1JFU0VUX0VOQUJMRSkgPT0gMCwgNTAwKTsKKwlyZXQgPSB3YWl0X3VudGlsX3Jl Z19jbHIoSUxLX0dEU1IsIElMS19HUkRPTV9SRVNFVF9FTkFCTEUsIDUwMCk7CiAJaWYgKHJldCkK IAkJcmV0dXJuIHJldDsKIAotLSAKMi41LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=