From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v5 09/11] viridian: add implementation of synthetic interrupt MSRs Date: Mon, 11 Mar 2019 13:41:30 +0000 Message-ID: <20190311134132.20536-10-paul.durrant@citrix.com> References: <20190311134132.20536-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 1h3LBX-000068-NE for xen-devel@lists.xenproject.org; Mon, 11 Mar 2019 13:41:43 +0000 In-Reply-To: <20190311134132.20536-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: Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Paul Durrant , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTQ09OVFJPTCwg U1ZFUlNJT04sIFNJRUZQLApTSU1QLCBFT00gYW5kIFNJTlQwLTE1IFN5bklDIE1TUnMuIE5vIG1l c3NhZ2Ugc291cmNlIGlzIGFkZGVkIGFuZCwgYXMgc3VjaCwKbm90aGluZyB3aWxsIHlldCBnZW5l cmF0ZSBhIHN5bnRoZXRpYyBpbnRlcnJ1cHQuIEEgc3Vic2VxdWVudCBwYXRjaCB3aWxsCmFkZCBh biBpbXBsZW1lbnRhdGlvbiBvZiBzeW50aGV0aWMgdGltZXJzIHdoaWNoIHdpbGwgbmVlZCB0aGUg aW5mcmFzdHJ1Y3R1cmUKYWRkZWQgYnkgdGhpcyBwYXRjaCB0byBkZWxpdmVyIGV4cGlyeSBtZXNz YWdlcyB0byB0aGUgZ3Vlc3QuCgpOT1RFOiBBICdzeW5pYycgb3B0aW9uIGlzIGFkZGVkIHRvIHRo ZSB0b29sc3RhY2sgdmlyaWRpYW4gZW5saWdodGVubWVudHMKICAgICAgZW51bWVyYXRpb24gYnV0 IGlzIGRlbGliZXJhdGVseSBub3QgZG9jdW1lbnRlZCBhcyBlbmFibGluZyB0aGVzZQogICAgICBT eW5JQyByZWdpc3RlcnMgd2l0aG91dCBhIG1lc3NhZ2Ugc291cmNlIGlzIG9ubHkgdXNlZnVsIGZv cgogICAgICBkZWJ1Z2dpbmcuCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVy cmFudEBjaXRyaXguY29tPgpBY2tlZC1ieTogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4K LS0tCkNjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IEFuZHJl dyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBHZW9yZ2UgRHVubGFwIDxH ZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+CkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz ZS5jb20+CkNjOiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgpDYzogS29ucmFk IFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgpDYzogU3RlZmFubyBTdGFi ZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgpDYzogVGltIERlZWdhbiA8dGltQHhlbi5v cmc+CkNjOiAiUm9nZXIgUGF1IE1vbm7DqSIgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgoKdjQ6CiAt IEFkZHJlc3MgY29tbWVudHMgZnJvbSBKYW4KCnYzOgogLSBBZGQgdGhlICdTaW50UG9sbGluZ01v ZGVBdmFpbGFibGUnIGJpdCBpbiBDUFVJRCBsZWFmIDMKLS0tCiB0b29scy9saWJ4bC9saWJ4bC5o ICAgICAgICAgICAgICAgICAgICB8ICAgNiArCiB0b29scy9saWJ4bC9saWJ4bF9kb20uYyAgICAg ICAgICAgICAgICB8ICAgMyArCiB0b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwgICAgICAgICAg ICB8ICAgMSArCiB4ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3N5bmljLmMgICAgICB8IDIzNCAr KysrKysrKysrKysrKysrKysrKysrKystCiB4ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3Zpcmlk aWFuLmMgICB8ICAxOSArKwogeGVuL2FyY2gveDg2L2h2bS92bGFwaWMuYyAgICAgICAgICAgICAg fCAgMzIgKysrLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaHZtLmggICAgICAgICAgfCAgIDMg KwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdmlyaWRpYW4uaCAgICAgfCAgMjUgKysrCiB4ZW4v aW5jbHVkZS9hc20teDg2L2h2bS92bGFwaWMuaCAgICAgICB8ICAgMSArCiB4ZW4vaW5jbHVkZS9w dWJsaWMvYXJjaC14ODYvaHZtL3NhdmUuaCB8ICAgMiArCiB4ZW4vaW5jbHVkZS9wdWJsaWMvaHZt L3BhcmFtcy5oICAgICAgICB8ICAgNyArLQogMTEgZmlsZXMgY2hhbmdlZCwgMzI2IGluc2VydGlv bnMoKyksIDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGwuaCBi L3Rvb2xzL2xpYnhsL2xpYnhsLmgKaW5kZXggYTM4ZTVjZGJhMi4uYTkyM2EzODBkMyAxMDA2NDQK LS0tIGEvdG9vbHMvbGlieGwvbGlieGwuaAorKysgYi90b29scy9saWJ4bC9saWJ4bC5oCkBAIC0z MTgsNiArMzE4LDEyIEBACiAgKi8KICNkZWZpbmUgTElCWExfSEFWRV9WSVJJRElBTl9DUkFTSF9D VEwgMQogCisvKgorICogTElCWExfSEFWRV9WSVJJRElBTl9TWU5JQyBpbmRpY2F0ZXMgdGhhdCB0 aGUgJ3N5bmljJyB2YWx1ZQorICogaXMgcHJlc2VudCBpbiB0aGUgdmlyaWRpYW4gZW5saWdodGVu bWVudCBlbnVtZXJhdGlvbi4KKyAqLworI2RlZmluZSBMSUJYTF9IQVZFX1ZJUklESUFOX1NZTklD IDEKKwogLyoKICAqIExJQlhMX0hBVkVfQlVJTERJTkZPX0hWTV9BQ1BJX0xBUFRPUF9TTEFURSBp bmRpY2F0ZXMgdGhhdAogICogbGlieGxfZG9tYWluX2J1aWxkX2luZm8gaGFzIHRoZSB1Lmh2bS5h Y3BpX2xhcHRvcF9zbGF0ZSBmaWVsZC4KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2Rv bS5jIGIvdG9vbHMvbGlieGwvbGlieGxfZG9tLmMKaW5kZXggNjE2MDk5MWFmMy4uZmI3NThkMmFj MyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfZG9tLmMKKysrIGIvdG9vbHMvbGlieGwv bGlieGxfZG9tLmMKQEAgLTMxNyw2ICszMTcsOSBAQCBzdGF0aWMgaW50IGh2bV9zZXRfdmlyaWRp YW5fZmVhdHVyZXMobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQsCiAgICAgaWYgKGxpYnhs X2JpdG1hcF90ZXN0KCZlbmxpZ2h0ZW5tZW50cywgTElCWExfVklSSURJQU5fRU5MSUdIVEVOTUVO VF9DUkFTSF9DVEwpKQogICAgICAgICBtYXNrIHw9IEhWTVBWX2NyYXNoX2N0bDsKIAorICAgIGlm IChsaWJ4bF9iaXRtYXBfdGVzdCgmZW5saWdodGVubWVudHMsIExJQlhMX1ZJUklESUFOX0VOTElH SFRFTk1FTlRfU1lOSUMpKQorICAgICAgICBtYXNrIHw9IEhWTVBWX3N5bmljOworCiAgICAgaWYg KG1hc2sgIT0gMCAmJgogICAgICAgICB4Y19odm1fcGFyYW1fc2V0KENUWC0+eGNoLAogICAgICAg ICAgICAgICAgICAgICAgICAgIGRvbWlkLApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxf dHlwZXMuaWRsIGIvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCmluZGV4IGI2ODVhYzQ3YWMu Ljk4NjBiY2FmNWYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbAorKysg Yi90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKQEAgLTIzNSw2ICsyMzUsNyBAQCBsaWJ4bF92 aXJpZGlhbl9lbmxpZ2h0ZW5tZW50ID0gRW51bWVyYXRpb24oInZpcmlkaWFuX2VubGlnaHRlbm1l bnQiLCBbCiAgICAgKDQsICJoY2FsbF9yZW1vdGVfdGxiX2ZsdXNoIiksCiAgICAgKDUsICJhcGlj X2Fzc2lzdCIpLAogICAgICg2LCAiY3Jhc2hfY3RsIiksCisgICAgKDcsICJzeW5pYyIpLAogICAg IF0pCiAKIGxpYnhsX2hkdHlwZSA9IEVudW1lcmF0aW9uKCJoZHR5cGUiLCBbCmRpZmYgLS1naXQg YS94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3N5bmljLmMgYi94ZW4vYXJjaC94ODYvaHZtL3Zp cmlkaWFuL3N5bmljLmMKaW5kZXggZmI1NjBiYzE2Mi4uZjQ1MTBkMzgyOSAxMDA2NDQKLS0tIGEv eGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi9zeW5pYy5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0v dmlyaWRpYW4vc3luaWMuYwpAQCAtMTMsNiArMTMsNyBAQAogCiAjaW5jbHVkZSA8YXNtL2FwaWMu aD4KICNpbmNsdWRlIDxhc20vaHZtL3N1cHBvcnQuaD4KKyNpbmNsdWRlIDxhc20vaHZtL3ZsYXBp Yy5oPgogCiAjaW5jbHVkZSAicHJpdmF0ZS5oIgogCkBAIC0yOCw2ICsyOSwzMiBAQCB0eXBlZGVm IHVuaW9uIF9IVl9WUF9BU1NJU1RfUEFHRQogICAgIHVpbnQ4X3QgUmVzZXJ2ZWRaQnl0ZVBhZGRp bmdbUEFHRV9TSVpFXTsKIH0gSFZfVlBfQVNTSVNUX1BBR0U7CiAKK3R5cGVkZWYgZW51bSBIVl9N RVNTQUdFX1RZUEUgeworICAgIEh2TWVzc2FnZVR5cGVOb25lLAorICAgIEh2TWVzc2FnZVRpbWVy RXhwaXJlZCA9IDB4ODAwMDAwMTAsCit9IEhWX01FU1NBR0VfVFlQRTsKKwordHlwZWRlZiBzdHJ1 Y3QgSFZfTUVTU0FHRV9GTEFHUyB7CisgICAgdWludDhfdCBNZXNzYWdlUGVuZGluZzoxOworICAg IHVpbnQ4X3QgUmVzZXJ2ZWQ6NzsKK30gSFZfTUVTU0FHRV9GTEFHUzsKKwordHlwZWRlZiBzdHJ1 Y3QgSFZfTUVTU0FHRV9IRUFERVIgeworICAgIEhWX01FU1NBR0VfVFlQRSBNZXNzYWdlVHlwZTsK KyAgICB1aW50MTZfdCBSZXNlcnZlZDE7CisgICAgSFZfTUVTU0FHRV9GTEFHUyBNZXNzYWdlRmxh Z3M7CisgICAgdWludDhfdCBQYXlsb2FkU2l6ZTsKKyAgICB1aW50NjRfdCBSZXNlcnZlZDI7Cit9 IEhWX01FU1NBR0VfSEVBREVSOworCisjZGVmaW5lIEhWX01FU1NBR0VfU0laRSAyNTYKKyNkZWZp bmUgSFZfTUVTU0FHRV9NQVhfUEFZTE9BRF9RV09SRF9DT1VOVCAzMAorCit0eXBlZGVmIHN0cnVj dCBIVl9NRVNTQUdFIHsKKyAgICBIVl9NRVNTQUdFX0hFQURFUiBIZWFkZXI7CisgICAgdWludDY0 X3QgUGF5bG9hZFtIVl9NRVNTQUdFX01BWF9QQVlMT0FEX1FXT1JEX0NPVU5UXTsKK30gSFZfTUVT U0FHRTsKKwogdm9pZCB2aXJpZGlhbl9hcGljX2Fzc2lzdF9zZXQoY29uc3Qgc3RydWN0IHZjcHUg KnYpCiB7CiAgICAgc3RydWN0IHZpcmlkaWFuX3ZjcHUgKnZ2ID0gdi0+YXJjaC5odm0udmlyaWRp YW47CkBAIC04Myw2ICsxMTAsOCBAQCBpbnQgdmlyaWRpYW5fc3luaWNfd3Jtc3Ioc3RydWN0IHZj cHUgKnYsIHVpbnQzMl90IGlkeCwgdWludDY0X3QgdmFsKQogICAgIHN0cnVjdCB2aXJpZGlhbl92 Y3B1ICp2diA9IHYtPmFyY2guaHZtLnZpcmlkaWFuOwogICAgIHN0cnVjdCBkb21haW4gKmQgPSB2 LT5kb21haW47CiAKKyAgICBBU1NFUlQodiA9PSBjdXJyZW50IHx8ICF2LT5pc19ydW5uaW5nKTsK KwogICAgIHN3aXRjaCAoIGlkeCApCiAgICAgewogICAgIGNhc2UgSFZfWDY0X01TUl9FT0k6CkBA IC0xMDcsNiArMTM2LDc2IEBAIGludCB2aXJpZGlhbl9zeW5pY193cm1zcihzdHJ1Y3QgdmNwdSAq diwgdWludDMyX3QgaWR4LCB1aW50NjRfdCB2YWwpCiAgICAgICAgICAgICB2aXJpZGlhbl9tYXBf Z3Vlc3RfcGFnZShkLCAmdnYtPnZwX2Fzc2lzdCk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2Fz ZSBIVl9YNjRfTVNSX1NDT05UUk9MOgorICAgICAgICBpZiAoICEodmlyaWRpYW5fZmVhdHVyZV9t YXNrKGQpICYgSFZNUFZfc3luaWMpICkKKyAgICAgICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQ VElPTjsKKworICAgICAgICB2di0+c2NvbnRyb2wgPSB2YWw7CisgICAgICAgIGJyZWFrOworCisg ICAgY2FzZSBIVl9YNjRfTVNSX1NWRVJTSU9OOgorICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENF UFRJT047CisKKyAgICBjYXNlIEhWX1g2NF9NU1JfU0lFRlA6CisgICAgICAgIGlmICggISh2aXJp ZGlhbl9mZWF0dXJlX21hc2soZCkgJiBIVk1QVl9zeW5pYykgKQorICAgICAgICAgICAgcmV0dXJu IFg4NkVNVUxfRVhDRVBUSU9OOworCisgICAgICAgIHZ2LT5zaWVmcCA9IHZhbDsKKyAgICAgICAg YnJlYWs7CisKKyAgICBjYXNlIEhWX1g2NF9NU1JfU0lNUDoKKyAgICAgICAgaWYgKCAhKHZpcmlk aWFuX2ZlYXR1cmVfbWFzayhkKSAmIEhWTVBWX3N5bmljKSApCisgICAgICAgICAgICByZXR1cm4g WDg2RU1VTF9FWENFUFRJT047CisKKyAgICAgICAgdmlyaWRpYW5fdW5tYXBfZ3Vlc3RfcGFnZSgm dnYtPnNpbXApOworICAgICAgICB2di0+c2ltcC5tc3IucmF3ID0gdmFsOworICAgICAgICB2aXJp ZGlhbl9kdW1wX2d1ZXN0X3BhZ2UodiwgIlNJTVAiLCAmdnYtPnNpbXApOworICAgICAgICBpZiAo IHZ2LT5zaW1wLm1zci5lbmFibGVkICkKKyAgICAgICAgICAgIHZpcmlkaWFuX21hcF9ndWVzdF9w YWdlKGQsICZ2di0+c2ltcCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBIVl9YNjRfTVNS X0VPTToKKyAgICAgICAgaWYgKCAhKHZpcmlkaWFuX2ZlYXR1cmVfbWFzayhkKSAmIEhWTVBWX3N5 bmljKSApCisgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047CisKKyAgICAgICAg dnYtPm1zZ19wZW5kaW5nID0gMDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEhWX1g2NF9N U1JfU0lOVDAgLi4uIEhWX1g2NF9NU1JfU0lOVDE1OgorICAgIHsKKyAgICAgICAgdW5zaWduZWQg aW50IHNpbnR4ID0gYXJyYXlfaW5kZXhfbm9zcGVjKGlkeCAtIEhWX1g2NF9NU1JfU0lOVDAsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUlJBWV9TSVpF KHZ2LT5zaW50KSk7CisgICAgICAgIHVuaW9uIHZpcmlkaWFuX3NpbnRfbXNyIHNpbnQ7CisgICAg ICAgIHVpbnQ4X3QgdmVjdG9yOworCisgICAgICAgIGlmICggISh2aXJpZGlhbl9mZWF0dXJlX21h c2soZCkgJiBIVk1QVl9zeW5pYykgKQorICAgICAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBU SU9OOworCisgICAgICAgIC8qIFZlY3RvcnMgbXVzdCBiZSBpbiB0aGUgcmFuZ2UgMTYtMjU1IGlu Y2x1c2l2ZSAqLworICAgICAgICBzaW50LnJhdyA9IHZhbDsKKyAgICAgICAgaWYgKCBzaW50LnZl Y3RvciA8IDE2ICkKKyAgICAgICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKKworICAg ICAgICAvKgorICAgICAgICAgKiBJbnZhbGlkYXRlIGFueSBwcmV2aW91cyBtYXBwaW5nIGJ5IHNl dHRpbmcgYW4gb3V0LW9mLXJhbmdlCisgICAgICAgICAqIGluZGV4IGJlZm9yZSBzZXR0aW5nIHRo ZSBuZXcgbWFwcGluZy4KKyAgICAgICAgICovCisgICAgICAgIHZlY3RvciA9IHZ2LT5zaW50W3Np bnR4XS52ZWN0b3I7CisgICAgICAgIHZ2LT52ZWN0b3JfdG9fc2ludHhbdmVjdG9yXSA9IEFSUkFZ X1NJWkUodnYtPnNpbnQpOworCisgICAgICAgIHZlY3RvciA9IHNpbnQudmVjdG9yOworICAgICAg ICB2di0+dmVjdG9yX3RvX3NpbnR4W3ZlY3Rvcl0gPSBzaW50eDsKKworICAgICAgICBwcmludGso WEVOTE9HX0dfSU5GTyAiJXB2OiBWSVJJRElBTiBTSU5UJXU6IHZlY3RvcjogJXhcbiIsIHYsIHNp bnR4LAorICAgICAgICAgICAgICAgdmVjdG9yKTsKKworICAgICAgICBpZiAoIHNpbnQucG9sbGlu ZyApCisgICAgICAgICAgICBfX2NsZWFyX2JpdChzaW50eCwgJnZ2LT5tc2dfcGVuZGluZyk7CisK KyAgICAgICAgdnYtPnNpbnRbc2ludHhdID0gc2ludDsKKyAgICAgICAgYnJlYWs7CisgICAgfQor CiAgICAgZGVmYXVsdDoKICAgICAgICAgZ2RwcmludGsoWEVOTE9HX0lORk8sICIlczogdW5pbXBs ZW1lbnRlZCBNU1IgJSN4ICglMDE2IlBSSXg2NCIpXG4iLAogICAgICAgICAgICAgICAgICBfX2Z1 bmNfXywgaWR4LCB2YWwpOwpAQCAtMTE4LDYgKzIxNyw5IEBAIGludCB2aXJpZGlhbl9zeW5pY193 cm1zcihzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgaWR4LCB1aW50NjRfdCB2YWwpCiAKIGludCB2 aXJpZGlhbl9zeW5pY19yZG1zcihjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgaWR4LCB1 aW50NjRfdCAqdmFsKQogeworICAgIHN0cnVjdCB2aXJpZGlhbl92Y3B1ICp2diA9IHYtPmFyY2gu aHZtLnZpcmlkaWFuOworICAgIGNvbnN0IHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47CisK ICAgICBzd2l0Y2ggKCBpZHggKQogICAgIHsKICAgICBjYXNlIEhWX1g2NF9NU1JfRU9JOgpAQCAt MTMxLDE0ICsyMzMsNjkgQEAgaW50IHZpcmlkaWFuX3N5bmljX3JkbXNyKGNvbnN0IHN0cnVjdCB2 Y3B1ICp2LCB1aW50MzJfdCBpZHgsIHVpbnQ2NF90ICp2YWwpCiAgICAgICAgICp2YWwgPSAoKHVp bnQ2NF90KWljcjIgPDwgMzIpIHwgaWNyOwogICAgICAgICBicmVhazsKICAgICB9CisKICAgICBj YXNlIEhWX1g2NF9NU1JfVFBSOgogICAgICAgICAqdmFsID0gdmxhcGljX2dldF9yZWcodmNwdV92 bGFwaWModiksIEFQSUNfVEFTS1BSSSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBIVl9Y NjRfTVNSX1ZQX0FTU0lTVF9QQUdFOgotICAgICAgICAqdmFsID0gdi0+YXJjaC5odm0udmlyaWRp YW4tPnZwX2Fzc2lzdC5tc3IucmF3OworICAgICAgICAqdmFsID0gdnYtPnZwX2Fzc2lzdC5tc3Iu cmF3OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSFZfWDY0X01TUl9TQ09OVFJPTDoKKyAg ICAgICAgaWYgKCAhKHZpcmlkaWFuX2ZlYXR1cmVfbWFzayhkKSAmIEhWTVBWX3N5bmljKSApCisg ICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047CisKKyAgICAgICAgKnZhbCA9IHZ2 LT5zY29udHJvbDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEhWX1g2NF9NU1JfU1ZFUlNJ T046CisgICAgICAgIGlmICggISh2aXJpZGlhbl9mZWF0dXJlX21hc2soZCkgJiBIVk1QVl9zeW5p YykgKQorICAgICAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOworCisgICAgICAgIC8q CisgICAgICAgICAqIFRoZSBzcGVjaWZpY2F0aW9uIHNheXMgdGhhdCB0aGUgdmVyc2lvbiBudW1i ZXIgaXMgMHgwMDAwMDAwMQorICAgICAgICAgKiBhbmQgc2hvdWxkIGJlIGluIHRoZSBsb3dlciAz Mi1iaXRzIG9mIHRoZSBNU1IsIHdoaWxlIHRoZQorICAgICAgICAgKiB1cHBlciAzMi1iaXRzIGFy ZSByZXNlcnZlZC4uLiBidXQgaXQgZG9lc24ndCBzYXkgd2hhdCB0aGV5CisgICAgICAgICAqIHNo b3VsZCBiZSBzZXQgdG8uIEFzc3VtZSBldmVyeXRoaW5nIGJ1dCB0aGUgYm90dG9tIGJpdAorICAg ICAgICAgKiBzaG91bGQgYmUgemVyby4KKyAgICAgICAgICovCisgICAgICAgICp2YWwgPSAxdWw7 CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBIVl9YNjRfTVNSX1NJRUZQOgorICAgICAgICBp ZiAoICEodmlyaWRpYW5fZmVhdHVyZV9tYXNrKGQpICYgSFZNUFZfc3luaWMpICkKKyAgICAgICAg ICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKKworICAgICAgICAqdmFsID0gdnYtPnNpZWZw OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSFZfWDY0X01TUl9TSU1QOgorICAgICAgICBp ZiAoICEodmlyaWRpYW5fZmVhdHVyZV9tYXNrKGQpICYgSFZNUFZfc3luaWMpICkKKyAgICAgICAg ICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKKworICAgICAgICAqdmFsID0gdnYtPnNpbXAu bXNyLnJhdzsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEhWX1g2NF9NU1JfRU9NOgorICAg ICAgICBpZiAoICEodmlyaWRpYW5fZmVhdHVyZV9tYXNrKGQpICYgSFZNUFZfc3luaWMpICkKKyAg ICAgICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKKworICAgICAgICAqdmFsID0gMDsK ICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEhWX1g2NF9NU1JfU0lOVDAgLi4uIEhWX1g2NF9N U1JfU0lOVDE1OgorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IHNpbnR4ID0gYXJyYXlfaW5k ZXhfbm9zcGVjKGlkeCAtIEhWX1g2NF9NU1JfU0lOVDAsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBBUlJBWV9TSVpFKHZ2LT5zaW50KSk7CisKKyAgICAg ICAgaWYgKCAhKHZpcmlkaWFuX2ZlYXR1cmVfbWFzayhkKSAmIEhWTVBWX3N5bmljKSApCisgICAg ICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047CisKKyAgICAgICAgKnZhbCA9IHZ2LT5z aW50W3NpbnR4XS5yYXc7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGRlZmF1bHQ6CiAg ICAgICAgIGdkcHJpbnRrKFhFTkxPR19JTkZPLCAiJXM6IHVuaW1wbGVtZW50ZWQgTVNSICUjeFxu IiwgX19mdW5jX18sIGlkeCk7CiAgICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKQEAg LTE0OSw2ICszMDYsMjAgQEAgaW50IHZpcmlkaWFuX3N5bmljX3JkbXNyKGNvbnN0IHN0cnVjdCB2 Y3B1ICp2LCB1aW50MzJfdCBpZHgsIHVpbnQ2NF90ICp2YWwpCiAKIGludCB2aXJpZGlhbl9zeW5p Y192Y3B1X2luaXQoY29uc3Qgc3RydWN0IHZjcHUgKnYpCiB7CisgICAgc3RydWN0IHZpcmlkaWFu X3ZjcHUgKnZ2ID0gdi0+YXJjaC5odm0udmlyaWRpYW47CisgICAgdW5zaWduZWQgaW50IGk7CisK KyAgICAvKgorICAgICAqIFRoZSBzcGVjaWZpY2F0aW9uIHNheXMgdGhhdCBhbGwgc3ludGhldGlj IGludGVycnVwdHMgbXVzdCBiZQorICAgICAqIGluaXRhbGx5IG1hc2tlZC4KKyAgICAgKi8KKyAg ICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUodnYtPnNpbnQpOyBpKysgKQorICAgICAgICB2 di0+c2ludFtpXS5tYXNrID0gMTsKKworICAgIC8qIEluaXRpYWxpemUgdGhlIG1hcHBpbmcgYXJy YXkgd2l0aCBpbnZhbGlkIHZhbHVlcyAqLworICAgIGZvciAoIGkgPSAwOyBpIDwgQVJSQVlfU0la RSh2di0+dmVjdG9yX3RvX3NpbnR4KTsgaSsrICkKKyAgICAgICAgdnYtPnZlY3Rvcl90b19zaW50 eFtpXSA9IEFSUkFZX1NJWkUodnYtPnNpbnQpOworCiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTE1 OSwxNyArMzMwLDU4IEBAIGludCB2aXJpZGlhbl9zeW5pY19kb21haW5faW5pdChjb25zdCBzdHJ1 Y3QgZG9tYWluICpkKQogCiB2b2lkIHZpcmlkaWFuX3N5bmljX3ZjcHVfZGVpbml0KGNvbnN0IHN0 cnVjdCB2Y3B1ICp2KQogewotICAgIHZpcmlkaWFuX3VubWFwX2d1ZXN0X3BhZ2UoJnYtPmFyY2gu aHZtLnZpcmlkaWFuLT52cF9hc3Npc3QpOworICAgIHN0cnVjdCB2aXJpZGlhbl92Y3B1ICp2diA9 IHYtPmFyY2guaHZtLnZpcmlkaWFuOworCisgICAgdmlyaWRpYW5fdW5tYXBfZ3Vlc3RfcGFnZSgm dnYtPnZwX2Fzc2lzdCk7CisgICAgdmlyaWRpYW5fdW5tYXBfZ3Vlc3RfcGFnZSgmdnYtPnNpbXAp OwogfQogCiB2b2lkIHZpcmlkaWFuX3N5bmljX2RvbWFpbl9kZWluaXQoY29uc3Qgc3RydWN0IGRv bWFpbiAqZCkKIHsKIH0KIAordm9pZCB2aXJpZGlhbl9zeW5pY19wb2xsX21lc3NhZ2VzKGNvbnN0 IHN0cnVjdCB2Y3B1ICp2KQoreworICAgIC8qIFRoZXJlIGFyZSBjdXJyZW50bHkgbm8gbWVzc2Fn ZSBzb3VyY2VzICovCit9CisKK2Jvb2wgdmlyaWRpYW5fc3luaWNfaXNfYXV0b19lb2lfc2ludChj b25zdCBzdHJ1Y3QgdmNwdSAqdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgdmVjdG9yKQoreworICAgIGNvbnN0IHN0cnVjdCB2aXJpZGlhbl92Y3B1 ICp2diA9IHYtPmFyY2guaHZtLnZpcmlkaWFuOworICAgIHVuc2lnbmVkIGludCBpZHggPSB2di0+ dmVjdG9yX3RvX3NpbnR4W3ZlY3Rvcl07CisgICAgdW5zaWduZWQgaW50IHNpbnR4ID0gYXJyYXlf aW5kZXhfbm9zcGVjKGlkeCwgQVJSQVlfU0laRSh2di0+c2ludCkpOworCisgICAgaWYgKCBpZHgg Pj0gQVJSQVlfU0laRSh2di0+c2ludCkgKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy ZXR1cm4gdnYtPnNpbnRbc2ludHhdLmF1dG9fZW9pOworfQorCit2b2lkIHZpcmlkaWFuX3N5bmlj X2Fja19zaW50KGNvbnN0IHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBpbnQgdmVjdG9yKQorewor ICAgIHN0cnVjdCB2aXJpZGlhbl92Y3B1ICp2diA9IHYtPmFyY2guaHZtLnZpcmlkaWFuOworICAg IHVuc2lnbmVkIGludCBpZHggPSB2di0+dmVjdG9yX3RvX3NpbnR4W3ZlY3Rvcl07CisgICAgdW5z aWduZWQgaW50IHNpbnR4ID0gYXJyYXlfaW5kZXhfbm9zcGVjKGlkeCwgQVJSQVlfU0laRSh2di0+ c2ludCkpOworCisgICAgQVNTRVJUKHYgPT0gY3VycmVudCk7CisKKyAgICBpZiAoIGlkeCA8IEFS UkFZX1NJWkUodnYtPnNpbnQpICkKKyAgICAgICAgX19jbGVhcl9iaXQoc2ludHgsICZ2di0+bXNn X3BlbmRpbmcpOworfQorCiB2b2lkIHZpcmlkaWFuX3N5bmljX3NhdmVfdmNwdV9jdHh0KGNvbnN0 IHN0cnVjdCB2Y3B1ICp2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgaHZtX3ZpcmlkaWFuX3ZjcHVfY29udGV4dCAqY3R4dCkKIHsKICAgICBjb25zdCBzdHJ1Y3Qg dmlyaWRpYW5fdmNwdSAqdnYgPSB2LT5hcmNoLmh2bS52aXJpZGlhbjsKKyAgICB1bnNpZ25lZCBp bnQgaTsKKworICAgIEJVSUxEX0JVR19PTihBUlJBWV9TSVpFKHZ2LT5zaW50KSAhPSBBUlJBWV9T SVpFKGN0eHQtPnNpbnRfbXNyKSk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUo dnYtPnNpbnQpOyBpKysgKQorICAgICAgICBjdHh0LT5zaW50X21zcltpXSA9IHZ2LT5zaW50W2ld LnJhdzsKKworICAgIGN0eHQtPnNpbXBfbXNyID0gdnYtPnNpbXAubXNyLnJhdzsKIAogICAgIGN0 eHQtPmFwaWNfYXNzaXN0X3BlbmRpbmcgPSB2di0+YXBpY19hc3Npc3RfcGVuZGluZzsKICAgICBj dHh0LT52cF9hc3Npc3RfbXNyID0gdnYtPnZwX2Fzc2lzdC5tc3IucmF3OwpAQCAtMTgwLDEyICsz OTIsMzAgQEAgdm9pZCB2aXJpZGlhbl9zeW5pY19sb2FkX3ZjcHVfY3R4dCgKIHsKICAgICBzdHJ1 Y3QgdmlyaWRpYW5fdmNwdSAqdnYgPSB2LT5hcmNoLmh2bS52aXJpZGlhbjsKICAgICBzdHJ1Y3Qg ZG9tYWluICpkID0gdi0+ZG9tYWluOworICAgIHVuc2lnbmVkIGludCBpOwogCiAgICAgdnYtPnZw X2Fzc2lzdC5tc3IucmF3ID0gY3R4dC0+dnBfYXNzaXN0X21zcjsKICAgICBpZiAoIHZ2LT52cF9h c3Npc3QubXNyLmVuYWJsZWQgKQogICAgICAgICB2aXJpZGlhbl9tYXBfZ3Vlc3RfcGFnZShkLCAm dnYtPnZwX2Fzc2lzdCk7CiAKICAgICB2di0+YXBpY19hc3Npc3RfcGVuZGluZyA9IGN0eHQtPmFw aWNfYXNzaXN0X3BlbmRpbmc7CisKKyAgICB2di0+c2ltcC5tc3IucmF3ID0gY3R4dC0+c2ltcF9t c3I7CisgICAgaWYgKCB2di0+c2ltcC5tc3IuZW5hYmxlZCApCisgICAgICAgIHZpcmlkaWFuX21h cF9ndWVzdF9wYWdlKGQsICZ2di0+c2ltcCk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZ X1NJWkUodnYtPnNpbnQpOyBpKysgKQorICAgIHsKKyAgICAgICAgdWludDhfdCB2ZWN0b3I7CisK KyAgICAgICAgdnYtPnNpbnRbaV0ucmF3ID0gY3R4dC0+c2ludF9tc3JbaV07CisKKyAgICAgICAg dmVjdG9yID0gdnYtPnNpbnRbaV0udmVjdG9yOworICAgICAgICBpZiAoIHZlY3RvciA8IDE2ICkK KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHZ2LT52ZWN0b3JfdG9fc2ludHhbdmVj dG9yXSA9IGk7CisgICAgfQogfQogCiB2b2lkIHZpcmlkaWFuX3N5bmljX3NhdmVfZG9tYWluX2N0 eHQoCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3ZpcmlkaWFuLmMgYi94 ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuL3ZpcmlkaWFuLmMKaW5kZXggMmIwNDVlZDg4Zi4uNjdk MDEyMTkyNCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi92aXJpZGlhbi5j CisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4vdmlyaWRpYW4uYwpAQCAtODksNiArODks NyBAQCB0eXBlZGVmIHVuaW9uIF9IVl9DUkFTSF9DVExfUkVHX0NPTlRFTlRTCiAKIC8qIFZpcmlk aWFuIENQVUlEIGxlYWYgMywgSHlwZXJ2aXNvciBGZWF0dXJlIEluZGljYXRpb24gKi8KICNkZWZp bmUgQ1BVSUQzRF9DUkFTSF9NU1JTICgxIDw8IDEwKQorI2RlZmluZSBDUFVJRDNEX1NJTlRfUE9M TElORyAoMSA8PCAxNykKIAogLyogVmlyaWRpYW4gQ1BVSUQgbGVhZiA0OiBJbXBsZW1lbnRhdGlv biBSZWNvbW1lbmRhdGlvbnMuICovCiAjZGVmaW5lIENQVUlENEFfSENBTExfUkVNT1RFX1RMQl9G TFVTSCAoMSA8PCAyKQpAQCAtMTc4LDYgKzE3OSw4IEBAIHZvaWQgY3B1aWRfdmlyaWRpYW5fbGVh dmVzKGNvbnN0IHN0cnVjdCB2Y3B1ICp2LCB1aW50MzJfdCBsZWFmLAogICAgICAgICAgICAgbWFz ay5BY2Nlc3NQYXJ0aXRpb25SZWZlcmVuY2VDb3VudGVyID0gMTsKICAgICAgICAgaWYgKCB2aXJp ZGlhbl9mZWF0dXJlX21hc2soZCkgJiBIVk1QVl9yZWZlcmVuY2VfdHNjICkKICAgICAgICAgICAg IG1hc2suQWNjZXNzUGFydGl0aW9uUmVmZXJlbmNlVHNjID0gMTsKKyAgICAgICAgaWYgKCB2aXJp ZGlhbl9mZWF0dXJlX21hc2soZCkgJiBIVk1QVl9zeW5pYyApCisgICAgICAgICAgICBtYXNrLkFj Y2Vzc1N5bmljUmVncyA9IDE7CiAKICAgICAgICAgdS5tYXNrID0gbWFzazsKIApAQCAtMTg2LDYg KzE4OSw4IEBAIHZvaWQgY3B1aWRfdmlyaWRpYW5fbGVhdmVzKGNvbnN0IHN0cnVjdCB2Y3B1ICp2 LCB1aW50MzJfdCBsZWFmLAogCiAgICAgICAgIGlmICggdmlyaWRpYW5fZmVhdHVyZV9tYXNrKGQp ICYgSFZNUFZfY3Jhc2hfY3RsICkKICAgICAgICAgICAgIHJlcy0+ZCA9IENQVUlEM0RfQ1JBU0hf TVNSUzsKKyAgICAgICAgaWYgKCB2aXJpZGlhbl9mZWF0dXJlX21hc2soZCkgJiBIVk1QVl9zeW5p YyApCisgICAgICAgICAgICByZXMtPmQgPSBDUFVJRDNEX1NJTlRfUE9MTElORzsKIAogICAgICAg ICBicmVhazsKICAgICB9CkBAIC0zMDYsOCArMzExLDE2IEBAIGludCBndWVzdF93cm1zcl92aXJp ZGlhbihzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgaWR4LCB1aW50NjRfdCB2YWwpCiAgICAgY2Fz ZSBIVl9YNjRfTVNSX0lDUjoKICAgICBjYXNlIEhWX1g2NF9NU1JfVFBSOgogICAgIGNhc2UgSFZf WDY0X01TUl9WUF9BU1NJU1RfUEFHRToKKyAgICBjYXNlIEhWX1g2NF9NU1JfU0NPTlRST0w6Cisg ICAgY2FzZSBIVl9YNjRfTVNSX1NWRVJTSU9OOgorICAgIGNhc2UgSFZfWDY0X01TUl9TSUVGUDoK KyAgICBjYXNlIEhWX1g2NF9NU1JfU0lNUDoKKyAgICBjYXNlIEhWX1g2NF9NU1JfRU9NOgorICAg IGNhc2UgSFZfWDY0X01TUl9TSU5UMCAuLi4gSFZfWDY0X01TUl9TSU5UMTU6CiAgICAgICAgIHJl dHVybiB2aXJpZGlhbl9zeW5pY193cm1zcih2LCBpZHgsIHZhbCk7CiAKKyAgICBjYXNlIEhWX1g2 NF9NU1JfVFNDX0ZSRVFVRU5DWToKKyAgICBjYXNlIEhWX1g2NF9NU1JfQVBJQ19GUkVRVUVOQ1k6 CiAgICAgY2FzZSBIVl9YNjRfTVNSX1JFRkVSRU5DRV9UU0M6CiAgICAgICAgIHJldHVybiB2aXJp ZGlhbl90aW1lX3dybXNyKHYsIGlkeCwgdmFsKTsKIApAQCAtMzc4LDYgKzM5MSwxMiBAQCBpbnQg Z3Vlc3RfcmRtc3JfdmlyaWRpYW4oY29uc3Qgc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IGlkeCwg dWludDY0X3QgKnZhbCkKICAgICBjYXNlIEhWX1g2NF9NU1JfSUNSOgogICAgIGNhc2UgSFZfWDY0 X01TUl9UUFI6CiAgICAgY2FzZSBIVl9YNjRfTVNSX1ZQX0FTU0lTVF9QQUdFOgorICAgIGNhc2Ug SFZfWDY0X01TUl9TQ09OVFJPTDoKKyAgICBjYXNlIEhWX1g2NF9NU1JfU1ZFUlNJT046CisgICAg Y2FzZSBIVl9YNjRfTVNSX1NJRUZQOgorICAgIGNhc2UgSFZfWDY0X01TUl9TSU1QOgorICAgIGNh c2UgSFZfWDY0X01TUl9FT006CisgICAgY2FzZSBIVl9YNjRfTVNSX1NJTlQwIC4uLiBIVl9YNjRf TVNSX1NJTlQxNToKICAgICAgICAgcmV0dXJuIHZpcmlkaWFuX3N5bmljX3JkbXNyKHYsIGlkeCwg dmFsKTsKIAogICAgIGNhc2UgSFZfWDY0X01TUl9UU0NfRlJFUVVFTkNZOgpkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L2h2bS92bGFwaWMuYyBiL3hlbi9hcmNoL3g4Ni9odm0vdmxhcGljLmMKaW5k ZXggYTFhNDNjZDc5Mi4uNWE3MzI4NThjYSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92 bGFwaWMuYworKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZsYXBpYy5jCkBAIC00NjEsMTAgKzQ2MSwx NSBAQCB2b2lkIHZsYXBpY19FT0lfc2V0KHN0cnVjdCB2bGFwaWMgKnZsYXBpYykKIAogdm9pZCB2 bGFwaWNfaGFuZGxlX0VPSShzdHJ1Y3QgdmxhcGljICp2bGFwaWMsIHU4IHZlY3RvcikKIHsKKyAg ICBzdHJ1Y3QgdmNwdSAqdiA9IHZsYXBpY192Y3B1KHZsYXBpYyk7CiAgICAgc3RydWN0IGRvbWFp biAqZCA9IHZsYXBpY19kb21haW4odmxhcGljKTsKIAorICAgIC8qIEFsbCBzeW5pYyBTSU5UeCB2 ZWN0b3JzIGFyZSBlZGdlIHRyaWdnZXJlZCAqLworCiAgICAgaWYgKCB2bGFwaWNfdGVzdF92ZWN0 b3IodmVjdG9yLCAmdmxhcGljLT5yZWdzLT5kYXRhW0FQSUNfVE1SXSkgKQogICAgICAgICB2aW9h cGljX3VwZGF0ZV9FT0koZCwgdmVjdG9yKTsKKyAgICBlbHNlIGlmICggaGFzX3ZpcmlkaWFuX3N5 bmljKHYtPmRvbWFpbikgKQorICAgICAgICB2aXJpZGlhbl9zeW5pY19hY2tfc2ludCh2LCB2ZWN0 b3IpOwogCiAgICAgaHZtX2RwY2lfbXNpX2VvaShkLCB2ZWN0b3IpOwogfQpAQCAtMTMwMSwxMyAr MTMwNiwyMyBAQCBpbnQgdmxhcGljX2hhc19wZW5kaW5nX2lycShzdHJ1Y3QgdmNwdSAqdikKICAg ICBpZiAoICF2bGFwaWNfZW5hYmxlZCh2bGFwaWMpICkKICAgICAgICAgcmV0dXJuIC0xOwogCisg ICAgLyoKKyAgICAgKiBQb2xsIHRoZSB2aXJpZGlhbiBtZXNzYWdlIHF1ZXVlcyBiZWZvcmUgY2hl Y2tpbmcgdGhlIElSUiBzaW5jZQorICAgICAqIGEgc3l0aGV0aWMgaW50ZXJydXB0IG1heSBiZSBh c3NlcnRlZCBkdXJpbmcgdGhlIHBvbGwuCisgICAgICovCisgICAgaWYgKCAhdmxhcGljLT5wb2xs ZWRfc3luaWMgJiYgaGFzX3ZpcmlkaWFuX3N5bmljKHYtPmRvbWFpbikgKQorICAgIHsKKyAgICAg ICAgdmlyaWRpYW5fc3luaWNfcG9sbF9tZXNzYWdlcyh2KTsKKyAgICAgICAgdmxhcGljLT5wb2xs ZWRfc3luaWMgPSB0cnVlOworICAgIH0KKwogICAgIGlyciA9IHZsYXBpY19maW5kX2hpZ2hlc3Rf aXJyKHZsYXBpYyk7CiAgICAgaWYgKCBpcnIgPT0gLTEgKQotICAgICAgICByZXR1cm4gLTE7Cisg ICAgICAgIGdvdG8gb3V0OwogCiAgICAgaWYgKCBodm1fZnVuY3MudmlydHVhbF9pbnRyX2RlbGl2 ZXJ5X2VuYWJsZWQgJiYKICAgICAgICAgICFuZXN0ZWRodm1fdmNwdV9pbl9ndWVzdG1vZGUodikg KQotICAgICAgICByZXR1cm4gaXJyOworICAgICAgICBnb3RvIG91dDsKIAogICAgIC8qCiAgICAg ICogSWYgQVBJQyBhc3Npc3Qgd2FzIHNldCB0aGVuIGFuIEVPSSBtYXkgaGF2ZSBiZWVuIGF2b2lk ZWQuCkBAIC0xMzI4LDkgKzEzNDMsMTMgQEAgaW50IHZsYXBpY19oYXNfcGVuZGluZ19pcnEoc3Ry dWN0IHZjcHUgKnYpCiAgICAgICAgICAoaXJyICYgMHhmMCkgPD0gKGlzciAmIDB4ZjApICkKICAg ICB7CiAgICAgICAgIHZpcmlkaWFuX2FwaWNfYXNzaXN0X2NsZWFyKHYpOwotICAgICAgICByZXR1 cm4gLTE7CisgICAgICAgIGlyciA9IC0xOwogICAgIH0KIAorb3V0OgorICAgIGlmIChpcnIgPT0g LTEpCisgICAgICAgIHZsYXBpYy0+cG9sbGVkX3N5bmljID0gZmFsc2U7CisKICAgICByZXR1cm4g aXJyOwogfQogCkBAIC0xMzYwLDggKzEzNzksMTMgQEAgaW50IHZsYXBpY19hY2tfcGVuZGluZ19p cnEoc3RydWN0IHZjcHUgKnYsIGludCB2ZWN0b3IsIGJvb2xfdCBmb3JjZV9hY2spCiAgICAgfQog CiAgZG9uZToKLSAgICB2bGFwaWNfc2V0X3ZlY3Rvcih2ZWN0b3IsICZ2bGFwaWMtPnJlZ3MtPmRh dGFbQVBJQ19JU1JdKTsKKyAgICBpZiAoICFoYXNfdmlyaWRpYW5fc3luaWModi0+ZG9tYWluKSB8 fAorICAgICAgICAgIXZpcmlkaWFuX3N5bmljX2lzX2F1dG9fZW9pX3NpbnQodiwgdmVjdG9yKSAp CisgICAgICAgIHZsYXBpY19zZXRfdmVjdG9yKHZlY3RvciwgJnZsYXBpYy0+cmVncy0+ZGF0YVtB UElDX0lTUl0pOworCiAgICAgdmxhcGljX2NsZWFyX2lycih2ZWN0b3IsIHZsYXBpYyk7CisgICAg dmxhcGljLT5wb2xsZWRfc3luaWMgPSBmYWxzZTsKKwogICAgIHJldHVybiAxOwogfQogCmRpZmYg LS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9odm0uaCBiL3hlbi9pbmNsdWRlL2FzbS14 ODYvaHZtL2h2bS5oCmluZGV4IDM3YzM1NjdhNTcuLmY2N2U5ZGJkMTIgMTAwNjQ0Ci0tLSBhL3hl bi9pbmNsdWRlL2FzbS14ODYvaHZtL2h2bS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZt L2h2bS5oCkBAIC00NzIsNiArNDcyLDkgQEAgc3RhdGljIGlubGluZSBib29sIGh2bV9nZXRfZ3Vl c3RfYm5kY2ZncyhzdHJ1Y3QgdmNwdSAqdiwgdTY0ICp2YWwpCiAjZGVmaW5lIGhhc192aXJpZGlh bl9hcGljX2Fzc2lzdChkKSBcCiAgICAgKGlzX3ZpcmlkaWFuX2RvbWFpbihkKSAmJiAodmlyaWRp YW5fZmVhdHVyZV9tYXNrKGQpICYgSFZNUFZfYXBpY19hc3Npc3QpKQogCisjZGVmaW5lIGhhc192 aXJpZGlhbl9zeW5pYyhkKSBcCisgICAgKGlzX3ZpcmlkaWFuX2RvbWFpbihkKSAmJiAodmlyaWRp YW5fZmVhdHVyZV9tYXNrKGQpICYgSFZNUFZfc3luaWMpKQorCiBzdGF0aWMgaW5saW5lIHZvaWQg aHZtX2luamVjdF9leGNlcHRpb24oCiAgICAgdW5zaWduZWQgaW50IHZlY3RvciwgdW5zaWduZWQg aW50IHR5cGUsCiAgICAgdW5zaWduZWQgaW50IGluc25fbGVuLCBpbnQgZXJyb3JfY29kZSkKZGlm ZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZpcmlkaWFuLmggYi94ZW4vaW5jbHVk ZS9hc20teDg2L2h2bS92aXJpZGlhbi5oCmluZGV4IDgxNDZlMmZjNDYuLjc0NDZiZTQ5MmIgMTAw NjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZpcmlkaWFuLmgKKysrIGIveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9odm0vdmlyaWRpYW4uaApAQCAtMjYsMTAgKzI2LDMwIEBAIHN0cnVjdCB2 aXJpZGlhbl9wYWdlCiAgICAgdm9pZCAqcHRyOwogfTsKIAordW5pb24gdmlyaWRpYW5fc2ludF9t c3IKK3sKKyAgICB1aW50NjRfdCByYXc7CisgICAgc3RydWN0CisgICAgeworICAgICAgICB1aW50 NjRfdCB2ZWN0b3I6ODsKKyAgICAgICAgdWludDY0X3QgcmVzZXJ2ZWRfcHJlc2VydmVkMTo4Owor ICAgICAgICB1aW50NjRfdCBtYXNrOjE7CisgICAgICAgIHVpbnQ2NF90IGF1dG9fZW9pOjE7Cisg ICAgICAgIHVpbnQ2NF90IHBvbGxpbmc6MTsKKyAgICAgICAgdWludDY0X3QgcmVzZXJ2ZWRfcHJl c2VydmVkMjo0NTsKKyAgICB9OworfTsKKwogc3RydWN0IHZpcmlkaWFuX3ZjcHUKIHsKICAgICBz dHJ1Y3QgdmlyaWRpYW5fcGFnZSB2cF9hc3Npc3Q7CiAgICAgYm9vbCBhcGljX2Fzc2lzdF9wZW5k aW5nOworICAgIHVpbnQ2NF90IHNjb250cm9sOworICAgIHVpbnQ2NF90IHNpZWZwOworICAgIHN0 cnVjdCB2aXJpZGlhbl9wYWdlIHNpbXA7CisgICAgdW5pb24gdmlyaWRpYW5fc2ludF9tc3Igc2lu dFsxNl07CisgICAgdWludDhfdCB2ZWN0b3JfdG9fc2ludHhbMjU2XTsKKyAgICB1bnNpZ25lZCBs b25nIG1zZ19wZW5kaW5nOwogICAgIHVpbnQ2NF90IGNyYXNoX3BhcmFtWzVdOwogfTsKIApAQCAt OTAsNiArMTEwLDExIEBAIHZvaWQgdmlyaWRpYW5fYXBpY19hc3Npc3Rfc2V0KGNvbnN0IHN0cnVj dCB2Y3B1ICp2KTsKIGJvb2wgdmlyaWRpYW5fYXBpY19hc3Npc3RfY29tcGxldGVkKGNvbnN0IHN0 cnVjdCB2Y3B1ICp2KTsKIHZvaWQgdmlyaWRpYW5fYXBpY19hc3Npc3RfY2xlYXIoY29uc3Qgc3Ry dWN0IHZjcHUgKnYpOwogCitib29sIHZpcmlkaWFuX3N5bmljX2lzX2F1dG9fZW9pX3NpbnQoY29u c3Qgc3RydWN0IHZjcHUgKnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgaW50IHZlY3Rvcik7Cit2b2lkIHZpcmlkaWFuX3N5bmljX3BvbGxfbWVzc2FnZXMo Y29uc3Qgc3RydWN0IHZjcHUgKnYpOwordm9pZCB2aXJpZGlhbl9zeW5pY19hY2tfc2ludChjb25z dCBzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IHZlY3Rvcik7CisKICNlbmRpZiAvKiBfX0FT TV9YODZfSFZNX1ZJUklESUFOX0hfXyAqLwogCiAvKgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUv YXNtLXg4Ni9odm0vdmxhcGljLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92bGFwaWMuaApp bmRleCBkZGU2NmI0ZjBmLi43YjIxOTVjNGViIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20t eDg2L2h2bS92bGFwaWMuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92bGFwaWMuaApA QCAtOTEsNiArOTEsNyBAQCBzdHJ1Y3QgdmxhcGljIHsKICAgICAgICAgdWludDMyX3QgICAgICAg ICAgICAgaWNyLCBkZXN0OwogICAgICAgICBzdHJ1Y3QgdGFza2xldCAgICAgICB0YXNrbGV0Owog ICAgIH0gaW5pdF9zaXBpOworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICBwb2xsZWRfc3lu aWM7CiB9OwogCiAvKiB2bGFwaWMncyBmcmVxdWVuY2UgaXMgMTAwIE1IeiAqLwpkaWZmIC0tZ2l0 IGEveGVuL2luY2x1ZGUvcHVibGljL2FyY2gteDg2L2h2bS9zYXZlLmggYi94ZW4vaW5jbHVkZS9w dWJsaWMvYXJjaC14ODYvaHZtL3NhdmUuaAppbmRleCA0MGJlODRlY2RhLi5lYzNlNGRmMTJjIDEw MDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC14ODYvaHZtL3NhdmUuaAorKysgYi94 ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC14ODYvaHZtL3NhdmUuaApAQCAtNjAyLDYgKzYwMiw4IEBA IHN0cnVjdCBodm1fdmlyaWRpYW5fdmNwdV9jb250ZXh0IHsKICAgICB1aW50NjRfdCB2cF9hc3Np c3RfbXNyOwogICAgIHVpbnQ4X3QgIGFwaWNfYXNzaXN0X3BlbmRpbmc7CiAgICAgdWludDhfdCAg X3BhZFs3XTsKKyAgICB1aW50NjRfdCBzaW1wX21zcjsKKyAgICB1aW50NjRfdCBzaW50X21zclsx Nl07CiB9OwogCiBERUNMQVJFX0hWTV9TQVZFX1RZUEUoVklSSURJQU5fVkNQVSwgMTcsIHN0cnVj dCBodm1fdmlyaWRpYW5fdmNwdV9jb250ZXh0KTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1 YmxpYy9odm0vcGFyYW1zLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL3BhcmFtcy5oCmluZGV4 IDcyZjYzM2VmMmQuLmU3ZTNjN2M4OTIgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9o dm0vcGFyYW1zLmgKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2h2bS9wYXJhbXMuaApAQCAtMTQ2 LDYgKzE0NiwxMCBAQAogI2RlZmluZSBfSFZNUFZfY3Jhc2hfY3RsIDYKICNkZWZpbmUgSFZNUFZf Y3Jhc2hfY3RsICgxIDw8IF9IVk1QVl9jcmFzaF9jdGwpCiAKKy8qIEVuYWJsZSBTWU5JQyBNU1Jz ICovCisjZGVmaW5lIF9IVk1QVl9zeW5pYyA3CisjZGVmaW5lIEhWTVBWX3N5bmljICgxIDw8IF9I Vk1QVl9zeW5pYykKKwogI2RlZmluZSBIVk1QVl9mZWF0dXJlX21hc2sgXAogICAgICAgICAoSFZN UFZfYmFzZV9mcmVxIHwgXAogICAgICAgICAgSFZNUFZfbm9fZnJlcSB8IFwKQEAgLTE1Myw3ICsx NTcsOCBAQAogICAgICAgICAgSFZNUFZfcmVmZXJlbmNlX3RzYyB8IFwKICAgICAgICAgIEhWTVBW X2hjYWxsX3JlbW90ZV90bGJfZmx1c2ggfCBcCiAgICAgICAgICBIVk1QVl9hcGljX2Fzc2lzdCB8 IFwKLSAgICAgICAgIEhWTVBWX2NyYXNoX2N0bCkKKyAgICAgICAgIEhWTVBWX2NyYXNoX2N0bCB8 IFwKKyAgICAgICAgIEhWTVBWX3N5bmljKQogCiAjZW5kaWYKIAotLSAKMi4yMC4xCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==