From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v4 3/3] x86/hvm: Implement hvmemul_write() using real mappings Date: Wed, 20 Sep 2017 09:30:04 +0000 Message-ID: <72e2a9ef6ce6416f8712ab90c7495767@AMSPEX02CL03.citrite.net> References: <1505899353-13554-1-git-send-email-aisaila@bitdefender.com> <1505899353-13554-4-git-send-email-aisaila@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1505899353-13554-4-git-send-email-aisaila@bitdefender.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: 'Alexandru Isaila' , "xen-devel@lists.xen.org" Cc: Kevin Tian , "sstabellini@kernel.org" , Wei Liu , "suravee.suthikulpanit@amd.com" , "jun.nakajima@intel.com" , Andrew Cooper , "Tim (Xen.org)" , George Dunlap , "jbeulich@suse.com" , Ian Jackson , "boris.ostrovsky@oracle.com" List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IEFsZXhhbmRydSBJc2FpbGEgW21h aWx0bzphaXNhaWxhQGJpdGRlZmVuZGVyLmNvbV0KPiBTZW50OiAyMCBTZXB0ZW1iZXIgMjAxNyAx MDoyMwo+IFRvOiB4ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwo+IENjOiBUaW0gKFhlbi5vcmcpIDx0 aW1AeGVuLm9yZz47IEdlb3JnZSBEdW5sYXAKPiA8R2VvcmdlLkR1bmxhcEBjaXRyaXguY29tPjsg amJldWxpY2hAc3VzZS5jb207IEFuZHJldyBDb29wZXIKPiA8QW5kcmV3LkNvb3BlcjNAY2l0cml4 LmNvbT47IElhbiBKYWNrc29uIDxJYW4uSmFja3NvbkBjaXRyaXguY29tPjsKPiBrb25yYWQud2ls a0BvcmFjbGUuY29tOyBzc3RhYmVsbGluaUBrZXJuZWwub3JnOyBXZWkgTGl1Cj4gPHdlaS5saXUy QGNpdHJpeC5jb20+OyBQYXVsIER1cnJhbnQgPFBhdWwuRHVycmFudEBjaXRyaXguY29tPjsKPiBi b3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbTsgc3VyYXZlZS5zdXRoaWt1bHBhbml0QGFtZC5jb207 Cj4ganVuLm5ha2FqaW1hQGludGVsLmNvbTsgS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5j b20+OyBBbGV4YW5kcnUgSXNhaWxhCj4gPGFpc2FpbGFAYml0ZGVmZW5kZXIuY29tPgo+IFN1Ympl Y3Q6IFtQQVRDSCB2NCAzLzNdIHg4Ni9odm06IEltcGxlbWVudCBodm1lbXVsX3dyaXRlKCkgdXNp bmcgcmVhbAo+IG1hcHBpbmdzCj4gCj4gRnJvbTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3Bl cjNAY2l0cml4LmNvbT4KPiAKPiBBbiBhY2Nlc3Mgd2hpY2ggY3Jvc3NlcyBhIHBhZ2UgYm91bmRh cnkgaXMgcGVyZm9ybWVkIGF0b21pY2FsbHkgYnkgeDg2Cj4gaGFyZHdhcmUsIGFsYmVpdCB3aXRo IGEgc2V2ZXJlIHBlcmZvcm1hbmNlIHBlbmFsdHkuICBBbiBpbXBvcnRhbnQgY29ybmVyCj4gY2Fz ZQo+IGlzIHdoZW4gYSBzdHJhZGRsZWQgYWNjZXNzIGhpdHMgdHdvIHBhZ2VzIHdoaWNoIGRpZmZl ciBpbiB3aGV0aGVyIGEKPiB0cmFuc2xhdGlvbiBleGlzdHMsIG9yIGluIG5ldCBhY2Nlc3Mgcmln aHRzLgo+IAo+IFRoZSB1c2Ugb2YgaHZtX2NvcHkqKCkgaW4gaHZtZW11bF93cml0ZSgpIGlzIHBy b2JsZW1hdGljLCBiZWNhdXNlIGl0Cj4gcGVyZm9ybXMKPiBhIHRyYW5zbGF0aW9uIHRoZW4gY29t cGxldGVzIHRoZSBwYXJ0aWFsIHdyaXRlLCBiZWZvcmUgbW92aW5nIG9udG8gdGhlIG5leHQKPiB0 cmFuc2xhdGlvbi4KPiAKPiBJZiBhbiBpbmRpdmlkdWFsIGVtdWxhdGVkIHdyaXRlIHN0cmFkZGxl cyB0d28gcGFnZXMsIHRoZSBmaXJzdCBvZiB3aGljaCBpcwo+IHdyaXRhYmxlLCBhbmQgdGhlIHNl Y29uZCBvZiB3aGljaCBpcyBub3QsIHRoZSBmaXJzdCBoYWxmIG9mIHRoZSB3cml0ZSB3aWxsCj4g Y29tcGxldGUgYmVmb3JlICNQRiBpcyByYWlzZWQgZnJvbSB0aGUgc2Vjb25kIGhhbGYuCj4gCj4g VGhpcyByZXN1bHRzIGluIGd1ZXN0IHN0YXRlIGNvcnJ1cHRpb24gYXMgYSBzaWRlIGVmZmVjdCBv ZiBlbXVsYXRpb24sIHdoaWNoCj4gaGFzIGJlZW4gb2JzZXJ2ZWQgdG8gY2F1c2Ugd2luZG93cyB0 byBjcmFzaCB3aGlsZSB1bmRlciBpbnRyb3NwZWN0aW9uLgo+IAo+IEludHJvZHVjZSB0aGUgaHZt ZW11bF97LHVufW1hcF9saW5lYXJfYWRkcigpIGhlbHBlcnMsIHdoaWNoIHRyYW5zbGF0ZSBhbgo+ IGVudGlyZSBjb250ZW50cyBvZiBhIGxpbmVhciBhY2Nlc3MsIGFuZCB2bWFwKCkgdGhlIHVuZGVy bHlpbmcgZnJhbWVzIHRvCj4gcHJvdmlkZSBhIGNvbnRpZ3VvdXMgdmlydHVhbCBtYXBwaW5nIGZv ciB0aGUgZW11bGF0b3IgdG8gdXNlLiAgVGhpcyBpcyB0aGUKPiBzYW1lIG1lY2hhbmlzbSBhcyB1 c2VkIGJ5IHRoZSBzaGFkb3cgZW11bGF0aW9uIGNvZGUuCj4gCj4gVGhpcyB3aWxsIGNhdGNoIGFu eSB0cmFuc2xhdGlvbiBpc3N1ZXMgYW5kIGFib3J0IHRoZSBlbXVsYXRpb24gYmVmb3JlIGFueQo+ IG1vZGlmaWNhdGlvbnMgb2NjdXIuCj4gCj4gU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8 YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kcnUgSXNh aWxhIDxhaXNhaWxhQGJpdGRlZmVuZGVyLmNvbT4KPiAKPiAtLS0KPiBDaGFuZ2VzIHNpbmNlIFYz Ogo+IAktIENoYW5nZWQgdGhlIGlmIGNvbmRpdGlvbiBmb3JtIC4uLiA+IC4uLiAtMSB0byAuLi4g Pj0gLi4uCj4gCS0gUmVtb3ZlZCBsb25nIGNhc3QgdG8gdGhlIGVyciB2YXIKPiAJLSBNb3ZlZCB0 aGUgbWZuKysgY2xvc2VyIHRvIHRoZSBlbmQgb2YgdGhlIGxvb3AKPiAJLSBJbnRlZ3JhdGVkIHRo ZSArK2ZyYW1lIGluIHRoZSB3aGlsZSBjb25kaXRpb24KPiAtLS0KPiAgeGVuL2FyY2gveDg2L2h2 bS9lbXVsYXRlLmMgICAgICAgIHwgMTc1Cj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0KPiAgeGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZW11bGF0ZS5oIHwgICA3ICsrCj4g IDIgZmlsZXMgY2hhbmdlZCwgMTY1IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQo+IAo+ IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYyBiL3hlbi9hcmNoL3g4Ni9o dm0vZW11bGF0ZS5jCj4gaW5kZXggY2M4NzRjZS4uOTg2NmQ2NCAxMDA2NDQKPiAtLS0gYS94ZW4v YXJjaC94ODYvaHZtL2VtdWxhdGUuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5j Cj4gQEAgLTQ5OCw2ICs0OTgsMTU3IEBAIHN0YXRpYyBpbnQgaHZtZW11bF9kb19tbWlvX2FkZHIo cGFkZHJfdAo+IG1taW9fZ3BhLAo+ICB9Cj4gCj4gIC8qCj4gKyAqIE1hcCB0aGUgZnJhbWUocykg Y292ZXJpbmcgYW4gaW5kaXZpZHVhbCBsaW5lYXIgYWNjZXNzLCBmb3Igd3JpdGVhYmxlCj4gKyAq IGFjY2Vzcy4gIE1heSByZXR1cm4gTlVMTCBmb3IgTU1JTywgb3IgRVJSX1BUUih+WDg2RU1VTF8q KSBmb3Igb3RoZXIKPiBlcnJvcnMKPiArICogaW5jbHVkaW5nIEVSUl9QVFIoflg4NkVNVUxfT0tB WSkgZm9yIHdyaXRlLWRpc2NhcmQgbWFwcGluZ3MuCj4gKyAqCj4gKyAqIEluIGRlYnVnIGJ1aWxk cywgbWFwKCkgY2hlY2tzIHRoYXQgZWFjaCBzbG90IGluIGh2bWVtdWxfY3R4dC0+bWZuW10gaXMK PiArICogY2xlYW4gYmVmb3JlIHVzZSwgYW5kIHBvaXNpb25zIHVudXNlZCBzbG90cyB3aXRoIElO VkFMSURfTUZOLgo+ICsgKi8KPiArc3RhdGljIHZvaWQgKmh2bWVtdWxfbWFwX2xpbmVhcl9hZGRy KAo+ICsgICAgdW5zaWduZWQgbG9uZyBsaW5lYXIsIHVuc2lnbmVkIGludCBieXRlcywgdWludDMy X3QgcGZlYywKPiArICAgIHN0cnVjdCBodm1fZW11bGF0ZV9jdHh0ICpodm1lbXVsX2N0eHQpCj4g K3sKPiArICAgIHN0cnVjdCB2Y3B1ICpjdXJyID0gY3VycmVudDsKPiArICAgIHZvaWQgKmVyciwg Km1hcHBpbmc7Cj4gKwo+ICsgICAgLyogRmlyc3QgYW5kIGZpbmFsIGdmbnMgd2hpY2ggbmVlZCBt YXBwaW5nLiAqLwo+ICsgICAgdW5zaWduZWQgbG9uZyBmcmFtZSA9IGxpbmVhciA+PiBQQUdFX1NI SUZULCBmaXJzdCA9IGZyYW1lOwo+ICsgICAgdW5zaWduZWQgbG9uZyBmaW5hbCA9IChsaW5lYXIg KyBieXRlcyAtICEhYnl0ZXMpID4+IFBBR0VfU0hJRlQ7Cj4gKwo+ICsgICAgLyoKPiArICAgICAq IG1mbiBwb2ludHMgdG8gdGhlIG5leHQgZnJlZSBzbG90LiAgQWxsIHVzZWQgc2xvdHMgaGF2ZSBh IHBhZ2UgcmVmZXJlbmNlCj4gKyAgICAgKiBoZWxkIG9uIHRoZW0uCj4gKyAgICAgKi8KPiArICAg IG1mbl90ICptZm4gPSAmaHZtZW11bF9jdHh0LT5tZm5bMF07Cj4gKwo+ICsgICAgLyoKPiArICAg ICAqIFRoZSBjYWxsZXIgaGFzIG5vIGxlZ2l0aW1hdGUgcmVhc29uIGZvciB0cnlpbmcgYSB6ZXJv LWJ5dGUgd3JpdGUsIGJ1dAo+ICsgICAgICogZmluYWwgaXMgY2FsY3VsYXRlIHRvIGZhaWwgc2Fm ZSBpbiByZWxlYXNlIGJ1aWxkcy4KPiArICAgICAqCj4gKyAgICAgKiBUaGUgbWF4aW11bSB3cml0 ZSBzaXplIGRlcGVuZHMgb24gdGhlIG51bWJlciBvZiBhZGphY2VudCBtZm5zW10KPiB3aGljaAo+ ICsgICAgICogY2FuIGJlIHZtYXAoKSdkLCBhY2NvdXRpbmcgZm9yIHBvc3NpYmxlIG1pc2FsaWdu bWVudCB3aXRoaW4gdGhlIHJlZ2lvbi4KPiArICAgICAqIFRoZSBoaWdoZXIgbGV2ZWwgZW11bGF0 aW9uIGNhbGxlcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBlbnN1cmluZyB0aGF0Cj4gKyAgICAgKiBt Zm5zW10gaXMgbGFyZ2UgZW5vdWdoIGZvciB0aGUgcmVxdWVzdGVkIHdyaXRlIHNpemUuCj4gKyAg ICAgKi8KPiArICAgIGlmICggYnl0ZXMgPT0gMCB8fAo+ICsgICAgICAgICBmaW5hbCAtIGZpcnN0 ID49IEFSUkFZX1NJWkUoaHZtZW11bF9jdHh0LT5tZm4pICkKPiArICAgIHsKPiArICAgICAgICBB U1NFUlRfVU5SRUFDSEFCTEUoKTsKPiArICAgICAgICBnb3RvIHVuaGFuZGxlYWJsZTsKPiArICAg IH0KPiArCj4gKyAgICBkbyB7Cj4gKyAgICAgICAgZW51bSBodm1fdHJhbnNsYXRpb25fcmVzdWx0 IHJlczsKPiArICAgICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlOwo+ICsgICAgICAgIHBhZ2Vm YXVsdF9pbmZvX3QgcGZpbmZvOwo+ICsgICAgICAgIHAybV90eXBlX3QgcDJtdDsKPiArCj4gKyAg ICAgICAgLyogRXJyb3IgY2hlY2tpbmcuICBDb25maXJtIHRoYXQgdGhlIGN1cnJlbnQgc2xvdCBp cyBjbGVhbi4gKi8KPiArICAgICAgICBBU1NFUlQobWZuX3goKm1mbikgPT0gMCk7Cj4gKwo+ICsg ICAgICAgIHJlcyA9IGh2bV90cmFuc2xhdGVfZ2V0X3BhZ2UoY3VyciwgZnJhbWUgPDwgUEFHRV9T SElGVCwgdHJ1ZSwgcGZlYywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZwZmluZm8sICZwYWdlLCBOVUxMLCAmcDJtdCk7Cj4gKwo+ICsgICAgICAgIHN3aXRjaCAoIHJl cyApCj4gKyAgICAgICAgewo+ICsgICAgICAgIGNhc2UgSFZNVFJBTlNfb2theToKPiArICAgICAg ICAgICAgYnJlYWs7Cj4gKwo+ICsgICAgICAgIGNhc2UgSFZNVFJBTlNfYmFkX2xpbmVhcl90b19n Zm46Cj4gKyAgICAgICAgICAgIHg4Nl9lbXVsX3BhZ2VmYXVsdChwZmluZm8uZWMsIHBmaW5mby5s aW5lYXIsICZodm1lbXVsX2N0eHQtPmN0eHQpOwo+ICsgICAgICAgICAgICBlcnIgPSBFUlJfUFRS KH5YODZFTVVMX0VYQ0VQVElPTik7Cj4gKyAgICAgICAgICAgIGdvdG8gb3V0Owo+ICsKPiArICAg ICAgICBjYXNlIEhWTVRSQU5TX2JhZF9nZm5fdG9fbWZuOgo+ICsgICAgICAgICAgICBlcnIgPSBO VUxMOwo+ICsgICAgICAgICAgICBnb3RvIG91dDsKPiArCj4gKyAgICAgICAgY2FzZSBIVk1UUkFO U19nZm5fcGFnZWRfb3V0Ogo+ICsgICAgICAgIGNhc2UgSFZNVFJBTlNfZ2ZuX3NoYXJlZDoKPiAr ICAgICAgICAgICAgZXJyID0gRVJSX1BUUih+WDg2RU1VTF9SRVRSWSk7Cj4gKyAgICAgICAgICAg IGdvdG8gb3V0Owo+ICsKPiArICAgICAgICBkZWZhdWx0Ogo+ICsgICAgICAgICAgICBnb3RvIHVu aGFuZGxlYWJsZTsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIGlmICggcDJtX2lzX2Rpc2Nh cmRfd3JpdGUocDJtdCkgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgZXJyID0gRVJSX1BU Uih+WDg2RU1VTF9PS0FZKTsKPiArICAgICAgICAgICAgZ290byBvdXQ7Cj4gKyAgICAgICAgfQo+ ICsKPiArICAgICAgICAqbWZuKysgPSBfbWZuKHBhZ2VfdG9fbWZuKHBhZ2UpKTsKPiArCgpNdWNo IGJldHRlciA6LSkgQnV0IEknZCBkaXRjaCB0aGUgYmxhbmsgbGluZSBoZXJlIChhbmQgdGhlIGNv cnJlc3BvbmRpbmcgb25lLi4uCgo+ICsgICAgfSB3aGlsZSAoICsrZnJhbWUgPCBmaW5hbCApOwo+ ICsKPiArICAgIC8qIEVudGlyZSBhY2Nlc3Mgd2l0aGluIGEgc2luZ2xlIGZyYW1lPyAqLwo+ICsg ICAgaWYgKCBmaXJzdCA9PSBmaW5hbCApCj4gKyAgICAgICAgbWFwcGluZyA9IG1hcF9kb21haW5f cGFnZShodm1lbXVsX2N0eHQtPm1mblswXSk7Cj4gKyAgICAvKiBNdWx0aXBsZSBmcmFtZXM/IE5l ZWQgdG8gdm1hcCgpLiAqLwo+ICsgICAgZWxzZSBpZiAoIChtYXBwaW5nID0gdm1hcChodm1lbXVs X2N0eHQtPm1mbiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgLSBmaXJz dCArIDEpKSA9PSBOVUxMICkKPiArICAgICAgICBnb3RvIHVuaGFuZGxlYWJsZTsKPiArCj4gKyNp Zm5kZWYgTkRFQlVHIC8qIFBvaXNpb24gdW51c2VkIG1mbltdcyB3aXRoIElOVkFMSURfTUZOLiAq Lwo+ICsgICAgd2hpbGUgKCBtZm4gPCBodm1lbXVsX2N0eHQtPm1mbiArIEFSUkFZX1NJWkUoaHZt ZW11bF9jdHh0LT5tZm4pICkKPiArICAgIHsKPiArICAgICAgICBBU1NFUlQobWZuX3goKm1mbikg PT0gMCk7Cj4gKyAgICAgICAgKm1mbisrID0gSU5WQUxJRF9NRk47Cj4gKyAgICB9Cj4gKyNlbmRp Zgo+ICsKPiArICAgIHJldHVybiBtYXBwaW5nICsgKGxpbmVhciAmIH5QQUdFX01BU0spOwo+ICsK PiArIHVuaGFuZGxlYWJsZToKPiArICAgIGVyciA9IEVSUl9QVFIoflg4NkVNVUxfVU5IQU5ETEVB QkxFKTsKPiArCj4gKyBvdXQ6Cj4gKyAgICAvKiBEcm9wIGFsbCBoZWxkIHJlZmVyZW5jZXMuICov Cj4gKyAgICB3aGlsZSAoIG1mbi0tID4gaHZtZW11bF9jdHh0LT5tZm4gKQo+ICsgICAgICAgIHB1 dF9wYWdlKG1mbl90b19wYWdlKG1mbl94KCptZm4pKSk7Cj4gKwo+ICsgICAgcmV0dXJuIGVycjsK PiArfQo+ICsKPiArc3RhdGljIHZvaWQgaHZtZW11bF91bm1hcF9saW5lYXJfYWRkcigKPiArICAg IHZvaWQgKm1hcHBpbmcsIHVuc2lnbmVkIGxvbmcgbGluZWFyLCB1bnNpZ25lZCBpbnQgYnl0ZXMs Cj4gKyAgICBzdHJ1Y3QgaHZtX2VtdWxhdGVfY3R4dCAqaHZtZW11bF9jdHh0KQo+ICt7Cj4gKyAg ICBzdHJ1Y3QgZG9tYWluICpjdXJyZCA9IGN1cnJlbnQtPmRvbWFpbjsKPiArICAgIHVuc2lnbmVk IGxvbmcgZnJhbWUgPSBsaW5lYXIgPj4gUEFHRV9TSElGVDsKPiArICAgIHVuc2lnbmVkIGxvbmcg ZmluYWwgPSAobGluZWFyICsgYnl0ZXMgLSAhIWJ5dGVzKSA+PiBQQUdFX1NISUZUOwo+ICsgICAg bWZuX3QgKm1mbiA9ICZodm1lbXVsX2N0eHQtPm1mblswXTsKPiArCj4gKyAgICBBU1NFUlQoYnl0 ZXMgPiAwKTsKPiArCj4gKyAgICBpZiAoIGZyYW1lID09IGZpbmFsICkKPiArICAgICAgICB1bm1h cF9kb21haW5fcGFnZShtYXBwaW5nKTsKPiArICAgIGVsc2UKPiArICAgICAgICB2dW5tYXAobWFw cGluZyk7Cj4gKwo+ICsgICAgZG8KPiArICAgIHsKPiArICAgICAgICBBU1NFUlQobWZuX3ZhbGlk KCptZm4pKTsKPiArICAgICAgICBwYWdpbmdfbWFya19kaXJ0eShjdXJyZCwgKm1mbik7Cj4gKyAg ICAgICAgcHV0X3BhZ2UobWZuX3RvX3BhZ2UobWZuX3goKm1mbikpKTsKPiArCj4gKyAgICAgICAg Km1mbisrID0gX21mbigwKTsgLyogQ2xlYW4gc2xvdCBmb3IgbWFwKCkncyBlcnJvciBjaGVja2lu Zy4gKi8KPiArCgouLi5oZXJlLiBJJ20gc3VyZSBhbiBvYmxpZ2luZyBjb21taXR0ZXIgY2FuIGZp eCB0aGF0IHRob3VnaCwgc28KClJldmlld2VkLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFu dEBjaXRyaXguY29tPgoKPiArICAgIH0gd2hpbGUgKCArK2ZyYW1lIDwgZmluYWwgKTsKPiArCj4g Kwo+ICsjaWZuZGVmIE5ERUJVRyAvKiBDaGVjayAoYW5kIGNsZWFuKSBhbGwgdW51c2VkIG1mbnMu ICovCj4gKyAgICB3aGlsZSAoIG1mbiA8IGh2bWVtdWxfY3R4dC0+bWZuICsgQVJSQVlfU0laRSho dm1lbXVsX2N0eHQtPm1mbikgKQo+ICsgICAgewo+ICsgICAgICAgIEFTU0VSVChtZm5fZXEoKm1m biwgSU5WQUxJRF9NRk4pKTsKPiArICAgICAgICAqbWZuKysgPSBfbWZuKDApOwo+ICsgICAgfQo+ ICsjZW5kaWYKPiArfQo+ICsKPiArLyoKPiAgICogQ29udmVydCBhZGRyIGZyb20gbGluZWFyIHRv IHBoeXNpY2FsIGZvcm0sIHZhbGlkIG92ZXIgdGhlIHJhbmdlCj4gICAqIFthZGRyLCBhZGRyICsg KnJlcHMgKiBieXRlc19wZXJfcmVwXS4gKnJlcHMgaXMgYWRqdXN0ZWQgYWNjb3JkaW5nIHRvCj4g ICAqIHRoZSB2YWxpZCBjb21wdXRlZCByYW5nZS4gSXQgaXMgYWx3YXlzID4wIHdoZW4gWDg2RU1V TF9PS0FZIGlzCj4gcmV0dXJuZWQuCj4gQEAgLTk4OCwxMSArMTEzOSwxMSBAQCBzdGF0aWMgaW50 IGh2bWVtdWxfd3JpdGUoCj4gICAgICBzdHJ1Y3QgaHZtX2VtdWxhdGVfY3R4dCAqaHZtZW11bF9j dHh0ID0KPiAgICAgICAgICBjb250YWluZXJfb2YoY3R4dCwgc3RydWN0IGh2bV9lbXVsYXRlX2N0 eHQsIGN0eHQpOwo+ICAgICAgc3RydWN0IHZjcHUgKmN1cnIgPSBjdXJyZW50Owo+IC0gICAgcGFn ZWZhdWx0X2luZm9fdCBwZmluZm87Cj4gICAgICB1bnNpZ25lZCBsb25nIGFkZHIsIHJlcHMgPSAx Owo+ICAgICAgdWludDMyX3QgcGZlYyA9IFBGRUNfcGFnZV9wcmVzZW50IHwgUEZFQ193cml0ZV9h Y2Nlc3M7Cj4gICAgICBzdHJ1Y3QgaHZtX3ZjcHVfaW8gKnZpbyA9ICZjdXJyLT5hcmNoLmh2bV92 Y3B1Lmh2bV9pbzsKPiAgICAgIGludCByYzsKPiArICAgIHZvaWQgKm1hcHBpbmc7Cj4gCj4gICAg ICBpZiAoIGlzX3g4Nl9zeXN0ZW1fc2VnbWVudChzZWcpICkKPiAgICAgICAgICBwZmVjIHw9IFBG RUNfaW1wbGljaXQ7Cj4gQEAgLTEwMDgsMjMgKzExNTksMTMgQEAgc3RhdGljIGludCBodm1lbXVs X3dyaXRlKAo+ICAgICAgICAgICAodmlvLT5tbWlvX2dsYSA9PSAoYWRkciAmIFBBR0VfTUFTSykp ICkKPiAgICAgICAgICByZXR1cm4gaHZtZW11bF9saW5lYXJfbW1pb193cml0ZShhZGRyLCBieXRl cywgcF9kYXRhLCBwZmVjLAo+IGh2bWVtdWxfY3R4dCwgMSk7Cj4gCj4gLSAgICByYyA9IGh2bV9j b3B5X3RvX2d1ZXN0X2xpbmVhcihhZGRyLCBwX2RhdGEsIGJ5dGVzLCBwZmVjLCAmcGZpbmZvKTsK PiArICAgIG1hcHBpbmcgPSBodm1lbXVsX21hcF9saW5lYXJfYWRkcihhZGRyLCBieXRlcywgcGZl YywKPiBodm1lbXVsX2N0eHQpOwo+ICsgICAgaWYgKCBJU19FUlIobWFwcGluZykgKQo+ICsgICAg ICAgIHJldHVybiB+UFRSX0VSUihtYXBwaW5nKTsKPiAKPiAtICAgIHN3aXRjaCAoIHJjICkKPiAt ICAgIHsKPiAtICAgIGNhc2UgSFZNVFJBTlNfb2theToKPiAtICAgICAgICBicmVhazsKPiAtICAg IGNhc2UgSFZNVFJBTlNfYmFkX2xpbmVhcl90b19nZm46Cj4gLSAgICAgICAgeDg2X2VtdWxfcGFn ZWZhdWx0KHBmaW5mby5lYywgcGZpbmZvLmxpbmVhciwgJmh2bWVtdWxfY3R4dC0+Y3R4dCk7Cj4g LSAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOwo+IC0gICAgY2FzZSBIVk1UUkFOU19i YWRfZ2ZuX3RvX21mbjoKPiAtICAgICAgICByZXR1cm4gaHZtZW11bF9saW5lYXJfbW1pb193cml0 ZShhZGRyLCBieXRlcywgcF9kYXRhLCBwZmVjLAo+IGh2bWVtdWxfY3R4dCwgMCk7Cj4gLSAgICBj YXNlIEhWTVRSQU5TX2dmbl9wYWdlZF9vdXQ6Cj4gLSAgICBjYXNlIEhWTVRSQU5TX2dmbl9zaGFy ZWQ6Cj4gLSAgICAgICAgcmV0dXJuIFg4NkVNVUxfUkVUUlk7Cj4gLSAgICBkZWZhdWx0Ogo+IC0g ICAgICAgIHJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsKPiAtICAgIH0KPiArICAgIG1lbWNw eShtYXBwaW5nLCBwX2RhdGEsIGJ5dGVzKTsKPiArCj4gKyAgICBodm1lbXVsX3VubWFwX2xpbmVh cl9hZGRyKG1hcHBpbmcsIGFkZHIsIGJ5dGVzLCBodm1lbXVsX2N0eHQpOwo+IAo+ICAgICAgcmV0 dXJuIFg4NkVNVUxfT0tBWTsKPiAgfQo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2 L2h2bS9lbXVsYXRlLmggYi94ZW4vaW5jbHVkZS9hc20tCj4geDg2L2h2bS9lbXVsYXRlLmgKPiBp bmRleCA4ODY0Nzc1Li5kMzc5YTRhIDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYv aHZtL2VtdWxhdGUuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2VtdWxhdGUuaAo+ IEBAIC0zNyw2ICszNywxMyBAQCBzdHJ1Y3QgaHZtX2VtdWxhdGVfY3R4dCB7Cj4gICAgICB1bnNp Z25lZCBsb25nIHNlZ19yZWdfYWNjZXNzZWQ7Cj4gICAgICB1bnNpZ25lZCBsb25nIHNlZ19yZWdf ZGlydHk7Cj4gCj4gKyAgICAvKgo+ICsgICAgICogTUZOcyBiZWhpbmQgdGVtcG9yYXJ5IG1hcHBp bmdzIGluIHRoZSB3cml0ZSBjYWxsYmFjay4gIFRoZSBsZW5ndGggaXMKPiArICAgICAqIGFyYml0 cmFyeSwgYW5kIGNhbiBiZSBpbmNyZWFzZWQgaWYgd3JpdGVzIGxvbmdlciB0aGFuIFBBR0VfU0la RSsxIGFyZQo+ICsgICAgICogbmVlZGVkLgo+ICsgICAgICovCj4gKyAgICBtZm5fdCBtZm5bMl07 Cj4gKwo+ICAgICAgdWludDMyX3QgaW50cl9zaGFkb3c7Cj4gCj4gICAgICBib29sX3Qgc2V0X2Nv bnRleHQ7Cj4gLS0KPiAyLjcuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5v cmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=