From mboxrd@z Thu Jan 1 00:00:00 1970 From: sourab.gupta@intel.com Subject: [PATCH 09/11] drm/i915: Extend i915 perf framework for collecting timestamps on all gpu engines Date: Tue, 16 Feb 2016 10:57:17 +0530 Message-ID: <1455600439-18480-10-git-send-email-sourab.gupta@intel.com> References: <1455600439-18480-1-git-send-email-sourab.gupta@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 41C6D6E735 for ; Tue, 16 Feb 2016 05:25:47 +0000 (UTC) In-Reply-To: <1455600439-18480-1-git-send-email-sourab.gupta@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: Jabin Wu , Sourab Gupta List-Id: intel-gfx@lists.freedesktop.org RnJvbTogU291cmFiIEd1cHRhIDxzb3VyYWIuZ3VwdGFAaW50ZWwuY29tPgoKVGhpcyBwYXRjaCBl eHRlbmRzIHRoZSBpOTE1ICBwZXJmIGZyYW1ld29yayB0byBoYW5kbGUgdGhlIHBlcmYgc2FtcGxl CmNvbGxlY3Rpb24gZm9yIGFueSBnaXZlbiBncHUgZW5naW5lLiBQYXJ0aWN1bGFybHksIHRoZSBz dXBwb3J0CmZvciBjb2xsZWN0aW5nIHRpbWVzdGFtcCBzYW1wbGUgdHlwZSBpcyBhZGRlZCwgd2hp Y2ggY2FuIGJlIHJlcXVlc3RlZCBmb3IKYW55IGVuZ2luZS4KVGhlIHRoaW5nIHRvIG5vdGUgaXMg dGhhdCwgc3RpbGwgb25seSBhIHNpbmdsZSBzdHJlYW0gaW5zdGFuY2UgY2FuIGJlCm9wZW5lZCBh dCBhbnkgcGFydGljdWxhciB0aW1lLiBUaG91Z2ggdGhhdCBzdHJlYW0gbWF5IG5vdyBiZSBvcGVu ZWQgZm9yIGFueQpncHUgZW5naW5lLCBmb3IgY29sbGVjdGlvbiBvZiB0aW1lc3RhbXAgc2FtcGxl cy4KClNvLCB0aGlzIHBhdGNoIGRvZXNuJ3QgYWRkIHRoZSBzdXBwb3J0IHRvIG9wZW4gbXVsdGlw bGUgY29uY3VycmVudCBzdHJlYW1zLAphcyB5ZXQuIFRob3VnaCBpdCBsYXlzIHRoZSBncm91bmR3 b3JrIGZvciB0aGlzIHN1cHBvcnQgdG8gYmUgYWRkZWQKc3VzZXF1ZW50bHkuIFBhcnQgb2YgdGhp cyBncm91bmR3b3JrIGludm9sdmVzIGhhdmluZyBzZXBhcmF0ZSBjb21tYW5kCnN0cmVhbSBidWZm ZXJzLCBwZXIgZW5naW5lLCBmb3IgaG9sZGluZyB0aGUgc2FtcGxlcyBnZW5lcmF0ZWQuCkxpa2V3 aXNlIGZvciBhIGZldyBvdGhlciBkYXRhIHN0cnVjdHVyZXMgbWFpbnRhaW5pbmcgcGVyLWVuZ2lu ZSBzdGF0ZS4KClNpZ25lZC1vZmYtYnk6IFNvdXJhYiBHdXB0YSA8c291cmFiLmd1cHRhQGludGVs LmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICB8ICAzMyArKy0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jIHwgNTc4ICsrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgfCAg IDIgKwogaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oICAgICAgfCAgIDcgKwogNCBmaWxlcyBj aGFuZ2VkLCA0MzEgaW5zZXJ0aW9ucygrKSwgMTg5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCmluZGV4IGNmODYyMjguLmIxYzk1MmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aApAQCAtMTcyNSw2ICsxNzI1LDcgQEAgc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gewogCiAJc3Ry dWN0IGxpc3RfaGVhZCBsaW5rOwogCisJZW51bSBpbnRlbF9yaW5nX2lkIHJpbmdfaWQ7CiAJdTMy IHNhbXBsZV9mbGFnczsKIAlpbnQgc2FtcGxlX3NpemU7CiAKQEAgLTE3MzQsNiArMTczNSw5IEBA IHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtIHsKIAkvKiBXaGV0aGVyIGNvbW1hbmQgc3RyZWFtIGJh c2VkIGRhdGEgY29sbGVjdGlvbiBpcyBlbmFibGVkICovCiAJYm9vbCBjc19tb2RlOwogCisJLyog V2hldGhlciB0aGUgT0EgdW5pdCBpcyBpbiB1c2UgKi8KKwlib29sIHVzaW5nX29hOworCiAJLyog RW5hYmxlcyB0aGUgY29sbGVjdGlvbiBvZiBIVyBzYW1wbGVzLCBlaXRoZXIgaW4gcmVzcG9uc2Ug dG8KIAkgKiBJOTE1X1BFUkZfSU9DVExfRU5BQkxFIG9yIGltcGxpY2l0bHkgY2FsbGVkIHdoZW4g c3RyZWFtIGlzCiAJICogb3BlbmVkIHdpdGhvdXQgSTkxNV9QRVJGX0ZMQUdfRElTQUJMRUQgKi8K QEAgLTE3ODIsNyArMTc4Niw4IEBAIHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtIHsKIAkgKiBSb3V0 aW5lIHRvIGVtaXQgdGhlIGNvbW1hbmRzIGluIHRoZSBjb21tYW5kIHN0cmVhbWVyIGFzc29jaWF0 ZWQKIAkgKiB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGdwdSBlbmdpbmUuCiAJICovCi0Jdm9pZCAo KmNvbW1hbmRfc3RyZWFtX2hvb2spKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1 MzIgdGFnKTsKKwl2b2lkICgqY29tbWFuZF9zdHJlYW1faG9vaykoc3RydWN0IGk5MTVfcGVyZl9z dHJlYW0gKnN0cmVhbSwKKwkJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMy IHRhZyk7CiB9OwogCiBzdHJ1Y3QgaTkxNV9vYV9vcHMgewpAQCAtMTgwNyw3ICsxODEyLDE2IEBA IHN0cnVjdCBpOTE1X29hX29wcyB7CiBzdHJ1Y3QgaTkxNV9wZXJmX2NzX2RhdGFfbm9kZSB7CiAJ c3RydWN0IGxpc3RfaGVhZCBsaW5rOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx dWVzdDsKLQl1MzIgb2Zmc2V0OworCisJLyogT2Zmc2V0cyBpbnRvIHRoZSBHRU0gb2JqIGhvbGRp bmcgdGhlIGRhdGEgKi8KKwl1MzIgc3RhcnRfb2Zmc2V0OworCXUzMiBvYV9vZmZzZXQ7CisJdTMy IHRzX29mZnNldDsKKworCS8qIGJ1ZmZlciBzaXplIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBlbnRy eSAqLworCXUzMiBzaXplOworCisJLyogT3RoZXIgbWV0YWRhdGEgKi8KIAl1MzIgY3R4X2lkOwog CXUzMiBwaWQ7CiAJdTMyIHRhZzsKQEAgLTIwNzEsMTQgKzIwODUsMTMgQEAgc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgewogCiAJCXNwaW5sb2NrX3QgaG9va19sb2NrOwogCi0JCXN0cnVjdCB7Ci0J CQlzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqZXhjbHVzaXZlX3N0cmVhbTsKKwkJc3RydWN0IGhy dGltZXIgcG9sbF9jaGVja190aW1lcjsKKwkJc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKmV4Y2x1 c2l2ZV9zdHJlYW07CisJCXdhaXRfcXVldWVfaGVhZF90IHBvbGxfd3FbSTkxNV9OVU1fUklOR1Nd OwogCisJCXN0cnVjdCB7CiAJCQl1MzIgc3BlY2lmaWNfY3R4X2lkOwogCi0JCQlzdHJ1Y3QgaHJ0 aW1lciBwb2xsX2NoZWNrX3RpbWVyOwotCQkJd2FpdF9xdWV1ZV9oZWFkX3QgcG9sbF93cTsKLQog CQkJYm9vbCBwZXJpb2RpYzsKIAkJCXUzMiBwZXJpb2RfZXhwb25lbnQ7CiAKQEAgLTIxMTUsMTAg KzIxMjgsMTAgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCQkJc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iajsKIAkJCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCQkJdTggKmFkZHI7 Ci0JCX0gY29tbWFuZF9zdHJlYW1fYnVmOworCQl9IGNvbW1hbmRfc3RyZWFtX2J1ZltJOTE1X05V TV9SSU5HU107CiAKLQkJc3RydWN0IGxpc3RfaGVhZCBub2RlX2xpc3Q7Ci0JCXNwaW5sb2NrX3Qg bm9kZV9saXN0X2xvY2s7CisJCXN0cnVjdCBsaXN0X2hlYWQgbm9kZV9saXN0W0k5MTVfTlVNX1JJ TkdTXTsKKwkJc3BpbmxvY2tfdCBub2RlX2xpc3RfbG9ja1tJOTE1X05VTV9SSU5HU107CiAJfSBw ZXJmOwogCiAJLyogQWJzdHJhY3QgdGhlIHN1Ym1pc3Npb24gbWVjaGFuaXNtIChsZWdhY3kgcmlu Z2J1ZmZlciBvciBleGVjbGlzdHMpIGF3YXkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcGVyZi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKaW5k ZXggMTQxZjcyMS4uMWQyNzEyZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9wZXJmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKQEAgLTUxLDEy ICs1MSwxNyBAQCBzdGF0aWMgdTMyIGk5MTVfcGVyZl9zdHJlYW1fcGFyYW5vaWQgPSB0cnVlOwog I2RlZmluZSBHRU44X09BUkVQT1JUX1JFQVNPTl9HT19UUkFOU0lUSU9OICAoMTw8MjMpCiAjZGVm aW5lIEdFTjlfT0FSRVBPUlRfUkVBU09OX0NMS19SQVRJTyAgICAgICgxPDwyNCkKIAotLyogRGF0 YSBjb21tb24gdG8gcGVyaW9kaWMgYW5kIFJDUyBiYXNlZCBzYW1wbGVzICovCi1zdHJ1Y3Qgb2Ff c2FtcGxlX2RhdGEgeworI2RlZmluZSBPQV9BRERSX0FMSUdOIDY0CisjZGVmaW5lIFRTX0FERFJf QUxJR04gOAorI2RlZmluZSBJOTE1X1BFUkZfVFNfU0FNUExFX1NJWkUgOAorCisvKiBEYXRhIGNv bW1vbiB0byBhbGwgc2FtcGxlcyAocGVyaW9kaWMgT0EgLyBDUyBiYXNlZCBPQSAvIFRpbWVzdGFt cHMpICovCitzdHJ1Y3Qgc2FtcGxlX2RhdGEgewogCXUzMiBzb3VyY2U7CiAJdTMyIGN0eF9pZDsK IAl1MzIgcGlkOwogCXUzMiB0YWc7CisJdTY0IHRzOwogCWNvbnN0IHU4ICpyZXBvcnQ7CiB9Owog CkBAIC0xMDAsNiArMTA1LDcgQEAgc3RhdGljIHN0cnVjdCBpOTE1X29hX2Zvcm1hdCBnZW44X3Bs dXNfb2FfZm9ybWF0c1tJOTE1X09BX0ZPUk1BVF9NQVhdID0gewogI2RlZmluZSBTQU1QTEVfQ1RY X0lECQkoMTw8MikKICNkZWZpbmUgU0FNUExFX1BJRAkJKDE8PDMpCiAjZGVmaW5lIFNBTVBMRV9U QUcJCSgxPDw0KQorI2RlZmluZSBTQU1QTEVfVFMJCSgxPDw1KQogCiBzdHJ1Y3QgcGVyZl9vcGVu X3Byb3BlcnRpZXMKIHsKQEAgLTEzNiw4ICsxNDIsOSBAQCB2b2lkIGk5MTVfcGVyZl9jb21tYW5k X3N0cmVhbV9ob29rKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgdGFnKQog CiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBlcmYuc3RyZWFtc19sb2NrKTsKIAlsaXN0X2Zvcl9l YWNoX2VudHJ5KHN0cmVhbSwgJmRldl9wcml2LT5wZXJmLnN0cmVhbXMsIGxpbmspIHsKLQkJaWYg KHN0cmVhbS0+ZW5hYmxlZCAmJiBzdHJlYW0tPmNvbW1hbmRfc3RyZWFtX2hvb2spCi0JCQlzdHJl YW0tPmNvbW1hbmRfc3RyZWFtX2hvb2socmVxLCB0YWcpOworCQlpZiAoc3RyZWFtLT5lbmFibGVk ICYmIChzdHJlYW0tPnJpbmdfaWQgPT0gcmluZy0+aWQpICYmCisJCQkJc3RyZWFtLT5jb21tYW5k X3N0cmVhbV9ob29rKQorCQkJc3RyZWFtLT5jb21tYW5kX3N0cmVhbV9ob29rKHN0cmVhbSwgcmVx LCB0YWcpOwogCX0KIAltdXRleF91bmxvY2soJmRldl9wcml2LT5wZXJmLnN0cmVhbXNfbG9jayk7 CiB9CkBAIC0xNTAsMTYgKzE1NywxNSBAQCB2b2lkIGk5MTVfcGVyZl9jb21tYW5kX3N0cmVhbV9o b29rKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgdGFnKQogICogZXZlbnR1 YWxseSwgd2hlbiB0aGUgcmVxdWVzdCBhc3NvY2lhdGVkIHdpdGggbmV3IGVudHJ5IGNvbXBsZXRl cy4KICAqLwogc3RhdGljIHZvaWQgcmVsZWFzZV9zb21lX3BlcmZfZW50cmllcyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkJCXUzMiB0YXJnZXRfc2l6ZSkKKwkJCQllbnVt IGludGVsX3JpbmdfaWQgaWQsIHUzMiB0YXJnZXRfc2l6ZSkKIHsKIAlzdHJ1Y3QgaTkxNV9wZXJm X2NzX2RhdGFfbm9kZSAqZW50cnksICpuZXh0OwotCXUzMiBlbnRyeV9zaXplID0gZGV2X3ByaXYt PnBlcmYub2Eub2FfYnVmZmVyLmZvcm1hdF9zaXplOwogCXUzMiBzaXplID0gMDsKIAogCWxpc3Rf Zm9yX2VhY2hfZW50cnlfc2FmZQotCQkoZW50cnksIG5leHQsICZkZXZfcHJpdi0+cGVyZi5ub2Rl X2xpc3QsIGxpbmspIHsKKwkJKGVudHJ5LCBuZXh0LCAmZGV2X3ByaXYtPnBlcmYubm9kZV9saXN0 W2lkXSwgbGluaykgewogCi0JCXNpemUgKz0gZW50cnlfc2l6ZTsKKwkJc2l6ZSArPSBlbnRyeS0+ c2l6ZTsKIAkJaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZShlbnRyeS0+cmVxdWVzdCk7CiAJ CWxpc3RfZGVsKCZlbnRyeS0+bGluayk7CiAJCWtmcmVlKGVudHJ5KTsKQEAgLTE3NSw5OSArMTgx LDExNyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlX3NvbWVfcGVyZl9lbnRyaWVzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKICAqIHRoZSBidWZmZXIsIGl0IHdpbGwgcmVtb3ZlIHRo ZSBvbGRlc3QgZW50cmllcyBpbiBvcmRlciB0byBtYWtlIHNwYWNlLgogICovCiBzdGF0aWMgdm9p ZCBpbnNlcnRfcGVyZl9lbnRyeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJ CQkJc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJCQlzdHJ1Y3QgaTkxNV9wZXJm X2NzX2RhdGFfbm9kZSAqZW50cnkpCiB7CiAJc3RydWN0IGk5MTVfcGVyZl9jc19kYXRhX25vZGUg KmZpcnN0X2VudHJ5LCAqbGFzdF9lbnRyeTsKLQlpbnQgbWF4X29mZnNldCA9IGRldl9wcml2LT5w ZXJmLmNvbW1hbmRfc3RyZWFtX2J1Zi5vYmotPmJhc2Uuc2l6ZTsKLQl1MzIgZW50cnlfc2l6ZSA9 IGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5mb3JtYXRfc2l6ZTsKLQotCXNwaW5fbG9jaygm ZGV2X3ByaXYtPnBlcmYubm9kZV9saXN0X2xvY2spOwotCWlmIChsaXN0X2VtcHR5KCZkZXZfcHJp di0+cGVyZi5ub2RlX2xpc3QpKSB7Ci0JCWVudHJ5LT5vZmZzZXQgPSAwOwotCQlsaXN0X2FkZF90 YWlsKCZlbnRyeS0+bGluaywgJmRldl9wcml2LT5wZXJmLm5vZGVfbGlzdCk7Ci0JCXNwaW5fdW5s b2NrKCZkZXZfcHJpdi0+cGVyZi5ub2RlX2xpc3RfbG9jayk7Ci0JCXJldHVybjsKKwl1MzIgc2Ft cGxlX2ZsYWdzID0gc3RyZWFtLT5zYW1wbGVfZmxhZ3M7CisJZW51bSBpbnRlbF9yaW5nX2lkIGlk ID0gc3RyZWFtLT5yaW5nX2lkOworCWludCBtYXhfb2Zmc2V0ID0gZGV2X3ByaXYtPnBlcmYuY29t bWFuZF9zdHJlYW1fYnVmW2lkXS5vYmotPmJhc2Uuc2l6ZTsKKwl1MzIgb2Zmc2V0LCBlbnRyeV9z aXplID0gMDsKKwlib29sIHNhbXBsZV90cyA9IGZhbHNlOworCisJaWYgKHN0cmVhbS0+c2FtcGxl X2ZsYWdzICYgU0FNUExFX09BX1JFUE9SVCkKKwkJZW50cnlfc2l6ZSArPSBkZXZfcHJpdi0+cGVy Zi5vYS5vYV9idWZmZXIuZm9ybWF0X3NpemU7CisJZWxzZSBpZiAoc2FtcGxlX2ZsYWdzICYgU0FN UExFX1RTKSB7CisJCS8qCisJCSAqIFhYWDogU2luY2UgVFMgZGF0YSBjYW4gYW55d2F5cyBiZSBk ZXJpdmVkIGZyb20gT0EgcmVwb3J0LCBzbworCQkgKiBubyBuZWVkIHRvIGNhcHR1cmUgaXQgZm9y IFJDUyByaW5nLCBpZiBjYXB0dXJlIG9hIGRhdGEgaXMKKwkJICogY2FsbGVkIGFscmVhZHkuCisJ CSAqLworCQllbnRyeV9zaXplICs9IEk5MTVfUEVSRl9UU19TQU1QTEVfU0laRTsKKwkJc2FtcGxl X3RzID0gdHJ1ZTsKIAl9CiAKLQlmaXJzdF9lbnRyeSA9IGxpc3RfZmlyc3RfZW50cnkoJmRldl9w cml2LT5wZXJmLm5vZGVfbGlzdCwKKwlzcGluX2xvY2soJmRldl9wcml2LT5wZXJmLm5vZGVfbGlz dF9sb2NrW2lkXSk7CisJaWYgKGxpc3RfZW1wdHkoJmRldl9wcml2LT5wZXJmLm5vZGVfbGlzdFtp ZF0pKSB7CisJCW9mZnNldCA9IDA7CisJCWdvdG8gb3V0OworCX0KKworCWZpcnN0X2VudHJ5ID0g bGlzdF9maXJzdF9lbnRyeSgmZGV2X3ByaXYtPnBlcmYubm9kZV9saXN0W2lkXSwKIAkJCQkgICAg ICAgdHlwZW9mKCpmaXJzdF9lbnRyeSksIGxpbmspOwotCWxhc3RfZW50cnkgPSBsaXN0X2xhc3Rf ZW50cnkoJmRldl9wcml2LT5wZXJmLm5vZGVfbGlzdCwKLQkJCQkgICAgIHR5cGVvZigqZmlyc3Rf ZW50cnkpLCBsaW5rKTsKKwlsYXN0X2VudHJ5ID0gbGlzdF9sYXN0X2VudHJ5KCZkZXZfcHJpdi0+ cGVyZi5ub2RlX2xpc3RbaWRdLAorCQkJCSAgICAgdHlwZW9mKCpsYXN0X2VudHJ5KSwgbGluayk7 CiAKLQlpZiAobGFzdF9lbnRyeS0+b2Zmc2V0ID49IGZpcnN0X2VudHJ5LT5vZmZzZXQpIHsKKwlp ZiAobGFzdF9lbnRyeS0+c3RhcnRfb2Zmc2V0ID49IGZpcnN0X2VudHJ5LT5zdGFydF9vZmZzZXQp IHsKIAkJLyogU3VmZmljaWVudCBzcGFjZSBhdmFpbGFibGUgYXQgdGhlIGVuZCBvZiBidWZmZXI/ ICovCi0JCWlmIChsYXN0X2VudHJ5LT5vZmZzZXQgKyAyKmVudHJ5X3NpemUgPCBtYXhfb2Zmc2V0 KQotCQkJZW50cnktPm9mZnNldCA9IGxhc3RfZW50cnktPm9mZnNldCArIGVudHJ5X3NpemU7CisJ CWlmIChsYXN0X2VudHJ5LT5zdGFydF9vZmZzZXQgKyBsYXN0X2VudHJ5LT5zaXplICsgZW50cnlf c2l6ZQorCQkJCQkJCTwgbWF4X29mZnNldCkKKwkJCW9mZnNldCA9IGxhc3RfZW50cnktPnN0YXJ0 X29mZnNldCArIGxhc3RfZW50cnktPnNpemU7CiAJCS8qCiAJCSAqIFdyYXBhcm91bmQgY29uZGl0 aW9uLiBJcyBzdWZmaWNpZW50IHNwYWNlIGF2YWlsYWJsZSBhdAogCQkgKiBiZWdpbm5pbmcgb2Yg YnVmZmVyPwogCQkgKi8KLQkJZWxzZSBpZiAoZW50cnlfc2l6ZSA8IGZpcnN0X2VudHJ5LT5vZmZz ZXQpCi0JCQllbnRyeS0+b2Zmc2V0ID0gMDsKKwkJZWxzZSBpZiAoZW50cnlfc2l6ZSA8IGZpcnN0 X2VudHJ5LT5zdGFydF9vZmZzZXQpCisJCQlvZmZzZXQgPSAwOwogCQkvKiBJbnN1ZmZpY2llbnQg c3BhY2UuIE92ZXJ3cml0ZSBleGlzdGluZyBvbGQgZW50cmllcyAqLwogCQllbHNlIHsKLQkJCXUz MiB0YXJnZXRfc2l6ZSA9IGVudHJ5X3NpemUgLSBmaXJzdF9lbnRyeS0+b2Zmc2V0OworCQkJdTMy IHRhcmdldF9zaXplID0gZW50cnlfc2l6ZSAtCisJCQkJCQlmaXJzdF9lbnRyeS0+c3RhcnRfb2Zm c2V0OwogCi0JCQlyZWxlYXNlX3NvbWVfcGVyZl9lbnRyaWVzKGRldl9wcml2LCB0YXJnZXRfc2l6 ZSk7Ci0JCQllbnRyeS0+b2Zmc2V0ID0gMDsKKwkJCXJlbGVhc2Vfc29tZV9wZXJmX2VudHJpZXMo ZGV2X3ByaXYsIGlkLCB0YXJnZXRfc2l6ZSk7CisJCQlvZmZzZXQgPSAwOwogCQl9CiAJfSBlbHNl IHsKIAkJLyogU3VmZmljaWVudCBzcGFjZSBhdmFpbGFibGU/ICovCi0JCWlmIChsYXN0X2VudHJ5 LT5vZmZzZXQgKyAyKmVudHJ5X3NpemUgPCBmaXJzdF9lbnRyeS0+b2Zmc2V0KQotCQkJZW50cnkt Pm9mZnNldCA9IGxhc3RfZW50cnktPm9mZnNldCArIGVudHJ5X3NpemU7CisJCWlmIChsYXN0X2Vu dHJ5LT5zdGFydF9vZmZzZXQgKyBsYXN0X2VudHJ5LT5zaXplICsgZW50cnlfc2l6ZQorCQkJCQkJ PCBmaXJzdF9lbnRyeS0+c3RhcnRfb2Zmc2V0KQorCQkJb2Zmc2V0ID0gbGFzdF9lbnRyeS0+c3Rh cnRfb2Zmc2V0ICsgbGFzdF9lbnRyeS0+c2l6ZTsKIAkJLyogSW5zdWZmaWNpZW50IHNwYWNlLiBP dmVyd3JpdGUgZXhpc3Rpbmcgb2xkIGVudHJpZXMgKi8KIAkJZWxzZSB7CiAJCQl1MzIgdGFyZ2V0 X3NpemUgPSBlbnRyeV9zaXplIC0KLQkJCQkoZmlyc3RfZW50cnktPm9mZnNldCAtIGxhc3RfZW50 cnktPm9mZnNldCAtCi0JCQkJZW50cnlfc2l6ZSk7CisJCQkJKGZpcnN0X2VudHJ5LT5zdGFydF9v ZmZzZXQgLQorCQkJCQlsYXN0X2VudHJ5LT5zdGFydF9vZmZzZXQgLQorCQkJCQlsYXN0X2VudHJ5 LT5zaXplKTsKIAotCQkJcmVsZWFzZV9zb21lX3BlcmZfZW50cmllcyhkZXZfcHJpdiwgdGFyZ2V0 X3NpemUpOwotCQkJZW50cnktPm9mZnNldCA9IGxhc3RfZW50cnktPm9mZnNldCArIGVudHJ5X3Np emU7CisJCQlyZWxlYXNlX3NvbWVfcGVyZl9lbnRyaWVzKGRldl9wcml2LCBpZCwgdGFyZ2V0X3Np emUpOworCQkJb2Zmc2V0ID0gbGFzdF9lbnRyeS0+c3RhcnRfb2Zmc2V0ICsgbGFzdF9lbnRyeS0+ c2l6ZTsKIAkJfQogCX0KLQlsaXN0X2FkZF90YWlsKCZlbnRyeS0+bGluaywgJmRldl9wcml2LT5w ZXJmLm5vZGVfbGlzdCk7Ci0Jc3Bpbl91bmxvY2soJmRldl9wcml2LT5wZXJmLm5vZGVfbGlzdF9s b2NrKTsKKworb3V0OgorCWVudHJ5LT5zdGFydF9vZmZzZXQgPSBvZmZzZXQ7CisJZW50cnktPnNp emUgPSBlbnRyeV9zaXplOworCWlmIChzdHJlYW0tPnNhbXBsZV9mbGFncyAmIFNBTVBMRV9PQV9S RVBPUlQpIHsKKwkJZW50cnktPm9hX29mZnNldCA9IG9mZnNldDsKKwkJLyogRW5zdXJlIDY0IGJ5 dGUgYWxpZ25tZW50IG9mIG9hX29mZnNldCAqLworCQllbnRyeS0+b2Ffb2Zmc2V0ID0gQUxJR04o ZW50cnktPm9hX29mZnNldCwgT0FfQUREUl9BTElHTik7CisJCW9mZnNldCA9IGVudHJ5LT5vYV9v ZmZzZXQgKworCQkJCWRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5mb3JtYXRfc2l6ZTsKKwl9 CisJaWYgKHNhbXBsZV90cykgeworCQllbnRyeS0+dHNfb2Zmc2V0ID0gb2Zmc2V0OworCQkvKiBF bnN1cmUgOCBieXRlIGFsaWdubWVudCBvZiB0c19vZmZzZXQgKi8KKwkJZW50cnktPnRzX29mZnNl dCA9IEFMSUdOKGVudHJ5LT50c19vZmZzZXQsIFRTX0FERFJfQUxJR04pOworCQlvZmZzZXQgPSBl bnRyeS0+dHNfb2Zmc2V0ICsgSTkxNV9QRVJGX1RTX1NBTVBMRV9TSVpFOworCX0KKworCWxpc3Rf YWRkX3RhaWwoJmVudHJ5LT5saW5rLCAmZGV2X3ByaXYtPnBlcmYubm9kZV9saXN0W2lkXSk7CisJ c3Bpbl91bmxvY2soJmRldl9wcml2LT5wZXJmLm5vZGVfbGlzdF9sb2NrW2lkXSk7CiB9CiAKLXN0 YXRpYyB2b2lkIGk5MTVfcGVyZl9jb21tYW5kX3N0cmVhbV9ob29rX29hKHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxLAotCQkJCQkJdTMyIHRhZykKK3N0YXRpYyBpbnQgaTkxNV9wZXJm X3N0cmVhbV9jYXB0dXJlX29hX3JlcG9ydChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSwKKwkJCQl1MzIgb2Zmc2V0KQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSBy ZXEtPnJpbmc7CiAJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSByZXEtPnJpbmdi dWY7Ci0Jc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCA9IHJlcS0+Y3R4OwogCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3RydWN0 IGk5MTVfcGVyZl9jc19kYXRhX25vZGUgKmVudHJ5OwogCXUzMiBhZGRyID0gMDsKIAlpbnQgcmV0 OwogCiAJLyogT0EgY291bnRlcnMgYXJlIG9ubHkgc3VwcG9ydGVkIG9uIHRoZSByZW5kZXIgcmlu ZyAqLwogCUJVR19PTihyaW5nLT5pZCAhPSBSQ1MpOwogCi0JZW50cnkgPSBremFsbG9jKHNpemVv ZigqZW50cnkpLCBHRlBfS0VSTkVMKTsKLQlpZiAoZW50cnkgPT0gTlVMTCkgewotCQlEUk1fRVJS T1IoImFsbG9jIGZhaWxlZFxuIik7Ci0JCXJldHVybjsKLQl9Ci0KIAlpZiAoaTkxNS5lbmFibGVf ZXhlY2xpc3RzKQogCQlyZXQgPSBpbnRlbF9sb2dpY2FsX3JpbmdfYmVnaW4ocmVxLCA0KTsKIAll bHNlCiAJCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKIAotCWlmIChyZXQpIHsKLQkJ a2ZyZWUoZW50cnkpOwotCQlyZXR1cm47Ci0JfQotCi0JZW50cnktPmN0eF9pZCA9IGN0eC0+Z2xv YmFsX2lkOwotCWVudHJ5LT5waWQgPSBjdXJyZW50LT5waWQ7Ci0JZW50cnktPnRhZyA9IHRhZzsK LQlpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigmZW50cnktPnJlcXVlc3QsIHJlcSk7Ci0KLQlpbnNl cnRfcGVyZl9lbnRyeShkZXZfcHJpdiwgZW50cnkpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7 CiAKLQlhZGRyID0gZGV2X3ByaXYtPnBlcmYuY29tbWFuZF9zdHJlYW1fYnVmLnZtYS0+bm9kZS5z dGFydCArCi0JCWVudHJ5LT5vZmZzZXQ7CisJYWRkciA9IGRldl9wcml2LT5wZXJmLmNvbW1hbmRf c3RyZWFtX2J1ZltSQ1NdLnZtYS0+bm9kZS5zdGFydCArIG9mZnNldDsKIAogCS8qIGFkZHIgc2hv dWxkIGJlIDY0IGJ5dGUgYWxpZ25lZCAqLwogCUJVR19PTihhZGRyICYgMHgzZik7CkBAIC0yOTUs MTAgKzMxOSwxNTQgQEAgc3RhdGljIHZvaWQgaTkxNV9wZXJmX2NvbW1hbmRfc3RyZWFtX2hvb2tf b2Eoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCX0KIAkJaW50ZWxfcmluZ19h ZHZhbmNlKHJpbmcpOwogCX0KLQlpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShkZXZfcHJpdi0+cGVy Zi5jb21tYW5kX3N0cmVhbV9idWYudm1hLCByZXEpOworCXJldHVybiAwOworfQorCitzdGF0aWMg aW50IGk5MTVfcGVyZl9zdHJlYW1fY2FwdHVyZV90c19kYXRhKHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxLAorCQkJCQkJdTMyIG9mZnNldCkKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICpyaW5nID0gcmVxLT5yaW5nOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVm ID0gcmVxLT5yaW5nYnVmOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJp bmctPmRldi0+ZGV2X3ByaXZhdGU7CisJdTMyIGFkZHIgPSAwOworCWludCByZXQ7CisKKwlpZiAo aTkxNS5lbmFibGVfZXhlY2xpc3RzKQorCQlyZXQgPSBpbnRlbF9sb2dpY2FsX3JpbmdfYmVnaW4o cmVxLCA2KTsKKwllbHNlCisJCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2KTsKKworCWlm IChyZXQpCisJCXJldHVybiByZXQ7CisKKwlhZGRyID0gZGV2X3ByaXYtPnBlcmYuY29tbWFuZF9z dHJlYW1fYnVmW3JpbmctPmlkXS52bWEtPm5vZGUuc3RhcnQgKworCQlvZmZzZXQ7CisKKwlpZiAo aTkxNS5lbmFibGVfZXhlY2xpc3RzKSB7CisJCWlmIChyaW5nLT5pZCA9PSBSQ1MpIHsKKwkJCWlu dGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsCisJCQkJCQlHRlhfT1BfUElQRV9DT05UUk9M KDYpKTsKKwkJCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsCisJCQkJCQlQSVBFX0NP TlRST0xfR0xPQkFMX0dUVF9JVkIgfAorCQkJCQkJUElQRV9DT05UUk9MX1RJTUVTVEFNUF9XUklU RSk7CisJCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBhZGRyIHwKKwkJCQkJCVBJ UEVfQ09OVFJPTF9HTE9CQUxfR1RUKTsKKwkJCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdi dWYsIDApOworCQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7CisJCQlpbnRl bF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKKwkJfSBlbHNlIHsKKwkJCXVpbnQzMl90 IGNtZDsKKworCQkJY21kID0gTUlfRkxVU0hfRFcgKyAyOyAvKiBHZW44KyAqLworCisJCQljbWQg fD0gTUlfRkxVU0hfRFdfT1BfU1RBTVA7CisKKwkJCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJp bmdidWYsIGNtZCk7CisJCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBhZGRyIHwK KwkJCQkJCU1JX0ZMVVNIX0RXX1VTRV9HVFQpOworCQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQo cmluZ2J1ZiwgMCk7CisJCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKKwkJ CWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIDApOworCQkJaW50ZWxfbG9naWNhbF9y aW5nX2VtaXQocmluZ2J1ZiwgTUlfTk9PUCk7CisJCX0KKwkJaW50ZWxfbG9naWNhbF9yaW5nX2Fk dmFuY2UocmluZ2J1Zik7CisJfSBlbHNlIHsKKwkJaWYgKHJpbmctPmlkID09IFJDUykgeworCQkJ aWYgKElOVEVMX0lORk8ocmluZy0+ZGV2KS0+Z2VuID49IDgpCisJCQkJaW50ZWxfcmluZ19lbWl0 KHJpbmcsIEdGWF9PUF9QSVBFX0NPTlRST0woNikpOworCQkJZWxzZQorCQkJCWludGVsX3Jpbmdf ZW1pdChyaW5nLCBHRlhfT1BfUElQRV9DT05UUk9MKDUpKTsKKwkJCWludGVsX3JpbmdfZW1pdChy aW5nLAorCQkJCQlQSVBFX0NPTlRST0xfR0xPQkFMX0dUVF9JVkIgfAorCQkJCQlQSVBFX0NPTlRS T0xfVElNRVNUQU1QX1dSSVRFKTsKKwkJCWludGVsX3JpbmdfZW1pdChyaW5nLCBhZGRyIHwgUElQ RV9DT05UUk9MX0dMT0JBTF9HVFQpOworCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCQkJ aWYgKElOVEVMX0lORk8ocmluZy0+ZGV2KS0+Z2VuID49IDgpIHsKKwkJCQlpbnRlbF9yaW5nX2Vt aXQocmluZywgMCk7CisJCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCQkJfSBlbHNlIHsK KwkJCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7CisJCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcs IE1JX05PT1ApOworCQkJfQorCQl9IGVsc2UgeworCQkJdWludDMyX3QgY21kOworCisJCQljbWQg PSBNSV9GTFVTSF9EVyArIDE7CisJCQlpZiAoSU5URUxfSU5GTyhyaW5nLT5kZXYpLT5nZW4gPj0g OCkKKwkJCQljbWQgKz0gMTsKKworCQkJY21kIHw9IE1JX0ZMVVNIX0RXX09QX1NUQU1QOworCisJ CQlpbnRlbF9yaW5nX2VtaXQocmluZywgY21kKTsKKwkJCWludGVsX3JpbmdfZW1pdChyaW5nLCBh ZGRyIHwgTUlfRkxVU0hfRFdfVVNFX0dUVCk7CisJCQlpZiAoSU5URUxfSU5GTyhyaW5nLT5kZXYp LT5nZW4gPj0gOCkgeworCQkJCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwkJCQlpbnRlbF9y aW5nX2VtaXQocmluZywgMCk7CisJCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCQkJfSBl bHNlIHsKKwkJCQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7CisJCQkJaW50ZWxfcmluZ19lbWl0 KHJpbmcsIDApOworCQkJCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKwkJCX0KKwkJ CWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKwkJfQorCQlpbnRlbF9yaW5nX2FkdmFu Y2UocmluZyk7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBpOTE1X3BlcmZfc3Ry ZWFtX2NzX2hvb2soc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKKwkJCQlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIHRhZykKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpyaW5nID0gcmVxLT5yaW5nOworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHggPSBy ZXEtPmN0eDsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByaW5nLT5kZXYt PmRldl9wcml2YXRlOworCWVudW0gaW50ZWxfcmluZ19pZCBpZCA9IHN0cmVhbS0+cmluZ19pZDsK Kwl1MzIgc2FtcGxlX2ZsYWdzID0gc3RyZWFtLT5zYW1wbGVfZmxhZ3M7CisJc3RydWN0IGk5MTVf cGVyZl9jc19kYXRhX25vZGUgKmVudHJ5OworCWludCByZXQgPSAwOworCisJZW50cnkgPSBremFs bG9jKHNpemVvZigqZW50cnkpLCBHRlBfS0VSTkVMKTsKKwlpZiAoZW50cnkgPT0gTlVMTCkgewor CQlEUk1fRVJST1IoImFsbG9jIGZhaWxlZFxuIik7CisJCXJldHVybjsKKwl9CisKKwllbnRyeS0+ Y3R4X2lkID0gY3R4LT5nbG9iYWxfaWQ7CisJZW50cnktPnBpZCA9IGN1cnJlbnQtPnBpZDsKKwll bnRyeS0+dGFnID0gdGFnOworCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZlbnRyeS0+cmVxdWVz dCwgcmVxKTsKKworCWluc2VydF9wZXJmX2VudHJ5KGRldl9wcml2LCBzdHJlYW0sIGVudHJ5KTsK KworCWlmIChzYW1wbGVfZmxhZ3MgJiBTQU1QTEVfT0FfUkVQT1JUKSB7CisJCXJldCA9IGk5MTVf cGVyZl9zdHJlYW1fY2FwdHVyZV9vYV9yZXBvcnQocmVxLCBlbnRyeS0+b2Ffb2Zmc2V0KTsKKwkJ aWYgKHJldCkKKwkJCWdvdG8gZXJyOworCX0gZWxzZSBpZiAoc2FtcGxlX2ZsYWdzICYgU0FNUExF X1RTKSB7CisJCS8qCisJCSAqIFhYWDogU2luY2UgVFMgZGF0YSBjYW4gYW55d2F5cyBiZSBkZXJp dmVkIGZyb20gT0EgcmVwb3J0LCBzbworCQkgKiBubyBuZWVkIHRvIGNhcHR1cmUgaXQgZm9yIFJD UyByaW5nLCBpZiBjYXB0dXJlIG9hIGRhdGEgaXMKKwkJICogY2FsbGVkIGFscmVhZHkuCisJCSAq LworCQlyZXQgPSBpOTE1X3BlcmZfc3RyZWFtX2NhcHR1cmVfdHNfZGF0YShyZXEsIGVudHJ5LT50 c19vZmZzZXQpOworCQlpZiAocmV0KQorCQkJZ290byBlcnI7CisJfQorCisJaTkxNV92bWFfbW92 ZV90b19hY3RpdmUoZGV2X3ByaXYtPnBlcmYuY29tbWFuZF9zdHJlYW1fYnVmW2lkXS52bWEsIHJl cSk7CisJcmV0dXJuOworCitlcnI6CisJaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZShlbnRy eS0+cmVxdWVzdCk7CisJc3Bpbl9sb2NrKCZkZXZfcHJpdi0+cGVyZi5ub2RlX2xpc3RfbG9ja1tp ZF0pOworCWxpc3RfZGVsKCZlbnRyeS0+bGluayk7CisJa2ZyZWUoZW50cnkpOworCXNwaW5fdW5s b2NrKCZkZXZfcHJpdi0+cGVyZi5ub2RlX2xpc3RfbG9ja1tpZF0pOwogfQogCi1zdGF0aWMgaW50 IGk5MTVfb2FfcmNzX3dhaXRfZ3B1KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK K3N0YXRpYyBpbnQgaTkxNV9wZXJmX3dhaXRfZ3B1KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKKwkJCQllbnVtIGludGVsX3JpbmdfaWQgaWQpCiB7CiAJc3RydWN0IGk5MTVfcGVy Zl9jc19kYXRhX25vZGUgKmxhc3RfZW50cnkgPSBOVUxMOwogCXN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxID0gTlVMTDsKQEAgLTMwOSwxNCArNDc3LDE0IEBAIHN0YXRpYyBpbnQgaTkx NV9vYV9yY3Nfd2FpdF9ncHUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCSAq IGltcGxpY2l0bHkgd2FpdCBmb3IgdGhlIHByaW9yIHN1Ym1pdHRlZCByZXF1ZXN0cy4gVGhlIHJl ZmNvdW50CiAJICogb2YgdGhlIHJlcXVlc3RzIGlzIG5vdCBkZWNyZW1lbnRlZCBoZXJlLgogCSAq LwotCXNwaW5fbG9jaygmZGV2X3ByaXYtPnBlcmYubm9kZV9saXN0X2xvY2spOworCXNwaW5fbG9j aygmZGV2X3ByaXYtPnBlcmYubm9kZV9saXN0X2xvY2tbaWRdKTsKIAotCWlmICghbGlzdF9lbXB0 eSgmZGV2X3ByaXYtPnBlcmYubm9kZV9saXN0KSkgewotCQlsYXN0X2VudHJ5ID0gbGlzdF9sYXN0 X2VudHJ5KCZkZXZfcHJpdi0+cGVyZi5ub2RlX2xpc3QsCisJaWYgKCFsaXN0X2VtcHR5KCZkZXZf cHJpdi0+cGVyZi5ub2RlX2xpc3RbaWRdKSkgeworCQlsYXN0X2VudHJ5ID0gbGlzdF9sYXN0X2Vu dHJ5KCZkZXZfcHJpdi0+cGVyZi5ub2RlX2xpc3RbaWRdLAogCQkJc3RydWN0IGk5MTVfcGVyZl9j c19kYXRhX25vZGUsIGxpbmspOwogCQlyZXEgPSBsYXN0X2VudHJ5LT5yZXF1ZXN0OwogCX0KLQlz cGluX3VubG9jaygmZGV2X3ByaXYtPnBlcmYubm9kZV9saXN0X2xvY2spOworCXNwaW5fdW5sb2Nr KCZkZXZfcHJpdi0+cGVyZi5ub2RlX2xpc3RfbG9ja1tpZF0pOwogCiAJaWYgKCFyZXEpCiAJCXJl dHVybiAwOwpAQCAtMzMxLDE3ICs0OTksMTggQEAgc3RhdGljIGludCBpOTE1X29hX3Jjc193YWl0 X2dwdShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJcmV0dXJuIDA7CiB9CiAK LXN0YXRpYyB2b2lkIGk5MTVfb2FfcmNzX2ZyZWVfcmVxdWVzdHMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQorc3RhdGljIHZvaWQgaTkxNV9wZXJmX2ZyZWVfcmVxdWVzdHMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCWVudW0gaW50ZWxfcmluZ19pZCBp ZCkKIHsKIAlzdHJ1Y3QgaTkxNV9wZXJmX2NzX2RhdGFfbm9kZSAqZW50cnksICpuZXh0OwogCiAJ bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlCi0JCShlbnRyeSwgbmV4dCwgJmRldl9wcml2LT5wZXJm Lm5vZGVfbGlzdCwgbGluaykgeworCQkoZW50cnksIG5leHQsICZkZXZfcHJpdi0+cGVyZi5ub2Rl X2xpc3RbaWRdLCBsaW5rKSB7CiAJCWk5MTVfZ2VtX3JlcXVlc3RfdW5yZWZlcmVuY2VfX3VubG9j a2VkKGVudHJ5LT5yZXF1ZXN0KTsKIAotCQlzcGluX2xvY2soJmRldl9wcml2LT5wZXJmLm5vZGVf bGlzdF9sb2NrKTsKKwkJc3Bpbl9sb2NrKCZkZXZfcHJpdi0+cGVyZi5ub2RlX2xpc3RfbG9ja1tp ZF0pOwogCQlsaXN0X2RlbCgmZW50cnktPmxpbmspOwotCQlzcGluX3VubG9jaygmZGV2X3ByaXYt PnBlcmYubm9kZV9saXN0X2xvY2spOworCQlzcGluX3VubG9jaygmZGV2X3ByaXYtPnBlcmYubm9k ZV9saXN0X2xvY2tbaWRdKTsKIAkJa2ZyZWUoZW50cnkpOwogCX0KIH0KQEAgLTM4MSw5ICs1NTAs OSBAQCBzdGF0aWMgYm9vbCBhcHBlbmRfb2Ffc3RhdHVzKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFt ICpzdHJlYW0sCiAJcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGFwcGVuZF9vYV9zYW1w bGUoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKK3N0YXRpYyBib29sIGFwcGVuZF9z YW1wbGUoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJCSAgICAgc3RydWN0IGk5 MTVfcGVyZl9yZWFkX3N0YXRlICpyZWFkX3N0YXRlLAotCQkJICAgICBzdHJ1Y3Qgb2Ffc2FtcGxl X2RhdGEgKmRhdGEpCisJCQkgICAgIHN0cnVjdCBzYW1wbGVfZGF0YSAqZGF0YSkKIHsKIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2OwogCWludCBy ZXBvcnRfc2l6ZSA9IGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5mb3JtYXRfc2l6ZTsKQEAg LTQyNCw2ICs1OTMsMTMgQEAgc3RhdGljIGJvb2wgYXBwZW5kX29hX3NhbXBsZShzdHJ1Y3QgaTkx NV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCQlyZWFkX3N0YXRlLT5idWYgKz0gNDsKIAl9CiAKKwlp ZiAoc2FtcGxlX2ZsYWdzICYgU0FNUExFX1RTKSB7CisJCWlmIChjb3B5X3RvX3VzZXIocmVhZF9z dGF0ZS0+YnVmLCAmZGF0YS0+dHMsCisJCQkJCUk5MTVfUEVSRl9UU19TQU1QTEVfU0laRSkpCisJ CQlyZXR1cm4gZmFsc2U7CisJCXJlYWRfc3RhdGUtPmJ1ZiArPSBJOTE1X1BFUkZfVFNfU0FNUExF X1NJWkU7CisJfQorCiAJaWYgKHNhbXBsZV9mbGFncyAmIFNBTVBMRV9PQV9SRVBPUlQpIHsKIAkJ aWYgKGNvcHlfdG9fdXNlcihyZWFkX3N0YXRlLT5idWYsIGRhdGEtPnJlcG9ydCwgcmVwb3J0X3Np emUpKQogCQkJcmV0dXJuIGZhbHNlOwpAQCAtNDQxLDcgKzYxNyw3IEBAIHN0YXRpYyBib29sIGFw cGVuZF9vYV9idWZmZXJfc2FtcGxlKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiB7 CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsK IAl1MzIgc2FtcGxlX2ZsYWdzID0gc3RyZWFtLT5zYW1wbGVfZmxhZ3M7Ci0Jc3RydWN0IG9hX3Nh bXBsZV9kYXRhIGRhdGEgPSB7IDAgfTsKKwlzdHJ1Y3Qgc2FtcGxlX2RhdGEgZGF0YSA9IHsgMCB9 OwogCiAJaWYgKHNhbXBsZV9mbGFncyAmIFNBTVBMRV9PQV9TT1VSQ0VfSU5GTykgewogCQllbnVt IGRybV9pOTE1X3BlcmZfb2FfZXZlbnRfc291cmNlIHNvdXJjZTsKQEAgLTQ3MywxMCArNjQ5LDE1 IEBAIHN0YXRpYyBib29sIGFwcGVuZF9vYV9idWZmZXJfc2FtcGxlKHN0cnVjdCBpOTE1X3BlcmZf c3RyZWFtICpzdHJlYW0sCiAJaWYgKHNhbXBsZV9mbGFncyAmIFNBTVBMRV9UQUcpCiAJCWRhdGEu dGFnID0gMDsKIAorCS8qIERlcml2ZSB0aW1lc3RhbXAgZnJvbSBPQSByZXBvcnQsIGFmdGVyIHNj YWxpbmcgd2l0aCB0aGUgdHMgYmFzZSAqLworI3dhcm5pbmcgIkZJWE1FOiBhcHBlbmRfb2FfYnVm ZmVyX3NhbXBsZTogZGVyaXZlIHRoZSB0aW1lc3RhbXAgZnJvbSBPQSByZXBvcnQiCisJaWYgKHNh bXBsZV9mbGFncyAmIFNBTVBMRV9UUykKKwkJZGF0YS50cyA9IDA7CisKIAlpZiAoc2FtcGxlX2Zs YWdzICYgU0FNUExFX09BX1JFUE9SVCkKIAkJZGF0YS5yZXBvcnQgPSByZXBvcnQ7CiAKLQlhcHBl bmRfb2Ffc2FtcGxlKHN0cmVhbSwgcmVhZF9zdGF0ZSwgJmRhdGEpOworCWFwcGVuZF9zYW1wbGUo c3RyZWFtLCByZWFkX3N0YXRlLCAmZGF0YSk7CiAKIAlyZXR1cm4gdHJ1ZTsKIH0KQEAgLTUyOCw3 ICs3MDksNyBAQCBzdGF0aWMgdTMyIGdlbjhfYXBwZW5kX29hX3JlcG9ydHMoc3RydWN0IGk5MTVf cGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJCWN0eF9pZCAmPSAweGZmZmZmOwogCQl9CiAKLQkJaWYg KGRldl9wcml2LT5wZXJmLm9hLmV4Y2x1c2l2ZV9zdHJlYW0tPmVuYWJsZWQpIHsKKwkJaWYgKHN0 cmVhbS0+ZW5hYmxlZCkgewogCiAJCQkvKiBOQjogRm9yIEdlbiA4IHdlIGhhbmRsZSBwZXItY29u dGV4dCByZXBvcnQgZmlsdGVyaW5nCiAJCQkgKiBvdXJzZWx2ZXMgaW5zdGVhZCBvZiBwcm9ncmFt bWluZyB0aGUgT0EgdW5pdCB3aXRoIGEKQEAgLTUzOSw3ICs3MjAsNyBAQCBzdGF0aWMgdTMyIGdl bjhfYXBwZW5kX29hX3JlcG9ydHMoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJ CSAqIGZpcnN0IHJlcG9ydCBiZWxvbmdpbmcgdG8gYW55IHN1YnNlcXVlbnRseQogCQkJICogc3dp dGNoZWQtdG9vIGNvbnRleHQuCiAJCQkgKi8KLQkJCWlmICghZGV2X3ByaXYtPnBlcmYub2EuZXhj bHVzaXZlX3N0cmVhbS0+Y3R4IHx8CisJCQlpZiAoIXN0cmVhbS0+Y3R4IHx8CiAJCQkgICAgKGRl dl9wcml2LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9pZCA9PSBjdHhfaWQgfHwKIAkJCSAgICAgKGRl dl9wcml2LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9pZCAhPQogCQkJICAgICAgZGV2X3ByaXYtPnBl cmYub2Eub2FfYnVmZmVyLmxhc3RfY3R4X2lkKSkpIHsKQEAgLTYzMCw3ICs4MTEsNyBAQCBzdGF0 aWMgdTMyIGdlbjdfYXBwZW5kX29hX3JlcG9ydHMoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0 cmVhbSwKIAkJaWYgKHJlcG9ydF90cyA+IHRzKQogCQkJYnJlYWs7CiAKLQkJaWYgKGRldl9wcml2 LT5wZXJmLm9hLmV4Y2x1c2l2ZV9zdHJlYW0tPmVuYWJsZWQpIHsKKwkJaWYgKHN0cmVhbS0+ZW5h YmxlZCkgewogCQkJaWYgKCFhcHBlbmRfb2FfYnVmZmVyX3NhbXBsZShzdHJlYW0sIHJlYWRfc3Rh dGUsCiAJCQkJCQkJcmVwb3J0KSkKIAkJCQlicmVhazsKQEAgLTY4NywyNCArODY4LDMyIEBAIHN0 YXRpYyB2b2lkIGdlbjdfb2FfcmVhZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAog CQkJCSAgICBPQV9NRU1fU0VMRUNUX0dHVFQpOwogfQogCi1zdGF0aWMgYm9vbCBhcHBlbmRfb2Ff cmNzX3NhbXBsZShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAorc3RhdGljIGJvb2wg YXBwZW5kX29uZV9jc19zYW1wbGUoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJ CQkgc3RydWN0IGk5MTVfcGVyZl9yZWFkX3N0YXRlICpyZWFkX3N0YXRlLAogCQkJCSBzdHJ1Y3Qg aTkxNV9wZXJmX2NzX2RhdGFfbm9kZSAqbm9kZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2OwotCXN0cnVjdCBvYV9zYW1wbGVfZGF0YSBk YXRhID0geyAwIH07Ci0JY29uc3QgdTggKnJlcG9ydCA9IGRldl9wcml2LT5wZXJmLmNvbW1hbmRf c3RyZWFtX2J1Zi5hZGRyICsKLQkJCQlub2RlLT5vZmZzZXQ7CisJZW51bSBpbnRlbF9yaW5nX2lk IGlkID0gc3RyZWFtLT5yaW5nX2lkOworCXN0cnVjdCBzYW1wbGVfZGF0YSBkYXRhID0geyAwIH07 CiAJdTMyIHNhbXBsZV9mbGFncyA9IHN0cmVhbS0+c2FtcGxlX2ZsYWdzOwotCXUzMiByZXBvcnRf dHM7CiAKLQkvKgotCSAqIEZvcndhcmQgdGhlIHBlcmlvZGljIE9BIHNhbXBsZXMgd2hpY2ggaGF2 ZSB0aGUgdGltZXN0YW1wIGxvd2VyCi0JICogdGhhbiB0aW1lc3RhbXAgb2YgdGhpcyBzYW1wbGUs IGJlZm9yZSBmb3J3YXJkaW5nIHRoaXMgc2FtcGxlLgotCSAqIFRoaXMgZW5zdXJlcyBzYW1wbGVz IHJlYWQgYnkgdXNlciBhcmUgb3JkZXIgYWNjLiB0byB0aGVpciB0aW1lc3RhbXBzCi0JICovCi0J cmVwb3J0X3RzID0gKih1MzIgKikocmVwb3J0ICsgNCk7Ci0JZGV2X3ByaXYtPnBlcmYub2Eub3Bz LnJlYWQoc3RyZWFtLCByZWFkX3N0YXRlLCByZXBvcnRfdHMpOworCWlmIChzYW1wbGVfZmxhZ3Mg JiBTQU1QTEVfT0FfUkVQT1JUKSB7CisJCWNvbnN0IHU4ICpyZXBvcnQgPSBkZXZfcHJpdi0+cGVy Zi5jb21tYW5kX3N0cmVhbV9idWZbaWRdLmFkZHIgKworCQkJCSAgIG5vZGUtPm9hX29mZnNldDsK KwkJdTMyIHNhbXBsZV90cyA9ICoodTMyICopKHJlcG9ydCArIDQpOworCisJCUJVR19PTihpZCAh PSBSQ1MpOworCisJCWRhdGEucmVwb3J0ID0gcmVwb3J0OworCisJCS8qCisJCSAqIEZvcndhcmQg dGhlIHBlcmlvZGljIE9BIHNhbXBsZXMgd2hpY2ggaGF2ZSB0aGUgdGltZXN0YW1wCisJCSAqIGxv d2VyIHRoYW4gdGltZXN0YW1wIG9mIHRoaXMgc2FtcGxlLCBiZWZvcmUgZm9yd2FyZGluZyB0aGlz CisJCSAqIHNhbXBsZS4gIFRoaXMgZW5zdXJlcyBzYW1wbGVzIHJlYWQgYnkgdXNlciBhcmUgb3Jk ZXIgYWNjLiB0bworCQkgKiB0aGVpciB0aW1lc3RhbXBzCisJCSAqLworCQlkZXZfcHJpdi0+cGVy Zi5vYS5vcHMucmVhZChzdHJlYW0sIHJlYWRfc3RhdGUsIHNhbXBsZV90cyk7CisJfQogCiAJaWYg KHNhbXBsZV9mbGFncyAmIFNBTVBMRV9PQV9TT1VSQ0VfSU5GTykKIAkJZGF0YS5zb3VyY2UgPSBJ OTE1X1BFUkZfT0FfRVZFTlRfU09VUkNFX1JDUzsKQEAgLTcxOCwzOCArOTA3LDUxIEBAIHN0YXRp YyBib29sIGFwcGVuZF9vYV9yY3Nfc2FtcGxlKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJl YW0sCiAJaWYgKHNhbXBsZV9mbGFncyAmIFNBTVBMRV9UQUcpCiAJCWRhdGEudGFnID0gbm9kZS0+ dGFnOwogCi0JaWYgKHNhbXBsZV9mbGFncyAmIFNBTVBMRV9PQV9SRVBPUlQpCi0JCWRhdGEucmVw b3J0ID0gcmVwb3J0OworCWlmIChzYW1wbGVfZmxhZ3MgJiBTQU1QTEVfVFMpIHsKKwkJLyogRm9y IFJDUywgZGVyaXZlIHRpbWVzdGFtcCBmcm9tIE9BIHJlcG9ydCwgYWZ0ZXIKKwkJICogc2NhbGlu ZyB3aXRoIHRoZSB0aW1lc3RhbXAgYmFzZS4gRm9yIG90aGVyIHJpbmdzLCBmb3J3YXJkIHRoZQor CQkgKiB0aW1lc3RhbXAgY29sbGVjdGVkIHZpYSBjb21tYW5kIHN0cmVhbS4KKwkJICovCisjd2Fy bmluZyAiRklYTUU6IGFwcGVuZF9vbmVfY3Nfc2FtcGxlOiBkZXJpdmUgdGhlIHRpbWVzdGFtcCBm cm9tIE9BIHJlcG9ydCIKKwkJaWYgKHNhbXBsZV9mbGFncyAmIFNBTVBMRV9PQV9SRVBPUlQpCisJ CQlkYXRhLnRzID0gMDsKKwkJZWxzZQorCQkJZGF0YS50cyA9ICoodTY0ICopCisJCQkJKGRldl9w cml2LT5wZXJmLmNvbW1hbmRfc3RyZWFtX2J1ZltpZF0uYWRkciArCisJCQkJCW5vZGUtPnRzX29m ZnNldCk7CisJfQogCi0JYXBwZW5kX29hX3NhbXBsZShzdHJlYW0sIHJlYWRfc3RhdGUsICZkYXRh KTsKKwlhcHBlbmRfc2FtcGxlKHN0cmVhbSwgcmVhZF9zdGF0ZSwgJmRhdGEpOwogCiAJcmV0dXJu IHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIG9hX3Jjc19hcHBlbmRfcmVwb3J0cyhzdHJ1Y3QgaTkx NV9wZXJmX3N0cmVhbSAqc3RyZWFtLAorc3RhdGljIHZvaWQgYXBwZW5kX2NvbW1hbmRfc3RyZWFt X3NhbXBsZXMoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJCQkgIHN0cnVjdCBp OTE1X3BlcmZfcmVhZF9zdGF0ZSAqcmVhZF9zdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2OworCWVudW0gaW50ZWxfcmluZ19pZCBp ZCA9IHN0cmVhbS0+cmluZ19pZDsKIAlzdHJ1Y3QgaTkxNV9wZXJmX2NzX2RhdGFfbm9kZSAqZW50 cnksICpuZXh0OwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGVudHJ5LCBuZXh0LAotCQkJ CSAmZGV2X3ByaXYtPnBlcmYubm9kZV9saXN0LCBsaW5rKSB7CisJCQkJICZkZXZfcHJpdi0+cGVy Zi5ub2RlX2xpc3RbaWRdLCBsaW5rKSB7CiAJCWlmICghaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0 ZWQoZW50cnktPnJlcXVlc3QsIHRydWUpKQogCQkJYnJlYWs7CiAKLQkJaWYgKCFhcHBlbmRfb2Ff cmNzX3NhbXBsZShzdHJlYW0sIHJlYWRfc3RhdGUsIGVudHJ5KSkKKwkJaWYgKCFhcHBlbmRfb25l X2NzX3NhbXBsZShzdHJlYW0sIHJlYWRfc3RhdGUsIGVudHJ5KSkKIAkJCWJyZWFrOwogCi0JCXNw aW5fbG9jaygmZGV2X3ByaXYtPnBlcmYubm9kZV9saXN0X2xvY2spOworCQlzcGluX2xvY2soJmRl dl9wcml2LT5wZXJmLm5vZGVfbGlzdF9sb2NrW2lkXSk7CiAJCWxpc3RfZGVsKCZlbnRyeS0+bGlu ayk7Ci0JCXNwaW5fdW5sb2NrKCZkZXZfcHJpdi0+cGVyZi5ub2RlX2xpc3RfbG9jayk7CisJCXNw aW5fdW5sb2NrKCZkZXZfcHJpdi0+cGVyZi5ub2RlX2xpc3RfbG9ja1tpZF0pOwogCiAJCWk5MTVf Z2VtX3JlcXVlc3RfdW5yZWZlcmVuY2VfX3VubG9ja2VkKGVudHJ5LT5yZXF1ZXN0KTsKIAkJa2Zy ZWUoZW50cnkpOwogCX0KIAotCS8qIEZsdXNoIGFueSByZW1haW5pbmcgcGVyaW9kaWMgcmVwb3J0 cyAqLwotCWRldl9wcml2LT5wZXJmLm9hLm9wcy5yZWFkKHN0cmVhbSwgcmVhZF9zdGF0ZSwgVTMy X01BWCk7CisJLyogRmx1c2ggYW55IHJlbWFpbmluZyBwZXJpb2RpYyBPQSByZXBvcnRzIGluIGNh c2Ugb2YgUkNTKi8KKwlpZiAoc3RyZWFtLT5zYW1wbGVfZmxhZ3MgJiBTQU1QTEVfT0FfUkVQT1JU KQorCQlkZXZfcHJpdi0+cGVyZi5vYS5vcHMucmVhZChzdHJlYW0sIHJlYWRfc3RhdGUsIFUzMl9N QVgpOwogfQogCiBzdGF0aWMgYm9vbCBjb21tYW5kX3N0cmVhbV9idWZfaXNfZW1wdHkoc3RydWN0 IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKQEAgLTc1Nyw3ICs5NTksNyBAQCBzdGF0aWMgYm9v bCBjb21tYW5kX3N0cmVhbV9idWZfaXNfZW1wdHkoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0 cmVhbSkKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9w cml2OwogCiAJaWYgKHN0cmVhbS0+Y3NfbW9kZSkKLQkJcmV0dXJuIGxpc3RfZW1wdHkoJmRldl9w cml2LT5wZXJmLm5vZGVfbGlzdCk7CisJCXJldHVybiBsaXN0X2VtcHR5KCZkZXZfcHJpdi0+cGVy Zi5ub2RlX2xpc3Rbc3RyZWFtLT5yaW5nX2lkXSk7CiAJZWxzZQogCQlyZXR1cm4gdHJ1ZTsKIH0K QEAgLTc3Miw2MyArOTc0LDY5IEBAIHN0YXRpYyBib29sIHN0cmVhbV9oYXZlX2RhdGFfX3VubG9j a2VkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiAJICogY2FuJ3QgYmUgZGVzdHJv eWVkIHVudGlsIGNvbXBsZXRpb24gKHN1Y2ggYXMgYSByZWFkKCkpIHRoYXQgZW5zdXJlcwogCSAq IHRoZSBkZXZpY2UgKyBPQSBidWZmZXIgY2FuJ3QgZGlzYXBwZWFyCiAJICovCi0JcmV0dXJuICEo ZGV2X3ByaXYtPnBlcmYub2Eub3BzLm9hX2J1ZmZlcl9pc19lbXB0eShkZXZfcHJpdikgJiYKLQkJ IGNvbW1hbmRfc3RyZWFtX2J1Zl9pc19lbXB0eShzdHJlYW0pKTsKKwlpZiAoc3RyZWFtLT5zYW1w bGVfZmxhZ3MgJiBTQU1QTEVfT0FfUkVQT1JUKQorCQlyZXR1cm4gIShkZXZfcHJpdi0+cGVyZi5v YS5vcHMub2FfYnVmZmVyX2lzX2VtcHR5KGRldl9wcml2KSAmJgorCQkJY29tbWFuZF9zdHJlYW1f YnVmX2lzX2VtcHR5KHN0cmVhbSkpOworCWVsc2UKKwkJcmV0dXJuICFjb21tYW5kX3N0cmVhbV9i dWZfaXNfZW1wdHkoc3RyZWFtKTsKIH0KIAotc3RhdGljIGJvb2wgaTkxNV9vYV9jYW5fcmVhZChz dHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQorc3RhdGljIGJvb2wgaTkxNV9wZXJmX3N0 cmVhbV9jYW5fcmVhZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogewogCiAJcmV0 dXJuIHN0cmVhbV9oYXZlX2RhdGFfX3VubG9ja2VkKHN0cmVhbSk7CiB9CiAKLXN0YXRpYyBpbnQg aTkxNV9vYV93YWl0X3VubG9ja2VkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCitz dGF0aWMgaW50IGk5MTVfcGVyZl9zdHJlYW1fd2FpdF91bmxvY2tlZChzdHJ1Y3QgaTkxNV9wZXJm X3N0cmVhbSAqc3RyZWFtKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHN0cmVhbS0+ZGV2X3ByaXY7CisJZW51bSBpbnRlbF9yaW5nX2lkIGlkID0gc3RyZWFtLT5yaW5n X2lkOwogCWludCByZXQ7CiAKIAlpZiAoc3RyZWFtLT5jc19tb2RlKSB7Ci0JCXJldCA9IGk5MTVf b2FfcmNzX3dhaXRfZ3B1KGRldl9wcml2KTsKKwkJcmV0ID0gaTkxNV9wZXJmX3dhaXRfZ3B1KGRl dl9wcml2LCBpZCk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCX0KIAotCXJldHVybiB3 YWl0X2V2ZW50X2ludGVycnVwdGlibGUoZGV2X3ByaXYtPnBlcmYub2EucG9sbF93cSwKKwlyZXR1 cm4gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGRldl9wcml2LT5wZXJmLnBvbGxfd3FbaWRdLAog CQkJCQlzdHJlYW1faGF2ZV9kYXRhX191bmxvY2tlZChzdHJlYW0pKTsKIH0KIAotc3RhdGljIHZv aWQgaTkxNV9vYV9wb2xsX3dhaXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKK3N0 YXRpYyB2b2lkIGk5MTVfcGVyZl9zdHJlYW1fcG9sbF93YWl0KHN0cnVjdCBpOTE1X3BlcmZfc3Ry ZWFtICpzdHJlYW0sCiAJCQkgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJCSAgICAgIHBvbGxf dGFibGUgKndhaXQpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3Ry ZWFtLT5kZXZfcHJpdjsKIAotCXBvbGxfd2FpdChmaWxlLCAmZGV2X3ByaXYtPnBlcmYub2EucG9s bF93cSwgd2FpdCk7CisJcG9sbF93YWl0KGZpbGUsICZkZXZfcHJpdi0+cGVyZi5wb2xsX3dxW3N0 cmVhbS0+cmluZ19pZF0sIHdhaXQpOwogfQogCi1zdGF0aWMgdm9pZCBpOTE1X29hX3JlYWQoc3Ry dWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKK3N0YXRpYyB2b2lkIGk5MTVfcGVyZl9zdHJl YW1fcmVhZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCQkJIHN0cnVjdCBpOTE1 X3BlcmZfcmVhZF9zdGF0ZSAqcmVhZF9zdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2OwogCiAJaWYgKHN0cmVhbS0+Y3NfbW9kZSkK LQkJb2FfcmNzX2FwcGVuZF9yZXBvcnRzKHN0cmVhbSwgcmVhZF9zdGF0ZSk7Ci0JZWxzZQorCQlh cHBlbmRfY29tbWFuZF9zdHJlYW1fc2FtcGxlcyhzdHJlYW0sIHJlYWRfc3RhdGUpOworCWVsc2Ug aWYgKHN0cmVhbS0+cmluZ19pZCA9PSBSQ1MpCiAJCWRldl9wcml2LT5wZXJmLm9hLm9wcy5yZWFk KHN0cmVhbSwgcmVhZF9zdGF0ZSwgVTMyX01BWCk7CiB9CiAKIHN0YXRpYyB2b2lkCi1mcmVlX2Nv bW1hbmRfc3RyZWFtX2J1ZihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK2ZyZWVfY29t bWFuZF9zdHJlYW1fYnVmKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAorCQkJCWVudW0g aW50ZWxfcmluZ19pZCBpZCkKIHsKIAltdXRleF9sb2NrKCZpOTE1LT5kZXYtPnN0cnVjdF9tdXRl eCk7CiAKLQl2dW5tYXAoaTkxNS0+cGVyZi5jb21tYW5kX3N0cmVhbV9idWYuYWRkcik7Ci0JaTkx NV9nZW1fb2JqZWN0X2dndHRfdW5waW4oaTkxNS0+cGVyZi5jb21tYW5kX3N0cmVhbV9idWYub2Jq KTsKLQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmaTkxNS0+cGVyZi5jb21tYW5kX3N0cmVh bV9idWYub2JqLT5iYXNlKTsKKwl2dW5tYXAoaTkxNS0+cGVyZi5jb21tYW5kX3N0cmVhbV9idWZb aWRdLmFkZHIpOworCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKGk5MTUtPnBlcmYuY29tbWFu ZF9zdHJlYW1fYnVmW2lkXS5vYmopOworCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKAorCQkm aTkxNS0+cGVyZi5jb21tYW5kX3N0cmVhbV9idWZbaWRdLm9iai0+YmFzZSk7CiAKLQlpOTE1LT5w ZXJmLmNvbW1hbmRfc3RyZWFtX2J1Zi5vYmogPSBOVUxMOwotCWk5MTUtPnBlcmYuY29tbWFuZF9z dHJlYW1fYnVmLnZtYSA9IE5VTEw7Ci0JaTkxNS0+cGVyZi5jb21tYW5kX3N0cmVhbV9idWYuYWRk ciA9IE5VTEw7CisJaTkxNS0+cGVyZi5jb21tYW5kX3N0cmVhbV9idWZbaWRdLm9iaiA9IE5VTEw7 CisJaTkxNS0+cGVyZi5jb21tYW5kX3N0cmVhbV9idWZbaWRdLnZtYSA9IE5VTEw7CisJaTkxNS0+ cGVyZi5jb21tYW5kX3N0cmVhbV9idWZbaWRdLmFkZHIgPSBOVUxMOwogCiAJbXV0ZXhfdW5sb2Nr KCZpOTE1LT5kZXYtPnN0cnVjdF9tdXRleCk7CiB9CkBAIC04NDksMTYgKzEwNTcsMTMgQEAgZnJl ZV9vYV9idWZmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJbXV0ZXhfdW5sb2Nr KCZpOTE1LT5kZXYtPnN0cnVjdF9tdXRleCk7CiB9CiAKLXN0YXRpYyB2b2lkIGk5MTVfb2Ffc3Ry ZWFtX2Rlc3Ryb3koc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKK3N0YXRpYyB2b2lk IGk5MTVfcGVyZl9zdHJlYW1fZGVzdHJveShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFt KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3By aXY7CiAKLQlCVUdfT04oc3RyZWFtICE9IGRldl9wcml2LT5wZXJmLm9hLmV4Y2x1c2l2ZV9zdHJl YW0pOworCUJVR19PTihzdHJlYW0gIT0gZGV2X3ByaXYtPnBlcmYuZXhjbHVzaXZlX3N0cmVhbSk7 CiAKLQlpZiAoc3RyZWFtLT5jc19tb2RlKQotCQlmcmVlX2NvbW1hbmRfc3RyZWFtX2J1ZihkZXZf cHJpdik7Ci0KLQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLm9iaikgeworCWlmIChz dHJlYW0tPnVzaW5nX29hKSB7CiAJCWRldl9wcml2LT5wZXJmLm9hLm9wcy5kaXNhYmxlX21ldHJp Y19zZXQoZGV2X3ByaXYpOwogCiAJCWZyZWVfb2FfYnVmZmVyKGRldl9wcml2KTsKQEAgLTg2Nyw3 ICsxMDcyLDEwIEBAIHN0YXRpYyB2b2lkIGk5MTVfb2Ffc3RyZWFtX2Rlc3Ryb3koc3RydWN0IGk5 MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKIAkJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYp OwogCX0KIAotCWRldl9wcml2LT5wZXJmLm9hLmV4Y2x1c2l2ZV9zdHJlYW0gPSBOVUxMOworCWlm IChzdHJlYW0tPmNzX21vZGUpCisJCWZyZWVfY29tbWFuZF9zdHJlYW1fYnVmKGRldl9wcml2LCBz dHJlYW0tPnJpbmdfaWQpOworCisJZGV2X3ByaXYtPnBlcmYuZXhjbHVzaXZlX3N0cmVhbSA9IE5V TEw7CiB9CiAKIHN0YXRpYyB2b2lkICp2bWFwX29hX2J1ZmZlcihzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqKQpAQCAtOTkzLDI3ICsxMjAxLDI4IEBAIHN0YXRpYyBpbnQgYWxsb2Nfb2Ff YnVmZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlyZXR1cm4gMDsKIH0K IAotc3RhdGljIGludCBhbGxvY19jb21tYW5kX3N0cmVhbV9idWYoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQorc3RhdGljIGludCBhbGxvY19jb21tYW5kX3N0cmVhbV9idWYoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCQllbnVtIGludGVsX3JpbmdfaWQg aWQpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmJvOwogCWludCByZXQ7CiAKLQlC VUdfT04oZGV2X3ByaXYtPnBlcmYuY29tbWFuZF9zdHJlYW1fYnVmLm9iaik7CisJQlVHX09OKGRl dl9wcml2LT5wZXJmLmNvbW1hbmRfc3RyZWFtX2J1ZltpZF0ub2JqKTsKIAogCXJldCA9IGFsbG9j X29iaihkZXZfcHJpdiwgJmJvKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JZGV2X3By aXYtPnBlcmYuY29tbWFuZF9zdHJlYW1fYnVmLm9iaiA9IGJvOwotCWRldl9wcml2LT5wZXJmLmNv bW1hbmRfc3RyZWFtX2J1Zi52bWEgPSBpOTE1X2dlbV9vYmpfdG9fZ2d0dChibyk7Ci0JZGV2X3By aXYtPnBlcmYuY29tbWFuZF9zdHJlYW1fYnVmLmFkZHIgPSB2bWFwX29hX2J1ZmZlcihibyk7Ci0J SU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5wZXJmLm5vZGVfbGlzdCk7CisJZGV2X3ByaXYtPnBl cmYuY29tbWFuZF9zdHJlYW1fYnVmW2lkXS5vYmogPSBibzsKKwlkZXZfcHJpdi0+cGVyZi5jb21t YW5kX3N0cmVhbV9idWZbaWRdLnZtYSA9IGk5MTVfZ2VtX29ial90b19nZ3R0KGJvKTsKKwlkZXZf cHJpdi0+cGVyZi5jb21tYW5kX3N0cmVhbV9idWZbaWRdLmFkZHIgPSB2bWFwX29hX2J1ZmZlcihi byk7CisJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5wZXJmLm5vZGVfbGlzdFtpZF0pOwogCiAJ RFJNX0RFQlVHX0RSSVZFUigKIAkJImNvbW1hbmQgc3RyZWFtIGJ1ZiBpbml0aWFsaXplZCwgZ3R0 IG9mZnNldCA9IDB4JXgsIHZhZGRyID0gJXAiLAogCQkgKHVuc2lnbmVkIGludCkKLQkJIGRldl9w cml2LT5wZXJmLmNvbW1hbmRfc3RyZWFtX2J1Zi52bWEtPm5vZGUuc3RhcnQsCi0JCSBkZXZfcHJp di0+cGVyZi5jb21tYW5kX3N0cmVhbV9idWYuYWRkcik7CisJCSBkZXZfcHJpdi0+cGVyZi5jb21t YW5kX3N0cmVhbV9idWZbaWRdLnZtYS0+bm9kZS5zdGFydCwKKwkJIGRldl9wcml2LT5wZXJmLmNv bW1hbmRfc3RyZWFtX2J1ZltpZF0uYWRkcik7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTEyMjUsMTcg KzE0MzQsMTcgQEAgc3RhdGljIHZvaWQgZ2VuN191cGRhdGVfb2Fjb250cm9sX2xvY2tlZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJYXNzZXJ0X3NwaW5fbG9ja2VkKCZk ZXZfcHJpdi0+cGVyZi5ob29rX2xvY2spOwogCi0JaWYgKGRldl9wcml2LT5wZXJmLm9hLmV4Y2x1 c2l2ZV9zdHJlYW0tPmVuYWJsZWQpIHsKKwlpZiAoZGV2X3ByaXYtPnBlcmYuZXhjbHVzaXZlX3N0 cmVhbS0+ZW5hYmxlZCkgewogCQl1bnNpZ25lZCBsb25nIGN0eF9pZCA9IDA7CiAJCWJvb2wgcGlu bmluZ19vayA9IGZhbHNlOwogCi0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5leGNsdXNpdmVfc3Ry ZWFtLT5jdHggJiYKKwkJaWYgKGRldl9wcml2LT5wZXJmLmV4Y2x1c2l2ZV9zdHJlYW0tPmN0eCAm JgogCQkgICAgZGV2X3ByaXYtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lkKSB7CiAJCQljdHhfaWQg PSBkZXZfcHJpdi0+cGVyZi5vYS5zcGVjaWZpY19jdHhfaWQ7CiAJCQlwaW5uaW5nX29rID0gdHJ1 ZTsKIAkJfQogCi0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5leGNsdXNpdmVfc3RyZWFtLT5jdHgg PT0gTlVMTCB8fAorCQlpZiAoZGV2X3ByaXYtPnBlcmYuZXhjbHVzaXZlX3N0cmVhbS0+Y3R4ID09 IE5VTEwgfHwKIAkJICAgIHBpbm5pbmdfb2spIHsKIAkJCWJvb2wgcGVyaW9kaWMgPSBkZXZfcHJp di0+cGVyZi5vYS5wZXJpb2RpYzsKIAkJCXUzMiBwZXJpb2RfZXhwb25lbnQgPSBkZXZfcHJpdi0+ cGVyZi5vYS5wZXJpb2RfZXhwb25lbnQ7CkBAIC0xMjkyLDE3ICsxNTAxLDE4IEBAIHN0YXRpYyB2 b2lkIGdlbjhfb2FfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlJ OTE1X1dSSVRFKEdFTjhfT0FIRUFEUFRSLCB0YWlsKTsKIH0KIAotc3RhdGljIHZvaWQgaTkxNV9v YV9zdHJlYW1fZW5hYmxlKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCitzdGF0aWMg dm9pZCBpOTE1X3BlcmZfc3RyZWFtX2VuYWJsZShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3Ry ZWFtKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2 X3ByaXY7CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS5vcHMub2FfZW5hYmxlKGRldl9wcml2KTsKKwlp ZiAoc3RyZWFtLT5zYW1wbGVfZmxhZ3MgJiBTQU1QTEVfT0FfUkVQT1JUKQorCQlkZXZfcHJpdi0+ cGVyZi5vYS5vcHMub2FfZW5hYmxlKGRldl9wcml2KTsKIAogCWlmIChzdHJlYW0tPmNzX21vZGUp Ci0JCXN0cmVhbS0+Y29tbWFuZF9zdHJlYW1faG9vayA9IGk5MTVfcGVyZl9jb21tYW5kX3N0cmVh bV9ob29rX29hOworCQlzdHJlYW0tPmNvbW1hbmRfc3RyZWFtX2hvb2sgPSBpOTE1X3BlcmZfc3Ry ZWFtX2NzX2hvb2s7CiAKLQlpZiAoZGV2X3ByaXYtPnBlcmYub2EucGVyaW9kaWMpCi0JCWhydGlt ZXJfc3RhcnQoJmRldl9wcml2LT5wZXJmLm9hLnBvbGxfY2hlY2tfdGltZXIsCisJaWYgKHN0cmVh bS0+Y3NfbW9kZSB8fCBkZXZfcHJpdi0+cGVyZi5vYS5wZXJpb2RpYykKKwkJaHJ0aW1lcl9zdGFy dCgmZGV2X3ByaXYtPnBlcmYucG9sbF9jaGVja190aW1lciwKIAkJCSAgICAgIG5zX3RvX2t0aW1l KFBPTExfUEVSSU9EKSwKIAkJCSAgICAgIEhSVElNRVJfTU9ERV9SRUxfUElOTkVEKTsKIH0KQEAg LTEzMTcsMjMgKzE1MjcsMjQgQEAgc3RhdGljIHZvaWQgZ2VuOF9vYV9kaXNhYmxlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlJOTE1X1dSSVRFKEdFTjhfT0FDT05UUk9MLCAw KTsKIH0KIAotc3RhdGljIHZvaWQgaTkxNV9vYV9zdHJlYW1fZGlzYWJsZShzdHJ1Y3QgaTkxNV9w ZXJmX3N0cmVhbSAqc3RyZWFtKQorc3RhdGljIHZvaWQgaTkxNV9wZXJmX3N0cmVhbV9kaXNhYmxl KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiB7CiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKIAotCWlmIChkZXZfcHJpdi0+cGVy Zi5vYS5wZXJpb2RpYykKLQkJaHJ0aW1lcl9jYW5jZWwoJmRldl9wcml2LT5wZXJmLm9hLnBvbGxf Y2hlY2tfdGltZXIpOworCWlmIChzdHJlYW0tPmNzX21vZGUgfHwgZGV2X3ByaXYtPnBlcmYub2Eu cGVyaW9kaWMpCisJCWhydGltZXJfY2FuY2VsKCZkZXZfcHJpdi0+cGVyZi5wb2xsX2NoZWNrX3Rp bWVyKTsKIAogCWlmIChzdHJlYW0tPmNzX21vZGUpIHsKIAkJc3RyZWFtLT5jb21tYW5kX3N0cmVh bV9ob29rID0gTlVMTDsKLQkJaTkxNV9vYV9yY3Nfd2FpdF9ncHUoZGV2X3ByaXYpOwotCQlpOTE1 X29hX3Jjc19mcmVlX3JlcXVlc3RzKGRldl9wcml2KTsKKwkJaTkxNV9wZXJmX3dhaXRfZ3B1KGRl dl9wcml2LCBzdHJlYW0tPnJpbmdfaWQpOworCQlpOTE1X3BlcmZfZnJlZV9yZXF1ZXN0cyhkZXZf cHJpdiwgc3RyZWFtLT5yaW5nX2lkKTsKIAl9CiAKLQlkZXZfcHJpdi0+cGVyZi5vYS5vcHMub2Ff ZGlzYWJsZShkZXZfcHJpdik7CisJaWYgKHN0cmVhbS0+c2FtcGxlX2ZsYWdzICYgU0FNUExFX09B X1JFUE9SVCkKKwkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLm9hX2Rpc2FibGUoZGV2X3ByaXYpOwog fQogCi1zdGF0aWMgaW50IGk5MTVfb2Ffc3RyZWFtX2luaXQoc3RydWN0IGk5MTVfcGVyZl9zdHJl YW0gKnN0cmVhbSwKK3N0YXRpYyBpbnQgaTkxNV9wZXJmX3N0cmVhbV9pbml0KHN0cnVjdCBpOTE1 X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJCQkgICAgICAgc3RydWN0IGRybV9pOTE1X3BlcmZfb3Bl bl9wYXJhbSAqcGFyYW0sCiAJCQkgICAgICAgc3RydWN0IHBlcmZfb3Blbl9wcm9wZXJ0aWVzICpw cm9wcykKIHsKQEAgLTEzNDEsMTUgKzE1NTIsMTUgQEAgc3RhdGljIGludCBpOTE1X29hX3N0cmVh bV9pbml0KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJYm9vbCByZXF1aXJlX29h X3VuaXQgPSBwcm9wcy0+c2FtcGxlX2ZsYWdzICYgKFNBTVBMRV9PQV9SRVBPUlQgfAogCQkJCQkJ ICAgICAgU0FNUExFX09BX1NPVVJDRV9JTkZPKTsKIAlib29sIHJlcXVpcmVfY3NfbW9kZSA9IHBy b3BzLT5zYW1wbGVfZmxhZ3MgJiAoU0FNUExFX1BJRCB8Ci0JCQkJCQkgICAgICBTQU1QTEVfVEFH KTsKLQlpbnQgZm9ybWF0X3NpemU7CisJCQkJCQkgICAgICBTQU1QTEVfVEFHIHwKKwkJCQkJCSAg ICAgIFNBTVBMRV9UUyk7CiAJaW50IHJldDsKIAogCS8qIFRvIGF2b2lkIHRoZSBjb21wbGV4aXR5 IG9mIGhhdmluZyB0byBhY2N1cmF0ZWx5IGZpbHRlcgogCSAqIGNvdW50ZXIgcmVwb3J0cyBhbmQg bWFyc2hhbCB0byB0aGUgYXBwcm9wcmlhdGUgY2xpZW50CiAJICogd2UgY3VycmVudGx5IG9ubHkg YWxsb3cgZXhjbHVzaXZlIGFjY2VzcyAqLwotCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5leGNsdXNp dmVfc3RyZWFtKSB7Ci0JCURSTV9FUlJPUigiT0EgdW5pdCBhbHJlYWR5IGluIHVzZVxuIik7CisJ aWYgKGRldl9wcml2LT5wZXJmLmV4Y2x1c2l2ZV9zdHJlYW0pIHsKKwkJRFJNX0VSUk9SKCJTdHJl YW0gYWxyZWFkeSBpbiB1c2VcbiIpOwogCQlyZXR1cm4gLUVCVVNZOwogCX0KIApAQCAtMTM2NCw2 ICsxNTc1LDcgQEAgc3RhdGljIGludCBpOTE1X29hX3N0cmVhbV9pbml0KHN0cnVjdCBpOTE1X3Bl cmZfc3RyZWFtICpzdHJlYW0sCiAJc3RyZWFtLT5zYW1wbGVfc2l6ZSA9IHNpemVvZihzdHJ1Y3Qg ZHJtX2k5MTVfcGVyZl9yZWNvcmRfaGVhZGVyKTsKIAogCWlmIChyZXF1aXJlX29hX3VuaXQpIHsK KwkJaW50IGZvcm1hdF9zaXplOwogCQlpZiAoIWRldl9wcml2LT5wZXJmLm9hLm9wcy5pbml0X29h X2J1ZmZlcikgewogCQkJRFJNX0VSUk9SKCJPQSB1bml0IG5vdCBzdXBwb3J0ZWRcbiIpOwogCQkJ cmV0dXJuIC1FTk9ERVY7CkBAIC0xMzg2LDYgKzE1OTgsOCBAQCBzdGF0aWMgaW50IGk5MTVfb2Ff c3RyZWFtX2luaXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJCXJldHVybiAt RUlOVkFMOwogCQl9CiAKKwkJc3RyZWFtLT51c2luZ19vYSA9IHRydWU7CisKIAkJZm9ybWF0X3Np emUgPQogCQkJZGV2X3ByaXYtPnBlcmYub2Eub2FfZm9ybWF0c1twcm9wcy0+b2FfZm9ybWF0XS5z aXplOwogCkBAIC0xNDUyLDcgKzE2NjYsOCBAQCBzdGF0aWMgaW50IGk5MTVfb2Ffc3RyZWFtX2lu aXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAl9CiAKIAlpZiAocmVxdWlyZV9j c19tb2RlICYmICFwcm9wcy0+Y3NfbW9kZSkgewotCQlEUk1fRVJST1IoIlBJRCBvciBUQUcgc2Ft cGxpbmcgcmVxdWlyZSBhIHJpbmcgdG8gYmUgc3BlY2lmaWVkIik7CisJCURSTV9FUlJPUigKKwkJ CSJQSUQsIFRBRyBvciBUUyBzYW1wbGluZyByZXF1aXJlIGEgcmluZyB0byBiZSBzcGVjaWZpZWQi KTsKIAkJcmV0ID0gLUVJTlZBTDsKIAkJZ290byBjc19lcnJvcjsKIAl9CkBAIC0xNDcyLDYgKzE2 ODcsNyBAQCBzdGF0aWMgaW50IGk5MTVfb2Ffc3RyZWFtX2luaXQoc3RydWN0IGk5MTVfcGVyZl9z dHJlYW0gKnN0cmVhbSwKIAkJfQogCiAJCXN0cmVhbS0+Y3NfbW9kZSA9IHRydWU7CisJCXN0cmVh bS0+cmluZ19pZCA9IHByb3BzLT5yaW5nX2lkOwogCiAJCWlmIChwcm9wcy0+c2FtcGxlX2ZsYWdz ICYgU0FNUExFX1BJRCkgewogCQkJc3RyZWFtLT5zYW1wbGVfZmxhZ3MgfD0gU0FNUExFX1BJRDsK QEAgLTE0ODMsMjAgKzE2OTksMjUgQEAgc3RhdGljIGludCBpOTE1X29hX3N0cmVhbV9pbml0KHN0 cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJCQlzdHJlYW0tPnNhbXBsZV9zaXplICs9 IDQ7CiAJCX0KIAotCQlyZXQgPSBhbGxvY19jb21tYW5kX3N0cmVhbV9idWYoZGV2X3ByaXYpOwor CQlpZiAocHJvcHMtPnNhbXBsZV9mbGFncyAmIFNBTVBMRV9UUykgeworCQkJc3RyZWFtLT5zYW1w bGVfZmxhZ3MgfD0gU0FNUExFX1RTOworCQkJc3RyZWFtLT5zYW1wbGVfc2l6ZSArPSBJOTE1X1BF UkZfVFNfU0FNUExFX1NJWkU7CisJCX0KKworCQlyZXQgPSBhbGxvY19jb21tYW5kX3N0cmVhbV9i dWYoZGV2X3ByaXYsIHN0cmVhbS0+cmluZ19pZCk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIGNzX2Vy cm9yOwogCX0KIAotCWRldl9wcml2LT5wZXJmLm9hLmV4Y2x1c2l2ZV9zdHJlYW0gPSBzdHJlYW07 CisJZGV2X3ByaXYtPnBlcmYuZXhjbHVzaXZlX3N0cmVhbSA9IHN0cmVhbTsKIAotCXN0cmVhbS0+ ZGVzdHJveSA9IGk5MTVfb2Ffc3RyZWFtX2Rlc3Ryb3k7Ci0Jc3RyZWFtLT5lbmFibGUgPSBpOTE1 X29hX3N0cmVhbV9lbmFibGU7Ci0Jc3RyZWFtLT5kaXNhYmxlID0gaTkxNV9vYV9zdHJlYW1fZGlz YWJsZTsKLQlzdHJlYW0tPmNhbl9yZWFkID0gaTkxNV9vYV9jYW5fcmVhZDsKLQlzdHJlYW0tPndh aXRfdW5sb2NrZWQgPSBpOTE1X29hX3dhaXRfdW5sb2NrZWQ7Ci0Jc3RyZWFtLT5wb2xsX3dhaXQg PSBpOTE1X29hX3BvbGxfd2FpdDsKLQlzdHJlYW0tPnJlYWQgPSBpOTE1X29hX3JlYWQ7CisJc3Ry ZWFtLT5kZXN0cm95ID0gaTkxNV9wZXJmX3N0cmVhbV9kZXN0cm95OworCXN0cmVhbS0+ZW5hYmxl ID0gaTkxNV9wZXJmX3N0cmVhbV9lbmFibGU7CisJc3RyZWFtLT5kaXNhYmxlID0gaTkxNV9wZXJm X3N0cmVhbV9kaXNhYmxlOworCXN0cmVhbS0+Y2FuX3JlYWQgPSBpOTE1X3BlcmZfc3RyZWFtX2Nh bl9yZWFkOworCXN0cmVhbS0+d2FpdF91bmxvY2tlZCA9IGk5MTVfcGVyZl9zdHJlYW1fd2FpdF91 bmxvY2tlZDsKKwlzdHJlYW0tPnBvbGxfd2FpdCA9IGk5MTVfcGVyZl9zdHJlYW1fcG9sbF93YWl0 OworCXN0cmVhbS0+cmVhZCA9IGk5MTVfcGVyZl9zdHJlYW1fcmVhZDsKIAogCXJldHVybiAwOwog CkBAIC0xNTMwLDggKzE3NTEsOCBAQCBzdGF0aWMgdm9pZCBpOTE1X29hX2NvbnRleHRfcGluX25v dGlmeV9sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCSAgICBkZXZf cHJpdi0+cGVyZi5vYS5vcHMudXBkYXRlX2h3X2N0eF9pZF9sb2NrZWQgPT0gTlVMTCkKIAkJcmV0 dXJuOwogCi0JaWYgKGRldl9wcml2LT5wZXJmLm9hLmV4Y2x1c2l2ZV9zdHJlYW0gJiYKLQkgICAg ZGV2X3ByaXYtPnBlcmYub2EuZXhjbHVzaXZlX3N0cmVhbS0+Y3R4ID09IGNvbnRleHQpIHsKKwlp ZiAoZGV2X3ByaXYtPnBlcmYuZXhjbHVzaXZlX3N0cmVhbSAmJgorCSAgICBkZXZfcHJpdi0+cGVy Zi5leGNsdXNpdmVfc3RyZWFtLT5jdHggPT0gY29udGV4dCkgewogCQlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqID0KIAkJCWNvbnRleHQtPmxlZ2FjeV9od19jdHgucmNzX3N0YXRlOwog CQl1MzIgY3R4X2lkID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KG9iaik7CkBAIC0xNTk5LDgg KzE4MjAsOCBAQCB2b2lkIGk5MTVfb2FfbGVnYWN5X2N0eF9zd2l0Y2hfbm90aWZ5KHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5vcHMubGVn YWN5X2N0eF9zd2l0Y2hfdW5sb2NrZWQgPT0gTlVMTCkKIAkJcmV0dXJuOwogCi0JaWYgKGRldl9w cml2LT5wZXJmLm9hLmV4Y2x1c2l2ZV9zdHJlYW0gJiYKLQkgICAgZGV2X3ByaXYtPnBlcmYub2Eu ZXhjbHVzaXZlX3N0cmVhbS0+ZW5hYmxlZCkgeworCWlmIChkZXZfcHJpdi0+cGVyZi5leGNsdXNp dmVfc3RyZWFtICYmCisJICAgIGRldl9wcml2LT5wZXJmLmV4Y2x1c2l2ZV9zdHJlYW0tPmVuYWJs ZWQpIHsKIAogCQkvKiBYWFg6IFdlIGRvbid0IHRha2UgYSBsb2NrIGhlcmUgYW5kIHRoaXMgbWF5 IHJ1bgogCQkgKiBhc3luYyB3aXRoIHJlc3BlY3QgdG8gc3RyZWFtIG1ldGhvZHMuIE5vdGFibHkg d2UKQEAgLTE3MjksNyArMTk1MCw3IEBAIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBwb2xs X2NoZWNrX3RpbWVyX2NiKHN0cnVjdCBocnRpbWVyICpocnRpbWVyKQogCiAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0KIAkJY29udGFpbmVyX29mKGhydGltZXIsIHR5cGVvZigq ZGV2X3ByaXYpLAotCQkJICAgICBwZXJmLm9hLnBvbGxfY2hlY2tfdGltZXIpOworCQkJICAgICBw ZXJmLnBvbGxfY2hlY2tfdGltZXIpOwogCiAJLyogTm8gbmVlZCB0byBwcm90ZWN0IHRoZSBzdHJl YW1zIGxpc3QgaGVyZSwgc2luY2UgdGhlIGhydGltZXIgaXMKIAkgKiBkaXNhYmxlZCBiZWZvcmUg dGhlIHN0cmVhbSBpcyByZW1vdmVkIGZyb20gbGlzdCwgYW5kIGN1cnJlbnRseSBhCkBAIC0xNzM4 LDcgKzE5NTksNyBAQCBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgcG9sbF9jaGVja190aW1l cl9jYihzdHJ1Y3QgaHJ0aW1lciAqaHJ0aW1lcikKIAkgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5 KHN0cmVhbSwgJmRldl9wcml2LT5wZXJmLnN0cmVhbXMsIGxpbmspIHsKIAkJaWYgKHN0cmVhbV9o YXZlX2RhdGFfX3VubG9ja2VkKHN0cmVhbSkpCi0JCQl3YWtlX3VwKCZkZXZfcHJpdi0+cGVyZi5v YS5wb2xsX3dxKTsKKwkJCXdha2VfdXAoJmRldl9wcml2LT5wZXJmLnBvbGxfd3Fbc3RyZWFtLT5y aW5nX2lkXSk7CiAJfQogCiAJaHJ0aW1lcl9mb3J3YXJkX25vdyhocnRpbWVyLCBuc190b19rdGlt ZShQT0xMX1BFUklPRCkpOwpAQCAtMTk0Nyw3ICsyMTY4LDcgQEAgaW50IGk5MTVfcGVyZl9vcGVu X2lvY3RsX2xvY2tlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCXN0cmVhbS0+ZGV2X3ByaXYg PSBkZXZfcHJpdjsKIAlzdHJlYW0tPmN0eCA9IHNwZWNpZmljX2N0eDsKIAotCXJldCA9IGk5MTVf b2Ffc3RyZWFtX2luaXQoc3RyZWFtLCBwYXJhbSwgcHJvcHMpOworCXJldCA9IGk5MTVfcGVyZl9z dHJlYW1faW5pdChzdHJlYW0sIHBhcmFtLCBwcm9wcyk7CiAJaWYgKHJldCkKIAkJZ290byBlcnJf YWxsb2M7CiAKQEAgLTIwODgsMTMgKzIzMDksNiBAQCBzdGF0aWMgaW50IHJlYWRfcHJvcGVydGll c191bmxvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJaWYgKHJp bmdfaWQgPj0gTEFTVF9VU0VSX1JJTkcpCiAJCQkJCXJldHVybiAtRUlOVkFMOwogCi0JCQkJLyog WFhYOiBDdXJyZW50bHkgb25seSBSQ1MgaXMgc3VwcG9ydGVkLgotCQkJCSAqIFJlbW92ZSB0aGlz IGNoZWNrIHdoZW4gc3VwcG9ydCBmb3Igb3RoZXIKLQkJCQkgKiByaW5ncyBpcyBhZGRlZAotCQkJ CSAqLwotCQkJCWlmIChyaW5nX2lkICE9IFJDUykKLQkJCQkJcmV0dXJuIC1FSU5WQUw7Ci0KIAkJ CQlwcm9wcy0+Y3NfbW9kZSA9IHRydWU7CiAJCQkJcHJvcHMtPnJpbmdfaWQgPSByaW5nX2lkOwog CQkJfQpAQCAtMjEwOCw2ICsyMzIyLDkgQEAgc3RhdGljIGludCByZWFkX3Byb3BlcnRpZXNfdW5s b2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQljYXNlIERSTV9JOTE1 X1BFUkZfU0FNUExFX1RBR19QUk9QOgogCQkJcHJvcHMtPnNhbXBsZV9mbGFncyB8PSBTQU1QTEVf VEFHOwogCQkJYnJlYWs7CisJCWNhc2UgRFJNX0k5MTVfUEVSRl9TQU1QTEVfVFNfUFJPUDoKKwkJ CXByb3BzLT5zYW1wbGVfZmxhZ3MgfD0gU0FNUExFX1RTOworCQkJYnJlYWs7CiAJCWNhc2UgRFJN X0k5MTVfUEVSRl9QUk9QX01BWDoKIAkJCUJVRygpOwogCQl9CkBAIC0yMTkzLDYgKzI0MTAsNyBA QCBzdGF0aWMgc3RydWN0IGN0bF90YWJsZSBkZXZfcm9vdFtdID0gewogdm9pZCBpOTE1X3BlcmZf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKKwlpbnQgaTsKIAogCWlmICghKElTX0hBU1dFTEwo ZGV2KSB8fAogCSAgICAgIElTX0JST0FEV0VMTChkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSB8 fApAQCAtMjIwNCwxNiArMjQyMiwxOCBAQCB2b2lkIGk5MTVfcGVyZl9pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCiAJaWYgKCFkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmopCiAJCXJldHVy bjsKIAotCWhydGltZXJfaW5pdCgmZGV2X3ByaXYtPnBlcmYub2EucG9sbF9jaGVja190aW1lciwK KwlocnRpbWVyX2luaXQoJmRldl9wcml2LT5wZXJmLnBvbGxfY2hlY2tfdGltZXIsCiAJCSAgICAg Q0xPQ0tfTU9OT1RPTklDLCBIUlRJTUVSX01PREVfUkVMKTsKLQlkZXZfcHJpdi0+cGVyZi5vYS5w b2xsX2NoZWNrX3RpbWVyLmZ1bmN0aW9uID0gcG9sbF9jaGVja190aW1lcl9jYjsKLQlpbml0X3dh aXRxdWV1ZV9oZWFkKCZkZXZfcHJpdi0+cGVyZi5vYS5wb2xsX3dxKTsKKwlkZXZfcHJpdi0+cGVy Zi5wb2xsX2NoZWNrX3RpbWVyLmZ1bmN0aW9uID0gcG9sbF9jaGVja190aW1lcl9jYjsKKwlmb3Ig KGkgPSAwOyBpIDwgSTkxNV9OVU1fUklOR1M7IGkrKykgeworCQlzcGluX2xvY2tfaW5pdCgmZGV2 X3ByaXYtPnBlcmYubm9kZV9saXN0X2xvY2tbaV0pOworCQlpbml0X3dhaXRxdWV1ZV9oZWFkKCZk ZXZfcHJpdi0+cGVyZi5wb2xsX3dxW2ldKTsKKwl9CiAKIAlJTklUX0xJU1RfSEVBRCgmZGV2X3By aXYtPnBlcmYuc3RyZWFtcyk7CiAJbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPnBlcmYubG9jayk7CiAJ bXV0ZXhfaW5pdCgmZGV2X3ByaXYtPnBlcmYuc3RyZWFtc19sb2NrKTsKIAlzcGluX2xvY2tfaW5p dCgmZGV2X3ByaXYtPnBlcmYuaG9va19sb2NrKTsKLQlzcGluX2xvY2tfaW5pdCgmZGV2X3ByaXYt PnBlcmYubm9kZV9saXN0X2xvY2spOwogCiAJaWYgKElTX0hBU1dFTEwoZGV2KSkgewogCQlkZXZf cHJpdi0+cGVyZi5vYS5vcHMuaW5pdF9vYV9idWZmZXIgPSBnZW43X2luaXRfb2FfYnVmZmVyOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmgKaW5kZXggYTMzMzAzOC4uZTI0NDYyNiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlZy5oCkBAIC0zNTksNiArMzU5LDcgQEAKICNkZWZpbmUgICBNSV9GTFVTSF9EV19T VE9SRV9JTkRFWAkoMTw8MjEpCiAjZGVmaW5lICAgTUlfSU5WQUxJREFURV9UTEIJCSgxPDwxOCkK ICNkZWZpbmUgICBNSV9GTFVTSF9EV19PUF9TVE9SRURXCSgxPDwxNCkKKyNkZWZpbmUgICBNSV9G TFVTSF9EV19PUF9TVEFNUAkJKDM8PDE0KQogI2RlZmluZSAgIE1JX0ZMVVNIX0RXX09QX01BU0sJ CSgzPDwxNCkKICNkZWZpbmUgICBNSV9GTFVTSF9EV19OT1RJRlkJCSgxPDw4KQogI2RlZmluZSAg IE1JX0lOVkFMSURBVEVfQlNECQkoMTw8NykKQEAgLTQzOCw2ICs0MzksNyBAQAogI2RlZmluZSAg IFBJUEVfQ09OVFJPTF9UTEJfSU5WQUxJREFURQkJCSgxPDwxOCkKICNkZWZpbmUgICBQSVBFX0NP TlRST0xfTUVESUFfU1RBVEVfQ0xFQVIJCSgxPDwxNikKICNkZWZpbmUgICBQSVBFX0NPTlRST0xf UVdfV1JJVEUJCQkJKDE8PDE0KQorI2RlZmluZSAgIFBJUEVfQ09OVFJPTF9USU1FU1RBTVBfV1JJ VEUJCQkoMzw8MTQpCiAjZGVmaW5lICAgUElQRV9DT05UUk9MX1BPU1RfU1lOQ19PUF9NQVNLICAg ICAgICAgICAgICAgICgzPDwxNCkKICNkZWZpbmUgICBQSVBFX0NPTlRST0xfREVQVEhfU1RBTEwJ CQkoMTw8MTMpCiAjZGVmaW5lICAgUElQRV9DT05UUk9MX1dSSVRFX0ZMVVNICQkJKDE8PDEyKQpk aWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2Ry bS9pOTE1X2RybS5oCmluZGV4IDU2ODcwODAuLjI1NzBmM2VhIDEwMDY0NAotLS0gYS9pbmNsdWRl L3VhcGkvZHJtL2k5MTVfZHJtLmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCkBA IC0xMjM2LDYgKzEyMzYsMTIgQEAgZW51bSBkcm1faTkxNV9wZXJmX3Byb3BlcnR5X2lkIHsKIAkg Ki8KIAlEUk1fSTkxNV9QRVJGX1NBTVBMRV9UQUdfUFJPUCwKIAorCS8qKgorCSAqIFRoZSB2YWx1 ZSBvZiB0aGlzIHByb3BlcnR5IHNldCB0byAxIHJlcXVlc3RzIGluY2x1c2lvbiBvZiB0aW1lc3Rh bXAKKwkgKiBpbiB0aGUgcGVyZiBzYW1wbGUgZGF0YS4KKwkgKi8KKwlEUk1fSTkxNV9QRVJGX1NB TVBMRV9UU19QUk9QLAorCiAJRFJNX0k5MTVfUEVSRl9QUk9QX01BWCAvKiBub24tQUJJICovCiB9 OwogCkBAIC0xMjg3LDYgKzEyOTMsNyBAQCBlbnVtIGRybV9pOTE1X3BlcmZfcmVjb3JkX3R5cGUg ewogCSAqICAgICB7IHUzMiBjdHhfaWQ7IH0gJiYgRFJNX0k5MTVfUEVSRl9TQU1QTEVfQ1RYX0lE X1BST1AKIAkgKiAgICAgeyB1MzIgcGlkOyB9ICYmIERSTV9JOTE1X1BFUkZfU0FNUExFX1BJRF9Q Uk9QCiAJICogICAgIHsgdTMyIHRhZzsgfSAmJiBEUk1fSTkxNV9QRVJGX1NBTVBMRV9UQUdfUFJP UAorCSAqICAgICB7IHU2NCB0aW1lc3RhbXA7IH0gJiYgRFJNX0k5MTVfUEVSRl9TQU1QTEVfVFNf UFJPUAogCSAqICAgICB7IHUzMiBvYV9yZXBvcnRbXTsgfSAmJiBEUk1fSTkxNV9QRVJGX1NBTVBM RV9PQV9QUk9QCiAJICogfTsKIAkgKi8KLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK