From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH 08/11] x86/hvm: RFC - PROBABLY BROKEN - Defer all debugging/monitor actions to {svm, vmx}_inject_event() Date: Mon, 4 Jun 2018 14:59:12 +0100 Message-ID: <1528120755-17455-9-git-send-email-andrew.cooper3@citrix.com> References: <1528120755-17455-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: <1528120755-17455-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Kevin Tian , Tamas K Lengyel , Wei Liu , Jan Beulich , Razvan Cojocaru , Andrew Cooper , Jun Nakajima , Boris Ostrovsky , Brian Woods , Suravee Suthikulpanit , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org Q3VycmVudGx5LCB0aGVyZSBpcyBhIGxvdCBvZiBmdW5jdGlvbmFsaXR5IGluIHRoZSAjREIgaW50 ZXJjZXB0cywgYW5kIHNvbWUKcmVwZWF0ZWQgZnVuY3Rpb25hbGl0eSBpbiB0aGUgKl9pbmplY3Rf ZXZlbnQoKSBsb2dpYy4KClRoZSBnZGJzeCBjb2RlIGlzIGltcGxlbWVudGVkIGF0IGJvdGggbGV2 ZWxzIChhbGJlaXQgZGlmZmVyZW50bHkgZm9yICNCUCwKd2hpY2ggaXMgcHJlc3VtYWJseSBkdWUg dG8gdGhlIGZhY3QgdGhhdCB0aGUgb2xkIGVtdWxhdG9yIGJlaGF2aW91ciB1c2VkIHRvIGJlCnRv IG1vdmUgJXJpcCBmb3J3YXJkcyBmb3IgdHJhcHMpLCB3aGlsZSB0aGUgbW9uaXRvciBiZWhhdmlv dXIgb25seSBleGlzdHMgYXQKdGhlIGludGVyY2VwdCBsZXZlbC4KClVwZGF0aW5nIG9mICVkcjYg aXMgaW1wbGVtZW50ZWQgKGJ1Z2dpbHkpIGF0IGJvdGggbGV2ZWxzLCBidXQgaGF2aW5nIGl0IGF0 CmJvdGggbGV2ZWxzIGlzIHByb2JsZW1hdGljIHRvIGltcGxlbWVudCBjb3JyZWN0bHkuCgpSZWFy cmFuZ2UgdGhlIGxvZ2ljIHRvIGhhdmUgbm90aGluZyBpbnRlcmVzdGluZyBhdCB0aGUgaW50ZXJj ZXB0IGxldmVsLCBhbmQKZXZlcnl0aGluZyBpbXBsZW1lbnRlZCBhdCB0aGUgaW5qZWN0aW9uIGxl dmVsLiAgQW1vbmdzdCBvdGhlciB0aGluZ3MsIHRoaXMKbWVhbnMgdGhhdCB0aGUgbW9uaXRvciBz dWJzeXN0ZW0gd2lsbCBwaWNrIHVwIGRlYnVnIGFjdGlvbnMgZnJvbSBlbXVsYXRlZApldmVudHMu CgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29t PgotLS0KQ0M6IEphbiBCZXVsaWNoIDxKQmV1bGljaEBzdXNlLmNvbT4KQ0M6IFdlaSBMaXUgPHdl aS5saXUyQGNpdHJpeC5jb20+CkNDOiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4 LmNvbT4KQ0M6IEp1biBOYWthamltYSA8anVuLm5ha2FqaW1hQGludGVsLmNvbT4KQ0M6IEtldmlu IFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPgpDQzogQm9yaXMgT3N0cm92c2t5IDxib3Jpcy5v c3Ryb3Zza3lAb3JhY2xlLmNvbT4KQ0M6IFN1cmF2ZWUgU3V0aGlrdWxwYW5pdCA8c3VyYXZlZS5z dXRoaWt1bHBhbml0QGFtZC5jb20+CkNDOiBCcmlhbiBXb29kcyA8YnJpYW4ud29vZHNAYW1kLmNv bT4KQ0M6IFJhenZhbiBDb2pvY2FydSA8cmNvam9jYXJ1QGJpdGRlZmVuZGVyLmNvbT4KQ0M6IFRh bWFzIEsgTGVuZ3llbCA8dGFtYXNAdGtsZW5neWVsLmNvbT4KClRoaXMgaXMgUkZDIGJlY2F1c2Ug aXQgcHJvYmFibHkgYnJlYWtzIGludHJvc3BlY3Rpb24sIGFzIGluamVjdGlvbiByZXBsaWVzCmZy b20gdGhlIGludHJvc3BlY3Rpb24gZW5naW5lIHdpbGwgKHByb2JhYmx5LCBidXQgSSBoYXZlbid0 IGNvbmZpcm1lZCkgdHJpZ2dlcgpuZXcgbW9uaXRvciBldmVudHMuCgpGaXJzdCBvZiBhbGwsIG1v bml0b3JpbmcgZW11bGF0ZWQgZGVidWcgZXZlbnRzIGlzIGEgY2hhbmdlIGluIGJlaGF2aW91ciwK YWx0aG91Z2ggSU1PIGl0IGlzIG1vcmUgb2YgYSBidWdmaXggdGhhbiBhIG5ldyBmZWF0dXJlLiAg QWxzbywgc2ltaWxhciBjaGFuZ2VzCndpbGwgaGFwcGVuIHRvIG90aGVyIG1vbml0b3JlZCBldmVu dHMgYXMgd2UgdHJ5IHRvIHVuaWZ5IHRoZQppbnRlcmNlcHQvZW11bGF0aW9uIHBhdGhzLgoKQXMg Zm9yIHRoZSByZWN1cnNpdmUgdHJpZ2dlcmluZyBvZiBtb25pdG9yIGV2ZW50cywgSSB3YXMgY29u c2lkZXJpbmcgZXh0ZW5kaW5nCnRoZSBtb25pdG9yIGluZnJhc3RydWN0dXJlIHRvIGhhdmUgYSAi aW4gbW9uaXRvciByZXBseSIgYm9vbGVhbiB3aGljaCBjYXVzZXMKaHZtX21vbml0b3JfZGVidWco KSB0byBpZ25vcmUgdGhlIHJlY3Vyc2l2ZSByZXF1ZXN0LgoKRG9lcyB0aGlzIHBsYW4gc291bmQg b2ssIG9yIGhhdmUgSSBtaXNzZWQgc29tZXRoaW5nIG1vcmUgc3VidGxlIHdpdGggbW9uaXRvcgpo YW5kbGluZz8KLS0tCiB4ZW4vYXJjaC94ODYvaHZtL3N2bS9zdm0uYyB8IDEyNyArKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9odm0vdm14 L3ZteC5jIHwgMTAyICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxl cyBjaGFuZ2VkLCAxMTAgaW5zZXJ0aW9ucygrKSwgMTE5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5jIGIveGVuL2FyY2gveDg2L2h2bS9zdm0vc3Zt LmMKaW5kZXggYzA2YmQ2OC4uZGY1ZjllZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9z dm0vc3ZtLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMKQEAgLTE0MzcsMTkgKzE0 MzcsNDkgQEAgc3RhdGljIHZvaWQgc3ZtX2luamVjdF9ldmVudChjb25zdCBzdHJ1Y3QgeDg2X2V2 ZW50ICpldmVudCkKICAgICBzd2l0Y2ggKCBfZXZlbnQudmVjdG9yIHwgLShfZXZlbnQudHlwZSA9 PSBYODZfRVZFTlRUWVBFX1NXX0lOVEVSUlVQVCkgKQogICAgIHsKICAgICBjYXNlIFRSQVBfZGVi dWc6Ci0gICAgICAgIGlmICggcmVncy0+ZWZsYWdzICYgWDg2X0VGTEFHU19URiApCi0gICAgICAg IHsKLSAgICAgICAgICAgIF9fcmVzdG9yZV9kZWJ1Z19yZWdpc3RlcnModm1jYiwgY3Vycik7Ci0g ICAgICAgICAgICB2bWNiX3NldF9kcjYodm1jYiwgdm1jYl9nZXRfZHI2KHZtY2IpIHwgRFJfU1RF UCk7Ci0gICAgICAgIH0KKyAgICAgICAgLyoKKyAgICAgICAgICogT24gQU1EIGhhcmR3YXJlLCBh ICNEQiBleGNlcHRpb246CisgICAgICAgICAqICAxKSBNZXJnZXMgbmV3IHN0YXR1cyBiaXRzIGlu dG8gJWRyNgorICAgICAgICAgKiAgMikgQ2xlYXJzICVkcjcuZ2QgYW5kIE1TUl9ERUJVR0NUTC57 TEJSLEJURn0KKyAgICAgICAgICoKKyAgICAgICAgICogSXRlbSAxIGlzIGRvbmUgYnkgaGFyZHdh cmUgYmVmb3JlIGEgI0RCIGludGVyY2VwdGVkIHZtZXhpdCwgYnV0IHdlCisgICAgICAgICAqIG1h eSBlbmQgdXAgaGVyZSBmcm9tIGVtdWxhdGlvbiBzbyBoYXZlIHRvIHJlcGVhdCBpdCBvdXJzZWx2 ZXMuCisgICAgICAgICAqIEl0ZW0gMiBpcyBkb25lIGJ5IGhhcmR3YXJlIHdoZW4gaW5qZWN0aW5n IGEgI0RCIGV4Y2VwdGlvbi4KKyAgICAgICAgICovCisgICAgICAgIF9fcmVzdG9yZV9kZWJ1Z19y ZWdpc3RlcnModm1jYiwgY3Vycik7CisgICAgICAgIHZtY2Jfc2V0X2RyNih2bWNiLCB2bWNiX2dl dF9kcjYodm1jYikgfCBldmVudC0+cGVuZGluZ19kYmcpOworCiAgICAgICAgIC8qIGZhbGwgdGhy b3VnaCAqLwogICAgIGNhc2UgVFJBUF9pbnQzOgogICAgICAgICBpZiAoIGN1cnItPmRvbWFpbi0+ ZGVidWdnZXJfYXR0YWNoZWQgKQogICAgICAgICB7CiAgICAgICAgICAgICAvKiBEZWJ1Zy9JbnQz OiBUcmFwIHRvIGRlYnVnZ2VyLiAqLworICAgICAgICAgICAgaWYgKCBfZXZlbnQudmVjdG9yID09 IFRSQVBfaW50MyApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLyogTi5CLiBDYW4n dCB1c2UgX191cGRhdGVfZ3Vlc3RfZWlwKCkgZm9yIHJpc2sgb2YgcmVjdXNpb24uICovCisgICAg ICAgICAgICAgICAgcmVncy0+cmlwICs9IF9ldmVudC5pbnNuX2xlbjsKKyAgICAgICAgICAgICAg ICByZWdzLT5lZmxhZ3MgJj0gflg4Nl9FRkxBR1NfUkY7CisgICAgICAgICAgICAgICAgY3Vyci0+ YXJjaC5nZGJzeF92Y3B1X2V2ZW50ID0gVFJBUF9pbnQzOworICAgICAgICAgICAgfQorCiAgICAg ICAgICAgICBkb21haW5fcGF1c2VfZm9yX2RlYnVnZ2VyKCk7CiAgICAgICAgICAgICByZXR1cm47 CiAgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgcmMg PSBodm1fbW9uaXRvcl9kZWJ1ZyhyZWdzLT5yaXAsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBfZXZlbnQudmVjdG9yID09IFRSQVBfZGVidWcKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgID8gSFZNX01PTklUT1JfREVCVUdfRVhDRVBUSU9OCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEhWTV9NT05JVE9SX1NPRlRX QVJFX0JSRUFLUE9JTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf ZXZlbnQudHlwZSwgX2V2ZW50Lmluc25fbGVuKTsKKyAgICAgICAgICAgIGlmICggcmMgPCAwICkK KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBncHJpbnRrKFhFTkxPR19FUlIsICJNb25p dG9yIGRlYnVnIGVycm9yICVkXG4iLCByYyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN2bV9j cmFzaF9vcl9mYXVsdChjdXJyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICggcmMg KQorICAgICAgICAgICAgICAgIHJldHVybjsgLyogVkNQVSBwYXVzZWQuICBXYWl0IGZvciBtb25p dG9yLiAqLworICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUUkFQX3BhZ2Vf ZmF1bHQ6CkBAIC0yNzc1LDY3ICsyODA1LDQ2IEBAIHZvaWQgc3ZtX3ZtZXhpdF9oYW5kbGVyKHN0 cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogCiAgICAgY2FzZSBWTUVYSVRfSUNFQlA6CiAgICAg Y2FzZSBWTUVYSVRfRVhDRVBUSU9OX0RCOgotICAgICAgICBpZiAoICF2LT5kb21haW4tPmRlYnVn Z2VyX2F0dGFjaGVkICkKKyAgICBjYXNlIFZNRVhJVF9FWENFUFRJT05fQlA6CisgICAgeworICAg ICAgICB1bnNpZ25lZCBpbnQgdmVjLCB0eXBlLCBsZW4sIGV4dHJhOworCisgICAgICAgIHN3aXRj aCAoIGV4aXRfcmVhc29uICkKICAgICAgICAgewotICAgICAgICAgICAgaW50IHJjOwotICAgICAg ICAgICAgdW5zaWduZWQgaW50IHRyYXBfdHlwZTsKKyAgICAgICAgY2FzZSBWTUVYSVRfSUNFQlA6 CisgICAgICAgICAgICB2ZWMgICA9IFRSQVBfZGVidWc7CisgICAgICAgICAgICB0eXBlICA9IFg4 Nl9FVkVOVFRZUEVfUFJJX1NXX0VYQ0VQVElPTjsKKyAgICAgICAgICAgIGxlbiAgID0gX19nZXRf aW5zdHJ1Y3Rpb25fbGVuZ3RoKHYsIElOU1RSX0lDRUJQKTsKKyAgICAgICAgICAgIGV4dHJhID0g MDsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBpZiAoIGxpa2VseShleGl0X3Jl YXNvbiAhPSBWTUVYSVRfSUNFQlApICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0 cmFwX3R5cGUgPSBYODZfRVZFTlRUWVBFX0hXX0VYQ0VQVElPTjsKLSAgICAgICAgICAgICAgICBp bnN0X2xlbiA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg ICB7Ci0gICAgICAgICAgICAgICAgdHJhcF90eXBlID0gWDg2X0VWRU5UVFlQRV9QUklfU1dfRVhD RVBUSU9OOwotICAgICAgICAgICAgICAgIGluc3RfbGVuID0gX19nZXRfaW5zdHJ1Y3Rpb25fbGVu Z3RoKHYsIElOU1RSX0lDRUJQKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgY2FzZSBWTUVYSVRf RVhDRVBUSU9OX0RCOgorICAgICAgICAgICAgdmVjICAgPSBUUkFQX2RlYnVnOworICAgICAgICAg ICAgdHlwZSAgPSBYODZfRVZFTlRUWVBFX0hXX0VYQ0VQVElPTjsKKyAgICAgICAgICAgIGxlbiAg ID0gMDsKKyAgICAgICAgICAgIC8qICNEQiAtIEhhcmR3YXJlIGhhcyBhbHJlYWR5IHVwZGF0ZWQg JWRyNiBmb3IgdXMuICovCisgICAgICAgICAgICBleHRyYSA9IHZtY2JfZ2V0X2RyNih2bWNiKSBe IFg4Nl9EUjZfREVGQVVMVDsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICByYyA9 IGh2bV9tb25pdG9yX2RlYnVnKHJlZ3MtPnJpcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSFZNX01PTklUT1JfREVCVUdfRVhDRVBUSU9OLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0cmFwX3R5cGUsIGluc3RfbGVuKTsKLSAgICAgICAgICAgIGlmICgg cmMgPCAwICkKLSAgICAgICAgICAgICAgICBnb3RvIHVuZXhwZWN0ZWRfZXhpdF90eXBlOwotICAg ICAgICAgICAgaWYgKCAhcmMgKQotICAgICAgICAgICAgICAgIGh2bV9pbmplY3RfZXhjZXB0aW9u KFRSQVBfZGVidWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhcF90 eXBlLCBpbnN0X2xlbiwgWDg2X0VWRU5UX05PX0VDLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGV4aXRfcmVhc29uID09IFZNRVhJVF9JQ0VCUCA/IDAgOgotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICNEQiAtIEhhcmR3YXJlIGFscmVhZHkgdXBk YXRlZCBkcjYuICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm1jYl9n ZXRfZHI2KHZtY2IpIF4gWDg2X0RSNl9ERUZBVUxUKTsKLSAgICAgICAgfQotICAgICAgICBlbHNl Ci0gICAgICAgICAgICBkb21haW5fcGF1c2VfZm9yX2RlYnVnZ2VyKCk7Ci0gICAgICAgIGJyZWFr OworICAgICAgICBjYXNlIFZNRVhJVF9FWENFUFRJT05fQlA6CisgICAgICAgICAgICB2ZWMgICA9 IFRSQVBfaW50MzsKKyAgICAgICAgICAgIHR5cGUgID0gWDg2X0VWRU5UVFlQRV9TV19FWENFUFRJ T047CisgICAgICAgICAgICBsZW4gICA9IF9fZ2V0X2luc3RydWN0aW9uX2xlbmd0aCh2LCBJTlNU Ul9JTlQzKTsKKyAgICAgICAgICAgIGV4dHJhID0gMDsgLyogTi9BICovCisgICAgICAgICAgICBi cmVhazsKIAotICAgIGNhc2UgVk1FWElUX0VYQ0VQVElPTl9CUDoKLSAgICAgICAgaW5zdF9sZW4g PSBfX2dldF9pbnN0cnVjdGlvbl9sZW5ndGgodiwgSU5TVFJfSU5UMyk7CisgICAgICAgIGRlZmF1 bHQ6CisgICAgICAgICAgICBBU1NFUlRfVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGdvdG8g dW5leHBlY3RlZF9leGl0X3R5cGU7CisgICAgICAgIH0KIAotICAgICAgICBpZiAoIGluc3RfbGVu ID09IDAgKQotICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvKiBfX2dldF9pbnN0cnVjdGlv bl9sZW5ndGgoKSBmYWlsdXJlLiAgI0dQIHF1ZXVlZCB1cC4gKi8KKyAgICAgICAgaWYgKCB0eXBl ID49IFg4Nl9FVkVOVFRZUEVfU1dfSU5URVJSVVBUICYmICFsZW4gKQorICAgICAgICAgICAgYnJl YWs7CiAKLSAgICAgICAgaWYgKCB2LT5kb21haW4tPmRlYnVnZ2VyX2F0dGFjaGVkICkKLSAgICAg ICAgewotICAgICAgICAgICAgLyogQU1EIFZvbDIsIDE1LjExOiBJTlQzLCBJTlRPLCBCT1VORCBp bnRlcmNlcHRzIGRvIG5vdCB1cGRhdGUgUklQLiAqLwotICAgICAgICAgICAgX191cGRhdGVfZ3Vl c3RfZWlwKHJlZ3MsIGluc3RfbGVuKTsKLSAgICAgICAgICAgIGN1cnJlbnQtPmFyY2guZ2Ric3hf dmNwdV9ldmVudCA9IFRSQVBfaW50MzsKLSAgICAgICAgICAgIGRvbWFpbl9wYXVzZV9mb3JfZGVi dWdnZXIoKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAg aW50IHJjOwotCi0gICAgICAgICAgIHJjID0gaHZtX21vbml0b3JfZGVidWcocmVncy0+cmlwLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhWTV9NT05JVE9SX1NPRlRXQVJFX0JS RUFLUE9JTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWDg2X0VWRU5UVFlQ RV9TV19FWENFUFRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdF9s ZW4pOwotICAgICAgICAgICBpZiAoIHJjIDwgMCApCi0gICAgICAgICAgICAgICBnb3RvIHVuZXhw ZWN0ZWRfZXhpdF90eXBlOwotICAgICAgICAgICBpZiAoICFyYyApCi0gICAgICAgICAgICAgICBo dm1faW5qZWN0X2V4Y2VwdGlvbihUUkFQX2ludDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBYODZfRVZFTlRUWVBFX1NXX0VYQ0VQVElPTiwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGluc3RfbGVuLCBYODZfRVZFTlRfTk9fRUMsIDAgLyogTi9BICov KTsKLSAgICAgICAgfQorICAgICAgICBodm1faW5qZWN0X2V4Y2VwdGlvbih2ZWMsIHR5cGUsIGxl biwgWDg2X0VWRU5UX05PX0VDLCBleHRyYSk7CiAgICAgICAgIGJyZWFrOworICAgIH0KIAogICAg IGNhc2UgVk1FWElUX0VYQ0VQVElPTl9OTToKICAgICAgICAgc3ZtX2ZwdV9kaXJ0eV9pbnRlcmNl cHQoKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jIGIveGVuL2FyY2gv eDg2L2h2bS92bXgvdm14LmMKaW5kZXggMzljOWRkYy4uZjU5ZWY4OCAxMDA2NDQKLS0tIGEveGVu L2FyY2gveDg2L2h2bS92bXgvdm14LmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMK QEAgLTE3NzgsMTUgKzE3NzgsMjEgQEAgc3RhdGljIHZvaWQgdm14X2luamVjdF9ldmVudChjb25z dCBzdHJ1Y3QgeDg2X2V2ZW50ICpldmVudCkKICAgICB1bnNpZ25lZCBsb25nIGludHJfaW5mbzsK ICAgICBzdHJ1Y3QgdmNwdSAqY3VyciA9IGN1cnJlbnQ7CiAgICAgc3RydWN0IHg4Nl9ldmVudCBf ZXZlbnQgPSAqZXZlbnQ7CisgICAgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MgPSBndWVzdF9j cHVfdXNlcl9yZWdzKCk7CiAKICAgICBzd2l0Y2ggKCBfZXZlbnQudmVjdG9yIHwgLShfZXZlbnQu dHlwZSA9PSBYODZfRVZFTlRUWVBFX1NXX0lOVEVSUlVQVCkgKQogICAgIHsKICAgICBjYXNlIFRS QVBfZGVidWc6Ci0gICAgICAgIGlmICggZ3Vlc3RfY3B1X3VzZXJfcmVncygpLT5lZmxhZ3MgJiBY ODZfRUZMQUdTX1RGICkKLSAgICAgICAgewotICAgICAgICAgICAgX19yZXN0b3JlX2RlYnVnX3Jl Z2lzdGVycyhjdXJyKTsKLSAgICAgICAgICAgIHdyaXRlX2RlYnVncmVnKDYsIHJlYWRfZGVidWdy ZWcoNikgfCBEUl9TVEVQKTsKLSAgICAgICAgfQorICAgICAgICAvKgorICAgICAgICAgKiBPbiBJ bnRlbCBoYXJkd2FyZSwgYSAjREIgZXhjZXB0aW9uOgorICAgICAgICAgKiAgMSkgTWVyZ2VzIG5l dyBzdGF0dXMgYml0cyBpbnRvICVkcjYKKyAgICAgICAgICogIDIpIENsZWFycyAlZHI3LmdkIGFu ZCBNU1JfREVCVUdDVEwuTEJSCisgICAgICAgICAqCisgICAgICAgICAqIEFsbCBhY3Rpb25zIGFy ZSBsZWZ0IHVwIHRvIHRoZSBoeXBlcnZpc29yIHRvIHBlcmZvcm0uCisgICAgICAgICAqLworICAg ICAgICBfX3Jlc3RvcmVfZGVidWdfcmVnaXN0ZXJzKGN1cnIpOworICAgICAgICB3cml0ZV9kZWJ1 Z3JlZyg2LCByZWFkX2RlYnVncmVnKDYpIHwgZXZlbnQtPnBlbmRpbmdfZGJnKTsKKwogICAgICAg ICBpZiAoICFuZXN0ZWRodm1fdmNwdV9pbl9ndWVzdG1vZGUoY3VycikgfHwKICAgICAgICAgICAg ICAhbnZteF9pbnRlcmNlcHRzX2V4Y2VwdGlvbihjdXJyLCBUUkFQX2RlYnVnLCBfZXZlbnQuZXJy b3JfY29kZSkgKQogICAgICAgICB7CkBAIC0xNzk3LDE2ICsxODAzLDM5IEBAIHN0YXRpYyB2b2lk IHZteF9pbmplY3RfZXZlbnQoY29uc3Qgc3RydWN0IHg4Nl9ldmVudCAqZXZlbnQpCiAgICAgICAg ICAgICBfX3ZtcmVhZChHVUVTVF9JQTMyX0RFQlVHQ1RMLCAmdmFsKTsKICAgICAgICAgICAgIF9f dm13cml0ZShHVUVTVF9JQTMyX0RFQlVHQ1RMLCB2YWwgJiB+SUEzMl9ERUJVR0NUTE1TUl9MQlIp OwogICAgICAgICB9Ci0gICAgICAgIGlmICggY3B1X2hhc19tb25pdG9yX3RyYXBfZmxhZyApCi0g ICAgICAgICAgICBicmVhazsKKwogICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KICAgICBjYXNl IFRSQVBfaW50MzoKICAgICAgICAgaWYgKCBjdXJyLT5kb21haW4tPmRlYnVnZ2VyX2F0dGFjaGVk ICkKICAgICAgICAgewogICAgICAgICAgICAgLyogRGVidWcvSW50MzogVHJhcCB0byBkZWJ1Z2dl ci4gKi8KKyAgICAgICAgICAgIGlmICggX2V2ZW50LnZlY3RvciA9PSBUUkFQX2ludDMgKQorICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgIC8qIE4uQi4gQ2FuJ3QgdXNlIF9fdXBkYXRlX2d1 ZXN0X2VpcCgpIGZvciByaXNrIG9mIHJlY3VzaW9uLiAqLworICAgICAgICAgICAgICAgIHJlZ3Mt PnJpcCArPSBfZXZlbnQuaW5zbl9sZW47CisgICAgICAgICAgICAgICAgcmVncy0+ZWZsYWdzICY9 IH5YODZfRUZMQUdTX1JGOworICAgICAgICAgICAgICAgIGN1cnItPmFyY2guZ2Ric3hfdmNwdV9l dmVudCA9IFRSQVBfaW50MzsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgZG9tYWluX3Bh dXNlX2Zvcl9kZWJ1Z2dlcigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAg ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgaW50IHJjID0gaHZtX21vbml0b3JfZGVi dWcocmVncy0+cmlwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2V2 ZW50LnZlY3RvciA9PSBUUkFQX2RlYnVnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA/IEhWTV9NT05JVE9SX0RFQlVHX0VYQ0VQVElPTgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOiBIVk1fTU9OSVRPUl9TT0ZUV0FSRV9CUkVBS1BPSU5ULAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2V2ZW50LnR5cGUsIF9ldmVu dC5pbnNuX2xlbik7CisgICAgICAgICAgICBpZiAoIHJjIDwgMCApCisgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLCAiTW9uaXRvciBkZWJ1ZyBlcnJvciAl ZFxuIiwgcmMpOworICAgICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChjdXJyLT5kb21haW4pOwor ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgg cmMgKQorICAgICAgICAgICAgICAgIHJldHVybjsgLyogVkNQVSBwYXVzZWQuICBXYWl0IGZvciBt b25pdG9yLiAqLworICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUUkFQX3Bh Z2VfZmF1bHQ6CkBAIC0zNjkzLDYxICszNzIyLDE3IEBAIHZvaWQgdm14X3ZtZXhpdF9oYW5kbGVy KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgICAgICBzd2l0Y2ggKCB2ZWN0b3IgKQog ICAgICAgICB7CiAgICAgICAgIGNhc2UgVFJBUF9kZWJ1ZzoKLSAgICAgICAgICAgIC8qCi0gICAg ICAgICAgICAgKiBVcGRhdGVzIERSNiB3aGVyZSBkZWJ1Z2dlciBjYW4gcGVlayAoU2VlIDNCIDIz LjIuMSwKLSAgICAgICAgICAgICAqIFRhYmxlIDIzLTEsICJFeGl0IFF1YWxpZmljYXRpb24gZm9y IERlYnVnIEV4Y2VwdGlvbnMiKS4KLSAgICAgICAgICAgICAqLwogICAgICAgICAgICAgX192bXJl YWQoRVhJVF9RVUFMSUZJQ0FUSU9OLCAmZXhpdF9xdWFsaWZpY2F0aW9uKTsKICAgICAgICAgICAg IEhWTVRSQUNFXzFEKFRSQVBfREVCVUcsIGV4aXRfcXVhbGlmaWNhdGlvbik7Ci0gICAgICAgICAg ICBfX3Jlc3RvcmVfZGVidWdfcmVnaXN0ZXJzKHYpOwotICAgICAgICAgICAgd3JpdGVfZGVidWdy ZWcoNiwgZXhpdF9xdWFsaWZpY2F0aW9uIHwgRFJfU1RBVFVTX1JFU0VSVkVEX09ORSk7Ci0gICAg ICAgICAgICBpZiAoICF2LT5kb21haW4tPmRlYnVnZ2VyX2F0dGFjaGVkICkKLSAgICAgICAgICAg IHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGluc25fbGVuID0gMDsKLSAgICAgICAg ICAgICAgICBpbnQgcmM7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB0cmFwX3R5cGUg PSBNQVNLX0VYVFIoaW50cl9pbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIElOVFJfSU5GT19JTlRSX1RZUEVfTUFTSyk7Ci0KLSAgICAgICAg ICAgICAgICBpZiAoIHRyYXBfdHlwZSA+PSBYODZfRVZFTlRUWVBFX1NXX0lOVEVSUlVQVCApCi0g ICAgICAgICAgICAgICAgICAgIF9fdm1yZWFkKFZNX0VYSVRfSU5TVFJVQ1RJT05fTEVOLCAmaW5z bl9sZW4pOwotCi0gICAgICAgICAgICAgICAgcmMgPSBodm1fbW9uaXRvcl9kZWJ1ZyhyZWdzLT5y aXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVk1fTU9OSVRPUl9E RUJVR19FWENFUFRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 cmFwX3R5cGUsIGluc25fbGVuKTsKLQotICAgICAgICAgICAgICAgIGlmICggcmMgPCAwICkKLSAg ICAgICAgICAgICAgICAgICAgZ290byBleGl0X2FuZF9jcmFzaDsKLSAgICAgICAgICAgICAgICBp ZiAoICFyYyApCi0gICAgICAgICAgICAgICAgICAgIHZteF9wcm9wYWdhdGVfaW50cihpbnRyX2lu Zm8sIGV4aXRfcXVhbGlmaWNhdGlvbik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNl Ci0gICAgICAgICAgICAgICAgZG9tYWluX3BhdXNlX2Zvcl9kZWJ1Z2dlcigpOworICAgICAgICAg ICAgdm14X3Byb3BhZ2F0ZV9pbnRyKGludHJfaW5mbywgZXhpdF9xdWFsaWZpY2F0aW9uKTsKICAg ICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgVFJBUF9pbnQzOgorICAgICAgICBjYXNl IFRSQVBfYWxpZ25tZW50X2NoZWNrOgogICAgICAgICAgICAgSFZNVFJBQ0VfMUQoVFJBUCwgdmVj dG9yKTsKLSAgICAgICAgICAgIGlmICggIXYtPmRvbWFpbi0+ZGVidWdnZXJfYXR0YWNoZWQgKQot ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgaW5zbl9sZW47Ci0g ICAgICAgICAgICAgICAgaW50IHJjOwotCi0gICAgICAgICAgICAgICAgX192bXJlYWQoVk1fRVhJ VF9JTlNUUlVDVElPTl9MRU4sICZpbnNuX2xlbik7Ci0gICAgICAgICAgICAgICAgcmMgPSBodm1f bW9uaXRvcl9kZWJ1ZyhyZWdzLT5yaXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBIVk1fTU9OSVRPUl9TT0ZUV0FSRV9CUkVBS1BPSU5ULAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgWDg2X0VWRU5UVFlQRV9TV19FWENFUFRJT04sCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNuX2xlbik7Ci0KLSAgICAgICAg ICAgICAgICBpZiAoIHJjIDwgMCApCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdF9hbmRf Y3Jhc2g7Ci0gICAgICAgICAgICAgICAgaWYgKCAhcmMgKQotICAgICAgICAgICAgICAgICAgICB2 bXhfcHJvcGFnYXRlX2ludHIoaW50cl9pbmZvLCAwIC8qIE4vQSAqLyk7Ci0gICAgICAgICAgICB9 Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdXBkYXRl X2d1ZXN0X2VpcCgpOyAvKiBTYWZlOiBJTlQzICovCi0gICAgICAgICAgICAgICAgdi0+YXJjaC5n ZGJzeF92Y3B1X2V2ZW50ID0gVFJBUF9pbnQzOwotICAgICAgICAgICAgICAgIGRvbWFpbl9wYXVz ZV9mb3JfZGVidWdnZXIoKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZteF9wcm9wYWdh dGVfaW50cihpbnRyX2luZm8sIDAgLyogTi9BICovKTsKICAgICAgICAgICAgIGJyZWFrOworCiAg ICAgICAgIGNhc2UgVFJBUF9ub19kZXZpY2U6CiAgICAgICAgICAgICBIVk1UUkFDRV8xRChUUkFQ LCB2ZWN0b3IpOwogICAgICAgICAgICAgdm14X2ZwdV9kaXJ0eV9pbnRlcmNlcHQoKTsKQEAgLTM3 NzcsMTAgKzM3NjIsNyBAQCB2b2lkIHZteF92bWV4aXRfaGFuZGxlcihzdHJ1Y3QgY3B1X3VzZXJf cmVncyAqcmVncykKIAogICAgICAgICAgICAgaHZtX2luamVjdF9wYWdlX2ZhdWx0KHJlZ3MtPmVy cm9yX2NvZGUsIGV4aXRfcXVhbGlmaWNhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKLSAgICAg ICAgY2FzZSBUUkFQX2FsaWdubWVudF9jaGVjazoKLSAgICAgICAgICAgIEhWTVRSQUNFXzFEKFRS QVAsIHZlY3Rvcik7Ci0gICAgICAgICAgICB2bXhfcHJvcGFnYXRlX2ludHIoaW50cl9pbmZvLCAw IC8qIE4vQSAqLyk7Ci0gICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIFRSQVBfbm1p OgogICAgICAgICAgICAgaWYgKCBNQVNLX0VYVFIoaW50cl9pbmZvLCBJTlRSX0lORk9fSU5UUl9U WVBFX01BU0spICE9CiAgICAgICAgICAgICAgICAgIFg4Nl9FVkVOVFRZUEVfTk1JICkKLS0gCjIu MS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu LWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6 Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==