From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v2 5/9] viridian: separate interrupt related enlightenment implementations... Date: Wed, 31 Oct 2018 12:43:31 +0000 Message-ID: <20181031124335.23867-6-paul.durrant@citrix.com> References: <20181031124335.23867-1-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gHpqZ-0005vD-4d for xen-devel@lists.xenproject.org; Wed, 31 Oct 2018 12:43:43 +0000 In-Reply-To: <20181031124335.23867-1-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Andrew Cooper , Paul Durrant , Wei Liu , Jan Beulich List-Id: xen-devel@lists.xenproject.org Li4uaW50byBuZXcgJ3N5bmljJyBtb2R1bGUuCgpUaGUgU3luSUMgKHN5bnRoZXRpYyBpbnRlcnJ1 cHQgY29udHJvbGxlcikgaXMgc3BlY2lmaWVkIFsxXSB0byBiZSBhIHN1cGVyLQpzZXQgb2YgYSB2 aXJ0dWFsaXplZCBMQVBJQywgYW5kIGl0cyBkZWZpbml0aW9uIGVuY29tcGFzc2VzIGFsbAplbmxp Z2h0ZW5tZW50cyByZWxhdGVkIHRvIHZpcnR1YWwgaW50ZXJydXB0IGNvbnRyb2wuCgpUaGlzIHBh dGNoIHJlZHVjZXMgdGhlIHNpemUgb2YgdGhlIG1haW4gdmlyaWRpYW4gc291cmNlIG1vZHVsZSBi eSBnaXZpbmcKdGhlc2UgZW5saWdodGVubWVudHMgdGhlaXIgb3duIG1vZHVsZS4gVGhpcyBpcyBk b25lIGluIGFudGljaXBhdGlvbiBvZgppbXBsZW1lbnRhdGlvbiBvZiBtb3JlIHN1Y2ggZW5saWdo dGVubWVudHMgYW5kIGEgZGVzaXJlIG5vdCB0byBmdXJ0aGVyCmxlbmd0aGVuIHRoZW4gbWFpbiBz b3VyY2UgbW9kdWxlIHdoZW4gdGhpcyB3b3JrIGlzIGRvbmUuCgpXaGlsc3QgbW92aW5nIHRoZSBj b2RlOgoKLSBGaXggdmFyaW91cyBzdHlsZSBpc3N1ZXMuCi0gTW92ZSB0aGUgTVNSIGRlZmluaXRp b25zIGludG8gdGhlIGhlYWRlciAoc2luY2UgdGhleSBhcmUgbm93IG5lZWRlZCBpbgogIG1vcmUg dGhhbiBvbmUgc291cmNlIG1vZHVsZSkuCgpbMV0gaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29m dERvY3MvVmlydHVhbGl6YXRpb24tRG9jdW1lbnRhdGlvbi9yYXcvbGl2ZS90bGZzL0h5cGVydmlz b3IlMjBUb3AlMjBMZXZlbCUyMEZ1bmN0aW9uYWwlMjBTcGVjaWZpY2F0aW9uJTIwdjUuMEMucGRm CgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgot LS0KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEFuZHJldyBDb29wZXIg PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXgu Y29tPgoKdjI6CiAtIFNvcnQgaGVhZGVycyBhbHBoYWJldGljYWxseSBhbmQgc2VwYXJhdGUgYXNt LyBhbWQgeGVuLyBzZWN0aW9ucwogLSBDb25zdGlmeSB2Y3B1IGNvbnRleHQgZHVyaW5nIGxvYWQK LS0tCiB4ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL01ha2VmaWxlICAgfCAgIDEgKwogeGVuL2Fy Y2gveDg2L2h2bS92aXJpZGlhbi9zeW5pYy5jICAgIHwgMjI1ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKIHhlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4vdmlyaWRpYW4uYyB8IDIy OSArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogeGVuL2luY2x1ZGUvYXNtLXg4 Ni9odm0vdmlyaWRpYW4uaCAgIHwgIDc2ICsrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAz MTIgaW5zZXJ0aW9ucygrKSwgMjE5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhl bi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4vc3luaWMuYwoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4 Ni9odm0vdmlyaWRpYW4vTWFrZWZpbGUgYi94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL01ha2Vm aWxlCmluZGV4IDA5ZmQwYTVmM2MuLmZjYThlMTZlMjAgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9odm0vdmlyaWRpYW4vTWFrZWZpbGUKKysrIGIveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi9N YWtlZmlsZQpAQCAtMSArMSwyIEBACitvYmoteSArPSBzeW5pYy5vCiBvYmoteSArPSB2aXJpZGlh bi5vCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3N5bmljLmMgYi94ZW4v YXJjaC94ODYvaHZtL3ZpcmlkaWFuL3N5bmljLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uZTAxYWM5NDFlYQotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9hcmNoL3g4Ni9o dm0vdmlyaWRpYW4vc3luaWMuYwpAQCAtMCwwICsxLDIyNSBAQAorLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorICogc3luaWMuYworICoKKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHNvbWUgaW50ZXJydXB0 IHJlbGF0ZWQgVmlyaWRpYW4gZW5saWdodGVubWVudHMuCisgKiBTZWUgTWljcm9zb2Z0J3MgSHlw ZXJ2aXNvciBUb3AgTGV2ZWwgRnVuY3Rpb25hbCBTcGVjaWZpY2F0aW9uLgorICogZm9yIG1vcmUg aW5mb3JtYXRpb24uCisgKi8KKworI2luY2x1ZGUgPHhlbi9kb21haW5fcGFnZS5oPgorI2luY2x1 ZGUgPHhlbi9oeXBlcmNhbGwuaD4KKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KKyNpbmNsdWRlIDx4 ZW4vdmVyc2lvbi5oPgorCisjaW5jbHVkZSA8YXNtL2FwaWMuaD4KKyNpbmNsdWRlIDxhc20vaHZt L3N1cHBvcnQuaD4KKworc3RhdGljIHZvaWQgZHVtcF92cF9hc3Npc3QoY29uc3Qgc3RydWN0IHZj cHUgKnYpCit7CisgICAgY29uc3QgdW5pb24gdmlyaWRpYW5fcGFnZV9tc3IgKnZhID0gJnYtPmFy Y2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC5tc3I7CisKKyAgICBpZiAoICF2YS0+ZmllbGRzLmVu YWJsZWQgKQorICAgICAgICByZXR1cm47CisKKyAgICBwcmludGsoWEVOTE9HX0dfSU5GTyAiJXB2 OiBWSVJJRElBTiBWUF9BU1NJU1RfUEFHRTogcGZuOiAlbHhcbiIsCisgICAgICAgICAgIHYsICh1 bnNpZ25lZCBsb25nKXZhLT5maWVsZHMucGZuKTsKK30KKworc3RhdGljIHZvaWQgaW5pdGlhbGl6 ZV92cF9hc3Npc3Qoc3RydWN0IHZjcHUgKnYpCit7CisgICAgc3RydWN0IGRvbWFpbiAqZCA9IHYt PmRvbWFpbjsKKyAgICB1bnNpZ25lZCBsb25nIGdtZm4gPSB2LT5hcmNoLmh2bS52aXJpZGlhbi52 cF9hc3Npc3QubXNyLmZpZWxkcy5wZm47CisgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSA9IGdl dF9wYWdlX2Zyb21fZ2ZuKGQsIGdtZm4sIE5VTEwsIFAyTV9BTExPQyk7CisgICAgdm9pZCAqdmE7 CisKKyAgICBBU1NFUlQoIXYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC52YSk7CisKKyAg ICBpZiAoICFwYWdlICkKKyAgICAgICAgZ290byBmYWlsOworCisgICAgaWYgKCAhZ2V0X3BhZ2Vf dHlwZShwYWdlLCBQR1Rfd3JpdGFibGVfcGFnZSkgKQorICAgIHsKKyAgICAgICAgcHV0X3BhZ2Uo cGFnZSk7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICB2YSA9IF9fbWFwX2RvbWFp bl9wYWdlX2dsb2JhbChwYWdlKTsKKyAgICBpZiAoICF2YSApCisgICAgeworICAgICAgICBwdXRf cGFnZV9hbmRfdHlwZShwYWdlKTsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKworICAgIGNs ZWFyX3BhZ2UodmEpOworCisgICAgdi0+YXJjaC5odm0udmlyaWRpYW4udnBfYXNzaXN0LnZhID0g dmE7CisgICAgcmV0dXJuOworCisgZmFpbDoKKyAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywg IkJhZCBHTUZOICUjIlBSSV9nZm4iIChNRk4gJSMiUFJJX21mbiIpXG4iLAorICAgICAgICAgICAg IGdtZm4sIG1mbl94KHBhZ2UgPyBwYWdlX3RvX21mbihwYWdlKSA6IElOVkFMSURfTUZOKSk7Cit9 CisKK3N0YXRpYyB2b2lkIHRlYXJkb3duX3ZwX2Fzc2lzdChzdHJ1Y3QgdmNwdSAqdikKK3sKKyAg ICB2b2lkICp2YSA9IHYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC52YTsKKyAgICBzdHJ1 Y3QgcGFnZV9pbmZvICpwYWdlOworCisgICAgaWYgKCAhdmEgKQorICAgICAgICByZXR1cm47CisK KyAgICB2LT5hcmNoLmh2bS52aXJpZGlhbi52cF9hc3Npc3QudmEgPSBOVUxMOworCisgICAgcGFn ZSA9IG1mbl90b19wYWdlKGRvbWFpbl9wYWdlX21hcF90b19tZm4odmEpKTsKKworICAgIHVubWFw X2RvbWFpbl9wYWdlX2dsb2JhbCh2YSk7CisgICAgcHV0X3BhZ2VfYW5kX3R5cGUocGFnZSk7Cit9 CisKK3ZvaWQgdmlyaWRpYW5fYXBpY19hc3Npc3Rfc2V0KHN0cnVjdCB2Y3B1ICp2KQoreworICAg IHVpbnQzMl90ICp2YSA9IHYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC52YTsKKworICAg IGlmICggIXZhICkKKyAgICAgICAgcmV0dXJuOworCisgICAgLyoKKyAgICAgKiBJZiB0aGVyZSBp cyBhbHJlYWR5IGFuIGFzc2lzdCBwZW5kaW5nIHRoZW4gc29tZXRoaW5nIGhhcyBnb25lCisgICAg ICogd3JvbmcgYW5kIHRoZSBWTSB3aWxsIG1vc3QgbGlrZWx5IGhhbmcgc28gZm9yY2UgYSBjcmFz aCBub3cKKyAgICAgKiB0byBtYWtlIHRoZSBwcm9ibGVtIGNsZWFyLgorICAgICAqLworICAgIGlm ICggdi0+YXJjaC5odm0udmlyaWRpYW4udnBfYXNzaXN0LnBlbmRpbmcgKQorICAgICAgICBkb21h aW5fY3Jhc2godi0+ZG9tYWluKTsKKworICAgIHYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lz dC5wZW5kaW5nID0gdHJ1ZTsKKyAgICAqdmEgfD0gMXU7Cit9CisKK2Jvb2wgdmlyaWRpYW5fYXBp Y19hc3Npc3RfY29tcGxldGVkKHN0cnVjdCB2Y3B1ICp2KQoreworICAgIHVpbnQzMl90ICp2YSA9 IHYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC52YTsKKworICAgIGlmICggIXZhICkKKyAg ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCB2LT5hcmNoLmh2bS52aXJpZGlhbi52cF9h c3Npc3QucGVuZGluZyAmJgorICAgICAgICAgISgqdmEgJiAxdSkgKQorICAgIHsKKyAgICAgICAg LyogQW4gRU9JIGhhcyBiZWVuIGF2b2lkZWQgKi8KKyAgICAgICAgdi0+YXJjaC5odm0udmlyaWRp YW4udnBfYXNzaXN0LnBlbmRpbmcgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg fQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIHZpcmlkaWFuX2FwaWNfYXNzaXN0X2Ns ZWFyKHN0cnVjdCB2Y3B1ICp2KQoreworICAgIHVpbnQzMl90ICp2YSA9IHYtPmFyY2guaHZtLnZp cmlkaWFuLnZwX2Fzc2lzdC52YTsKKworICAgIGlmICggIXZhICkKKyAgICAgICAgcmV0dXJuOwor CisgICAgKnZhICY9IH4xdTsKKyAgICB2LT5hcmNoLmh2bS52aXJpZGlhbi52cF9hc3Npc3QucGVu ZGluZyA9IGZhbHNlOworfQorCitpbnQgdmlyaWRpYW5fc3luaWNfd3Jtc3Ioc3RydWN0IHZjcHUg KnYsIHVpbnQzMl90IGlkeCwgdWludDY0X3QgdmFsKQoreworICAgIHN3aXRjaCAoIGlkeCApCisg ICAgeworICAgIGNhc2UgSFZfWDY0X01TUl9FT0k6CisgICAgICAgIHZsYXBpY19FT0lfc2V0KHZj cHVfdmxhcGljKHYpKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEhWX1g2NF9NU1JfSUNS OiB7CisgICAgICAgIHUzMiBlYXggPSAodTMyKXZhbCwgZWR4ID0gKHUzMikodmFsID4+IDMyKTsK KyAgICAgICAgc3RydWN0IHZsYXBpYyAqdmxhcGljID0gdmNwdV92bGFwaWModik7CisgICAgICAg IGVheCAmPSB+KDEgPDwgMTIpOworICAgICAgICBlZHggJj0gMHhmZjAwMDAwMDsKKyAgICAgICAg dmxhcGljX3NldF9yZWcodmxhcGljLCBBUElDX0lDUjIsIGVkeCk7CisgICAgICAgIHZsYXBpY19p cGkodmxhcGljLCBlYXgsIGVkeCk7CisgICAgICAgIHZsYXBpY19zZXRfcmVnKHZsYXBpYywgQVBJ Q19JQ1IsIGVheCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEhWX1g2NF9NU1Jf VFBSOgorICAgICAgICB2bGFwaWNfc2V0X3JlZyh2Y3B1X3ZsYXBpYyh2KSwgQVBJQ19UQVNLUFJJ LCAodWludDhfdCl2YWwpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSFZfWDY0X01TUl9W UF9BU1NJU1RfUEFHRToKKyAgICAgICAgdGVhcmRvd25fdnBfYXNzaXN0KHYpOyAvKiByZWxlYXNl IGFueSBwcmV2aW91cyBtYXBwaW5nICovCisgICAgICAgIHYtPmFyY2guaHZtLnZpcmlkaWFuLnZw X2Fzc2lzdC5tc3IucmF3ID0gdmFsOworICAgICAgICBkdW1wX3ZwX2Fzc2lzdCh2KTsKKyAgICAg ICAgaWYgKCB2LT5hcmNoLmh2bS52aXJpZGlhbi52cF9hc3Npc3QubXNyLmZpZWxkcy5lbmFibGVk ICkKKyAgICAgICAgICAgIGluaXRpYWxpemVfdnBfYXNzaXN0KHYpOworICAgICAgICBicmVhazsK KworICAgIGRlZmF1bHQ6CisgICAgICAgIGdkcHJpbnRrKFhFTkxPR19JTkZPLAorICAgICAgICAg ICAgICAgICAiJXM6IHVuaW1wbGVtZW50ZWQgTVNSICUjeCAoJTAxNiJQUkl4NjQiKVxuIiwKKyAg ICAgICAgICAgICAgICAgX19mdW5jX18sIGlkeCwgdmFsKTsKKyAgICAgICAgcmV0dXJuIFg4NkVN VUxfRVhDRVBUSU9OOworICAgIH0KKworICAgIHJldHVybiBYODZFTVVMX09LQVk7Cit9CisKK2lu dCB2aXJpZGlhbl9zeW5pY19yZG1zcihjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgaWR4 LCB1aW50NjRfdCAqdmFsKQoreworICAgIHN3aXRjaCAoIGlkeCApCisgICAgeworICAgIGNhc2Ug SFZfWDY0X01TUl9FT0k6CisgICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKKworICAg IGNhc2UgSFZfWDY0X01TUl9JQ1I6CisgICAgeworICAgICAgICB1aW50MzJfdCBpY3IyID0gdmxh cGljX2dldF9yZWcodmNwdV92bGFwaWModiksIEFQSUNfSUNSMik7CisgICAgICAgIHVpbnQzMl90 IGljciA9IHZsYXBpY19nZXRfcmVnKHZjcHVfdmxhcGljKHYpLCBBUElDX0lDUik7CisKKyAgICAg ICAgKnZhbCA9ICgodWludDY0X3QpaWNyMiA8PCAzMikgfCBpY3I7CisgICAgICAgIGJyZWFrOwor ICAgIH0KKyAgICBjYXNlIEhWX1g2NF9NU1JfVFBSOgorICAgICAgICAqdmFsID0gdmxhcGljX2dl dF9yZWcodmNwdV92bGFwaWModiksIEFQSUNfVEFTS1BSSSk7CisgICAgICAgIGJyZWFrOworCisg ICAgY2FzZSBIVl9YNjRfTVNSX1ZQX0FTU0lTVF9QQUdFOgorICAgICAgICAqdmFsID0gdi0+YXJj aC5odm0udmlyaWRpYW4udnBfYXNzaXN0Lm1zci5yYXc7CisgICAgICAgIGJyZWFrOworCisgICAg ZGVmYXVsdDoKKyAgICAgICAgZ2RwcmludGsoWEVOTE9HX0lORk8sCisgICAgICAgICAgICAgICAg ICIlczogdW5pbXBsZW1lbnRlZCBNU1IgJSN4XG4iLAorICAgICAgICAgICAgICAgICBfX2Z1bmNf XywgaWR4KTsKKyAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOworICAgIH0KKworICAg IHJldHVybiBYODZFTVVMX09LQVk7Cit9CisKK3ZvaWQgdmlyaWRpYW5fc3luaWNfc2F2ZV92Y3B1 X2N0eHQoY29uc3Qgc3RydWN0IHZjcHUgKnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBodm1fdmlyaWRpYW5fdmNwdV9jb250ZXh0ICpjdHh0KQoreworICAgIGN0 eHQtPnZwX2Fzc2lzdF9wZW5kaW5nID0gdi0+YXJjaC5odm0udmlyaWRpYW4udnBfYXNzaXN0LnBl bmRpbmc7CisgICAgY3R4dC0+dnBfYXNzaXN0X21zciA9IHYtPmFyY2guaHZtLnZpcmlkaWFuLnZw X2Fzc2lzdC5tc3IucmF3OworfQorCit2b2lkIHZpcmlkaWFuX3N5bmljX2xvYWRfdmNwdV9jdHh0 KAorICAgIHN0cnVjdCB2Y3B1ICp2LCBjb25zdCBzdHJ1Y3QgaHZtX3ZpcmlkaWFuX3ZjcHVfY29u dGV4dCAqY3R4dCkKK3sKKyAgICB2LT5hcmNoLmh2bS52aXJpZGlhbi52cF9hc3Npc3QubXNyLnJh dyA9IGN0eHQtPnZwX2Fzc2lzdF9tc3I7CisgICAgaWYgKCB2LT5hcmNoLmh2bS52aXJpZGlhbi52 cF9hc3Npc3QubXNyLmZpZWxkcy5lbmFibGVkICkKKyAgICAgICAgaW5pdGlhbGl6ZV92cF9hc3Np c3Qodik7CisKKyAgICB2LT5hcmNoLmh2bS52aXJpZGlhbi52cF9hc3Npc3QucGVuZGluZyA9ICEh Y3R4dC0+dnBfYXNzaXN0X3BlbmRpbmc7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6Cisg KiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAor ICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi92aXJpZGlhbi5jIGIveGVuL2Fy Y2gveDg2L2h2bS92aXJpZGlhbi92aXJpZGlhbi5jCmluZGV4IDJkYzg2ZGQwZjMuLmNmMjc4OWU4 YWUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4vdmlyaWRpYW4uYworKysg Yi94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3ZpcmlkaWFuLmMKQEAgLTE3LDcyICsxNyw2IEBA CiAjaW5jbHVkZSA8cHVibGljL3NjaGVkLmg+CiAjaW5jbHVkZSA8cHVibGljL2h2bS9odm1fb3Au aD4KIAotLyogVmlyaWRpYW4gTVNSIG51bWJlcnMuICovCi0jZGVmaW5lIEhWX1g2NF9NU1JfR1VF U1RfT1NfSUQgICAgICAgICAgICAgICAgICAgMHg0MDAwMDAwMAotI2RlZmluZSBIVl9YNjRfTVNS X0hZUEVSQ0FMTCAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwMDEKLSNkZWZpbmUgSFZfWDY0 X01TUl9WUF9JTkRFWCAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDAyCi0jZGVmaW5lIEhW X1g2NF9NU1JfUkVTRVQgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDAwMwotI2RlZmlu ZSBIVl9YNjRfTVNSX1ZQX1JVTlRJTUUgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwMTAKLSNk ZWZpbmUgSFZfWDY0X01TUl9USU1FX1JFRl9DT1VOVCAgICAgICAgICAgICAgICAweDQwMDAwMDIw Ci0jZGVmaW5lIEhWX1g2NF9NU1JfUkVGRVJFTkNFX1RTQyAgICAgICAgICAgICAgICAgMHg0MDAw MDAyMQotI2RlZmluZSBIVl9YNjRfTVNSX1RTQ19GUkVRVUVOQ1kgICAgICAgICAgICAgICAgIDB4 NDAwMDAwMjIKLSNkZWZpbmUgSFZfWDY0X01TUl9BUElDX0ZSRVFVRU5DWSAgICAgICAgICAgICAg ICAweDQwMDAwMDIzCi0jZGVmaW5lIEhWX1g2NF9NU1JfRU9JICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHg0MDAwMDA3MAotI2RlZmluZSBIVl9YNjRfTVNSX0lDUiAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4NDAwMDAwNzEKLSNkZWZpbmUgSFZfWDY0X01TUl9UUFIgICAgICAgICAgICAg ICAgICAgICAgICAgICAweDQwMDAwMDcyCi0jZGVmaW5lIEhWX1g2NF9NU1JfVlBfQVNTSVNUX1BB R0UgICAgICAgICAgICAgICAgMHg0MDAwMDA3MwotI2RlZmluZSBIVl9YNjRfTVNSX1NDT05UUk9M ICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwODAKLSNkZWZpbmUgSFZfWDY0X01TUl9TVkVS U0lPTiAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDgxCi0jZGVmaW5lIEhWX1g2NF9NU1Jf U0lFRlAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDA4MgotI2RlZmluZSBIVl9YNjRf TVNSX1NJTVAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwODMKLSNkZWZpbmUgSFZf WDY0X01TUl9FT00gICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDg0Ci0jZGVmaW5l IEhWX1g2NF9NU1JfU0lOVDAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDA5MAotI2Rl ZmluZSBIVl9YNjRfTVNSX1NJTlQxICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwOTEK LSNkZWZpbmUgSFZfWDY0X01TUl9TSU5UMiAgICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAw MDkyCi0jZGVmaW5lIEhWX1g2NF9NU1JfU0lOVDMgICAgICAgICAgICAgICAgICAgICAgICAgMHg0 MDAwMDA5MwotI2RlZmluZSBIVl9YNjRfTVNSX1NJTlQ0ICAgICAgICAgICAgICAgICAgICAgICAg IDB4NDAwMDAwOTQKLSNkZWZpbmUgSFZfWDY0X01TUl9TSU5UNSAgICAgICAgICAgICAgICAgICAg ICAgICAweDQwMDAwMDk1Ci0jZGVmaW5lIEhWX1g2NF9NU1JfU0lOVDYgICAgICAgICAgICAgICAg ICAgICAgICAgMHg0MDAwMDA5NgotI2RlZmluZSBIVl9YNjRfTVNSX1NJTlQ3ICAgICAgICAgICAg ICAgICAgICAgICAgIDB4NDAwMDAwOTcKLSNkZWZpbmUgSFZfWDY0X01TUl9TSU5UOCAgICAgICAg ICAgICAgICAgICAgICAgICAweDQwMDAwMDk4Ci0jZGVmaW5lIEhWX1g2NF9NU1JfU0lOVDkgICAg ICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDA5OQotI2RlZmluZSBIVl9YNjRfTVNSX1NJTlQx MCAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwOUEKLSNkZWZpbmUgSFZfWDY0X01TUl9T SU5UMTEgICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDlCCi0jZGVmaW5lIEhWX1g2NF9N U1JfU0lOVDEyICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDA5QwotI2RlZmluZSBIVl9Y NjRfTVNSX1NJTlQxMyAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwOUQKLSNkZWZpbmUg SFZfWDY0X01TUl9TSU5UMTQgICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDlFCi0jZGVm aW5lIEhWX1g2NF9NU1JfU0lOVDE1ICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDA5Rgot I2RlZmluZSBIVl9YNjRfTVNSX1NUSU1FUjBfQ09ORklHICAgICAgICAgICAgICAgIDB4NDAwMDAw QjAKLSNkZWZpbmUgSFZfWDY0X01TUl9TVElNRVIwX0NPVU5UICAgICAgICAgICAgICAgICAweDQw MDAwMEIxCi0jZGVmaW5lIEhWX1g2NF9NU1JfU1RJTUVSMV9DT05GSUcgICAgICAgICAgICAgICAg MHg0MDAwMDBCMgotI2RlZmluZSBIVl9YNjRfTVNSX1NUSU1FUjFfQ09VTlQgICAgICAgICAgICAg ICAgIDB4NDAwMDAwQjMKLSNkZWZpbmUgSFZfWDY0X01TUl9TVElNRVIyX0NPTkZJRyAgICAgICAg ICAgICAgICAweDQwMDAwMEI0Ci0jZGVmaW5lIEhWX1g2NF9NU1JfU1RJTUVSMl9DT1VOVCAgICAg ICAgICAgICAgICAgMHg0MDAwMDBCNQotI2RlZmluZSBIVl9YNjRfTVNSX1NUSU1FUjNfQ09ORklH ICAgICAgICAgICAgICAgIDB4NDAwMDAwQjYKLSNkZWZpbmUgSFZfWDY0X01TUl9TVElNRVIzX0NP VU5UICAgICAgICAgICAgICAgICAweDQwMDAwMEI3Ci0jZGVmaW5lIEhWX1g2NF9NU1JfUE9XRVJf U1RBVEVfVFJJR0dFUl9DMSAgICAgICAgMHg0MDAwMDBDMQotI2RlZmluZSBIVl9YNjRfTVNSX1BP V0VSX1NUQVRFX1RSSUdHRVJfQzIgICAgICAgIDB4NDAwMDAwQzIKLSNkZWZpbmUgSFZfWDY0X01T Ul9QT1dFUl9TVEFURV9UUklHR0VSX0MzICAgICAgICAweDQwMDAwMEMzCi0jZGVmaW5lIEhWX1g2 NF9NU1JfUE9XRVJfU1RBVEVfQ09ORklHX0MxICAgICAgICAgMHg0MDAwMDBEMQotI2RlZmluZSBI Vl9YNjRfTVNSX1BPV0VSX1NUQVRFX0NPTkZJR19DMiAgICAgICAgIDB4NDAwMDAwRDIKLSNkZWZp bmUgSFZfWDY0X01TUl9QT1dFUl9TVEFURV9DT05GSUdfQzMgICAgICAgICAweDQwMDAwMEQzCi0j ZGVmaW5lIEhWX1g2NF9NU1JfU1RBVFNfUEFSVElUSU9OX1JFVEFJTF9QQUdFICAgMHg0MDAwMDBF MAotI2RlZmluZSBIVl9YNjRfTVNSX1NUQVRTX1BBUlRJVElPTl9JTlRFUk5BTF9QQUdFIDB4NDAw MDAwRTEKLSNkZWZpbmUgSFZfWDY0X01TUl9TVEFUU19WUF9SRVRBSUxfUEFHRSAgICAgICAgICAw eDQwMDAwMEUyCi0jZGVmaW5lIEhWX1g2NF9NU1JfU1RBVFNfVlBfSU5URVJOQUxfUEFHRSAgICAg ICAgMHg0MDAwMDBFMwotI2RlZmluZSBIVl9YNjRfTVNSX0dVRVNUX0lETEUgICAgICAgICAgICAg ICAgICAgIDB4NDAwMDAwRjAKLSNkZWZpbmUgSFZfWDY0X01TUl9TWU5USF9ERUJVR19DT05UUk9M ICAgICAgICAgICAweDQwMDAwMEYxCi0jZGVmaW5lIEhWX1g2NF9NU1JfU1lOVEhfREVCVUdfU1RB VFVTICAgICAgICAgICAgMHg0MDAwMDBGMgotI2RlZmluZSBIVl9YNjRfTVNSX1NZTlRIX0RFQlVH X1NFTkRfQlVGRkVSICAgICAgIDB4NDAwMDAwRjMKLSNkZWZpbmUgSFZfWDY0X01TUl9TWU5USF9E RUJVR19SRUNFSVZFX0JVRkZFUiAgICAweDQwMDAwMEY0Ci0jZGVmaW5lIEhWX1g2NF9NU1JfU1lO VEhfREVCVUdfUEVORElOR19CVUZGRVIgICAgMHg0MDAwMDBGNQotI2RlZmluZSBIVl9YNjRfTVNS X0NSQVNIX1AwICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAxMDAKLSNkZWZpbmUgSFZfWDY0 X01TUl9DUkFTSF9QMSAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMTAxCi0jZGVmaW5lIEhW X1g2NF9NU1JfQ1JBU0hfUDIgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDEwMgotI2RlZmlu ZSBIVl9YNjRfTVNSX0NSQVNIX1AzICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAxMDMKLSNk ZWZpbmUgSFZfWDY0X01TUl9DUkFTSF9QNCAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMTA0 Ci0jZGVmaW5lIEhWX1g2NF9NU1JfQ1JBU0hfQ1RMICAgICAgICAgICAgICAgICAgICAgMHg0MDAw MDEwNQotCiAvKiBWaXJpZGlhbiBIeXBlcmNhbGwgU3RhdHVzIENvZGVzLiAqLwogI2RlZmluZSBI Vl9TVEFUVVNfU1VDQ0VTUyAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwCiAjZGVmaW5lIEhW X1NUQVRVU19JTlZBTElEX0hZUEVSQ0FMTF9DT0RFICAgICAgICAweDAwMDIKQEAgLTMwOSwxNiAr MjQzLDYgQEAgc3RhdGljIHZvaWQgZHVtcF9oeXBlcmNhbGwoY29uc3Qgc3RydWN0IGRvbWFpbiAq ZCkKICAgICAgICAgICAgaGctPmZpZWxkcy5lbmFibGVkLCAodW5zaWduZWQgbG9uZyloZy0+Zmll bGRzLnBmbik7CiB9CiAKLXN0YXRpYyB2b2lkIGR1bXBfdnBfYXNzaXN0KGNvbnN0IHN0cnVjdCB2 Y3B1ICp2KQotewotICAgIGNvbnN0IHVuaW9uIHZpcmlkaWFuX3BhZ2VfbXNyICp2YTsKLQotICAg IHZhID0gJnYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC5tc3I7Ci0KLSAgICBwcmludGso WEVOTE9HX0dfSU5GTyAiJXB2OiBWSVJJRElBTiBWUF9BU1NJU1RfUEFHRTogZW5hYmxlZDogJXgg cGZuOiAlbHhcbiIsCi0gICAgICAgICAgIHYsIHZhLT5maWVsZHMuZW5hYmxlZCwgKHVuc2lnbmVk IGxvbmcpdmEtPmZpZWxkcy5wZm4pOwotfQotCiBzdGF0aWMgdm9pZCBkdW1wX3JlZmVyZW5jZV90 c2MoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCkKIHsKICAgICBjb25zdCB1bmlvbiB2aXJpZGlhbl9w YWdlX21zciAqcnQ7CkBAIC0zNjQsMTA1ICsyODgsNiBAQCBzdGF0aWMgdm9pZCBlbmFibGVfaHlw ZXJjYWxsX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCkKICAgICBwdXRfcGFnZV9hbmRfdHlwZShwYWdl KTsKIH0KIAotc3RhdGljIHZvaWQgaW5pdGlhbGl6ZV92cF9hc3Npc3Qoc3RydWN0IHZjcHUgKnYp Ci17Ci0gICAgc3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKLSAgICB1bnNpZ25lZCBsb25n IGdtZm4gPSB2LT5hcmNoLmh2bS52aXJpZGlhbi52cF9hc3Npc3QubXNyLmZpZWxkcy5wZm47Ci0g ICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSA9IGdldF9wYWdlX2Zyb21fZ2ZuKGQsIGdtZm4sIE5V TEwsIFAyTV9BTExPQyk7Ci0gICAgdm9pZCAqdmE7Ci0KLSAgICBBU1NFUlQoIXYtPmFyY2guaHZt LnZpcmlkaWFuLnZwX2Fzc2lzdC52YSk7Ci0KLSAgICBpZiAoICFwYWdlICkKLSAgICAgICAgZ290 byBmYWlsOwotCi0gICAgaWYgKCAhZ2V0X3BhZ2VfdHlwZShwYWdlLCBQR1Rfd3JpdGFibGVfcGFn ZSkgKQotICAgIHsKLSAgICAgICAgcHV0X3BhZ2UocGFnZSk7Ci0gICAgICAgIGdvdG8gZmFpbDsK LSAgICB9Ci0KLSAgICB2YSA9IF9fbWFwX2RvbWFpbl9wYWdlX2dsb2JhbChwYWdlKTsKLSAgICBp ZiAoICF2YSApCi0gICAgewotICAgICAgICBwdXRfcGFnZV9hbmRfdHlwZShwYWdlKTsKLSAgICAg ICAgZ290byBmYWlsOwotICAgIH0KLQotICAgIGNsZWFyX3BhZ2UodmEpOwotCi0gICAgdi0+YXJj aC5odm0udmlyaWRpYW4udnBfYXNzaXN0LnZhID0gdmE7Ci0gICAgcmV0dXJuOwotCi0gZmFpbDoK LSAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywgIkJhZCBHTUZOICUjIlBSSV9nZm4iIChNRk4g JSMiUFJJX21mbiIpXG4iLAotICAgICAgICAgICAgIGdtZm4sIG1mbl94KHBhZ2UgPyBwYWdlX3Rv X21mbihwYWdlKSA6IElOVkFMSURfTUZOKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRlYXJkb3duX3Zw X2Fzc2lzdChzdHJ1Y3QgdmNwdSAqdikKLXsKLSAgICB2b2lkICp2YSA9IHYtPmFyY2guaHZtLnZp cmlkaWFuLnZwX2Fzc2lzdC52YTsKLSAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlOwotCi0gICAg aWYgKCAhdmEgKQotICAgICAgICByZXR1cm47Ci0KLSAgICB2LT5hcmNoLmh2bS52aXJpZGlhbi52 cF9hc3Npc3QudmEgPSBOVUxMOwotCi0gICAgcGFnZSA9IG1mbl90b19wYWdlKGRvbWFpbl9wYWdl X21hcF90b19tZm4odmEpKTsKLQotICAgIHVubWFwX2RvbWFpbl9wYWdlX2dsb2JhbCh2YSk7Ci0g ICAgcHV0X3BhZ2VfYW5kX3R5cGUocGFnZSk7Ci19Ci0KLXZvaWQgdmlyaWRpYW5fYXBpY19hc3Np c3Rfc2V0KHN0cnVjdCB2Y3B1ICp2KQotewotICAgIHVpbnQzMl90ICp2YSA9IHYtPmFyY2guaHZt LnZpcmlkaWFuLnZwX2Fzc2lzdC52YTsKLQotICAgIGlmICggIXZhICkKLSAgICAgICAgcmV0dXJu OwotCi0gICAgLyoKLSAgICAgKiBJZiB0aGVyZSBpcyBhbHJlYWR5IGFuIGFzc2lzdCBwZW5kaW5n IHRoZW4gc29tZXRoaW5nIGhhcyBnb25lCi0gICAgICogd3JvbmcgYW5kIHRoZSBWTSB3aWxsIG1v c3QgbGlrZWx5IGhhbmcgc28gZm9yY2UgYSBjcmFzaCBub3cKLSAgICAgKiB0byBtYWtlIHRoZSBw cm9ibGVtIGNsZWFyLgotICAgICAqLwotICAgIGlmICggdi0+YXJjaC5odm0udmlyaWRpYW4udnBf YXNzaXN0LnBlbmRpbmcgKQotICAgICAgICBkb21haW5fY3Jhc2godi0+ZG9tYWluKTsKLQotICAg IHYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC5wZW5kaW5nID0gdHJ1ZTsKLSAgICAqdmEg fD0gMXU7Ci19Ci0KLWJvb2wgdmlyaWRpYW5fYXBpY19hc3Npc3RfY29tcGxldGVkKHN0cnVjdCB2 Y3B1ICp2KQotewotICAgIHVpbnQzMl90ICp2YSA9IHYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fz c2lzdC52YTsKLQotICAgIGlmICggIXZhICkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg aWYgKCB2LT5hcmNoLmh2bS52aXJpZGlhbi52cF9hc3Npc3QucGVuZGluZyAmJgotICAgICAgICAg ISgqdmEgJiAxdSkgKQotICAgIHsKLSAgICAgICAgLyogQW4gRU9JIGhhcyBiZWVuIGF2b2lkZWQg Ki8KLSAgICAgICAgdi0+YXJjaC5odm0udmlyaWRpYW4udnBfYXNzaXN0LnBlbmRpbmcgPSBmYWxz ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQot Ci12b2lkIHZpcmlkaWFuX2FwaWNfYXNzaXN0X2NsZWFyKHN0cnVjdCB2Y3B1ICp2KQotewotICAg IHVpbnQzMl90ICp2YSA9IHYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC52YTsKLQotICAg IGlmICggIXZhICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgKnZhICY9IH4xdTsKLSAgICB2LT5h cmNoLmh2bS52aXJpZGlhbi52cF9hc3Npc3QucGVuZGluZyA9IGZhbHNlOwotfQotCiBzdGF0aWMg dm9pZCB1cGRhdGVfcmVmZXJlbmNlX3RzYyhzdHJ1Y3QgZG9tYWluICpkLCBib29sX3QgaW5pdGlh bGl6ZSkKIHsKICAgICB1bnNpZ25lZCBsb25nIGdtZm4gPSBkLT5hcmNoLmh2bS52aXJpZGlhbi5y ZWZlcmVuY2VfdHNjLmZpZWxkcy5wZm47CkBAIC01NjEsMzEgKzM4NiwxMCBAQCBpbnQgZ3Vlc3Rf d3Jtc3JfdmlyaWRpYW4oc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IGlkeCwgdWludDY0X3QgdmFs KQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSFZfWDY0X01TUl9FT0k6Ci0gICAgICAgIHZs YXBpY19FT0lfc2V0KHZjcHVfdmxhcGljKHYpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNl IEhWX1g2NF9NU1JfSUNSOiB7Ci0gICAgICAgIHUzMiBlYXggPSAodTMyKXZhbCwgZWR4ID0gKHUz MikodmFsID4+IDMyKTsKLSAgICAgICAgc3RydWN0IHZsYXBpYyAqdmxhcGljID0gdmNwdV92bGFw aWModik7Ci0gICAgICAgIGVheCAmPSB+KDEgPDwgMTIpOwotICAgICAgICBlZHggJj0gMHhmZjAw MDAwMDsKLSAgICAgICAgdmxhcGljX3NldF9yZWcodmxhcGljLCBBUElDX0lDUjIsIGVkeCk7Ci0g ICAgICAgIHZsYXBpY19pcGkodmxhcGljLCBlYXgsIGVkeCk7Ci0gICAgICAgIHZsYXBpY19zZXRf cmVnKHZsYXBpYywgQVBJQ19JQ1IsIGVheCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQorICAg IGNhc2UgSFZfWDY0X01TUl9JQ1I6CiAgICAgY2FzZSBIVl9YNjRfTVNSX1RQUjoKLSAgICAgICAg dmxhcGljX3NldF9yZWcodmNwdV92bGFwaWModiksIEFQSUNfVEFTS1BSSSwgKHVpbnQ4X3QpdmFs KTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIEhWX1g2NF9NU1JfVlBfQVNTSVNUX1BBR0U6 Ci0gICAgICAgIHRlYXJkb3duX3ZwX2Fzc2lzdCh2KTsgLyogcmVsZWFzZSBhbnkgcHJldmlvdXMg bWFwcGluZyAqLwotICAgICAgICB2LT5hcmNoLmh2bS52aXJpZGlhbi52cF9hc3Npc3QubXNyLnJh dyA9IHZhbDsKLSAgICAgICAgZHVtcF92cF9hc3Npc3Qodik7Ci0gICAgICAgIGlmICggdi0+YXJj aC5odm0udmlyaWRpYW4udnBfYXNzaXN0Lm1zci5maWVsZHMuZW5hYmxlZCApCi0gICAgICAgICAg ICBpbml0aWFsaXplX3ZwX2Fzc2lzdCh2KTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVy biB2aXJpZGlhbl9zeW5pY193cm1zcih2LCBpZHgsIHZhbCk7CiAKICAgICBjYXNlIEhWX1g2NF9N U1JfUkVGRVJFTkNFX1RTQzoKICAgICAgICAgaWYgKCAhKHZpcmlkaWFuX2ZlYXR1cmVfbWFzayhk KSAmIEhWTVBWX3JlZmVyZW5jZV90c2MpICkKQEAgLTcwOCwxOCArNTEyLDExIEBAIGludCBndWVz dF9yZG1zcl92aXJpZGlhbihjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgaWR4LCB1aW50 NjRfdCAqdmFsKQogICAgICAgICAqdmFsID0gMTAwMDAwMDAwMHVsbCAvIEFQSUNfQlVTX0NZQ0xF X05TOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgSFZfWDY0X01TUl9FT0k6CiAgICAgY2Fz ZSBIVl9YNjRfTVNSX0lDUjoKLSAgICAgICAgKnZhbCA9ICgoKHVpbnQ2NF90KXZsYXBpY19nZXRf cmVnKHZjcHVfdmxhcGljKHYpLCBBUElDX0lDUjIpIDw8IDMyKSB8Ci0gICAgICAgICAgICAgICAg dmxhcGljX2dldF9yZWcodmNwdV92bGFwaWModiksIEFQSUNfSUNSKSk7Ci0gICAgICAgIGJyZWFr OwotCiAgICAgY2FzZSBIVl9YNjRfTVNSX1RQUjoKLSAgICAgICAgKnZhbCA9IHZsYXBpY19nZXRf cmVnKHZjcHVfdmxhcGljKHYpLCBBUElDX1RBU0tQUkkpOwotICAgICAgICBicmVhazsKLQogICAg IGNhc2UgSFZfWDY0X01TUl9WUF9BU1NJU1RfUEFHRToKLSAgICAgICAgKnZhbCA9IHYtPmFyY2gu aHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC5tc3IucmF3OwotICAgICAgICBicmVhazsKKyAgICAgICAg cmV0dXJuIHZpcmlkaWFuX3N5bmljX3JkbXNyKHYsIGlkeCwgdmFsKTsKIAogICAgIGNhc2UgSFZf WDY0X01TUl9SRUZFUkVOQ0VfVFNDOgogICAgICAgICBpZiAoICEodmlyaWRpYW5fZmVhdHVyZV9t YXNrKGQpICYgSFZNUFZfcmVmZXJlbmNlX3RzYykgKQpAQCAtNzc3LDcgKzU3NCw3IEBAIGludCBn dWVzdF9yZG1zcl92aXJpZGlhbihjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgaWR4LCB1 aW50NjRfdCAqdmFsKQogCiB2b2lkIHZpcmlkaWFuX3ZjcHVfZGVpbml0KHN0cnVjdCB2Y3B1ICp2 KQogewotICAgIHRlYXJkb3duX3ZwX2Fzc2lzdCh2KTsKKyAgICB2aXJpZGlhbl9zeW5pY193cm1z cih2LCBIVl9YNjRfTVNSX1ZQX0FTU0lTVF9QQUdFLCAwKTsKIH0KIAogdm9pZCB2aXJpZGlhbl9k b21haW5fZGVpbml0KHN0cnVjdCBkb21haW4gKmQpCkBAIC03ODUsNyArNTgyLDcgQEAgdm9pZCB2 aXJpZGlhbl9kb21haW5fZGVpbml0KHN0cnVjdCBkb21haW4gKmQpCiAgICAgc3RydWN0IHZjcHUg KnY7CiAKICAgICBmb3JfZWFjaF92Y3B1ICggZCwgdiApCi0gICAgICAgIHRlYXJkb3duX3ZwX2Fz c2lzdCh2KTsKKyAgICAgICAgdmlyaWRpYW5fdmNwdV9kZWluaXQodik7CiB9CiAKIHN0YXRpYyBE RUZJTkVfUEVSX0NQVShjcHVtYXNrX3QsIGlwaV9jcHVtYXNrKTsKQEAgLTk4NywxNCArNzg0LDEz IEBAIEhWTV9SRUdJU1RFUl9TQVZFX1JFU1RPUkUoVklSSURJQU5fRE9NQUlOLCB2aXJpZGlhbl9z YXZlX2RvbWFpbl9jdHh0LAogCiBzdGF0aWMgaW50IHZpcmlkaWFuX3NhdmVfdmNwdV9jdHh0KHN0 cnVjdCB2Y3B1ICp2LCBodm1fZG9tYWluX2NvbnRleHRfdCAqaCkKIHsKLSAgICBzdHJ1Y3QgaHZt X3ZpcmlkaWFuX3ZjcHVfY29udGV4dCBjdHh0ID0gewotICAgICAgICAudnBfYXNzaXN0X21zciA9 IHYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC5tc3IucmF3LAotICAgICAgICAudnBfYXNz aXN0X3BlbmRpbmcgPSB2LT5hcmNoLmh2bS52aXJpZGlhbi52cF9hc3Npc3QucGVuZGluZywKLSAg ICB9OworICAgIHN0cnVjdCBodm1fdmlyaWRpYW5fdmNwdV9jb250ZXh0IGN0eHQgPSB7fTsKIAog ICAgIGlmICggIWlzX3ZpcmlkaWFuX2RvbWFpbih2LT5kb21haW4pICkKICAgICAgICAgcmV0dXJu IDA7CiAKKyAgICB2aXJpZGlhbl9zeW5pY19zYXZlX3ZjcHVfY3R4dCh2LCAmY3R4dCk7CisKICAg ICByZXR1cm4gaHZtX3NhdmVfZW50cnkoVklSSURJQU5fVkNQVSwgdi0+dmNwdV9pZCwgaCwgJmN0 eHQpOwogfQogCkBAIC0xMDE4LDEyICs4MTQsNyBAQCBzdGF0aWMgaW50IHZpcmlkaWFuX2xvYWRf dmNwdV9jdHh0KHN0cnVjdCBkb21haW4gKmQsCiAgICAgaWYgKCBtZW1jbXAoJmN0eHQuX3BhZCwg emVyb19wYWdlLCBzaXplb2YoY3R4dC5fcGFkKSkgKQogICAgICAgICByZXR1cm4gLUVJTlZBTDsK IAotICAgIHYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC5tc3IucmF3ID0gY3R4dC52cF9h c3Npc3RfbXNyOwotICAgIGlmICggdi0+YXJjaC5odm0udmlyaWRpYW4udnBfYXNzaXN0Lm1zci5m aWVsZHMuZW5hYmxlZCAmJgotICAgICAgICAgIXYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lz dC52YSApCi0gICAgICAgIGluaXRpYWxpemVfdnBfYXNzaXN0KHYpOwotCi0gICAgdi0+YXJjaC5o dm0udmlyaWRpYW4udnBfYXNzaXN0LnBlbmRpbmcgPSAhIWN0eHQudnBfYXNzaXN0X3BlbmRpbmc7 CisgICAgdmlyaWRpYW5fc3luaWNfbG9hZF92Y3B1X2N0eHQodiwgJmN0eHQpOwogCiAgICAgcmV0 dXJuIDA7CiB9CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92aXJpZGlhbi5o IGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdmlyaWRpYW4uaAppbmRleCAzNTlmZGY1YTgzLi43 ZTIxY2E1NTM3IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92aXJpZGlhbi5o CisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZpcmlkaWFuLmgKQEAgLTksNiArOSw3NCBA QAogI2lmbmRlZiBfX0FTTV9YODZfSFZNX1ZJUklESUFOX0hfXwogI2RlZmluZSBfX0FTTV9YODZf SFZNX1ZJUklESUFOX0hfXwogCisjaW5jbHVkZSA8YXNtL2h2bS9zYXZlLmg+CisKKy8qIFZpcmlk aWFuIE1TUiBudW1iZXJzLiAqLworI2RlZmluZSBIVl9YNjRfTVNSX0dVRVNUX09TX0lEICAgICAg ICAgICAgICAgICAgIDB4NDAwMDAwMDAKKyNkZWZpbmUgSFZfWDY0X01TUl9IWVBFUkNBTEwgICAg ICAgICAgICAgICAgICAgICAweDQwMDAwMDAxCisjZGVmaW5lIEhWX1g2NF9NU1JfVlBfSU5ERVgg ICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDAwMgorI2RlZmluZSBIVl9YNjRfTVNSX1JFU0VU ICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwMDMKKyNkZWZpbmUgSFZfWDY0X01TUl9W UF9SVU5USU1FICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDEwCisjZGVmaW5lIEhWX1g2NF9N U1JfVElNRV9SRUZfQ09VTlQgICAgICAgICAgICAgICAgMHg0MDAwMDAyMAorI2RlZmluZSBIVl9Y NjRfTVNSX1JFRkVSRU5DRV9UU0MgICAgICAgICAgICAgICAgIDB4NDAwMDAwMjEKKyNkZWZpbmUg SFZfWDY0X01TUl9UU0NfRlJFUVVFTkNZICAgICAgICAgICAgICAgICAweDQwMDAwMDIyCisjZGVm aW5lIEhWX1g2NF9NU1JfQVBJQ19GUkVRVUVOQ1kgICAgICAgICAgICAgICAgMHg0MDAwMDAyMwor I2RlZmluZSBIVl9YNjRfTVNSX0VPSSAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAw NzAKKyNkZWZpbmUgSFZfWDY0X01TUl9JQ1IgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQw MDAwMDcxCisjZGVmaW5lIEhWX1g2NF9NU1JfVFBSICAgICAgICAgICAgICAgICAgICAgICAgICAg MHg0MDAwMDA3MgorI2RlZmluZSBIVl9YNjRfTVNSX1ZQX0FTU0lTVF9QQUdFICAgICAgICAgICAg ICAgIDB4NDAwMDAwNzMKKyNkZWZpbmUgSFZfWDY0X01TUl9TQ09OVFJPTCAgICAgICAgICAgICAg ICAgICAgICAweDQwMDAwMDgwCisjZGVmaW5lIEhWX1g2NF9NU1JfU1ZFUlNJT04gICAgICAgICAg ICAgICAgICAgICAgMHg0MDAwMDA4MQorI2RlZmluZSBIVl9YNjRfTVNSX1NJRUZQICAgICAgICAg ICAgICAgICAgICAgICAgIDB4NDAwMDAwODIKKyNkZWZpbmUgSFZfWDY0X01TUl9TSU1QICAgICAg ICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDgzCisjZGVmaW5lIEhWX1g2NF9NU1JfRU9NICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDA4NAorI2RlZmluZSBIVl9YNjRfTVNSX1NJ TlQwICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwOTAKKyNkZWZpbmUgSFZfWDY0X01T Ul9TSU5UMSAgICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDkxCisjZGVmaW5lIEhWX1g2 NF9NU1JfU0lOVDIgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDA5MgorI2RlZmluZSBI Vl9YNjRfTVNSX1NJTlQzICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwOTMKKyNkZWZp bmUgSFZfWDY0X01TUl9TSU5UNCAgICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDk0Cisj ZGVmaW5lIEhWX1g2NF9NU1JfU0lOVDUgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDA5 NQorI2RlZmluZSBIVl9YNjRfTVNSX1NJTlQ2ICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAw MDAwOTYKKyNkZWZpbmUgSFZfWDY0X01TUl9TSU5UNyAgICAgICAgICAgICAgICAgICAgICAgICAw eDQwMDAwMDk3CisjZGVmaW5lIEhWX1g2NF9NU1JfU0lOVDggICAgICAgICAgICAgICAgICAgICAg ICAgMHg0MDAwMDA5OAorI2RlZmluZSBIVl9YNjRfTVNSX1NJTlQ5ICAgICAgICAgICAgICAgICAg ICAgICAgIDB4NDAwMDAwOTkKKyNkZWZpbmUgSFZfWDY0X01TUl9TSU5UMTAgICAgICAgICAgICAg ICAgICAgICAgICAweDQwMDAwMDlBCisjZGVmaW5lIEhWX1g2NF9NU1JfU0lOVDExICAgICAgICAg ICAgICAgICAgICAgICAgMHg0MDAwMDA5QgorI2RlZmluZSBIVl9YNjRfTVNSX1NJTlQxMiAgICAg ICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwOUMKKyNkZWZpbmUgSFZfWDY0X01TUl9TSU5UMTMg ICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDlECisjZGVmaW5lIEhWX1g2NF9NU1JfU0lO VDE0ICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDA5RQorI2RlZmluZSBIVl9YNjRfTVNS X1NJTlQxNSAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwOUYKKyNkZWZpbmUgSFZfWDY0 X01TUl9TVElNRVIwX0NPTkZJRyAgICAgICAgICAgICAgICAweDQwMDAwMEIwCisjZGVmaW5lIEhW X1g2NF9NU1JfU1RJTUVSMF9DT1VOVCAgICAgICAgICAgICAgICAgMHg0MDAwMDBCMQorI2RlZmlu ZSBIVl9YNjRfTVNSX1NUSU1FUjFfQ09ORklHICAgICAgICAgICAgICAgIDB4NDAwMDAwQjIKKyNk ZWZpbmUgSFZfWDY0X01TUl9TVElNRVIxX0NPVU5UICAgICAgICAgICAgICAgICAweDQwMDAwMEIz CisjZGVmaW5lIEhWX1g2NF9NU1JfU1RJTUVSMl9DT05GSUcgICAgICAgICAgICAgICAgMHg0MDAw MDBCNAorI2RlZmluZSBIVl9YNjRfTVNSX1NUSU1FUjJfQ09VTlQgICAgICAgICAgICAgICAgIDB4 NDAwMDAwQjUKKyNkZWZpbmUgSFZfWDY0X01TUl9TVElNRVIzX0NPTkZJRyAgICAgICAgICAgICAg ICAweDQwMDAwMEI2CisjZGVmaW5lIEhWX1g2NF9NU1JfU1RJTUVSM19DT1VOVCAgICAgICAgICAg ICAgICAgMHg0MDAwMDBCNworI2RlZmluZSBIVl9YNjRfTVNSX1BPV0VSX1NUQVRFX1RSSUdHRVJf QzEgICAgICAgIDB4NDAwMDAwQzEKKyNkZWZpbmUgSFZfWDY0X01TUl9QT1dFUl9TVEFURV9UUklH R0VSX0MyICAgICAgICAweDQwMDAwMEMyCisjZGVmaW5lIEhWX1g2NF9NU1JfUE9XRVJfU1RBVEVf VFJJR0dFUl9DMyAgICAgICAgMHg0MDAwMDBDMworI2RlZmluZSBIVl9YNjRfTVNSX1BPV0VSX1NU QVRFX0NPTkZJR19DMSAgICAgICAgIDB4NDAwMDAwRDEKKyNkZWZpbmUgSFZfWDY0X01TUl9QT1dF Ul9TVEFURV9DT05GSUdfQzIgICAgICAgICAweDQwMDAwMEQyCisjZGVmaW5lIEhWX1g2NF9NU1Jf UE9XRVJfU1RBVEVfQ09ORklHX0MzICAgICAgICAgMHg0MDAwMDBEMworI2RlZmluZSBIVl9YNjRf TVNSX1NUQVRTX1BBUlRJVElPTl9SRVRBSUxfUEFHRSAgIDB4NDAwMDAwRTAKKyNkZWZpbmUgSFZf WDY0X01TUl9TVEFUU19QQVJUSVRJT05fSU5URVJOQUxfUEFHRSAweDQwMDAwMEUxCisjZGVmaW5l IEhWX1g2NF9NU1JfU1RBVFNfVlBfUkVUQUlMX1BBR0UgICAgICAgICAgMHg0MDAwMDBFMgorI2Rl ZmluZSBIVl9YNjRfTVNSX1NUQVRTX1ZQX0lOVEVSTkFMX1BBR0UgICAgICAgIDB4NDAwMDAwRTMK KyNkZWZpbmUgSFZfWDY0X01TUl9HVUVTVF9JRExFICAgICAgICAgICAgICAgICAgICAweDQwMDAw MEYwCisjZGVmaW5lIEhWX1g2NF9NU1JfU1lOVEhfREVCVUdfQ09OVFJPTCAgICAgICAgICAgMHg0 MDAwMDBGMQorI2RlZmluZSBIVl9YNjRfTVNSX1NZTlRIX0RFQlVHX1NUQVRVUyAgICAgICAgICAg IDB4NDAwMDAwRjIKKyNkZWZpbmUgSFZfWDY0X01TUl9TWU5USF9ERUJVR19TRU5EX0JVRkZFUiAg ICAgICAweDQwMDAwMEYzCisjZGVmaW5lIEhWX1g2NF9NU1JfU1lOVEhfREVCVUdfUkVDRUlWRV9C VUZGRVIgICAgMHg0MDAwMDBGNAorI2RlZmluZSBIVl9YNjRfTVNSX1NZTlRIX0RFQlVHX1BFTkRJ TkdfQlVGRkVSICAgIDB4NDAwMDAwRjUKKyNkZWZpbmUgSFZfWDY0X01TUl9DUkFTSF9QMCAgICAg ICAgICAgICAgICAgICAgICAweDQwMDAwMTAwCisjZGVmaW5lIEhWX1g2NF9NU1JfQ1JBU0hfUDEg ICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDEwMQorI2RlZmluZSBIVl9YNjRfTVNSX0NSQVNI X1AyICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAxMDIKKyNkZWZpbmUgSFZfWDY0X01TUl9D UkFTSF9QMyAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMTAzCisjZGVmaW5lIEhWX1g2NF9N U1JfQ1JBU0hfUDQgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDEwNAorI2RlZmluZSBIVl9Y NjRfTVNSX0NSQVNIX0NUTCAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAxMDUKKwogdW5pb24g dmlyaWRpYW5fcGFnZV9tc3IKIHsKICAgICB1aW50NjRfdCByYXc7CkBAIC05Myw2ICsxNjEsMTQg QEAgdm9pZCB2aXJpZGlhbl9hcGljX2Fzc2lzdF9zZXQoc3RydWN0IHZjcHUgKnYpOwogYm9vbCB2 aXJpZGlhbl9hcGljX2Fzc2lzdF9jb21wbGV0ZWQoc3RydWN0IHZjcHUgKnYpOwogdm9pZCB2aXJp ZGlhbl9hcGljX2Fzc2lzdF9jbGVhcihzdHJ1Y3QgdmNwdSAqdik7CiAKK2ludCB2aXJpZGlhbl9z eW5pY193cm1zcihzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgaWR4LCB1aW50NjRfdCB2YWwpOwor aW50IHZpcmlkaWFuX3N5bmljX3JkbXNyKGNvbnN0IHN0cnVjdCB2Y3B1ICp2LCB1aW50MzJfdCBp ZHgsIHVpbnQ2NF90ICp2YWwpOworCit2b2lkIHZpcmlkaWFuX3N5bmljX3NhdmVfdmNwdV9jdHh0 KGNvbnN0IHN0cnVjdCB2Y3B1ICp2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgaHZtX3ZpcmlkaWFuX3ZjcHVfY29udGV4dCAqY3R4dCk7Cit2b2lkIHZpcmlkaWFu X3N5bmljX2xvYWRfdmNwdV9jdHh0KAorICAgIHN0cnVjdCB2Y3B1ICp2LCBjb25zdCBzdHJ1Y3Qg aHZtX3ZpcmlkaWFuX3ZjcHVfY29udGV4dCAqY3R4dCk7CisKICNlbmRpZiAvKiBfX0FTTV9YODZf SFZNX1ZJUklESUFOX0hfXyAqLwogCiAvKgotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4t ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t YWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==