From mboxrd@z Thu Jan 1 00:00:00 1970 From: Samuel Thibault Subject: Re: [PATCH 12/22] mini-os: add x86 native page table handling Date: Wed, 24 Aug 2016 00:40:02 +0200 Message-ID: <20160823224002.GH4401@var.home> References: <1471965368-6159-1-git-send-email-jgross@suse.com> <1471965368-6159-13-git-send-email-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1471965368-6159-13-git-send-email-jgross@suse.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Juergen Gross Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org, wei.liu2@citrix.com List-Id: xen-devel@lists.xenproject.org SnVlcmdlbiBHcm9zcywgb24gVHVlIDIzIEF1ZyAyMDE2IDE3OjE1OjU4ICswMjAwLCB3cm90ZToK PiBGb3Igc3VwcG9ydCBvZiBIVk1saXRlIGRvbid0IHVzZSBtbXVfdXBkYXRlIGh5cGVyY2FsbHMs IGJ1dCB3cml0ZSB0aGUKPiBwYWdlIHRhYmxlIGVudHJpZXMgZGlyZWN0bHkuCj4gCj4gU2lnbmVk LW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgoKUmV2aWV3ZWQtYnk6IFNh bXVlbCBUaGliYXVsdCA8c2FtdWVsLnRoaWJhdWx0QGVucy1seW9uLm9yZz4KCj4gLS0tCj4gIGFy Y2gveDg2L21tLmMgICAgICAgICB8IDE0NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLQo+ICBhcmNoL3g4Ni90cmFwcy5jICAgICAgfCAgMTAgKysrKwo+ ICBpbmNsdWRlL3g4Ni9hcmNoX21tLmggfCAgIDQgKysKPiAgaW5jbHVkZS94ODYvb3MuaCAgICAg IHwgICA5ICsrKysKPiAgNCBmaWxlcyBjaGFuZ2VkLCAxMzIgaW5zZXJ0aW9ucygrKSwgMzggZGVs ZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tLmMgYi9hcmNoL3g4Ni9tbS5j Cj4gaW5kZXggY2JiNTYxNy4uZjUyNDhhNCAxMDA2NDQKPiAtLS0gYS9hcmNoL3g4Ni9tbS5jCj4g KysrIGIvYXJjaC94ODYvbW0uYwo+IEBAIC0xMjMsMTYgKzEyMywyNSBAQCB2b2lkIGFyY2hfbW1f cHJlaW5pdCh2b2lkICpwKQo+ICAgKiB0YWJsZSBhdCBvZmZzZXQgaW4gcHJldmlvdXMgbGV2ZWwg TUZOIChwcmVmX2xfbWZuKS4gcHRfcGZuIGlzIGEgZ3Vlc3QKPiAgICogUEZOLgo+ICAgKi8KPiAr c3RhdGljIHBnZW50cnlfdCBwdF9wcm90W1BBR0VUQUJMRV9MRVZFTFNdID0gewo+ICsgICAgTDFf UFJPVCwKPiArICAgIEwyX1BST1QsCj4gKyAgICBMM19QUk9ULAo+ICsjaWYgZGVmaW5lZChfX3g4 Nl82NF9fKQo+ICsgICAgTDRfUFJPVCwKPiArI2VuZGlmCj4gK307Cj4gKwo+ICBzdGF0aWMgdm9p ZCBuZXdfcHRfZnJhbWUodW5zaWduZWQgbG9uZyAqcHRfcGZuLCB1bnNpZ25lZCBsb25nIHByZXZf bF9tZm4sIAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQs IHVuc2lnbmVkIGxvbmcgbGV2ZWwpCj4gIHsgICAKPiAtICAgIHBnZW50cnlfdCAqdGFiID0gcHRf YmFzZTsKPiArICAgIHBnZW50cnlfdCAqdGFiOwo+ICAgICAgdW5zaWduZWQgbG9uZyBwdF9wYWdl ID0gKHVuc2lnbmVkIGxvbmcpcGZuX3RvX3ZpcnQoKnB0X3Bmbik7IAo+IC0gICAgcGdlbnRyeV90 IHByb3RfZSwgcHJvdF90Owo+ICsjaWZkZWYgQ09ORklHX1BBUkFWSVJUCj4gICAgICBtbXVfdXBk YXRlX3QgbW11X3VwZGF0ZXNbMV07Cj4gICAgICBpbnQgcmM7Cj4gKyNlbmRpZgo+ICAgICAgCj4g LSAgICBwcm90X2UgPSBwcm90X3QgPSAwOwo+ICAgICAgREVCVUcoIkFsbG9jYXRpbmcgbmV3IEwl ZCBwdCBmcmFtZSBmb3IgcGZuPSVseCwgIgo+ICAgICAgICAgICAgInByZXZfbF9tZm49JWx4LCBv ZmZzZXQ9JWx4IiwgCj4gICAgICAgICAgICBsZXZlbCwgKnB0X3BmbiwgcHJldl9sX21mbiwgb2Zm c2V0KTsKPiBAQCAtMTQwLDMwICsxNDksMTIgQEAgc3RhdGljIHZvaWQgbmV3X3B0X2ZyYW1lKHVu c2lnbmVkIGxvbmcgKnB0X3BmbiwgdW5zaWduZWQgbG9uZyBwcmV2X2xfbWZuLAo+ICAgICAgLyog V2UgbmVlZCB0byBjbGVhciB0aGUgcGFnZSwgb3RoZXJ3aXNlIHdlIG1pZ2h0IGZhaWwgdG8gbWFw IGl0Cj4gICAgICAgICBhcyBhIHBhZ2UgdGFibGUgcGFnZSAqLwo+ICAgICAgbWVtc2V0KCh2b2lk KikgcHRfcGFnZSwgMCwgUEFHRV9TSVpFKTsgIAo+IC0gCj4gLSAgICBzd2l0Y2ggKCBsZXZlbCAp Cj4gLSAgICB7Cj4gLSAgICBjYXNlIEwxX0ZSQU1FOgo+IC0gICAgICAgIHByb3RfZSA9IEwxX1BS T1Q7Cj4gLSAgICAgICAgcHJvdF90ID0gTDJfUFJPVDsKPiAtICAgICAgICBicmVhazsKPiAtICAg IGNhc2UgTDJfRlJBTUU6Cj4gLSAgICAgICAgcHJvdF9lID0gTDJfUFJPVDsKPiAtICAgICAgICBw cm90X3QgPSBMM19QUk9UOwo+IC0gICAgICAgIGJyZWFrOwo+IC0jaWYgZGVmaW5lZChfX3g4Nl82 NF9fKQo+IC0gICAgY2FzZSBMM19GUkFNRToKPiAtICAgICAgICBwcm90X2UgPSBMM19QUk9UOwo+ IC0gICAgICAgIHByb3RfdCA9IEw0X1BST1Q7Cj4gLSAgICAgICAgYnJlYWs7Cj4gLSNlbmRpZgo+ IC0gICAgZGVmYXVsdDoKPiAtICAgICAgICBwcmludGsoIm5ld19wdF9mcmFtZSgpIGNhbGxlZCB3 aXRoIGludmFsaWQgbGV2ZWwgbnVtYmVyICVsdVxuIiwgbGV2ZWwpOwo+IC0gICAgICAgIGRvX2V4 aXQoKTsKPiAtICAgICAgICBicmVhazsKPiAtICAgIH0KPiAgCj4gKyAgICBBU1NFUlQobGV2ZWwg Pj0gMSAmJiBsZXZlbCA8PSBQQUdFVEFCTEVfTEVWRUxTKTsKPiArCj4gKyNpZmRlZiBDT05GSUdf UEFSQVZJUlQKPiAgICAgIC8qIE1ha2UgUEZOIGEgcGFnZSB0YWJsZSBwYWdlICovCj4gKyAgICB0 YWIgPSBwdF9iYXNlOwo+ICAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKQo+ICAgICAgdGFiID0gcHRl X3RvX3ZpcnQodGFiW2w0X3RhYmxlX29mZnNldChwdF9wYWdlKV0pOwo+ICAjZW5kaWYKPiBAQCAt MTcyLDcgKzE2Myw3IEBAIHN0YXRpYyB2b2lkIG5ld19wdF9mcmFtZSh1bnNpZ25lZCBsb25nICpw dF9wZm4sIHVuc2lnbmVkIGxvbmcgcHJldl9sX21mbiwKPiAgICAgIG1tdV91cGRhdGVzWzBdLnB0 ciA9ICh0YWJbbDJfdGFibGVfb2Zmc2V0KHB0X3BhZ2UpXSAmIFBBR0VfTUFTSykgKyAKPiAgICAg ICAgICBzaXplb2YocGdlbnRyeV90KSAqIGwxX3RhYmxlX29mZnNldChwdF9wYWdlKTsKPiAgICAg IG1tdV91cGRhdGVzWzBdLnZhbCA9IChwZ2VudHJ5X3QpcGZuX3RvX21mbigqcHRfcGZuKSA8PCBQ QUdFX1NISUZUIHwgCj4gLSAgICAgICAgKHByb3RfZSAmIH5fUEFHRV9SVyk7Cj4gKyAgICAgICAg KHB0X3Byb3RbbGV2ZWwgLSAxXSAmIH5fUEFHRV9SVyk7Cj4gICAgICAKPiAgICAgIGlmICggKHJj ID0gSFlQRVJWSVNPUl9tbXVfdXBkYXRlKG1tdV91cGRhdGVzLCAxLCBOVUxMLCBET01JRF9TRUxG KSkgPCAwICkKPiAgICAgIHsKPiBAQCAtMTg0LDEzICsxNzUsMTggQEAgc3RhdGljIHZvaWQgbmV3 X3B0X2ZyYW1lKHVuc2lnbmVkIGxvbmcgKnB0X3BmbiwgdW5zaWduZWQgbG9uZyBwcmV2X2xfbWZu LAo+ICAgICAgLyogSG9vayB0aGUgbmV3IHBhZ2UgdGFibGUgcGFnZSBpbnRvIHRoZSBoaWVyYXJj aHkgKi8KPiAgICAgIG1tdV91cGRhdGVzWzBdLnB0ciA9Cj4gICAgICAgICAgKChwZ2VudHJ5X3Qp cHJldl9sX21mbiA8PCBQQUdFX1NISUZUKSArIHNpemVvZihwZ2VudHJ5X3QpICogb2Zmc2V0Owo+ IC0gICAgbW11X3VwZGF0ZXNbMF0udmFsID0gKHBnZW50cnlfdClwZm5fdG9fbWZuKCpwdF9wZm4p IDw8IFBBR0VfU0hJRlQgfCBwcm90X3Q7Cj4gKyAgICBtbXVfdXBkYXRlc1swXS52YWwgPSAocGdl bnRyeV90KXBmbl90b19tZm4oKnB0X3BmbikgPDwgUEFHRV9TSElGVCB8Cj4gKyAgICAgICAgcHRf cHJvdFtsZXZlbF07Cj4gIAo+ICAgICAgaWYgKCAocmMgPSBIWVBFUlZJU09SX21tdV91cGRhdGUo bW11X3VwZGF0ZXMsIDEsIE5VTEwsIERPTUlEX1NFTEYpKSA8IDAgKSAKPiAgICAgIHsKPiAgICAg ICAgICBwcmludGsoIkVSUk9SOiBtbXVfdXBkYXRlIGZhaWxlZCB3aXRoIHJjPSVkXG4iLCByYyk7 Cj4gICAgICAgICAgZG9fZXhpdCgpOwo+ICAgICAgfQo+ICsjZWxzZQo+ICsgICAgdGFiID0gbWZu X3RvX3ZpcnQocHJldl9sX21mbik7Cj4gKyAgICB0YWJbb2Zmc2V0XSA9ICgqcHRfcGZuIDw8IFBB R0VfU0hJRlQpIHwgcHRfcHJvdFtsZXZlbF07Cj4gKyNlbmRpZgo+ICAKPiAgICAgICpwdF9wZm4g Kz0gMTsKPiAgfQo+IEBAIC0yMDIsMTIgKzE5OCwxNCBAQCBzdGF0aWMgdm9pZCBidWlsZF9wYWdl dGFibGUodW5zaWduZWQgbG9uZyAqc3RhcnRfcGZuLCB1bnNpZ25lZCBsb25nICptYXhfcGZuKQo+ ICB7Cj4gICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0X2FkZHJlc3MsIGVuZF9hZGRyZXNzOwo+ICAg ICAgdW5zaWduZWQgbG9uZyBwZm5fdG9fbWFwLCBwdF9wZm4gPSAqc3RhcnRfcGZuOwo+IC0gICAg c3RhdGljIG1tdV91cGRhdGVfdCBtbXVfdXBkYXRlc1tMMV9QQUdFVEFCTEVfRU5UUklFUyArIDFd Owo+ICAgICAgcGdlbnRyeV90ICp0YWIgPSBwdF9iYXNlLCBwYWdlOwo+ICAgICAgdW5zaWduZWQg bG9uZyBwdF9tZm4gPSBwZm5fdG9fbWZuKHZpcnRfdG9fcGZuKHB0X2Jhc2UpKTsKPiAgICAgIHVu c2lnbmVkIGxvbmcgb2Zmc2V0Owo+ICsjaWZkZWYgQ09ORklHX1BBUkFWSVJUCj4gKyAgICBzdGF0 aWMgbW11X3VwZGF0ZV90IG1tdV91cGRhdGVzW0wxX1BBR0VUQUJMRV9FTlRSSUVTICsgMV07Cj4g ICAgICBpbnQgY291bnQgPSAwOwo+ICAgICAgaW50IHJjOwo+ICsjZW5kaWYKPiAgCj4gICAgICAv KiBCZSBjb25zZXJ2YXRpdmU6IGV2ZW4gaWYgd2Uga25vdyB0aGVyZSB3aWxsIGJlIG1vcmUgcGFn ZXMgYWxyZWFkeQo+ICAgICAgICAgbWFwcGVkLCBzdGFydCB0aGUgbG9vcCBhdCB0aGUgdmVyeSBi ZWdpbm5pbmcuICovCj4gQEAgLTIyNSw2ICsyMjMsMTAgQEAgc3RhdGljIHZvaWQgYnVpbGRfcGFn ZXRhYmxlKHVuc2lnbmVkIGxvbmcgKnN0YXJ0X3BmbiwgdW5zaWduZWQgbG9uZyAqbWF4X3BmbikK PiAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBsb25nKXBmbl90b192aXJ0KCptYXhfcGZuKSAt IAo+ICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpJl90ZXh0KT4+MjApOwo+ICAgICAg fQo+ICsjZWxzZQo+ICsgICAgLyogUm91bmQgdXAgdG8gbmV4dCAyTUIgYm91bmRhcnkgYXMgd2Ug YXJlIHVzaW5nIDJNQiBwYWdlcyBvbiBIVk1saXRlLiAqLwo+ICsgICAgcGZuX3RvX21hcCA9IChw Zm5fdG9fbWFwICsgTDFfUEFHRVRBQkxFX0VOVFJJRVMgLSAxKSAmCj4gKyAgICAgICAgICAgICAg ICAgfihMMV9QQUdFVEFCTEVfRU5UUklFUyAtIDEpOwo+ICAjZW5kaWYKPiAgCj4gICAgICBzdGFy dF9hZGRyZXNzID0gKHVuc2lnbmVkIGxvbmcpcGZuX3RvX3ZpcnQocGZuX3RvX21hcCk7Cj4gQEAg LTI1Nyw2ICsyNTksNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9wYWdldGFibGUodW5zaWduZWQgbG9u ZyAqc3RhcnRfcGZuLCB1bnNpZ25lZCBsb25nICptYXhfcGZuKQo+ICAgICAgICAgIHB0X21mbiA9 IHB0ZV90b19tZm4ocGFnZSk7Cj4gICAgICAgICAgdGFiID0gdG9fdmlydChtZm5fdG9fcGZuKHB0 X21mbikgPDwgUEFHRV9TSElGVCk7Cj4gICAgICAgICAgb2Zmc2V0ID0gbDJfdGFibGVfb2Zmc2V0 KHN0YXJ0X2FkZHJlc3MpOyAgICAgICAgCj4gKyNpZmRlZiBDT05GSUdfUEFSQVZJUlQKPiAgICAg ICAgICAvKiBOZWVkIG5ldyBMMSBwdCBmcmFtZSAqLwo+ICAgICAgICAgIGlmICggISh0YWJbb2Zm c2V0XSAmIF9QQUdFX1BSRVNFTlQpICkKPiAgICAgICAgICAgICAgbmV3X3B0X2ZyYW1lKCZwdF9w Zm4sIHB0X21mbiwgb2Zmc2V0LCBMMV9GUkFNRSk7Cj4gQEAgLTI4OCw2ICsyOTEsMTIgQEAgc3Rh dGljIHZvaWQgYnVpbGRfcGFnZXRhYmxlKHVuc2lnbmVkIGxvbmcgKnN0YXJ0X3BmbiwgdW5zaWdu ZWQgbG9uZyAqbWF4X3BmbikKPiAgICAgICAgICAgICAgY291bnQgPSAwOwo+ICAgICAgICAgIH0K PiAgICAgICAgICBzdGFydF9hZGRyZXNzICs9IFBBR0VfU0laRTsKPiArI2Vsc2UKPiArICAgICAg ICBpZiAoICEodGFiW29mZnNldF0gJiBfUEFHRV9QUkVTRU5UKSApCj4gKyAgICAgICAgICAgIHRh YltvZmZzZXRdID0gKHBnZW50cnlfdClwZm5fdG9fbWFwIDw8IFBBR0VfU0hJRlQgfAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgIEwyX1BST1QgfCBfUEFHRV9QU0U7Cj4gKyAgICAgICAgc3Rh cnRfYWRkcmVzcyArPSAxVUwgPDwgTDJfUEFHRVRBQkxFX1NISUZUOwo+ICsjZW5kaWYKPiAgICAg IH0KPiAgCj4gICAgICAqc3RhcnRfcGZuID0gcHRfcGZuOwo+IEBAIC0zMDIsMTYgKzMxMSwxOSBA QCBzdGF0aWMgdm9pZCBzZXRfcmVhZG9ubHkodm9pZCAqdGV4dCwgdm9pZCAqZXRleHQpCj4gICAg ICB1bnNpZ25lZCBsb25nIHN0YXJ0X2FkZHJlc3MgPQo+ICAgICAgICAgICgodW5zaWduZWQgbG9u ZykgdGV4dCArIFBBR0VfU0laRSAtIDEpICYgUEFHRV9NQVNLOwo+ICAgICAgdW5zaWduZWQgbG9u ZyBlbmRfYWRkcmVzcyA9ICh1bnNpZ25lZCBsb25nKSBldGV4dDsKPiAtICAgIHN0YXRpYyBtbXVf dXBkYXRlX3QgbW11X3VwZGF0ZXNbTDFfUEFHRVRBQkxFX0VOVFJJRVMgKyAxXTsKPiAgICAgIHBn ZW50cnlfdCAqdGFiID0gcHRfYmFzZSwgcGFnZTsKPiAgICAgIHVuc2lnbmVkIGxvbmcgbWZuID0g cGZuX3RvX21mbih2aXJ0X3RvX3BmbihwdF9iYXNlKSk7Cj4gICAgICB1bnNpZ25lZCBsb25nIG9m ZnNldDsKPiArICAgIHVuc2lnbmVkIGxvbmcgcGFnZV9zaXplID0gUEFHRV9TSVpFOwo+ICsjaWZk ZWYgQ09ORklHX1BBUkFWSVJUCj4gKyAgICBzdGF0aWMgbW11X3VwZGF0ZV90IG1tdV91cGRhdGVz W0wxX1BBR0VUQUJMRV9FTlRSSUVTICsgMV07Cj4gICAgICBpbnQgY291bnQgPSAwOwo+ICAgICAg aW50IHJjOwo+ICsjZW5kaWYKPiAgCj4gICAgICBwcmludGsoInNldHRpbmcgJXAtJXAgcmVhZG9u bHlcbiIsIHRleHQsIGV0ZXh0KTsKPiAgCj4gLSAgICB3aGlsZSAoIHN0YXJ0X2FkZHJlc3MgKyBQ QUdFX1NJWkUgPD0gZW5kX2FkZHJlc3MgKQo+ICsgICAgd2hpbGUgKCBzdGFydF9hZGRyZXNzICsg cGFnZV9zaXplIDw9IGVuZF9hZGRyZXNzICkKPiAgICAgIHsKPiAgICAgICAgICB0YWIgPSBwdF9i YXNlOwo+ICAgICAgICAgIG1mbiA9IHBmbl90b19tZm4odmlydF90b19wZm4ocHRfYmFzZSkpOwo+ IEBAIC0zMjcsMjYgKzMzOSwzNCBAQCBzdGF0aWMgdm9pZCBzZXRfcmVhZG9ubHkodm9pZCAqdGV4 dCwgdm9pZCAqZXRleHQpCj4gICAgICAgICAgbWZuID0gcHRlX3RvX21mbihwYWdlKTsKPiAgICAg ICAgICB0YWIgPSB0b192aXJ0KG1mbl90b19wZm4obWZuKSA8PCBQQUdFX1NISUZUKTsKPiAgICAg ICAgICBvZmZzZXQgPSBsMl90YWJsZV9vZmZzZXQoc3RhcnRfYWRkcmVzcyk7ICAgICAgICAKPiAt ICAgICAgICBwYWdlID0gdGFiW29mZnNldF07Cj4gLSAgICAgICAgbWZuID0gcHRlX3RvX21mbihw YWdlKTsKPiAtICAgICAgICB0YWIgPSB0b192aXJ0KG1mbl90b19wZm4obWZuKSA8PCBQQUdFX1NI SUZUKTsKPiArICAgICAgICBpZiAoICEodGFiW29mZnNldF0gJiBfUEFHRV9QU0UpICkKPiArICAg ICAgICB7Cj4gKyAgICAgICAgICAgIHBhZ2UgPSB0YWJbb2Zmc2V0XTsKPiArICAgICAgICAgICAg bWZuID0gcHRlX3RvX21mbihwYWdlKTsKPiArICAgICAgICAgICAgdGFiID0gdG9fdmlydChtZm5f dG9fcGZuKG1mbikgPDwgUEFHRV9TSElGVCk7Cj4gIAo+IC0gICAgICAgIG9mZnNldCA9IGwxX3Rh YmxlX29mZnNldChzdGFydF9hZGRyZXNzKTsKPiArICAgICAgICAgICAgb2Zmc2V0ID0gbDFfdGFi bGVfb2Zmc2V0KHN0YXJ0X2FkZHJlc3MpOwo+ICsgICAgICAgIH0KPiAgCj4gICAgICAgICAgaWYg KCBzdGFydF9hZGRyZXNzICE9ICh1bnNpZ25lZCBsb25nKSZzaGFyZWRfaW5mbyApCj4gICAgICAg ICAgewo+ICsjaWZkZWYgQ09ORklHX1BBUkFWSVJUCj4gICAgICAgICAgICAgIG1tdV91cGRhdGVz W2NvdW50XS5wdHIgPSAKPiAgICAgICAgICAgICAgICAgICgocGdlbnRyeV90KW1mbiA8PCBQQUdF X1NISUZUKSArIHNpemVvZihwZ2VudHJ5X3QpICogb2Zmc2V0Owo+ICAgICAgICAgICAgICBtbXVf dXBkYXRlc1tjb3VudF0udmFsID0gdGFiW29mZnNldF0gJiB+X1BBR0VfUlc7Cj4gICAgICAgICAg ICAgIGNvdW50Kys7Cj4gKyNlbHNlCj4gKyAgICAgICAgICAgIHRhYltvZmZzZXRdICY9IH5fUEFH RV9SVzsKPiArI2VuZGlmCj4gICAgICAgICAgfQo+ICAgICAgICAgIGVsc2UKPiAgICAgICAgICAg ICAgcHJpbnRrKCJza2lwcGVkICVseFxuIiwgc3RhcnRfYWRkcmVzcyk7Cj4gIAo+IC0gICAgICAg IHN0YXJ0X2FkZHJlc3MgKz0gUEFHRV9TSVpFOwo+ICsgICAgICAgIHN0YXJ0X2FkZHJlc3MgKz0g cGFnZV9zaXplOwo+ICAKPiArI2lmZGVmIENPTkZJR19QQVJBVklSVAo+ICAgICAgICAgIGlmICgg Y291bnQgPT0gTDFfUEFHRVRBQkxFX0VOVFJJRVMgfHwgCj4gLSAgICAgICAgICAgICBzdGFydF9h ZGRyZXNzICsgUEFHRV9TSVpFID4gZW5kX2FkZHJlc3MgKQo+ICsgICAgICAgICAgICAgc3RhcnRf YWRkcmVzcyArIHBhZ2Vfc2l6ZSA+IGVuZF9hZGRyZXNzICkKPiAgICAgICAgICB7Cj4gICAgICAg ICAgICAgIHJjID0gSFlQRVJWSVNPUl9tbXVfdXBkYXRlKG1tdV91cGRhdGVzLCBjb3VudCwgTlVM TCwgRE9NSURfU0VMRik7Cj4gICAgICAgICAgICAgIGlmICggcmMgPCAwICkKPiBAQCAtMzU2LDgg KzM3NiwxMyBAQCBzdGF0aWMgdm9pZCBzZXRfcmVhZG9ubHkodm9pZCAqdGV4dCwgdm9pZCAqZXRl eHQpCj4gICAgICAgICAgICAgIH0KPiAgICAgICAgICAgICAgY291bnQgPSAwOwo+ICAgICAgICAg IH0KPiArI2Vsc2UKPiArICAgICAgICBpZiAoIHN0YXJ0X2FkZHJlc3MgPT0gKDFVTCA8PCBMMl9Q QUdFVEFCTEVfU0hJRlQpICkKPiArICAgICAgICAgICAgcGFnZV9zaXplID0gMVVMIDw8IEwyX1BB R0VUQUJMRV9TSElGVDsKPiArI2VuZGlmCj4gICAgICB9Cj4gIAo+ICsjaWZkZWYgQ09ORklHX1BB UkFWSVJUCj4gICAgICB7Cj4gICAgICAgICAgbW11ZXh0X29wX3Qgb3AgPSB7Cj4gICAgICAgICAg ICAgIC5jbWQgPSBNTVVFWFRfVExCX0ZMVVNIX0FMTCwKPiBAQCAtMzY1LDYgKzM5MCw5IEBAIHN0 YXRpYyB2b2lkIHNldF9yZWFkb25seSh2b2lkICp0ZXh0LCB2b2lkICpldGV4dCkKPiAgICAgICAg ICBpbnQgY291bnQ7Cj4gICAgICAgICAgSFlQRVJWSVNPUl9tbXVleHRfb3AoJm9wLCAxLCAmY291 bnQsIERPTUlEX1NFTEYpOwo+ICAgICAgfQo+ICsjZWxzZQo+ICsgICAgd3JpdGVfY3IzKCh1bnNp Z25lZCBsb25nKXB0X2Jhc2UpOwo+ICsjZW5kaWYKPiAgfQo+ICAKPiAgLyoKPiBAQCAtMzk0LDYg KzQyMiw4IEBAIHN0YXRpYyBwZ2VudHJ5X3QgKmdldF9wZ3QodW5zaWduZWQgbG9uZyB2YSkKPiAg ICAgIG9mZnNldCA9IGwyX3RhYmxlX29mZnNldCh2YSk7Cj4gICAgICBpZiAoICEodGFiW29mZnNl dF0gJiBfUEFHRV9QUkVTRU5UKSApCj4gICAgICAgICAgcmV0dXJuIE5VTEw7Cj4gKyAgICBpZiAo IHRhYltvZmZzZXRdICYgX1BBR0VfUFNFICkKPiArICAgICAgICByZXR1cm4gJnRhYltvZmZzZXRd Owo+ICAgICAgbWZuID0gcHRlX3RvX21mbih0YWJbb2Zmc2V0XSk7Cj4gICAgICB0YWIgPSBtZm5f dG9fdmlydChtZm4pOwo+ICAgICAgb2Zmc2V0ID0gbDFfdGFibGVfb2Zmc2V0KHZhKTsKPiBAQCAt NDQ4LDYgKzQ3OCw5IEBAIHBnZW50cnlfdCAqbmVlZF9wZ3QodW5zaWduZWQgbG9uZyB2YSkKPiAg ICAgICAgICBuZXdfcHRfZnJhbWUoJnB0X3BmbiwgcHRfbWZuLCBvZmZzZXQsIEwxX0ZSQU1FKTsK PiAgICAgIH0KPiAgICAgIEFTU0VSVCh0YWJbb2Zmc2V0XSAmIF9QQUdFX1BSRVNFTlQpOwo+ICsg ICAgaWYgKCB0YWJbb2Zmc2V0XSAmIF9QQUdFX1BTRSApCj4gKyAgICAgICAgcmV0dXJuICZ0YWJb b2Zmc2V0XTsKPiArCj4gICAgICBwdF9tZm4gPSBwdGVfdG9fbWZuKHRhYltvZmZzZXRdKTsKPiAg ICAgIHRhYiA9IG1mbl90b192aXJ0KHB0X21mbik7Cj4gIAo+IEBAIC01MjQsOCArNTU3LDYgQEAg aW50IGRvX21hcF9mcmFtZXModW5zaWduZWQgbG9uZyB2YSwKPiAgewo+ICAgICAgcGdlbnRyeV90 ICpwZ3QgPSBOVUxMOwo+ICAgICAgdW5zaWduZWQgbG9uZyBkb25lID0gMDsKPiAtICAgIHVuc2ln bmVkIGxvbmcgaTsKPiAtICAgIGludCByYzsKPiAgCj4gICAgICBpZiAoICFtZm5zICkgCj4gICAg ICB7Cj4gQEAgLTUzOSw2ICs1NzAsOSBAQCBpbnQgZG9fbWFwX2ZyYW1lcyh1bnNpZ25lZCBsb25n IHZhLAo+ICAgICAgICAgIG1lbXNldChlcnIsIDB4MDAsIG4gKiBzaXplb2YoaW50KSk7Cj4gICAg ICB3aGlsZSAoIGRvbmUgPCBuICkKPiAgICAgIHsKPiArI2lmZGVmIENPTkZJR19QQVJBVklSVAo+ ICsgICAgICAgIHVuc2lnbmVkIGxvbmcgaTsKPiArICAgICAgICBpbnQgcmM7Cj4gICAgICAgICAg dW5zaWduZWQgbG9uZyB0b2RvOwo+ICAKPiAgICAgICAgICBpZiAoIGVyciApCj4gQEAgLTU3OCw2 ICs2MTIsMTcgQEAgaW50IGRvX21hcF9mcmFtZXModW5zaWduZWQgbG9uZyB2YSwKPiAgICAgICAg ICAgICAgfQo+ICAgICAgICAgIH0KPiAgICAgICAgICBkb25lICs9IHRvZG87Cj4gKyNlbHNlCj4g KyAgICAgICAgaWYgKCAhcGd0IHx8ICEodmEgJiBMMV9NQVNLKSApCj4gKyAgICAgICAgICAgIHBn dCA9IG5lZWRfcGd0KHZhICYgfkwxX01BU0spOwo+ICsgICAgICAgIGlmICggIXBndCApCj4gKyAg ICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ICsKPiArICAgICAgICBBU1NFUlQoISgqcGd0ICYg X1BBR0VfUFNFKSk7Cj4gKyAgICAgICAgcGd0W2wxX3RhYmxlX29mZnNldCh2YSldID0gKHBnZW50 cnlfdCkKPiArICAgICAgICAgICAgKCgobWZuc1tkb25lICogc3RyaWRlXSArIGRvbmUgKiBpbmNy KSA8PCBQQUdFX1NISUZUKSB8IHByb3QpOwo+ICsgICAgICAgIGRvbmUrKzsKPiArI2VuZGlmCj4g ICAgICB9Cj4gIAo+ICAgICAgcmV0dXJuIDA7Cj4gQEAgLTYwOSwxNiArNjU0LDIxIEBAIHZvaWQg Km1hcF9mcmFtZXNfZXgoY29uc3QgdW5zaWduZWQgbG9uZyAqbWZucywgdW5zaWduZWQgbG9uZyBu LAo+ICAjZGVmaW5lIFVOTUFQX0JBVENIICgoU1RBQ0tfU0laRSAvIDIpIC8gc2l6ZW9mKG11bHRp Y2FsbF9lbnRyeV90KSkKPiAgaW50IHVubWFwX2ZyYW1lcyh1bnNpZ25lZCBsb25nIHZhLCB1bnNp Z25lZCBsb25nIG51bV9mcmFtZXMpCj4gIHsKPiArI2lmZGVmIENPTkZJR19QQVJBVklSVAo+ICAg ICAgaW50IG4gPSBVTk1BUF9CQVRDSDsKPiAgICAgIG11bHRpY2FsbF9lbnRyeV90IGNhbGxbbl07 Cj4gICAgICBpbnQgcmV0Owo+ICAgICAgaW50IGk7Cj4gKyNlbHNlCj4gKyAgICBwZ2VudHJ5X3Qg KnBndDsKPiArI2VuZGlmCj4gIAo+ICAgICAgQVNTRVJUKCEoKHVuc2lnbmVkIGxvbmcpdmEgJiB+ UEFHRV9NQVNLKSk7Cj4gIAo+ICAgICAgREVCVUcoInZhPSVwLCBudW09MHglbHhcbiIsIHZhLCBu dW1fZnJhbWVzKTsKPiAgCj4gICAgICB3aGlsZSAoIG51bV9mcmFtZXMgKSB7Cj4gKyNpZmRlZiBD T05GSUdfUEFSQVZJUlQKPiAgICAgICAgICBpZiAoIG4gPiBudW1fZnJhbWVzICkKPiAgICAgICAg ICAgICAgbiA9IG51bV9mcmFtZXM7Cj4gIAo+IEBAIC02NTMsNiArNzAzLDE3IEBAIGludCB1bm1h cF9mcmFtZXModW5zaWduZWQgbG9uZyB2YSwgdW5zaWduZWQgbG9uZyBudW1fZnJhbWVzKQo+ICAg ICAgICAgICAgICB9Cj4gICAgICAgICAgfQo+ICAgICAgICAgIG51bV9mcmFtZXMgLT0gbjsKPiAr I2Vsc2UKPiArICAgICAgICBwZ3QgPSBnZXRfcGd0KHZhKTsKPiArICAgICAgICBpZiAoIHBndCAp Cj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICBBU1NFUlQoISgqcGd0ICYgX1BBR0VfUFNFKSk7 Cj4gKyAgICAgICAgICAgICpwZ3QgPSAwOwo+ICsgICAgICAgICAgICBpbnZscGcodmEpOwo+ICsg ICAgICAgIH0KPiArICAgICAgICB2YSArPSBQQUdFX1NJWkU7Cj4gKyAgICAgICAgbnVtX2ZyYW1l cy0tOwo+ICsjZW5kaWYKPiAgICAgIH0KPiAgICAgIHJldHVybiAwOwo+ICB9Cj4gQEAgLTY2Miwx NCArNzIzLDI0IEBAIGludCB1bm1hcF9mcmFtZXModW5zaWduZWQgbG9uZyB2YSwgdW5zaWduZWQg bG9uZyBudW1fZnJhbWVzKQo+ICAgKi8KPiAgc3RhdGljIHZvaWQgY2xlYXJfYm9vdHN0cmFwKHZv aWQpCj4gIHsKPiArI2lmZGVmIENPTkZJR19QQVJBVklSVAo+ICAgICAgcHRlX3QgbnVsbHB0ZSA9 IHsgfTsKPiAgICAgIGludCByYzsKPiArI2Vsc2UKPiArICAgIHBnZW50cnlfdCAqcGd0Owo+ICsj ZW5kaWYKPiAgCj4gICAgICAvKiBVc2UgZmlyc3QgcGFnZSBhcyB0aGUgQ29XIHplcm8gcGFnZSAq Lwo+ICAgICAgbWVtc2V0KCZfdGV4dCwgMCwgUEFHRV9TSVpFKTsKPiAgICAgIG1mbl96ZXJvID0g dmlydF90b19tZm4oKHVuc2lnbmVkIGxvbmcpICZfdGV4dCk7Cj4gKyNpZmRlZiBDT05GSUdfUEFS QVZJUlQKPiAgICAgIGlmICggKHJjID0gSFlQRVJWSVNPUl91cGRhdGVfdmFfbWFwcGluZygwLCBu dWxscHRlLCBVVk1GX0lOVkxQRykpICkKPiAgICAgICAgICBwcmludGsoIlVuYWJsZSB0byB1bm1h cCBOVUxMIHBhZ2UuIHJjPSVkXG4iLCByYyk7Cj4gKyNlbHNlCj4gKyAgICBwZ3QgPSBnZXRfcGd0 KCh1bnNpZ25lZCBsb25nKSZfdGV4dCk7Cj4gKyAgICAqcGd0ID0gMDsKPiArICAgIGludmxwZygo dW5zaWduZWQgbG9uZykmX3RleHQpOwo+ICsjZW5kaWYKPiAgfQo+ICAKPiAgI2lmZGVmIENPTkZJ R19QQVJBVklSVAo+IGRpZmYgLS1naXQgYS9hcmNoL3g4Ni90cmFwcy5jIGIvYXJjaC94ODYvdHJh cHMuYwo+IGluZGV4IDJkMzIyMmQuLmFhMTdkYTMgMTAwNjQ0Cj4gLS0tIGEvYXJjaC94ODYvdHJh cHMuYwo+ICsrKyBiL2FyY2gveDg2L3RyYXBzLmMKPiBAQCAtMTIxLDcgKzEyMSw5IEBAIHZvaWQg cGFnZV93YWxrKHVuc2lnbmVkIGxvbmcgdmlydF9hZGRyZXNzKQo+ICBzdGF0aWMgaW50IGhhbmRs ZV9jb3codW5zaWduZWQgbG9uZyBhZGRyKSB7Cj4gICAgICAgICAgcGdlbnRyeV90ICp0YWIgPSBw dF9iYXNlLCBwYWdlOwo+ICAJdW5zaWduZWQgbG9uZyBuZXdfcGFnZTsKPiArI2lmZGVmIENPTkZJ R19QQVJBVklSVAo+ICAJaW50IHJjOwo+ICsjZW5kaWYKPiAgCj4gICNpZiBkZWZpbmVkKF9feDg2 XzY0X18pCj4gICAgICAgICAgcGFnZSA9IHRhYltsNF90YWJsZV9vZmZzZXQoYWRkcildOwo+IEBA IC0xMzcsNiArMTM5LDggQEAgc3RhdGljIGludCBoYW5kbGVfY293KHVuc2lnbmVkIGxvbmcgYWRk cikgewo+ICAgICAgICAgIHBhZ2UgPSB0YWJbbDJfdGFibGVfb2Zmc2V0KGFkZHIpXTsKPiAgCWlm ICghKHBhZ2UgJiBfUEFHRV9QUkVTRU5UKSkKPiAgCSAgICByZXR1cm4gMDsKPiArCWlmICggcGFn ZSAmIF9QQUdFX1BTRSApCj4gKwkgICAgcmV0dXJuIDA7Cj4gICAgICAgICAgdGFiID0gcHRlX3Rv X3ZpcnQocGFnZSk7Cj4gICAgICAgICAgCj4gICAgICAgICAgcGFnZSA9IHRhYltsMV90YWJsZV9v ZmZzZXQoYWRkcildOwo+IEBAIC0xNDksMTIgKzE1MywxOCBAQCBzdGF0aWMgaW50IGhhbmRsZV9j b3codW5zaWduZWQgbG9uZyBhZGRyKSB7Cj4gIAluZXdfcGFnZSA9IGFsbG9jX3BhZ2VzKDApOwo+ ICAJbWVtc2V0KCh2b2lkKikgbmV3X3BhZ2UsIDAsIFBBR0VfU0laRSk7Cj4gIAo+ICsjaWZkZWYg Q09ORklHX1BBUkFWSVJUCj4gIAlyYyA9IEhZUEVSVklTT1JfdXBkYXRlX3ZhX21hcHBpbmcoYWRk ciAmIFBBR0VfTUFTSywgX19wdGUodmlydF90b19tYWNoKG5ld19wYWdlKSB8IEwxX1BST1QpLCBV Vk1GX0lOVkxQRyk7Cj4gIAlpZiAoIXJjKQo+ICAJCXJldHVybiAxOwo+ICAKPiAgCXByaW50aygi TWFwIHplcm8gcGFnZSB0byAlbHggZmFpbGVkOiAlZC5cbiIsIGFkZHIsIHJjKTsKPiAgCXJldHVy biAwOwo+ICsjZWxzZQo+ICsJdGFiW2wxX3RhYmxlX29mZnNldChhZGRyKV0gPSB2aXJ0X3RvX21h Y2gobmV3X3BhZ2UpIHwgTDFfUFJPVDsKPiArCWludmxwZyhhZGRyKTsKPiArCXJldHVybiAxOwo+ ICsjZW5kaWYKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgZG9fc3RhY2tfd2Fsayh1bnNpZ25lZCBs b25nIGZyYW1lX2Jhc2UpCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUveDg2L2FyY2hfbW0uaCBiL2lu Y2x1ZGUveDg2L2FyY2hfbW0uaAo+IGluZGV4IDI4YWI0MDYuLmUwYWU1NTIgMTAwNjQ0Cj4gLS0t IGEvaW5jbHVkZS94ODYvYXJjaF9tbS5oCj4gKysrIGIvaW5jbHVkZS94ODYvYXJjaF9tbS5oCj4g QEAgLTc4LDYgKzc4LDggQEAKPiAgI2RlZmluZSBMMl9QQUdFVEFCTEVfRU5UUklFUyAgICA1MTIK PiAgI2RlZmluZSBMM19QQUdFVEFCTEVfRU5UUklFUyAgICA0Cj4gIAo+ICsjZGVmaW5lIFBBR0VU QUJMRV9MRVZFTFMgICAgICAgIDMKPiArCj4gICNkZWZpbmUgUEFERFJfQklUUyAgICAgICAgICAg ICAgNDQKPiAgI2RlZmluZSBQQUREUl9NQVNLICAgICAgICAgICAgICAoKDFVTEwgPDwgUEFERFJf QklUUyktMSkKPiAgCj4gQEAgLTExMCw2ICsxMTIsOCBAQCB0eXBlZGVmIHVpbnQ2NF90IHBnZW50 cnlfdDsKPiAgI2RlZmluZSBMM19QQUdFVEFCTEVfRU5UUklFUyAgICA1MTIKPiAgI2RlZmluZSBM NF9QQUdFVEFCTEVfRU5UUklFUyAgICA1MTIKPiAgCj4gKyNkZWZpbmUgUEFHRVRBQkxFX0xFVkVM UyAgICAgICAgNAo+ICsKPiAgLyogVGhlc2UgYXJlIHBhZ2UtdGFibGUgbGltaXRhdGlvbnMuIEN1 cnJlbnQgQ1BVcyBzdXBwb3J0IG9ubHkgNDAtYml0IHBoeXMuICovCj4gICNkZWZpbmUgUEFERFJf QklUUyAgICAgICAgICAgICAgNTIKPiAgI2RlZmluZSBWQUREUl9CSVRTICAgICAgICAgICAgICA0 OAo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3g4Ni9vcy5oIGIvaW5jbHVkZS94ODYvb3MuaAo+IGlu ZGV4IDEwODMzMjguLjIwY2MyN2YgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS94ODYvb3MuaAo+ICsr KyBiL2luY2x1ZGUveDg2L29zLmgKPiBAQCAtMjA2LDYgKzIwNiwxNSBAQCBzdGF0aWMgaW5saW5l IGludCBpcnFzX2Rpc2FibGVkKHZvaWQpCj4gICAqLwo+ICB0eXBlZGVmIHN0cnVjdCB7IHZvbGF0 aWxlIGludCBjb3VudGVyOyB9IGF0b21pY190Owo+ICAKPiArc3RhdGljIGlubGluZSB2b2lkIHdy aXRlX2NyMyh1bnNpZ25lZCBsb25nIGNyMykKPiArewo+ICsgICAgYXNtIHZvbGF0aWxlKCAibW92 ICUwLCAlJWNyMyIgOiA6ICJyIiAoY3IzKSA6ICJtZW1vcnkiICk7Cj4gK30KPiArCj4gK3N0YXRp YyBpbmxpbmUgdm9pZCBpbnZscGcodW5zaWduZWQgbG9uZyB2YSkKPiArewo+ICsgICAgYXNtIHZv bGF0aWxlICggImludmxwZyAlMCI6IDogIm0iICgqKGNvbnN0IGNoYXIgKikodmEpKSA6ICJtZW1v cnkiICk7Cj4gK30KPiAgCj4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKiBpMzg2ICoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCj4gICNpZmRlZiBfX0lOU0lERV9NSU5JT1NfXwo+ IC0tIAo+IDIuNi42Cj4gCgotLSAKU2FtdWVsCgkvKiBBbXVzZSB0aGUgdXNlci4gKi8KCXByaW50 aygKIiAgICAgICAgICAgICAgXFx8LyBfX19fIFxcfC9cbiIKIiAgICAgICAgICAgICAgXCJAJy8g LC4gXFxgQFwiXG4iCiIgICAgICAgICAgICAgIC9ffCBcXF9fLyB8X1xcXG4iCiIgICAgICAgICAg ICAgICAgIFxcX19VXy9cbiIpOwooRnJvbSBsaW51eC9hcmNoL3NwYXJjL2tlcm5lbC90cmFwcy5j OmRpZV9pZl9rZXJuZWwoKSkKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcK aHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=