From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH for 4.9 6/6] x86/emul: Require callers to provide LMA in the emulation context Date: Mon, 3 Apr 2017 08:40:24 +0000 Message-ID: <01051b373be74cc998ed1aa0300d6d78@AMSPEX02CL03.citrite.net> References: <1490989853-21879-1-git-send-email-andrew.cooper3@citrix.com> <1490989853-21879-7-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: <1490989853-21879-7-git-send-email-andrew.cooper3@citrix.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: Xen-devel Cc: Andrew Cooper , Julien Grall , "Tim (Xen.org)" , Jan Beulich List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IEFuZHJldyBDb29wZXIgW21haWx0 bzphbmRyZXcuY29vcGVyM0BjaXRyaXguY29tXQo+IFNlbnQ6IDMxIE1hcmNoIDIwMTcgMjA6NTEK PiBUbzogWGVuLWRldmVsIDx4ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZz4KPiBDYzogQW5kcmV3IENv b3BlciA8QW5kcmV3LkNvb3BlcjNAY2l0cml4LmNvbT47IEphbiBCZXVsaWNoCj4gPEpCZXVsaWNo QHN1c2UuY29tPjsgUGF1bCBEdXJyYW50IDxQYXVsLkR1cnJhbnRAY2l0cml4LmNvbT47IFRpbQo+ IChYZW4ub3JnKSA8dGltQHhlbi5vcmc+OyBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0u Y29tPgo+IFN1YmplY3Q6IFtQQVRDSCBmb3IgNC45IDYvNl0geDg2L2VtdWw6IFJlcXVpcmUgY2Fs bGVycyB0byBwcm92aWRlIExNQSBpbiB0aGUKPiBlbXVsYXRpb24gY29udGV4dAo+IAo+IExvbmcg bW9kZSAob3Igbm90KSBpbmZsdWVuY2VzIGVtdWxhdGlvbiBiZWhhdmlvdXIgaW4gYSBudW1iZXIg b2YgY2FzZXMuCj4gSW5zdGVhZCBvZiByZXVzaW5nIHRoZSAtPnJlYWRfbXNyKCkgaG9vayB0byBv YnRhaW4gRUZFUi5MTUEsIHJlcXVpcmUgY2FsbGVycwo+IHRvIHByb3ZpZGUgaXQgZGlyZWN0bHku Cj4gCj4gVGhpcyBzaW1wbGlmaWVzIGFsbCBsb25nIG1vZGUgY2hlY2tzIGR1cmluZyBlbXVsYXRp b24gdG8gYSBzaW1wbGUgYm9vbGVhbgo+IHJlYWQsIHJlbW92aW5nIGVtYmVkZGVkIG1zciByZWFk cy4gIEl0IGFsc28gYWxsb3dzIGZvciB0aGUgcmVtb3ZhbCBvZiBhIGxvY2FsCj4gdmFyaWFibGUg aW4gdGhlIHN5c2VudGVyIGVtdWxhdGlvbiBibG9jaywgYW5kIHJlbW92ZXMgYSBsYXRlbnQgYnVn IGluIHRoZQo+IHN5c2NhbGwgZW11bGF0aW9uIGJsb2NrIHdoZXJlIHJjIGNvbnRhaW5zIGEgbm9u IFg4NkVNVUxfKiBjb25zdGFudCBmb3IgYQo+IHBlcmlvZCBvZiB0aW1lLgo+IAo+IFNpZ25lZC1v ZmYtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CgplbXVsYXRl IHBhcnRzLi4uCgpSZXZpZXdlZC1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4 LmNvbT4KCj4gLS0tCj4gQ0M6IEphbiBCZXVsaWNoIDxKQmV1bGljaEBzdXNlLmNvbT4KPiBDQzog UGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KPiBDQzogVGltIERlZWdhbiA8 dGltQHhlbi5vcmc+Cj4gQ0M6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+Cj4g LS0tCj4gIHRvb2xzL2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL2Z1enotZW11bC5jIHwg IDEgKwo+ICB0b29scy90ZXN0cy94ODZfZW11bGF0b3IvdGVzdF94ODZfZW11bGF0b3IuYyAgICB8 ICA0ICsrCj4gIHhlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jICAgICAgICAgICAgICAgICAgICAg IHwgIDQgKy0KPiAgeGVuL2FyY2gveDg2L21tLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgMiArCj4gIHhlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMgICAgICAgICAgICAg ICAgIHwgIDUgKy0tCj4gIHhlbi9hcmNoL3g4Ni90cmFwcy5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDEgKwo+ICB4ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYyAg ICAgICAgICB8IDUxICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgeGVuL2FyY2gveDg2L3g4 Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmggICAgICAgICAgfCAgMyArKwo+ICA4IGZpbGVzIGNoYW5n ZWQsIDI4IGluc2VydGlvbnMoKyksIDQzIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS90 b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9mdXp6LWVtdWwuYwo+IGIvdG9vbHMv ZnV6ei94ODZfaW5zdHJ1Y3Rpb25fZW11bGF0b3IvZnV6ei1lbXVsLmMKPiBpbmRleCA4NDg4ODE2 Li4yZTQyZTU0IDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxh dG9yL2Z1enotZW11bC5jCj4gKysrIGIvdG9vbHMvZnV6ei94ODZfaW5zdHJ1Y3Rpb25fZW11bGF0 b3IvZnV6ei1lbXVsLmMKPiBAQCAtNjQ5LDYgKzY0OSw3IEBAIGludCBMTFZNRnV6emVyVGVzdE9u ZUlucHV0KGNvbnN0IHVpbnQ4X3QgKmRhdGFfcCwKPiBzaXplX3Qgc2l6ZSkKPiAgICAgIHN0cnVj dCBjcHVfdXNlcl9yZWdzIHJlZ3MgPSB7fTsKPiAgICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0 IGN0eHQgPSB7Cj4gICAgICAgICAgLnJlZ3MgPSAmcmVncywKPiArICAgICAgICAubG1hID0gc2l6 ZW9mKHZvaWQgKikgPT0gOCwKPiAgICAgICAgICAuYWRkcl9zaXplID0gOCAqIHNpemVvZih2b2lk ICopLAo+ICAgICAgICAgIC5zcF9zaXplID0gOCAqIHNpemVvZih2b2lkICopLAo+ICAgICAgfTsK PiBkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3Rlc3RfeDg2X2VtdWxhdG9y LmMKPiBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci90ZXN0X3g4Nl9lbXVsYXRvci5jCj4gaW5k ZXggNWJlOGRkYy4uZWZlYjE3NSAxMDA2NDQKPiAtLS0gYS90b29scy90ZXN0cy94ODZfZW11bGF0 b3IvdGVzdF94ODZfZW11bGF0b3IuYwo+ICsrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci90 ZXN0X3g4Nl9lbXVsYXRvci5jCj4gQEAgLTMxOSw2ICszMTksNyBAQCBpbnQgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCj4gICAgICBjdHh0LnJlZ3MgPSAmcmVnczsKPiAgICAgIGN0eHQuZm9y Y2Vfd3JpdGViYWNrID0gMDsKPiAgICAgIGN0eHQudmVuZG9yICAgID0gWDg2X1ZFTkRPUl9VTktO T1dOOwo+ICsgICAgY3R4dC5sbWEgICAgICAgPSBzaXplb2Yodm9pZCAqKSA9PSA4Owo+ICAgICAg Y3R4dC5hZGRyX3NpemUgPSA4ICogc2l6ZW9mKHZvaWQgKik7Cj4gICAgICBjdHh0LnNwX3NpemUg ICA9IDggKiBzaXplb2Yodm9pZCAqKTsKPiAKPiBAQCAtMjkyMiw2ICsyOTIzLDcgQEAgaW50IG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQo+ICAgICAgewo+ICAgICAgICAgIGRlY2xfaW5zbih2 emVyb3VwcGVyKTsKPiAKPiArICAgICAgICBjdHh0LmxtYSA9IGZhbHNlOwo+ICAgICAgICAgIGN0 eHQuc3Bfc2l6ZSA9IGN0eHQuYWRkcl9zaXplID0gMzI7Cj4gCj4gICAgICAgICAgYXNtIHZvbGF0 aWxlICggInZ4b3JwcyAleG1tMiwgJXhtbTIsICV4bW0zXG4iCj4gQEAgLTI5NDksNiArMjk1MSw3 IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKPiAgICAgICAgICAgICAgZ290byBm YWlsOwo+ICAgICAgICAgIHByaW50Zigib2theVxuIik7Cj4gCj4gKyAgICAgICAgY3R4dC5sbWEg PSB0cnVlOwo+ICAgICAgICAgIGN0eHQuc3Bfc2l6ZSA9IGN0eHQuYWRkcl9zaXplID0gNjQ7Cj4g ICAgICB9Cj4gICAgICBlbHNlCj4gQEAgLTMwMDEsNiArMzAwNCw3IEBAIGludCBtYWluKGludCBh cmdjLCBjaGFyICoqYXJndikKPiAgICAgICAgICAgICAgY29udGludWU7Cj4gCj4gICAgICAgICAg bWVtY3B5KHJlcywgYmxvYnNbal0uY29kZSwgYmxvYnNbal0uc2l6ZSk7Cj4gKyAgICAgICAgY3R4 dC5sbWEgPSBibG9ic1tqXS5iaXRuZXNzID09IDY0Owo+ICAgICAgICAgIGN0eHQuYWRkcl9zaXpl ID0gY3R4dC5zcF9zaXplID0gYmxvYnNbal0uYml0bmVzczsKPiAKPiAgICAgICAgICBpZiAoIGN0 eHQuYWRkcl9zaXplID09IHNpemVvZih2b2lkICopICogQ0hBUl9CSVQgKQo+IGRpZmYgLS1naXQg YS94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5j Cj4gaW5kZXggZWZhYzJlOS4uNjVjYjcwNyAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZt L2VtdWxhdGUuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCj4gQEAgLTIwNDcs NyArMjA0Nyw5IEBAIHZvaWQgaHZtX2VtdWxhdGVfaW5pdF9wZXJfaW5zbigKPiAgICAgIHVuc2ln bmVkIGludCBwZmVjID0gUEZFQ19wYWdlX3ByZXNlbnQ7Cj4gICAgICB1bnNpZ25lZCBsb25nIGFk ZHI7Cj4gCj4gLSAgICBpZiAoIGh2bV9sb25nX21vZGVfYWN0aXZlKGN1cnIpICYmCj4gKyAgICBo dm1lbXVsX2N0eHQtPmN0eHQubG1hID0gaHZtX2xvbmdfbW9kZV9hY3RpdmUoY3Vycik7Cj4gKwo+ ICsgICAgaWYgKCBodm1lbXVsX2N0eHQtPmN0eHQubG1hICYmCj4gICAgICAgICAgIGh2bWVtdWxf Y3R4dC0+c2VnX3JlZ1t4ODZfc2VnX2NzXS5hdHRyLmZpZWxkcy5sICkKPiAgICAgICAgICBodm1l bXVsX2N0eHQtPmN0eHQuYWRkcl9zaXplID0gaHZtZW11bF9jdHh0LT5jdHh0LnNwX3NpemUgPSA2 NDsKPiAgICAgIGVsc2UKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tLmMgYi94ZW4vYXJj aC94ODYvbW0uYwo+IGluZGV4IDM5MThhMzcuLmVkYTIyMGQgMTAwNjQ0Cj4gLS0tIGEveGVuL2Fy Y2gveDg2L21tLmMKPiArKysgYi94ZW4vYXJjaC94ODYvbW0uYwo+IEBAIC01NDEwLDYgKzU0MTAs NyBAQCBpbnQgcHR3cl9kb19wYWdlX2ZhdWx0KHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZAo+IGxv bmcgYWRkciwKPiAgICAgICAgICAuY3R4dCA9IHsKPiAgICAgICAgICAgICAgLnJlZ3MgPSByZWdz LAo+ICAgICAgICAgICAgICAudmVuZG9yID0gZC0+YXJjaC5jcHVpZC0+eDg2X3ZlbmRvciwKPiAr ICAgICAgICAgICAgLmxtYSA9IHRydWUsCj4gICAgICAgICAgICAgIC5hZGRyX3NpemUgPSBpc19w dl8zMmJpdF9kb21haW4oZCkgPyAzMiA6IEJJVFNfUEVSX0xPTkcsCj4gICAgICAgICAgICAgIC5z cF9zaXplICAgPSBpc19wdl8zMmJpdF9kb21haW4oZCkgPyAzMiA6IEJJVFNfUEVSX0xPTkcsCj4g ICAgICAgICAgfSwKPiBAQCAtNTU2NCw2ICs1NTY1LDcgQEAgaW50IG1taW9fcm9fZG9fcGFnZV9m YXVsdChzdHJ1Y3QgdmNwdSAqdiwKPiB1bnNpZ25lZCBsb25nIGFkZHIsCj4gICAgICBzdHJ1Y3Qg eDg2X2VtdWxhdGVfY3R4dCBjdHh0ID0gewo+ICAgICAgICAgIC5yZWdzID0gcmVncywKPiAgICAg ICAgICAudmVuZG9yID0gdi0+ZG9tYWluLT5hcmNoLmNwdWlkLT54ODZfdmVuZG9yLAo+ICsgICAg ICAgIC5sbWEgPSB0cnVlLAo+ICAgICAgICAgIC5hZGRyX3NpemUgPSBhZGRyX3NpemUsCj4gICAg ICAgICAgLnNwX3NpemUgPSBhZGRyX3NpemUsCj4gICAgICAgICAgLmRhdGEgPSAmbW1pb19yb19j dHh0Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMKPiBiL3hl bi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMKPiBpbmRleCAyZmM3OTZiLi5lNDJkM2ZkIDEw MDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMKPiArKysgYi94ZW4v YXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5jCj4gQEAgLTMyOCwxNSArMzI4LDE0IEBAIGNvbnN0 IHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMKPiAqc2hhZG93X2luaXRfZW11bGF0aW9uKAo+IAo+ICAg ICAgc2hfY3R4dC0+Y3R4dC5yZWdzID0gcmVnczsKPiAgICAgIHNoX2N0eHQtPmN0eHQudmVuZG9y ID0gdi0+ZG9tYWluLT5hcmNoLmNwdWlkLT54ODZfdmVuZG9yOwo+ICsgICAgc2hfY3R4dC0+Y3R4 dC5sbWEgPSBodm1fbG9uZ19tb2RlX2FjdGl2ZSh2KTsKPiAKPiAgICAgIC8qIFNlZ21lbnQgY2Fj aGUgaW5pdGlhbGlzYXRpb24uIFByaW1lZCB3aXRoIENTLiAqLwo+ICAgICAgY3JlZyA9IGh2bV9n ZXRfc2VnX3JlZyh4ODZfc2VnX2NzLCBzaF9jdHh0KTsKPiAKPiAgICAgIC8qIFdvcmsgb3V0IHRo ZSBlbXVsYXRpb24gbW9kZS4gKi8KPiAtICAgIGlmICggaHZtX2xvbmdfbW9kZV9hY3RpdmUodikg JiYgY3JlZy0+YXR0ci5maWVsZHMubCApCj4gLSAgICB7Cj4gKyAgICBpZiAoIHNoX2N0eHQtPmN0 eHQubG1hICYmIGNyZWctPmF0dHIuZmllbGRzLmwgKQo+ICAgICAgICAgIHNoX2N0eHQtPmN0eHQu YWRkcl9zaXplID0gc2hfY3R4dC0+Y3R4dC5zcF9zaXplID0gNjQ7Cj4gLSAgICB9Cj4gICAgICBl bHNlCj4gICAgICB7Cj4gICAgICAgICAgc3JlZyA9IGh2bV9nZXRfc2VnX3JlZyh4ODZfc2VnX3Nz LCBzaF9jdHh0KTsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3RyYXBzLmMgYi94ZW4vYXJj aC94ODYvdHJhcHMuYwo+IGluZGV4IDBkNTRiYWYuLjA5ZGMyZjEgMTAwNjQ0Cj4gLS0tIGEveGVu L2FyY2gveDg2L3RyYXBzLmMKPiArKysgYi94ZW4vYXJjaC94ODYvdHJhcHMuYwo+IEBAIC0yOTY2 LDYgKzI5NjYsNyBAQCBzdGF0aWMgaW50IGVtdWxhdGVfcHJpdmlsZWdlZF9vcChzdHJ1Y3QKPiBj cHVfdXNlcl9yZWdzICpyZWdzKQo+ICAgICAgc3RydWN0IHByaXZfb3BfY3R4dCBjdHh0ID0gewo+ ICAgICAgICAgIC5jdHh0LnJlZ3MgPSByZWdzLAo+ICAgICAgICAgIC5jdHh0LnZlbmRvciA9IGN1 cnJkLT5hcmNoLmNwdWlkLT54ODZfdmVuZG9yLAo+ICsgICAgICAgIC5jdHh0LmxtYSA9IHRydWUs Cj4gICAgICB9Owo+ICAgICAgaW50IHJjOwo+ICAgICAgdW5zaWduZWQgaW50IGVmbGFncywgYXI7 Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCj4g Yi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwo+IGluZGV4IDczMTVjYTYu LmNjMzU0YmMgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVs YXRlLmMKPiArKysgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwo+IEBA IC05NjgsMTEgKzk2OCwxMCBAQCBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gCj4gICNkZWZpbmUgdmFsaWRh dGVfZmFyX2JyYW5jaChjcywgaXApICh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKPiAgICAgIGlmICggc2l6ZW9mKGlwKSA8PSA0ICkgeyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAo+IC0gICAgICAgIEFTU0VSVChpbl9sb25nbW9kZShjdHh0 LCBvcHMpIDw9IDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgQVNT RVJUKCFjdHh0LT5sbWEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKPiAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoKGlwKSA+IChjcyktPmxpbWl0 LCBFWENfR1AsIDApOyAgICAgICAgICAgXAo+ICAgICAgfSBlbHNlICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gLSAgICAgICAg Z2VuZXJhdGVfZXhjZXB0aW9uX2lmKGluX2xvbmdtb2RlKGN0eHQsIG9wcykgJiYgICAgICAgICAg ICAgICAgIFwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNzKS0+YXR0ci5maWVs ZHMubCAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlv bl9pZihjdHh0LT5sbWEgJiYgKGNzKS0+YXR0ci5maWVsZHMubCAgICAgICAgICBcCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgID8gIWlzX2Nhbm9uaWNhbF9hZGRyZXNzKGlwKSAgICAg ICAgICAgICAgIFwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoaXApID4gKGNz KS0+bGltaXQsIEVYQ19HUCwgMCk7ICAgICAgICAgXAo+ICB9KQo+IEBAIC0xNjMwLDIwICsxNjI5 LDYgQEAgc3RhdGljIGJvb2wgdmNwdV9oYXMoCj4gICNlbmRpZgo+IAo+ICBzdGF0aWMgaW50Cj4g LWluX2xvbmdtb2RlKAo+IC0gICAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQsCj4gLSAg ICBjb25zdCBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3BzICpvcHMpCj4gLXsKPiAtICAgIHVpbnQ2NF90 IGVmZXI7Cj4gLQo+IC0gICAgaWYgKCAhb3BzLT5yZWFkX21zciB8fAo+IC0gICAgICAgICB1bmxp a2VseShvcHMtPnJlYWRfbXNyKE1TUl9FRkVSLCAmZWZlciwgY3R4dCkgIT0gWDg2RU1VTF9PS0FZ KSApCj4gLSAgICAgICAgcmV0dXJuIC0xOwo+IC0KPiAtICAgIHJldHVybiAhIShlZmVyICYgRUZF Ul9MTUEpOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW50Cj4gIHJlYWxtb2RlX2xvYWRfc2VnKAo+ICAg ICAgZW51bSB4ODZfc2VnbWVudCBzZWcsCj4gICAgICB1aW50MTZfdCBzZWwsCj4gQEAgLTE3Njcs OCArMTc1Miw3IEBAIHByb3Rtb2RlX2xvYWRfc2VnKAo+ICAgICAgICAgICAqIEV4cGVyaW1lbnRh bGx5IGluIGxvbmcgbW9kZSwgdGhlIEwgYW5kIEQgYml0cyBhcmUgY2hlY2tlZCBiZWZvcmUKPiAg ICAgICAgICAgKiB0aGUgUHJlc2VudCBiaXQuCj4gICAgICAgICAgICovCj4gLSAgICAgICAgaWYg KCBpbl9sb25nbW9kZShjdHh0LCBvcHMpICYmCj4gLSAgICAgICAgICAgICAoZGVzYy5iICYgKDEg PDwgMjEpKSAmJiAoZGVzYy5iICYgKDEgPDwgMjIpKSApCj4gKyAgICAgICAgaWYgKCBjdHh0LT5s bWEgJiYgKGRlc2MuYiAmICgxIDw8IDIxKSkgJiYgKGRlc2MuYiAmICgxIDw8IDIyKSkgKQo+ICAg ICAgICAgICAgICBnb3RvIHJhaXNlX2V4bjsKPiAgICAgICAgICBzZWwgPSAoc2VsIF4gcnBsKSB8 IGNwbDsKPiAgICAgICAgICBicmVhazsKPiBAQCAtMTgxOCwxMCArMTgwMiw4IEBAIHByb3Rtb2Rl X2xvYWRfc2VnKAo+IAo+ICAgICAgaWYgKCAhaXNfeDg2X3VzZXJfc2VnbWVudChzZWcpICkKPiAg ICAgIHsKPiAtICAgICAgICBpbnQgbG0gPSAoZGVzYy5iICYgKDF1IDw8IDEyKSkgPyAwIDogaW5f bG9uZ21vZGUoY3R4dCwgb3BzKTsKPiArICAgICAgICBib29sIGxtID0gKGRlc2MuYiAmICgxdSA8 PCAxMikpID8gMCA6IGN0eHQtPmxtYTsKPiAKPiAtICAgICAgICBpZiAoIGxtIDwgMCApCj4gLSAg ICAgICAgICAgIHJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsKPiAgICAgICAgICBpZiAoIGxt ICkKPiAgICAgICAgICB7Cj4gICAgICAgICAgICAgIHN3aXRjaCAoIHJjID0gb3BzLT5yZWFkKHNl bF9zZWcsIChzZWwgJiAweGZmZjgpICsgOCwKPiBAQCAtNTE5NSw3ICs1MTc3LDcgQEAgeDg2X2Vt dWxhdGUoCj4gICAgICAgICAgICAgICAgICBjYXNlIDB4MDM6IC8qIGJ1c3kgMTYtYml0IFRTUyAq Lwo+ICAgICAgICAgICAgICAgICAgY2FzZSAweDA0OiAvKiAxNi1iaXQgY2FsbCBnYXRlICovCj4g ICAgICAgICAgICAgICAgICBjYXNlIDB4MDU6IC8qIDE2LzMyLWJpdCB0YXNrIGdhdGUgKi8KPiAt ICAgICAgICAgICAgICAgICAgICBpZiAoIGluX2xvbmdtb2RlKGN0eHQsIG9wcykgKQo+ICsgICAg ICAgICAgICAgICAgICAgIGlmICggY3R4dC0+bG1hICkKPiAgICAgICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7Cj4gICAgICAgICAgICAgICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCj4gICAg ICAgICAgICAgICAgICBjYXNlIDB4MDI6IC8qIExEVCAqLwo+IEBAIC01MjQyLDcgKzUyMjQsNyBA QCB4ODZfZW11bGF0ZSgKPiAgICAgICAgICAgICAgICAgIHsKPiAgICAgICAgICAgICAgICAgIGNh c2UgMHgwMTogLyogYXZhaWxhYmxlIDE2LWJpdCBUU1MgKi8KPiAgICAgICAgICAgICAgICAgIGNh c2UgMHgwMzogLyogYnVzeSAxNi1iaXQgVFNTICovCj4gLSAgICAgICAgICAgICAgICAgICAgaWYg KCBpbl9sb25nbW9kZShjdHh0LCBvcHMpICkKPiArICAgICAgICAgICAgICAgICAgICBpZiAoIGN0 eHQtPmxtYSApCj4gICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAgICAg ICAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwo+ICAgICAgICAgICAgICAgICAgY2FzZSAweDAy OiAvKiBMRFQgKi8KPiBAQCAtNTI5MiwxMCArNTI3NCw3IEBAIHg4Nl9lbXVsYXRlKAo+ICAgICAg ICAgIHNyZWcuYXR0ci5ieXRlcyA9IDB4YzkzOyAvKiBHK0RCK1ArUytEYXRhICovCj4gCj4gICNp ZmRlZiBfX3g4Nl82NF9fCj4gLSAgICAgICAgcmMgPSBpbl9sb25nbW9kZShjdHh0LCBvcHMpOwo+ IC0gICAgICAgIGlmICggcmMgPCAwICkKPiAtICAgICAgICAgICAgZ290byBjYW5ub3RfZW11bGF0 ZTsKPiAtICAgICAgICBpZiAoIHJjICkKPiArICAgICAgICBpZiAoIGN0eHQtPmxtYSApCj4gICAg ICAgICAgewo+ICAgICAgICAgICAgICBjcy5hdHRyLmJ5dGVzID0gMHhhOWI7IC8qIEwrREIrUCtT K0NvZGUgKi8KPiAKPiBAQCAtNTczMiw5ICs1NzExLDcgQEAgeDg2X2VtdWxhdGUoCj4gICAgICAg ICAgICAgIGRzdC52YWwgPSBzcmMudmFsOwo+ICAgICAgICAgIGJyZWFrOwo+IAo+IC0gICAgY2Fz ZSBYODZFTVVMX09QQygweDBmLCAweDM0KTogLyogc3lzZW50ZXIgKi8gewo+IC0gICAgICAgIGlu dCBsbTsKPiAtCj4gKyAgICBjYXNlIFg4NkVNVUxfT1BDKDB4MGYsIDB4MzQpOiAvKiBzeXNlbnRl ciAqLwo+ICAgICAgICAgIHZjcHVfbXVzdF9oYXZlKHNlcCk7Cj4gICAgICAgICAgZ2VuZXJhdGVf ZXhjZXB0aW9uX2lmKG1vZGVfcmluZzAoKSwgRVhDX0dQLCAwKTsKPiAgICAgICAgICBnZW5lcmF0 ZV9leGNlcHRpb25faWYoIWluX3Byb3Rtb2RlKGN0eHQsIG9wcyksIEVYQ19HUCwgMCk7Cj4gQEAg LTU3NDUsMTcgKzU3MjIsMTQgQEAgeDg2X2VtdWxhdGUoCj4gICAgICAgICAgICAgIGdvdG8gZG9u ZTsKPiAKPiAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoIShtc3JfdmFsICYgMHhmZmZj KSwgRVhDX0dQLCAwKTsKPiAtICAgICAgICBsbSA9IGluX2xvbmdtb2RlKGN0eHQsIG9wcyk7Cj4g LSAgICAgICAgaWYgKCBsbSA8IDAgKQo+IC0gICAgICAgICAgICBnb3RvIGNhbm5vdF9lbXVsYXRl Owo+IAo+ICAgICAgICAgIF9yZWdzLmVmbGFncyAmPSB+KFg4Nl9FRkxBR1NfVk0gfCBYODZfRUZM QUdTX0lGIHwKPiBYODZfRUZMQUdTX1JGKTsKPiAKPiAgICAgICAgICBjcy5zZWwgPSBtc3JfdmFs ICYgfjM7IC8qIFNFTEVDVE9SX1JQTF9NQVNLICovCj4gICAgICAgICAgY3MuYmFzZSA9IDA7ICAg LyogZmxhdCBzZWdtZW50ICovCj4gICAgICAgICAgY3MubGltaXQgPSB+MHU7ICAvKiA0R0IgbGlt aXQgKi8KPiAtICAgICAgICBjcy5hdHRyLmJ5dGVzID0gbG0gPyAweGE5YiAgLyogRytMK1ArUytD b2RlICovCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMHhjOWI7IC8qIEcrREIrUCtT K0NvZGUgKi8KPiArICAgICAgICBjcy5hdHRyLmJ5dGVzID0gY3R4dC0+bG1hID8gMHhhOWIgIC8q IEcrTCtQK1MrQ29kZSAqLwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAw eGM5YjsgLyogRytEQitQK1MrQ29kZSAqLwo+IAo+ICAgICAgICAgIHNyZWcuc2VsID0gY3Muc2Vs ICsgODsKPiAgICAgICAgICBzcmVnLmJhc2UgPSAwOyAgIC8qIGZsYXQgc2VnbWVudCAqLwo+IEBA IC01NzcwLDE2ICs1NzQ0LDE1IEBAIHg4Nl9lbXVsYXRlKAo+ICAgICAgICAgIGlmICggKHJjID0g b3BzLT5yZWFkX21zcihNU1JfSUEzMl9TWVNFTlRFUl9FSVAsCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZtc3JfdmFsLCBjdHh0KSkgIT0gWDg2RU1VTF9PS0FZICkKPiAgICAg ICAgICAgICAgZ290byBkb25lOwo+IC0gICAgICAgIF9yZWdzLnIoaXApID0gbG0gPyBtc3JfdmFs IDogKHVpbnQzMl90KW1zcl92YWw7Cj4gKyAgICAgICAgX3JlZ3MucihpcCkgPSBjdHh0LT5sbWEg PyBtc3JfdmFsIDogKHVpbnQzMl90KW1zcl92YWw7Cj4gCj4gICAgICAgICAgaWYgKCAocmMgPSBv cHMtPnJlYWRfbXNyKE1TUl9JQTMyX1NZU0VOVEVSX0VTUCwKPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJm1zcl92YWwsIGN0eHQpKSAhPSBYODZFTVVMX09LQVkgKQo+ICAgICAg ICAgICAgICBnb3RvIGRvbmU7Cj4gLSAgICAgICAgX3JlZ3MucihzcCkgPSBsbSA/IG1zcl92YWwg OiAodWludDMyX3QpbXNyX3ZhbDsKPiArICAgICAgICBfcmVncy5yKHNwKSA9IGN0eHQtPmxtYSA/ IG1zcl92YWwgOiAodWludDMyX3QpbXNyX3ZhbDsKPiAKPiAgICAgICAgICBzaW5nbGVzdGVwID0g X3JlZ3MuZWZsYWdzICYgWDg2X0VGTEFHU19URjsKPiAgICAgICAgICBicmVhazsKPiAtICAgIH0K PiAKPiAgICAgIGNhc2UgWDg2RU1VTF9PUEMoMHgwZiwgMHgzNSk6IC8qIHN5c2V4aXQgKi8KPiAg ICAgICAgICB2Y3B1X211c3RfaGF2ZShzZXApOwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv eDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaAo+IGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4 Nl9lbXVsYXRlLmgKPiBpbmRleCAyMTVhZGY2Li4wNDc5ZTMwIDEwMDY0NAo+IC0tLSBhL3hlbi9h cmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oCj4gKysrIGIveGVuL2FyY2gveDg2L3g4 Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmgKPiBAQCAtNDU3LDYgKzQ1Nyw5IEBAIHN0cnVjdCB4ODZf ZW11bGF0ZV9jdHh0Cj4gICAgICAvKiBTZXQgdGhpcyBpZiB3cml0ZXMgbWF5IGhhdmUgc2lkZSBl ZmZlY3RzLiAqLwo+ICAgICAgYm9vbCBmb3JjZV93cml0ZWJhY2s7Cj4gCj4gKyAgICAvKiBMb25n IG1vZGUgYWN0aXZlPyAqLwo+ICsgICAgYm9vbCBsbWE7Cj4gKwo+ICAgICAgLyogQ2FsbGVyIGRh dGEgdGhhdCBjYW4gYmUgdXNlZCBieSB4ODZfZW11bGF0ZV9vcHMnIHJvdXRpbmVzLiAqLwo+ICAg ICAgdm9pZCAqZGF0YTsKPiAKPiAtLQo+IDIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==