From mboxrd@z Thu Jan 1 00:00:00 1970 From: sourab.gupta@intel.com Subject: [PATCH 06/11] drm/i915: Framework for capturing command stream based OA reports Date: Tue, 16 Feb 2016 10:57:14 +0530 Message-ID: <1455600439-18480-7-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 4F0816E240 for ; Tue, 16 Feb 2016 05:25:35 +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 RnJvbTogU291cmFiIEd1cHRhIDxzb3VyYWIuZ3VwdGFAaW50ZWwuY29tPgoKVGhpcyBwYXRjaCBp bnRyb2R1Y2VzIGEgZnJhbWV3b3JrIHRvIGVuYWJsZSBPQSBjb3VudGVyIHJlcG9ydHMgYXNzb2Np YXRlZAp3aXRoIFJlbmRlciBjb21tYW5kIHN0cmVhbS4gV2UgY2FuIHRoZW4gYXNzb2NpYXRlIHRo ZSByZXBvcnRzIGNhcHR1cmVkCnRocm91Z2ggdGhpcyBtZWNoYW5pc20gd2l0aCB0aGVpciBjb3Jy ZXNwb25kaW5nIGNvbnRleHQgaWQncy4gVGhpcyBjYW4gYmUKZnVydGhlciBleHRlbmRlZCB0byBh c3NvY2lhdGUgYW55IG90aGVyIG1ldGFkYXRhIGluZm9ybWF0aW9uIHdpdGggdGhlCmNvcnJlc3Bv bmRpbmcgc2FtcGxlcyAoc2luY2UgdGhlIGFzc29jaWF0aW9uIHdpdGggUmVuZGVyIGNvbW1hbmQg c3RyZWFtCmdpdmVzIHVzIHRoZSBhYmlsaXR5IHRvIGNhcHR1cmUgdGhlc2UgaW5mb3JtYXRpb24g d2hpbGUgaW5zZXJ0aW5nIHRoZQpjb3JyZXNwb25kaW5nIGNhcHR1cmUgY29tbWFuZHMgaW50byB0 aGUgY29tbWFuZCBzdHJlYW0pLgoKVGhlIE9BIHJlcG9ydHMgZ2VuZXJhdGVkIGluIHRoaXMgd2F5 IGFyZSBhc3NvY2lhdGVkIHdpdGggYSBjb3JyZXNwb25kaW5nCndvcmtsb2FkLCBhbmQgdGh1cyBj YW4gYmUgdXNlZCB0aGUgZGVsaW1pdCB0aGUgd29ya2xvYWQgKGkuZS4gc2FtcGxlIHRoZQpjb3Vu dGVycyBhdCB0aGUgd29ya2xvYWQgYm91bmRhcmllcyksIHdpdGhpbiBhbiBvbmdvaW5nIHN0cmVh bSBvZiBwZXJpb2RpYwpjb3VudGVyIHNuYXBzaG90cy4KClRoZXJlIG1heSBiZSB1c2VjYXNlcyB3 aGVyZWluIHdlIG5lZWQgbW9yZSB0aGFuIHBlcmlvZGljIE9BIGNhcHR1cmUgbW9kZQp3aGljaCBp cyBzdXBwb3J0ZWQgY3VycmVudGx5LiBUaGlzIG1vZGUgaXMgcHJpbWFyaWx5IHVzZWQgZm9yIHR3 byB1c2VjYXNlczoKICAgIC0gQWJpbGl0eSB0byBjYXB0dXJlIHN5c3RlbSB3aWRlIG1ldHJpY3Ms IGFsb25nd2l0aCB0aGUgYWJpbGl0eSB0byBtYXAKICAgICAgdGhlIHJlcG9ydHMgYmFjayB0byBp bmRpdmlkdWFsIGNvbnRleHRzIChwYXJ0aWN1bGFybHkgZm9yIEhTVykuCiAgICAtIEFiaWxpdHkg dG8gaW5qZWN0IHRhZ3MgZm9yIHdvcmssIGludG8gdGhlIHJlcG9ydHMuIFRoaXMgcHJvdmlkZXMK ICAgICAgdmlzaWJpbGl0eSBpbnRvIHRoZSBtdWx0aXBsZSBzdGFnZXMgb2Ygd29yayB3aXRoaW4g c2luZ2xlIGNvbnRleHQuCgpUaGUgdXNlcnNwYWNlIHdpbGwgYmUgYWJsZSB0byBkaXN0aW5ndWlz aCBiZXR3ZWVuIHRoZSBwZXJpb2RpYyBhbmQgQ1MgYmFzZWQKT0EgcmVwb3J0cyBieSB0aGUgdmly dHVlIG9mIHNvdXJjZV9pbmZvIHNhbXBsZSBmaWVsZC4KClRoZSBjb21tYW5kcyB0byBjYXB0dXJl IE9BIHJlcG9ydHMgYXJlIGluc2VydGVkIGF0IEJCIGJvdW5kYXJpZXMuClRoZSBtZXRhZGF0YSBp bmZvcm1hdGlvbiBwZXJ0YWluaW5nIHRvIHNuYXBzaG90IGlzIG1haW50YWluZWQgaW4gYSBsaXN0 LAp3aGljaCBhbHNvIGhhcyBjb3JyZXNwb25kaW5nIGdlbSByZXF1ZXN0IGZpZWxkIHdoaWNoIGlz IHRyYWNrZWQgZm9yIGNvbXBsZXRpb24Kb2YgY29tbWFuZC4KCkJvdGggcGVyaW9kaWMgYW5kIFJD UyBiYXNlZCByZXBvcnRzIGFyZSBhc3NvY2lhdGVkIHdpdGggYSBzaW5nbGUgc3RyZWFtCihjb3Jy ZXNwb25kaW5nIHRvIHJlbmRlciBlbmdpbmUpLCBhbmQgdGhlIHNhbXBsZXMgd2lsbCBiZSBmb3J3 YXJkZWQgdG8KdXNlcnNwYWNlIGluIHRoZSBzZXF1ZW50aWFsIG9yZGVyIGFjY29yZGluZyB0byB0 aGVpciB0aW1lc3RhbXBzLgoKdjI6IEFsaWdpbmluZyB3aXRoIHRoZSBub24tcGVyZiBpbnRlcmZh Y2UgKGN1c3RvbSBkcm0gaW9jdGwgYmFzZWQpLiBBbHNvLApmZXcgcmVsYXRlZCBwYXRjaGVzIGFy ZSBzcXVhc2hlZCB0b2dldGhlciBmb3IgYmV0dGVyIHJlYWRhYmlsaXR5CgpTaWduZWQtb2ZmLWJ5 OiBTb3VyYWIgR3VwdGEgPHNvdXJhYi5ndXB0YUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFJv YmVydCBCcmFnZyA8cm9iZXJ0QHNpeGJ5bmluZS5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCAgICAgICAgICAgIHwgIDM1ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9leGVjYnVmZmVyLmMgfCAgIDQgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9w ZXJmLmMgICAgICAgICAgIHwgNzMzICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgfCAgIDQgKwogaW5jbHVkZS91 YXBpL2RybS9pOTE1X2RybS5oICAgICAgICAgICAgICAgIHwgIDE1ICsKIDUgZmlsZXMgY2hhbmdl ZCwgNjkwIGluc2VydGlvbnMoKyksIDEwMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAppbmRleCBjNDA5YzhmLi40NGZjYmY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAg LTE3MzAsNiArMTczMCw5IEBAIHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtIHsKIAlzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY3R4OwogCWJvb2wgZW5hYmxlZDsKIAorCS8qIFdoZXRoZXIgY29tbWFuZCBz dHJlYW0gYmFzZWQgZGF0YSBjb2xsZWN0aW9uIGlzIGVuYWJsZWQgKi8KKwlib29sIGNzX21vZGU7 CisKIAkvKiBFbmFibGVzIHRoZSBjb2xsZWN0aW9uIG9mIEhXIHNhbXBsZXMsIGVpdGhlciBpbiBy ZXNwb25zZSB0bwogCSAqIEk5MTVfUEVSRl9JT0NUTF9FTkFCTEUgb3IgaW1wbGljaXRseSBjYWxs ZWQgd2hlbiBzdHJlYW0gaXMKIAkgKiBvcGVuZWQgd2l0aG91dCBJOTE1X1BFUkZfRkxBR19ESVNB QkxFRCAqLwpAQCAtMTc3Myw2ICsxNzc2LDEyIEBAIHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtIHsK IAkgKgogCSAqIFRoZSBzdHJlYW0gd2lsbCBhbHdheXMgYmUgZGlzYWJsZWQgYmVmb3JlIHRoaXMg aXMgY2FsbGVkICovCiAJdm9pZCAoKmRlc3Ryb3kpKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpz dHJlYW0pOworCisJLyoKKwkgKiBSb3V0aW5lIHRvIGVtaXQgdGhlIGNvbW1hbmRzIGluIHRoZSBj b21tYW5kIHN0cmVhbWVyIGFzc29jaWF0ZWQKKwkgKiB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGdw dSBlbmdpbmUuCisJICovCisJdm9pZCAoKmNvbW1hbmRfc3RyZWFtX2hvb2spKHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxKTsKIH07CiAKIHN0cnVjdCBpOTE1X29hX29wcyB7CkBAIC0x Nzg2LDEwICsxNzk1LDIxIEBAIHN0cnVjdCBpOTE1X29hX29wcyB7CiAJCQkJCXUzMiBjdHhfaWQp OwogCXZvaWQgKCpsZWdhY3lfY3R4X3N3aXRjaF91bmxvY2tlZCkoc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEpOwogCXZvaWQgKCpyZWFkKShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAq c3RyZWFtLAotCQkgICAgIHN0cnVjdCBpOTE1X3BlcmZfcmVhZF9zdGF0ZSAqcmVhZF9zdGF0ZSk7 CisJCSAgICAgc3RydWN0IGk5MTVfcGVyZl9yZWFkX3N0YXRlICpyZWFkX3N0YXRlLCB1MzIgdHMp OwogCWJvb2wgKCpvYV9idWZmZXJfaXNfZW1wdHkpKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7CiB9OwogCisvKgorICogTGlzdCBlbGVtZW50IHRvIGhvbGQgaW5mbyBhYm91dCB0 aGUgcGVyZiBzYW1wbGUgZGF0YSBhc3NvY2lhdGVkCisgKiB3aXRoIGEgcGFydGljdWxhciBHUFUg Y29tbWFuZCBzdHJlYW0uCisgKi8KK3N0cnVjdCBpOTE1X3BlcmZfY3NfZGF0YV9ub2RlIHsKKwlz dHJ1Y3QgbGlzdF9oZWFkIGxpbms7CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1 ZXN0OworCXUzMiBvZmZzZXQ7CisJdTMyIGN0eF9pZDsKK307CisKIHN0cnVjdCBkcm1faTkxNV9w cml2YXRlIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2OwogCXN0cnVjdCBrbWVtX2NhY2hlICpv YmplY3RzOwpAQCAtMjA0Miw2ICsyMDYyLDggQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewog CQlzdHJ1Y3QgY3RsX3RhYmxlX2hlYWRlciAqc3lzY3RsX2hlYWRlcjsKIAogCQlzdHJ1Y3QgbXV0 ZXggbG9jazsKKworCQlzdHJ1Y3QgbXV0ZXggc3RyZWFtc19sb2NrOwogCQlzdHJ1Y3QgbGlzdF9o ZWFkIHN0cmVhbXM7CiAKIAkJc3BpbmxvY2tfdCBob29rX2xvY2s7CkBAIC0yMDg0LDYgKzIxMDYs MTYgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCQkJY29uc3Qgc3RydWN0IGk5MTVfb2Ff Zm9ybWF0ICpvYV9mb3JtYXRzOwogCQkJaW50IG5fYnVpbHRpbl9zZXRzOwogCQl9IG9hOworCisJ CS8qIENvbW1hbmQgc3RyZWFtIGJhc2VkIHBlcmYgZGF0YSBidWZmZXIgKi8KKwkJc3RydWN0IHsK KwkJCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisJCQlzdHJ1Y3QgaTkxNV92bWEg KnZtYTsKKwkJCXU4ICphZGRyOworCQl9IGNvbW1hbmRfc3RyZWFtX2J1ZjsKKworCQlzdHJ1Y3Qg bGlzdF9oZWFkIG5vZGVfbGlzdDsKKwkJc3BpbmxvY2tfdCBub2RlX2xpc3RfbG9jazsKIAl9IHBl cmY7CiAKIAkvKiBBYnN0cmFjdCB0aGUgc3VibWlzc2lvbiBtZWNoYW5pc20gKGxlZ2FjeSByaW5n YnVmZmVyIG9yIGV4ZWNsaXN0cykgYXdheSAqLwpAQCAtMzMyOCw2ICszMzYwLDcgQEAgdm9pZCBp OTE1X29hX2NvbnRleHRfcGluX25vdGlmeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCiAJCQkJc3RydWN0IGludGVsX2NvbnRleHQgKmNvbnRleHQpOwogdm9pZCBpOTE1X29hX2xl Z2FjeV9jdHhfc3dpdGNoX25vdGlmeShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7 CiB2b2lkIGk5MTVfb2FfdXBkYXRlX3JlZ19zdGF0ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpy aW5nLCB1aW50MzJfdCAqcmVnX3N0YXRlKTsKK3ZvaWQgaTkxNV9wZXJmX2NvbW1hbmRfc3RyZWFt X2hvb2soc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpOwogCiAvKiBpOTE1X2dlbV9l dmljdC5jICovCiBpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX2V2aWN0X3NvbWV0aGluZyhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1 ZmZlci5jCmluZGV4IDZlZDdkNjNhLi42ODYwZmNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZXhlY2J1ZmZlci5jCkBAIC0xMjU4LDEyICsxMjU4LDE2IEBAIGk5MTVfZ2VtX3Jp bmdidWZmZXJfc3VibWlzc2lvbihzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFtcyAqcGFyYW1z LAogCWV4ZWNfc3RhcnQgPSBwYXJhbXMtPmJhdGNoX29ial92bV9vZmZzZXQgKwogCQkgICAgIHBh cmFtcy0+YXJnc19iYXRjaF9zdGFydF9vZmZzZXQ7CiAKKwlpOTE1X3BlcmZfY29tbWFuZF9zdHJl YW1faG9vayhwYXJhbXMtPnJlcXVlc3QpOworCiAJcmV0ID0gcmluZy0+ZGlzcGF0Y2hfZXhlY2J1 ZmZlcihwYXJhbXMtPnJlcXVlc3QsCiAJCQkJCWV4ZWNfc3RhcnQsIGV4ZWNfbGVuLAogCQkJCQlw YXJhbXMtPmRpc3BhdGNoX2ZsYWdzKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCisJaTkx NV9wZXJmX2NvbW1hbmRfc3RyZWFtX2hvb2socGFyYW1zLT5yZXF1ZXN0KTsKKwogCXRyYWNlX2k5 MTVfZ2VtX3JpbmdfZGlzcGF0Y2gocGFyYW1zLT5yZXF1ZXN0LCBwYXJhbXMtPmRpc3BhdGNoX2Zs YWdzKTsKIAogCWk5MTVfZ2VtX2V4ZWNidWZmZXJfbW92ZV90b19hY3RpdmUodm1hcywgcGFyYW1z LT5yZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKaW5kZXggMDZkZTRiMy4uMjkwNDc0 NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKQEAgLTUxLDYgKzUxLDEzIEBAIHN0YXRpYyB1 MzIgaTkxNV9wZXJmX3N0cmVhbV9wYXJhbm9pZCA9IHRydWU7CiAjZGVmaW5lIEdFTjhfT0FSRVBP UlRfUkVBU09OX0dPX1RSQU5TSVRJT04gICgxPDwyMykKICNkZWZpbmUgR0VOOV9PQVJFUE9SVF9S RUFTT05fQ0xLX1JBVElPICAgICAgKDE8PDI0KQogCisvKiBEYXRhIGNvbW1vbiB0byBwZXJpb2Rp YyBhbmQgUkNTIGJhc2VkIHNhbXBsZXMgKi8KK3N0cnVjdCBvYV9zYW1wbGVfZGF0YSB7CisJdTMy IHNvdXJjZTsKKwl1MzIgY3R4X2lkOworCWNvbnN0IHU4ICpyZXBvcnQ7Cit9OworCiAvKiBmb3Ig c3lzY3RsIHByb2NfZG9pbnR2ZWNfbWlubWF4IG9mIGk5MTVfb2FfbWluX3RpbWVyX2V4cG9uZW50 ICovCiBzdGF0aWMgaW50IHplcm87CiBzdGF0aWMgaW50IG9hX2V4cG9uZW50X21heCA9IE9BX0VY UE9ORU5UX01BWDsKQEAgLTg4LDYgKzk1LDcgQEAgc3RhdGljIHN0cnVjdCBpOTE1X29hX2Zvcm1h dCBnZW44X3BsdXNfb2FfZm9ybWF0c1tJOTE1X09BX0ZPUk1BVF9NQVhdID0gewogCiAjZGVmaW5l IFNBTVBMRV9PQV9SRVBPUlQJKDE8PDApCiAjZGVmaW5lIFNBTVBMRV9PQV9TT1VSQ0VfSU5GTwko MTw8MSkKKyNkZWZpbmUgU0FNUExFX0NUWF9JRAkJKDE8PDIpCiAKIHN0cnVjdCBwZXJmX29wZW5f cHJvcGVydGllcwogewpAQCAtMTAxLDggKzEwOSwyMzYgQEAgc3RydWN0IHBlcmZfb3Blbl9wcm9w ZXJ0aWVzCiAJaW50IG9hX2Zvcm1hdDsKIAlib29sIG9hX3BlcmlvZGljOwogCXUzMiBvYV9wZXJp b2RfZXhwb25lbnQ7CisKKwkvKiBDb21tYW5kIHN0cmVhbSBtb2RlICovCisJYm9vbCBjc19tb2Rl OworCWVudW0gaW50ZWxfcmluZ19pZCByaW5nX2lkOwogfTsKIAorLyoKKyAqIEVtaXQgdGhlIGNv bW1hbmRzIHRvIGNhcHR1cmUgbWV0cmljcywgaW50byB0aGUgY29tbWFuZCBzdHJlYW0uIFRoaXMg ZnVuY3Rpb24KKyAqIGNhbiBiZSBjYWxsZWQgY29uY3VycmVudGx5IHdpdGggdGhlIHN0cmVhbSBv cGVyYXRpb25zIGFuZCBkb2Vzbid0IHJlcXVpcmUKKyAqIHBlcmYgbXV0ZXggbG9jay4KKyAqLwor Cit2b2lkIGk5MTVfcGVyZl9jb21tYW5kX3N0cmVhbV9ob29rKHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxKQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByZXEtPnJp bmc7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmluZy0+ZGV2LT5kZXZf cHJpdmF0ZTsKKwlzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtOworCisJaWYgKCFkZXZf cHJpdi0+cGVyZi5pbml0aWFsaXplZCkKKwkJcmV0dXJuOworCisJbXV0ZXhfbG9jaygmZGV2X3By aXYtPnBlcmYuc3RyZWFtc19sb2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHN0cmVhbSwgJmRl dl9wcml2LT5wZXJmLnN0cmVhbXMsIGxpbmspIHsKKwkJaWYgKHN0cmVhbS0+ZW5hYmxlZCAmJiBz dHJlYW0tPmNvbW1hbmRfc3RyZWFtX2hvb2spCisJCQlzdHJlYW0tPmNvbW1hbmRfc3RyZWFtX2hv b2socmVxKTsKKwl9CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGVyZi5zdHJlYW1zX2xvY2sp OworfQorCisvKgorICogUmVsZWFzZSBzb21lIHBlcmYgZW50cmllcyB0byBtYWtlIHNwYWNlIGZv ciBhIG5ldyBlbnRyeSBkYXRhLiBXZSBkZXJlZmVyZW5jZQorICogdGhlIGFzc29jaWF0ZWQgcmVx dWVzdCBiZWZvcmUgZGVsZXRpbmcgdGhlIGVudHJ5LiBBbHNvLCBubyBuZWVkIHRvIGNoZWNrIGZv cgorICogZ3B1IGNvbXBsZXRpb24gb2YgY29tbWFuZHMsIHNpbmNlLCB0aGVzZSBlbnRyaWVzIGFy ZSBhbnl3YXlzIGdvaW5nIHRvIGJlCisgKiByZXBsYWNlZCBieSBhIG5ldyBlbnRyeSwgYW5kIGdw dSB3aWxsIG92ZXJ3cml0ZSB0aGUgYnVmZmVyIGNvbnRlbnRzCisgKiBldmVudHVhbGx5LCB3aGVu IHRoZSByZXF1ZXN0IGFzc29jaWF0ZWQgd2l0aCBuZXcgZW50cnkgY29tcGxldGVzLgorICovCitz dGF0aWMgdm9pZCByZWxlYXNlX3NvbWVfcGVyZl9lbnRyaWVzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKKwkJCQkJdTMyIHRhcmdldF9zaXplKQoreworCXN0cnVjdCBpOTE1X3Bl cmZfY3NfZGF0YV9ub2RlICplbnRyeSwgKm5leHQ7CisJdTMyIGVudHJ5X3NpemUgPSBkZXZfcHJp di0+cGVyZi5vYS5vYV9idWZmZXIuZm9ybWF0X3NpemU7CisJdTMyIHNpemUgPSAwOworCisJbGlz dF9mb3JfZWFjaF9lbnRyeV9zYWZlCisJCShlbnRyeSwgbmV4dCwgJmRldl9wcml2LT5wZXJmLm5v ZGVfbGlzdCwgbGluaykgeworCisJCXNpemUgKz0gZW50cnlfc2l6ZTsKKwkJaTkxNV9nZW1fcmVx dWVzdF91bnJlZmVyZW5jZShlbnRyeS0+cmVxdWVzdCk7CisJCWxpc3RfZGVsKCZlbnRyeS0+bGlu ayk7CisJCWtmcmVlKGVudHJ5KTsKKworCQlpZiAoc2l6ZSA+PSB0YXJnZXRfc2l6ZSkKKwkJCWJy ZWFrOworCX0KK30KKworLyoKKyAqIEluc2VydCB0aGUgcGVyZiBlbnRyeSB0byB0aGUgZW5kIG9m IHRoZSBsaXN0LiBUaGlzIGZ1bmN0aW9uIG5ldmVyIGZhaWxzLAorICogc2luY2UgaXQgYWx3YXlz IG1hbmFnZXMgdG8gaW5zZXJ0IHRoZSBlbnRyeS4gSWYgdGhlIHNwYWNlIGlzIGV4aGF1c3RlZCBp bgorICogdGhlIGJ1ZmZlciwgaXQgd2lsbCByZW1vdmUgdGhlIG9sZGVzdCBlbnRyaWVzIGluIG9y ZGVyIHRvIG1ha2Ugc3BhY2UuCisgKi8KK3N0YXRpYyB2b2lkIGluc2VydF9wZXJmX2VudHJ5KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQlzdHJ1Y3QgaTkxNV9wZXJmX2Nz X2RhdGFfbm9kZSAqZW50cnkpCit7CisJc3RydWN0IGk5MTVfcGVyZl9jc19kYXRhX25vZGUgKmZp cnN0X2VudHJ5LCAqbGFzdF9lbnRyeTsKKwlpbnQgbWF4X29mZnNldCA9IGRldl9wcml2LT5wZXJm LmNvbW1hbmRfc3RyZWFtX2J1Zi5vYmotPmJhc2Uuc2l6ZTsKKwl1MzIgZW50cnlfc2l6ZSA9IGRl dl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5mb3JtYXRfc2l6ZTsKKworCXNwaW5fbG9jaygmZGV2 X3ByaXYtPnBlcmYubm9kZV9saXN0X2xvY2spOworCWlmIChsaXN0X2VtcHR5KCZkZXZfcHJpdi0+ cGVyZi5ub2RlX2xpc3QpKSB7CisJCWVudHJ5LT5vZmZzZXQgPSAwOworCQlsaXN0X2FkZF90YWls KCZlbnRyeS0+bGluaywgJmRldl9wcml2LT5wZXJmLm5vZGVfbGlzdCk7CisJCXNwaW5fdW5sb2Nr KCZkZXZfcHJpdi0+cGVyZi5ub2RlX2xpc3RfbG9jayk7CisJCXJldHVybjsKKwl9CisKKwlmaXJz dF9lbnRyeSA9IGxpc3RfZmlyc3RfZW50cnkoJmRldl9wcml2LT5wZXJmLm5vZGVfbGlzdCwKKwkJ CQkgICAgICAgdHlwZW9mKCpmaXJzdF9lbnRyeSksIGxpbmspOworCWxhc3RfZW50cnkgPSBsaXN0 X2xhc3RfZW50cnkoJmRldl9wcml2LT5wZXJmLm5vZGVfbGlzdCwKKwkJCQkgICAgIHR5cGVvZigq Zmlyc3RfZW50cnkpLCBsaW5rKTsKKworCWlmIChsYXN0X2VudHJ5LT5vZmZzZXQgPj0gZmlyc3Rf ZW50cnktPm9mZnNldCkgeworCQkvKiBTdWZmaWNpZW50IHNwYWNlIGF2YWlsYWJsZSBhdCB0aGUg ZW5kIG9mIGJ1ZmZlcj8gKi8KKwkJaWYgKGxhc3RfZW50cnktPm9mZnNldCArIDIqZW50cnlfc2l6 ZSA8IG1heF9vZmZzZXQpCisJCQllbnRyeS0+b2Zmc2V0ID0gbGFzdF9lbnRyeS0+b2Zmc2V0ICsg ZW50cnlfc2l6ZTsKKwkJLyoKKwkJICogV3JhcGFyb3VuZCBjb25kaXRpb24uIElzIHN1ZmZpY2ll bnQgc3BhY2UgYXZhaWxhYmxlIGF0CisJCSAqIGJlZ2lubmluZyBvZiBidWZmZXI/CisJCSAqLwor CQllbHNlIGlmIChlbnRyeV9zaXplIDwgZmlyc3RfZW50cnktPm9mZnNldCkKKwkJCWVudHJ5LT5v ZmZzZXQgPSAwOworCQkvKiBJbnN1ZmZpY2llbnQgc3BhY2UuIE92ZXJ3cml0ZSBleGlzdGluZyBv bGQgZW50cmllcyAqLworCQllbHNlIHsKKwkJCXUzMiB0YXJnZXRfc2l6ZSA9IGVudHJ5X3NpemUg LSBmaXJzdF9lbnRyeS0+b2Zmc2V0OworCisJCQlyZWxlYXNlX3NvbWVfcGVyZl9lbnRyaWVzKGRl dl9wcml2LCB0YXJnZXRfc2l6ZSk7CisJCQllbnRyeS0+b2Zmc2V0ID0gMDsKKwkJfQorCX0gZWxz ZSB7CisJCS8qIFN1ZmZpY2llbnQgc3BhY2UgYXZhaWxhYmxlPyAqLworCQlpZiAobGFzdF9lbnRy eS0+b2Zmc2V0ICsgMiplbnRyeV9zaXplIDwgZmlyc3RfZW50cnktPm9mZnNldCkKKwkJCWVudHJ5 LT5vZmZzZXQgPSBsYXN0X2VudHJ5LT5vZmZzZXQgKyBlbnRyeV9zaXplOworCQkvKiBJbnN1ZmZp Y2llbnQgc3BhY2UuIE92ZXJ3cml0ZSBleGlzdGluZyBvbGQgZW50cmllcyAqLworCQllbHNlIHsK KwkJCXUzMiB0YXJnZXRfc2l6ZSA9IGVudHJ5X3NpemUgLQorCQkJCShmaXJzdF9lbnRyeS0+b2Zm c2V0IC0gbGFzdF9lbnRyeS0+b2Zmc2V0IC0KKwkJCQllbnRyeV9zaXplKTsKKworCQkJcmVsZWFz ZV9zb21lX3BlcmZfZW50cmllcyhkZXZfcHJpdiwgdGFyZ2V0X3NpemUpOworCQkJZW50cnktPm9m ZnNldCA9IGxhc3RfZW50cnktPm9mZnNldCArIGVudHJ5X3NpemU7CisJCX0KKwl9CisJbGlzdF9h ZGRfdGFpbCgmZW50cnktPmxpbmssICZkZXZfcHJpdi0+cGVyZi5ub2RlX2xpc3QpOworCXNwaW5f dW5sb2NrKCZkZXZfcHJpdi0+cGVyZi5ub2RlX2xpc3RfbG9jayk7Cit9CisKK3N0YXRpYyB2b2lk IGk5MTVfcGVyZl9jb21tYW5kX3N0cmVhbV9ob29rX29hKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxKQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSByZXEtPnJpbmc7 CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSByZXEtPnJpbmdidWY7CisJc3Ry dWN0IGludGVsX2NvbnRleHQgKmN0eCA9IHJlcS0+Y3R4OworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGk5MTVfcGVy Zl9jc19kYXRhX25vZGUgKmVudHJ5OworCXUzMiBhZGRyID0gMDsKKwlpbnQgcmV0OworCisJLyog T0EgY291bnRlcnMgYXJlIG9ubHkgc3VwcG9ydGVkIG9uIHRoZSByZW5kZXIgcmluZyAqLworCUJV R19PTihyaW5nLT5pZCAhPSBSQ1MpOworCisJZW50cnkgPSBremFsbG9jKHNpemVvZigqZW50cnkp LCBHRlBfS0VSTkVMKTsKKwlpZiAoZW50cnkgPT0gTlVMTCkgeworCQlEUk1fRVJST1IoImFsbG9j IGZhaWxlZFxuIik7CisJCXJldHVybjsKKwl9CisKKwlpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3Rz KQorCQlyZXQgPSBpbnRlbF9sb2dpY2FsX3JpbmdfYmVnaW4ocmVxLCA0KTsKKwllbHNlCisJCXJl dCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKKworCWlmIChyZXQpIHsKKwkJa2ZyZWUoZW50 cnkpOworCQlyZXR1cm47CisJfQorCisJZW50cnktPmN0eF9pZCA9IGN0eC0+Z2xvYmFsX2lkOwor CWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZlbnRyeS0+cmVxdWVzdCwgcmVxKTsKKworCWluc2Vy dF9wZXJmX2VudHJ5KGRldl9wcml2LCBlbnRyeSk7CisKKwlhZGRyID0gZGV2X3ByaXYtPnBlcmYu Y29tbWFuZF9zdHJlYW1fYnVmLnZtYS0+bm9kZS5zdGFydCArCisJCWVudHJ5LT5vZmZzZXQ7CisK KwkvKiBhZGRyIHNob3VsZCBiZSA2NCBieXRlIGFsaWduZWQgKi8KKwlCVUdfT04oYWRkciAmIDB4 M2YpOworCisJaWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykgeworCQlpbnRlbF9sb2dpY2FsX3Jp bmdfZW1pdChyaW5nYnVmLCBNSV9SRVBPUlRfUEVSRl9DT1VOVCB8ICgyPDwwKSk7CisJCWludGVs X2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsCisJCQkJCWFkZHIgfCBNSV9SRVBPUlRfUEVSRl9D T1VOVF9HR1RUKTsKKwkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7CisJCWlu dGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsCisJCQlpOTE1X2dlbV9yZXF1ZXN0X2dldF9z ZXFubyhyZXEpKTsKKwkJaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2UocmluZ2J1Zik7CisJfSBl bHNlIHsKKwkJaWYgKElOVEVMX0lORk8ocmluZy0+ZGV2KS0+Z2VuID49IDgpIHsKKwkJCWludGVs X3JpbmdfZW1pdChyaW5nLCBNSV9SRVBPUlRfUEVSRl9DT1VOVCB8ICgyPDwwKSk7CisJCQlpbnRl bF9yaW5nX2VtaXQocmluZywgYWRkciB8IE1JX1JFUE9SVF9QRVJGX0NPVU5UX0dHVFQpOworCQkJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsCisJCQkJ aTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ocmVxKSk7CisJCX0gZWxzZSB7CisJCQlpbnRlbF9y aW5nX2VtaXQocmluZywgTUlfUkVQT1JUX1BFUkZfQ09VTlQgfCAoMTw8MCkpOworCQkJaW50ZWxf cmluZ19lbWl0KHJpbmcsIGFkZHIgfCBNSV9SRVBPUlRfUEVSRl9DT1VOVF9HR1RUKTsKKwkJCWlu dGVsX3JpbmdfZW1pdChyaW5nLCBpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhyZXEpKTsKKwkJ CWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKKwkJfQorCQlpbnRlbF9yaW5nX2FkdmFu Y2UocmluZyk7CisJfQorCWk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKGRldl9wcml2LT5wZXJmLmNv bW1hbmRfc3RyZWFtX2J1Zi52bWEsIHJlcSk7Cit9CisKK3N0YXRpYyBpbnQgaTkxNV9vYV9yY3Nf d2FpdF9ncHUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXN0cnVjdCBp OTE1X3BlcmZfY3NfZGF0YV9ub2RlICpsYXN0X2VudHJ5ID0gTlVMTDsKKwlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSA9IE5VTEw7CisJaW50IHJldDsKKworCS8qCisJICogV2FpdCBm b3IgdGhlIGxhc3Qgc2NoZWR1bGVkIHJlcXVlc3QgdG8gY29tcGxldGUuIFRoaXMgd291bGQKKwkg KiBpbXBsaWNpdGx5IHdhaXQgZm9yIHRoZSBwcmlvciBzdWJtaXR0ZWQgcmVxdWVzdHMuIFRoZSBy ZWZjb3VudAorCSAqIG9mIHRoZSByZXF1ZXN0cyBpcyBub3QgZGVjcmVtZW50ZWQgaGVyZS4KKwkg Ki8KKwlzcGluX2xvY2soJmRldl9wcml2LT5wZXJmLm5vZGVfbGlzdF9sb2NrKTsKKworCWlmICgh bGlzdF9lbXB0eSgmZGV2X3ByaXYtPnBlcmYubm9kZV9saXN0KSkgeworCQlsYXN0X2VudHJ5ID0g bGlzdF9sYXN0X2VudHJ5KCZkZXZfcHJpdi0+cGVyZi5ub2RlX2xpc3QsCisJCQlzdHJ1Y3QgaTkx NV9wZXJmX2NzX2RhdGFfbm9kZSwgbGluayk7CisJCXJlcSA9IGxhc3RfZW50cnktPnJlcXVlc3Q7 CisJfQorCXNwaW5fdW5sb2NrKCZkZXZfcHJpdi0+cGVyZi5ub2RlX2xpc3RfbG9jayk7CisKKwlp ZiAoIXJlcSkKKwkJcmV0dXJuIDA7CisKKwlyZXQgPSBfX2k5MTVfd2FpdF9yZXF1ZXN0KHJlcSwg YXRvbWljX3JlYWQoCisJCQkJJmRldl9wcml2LT5ncHVfZXJyb3IucmVzZXRfY291bnRlciksCisJ CQkJdHJ1ZSwgTlVMTCwgTlVMTCk7CisJaWYgKHJldCkgeworCQlEUk1fRVJST1IoImZhaWxlZCB0 byB3YWl0XG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2 b2lkIGk5MTVfb2FfcmNzX2ZyZWVfcmVxdWVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQoreworCXN0cnVjdCBpOTE1X3BlcmZfY3NfZGF0YV9ub2RlICplbnRyeSwgKm5leHQ7 CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUKKwkJKGVudHJ5LCBuZXh0LCAmZGV2X3ByaXYt PnBlcmYubm9kZV9saXN0LCBsaW5rKSB7CisJCWk5MTVfZ2VtX3JlcXVlc3RfdW5yZWZlcmVuY2Vf X3VubG9ja2VkKGVudHJ5LT5yZXF1ZXN0KTsKKworCQlzcGluX2xvY2soJmRldl9wcml2LT5wZXJm Lm5vZGVfbGlzdF9sb2NrKTsKKwkJbGlzdF9kZWwoJmVudHJ5LT5saW5rKTsKKwkJc3Bpbl91bmxv Y2soJmRldl9wcml2LT5wZXJmLm5vZGVfbGlzdF9sb2NrKTsKKwkJa2ZyZWUoZW50cnkpOworCX0K K30KKwogc3RhdGljIGJvb2wgZ2VuOF9vYV9idWZmZXJfaXNfZW1wdHkoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogewogCXUzMiBoZWFkID0gSTkxNV9SRUFEKEdFTjhfT0FIRUFE UFRSKTsKQEAgLTE0MCw3ICszNzYsNyBAQCBzdGF0aWMgYm9vbCBhcHBlbmRfb2Ffc3RhdHVzKHN0 cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAKIHN0YXRpYyBib29sIGFwcGVuZF9vYV9z YW1wbGUoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJCSAgICAgc3RydWN0IGk5 MTVfcGVyZl9yZWFkX3N0YXRlICpyZWFkX3N0YXRlLAotCQkJICAgICBjb25zdCB1OCAqcmVwb3J0 KQorCQkJICAgICBzdHJ1Y3Qgb2Ffc2FtcGxlX2RhdGEgKmRhdGEpCiB7CiAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKIAlpbnQgcmVwb3J0X3Np emUgPSBkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIuZm9ybWF0X3NpemU7CkBAIC0xNTgsNiAr Mzk0LDM3IEBAIHN0YXRpYyBib29sIGFwcGVuZF9vYV9zYW1wbGUoc3RydWN0IGk5MTVfcGVyZl9z dHJlYW0gKnN0cmVhbSwKIAlyZWFkX3N0YXRlLT5idWYgKz0gc2l6ZW9mKGhlYWRlcik7CiAKIAlp ZiAoc2FtcGxlX2ZsYWdzICYgU0FNUExFX09BX1NPVVJDRV9JTkZPKSB7CisJCWlmIChjb3B5X3Rv X3VzZXIocmVhZF9zdGF0ZS0+YnVmLCAmZGF0YS0+c291cmNlLCA0KSkKKwkJCXJldHVybiBmYWxz ZTsKKwkJcmVhZF9zdGF0ZS0+YnVmICs9IDQ7CisJfQorCisJaWYgKHNhbXBsZV9mbGFncyAmIFNB TVBMRV9DVFhfSUQpIHsKKwkJaWYgKGNvcHlfdG9fdXNlcihyZWFkX3N0YXRlLT5idWYsICZkYXRh LT5jdHhfaWQsIDQpKQorCQkJcmV0dXJuIGZhbHNlOworCQlyZWFkX3N0YXRlLT5idWYgKz0gNDsK Kwl9CisKKwlpZiAoc2FtcGxlX2ZsYWdzICYgU0FNUExFX09BX1JFUE9SVCkgeworCQlpZiAoY29w eV90b191c2VyKHJlYWRfc3RhdGUtPmJ1ZiwgZGF0YS0+cmVwb3J0LCByZXBvcnRfc2l6ZSkpCisJ CQlyZXR1cm4gZmFsc2U7CisJCXJlYWRfc3RhdGUtPmJ1ZiArPSByZXBvcnRfc2l6ZTsKKwl9CisK KwlyZWFkX3N0YXRlLT5yZWFkICs9IGhlYWRlci5zaXplOworCisJcmV0dXJuIHRydWU7Cit9CisK K3N0YXRpYyBib29sIGFwcGVuZF9vYV9idWZmZXJfc2FtcGxlKHN0cnVjdCBpOTE1X3BlcmZfc3Ry ZWFtICpzdHJlYW0sCisJCQkJICAgIHN0cnVjdCBpOTE1X3BlcmZfcmVhZF9zdGF0ZSAqcmVhZF9z dGF0ZSwKKwkJCQkgICAgY29uc3QgdTggKnJlcG9ydCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2OworCXUzMiBzYW1wbGVfZmxhZ3MgPSBz dHJlYW0tPnNhbXBsZV9mbGFnczsKKwlzdHJ1Y3Qgb2Ffc2FtcGxlX2RhdGEgZGF0YSA9IHsgMCB9 OworCisJaWYgKHNhbXBsZV9mbGFncyAmIFNBTVBMRV9PQV9TT1VSQ0VfSU5GTykgewogCQllbnVt IGRybV9pOTE1X3BlcmZfb2FfZXZlbnRfc291cmNlIHNvdXJjZTsKIAogCQlpZiAoSU5URUxfSU5G TyhkZXZfcHJpdiktPmdlbiA+PSA4KSB7CkBAIC0xNzMsMTcgKzQ0MCwxNiBAQCBzdGF0aWMgYm9v bCBhcHBlbmRfb2Ffc2FtcGxlKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJCX0g ZWxzZQogCQkJc291cmNlID0gSTkxNV9QRVJGX09BX0VWRU5UX1NPVVJDRV9QRVJJT0RJQzsKIAot CQlpZiAoY29weV90b191c2VyKHJlYWRfc3RhdGUtPmJ1ZiwgJnNvdXJjZSwgNCkpCi0JCQlyZXR1 cm4gZmFsc2U7Ci0JCXJlYWRfc3RhdGUtPmJ1ZiArPSA0OworCQlkYXRhLnNvdXJjZSA9IHNvdXJj ZTsKIAl9Cisjd2FybmluZyAiRklYTUU6IGFwcGVuZF9vYV9idWZmZXJfc2FtcGxlOiByZWFkIGN0 eCBJRCBmcm9tIHJlcG9ydCBhbmQgbWFwIHRoYXQgdG8gYW4gaW50ZWxfY29udGV4dDo6Z2xvYmFs X2lkIgorCWlmIChzYW1wbGVfZmxhZ3MgJiBTQU1QTEVfQ1RYX0lEKQorCQlkYXRhLmN0eF9pZCA9 IDA7CiAKLQlpZiAoc2FtcGxlX2ZsYWdzICYgU0FNUExFX09BX1JFUE9SVCkgewotCQljb3B5X3Rv X3VzZXIocmVhZF9zdGF0ZS0+YnVmLCByZXBvcnQsIHJlcG9ydF9zaXplKTsKLQkJcmVhZF9zdGF0 ZS0+YnVmICs9IHJlcG9ydF9zaXplOwotCX0KKwlpZiAoc2FtcGxlX2ZsYWdzICYgU0FNUExFX09B X1JFUE9SVCkKKwkJZGF0YS5yZXBvcnQgPSByZXBvcnQ7CiAKLQlyZWFkX3N0YXRlLT5yZWFkICs9 IGhlYWRlci5zaXplOworCWFwcGVuZF9vYV9zYW1wbGUoc3RyZWFtLCByZWFkX3N0YXRlLCAmZGF0 YSk7CiAKIAlyZXR1cm4gdHJ1ZTsKIH0KQEAgLTE5MSwxNCArNDU3LDE0IEBAIHN0YXRpYyBib29s IGFwcGVuZF9vYV9zYW1wbGUoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIHN0YXRp YyB1MzIgZ2VuOF9hcHBlbmRfb2FfcmVwb3J0cyhzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3Ry ZWFtLAogCQkJCSAgc3RydWN0IGk5MTVfcGVyZl9yZWFkX3N0YXRlICpyZWFkX3N0YXRlLAogCQkJ CSAgdTMyIGhlYWQsCi0JCQkJICB1MzIgdGFpbCkKKwkJCQkgIHUzMiB0YWlsLCB1MzIgdHMpCiB7 CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsK IAlpbnQgcmVwb3J0X3NpemUgPSBkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIuZm9ybWF0X3Np emU7CiAJdTggKm9hX2J1Zl9iYXNlID0gZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmFkZHI7 CiAJdTMyIG1hc2sgPSAoT0FfQlVGRkVSX1NJWkUgLSAxKTsKIAl1OCAqcmVwb3J0OwotCXUzMiB0 YWtlbjsKKwl1MzIgcmVwb3J0X3RzLCB0YWtlbjsKIAogCWhlYWQgLT0gZGV2X3ByaXYtPnBlcmYu b2Eub2FfYnVmZmVyLmd0dF9vZmZzZXQ7CiAJdGFpbCAtPSBkZXZfcHJpdi0+cGVyZi5vYS5vYV9i dWZmZXIuZ3R0X29mZnNldDsKQEAgLTIyMyw2ICs0ODksMTAgQEAgc3RhdGljIHUzMiBnZW44X2Fw cGVuZF9vYV9yZXBvcnRzKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAKIAkJcmVw b3J0ID0gb2FfYnVmX2Jhc2UgKyAoaGVhZCAmIG1hc2spOwogCisJCXJlcG9ydF90cyA9ICoodTMy ICopKHJlcG9ydCArIDQpOworCQlpZiAocmVwb3J0X3RzID4gdHMpCisJCQlicmVhazsKKwogCQlj dHhfaWQgPSAqKHUzMiAqKShyZXBvcnQgKyAxMik7CiAJCWlmIChpOTE1LmVuYWJsZV9leGVjbGlz dHMpIHsKIAkJCS8qIFhYWDogSnVzdCBrZWVwIHRoZSBsb3dlciAyMCBiaXRzIGZvciBub3cgc2lu Y2UgSSdtCkBAIC0yNDcsMTMgKzUxNywxNiBAQCBzdGF0aWMgdTMyIGdlbjhfYXBwZW5kX29hX3Jl cG9ydHMoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJCSAgICAgKGRldl9wcml2 LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9pZCAhPQogCQkJICAgICAgZGV2X3ByaXYtPnBlcmYub2Eu b2FfYnVmZmVyLmxhc3RfY3R4X2lkKSkpIHsKIAotCQkJCWlmICghYXBwZW5kX29hX3NhbXBsZShz dHJlYW0sIHJlYWRfc3RhdGUsIHJlcG9ydCkpCisJCQkJaWYgKCFhcHBlbmRfb2FfYnVmZmVyX3Nh bXBsZShzdHJlYW0sIHJlYWRfc3RhdGUsCisJCQkJCQkJCXJlcG9ydCkpCiAJCQkJCWJyZWFrOwog CQkJfQogCQl9CiAKLQkJLyogSWYgYXBwZW5kX29hX3NhbXBsZSgpIHJldHVybnMgZmFsc2Ugd2Ug c2hvdWxkbid0IHByb2dyZXNzCi0JCSAqIGhlYWQgc28gd2UgdXBkYXRlIGl0IGFmdGVyd2FyZHMu Li4gKi8KKwkJLyoKKwkJICogSWYgYXBwZW5kX29hX2J1ZmZlcl9zYW1wbGUoKSByZXR1cm5zIGZh bHNlIHdlIHNob3VsZG4ndAorCQkgKiBwcm9ncmVzcyBoZWFkIHNvIHdlIHVwZGF0ZSBpdCBhZnRl cndhcmRzLgorCQkgKi8KIAkJZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmxhc3RfY3R4X2lk ID0gY3R4X2lkOwogCQloZWFkICs9IHJlcG9ydF9zaXplOwogCX0KQEAgLTI2Miw3ICs1MzUsNyBA QCBzdGF0aWMgdTMyIGdlbjhfYXBwZW5kX29hX3JlcG9ydHMoc3RydWN0IGk5MTVfcGVyZl9zdHJl YW0gKnN0cmVhbSwKIH0KIAogc3RhdGljIHZvaWQgZ2VuOF9vYV9yZWFkKHN0cnVjdCBpOTE1X3Bl cmZfc3RyZWFtICpzdHJlYW0sCi0JCQkgc3RydWN0IGk5MTVfcGVyZl9yZWFkX3N0YXRlICpyZWFk X3N0YXRlKQorCQkJIHN0cnVjdCBpOTE1X3BlcmZfcmVhZF9zdGF0ZSAqcmVhZF9zdGF0ZSwgdTMy IHRzKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2 X3ByaXY7CiAJdTMyIG9hc3RhdHVzOwpAQCAtMjkzLDcgKzU2Niw3IEBAIHN0YXRpYyB2b2lkIGdl bjhfb2FfcmVhZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCQlJOTE1X1dSSVRF KEdFTjhfT0FTVEFUVVMsIG9hc3RhdHVzKTsKIAl9CiAKLQloZWFkID0gZ2VuOF9hcHBlbmRfb2Ff cmVwb3J0cyhzdHJlYW0sIHJlYWRfc3RhdGUsIGhlYWQsIHRhaWwpOworCWhlYWQgPSBnZW44X2Fw cGVuZF9vYV9yZXBvcnRzKHN0cmVhbSwgcmVhZF9zdGF0ZSwgaGVhZCwgdGFpbCwgdHMpOwogCiAJ STkxNV9XUklURShHRU44X09BSEVBRFBUUiwgaGVhZCk7CiB9CkBAIC0zMDEsMTQgKzU3NCwxNCBA QCBzdGF0aWMgdm9pZCBnZW44X29hX3JlYWQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVh bSwKIHN0YXRpYyB1MzIgZ2VuN19hcHBlbmRfb2FfcmVwb3J0cyhzdHJ1Y3QgaTkxNV9wZXJmX3N0 cmVhbSAqc3RyZWFtLAogCQkJCSAgc3RydWN0IGk5MTVfcGVyZl9yZWFkX3N0YXRlICpyZWFkX3N0 YXRlLAogCQkJCSAgdTMyIGhlYWQsCi0JCQkJICB1MzIgdGFpbCkKKwkJCQkgIHUzMiB0YWlsLCB1 MzIgdHMpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5k ZXZfcHJpdjsKIAlpbnQgcmVwb3J0X3NpemUgPSBkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIu Zm9ybWF0X3NpemU7CiAJdTggKm9hX2J1Zl9iYXNlID0gZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVm ZmVyLmFkZHI7CiAJdTMyIG1hc2sgPSAoT0FfQlVGRkVSX1NJWkUgLSAxKTsKIAl1OCAqcmVwb3J0 OwotCXUzMiB0YWtlbjsKKwl1MzIgcmVwb3J0X3RzLCB0YWtlbjsKIAogCWhlYWQgLT0gZGV2X3By aXYtPnBlcmYub2Eub2FfYnVmZmVyLmd0dF9vZmZzZXQ7CiAJdGFpbCAtPSBkZXZfcHJpdi0+cGVy Zi5vYS5vYV9idWZmZXIuZ3R0X29mZnNldDsKQEAgLTMyNiwxMyArNTk5LDIwIEBAIHN0YXRpYyB1 MzIgZ2VuN19hcHBlbmRfb2FfcmVwb3J0cyhzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFt LAogCiAJCXJlcG9ydCA9IG9hX2J1Zl9iYXNlICsgKGhlYWQgJiBtYXNrKTsKIAorCQlyZXBvcnRf dHMgPSAqKHUzMiAqKShyZXBvcnQgKyA0KTsKKwkJaWYgKHJlcG9ydF90cyA+IHRzKQorCQkJYnJl YWs7CisKIAkJaWYgKGRldl9wcml2LT5wZXJmLm9hLmV4Y2x1c2l2ZV9zdHJlYW0tPmVuYWJsZWQp IHsKLQkJCWlmICghYXBwZW5kX29hX3NhbXBsZShzdHJlYW0sIHJlYWRfc3RhdGUsIHJlcG9ydCkp CisJCQlpZiAoIWFwcGVuZF9vYV9idWZmZXJfc2FtcGxlKHN0cmVhbSwgcmVhZF9zdGF0ZSwKKwkJ CQkJCQlyZXBvcnQpKQogCQkJCWJyZWFrOwogCQl9CiAKLQkJLyogSWYgYXBwZW5kX29hX3NhbXBs ZSgpIHJldHVybnMgZmFsc2Ugd2Ugc2hvdWxkbid0IHByb2dyZXNzCi0JCSAqIGhlYWQgc28gd2Ug dXBkYXRlIGl0IGFmdGVyd2FyZHMuLi4gKi8KKwkJLyoKKwkJICogSWYgYXBwZW5kX29hX2J1ZmZl cl9zYW1wbGUoKSByZXR1cm5zIGZhbHNlIHdlIHNob3VsZG4ndAorCQkgKiBwcm9ncmVzcyBoZWFk IHNvIHdlIHVwZGF0ZSBpdCBhZnRlcndhcmRzLgorCQkgKi8KIAkJaGVhZCArPSByZXBvcnRfc2l6 ZTsKIAl9CiAKQEAgLTM0MCw3ICs2MjAsNyBAQCBzdGF0aWMgdTMyIGdlbjdfYXBwZW5kX29hX3Jl cG9ydHMoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIH0KIAogc3RhdGljIHZvaWQg Z2VuN19vYV9yZWFkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCi0JCQkgc3RydWN0 IGk5MTVfcGVyZl9yZWFkX3N0YXRlICpyZWFkX3N0YXRlKQorCQkJIHN0cnVjdCBpOTE1X3BlcmZf cmVhZF9zdGF0ZSAqcmVhZF9zdGF0ZSwgdTMyIHRzKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7CiAJdTMyIG9hc3RhdHVzMjsKQEAgLTM3 NCwyMCArNjU0LDgyIEBAIHN0YXRpYyB2b2lkIGdlbjdfb2FfcmVhZChzdHJ1Y3QgaTkxNV9wZXJm X3N0cmVhbSAqc3RyZWFtLAogCQlJOTE1X1dSSVRFKEdFTjdfT0FTVEFUVVMxLCBvYXN0YXR1czEp OwogCX0KIAotCWhlYWQgPSBnZW43X2FwcGVuZF9vYV9yZXBvcnRzKHN0cmVhbSwgcmVhZF9zdGF0 ZSwgaGVhZCwgdGFpbCk7CisJaGVhZCA9IGdlbjdfYXBwZW5kX29hX3JlcG9ydHMoc3RyZWFtLCBy ZWFkX3N0YXRlLCBoZWFkLCB0YWlsLCB0cyk7CiAKIAlJOTE1X1dSSVRFKEdFTjdfT0FTVEFUVVMy LCAoaGVhZCAmIEdFTjdfT0FTVEFUVVMyX0hFQURfTUFTSykgfAogCQkJCSAgICBPQV9NRU1fU0VM RUNUX0dHVFQpOwogfQogCi1zdGF0aWMgYm9vbCBpOTE1X29hX2Nhbl9yZWFkKHN0cnVjdCBpOTE1 X3BlcmZfc3RyZWFtICpzdHJlYW0pCitzdGF0aWMgYm9vbCBhcHBlbmRfb2FfcmNzX3NhbXBsZShz dHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAorCQkJCSBzdHJ1Y3QgaTkxNV9wZXJmX3Jl YWRfc3RhdGUgKnJlYWRfc3RhdGUsCisJCQkJIHN0cnVjdCBpOTE1X3BlcmZfY3NfZGF0YV9ub2Rl ICpub2RlKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ ZGV2X3ByaXY7CisJc3RydWN0IG9hX3NhbXBsZV9kYXRhIGRhdGEgPSB7IDAgfTsKKwljb25zdCB1 OCAqcmVwb3J0ID0gZGV2X3ByaXYtPnBlcmYuY29tbWFuZF9zdHJlYW1fYnVmLmFkZHIgKworCQkJ CW5vZGUtPm9mZnNldDsKKwl1MzIgc2FtcGxlX2ZsYWdzID0gc3RyZWFtLT5zYW1wbGVfZmxhZ3M7 CisJdTMyIHJlcG9ydF90czsKKworCS8qCisJICogRm9yd2FyZCB0aGUgcGVyaW9kaWMgT0Egc2Ft cGxlcyB3aGljaCBoYXZlIHRoZSB0aW1lc3RhbXAgbG93ZXIKKwkgKiB0aGFuIHRpbWVzdGFtcCBv ZiB0aGlzIHNhbXBsZSwgYmVmb3JlIGZvcndhcmRpbmcgdGhpcyBzYW1wbGUuCisJICogVGhpcyBl bnN1cmVzIHNhbXBsZXMgcmVhZCBieSB1c2VyIGFyZSBvcmRlciBhY2MuIHRvIHRoZWlyIHRpbWVz dGFtcHMKKwkgKi8KKwlyZXBvcnRfdHMgPSAqKHUzMiAqKShyZXBvcnQgKyA0KTsKKwlkZXZfcHJp di0+cGVyZi5vYS5vcHMucmVhZChzdHJlYW0sIHJlYWRfc3RhdGUsIHJlcG9ydF90cyk7CisKKwlp ZiAoc2FtcGxlX2ZsYWdzICYgU0FNUExFX09BX1NPVVJDRV9JTkZPKQorCQlkYXRhLnNvdXJjZSA9 IEk5MTVfUEVSRl9PQV9FVkVOVF9TT1VSQ0VfUkNTOworCisJaWYgKHNhbXBsZV9mbGFncyAmIFNB TVBMRV9DVFhfSUQpCisJCWRhdGEuY3R4X2lkID0gbm9kZS0+Y3R4X2lkOworCisJaWYgKHNhbXBs ZV9mbGFncyAmIFNBTVBMRV9PQV9SRVBPUlQpCisJCWRhdGEucmVwb3J0ID0gcmVwb3J0OworCisJ YXBwZW5kX29hX3NhbXBsZShzdHJlYW0sIHJlYWRfc3RhdGUsICZkYXRhKTsKKworCXJldHVybiB0 cnVlOworfQorCitzdGF0aWMgdm9pZCBvYV9yY3NfYXBwZW5kX3JlcG9ydHMoc3RydWN0IGk5MTVf cGVyZl9zdHJlYW0gKnN0cmVhbSwKKwkJCQkgIHN0cnVjdCBpOTE1X3BlcmZfcmVhZF9zdGF0ZSAq cmVhZF9zdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzdHJl YW0tPmRldl9wcml2OworCXN0cnVjdCBpOTE1X3BlcmZfY3NfZGF0YV9ub2RlICplbnRyeSwgKm5l eHQ7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZW50cnksIG5leHQsCisJCQkJICZkZXZf cHJpdi0+cGVyZi5ub2RlX2xpc3QsIGxpbmspIHsKKwkJaWYgKCFpOTE1X2dlbV9yZXF1ZXN0X2Nv bXBsZXRlZChlbnRyeS0+cmVxdWVzdCwgdHJ1ZSkpCisJCQlicmVhazsKKworCQlpZiAoIWFwcGVu ZF9vYV9yY3Nfc2FtcGxlKHN0cmVhbSwgcmVhZF9zdGF0ZSwgZW50cnkpKQorCQkJYnJlYWs7CisK KwkJc3Bpbl9sb2NrKCZkZXZfcHJpdi0+cGVyZi5ub2RlX2xpc3RfbG9jayk7CisJCWxpc3RfZGVs KCZlbnRyeS0+bGluayk7CisJCXNwaW5fdW5sb2NrKCZkZXZfcHJpdi0+cGVyZi5ub2RlX2xpc3Rf bG9jayk7CisKKwkJaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZV9fdW5sb2NrZWQoZW50cnkt PnJlcXVlc3QpOworCQlrZnJlZShlbnRyeSk7CisJfQorCisJLyogRmx1c2ggYW55IHJlbWFpbmlu ZyBwZXJpb2RpYyByZXBvcnRzICovCisJZGV2X3ByaXYtPnBlcmYub2Eub3BzLnJlYWQoc3RyZWFt LCByZWFkX3N0YXRlLCBVMzJfTUFYKTsKK30KKworc3RhdGljIGJvb2wgY29tbWFuZF9zdHJlYW1f YnVmX2lzX2VtcHR5KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiB7CiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKIAotCXJldHVy biAhZGV2X3ByaXYtPnBlcmYub2Eub3BzLm9hX2J1ZmZlcl9pc19lbXB0eShkZXZfcHJpdik7CisJ aWYgKHN0cmVhbS0+Y3NfbW9kZSkKKwkJcmV0dXJuIGxpc3RfZW1wdHkoJmRldl9wcml2LT5wZXJm Lm5vZGVfbGlzdCk7CisJZWxzZQorCQlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGludCBpOTE1 X29hX3dhaXRfdW5sb2NrZWQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkKK3N0YXRp YyBib29sIHN0cmVhbV9oYXZlX2RhdGFfX3VubG9ja2VkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFt ICpzdHJlYW0pCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFt LT5kZXZfcHJpdjsKIApAQCAtMzk3LDggKzczOSwyOSBAQCBzdGF0aWMgaW50IGk5MTVfb2Ffd2Fp dF91bmxvY2tlZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogCSAqIGNhbid0IGJl IGRlc3Ryb3llZCB1bnRpbCBjb21wbGV0aW9uIChzdWNoIGFzIGEgcmVhZCgpKSB0aGF0IGVuc3Vy ZXMKIAkgKiB0aGUgZGV2aWNlICsgT0EgYnVmZmVyIGNhbid0IGRpc2FwcGVhcgogCSAqLworCXJl dHVybiAhKGRldl9wcml2LT5wZXJmLm9hLm9wcy5vYV9idWZmZXJfaXNfZW1wdHkoZGV2X3ByaXYp ICYmCisJCSBjb21tYW5kX3N0cmVhbV9idWZfaXNfZW1wdHkoc3RyZWFtKSk7Cit9CisKK3N0YXRp YyBib29sIGk5MTVfb2FfY2FuX3JlYWQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkK K3sKKworCXJldHVybiBzdHJlYW1faGF2ZV9kYXRhX191bmxvY2tlZChzdHJlYW0pOworfQorCitz dGF0aWMgaW50IGk5MTVfb2Ffd2FpdF91bmxvY2tlZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAq c3RyZWFtKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ ZGV2X3ByaXY7CisJaW50IHJldDsKKworCWlmIChzdHJlYW0tPmNzX21vZGUpIHsKKwkJcmV0ID0g aTkxNV9vYV9yY3Nfd2FpdF9ncHUoZGV2X3ByaXYpOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJl dDsKKwl9CisKIAlyZXR1cm4gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGRldl9wcml2LT5wZXJm Lm9hLnBvbGxfd3EsCi0JCQkJCSFkZXZfcHJpdi0+cGVyZi5vYS5vcHMub2FfYnVmZmVyX2lzX2Vt cHR5KGRldl9wcml2KSk7CisJCQkJCXN0cmVhbV9oYXZlX2RhdGFfX3VubG9ja2VkKHN0cmVhbSkp OwogfQogCiBzdGF0aWMgdm9pZCBpOTE1X29hX3BvbGxfd2FpdChzdHJ1Y3QgaTkxNV9wZXJmX3N0 cmVhbSAqc3RyZWFtLApAQCAtNDE1LDcgKzc3OCwyNiBAQCBzdGF0aWMgdm9pZCBpOTE1X29hX3Jl YWQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2OwogCi0JZGV2X3ByaXYtPnBlcmYu b2Eub3BzLnJlYWQoc3RyZWFtLCByZWFkX3N0YXRlKTsKKwlpZiAoc3RyZWFtLT5jc19tb2RlKQor CQlvYV9yY3NfYXBwZW5kX3JlcG9ydHMoc3RyZWFtLCByZWFkX3N0YXRlKTsKKwllbHNlCisJCWRl dl9wcml2LT5wZXJmLm9hLm9wcy5yZWFkKHN0cmVhbSwgcmVhZF9zdGF0ZSwgVTMyX01BWCk7Cit9 CisKK3N0YXRpYyB2b2lkCitmcmVlX2NvbW1hbmRfc3RyZWFtX2J1ZihzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKK3sKKwltdXRleF9sb2NrKCZpOTE1LT5kZXYtPnN0cnVjdF9tdXRleCk7 CisKKwl2dW5tYXAoaTkxNS0+cGVyZi5jb21tYW5kX3N0cmVhbV9idWYuYWRkcik7CisJaTkxNV9n ZW1fb2JqZWN0X2dndHRfdW5waW4oaTkxNS0+cGVyZi5jb21tYW5kX3N0cmVhbV9idWYub2JqKTsK Kwlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmaTkxNS0+cGVyZi5jb21tYW5kX3N0cmVhbV9i dWYub2JqLT5iYXNlKTsKKworCWk5MTUtPnBlcmYuY29tbWFuZF9zdHJlYW1fYnVmLm9iaiA9IE5V TEw7CisJaTkxNS0+cGVyZi5jb21tYW5kX3N0cmVhbV9idWYudm1hID0gTlVMTDsKKwlpOTE1LT5w ZXJmLmNvbW1hbmRfc3RyZWFtX2J1Zi5hZGRyID0gTlVMTDsKKworCW11dGV4X3VubG9jaygmaTkx NS0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNDQwLDEyICs4MjIs MTcgQEAgc3RhdGljIHZvaWQgaTkxNV9vYV9zdHJlYW1fZGVzdHJveShzdHJ1Y3QgaTkxNV9wZXJm X3N0cmVhbSAqc3RyZWFtKQogCiAJQlVHX09OKHN0cmVhbSAhPSBkZXZfcHJpdi0+cGVyZi5vYS5l eGNsdXNpdmVfc3RyZWFtKTsKIAotCWRldl9wcml2LT5wZXJmLm9hLm9wcy5kaXNhYmxlX21ldHJp Y19zZXQoZGV2X3ByaXYpOworCWlmIChzdHJlYW0tPmNzX21vZGUpCisJCWZyZWVfY29tbWFuZF9z dHJlYW1fYnVmKGRldl9wcml2KTsKIAotCWZyZWVfb2FfYnVmZmVyKGRldl9wcml2KTsKKwlpZiAo ZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLm9iaikgeworCQlkZXZfcHJpdi0+cGVyZi5vYS5v cHMuZGlzYWJsZV9tZXRyaWNfc2V0KGRldl9wcml2KTsKIAotCWludGVsX3VuY29yZV9mb3JjZXdh a2VfcHV0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKLQlpbnRlbF9ydW50aW1lX3BtX3B1dChk ZXZfcHJpdik7CisJCWZyZWVfb2FfYnVmZmVyKGRldl9wcml2KTsKKworCQlpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7CisJCWludGVsX3J1bnRpbWVf cG1fcHV0KGRldl9wcml2KTsKKwl9CiAKIAlkZXZfcHJpdi0+cGVyZi5vYS5leGNsdXNpdmVfc3Ry ZWFtID0gTlVMTDsKIH0KQEAgLTUwOSwxNiArODk2LDE3IEBAIHN0YXRpYyB2b2lkIGdlbjhfaW5p dF9vYV9idWZmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkgICBkZXZf cHJpdi0+cGVyZi5vYS5vYV9idWZmZXIuZ3R0X29mZnNldCk7CiB9CiAKLXN0YXRpYyBpbnQgYWxs b2Nfb2FfYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3N0YXRpYyBp bnQgYWxsb2Nfb2JqKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqKm9iaikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqYm87CiAJaW50IHJldDsKIAotCUJVR19PTihkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZm ZXIub2JqKTsKKwlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CiAKIAlyZXQgPSBpOTE1 X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZShkZXZfcHJpdi0+ZGV2KTsKIAlpZiAocmV0KQotCQly ZXR1cm4gcmV0OworCQlnb3RvIG91dDsKIAogCWJvID0gaTkxNV9nZW1fYWxsb2Nfb2JqZWN0KGRl dl9wcml2LT5kZXYsIE9BX0JVRkZFUl9TSVpFKTsKIAlpZiAoYm8gPT0gTlVMTCkgewpAQCAtNTI2 LDggKzkxNCw2IEBAIHN0YXRpYyBpbnQgYWxsb2Nfb2FfYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKIAkJcmV0ID0gLUVOT01FTTsKIAkJZ290byB1bmxvY2s7CiAJfQot CWRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5vYmogPSBibzsKLQogCXJldCA9IGk5MTVfZ2Vt X29iamVjdF9zZXRfY2FjaGVfbGV2ZWwoYm8sIEk5MTVfQ0FDSEVfTExDKTsKIAlpZiAocmV0KQog CQlnb3RvIGVycl91bnJlZjsKQEAgLTUzNyw2ICs5MjMsMzEgQEAgc3RhdGljIGludCBhbGxvY19v YV9idWZmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWlmIChyZXQpCiAJ CWdvdG8gZXJyX3VucmVmOwogCisJKm9iaiA9IGJvOworCWdvdG8gdW5sb2NrOworCitlcnJfdW5y ZWY6CisJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJmJvLT5iYXNlKTsKK3VubG9jazoKKwlt dXRleF91bmxvY2soJmRldl9wcml2LT5kZXYtPnN0cnVjdF9tdXRleCk7CitvdXQ6CisJaW50ZWxf cnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQg YWxsb2Nfb2FfYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqYm87CisJaW50IHJldDsKKworCUJVR19PTihkZXZf cHJpdi0+cGVyZi5vYS5vYV9idWZmZXIub2JqKTsKKworCXJldCA9IGFsbG9jX29iaihkZXZfcHJp diwgJmJvKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJZGV2X3ByaXYtPnBlcmYub2Eu b2FfYnVmZmVyLm9iaiA9IGJvOworCiAJZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmd0dF9v ZmZzZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoYm8pOwogCWRldl9wcml2LT5wZXJmLm9h Lm9hX2J1ZmZlci5hZGRyID0gdm1hcF9vYV9idWZmZXIoYm8pOwogCkBAIC01NDYsMTQgKzk1Nywz MiBAQCBzdGF0aWMgaW50IGFsbG9jX29hX2J1ZmZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiAJCQkgZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmd0dF9vZmZzZXQsCiAJ CQkgZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmFkZHIpOwogCi0JZ290byB1bmxvY2s7CisJ cmV0dXJuIDA7Cit9CiAKLWVycl91bnJlZjoKLQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgm Ym8tPmJhc2UpOworc3RhdGljIGludCBhbGxvY19jb21tYW5kX3N0cmVhbV9idWYoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpibzsKKwlpbnQgcmV0OwogCi11bmxvY2s6Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZGV2 LT5zdHJ1Y3RfbXV0ZXgpOwotCXJldHVybiByZXQ7CisJQlVHX09OKGRldl9wcml2LT5wZXJmLmNv bW1hbmRfc3RyZWFtX2J1Zi5vYmopOworCisJcmV0ID0gYWxsb2Nfb2JqKGRldl9wcml2LCAmYm8p OworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlkZXZfcHJpdi0+cGVyZi5jb21tYW5kX3N0 cmVhbV9idWYub2JqID0gYm87CisJZGV2X3ByaXYtPnBlcmYuY29tbWFuZF9zdHJlYW1fYnVmLnZt YSA9IGk5MTVfZ2VtX29ial90b19nZ3R0KGJvKTsKKwlkZXZfcHJpdi0+cGVyZi5jb21tYW5kX3N0 cmVhbV9idWYuYWRkciA9IHZtYXBfb2FfYnVmZmVyKGJvKTsKKwlJTklUX0xJU1RfSEVBRCgmZGV2 X3ByaXYtPnBlcmYubm9kZV9saXN0KTsKKworCURSTV9ERUJVR19EUklWRVIoCisJCSJjb21tYW5k IHN0cmVhbSBidWYgaW5pdGlhbGl6ZWQsIGd0dCBvZmZzZXQgPSAweCV4LCB2YWRkciA9ICVwIiwK KwkJICh1bnNpZ25lZCBpbnQpCisJCSBkZXZfcHJpdi0+cGVyZi5jb21tYW5kX3N0cmVhbV9idWYu dm1hLT5ub2RlLnN0YXJ0LAorCQkgZGV2X3ByaXYtPnBlcmYuY29tbWFuZF9zdHJlYW1fYnVmLmFk ZHIpOworCisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB2b2lkIGNvbmZpZ19vYV9yZWdzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKQEAgLTgzNiw2ICsxMjY1LDkgQEAgc3RhdGlj IHZvaWQgaTkxNV9vYV9zdHJlYW1fZW5hYmxlKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJl YW0pCiAKIAlkZXZfcHJpdi0+cGVyZi5vYS5vcHMub2FfZW5hYmxlKGRldl9wcml2KTsKIAorCWlm IChzdHJlYW0tPmNzX21vZGUpCisJCXN0cmVhbS0+Y29tbWFuZF9zdHJlYW1faG9vayA9IGk5MTVf cGVyZl9jb21tYW5kX3N0cmVhbV9ob29rX29hOworCiAJaWYgKGRldl9wcml2LT5wZXJmLm9hLnBl cmlvZGljKQogCQlocnRpbWVyX3N0YXJ0KCZkZXZfcHJpdi0+cGVyZi5vYS5wb2xsX2NoZWNrX3Rp bWVyLAogCQkJICAgICAgbnNfdG9fa3RpbWUoUE9MTF9QRVJJT0QpLApAQCAtODU2LDEwICsxMjg4 LDE2IEBAIHN0YXRpYyB2b2lkIGk5MTVfb2Ffc3RyZWFtX2Rpc2FibGUoc3RydWN0IGk5MTVfcGVy Zl9zdHJlYW0gKnN0cmVhbSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBzdHJlYW0tPmRldl9wcml2OwogCi0JZGV2X3ByaXYtPnBlcmYub2Eub3BzLm9hX2Rpc2FibGUo ZGV2X3ByaXYpOwotCiAJaWYgKGRldl9wcml2LT5wZXJmLm9hLnBlcmlvZGljKQogCQlocnRpbWVy X2NhbmNlbCgmZGV2X3ByaXYtPnBlcmYub2EucG9sbF9jaGVja190aW1lcik7CisKKwlpZiAoc3Ry ZWFtLT5jc19tb2RlKSB7CisJCXN0cmVhbS0+Y29tbWFuZF9zdHJlYW1faG9vayA9IE5VTEw7CisJ CWk5MTVfb2FfcmNzX3dhaXRfZ3B1KGRldl9wcml2KTsKKwkJaTkxNV9vYV9yY3NfZnJlZV9yZXF1 ZXN0cyhkZXZfcHJpdik7CisJfQorCisJZGV2X3ByaXYtPnBlcmYub2Eub3BzLm9hX2Rpc2FibGUo ZGV2X3ByaXYpOwogfQogCiBzdGF0aWMgaW50IGk5MTVfb2Ffc3RyZWFtX2luaXQoc3RydWN0IGk5 MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKQEAgLTg2NywxNCArMTMwNSwxMSBAQCBzdGF0aWMgaW50 IGk5MTVfb2Ffc3RyZWFtX2luaXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJ CSAgICAgICBzdHJ1Y3QgcGVyZl9vcGVuX3Byb3BlcnRpZXMgKnByb3BzKQogewogCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7CisJYm9vbCByZXF1 aXJlX29hX3VuaXQgPSBwcm9wcy0+c2FtcGxlX2ZsYWdzICYgKFNBTVBMRV9PQV9SRVBPUlQgfAor CQkJCQkJICAgICAgU0FNUExFX09BX1NPVVJDRV9JTkZPKTsKIAlpbnQgZm9ybWF0X3NpemU7CiAJ aW50IHJldDsKIAotCWlmICghZGV2X3ByaXYtPnBlcmYub2Eub3BzLmluaXRfb2FfYnVmZmVyKSB7 Ci0JCURSTV9FUlJPUigiT0EgdW5pdCBub3Qgc3VwcG9ydGVkXG4iKTsKLQkJcmV0dXJuIC1FTk9E RVY7Ci0JfQotCiAJLyogVG8gYXZvaWQgdGhlIGNvbXBsZXhpdHkgb2YgaGF2aW5nIHRvIGFjY3Vy YXRlbHkgZmlsdGVyCiAJICogY291bnRlciByZXBvcnRzIGFuZCBtYXJzaGFsIHRvIHRoZSBhcHBy b3ByaWF0ZSBjbGllbnQKIAkgKiB3ZSBjdXJyZW50bHkgb25seSBhbGxvdyBleGNsdXNpdmUgYWNj ZXNzICovCkBAIC04ODMsNjggKzEzMTgsMTIwIEBAIHN0YXRpYyBpbnQgaTkxNV9vYV9zdHJlYW1f aW5pdChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCQlyZXR1cm4gLUVCVVNZOwog CX0KIAotCWlmICghcHJvcHMtPm1ldHJpY3Nfc2V0KSB7Ci0JCURSTV9FUlJPUigiT0EgbWV0cmlj IHNldCBub3Qgc3BlY2lmaWVkXG4iKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCi0JaWYgKCFw cm9wcy0+b2FfZm9ybWF0KSB7Ci0JCURSTV9FUlJPUigiT0EgcmVwb3J0IGZvcm1hdCBub3Qgc3Bl Y2lmaWVkXG4iKTsKKwkvKiBDdHggSWQgY2FuIGJlIHNhbXBsZWQgaW4gSFNXIG9ubHkgdGhyb3Vn aCBjb21tYW5kIHN0cmVhbWVyIG1vZGUgKi8KKwlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdi0+ZGV2 KSAmJgorCSAgICAocHJvcHMtPnNhbXBsZV9mbGFncyAmIFNBTVBMRV9DVFhfSUQpICYmICFwcm9w cy0+Y3NfbW9kZSkgeworCQlEUk1fRVJST1IoCisJCQkiQ29udGV4dCBJRCBzYW1wbGluZyBvbmx5 IHN1cHBvcnRlZCB2aWEgY29tbWFuZCBzdHJlYW0gb24gSGFzd2VsbCIpOwogCQlyZXR1cm4gLUVJ TlZBTDsKIAl9CiAKIAlzdHJlYW0tPnNhbXBsZV9zaXplID0gc2l6ZW9mKHN0cnVjdCBkcm1faTkx NV9wZXJmX3JlY29yZF9oZWFkZXIpOwogCi0JZm9ybWF0X3NpemUgPSBkZXZfcHJpdi0+cGVyZi5v YS5vYV9mb3JtYXRzW3Byb3BzLT5vYV9mb3JtYXRdLnNpemU7CisJaWYgKHJlcXVpcmVfb2FfdW5p dCkgeworCQlpZiAoIWRldl9wcml2LT5wZXJmLm9hLm9wcy5pbml0X29hX2J1ZmZlcikgeworCQkJ RFJNX0VSUk9SKCJPQSB1bml0IG5vdCBzdXBwb3J0ZWRcbiIpOworCQkJcmV0dXJuIC1FTk9ERVY7 CisJCX0KIAotCWlmIChwcm9wcy0+c2FtcGxlX2ZsYWdzICYgU0FNUExFX09BX1JFUE9SVCkgewot CQlzdHJlYW0tPnNhbXBsZV9mbGFncyB8PSBTQU1QTEVfT0FfUkVQT1JUOwotCQlzdHJlYW0tPnNh bXBsZV9zaXplICs9IGZvcm1hdF9zaXplOwotCX0KKwkJaWYgKCFwcm9wcy0+bWV0cmljc19zZXQp IHsKKwkJCURSTV9FUlJPUigiT0EgbWV0cmljIHNldCBub3Qgc3BlY2lmaWVkXG4iKTsKKwkJCXJl dHVybiAtRUlOVkFMOworCQl9CiAKLQlpZiAocHJvcHMtPnNhbXBsZV9mbGFncyAmIFNBTVBMRV9P QV9TT1VSQ0VfSU5GTykgewotCQlzdHJlYW0tPnNhbXBsZV9mbGFncyB8PSBTQU1QTEVfT0FfU09V UkNFX0lORk87Ci0JCXN0cmVhbS0+c2FtcGxlX3NpemUgKz0gNDsKLQl9CisJCWlmIChwcm9wcy0+ Y3NfbW9kZSAgJiYgKHByb3BzLT5yaW5nX2lkICE9IFJDUykpIHsKKwkJCURSTV9FUlJPUigKKwkJ CQkiQ29tbWFuZCBzdHJlYW0gT0EgbWV0cmljcyBvbmx5IGF2YWlsYWJsZSB2aWEgUmVuZGVyIENT XG4iKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJCXN0cmVhbS0+cmluZ19pZCA9IFJDUzsK IAotCWRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5mb3JtYXRfc2l6ZSA9IGZvcm1hdF9zaXpl OwotCUJVR19PTihkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIuZm9ybWF0X3NpemUgPT0gMCk7 CisJCWlmICghcHJvcHMtPm9hX2Zvcm1hdCkgeworCQkJRFJNX0VSUk9SKCJPQSByZXBvcnQgZm9y bWF0IG5vdCBzcGVjaWZpZWRcbiIpOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KIAotCWRldl9w cml2LT5wZXJmLm9hLm9hX2J1ZmZlci5mb3JtYXQgPQotCQlkZXZfcHJpdi0+cGVyZi5vYS5vYV9m b3JtYXRzW3Byb3BzLT5vYV9mb3JtYXRdLmZvcm1hdDsKKwkJZm9ybWF0X3NpemUgPQorCQkJZGV2 X3ByaXYtPnBlcmYub2Eub2FfZm9ybWF0c1twcm9wcy0+b2FfZm9ybWF0XS5zaXplOwogCi0JZGV2 X3ByaXYtPnBlcmYub2EubWV0cmljc19zZXQgPSBwcm9wcy0+bWV0cmljc19zZXQ7CisJCWlmIChw cm9wcy0+c2FtcGxlX2ZsYWdzICYgU0FNUExFX09BX1JFUE9SVCkgeworCQkJc3RyZWFtLT5zYW1w bGVfZmxhZ3MgfD0gU0FNUExFX09BX1JFUE9SVDsKKwkJCXN0cmVhbS0+c2FtcGxlX3NpemUgKz0g Zm9ybWF0X3NpemU7CisJCX0KIAotCWRldl9wcml2LT5wZXJmLm9hLnBlcmlvZGljID0gcHJvcHMt Pm9hX3BlcmlvZGljOwotCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5wZXJpb2RpYykKLQkJZGV2X3By aXYtPnBlcmYub2EucGVyaW9kX2V4cG9uZW50ID0gcHJvcHMtPm9hX3BlcmlvZF9leHBvbmVudDsK KwkJaWYgKHByb3BzLT5zYW1wbGVfZmxhZ3MgJiBTQU1QTEVfT0FfU09VUkNFX0lORk8pIHsKKwkJ CXN0cmVhbS0+c2FtcGxlX2ZsYWdzIHw9IFNBTVBMRV9PQV9TT1VSQ0VfSU5GTzsKKwkJCXN0cmVh bS0+c2FtcGxlX3NpemUgKz0gNDsKKwkJfQogCi0JaWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0cyAm JiBzdHJlYW0tPmN0eCkKLQkJZGV2X3ByaXYtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lkID0KLQkJ CWludGVsX2V4ZWNsaXN0c19jdHhfaWQoc3RyZWFtLT5jdHgpOworCQlkZXZfcHJpdi0+cGVyZi5v YS5vYV9idWZmZXIuZm9ybWF0X3NpemUgPSBmb3JtYXRfc2l6ZTsKKwkJQlVHX09OKGRldl9wcml2 LT5wZXJmLm9hLm9hX2J1ZmZlci5mb3JtYXRfc2l6ZSA9PSAwKTsKIAotCXJldCA9IGFsbG9jX29h X2J1ZmZlcihkZXZfcHJpdik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwkJZGV2X3ByaXYt PnBlcmYub2Eub2FfYnVmZmVyLmZvcm1hdCA9CisJCQlkZXZfcHJpdi0+cGVyZi5vYS5vYV9mb3Jt YXRzW3Byb3BzLT5vYV9mb3JtYXRdLmZvcm1hdDsKIAotCWRldl9wcml2LT5wZXJmLm9hLmV4Y2x1 c2l2ZV9zdHJlYW0gPSBzdHJlYW07CisJCWRldl9wcml2LT5wZXJmLm9hLm1ldHJpY3Nfc2V0ID0g cHJvcHMtPm1ldHJpY3Nfc2V0OwogCi0JLyogUFJNIC0gb2JzZXJ2YWJpbGl0eSBwZXJmb3JtYW5j ZSBjb3VudGVyczoKLQkgKgotCSAqICAgT0FDT05UUk9MLCBwZXJmb3JtYW5jZSBjb3VudGVyIGVu YWJsZSwgbm90ZToKLQkgKgotCSAqICAgIldoZW4gdGhpcyBiaXQgaXMgc2V0LCBpbiBvcmRlciB0 byBoYXZlIGNvaGVyZW50IGNvdW50cywKLQkgKiAgIFJDNiBwb3dlciBzdGF0ZSBhbmQgdHJ1bmsg Y2xvY2sgZ2F0aW5nIG11c3QgYmUgZGlzYWJsZWQuCi0JICogICBUaGlzIGNhbiBiZSBhY2hpZXZl ZCBieSBwcm9ncmFtbWluZyBNTUlPIHJlZ2lzdGVycyBhcwotCSAqICAgMHhBMDk0PTAgYW5kIDB4 QTA5MFszMV09MSIKLQkgKgotCSAqICAgSW4gb3VyIGNhc2Ugd2UgYXJlIGV4cGVjdGVkIHRoYXQg dGFraW5nIHBtICsgRk9SQ0VXQUtFCi0JICogICByZWZlcmVuY2VzIHdpbGwgZWZmZWN0aXZlbHkg ZGlzYWJsZSBSQzYuCi0JICovCi0JaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwotCWlu dGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKKwkJZGV2 X3ByaXYtPnBlcmYub2EucGVyaW9kaWMgPSBwcm9wcy0+b2FfcGVyaW9kaWM7CisJCWlmIChkZXZf cHJpdi0+cGVyZi5vYS5wZXJpb2RpYykKKwkJCWRldl9wcml2LT5wZXJmLm9hLnBlcmlvZF9leHBv bmVudCA9CisJCQkJCXByb3BzLT5vYV9wZXJpb2RfZXhwb25lbnQ7CisKKwkJaWYgKGk5MTUuZW5h YmxlX2V4ZWNsaXN0cyAmJiBzdHJlYW0tPmN0eCkKKwkJCWRldl9wcml2LT5wZXJmLm9hLnNwZWNp ZmljX2N0eF9pZCA9CisJCQkJaW50ZWxfZXhlY2xpc3RzX2N0eF9pZChzdHJlYW0tPmN0eCk7CiAK LQlkZXZfcHJpdi0+cGVyZi5vYS5vcHMuZW5hYmxlX21ldHJpY19zZXQoZGV2X3ByaXYpOworCQly ZXQgPSBhbGxvY19vYV9idWZmZXIoZGV2X3ByaXYpOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJl dDsKKworCQkvKiBQUk0gLSBvYnNlcnZhYmlsaXR5IHBlcmZvcm1hbmNlIGNvdW50ZXJzOgorCQkg KgorCQkgKiAgIE9BQ09OVFJPTCwgcGVyZm9ybWFuY2UgY291bnRlciBlbmFibGUsIG5vdGU6CisJ CSAqCisJCSAqICAgIldoZW4gdGhpcyBiaXQgaXMgc2V0LCBpbiBvcmRlciB0byBoYXZlIGNvaGVy ZW50IGNvdW50cywKKwkJICogICBSQzYgcG93ZXIgc3RhdGUgYW5kIHRydW5rIGNsb2NrIGdhdGlu ZyBtdXN0IGJlIGRpc2FibGVkLgorCQkgKiAgIFRoaXMgY2FuIGJlIGFjaGlldmVkIGJ5IHByb2dy YW1taW5nIE1NSU8gcmVnaXN0ZXJzIGFzCisJCSAqICAgMHhBMDk0PTAgYW5kIDB4QTA5MFszMV09 MSIKKwkJICoKKwkJICogICBJbiBvdXIgY2FzZSB3ZSBhcmUgZXhwZWN0ZWQgdGhhdCB0YWtpbmcg cG0gKyBGT1JDRVdBS0UKKwkJICogICByZWZlcmVuY2VzIHdpbGwgZWZmZWN0aXZlbHkgZGlzYWJs ZSBSQzYuCisJCSAqLworCQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CisJCWludGVs X3VuY29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKKworCQlkZXZf cHJpdi0+cGVyZi5vYS5vcHMuZW5hYmxlX21ldHJpY19zZXQoZGV2X3ByaXYpOworCX0KKworCWlm IChwcm9wcy0+c2FtcGxlX2ZsYWdzICYgU0FNUExFX0NUWF9JRCkgeworCQlzdHJlYW0tPnNhbXBs ZV9mbGFncyB8PSBTQU1QTEVfQ1RYX0lEOworCQlzdHJlYW0tPnNhbXBsZV9zaXplICs9IDQ7CisK KwkJLyoKKwkJICogTkI6IGl0J3MgbWVhbmluZ2Z1bCB0byByZXF1ZXN0IFNBTVBMRV9DVFhfSUQg d2l0aCBqdXN0IENTCisJCSAqIG1vZGUgb3IgcGVyaW9kaWMgT0EgbW9kZSBzYW1wbGluZyBidXQg d2UgZG9uJ3QgYWxsb3cKKwkJICogU0FNUExFX0NUWF9JRCB3aXRob3V0IGVpdGhlciBtb2RlCisJ CSAqLworCQlpZiAoIXJlcXVpcmVfb2FfdW5pdCkKKwkJCXJlcXVpcmVfY3NfbW9kZSA9IHRydWU7 CisJfQorCisJaWYgKHByb3BzLT5jc19tb2RlKSB7CisJCWlmICghKHByb3BzLT5zYW1wbGVfZmxh Z3MgJiBTQU1QTEVfQ1RYX0lEKSkgeworCQkJRFJNX0VSUk9SKAorCQkJCSJSaW5nIGdpdmVuIHdp dGhvdXQgcmVxdWVzdGluZyBhbnkgQ1MgZGF0YSB0byBzYW1wbGUiKTsKKwkJCXJldCA9IC1FSU5W QUw7CisJCQlnb3RvIGNzX2Vycm9yOworCQl9CisKKwkJc3RyZWFtLT5jc19tb2RlID0gdHJ1ZTsK KworCQlyZXQgPSBhbGxvY19jb21tYW5kX3N0cmVhbV9idWYoZGV2X3ByaXYpOworCQlpZiAocmV0 KQorCQkJZ290byBjc19lcnJvcjsKKwl9CisKKwlkZXZfcHJpdi0+cGVyZi5vYS5leGNsdXNpdmVf c3RyZWFtID0gc3RyZWFtOwogCiAJc3RyZWFtLT5kZXN0cm95ID0gaTkxNV9vYV9zdHJlYW1fZGVz dHJveTsKIAlzdHJlYW0tPmVuYWJsZSA9IGk5MTVfb2Ffc3RyZWFtX2VuYWJsZTsKQEAgLTk1NSw2 ICsxNDQyLDE3IEBAIHN0YXRpYyBpbnQgaTkxNV9vYV9zdHJlYW1faW5pdChzdHJ1Y3QgaTkxNV9w ZXJmX3N0cmVhbSAqc3RyZWFtLAogCXN0cmVhbS0+cmVhZCA9IGk5MTVfb2FfcmVhZDsKIAogCXJl dHVybiAwOworCitjc19lcnJvcjoKKwlpZiAocmVxdWlyZV9vYV91bml0KSB7CisJCWRldl9wcml2 LT5wZXJmLm9hLm9wcy5kaXNhYmxlX21ldHJpY19zZXQoZGV2X3ByaXYpOworCisJCWludGVsX3Vu Y29yZV9mb3JjZXdha2VfcHV0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKKwkJaW50ZWxfcnVu dGltZV9wbV9wdXQoZGV2X3ByaXYpOworCisJCWZyZWVfb2FfYnVmZmVyKGRldl9wcml2KTsKKwl9 CisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIHZvaWQgZ2VuN191cGRhdGVfaHdfY3R4X2lkX2xv Y2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCkBAIC0xMTcwLDEyICsxNjY4 LDIxIEBAIHN0YXRpYyBzc2l6ZV90IGk5MTVfcGVyZl9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLAog CiBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgcG9sbF9jaGVja190aW1lcl9jYihzdHJ1Y3Qg aHJ0aW1lciAqaHJ0aW1lcikKIHsKKwlzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtOwor CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KIAkJY29udGFpbmVyX29mKGhy dGltZXIsIHR5cGVvZigqZGV2X3ByaXYpLAogCQkJICAgICBwZXJmLm9hLnBvbGxfY2hlY2tfdGlt ZXIpOwogCi0JaWYgKCFkZXZfcHJpdi0+cGVyZi5vYS5vcHMub2FfYnVmZmVyX2lzX2VtcHR5KGRl dl9wcml2KSkKLQkJd2FrZV91cCgmZGV2X3ByaXYtPnBlcmYub2EucG9sbF93cSk7CisJLyogTm8g bmVlZCB0byBwcm90ZWN0IHRoZSBzdHJlYW1zIGxpc3QgaGVyZSwgc2luY2UgdGhlIGhydGltZXIg aXMKKwkgKiBkaXNhYmxlZCBiZWZvcmUgdGhlIHN0cmVhbSBpcyByZW1vdmVkIGZyb20gbGlzdCwg YW5kIGN1cnJlbnRseSBhCisJICogc2luZ2xlIGV4Y2x1c2l2ZV9zdHJlYW0gaXMgc3VwcG9ydGVk LgorCSAqIFhYWDogcmV2aXNpdCB0aGlzIHdoZW4gbXVsdGlwbGUgY29uY3VycmVudCBzdHJlYW1z IGFyZSBzdXBwb3J0ZWQuCisJICovCisJbGlzdF9mb3JfZWFjaF9lbnRyeShzdHJlYW0sICZkZXZf cHJpdi0+cGVyZi5zdHJlYW1zLCBsaW5rKSB7CisJCWlmIChzdHJlYW1faGF2ZV9kYXRhX191bmxv Y2tlZChzdHJlYW0pKQorCQkJd2FrZV91cCgmZGV2X3ByaXYtPnBlcmYub2EucG9sbF93cSk7CisJ fQogCiAJaHJ0aW1lcl9mb3J3YXJkX25vdyhocnRpbWVyLCBuc190b19rdGltZShQT0xMX1BFUklP RCkpOwogCkBAIC0xMjY4LDE0ICsxNzc1LDE2IEBAIHN0YXRpYyB2b2lkIGk5MTVfcGVyZl9kZXN0 cm95X2xvY2tlZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogewogCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7CiAKKwltdXRleF9s b2NrKCZkZXZfcHJpdi0+cGVyZi5zdHJlYW1zX2xvY2spOworCWxpc3RfZGVsKCZzdHJlYW0tPmxp bmspOworCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBlcmYuc3RyZWFtc19sb2NrKTsKKwogCWlm IChzdHJlYW0tPmVuYWJsZWQpCiAJCWk5MTVfcGVyZl9kaXNhYmxlX2xvY2tlZChzdHJlYW0pOwog CiAJaWYgKHN0cmVhbS0+ZGVzdHJveSkKIAkJc3RyZWFtLT5kZXN0cm95KHN0cmVhbSk7CiAKLQls aXN0X2RlbCgmc3RyZWFtLT5saW5rKTsKLQogCWlmIChzdHJlYW0tPmN0eCkgewogCQltdXRleF9s b2NrKCZkZXZfcHJpdi0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCQlpOTE1X2dlbV9jb250ZXh0X3Vu cmVmZXJlbmNlKHN0cmVhbS0+Y3R4KTsKQEAgLTEzOTAsNyArMTg5OSw5IEBAIGludCBpOTE1X3Bl cmZfb3Blbl9pb2N0bF9sb2NrZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkgKiB0aG9yb3Vn aGx5LCBidXQgc3RpbGwgdGhpcyBpcyB0aGUgZXhwZWN0ZWQgcmVzdWx0IGF0IHRoaXMgcG9pbnQu ICovCiAJQlVHX09OKHN0cmVhbS0+c2FtcGxlX2ZsYWdzICE9IHByb3BzLT5zYW1wbGVfZmxhZ3Mp OwogCisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBlcmYuc3RyZWFtc19sb2NrKTsKIAlsaXN0X2Fk ZCgmc3RyZWFtLT5saW5rLCAmZGV2X3ByaXYtPnBlcmYuc3RyZWFtcyk7CisJbXV0ZXhfdW5sb2Nr KCZkZXZfcHJpdi0+cGVyZi5zdHJlYW1zX2xvY2spOwogCiAJaWYgKHBhcmFtLT5mbGFncyAmIEk5 MTVfUEVSRl9GTEFHX0ZEX0NMT0VYRUMpCiAJCWZfZmxhZ3MgfD0gT19DTE9FWEVDOwpAQCAtMTUx NCw2ICsyMDI1LDI2IEBAIHN0YXRpYyBpbnQgcmVhZF9wcm9wZXJ0aWVzX3VubG9ja2VkKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJY2FzZSBEUk1fSTkxNV9QRVJGX1NBTVBM RV9PQV9TT1VSQ0VfUFJPUDoKIAkJCXByb3BzLT5zYW1wbGVfZmxhZ3MgfD0gU0FNUExFX09BX1NP VVJDRV9JTkZPOwogCQkJYnJlYWs7CisJCWNhc2UgRFJNX0k5MTVfUEVSRl9SSU5HX1BST1A6IHsK KwkJCQl1OCByaW5nX2lkID0KKwkJCQkJKHZhbHVlICYgSTkxNV9FWEVDX1JJTkdfTUFTSykgLSAx OworCQkJCWlmIChyaW5nX2lkID49IExBU1RfVVNFUl9SSU5HKQorCQkJCQlyZXR1cm4gLUVJTlZB TDsKKworCQkJCS8qIFhYWDogQ3VycmVudGx5IG9ubHkgUkNTIGlzIHN1cHBvcnRlZC4KKwkJCQkg KiBSZW1vdmUgdGhpcyBjaGVjayB3aGVuIHN1cHBvcnQgZm9yIG90aGVyCisJCQkJICogcmluZ3Mg aXMgYWRkZWQKKwkJCQkgKi8KKwkJCQlpZiAocmluZ19pZCAhPSBSQ1MpCisJCQkJCXJldHVybiAt RUlOVkFMOworCisJCQkJcHJvcHMtPmNzX21vZGUgPSB0cnVlOworCQkJCXByb3BzLT5yaW5nX2lk ID0gcmluZ19pZDsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIERSTV9JOTE1X1BFUkZfU0FNUExF X0NUWF9JRF9QUk9QOgorCQkJcHJvcHMtPnNhbXBsZV9mbGFncyB8PSBTQU1QTEVfQ1RYX0lEOwor CQkJYnJlYWs7CiAJCWNhc2UgRFJNX0k5MTVfUEVSRl9QUk9QX01BWDoKIAkJCUJVRygpOwogCQl9 CkBAIC0xNjE3LDcgKzIxNDgsOSBAQCB2b2lkIGk5MTVfcGVyZl9pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCiAKIAlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPnBlcmYuc3RyZWFtcyk7CiAJ bXV0ZXhfaW5pdCgmZGV2X3ByaXYtPnBlcmYubG9jayk7CisJbXV0ZXhfaW5pdCgmZGV2X3ByaXYt PnBlcmYuc3RyZWFtc19sb2NrKTsKIAlzcGluX2xvY2tfaW5pdCgmZGV2X3ByaXYtPnBlcmYuaG9v a19sb2NrKTsKKwlzcGluX2xvY2tfaW5pdCgmZGV2X3ByaXYtPnBlcmYubm9kZV9saXN0X2xvY2sp OwogCiAJaWYgKElTX0hBU1dFTEwoZGV2KSkgewogCQlkZXZfcHJpdi0+cGVyZi5vYS5vcHMuaW5p dF9vYV9idWZmZXIgPSBnZW43X2luaXRfb2FfYnVmZmVyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu YwppbmRleCA0Nzg5NTU1Li4xZGU1YjY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAt OTMxLDEwICs5MzEsMTQgQEAgaW50IGludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uKHN0cnVjdCBp OTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJhbXMsCiAJZXhlY19zdGFydCA9IHBhcmFtcy0+YmF0 Y2hfb2JqX3ZtX29mZnNldCArCiAJCSAgICAgYXJncy0+YmF0Y2hfc3RhcnRfb2Zmc2V0OwogCisJ aTkxNV9wZXJmX2NvbW1hbmRfc3RyZWFtX2hvb2socGFyYW1zLT5yZXF1ZXN0KTsKKwogCXJldCA9 IHJpbmctPmVtaXRfYmJfc3RhcnQocGFyYW1zLT5yZXF1ZXN0LCBleGVjX3N0YXJ0LCBwYXJhbXMt PmRpc3BhdGNoX2ZsYWdzKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCisJaTkxNV9wZXJm X2NvbW1hbmRfc3RyZWFtX2hvb2socGFyYW1zLT5yZXF1ZXN0KTsKKwogCXRyYWNlX2k5MTVfZ2Vt X3JpbmdfZGlzcGF0Y2gocGFyYW1zLT5yZXF1ZXN0LCBwYXJhbXMtPmRpc3BhdGNoX2ZsYWdzKTsK IAogCWk5MTVfZ2VtX2V4ZWNidWZmZXJfbW92ZV90b19hY3RpdmUodm1hcywgcGFyYW1zLT5yZXF1 ZXN0KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUv dWFwaS9kcm0vaTkxNV9kcm0uaAppbmRleCA2ZGJhYTZkLi41NWI1NTNiIDEwMDY0NAotLS0gYS9p bmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2Ry bS5oCkBAIC0xMTYwLDYgKzExNjAsNyBAQCBlbnVtIGRybV9pOTE1X3BlcmZfb2FfZXZlbnRfc291 cmNlIHsKIAlJOTE1X1BFUkZfT0FfRVZFTlRfU09VUkNFX1VOREVGSU5FRCwKIAlJOTE1X1BFUkZf T0FfRVZFTlRfU09VUkNFX1BFUklPRElDLAogCUk5MTVfUEVSRl9PQV9FVkVOVF9TT1VSQ0VfQ09O VEVYVF9TV0lUQ0gsCisJSTkxNV9QRVJGX09BX0VWRU5UX1NPVVJDRV9SQ1MsCiAKIAlJOTE1X1BF UkZfT0FfRVZFTlRfU09VUkNFX01BWAkvKiBub24tQUJJICovCiB9OwpAQCAtMTIwNSw2ICsxMjA2 LDE5IEBAIGVudW0gZHJtX2k5MTVfcGVyZl9wcm9wZXJ0eV9pZCB7CiAJICovCiAJRFJNX0k5MTVf UEVSRl9TQU1QTEVfT0FfU09VUkNFX1BST1AsCiAKKwkvKioKKwkgKiBUaGUgdmFsdWUgb2YgdGhp cyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIEdQVSBlbmdpbmUgKHJpbmcpIGZvciB3aGljaAorCSAq IHRoZSBzYW1wbGVzIG5lZWQgdG8gYmUgY29sbGVjdGVkLiBTcGVjaWZ5aW5nIHRoaXMgcHJvcGVy dHkgYWxzbworCSAqIGltcGxpZXMgdGhlIGNvbW1hbmQgc3RyZWFtIGJhc2VkIHNhbXBsZSBjb2xs ZWN0aW9uLgorCSAqLworCURSTV9JOTE1X1BFUkZfUklOR19QUk9QLAorCisJLyoqCisJICogVGhl IHZhbHVlIG9mIHRoaXMgcHJvcGVydHkgc2V0IHRvIDEgcmVxdWVzdHMgaW5jbHVzaW9uIG9mIGNv bnRleHQgSUQKKwkgKiBpbiB0aGUgcGVyZiBzYW1wbGUgZGF0YS4KKwkgKi8KKwlEUk1fSTkxNV9Q RVJGX1NBTVBMRV9DVFhfSURfUFJPUCwKKwogCURSTV9JOTE1X1BFUkZfUFJPUF9NQVggLyogbm9u LUFCSSAqLwogfTsKIApAQCAtMTI1Myw2ICsxMjY3LDcgQEAgZW51bSBkcm1faTkxNV9wZXJmX3Jl Y29yZF90eXBlIHsKIAkgKiAgICAgc3RydWN0IGRybV9pOTE1X3BlcmZfcmVjb3JkX2hlYWRlciBo ZWFkZXI7CiAJICoKIAkgKiAgICAgeyB1MzIgc291cmNlX2luZm87IH0gJiYgRFJNX0k5MTVfUEVS Rl9TQU1QTEVfT0FfU09VUkNFX1BST1AKKwkgKiAgICAgeyB1MzIgY3R4X2lkOyB9ICYmIERSTV9J OTE1X1BFUkZfU0FNUExFX0NUWF9JRF9QUk9QCiAJICogICAgIHsgdTMyIG9hX3JlcG9ydFtdOyB9 ICYmIERSTV9JOTE1X1BFUkZfU0FNUExFX09BX1BST1AKIAkgKiB9OwogCSAqLwotLSAKMS45LjEK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=