From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robert Bragg Subject: [RFC 4/6] drm/i915: Add i915 perf event for Haswell OA unit Date: Tue, 29 Sep 2015 15:39:07 +0100 Message-ID: <1443537549-6905-5-git-send-email-robert@sixbynine.org> References: <1443537549-6905-1-git-send-email-robert@sixbynine.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1443537549-6905-1-git-send-email-robert@sixbynine.org> 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: Mark Rutland , Matt Fleming , David Airlie , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Peter Zijlstra , Sourab Gupta , linux-api@vger.kernel.org, Zheng Yan , Daniel Vetter , Ingo Molnar , Alexander Shishkin List-Id: linux-api@vger.kernel.org R2VuIGdyYXBoaWNzIGhhcmR3YXJlIGNhbiBiZSBzZXQgdXAgdG8gcGVyaW9kaWNhbGx5IHdyaXRl IHNuYXBzaG90cyBvZgpwZXJmb3JtYW5jZSBjb3VudGVycyBpbnRvIGEgY2lyY3VsYXIgYnVmZmVy IHZpYSBpdHMgT2JzZXJ2YXRpb24KQXJjaGl0ZWN0dXJlIGFuZCB0aGlzIHBhdGNoIGV4cG9zZXMg dGhhdCBjYXBhYmlsaXR5IHRvIHVzZXJzcGFjZSB2aWEgdGhlCmk5MTUgcGVyZiBpbnRlcmZhY2Uu CgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ClNpZ25lZC1vZmYt Ynk6IFJvYmVydCBCcmFnZyA8cm9iZXJ0QHNpeGJ5bmluZS5vcmc+ClNpZ25lZC1vZmYtYnk6IFpo ZW55dSBXYW5nIDx6aGVueXV3QGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgNTcgKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmMgfCAgMjMgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVy Zi5jICAgICAgICB8IDY5NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgICAgIHwgMzM4ICsrKysrKysrKysrKysrKysK IGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCAgICAgICAgICAgICB8ICA2MyArKysKIDUgZmls ZXMgY2hhbmdlZCwgMTE3MSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCmluZGV4IDBjYjM2ZDkuLmQ2ZGI4MTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaApAQCAtMTY5NCw2ICsxNjk0LDExIEBAIHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1z IHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgICAgICpyZXF1ZXN0OwogfTsKIAorc3Ry dWN0IGk5MTVfb2FfZm9ybWF0IHsKKwl1MzIgZm9ybWF0OworCWludCBzaXplOworfTsKKwogc3Ry dWN0IGk5MTVfb2FfcmVnIHsKIAl1MzIgYWRkcjsKIAl1MzIgdmFsdWU7CkBAIC0xNzYwLDYgKzE3 NjUsMjAgQEAgc3RydWN0IGk5MTVfcGVyZl9ldmVudCB7CiAJdm9pZCAoKmRlc3Ryb3kpKHN0cnVj dCBpOTE1X3BlcmZfZXZlbnQgKmV2ZW50KTsKIH07CiAKK3N0cnVjdCBpOTE1X29hX29wcyB7CisJ dm9pZCAoKmluaXRfb2FfYnVmZmVyKShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp OworCXZvaWQgKCplbmFibGVfbWV0cmljX3NldCkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KTsKKwl2b2lkICgqZGlzYWJsZV9tZXRyaWNfc2V0KShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpOworCXZvaWQgKCpvYV9lbmFibGUpKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdik7CisJdm9pZCAoKm9hX2Rpc2FibGUpKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdik7CisJdm9pZCAoKnVwZGF0ZV9vYWNvbnRyb2wpKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdik7CisJdm9pZCAoKnVwZGF0ZV9zcGVjaWZpY19od19jdHhfaWQp KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkJICB1MzIgY3R4X2lkKTsK Kwl2b2lkICgqcmVhZCkoc3RydWN0IGk5MTVfcGVyZl9ldmVudCAqZXZlbnQsCisJCSAgICAgc3Ry dWN0IGk5MTVfcGVyZl9yZWFkX3N0YXRlICpyZWFkX3N0YXRlKTsKKwlib29sICgqb2FfYnVmZmVy X2lzX2VtcHR5KShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOworfTsKKwogc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7CiAJc3RydWN0 IGttZW1fY2FjaGUgKm9iamVjdHM7CkBAIC0xOTk2LDcgKzIwMTUsNDMgQEAgc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgewogCiAJc3RydWN0IHsKIAkJYm9vbCBpbml0aWFsaXplZDsKKwogCQlzdHJ1 Y3QgbXV0ZXggbG9jazsKKworCQlzdHJ1Y3QgY3RsX3RhYmxlX2hlYWRlciAqc3lzY3RsX2hlYWRl cjsKKworCQlzdHJ1Y3QgeworCQkJc3RydWN0IGk5MTVfcGVyZl9ldmVudCAqZXhjbHVzaXZlX2V2 ZW50OworCisJCQl1MzIgc3BlY2lmaWNfY3R4X2lkOworCisJCQlzdHJ1Y3QgaHJ0aW1lciBwb2xs X2NoZWNrX3RpbWVyOworCQkJd2FpdF9xdWV1ZV9oZWFkX3QgcG9sbF93cTsKKworCQkJYm9vbCBw ZXJpb2RpYzsKKwkJCXUzMiBwZXJpb2RfZXhwb25lbnQ7CisKKwkJCXUzMiBtZXRyaWNzX3NldDsK KworCQkJY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICptdXhfcmVnczsKKwkJCWludCBtdXhfcmVn c19sZW47CisJCQljb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKmJfY291bnRlcl9yZWdzOworCQkJ aW50IGJfY291bnRlcl9yZWdzX2xlbjsKKworCQkJc3RydWN0IHsKKwkJCQlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqOworCQkJCXUzMiBndHRfb2Zmc2V0OworCQkJCXU4ICphZGRyOwor CQkJCXUzMiBoZWFkOworCQkJCXUzMiB0YWlsOworCQkJCWludCBmb3JtYXQ7CisJCQkJaW50IGZv cm1hdF9zaXplOworCQkJfSBvYV9idWZmZXI7CisKKwkJCXN0cnVjdCBpOTE1X29hX29wcyBvcHM7 CisJCQljb25zdCBzdHJ1Y3QgaTkxNV9vYV9mb3JtYXQgKm9hX2Zvcm1hdHM7CisJCX0gb2E7CisK IAkJc3RydWN0IGxpc3RfaGVhZCBldmVudHM7CiAJfSBwZXJmOwogCkBAIC0zMjA0LDYgKzMyNTks OCBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9zZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB2b2lkICpkYXRhLAogCiBpbnQgaTkxNV9wZXJmX29wZW5faW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCSBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpOwor dm9pZCBpOTE1X29hX2NvbnRleHRfcGluX25vdGlmeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCisJCQkJc3RydWN0IGludGVsX2NvbnRleHQgKmNvbnRleHQpOwogCiAvKiBpOTE1 X2dlbV9ldmljdC5jICovCiBpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX2V2aWN0X3NvbWV0aGlu ZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29u dGV4dC5jCmluZGV4IDhlODkzYjMuLjNjNDQxOWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9jb250ZXh0LmMKQEAgLTEzMyw2ICsxMzMsMjMgQEAgc3RhdGljIGludCBnZXRfY29udGV4 dF9zaXplKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGlj IGludCBpOTE1X2dlbV9jb250ZXh0X3Bpbl9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAor CQkJCSAgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpCit7CisJaW50IHJldDsKKworCUJV R19PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXYtPnN0cnVjdF9tdXRleCkpOworCisJcmV0ID0gaTkx NV9nZW1fb2JqX2dndHRfcGluKGN0eC0+bGVnYWN5X2h3X2N0eC5yY3Nfc3RhdGUsCisJCQkJICAg IGdldF9jb250ZXh0X2FsaWdubWVudChkZXYpLCAwKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0 OworCisJaTkxNV9vYV9jb250ZXh0X3Bpbl9ub3RpZnkoZGV2LT5kZXZfcHJpdmF0ZSwgY3R4KTsK KworCXJldHVybiAwOworfQorCiB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfZnJlZShzdHJ1Y3Qga3Jl ZiAqY3R4X3JlZikKIHsKIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4ID0gY29udGFpbmVyX29m KGN0eF9yZWYsIHR5cGVvZigqY3R4KSwgcmVmKTsKQEAgLTI1OCw4ICsyNzUsNyBAQCBpOTE1X2dl bV9jcmVhdGVfY29udGV4dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkgKiBiZSBhdmFpbGFi bGUuIFRvIGF2b2lkIHRoaXMgd2UgYWx3YXlzIHBpbiB0aGUgZGVmYXVsdAogCQkgKiBjb250ZXh0 LgogCQkgKi8KLQkJcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRfcGluKGN0eC0+bGVnYWN5X2h3X2N0 eC5yY3Nfc3RhdGUsCi0JCQkJCSAgICBnZXRfY29udGV4dF9hbGlnbm1lbnQoZGV2KSwgMCk7CisJ CXJldCA9IGk5MTVfZ2VtX2NvbnRleHRfcGluX3N0YXRlKGRldiwgY3R4KTsKIAkJaWYgKHJldCkg ewogCQkJRFJNX0RFQlVHX0RSSVZFUigiQ291bGRuJ3QgcGluICVkXG4iLCByZXQpOwogCQkJZ290 byBlcnJfZGVzdHJveTsKQEAgLTYzNCw4ICs2NTAsNyBAQCBzdGF0aWMgaW50IGRvX3N3aXRjaChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIAogCS8qIFRyeWluZyB0byBwaW4gZmly c3QgbWFrZXMgZXJyb3IgaGFuZGxpbmcgZWFzaWVyLiAqLwogCWlmIChyaW5nID09ICZkZXZfcHJp di0+cmluZ1tSQ1NdKSB7Ci0JCXJldCA9IGk5MTVfZ2VtX29ial9nZ3R0X3Bpbih0by0+bGVnYWN5 X2h3X2N0eC5yY3Nfc3RhdGUsCi0JCQkJCSAgICBnZXRfY29udGV4dF9hbGlnbm1lbnQocmluZy0+ ZGV2KSwgMCk7CisJCXJldCA9IGk5MTVfZ2VtX2NvbnRleHRfcGluX3N0YXRlKHJpbmctPmRldiwg dG8pOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVy Zi5jCmluZGV4IDQ3N2UzZTYuLmJjMWM0ZDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcGVyZi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCkBA IC0yNiw2ICsyNiwzMSBAQAogI2luY2x1ZGUgPGxpbnV4L3NpemVzLmg+CiAKICNpbmNsdWRlICJp OTE1X2Rydi5oIgorI2luY2x1ZGUgImludGVsX3JpbmdidWZmZXIuaCIKKyNpbmNsdWRlICJpbnRl bF9scmMuaCIKKyNpbmNsdWRlICJpOTE1X29hX2hzdy5oIgorCisvKiBNdXN0IGJlIGEgcG93ZXIg b2YgdHdvICovCisjZGVmaW5lIE9BX0JVRkZFUl9TSVpFCSAgICAgU1pfMTZNCisjZGVmaW5lIE9B X1RBS0VOKHRhaWwsIGhlYWQpICgodGFpbCAtIGhlYWQpICYgKE9BX0JVRkZFUl9TSVpFIC0gMSkp CisKKy8qIGZyZXF1ZW5jeSBmb3IgZm9yd2FyZGluZyBzYW1wbGVzIGZyb20gT0EgdG8gcGVyZiBi dWZmZXIgKi8KKyNkZWZpbmUgUE9MTF9GUkVRVUVOQ1kgMjAwCisjZGVmaW5lIFBPTExfUEVSSU9E IG1heF90KHU2NCwgMTAwMDAsIE5TRUNfUEVSX1NFQyAvIFBPTExfRlJFUVVFTkNZKQorCisjZGVm aW5lIE9BX0VYUE9ORU5UX01BWCAweDNmCisKK3N0YXRpYyBzdHJ1Y3QgaTkxNV9vYV9mb3JtYXQg aHN3X29hX2Zvcm1hdHNbSTkxNV9PQV9GT1JNQVRfTUFYXSA9IHsKKwlbSTkxNV9PQV9GT1JNQVRf QTEzXQkgICAgPSB7IDAsIDY0IH0sCisJW0k5MTVfT0FfRk9STUFUX0EyOV0JICAgID0geyAxLCAx MjggfSwKKwlbSTkxNV9PQV9GT1JNQVRfQTEzX0I4X0M4XSAgPSB7IDIsIDEyOCB9LAorCS8qIEEy OV9COF9DOCBEaXNhbGxvd2VkIGFzIDE5MiBieXRlcyBkb2Vzbid0IGZhY3RvciBpbnRvIGJ1ZmZl ciBzaXplICovCisJW0k5MTVfT0FfRk9STUFUX0I0X0M4XQkgICAgPSB7IDQsIDY0IH0sCisJW0k5 MTVfT0FfRk9STUFUX0E0NV9COF9DOF0gID0geyA1LCAyNTYgfSwKKwlbSTkxNV9PQV9GT1JNQVRf QjRfQzhfQTE2XSAgPSB7IDYsIDEyOCB9LAorCVtJOTE1X09BX0ZPUk1BVF9DNF9COF0JICAgID0g eyA3LCA2NCB9LAorfTsKKwogCiAvKioKICAqIGk5MTVfcGVyZl9jb3B5X2F0dHIoKSAtIGNvcHkg c3BlY2lmaWMgZXZlbnQgYXR0cmlidXRlcyBmcm9tIHVzZXJzcGFjZQpAQCAtMTA3LDYgKzEzMiw2 MzQgQEAgZXJyX3NpemU6CiAJZ290byBvdXQ7CiB9CiAKKworc3RhdGljIGJvb2wgZ2VuN19vYV9i dWZmZXJfaXNfZW1wdHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXUz MiBvYXN0YXR1czIgPSBJOTE1X1JFQUQoR0VON19PQVNUQVRVUzIpOworCXUzMiBvYXN0YXR1czEg PSBJOTE1X1JFQUQoR0VON19PQVNUQVRVUzEpOworCXUzMiBoZWFkID0gb2FzdGF0dXMyICYgR0VO N19PQVNUQVRVUzJfSEVBRF9NQVNLOworCXUzMiB0YWlsID0gb2FzdGF0dXMxICYgR0VON19PQVNU QVRVUzFfVEFJTF9NQVNLOworCisJcmV0dXJuIE9BX1RBS0VOKHRhaWwsIGhlYWQpID09IDA7Cit9 CisKK3N0YXRpYyBib29sIGFwcGVuZF9vYV9zdGF0dXMoc3RydWN0IGk5MTVfcGVyZl9ldmVudCAq ZXZlbnQsCisJCQkgICAgIHN0cnVjdCBpOTE1X3BlcmZfcmVhZF9zdGF0ZSAqcmVhZF9zdGF0ZSwK KwkJCSAgICAgZW51bSBkcm1faTkxNV9wZXJmX3JlY29yZF90eXBlIHR5cGUpCit7CisJc3RydWN0 IGRybV9pOTE1X3BlcmZfZXZlbnRfaGVhZGVyIGhlYWRlciA9IHsgdHlwZSwgMCwgc2l6ZW9mKGhl YWRlcikgfTsKKworCWlmICgocmVhZF9zdGF0ZS0+Y291bnQgLSByZWFkX3N0YXRlLT5yZWFkKSA8 IGhlYWRlci5zaXplKQorCQlyZXR1cm4gZmFsc2U7CisKKwljb3B5X3RvX3VzZXIocmVhZF9zdGF0 ZS0+YnVmLCAmaGVhZGVyLCBzaXplb2YoaGVhZGVyKSk7CisKKwlyZWFkX3N0YXRlLT5idWYgKz0g c2l6ZW9mKGhlYWRlcik7CisJcmVhZF9zdGF0ZS0+cmVhZCArPSBoZWFkZXIuc2l6ZTsKKworCXJl dHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBhcHBlbmRfb2Ffc2FtcGxlKHN0cnVjdCBpOTE1 X3BlcmZfZXZlbnQgKmV2ZW50LAorCQkJICAgICBzdHJ1Y3QgaTkxNV9wZXJmX3JlYWRfc3RhdGUg KnJlYWRfc3RhdGUsCisJCQkgICAgIGNvbnN0IHU4ICpyZXBvcnQpCit7CisJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZXZlbnQtPmRldl9wcml2OworCWludCByZXBvcnRfc2l6 ZSA9IGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5mb3JtYXRfc2l6ZTsKKwlzdHJ1Y3QgZHJt X2k5MTVfcGVyZl9ldmVudF9oZWFkZXIgaGVhZGVyOworCXUzMiBzYW1wbGVfZmxhZ3MgPSBldmVu dC0+c2FtcGxlX2ZsYWdzOworCXUzMiBkdW1teV9jdHhfaWQgPSAwOworCXUzMiBkdW1teV90aW1l c3RhbXAgPSAwOworCisJaGVhZGVyLnR5cGUgPSBEUk1fSTkxNV9QRVJGX1JFQ09SRF9TQU1QTEU7 CisJaGVhZGVyLm1pc2MgPSAwOworCWhlYWRlci5zaXplID0gc2l6ZW9mKGhlYWRlcik7CisKKwor CS8qIFhYWDogY291bGQgcHJlLWNvbXB1dGUgdGhpcyB3aGVuIG9wZW5pbmcgdGhlIGV2ZW50Li4u ICovCisKKwlpZiAoc2FtcGxlX2ZsYWdzICYgSTkxNV9QRVJGX1NBTVBMRV9DVFhJRCkKKwkJaGVh ZGVyLnNpemUgKz0gNDsKKworCWlmIChzYW1wbGVfZmxhZ3MgJiBJOTE1X1BFUkZfU0FNUExFX1RJ TUVTVEFNUCkKKwkJaGVhZGVyLnNpemUgKz0gNDsKKworCWlmIChzYW1wbGVfZmxhZ3MgJiBJOTE1 X1BFUkZfU0FNUExFX09BX1JFUE9SVCkKKwkJaGVhZGVyLnNpemUgKz0gcmVwb3J0X3NpemU7CisK KworCWlmICgocmVhZF9zdGF0ZS0+Y291bnQgLSByZWFkX3N0YXRlLT5yZWFkKSA8IGhlYWRlci5z aXplKQorCQlyZXR1cm4gZmFsc2U7CisKKworCWNvcHlfdG9fdXNlcihyZWFkX3N0YXRlLT5idWYs ICZoZWFkZXIsIHNpemVvZihoZWFkZXIpKTsKKwlyZWFkX3N0YXRlLT5idWYgKz0gc2l6ZW9mKGhl YWRlcik7CisKKwlpZiAoc2FtcGxlX2ZsYWdzICYgSTkxNV9QRVJGX1NBTVBMRV9DVFhJRCkgewor I3dhcm5pbmcgImZpeG1lOiBleHRyYWN0IGNvbnRleHQgSUQgZnJvbSBPQSByZXBvcnRzIgorCQlj b3B5X3RvX3VzZXIocmVhZF9zdGF0ZS0+YnVmLCAmZHVtbXlfY3R4X2lkLCA0KTsKKwkJcmVhZF9z dGF0ZS0+YnVmICs9IDQ7CisJfQorCisJaWYgKHNhbXBsZV9mbGFncyAmIEk5MTVfUEVSRl9TQU1Q TEVfVElNRVNUQU1QKSB7Cisjd2FybmluZyAiZml4bWU6IGV4dHJhY3QgdGltZXN0YW1wIGZyb20g T0EgcmVwb3J0cyIKKwkJY29weV90b191c2VyKHJlYWRfc3RhdGUtPmJ1ZiwgJmR1bW15X3RpbWVz dGFtcCwgNCk7CisJCXJlYWRfc3RhdGUtPmJ1ZiArPSA0OworCX0KKworCWlmIChzYW1wbGVfZmxh Z3MgJiBJOTE1X1BFUkZfU0FNUExFX09BX1JFUE9SVCkgeworCQljb3B5X3RvX3VzZXIocmVhZF9z dGF0ZS0+YnVmLCByZXBvcnQsIHJlcG9ydF9zaXplKTsKKwkJcmVhZF9zdGF0ZS0+YnVmICs9IHJl cG9ydF9zaXplOworCX0KKworCisJcmVhZF9zdGF0ZS0+cmVhZCArPSBoZWFkZXIuc2l6ZTsKKwor CXJldHVybiB0cnVlOworfQorCitzdGF0aWMgdTMyIGdlbjdfYXBwZW5kX29hX3JlcG9ydHMoc3Ry dWN0IGk5MTVfcGVyZl9ldmVudCAqZXZlbnQsCisJCQkJICBzdHJ1Y3QgaTkxNV9wZXJmX3JlYWRf c3RhdGUgKnJlYWRfc3RhdGUsCisJCQkJICB1MzIgaGVhZCwKKwkJCQkgIHUzMiB0YWlsKQorewor CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGV2ZW50LT5kZXZfcHJpdjsKKwlp bnQgcmVwb3J0X3NpemUgPSBkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIuZm9ybWF0X3NpemU7 CisJdTggKm9hX2J1Zl9iYXNlID0gZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmFkZHI7CisJ dTMyIG1hc2sgPSAoT0FfQlVGRkVSX1NJWkUgLSAxKTsKKwl1OCAqcmVwb3J0OworCXUzMiB0YWtl bjsKKworCWhlYWQgLT0gZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmd0dF9vZmZzZXQ7CisJ dGFpbCAtPSBkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIuZ3R0X29mZnNldDsKKworCS8qIE5v dGU6IHRoZSBncHUgZG9lc24ndCB3cmFwIHRoZSB0YWlsIGFjY29yZGluZyB0byB0aGUgT0EgYnVm ZmVyIHNpemUKKwkgKiBzbyB3aGVuIHdlIG5lZWQgdG8gbWFrZSBzdXJlIG91ciBoZWFkL3RhaWwg dmFsdWVzIGFyZSBpbi1ib3VuZHMgd2UKKwkgKiB1c2UgdGhlIGFib3ZlIG1hc2suCisJICovCisK Kwl3aGlsZSAoKHRha2VuID0gT0FfVEFLRU4odGFpbCwgaGVhZCkpKSB7CisJCS8qIFRoZSB0YWls IGluY3JlYXNlcyBpbiA2NCBieXRlIGluY3JlbWVudHMsIG5vdCBpbgorCQkgKiBmb3JtYXRfc2l6 ZSBzdGVwcy4gKi8KKwkJaWYgKHRha2VuIDwgcmVwb3J0X3NpemUpCisJCQlicmVhazsKKworCQly ZXBvcnQgPSBvYV9idWZfYmFzZSArIChoZWFkICYgbWFzayk7CisKKwkJaWYgKGRldl9wcml2LT5w ZXJmLm9hLmV4Y2x1c2l2ZV9ldmVudC0+ZW5hYmxlZCkgeworCQkJaWYgKCFhcHBlbmRfb2Ffc2Ft cGxlKGV2ZW50LCByZWFkX3N0YXRlLCByZXBvcnQpKQorCQkJCWJyZWFrOworCQl9CisKKwkJLyog SWYgYXBwZW5kX29hX3NhbXBsZSgpIHJldHVybnMgZmFsc2Ugd2Ugc2hvdWxkbid0IHByb2dyZXNz CisJCSAqIGhlYWQgc28gd2UgdXBkYXRlIGl0IGFmdGVyd2FyZHMuLi4gKi8KKwkJaGVhZCArPSBy ZXBvcnRfc2l6ZTsKKwl9CisKKwlyZXR1cm4gZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmd0 dF9vZmZzZXQgKyBoZWFkOworfQorCitzdGF0aWMgdm9pZCBnZW43X29hX3JlYWQoc3RydWN0IGk5 MTVfcGVyZl9ldmVudCAqZXZlbnQsCisJCQkgc3RydWN0IGk5MTVfcGVyZl9yZWFkX3N0YXRlICpy ZWFkX3N0YXRlKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGV2ZW50 LT5kZXZfcHJpdjsKKwl1MzIgb2FzdGF0dXMyOworCXUzMiBvYXN0YXR1czE7CisJdTMyIGhlYWQ7 CisJdTMyIHRhaWw7CisKKwlXQVJOX09OKCFkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIuYWRk cik7CisKKwlvYXN0YXR1czIgPSBJOTE1X1JFQUQoR0VON19PQVNUQVRVUzIpOworCW9hc3RhdHVz MSA9IEk5MTVfUkVBRChHRU43X09BU1RBVFVTMSk7CisKKwloZWFkID0gb2FzdGF0dXMyICYgR0VO N19PQVNUQVRVUzJfSEVBRF9NQVNLOworCXRhaWwgPSBvYXN0YXR1czEgJiBHRU43X09BU1RBVFVT MV9UQUlMX01BU0s7CisKKwlpZiAodW5saWtlbHkob2FzdGF0dXMxICYgKEdFTjdfT0FTVEFUVVMx X09BQlVGRkVSX09WRVJGTE9XIHwKKwkJCQkgIEdFTjdfT0FTVEFUVVMxX1JFUE9SVF9MT1NUKSkp IHsKKworCQlpZiAob2FzdGF0dXMxICYgR0VON19PQVNUQVRVUzFfT0FCVUZGRVJfT1ZFUkZMT1cp IHsKKwkJCWlmIChhcHBlbmRfb2Ffc3RhdHVzKGV2ZW50LCByZWFkX3N0YXRlLAorCQkJCQkgICAg IERSTV9JOTE1X1BFUkZfUkVDT1JEX09BX0JVRkZFUl9PVkVSRkxPVykpCisJCQkJb2FzdGF0dXMx ICY9IH5HRU43X09BU1RBVFVTMV9PQUJVRkZFUl9PVkVSRkxPVzsKKwkJfQorCisJCWlmIChvYXN0 YXR1czEgJiBHRU43X09BU1RBVFVTMV9SRVBPUlRfTE9TVCkgeworCQkJaWYgKGFwcGVuZF9vYV9z dGF0dXMoZXZlbnQsIHJlYWRfc3RhdGUsCisJCQkJCSAgICAgRFJNX0k5MTVfUEVSRl9SRUNPUkRf T0FfUkVQT1JUX0xPU1QpKQorCQkJCW9hc3RhdHVzMSAmPSB+R0VON19PQVNUQVRVUzFfUkVQT1JU X0xPU1Q7CisJCX0KKworCQlJOTE1X1dSSVRFKEdFTjdfT0FTVEFUVVMxLCBvYXN0YXR1czEpOwor CX0KKworCWhlYWQgPSBnZW43X2FwcGVuZF9vYV9yZXBvcnRzKGV2ZW50LCByZWFkX3N0YXRlLCBo ZWFkLCB0YWlsKTsKKworCUk5MTVfV1JJVEUoR0VON19PQVNUQVRVUzIsIChoZWFkICYgR0VON19P QVNUQVRVUzJfSEVBRF9NQVNLKSB8CisJCQkJICAgIE9BX01FTV9TRUxFQ1RfR0dUVCk7Cit9CisK K3N0YXRpYyBib29sIGk5MTVfb2FfY2FuX3JlYWQoc3RydWN0IGk5MTVfcGVyZl9ldmVudCAqZXZl bnQpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZXZlbnQtPmRldl9w cml2OworCisJcmV0dXJuICFkZXZfcHJpdi0+cGVyZi5vYS5vcHMub2FfYnVmZmVyX2lzX2VtcHR5 KGRldl9wcml2KTsKK30KKworc3RhdGljIGludCBpOTE1X29hX3dhaXRfdW5sb2NrZWQoc3RydWN0 IGk5MTVfcGVyZl9ldmVudCAqZXZlbnQpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZXZlbnQtPmRldl9wcml2OworCisJLyogTm90ZTogdGhlIG9hX2J1ZmZlcl9pc19l bXB0eSgpIGNvbmRpdGlvbiBpcyBvayB0byBydW4gdW5sb2NrZWQgYXMgaXQKKwkgKiBqdXN0IHBl cmZvcm1zIG1taW8gcmVhZHMgb2YgdGhlIE9BIGJ1ZmZlciBoZWFkICsgdGFpbCBwb2ludGVycyBh bmQKKwkgKiBpdCdzIGFzc3VtZWQgd2UncmUgaGFuZGxpbmcgc29tZSBvcGVyYXRpb24gdGhhdCBp bXBsaWVzIHRoZSBldmVudAorCSAqIGNhbid0IGJlIGRlc3Ryb3llZCB1bnRpbCBjb21wbGV0aW9u IChzdWNoIGFzIGEgcmVhZCgpKSB0aGF0IGVuc3VyZXMKKwkgKiB0aGUgZGV2aWNlICsgT0EgYnVm ZmVyIGNhbid0IGRpc2FwcGVhcgorCSAqLworCXJldHVybiB3YWl0X2V2ZW50X2ludGVycnVwdGli bGUoZGV2X3ByaXYtPnBlcmYub2EucG9sbF93cSwKKwkJCQkJIWRldl9wcml2LT5wZXJmLm9hLm9w cy5vYV9idWZmZXJfaXNfZW1wdHkoZGV2X3ByaXYpKTsKK30KKworc3RhdGljIHZvaWQgaTkxNV9v YV9wb2xsX3dhaXQoc3RydWN0IGk5MTVfcGVyZl9ldmVudCAqZXZlbnQsCisJCQkgICAgICBzdHJ1 Y3QgZmlsZSAqZmlsZSwKKwkJCSAgICAgIHBvbGxfdGFibGUgKndhaXQpCit7CisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZXZlbnQtPmRldl9wcml2OworCisJcG9sbF93YWl0 KGZpbGUsICZkZXZfcHJpdi0+cGVyZi5vYS5wb2xsX3dxLCB3YWl0KTsKK30KKworc3RhdGljIHZv aWQgaTkxNV9vYV9yZWFkKHN0cnVjdCBpOTE1X3BlcmZfZXZlbnQgKmV2ZW50LAorCQkJIHN0cnVj dCBpOTE1X3BlcmZfcmVhZF9zdGF0ZSAqcmVhZF9zdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBldmVudC0+ZGV2X3ByaXY7CisKKwlkZXZfcHJpdi0+cGVyZi5v YS5vcHMucmVhZChldmVudCwgcmVhZF9zdGF0ZSk7Cit9CisKK3N0YXRpYyB2b2lkCitmcmVlX29h X2J1ZmZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK3sKKwltdXRleF9sb2NrKCZp OTE1LT5kZXYtPnN0cnVjdF9tdXRleCk7CisKKwl2dW5tYXAoaTkxNS0+cGVyZi5vYS5vYV9idWZm ZXIuYWRkcik7CisJaTkxNV9nZW1fb2JqZWN0X2dndHRfdW5waW4oaTkxNS0+cGVyZi5vYS5vYV9i dWZmZXIub2JqKTsKKwlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmaTkxNS0+cGVyZi5vYS5v YV9idWZmZXIub2JqLT5iYXNlKTsKKworCWk5MTUtPnBlcmYub2Eub2FfYnVmZmVyLm9iaiA9IE5V TEw7CisJaTkxNS0+cGVyZi5vYS5vYV9idWZmZXIuZ3R0X29mZnNldCA9IDA7CisJaTkxNS0+cGVy Zi5vYS5vYV9idWZmZXIuYWRkciA9IE5VTEw7CisKKwltdXRleF91bmxvY2soJmk5MTUtPmRldi0+ c3RydWN0X211dGV4KTsKK30KKworc3RhdGljIHZvaWQgaTkxNV9vYV9ldmVudF9kZXN0cm95KHN0 cnVjdCBpOTE1X3BlcmZfZXZlbnQgKmV2ZW50KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGV2ZW50LT5kZXZfcHJpdjsKKworCUJVR19PTihldmVudCAhPSBkZXZfcHJp di0+cGVyZi5vYS5leGNsdXNpdmVfZXZlbnQpOworCisJZGV2X3ByaXYtPnBlcmYub2Eub3BzLmRp c2FibGVfbWV0cmljX3NldChkZXZfcHJpdik7CisKKwlmcmVlX29hX2J1ZmZlcihkZXZfcHJpdik7 CisKKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7 CisJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOworCisJZGV2X3ByaXYtPnBlcmYub2Eu ZXhjbHVzaXZlX2V2ZW50ID0gTlVMTDsKK30KKworc3RhdGljIHZvaWQgKnZtYXBfb2FfYnVmZmVy KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCit7CisJaW50IGk7CisJdm9pZCAqYWRk ciA9IE5VTEw7CisJc3RydWN0IHNnX3BhZ2VfaXRlciBzZ19pdGVyOworCXN0cnVjdCBwYWdlICoq cGFnZXM7CisKKwlwYWdlcyA9IGRybV9tYWxsb2NfYWIob2JqLT5iYXNlLnNpemUgPj4gUEFHRV9T SElGVCwgc2l6ZW9mKCpwYWdlcykpOworCWlmIChwYWdlcyA9PSBOVUxMKSB7CisJCURSTV9ERUJV R19EUklWRVIoIkZhaWxlZCB0byBnZXQgc3BhY2UgZm9yIHBhZ2VzXG4iKTsKKwkJZ290byBmaW5p c2g7CisJfQorCisJaSA9IDA7CisJZm9yX2VhY2hfc2dfcGFnZShvYmotPnBhZ2VzLT5zZ2wsICZz Z19pdGVyLCBvYmotPnBhZ2VzLT5uZW50cywgMCkgeworCQlwYWdlc1tpXSA9IHNnX3BhZ2VfaXRl cl9wYWdlKCZzZ19pdGVyKTsKKwkJaSsrOworCX0KKworCWFkZHIgPSB2bWFwKHBhZ2VzLCBpLCAw LCBQQUdFX0tFUk5FTCk7CisJaWYgKGFkZHIgPT0gTlVMTCkgeworCQlEUk1fREVCVUdfRFJJVkVS KCJGYWlsZWQgdG8gdm1hcCBwYWdlc1xuIik7CisJCWdvdG8gZmluaXNoOworCX0KKworZmluaXNo OgorCWlmIChwYWdlcykKKwkJZHJtX2ZyZWVfbGFyZ2UocGFnZXMpOworCXJldHVybiBhZGRyOwor fQorCitzdGF0aWMgdm9pZCBnZW43X2luaXRfb2FfYnVmZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKK3sKKwkvKiBQcmUtRGV2QkRXOiBPQUJVRkZFUiBtdXN0IGJlIHNldCB3 aXRoIGNvdW50ZXJzIG9mZiwKKwkgKiBiZWZvcmUgT0FTVEFUVVMxLCBidXQgYWZ0ZXIgT0FTVEFU VVMyICovCisJSTkxNV9XUklURShHRU43X09BU1RBVFVTMiwgZGV2X3ByaXYtPnBlcmYub2Eub2Ff YnVmZmVyLmd0dF9vZmZzZXQgfAorCQkgICBPQV9NRU1fU0VMRUNUX0dHVFQpOyAvKiBoZWFkICov CisJSTkxNV9XUklURShHRU43X09BQlVGRkVSLCBkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIu Z3R0X29mZnNldCk7CisJSTkxNV9XUklURShHRU43X09BU1RBVFVTMSwgZGV2X3ByaXYtPnBlcmYu b2Eub2FfYnVmZmVyLmd0dF9vZmZzZXQgfAorCQkgICBPQUJVRkZFUl9TSVpFXzE2TSk7IC8qIHRh aWwgKi8KK30KKworc3RhdGljIGludCBhbGxvY19vYV9idWZmZXIoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpibzsKKwlp bnQgcmV0OworCisJQlVHX09OKGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5vYmopOworCisJ cmV0ID0gaTkxNV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUoZGV2X3ByaXYtPmRldik7CisJaWYg KHJldCkKKwkJcmV0dXJuIHJldDsKKworCWJvID0gaTkxNV9nZW1fYWxsb2Nfb2JqZWN0KGRldl9w cml2LT5kZXYsIE9BX0JVRkZFUl9TSVpFKTsKKwlpZiAoYm8gPT0gTlVMTCkgeworCQlEUk1fRVJS T1IoIkZhaWxlZCB0byBhbGxvY2F0ZSBPQSBidWZmZXJcbiIpOworCQlyZXQgPSAtRU5PTUVNOwor CQlnb3RvIHVubG9jazsKKwl9CisJZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLm9iaiA9IGJv OworCisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF9jYWNoZV9sZXZlbChibywgSTkxNV9DQUNI RV9MTEMpOworCWlmIChyZXQpCisJCWdvdG8gZXJyX3VucmVmOworCisJLyogUHJlSFNXIHJlcXVp cmVkIDUxMksgYWxpZ25tZW50LCBIU1cgcmVxdWlyZXMgMTZNICovCisJcmV0ID0gaTkxNV9nZW1f b2JqX2dndHRfcGluKGJvLCBTWl8xNk0sIDApOworCWlmIChyZXQpCisJCWdvdG8gZXJyX3VucmVm OworCisJZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmd0dF9vZmZzZXQgPSBpOTE1X2dlbV9v YmpfZ2d0dF9vZmZzZXQoYm8pOworCWRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5hZGRyID0g dm1hcF9vYV9idWZmZXIoYm8pOworCisJZGV2X3ByaXYtPnBlcmYub2Eub3BzLmluaXRfb2FfYnVm ZmVyKGRldl9wcml2KTsKKworCURSTV9ERUJVR19EUklWRVIoIk9BIEJ1ZmZlciBpbml0aWFsaXpl ZCwgZ3R0IG9mZnNldCA9IDB4JXgsIHZhZGRyID0gJXAiLAorCQkJIGRldl9wcml2LT5wZXJmLm9h Lm9hX2J1ZmZlci5ndHRfb2Zmc2V0LAorCQkJIGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5h ZGRyKTsKKworCWdvdG8gdW5sb2NrOworCitlcnJfdW5yZWY6CisJZHJtX2dlbV9vYmplY3RfdW5y ZWZlcmVuY2UoJmJvLT5iYXNlKTsKKwordW5sb2NrOgorCW11dGV4X3VubG9jaygmZGV2X3ByaXYt PmRldi0+c3RydWN0X211dGV4KTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBjb25m aWdfb2FfcmVncyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICBjb25z dCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKnJlZ3MsCisJCQkgICBpbnQgbl9yZWdzKQoreworCWludCBp OworCisJZm9yIChpID0gMDsgaSA8IG5fcmVnczsgaSsrKSB7CisJCWNvbnN0IHN0cnVjdCBpOTE1 X29hX3JlZyAqcmVnID0gcmVncyArIGk7CisKKwkJSTkxNV9XUklURShyZWctPmFkZHIsIHJlZy0+ dmFsdWUpOworCX0KK30KKworc3RhdGljIHZvaWQgaHN3X2VuYWJsZV9tZXRyaWNfc2V0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlkZXZfcHJpdi0+cGVyZi5vYS5tdXhf cmVncyA9IE5VTEw7CisJZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVuID0gMDsKKwlkZXZf cHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9IE5VTEw7CisJZGV2X3ByaXYtPnBlcmYub2Eu Yl9jb3VudGVyX3JlZ3NfbGVuID0gMDsKKworCUk5MTVfV1JJVEUoR0RUX0NISUNLRU5fQklUUywg R1RfTk9BX0VOQUJMRSk7CisKKwkvKiBQUk06CisJICoKKwkgKiBPQSB1bml0IGlzIHVzaW5nIOKA nGNyY2xr4oCdIGZvciBpdHMgZnVuY3Rpb25hbGl0eS4gV2hlbiB0cnVuaworCSAqIGxldmVsIGNs b2NrIGdhdGluZyB0YWtlcyBwbGFjZSwgT0EgY2xvY2sgd291bGQgYmUgZ2F0ZWQsCisJICogdW5h YmxlIHRvIGNvdW50IHRoZSBldmVudHMgZnJvbSBub24tcmVuZGVyIGNsb2NrIGRvbWFpbi4KKwkg KiBSZW5kZXIgY2xvY2sgZ2F0aW5nIG11c3QgYmUgZGlzYWJsZWQgd2hlbiBPQSBpcyBlbmFibGVk IHRvCisJICogY291bnQgdGhlIGV2ZW50cyBmcm9tIG5vbi1yZW5kZXIgZG9tYWluLiBVbml0IGxl dmVsIGNsb2NrCisJICogZ2F0aW5nIGZvciBSQ1Mgc2hvdWxkIGFsc28gYmUgZGlzYWJsZWQuCisJ ICovCisJSTkxNV9XUklURShHRU43X01JU0NDUENUTCwgKEk5MTVfUkVBRChHRU43X01JU0NDUENU TCkgJgorCQkJCSAgICB+R0VON19ET1BfQ0xPQ0tfR0FURV9FTkFCTEUpKTsKKwlJOTE1X1dSSVRF KEdFTjZfVUNHQ1RMMSwgKEk5MTVfUkVBRChHRU42X1VDR0NUTDEpIHwKKwkJCQkgIEdFTjZfQ1NV TklUX0NMT0NLX0dBVEVfRElTQUJMRSkpOworCisJc3dpdGNoIChkZXZfcHJpdi0+cGVyZi5vYS5t ZXRyaWNzX3NldCkgeworCWNhc2UgSTkxNV9PQV9NRVRSSUNTX1NFVF8zRDoKKwkJY29uZmlnX29h X3JlZ3MoZGV2X3ByaXYsIGk5MTVfb2FfM2RfbXV4X2NvbmZpZ19oc3csCisJCQkgICAgICAgaTkx NV9vYV8zZF9tdXhfY29uZmlnX2hzd19sZW4pOworCQljb25maWdfb2FfcmVncyhkZXZfcHJpdiwg aTkxNV9vYV8zZF9iX2NvdW50ZXJfY29uZmlnX2hzdywKKwkJCSAgICAgICBpOTE1X29hXzNkX2Jf Y291bnRlcl9jb25maWdfaHN3X2xlbik7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCUJVRygpOwor CX0KK30KKworc3RhdGljIHZvaWQgaHN3X2Rpc2FibGVfbWV0cmljX3NldChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJSTkxNV9XUklURShHRU42X1VDR0NUTDEsIChJOTE1 X1JFQUQoR0VONl9VQ0dDVEwxKSAmCisJCQkJICB+R0VONl9DU1VOSVRfQ0xPQ0tfR0FURV9ESVNB QkxFKSk7CisJSTkxNV9XUklURShHRU43X01JU0NDUENUTCwgKEk5MTVfUkVBRChHRU43X01JU0ND UENUTCkgfAorCQkJCSAgICBHRU43X0RPUF9DTE9DS19HQVRFX0VOQUJMRSkpOworCisJSTkxNV9X UklURShHRFRfQ0hJQ0tFTl9CSVRTLCAoSTkxNV9SRUFEKEdEVF9DSElDS0VOX0JJVFMpICYKKwkJ CQkgICAgICB+R1RfTk9BX0VOQUJMRSkpOworfQorCitzdGF0aWMgdm9pZCBnZW43X3VwZGF0ZV9v YWNvbnRyb2woc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCWlmIChkZXZf cHJpdi0+cGVyZi5vYS5leGNsdXNpdmVfZXZlbnQtPmVuYWJsZWQpIHsKKwkJdW5zaWduZWQgbG9u ZyBjdHhfaWQgPSAwOworCQlib29sIHBpbm5pbmdfb2sgPSBmYWxzZTsKKworCQlpZiAoZGV2X3By aXYtPnBlcmYub2EuZXhjbHVzaXZlX2V2ZW50LT5jdHggJiYKKwkJICAgIGRldl9wcml2LT5wZXJm Lm9hLnNwZWNpZmljX2N0eF9pZCkgeworCQkJY3R4X2lkID0gZGV2X3ByaXYtPnBlcmYub2Euc3Bl Y2lmaWNfY3R4X2lkOworCQkJcGlubmluZ19vayA9IHRydWU7CisJCX0KKworCQlpZiAoZGV2X3By aXYtPnBlcmYub2EuZXhjbHVzaXZlX2V2ZW50LT5jdHggPT0gTlVMTCB8fAorCQkgICAgcGlubmlu Z19vaykgeworCQkJYm9vbCBwZXJpb2RpYyA9IGRldl9wcml2LT5wZXJmLm9hLnBlcmlvZGljOwor CQkJdTMyIHBlcmlvZF9leHBvbmVudCA9IGRldl9wcml2LT5wZXJmLm9hLnBlcmlvZF9leHBvbmVu dDsKKwkJCXUzMiByZXBvcnRfZm9ybWF0ID0gZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmZv cm1hdDsKKworCQkJSTkxNV9XUklURShHRU43X09BQ09OVFJPTCwKKwkJCQkgICAoY3R4X2lkICYg R0VON19PQUNPTlRST0xfQ1RYX01BU0spIHwKKwkJCQkgICAocGVyaW9kX2V4cG9uZW50IDw8CisJ CQkJICAgIEdFTjdfT0FDT05UUk9MX1RJTUVSX1BFUklPRF9TSElGVCkgfAorCQkJCSAgIChwZXJp b2RpYyA/CisJCQkJICAgIEdFTjdfT0FDT05UUk9MX1RJTUVSX0VOQUJMRSA6IDApIHwKKwkJCQkg ICAocmVwb3J0X2Zvcm1hdCA8PAorCQkJCSAgICBHRU43X09BQ09OVFJPTF9GT1JNQVRfU0hJRlQp IHwKKwkJCQkgICAoY3R4X2lkID8KKwkJCQkgICAgR0VON19PQUNPTlRST0xfUEVSX0NUWF9FTkFC TEUgOiAwKSB8CisJCQkJICAgR0VON19PQUNPTlRST0xfRU5BQkxFKTsKKwkJCXJldHVybjsKKwkJ fQorCX0KKworCUk5MTVfV1JJVEUoR0VON19PQUNPTlRST0wsIDApOworfQorCitzdGF0aWMgdm9p ZCBnZW43X29hX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJ dTMyIG9hc3RhdHVzMSwgdGFpbDsKKworCWdlbjdfdXBkYXRlX29hY29udHJvbChkZXZfcHJpdik7 CisKKwkvKiBSZXNldCB0aGUgaGVhZCBwdHIgc28gd2UgZG9uJ3QgZm9yd2FyZCByZXBvcnRzIGZy b20gYmVmb3JlIG5vdy4gKi8KKwlvYXN0YXR1czEgPSBJOTE1X1JFQUQoR0VON19PQVNUQVRVUzEp OworCXRhaWwgPSBvYXN0YXR1czEgJiBHRU43X09BU1RBVFVTMV9UQUlMX01BU0s7CisJSTkxNV9X UklURShHRU43X09BU1RBVFVTMiwgKHRhaWwgJiBHRU43X09BU1RBVFVTMl9IRUFEX01BU0spIHwK KwkJCQkgICAgT0FfTUVNX1NFTEVDVF9HR1RUKTsKK30KKworc3RhdGljIHZvaWQgaTkxNV9vYV9l dmVudF9lbmFibGUoc3RydWN0IGk5MTVfcGVyZl9ldmVudCAqZXZlbnQpCit7CisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZXZlbnQtPmRldl9wcml2OworCisJZGV2X3ByaXYt PnBlcmYub2Eub3BzLm9hX2VuYWJsZShkZXZfcHJpdik7CisKKwlpZiAoZGV2X3ByaXYtPnBlcmYu b2EucGVyaW9kaWMpCisJCWhydGltZXJfc3RhcnQoJmRldl9wcml2LT5wZXJmLm9hLnBvbGxfY2hl Y2tfdGltZXIsCisJCQkgICAgICBuc190b19rdGltZShQT0xMX1BFUklPRCksCisJCQkgICAgICBI UlRJTUVSX01PREVfUkVMX1BJTk5FRCk7Cit9CisKK3N0YXRpYyB2b2lkIGdlbjdfb2FfZGlzYWJs ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJSTkxNV9XUklURShHRU43 X09BQ09OVFJPTCwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIGk5MTVfb2FfZXZlbnRfZGlzYWJsZShz dHJ1Y3QgaTkxNV9wZXJmX2V2ZW50ICpldmVudCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBldmVudC0+ZGV2X3ByaXY7CisKKwlkZXZfcHJpdi0+cGVyZi5vYS5vcHMu b2FfZGlzYWJsZShkZXZfcHJpdik7CisKKwlpZiAoZGV2X3ByaXYtPnBlcmYub2EucGVyaW9kaWMp CisJCWhydGltZXJfY2FuY2VsKCZkZXZfcHJpdi0+cGVyZi5vYS5wb2xsX2NoZWNrX3RpbWVyKTsK K30KKworc3RhdGljIGludCBpOTE1X29hX2V2ZW50X2luaXQoc3RydWN0IGk5MTVfcGVyZl9ldmVu dCAqZXZlbnQsCisJCQkgICAgICBzdHJ1Y3QgZHJtX2k5MTVfcGVyZl9vcGVuX3BhcmFtICpwYXJh bSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBldmVudC0+ZGV2X3By aXY7CisJc3RydWN0IGRybV9pOTE1X3BlcmZfb2FfYXR0ciBvYV9hdHRyOworCXUzMiBrbm93bl9m bGFncyA9IDA7CisJaW50IGZvcm1hdF9zaXplOworCWludCByZXQ7CisKKwlCVUdfT04ocGFyYW0t PnR5cGUgIT0gSTkxNV9QRVJGX09BX0VWRU5UKTsKKworCWlmICghZGV2X3ByaXYtPnBlcmYub2Eu b3BzLmluaXRfb2FfYnVmZmVyKSB7CisJCURSTV9FUlJPUigiT0EgdW5pdCBub3Qgc3VwcG9ydGVk XG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJfQorCisJLyogVG8gYXZvaWQgdGhlIGNvbXBsZXhp dHkgb2YgaGF2aW5nIHRvIGFjY3VyYXRlbHkgZmlsdGVyCisJICogY291bnRlciByZXBvcnRzIGFu ZCBtYXJzaGFsIHRvIHRoZSBhcHByb3ByaWF0ZSBjbGllbnQKKwkgKiB3ZSBjdXJyZW50bHkgb25s eSBhbGxvdyBleGNsdXNpdmUgYWNjZXNzICovCisJaWYgKGRldl9wcml2LT5wZXJmLm9hLmV4Y2x1 c2l2ZV9ldmVudCkgeworCQlEUk1fRVJST1IoIk9BIHVuaXQgYWxyZWFkeSBpbiB1c2VcbiIpOwor CQlyZXR1cm4gLUVCVVNZOworCX0KKworCXJldCA9IGk5MTVfcGVyZl9jb3B5X2F0dHIodG9fdXNl cl9wdHIocGFyYW0tPmF0dHIpLAorCQkJCQkgICAgICAmb2FfYXR0ciwKKwkJCQkJICAgICAgSTkx NV9PQV9BVFRSX1NJWkVfVkVSMCwKKwkJCQkJICAgICAgc2l6ZW9mKG9hX2F0dHIpKTsKKwlpZiAo cmV0KQorCQlyZXR1cm4gcmV0OworCisJa25vd25fZmxhZ3MgPSBJOTE1X09BX0ZMQUdfUEVSSU9E SUM7CisJaWYgKG9hX2F0dHIuZmxhZ3MgJiB+a25vd25fZmxhZ3MpIHsKKwkJRFJNX0VSUk9SKCJV bmtub3duIGRybV9pOTE1X3BlcmZfb2FfYXR0ciBmbGFnXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7 CisJfQorCisJaWYgKG9hX2F0dHIub2FfZm9ybWF0ID49IEk5MTVfT0FfRk9STUFUX01BWCkgewor CQlEUk1fRVJST1IoIkludmFsaWQgT0EgcmVwb3J0IGZvcm1hdFxuIik7CisJCXJldHVybiAtRUlO VkFMOworCX0KKworCWZvcm1hdF9zaXplID0gZGV2X3ByaXYtPnBlcmYub2Eub2FfZm9ybWF0c1tv YV9hdHRyLm9hX2Zvcm1hdF0uc2l6ZTsKKwlpZiAoIWZvcm1hdF9zaXplKSB7CisJCURSTV9FUlJP UigiSW52YWxpZCBPQSByZXBvcnQgZm9ybWF0XG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQor CisJZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmZvcm1hdF9zaXplID0gZm9ybWF0X3NpemU7 CisKKwlkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIuZm9ybWF0ID0KKwkJZGV2X3ByaXYtPnBl cmYub2Eub2FfZm9ybWF0c1tvYV9hdHRyLm9hX2Zvcm1hdF0uZm9ybWF0OworCisJaWYgKElTX0hB U1dFTEwoZGV2X3ByaXYtPmRldikpIHsKKwkJaWYgKG9hX2F0dHIubWV0cmljc19zZXQgPD0gMCB8 fAorCQkgICAgb2FfYXR0ci5tZXRyaWNzX3NldCA+IEk5MTVfT0FfTUVUUklDU19TRVRfTUFYKSB7 CisJCQlEUk1fRVJST1IoIk1ldHJpYyBzZXQgbm90IGF2YWlsYWJsZVxuIik7CisJCQlyZXR1cm4g LUVJTlZBTDsKKwkJfQorCX0gZWxzZSB7CisJCUJVRygpOyAvKiBjaGVja2VkIGFib3ZlICovCisJ CXJldHVybiAtRU5PREVWOworCX0KKworCWRldl9wcml2LT5wZXJmLm9hLm1ldHJpY3Nfc2V0ID0g b2FfYXR0ci5tZXRyaWNzX3NldDsKKworCWRldl9wcml2LT5wZXJmLm9hLnBlcmlvZGljID0gISEo b2FfYXR0ci5mbGFncyAmIEk5MTVfT0FfRkxBR19QRVJJT0RJQyk7CisKKwkvKiBOQjogVGhlIGV4 cG9uZW50IHJlcHJlc2VudHMgYSBwZXJpb2QgYXMgZm9sbG93czoKKwkgKgorCSAqICAgODBucyAq IDJeKHBlcmlvZF9leHBvbmVudCArIDEpCisJICovCisJaWYgKGRldl9wcml2LT5wZXJmLm9hLnBl cmlvZGljKSB7CisJCXU2NCBwZXJpb2RfZXhwb25lbnQgPSBvYV9hdHRyLm9hX3RpbWVyX2V4cG9u ZW50OworCisJCWlmIChwZXJpb2RfZXhwb25lbnQgPiBPQV9FWFBPTkVOVF9NQVgpCisJCQlyZXR1 cm4gLUVJTlZBTDsKKworCQkvKiBUaGVvcmV0aWNhbGx5IHdlIGNhbiBwcm9ncmFtIHRoZSBPQSB1 bml0IHRvIHNhbXBsZSBldmVyeQorCQkgKiAxNjBucyBidXQgZG9uJ3QgYWxsb3cgdGhhdCBieSBk ZWZhdWx0IHVubGVzcyByb290Li4uCisJCSAqCisJCSAqIFJlZmVycmluZyB0byBwZXJmJ3Mga2Vy bmVsLnBlcmZfZXZlbnRfbWF4X3NhbXBsZV9yYXRlIGZvcgorCQkgKiBhIHByZWNlZGVudCAoMTAw MDAwIGJ5IGRlZmF1bHQpOyB3aXRoIGFuIE9BIGV4cG9uZW50IG9mCisJCSAqIDYgd2UgZ2V0IGEg cGVyaW9kIG9mIDEwLjI0MCBtaWNyb3NlY29uZHMgLWp1c3QgdW5kZXIKKwkJICogMTAwMDAwSHoK KwkJICovCisJCWlmIChwZXJpb2RfZXhwb25lbnQgPCA2ICYmICFjYXBhYmxlKENBUF9TWVNfQURN SU4pKSB7CisJCQlEUk1fRVJST1IoIlNhbXBsaW5nIHBlcmlvZCB0b28gaGlnaCB3aXRob3V0IHJv b3QgcHJpdmlsZWdlc1xuIik7CisJCQlyZXR1cm4gLUVBQ0NFUzsKKwkJfQorCisJCWRldl9wcml2 LT5wZXJmLm9hLnBlcmlvZF9leHBvbmVudCA9IHBlcmlvZF9leHBvbmVudDsKKwl9IGVsc2UgaWYg KG9hX2F0dHIub2FfdGltZXJfZXhwb25lbnQpIHsKKwkJRFJNX0VSUk9SKCJTYW1wbGluZyBleHBv bmVudCBzcGVjaWZpZWQgd2l0aG91dCByZXF1ZXN0aW5nIHBlcmlvZGljIHNhbXBsaW5nIik7CisJ CXJldHVybiAtRUlOVkFMOworCX0KKworCXJldCA9IGFsbG9jX29hX2J1ZmZlcihkZXZfcHJpdik7 CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWRldl9wcml2LT5wZXJmLm9hLmV4Y2x1c2l2 ZV9ldmVudCA9IGV2ZW50OworCisJLyogUFJNIC0gb2JzZXJ2YWJpbGl0eSBwZXJmb3JtYW5jZSBj b3VudGVyczoKKwkgKgorCSAqICAgT0FDT05UUk9MLCBwZXJmb3JtYW5jZSBjb3VudGVyIGVuYWJs ZSwgbm90ZToKKwkgKgorCSAqICAgIldoZW4gdGhpcyBiaXQgaXMgc2V0LCBpbiBvcmRlciB0byBo YXZlIGNvaGVyZW50IGNvdW50cywKKwkgKiAgIFJDNiBwb3dlciBzdGF0ZSBhbmQgdHJ1bmsgY2xv Y2sgZ2F0aW5nIG11c3QgYmUgZGlzYWJsZWQuCisJICogICBUaGlzIGNhbiBiZSBhY2hpZXZlZCBi eSBwcm9ncmFtbWluZyBNTUlPIHJlZ2lzdGVycyBhcworCSAqICAgMHhBMDk0PTAgYW5kIDB4QTA5 MFszMV09MSIKKwkgKgorCSAqICAgSW4gb3VyIGNhc2Ugd2UgYXJlIGV4cGVjdGVkIHRoYXQgdGFr aW5nIHBtICsgRk9SQ0VXQUtFCisJICogICByZWZlcmVuY2VzIHdpbGwgZWZmZWN0aXZlbHkgZGlz YWJsZSBSQzYuCisJICovCisJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOworCWludGVs X3VuY29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKKworCWRldl9w cml2LT5wZXJmLm9hLm9wcy5lbmFibGVfbWV0cmljX3NldChkZXZfcHJpdik7CisKKwlldmVudC0+ ZGVzdHJveSA9IGk5MTVfb2FfZXZlbnRfZGVzdHJveTsKKwlldmVudC0+ZW5hYmxlID0gaTkxNV9v YV9ldmVudF9lbmFibGU7CisJZXZlbnQtPmRpc2FibGUgPSBpOTE1X29hX2V2ZW50X2Rpc2FibGU7 CisJZXZlbnQtPmNhbl9yZWFkID0gaTkxNV9vYV9jYW5fcmVhZDsKKwlldmVudC0+d2FpdF91bmxv Y2tlZCA9IGk5MTVfb2Ffd2FpdF91bmxvY2tlZDsKKwlldmVudC0+cG9sbF93YWl0ID0gaTkxNV9v YV9wb2xsX3dhaXQ7CisJZXZlbnQtPnJlYWQgPSBpOTE1X29hX3JlYWQ7CisKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIHZvaWQgZ2VuN191cGRhdGVfc3BlY2lmaWNfaHdfY3R4X2lkKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkJICAgdTMyIGN0eF9pZCkKK3sKKwlkZXZf cHJpdi0+cGVyZi5vYS5zcGVjaWZpY19jdHhfaWQgPSBjdHhfaWQ7CisJZ2VuN191cGRhdGVfb2Fj b250cm9sKGRldl9wcml2KTsKK30KKworc3RhdGljIHZvaWQgaTkxNV9vYV9jb250ZXh0X3Bpbl9u b3RpZnlfbG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkJICAg ICAgc3RydWN0IGludGVsX2NvbnRleHQgKmNvbnRleHQpCit7CisJaWYgKGk5MTUuZW5hYmxlX2V4 ZWNsaXN0cyB8fAorCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5vcHMudXBkYXRlX3NwZWNpZmljX2h3 X2N0eF9pZCA9PSBOVUxMKQorCQlyZXR1cm47CisKKwlpZiAoZGV2X3ByaXYtPnBlcmYub2EuZXhj bHVzaXZlX2V2ZW50ICYmCisJICAgIGRldl9wcml2LT5wZXJmLm9hLmV4Y2x1c2l2ZV9ldmVudC0+ Y3R4ID09IGNvbnRleHQpIHsKKwkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9CisJ CQljb250ZXh0LT5sZWdhY3lfaHdfY3R4LnJjc19zdGF0ZTsKKwkJdTMyIGN0eF9pZCA9IGk5MTVf Z2VtX29ial9nZ3R0X29mZnNldChvYmopOworCisJCWRldl9wcml2LT5wZXJmLm9hLm9wcy51cGRh dGVfc3BlY2lmaWNfaHdfY3R4X2lkKGRldl9wcml2LCBjdHhfaWQpOworCX0KK30KKwordm9pZCBp OTE1X29hX2NvbnRleHRfcGluX25vdGlmeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCisJCQkJc3RydWN0IGludGVsX2NvbnRleHQgKmNvbnRleHQpCit7CisJaWYgKCFkZXZfcHJp di0+cGVyZi5pbml0aWFsaXplZCkKKwkJcmV0dXJuOworCisJbXV0ZXhfbG9jaygmZGV2X3ByaXYt PnBlcmYubG9jayk7CisJaTkxNV9vYV9jb250ZXh0X3Bpbl9ub3RpZnlfbG9ja2VkKGRldl9wcml2 LCBjb250ZXh0KTsKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5wZXJmLmxvY2spOworfQorCiBz dGF0aWMgc3NpemVfdCBpOTE1X3BlcmZfcmVhZF9sb2NrZWQoc3RydWN0IGk5MTVfcGVyZl9ldmVu dCAqZXZlbnQsCiAJCQkJICAgICBzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJCQkgICAgIGNoYXIgX191 c2VyICpidWYsCkBAIC0xNTIsNiArODA1LDIwIEBAIHN0YXRpYyBzc2l6ZV90IGk5MTVfcGVyZl9y ZWFkKHN0cnVjdCBmaWxlICpmaWxlLAogCXJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyBlbnVtIGhy dGltZXJfcmVzdGFydCBwb2xsX2NoZWNrX3RpbWVyX2NiKHN0cnVjdCBocnRpbWVyICpocnRpbWVy KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9CisJCWNvbnRhaW5lcl9v ZihocnRpbWVyLCB0eXBlb2YoKmRldl9wcml2KSwKKwkJCSAgICAgcGVyZi5vYS5wb2xsX2NoZWNr X3RpbWVyKTsKKworCWlmICghZGV2X3ByaXYtPnBlcmYub2Eub3BzLm9hX2J1ZmZlcl9pc19lbXB0 eShkZXZfcHJpdikpCisJCXdha2VfdXAoJmRldl9wcml2LT5wZXJmLm9hLnBvbGxfd3EpOworCisJ aHJ0aW1lcl9mb3J3YXJkX25vdyhocnRpbWVyLCBuc190b19rdGltZShQT0xMX1BFUklPRCkpOwor CisJcmV0dXJuIEhSVElNRVJfUkVTVEFSVDsKK30KKwogc3RhdGljIHVuc2lnbmVkIGludCBpOTE1 X3BlcmZfcG9sbF9sb2NrZWQoc3RydWN0IGk5MTVfcGVyZl9ldmVudCAqZXZlbnQsCiAJCQkJCSAg c3RydWN0IGZpbGUgKmZpbGUsCiAJCQkJCSAgcG9sbF90YWJsZSAqd2FpdCkKQEAgLTM2Niw3ICsx MDMzLDExIEBAIGludCBpOTE1X3BlcmZfb3Blbl9pb2N0bF9sb2NrZWQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKIAlldmVudC0+Y3R4ID0gc3BlY2lmaWNfY3R4OwogCiAJc3dp dGNoIChwYXJhbS0+dHlwZSkgewotCQkvKiBUT0RPOiBJbml0IGFjY29yZGluZyB0byBzcGVjaWZp YyB0eXBlICovCisJY2FzZSBJOTE1X1BFUkZfT0FfRVZFTlQ6CisJCXJldCA9IGk5MTVfb2FfZXZl bnRfaW5pdChldmVudCwgcGFyYW0pOworCQlpZiAocmV0KQorCQkJZ290byBlcnJfYWxsb2M7CisJ CWJyZWFrOwogCWRlZmF1bHQ6CiAJCURSTV9FUlJPUigiVW5rbm93biBwZXJmIGV2ZW50IHR5cGVc biIpOwogCQlyZXQgPSAtRUlOVkFMOwpAQCAtNDI5LDcgKzExMDAsMjcgQEAgdm9pZCBpOTE1X3Bl cmZfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKIAotCS8qIEN1cnJlbnRseSBubyBnbG9iYWwg ZXZlbnQgc3RhdGUgdG8gaW5pdGlhbGl6ZSAqLworCWlmICghSVNfSEFTV0VMTChkZXYpKQorCQly ZXR1cm47CisKKwlocnRpbWVyX2luaXQoJmRldl9wcml2LT5wZXJmLm9hLnBvbGxfY2hlY2tfdGlt ZXIsCisJCSAgICAgQ0xPQ0tfTU9OT1RPTklDLCBIUlRJTUVSX01PREVfUkVMKTsKKwlkZXZfcHJp di0+cGVyZi5vYS5wb2xsX2NoZWNrX3RpbWVyLmZ1bmN0aW9uID0gcG9sbF9jaGVja190aW1lcl9j YjsKKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZkZXZfcHJpdi0+cGVyZi5vYS5wb2xsX3dxKTsKKwor CUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+cGVyZi5ldmVudHMpOworCW11dGV4X2luaXQoJmRl dl9wcml2LT5wZXJmLmxvY2spOworCisJZGV2X3ByaXYtPnBlcmYub2Eub3BzLmluaXRfb2FfYnVm ZmVyID0gZ2VuN19pbml0X29hX2J1ZmZlcjsKKwlkZXZfcHJpdi0+cGVyZi5vYS5vcHMuZW5hYmxl X21ldHJpY19zZXQgPSBoc3dfZW5hYmxlX21ldHJpY19zZXQ7CisJZGV2X3ByaXYtPnBlcmYub2Eu b3BzLmRpc2FibGVfbWV0cmljX3NldCA9IGhzd19kaXNhYmxlX21ldHJpY19zZXQ7CisJZGV2X3By aXYtPnBlcmYub2Eub3BzLm9hX2VuYWJsZSA9IGdlbjdfb2FfZW5hYmxlOworCWRldl9wcml2LT5w ZXJmLm9hLm9wcy5vYV9kaXNhYmxlID0gZ2VuN19vYV9kaXNhYmxlOworCWRldl9wcml2LT5wZXJm Lm9hLm9wcy51cGRhdGVfc3BlY2lmaWNfaHdfY3R4X2lkID0gZ2VuN191cGRhdGVfc3BlY2lmaWNf aHdfY3R4X2lkOworCWRldl9wcml2LT5wZXJmLm9hLm9wcy5yZWFkID0gZ2VuN19vYV9yZWFkOwor CWRldl9wcml2LT5wZXJmLm9hLm9wcy5vYV9idWZmZXJfaXNfZW1wdHkgPSBnZW43X29hX2J1ZmZl cl9pc19lbXB0eTsKKworCWRldl9wcml2LT5wZXJmLm9hLm9hX2Zvcm1hdHMgPSBoc3dfb2FfZm9y bWF0czsKIAogCWRldl9wcml2LT5wZXJmLmluaXRpYWxpemVkID0gdHJ1ZTsKIH0KQEAgLTQ0MSw3 ICsxMTMyLDcgQEAgdm9pZCBpOTE1X3BlcmZfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQog CWlmICghZGV2X3ByaXYtPnBlcmYuaW5pdGlhbGl6ZWQpCiAJCXJldHVybjsKIAotCS8qIEN1cnJl bnRseSBub3RoaW5nIHRvIGNsZWFuIHVwICovCisJZGV2X3ByaXYtPnBlcmYub2Eub3BzLmluaXRf b2FfYnVmZmVyID0gTlVMTDsKIAogCWRldl9wcml2LT5wZXJmLmluaXRpYWxpemVkID0gZmFsc2U7 CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAppbmRleCAyZTQ4OGU4Li4wNzM2MzU4IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmgKQEAgLTUzNyw2ICs1MzcsMzQzIEBACiAjZGVmaW5lIEdFTjdfM0RQ UklNX0JBU0VfVkVSVEVYICAgICAgICAgMHgyNDQwCiAKICNkZWZpbmUgR0VON19PQUNPTlRST0wg MHgyMzYwCisjZGVmaW5lICBHRU43X09BQ09OVFJPTF9DVFhfTUFTSwkgICAgMHhGRkZGRjAwMAor I2RlZmluZSAgR0VON19PQUNPTlRST0xfVElNRVJfUEVSSU9EX01BU0sgICAweDNGCisjZGVmaW5l ICBHRU43X09BQ09OVFJPTF9USU1FUl9QRVJJT0RfU0hJRlQgIDYKKyNkZWZpbmUgIEdFTjdfT0FD T05UUk9MX1RJTUVSX0VOQUJMRQkgICAgKDE8PDUpCisjZGVmaW5lICBHRU43X09BQ09OVFJPTF9G T1JNQVRfQTEzCSAgICAoMDw8MikKKyNkZWZpbmUgIEdFTjdfT0FDT05UUk9MX0ZPUk1BVF9BMjkJ ICAgICgxPDwyKQorI2RlZmluZSAgR0VON19PQUNPTlRST0xfRk9STUFUX0ExM19COF9DOCAgICAo Mjw8MikKKyNkZWZpbmUgIEdFTjdfT0FDT05UUk9MX0ZPUk1BVF9BMjlfQjhfQzggICAgKDM8PDIp CisjZGVmaW5lICBHRU43X09BQ09OVFJPTF9GT1JNQVRfQjRfQzgJICAgICg0PDwyKQorI2RlZmlu ZSAgR0VON19PQUNPTlRST0xfRk9STUFUX0E0NV9COF9DOCAgICAoNTw8MikKKyNkZWZpbmUgIEdF TjdfT0FDT05UUk9MX0ZPUk1BVF9CNF9DOF9BMTYgICAgKDY8PDIpCisjZGVmaW5lICBHRU43X09B Q09OVFJPTF9GT1JNQVRfQzRfQjgJICAgICg3PDwyKQorI2RlZmluZSAgR0VON19PQUNPTlRST0xf Rk9STUFUX1NISUZUCSAgICAyCisjZGVmaW5lICBHRU43X09BQ09OVFJPTF9QRVJfQ1RYX0VOQUJM RQkgICAgKDE8PDEpCisjZGVmaW5lICBHRU43X09BQ09OVFJPTF9FTkFCTEUJCSAgICAoMTw8MCkK KworI2RlZmluZSBHRU44X09BQ1RYSUQgMHgyMzY0CisKKyNkZWZpbmUgR0VOOF9PQUNPTlRST0wg MHgyQjAwCisjZGVmaW5lICBHRU44X09BX1JFUE9SVF9GT1JNQVRfQTEyCSAgICAoMDw8MikKKyNk ZWZpbmUgIEdFTjhfT0FfUkVQT1JUX0ZPUk1BVF9BMTJfQjhfQzggICAgKDI8PDIpCisjZGVmaW5l ICBHRU44X09BX1JFUE9SVF9GT1JNQVRfQTM2X0I4X0M4ICAgICg1PDwyKQorI2RlZmluZSAgR0VO OF9PQV9SRVBPUlRfRk9STUFUX0M0X0I4CSAgICAoNzw8MikKKyNkZWZpbmUgIEdFTjhfT0FfUkVQ T1JUX0ZPUk1BVF9TSElGVAkgICAgMgorI2RlZmluZSAgR0VOOF9PQV9TUEVDSUZJQ19DT05URVhU X0VOQUJMRSAgICAoMTw8MSkKKyNkZWZpbmUgIEdFTjhfT0FfQ09VTlRFUl9FTkFCTEUgICAgICAg ICAgICAgKDE8PDApCisKKyNkZWZpbmUgR0VOOF9PQUNUWENPTlRST0wgMHgyMzYwCisjZGVmaW5l ICBHRU44X09BX1RJTUVSX1BFUklPRF9NQVNLCSAgICAweDNGCisjZGVmaW5lICBHRU44X09BX1RJ TUVSX1BFUklPRF9TSElGVAkgICAgMgorI2RlZmluZSAgR0VOOF9PQV9USU1FUl9FTkFCTEUJCSAg ICAoMTw8MSkKKyNkZWZpbmUgIEdFTjhfT0FfQ09VTlRFUl9SRVNVTUUJCSAgICAoMTw8MCkKKwor I2RlZmluZSBHRU43X09BQlVGRkVSIDB4MjNCMCAvKiBSL1cgKi8KKyNkZWZpbmUgIEdFTjdfT0FC VUZGRVJfT1ZFUlJVTl9ESVNBQkxFCSAgICAoMTw8MykKKyNkZWZpbmUgIEdFTjdfT0FCVUZGRVJf RURHRV9UUklHR0VSCSAgICAoMTw8MikKKyNkZWZpbmUgIEdFTjdfT0FCVUZGRVJfU1RPUF9SRVNV TUVfRU5BQkxFICAgKDE8PDEpCisjZGVmaW5lICBHRU43X09BQlVGRkVSX1JFU1VNRQkJICAgICgx PDwwKQorCisjZGVmaW5lIEdFTjhfT0FCVUZGRVIgMHgyYjE0CisKKyNkZWZpbmUgR0VON19PQVNU QVRVUzEgMHgyMzY0CisjZGVmaW5lICBHRU43X09BU1RBVFVTMV9UQUlMX01BU0sJICAgIDB4ZmZm ZmZmYzAKKyNkZWZpbmUgIEdFTjdfT0FTVEFUVVMxX0NPVU5URVJfT1ZFUkZMT1cgICAgKDE8PDIp CisjZGVmaW5lICBHRU43X09BU1RBVFVTMV9PQUJVRkZFUl9PVkVSRkxPVyAgICgxPDwxKQorI2Rl ZmluZSAgR0VON19PQVNUQVRVUzFfUkVQT1JUX0xPU1QJICAgICgxPDwwKQorCisjZGVmaW5lIEdF TjdfT0FTVEFUVVMyIDB4MjM2OAorI2RlZmluZSBHRU43X09BU1RBVFVTMl9IRUFEX01BU0sgICAg MHhmZmZmZmZjMAorCisjZGVmaW5lIEdFTjhfT0FTVEFUVVMgMHgyYjA4CisjZGVmaW5lICBHRU44 X09BU1RBVFVTX09WRVJSVU5fU1RBVFVTCSAgICAoMTw8MykKKyNkZWZpbmUgIEdFTjhfT0FTVEFU VVNfQ09VTlRFUl9PVkVSRkxPVyAgICAgKDE8PDIpCisjZGVmaW5lICBHRU44X09BU1RBVFVTX09B QlVGRkVSX09WRVJGTE9XICAgICgxPDwxKQorI2RlZmluZSAgR0VOOF9PQVNUQVRVU19SRVBPUlRf TE9TVAkgICAgKDE8PDApCisKKyNkZWZpbmUgR0VOOF9PQUhFQURQVFIgMHgyQjBDCisjZGVmaW5l IEdFTjhfT0FUQUlMUFRSIDB4MkIxMAorCisjZGVmaW5lIE9BQlVGRkVSX1NJWkVfMTI4SyAgKDA8 PDMpCisjZGVmaW5lIE9BQlVGRkVSX1NJWkVfMjU2SyAgKDE8PDMpCisjZGVmaW5lIE9BQlVGRkVS X1NJWkVfNTEySyAgKDI8PDMpCisjZGVmaW5lIE9BQlVGRkVSX1NJWkVfMU0gICAgKDM8PDMpCisj ZGVmaW5lIE9BQlVGRkVSX1NJWkVfMk0gICAgKDQ8PDMpCisjZGVmaW5lIE9BQlVGRkVSX1NJWkVf NE0gICAgKDU8PDMpCisjZGVmaW5lIE9BQlVGRkVSX1NJWkVfOE0gICAgKDY8PDMpCisjZGVmaW5l IE9BQlVGRkVSX1NJWkVfMTZNICAgKDc8PDMpCisKKyNkZWZpbmUgT0FfTUVNX1NFTEVDVF9HR1RU ICAoMTw8MCkKKworI2RlZmluZSBFVV9QRVJGX0NOVEwwCSAgICAweGU0NTgKKworI2RlZmluZSBH RFRfQ0hJQ0tFTl9CSVRTICAgIDB4OTg0MAorI2RlZmluZSBHVF9OT0FfRU5BQkxFCSAgICAweDAw MDAwMDgwCisKKy8qCisgKiBPQSBCb29sZWFuIHN0YXRlCisgKi8KKworI2RlZmluZSBPQVJFUE9S VFRSSUcxIDB4Mjc0MAorI2RlZmluZSBPQVJFUE9SVFRSSUcxX1RIUkVTSE9MRF9NQVNLIDB4ZmZm ZgorI2RlZmluZSBPQVJFUE9SVFRSSUcxX0VER0VfTEVWRUxfVFJJR0VSX1NFTEVDVF9NQVNLIDB4 ZmZmZjAwMDAgLyogMD1sZXZlbCAqLworCisjZGVmaW5lIE9BUkVQT1JUVFJJRzIgMHgyNzQ0Cisj ZGVmaW5lIE9BUkVQT1JUVFJJRzJfSU5WRVJUX0FfMCAgKDE8PDApCisjZGVmaW5lIE9BUkVQT1JU VFJJRzJfSU5WRVJUX0FfMSAgKDE8PDEpCisjZGVmaW5lIE9BUkVQT1JUVFJJRzJfSU5WRVJUX0Ff MiAgKDE8PDIpCisjZGVmaW5lIE9BUkVQT1JUVFJJRzJfSU5WRVJUX0FfMyAgKDE8PDMpCisjZGVm aW5lIE9BUkVQT1JUVFJJRzJfSU5WRVJUX0FfNCAgKDE8PDQpCisjZGVmaW5lIE9BUkVQT1JUVFJJ RzJfSU5WRVJUX0FfNSAgKDE8PDUpCisjZGVmaW5lIE9BUkVQT1JUVFJJRzJfSU5WRVJUX0FfNiAg KDE8PDYpCisjZGVmaW5lIE9BUkVQT1JUVFJJRzJfSU5WRVJUX0FfNyAgKDE8PDcpCisjZGVmaW5l IE9BUkVQT1JUVFJJRzJfSU5WRVJUX0FfOCAgKDE8PDgpCisjZGVmaW5lIE9BUkVQT1JUVFJJRzJf SU5WRVJUX0FfOSAgKDE8PDkpCisjZGVmaW5lIE9BUkVQT1JUVFJJRzJfSU5WRVJUX0FfMTAgKDE8 PDEwKQorI2RlZmluZSBPQVJFUE9SVFRSSUcyX0lOVkVSVF9BXzExICgxPDwxMSkKKyNkZWZpbmUg T0FSRVBPUlRUUklHMl9JTlZFUlRfQV8xMiAoMTw8MTIpCisjZGVmaW5lIE9BUkVQT1JUVFJJRzJf SU5WRVJUX0FfMTMgKDE8PDEzKQorI2RlZmluZSBPQVJFUE9SVFRSSUcyX0lOVkVSVF9BXzE0ICgx PDwxNCkKKyNkZWZpbmUgT0FSRVBPUlRUUklHMl9JTlZFUlRfQV8xNSAoMTw8MTUpCisjZGVmaW5l IE9BUkVQT1JUVFJJRzJfSU5WRVJUX0JfMCAgKDE8PDE2KQorI2RlZmluZSBPQVJFUE9SVFRSSUcy X0lOVkVSVF9CXzEgICgxPDwxNykKKyNkZWZpbmUgT0FSRVBPUlRUUklHMl9JTlZFUlRfQl8yICAo MTw8MTgpCisjZGVmaW5lIE9BUkVQT1JUVFJJRzJfSU5WRVJUX0JfMyAgKDE8PDE5KQorI2RlZmlu ZSBPQVJFUE9SVFRSSUcyX0lOVkVSVF9DXzAgICgxPDwyMCkKKyNkZWZpbmUgT0FSRVBPUlRUUklH Ml9JTlZFUlRfQ18xICAoMTw8MjEpCisjZGVmaW5lIE9BUkVQT1JUVFJJRzJfSU5WRVJUX0RfMCAg KDE8PDIyKQorI2RlZmluZSBPQVJFUE9SVFRSSUcyX1RIUkVTSE9MRF9FTkFCTEUJICAgICgxPDwy MykKKyNkZWZpbmUgT0FSRVBPUlRUUklHMl9SRVBPUlRfVFJJR0dFUl9FTkFCTEUgKDE8PDMxKQor CisjZGVmaW5lIE9BUkVQT1JUVFJJRzMgMHgyNzQ4CisjZGVmaW5lIE9BUkVQT1JUVFJJRzNfTk9B X1NFTEVDVF9NQVNLCSAgICAweGYKKyNkZWZpbmUgT0FSRVBPUlRUUklHM19OT0FfU0VMRUNUXzhf U0hJRlQgICAgMAorI2RlZmluZSBPQVJFUE9SVFRSSUczX05PQV9TRUxFQ1RfOV9TSElGVCAgICA0 CisjZGVmaW5lIE9BUkVQT1JUVFJJRzNfTk9BX1NFTEVDVF8xMF9TSElGVCAgIDgKKyNkZWZpbmUg T0FSRVBPUlRUUklHM19OT0FfU0VMRUNUXzExX1NISUZUICAgMTIKKyNkZWZpbmUgT0FSRVBPUlRU UklHM19OT0FfU0VMRUNUXzEyX1NISUZUICAgMTYKKyNkZWZpbmUgT0FSRVBPUlRUUklHM19OT0Ff U0VMRUNUXzEzX1NISUZUICAgMjAKKyNkZWZpbmUgT0FSRVBPUlRUUklHM19OT0FfU0VMRUNUXzE0 X1NISUZUICAgMjQKKyNkZWZpbmUgT0FSRVBPUlRUUklHM19OT0FfU0VMRUNUXzE1X1NISUZUICAg MjgKKworI2RlZmluZSBPQVJFUE9SVFRSSUc0IDB4Mjc0YworI2RlZmluZSBPQVJFUE9SVFRSSUc0 X05PQV9TRUxFQ1RfTUFTSwkgICAgMHhmCisjZGVmaW5lIE9BUkVQT1JUVFJJRzRfTk9BX1NFTEVD VF8wX1NISUZUICAgIDAKKyNkZWZpbmUgT0FSRVBPUlRUUklHNF9OT0FfU0VMRUNUXzFfU0hJRlQg ICAgNAorI2RlZmluZSBPQVJFUE9SVFRSSUc0X05PQV9TRUxFQ1RfMl9TSElGVCAgICA4CisjZGVm aW5lIE9BUkVQT1JUVFJJRzRfTk9BX1NFTEVDVF8zX1NISUZUICAgIDEyCisjZGVmaW5lIE9BUkVQ T1JUVFJJRzRfTk9BX1NFTEVDVF80X1NISUZUICAgIDE2CisjZGVmaW5lIE9BUkVQT1JUVFJJRzRf Tk9BX1NFTEVDVF81X1NISUZUICAgIDIwCisjZGVmaW5lIE9BUkVQT1JUVFJJRzRfTk9BX1NFTEVD VF82X1NISUZUICAgIDI0CisjZGVmaW5lIE9BUkVQT1JUVFJJRzRfTk9BX1NFTEVDVF83X1NISUZU ICAgIDI4CisKKyNkZWZpbmUgT0FSRVBPUlRUUklHNSAweDI3NTAKKyNkZWZpbmUgT0FSRVBPUlRU UklHNV9USFJFU0hPTERfTUFTSyAweGZmZmYKKyNkZWZpbmUgT0FSRVBPUlRUUklHNV9FREdFX0xF VkVMX1RSSUdFUl9TRUxFQ1RfTUFTSyAweGZmZmYwMDAwIC8qIDA9bGV2ZWwgKi8KKworI2RlZmlu ZSBPQVJFUE9SVFRSSUc2IDB4Mjc1NAorI2RlZmluZSBPQVJFUE9SVFRSSUc2X0lOVkVSVF9BXzAg ICgxPDwwKQorI2RlZmluZSBPQVJFUE9SVFRSSUc2X0lOVkVSVF9BXzEgICgxPDwxKQorI2RlZmlu ZSBPQVJFUE9SVFRSSUc2X0lOVkVSVF9BXzIgICgxPDwyKQorI2RlZmluZSBPQVJFUE9SVFRSSUc2 X0lOVkVSVF9BXzMgICgxPDwzKQorI2RlZmluZSBPQVJFUE9SVFRSSUc2X0lOVkVSVF9BXzQgICgx PDw0KQorI2RlZmluZSBPQVJFUE9SVFRSSUc2X0lOVkVSVF9BXzUgICgxPDw1KQorI2RlZmluZSBP QVJFUE9SVFRSSUc2X0lOVkVSVF9BXzYgICgxPDw2KQorI2RlZmluZSBPQVJFUE9SVFRSSUc2X0lO VkVSVF9BXzcgICgxPDw3KQorI2RlZmluZSBPQVJFUE9SVFRSSUc2X0lOVkVSVF9BXzggICgxPDw4 KQorI2RlZmluZSBPQVJFUE9SVFRSSUc2X0lOVkVSVF9BXzkgICgxPDw5KQorI2RlZmluZSBPQVJF UE9SVFRSSUc2X0lOVkVSVF9BXzEwICgxPDwxMCkKKyNkZWZpbmUgT0FSRVBPUlRUUklHNl9JTlZF UlRfQV8xMSAoMTw8MTEpCisjZGVmaW5lIE9BUkVQT1JUVFJJRzZfSU5WRVJUX0FfMTIgKDE8PDEy KQorI2RlZmluZSBPQVJFUE9SVFRSSUc2X0lOVkVSVF9BXzEzICgxPDwxMykKKyNkZWZpbmUgT0FS RVBPUlRUUklHNl9JTlZFUlRfQV8xNCAoMTw8MTQpCisjZGVmaW5lIE9BUkVQT1JUVFJJRzZfSU5W RVJUX0FfMTUgKDE8PDE1KQorI2RlZmluZSBPQVJFUE9SVFRSSUc2X0lOVkVSVF9CXzAgICgxPDwx NikKKyNkZWZpbmUgT0FSRVBPUlRUUklHNl9JTlZFUlRfQl8xICAoMTw8MTcpCisjZGVmaW5lIE9B UkVQT1JUVFJJRzZfSU5WRVJUX0JfMiAgKDE8PDE4KQorI2RlZmluZSBPQVJFUE9SVFRSSUc2X0lO VkVSVF9CXzMgICgxPDwxOSkKKyNkZWZpbmUgT0FSRVBPUlRUUklHNl9JTlZFUlRfQ18wICAoMTw8 MjApCisjZGVmaW5lIE9BUkVQT1JUVFJJRzZfSU5WRVJUX0NfMSAgKDE8PDIxKQorI2RlZmluZSBP QVJFUE9SVFRSSUc2X0lOVkVSVF9EXzAgICgxPDwyMikKKyNkZWZpbmUgT0FSRVBPUlRUUklHNl9U SFJFU0hPTERfRU5BQkxFCSAgICAoMTw8MjMpCisjZGVmaW5lIE9BUkVQT1JUVFJJRzZfUkVQT1JU X1RSSUdHRVJfRU5BQkxFICgxPDwzMSkKKworI2RlZmluZSBPQVJFUE9SVFRSSUc3IDB4Mjc1OAor I2RlZmluZSBPQVJFUE9SVFRSSUc3X05PQV9TRUxFQ1RfTUFTSwkgICAgMHhmCisjZGVmaW5lIE9B UkVQT1JUVFJJRzdfTk9BX1NFTEVDVF84X1NISUZUICAgIDAKKyNkZWZpbmUgT0FSRVBPUlRUUklH N19OT0FfU0VMRUNUXzlfU0hJRlQgICAgNAorI2RlZmluZSBPQVJFUE9SVFRSSUc3X05PQV9TRUxF Q1RfMTBfU0hJRlQgICA4CisjZGVmaW5lIE9BUkVQT1JUVFJJRzdfTk9BX1NFTEVDVF8xMV9TSElG VCAgIDEyCisjZGVmaW5lIE9BUkVQT1JUVFJJRzdfTk9BX1NFTEVDVF8xMl9TSElGVCAgIDE2Cisj ZGVmaW5lIE9BUkVQT1JUVFJJRzdfTk9BX1NFTEVDVF8xM19TSElGVCAgIDIwCisjZGVmaW5lIE9B UkVQT1JUVFJJRzdfTk9BX1NFTEVDVF8xNF9TSElGVCAgIDI0CisjZGVmaW5lIE9BUkVQT1JUVFJJ RzdfTk9BX1NFTEVDVF8xNV9TSElGVCAgIDI4CisKKyNkZWZpbmUgT0FSRVBPUlRUUklHOCAweDI3 NWMKKyNkZWZpbmUgT0FSRVBPUlRUUklHOF9OT0FfU0VMRUNUX01BU0sJICAgIDB4ZgorI2RlZmlu ZSBPQVJFUE9SVFRSSUc4X05PQV9TRUxFQ1RfMF9TSElGVCAgICAwCisjZGVmaW5lIE9BUkVQT1JU VFJJRzhfTk9BX1NFTEVDVF8xX1NISUZUICAgIDQKKyNkZWZpbmUgT0FSRVBPUlRUUklHOF9OT0Ff U0VMRUNUXzJfU0hJRlQgICAgOAorI2RlZmluZSBPQVJFUE9SVFRSSUc4X05PQV9TRUxFQ1RfM19T SElGVCAgICAxMgorI2RlZmluZSBPQVJFUE9SVFRSSUc4X05PQV9TRUxFQ1RfNF9TSElGVCAgICAx NgorI2RlZmluZSBPQVJFUE9SVFRSSUc4X05PQV9TRUxFQ1RfNV9TSElGVCAgICAyMAorI2RlZmlu ZSBPQVJFUE9SVFRSSUc4X05PQV9TRUxFQ1RfNl9TSElGVCAgICAyNAorI2RlZmluZSBPQVJFUE9S VFRSSUc4X05PQV9TRUxFQ1RfN19TSElGVCAgICAyOAorCisjZGVmaW5lIE9BU1RBUlRUUklHMSAw eDI3MTAKKyNkZWZpbmUgT0FTVEFSVFRSSUcxX1RIUkVTSE9MRF9DT1VOVF9NQVNLX01CWiAweGZm ZmYwMDAwCisjZGVmaW5lIE9BU1RBUlRUUklHMV9USFJFU0hPTERfTUFTSwkgICAgICAweGZmZmYK KworI2RlZmluZSBPQVNUQVJUVFJJRzIgMHgyNzE0CisjZGVmaW5lIE9BU1RBUlRUUklHMl9JTlZF UlRfQV8wICgxPDwwKQorI2RlZmluZSBPQVNUQVJUVFJJRzJfSU5WRVJUX0FfMSAoMTw8MSkKKyNk ZWZpbmUgT0FTVEFSVFRSSUcyX0lOVkVSVF9BXzIgKDE8PDIpCisjZGVmaW5lIE9BU1RBUlRUUklH Ml9JTlZFUlRfQV8zICgxPDwzKQorI2RlZmluZSBPQVNUQVJUVFJJRzJfSU5WRVJUX0FfNCAoMTw8 NCkKKyNkZWZpbmUgT0FTVEFSVFRSSUcyX0lOVkVSVF9BXzUgKDE8PDUpCisjZGVmaW5lIE9BU1RB UlRUUklHMl9JTlZFUlRfQV82ICgxPDw2KQorI2RlZmluZSBPQVNUQVJUVFJJRzJfSU5WRVJUX0Ff NyAoMTw8NykKKyNkZWZpbmUgT0FTVEFSVFRSSUcyX0lOVkVSVF9BXzggKDE8PDgpCisjZGVmaW5l IE9BU1RBUlRUUklHMl9JTlZFUlRfQV85ICgxPDw5KQorI2RlZmluZSBPQVNUQVJUVFJJRzJfSU5W RVJUX0FfMTAgKDE8PDEwKQorI2RlZmluZSBPQVNUQVJUVFJJRzJfSU5WRVJUX0FfMTEgKDE8PDEx KQorI2RlZmluZSBPQVNUQVJUVFJJRzJfSU5WRVJUX0FfMTIgKDE8PDEyKQorI2RlZmluZSBPQVNU QVJUVFJJRzJfSU5WRVJUX0FfMTMgKDE8PDEzKQorI2RlZmluZSBPQVNUQVJUVFJJRzJfSU5WRVJU X0FfMTQgKDE8PDE0KQorI2RlZmluZSBPQVNUQVJUVFJJRzJfSU5WRVJUX0FfMTUgKDE8PDE1KQor I2RlZmluZSBPQVNUQVJUVFJJRzJfSU5WRVJUX0JfMCAoMTw8MTYpCisjZGVmaW5lIE9BU1RBUlRU UklHMl9JTlZFUlRfQl8xICgxPDwxNykKKyNkZWZpbmUgT0FTVEFSVFRSSUcyX0lOVkVSVF9CXzIg KDE8PDE4KQorI2RlZmluZSBPQVNUQVJUVFJJRzJfSU5WRVJUX0JfMyAoMTw8MTkpCisjZGVmaW5l IE9BU1RBUlRUUklHMl9JTlZFUlRfQ18wICgxPDwyMCkKKyNkZWZpbmUgT0FTVEFSVFRSSUcyX0lO VkVSVF9DXzEgKDE8PDIxKQorI2RlZmluZSBPQVNUQVJUVFJJRzJfSU5WRVJUX0RfMCAoMTw8MjIp CisjZGVmaW5lIE9BU1RBUlRUUklHMl9USFJFU0hPTERfRU5BQkxFCSAgICAoMTw8MjMpCisjZGVm aW5lIE9BU1RBUlRUUklHMl9TVEFSVF9UUklHX0ZMQUdfTUJaICAgICgxPDwyNCkKKyNkZWZpbmUg T0FTVEFSVFRSSUcyX0VWRU5UX1NFTEVDVF8wICAoMTw8MjgpCisjZGVmaW5lIE9BU1RBUlRUUklH Ml9FVkVOVF9TRUxFQ1RfMSAgKDE8PDI5KQorI2RlZmluZSBPQVNUQVJUVFJJRzJfRVZFTlRfU0VM RUNUXzIgICgxPDwzMCkKKyNkZWZpbmUgT0FTVEFSVFRSSUcyX0VWRU5UX1NFTEVDVF8zICAoMTw8 MzEpCisKKyNkZWZpbmUgT0FTVEFSVFRSSUczIDB4MjcxOAorI2RlZmluZSBPQVNUQVJUVFJJRzNf Tk9BX1NFTEVDVF9NQVNLCSAgIDB4ZgorI2RlZmluZSBPQVNUQVJUVFJJRzNfTk9BX1NFTEVDVF84 X1NISUZUICAgIDAKKyNkZWZpbmUgT0FTVEFSVFRSSUczX05PQV9TRUxFQ1RfOV9TSElGVCAgICA0 CisjZGVmaW5lIE9BU1RBUlRUUklHM19OT0FfU0VMRUNUXzEwX1NISUZUICAgOAorI2RlZmluZSBP QVNUQVJUVFJJRzNfTk9BX1NFTEVDVF8xMV9TSElGVCAgIDEyCisjZGVmaW5lIE9BU1RBUlRUUklH M19OT0FfU0VMRUNUXzEyX1NISUZUICAgMTYKKyNkZWZpbmUgT0FTVEFSVFRSSUczX05PQV9TRUxF Q1RfMTNfU0hJRlQgICAyMAorI2RlZmluZSBPQVNUQVJUVFJJRzNfTk9BX1NFTEVDVF8xNF9TSElG VCAgIDI0CisjZGVmaW5lIE9BU1RBUlRUUklHM19OT0FfU0VMRUNUXzE1X1NISUZUICAgMjgKKwor I2RlZmluZSBPQVNUQVJUVFJJRzQgMHgyNzFjCisjZGVmaW5lIE9BU1RBUlRUUklHNF9OT0FfU0VM RUNUX01BU0sJICAgIDB4ZgorI2RlZmluZSBPQVNUQVJUVFJJRzRfTk9BX1NFTEVDVF8wX1NISUZU ICAgIDAKKyNkZWZpbmUgT0FTVEFSVFRSSUc0X05PQV9TRUxFQ1RfMV9TSElGVCAgICA0CisjZGVm aW5lIE9BU1RBUlRUUklHNF9OT0FfU0VMRUNUXzJfU0hJRlQgICAgOAorI2RlZmluZSBPQVNUQVJU VFJJRzRfTk9BX1NFTEVDVF8zX1NISUZUICAgIDEyCisjZGVmaW5lIE9BU1RBUlRUUklHNF9OT0Ff U0VMRUNUXzRfU0hJRlQgICAgMTYKKyNkZWZpbmUgT0FTVEFSVFRSSUc0X05PQV9TRUxFQ1RfNV9T SElGVCAgICAyMAorI2RlZmluZSBPQVNUQVJUVFJJRzRfTk9BX1NFTEVDVF82X1NISUZUICAgIDI0 CisjZGVmaW5lIE9BU1RBUlRUUklHNF9OT0FfU0VMRUNUXzdfU0hJRlQgICAgMjgKKworI2RlZmlu ZSBPQVNUQVJUVFJJRzUgMHgyNzIwCisjZGVmaW5lIE9BU1RBUlRUUklHNV9USFJFU0hPTERfQ09V TlRfTUFTS19NQlogMHhmZmZmMDAwMAorI2RlZmluZSBPQVNUQVJUVFJJRzVfVEhSRVNIT0xEX01B U0sJICAgICAgMHhmZmZmCisKKyNkZWZpbmUgT0FTVEFSVFRSSUc2IDB4MjcyNAorI2RlZmluZSBP QVNUQVJUVFJJRzZfSU5WRVJUX0FfMCAoMTw8MCkKKyNkZWZpbmUgT0FTVEFSVFRSSUc2X0lOVkVS VF9BXzEgKDE8PDEpCisjZGVmaW5lIE9BU1RBUlRUUklHNl9JTlZFUlRfQV8yICgxPDwyKQorI2Rl ZmluZSBPQVNUQVJUVFJJRzZfSU5WRVJUX0FfMyAoMTw8MykKKyNkZWZpbmUgT0FTVEFSVFRSSUc2 X0lOVkVSVF9BXzQgKDE8PDQpCisjZGVmaW5lIE9BU1RBUlRUUklHNl9JTlZFUlRfQV81ICgxPDw1 KQorI2RlZmluZSBPQVNUQVJUVFJJRzZfSU5WRVJUX0FfNiAoMTw8NikKKyNkZWZpbmUgT0FTVEFS VFRSSUc2X0lOVkVSVF9BXzcgKDE8PDcpCisjZGVmaW5lIE9BU1RBUlRUUklHNl9JTlZFUlRfQV84 ICgxPDw4KQorI2RlZmluZSBPQVNUQVJUVFJJRzZfSU5WRVJUX0FfOSAoMTw8OSkKKyNkZWZpbmUg T0FTVEFSVFRSSUc2X0lOVkVSVF9BXzEwICgxPDwxMCkKKyNkZWZpbmUgT0FTVEFSVFRSSUc2X0lO VkVSVF9BXzExICgxPDwxMSkKKyNkZWZpbmUgT0FTVEFSVFRSSUc2X0lOVkVSVF9BXzEyICgxPDwx MikKKyNkZWZpbmUgT0FTVEFSVFRSSUc2X0lOVkVSVF9BXzEzICgxPDwxMykKKyNkZWZpbmUgT0FT VEFSVFRSSUc2X0lOVkVSVF9BXzE0ICgxPDwxNCkKKyNkZWZpbmUgT0FTVEFSVFRSSUc2X0lOVkVS VF9BXzE1ICgxPDwxNSkKKyNkZWZpbmUgT0FTVEFSVFRSSUc2X0lOVkVSVF9CXzAgKDE8PDE2KQor I2RlZmluZSBPQVNUQVJUVFJJRzZfSU5WRVJUX0JfMSAoMTw8MTcpCisjZGVmaW5lIE9BU1RBUlRU UklHNl9JTlZFUlRfQl8yICgxPDwxOCkKKyNkZWZpbmUgT0FTVEFSVFRSSUc2X0lOVkVSVF9CXzMg KDE8PDE5KQorI2RlZmluZSBPQVNUQVJUVFJJRzZfSU5WRVJUX0NfMCAoMTw8MjApCisjZGVmaW5l IE9BU1RBUlRUUklHNl9JTlZFUlRfQ18xICgxPDwyMSkKKyNkZWZpbmUgT0FTVEFSVFRSSUc2X0lO VkVSVF9EXzAgKDE8PDIyKQorI2RlZmluZSBPQVNUQVJUVFJJRzZfVEhSRVNIT0xEX0VOQUJMRQkg ICAgKDE8PDIzKQorI2RlZmluZSBPQVNUQVJUVFJJRzZfU1RBUlRfVFJJR19GTEFHX01CWiAgICAo MTw8MjQpCisjZGVmaW5lIE9BU1RBUlRUUklHNl9FVkVOVF9TRUxFQ1RfNCAgKDE8PDI4KQorI2Rl ZmluZSBPQVNUQVJUVFJJRzZfRVZFTlRfU0VMRUNUXzUgICgxPDwyOSkKKyNkZWZpbmUgT0FTVEFS VFRSSUc2X0VWRU5UX1NFTEVDVF82ICAoMTw8MzApCisjZGVmaW5lIE9BU1RBUlRUUklHNl9FVkVO VF9TRUxFQ1RfNyAgKDE8PDMxKQorCisjZGVmaW5lIE9BU1RBUlRUUklHNyAweDI3MjgKKyNkZWZp bmUgT0FTVEFSVFRSSUc3X05PQV9TRUxFQ1RfTUFTSwkgICAweGYKKyNkZWZpbmUgT0FTVEFSVFRS SUc3X05PQV9TRUxFQ1RfOF9TSElGVCAgICAwCisjZGVmaW5lIE9BU1RBUlRUUklHN19OT0FfU0VM RUNUXzlfU0hJRlQgICAgNAorI2RlZmluZSBPQVNUQVJUVFJJRzdfTk9BX1NFTEVDVF8xMF9TSElG VCAgIDgKKyNkZWZpbmUgT0FTVEFSVFRSSUc3X05PQV9TRUxFQ1RfMTFfU0hJRlQgICAxMgorI2Rl ZmluZSBPQVNUQVJUVFJJRzdfTk9BX1NFTEVDVF8xMl9TSElGVCAgIDE2CisjZGVmaW5lIE9BU1RB UlRUUklHN19OT0FfU0VMRUNUXzEzX1NISUZUICAgMjAKKyNkZWZpbmUgT0FTVEFSVFRSSUc3X05P QV9TRUxFQ1RfMTRfU0hJRlQgICAyNAorI2RlZmluZSBPQVNUQVJUVFJJRzdfTk9BX1NFTEVDVF8x NV9TSElGVCAgIDI4CisKKyNkZWZpbmUgT0FTVEFSVFRSSUc4IDB4MjcyYworI2RlZmluZSBPQVNU QVJUVFJJRzhfTk9BX1NFTEVDVF9NQVNLCSAgIDB4ZgorI2RlZmluZSBPQVNUQVJUVFJJRzhfTk9B X1NFTEVDVF8wX1NISUZUICAgIDAKKyNkZWZpbmUgT0FTVEFSVFRSSUc4X05PQV9TRUxFQ1RfMV9T SElGVCAgICA0CisjZGVmaW5lIE9BU1RBUlRUUklHOF9OT0FfU0VMRUNUXzJfU0hJRlQgICAgOAor I2RlZmluZSBPQVNUQVJUVFJJRzhfTk9BX1NFTEVDVF8zX1NISUZUICAgIDEyCisjZGVmaW5lIE9B U1RBUlRUUklHOF9OT0FfU0VMRUNUXzRfU0hJRlQgICAgMTYKKyNkZWZpbmUgT0FTVEFSVFRSSUc4 X05PQV9TRUxFQ1RfNV9TSElGVCAgICAyMAorI2RlZmluZSBPQVNUQVJUVFJJRzhfTk9BX1NFTEVD VF82X1NISUZUICAgIDI0CisjZGVmaW5lIE9BU1RBUlRUUklHOF9OT0FfU0VMRUNUXzdfU0hJRlQg ICAgMjgKKworLyogQ0VDWF8wICovCisjZGVmaW5lIE9BQ0VDX0NPTVBBUkVfTEVTU19PUl9FUVVB TAk2CisjZGVmaW5lIE9BQ0VDX0NPTVBBUkVfTk9UX0VRVUFMCQk1CisjZGVmaW5lIE9BQ0VDX0NP TVBBUkVfTEVTU19USEFOCQk0CisjZGVmaW5lIE9BQ0VDX0NPTVBBUkVfR1JFQVRFUl9PUl9FUVVB TAkzCisjZGVmaW5lIE9BQ0VDX0NPTVBBUkVfRVFVQUwJCTIKKyNkZWZpbmUgT0FDRUNfQ09NUEFS RV9HUkVBVEVSX1RIQU4JMQorI2RlZmluZSBPQUNFQ19DT01QQVJFX0FOWV9FUVVBTAkJMAorCisj ZGVmaW5lIE9BQ0VDX0NPTVBBUkVfVkFMVUVfTUFTSyAgICAweGZmZmYKKyNkZWZpbmUgT0FDRUNf Q09NUEFSRV9WQUxVRV9TSElGVCAgIDMKKworI2RlZmluZSBPQUNFQ19TRUxFQ1RfTk9BCSgwPDwx OSkKKyNkZWZpbmUgT0FDRUNfU0VMRUNUX1BSRVYJKDE8PDE5KQorI2RlZmluZSBPQUNFQ19TRUxF Q1RfQk9PTEVBTgkoMjw8MTkpCisKKy8qIENFQ1hfMSAqLworI2RlZmluZSBPQUNFQ19NQVNLX01B U0sJCSAgICAweGZmZmYKKyNkZWZpbmUgT0FDRUNfQ09OU0lERVJBVElPTlNfTUFTSyAgIDB4ZmZm ZgorI2RlZmluZSBPQUNFQ19DT05TSURFUkFUSU9OU19TSElGVCAgMTYKKworI2RlZmluZSBPQUNF QzBfMCAweDI3NzAKKyNkZWZpbmUgT0FDRUMwXzEgMHgyNzc0CisjZGVmaW5lIE9BQ0VDMV8wIDB4 Mjc3OAorI2RlZmluZSBPQUNFQzFfMSAweDI3N2MKKyNkZWZpbmUgT0FDRUMyXzAgMHgyNzgwCisj ZGVmaW5lIE9BQ0VDMl8xIDB4Mjc4NAorI2RlZmluZSBPQUNFQzNfMCAweDI3ODgKKyNkZWZpbmUg T0FDRUMzXzEgMHgyNzhjCisjZGVmaW5lIE9BQ0VDNF8wIDB4Mjc5MAorI2RlZmluZSBPQUNFQzRf MSAweDI3OTQKKyNkZWZpbmUgT0FDRUM1XzAgMHgyNzk4CisjZGVmaW5lIE9BQ0VDNV8xIDB4Mjc5 YworI2RlZmluZSBPQUNFQzZfMCAweDI3YTAKKyNkZWZpbmUgT0FDRUM2XzEgMHgyN2E0CisjZGVm aW5lIE9BQ0VDN18wIDB4MjdhOAorI2RlZmluZSBPQUNFQzdfMSAweDI3YWMKKwogCiAjZGVmaW5l IF9HRU43X1BJUEVBX0RFX0xPQURfU0wJMHg3MDA2OAogI2RlZmluZSBfR0VON19QSVBFQl9ERV9M T0FEX1NMCTB4NzEwNjgKQEAgLTY2NjgsNiArNzAwNSw3IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJf d2VsbHMgewogIyBkZWZpbmUgR0VONl9SQ0NVTklUX0NMT0NLX0dBVEVfRElTQUJMRQkJKDEgPDwg MTEpCiAKICNkZWZpbmUgR0VONl9VQ0dDVEwzCQkJCTB4OTQwOAorIyBkZWZpbmUgR0VONl9PQUNT VU5JVF9DTE9DS19HQVRFX0RJU0FCTEUJCSgxIDw8IDIwKQogCiAjZGVmaW5lIEdFTjdfVUNHQ1RM NAkJCQkweDk0MGMKICNkZWZpbmUgIEdFTjdfTDNCQU5LMlhfQ0xPQ0tfR0FURV9ESVNBQkxFCSgx PDwyNSkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUv dWFwaS9kcm0vaTkxNV9kcm0uaAppbmRleCBhODRmNzFmLi5hZjVkZmQ0IDEwMDY0NAotLS0gYS9p bmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2Ry bS5oCkBAIC01OCw2ICs1OCwyOSBAQAogI2RlZmluZSBJOTE1X0VSUk9SX1VFVkVOVAkJIkVSUk9S IgogI2RlZmluZSBJOTE1X1JFU0VUX1VFVkVOVAkJIlJFU0VUIgogCisvKgorICogcGVyZiBldmVu dHMgY29uZmlndXJhdGlvbiBleHBvc2VkIGJ5IGk5MTUgdGhyb3VnaAorICogL3N5cy9idXMvZXZl bnRfc291cmNlcy9kcml2ZXJzL2k5MTVfb2EKKyAqLworCitlbnVtIGRybV9pOTE1X29hX2Zvcm1h dCB7CisJSTkxNV9PQV9GT1JNQVRfQTEzCSAgICA9IDAsCisJSTkxNV9PQV9GT1JNQVRfQTI5CSAg ICA9IDEsCisJSTkxNV9PQV9GT1JNQVRfQTEzX0I4X0M4ICAgID0gMiwKKwlJOTE1X09BX0ZPUk1B VF9CNF9DOAkgICAgPSA0LAorCUk5MTVfT0FfRk9STUFUX0E0NV9COF9DOCAgICA9IDUsCisJSTkx NV9PQV9GT1JNQVRfQjRfQzhfQTE2ICAgID0gNiwKKwlJOTE1X09BX0ZPUk1BVF9DNF9COAkgICAg PSA3LAorCisJSTkxNV9PQV9GT1JNQVRfTUFYCSAgICAvKiBub24tQUJJICovCit9OworCitlbnVt IGRybV9pOTE1X29hX3NldCB7CisJSTkxNV9PQV9NRVRSSUNTX1NFVF8zRAkJCT0gMSwKKworCUk5 MTVfT0FfTUVUUklDU19TRVRfTUFYCQkJLyogbm9uLUFCSSAqLworfTsKKwogLyogRWFjaCByZWdp b24gaXMgYSBtaW5pbXVtIG9mIDE2aywgYW5kIHRoZXJlIGFyZSBhdCBtb3N0IDI1NSBvZiB0aGVt LgogICovCiAjZGVmaW5lIEk5MTVfTlJfVEVYX1JFR0lPTlMgMjU1CS8qIHRhYmxlIHNpemUgMmsg LSBtYXhpbXVtIGR1ZSB0byB1c2UKQEAgLTExMzIsOSArMTE1NSwzNSBAQCBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2NvbnRleHRfcGFyYW0gewogfTsKIAogZW51bSBkcm1faTkxNV9wZXJmX2V2ZW50X3R5 cGUgeworCUk5MTVfUEVSRl9PQV9FVkVOVCA9IDEsCisKIAlJOTE1X1BFUkZfRVZFTlRfVFlQRV9N QVgJLyogbm9uLUFCSSAqLwogfTsKIAorCisjZGVmaW5lIEk5MTVfT0FfRkxBR19QRVJJT0RJQwkJ KDE8PDApCisKK3N0cnVjdCBkcm1faTkxNV9wZXJmX29hX2F0dHIgeworCV9fdTMyIHNpemU7CisK KwlfX3UzMiBmbGFnczsKKworCV9fdTMyIG1ldHJpY3Nfc2V0OworCV9fdTMyIG9hX2Zvcm1hdDsK KwlfX3UzMiBvYV90aW1lcl9leHBvbmVudDsKK307CisKKy8qIE5vdGU6IHNhbWUgdmVyc2lvbmlu ZyBzY2hlbWUgYXMgc3RydWN0IHBlcmZfZXZlbnRfYXR0cgorICoKKyAqIFVzZXJzcGFjZSBzcGVj aWZpZWQgc2l6ZSBkZWZpbmVzIEFCSSB2ZXJzaW9uIGFuZCBrZXJuZWwKKyAqIHplcm8gZXh0ZW5k cyB0byBzaXplIG9mIGxhdGVzdCB2ZXJzaW9uLiBJZiB1c2Vyc3BhY2UKKyAqIGdpdmVzIGEgbGFy Z2VyIHN0cnVjdHVyZSB0aGFuIHRoZSBrZXJuZWwgZXhwZWN0cyB0aGVuCisgKiBrZXJuZWwgYXNz ZXJ0cyB0aGF0IGFsbCB1bmtub3duIGZpZWxkcyBhcmUgemVyby4KKyAqLworI2RlZmluZSBJOTE1 X09BX0FUVFJfU0laRV9WRVIwCQkyMCAvKiBzaXplb2YgZmlyc3QgcHVibGlzaGVkIHN0cnVjdCAq LworCisKKwogI2RlZmluZSBJOTE1X1BFUkZfRkxBR19GRF9DTE9FWEVDCSgxPDwwKQogI2RlZmlu ZSBJOTE1X1BFUkZfRkxBR19GRF9OT05CTE9DSwkoMTw8MSkKICNkZWZpbmUgSTkxNV9QRVJGX0ZM QUdfU0lOR0xFX0NPTlRFWFQJKDE8PDIpCkBAIC0xMTg4LDYgKzEyMzcsMjAgQEAgZW51bSBkcm1f aTkxNV9wZXJmX3JlY29yZF90eXBlIHsKIAkgKi8KIAlEUk1fSTkxNV9QRVJGX1JFQ09SRF9TQU1Q TEUgPSAxLAogCisJLyoKKwkgKiBJbmRpY2F0ZXMgdGhhdCBvbmUgb3IgbW9yZSBPQSByZXBvcnRz IHdhcyBub3Qgd3JpdHRlbgorCSAqIGJ5IHRoZSBoYXJkd2FyZS4KKwkgKi8KKwlEUk1fSTkxNV9Q RVJGX1JFQ09SRF9PQV9SRVBPUlRfTE9TVCA9IDIsCisKKwkvKgorCSAqIEluZGljYXRlcyB0aGF0 IHRoZSBpbnRlcm5hbCBjaXJjdWxhciBidWZmZXIgdGhhdCBHZW4KKwkgKiBncmFwaGljcyB3cml0 ZXMgT0EgcmVwb3J0cyBpbnRvIGhhcyBmaWxsZWQsIHdoaWNoIG1heQorCSAqIGVpdGhlciBtZWFu IHRoYXQgb2xkIHJlcG9ydHMgY291bGQgYmUgb3ZlcndyaXR0ZW4gb3IKKwkgKiBzdWJzZXF1ZW50 IHJlcG9ydHMgbG9zdCB1bnRpbCB0aGUgYnVmZmVyIGlzIGNsZWFyZWQuCisJICovCisJRFJNX0k5 MTVfUEVSRl9SRUNPUkRfT0FfQlVGRkVSX09WRVJGTE9XID0gMywKKwogCURSTV9JOTE1X1BFUkZf UkVDT1JEX01BWCAvKiBub24tQUJJICovCiB9OwogCi0tIAoyLjUuMgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK