From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH 5/8] viridian: separate interrupt related enlightenment implementations... Date: Mon, 29 Oct 2018 18:02:08 +0000 Message-ID: <20181029180211.2155-8-paul.durrant@citrix.com> References: <20181029180211.2155-1-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gHBrs-0000S7-9M for xen-devel@lists.xenproject.org; Mon, 29 Oct 2018 18:02:24 +0000 In-Reply-To: <20181029180211.2155-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 Y29tPgotLS0KIHhlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4vTWFrZWZpbGUgICB8ICAgMSArCiB4 ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3N5bmljLmMgICAgfCAyMjQgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi92aXJpZGlhbi5j IHwgMjI5ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB4ZW4vaW5jbHVkZS9h c20teDg2L2h2bS92aXJpZGlhbi5oICAgfCAgNzYgKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5n ZWQsIDMxMSBpbnNlcnRpb25zKCspLCAyMTkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgeGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi9zeW5pYy5jCgpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L2h2bS92aXJpZGlhbi9NYWtlZmlsZSBiL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4v TWFrZWZpbGUKaW5kZXggMDlmZDBhNWYzYy4uZmNhOGUxNmUyMCAxMDA2NDQKLS0tIGEveGVuL2Fy Y2gveDg2L2h2bS92aXJpZGlhbi9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC94ODYvaHZtL3Zpcmlk aWFuL01ha2VmaWxlCkBAIC0xICsxLDIgQEAKK29iai15ICs9IHN5bmljLm8KIG9iai15ICs9IHZp cmlkaWFuLm8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4vc3luaWMuYyBi L3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4vc3luaWMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi4zZjA0M2YzNGVlCi0tLSAvZGV2L251bGwKKysrIGIveGVuL2FyY2gv eDg2L2h2bS92aXJpZGlhbi9zeW5pYy5jCkBAIC0wLDAgKzEsMjI0IEBACisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCisgKiBzeW5pYy5jCisgKgorICogQW4gaW1wbGVtZW50YXRpb24gb2Ygc29tZSBpbnRl cnJ1cHQgcmVsYXRlZCBWaXJpZGlhbiBlbmxpZ2h0ZW5tZW50cy4KKyAqIFNlZSBNaWNyb3NvZnQn cyBIeXBlcnZpc29yIFRvcCBMZXZlbCBGdW5jdGlvbmFsIFNwZWNpZmljYXRpb24uCisgKiBmb3Ig bW9yZSBpbmZvcm1hdGlvbi4KKyAqLworCisjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CisjaW5jbHVk ZSA8eGVuL3ZlcnNpb24uaD4KKyNpbmNsdWRlIDx4ZW4vaHlwZXJjYWxsLmg+CisjaW5jbHVkZSA8 eGVuL2RvbWFpbl9wYWdlLmg+CisjaW5jbHVkZSA8YXNtL2FwaWMuaD4KKyNpbmNsdWRlIDxhc20v aHZtL3N1cHBvcnQuaD4KKworc3RhdGljIHZvaWQgZHVtcF92cF9hc3Npc3QoY29uc3Qgc3RydWN0 IHZjcHUgKnYpCit7CisgICAgY29uc3QgdW5pb24gdmlyaWRpYW5fcGFnZV9tc3IgKnZhID0gJnYt PmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC5tc3I7CisKKyAgICBpZiAoICF2YS0+ZmllbGRz LmVuYWJsZWQgKQorICAgICAgICByZXR1cm47CisKKyAgICBwcmludGsoWEVOTE9HX0dfSU5GTyAi JXB2OiBWSVJJRElBTiBWUF9BU1NJU1RfUEFHRTogcGZuOiAlbHhcbiIsCisgICAgICAgICAgIHYs ICh1bnNpZ25lZCBsb25nKXZhLT5maWVsZHMucGZuKTsKK30KKworc3RhdGljIHZvaWQgaW5pdGlh bGl6ZV92cF9hc3Npc3Qoc3RydWN0IHZjcHUgKnYpCit7CisgICAgc3RydWN0IGRvbWFpbiAqZCA9 IHYtPmRvbWFpbjsKKyAgICB1bnNpZ25lZCBsb25nIGdtZm4gPSB2LT5hcmNoLmh2bS52aXJpZGlh bi52cF9hc3Npc3QubXNyLmZpZWxkcy5wZm47CisgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSA9 IGdldF9wYWdlX2Zyb21fZ2ZuKGQsIGdtZm4sIE5VTEwsIFAyTV9BTExPQyk7CisgICAgdm9pZCAq dmE7CisKKyAgICBBU1NFUlQoIXYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC52YSk7CisK KyAgICBpZiAoICFwYWdlICkKKyAgICAgICAgZ290byBmYWlsOworCisgICAgaWYgKCAhZ2V0X3Bh Z2VfdHlwZShwYWdlLCBQR1Rfd3JpdGFibGVfcGFnZSkgKQorICAgIHsKKyAgICAgICAgcHV0X3Bh Z2UocGFnZSk7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICB2YSA9IF9fbWFwX2Rv bWFpbl9wYWdlX2dsb2JhbChwYWdlKTsKKyAgICBpZiAoICF2YSApCisgICAgeworICAgICAgICBw dXRfcGFnZV9hbmRfdHlwZShwYWdlKTsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKworICAg IGNsZWFyX3BhZ2UodmEpOworCisgICAgdi0+YXJjaC5odm0udmlyaWRpYW4udnBfYXNzaXN0LnZh ID0gdmE7CisgICAgcmV0dXJuOworCisgZmFpbDoKKyAgICBnZHByaW50ayhYRU5MT0dfV0FSTklO RywgIkJhZCBHTUZOICUjIlBSSV9nZm4iIChNRk4gJSMiUFJJX21mbiIpXG4iLAorICAgICAgICAg ICAgIGdtZm4sIG1mbl94KHBhZ2UgPyBwYWdlX3RvX21mbihwYWdlKSA6IElOVkFMSURfTUZOKSk7 Cit9CisKK3N0YXRpYyB2b2lkIHRlYXJkb3duX3ZwX2Fzc2lzdChzdHJ1Y3QgdmNwdSAqdikKK3sK KyAgICB2b2lkICp2YSA9IHYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC52YTsKKyAgICBz dHJ1Y3QgcGFnZV9pbmZvICpwYWdlOworCisgICAgaWYgKCAhdmEgKQorICAgICAgICByZXR1cm47 CisKKyAgICB2LT5hcmNoLmh2bS52aXJpZGlhbi52cF9hc3Npc3QudmEgPSBOVUxMOworCisgICAg cGFnZSA9IG1mbl90b19wYWdlKGRvbWFpbl9wYWdlX21hcF90b19tZm4odmEpKTsKKworICAgIHVu bWFwX2RvbWFpbl9wYWdlX2dsb2JhbCh2YSk7CisgICAgcHV0X3BhZ2VfYW5kX3R5cGUocGFnZSk7 Cit9CisKK3ZvaWQgdmlyaWRpYW5fYXBpY19hc3Npc3Rfc2V0KHN0cnVjdCB2Y3B1ICp2KQorewor ICAgIHVpbnQzMl90ICp2YSA9IHYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC52YTsKKwor ICAgIGlmICggIXZhICkKKyAgICAgICAgcmV0dXJuOworCisgICAgLyoKKyAgICAgKiBJZiB0aGVy ZSBpcyBhbHJlYWR5IGFuIGFzc2lzdCBwZW5kaW5nIHRoZW4gc29tZXRoaW5nIGhhcyBnb25lCisg ICAgICogd3JvbmcgYW5kIHRoZSBWTSB3aWxsIG1vc3QgbGlrZWx5IGhhbmcgc28gZm9yY2UgYSBj cmFzaCBub3cKKyAgICAgKiB0byBtYWtlIHRoZSBwcm9ibGVtIGNsZWFyLgorICAgICAqLworICAg IGlmICggdi0+YXJjaC5odm0udmlyaWRpYW4udnBfYXNzaXN0LnBlbmRpbmcgKQorICAgICAgICBk b21haW5fY3Jhc2godi0+ZG9tYWluKTsKKworICAgIHYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fz c2lzdC5wZW5kaW5nID0gdHJ1ZTsKKyAgICAqdmEgfD0gMXU7Cit9CisKK2Jvb2wgdmlyaWRpYW5f YXBpY19hc3Npc3RfY29tcGxldGVkKHN0cnVjdCB2Y3B1ICp2KQoreworICAgIHVpbnQzMl90ICp2 YSA9IHYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC52YTsKKworICAgIGlmICggIXZhICkK KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCB2LT5hcmNoLmh2bS52aXJpZGlhbi52 cF9hc3Npc3QucGVuZGluZyAmJgorICAgICAgICAgISgqdmEgJiAxdSkgKQorICAgIHsKKyAgICAg ICAgLyogQW4gRU9JIGhhcyBiZWVuIGF2b2lkZWQgKi8KKyAgICAgICAgdi0+YXJjaC5odm0udmly aWRpYW4udnBfYXNzaXN0LnBlbmRpbmcgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg ICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIHZpcmlkaWFuX2FwaWNfYXNzaXN0 X2NsZWFyKHN0cnVjdCB2Y3B1ICp2KQoreworICAgIHVpbnQzMl90ICp2YSA9IHYtPmFyY2guaHZt LnZpcmlkaWFuLnZwX2Fzc2lzdC52YTsKKworICAgIGlmICggIXZhICkKKyAgICAgICAgcmV0dXJu OworCisgICAgKnZhICY9IH4xdTsKKyAgICB2LT5hcmNoLmh2bS52aXJpZGlhbi52cF9hc3Npc3Qu cGVuZGluZyA9IGZhbHNlOworfQorCitpbnQgdmlyaWRpYW5fc3luaWNfd3Jtc3Ioc3RydWN0IHZj cHUgKnYsIHVpbnQzMl90IGlkeCwgdWludDY0X3QgdmFsKQoreworICAgIHN3aXRjaCAoIGlkeCAp CisgICAgeworICAgIGNhc2UgSFZfWDY0X01TUl9FT0k6CisgICAgICAgIHZsYXBpY19FT0lfc2V0 KHZjcHVfdmxhcGljKHYpKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEhWX1g2NF9NU1Jf SUNSOiB7CisgICAgICAgIHUzMiBlYXggPSAodTMyKXZhbCwgZWR4ID0gKHUzMikodmFsID4+IDMy KTsKKyAgICAgICAgc3RydWN0IHZsYXBpYyAqdmxhcGljID0gdmNwdV92bGFwaWModik7CisgICAg ICAgIGVheCAmPSB+KDEgPDwgMTIpOworICAgICAgICBlZHggJj0gMHhmZjAwMDAwMDsKKyAgICAg ICAgdmxhcGljX3NldF9yZWcodmxhcGljLCBBUElDX0lDUjIsIGVkeCk7CisgICAgICAgIHZsYXBp Y19pcGkodmxhcGljLCBlYXgsIGVkeCk7CisgICAgICAgIHZsYXBpY19zZXRfcmVnKHZsYXBpYywg QVBJQ19JQ1IsIGVheCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEhWX1g2NF9N U1JfVFBSOgorICAgICAgICB2bGFwaWNfc2V0X3JlZyh2Y3B1X3ZsYXBpYyh2KSwgQVBJQ19UQVNL UFJJLCAodWludDhfdCl2YWwpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSFZfWDY0X01T Ul9WUF9BU1NJU1RfUEFHRToKKyAgICAgICAgdGVhcmRvd25fdnBfYXNzaXN0KHYpOyAvKiByZWxl YXNlIGFueSBwcmV2aW91cyBtYXBwaW5nICovCisgICAgICAgIHYtPmFyY2guaHZtLnZpcmlkaWFu LnZwX2Fzc2lzdC5tc3IucmF3ID0gdmFsOworICAgICAgICBkdW1wX3ZwX2Fzc2lzdCh2KTsKKyAg ICAgICAgaWYgKCB2LT5hcmNoLmh2bS52aXJpZGlhbi52cF9hc3Npc3QubXNyLmZpZWxkcy5lbmFi bGVkICkKKyAgICAgICAgICAgIGluaXRpYWxpemVfdnBfYXNzaXN0KHYpOworICAgICAgICBicmVh azsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIGdkcHJpbnRrKFhFTkxPR19JTkZPLAorICAgICAg ICAgICAgICAgICAiJXM6IHVuaW1wbGVtZW50ZWQgTVNSICUjeCAoJTAxNiJQUkl4NjQiKVxuIiwK KyAgICAgICAgICAgICAgICAgX19mdW5jX18sIGlkeCwgdmFsKTsKKyAgICAgICAgcmV0dXJuIFg4 NkVNVUxfRVhDRVBUSU9OOworICAgIH0KKworICAgIHJldHVybiBYODZFTVVMX09LQVk7Cit9CisK K2ludCB2aXJpZGlhbl9zeW5pY19yZG1zcihjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3Qg aWR4LCB1aW50NjRfdCAqdmFsKQoreworICAgIHN3aXRjaCAoIGlkeCApCisgICAgeworICAgIGNh c2UgSFZfWDY0X01TUl9FT0k6CisgICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKKwor ICAgIGNhc2UgSFZfWDY0X01TUl9JQ1I6CisgICAgeworICAgICAgICB1aW50MzJfdCBpY3IyID0g dmxhcGljX2dldF9yZWcodmNwdV92bGFwaWModiksIEFQSUNfSUNSMik7CisgICAgICAgIHVpbnQz Ml90IGljciA9IHZsYXBpY19nZXRfcmVnKHZjcHVfdmxhcGljKHYpLCBBUElDX0lDUik7CisKKyAg ICAgICAgKnZhbCA9ICgodWludDY0X3QpaWNyMiA8PCAzMikgfCBpY3I7CisgICAgICAgIGJyZWFr OworICAgIH0KKyAgICBjYXNlIEhWX1g2NF9NU1JfVFBSOgorICAgICAgICAqdmFsID0gdmxhcGlj X2dldF9yZWcodmNwdV92bGFwaWModiksIEFQSUNfVEFTS1BSSSk7CisgICAgICAgIGJyZWFrOwor CisgICAgY2FzZSBIVl9YNjRfTVNSX1ZQX0FTU0lTVF9QQUdFOgorICAgICAgICAqdmFsID0gdi0+ YXJjaC5odm0udmlyaWRpYW4udnBfYXNzaXN0Lm1zci5yYXc7CisgICAgICAgIGJyZWFrOworCisg ICAgZGVmYXVsdDoKKyAgICAgICAgZ2RwcmludGsoWEVOTE9HX0lORk8sCisgICAgICAgICAgICAg ICAgICIlczogdW5pbXBsZW1lbnRlZCBNU1IgJSN4XG4iLAorICAgICAgICAgICAgICAgICBfX2Z1 bmNfXywgaWR4KTsKKyAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOworICAgIH0KKwor ICAgIHJldHVybiBYODZFTVVMX09LQVk7Cit9CisKK3ZvaWQgdmlyaWRpYW5fc3luaWNfc2F2ZV92 Y3B1X2N0eHQoY29uc3Qgc3RydWN0IHZjcHUgKnYsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBodm1fdmlyaWRpYW5fdmNwdV9jb250ZXh0ICpjdHh0KQoreworICAg IGN0eHQtPnZwX2Fzc2lzdF9wZW5kaW5nID0gdi0+YXJjaC5odm0udmlyaWRpYW4udnBfYXNzaXN0 LnBlbmRpbmc7CisgICAgY3R4dC0+dnBfYXNzaXN0X21zciA9IHYtPmFyY2guaHZtLnZpcmlkaWFu LnZwX2Fzc2lzdC5tc3IucmF3OworfQorCit2b2lkIHZpcmlkaWFuX3N5bmljX2xvYWRfdmNwdV9j dHh0KHN0cnVjdCB2Y3B1ICp2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgaHZtX3ZpcmlkaWFuX3ZjcHVfY29udGV4dCAqY3R4dCkKK3sKKyAgICB2LT5hcmNoLmh2 bS52aXJpZGlhbi52cF9hc3Npc3QubXNyLnJhdyA9IGN0eHQtPnZwX2Fzc2lzdF9tc3I7CisgICAg aWYgKCB2LT5hcmNoLmh2bS52aXJpZGlhbi52cF9hc3Npc3QubXNyLmZpZWxkcy5lbmFibGVkICkK KyAgICAgICAgaW5pdGlhbGl6ZV92cF9hc3Npc3Qodik7CisKKyAgICB2LT5hcmNoLmh2bS52aXJp ZGlhbi52cF9hc3Npc3QucGVuZGluZyA9ICEhY3R4dC0+dnBfYXNzaXN0X3BlbmRpbmc7Cit9CisK Ky8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJC U0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFi cy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92 aXJpZGlhbi92aXJpZGlhbi5jIGIveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi92aXJpZGlhbi5j CmluZGV4IDU1YjkwNzFjMzIuLjNlNjczOTA3MDcgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9o dm0vdmlyaWRpYW4vdmlyaWRpYW4uYworKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3Zp cmlkaWFuLmMKQEAgLTE3LDcyICsxNyw2IEBACiAjaW5jbHVkZSA8cHVibGljL3NjaGVkLmg+CiAj aW5jbHVkZSA8cHVibGljL2h2bS9odm1fb3AuaD4KIAotLyogVmlyaWRpYW4gTVNSIG51bWJlcnMu ICovCi0jZGVmaW5lIEhWX1g2NF9NU1JfR1VFU1RfT1NfSUQgICAgICAgICAgICAgICAgICAgMHg0 MDAwMDAwMAotI2RlZmluZSBIVl9YNjRfTVNSX0hZUEVSQ0FMTCAgICAgICAgICAgICAgICAgICAg IDB4NDAwMDAwMDEKLSNkZWZpbmUgSFZfWDY0X01TUl9WUF9JTkRFWCAgICAgICAgICAgICAgICAg ICAgICAweDQwMDAwMDAyCi0jZGVmaW5lIEhWX1g2NF9NU1JfUkVTRVQgICAgICAgICAgICAgICAg ICAgICAgICAgMHg0MDAwMDAwMwotI2RlZmluZSBIVl9YNjRfTVNSX1ZQX1JVTlRJTUUgICAgICAg ICAgICAgICAgICAgIDB4NDAwMDAwMTAKLSNkZWZpbmUgSFZfWDY0X01TUl9USU1FX1JFRl9DT1VO VCAgICAgICAgICAgICAgICAweDQwMDAwMDIwCi0jZGVmaW5lIEhWX1g2NF9NU1JfUkVGRVJFTkNF X1RTQyAgICAgICAgICAgICAgICAgMHg0MDAwMDAyMQotI2RlZmluZSBIVl9YNjRfTVNSX1RTQ19G UkVRVUVOQ1kgICAgICAgICAgICAgICAgIDB4NDAwMDAwMjIKLSNkZWZpbmUgSFZfWDY0X01TUl9B UElDX0ZSRVFVRU5DWSAgICAgICAgICAgICAgICAweDQwMDAwMDIzCi0jZGVmaW5lIEhWX1g2NF9N U1JfRU9JICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDA3MAotI2RlZmluZSBIVl9Y NjRfTVNSX0lDUiAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwNzEKLSNkZWZpbmUg SFZfWDY0X01TUl9UUFIgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDcyCi0jZGVm aW5lIEhWX1g2NF9NU1JfVlBfQVNTSVNUX1BBR0UgICAgICAgICAgICAgICAgMHg0MDAwMDA3Mwot I2RlZmluZSBIVl9YNjRfTVNSX1NDT05UUk9MICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAw ODAKLSNkZWZpbmUgSFZfWDY0X01TUl9TVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgICAweDQw MDAwMDgxCi0jZGVmaW5lIEhWX1g2NF9NU1JfU0lFRlAgICAgICAgICAgICAgICAgICAgICAgICAg MHg0MDAwMDA4MgotI2RlZmluZSBIVl9YNjRfTVNSX1NJTVAgICAgICAgICAgICAgICAgICAgICAg ICAgIDB4NDAwMDAwODMKLSNkZWZpbmUgSFZfWDY0X01TUl9FT00gICAgICAgICAgICAgICAgICAg ICAgICAgICAweDQwMDAwMDg0Ci0jZGVmaW5lIEhWX1g2NF9NU1JfU0lOVDAgICAgICAgICAgICAg ICAgICAgICAgICAgMHg0MDAwMDA5MAotI2RlZmluZSBIVl9YNjRfTVNSX1NJTlQxICAgICAgICAg ICAgICAgICAgICAgICAgIDB4NDAwMDAwOTEKLSNkZWZpbmUgSFZfWDY0X01TUl9TSU5UMiAgICAg ICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDkyCi0jZGVmaW5lIEhWX1g2NF9NU1JfU0lOVDMg ICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDA5MwotI2RlZmluZSBIVl9YNjRfTVNSX1NJ TlQ0ICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwOTQKLSNkZWZpbmUgSFZfWDY0X01T Ul9TSU5UNSAgICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDk1Ci0jZGVmaW5lIEhWX1g2 NF9NU1JfU0lOVDYgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDA5NgotI2RlZmluZSBI Vl9YNjRfTVNSX1NJTlQ3ICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwOTcKLSNkZWZp bmUgSFZfWDY0X01TUl9TSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDk4Ci0j ZGVmaW5lIEhWX1g2NF9NU1JfU0lOVDkgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDA5 OQotI2RlZmluZSBIVl9YNjRfTVNSX1NJTlQxMCAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAw MDAwOUEKLSNkZWZpbmUgSFZfWDY0X01TUl9TSU5UMTEgICAgICAgICAgICAgICAgICAgICAgICAw eDQwMDAwMDlCCi0jZGVmaW5lIEhWX1g2NF9NU1JfU0lOVDEyICAgICAgICAgICAgICAgICAgICAg ICAgMHg0MDAwMDA5QwotI2RlZmluZSBIVl9YNjRfTVNSX1NJTlQxMyAgICAgICAgICAgICAgICAg ICAgICAgIDB4NDAwMDAwOUQKLSNkZWZpbmUgSFZfWDY0X01TUl9TSU5UMTQgICAgICAgICAgICAg ICAgICAgICAgICAweDQwMDAwMDlFCi0jZGVmaW5lIEhWX1g2NF9NU1JfU0lOVDE1ICAgICAgICAg ICAgICAgICAgICAgICAgMHg0MDAwMDA5RgotI2RlZmluZSBIVl9YNjRfTVNSX1NUSU1FUjBfQ09O RklHICAgICAgICAgICAgICAgIDB4NDAwMDAwQjAKLSNkZWZpbmUgSFZfWDY0X01TUl9TVElNRVIw X0NPVU5UICAgICAgICAgICAgICAgICAweDQwMDAwMEIxCi0jZGVmaW5lIEhWX1g2NF9NU1JfU1RJ TUVSMV9DT05GSUcgICAgICAgICAgICAgICAgMHg0MDAwMDBCMgotI2RlZmluZSBIVl9YNjRfTVNS X1NUSU1FUjFfQ09VTlQgICAgICAgICAgICAgICAgIDB4NDAwMDAwQjMKLSNkZWZpbmUgSFZfWDY0 X01TUl9TVElNRVIyX0NPTkZJRyAgICAgICAgICAgICAgICAweDQwMDAwMEI0Ci0jZGVmaW5lIEhW X1g2NF9NU1JfU1RJTUVSMl9DT1VOVCAgICAgICAgICAgICAgICAgMHg0MDAwMDBCNQotI2RlZmlu ZSBIVl9YNjRfTVNSX1NUSU1FUjNfQ09ORklHICAgICAgICAgICAgICAgIDB4NDAwMDAwQjYKLSNk ZWZpbmUgSFZfWDY0X01TUl9TVElNRVIzX0NPVU5UICAgICAgICAgICAgICAgICAweDQwMDAwMEI3 Ci0jZGVmaW5lIEhWX1g2NF9NU1JfUE9XRVJfU1RBVEVfVFJJR0dFUl9DMSAgICAgICAgMHg0MDAw MDBDMQotI2RlZmluZSBIVl9YNjRfTVNSX1BPV0VSX1NUQVRFX1RSSUdHRVJfQzIgICAgICAgIDB4 NDAwMDAwQzIKLSNkZWZpbmUgSFZfWDY0X01TUl9QT1dFUl9TVEFURV9UUklHR0VSX0MzICAgICAg ICAweDQwMDAwMEMzCi0jZGVmaW5lIEhWX1g2NF9NU1JfUE9XRVJfU1RBVEVfQ09ORklHX0MxICAg ICAgICAgMHg0MDAwMDBEMQotI2RlZmluZSBIVl9YNjRfTVNSX1BPV0VSX1NUQVRFX0NPTkZJR19D MiAgICAgICAgIDB4NDAwMDAwRDIKLSNkZWZpbmUgSFZfWDY0X01TUl9QT1dFUl9TVEFURV9DT05G SUdfQzMgICAgICAgICAweDQwMDAwMEQzCi0jZGVmaW5lIEhWX1g2NF9NU1JfU1RBVFNfUEFSVElU SU9OX1JFVEFJTF9QQUdFICAgMHg0MDAwMDBFMAotI2RlZmluZSBIVl9YNjRfTVNSX1NUQVRTX1BB UlRJVElPTl9JTlRFUk5BTF9QQUdFIDB4NDAwMDAwRTEKLSNkZWZpbmUgSFZfWDY0X01TUl9TVEFU U19WUF9SRVRBSUxfUEFHRSAgICAgICAgICAweDQwMDAwMEUyCi0jZGVmaW5lIEhWX1g2NF9NU1Jf U1RBVFNfVlBfSU5URVJOQUxfUEFHRSAgICAgICAgMHg0MDAwMDBFMwotI2RlZmluZSBIVl9YNjRf TVNSX0dVRVNUX0lETEUgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwRjAKLSNkZWZpbmUgSFZf WDY0X01TUl9TWU5USF9ERUJVR19DT05UUk9MICAgICAgICAgICAweDQwMDAwMEYxCi0jZGVmaW5l IEhWX1g2NF9NU1JfU1lOVEhfREVCVUdfU1RBVFVTICAgICAgICAgICAgMHg0MDAwMDBGMgotI2Rl ZmluZSBIVl9YNjRfTVNSX1NZTlRIX0RFQlVHX1NFTkRfQlVGRkVSICAgICAgIDB4NDAwMDAwRjMK LSNkZWZpbmUgSFZfWDY0X01TUl9TWU5USF9ERUJVR19SRUNFSVZFX0JVRkZFUiAgICAweDQwMDAw MEY0Ci0jZGVmaW5lIEhWX1g2NF9NU1JfU1lOVEhfREVCVUdfUEVORElOR19CVUZGRVIgICAgMHg0 MDAwMDBGNQotI2RlZmluZSBIVl9YNjRfTVNSX0NSQVNIX1AwICAgICAgICAgICAgICAgICAgICAg IDB4NDAwMDAxMDAKLSNkZWZpbmUgSFZfWDY0X01TUl9DUkFTSF9QMSAgICAgICAgICAgICAgICAg ICAgICAweDQwMDAwMTAxCi0jZGVmaW5lIEhWX1g2NF9NU1JfQ1JBU0hfUDIgICAgICAgICAgICAg ICAgICAgICAgMHg0MDAwMDEwMgotI2RlZmluZSBIVl9YNjRfTVNSX0NSQVNIX1AzICAgICAgICAg ICAgICAgICAgICAgIDB4NDAwMDAxMDMKLSNkZWZpbmUgSFZfWDY0X01TUl9DUkFTSF9QNCAgICAg ICAgICAgICAgICAgICAgICAweDQwMDAwMTA0Ci0jZGVmaW5lIEhWX1g2NF9NU1JfQ1JBU0hfQ1RM ICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDEwNQotCiAvKiBWaXJpZGlhbiBIeXBlcmNhbGwg U3RhdHVzIENvZGVzLiAqLwogI2RlZmluZSBIVl9TVEFUVVNfU1VDQ0VTUyAgICAgICAgICAgICAg ICAgICAgICAgMHgwMDAwCiAjZGVmaW5lIEhWX1NUQVRVU19JTlZBTElEX0hZUEVSQ0FMTF9DT0RF ICAgICAgICAweDAwMDIKQEAgLTMxMSwxNiArMjQ1LDYgQEAgc3RhdGljIHZvaWQgZHVtcF9oeXBl cmNhbGwoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCkKICAgICAgICAgICAgaGctPmZpZWxkcy5lbmFi bGVkLCAodW5zaWduZWQgbG9uZyloZy0+ZmllbGRzLnBmbik7CiB9CiAKLXN0YXRpYyB2b2lkIGR1 bXBfdnBfYXNzaXN0KGNvbnN0IHN0cnVjdCB2Y3B1ICp2KQotewotICAgIGNvbnN0IHVuaW9uIHZp cmlkaWFuX3BhZ2VfbXNyICp2YTsKLQotICAgIHZhID0gJnYtPmFyY2guaHZtLnZpcmlkaWFuLnZw X2Fzc2lzdC5tc3I7Ci0KLSAgICBwcmludGsoWEVOTE9HX0dfSU5GTyAiJXB2OiBWSVJJRElBTiBW UF9BU1NJU1RfUEFHRTogZW5hYmxlZDogJXggcGZuOiAlbHhcbiIsCi0gICAgICAgICAgIHYsIHZh LT5maWVsZHMuZW5hYmxlZCwgKHVuc2lnbmVkIGxvbmcpdmEtPmZpZWxkcy5wZm4pOwotfQotCiBz dGF0aWMgdm9pZCBkdW1wX3JlZmVyZW5jZV90c2MoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCkKIHsK ICAgICBjb25zdCB1bmlvbiB2aXJpZGlhbl9wYWdlX21zciAqcnQ7CkBAIC0zNjYsMTA1ICsyOTAs NiBAQCBzdGF0aWMgdm9pZCBlbmFibGVfaHlwZXJjYWxsX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCkK ICAgICBwdXRfcGFnZV9hbmRfdHlwZShwYWdlKTsKIH0KIAotc3RhdGljIHZvaWQgaW5pdGlhbGl6 ZV92cF9hc3Npc3Qoc3RydWN0IHZjcHUgKnYpCi17Ci0gICAgc3RydWN0IGRvbWFpbiAqZCA9IHYt PmRvbWFpbjsKLSAgICB1bnNpZ25lZCBsb25nIGdtZm4gPSB2LT5hcmNoLmh2bS52aXJpZGlhbi52 cF9hc3Npc3QubXNyLmZpZWxkcy5wZm47Ci0gICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSA9IGdl dF9wYWdlX2Zyb21fZ2ZuKGQsIGdtZm4sIE5VTEwsIFAyTV9BTExPQyk7Ci0gICAgdm9pZCAqdmE7 Ci0KLSAgICBBU1NFUlQoIXYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC52YSk7Ci0KLSAg ICBpZiAoICFwYWdlICkKLSAgICAgICAgZ290byBmYWlsOwotCi0gICAgaWYgKCAhZ2V0X3BhZ2Vf dHlwZShwYWdlLCBQR1Rfd3JpdGFibGVfcGFnZSkgKQotICAgIHsKLSAgICAgICAgcHV0X3BhZ2Uo cGFnZSk7Ci0gICAgICAgIGdvdG8gZmFpbDsKLSAgICB9Ci0KLSAgICB2YSA9IF9fbWFwX2RvbWFp bl9wYWdlX2dsb2JhbChwYWdlKTsKLSAgICBpZiAoICF2YSApCi0gICAgewotICAgICAgICBwdXRf cGFnZV9hbmRfdHlwZShwYWdlKTsKLSAgICAgICAgZ290byBmYWlsOwotICAgIH0KLQotICAgIGNs ZWFyX3BhZ2UodmEpOwotCi0gICAgdi0+YXJjaC5odm0udmlyaWRpYW4udnBfYXNzaXN0LnZhID0g dmE7Ci0gICAgcmV0dXJuOwotCi0gZmFpbDoKLSAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywg IkJhZCBHTUZOICUjIlBSSV9nZm4iIChNRk4gJSMiUFJJX21mbiIpXG4iLAotICAgICAgICAgICAg IGdtZm4sIG1mbl94KHBhZ2UgPyBwYWdlX3RvX21mbihwYWdlKSA6IElOVkFMSURfTUZOKSk7Ci19 Ci0KLXN0YXRpYyB2b2lkIHRlYXJkb3duX3ZwX2Fzc2lzdChzdHJ1Y3QgdmNwdSAqdikKLXsKLSAg ICB2b2lkICp2YSA9IHYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC52YTsKLSAgICBzdHJ1 Y3QgcGFnZV9pbmZvICpwYWdlOwotCi0gICAgaWYgKCAhdmEgKQotICAgICAgICByZXR1cm47Ci0K LSAgICB2LT5hcmNoLmh2bS52aXJpZGlhbi52cF9hc3Npc3QudmEgPSBOVUxMOwotCi0gICAgcGFn ZSA9IG1mbl90b19wYWdlKGRvbWFpbl9wYWdlX21hcF90b19tZm4odmEpKTsKLQotICAgIHVubWFw X2RvbWFpbl9wYWdlX2dsb2JhbCh2YSk7Ci0gICAgcHV0X3BhZ2VfYW5kX3R5cGUocGFnZSk7Ci19 Ci0KLXZvaWQgdmlyaWRpYW5fYXBpY19hc3Npc3Rfc2V0KHN0cnVjdCB2Y3B1ICp2KQotewotICAg IHVpbnQzMl90ICp2YSA9IHYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC52YTsKLQotICAg IGlmICggIXZhICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLyoKLSAgICAgKiBJZiB0aGVyZSBp cyBhbHJlYWR5IGFuIGFzc2lzdCBwZW5kaW5nIHRoZW4gc29tZXRoaW5nIGhhcyBnb25lCi0gICAg ICogd3JvbmcgYW5kIHRoZSBWTSB3aWxsIG1vc3QgbGlrZWx5IGhhbmcgc28gZm9yY2UgYSBjcmFz aCBub3cKLSAgICAgKiB0byBtYWtlIHRoZSBwcm9ibGVtIGNsZWFyLgotICAgICAqLwotICAgIGlm ICggdi0+YXJjaC5odm0udmlyaWRpYW4udnBfYXNzaXN0LnBlbmRpbmcgKQotICAgICAgICBkb21h aW5fY3Jhc2godi0+ZG9tYWluKTsKLQotICAgIHYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lz dC5wZW5kaW5nID0gdHJ1ZTsKLSAgICAqdmEgfD0gMXU7Ci19Ci0KLWJvb2wgdmlyaWRpYW5fYXBp Y19hc3Npc3RfY29tcGxldGVkKHN0cnVjdCB2Y3B1ICp2KQotewotICAgIHVpbnQzMl90ICp2YSA9 IHYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC52YTsKLQotICAgIGlmICggIXZhICkKLSAg ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCB2LT5hcmNoLmh2bS52aXJpZGlhbi52cF9h c3Npc3QucGVuZGluZyAmJgotICAgICAgICAgISgqdmEgJiAxdSkgKQotICAgIHsKLSAgICAgICAg LyogQW4gRU9JIGhhcyBiZWVuIGF2b2lkZWQgKi8KLSAgICAgICAgdi0+YXJjaC5odm0udmlyaWRp YW4udnBfYXNzaXN0LnBlbmRpbmcgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg fQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIHZpcmlkaWFuX2FwaWNfYXNzaXN0X2Ns ZWFyKHN0cnVjdCB2Y3B1ICp2KQotewotICAgIHVpbnQzMl90ICp2YSA9IHYtPmFyY2guaHZtLnZp cmlkaWFuLnZwX2Fzc2lzdC52YTsKLQotICAgIGlmICggIXZhICkKLSAgICAgICAgcmV0dXJuOwot Ci0gICAgKnZhICY9IH4xdTsKLSAgICB2LT5hcmNoLmh2bS52aXJpZGlhbi52cF9hc3Npc3QucGVu ZGluZyA9IGZhbHNlOwotfQotCiBzdGF0aWMgdm9pZCB1cGRhdGVfcmVmZXJlbmNlX3RzYyhzdHJ1 Y3QgZG9tYWluICpkLCBib29sX3QgaW5pdGlhbGl6ZSkKIHsKICAgICB1bnNpZ25lZCBsb25nIGdt Zm4gPSBkLT5hcmNoLmh2bS52aXJpZGlhbi5yZWZlcmVuY2VfdHNjLmZpZWxkcy5wZm47CkBAIC01 NjMsMzEgKzM4OCwxMCBAQCBpbnQgZ3Vlc3Rfd3Jtc3JfdmlyaWRpYW4oc3RydWN0IHZjcHUgKnYs IHVpbnQzMl90IGlkeCwgdWludDY0X3QgdmFsKQogICAgICAgICBicmVhazsKIAogICAgIGNhc2Ug SFZfWDY0X01TUl9FT0k6Ci0gICAgICAgIHZsYXBpY19FT0lfc2V0KHZjcHVfdmxhcGljKHYpKTsK LSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEhWX1g2NF9NU1JfSUNSOiB7Ci0gICAgICAgIHUz MiBlYXggPSAodTMyKXZhbCwgZWR4ID0gKHUzMikodmFsID4+IDMyKTsKLSAgICAgICAgc3RydWN0 IHZsYXBpYyAqdmxhcGljID0gdmNwdV92bGFwaWModik7Ci0gICAgICAgIGVheCAmPSB+KDEgPDwg MTIpOwotICAgICAgICBlZHggJj0gMHhmZjAwMDAwMDsKLSAgICAgICAgdmxhcGljX3NldF9yZWco dmxhcGljLCBBUElDX0lDUjIsIGVkeCk7Ci0gICAgICAgIHZsYXBpY19pcGkodmxhcGljLCBlYXgs IGVkeCk7Ci0gICAgICAgIHZsYXBpY19zZXRfcmVnKHZsYXBpYywgQVBJQ19JQ1IsIGVheCk7Ci0g ICAgICAgIGJyZWFrOwotICAgIH0KLQorICAgIGNhc2UgSFZfWDY0X01TUl9JQ1I6CiAgICAgY2Fz ZSBIVl9YNjRfTVNSX1RQUjoKLSAgICAgICAgdmxhcGljX3NldF9yZWcodmNwdV92bGFwaWModiks IEFQSUNfVEFTS1BSSSwgKHVpbnQ4X3QpdmFsKTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNl IEhWX1g2NF9NU1JfVlBfQVNTSVNUX1BBR0U6Ci0gICAgICAgIHRlYXJkb3duX3ZwX2Fzc2lzdCh2 KTsgLyogcmVsZWFzZSBhbnkgcHJldmlvdXMgbWFwcGluZyAqLwotICAgICAgICB2LT5hcmNoLmh2 bS52aXJpZGlhbi52cF9hc3Npc3QubXNyLnJhdyA9IHZhbDsKLSAgICAgICAgZHVtcF92cF9hc3Np c3Qodik7Ci0gICAgICAgIGlmICggdi0+YXJjaC5odm0udmlyaWRpYW4udnBfYXNzaXN0Lm1zci5m aWVsZHMuZW5hYmxlZCApCi0gICAgICAgICAgICBpbml0aWFsaXplX3ZwX2Fzc2lzdCh2KTsKLSAg ICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB2aXJpZGlhbl9zeW5pY193cm1zcih2LCBpZHgs IHZhbCk7CiAKICAgICBjYXNlIEhWX1g2NF9NU1JfUkVGRVJFTkNFX1RTQzoKICAgICAgICAgaWYg KCAhKHZpcmlkaWFuX2ZlYXR1cmVfbWFzayhkKSAmIEhWTVBWX3JlZmVyZW5jZV90c2MpICkKQEAg LTcxMCwxOCArNTE0LDExIEBAIGludCBndWVzdF9yZG1zcl92aXJpZGlhbihjb25zdCBzdHJ1Y3Qg dmNwdSAqdiwgdWludDMyX3QgaWR4LCB1aW50NjRfdCAqdmFsKQogICAgICAgICAqdmFsID0gMTAw MDAwMDAwMHVsbCAvIEFQSUNfQlVTX0NZQ0xFX05TOwogICAgICAgICBicmVhazsKIAorICAgIGNh c2UgSFZfWDY0X01TUl9FT0k6CiAgICAgY2FzZSBIVl9YNjRfTVNSX0lDUjoKLSAgICAgICAgKnZh bCA9ICgoKHVpbnQ2NF90KXZsYXBpY19nZXRfcmVnKHZjcHVfdmxhcGljKHYpLCBBUElDX0lDUjIp IDw8IDMyKSB8Ci0gICAgICAgICAgICAgICAgdmxhcGljX2dldF9yZWcodmNwdV92bGFwaWModiks IEFQSUNfSUNSKSk7Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBIVl9YNjRfTVNSX1RQUjoK LSAgICAgICAgKnZhbCA9IHZsYXBpY19nZXRfcmVnKHZjcHVfdmxhcGljKHYpLCBBUElDX1RBU0tQ UkkpOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgSFZfWDY0X01TUl9WUF9BU1NJU1RfUEFH RToKLSAgICAgICAgKnZhbCA9IHYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC5tc3IucmF3 OwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIHZpcmlkaWFuX3N5bmljX3JkbXNyKHYs IGlkeCwgdmFsKTsKIAogICAgIGNhc2UgSFZfWDY0X01TUl9SRUZFUkVOQ0VfVFNDOgogICAgICAg ICBpZiAoICEodmlyaWRpYW5fZmVhdHVyZV9tYXNrKGQpICYgSFZNUFZfcmVmZXJlbmNlX3RzYykg KQpAQCAtNzc5LDcgKzU3Niw3IEBAIGludCBndWVzdF9yZG1zcl92aXJpZGlhbihjb25zdCBzdHJ1 Y3QgdmNwdSAqdiwgdWludDMyX3QgaWR4LCB1aW50NjRfdCAqdmFsKQogCiB2b2lkIHZpcmlkaWFu X3ZjcHVfZGVpbml0KHN0cnVjdCB2Y3B1ICp2KQogewotICAgIHRlYXJkb3duX3ZwX2Fzc2lzdCh2 KTsKKyAgICB2aXJpZGlhbl9zeW5pY193cm1zcih2LCBIVl9YNjRfTVNSX1ZQX0FTU0lTVF9QQUdF LCAwKTsKIH0KIAogdm9pZCB2aXJpZGlhbl9kb21haW5fZGVpbml0KHN0cnVjdCBkb21haW4gKmQp CkBAIC03ODcsNyArNTg0LDcgQEAgdm9pZCB2aXJpZGlhbl9kb21haW5fZGVpbml0KHN0cnVjdCBk b21haW4gKmQpCiAgICAgc3RydWN0IHZjcHUgKnY7CiAKICAgICBmb3JfZWFjaF92Y3B1ICggZCwg diApCi0gICAgICAgIHRlYXJkb3duX3ZwX2Fzc2lzdCh2KTsKKyAgICAgICAgdmlyaWRpYW5fdmNw dV9kZWluaXQodik7CiB9CiAKIHN0YXRpYyBERUZJTkVfUEVSX0NQVShjcHVtYXNrX3QsIGlwaV9j cHVtYXNrKTsKQEAgLTk4OSwxNCArNzg2LDEzIEBAIEhWTV9SRUdJU1RFUl9TQVZFX1JFU1RPUkUo VklSSURJQU5fRE9NQUlOLCB2aXJpZGlhbl9zYXZlX2RvbWFpbl9jdHh0LAogCiBzdGF0aWMgaW50 IHZpcmlkaWFuX3NhdmVfdmNwdV9jdHh0KHN0cnVjdCB2Y3B1ICp2LCBodm1fZG9tYWluX2NvbnRl eHRfdCAqaCkKIHsKLSAgICBzdHJ1Y3QgaHZtX3ZpcmlkaWFuX3ZjcHVfY29udGV4dCBjdHh0ID0g ewotICAgICAgICAudnBfYXNzaXN0X21zciA9IHYtPmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lz dC5tc3IucmF3LAotICAgICAgICAudnBfYXNzaXN0X3BlbmRpbmcgPSB2LT5hcmNoLmh2bS52aXJp ZGlhbi52cF9hc3Npc3QucGVuZGluZywKLSAgICB9OworICAgIHN0cnVjdCBodm1fdmlyaWRpYW5f dmNwdV9jb250ZXh0IGN0eHQgPSB7fTsKIAogICAgIGlmICggIWlzX3ZpcmlkaWFuX2RvbWFpbih2 LT5kb21haW4pICkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICB2aXJpZGlhbl9zeW5pY19zYXZl X3ZjcHVfY3R4dCh2LCAmY3R4dCk7CisKICAgICByZXR1cm4gaHZtX3NhdmVfZW50cnkoVklSSURJ QU5fVkNQVSwgdi0+dmNwdV9pZCwgaCwgJmN0eHQpOwogfQogCkBAIC0xMDIwLDEyICs4MTYsNyBA QCBzdGF0aWMgaW50IHZpcmlkaWFuX2xvYWRfdmNwdV9jdHh0KHN0cnVjdCBkb21haW4gKmQsCiAg ICAgaWYgKCBtZW1jbXAoJmN0eHQuX3BhZCwgemVyb19wYWdlLCBzaXplb2YoY3R4dC5fcGFkKSkg KQogICAgICAgICByZXR1cm4gLUVJTlZBTDsKIAotICAgIHYtPmFyY2guaHZtLnZpcmlkaWFuLnZw X2Fzc2lzdC5tc3IucmF3ID0gY3R4dC52cF9hc3Npc3RfbXNyOwotICAgIGlmICggdi0+YXJjaC5o dm0udmlyaWRpYW4udnBfYXNzaXN0Lm1zci5maWVsZHMuZW5hYmxlZCAmJgotICAgICAgICAgIXYt PmFyY2guaHZtLnZpcmlkaWFuLnZwX2Fzc2lzdC52YSApCi0gICAgICAgIGluaXRpYWxpemVfdnBf YXNzaXN0KHYpOwotCi0gICAgdi0+YXJjaC5odm0udmlyaWRpYW4udnBfYXNzaXN0LnBlbmRpbmcg PSAhIWN0eHQudnBfYXNzaXN0X3BlbmRpbmc7CisgICAgdmlyaWRpYW5fc3luaWNfbG9hZF92Y3B1 X2N0eHQodiwgJmN0eHQpOwogCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS94ZW4vaW5j bHVkZS9hc20teDg2L2h2bS92aXJpZGlhbi5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdmly aWRpYW4uaAppbmRleCAzNTlmZGY1YTgzLi4zNDgzYWVkYjlhIDEwMDY0NAotLS0gYS94ZW4vaW5j bHVkZS9hc20teDg2L2h2bS92aXJpZGlhbi5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZt L3ZpcmlkaWFuLmgKQEAgLTksNiArOSw3NCBAQAogI2lmbmRlZiBfX0FTTV9YODZfSFZNX1ZJUklE SUFOX0hfXwogI2RlZmluZSBfX0FTTV9YODZfSFZNX1ZJUklESUFOX0hfXwogCisjaW5jbHVkZSA8 YXNtL2h2bS9zYXZlLmg+CisKKy8qIFZpcmlkaWFuIE1TUiBudW1iZXJzLiAqLworI2RlZmluZSBI Vl9YNjRfTVNSX0dVRVNUX09TX0lEICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwMDAKKyNkZWZp bmUgSFZfWDY0X01TUl9IWVBFUkNBTEwgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDAxCisj ZGVmaW5lIEhWX1g2NF9NU1JfVlBfSU5ERVggICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDAw MgorI2RlZmluZSBIVl9YNjRfTVNSX1JFU0VUICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAw MDAwMDMKKyNkZWZpbmUgSFZfWDY0X01TUl9WUF9SVU5USU1FICAgICAgICAgICAgICAgICAgICAw eDQwMDAwMDEwCisjZGVmaW5lIEhWX1g2NF9NU1JfVElNRV9SRUZfQ09VTlQgICAgICAgICAgICAg ICAgMHg0MDAwMDAyMAorI2RlZmluZSBIVl9YNjRfTVNSX1JFRkVSRU5DRV9UU0MgICAgICAgICAg ICAgICAgIDB4NDAwMDAwMjEKKyNkZWZpbmUgSFZfWDY0X01TUl9UU0NfRlJFUVVFTkNZICAgICAg ICAgICAgICAgICAweDQwMDAwMDIyCisjZGVmaW5lIEhWX1g2NF9NU1JfQVBJQ19GUkVRVUVOQ1kg ICAgICAgICAgICAgICAgMHg0MDAwMDAyMworI2RlZmluZSBIVl9YNjRfTVNSX0VPSSAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwNzAKKyNkZWZpbmUgSFZfWDY0X01TUl9JQ1IgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDcxCisjZGVmaW5lIEhWX1g2NF9NU1JfVFBS ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDA3MgorI2RlZmluZSBIVl9YNjRfTVNS X1ZQX0FTU0lTVF9QQUdFICAgICAgICAgICAgICAgIDB4NDAwMDAwNzMKKyNkZWZpbmUgSFZfWDY0 X01TUl9TQ09OVFJPTCAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDgwCisjZGVmaW5lIEhW X1g2NF9NU1JfU1ZFUlNJT04gICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDA4MQorI2RlZmlu ZSBIVl9YNjRfTVNSX1NJRUZQICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwODIKKyNk ZWZpbmUgSFZfWDY0X01TUl9TSU1QICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDgz CisjZGVmaW5lIEhWX1g2NF9NU1JfRU9NICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAw MDA4NAorI2RlZmluZSBIVl9YNjRfTVNSX1NJTlQwICAgICAgICAgICAgICAgICAgICAgICAgIDB4 NDAwMDAwOTAKKyNkZWZpbmUgSFZfWDY0X01TUl9TSU5UMSAgICAgICAgICAgICAgICAgICAgICAg ICAweDQwMDAwMDkxCisjZGVmaW5lIEhWX1g2NF9NU1JfU0lOVDIgICAgICAgICAgICAgICAgICAg ICAgICAgMHg0MDAwMDA5MgorI2RlZmluZSBIVl9YNjRfTVNSX1NJTlQzICAgICAgICAgICAgICAg ICAgICAgICAgIDB4NDAwMDAwOTMKKyNkZWZpbmUgSFZfWDY0X01TUl9TSU5UNCAgICAgICAgICAg ICAgICAgICAgICAgICAweDQwMDAwMDk0CisjZGVmaW5lIEhWX1g2NF9NU1JfU0lOVDUgICAgICAg ICAgICAgICAgICAgICAgICAgMHg0MDAwMDA5NQorI2RlZmluZSBIVl9YNjRfTVNSX1NJTlQ2ICAg ICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwOTYKKyNkZWZpbmUgSFZfWDY0X01TUl9TSU5U NyAgICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDk3CisjZGVmaW5lIEhWX1g2NF9NU1Jf U0lOVDggICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDA5OAorI2RlZmluZSBIVl9YNjRf TVNSX1NJTlQ5ICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwOTkKKyNkZWZpbmUgSFZf WDY0X01TUl9TSU5UMTAgICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDlBCisjZGVmaW5l IEhWX1g2NF9NU1JfU0lOVDExICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDA5QgorI2Rl ZmluZSBIVl9YNjRfTVNSX1NJTlQxMiAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwOUMK KyNkZWZpbmUgSFZfWDY0X01TUl9TSU5UMTMgICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAw MDlECisjZGVmaW5lIEhWX1g2NF9NU1JfU0lOVDE0ICAgICAgICAgICAgICAgICAgICAgICAgMHg0 MDAwMDA5RQorI2RlZmluZSBIVl9YNjRfTVNSX1NJTlQxNSAgICAgICAgICAgICAgICAgICAgICAg IDB4NDAwMDAwOUYKKyNkZWZpbmUgSFZfWDY0X01TUl9TVElNRVIwX0NPTkZJRyAgICAgICAgICAg ICAgICAweDQwMDAwMEIwCisjZGVmaW5lIEhWX1g2NF9NU1JfU1RJTUVSMF9DT1VOVCAgICAgICAg ICAgICAgICAgMHg0MDAwMDBCMQorI2RlZmluZSBIVl9YNjRfTVNSX1NUSU1FUjFfQ09ORklHICAg ICAgICAgICAgICAgIDB4NDAwMDAwQjIKKyNkZWZpbmUgSFZfWDY0X01TUl9TVElNRVIxX0NPVU5U ICAgICAgICAgICAgICAgICAweDQwMDAwMEIzCisjZGVmaW5lIEhWX1g2NF9NU1JfU1RJTUVSMl9D T05GSUcgICAgICAgICAgICAgICAgMHg0MDAwMDBCNAorI2RlZmluZSBIVl9YNjRfTVNSX1NUSU1F UjJfQ09VTlQgICAgICAgICAgICAgICAgIDB4NDAwMDAwQjUKKyNkZWZpbmUgSFZfWDY0X01TUl9T VElNRVIzX0NPTkZJRyAgICAgICAgICAgICAgICAweDQwMDAwMEI2CisjZGVmaW5lIEhWX1g2NF9N U1JfU1RJTUVSM19DT1VOVCAgICAgICAgICAgICAgICAgMHg0MDAwMDBCNworI2RlZmluZSBIVl9Y NjRfTVNSX1BPV0VSX1NUQVRFX1RSSUdHRVJfQzEgICAgICAgIDB4NDAwMDAwQzEKKyNkZWZpbmUg SFZfWDY0X01TUl9QT1dFUl9TVEFURV9UUklHR0VSX0MyICAgICAgICAweDQwMDAwMEMyCisjZGVm aW5lIEhWX1g2NF9NU1JfUE9XRVJfU1RBVEVfVFJJR0dFUl9DMyAgICAgICAgMHg0MDAwMDBDMwor I2RlZmluZSBIVl9YNjRfTVNSX1BPV0VSX1NUQVRFX0NPTkZJR19DMSAgICAgICAgIDB4NDAwMDAw RDEKKyNkZWZpbmUgSFZfWDY0X01TUl9QT1dFUl9TVEFURV9DT05GSUdfQzIgICAgICAgICAweDQw MDAwMEQyCisjZGVmaW5lIEhWX1g2NF9NU1JfUE9XRVJfU1RBVEVfQ09ORklHX0MzICAgICAgICAg MHg0MDAwMDBEMworI2RlZmluZSBIVl9YNjRfTVNSX1NUQVRTX1BBUlRJVElPTl9SRVRBSUxfUEFH RSAgIDB4NDAwMDAwRTAKKyNkZWZpbmUgSFZfWDY0X01TUl9TVEFUU19QQVJUSVRJT05fSU5URVJO QUxfUEFHRSAweDQwMDAwMEUxCisjZGVmaW5lIEhWX1g2NF9NU1JfU1RBVFNfVlBfUkVUQUlMX1BB R0UgICAgICAgICAgMHg0MDAwMDBFMgorI2RlZmluZSBIVl9YNjRfTVNSX1NUQVRTX1ZQX0lOVEVS TkFMX1BBR0UgICAgICAgIDB4NDAwMDAwRTMKKyNkZWZpbmUgSFZfWDY0X01TUl9HVUVTVF9JRExF ICAgICAgICAgICAgICAgICAgICAweDQwMDAwMEYwCisjZGVmaW5lIEhWX1g2NF9NU1JfU1lOVEhf REVCVUdfQ09OVFJPTCAgICAgICAgICAgMHg0MDAwMDBGMQorI2RlZmluZSBIVl9YNjRfTVNSX1NZ TlRIX0RFQlVHX1NUQVRVUyAgICAgICAgICAgIDB4NDAwMDAwRjIKKyNkZWZpbmUgSFZfWDY0X01T Ul9TWU5USF9ERUJVR19TRU5EX0JVRkZFUiAgICAgICAweDQwMDAwMEYzCisjZGVmaW5lIEhWX1g2 NF9NU1JfU1lOVEhfREVCVUdfUkVDRUlWRV9CVUZGRVIgICAgMHg0MDAwMDBGNAorI2RlZmluZSBI Vl9YNjRfTVNSX1NZTlRIX0RFQlVHX1BFTkRJTkdfQlVGRkVSICAgIDB4NDAwMDAwRjUKKyNkZWZp bmUgSFZfWDY0X01TUl9DUkFTSF9QMCAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMTAwCisj ZGVmaW5lIEhWX1g2NF9NU1JfQ1JBU0hfUDEgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDEw MQorI2RlZmluZSBIVl9YNjRfTVNSX0NSQVNIX1AyICAgICAgICAgICAgICAgICAgICAgIDB4NDAw MDAxMDIKKyNkZWZpbmUgSFZfWDY0X01TUl9DUkFTSF9QMyAgICAgICAgICAgICAgICAgICAgICAw eDQwMDAwMTAzCisjZGVmaW5lIEhWX1g2NF9NU1JfQ1JBU0hfUDQgICAgICAgICAgICAgICAgICAg ICAgMHg0MDAwMDEwNAorI2RlZmluZSBIVl9YNjRfTVNSX0NSQVNIX0NUTCAgICAgICAgICAgICAg ICAgICAgIDB4NDAwMDAxMDUKKwogdW5pb24gdmlyaWRpYW5fcGFnZV9tc3IKIHsKICAgICB1aW50 NjRfdCByYXc7CkBAIC05Myw2ICsxNjEsMTQgQEAgdm9pZCB2aXJpZGlhbl9hcGljX2Fzc2lzdF9z ZXQoc3RydWN0IHZjcHUgKnYpOwogYm9vbCB2aXJpZGlhbl9hcGljX2Fzc2lzdF9jb21wbGV0ZWQo c3RydWN0IHZjcHUgKnYpOwogdm9pZCB2aXJpZGlhbl9hcGljX2Fzc2lzdF9jbGVhcihzdHJ1Y3Qg dmNwdSAqdik7CiAKK2ludCB2aXJpZGlhbl9zeW5pY193cm1zcihzdHJ1Y3QgdmNwdSAqdiwgdWlu dDMyX3QgaWR4LCB1aW50NjRfdCB2YWwpOworaW50IHZpcmlkaWFuX3N5bmljX3JkbXNyKGNvbnN0 IHN0cnVjdCB2Y3B1ICp2LCB1aW50MzJfdCBpZHgsIHVpbnQ2NF90ICp2YWwpOworCit2b2lkIHZp cmlkaWFuX3N5bmljX3NhdmVfdmNwdV9jdHh0KGNvbnN0IHN0cnVjdCB2Y3B1ICp2LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaHZtX3ZpcmlkaWFuX3ZjcHVfY29u dGV4dCAqY3R4dCk7Cit2b2lkIHZpcmlkaWFuX3N5bmljX2xvYWRfdmNwdV9jdHh0KHN0cnVjdCB2 Y3B1ICp2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaHZtX3Zp cmlkaWFuX3ZjcHVfY29udGV4dCAqY3R4dCk7CisKICNlbmRpZiAvKiBfX0FTTV9YODZfSFZNX1ZJ UklESUFOX0hfXyAqLwogCiAvKgotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu L2xpc3RpbmZvL3hlbi1kZXZlbA==