From mboxrd@z Thu Jan 1 00:00:00 1970 From: Corneliu ZUZU Subject: [PATCH 7/7] vm-event/arm: implement support for control-register write vm-events Date: Thu, 16 Jun 2016 17:13:23 +0300 Message-ID: <1466086403-7749-1-git-send-email-czuzu@bitdefender.com> References: <1466085888-7428-1-git-send-email-czuzu@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1466085888-7428-1-git-send-email-czuzu@bitdefender.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Julien Grall , Stefano Stabellini , Tamas K Lengyel , Razvan Cojocaru List-Id: xen-devel@lists.xenproject.org QWRkIEFSTSBzdXBwb3J0IGZvciBjb250cm9sLXJlZ2lzdGVyIHdyaXRlIG1vbml0b3JpbmcgdGhy b3VnaCB0aGUgdm0tZXZlbnRzCnN1YnN5c3RlbS4KCkNob3NlbiBBUk0gc3lzdGVtIGNvbnRyb2wt cmVnaXN0ZXJzIHRoYXQgY2FuIGJlIG1vbml0b3JlZCBhcmU6CiAgICAtIFZNX0VWRU5UX0FSTV9T Q1RMUjogICAgICBBQXJjaDMyIFNDVExSLCBBQXJjaDY0IFNDVExSX0VMMQogICAgLSBWTV9FVkVO VF9BUk1fVFRCUnswLDF9OiAgQUFyY2gzMiBUVEJSezAsMX0sIEFBcmNoNjQgVFRCUnswLDF9X0VM MQogICAgLSBWTV9FVkVOVF9BUk1fVFRCQ1I6ICAgICAgQUFyY2gzMiBUVEJDUiwgQUFyY2g2NCBU Q1JfRUwxCgpUcmFwcGluZyBvZiB3cml0ZSBvcGVyYXRpb25zIG9mIHRoZXNlIHJlZ2lzdGVycyB3 YXMgYXR0YWluZWQgYnkgc2V0dGluZyB0aGUKSENSX0VMMi5UVk0gLyBIQ1IuVFZNIGJpdC4KClNp Z25lZC1vZmYtYnk6IENvcm5lbGl1IFpVWlUgPGN6dXp1QGJpdGRlZmVuZGVyLmNvbT4KLS0tCiBN QUlOVEFJTkVSUyAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogeGVuL2FyY2gvYXJtL01ha2Vm aWxlICAgICAgICAgIHwgICAxICsKIHhlbi9hcmNoL2FybS90cmFwcy5jICAgICAgICAgICB8IDEy NiArKysrKysrKysrKysrKysrKysrLQogeGVuL2FyY2gvYXJtL3ZtX2V2ZW50LmMgICAgICAgIHwg MTEyICsrKysrKysrKysrKysrKysrKwogeGVuL2NvbW1vbi9tb25pdG9yLmMgICAgICAgICAgIHwg ICAyIC0KIHhlbi9jb21tb24vdm1fZXZlbnQuYyAgICAgICAgICB8ICAgMiAtCiB4ZW4vaW5jbHVk ZS9hc20tYXJtL2RvbWFpbi5oICAgfCAgMzAgKysrKysKIHhlbi9pbmNsdWRlL2FzbS1hcm0vdHJh cHMuaCAgICB8IDI1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog eGVuL2luY2x1ZGUvYXNtLWFybS92bV9ldmVudC5oIHwgIDIyICsrKy0KIHhlbi9pbmNsdWRlL3B1 YmxpYy92bV9ldmVudC5oICB8ICAgOCArLQogeGVuL2luY2x1ZGUveGVuL21vbml0b3IuaCAgICAg IHwgICAyIC0KIHhlbi9pbmNsdWRlL3hlbi92bV9ldmVudC5oICAgICB8ICAgMiAtCiAxMiBmaWxl cyBjaGFuZ2VkLCA1NDMgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k ZSAxMDA2NDQgeGVuL2FyY2gvYXJtL3ZtX2V2ZW50LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4v aW5jbHVkZS9hc20tYXJtL3RyYXBzLmgKCmRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5U QUlORVJTCmluZGV4IDlhMjI0ZDQuLjYzNGYzNTkgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCisr KyBiL01BSU5UQUlORVJTCkBAIC00MDIsNiArNDAyLDcgQEAgTToJVGFtYXMgSyBMZW5neWVsIDx0 YW1hc0B0a2xlbmd5ZWwuY29tPgogUzoJU3VwcG9ydGVkCiBGOgl4ZW4vY29tbW9uL21lbV9hY2Nl c3MuYwogRjoJeGVuLyovdm1fZXZlbnQuYworRjoJeGVuL2FyY2gvKi92bV9ldmVudC5jCiBGOgl4 ZW4vKi9tb25pdG9yLmMKIEY6CXhlbi9pbmNsdWRlLyovbWVtX2FjY2Vzcy5oCiBGOgl4ZW4vaW5j bHVkZS8qL21vbml0b3IuaApkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL01ha2VmaWxlIGIveGVu L2FyY2gvYXJtL01ha2VmaWxlCmluZGV4IDllMzhkYTMuLjM5MGRmMGEgMTAwNjQ0Ci0tLSBhL3hl bi9hcmNoL2FybS9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKQEAgLTQwLDYg KzQwLDcgQEAgb2JqLXkgKz0gZGV2aWNlLm8KIG9iai15ICs9IGRlY29kZS5vCiBvYmoteSArPSBw cm9jZXNzb3Iubwogb2JqLXkgKz0gc21jLm8KK29iai15ICs9IHZtX2V2ZW50Lm8KIG9iai0kKENP TkZJR19MSVZFUEFUQ0gpICs9IGxpdmVwYXRjaC5vCiAKICNvYmotYmluLXkgKz0gLi4uLm8KZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL2FybS90cmFwcy5jIGIveGVuL2FyY2gvYXJtL3RyYXBzLmMKaW5k ZXggOGM1MDY4NS4uYWY2MWFjMyAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL3RyYXBzLmMKKysr IGIveGVuL2FyY2gvYXJtL3RyYXBzLmMKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlIDxhc20v bW1pby5oPgogI2luY2x1ZGUgPGFzbS9jcHVmZWF0dXJlLmg+CiAjaW5jbHVkZSA8YXNtL2ZsdXNo dGxiLmg+CisjaW5jbHVkZSA8YXNtL3RyYXBzLmg+CiAKICNpbmNsdWRlICJkZWNvZGUuaCIKICNp bmNsdWRlICJ2dGltZXIuaCIKQEAgLTEyNCw3ICsxMjUsMTIgQEAgdm9pZCBpbml0X3RyYXBzKHZv aWQpCiAgICAgV1JJVEVfU1lTUkVHKChIQ1BUUl9DUF9NQVNLICYgfihIQ1BUUl9DUCgxMCkgfCBI Q1BUUl9DUCgxMSkpKSB8IEhDUFRSX1RUQSwKICAgICAgICAgICAgICAgICAgQ1BUUl9FTDIpOwog Ci0gICAgLyogU2V0dXAgaHlwZXJ2aXNvciB0cmFwcyAqLworICAgIC8qIFNldHVwIGh5cGVydmlz b3IgdHJhcHMKKyAgICAgKgorICAgICAqIE5vdGU6IEhDUl9UVk0gYml0IGlzIGFsc28gc2V0IGZv ciBzeXN0ZW0tcmVnaXN0ZXIgd3JpdGUgbW9uaXRvcmluZworICAgICAqIHB1cnBvc2VzIChzZWUg dm1fZXZlbnRfbW9uaXRvcl9jciksIGJ1dCAoZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMpIHRoYXQn cworICAgICAqIGRvbmUgc2VsZWN0aXZlbHkgKHNlZSB2Y3B1X2VudGVyX2FkanVzdF90cmFwcyku CisgICAgICovCiAgICAgV1JJVEVfU1lTUkVHKEhDUl9QVFd8SENSX0JTVV9JTk5FUnxIQ1JfQU1P fEhDUl9JTU98SENSX0ZNT3xIQ1JfVk18CiAgICAgICAgICAgICAgICAgIEhDUl9UV0V8SENSX1RX SXxIQ1JfVFNDfEhDUl9UQUN8SENSX1NXSU98SENSX1RJRENQfEhDUl9GQiwKICAgICAgICAgICAg ICAgICAgSENSX0VMMik7CkBAIC0xNzIwLDYgKzE3MjYsNyBAQCBzdGF0aWMgdm9pZCBkb19jcDE1 XzMyKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLAogICAgIGNvbnN0IHN0cnVjdCBoc3JfY3Az MiBjcDMyID0gaHNyLmNwMzI7CiAgICAgaW50IHJlZ2lkeCA9IGNwMzIucmVnOwogICAgIHN0cnVj dCB2Y3B1ICp2ID0gY3VycmVudDsKKyAgICByZWdpc3Rlcl90IHIgPSBnZXRfdXNlcl9yZWcocmVn cywgcmVnaWR4KTsKIAogICAgIGlmICggIWNoZWNrX2NvbmRpdGlvbmFsX2luc3RyKHJlZ3MsIGhz cikgKQogICAgIHsKQEAgLTE3MzAsNiArMTczNyw2MSBAQCBzdGF0aWMgdm9pZCBkb19jcDE1XzMy KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLAogICAgIHN3aXRjaCAoIGhzci5iaXRzICYgSFNS X0NQMzJfUkVHU19NQVNLICkKICAgICB7CiAgICAgLyoKKyAgICAgKiBIQ1JfRUwyLlRWTSAvIEhD Ui5UVk0KKyAgICAgKgorICAgICAqIEFSTXY3IChEREkgMDQwNkMuYik6IEIxLjE0LjEzCisgICAg ICogQVJNdjggKERESSAwNDg3QS5lKTogRDEtMTU2OSBUYWJsZSBEMS0zNAorICAgICAqLworICAg IGNhc2UgSFNSX0NQUkVHMzIoU0NUTFIpOgorICAgICAgICBUVk1fRU1VTF9WTUVWVCh2LCByZWdz LCBoc3IsIHIsIFNDVExSKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIU1JfQ1BSRUczMihU VEJSMF8zMik6CisgICAgICAgIFRWTV9FTVVMX1ZNRVZUKHYsIHJlZ3MsIGhzciwgciwgVFRCUjBf MzIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEhTUl9DUFJFRzMyKFRUQlIxXzMyKToKKyAg ICAgICAgVFZNX0VNVUxfVk1FVlQodiwgcmVncywgaHNyLCByLCBUVEJSMV8zMik7CisgICAgICAg IGJyZWFrOworICAgIGNhc2UgSFNSX0NQUkVHMzIoVFRCQ1IpOgorICAgICAgICBUVk1fRU1VTF9W TUVWVCh2LCByZWdzLCBoc3IsIHIsIFRUQkNSKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBI U1JfQ1BSRUczMihEQUNSKToKKyAgICAgICAgVFZNX0VNVUwocmVncywgaHNyLCByLCBEQUNSKTsK KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIU1JfQ1BSRUczMihERlNSKToKKyAgICAgICAgVFZN X0VNVUwocmVncywgaHNyLCByLCBERlNSKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIU1Jf Q1BSRUczMihJRlNSKToKKyAgICAgICAgVFZNX0VNVUwocmVncywgaHNyLCByLCBJRlNSKTsKKyAg ICAgICAgYnJlYWs7CisgICAgY2FzZSBIU1JfQ1BSRUczMihERkFSKToKKyAgICAgICAgVFZNX0VN VUwocmVncywgaHNyLCByLCBERkFSKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIU1JfQ1BS RUczMihJRkFSKToKKyAgICAgICAgVFZNX0VNVUwocmVncywgaHNyLCByLCBJRkFSKTsKKyAgICAg ICAgYnJlYWs7CisgICAgY2FzZSBIU1JfQ1BSRUczMihBREZTUik6CisgICAgICAgIFRWTV9FTVVM KHJlZ3MsIGhzciwgciwgQURGU1IpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEhTUl9DUFJF RzMyKEFJRlNSKToKKyAgICAgICAgVFZNX0VNVUwocmVncywgaHNyLCByLCBBSUZTUik7CisgICAg ICAgIGJyZWFrOworICAgIGNhc2UgSFNSX0NQUkVHMzIoTUFJUjApOgorICAgICAgICBUVk1fRU1V TChyZWdzLCBoc3IsIHIsIE1BSVIwKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIU1JfQ1BS RUczMihNQUlSMSk6CisgICAgICAgIFRWTV9FTVVMKHJlZ3MsIGhzciwgciwgTUFJUjEpOworICAg ICAgICBicmVhazsKKyAgICBjYXNlIEhTUl9DUFJFRzMyKEFNQUlSMCk6CisgICAgICAgIFRWTV9F TVVMKHJlZ3MsIGhzciwgciwgQU1BSVIwKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIU1Jf Q1BSRUczMihBTUFJUjEpOgorICAgICAgICBUVk1fRU1VTChyZWdzLCBoc3IsIHIsIEFNQUlSMSk7 CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSFNSX0NQUkVHMzIoQ09OVEVYVElEUik6CisgICAg ICAgIFRWTV9FTVVMKHJlZ3MsIGhzciwgciwgQ09OVEVYVElEUik7CisgICAgICAgIGJyZWFrOwor CisgICAgLyoKICAgICAgKiAhQ05USENUTF9FTDIuRUwxUENFTiAvICFDTlRIQ1RMLlBMMVBDRU4K ICAgICAgKgogICAgICAqIEFSTXY3IChEREkgMDQwNkMuYik6IEI0LjEuMjIKQEAgLTE4NTMsNiAr MTkxNSwxMyBAQCBzdGF0aWMgdm9pZCBkb19jcDE1XzMyKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpy ZWdzLAogc3RhdGljIHZvaWQgZG9fY3AxNV82NChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywK ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5pb24gaHNyIGhzcikKIHsKKyAgICBzdHJ1 Y3QgdmNwdSAqdiA9IGN1cnJlbnQ7CisgICAgY29uc3Qgc3RydWN0IGhzcl9jcDY0IGNwNjQgPSBo c3IuY3A2NDsKKyAgICBzeXNyZWc2NF90IHIgPSB7CisgICAgICAgIC5sb3czMiA9ICh1aW50MzJf dCkgZ2V0X3VzZXJfcmVnKHJlZ3MsIGNwNjQucmVnMSksCisgICAgICAgIC5oaWdoMzIgPSAodWlu dDMyX3QpIGdldF91c2VyX3JlZyhyZWdzLCBjcDY0LnJlZzIpCisgICAgfTsKKwogICAgIGlmICgg IWNoZWNrX2NvbmRpdGlvbmFsX2luc3RyKHJlZ3MsIGhzcikgKQogICAgIHsKICAgICAgICAgYWR2 YW5jZV9wYyhyZWdzLCBoc3IpOwpAQCAtMTg2Miw2ICsxOTMxLDE5IEBAIHN0YXRpYyB2b2lkIGRv X2NwMTVfNjQoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsCiAgICAgc3dpdGNoICggaHNyLmJp dHMgJiBIU1JfQ1A2NF9SRUdTX01BU0sgKQogICAgIHsKICAgICAvKgorICAgICAqIEhDUl9FTDIu VFZNIC8gSENSLlRWTQorICAgICAqCisgICAgICogQVJNdjcgKERESSAwNDA2Qy5iKTogQjEuMTQu MTMKKyAgICAgKiBBUk12OCAoRERJIDA0ODdBLmUpOiBEMS0xNTY5IFRhYmxlIEQxLTM0CisgICAg ICovCisgICAgY2FzZSBIU1JfQ1BSRUc2NChUVEJSMCk6CisgICAgICAgIFRWTV9FTVVMX1ZNRVZU KHYsIHJlZ3MsIGhzciwgci52YWw2NCwgVFRCUjBfNjQpOworICAgICAgICBicmVhazsKKyAgICBj YXNlIEhTUl9DUFJFRzY0KFRUQlIxKToKKyAgICAgICAgVFZNX0VNVUxfVk1FVlQodiwgcmVncywg aHNyLCByLnZhbDY0LCBUVEJSMV82NCk7CisgICAgICAgIGJyZWFrOworCisgICAgLyoKICAgICAg KiAhQ05USENUTF9FTDIuRUwxUENFTiAvICFDTlRIQ1RMLlBMMVBDRU4KICAgICAgKgogICAgICAq IEFSTXY3IChEREkgMDQwNkMuYik6IEI0LjEuMjIKQEAgLTE4OTEsOCArMTk3Myw2IEBAIHN0YXRp YyB2b2lkIGRvX2NwMTVfNjQoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsCiAgICAgICovCiAg ICAgZGVmYXVsdDoKICAgICAgICAgewotICAgICAgICAgICAgY29uc3Qgc3RydWN0IGhzcl9jcDY0 IGNwNjQgPSBoc3IuY3A2NDsKLQogICAgICAgICAgICAgZ2RwcmludGsoWEVOTE9HX0VSUiwKICAg ICAgICAgICAgICAgICAgICAgICIlcyBwMTUsICVkLCByJWQsIHIlZCwgY3IlZCBAIDB4JSJQUkly ZWdpc3RlciJcbiIsCiAgICAgICAgICAgICAgICAgICAgICBjcDY0LnJlYWQgPyAibXJyYyIgOiAi bWNyciIsCkBAIC0yMTI4LDEwICsyMjA4LDUwIEBAIHN0YXRpYyB2b2lkIGRvX3N5c3JlZyhzdHJ1 Y3QgY3B1X3VzZXJfcmVncyAqcmVncywKIHsKICAgICBpbnQgcmVnaWR4ID0gaHNyLnN5c3JlZy5y ZWc7CiAgICAgc3RydWN0IHZjcHUgKnYgPSBjdXJyZW50OworICAgIHJlZ2lzdGVyX3QgciA9IGdl dF91c2VyX3JlZyhyZWdzLCByZWdpZHgpOwogCiAgICAgc3dpdGNoICggaHNyLmJpdHMgJiBIU1Jf U1lTUkVHX1JFR1NfTUFTSyApCiAgICAgewogICAgIC8qCisgICAgICogSENSX0VMMi5UVk0KKyAg ICAgKgorICAgICAqIEFSTXY4IChEREkgMDQ4N0EuZSk6IEQxLTE1NjkgVGFibGUgRDEtMzQKKyAg ICAgKi8KKyAgICBjYXNlIEhTUl9TWVNSRUdfU0NUTFJfRUwxOgorICAgICAgICBUVk1fRU1VTF9W TUVWVCh2LCByZWdzLCBoc3IsIHIsIFNDVExSX0VMMSk7CisgICAgICAgIGJyZWFrOworICAgIGNh c2UgSFNSX1NZU1JFR19UVEJSMF9FTDE6CisgICAgICAgIFRWTV9FTVVMX1ZNRVZUKHYsIHJlZ3Ms IGhzciwgciwgVFRCUjBfRUwxKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIU1JfU1lTUkVH X1RUQlIxX0VMMToKKyAgICAgICAgVFZNX0VNVUxfVk1FVlQodiwgcmVncywgaHNyLCByLCBUVEJS MV9FTDEpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEhTUl9TWVNSRUdfVENSX0VMMToKKyAg ICAgICAgVFZNX0VNVUxfVk1FVlQodiwgcmVncywgaHNyLCByLCBUQ1JfRUwxKTsKKyAgICAgICAg YnJlYWs7CisgICAgY2FzZSBIU1JfU1lTUkVHX0VTUl9FTDE6CisgICAgICAgIFRWTV9FTVVMKHJl Z3MsIGhzciwgciwgRVNSX0VMMSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSFNSX1NZU1JF R19GQVJfRUwxOgorICAgICAgICBUVk1fRU1VTChyZWdzLCBoc3IsIHIsIEZBUl9FTDEpOworICAg ICAgICBicmVhazsKKyAgICBjYXNlIEhTUl9TWVNSRUdfQUZTUjBfRUwxOgorICAgICAgICBUVk1f RU1VTChyZWdzLCBoc3IsIHIsIEFGU1IwX0VMMSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug SFNSX1NZU1JFR19BRlNSMV9FTDE6CisgICAgICAgIFRWTV9FTVVMKHJlZ3MsIGhzciwgciwgQUZT UjFfRUwxKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIU1JfU1lTUkVHX01BSVJfRUwxOgor ICAgICAgICBUVk1fRU1VTChyZWdzLCBoc3IsIHIsIE1BSVJfRUwxKTsKKyAgICAgICAgYnJlYWs7 CisgICAgY2FzZSBIU1JfU1lTUkVHX0FNQUlSX0VMMToKKyAgICAgICAgVFZNX0VNVUwocmVncywg aHNyLCByLCBBTUFJUl9FTDEpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEhTUl9TWVNSRUdf Q09OVEVYVElEUl9FTDE6CisgICAgICAgIFRWTV9FTVVMKHJlZ3MsIGhzciwgciwgQ09OVEVYVElE Ul9FTDEpOworICAgICAgICBicmVhazsKKworICAgIC8qCiAgICAgICogSENSX0VMMi5UQUNSCiAg ICAgICoKICAgICAgKiBBUk12OCAoRERJIDA0ODdBLmQpOiBENy4yLjEKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL2FybS92bV9ldmVudC5jIGIveGVuL2FyY2gvYXJtL3ZtX2V2ZW50LmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2YyM2ZlYwotLS0gL2Rldi9udWxsCisrKyBiL3hl bi9hcmNoL2FybS92bV9ldmVudC5jCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogYXJjaC9hcm0v dm1fZXZlbnQuYworICoKKyAqIEFyY2hpdGVjdHVyZS1zcGVjaWZpYyB2bV9ldmVudCBoYW5kbGlu ZyByb3V0aW5lcworICoKKyAqIENvcHlyaWdodCAoYykgMjAxNiwgQml0ZGVmZW5kZXIgUy5SLkwu CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIHYyIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg KiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBM aWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUgPHhlbi92bV9ldmVudC5oPgorI2lu Y2x1ZGUgPGFzbS90cmFwcy5oPgorCisjaWYgQ09ORklHX0FSTV82NAorCisjZGVmaW5lIE1XU0lO Rl9TQ1RMUiAgICAzMixTQ1RMUl9FTDEKKyNkZWZpbmUgTVdTSU5GX1RUQlIwICAgIDY0LFRUQlIw X0VMMQorI2RlZmluZSBNV1NJTkZfVFRCUjEgICAgNjQsVFRCUjFfRUwxCisjZGVmaW5lIE1XU0lO Rl9UVEJDUiAgICA2NCxUQ1JfRUwxCisKKyNlbGlmIENPTkZJR19BUk1fMzIKKworI2RlZmluZSBN V1NJTkZfU0NUTFIgICAgMzIsU0NUTFIKKyNkZWZpbmUgTVdTSU5GX1RUQlIwICAgIDY0LFRUQlIw CisjZGVmaW5lIE1XU0lORl9UVEJSMSAgICA2NCxUVEJSMQorI2RlZmluZSBNV1NJTkZfVFRCUjBf MzIgMzIsVFRCUjBfMzIKKyNkZWZpbmUgTVdTSU5GX1RUQlIxXzMyIDMyLFRUQlIxXzMyCisjZGVm aW5lIE1XU0lORl9UVEJDUiAgICAzMixUVEJDUgorCisjZW5kaWYKKworI2RlZmluZSBNV1NfRU1V TF8odmFsLCBzeiwgci4uLikgICAgV1JJVEVfU1lTUkVHIyNzeigodWludCMjc3ojI190KSAodmFs KSwgcikKKyNkZWZpbmUgTVdTX0VNVUwocikgICAgICAgICAgICAgICAgIENBTExfTUFDUk8oTVdT X0VNVUxfLCB3LT52YWx1ZSwgTVdTSU5GXyMjcikKKworc3RhdGljIGlubGluZSB2b2lkIHZjcHVf ZW50ZXJfd3JpdGVfZGF0YShzdHJ1Y3QgdmNwdSAqdikKK3sKKyAgICBzdHJ1Y3QgbW9uaXRvcl93 cml0ZV9kYXRhICp3ID0gJnYtPmFyY2gudm1fZXZlbnQud3JpdGVfZGF0YTsKKworICAgIGlmICgg bGlrZWx5KE1XU19OT1dSSVRFID09IHctPnN0YXR1cykgKQorICAgICAgICByZXR1cm47CisKKyAg ICBzd2l0Y2ggKCB3LT5zdGF0dXMgKQorICAgIHsKKyAgICBjYXNlIE1XU19TQ1RMUjoKKyAgICAg ICAgTVdTX0VNVUwoU0NUTFIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1XU19UVEJSMDoK KyAgICAgICAgTVdTX0VNVUwoVFRCUjApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1XU19U VEJSMToKKyAgICAgICAgTVdTX0VNVUwoVFRCUjEpOworICAgICAgICBicmVhazsKKyNpZiBDT05G SUdfQVJNXzMyCisgICAgY2FzZSBNV1NfVFRCUjBfMzI6CisgICAgICAgIE1XU19FTVVMKFRUQlIw XzMyKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNV1NfVFRCUjFfMzI6CisgICAgICAgIE1X U19FTVVMKFRUQlIxXzMyKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICBjYXNlIE1XU19U VEJDUjoKKyAgICAgICAgTVdTX0VNVUwoVFRCQ1IpOworICAgICAgICBicmVhazsKKyAgICBkZWZh dWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICB3LT5zdGF0dXMgPSBNV1NfTk9XUklU RTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHZjcHVfZW50ZXJfYWRqdXN0X3RyYXBzKHN0cnVj dCB2Y3B1ICp2KQoreworICAgIHJlZ2lzdGVyX3Qgb2xkX2hjciwgaGNyOworCisgICAgaGNyID0g KG9sZF9oY3IgPSBSRUFEX1NZU1JFRyhIQ1JfRUwyKSk7CisKKyAgICBpZiAoIHVubGlrZWx5KDAg IT0gdi0+ZG9tYWluLT5hcmNoLm1vbml0b3Iud3JpdGVfY3RybHJlZ19lbmFibGVkKSApCisgICAg ICAgIGhjciB8PSBIQ1JfVFZNOworICAgIGVsc2UKKyAgICAgICAgaGNyICY9IH5IQ1JfVFZNOwor CisgICAgaWYgKCB1bmxpa2VseShoY3IgIT0gb2xkX2hjcikgKQorICAgIHsKKyAgICAgICAgV1JJ VEVfU1lTUkVHKGhjciwgSENSX0VMMik7CisgICAgICAgIGlzYigpOworICAgIH0KK30KKwordm9p ZCBhcmNoX3ZtX2V2ZW50X3ZjcHVfZW50ZXIoc3RydWN0IHZjcHUgKnYpCit7CisgICAgdmNwdV9l bnRlcl93cml0ZV9kYXRhKHYpOworICAgIHZjcHVfZW50ZXJfYWRqdXN0X3RyYXBzKHYpOworfQor CisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAi QlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICog RW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL21vbml0b3IuYyBiL3hlbi9jb21tb24v bW9uaXRvci5jCmluZGV4IDIzNjZiYWUuLmMzNWE3MTcgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24v bW9uaXRvci5jCisrKyBiL3hlbi9jb21tb24vbW9uaXRvci5jCkBAIC02Miw3ICs2Miw2IEBAIGlu dCBtb25pdG9yX2RvbWN0bChzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgeGVuX2RvbWN0bF9tb25p dG9yX29wICptb3ApCiAKICAgICBzd2l0Y2ggKCBtb3AtPmV2ZW50ICkKICAgICB7Ci0jaWYgQ09O RklHX1g4NgogICAgIGNhc2UgWEVOX0RPTUNUTF9NT05JVE9SX0VWRU5UX1dSSVRFX0NUUkxSRUc6 CiAgICAgewogICAgICAgICBzdHJ1Y3QgYXJjaF9kb21haW4gKmFkID0gJmQtPmFyY2g7CkBAIC0x MDAsNyArOTksNiBAQCBpbnQgbW9uaXRvcl9kb21jdGwoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0 IHhlbl9kb21jdGxfbW9uaXRvcl9vcCAqbW9wKQogCiAgICAgICAgIGJyZWFrOwogICAgIH0KLSNl bmRpZgogCiAgICAgY2FzZSBYRU5fRE9NQ1RMX01PTklUT1JfRVZFTlRfR1VFU1RfUkVRVUVTVDoK ICAgICB7CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3ZtX2V2ZW50LmMgYi94ZW4vY29tbW9uL3Zt X2V2ZW50LmMKaW5kZXggNTNkYzA0OC4uZTBmOTk5ZSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi92 bV9ldmVudC5jCisrKyBiL3hlbi9jb21tb24vdm1fZXZlbnQuYwpAQCAtODI0LDcgKzgyNCw2IEBA IGludCB2bV9ldmVudF9tb25pdG9yX3RyYXBzKHN0cnVjdCB2Y3B1ICp2LCB1aW50OF90IHN5bmMs CiAgICAgcmV0dXJuIDE7CiB9CiAKLSNpZiBDT05GSUdfWDg2CiBib29sX3Qgdm1fZXZlbnRfbW9u aXRvcl9jcih1bnNpZ25lZCBpbnQgaW5kZXgsIHVuc2lnbmVkIGxvbmcgdmFsdWUsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG9sZCkKIHsKQEAgLTg1Miw3ICs4NTEs NiBAQCBib29sX3Qgdm1fZXZlbnRfbW9uaXRvcl9jcih1bnNpZ25lZCBpbnQgaW5kZXgsIHVuc2ln bmVkIGxvbmcgdmFsdWUsCiAKICAgICByZXR1cm4gMDsKIH0KLSNlbmRpZgogCiB2b2lkIHZtX2V2 ZW50X21vbml0b3JfZ3Vlc3RfcmVxdWVzdCh2b2lkKQogewpkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvYXNtLWFybS9kb21haW4uaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmgKaW5kZXgg MzcwY2RlYi4uODNmMDk1MiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4u aAorKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oCkBAIC00MCw2ICs0MCwyNiBAQCBz dHJ1Y3QgdnRpbWVyIHsKICAgICAgICAgdWludDY0X3QgY3ZhbDsKIH07CiAKK2VudW0gbW9uaXRv cl93cml0ZV9zdGF0dXMKK3sKKyAgICBNV1NfTk9XUklURSA9IDAsCisgICAgTVdTX1NDVExSLAor ICAgIE1XU19UVEJSMCwKKyAgICBNV1NfVFRCUjEsCisgICAgTVdTX1RUQlIwXzMyLAorICAgIE1X U19UVEJSMV8zMiwKKyAgICBNV1NfVFRCQ1IsCit9OworCitzdHJ1Y3QgbW9uaXRvcl93cml0ZV9k YXRhIHsKKyAgICBlbnVtIG1vbml0b3Jfd3JpdGVfc3RhdHVzIHN0YXR1czsKKyAgICB1aW50NjRf dCB2YWx1ZTsKK307CisKK3N0cnVjdCBhcmNoX3ZtX2V2ZW50IHsKKyAgICBzdHJ1Y3QgbW9uaXRv cl93cml0ZV9kYXRhIHdyaXRlX2RhdGE7Cit9OworCiBzdHJ1Y3QgYXJjaF9kb21haW4KIHsKICNp ZmRlZiBDT05GSUdfQVJNXzY0CkBAIC0xMjcsNiArMTQ3LDE0IEBAIHN0cnVjdCBhcmNoX2RvbWFp bgogICAgIHBhZGRyX3QgZWZpX2FjcGlfZ3BhOwogICAgIHBhZGRyX3QgZWZpX2FjcGlfbGVuOwog I2VuZGlmCisKKyAgICAvKiBBcmNoLXNwZWNpZmljIG1vbml0b3Igb3B0aW9ucyAqLworICAgIHN0 cnVjdCB7CisgICAgICAgIHVuc2lnbmVkIGludCB3cml0ZV9jdHJscmVnX2VuYWJsZWQgICAgICAg OiA0OworICAgICAgICB1bnNpZ25lZCBpbnQgd3JpdGVfY3RybHJlZ19zeW5jICAgICAgICAgIDog NDsKKyAgICAgICAgdW5zaWduZWQgaW50IHdyaXRlX2N0cmxyZWdfb25jaGFuZ2Vvbmx5ICA6IDQ7 CisgICAgfSBtb25pdG9yOworCiB9ICBfX2NhY2hlbGluZV9hbGlnbmVkOwogCiBzdHJ1Y3QgYXJj aF92Y3B1CkBAIC0yNTgsNiArMjg2LDggQEAgc3RydWN0IGFyY2hfdmNwdQogICAgIHN0cnVjdCB2 dGltZXIgcGh5c190aW1lcjsKICAgICBzdHJ1Y3QgdnRpbWVyIHZpcnRfdGltZXI7CiAgICAgYm9v bF90IHZ0aW1lcl9pbml0aWFsaXplZDsKKworICAgIHN0cnVjdCBhcmNoX3ZtX2V2ZW50IHZtX2V2 ZW50OwogfSAgX19jYWNoZWxpbmVfYWxpZ25lZDsKIAogdm9pZCB2Y3B1X3Nob3dfZXhlY3V0aW9u X3N0YXRlKHN0cnVjdCB2Y3B1ICopOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS90 cmFwcy5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS90cmFwcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjllMjQ2YTcKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vaW5jbHVkZS9h c20tYXJtL3RyYXBzLmgKQEAgLTAsMCArMSwyNTMgQEAKKy8qCisgKiBpbmNsdWRlL2FzbS1hcm0v dHJhcHMuaAorICoKKyAqIEFSTSBUcmFwIGhhbmRsZXJzCisgKgorICogQ29weXJpZ2h0IChjKSAy MDE2LCBCaXRkZWZlbmRlciBTLlIuTC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2Yg dGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor ICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CisgKi8KKworI2lmbmRlZiBfX0FTTV9BUk1fVFJBUFNfSF9fCisjZGVmaW5lIF9fQVNNX0FSTV9U UkFQU19IX18KKworI2luY2x1ZGUgPHhlbi92bV9ldmVudC5oPgorI2luY2x1ZGUgPGFzbS9yZWdz Lmg+CisjaW5jbHVkZSA8cHVibGljL3ZtX2V2ZW50Lmg+CisKKy8qIHVzZWQgdG8gZm9yY2UgZXhw YW5zaW9uIG9mIGFyZ3MgYmVmb3JlIGNhbGxpbmcgbWFjcm8gKi8KKyNkZWZpbmUgQ0FMTF9NQUNS TyhtYWNybywgYXJncy4uLikgICAgICBtYWNybyhhcmdzKQorCisvKiB1c2VkIGZvciBlYXN5IG1h bmlwdWxhdGlvbiBvZiBsb3cvaGlnaCAzMi1iaXRzIG9mIDY0LWJpdCBzeXN0ZW0gcmVnaXN0ZXJz ICovCit0eXBlZGVmIHVuaW9uIHsKKyAgICB1aW50NjRfdCB2YWw2NDsKKyAgICBzdHJ1Y3Qgewor ICAgICAgICB1aW50MzJfdCBsb3czMjsKKyAgICAgICAgdWludDMyX3QgaGlnaDMyOworICAgIH07 Cit9IHN5c3JlZzY0X3Q7CisKKyNpZiBDT05GSUdfQVJNXzY0CisKKy8qCisgKiBFbXVsYXRpb24g b2Ygc3lzdGVtLXJlZ2lzdGVyIHRyYXBwZWQgd3JpdGVzIHRoYXQgZG8gbm90IGNhdXNlCisgKiBW TV9FVkVOVF9SRUFTT05fV1JJVEVfQ1RSTFJFRyBtb25pdG9yIHZtLWV2ZW50cy4KKyAqIFN1Y2gg d3JpdGVzIGFyZSBjb2xsYXRlcmFsbHkgdHJhcHBlZCBkdWUgdG8gc2V0dGluZyB0aGUgSENSX0VM Mi5UVk0gYml0LgorICoKKyAqIFJlZ2FyZGluZyBhYXJjaDMyIGRvbWFpbnMsIG5vdGUgdGhhdCBm cm9tIFhlbidzIHBlcnNwZWN0aXZlIHN5c3RlbS1yZWdpc3RlcnMKKyAqIG9mIHN1Y2ggZG9tYWlu cyBhcmUgYXJjaGl0ZWN0dXJhbGx5LW1hcHBlZCB0byBhYXJjaDY0IHJlZ2lzdGVycyBpbiBvbmUg b2YKKyAqIHRocmVlIHdheXM6CisgKiAgLSBsb3cgMzItYml0cyBtYXBwaW5nICAgKGUuZy4gYWFy Y2gzMiBERkFSIC0+IGFhcmNoNjQgRkFSX0VMMVszMTowXSkKKyAqICAtIGhpZ2ggMzItYml0cyBt YXBwaW5nICAoZS5nLiBhYXJjaDMyIElGQVIgLT4gYWFyY2g2NCBGQVJfRUwxWzYzOjMyXSkKKyAq ICAtIGZ1bGwgbWFwcGluZyAgICAgICAgICAoZS5nLiBhYXJjaDMyIFNDVExSIC0+IGFhcmNoNjQg U0NUTFJfRUwxKQorICoKKyAqIEhlbmNlIHdlIGRlZmluZSAyIG1hY3JvIHZhcmlhbnRzOgorICog IC0gVFZNX0VNVUxfU1ogdmFyaWFudCwgZm9yIGZ1bGwgbWFwcGluZ3MKKyAqICAtIFRWTV9FTVVM X0xIIHZhcmlhbnQsIGZvciBsb3cvaGlnaCAzMi1iaXRzIG1hcHBpbmdzCisgKi8KKyNkZWZpbmUg VFZNX0VNVUxfU1oocmVncywgaHNyLCB2YWwsIHN6LCByLi4uKSAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIHBzcl9tb2RlX2lzX3VzZXIocmVn cykgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0 dXJuIGluamVjdF91bmRlZl9leGNlcHRpb24ocmVncywgaHNyKTsgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICBXUklURV9TWVNSRUcjI3N6KCh1aW50IyNzeiMjX3QpICh2YWwpLCByKTsgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKK30KKyNkZWZpbmUgVFZNX0VNVUxfTEgocmVncywgaHNy LCB2YWwsIGxfb3JfaCwgci4uLikgICAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICBzeXNyZWc2NF90IF9uZXc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIHBzcl9tb2RlX2lzX3VzZXIocmVncykg KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJu IGluamVjdF91bmRlZl9leGNlcHRpb24ocmVncywgaHNyKTsgICAgICAgICAgICAgICAgICAgICAg IFwKKyAgICBfbmV3LnZhbDY0ID0gUkVBRF9TWVNSRUc2NChyKTsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICBfbmV3Lmxfb3JfaCA9ICh1aW50MzJfdCkgKHZhbCk7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBXUklURV9TWVNSRUc2 NChfbmV3LnZhbDY0LCByKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK K30KKworLyoKKyAqIEVtdWxhdGlvbiBvZiBzeXN0ZW0tcmVnaXN0ZXIgd3JpdGVzIHRoYXQgY2F1 c2UgVk1fRVZFTlRfUkVBU09OX1dSSVRFX0NUUkxSRUcKKyAqIG1vbml0b3Igdm0tZXZlbnRzLgor ICogU1ovTEggdmFyaWFudHMsIHJlYXNvbmluZyBpcyB0aGUgc2FtZSBhcyBhYm92ZS4KKyAqLwor I2RlZmluZSBUVk1fRU1VTF9TWl9WTUVWVCh2LCByZWdzLCBoc3IsIHZhbCwgY3JpZHgsIG13cywg c3osIHIpICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHVuc2lnbmVkIGxvbmcgX29s ZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg IGlmICggcHNyX21vZGVfaXNfdXNlcihyZWdzKSApICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gaW5qZWN0X3VuZGVmX2V4Y2VwdGlvbihyZWdz LCBoc3IpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEFTU0VSVChNV1NfTk9XUklURSA9 PSAodiktPmFyY2gudm1fZXZlbnQud3JpdGVfZGF0YS5zdGF0dXMpOyAgICAgICAgXAorICAgICh2 KS0+YXJjaC52bV9ldmVudC53cml0ZV9kYXRhLnN0YXR1cyA9IG13czsgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICh2KS0+YXJjaC52bV9ldmVudC53cml0ZV9kYXRhLnZhbHVlID0gKHVp bnQjI3N6IyNfdCkgKHZhbCk7ICAgICAgICAgXAorICAgIF9vbGQgPSBSRUFEX1NZU1JFRyMjc3oo cik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHZtX2V2 ZW50X21vbml0b3JfY3IoY3JpZHgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQjI3N6IyNfdCkgKHZhbCksICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgX29sZCk7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorI2RlZmluZSBU Vk1fRU1VTF9MSF9WTUVWVCh2LCByZWdzLCBoc3IsIHZhbCwgY3JpZHgsIG13cywgbF9vcl9oLCBy KSAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN5c3JlZzY0X3QgX29sZCwgX25ldzsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICggcHNy X21vZGVfaXNfdXNlcihyZWdzKSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorICAgICAgICByZXR1cm4gaW5qZWN0X3VuZGVmX2V4Y2VwdGlvbihyZWdzLCBoc3IpOyAg ICAgICAgICAgICAgICAgICAgICAgXAorICAgIF9uZXcudmFsNjQgPSAoX29sZC52YWw2NCA9IFJF QURfU1lTUkVHNjQocikpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIF9uZXcubF9vcl9o ID0gKHVpbnQzMl90KSAodmFsKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorICAgIEFTU0VSVChNV1NfTk9XUklURSA9PSAodiktPmFyY2gudm1fZXZlbnQud3JpdGVfZGF0 YS5zdGF0dXMpOyAgICAgICAgXAorICAgICh2KS0+YXJjaC52bV9ldmVudC53cml0ZV9kYXRhLnN0 YXR1cyA9IG13czsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICh2KS0+YXJjaC52bV9l dmVudC53cml0ZV9kYXRhLnZhbHVlID0gX25ldy52YWw2NDsgICAgICAgICAgICAgICAgICAgXAor ICAgIHZtX2V2ZW50X21vbml0b3JfY3IoY3JpZHgsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgX25ldy52YWw2NCwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAg ICAgX29sZC52YWw2NCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQor CisjZGVmaW5lIFBBUlRfRlVMTDMyICAgICBTWiwzMiAgICAgICAvKiBTWiB2YXJpYW50LCAzMi1i aXQgY291bnRlcnBhcnQgKi8KKyNkZWZpbmUgUEFSVF9GVUxMNjQgICAgIFNaLDY0ICAgICAgIC8q IFNaIHZhcmlhbnQsIDY0LWJpdCBjb3VudGVycGFydCAqLworI2RlZmluZSBQQVJUX0xPVyAgICAg ICAgTEgsbG93MzIgICAgLyogTEggdmFyaWFudCwgbG93IDMyLWJpdHMgKi8KKyNkZWZpbmUgUEFS VF9ISUdIICAgICAgIExILGhpZ2gzMiAgIC8qIExIIHZhcmlhbnQsIGhpZ2ggMzItYml0cyAqLwor CisvKgorICogSENSX0VMMi5UVk0gdHJhcHBlZCByZWdpc3RlcnMgaW5mbyAoc2l6ZSBpbiBiaXRz KSBmb3IgYW4gYWFyY2g2NCBkb21haW4uCisgKgorICogQVJNdjggKERESSAwNDg3QS5lKTogRDEt MTU2OSBUYWJsZSBEMS0zNCAodHJhcHMgZnJvbSBBQXJjaDY0IHN0YXRlKQorICovCisjZGVmaW5l IFRWTUlORl9FU1JfRUwxICAgICAgICAgIFBBUlRfRlVMTDMyLCAgICBFU1JfRUwxCisjZGVmaW5l IFRWTUlORl9GQVJfRUwxICAgICAgICAgIFBBUlRfRlVMTDY0LCAgICBGQVJfRUwxCisjZGVmaW5l IFRWTUlORl9BRlNSMF9FTDEgICAgICAgIFBBUlRfRlVMTDMyLCAgICBBRlNSMF9FTDEKKyNkZWZp bmUgVFZNSU5GX0FGU1IxX0VMMSAgICAgICAgUEFSVF9GVUxMMzIsICAgIEFGU1IxX0VMMQorI2Rl ZmluZSBUVk1JTkZfTUFJUl9FTDEgICAgICAgICBQQVJUX0ZVTEw2NCwgICAgTUFJUl9FTDEKKyNk ZWZpbmUgVFZNSU5GX0FNQUlSX0VMMSAgICAgICAgUEFSVF9GVUxMNjQsICAgIEFNQUlSX0VMMQor I2RlZmluZSBUVk1JTkZfQ09OVEVYVElEUl9FTDEgICBQQVJUX0ZVTEwzMiwgICAgQ09OVEVYVElE Ul9FTDEKKworI2RlZmluZSBUVk1JTkZfVk1FVlRfU0NUTFJfRUwxICBWTV9FVkVOVF9BUk1fU0NU TFIsIE1XU19TQ1RMUiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJUX0ZV TEwzMiwgICAgU0NUTFJfRUwxCisjZGVmaW5lIFRWTUlORl9WTUVWVF9UVEJSMF9FTDEgIFZNX0VW RU5UX0FSTV9UVEJSMCwgTVdTX1RUQlIwLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFBBUlRfRlVMTDY0LCAgICBUVEJSMF9FTDEKKyNkZWZpbmUgVFZNSU5GX1ZNRVZUX1RUQlIx X0VMMSAgVk1fRVZFTlRfQVJNX1RUQlIxLCBNV1NfVFRCUjEsIFwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUEFSVF9GVUxMNjQsICAgIFRUQlIxX0VMMQorI2RlZmluZSBUVk1JTkZf Vk1FVlRfVENSX0VMMSAgICBWTV9FVkVOVF9BUk1fVFRCQ1IsIE1XU19UVEJDUiwgXAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJUX0ZVTEw2NCwgICAgVENSX0VMMQorCisvKgor ICogSENSX0VMMi5UVk0gdHJhcHBlZCByZWdpc3RlcnMgaW5mbyBmb3IgYW4gYWFyY2gzMiBkb21h aW4uCisgKiBTcGVjaWZpZXMgdGhlIGFyY2hpdGVjdHVyYWxseS1tYXBwZWQgYWFyY2g2NCBjb3Vu dGVycGFydCByZWdpc3RlcgorICogYXMgd2VsbCBhcyB0aGUgYWN0dWFsIHBhcnQgdGhlIGFhcmNo MzIgcmVnaXN0ZXIgaXMgbWFwcGVkLXRvCisgKiAoZnVsbCByZWdpc3Rlci9sb3cgMzItYml0cy9o aWdoIDMyLWJpdHMpLgorICoKKyAqIEFSTXY4IChEREkgMDQ4N0EuZSk6IEQxLTE1NjkgVGFibGUg RDEtMzQgKHRyYXBzIGZyb20gYWFyY2gzMiBzdGF0ZSkKKyAqLworI2RlZmluZSBUVk1JTkZfREFD UiAgICAgICAgICAgICBQQVJUX0ZVTEwzMiwgICAgREFDUjMyX0VMMgorI2RlZmluZSBUVk1JTkZf REZTUiAgICAgICAgICAgICBQQVJUX0ZVTEwzMiwgICAgRVNSX0VMMQorI2RlZmluZSBUVk1JTkZf SUZTUiAgICAgICAgICAgICBQQVJUX0ZVTEwzMiwgICAgSUZTUjMyX0VMMgorI2RlZmluZSBUVk1J TkZfREZBUiAgICAgICAgICAgICBQQVJUX0xPVywgICAgICAgRkFSX0VMMQorI2RlZmluZSBUVk1J TkZfSUZBUiAgICAgICAgICAgICBQQVJUX0hJR0gsICAgICAgRkFSX0VMMQorI2RlZmluZSBUVk1J TkZfQURGU1IgICAgICAgICAgICBQQVJUX0ZVTEwzMiwgICAgQUZTUjBfRUwxCisjZGVmaW5lIFRW TUlORl9BSUZTUiAgICAgICAgICAgIFBBUlRfRlVMTDMyLCAgICBBRlNSMV9FTDEKKyNkZWZpbmUg VFZNSU5GX01BSVIwICAgICAgICAgICAgUEFSVF9MT1csICAgICAgIE1BSVJfRUwxICAgICAgICAv KiBBS0EgUFJSUiAqLworI2RlZmluZSBUVk1JTkZfTUFJUjEgICAgICAgICAgICBQQVJUX0hJR0gs ICAgICAgTUFJUl9FTDEgICAgICAgIC8qIEFLQSBOTVJSICovCisjZGVmaW5lIFRWTUlORl9BTUFJ UjAgICAgICAgICAgIFBBUlRfTE9XLCAgICAgICBBTUFJUl9FTDEKKyNkZWZpbmUgVFZNSU5GX0FN QUlSMSAgICAgICAgICAgUEFSVF9ISUdILCAgICAgIEFNQUlSX0VMMQorI2RlZmluZSBUVk1JTkZf Q09OVEVYVElEUiAgICAgICBQQVJUX0ZVTEwzMiwgICAgQ09OVEVYVElEUl9FTDEKKworI2RlZmlu ZSBUVk1JTkZfVk1FVlRfU0NUTFIgICAgICBWTV9FVkVOVF9BUk1fU0NUTFIsIE1XU19TQ1RMUiwg XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJUX0ZVTEwzMiwgICAgU0NUTFJf RUwxCisjZGVmaW5lIFRWTUlORl9WTUVWVF9UVEJSMF82NCAgIFZNX0VWRU5UX0FSTV9UVEJSMCwg TVdTX1RUQlIwLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBUlRfRlVMTDY0 LCAgICBUVEJSMF9FTDEKKyNkZWZpbmUgVFZNSU5GX1ZNRVZUX1RUQlIxXzY0ICAgVk1fRVZFTlRf QVJNX1RUQlIxLCBNV1NfVFRCUjEsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UEFSVF9GVUxMNjQsICAgIFRUQlIxX0VMMQorI2RlZmluZSBUVk1JTkZfVk1FVlRfVFRCUjBfMzIg ICBWTV9FVkVOVF9BUk1fVFRCUjAsIE1XU19UVEJSMCwgXAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQQVJUX0xPVywgICAgICAgVFRCUjBfRUwxCisjZGVmaW5lIFRWTUlORl9WTUVW VF9UVEJSMV8zMiAgIFZNX0VWRU5UX0FSTV9UVEJSMSwgTVdTX1RUQlIxLCBcCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBBUlRfTE9XLCAgICAgICBUVEJSMV9FTDEKKyNkZWZpbmUg VFZNSU5GX1ZNRVZUX1RUQkNSICAgICAgVk1fRVZFTlRfQVJNX1RUQkNSLCBNV1NfVFRCQ1IsIFwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFSVF9MT1csICAgICAgIFRDUl9FTDEK KworLyoKKyAqIFdyYXBwZXJzIG92ZXIgVFZNX0VNVUxfe1NaLExIfS9UVk1fRU1VTF97U1osTEh9 X1ZNRVZUIHZhcmlhbnRzIHdoaWNoIHVzZQorICogdGhlIFRWTUlORl8qIGRlZnMuCisgKi8KKyNk ZWZpbmUgVFZNX0VNVUxfVkFSKHJlZ3MsIGhzciwgdmFsLCB2YXIsIHN6X29yX2xoLCByLi4uKSBc CisgICAgICAgIFRWTV9FTVVMXyMjdmFyKHJlZ3MsIGhzciwgdmFsLCBzel9vcl9saCwgcikKKyNk ZWZpbmUgVFZNX0VNVUxfVkFSX1ZNRVZUKHYsIHJlZ3MsIGhzciwgdmFsLCBjcmlkeCwgbXdzLCB2 YXIsIHN6X29yX2xoLCByLi4uKSBcCisgICAgICAgIFRWTV9FTVVMXyMjdmFyIyNfVk1FVlQodiwg cmVncywgaHNyLCB2YWwsIGNyaWR4LCBtd3MsIHN6X29yX2xoLCByKQorI2RlZmluZSBUVk1fRU1V TChyZWdzLCBoc3IsIHZhbCwgcikgXAorICAgICAgICBDQUxMX01BQ1JPKFRWTV9FTVVMX1ZBUiwg cmVncywgaHNyLCB2YWwsIFRWTUlORl8jI3IpCisjZGVmaW5lIFRWTV9FTVVMX1ZNRVZUKHYsIHJl Z3MsIGhzciwgdmFsLCByKSBcCisgICAgICAgIENBTExfTUFDUk8oVFZNX0VNVUxfVkFSX1ZNRVZU LCB2LCByZWdzLCBoc3IsIHZhbCwgVFZNSU5GX1ZNRVZUXyMjcikKKworI2VsaWYgQ09ORklHX0FS TV8zMgorCisvKgorICogRW11bGF0aW9uIG9mIHN5c3RlbS1yZWdpc3RlciB0cmFwcGVkIHdyaXRl cyB0aGF0IGRvIG5vdCBjYXVzZQorICogVk1fRVZFTlRfUkVBU09OX1dSSVRFX0NUUkxSRUcgbW9u aXRvciB2bS1ldmVudHMuCisgKiBTdWNoIHdyaXRlcyBhcmUgY29sbGF0ZXJhbGx5IHRyYXBwZWQg ZHVlIHRvIHNldHRpbmcgdGhlIEhDUi5UVk0gYml0LgorICovCisjZGVmaW5lIFRWTV9FTVVMX1Na KHJlZ3MsIGhzciwgdmFsLCBzeiwgci4uLikgICAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgIGlmICggcHNyX21vZGVfaXNfdXNlcihyZWdzKSApICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBpbmplY3RfdW5kZWZfZXhjZXB0 aW9uKHJlZ3MsIGhzcik7ICAgICAgICAgICAgICAgICAgIFwKKyAgICBXUklURV9TWVNSRUcjI3N6 KCh1aW50IyNzeiMjX3QpICh2YWwpLCByKTsgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisv KgorICogRW11bGF0aW9uIG9mIHN5c3RlbS1yZWdpc3RlciB3cml0ZXMgdGhhdCBjYXVzZSBWTV9F VkVOVF9SRUFTT05fV1JJVEVfQ1RSTFJFRworICogbW9uaXRvciB2bS1ldmVudHMuCisgKi8KKyNk ZWZpbmUgVFZNX0VNVUxfU1pfVk1FVlQodiwgcmVncywgaHNyLCB2YWwsIGNyaWR4LCBtd3MsIHN6 LCByLi4uKSAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdW5zaWduZWQgbG9uZyBfb2xkOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIHBzcl9tb2Rl X2lzX3VzZXIocmVncykgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg ICAgICByZXR1cm4gaW5qZWN0X3VuZGVmX2V4Y2VwdGlvbihyZWdzLCBoc3IpOyAgICAgICAgICAg ICAgICAgICBcCisgICAgQVNTRVJUKE1XU19OT1dSSVRFID09ICh2KS0+YXJjaC52bV9ldmVudC53 cml0ZV9kYXRhLnN0YXR1cyk7ICAgIFwKKyAgICAodiktPmFyY2gudm1fZXZlbnQud3JpdGVfZGF0 YS5zdGF0dXMgPSBtd3M7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICh2KS0+YXJjaC52bV9l dmVudC53cml0ZV9kYXRhLnZhbHVlID0gKHVpbnQjI3N6IyNfdCkgKHZhbCk7ICAgICBcCisgICAg X29sZCA9IFJFQURfU1lTUkVHIyNzeihyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICB2bV9ldmVudF9tb25pdG9yX2NyKGNyaWR4LCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQjI3N6 IyNfdCkgKHZhbCksICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAg ICAgICBfb2xkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKwor LyoKKyAqIEhDUi5UVk0gdHJhcHBlZCByZWdpc3RlcnMgaW5mbyAoc2l6ZSBpbiBiaXRzKS4KKyAq CisgKiBBUk12NyAoRERJIDA0MDZDLmIpOiBCMS4xNC4xMworICovCisjZGVmaW5lIFRWTUlORl9E QUNSICAgICAgICAgICAgIDMyLERBQ1IKKyNkZWZpbmUgVFZNSU5GX0RGU1IgICAgICAgICAgICAg MzIsREZTUgorI2RlZmluZSBUVk1JTkZfSUZTUiAgICAgICAgICAgICAzMixJRlNSCisjZGVmaW5l IFRWTUlORl9ERkFSICAgICAgICAgICAgIDMyLERGQVIKKyNkZWZpbmUgVFZNSU5GX0lGQVIgICAg ICAgICAgICAgMzIsSUZBUgorI2RlZmluZSBUVk1JTkZfQURGU1IgICAgICAgICAgICAzMixBREZT UgorI2RlZmluZSBUVk1JTkZfQUlGU1IgICAgICAgICAgICAzMixBSUZTUgorI2RlZmluZSBUVk1J TkZfTUFJUjAgICAgICAgICAgICAzMixNQUlSMCAgICAgICAgLyogQUtBIFBSUlIgKi8KKyNkZWZp bmUgVFZNSU5GX01BSVIxICAgICAgICAgICAgMzIsTUFJUjEgICAgICAgIC8qIEFLQSBOTVJSICov CisjZGVmaW5lIFRWTUlORl9BTUFJUjAgICAgICAgICAgIDMyLEFNQUlSMAorI2RlZmluZSBUVk1J TkZfQU1BSVIxICAgICAgICAgICAzMixBTUFJUjEKKyNkZWZpbmUgVFZNSU5GX0NPTlRFWFRJRFIg ICAgICAgMzIsQ09OVEVYVElEUgorCisjZGVmaW5lIFRWTUlORl9WTUVWVF9TQ1RMUiAgICAgIFZN X0VWRU5UX0FSTV9TQ1RMUiwgTVdTX1NDVExSLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDMyLFNDVExSCisjZGVmaW5lIFRWTUlORl9WTUVWVF9UVEJSMF82NCAgIFZNX0VWRU5U X0FSTV9UVEJSMCwgTVdTX1RUQlIwLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDY0LFRUQlIwCisjZGVmaW5lIFRWTUlORl9WTUVWVF9UVEJSMV82NCAgIFZNX0VWRU5UX0FSTV9U VEJSMSwgTVdTX1RUQlIxLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY0LFRU QlIxCisjZGVmaW5lIFRWTUlORl9WTUVWVF9UVEJSMF8zMiAgIFZNX0VWRU5UX0FSTV9UVEJSMCwg TVdTX1RUQlIwXzMyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMyLFRUQlIw XzMyCisjZGVmaW5lIFRWTUlORl9WTUVWVF9UVEJSMV8zMiAgIFZNX0VWRU5UX0FSTV9UVEJSMSwg TVdTX1RUQlIxXzMyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMyLFRUQlIx XzMyCisjZGVmaW5lIFRWTUlORl9WTUVWVF9UVEJDUiAgICAgIFZNX0VWRU5UX0FSTV9UVEJDUiwg TVdTX1RUQkNSLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMyLFRUQkNSCisK Ky8qIFdyYXBwZXJzIG92ZXIgVFZNX0VNVUxfU1ovVFZNX0VNVUxfU1pfVk1FVlQgd2hpY2ggdXNl IHRoZSBUVk1JTkZfKiBkZWZzLiAqLworI2RlZmluZSBUVk1fRU1VTChyZWdzLCBoc3IsIHZhbCwg cikgXAorICAgICAgICBDQUxMX01BQ1JPKFRWTV9FTVVMX1NaLCByZWdzLCBoc3IsIHZhbCwgVFZN SU5GXyMjcikKKyNkZWZpbmUgVFZNX0VNVUxfVk1FVlQodiwgcmVncywgaHNyLCB2YWwsIHIpIFwK KyAgICAgICAgQ0FMTF9NQUNSTyhUVk1fRU1VTF9TWl9WTUVWVCwgdiwgcmVncywgaHNyLCB2YWws IFRWTUlORl9WTUVWVF8jI3IpCisKKyNlbmRpZgorCisjZW5kaWYgLyogX19BU01fQVJNX1RSQVBT X0hfXyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS92bV9ldmVudC5oIGIveGVu L2luY2x1ZGUvYXNtLWFybS92bV9ldmVudC5oCmluZGV4IDRlNWEyNzIuLmVkZjk2NTQgMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vdm1fZXZlbnQuaAorKysgYi94ZW4vaW5jbHVkZS9h c20tYXJtL3ZtX2V2ZW50LmgKQEAgLTMwLDYgKzMwLDEyIEBAIHN0YXRpYyBpbmxpbmUgaW50IHZt X2V2ZW50X2luaXRfZG9tYWluKHN0cnVjdCBkb21haW4gKmQpCiAKIHN0YXRpYyBpbmxpbmUgdm9p ZCB2bV9ldmVudF9jbGVhbnVwX2RvbWFpbihzdHJ1Y3QgZG9tYWluICpkKQogeworICAgIHN0cnVj dCB2Y3B1ICp2OworCisgICAgZm9yX2VhY2hfdmNwdSAoIGQsIHYgKQorICAgICAgICBtZW1zZXQo JnYtPmFyY2gudm1fZXZlbnQsIDAsIHNpemVvZih2LT5hcmNoLnZtX2V2ZW50KSk7CisKKyAgICBt ZW1zZXQoJmQtPmFyY2gubW9uaXRvciwgMCwgc2l6ZW9mKGQtPmFyY2gubW9uaXRvcikpOwogICAg IG1lbXNldCgmZC0+bW9uaXRvciwgMCwgc2l6ZW9mKGQtPm1vbml0b3IpKTsKIH0KIApAQCAtNDEs NyArNDcsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIHZtX2V2ZW50X3RvZ2dsZV9zaW5nbGVzdGVw KHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB2Y3B1ICp2KQogc3RhdGljIGlubGluZQogdm9pZCB2 bV9ldmVudF9yZWdpc3Rlcl93cml0ZV9yZXN1bWUoc3RydWN0IHZjcHUgKnYsIHZtX2V2ZW50X3Jl c3BvbnNlX3QgKnJzcCkKIHsKLSAgICAvKiBOb3Qgc3VwcG9ydGVkIG9uIEFSTS4gKi8KKyAgICAv KiBYODYgVk1fRVZFTlRfUkVBU09OX01PVl9UT19NU1IgY291bGQgKGJ1dCBzaG91bGRuJ3QpIGVu ZC11cCBoZXJlIHRvby4gKi8KKyAgICBpZiAoIHVubGlrZWx5KFZNX0VWRU5UX1JFQVNPTl9XUklU RV9DVFJMUkVHICE9IHJzcC0+cmVhc29uKSApCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgg KHJzcC0+ZmxhZ3MgJiBWTV9FVkVOVF9GTEFHX0RFTlkpICYmCisgICAgICAgICAocnNwLT5mbGFn cyAmIFZNX0VWRU5UX0ZMQUdfVkNQVV9QQVVTRUQpICkKKyAgICAgICAgdi0+YXJjaC52bV9ldmVu dC53cml0ZV9kYXRhLnN0YXR1cyA9IE1XU19OT1dSSVRFOwogfQogCiBzdGF0aWMgaW5saW5lCkBA IC01NSwxMCArNjcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdm1fZXZlbnRfZmlsbF9yZWdzKHZt X2V2ZW50X3JlcXVlc3RfdCAqcmVxKQogICAgIC8qIE5vdCBzdXBwb3J0ZWQgb24gQVJNLiAqLwog fQogCi1zdGF0aWMgaW5saW5lIHZvaWQgYXJjaF92bV9ldmVudF92Y3B1X2VudGVyKHN0cnVjdCB2 Y3B1ICp2KQotewotICAgIC8qIE5vdGhpbmcgdG8gZG8uICovCi19Cit2b2lkIGFyY2hfdm1fZXZl bnRfdmNwdV9lbnRlcihzdHJ1Y3QgdmNwdSAqdik7CiAKIC8qCiAgKiBNb25pdG9yIHZtLWV2ZW50 cy4KQEAgLTY3LDcgKzc2LDggQEAgc3RhdGljIGlubGluZSB1aW50MzJfdCB2bV9ldmVudF9tb25p dG9yX2dldF9jYXBhYmlsaXRpZXMoc3RydWN0IGRvbWFpbiAqZCkKIHsKICAgICB1aW50MzJfdCBj YXBhYmlsaXRpZXMgPSAwOwogCi0gICAgY2FwYWJpbGl0aWVzID0gKDFVIDw8IFhFTl9ET01DVExf TU9OSVRPUl9FVkVOVF9HVUVTVF9SRVFVRVNUKTsKKyAgICBjYXBhYmlsaXRpZXMgPSAoMVUgPDwg WEVOX0RPTUNUTF9NT05JVE9SX0VWRU5UX1dSSVRFX0NUUkxSRUcpIHwKKyAgICAgICAgICAgICAg ICAgICAoMVUgPDwgWEVOX0RPTUNUTF9NT05JVE9SX0VWRU5UX0dVRVNUX1JFUVVFU1QpOwogCiAg ICAgcmV0dXJuIGNhcGFiaWxpdGllczsKIH0KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1Ymxp Yy92bV9ldmVudC5oIGIveGVuL2luY2x1ZGUvcHVibGljL3ZtX2V2ZW50LmgKaW5kZXggOGY5NGUy MC4uZWMzZWFjYSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL3ZtX2V2ZW50LmgKKysr IGIveGVuL2luY2x1ZGUvcHVibGljL3ZtX2V2ZW50LmgKQEAgLTEyMSwxMiArMTIxLDE4IEBACiAv KiBBbiBldmVudCBoYXMgYmVlbiByZXF1ZXN0ZWQgdmlhIEhWTU9QX2d1ZXN0X3JlcXVlc3Rfdm1f ZXZlbnQuICovCiAjZGVmaW5lIFZNX0VWRU5UX1JFQVNPTl9HVUVTVF9SRVFVRVNUICAgICAgICAg ICA4CiAKLS8qIFN1cHBvcnRlZCB2YWx1ZXMgZm9yIHRoZSB2bV9ldmVudF93cml0ZV9jdHJscmVn IGluZGV4LiAqLworLyogU3VwcG9ydGVkIHZhbHVlcyBmb3IgdGhlIHZtX2V2ZW50X3dyaXRlX2N0 cmxyZWcgaW5kZXggKHg4NikuICovCiAjZGVmaW5lIFZNX0VWRU5UX1g4Nl9DUjAgICAgMAogI2Rl ZmluZSBWTV9FVkVOVF9YODZfQ1IzICAgIDEKICNkZWZpbmUgVk1fRVZFTlRfWDg2X0NSNCAgICAy CiAjZGVmaW5lIFZNX0VWRU5UX1g4Nl9YQ1IwICAgMwogCisvKiBTdXBwb3J0ZWQgdmFsdWVzIGZv ciB0aGUgdm1fZXZlbnRfd3JpdGVfY3RybHJlZyBpbmRleCAoYXJtKS4gKi8KKyNkZWZpbmUgVk1f RVZFTlRfQVJNX1NDVExSICAwICAgICAgIC8qIFNDVExSX0VMMSAoYWFyY2g2NCksIFNDVExSIChh YXJjaDMyKSAqLworI2RlZmluZSBWTV9FVkVOVF9BUk1fVFRCUjAgIDEgICAgICAgLyogVFRCUjBf RUwxIChhYXJjaDY0KSwgVFRCUjAgKGFhcmNoMzIpICovCisjZGVmaW5lIFZNX0VWRU5UX0FSTV9U VEJSMSAgMiAgICAgICAvKiBUVEJSMV9FTDEgKGFhcmNoNjQpLCBUVEJSMSAoYWFyY2gzMikgKi8K KyNkZWZpbmUgVk1fRVZFTlRfQVJNX1RUQkNSICAzICAgICAgIC8qIFRDUl9FTDEgICAoYWFyY2g2 NCksIFRUQkNSIChhYXJjaDMyKSAqLworCiAvKgogICogVXNpbmcgYSBjdXN0b20gc3RydWN0IChu b3QgaHZtX2h3X2NwdSkgc28gYXMgdG8gbm90IGZpbGwKICAqIHRoZSB2bV9ldmVudCByaW5nIGJ1 ZmZlciB0b28gcXVpY2tseS4KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9tb25pdG9yLmgg Yi94ZW4vaW5jbHVkZS94ZW4vbW9uaXRvci5oCmluZGV4IDQyMmZkOTMuLmRjNWI5ZDcgMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9tb25pdG9yLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL21v bml0b3IuaApAQCAtMjUsOSArMjUsNyBAQAogc3RydWN0IGRvbWFpbjsKIHN0cnVjdCB4ZW5fZG9t Y3RsX21vbml0b3Jfb3A7CiAKLSNpZiBDT05GSUdfWDg2CiAjZGVmaW5lIG1vbml0b3JfY3RybHJl Z19iaXRtYXNrKGN0cmxyZWdfaW5kZXgpICgxVSA8PCAoY3RybHJlZ19pbmRleCkpCi0jZW5kaWYK IAogaW50IG1vbml0b3JfZG9tY3RsKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB4ZW5fZG9tY3Rs X21vbml0b3Jfb3AgKm9wKTsKIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3ZtX2V2ZW50 LmggYi94ZW4vaW5jbHVkZS94ZW4vdm1fZXZlbnQuaAppbmRleCA3MWFlODRhLi44YjFhY2QwIDEw MDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vdm1fZXZlbnQuaAorKysgYi94ZW4vaW5jbHVkZS94 ZW4vdm1fZXZlbnQuaApAQCAtOTYsNyArOTYsNiBAQCB2b2lkIHZtX2V2ZW50X3ZjcHVfdW5wYXVz ZShzdHJ1Y3QgdmNwdSAqdik7CiBpbnQgdm1fZXZlbnRfbW9uaXRvcl90cmFwcyhzdHJ1Y3QgdmNw dSAqdiwgdWludDhfdCBzeW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdm1fZXZlbnRf cmVxdWVzdF90ICpyZXEpOwogCi0jaWYgQ09ORklHX1g4NgogLyoKICAqIENhbGxlZCBmb3IgdGhl IGN1cnJlbnQgdkNQVSBvbiBjb250cm9sLXJlZ2lzdGVyIGNoYW5nZXMgYnkgZ3Vlc3QuCiAgKiBU aGUgZXZlbnQgbWlnaHQgbm90IGZpcmUgaWYgdGhlIGNsaWVudCBoYXMgc3Vic2NyaWJlZCB0byBp dCBpbiBvbmNoYW5nZW9ubHkKQEAgLTEwNCw3ICsxMDMsNiBAQCBpbnQgdm1fZXZlbnRfbW9uaXRv cl90cmFwcyhzdHJ1Y3QgdmNwdSAqdiwgdWludDhfdCBzeW5jLAogICovCiBib29sX3Qgdm1fZXZl bnRfbW9uaXRvcl9jcih1bnNpZ25lZCBpbnQgaW5kZXgsIHVuc2lnbmVkIGxvbmcgdmFsdWUsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG9sZCk7Ci0jZW5kaWYKIAog dm9pZCB2bV9ldmVudF9tb25pdG9yX2d1ZXN0X3JlcXVlc3Qodm9pZCk7CiAKLS0gCjIuNS4wCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9y Zy94ZW4tZGV2ZWwK