From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v2 08/19] x86/emul: Rework emulator event injection Date: Mon, 28 Nov 2016 11:13:25 +0000 Message-ID: <1480331616-6165-9-git-send-email-andrew.cooper3@citrix.com> References: <1480331616-6165-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1480331616-6165-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Jan Beulich , George Dunlap , Andrew Cooper , Tim Deegan , Paul Durrant , Jun Nakajima , Suravee Suthikulpanit List-Id: xen-devel@lists.xenproject.org VGhlIGVtdWxhdG9yIG5lZWRzIHRvIGdhaW4gYW4gdW5kZXJzdGFuZGluZyBvZiBpbnRlcnJ1cHRz IGFuZCBleGNlcHRpb25zCmdlbmVyYXRlZCBieSBpdHMgYWN0aW9ucy4KCk1vdmUgaHZtX2VtdWxh dGVfY3R4dC57ZXhuX3BlbmRpbmcsdHJhcH0gaW50byBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCBz byB0aGV5CmFyZSB2aXNpYmxlIHRvIHRoZSBlbXVsYXRvci4gIFRoaXMgcmVtb3ZlcyB0aGUgbmVl ZCBmb3IgdGhlCmluamVjdF97aHdfZXhjZXB0aW9uLHN3X2ludGVycnVwdH0oKSBob29rcywgd2hp Y2ggYXJlIGRyb3BwZWQgYW5kIHJlcGxhY2VkCndpdGggeDg2X2VtdWxfe2h3X2V4Y2VwdGlvbixz b2Z0d2FyZV9ldmVudCxyZXNldF9ldmVudH0oKSBpbnN0ZWFkLgoKRm9yIGV4Y2VwdGlvbnMgcmFp c2VkIGJ5IHg4Nl9lbXVsYXRlKCkgaXRzZWxmIChyYXRoZXIgdGhhbiBpdHMgY2FsbGJhY2tzKSwg dGhlCnNoYWRvdyBwYWdldGFibGUgYW5kIFBWIHVzZXMgb2YgeDg2X2VtdWxhdGUoKSBwcmV2aW91 c2x5IGZhaWxlZCB3aXRoClg4NkVNVUxfVU5IQU5ETEVBQkxFIGR1ZSB0byB0aGUgbGFjayBvZiBp bmplY3RfKigpIGhvb2tzLgoKVGhpcyBiZWhhdmlvdXIgaGFzIGNoYW5nZWQsIGFuZCBzdWNoIGNh c2VzIHdpbGwgbm93IHJldHVybiBYODZFTVVMX0VYQ0VQVElPTgp3aXRoIGV2ZW50X3BlbmRpbmcg c2V0LiAgVW50aWwgdGhlIGNhbGxlcnMgb2YgeDg2X2VtdWxhdGUoKSBoYXZlIGJlZW4gdXBkYXRl ZAp0byBpbmplY3QgZXZlbnRzIGJhY2sgaW50byB0aGUgZ3Vlc3QsIGRpdmVydCB0aGUgZXZlbnRf cGVuZGluZyBjYXNlIGJhY2sgaW50bwp0aGUgWDg2RU1VTF9VTkhBTkRMRUFCTEUgcGF0aCB0byBt YWludGFpbiB0aGUgc2FtZSBndWVzdC12aXNpYmxlIGJlaGF2aW91ci4KCk5vIG92ZXJhbGwgZnVu Y3Rpb25hbCBjaGFuZ2UuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29v cGVyM0BjaXRyaXguY29tPgpSZXZpZXdlZC1ieTogQm9yaXMgT3N0cm92c2t5IDxib3Jpcy5vc3Ry b3Zza3lAb3JhY2xlLmNvbT4KUmV2aWV3ZWQtYnk6IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50 ZWwuY29tPgotLS0KQ0M6IEphbiBCZXVsaWNoIDxKQmV1bGljaEBzdXNlLmNvbT4KQ0M6IFBhdWwg RHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+CkNDOiBUaW0gRGVlZ2FuIDx0aW1AeGVu Lm9yZz4KQ0M6IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAZXUuY2l0cml4LmNvbT4KQ0M6 IEp1biBOYWthamltYSA8anVuLm5ha2FqaW1hQGludGVsLmNvbT4KQ0M6IFN1cmF2ZWUgU3V0aGlr dWxwYW5pdCA8c3VyYXZlZS5zdXRoaWt1bHBhbml0QGFtZC5jb20+Cgp2MjoKICogQ2hhbmdlIHg4 Nl9lbXVsX2h3X2V4Y2VwdGlvbigpJ3MgZXJyb3JfY29kZSBwYXJhbWV0ZXIgdG8gYmVpbmcgc2ln bmVkCiAqIENsYXJpZnkgaG93IHNvZnR3YXJlIGludGVycnVwdCBpbmplY3Rpb24gaGFwcGVucy4K ICogTW9yZSBBU1NFUlQoKSdzIGFuZCBkZXNjcmlwdGlvbiBvZiBob3cgZXZlbnRfcGVuZGluZyB3 b3JrcyB3aXRob3V0IHRoZQogICBpbmplY3Rfc3dfaW50ZXJydXB0KCkgaG9vawotLS0KIHRvb2xz L3Rlc3RzL3g4Nl9lbXVsYXRvci90ZXN0X3g4Nl9lbXVsYXRvci5jIHwgIDEgKwogeGVuL2FyY2gv eDg2L2h2bS9lbXVsYXRlLmMgICAgICAgICAgICAgICAgICAgfCA5NCArKysrKysrLS0tLS0tLS0t LS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9odm0vaHZtLmMgICAgICAgICAgICAgICAgICAgICAg IHwgIDQgKy0KIHhlbi9hcmNoL3g4Ni9odm0vaW8uYyAgICAgICAgICAgICAgICAgICAgICAgIHwg IDQgKy0KIHhlbi9hcmNoL3g4Ni9odm0vdm14L3JlYWxtb2RlLmMgICAgICAgICAgICAgIHwgMTYg KystLS0KIHhlbi9hcmNoL3g4Ni9tbS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzEg KysrKysrKystCiB4ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMgICAgICAgICAgICAgICB8 IDI4ICsrKysrKystCiB4ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYyAgICAg ICB8IDEyICsrLS0KIHhlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oICAgICAg IHwgOTUgKysrKysrKysrKysrKysrKysrKysrKystLS0tLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9o dm0vZW11bGF0ZS5oICAgICAgICAgICAgfCAgMyAtCiAxMCBmaWxlcyBjaGFuZ2VkLCAxNzUgaW5z ZXJ0aW9ucygrKSwgMTEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3RzL3g4 Nl9lbXVsYXRvci90ZXN0X3g4Nl9lbXVsYXRvci5jIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9y L3Rlc3RfeDg2X2VtdWxhdG9yLmMKaW5kZXggZjI1NWZlZi4uYjU0ZmQxMSAxMDA2NDQKLS0tIGEv dG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3Rlc3RfeDg2X2VtdWxhdG9yLmMKKysrIGIvdG9vbHMv dGVzdHMveDg2X2VtdWxhdG9yL3Rlc3RfeDg2X2VtdWxhdG9yLmMKQEAgLTEsMyArMSw0IEBACisj aW5jbHVkZSA8YXNzZXJ0Lmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxsaW1pdHMu aD4KICNpbmNsdWRlIDxzdGRib29sLmg+CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2Vt dWxhdGUuYyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCmluZGV4IGJjMjU5ZWMuLjc3NDVj NWIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCisrKyBiL3hlbi9hcmNo L3g4Ni9odm0vZW11bGF0ZS5jCkBAIC01NjgsMTIgKzU2OCw5IEBAIHN0YXRpYyBpbnQgaHZtZW11 bF92aXJ0dWFsX3RvX2xpbmVhcigKICAgICAgICAgcmV0dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxF OwogCiAgICAgLyogVGhpcyBpcyBhIHNpbmdsZXRvbiBvcGVyYXRpb246IGZhaWwgaXQgd2l0aCBh biBleGNlcHRpb24uICovCi0gICAgaHZtZW11bF9jdHh0LT5leG5fcGVuZGluZyA9IDE7Ci0gICAg aHZtZW11bF9jdHh0LT50cmFwLnZlY3RvciA9Ci0gICAgICAgIChzZWcgPT0geDg2X3NlZ19zcykg PyBUUkFQX3N0YWNrX2Vycm9yIDogVFJBUF9ncF9mYXVsdDsKLSAgICBodm1lbXVsX2N0eHQtPnRy YXAudHlwZSA9IFg4Nl9FVkVOVFRZUEVfSFdfRVhDRVBUSU9OOwotICAgIGh2bWVtdWxfY3R4dC0+ dHJhcC5lcnJvcl9jb2RlID0gMDsKLSAgICBodm1lbXVsX2N0eHQtPnRyYXAuaW5zbl9sZW4gPSAw OworICAgIHg4Nl9lbXVsX2h3X2V4Y2VwdGlvbigoc2VnID09IHg4Nl9zZWdfc3MpCisgICAgICAg ICAgICAgICAgICAgICAgICAgID8gVFJBUF9zdGFja19lcnJvcgorICAgICAgICAgICAgICAgICAg ICAgICAgICA6IFRSQVBfZ3BfZmF1bHQsIDAsICZodm1lbXVsX2N0eHQtPmN0eHQpOwogICAgIHJl dHVybiBYODZFTVVMX0VYQ0VQVElPTjsKIH0KIApAQCAtMTU2Miw1OSArMTU1OSw2IEBAIGludCBo dm1lbXVsX2NwdWlkKAogICAgIHJldHVybiBYODZFTVVMX09LQVk7CiB9CiAKLXN0YXRpYyBpbnQg aHZtZW11bF9pbmplY3RfaHdfZXhjZXB0aW9uKAotICAgIHVpbnQ4X3QgdmVjdG9yLAotICAgIGlu dDMyX3QgZXJyb3JfY29kZSwKLSAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKLXsK LSAgICBzdHJ1Y3QgaHZtX2VtdWxhdGVfY3R4dCAqaHZtZW11bF9jdHh0ID0KLSAgICAgICAgY29u dGFpbmVyX29mKGN0eHQsIHN0cnVjdCBodm1fZW11bGF0ZV9jdHh0LCBjdHh0KTsKLQotICAgIGh2 bWVtdWxfY3R4dC0+ZXhuX3BlbmRpbmcgPSAxOwotICAgIGh2bWVtdWxfY3R4dC0+dHJhcC52ZWN0 b3IgPSB2ZWN0b3I7Ci0gICAgaHZtZW11bF9jdHh0LT50cmFwLnR5cGUgPSBYODZfRVZFTlRUWVBF X0hXX0VYQ0VQVElPTjsKLSAgICBodm1lbXVsX2N0eHQtPnRyYXAuZXJyb3JfY29kZSA9IGVycm9y X2NvZGU7Ci0gICAgaHZtZW11bF9jdHh0LT50cmFwLmluc25fbGVuID0gMDsKLQotICAgIHJldHVy biBYODZFTVVMX09LQVk7Ci19Ci0KLXN0YXRpYyBpbnQgaHZtZW11bF9pbmplY3Rfc3dfaW50ZXJy dXB0KAotICAgIGVudW0geDg2X3N3aW50X3R5cGUgdHlwZSwKLSAgICB1aW50OF90IHZlY3RvciwK LSAgICB1aW50OF90IGluc25fbGVuLAotICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0 KQotewotICAgIHN0cnVjdCBodm1fZW11bGF0ZV9jdHh0ICpodm1lbXVsX2N0eHQgPQotICAgICAg ICBjb250YWluZXJfb2YoY3R4dCwgc3RydWN0IGh2bV9lbXVsYXRlX2N0eHQsIGN0eHQpOwotCi0g ICAgc3dpdGNoICggdHlwZSApCi0gICAgewotICAgIGNhc2UgeDg2X3N3aW50X2ljZWJwOgotICAg ICAgICBodm1lbXVsX2N0eHQtPnRyYXAudHlwZSA9IFg4Nl9FVkVOVFRZUEVfUFJJX1NXX0VYQ0VQ VElPTjsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIHg4Nl9zd2ludF9pbnQzOgotICAgIGNh c2UgeDg2X3N3aW50X2ludG86Ci0gICAgICAgIGh2bWVtdWxfY3R4dC0+dHJhcC50eXBlID0gWDg2 X0VWRU5UVFlQRV9TV19FWENFUFRJT047Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSB4ODZf c3dpbnRfaW50OgotICAgICAgICBodm1lbXVsX2N0eHQtPnRyYXAudHlwZSA9IFg4Nl9FVkVOVFRZ UEVfU1dfSU5URVJSVVBUOwotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAg IHJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsKLSAgICB9Ci0KLSAgICBodm1lbXVsX2N0eHQt PmV4bl9wZW5kaW5nID0gMTsKLSAgICBodm1lbXVsX2N0eHQtPnRyYXAudmVjdG9yID0gdmVjdG9y OwotICAgIGh2bWVtdWxfY3R4dC0+dHJhcC5lcnJvcl9jb2RlID0gWDg2X0VWRU5UX05PX0VDOwot ICAgIGh2bWVtdWxfY3R4dC0+dHJhcC5pbnNuX2xlbiA9IGluc25fbGVuOwotCi0gICAgcmV0dXJu IFg4NkVNVUxfT0tBWTsKLX0KLQogc3RhdGljIGludCBodm1lbXVsX2dldF9mcHUoCiAgICAgdm9p ZCAoKmV4Y2VwdGlvbl9jYWxsYmFjaykodm9pZCAqLCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqKSwK ICAgICB2b2lkICpleGNlcHRpb25fY2FsbGJhY2tfYXJnLApAQCAtMTY3OCw4ICsxNjIyLDcgQEAg c3RhdGljIGludCBodm1lbXVsX2ludmxwZygKICAgICAgICAgICogaHZtZW11bF92aXJ0dWFsX3Rv X2xpbmVhcigpIHJhaXNlcyBleGNlcHRpb25zIGZvciB0eXBlL2xpbWl0CiAgICAgICAgICAqIHZp b2xhdGlvbnMsIHNvIHNxdWFzaCB0aGVtLgogICAgICAgICAgKi8KLSAgICAgICAgaHZtZW11bF9j dHh0LT5leG5fcGVuZGluZyA9IDA7Ci0gICAgICAgIGh2bWVtdWxfY3R4dC0+dHJhcCA9IChzdHJ1 Y3QgeDg2X2V2ZW50KXt9OworICAgICAgICB4ODZfZW11bF9yZXNldF9ldmVudChjdHh0KTsKICAg ICAgICAgcmMgPSBYODZFTVVMX09LQVk7CiAgICAgfQogCkBAIC0xNjk2LDcgKzE2MzksNyBAQCBz dGF0aWMgaW50IGh2bWVtdWxfdm1mdW5jKAogCiAgICAgcmMgPSBodm1fZnVuY3MuYWx0cDJtX3Zj cHVfZW11bGF0ZV92bWZ1bmMoY3R4dC0+cmVncyk7CiAgICAgaWYgKCByYyAhPSBYODZFTVVMX09L QVkgKQotICAgICAgICBodm1lbXVsX2luamVjdF9od19leGNlcHRpb24oVFJBUF9pbnZhbGlkX29w LCBYODZfRVZFTlRfTk9fRUMsIGN0eHQpOworICAgICAgICB4ODZfZW11bF9od19leGNlcHRpb24o VFJBUF9pbnZhbGlkX29wLCBYODZfRVZFTlRfTk9fRUMsIGN0eHQpOwogCiAgICAgcmV0dXJuIHJj OwogfQpAQCAtMTcyMCw4ICsxNjYzLDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB4ODZfZW11bGF0 ZV9vcHMgaHZtX2VtdWxhdGVfb3BzID0gewogICAgIC53cml0ZV9tc3IgICAgID0gaHZtZW11bF93 cml0ZV9tc3IsCiAgICAgLndiaW52ZCAgICAgICAgPSBodm1lbXVsX3diaW52ZCwKICAgICAuY3B1 aWQgICAgICAgICA9IGh2bWVtdWxfY3B1aWQsCi0gICAgLmluamVjdF9od19leGNlcHRpb24gPSBo dm1lbXVsX2luamVjdF9od19leGNlcHRpb24sCi0gICAgLmluamVjdF9zd19pbnRlcnJ1cHQgPSBo dm1lbXVsX2luamVjdF9zd19pbnRlcnJ1cHQsCiAgICAgLmdldF9mcHUgICAgICAgPSBodm1lbXVs X2dldF9mcHUsCiAgICAgLnB1dF9mcHUgICAgICAgPSBodm1lbXVsX3B1dF9mcHUsCiAgICAgLmlu dmxwZyAgICAgICAgPSBodm1lbXVsX2ludmxwZywKQEAgLTE3NDcsOCArMTY4OCw2IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3BzIGh2bV9lbXVsYXRlX29wc19ub193cml0ZSA9 IHsKICAgICAud3JpdGVfbXNyICAgICA9IGh2bWVtdWxfd3JpdGVfbXNyX2Rpc2NhcmQsCiAgICAg LndiaW52ZCAgICAgICAgPSBodm1lbXVsX3diaW52ZF9kaXNjYXJkLAogICAgIC5jcHVpZCAgICAg ICAgID0gaHZtZW11bF9jcHVpZCwKLSAgICAuaW5qZWN0X2h3X2V4Y2VwdGlvbiA9IGh2bWVtdWxf aW5qZWN0X2h3X2V4Y2VwdGlvbiwKLSAgICAuaW5qZWN0X3N3X2ludGVycnVwdCA9IGh2bWVtdWxf aW5qZWN0X3N3X2ludGVycnVwdCwKICAgICAuZ2V0X2ZwdSAgICAgICA9IGh2bWVtdWxfZ2V0X2Zw dSwKICAgICAucHV0X2ZwdSAgICAgICA9IGh2bWVtdWxfcHV0X2ZwdSwKICAgICAuaW52bHBnICAg ICAgICA9IGh2bWVtdWxfaW52bHBnLApAQCAtMTc3MSw2ICsxNzEwLDE5IEBAIHN0YXRpYyBpbnQg X2h2bV9lbXVsYXRlX29uZShzdHJ1Y3QgaHZtX2VtdWxhdGVfY3R4dCAqaHZtZW11bF9jdHh0LAog CiAgICAgcmMgPSB4ODZfZW11bGF0ZSgmaHZtZW11bF9jdHh0LT5jdHh0LCBvcHMpOwogCisgICAg LyoKKyAgICAgKiBUT0RPOiBNYWtlIHRoaXMgdHJ1ZToKKyAgICAgKgorICAgIEFTU0VSVChodm1l bXVsX2N0eHQtPmN0eHQuZXZlbnRfcGVuZGluZyA9PSAocmMgPT0gWDg2RU1VTF9FWENFUFRJT04p KTsKKyAgICAgKgorICAgICAqIFNvbWUgY29kZXBhdGhzIHN0aWxsIHJhaXNlIGV4Y2VwdGlvbnMg YmVoaW5kIHRoZSBiYWNrIG9mIHRoZQorICAgICAqIGVtdWxhdG9yLiAoaS5lLiByZXR1cm4gWDg2 RU1VTF9FWENFUFRJT04gYnV0IHdpdGhvdXQKKyAgICAgKiBldmVudF9wZW5kaW5nIGJlaW5nIHNl dCkuICBJbiB0aGUgbWVhbnRpbWUsIHVzZSBhIHNsaWdodGx5CisgICAgICogcmVsYXhlZCBjaGVj ay4uLgorICAgICAqLworICAgIGlmICggaHZtZW11bF9jdHh0LT5jdHh0LmV2ZW50X3BlbmRpbmcg KQorICAgICAgICBBU1NFUlQocmMgPT0gWDg2RU1VTF9FWENFUFRJT04pOworCiAgICAgaWYgKCBy YyA9PSBYODZFTVVMX09LQVkgJiYgdmlvLT5tbWlvX3JldHJ5ICkKICAgICAgICAgcmMgPSBYODZF TVVMX1JFVFJZOwogICAgIGlmICggcmMgIT0gWDg2RU1VTF9SRVRSWSApCkBAIC0xODY3LDggKzE4 MTksOCBAQCBpbnQgaHZtX2VtdWxhdGVfb25lX21taW8odW5zaWduZWQgbG9uZyBtZm4sIHVuc2ln bmVkIGxvbmcgZ2xhKQogICAgICAgICBodm1fZHVtcF9lbXVsYXRpb25fc3RhdGUoWEVOTE9HX0df V0FSTklORyAiTU1DRkciLCAmY3R4dCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgWDg2RU1V TF9FWENFUFRJT046Ci0gICAgICAgIGlmICggY3R4dC5leG5fcGVuZGluZyApCi0gICAgICAgICAg ICBodm1faW5qZWN0X2V2ZW50KCZjdHh0LnRyYXApOworICAgICAgICBpZiAoIGN0eHQuY3R4dC5l dmVudF9wZW5kaW5nICkKKyAgICAgICAgICAgIGh2bV9pbmplY3RfZXZlbnQoJmN0eHQuY3R4dC5l dmVudCk7CiAgICAgICAgIC8qIGZhbGx0aHJvdWdoICovCiAgICAgZGVmYXVsdDoKICAgICAgICAg aHZtX2VtdWxhdGVfd3JpdGViYWNrKCZjdHh0KTsKQEAgLTE5MjcsOCArMTg3OSw4IEBAIHZvaWQg aHZtX2VtdWxhdGVfb25lX3ZtX2V2ZW50KGVudW0gZW11bF9raW5kIGtpbmQsIHVuc2lnbmVkIGlu dCB0cmFwbnIsCiAgICAgICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKHRyYXBuciwgZXJyY29k ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgWDg2RU1VTF9FWENFUFRJT046Ci0gICAgICAg IGlmICggY3R4LmV4bl9wZW5kaW5nICkKLSAgICAgICAgICAgIGh2bV9pbmplY3RfZXZlbnQoJmN0 eC50cmFwKTsKKyAgICAgICAgaWYgKCBjdHguY3R4dC5ldmVudF9wZW5kaW5nICkKKyAgICAgICAg ICAgIGh2bV9pbmplY3RfZXZlbnQoJmN0eC5jdHh0LmV2ZW50KTsKICAgICAgICAgYnJlYWs7CiAg ICAgfQogCkBAIC0yMDAzLDggKzE5NTUsNiBAQCB2b2lkIGh2bV9lbXVsYXRlX2luaXRfcGVyX2lu c24oCiAgICAgICAgIGh2bWVtdWxfY3R4dC0+aW5zbl9idWZfYnl0ZXMgPSBpbnNuX2J5dGVzOwog ICAgICAgICBtZW1jcHkoaHZtZW11bF9jdHh0LT5pbnNuX2J1ZiwgaW5zbl9idWYsIGluc25fYnl0 ZXMpOwogICAgIH0KLQotICAgIGh2bWVtdWxfY3R4dC0+ZXhuX3BlbmRpbmcgPSAwOwogfQogCiB2 b2lkIGh2bV9lbXVsYXRlX3dyaXRlYmFjaygKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0v aHZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCmluZGV4IGI5NTA4NDIuLmVmODMxMDAgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9o dm0uYwpAQCAtNDA3Niw4ICs0MDc2LDggQEAgdm9pZCBodm1fdWRfaW50ZXJjZXB0KHN0cnVjdCBj cHVfdXNlcl9yZWdzICpyZWdzKQogICAgICAgICBodm1faW5qZWN0X2h3X2V4Y2VwdGlvbihUUkFQ X2ludmFsaWRfb3AsIFg4Nl9FVkVOVF9OT19FQyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug WDg2RU1VTF9FWENFUFRJT046Ci0gICAgICAgIGlmICggY3R4dC5leG5fcGVuZGluZyApCi0gICAg ICAgICAgICBodm1faW5qZWN0X2V2ZW50KCZjdHh0LnRyYXApOworICAgICAgICBpZiAoIGN0eHQu Y3R4dC5ldmVudF9wZW5kaW5nICkKKyAgICAgICAgICAgIGh2bV9pbmplY3RfZXZlbnQoJmN0eHQu Y3R4dC5ldmVudCk7CiAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwogICAgIGRlZmF1bHQ6CiAg ICAgICAgIGh2bV9lbXVsYXRlX3dyaXRlYmFjaygmY3R4dCk7CmRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvaHZtL2lvLmMgYi94ZW4vYXJjaC94ODYvaHZtL2lvLmMKaW5kZXggMTI3OWY2OC4uYWJi OWQ1MSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9pby5jCisrKyBiL3hlbi9hcmNoL3g4 Ni9odm0vaW8uYwpAQCAtMTAyLDggKzEwMiw4IEBAIGludCBoYW5kbGVfbW1pbyh2b2lkKQogICAg ICAgICBodm1fZHVtcF9lbXVsYXRpb25fc3RhdGUoWEVOTE9HX0dfV0FSTklORyAiTU1JTyIsICZj dHh0KTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgY2FzZSBYODZFTVVMX0VYQ0VQVElPTjoKLSAg ICAgICAgaWYgKCBjdHh0LmV4bl9wZW5kaW5nICkKLSAgICAgICAgICAgIGh2bV9pbmplY3RfZXZl bnQoJmN0eHQudHJhcCk7CisgICAgICAgIGlmICggY3R4dC5jdHh0LmV2ZW50X3BlbmRpbmcgKQor ICAgICAgICAgICAgaHZtX2luamVjdF9ldmVudCgmY3R4dC5jdHh0LmV2ZW50KTsKICAgICAgICAg YnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvaHZtL3ZteC9yZWFsbW9kZS5jIGIveGVuL2FyY2gveDg2L2h2bS92bXgvcmVhbG1vZGUu YwppbmRleCA5MDAyNjM4Li5kYzNhYjQ0IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3Zt eC9yZWFsbW9kZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3JlYWxtb2RlLmMKQEAgLTEy Miw3ICsxMjIsNyBAQCB2b2lkIHZteF9yZWFsbW9kZV9lbXVsYXRlX29uZShzdHJ1Y3QgaHZtX2Vt dWxhdGVfY3R4dCAqaHZtZW11bF9jdHh0KQogCiAgICAgaWYgKCByYyA9PSBYODZFTVVMX0VYQ0VQ VElPTiApCiAgICAgewotICAgICAgICBpZiAoICFodm1lbXVsX2N0eHQtPmV4bl9wZW5kaW5nICkK KyAgICAgICAgaWYgKCAhaHZtZW11bF9jdHh0LT5jdHh0LmV2ZW50X3BlbmRpbmcgKQogICAgICAg ICB7CiAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGludHJfaW5mbzsKIApAQCAtMTMzLDI3ICsx MzMsMjcgQEAgdm9pZCB2bXhfcmVhbG1vZGVfZW11bGF0ZV9vbmUoc3RydWN0IGh2bV9lbXVsYXRl X2N0eHQgKmh2bWVtdWxfY3R4dCkKICAgICAgICAgICAgICAgICBnZHByaW50ayhYRU5MT0dfRVJS LCAiRXhjZXB0aW9uIHBlbmRpbmcgYnV0IG5vIGluZm8uXG4iKTsKICAgICAgICAgICAgICAgICBn b3RvIGZhaWw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBodm1lbXVsX2N0eHQtPnRyYXAu dmVjdG9yID0gKHVpbnQ4X3QpaW50cl9pbmZvOwotICAgICAgICAgICAgaHZtZW11bF9jdHh0LT50 cmFwLmluc25fbGVuID0gMDsKKyAgICAgICAgICAgIGh2bWVtdWxfY3R4dC0+Y3R4dC5ldmVudC52 ZWN0b3IgPSAodWludDhfdClpbnRyX2luZm87CisgICAgICAgICAgICBodm1lbXVsX2N0eHQtPmN0 eHQuZXZlbnQuaW5zbl9sZW4gPSAwOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCB1bmxpa2Vs eShjdXJyLT5kb21haW4tPmRlYnVnZ2VyX2F0dGFjaGVkKSAmJgotICAgICAgICAgICAgICgoaHZt ZW11bF9jdHh0LT50cmFwLnZlY3RvciA9PSBUUkFQX2RlYnVnKSB8fAotICAgICAgICAgICAgICAo aHZtZW11bF9jdHh0LT50cmFwLnZlY3RvciA9PSBUUkFQX2ludDMpKSApCisgICAgICAgICAgICAg KChodm1lbXVsX2N0eHQtPmN0eHQuZXZlbnQudmVjdG9yID09IFRSQVBfZGVidWcpIHx8CisgICAg ICAgICAgICAgIChodm1lbXVsX2N0eHQtPmN0eHQuZXZlbnQudmVjdG9yID09IFRSQVBfaW50Mykp ICkKICAgICAgICAgewogICAgICAgICAgICAgZG9tYWluX3BhdXNlX2Zvcl9kZWJ1Z2dlcigpOwog ICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKCBjdXJyLT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2Ny WzBdICYgWDg2X0NSMF9QRSApCiAgICAgICAgIHsKICAgICAgICAgICAgIGdkcHJpbnRrKFhFTkxP R19FUlIsICJFeGNlcHRpb24gJTAyeCBpbiBwcm90ZWN0ZWQgbW9kZS5cbiIsCi0gICAgICAgICAg ICAgICAgICAgICBodm1lbXVsX2N0eHQtPnRyYXAudmVjdG9yKTsKKyAgICAgICAgICAgICAgICAg ICAgIGh2bWVtdWxfY3R4dC0+Y3R4dC5ldmVudC52ZWN0b3IpOwogICAgICAgICAgICAgZ290byBm YWlsOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAgICAgcmVh bG1vZGVfZGVsaXZlcl9leGNlcHRpb24oCi0gICAgICAgICAgICAgICAgaHZtZW11bF9jdHh0LT50 cmFwLnZlY3RvciwKLSAgICAgICAgICAgICAgICBodm1lbXVsX2N0eHQtPnRyYXAuaW5zbl9sZW4s CisgICAgICAgICAgICAgICAgaHZtZW11bF9jdHh0LT5jdHh0LmV2ZW50LnZlY3RvciwKKyAgICAg ICAgICAgICAgICBodm1lbXVsX2N0eHQtPmN0eHQuZXZlbnQuaW5zbl9sZW4sCiAgICAgICAgICAg ICAgICAgaHZtZW11bF9jdHh0KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni9tbS5jIGIveGVuL2FyY2gveDg2L21tLmMKaW5kZXggYjdjNzEyMi4uOGExZTdiNCAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tLmMKKysrIGIveGVuL2FyY2gveDg2L21tLmMKQEAg LTUzNzksNyArNTM3OSwyMCBAQCBpbnQgcHR3cl9kb19wYWdlX2ZhdWx0KHN0cnVjdCB2Y3B1ICp2 LCB1bnNpZ25lZCBsb25nIGFkZHIsCiAgICAgcGFnZV91bmxvY2socGFnZSk7CiAgICAgcHV0X3Bh Z2UocGFnZSk7CiAKLSAgICBpZiAoIHJjID09IFg4NkVNVUxfVU5IQU5ETEVBQkxFICkKKyAgICAv KgorICAgICAqIFRPRE86IE1ha2UgdGhpcyB0cnVlOgorICAgICAqCisgICAgQVNTRVJUKHB0d3Jf Y3R4dC5jdHh0LmV2ZW50X3BlbmRpbmcgPT0gKHJjID09IFg4NkVNVUxfRVhDRVBUSU9OKSk7Cisg ICAgICoKKyAgICAgKiBTb21lIGNvZGVwYXRocyBzdGlsbCByYWlzZSBleGNlcHRpb25zIGJlaGlu ZCB0aGUgYmFjayBvZiB0aGUKKyAgICAgKiBlbXVsYXRvci4gKGkuZS4gcmV0dXJuIFg4NkVNVUxf RVhDRVBUSU9OIGJ1dCB3aXRob3V0CisgICAgICogZXZlbnRfcGVuZGluZyBiZWluZyBzZXQpLiAg SW4gdGhlIG1lYW50aW1lLCB1c2UgYSBzbGlnaHRseQorICAgICAqIHJlbGF4ZWQgY2hlY2suLi4K KyAgICAgKi8KKyAgICBpZiAoIHB0d3JfY3R4dC5jdHh0LmV2ZW50X3BlbmRpbmcgKQorICAgICAg ICBBU1NFUlQocmMgPT0gWDg2RU1VTF9FWENFUFRJT04pOworCisgICAgaWYgKCByYyA9PSBYODZF TVVMX1VOSEFORExFQUJMRSB8fCBwdHdyX2N0eHQuY3R4dC5ldmVudF9wZW5kaW5nICkKICAgICAg ICAgZ290byBiYWlsOwogCiAgICAgcGVyZmNfaW5jcihwdHdyX2VtdWxhdGlvbnMpOwpAQCAtNTUw Myw3ICs1NTE2LDIxIEBAIGludCBtbWlvX3JvX2RvX3BhZ2VfZmF1bHQoc3RydWN0IHZjcHUgKnYs IHVuc2lnbmVkIGxvbmcgYWRkciwKICAgICBlbHNlCiAgICAgICAgIHJjID0geDg2X2VtdWxhdGUo JmN0eHQsICZtbWlvX3JvX2VtdWxhdGVfb3BzKTsKIAotICAgIHJldHVybiByYyAhPSBYODZFTVVM X1VOSEFORExFQUJMRSA/IEVYQ1JFVF9mYXVsdF9maXhlZCA6IDA7CisgICAgLyoKKyAgICAgKiBU T0RPOiBNYWtlIHRoaXMgdHJ1ZToKKyAgICAgKgorICAgIEFTU0VSVChjdHh0LmV2ZW50X3BlbmRp bmcgPT0gKHJjID09IFg4NkVNVUxfRVhDRVBUSU9OKSk7CisgICAgICoKKyAgICAgKiBTb21lIGNv ZGVwYXRocyBzdGlsbCByYWlzZSBleGNlcHRpb25zIGJlaGluZCB0aGUgYmFjayBvZiB0aGUKKyAg ICAgKiBlbXVsYXRvci4gKGkuZS4gcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OIGJ1dCB3aXRob3V0 CisgICAgICogZXZlbnRfcGVuZGluZyBiZWluZyBzZXQpLiAgSW4gdGhlIG1lYW50aW1lLCB1c2Ug YSBzbGlnaHRseQorICAgICAqIHJlbGF4ZWQgY2hlY2suLi4KKyAgICAgKi8KKyAgICBpZiAoIGN0 eHQuZXZlbnRfcGVuZGluZyApCisgICAgICAgIEFTU0VSVChyYyA9PSBYODZFTVVMX0VYQ0VQVElP Tik7CisKKyAgICByZXR1cm4gKChyYyAhPSBYODZFTVVMX1VOSEFORExFQUJMRSAmJiAhY3R4dC5l dmVudF9wZW5kaW5nKQorICAgICAgICAgICAgPyBFWENSRVRfZmF1bHRfZml4ZWQgOiAwKTsKIH0K IAogdm9pZCAqYWxsb2NfeGVuX3BhZ2V0YWJsZSh2b2lkKQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L21tL3NoYWRvdy9tdWx0aS5jIGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jCmlu ZGV4IDllZTQ4YTguLjEzZmExYmYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cv bXVsdGkuYworKysgYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMKQEAgLTMzNzQsMTEg KzMzNzQsMjMgQEAgc3RhdGljIGludCBzaF9wYWdlX2ZhdWx0KHN0cnVjdCB2Y3B1ICp2LAogICAg IHIgPSB4ODZfZW11bGF0ZSgmZW11bF9jdHh0LmN0eHQsIGVtdWxfb3BzKTsKIAogICAgIC8qCisg ICAgICogVE9ETzogTWFrZSB0aGlzIHRydWU6CisgICAgICoKKyAgICBBU1NFUlQoZW11bF9jdHh0 LmN0eHQuZXZlbnRfcGVuZGluZyA9PSAocmMgPT0gWDg2RU1VTF9FWENFUFRJT04pKTsKKyAgICAg KgorICAgICAqIFNvbWUgY29kZXBhdGhzIHN0aWxsIHJhaXNlIGV4Y2VwdGlvbnMgYmVoaW5kIHRo ZSBiYWNrIG9mIHRoZQorICAgICAqIGVtdWxhdG9yLiAoaS5lLiByZXR1cm4gWDg2RU1VTF9FWENF UFRJT04gYnV0IHdpdGhvdXQgZXZlbnRfcGVuZGluZworICAgICAqIGJlaW5nIHNldCkuICBJbiB0 aGUgbWVhbnRpbWUsIHVzZSBhIHNsaWdodGx5IHJlbGF4ZWQgY2hlY2suLi4KKyAgICAgKi8KKyAg ICBpZiAoIGVtdWxfY3R4dC5jdHh0LmV2ZW50X3BlbmRpbmcgKQorICAgICAgICBBU1NFUlQociA9 PSBYODZFTVVMX0VYQ0VQVElPTik7CisKKyAgICAvKgogICAgICAqIE5CLiBXZSBkbyBub3QgdW5z aGFkb3cgb24gWDg2RU1VTF9FWENFUFRJT04uIEl0J3Mgbm90IGNsZWFyIHRoYXQgaXQKICAgICAg KiB3b3VsZCBiZSBhIGdvb2QgdW5zaGFkb3cgaGludC4gSWYgd2UgKmRvKiBkZWNpZGUgdG8gdW5z aGFkb3ctb24tZmF1bHQKICAgICAgKiB0aGVuIGl0IG11c3QgYmUgJ2ZhaWxhYmxlJzogd2UgY2Fu bm90IHJlcXVpcmUgdGhlIHVuc2hhZG93IHRvIHN1Y2NlZWQuCiAgICAgICovCi0gICAgaWYgKCBy ID09IFg4NkVNVUxfVU5IQU5ETEVBQkxFICkKKyAgICBpZiAoIHIgPT0gWDg2RU1VTF9VTkhBTkRM RUFCTEUgfHwgZW11bF9jdHh0LmN0eHQuZXZlbnRfcGVuZGluZyApCiAgICAgewogICAgICAgICBw ZXJmY19pbmNyKHNoYWRvd19mYXVsdF9lbXVsYXRlX2ZhaWxlZCk7CiAjaWYgU0hBRE9XX09QVElN SVpBVElPTlMgJiBTSE9QVF9GQVNUX0VNVUxBVElPTgpAQCAtMzQzMyw2ICszNDQ1LDIwIEBAIHN0 YXRpYyBpbnQgc2hfcGFnZV9mYXVsdChzdHJ1Y3QgdmNwdSAqdiwKICAgICAgICAgICAgIHNoYWRv d19jb250aW51ZV9lbXVsYXRpb24oJmVtdWxfY3R4dCwgcmVncyk7CiAgICAgICAgICAgICB2LT5h cmNoLnBhZ2luZy5sYXN0X3dyaXRlX3dhc19wdCA9IDA7CiAgICAgICAgICAgICByID0geDg2X2Vt dWxhdGUoJmVtdWxfY3R4dC5jdHh0LCBlbXVsX29wcyk7CisKKyAgICAgICAgICAgIC8qCisgICAg ICAgICAgICAgKiBUT0RPOiBNYWtlIHRoaXMgdHJ1ZToKKyAgICAgICAgICAgICAqCisgICAgICAg ICAgICBBU1NFUlQoZW11bF9jdHh0LmN0eHQuZXZlbnRfcGVuZGluZyA9PSAocmMgPT0gWDg2RU1V TF9FWENFUFRJT04pKTsKKyAgICAgICAgICAgICAqCisgICAgICAgICAgICAgKiBTb21lIGNvZGVw YXRocyBzdGlsbCByYWlzZSBleGNlcHRpb25zIGJlaGluZCB0aGUgYmFjayBvZiB0aGUKKyAgICAg ICAgICAgICAqIGVtdWxhdG9yLiAoaS5lLiByZXR1cm4gWDg2RU1VTF9FWENFUFRJT04gYnV0IHdp dGhvdXQKKyAgICAgICAgICAgICAqIGV2ZW50X3BlbmRpbmcgYmVpbmcgc2V0KS4gIEluIHRoZSBt ZWFudGltZSwgdXNlIGEgc2xpZ2h0bHkKKyAgICAgICAgICAgICAqIHJlbGF4ZWQgY2hlY2suLi4K KyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKCBlbXVsX2N0eHQuY3R4dC5ldmVudF9w ZW5kaW5nICkKKyAgICAgICAgICAgICAgICBBU1NFUlQociA9PSBYODZFTVVMX0VYQ0VQVElPTik7 CisKICAgICAgICAgICAgIGlmICggciA9PSBYODZFTVVMX09LQVkgKQogICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgIGVtdWxhdGlvbl9jb3VudCsrOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUv eDg2X2VtdWxhdGUuYwppbmRleCA2YTY1M2Y5Li5mYTZmYmExIDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYworKysgYi94ZW4vYXJjaC94ODYveDg2X2Vt dWxhdGUveDg2X2VtdWxhdGUuYwpAQCAtNjgwLDkgKzY4MCw4IEBAIHN0YXRpYyBpbmxpbmUgaW50 IG1rZWModWludDhfdCBlLCBpbnQzMl90IGVjLCAuLi4pCiAKICNkZWZpbmUgZ2VuZXJhdGVfZXhj ZXB0aW9uX2lmKHAsIGUsIGVjLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog KHsgIGlmICggKHApICkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGZhaWxfaWYob3BzLT5pbmplY3RfaHdfZXhjZXB0 aW9uID09IE5VTEwpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmMgPSBvcHMt PmluamVjdF9od19leGNlcHRpb24oZSwgbWtlYyhlLCAjI2VjLCAwKSwgY3R4dCkgICAgICAgICAg XAotICAgICAgICAgICAgPyA6IFg4NkVNVUxfRVhDRVBUSU9OOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHg4Nl9lbXVsX2h3X2V4Y2VwdGlvbihlLCBt a2VjKGUsICMjZWMsIDApLCBjdHh0KTsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmMgPSBY ODZFTVVMX0VYQ0VQVElPTjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAogICAgICAgICBnb3RvIGRvbmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIH0pCkBAIC0xNjA0 LDkgKzE2MDMsNiBAQCBzdGF0aWMgaW50IGluamVjdF9zd2ludChlbnVtIHg4Nl9zd2ludF90eXBl IHR5cGUsCiB7CiAgICAgaW50IHJjLCBlcnJvcl9jb2RlLCBmYXVsdF90eXBlID0gRVhDX0dQOwog Ci0gICAgZmFpbF9pZihvcHMtPmluamVjdF9zd19pbnRlcnJ1cHQgPT0gTlVMTCk7Ci0gICAgZmFp bF9pZihvcHMtPmluamVjdF9od19leGNlcHRpb24gPT0gTlVMTCk7Ci0KICAgICAvKgogICAgICAq IFdpdGhvdXQgaGFyZHdhcmUgc3VwcG9ydCwgaW5qZWN0aW5nIHNvZnR3YXJlIGludGVycnVwdHMv ZXhjZXB0aW9ucyBpcwogICAgICAqIHByb2JsZW1hdGljLgpAQCAtMTcwMyw3ICsxNjk5LDggQEAg c3RhdGljIGludCBpbmplY3Rfc3dpbnQoZW51bSB4ODZfc3dpbnRfdHlwZSB0eXBlLAogICAgICAg ICBjdHh0LT5yZWdzLT5laXAgKz0gaW5zbl9sZW47CiAgICAgfQogCi0gICAgcmMgPSBvcHMtPmlu amVjdF9zd19pbnRlcnJ1cHQodHlwZSwgdmVjdG9yLCBpbnNuX2xlbiwgY3R4dCk7CisgICAgeDg2 X2VtdWxfc29mdHdhcmVfZXZlbnQodHlwZSwgdmVjdG9yLCBpbnNuX2xlbiwgY3R4dCk7CisgICAg cmMgPSBYODZFTVVMX09LQVk7CiAKICBkb25lOgogICAgIHJldHVybiByYzsKQEAgLTE5MTEsNiAr MTkwOCw3IEBAIHg4Nl9kZWNvZGUoCiAKICAgICAvKiBJbml0aWFsaXNlIG91dHB1dCBzdGF0ZSBp biB4ODZfZW11bGF0ZV9jdHh0ICovCiAgICAgY3R4dC0+cmV0aXJlLmJ5dGUgPSAwOworICAgIHg4 Nl9lbXVsX3Jlc2V0X2V2ZW50KGN0eHQpOwogCiAgICAgb3BfYnl0ZXMgPSBkZWZfb3BfYnl0ZXMg PSBhZF9ieXRlcyA9IGRlZl9hZF9ieXRlcyA9IGN0eHQtPmFkZHJfc2l6ZS84OwogICAgIGlmICgg b3BfYnl0ZXMgPT0gOCApCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2 X2VtdWxhdGUuaCBiL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oCmluZGV4 IGIwZjAzMDQuLjgwMTllZTEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94 ODZfZW11bGF0ZS5oCisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5o CkBAIC02Miw5ICs2MiwzMSBAQCBlbnVtIHg4Nl9zd2ludF90eXBlIHsKIAogLyogSG93IG11Y2gg aGVscCBpcyByZXF1aXJlZCB3aXRoIHNvZnR3YXJlIGV2ZW50IGluamVjdGlvbj8gKi8KIGVudW0g eDg2X3N3aW50X2VtdWxhdGlvbiB7Ci0gICAgeDg2X3N3aW50X2VtdWxhdGVfbm9uZSwgLyogSGFy ZHdhcmUgc3VwcG9ydHMgYWxsIHNvZnR3YXJlIGluamVjdGlvbiBwcm9wZXJseSAqLwotICAgIHg4 Nl9zd2ludF9lbXVsYXRlX2ljZWJwLC8qIEhlbHAgbmVlZGVkIHdpdGggYGljZWJwYCAoMHhmMSkg Ki8KLSAgICB4ODZfc3dpbnRfZW11bGF0ZV9hbGwsICAvKiBIZWxwIG5lZWRlZCB3aXRoIGFsbCBz b2Z0d2FyZSBldmVudHMgKi8KKyAgICAvKgorICAgICAqIEhhcmR3YXJlIHN1cHBvcnRzIGFsbCBz b2Z0d2FyZSBpbmplY3Rpb24gcHJvcGVybHkuICBBbGwgdHJhcHMgZXhpdCB0aGUKKyAgICAgKiBl bXVsYXRvciB3aXRoIGFuIHVubW9kaWZpZWQgJWVpcCwgYW5kIGEgc3VpdGFibGUgeDg2X2V2ZW50 IHBlbmRpbmcuCisgICAgICoKKyAgICAgKiBDYWxsZXJzIG5vdCB3aXNoaW5nIHRvIGRlYWwgd2l0 aCB0cmFwIHNlbWFudGljcyBzaG91bGQgY2hvc2UgdGhpcworICAgICAqIG9wdGlvbiwgYXMgYWxs IGNhdXNlcyBhbGwgc29mdHdhcmUgdHJhcHMgdG8gaGF2ZSBmYXVsdCBzZW1hbnRpY3MKKyAgICAg KiAoaS5lLiBubyBtb3ZlbWVudCBvZiAlZWlwKS4KKyAgICAgKi8KKyAgICB4ODZfc3dpbnRfZW11 bGF0ZV9ub25lLAorCisgICAgLyoKKyAgICAgKiBIZWxwIG5lZWRlZCB3aXRoIGBpY2VicGAgKDB4 ZjEpLiAgVGhlIGVtdWxhdG9yIHdpbGwgZW11bGF0ZSBpbmplY3Rpb24KKyAgICAgKiBvZiBgaWNl YnBgIG9ubHkuICBJZiBhbGwgY2hlY2tzIGFyZSBzdWNjZXNzZnVsLCAlZWlwIHdpbGwgYmUgbW92 ZWQKKyAgICAgKiBmb3J3YXJkcyB0byB0aGUgZW5kIG9mIHRoZSBpbnN0cnVjdGlvbiwgYW5kIGEg c3VpdGFibGUgeDg2X2V2ZW50IHdpbGwKKyAgICAgKiBiZSBwZW5kaW5nLgorICAgICAqLworICAg IHg4Nl9zd2ludF9lbXVsYXRlX2ljZWJwLAorCisgICAgLyoKKyAgICAgKiBIZWxwIG5lZWRlZCB3 aXRoIGFsbCBzb2Z0d2FyZSBldmVudHMuICBUaGUgZW11bGF0b3Igd2lsbCBlbXVsYXRlCisgICAg ICogaW5qZWN0aW9uIG9mIGFsbCBzb2Z0d2FyZSBldmVudHMuICBJZiBhbGwgY2hlY2tzIGFyZSBz dWNjZXNzZnVsLCAlZWlwCisgICAgICogd2lsbCBiZSBtb3ZlZCBmb3J3YXJkcyB0byB0aGUgZW5k IG9mIHRoZSBpbnN0cnVjdGlvbiwgYW5kIGEgc3VpdGFibGUKKyAgICAgKiB4ODZfZXZlbnQgd2ls bCBiZSBwZW5kaW5nLgorICAgICAqLworICAgIHg4Nl9zd2ludF9lbXVsYXRlX2FsbCwKIH07CiAK IC8qCkBAIC0zODYsMTkgKzQwOCw2IEBAIHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMKICAgICAgICAg dW5zaWduZWQgaW50ICplZHgsCiAgICAgICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0 KTsKIAotICAgIC8qIGluamVjdF9od19leGNlcHRpb24gKi8KLSAgICBpbnQgKCppbmplY3RfaHdf ZXhjZXB0aW9uKSgKLSAgICAgICAgdWludDhfdCB2ZWN0b3IsCi0gICAgICAgIGludDMyX3QgZXJy b3JfY29kZSwKLSAgICAgICAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpOwotCi0gICAg LyogaW5qZWN0X3N3X2ludGVycnVwdCAqLwotICAgIGludCAoKmluamVjdF9zd19pbnRlcnJ1cHQp KAotICAgICAgICBlbnVtIHg4Nl9zd2ludF90eXBlIHR5cGUsCi0gICAgICAgIHVpbnQ4X3QgdmVj dG9yLAotICAgICAgICB1aW50OF90IGluc25fbGVuLAotICAgICAgICBzdHJ1Y3QgeDg2X2VtdWxh dGVfY3R4dCAqY3R4dCk7Ci0KICAgICAvKgogICAgICAqIGdldF9mcHU6IExvYWQgZW11bGF0ZWQg ZW52aXJvbm1lbnQncyBGUFUgc3RhdGUgb250byBwcm9jZXNzb3IuCiAgICAgICogIEBleG5fY2Fs bGJhY2s6IE9uIGFueSBGUFUgb3IgU0lNRCBleGNlcHRpb24sIHBhc3MgY29udHJvbCB0bwpAQCAt NDc1LDYgKzQ4NCw5IEBAIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0CiAgICAgICAgIH0gZmxhZ3M7 CiAgICAgICAgIHVpbnQ4X3QgYnl0ZTsKICAgICB9IHJldGlyZTsKKworICAgIGJvb2wgZXZlbnRf cGVuZGluZzsKKyAgICBzdHJ1Y3QgeDg2X2V2ZW50IGV2ZW50OwogfTsKIAogLyoKQEAgLTU5Niw0 ICs2MDgsNTUgQEAgdm9pZCB4ODZfZW11bGF0ZV9mcmVlX3N0YXRlKHN0cnVjdCB4ODZfZW11bGF0 ZV9zdGF0ZSAqc3RhdGUpOwogCiAjZW5kaWYKIAorI2lmbmRlZiBBU1NFUlQKKyNkZWZpbmUgQVNT RVJUIGFzc2VydAorI2VuZGlmCisKK3N0YXRpYyBpbmxpbmUgdm9pZCB4ODZfZW11bF9od19leGNl cHRpb24oCisgICAgdW5zaWduZWQgaW50IHZlY3RvciwgaW50IGVycm9yX2NvZGUsIHN0cnVjdCB4 ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQoreworICAgIEFTU0VSVCghY3R4dC0+ZXZlbnRfcGVuZGlu Zyk7CisKKyAgICBjdHh0LT5ldmVudC52ZWN0b3IgPSB2ZWN0b3I7CisgICAgY3R4dC0+ZXZlbnQu dHlwZSA9IFg4Nl9FVkVOVFRZUEVfSFdfRVhDRVBUSU9OOworICAgIGN0eHQtPmV2ZW50LmVycm9y X2NvZGUgPSBlcnJvcl9jb2RlOworCisgICAgY3R4dC0+ZXZlbnRfcGVuZGluZyA9IHRydWU7Cit9 CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB4ODZfZW11bF9zb2Z0d2FyZV9ldmVudCgKKyAgICBlbnVt IHg4Nl9zd2ludF90eXBlIHR5cGUsIHVpbnQ4X3QgdmVjdG9yLCB1aW50OF90IGluc25fbGVuLAor ICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQoreworICAgIEFTU0VSVCghY3R4dC0+ ZXZlbnRfcGVuZGluZyk7CisKKyAgICBzd2l0Y2ggKCB0eXBlICkKKyAgICB7CisgICAgY2FzZSB4 ODZfc3dpbnRfaWNlYnA6CisgICAgICAgIGN0eHQtPmV2ZW50LnR5cGUgPSBYODZfRVZFTlRUWVBF X1BSSV9TV19FWENFUFRJT047CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSB4ODZfc3dpbnRf aW50MzoKKyAgICBjYXNlIHg4Nl9zd2ludF9pbnRvOgorICAgICAgICBjdHh0LT5ldmVudC50eXBl ID0gWDg2X0VWRU5UVFlQRV9TV19FWENFUFRJT047CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz ZSB4ODZfc3dpbnRfaW50OgorICAgICAgICBjdHh0LT5ldmVudC50eXBlID0gWDg2X0VWRU5UVFlQ RV9TV19JTlRFUlJVUFQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGN0eHQtPmV2ZW50 LnZlY3RvciA9IHZlY3RvcjsKKyAgICBjdHh0LT5ldmVudC5lcnJvcl9jb2RlID0gWDg2X0VWRU5U X05PX0VDOworICAgIGN0eHQtPmV2ZW50Lmluc25fbGVuID0gaW5zbl9sZW47CisKKyAgICBjdHh0 LT5ldmVudF9wZW5kaW5nID0gdHJ1ZTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHg4Nl9lbXVs X3Jlc2V0X2V2ZW50KHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQoreworICAgIGN0eHQt PmV2ZW50X3BlbmRpbmcgPSBmYWxzZTsKKyAgICBjdHh0LT5ldmVudCA9IChzdHJ1Y3QgeDg2X2V2 ZW50KXt9OworfQorCiAjZW5kaWYgLyogX19YODZfRU1VTEFURV9IX18gKi8KZGlmZiAtLWdpdCBh L3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2VtdWxhdGUuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYv aHZtL2VtdWxhdGUuaAppbmRleCAzYjdlYzMzLi5kNjRkODM0IDEwMDY0NAotLS0gYS94ZW4vaW5j bHVkZS9hc20teDg2L2h2bS9lbXVsYXRlLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0v ZW11bGF0ZS5oCkBAIC0yOSw5ICsyOSw2IEBAIHN0cnVjdCBodm1fZW11bGF0ZV9jdHh0IHsKICAg ICB1bnNpZ25lZCBsb25nIHNlZ19yZWdfYWNjZXNzZWQ7CiAgICAgdW5zaWduZWQgbG9uZyBzZWdf cmVnX2RpcnR5OwogCi0gICAgYm9vbF90IGV4bl9wZW5kaW5nOwotICAgIHN0cnVjdCB4ODZfZXZl bnQgdHJhcDsKLQogICAgIHVpbnQzMl90IGludHJfc2hhZG93OwogCiAgICAgYm9vbF90IHNldF9j b250ZXh0OwotLSAKMi4xLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3Jn Cmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK