From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: Re: [PATCH v2 for-4.7 5/5] x86/hvm: Fix invalidation for emulated invlpg instructions Date: Tue, 10 May 2016 09:50:58 +0100 Message-ID: <5731A0F2.1040501@citrix.com> References: <1462818472-14225-1-git-send-email-andrew.cooper3@citrix.com> <1462818472-14225-6-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: <1462818472-14225-6-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: Andrew Cooper , Xen-devel Cc: Kevin Tian , Wei Liu , Jan Beulich , George Dunlap , Tim Deegan , Paul Durrant , Jun Nakajima , Boris Ostrovsky , Suravee Suthikulpanit List-Id: xen-devel@lists.xenproject.org T24gMDkvMDUvMTYgMTk6MjcsIEFuZHJldyBDb29wZXIgd3JvdGU6Cj4gaGFwX2ludmxwZygpIGlz IHJlYWNoYWJsZSBmcm9tIHRoZSBpbnN0cnVjdGlvbiBlbXVsYXRvciwgd2hpY2ggbWVhbnMKPiBp bnRyb3NwZWN0aW9uIGFuZCB0ZXN0cyB1c2luZyBodm1fZmVwIGNhbiBlbmQgdXAgaGVyZS4gIEFz IHN1Y2gsIGNyYXNoaW5nIHRoZQo+IGRvbWFpbiBpcyBub3QgYW4gYXBwcm9wcmlhdGUgYWN0aW9u IHRvIHRha2UuCj4gCj4gRml4aW5nIHRoaXMgaW52b2x2ZXMgcmVhcnJhbmdpbmcgdGhlIGNhbGxn cmFwaC4KPiAKPiBwYWdpbmdfaW52bHBnKCkgaXMgbm93IHRoZSBjZW50cmFsIGVudHJ5IHBvaW50 LiAgSXQgZmlyc3QgY2hlY2tzIGZvciB0aGUKPiBub24tY2Fub25pY2FsIE5PUCBjYXNlLCBhbmQg Y2FsbHMgaW5vIHRoZSBwYWdpbmcgc3Vic3lzdGVtLiAgSWYgYSByZWFsIGZsdXNoCj4gaXMgbmVl ZGVkLCBpdCB3aWxsIGNhbGwgdGhlIGFwcHJvcHJpYXRlIGhhbmRsZXIgZm9yIHRoZSB2Y3B1LiAg VGhpcyBhbGxvd3MgdGhlCj4gUFYgY2FsbHNpdGVzIG9mIHBhZ2luZ19pbnZscGcoKSB0byBiZSBz aW1wbGlmaWVkLgo+IAo+IFRoZSBzb2xlIHVzZXIgb2YgaHZtX2Z1bmNzLmludmxwZ19pbnRlcmNl cHQoKSBpcyBhbHRlcmVkIHRvIHVzZQo+IHBhZ2luZ19pbnZscGcoKSBpbnN0ZWFkLCBhbGxvd2lu ZyB0aGUgLmludmxwZ19pbnRlcmNlcHQoKSBob29rIHRvIGJlIHJlbW92ZWQuCj4gCj4gRm9yIGJv dGggVk1YIGFuZCBTVk0sIHRoZSBleGlzdGluZyAkVkVORE9SX2ludmxwZ19pbnRlcmNlcHQoKSBp cyBzcGxpdCBpbgo+IGhhbGYuICAkVkVORE9SX2ludmxwZ19pbnRlcmNlcHQoKSBzdGF5cyBhcyB0 aGUgaW50ZXJjZXB0IGhhbmRsZXIgb25seSAod2hpY2gKPiBqdXN0IGNhbGxzIHBhZ2luZ19pbnZs cGcoKSksIGFuZCBuZXcgJFZFTkRPUl9pbnZscGcoKSBmdW5jdGlvbnMgZG8gdGhlCj4gQVNJRC9W UElEIG1hbmFnZW1lbnQuICBUaGVzZSBsYXRlciBmdW5jdGlvbnMgYXJlIG1hZGUgYXZhaWxhYmxl IGluIGh2bV9mdW5jcwo+IGZvciBwYWdpbmdfaW52bHBnKCkgdG8gdXNlLgo+IAo+IEFzIGEgcmVz dWx0LCBjb3JyZWN0IEFTSUQvVlBJRCBtYW5hZ2VtZW50IG9jY3VycyBmb3IgdGhlIGh2bWVtdWwg cGF0aCwgZXZlbiBpZgo+IGl0IGRpZCBub3Qgb3JpZ2luYXRlIGZyb20gYW4gcmVhbCBoYXJkd2Fy ZSBpbnRlcmNlcHQuCj4gCj4gU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNv b3BlcjNAY2l0cml4LmNvbT4KCkkgaGF2ZW4ndCByZXZpZXdlZCBpdCBpbiBkZXRhaWwgYnV0IGl0 IGxvb2tzIGxpa2UgYSBnb29kIGlkZWE7IGFuZCBiYXNlZApvbiB0aGUgb3RoZXIgUmV2aWV3ZWQt YnlzIChhbmQgd2l0aCBvciB3aXRob3V0IEphbidzIHN1Z2dlc3RlZCBjbGVhbi11cCk6CgpBY2tl ZC1ieTogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBjaXRyaXguY29tPgoKPiAtLS0KPiBD QzogSmFuIEJldWxpY2ggPEpCZXVsaWNoQHN1c2UuY29tPgo+IENDOiBQYXVsIER1cnJhbnQgPHBh dWwuZHVycmFudEBjaXRyaXguY29tPgo+IENDOiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFw QGV1LmNpdHJpeC5jb20+Cj4gQ0M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgo+IENDOiBKdW4g TmFrYWppbWEgPGp1bi5uYWthamltYUBpbnRlbC5jb20+Cj4gQ0M6IEtldmluIFRpYW4gPGtldmlu LnRpYW5AaW50ZWwuY29tPgo+IENDOiBCb3JpcyBPc3Ryb3Zza3kgPGJvcmlzLm9zdHJvdnNreUBv cmFjbGUuY29tPgo+IENDOiBTdXJhdmVlIFN1dGhpa3VscGFuaXQgPHN1cmF2ZWUuc3V0aGlrdWxw YW5pdEBhbWQuY29tPgo+IENDOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgo+IAo+IHYy Ogo+ICAqIFNwbGl0IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IGZvciBBTUQgaW50byBwcmV2aW91 cyBwYXRjaAo+ICAqIEFkZCB2Y3B1IHBhcmFtZXRlciB0byBuZXcgaW52bHBnKCkgZnVuY3Rpb24s IGFuZCBhdm9pZCBhc3N1bWluZyAnY3VycmVudCcKPiAgKiBNb2RpZnkgcGFnaW5nX2ludmxwZygp IHRvIGJlIHZvaWQsIGFuZCBpc3N1ZSB0aGUgUFYgVExCIGZsdXNoIGFzIHdlbGwKPiAtLS0KPiAg eGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMgICAgfCAgNCArKy0tCj4gIHhlbi9hcmNoL3g4Ni9o dm0vc3ZtL3N2bS5jICAgIHwgMTEgKysrKysrKy0tLS0KPiAgeGVuL2FyY2gveDg2L2h2bS92bXgv dm14LmMgICAgfCAxNCArKysrKysrKystLS0tLQo+ICB4ZW4vYXJjaC94ODYvbW0uYyAgICAgICAg ICAgICB8IDI0ICsrKysrKysrKysrKysrKysrKy0tLS0tLQo+ICB4ZW4vYXJjaC94ODYvbW0vaGFw L2hhcC5jICAgICB8IDIzICsrKysrKysrKystLS0tLS0tLS0tLS0tCj4gIHhlbi9pbmNsdWRlL2Fz bS14ODYvaHZtL2h2bS5oIHwgIDIgKy0KPiAgeGVuL2luY2x1ZGUvYXNtLXg4Ni9wYWdpbmcuaCAg fCAxMSArKy0tLS0tLS0tLQo+ICA3IGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDQw IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUu YyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCj4gaW5kZXggZTYzMTZiZS4uYjljYWM4ZSAx MDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYwo+ICsrKyBiL3hlbi9hcmNo L3g4Ni9odm0vZW11bGF0ZS5jCj4gQEAgLTE2MjMsOCArMTYyMyw4IEBAIHN0YXRpYyBpbnQgaHZt ZW11bF9pbnZscGcoCj4gICAgICAgICAgcmMgPSBYODZFTVVMX09LQVk7Cj4gICAgICB9Cj4gIAo+ IC0gICAgaWYgKCByYyA9PSBYODZFTVVMX09LQVkgJiYgaXNfY2Fub25pY2FsX2FkZHJlc3MoYWRk cikgKQo+IC0gICAgICAgIGh2bV9mdW5jcy5pbnZscGdfaW50ZXJjZXB0KGFkZHIpOwo+ICsgICAg aWYgKCByYyA9PSBYODZFTVVMX09LQVkgKQo+ICsgICAgICAgIHBhZ2luZ19pbnZscGcoY3VycmVu dCwgYWRkcik7Cj4gIAo+ICAgICAgcmV0dXJuIHJjOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni9odm0vc3ZtL3N2bS5jIGIveGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMKPiBpbmRl eCAwODFhNWQ4Li42NzllNjE1IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2 bS5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMKPiBAQCAtMjIyMiwxMCArMjIy MiwxMyBAQCBzdGF0aWMgdm9pZCBzdm1faW52bHBnYV9pbnRlcmNlcHQoCj4gIAo+ICBzdGF0aWMg dm9pZCBzdm1faW52bHBnX2ludGVyY2VwdCh1bnNpZ25lZCBsb25nIHZhZGRyKQo+ICB7Cj4gLSAg ICBzdHJ1Y3QgdmNwdSAqY3VyciA9IGN1cnJlbnQ7Cj4gICAgICBIVk1UUkFDRV9MT05HXzJEKElO VkxQRywgMCwgVFJDX1BBUl9MT05HKHZhZGRyKSk7Cj4gLSAgICBpZiAoIHBhZ2luZ19pbnZscGco Y3VyciwgdmFkZHIpICkKPiAtICAgICAgICBzdm1fYXNpZF9nX2ludmxwZyhjdXJyLCB2YWRkcik7 Cj4gKyAgICBwYWdpbmdfaW52bHBnKGN1cnJlbnQsIHZhZGRyKTsKPiArfQo+ICsKPiArc3RhdGlj IHZvaWQgc3ZtX2ludmxwZyhzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyB2YWRkcikKPiAr ewo+ICsgICAgc3ZtX2FzaWRfZ19pbnZscGcodiwgdmFkZHIpOwo+ICB9Cj4gIAo+ICBzdGF0aWMg c3RydWN0IGh2bV9mdW5jdGlvbl90YWJsZSBfX2luaXRkYXRhIHN2bV9mdW5jdGlvbl90YWJsZSA9 IHsKPiBAQCAtMjI1OCwxMiArMjI2MSwxMiBAQCBzdGF0aWMgc3RydWN0IGh2bV9mdW5jdGlvbl90 YWJsZSBfX2luaXRkYXRhIHN2bV9mdW5jdGlvbl90YWJsZSA9IHsKPiAgICAgIC5pbmplY3RfdHJh cCAgICAgICAgICA9IHN2bV9pbmplY3RfdHJhcCwKPiAgICAgIC5pbml0X2h5cGVyY2FsbF9wYWdl ICA9IHN2bV9pbml0X2h5cGVyY2FsbF9wYWdlLAo+ICAgICAgLmV2ZW50X3BlbmRpbmcgICAgICAg ID0gc3ZtX2V2ZW50X3BlbmRpbmcsCj4gKyAgICAuaW52bHBnICAgICAgICAgICAgICAgPSBzdm1f aW52bHBnLAo+ICAgICAgLmNwdWlkX2ludGVyY2VwdCAgICAgID0gc3ZtX2NwdWlkX2ludGVyY2Vw dCwKPiAgICAgIC53YmludmRfaW50ZXJjZXB0ICAgICA9IHN2bV93YmludmRfaW50ZXJjZXB0LAo+ ICAgICAgLmZwdV9kaXJ0eV9pbnRlcmNlcHQgID0gc3ZtX2ZwdV9kaXJ0eV9pbnRlcmNlcHQsCj4g ICAgICAubXNyX3JlYWRfaW50ZXJjZXB0ICAgPSBzdm1fbXNyX3JlYWRfaW50ZXJjZXB0LAo+ICAg ICAgLm1zcl93cml0ZV9pbnRlcmNlcHQgID0gc3ZtX21zcl93cml0ZV9pbnRlcmNlcHQsCj4gLSAg ICAuaW52bHBnX2ludGVyY2VwdCAgICAgPSBzdm1faW52bHBnX2ludGVyY2VwdCwKPiAgICAgIC5z ZXRfcmR0c2NfZXhpdGluZyAgICA9IHN2bV9zZXRfcmR0c2NfZXhpdGluZywKPiAgICAgIC5nZXRf aW5zbl9ieXRlcyAgICAgICA9IHN2bV9nZXRfaW5zbl9ieXRlcywKPiAgCj4gZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMK PiBpbmRleCBiYzQ0MTBmLi4zYWNmMWFiIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0v dm14L3ZteC5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMKPiBAQCAtODEsNyAr ODEsNyBAQCBzdGF0aWMgdm9pZCB2bXhfd2JpbnZkX2ludGVyY2VwdCh2b2lkKTsKPiAgc3RhdGlj IHZvaWQgdm14X2ZwdV9kaXJ0eV9pbnRlcmNlcHQodm9pZCk7Cj4gIHN0YXRpYyBpbnQgdm14X21z cl9yZWFkX2ludGVyY2VwdCh1bnNpZ25lZCBpbnQgbXNyLCB1aW50NjRfdCAqbXNyX2NvbnRlbnQp Owo+ICBzdGF0aWMgaW50IHZteF9tc3Jfd3JpdGVfaW50ZXJjZXB0KHVuc2lnbmVkIGludCBtc3Is IHVpbnQ2NF90IG1zcl9jb250ZW50KTsKPiAtc3RhdGljIHZvaWQgdm14X2ludmxwZ19pbnRlcmNl cHQodW5zaWduZWQgbG9uZyB2YWRkcik7Cj4gK3N0YXRpYyB2b2lkIHZteF9pbnZscGcoc3RydWN0 IHZjcHUgKnYsIHVuc2lnbmVkIGxvbmcgdmFkZHIpOwo+ICBzdGF0aWMgaW50IHZteF92bWZ1bmNf aW50ZXJjZXB0KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKTsKPiAgCj4gIHN0cnVjdCB2bXhf cGlfYmxvY2tpbmdfdmNwdSB7Cj4gQEAgLTIxMzcsNiArMjEzNyw3IEBAIHN0YXRpYyBzdHJ1Y3Qg aHZtX2Z1bmN0aW9uX3RhYmxlIF9faW5pdGRhdGEgdm14X2Z1bmN0aW9uX3RhYmxlID0gewo+ICAg ICAgLmluamVjdF90cmFwICAgICAgICAgID0gdm14X2luamVjdF90cmFwLAo+ICAgICAgLmluaXRf aHlwZXJjYWxsX3BhZ2UgID0gdm14X2luaXRfaHlwZXJjYWxsX3BhZ2UsCj4gICAgICAuZXZlbnRf cGVuZGluZyAgICAgICAgPSB2bXhfZXZlbnRfcGVuZGluZywKPiArICAgIC5pbnZscGcgICAgICAg ICAgICAgICA9IHZteF9pbnZscGcsCj4gICAgICAuY3B1X3VwICAgICAgICAgICAgICAgPSB2bXhf Y3B1X3VwLAo+ICAgICAgLmNwdV9kb3duICAgICAgICAgICAgID0gdm14X2NwdV9kb3duLAo+ICAg ICAgLmNwdWlkX2ludGVyY2VwdCAgICAgID0gdm14X2NwdWlkX2ludGVyY2VwdCwKPiBAQCAtMjE0 NCw3ICsyMTQ1LDYgQEAgc3RhdGljIHN0cnVjdCBodm1fZnVuY3Rpb25fdGFibGUgX19pbml0ZGF0 YSB2bXhfZnVuY3Rpb25fdGFibGUgPSB7Cj4gICAgICAuZnB1X2RpcnR5X2ludGVyY2VwdCAgPSB2 bXhfZnB1X2RpcnR5X2ludGVyY2VwdCwKPiAgICAgIC5tc3JfcmVhZF9pbnRlcmNlcHQgICA9IHZt eF9tc3JfcmVhZF9pbnRlcmNlcHQsCj4gICAgICAubXNyX3dyaXRlX2ludGVyY2VwdCAgPSB2bXhf bXNyX3dyaXRlX2ludGVyY2VwdCwKPiAtICAgIC5pbnZscGdfaW50ZXJjZXB0ICAgICA9IHZteF9p bnZscGdfaW50ZXJjZXB0LAo+ICAgICAgLnZtZnVuY19pbnRlcmNlcHQgICAgID0gdm14X3ZtZnVu Y19pbnRlcmNlcHQsCj4gICAgICAuaGFuZGxlX2NkICAgICAgICAgICAgPSB2bXhfaGFuZGxlX2Nk LAo+ICAgICAgLnNldF9pbmZvX2d1ZXN0ICAgICAgID0gdm14X3NldF9pbmZvX2d1ZXN0LAo+IEBA IC0yNDMyLDEwICsyNDMyLDE0IEBAIHN0YXRpYyB2b2lkIHZteF9kcl9hY2Nlc3ModW5zaWduZWQg bG9uZyBleGl0X3F1YWxpZmljYXRpb24sCj4gIAo+ICBzdGF0aWMgdm9pZCB2bXhfaW52bHBnX2lu dGVyY2VwdCh1bnNpZ25lZCBsb25nIHZhZGRyKQo+ICB7Cj4gLSAgICBzdHJ1Y3QgdmNwdSAqY3Vy ciA9IGN1cnJlbnQ7Cj4gICAgICBIVk1UUkFDRV9MT05HXzJEKElOVkxQRywgLyppbnZscGdhPSov IDAsIFRSQ19QQVJfTE9ORyh2YWRkcikpOwo+IC0gICAgaWYgKCBwYWdpbmdfaW52bHBnKGN1cnIs IHZhZGRyKSAmJiBjcHVfaGFzX3ZteF92cGlkICkKPiAtICAgICAgICB2cGlkX3N5bmNfdmNwdV9n dmEoY3VyciwgdmFkZHIpOwo+ICsgICAgcGFnaW5nX2ludmxwZyhjdXJyZW50LCB2YWRkcik7Cj4g K30KPiArCj4gK3N0YXRpYyB2b2lkIHZteF9pbnZscGcoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVk IGxvbmcgdmFkZHIpCj4gK3sKPiArICAgIGlmICggY3B1X2hhc192bXhfdnBpZCApCj4gKyAgICAg ICAgdnBpZF9zeW5jX3ZjcHVfZ3ZhKHYsIHZhZGRyKTsKPiAgfQo+ICAKPiAgc3RhdGljIGludCB2 bXhfdm1mdW5jX2ludGVyY2VwdChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKPiBkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L21tLmMgYi94ZW4vYXJjaC94ODYvbW0uYwo+IGluZGV4IDJiYjky MGIuLjAzYTRkNWIgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tLmMKPiArKysgYi94ZW4v YXJjaC94ODYvbW0uYwo+IEBAIC0zMzg2LDEwICszMzg2LDggQEAgbG9uZyBkb19tbXVleHRfb3Ao Cj4gICAgICAgICAgY2FzZSBNTVVFWFRfSU5WTFBHX0xPQ0FMOgo+ICAgICAgICAgICAgICBpZiAo IHVubGlrZWx5KGQgIT0gcGdfb3duZXIpICkKPiAgICAgICAgICAgICAgICAgIHJjID0gLUVQRVJN Owo+IC0gICAgICAgICAgICBlbHNlIGlmICggIXBhZ2luZ19tb2RlX2VuYWJsZWQoZCkKPiAtICAg ICAgICAgICAgICAgICAgICAgID8gX19hZGRyX29rKG9wLmFyZzEubGluZWFyX2FkZHIpCj4gLSAg ICAgICAgICAgICAgICAgICAgICA6IHBhZ2luZ19pbnZscGcoY3Vyciwgb3AuYXJnMS5saW5lYXJf YWRkcikgKQo+IC0gICAgICAgICAgICAgICAgZmx1c2hfdGxiX29uZV9sb2NhbChvcC5hcmcxLmxp bmVhcl9hZGRyKTsKPiArICAgICAgICAgICAgZWxzZQo+ICsgICAgICAgICAgICAgICAgcGFnaW5n X2ludmxwZyhjdXJyLCBvcC5hcmcxLmxpbmVhcl9hZGRyKTsKPiAgICAgICAgICAgICAgYnJlYWs7 Cj4gIAo+ICAgICAgICAgIGNhc2UgTU1VRVhUX1RMQl9GTFVTSF9NVUxUSToKPiBAQCAtNDUxMCw4 ICs0NTA4LDcgQEAgc3RhdGljIGludCBfX2RvX3VwZGF0ZV92YV9tYXBwaW5nKAo+ICAgICAgICAg IHN3aXRjaCAoIChibWFwX3B0ciA9IGZsYWdzICYgflVWTUZfRkxVU0hUWVBFX01BU0spICkKPiAg ICAgICAgICB7Cj4gICAgICAgICAgY2FzZSBVVk1GX0xPQ0FMOgo+IC0gICAgICAgICAgICBpZiAo ICFwYWdpbmdfbW9kZV9lbmFibGVkKGQpIHx8IHBhZ2luZ19pbnZscGcodiwgdmEpICkKPiAtICAg ICAgICAgICAgICAgIGZsdXNoX3RsYl9vbmVfbG9jYWwodmEpOwo+ICsgICAgICAgICAgICBwYWdp bmdfaW52bHBnKHYsIHZhKTsKPiAgICAgICAgICAgICAgYnJlYWs7Cj4gICAgICAgICAgY2FzZSBV Vk1GX0FMTDoKPiAgICAgICAgICAgICAgZmx1c2hfdGxiX29uZV9tYXNrKGQtPmRvbWFpbl9kaXJ0 eV9jcHVtYXNrLCB2YSk7Cj4gQEAgLTY0NzgsNiArNjQ3NSwyMSBAQCBjb25zdCB1bnNpZ25lZCBs b25nICpfX2luaXQgZ2V0X3BsYXRmb3JtX2JhZHBhZ2VzKHVuc2lnbmVkIGludCAqYXJyYXlfc2l6 ZSkKPiAgICAgIHJldHVybiBiYWRfcGFnZXM7Cj4gIH0KPiAgCj4gK3ZvaWQgcGFnaW5nX2ludmxw ZyhzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyB2YSkKPiArewo+ICsgICAgaWYgKCAhaXNf Y2Fub25pY2FsX2FkZHJlc3ModmEpICkKPiArICAgICAgICByZXR1cm47Cj4gKwo+ICsgICAgaWYg KCBwYWdpbmdfbW9kZV9lbmFibGVkKHYtPmRvbWFpbikgJiYKPiArICAgICAgICAgIXBhZ2luZ19n ZXRfaG9zdG1vZGUodiktPmludmxwZyh2LCB2YSkgKQo+ICsgICAgICAgIHJldHVybjsKPiArCj4g KyAgICBpZiAoIGlzX3B2X3ZjcHUodikgKQo+ICsgICAgICAgIGZsdXNoX3RsYl9vbmVfbG9jYWwo dmEpOwo+ICsgICAgZWxzZQo+ICsgICAgICAgIGh2bV9mdW5jcy5pbnZscGcodiwgdmEpOwo+ICt9 Cj4gKwo+ICAvKgo+ICAgKiBMb2NhbCB2YXJpYWJsZXM6Cj4gICAqIG1vZGU6IEMKPiBkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L21tL2hhcC9oYXAuYyBiL3hlbi9hcmNoL3g4Ni9tbS9oYXAvaGFw LmMKPiBpbmRleCA0YWI5OWJiLi45YzJjZDQ5IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9t bS9oYXAvaGFwLmMKPiArKysgYi94ZW4vYXJjaC94ODYvbW0vaGFwL2hhcC5jCj4gQEAgLTY4MCwy MyArNjgwLDIwIEBAIHN0YXRpYyBpbnQgaGFwX3BhZ2VfZmF1bHQoc3RydWN0IHZjcHUgKnYsIHVu c2lnbmVkIGxvbmcgdmEsCj4gIAo+ICAvKgo+ICAgKiBIQVAgZ3Vlc3RzIGNhbiBoYW5kbGUgaW52 bHBnIHdpdGhvdXQgbmVlZGluZyBhbnkgYWN0aW9uIGZyb20gWGVuLCBzbwo+IC0gKiBzaG91bGQg bm90IGJlIGludGVyY2VwdGluZyBpdC4KPiArICogc2hvdWxkIG5vdCBiZSBpbnRlcmNlcHRpbmcg aXQuICBIb3dldmVyLCB3ZSBuZWVkIHRvIGNvcnJlY3RseSBoYW5kbGUKPiArICogZ2V0dGluZyBo ZXJlIGZyb20gaW5zdHJ1Y3Rpb24gZW11bGF0aW9uLgo+ICAgKi8KPiAgc3RhdGljIGJvb2xfdCBo YXBfaW52bHBnKHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBsb25nIHZhKQo+ICB7Cj4gLSAgICBp ZiAobmVzdGVkaHZtX2VuYWJsZWQodi0+ZG9tYWluKSkgewo+IC0gICAgICAgIC8qIEVtdWxhdGUg SU5WTFBHQToKPiAtICAgICAgICAgKiBNdXN0IHBlcmZvcm0gdGhlIGZsdXNoIHJpZ2h0IG5vdyBv ciBhbiBvdGhlciB2Y3B1IG1heQo+IC0gICAgICAgICAqIHVzZSBpdCB3aGVuIHdlIHVzZSB0aGUg bmV4dCBWTVJVTiBlbXVsYXRpb24sIG90aGVyd2lzZS4KPiAtICAgICAgICAgKi8KPiAtICAgICAg ICBpZiAoIHZjcHVfbmVzdGVkaHZtKHYpLm52X3AybSApCj4gLSAgICAgICAgICAgIHAybV9mbHVz aCh2LCB2Y3B1X25lc3RlZGh2bSh2KS5udl9wMm0pOwo+IC0gICAgICAgIHJldHVybiAxOwo+IC0g ICAgfQo+ICsgICAgLyoKPiArICAgICAqIEVtdWxhdGUgSU5WTFBHQToKPiArICAgICAqIE11c3Qg cGVyZm9ybSB0aGUgZmx1c2ggcmlnaHQgbm93IG9yIGFuIG90aGVyIHZjcHUgbWF5Cj4gKyAgICAg KiB1c2UgaXQgd2hlbiB3ZSB1c2UgdGhlIG5leHQgVk1SVU4gZW11bGF0aW9uLCBvdGhlcndpc2Uu Cj4gKyAgICAgKi8KPiArICAgIGlmICggbmVzdGVkaHZtX2VuYWJsZWQodi0+ZG9tYWluKSAmJiB2 Y3B1X25lc3RlZGh2bSh2KS5udl9wMm0gKQo+ICsgICAgICAgIHAybV9mbHVzaCh2LCB2Y3B1X25l c3RlZGh2bSh2KS5udl9wMm0pOwo+ICAKPiAtICAgIEhBUF9FUlJPUigiSW50ZXJjZXB0ZWQgYSBn dWVzdCBJTlZMUEcgKCVwdikgd2l0aCBIQVAgZW5hYmxlZFxuIiwgdik7Cj4gLSAgICBkb21haW5f Y3Jhc2godi0+ZG9tYWluKTsKPiAtICAgIHJldHVybiAwOwo+ICsgICAgcmV0dXJuIDE7Cj4gIH0K PiAgCj4gIHN0YXRpYyB2b2lkIGhhcF91cGRhdGVfY3IzKHN0cnVjdCB2Y3B1ICp2LCBpbnQgZG9f bG9ja2luZykKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaHZtLmggYi94 ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9odm0uaAo+IGluZGV4IGFkZDZlZTguLmRkYmNiZTggMTAw NjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaHZtLmgKPiArKysgYi94ZW4vaW5j bHVkZS9hc20teDg2L2h2bS9odm0uaAo+IEBAIC0xNTQsNiArMTU0LDcgQEAgc3RydWN0IGh2bV9m dW5jdGlvbl90YWJsZSB7Cj4gICAgICB2b2lkICgqaW5pdF9oeXBlcmNhbGxfcGFnZSkoc3RydWN0 IGRvbWFpbiAqZCwgdm9pZCAqaHlwZXJjYWxsX3BhZ2UpOwo+ICAKPiAgICAgIGludCAgKCpldmVu dF9wZW5kaW5nKShzdHJ1Y3QgdmNwdSAqdik7Cj4gKyAgICB2b2lkICgqaW52bHBnKShzdHJ1Y3Qg dmNwdSAqdiwgdW5zaWduZWQgbG9uZyB2YWRkcik7Cj4gIAo+ICAgICAgaW50ICAoKmNwdV91cF9w cmVwYXJlKSh1bnNpZ25lZCBpbnQgY3B1KTsKPiAgICAgIHZvaWQgKCpjcHVfZGVhZCkodW5zaWdu ZWQgaW50IGNwdSk7Cj4gQEAgLTE3Miw3ICsxNzMsNiBAQCBzdHJ1Y3QgaHZtX2Z1bmN0aW9uX3Rh YmxlIHsKPiAgICAgIHZvaWQgKCpmcHVfZGlydHlfaW50ZXJjZXB0KSh2b2lkKTsKPiAgICAgIGlu dCAoKm1zcl9yZWFkX2ludGVyY2VwdCkodW5zaWduZWQgaW50IG1zciwgdWludDY0X3QgKm1zcl9j b250ZW50KTsKPiAgICAgIGludCAoKm1zcl93cml0ZV9pbnRlcmNlcHQpKHVuc2lnbmVkIGludCBt c3IsIHVpbnQ2NF90IG1zcl9jb250ZW50KTsKPiAtICAgIHZvaWQgKCppbnZscGdfaW50ZXJjZXB0 KSh1bnNpZ25lZCBsb25nIHZhZGRyKTsKPiAgICAgIGludCAoKnZtZnVuY19pbnRlcmNlcHQpKHN0 cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKTsKPiAgICAgIHZvaWQgKCpoYW5kbGVfY2QpKHN0cnVj dCB2Y3B1ICp2LCB1bnNpZ25lZCBsb25nIHZhbHVlKTsKPiAgICAgIHZvaWQgKCpzZXRfaW5mb19n dWVzdCkoc3RydWN0IHZjcHUgKnYpOwo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2 L3BhZ2luZy5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wYWdpbmcuaAo+IGluZGV4IGFiMTMxY2Mu LmExNDAxYWIgMTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wYWdpbmcuaAo+ICsr KyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcGFnaW5nLmgKPiBAQCAtMjM3LDE1ICsyMzcsOCBAQCBw YWdpbmdfZmF1bHQodW5zaWduZWQgbG9uZyB2YSwgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3Mp Cj4gICAgICByZXR1cm4gcGFnaW5nX2dldF9ob3N0bW9kZSh2KS0+cGFnZV9mYXVsdCh2LCB2YSwg cmVncyk7Cj4gIH0KPiAgCj4gLS8qIEhhbmRsZSBpbnZscGcgcmVxdWVzdHMgb24gdmNwdXMuCj4g LSAqIFJldHVybnMgMSBpZiB0aGUgaW52bHBnIGluc3RydWN0aW9uIHNob3VsZCBiZSBpc3N1ZWQg b24gdGhlIGhhcmR3YXJlLAo+IC0gKiBvciAwIGlmIGl0J3Mgc2FmZSBub3QgdG8gZG8gc28uICov Cj4gLXN0YXRpYyBpbmxpbmUgYm9vbF90IHBhZ2luZ19pbnZscGcoc3RydWN0IHZjcHUgKnYsIHVu c2lnbmVkIGxvbmcgdmEpCj4gLXsKPiAtICAgIHJldHVybiAocGFnaW5nX21vZGVfZXh0ZXJuYWwo di0+ZG9tYWluKSA/IGlzX2Nhbm9uaWNhbF9hZGRyZXNzKHZhKQo+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX19hZGRyX29rKHZhKSkgJiYKPiAtICAgICAg ICAgICBwYWdpbmdfZ2V0X2hvc3Rtb2RlKHYpLT5pbnZscGcodiwgdmEpOwo+IC19Cj4gKy8qIEhh bmRsZSBpbnZscGcgcmVxdWVzdHMgb24gdmNwdXMuICovCj4gK3ZvaWQgcGFnaW5nX2ludmxwZyhz dHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyB2YSk7Cj4gIAo+ICAvKiBUcmFuc2xhdGUgYSBn dWVzdCB2aXJ0dWFsIGFkZHJlc3MgdG8gdGhlIGZyYW1lIG51bWJlciB0aGF0IHRoZQo+ICAgKiAq Z3Vlc3QqIHBhZ2V0YWJsZXMgd291bGQgbWFwIGl0IHRvLiAgUmV0dXJucyBJTlZBTElEX0dGTiBp ZiB0aGUgZ3Vlc3QKPiAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0 dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=