From mboxrd@z Thu Jan 1 00:00:00 1970 From: Samuel Thibault Subject: Re: [PATCH 21/22] mini-os: get physical memory map Date: Wed, 24 Aug 2016 00:58:21 +0200 Message-ID: <20160823225821.GO4401@var.home> References: <1471965368-6159-1-git-send-email-jgross@suse.com> <1471965368-6159-22-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-22-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 SnVlcmdlbiBHcm9zcywgb24gVHVlIDIzIEF1ZyAyMDE2IDE3OjE2OjA3ICswMjAwLCB3cm90ZToK PiBPbiBIVk1saXRlIHdlIGhhdmUgdG8gbG9vayBhdCB0aGUgcGh5c2ljYWwgbWVtb3J5IG1hcCB0 byBrbm93IHdoaWNoCj4gbWVtb3J5IGZyYW1lcyBhcmUgdXNhYmxlLgo+IAo+IEluIG9yZGVyIHRv IG1ha2UgbGlmZSBlYXNpZXIgd2UgZGVmaW5lIGEgZHVtbXkgbWVtb3J5IG1hcCBmb3Igb3RoZXIK PiBkb21haW4gdHlwZXMgKHB2IGFuZCBhcm0pIHdoaWNoIGhhcyBqdXN0IG9uZSBlbnRyeSB3aXRo IGEgbWF4aW11bQo+IG1lbW9yeSBzaXplLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jv c3MgPGpncm9zc0BzdXNlLmNvbT4KClJldmlld2VkLWJ5OiBTYW11ZWwgVGhpYmF1bHQgPHNhbXVl bC50aGliYXVsdEBlbnMtbHlvbi5vcmc+Cgo+IC0tLQo+ICBhcmNoL2FybS9tbS5jICAgICAgICAg fCAgOCArKysrKysKPiAgYXJjaC94ODYvbW0uYyAgICAgICAgIHwgNzIgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBhcmNoL3g4Ni9zZXR1cC5jICAgICAg fCAgMSArCj4gIGluY2x1ZGUvZTgyMC5oICAgICAgICB8IDQ4ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKPiAgaW5jbHVkZS94ODYvYXJjaF9tbS5oIHwgIDQgKysrCj4gIG1tLmMgICAg ICAgICAgICAgICAgICB8IDc5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0tLS0tLQo+ICA2IGZpbGVzIGNoYW5nZWQsIDE4MyBpbnNlcnRpb25zKCspLCAyOSBk ZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvZTgyMC5oCj4gCj4gZGlm ZiAtLWdpdCBhL2FyY2gvYXJtL21tLmMgYi9hcmNoL2FybS9tbS5jCj4gaW5kZXggZGJkZTE2Mi4u OGMxNTZjNCAxMDA2NDQKPiAtLS0gYS9hcmNoL2FybS9tbS5jCj4gKysrIGIvYXJjaC9hcm0vbW0u Ywo+IEBAIC03LDYgKzcsMTQgQEAKPiAgI2luY2x1ZGUgPGxpYi5oPgo+ICAKPiAgdWludDMyX3Qg cGh5c2ljYWxfYWRkcmVzc19vZmZzZXQ7Cj4gK3N0cnVjdCBlODIwZW50cnkgZTgyMF9tYXBbMV0g PSB7Cj4gKyAgICB7Cj4gKyAgICAgICAgLmFkZHIgPSAwLAo+ICsgICAgICAgIC5zaXplID0gVUxP TkdfTUFYIC0gMSwKPiArICAgICAgICAudHlwZSA9IEU4MjBfUkFNCj4gKyAgICB9Cj4gK307Cj4g K3Vuc2lnbmVkIGU4MjBfZW50cmllcyA9IDE7Cj4gIAo+ICB1bnNpZ25lZCBsb25nIGFsbG9jYXRl X29uZGVtYW5kKHVuc2lnbmVkIGxvbmcgbiwgdW5zaWduZWQgbG9uZyBhbGlnbm1lbnQpCj4gIHsK PiBkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbW0uYyBiL2FyY2gveDg2L21tLmMKPiBpbmRleCA3NjI1 OTlkLi44ZGQ5MGI4IDEwMDY0NAo+IC0tLSBhL2FyY2gveDg2L21tLmMKPiArKysgYi9hcmNoL3g4 Ni9tbS5jCj4gQEAgLTQzLDYgKzQzLDcgQEAKPiAgI2luY2x1ZGUgPG1pbmktb3MvdHlwZXMuaD4K PiAgI2luY2x1ZGUgPG1pbmktb3MvbGliLmg+Cj4gICNpbmNsdWRlIDxtaW5pLW9zL3htYWxsb2Mu aD4KPiArI2luY2x1ZGUgPG1pbmktb3MvZTgyMC5oPgo+ICAjaW5jbHVkZSA8eGVuL21lbW9yeS5o Pgo+ICAKPiAgI2lmZGVmIE1NX0RFQlVHCj4gQEAgLTYzLDYgKzY0LDE1IEBAIGV4dGVybiBjaGFy IHN0YWNrW107Cj4gIGV4dGVybiB2b2lkIHBhZ2Vfd2Fsayh1bnNpZ25lZCBsb25nIHZhKTsKPiAg Cj4gICNpZmRlZiBDT05GSUdfUEFSQVZJUlQKPiArc3RydWN0IGU4MjBlbnRyeSBlODIwX21hcFsx XSA9IHsKPiArICAgIHsKPiArICAgICAgICAuYWRkciA9IDAsCj4gKyAgICAgICAgLnNpemUgPSBV TE9OR19NQVggLSAxLAo+ICsgICAgICAgIC50eXBlID0gRTgyMF9SQU0KPiArICAgIH0KPiArfTsK PiArdW5zaWduZWQgZTgyMF9lbnRyaWVzID0gMTsKPiArCj4gIHZvaWQgYXJjaF9tbV9wcmVpbml0 KHZvaWQgKnApCj4gIHsKPiAgICAgIHN0YXJ0X2luZm9fdCAqc2kgPSBwOwo+IEBAIC0xMDIsMTAg KzExMiwyNSBAQCBkZXNjX3B0ciBpZHRfcHRyID0KPiAgICAgIC5iYXNlID0gKHVuc2lnbmVkIGxv bmcpJmlkdCwKPiAgfTsKPiAgCj4gK3N0cnVjdCBlODIwZW50cnkgZTgyMF9tYXBbRTgyMF9NQVhd Owo+ICt1bnNpZ25lZCBlODIwX2VudHJpZXM7Cj4gKwo+ICtzdGF0aWMgY2hhciAqZTgyMF90eXBl c1tFODIwX1RZUEVTXSA9IHsKPiArICAgIFtFODIwX1JBTV0gICAgICA9ICJSQU0iLAo+ICsgICAg W0U4MjBfUkVTRVJWRURdID0gIlJlc2VydmVkIiwKPiArICAgIFtFODIwX0FDUEldICAgICA9ICJB Q1BJIiwKPiArICAgIFtFODIwX05WU10gICAgICA9ICJOVlMiLAo+ICsgICAgW0U4MjBfVU5VU0FC TEVdID0gIlVudXNhYmxlIiwKPiArICAgIFtFODIwX1BNRU1dICAgICA9ICJQTUVNIgo+ICt9Owo+ ICsKPiAgdm9pZCBhcmNoX21tX3ByZWluaXQodm9pZCAqcCkKPiAgewo+ICAgICAgbG9uZyByZXQ7 Cj4gICAgICBkb21pZF90IGRvbWlkID0gRE9NSURfU0VMRjsKPiArICAgIHN0cnVjdCB4ZW5fbWVt b3J5X21hcCBtZW1tYXA7Cj4gKyAgICBpbnQgaTsKPiArICAgIHVuc2lnbmVkIGxvbmcgcGZuLCBt YXggPSAwOwo+ICAKPiAgICAgIHB0X2Jhc2UgPSBwYWdlX3RhYmxlX2Jhc2U7Cj4gICAgICBmaXJz dF9mcmVlX3BmbiA9IFBGTl9VUCh0b19waHlzKCZfZW5kKSk7Cj4gQEAgLTExNiw2ICsxNDEsNTMg QEAgdm9pZCBhcmNoX21tX3ByZWluaXQodm9pZCAqcCkKPiAgICAgICAgICBkb19leGl0KCk7Cj4g ICAgICB9Cj4gICAgICBsYXN0X2ZyZWVfcGZuID0gcmV0Owo+ICsKPiArICAgIG1lbW1hcC5ucl9l bnRyaWVzID0gRTgyMF9NQVg7Cj4gKyAgICBzZXRfeGVuX2d1ZXN0X2hhbmRsZShtZW1tYXAuYnVm ZmVyLCBlODIwX21hcCk7Cj4gKyAgICByZXQgPSBIWVBFUlZJU09SX21lbW9yeV9vcChYRU5NRU1f bWVtb3J5X21hcCwgJm1lbW1hcCk7Cj4gKyAgICBpZiAoIHJldCA8IDAgKQo+ICsgICAgewo+ICsg ICAgICAgIHhwcmludGsoImNvdWxkIG5vdCBnZXQgbWVtb3J5IG1hcFxuIik7Cj4gKyAgICAgICAg ZG9fZXhpdCgpOwo+ICsgICAgfQo+ICsgICAgZTgyMF9lbnRyaWVzID0gbWVtbWFwLm5yX2VudHJp ZXM7Cj4gKwo+ICsgICAgZm9yICggaSA9IDA7IGkgPCBlODIwX2VudHJpZXM7IGkrKyApCj4gKyAg ICB7Cj4gKyAgICAgICAgaWYgKCBlODIwX21hcFtpXS50eXBlICE9IEU4MjBfUkFNICkKPiArICAg ICAgICAgICAgY29udGludWU7Cj4gKyAgICAgICAgcGZuID0gKGU4MjBfbWFwW2ldLmFkZHIgKyBl ODIwX21hcFtpXS5zaXplKSA+PiBQQUdFX1NISUZUOwo+ICsgICAgICAgIGlmICggcGZuID4gbWF4 ICkKPiArICAgICAgICAgICAgbWF4ID0gcGZuOwo+ICsgICAgfQo+ICsKPiArICAgIGlmICggbWF4 IDwgbGFzdF9mcmVlX3BmbiApCj4gKyAgICAgICAgbGFzdF9mcmVlX3BmbiA9IG1heDsKPiArfQo+ ICsKPiArdm9pZCBhcmNoX3ByaW50X21lbW1hcCh2b2lkKQo+ICt7Cj4gKyAgICBpbnQgaTsKPiAr ICAgIHVuc2lnbmVkIGxvbmcgZnJvbSwgdG87Cj4gKyAgICBjaGFyICp0eXBlOwo+ICsgICAgY2hh ciBidWZbMTJdOwo+ICsKPiArICAgIHByaW50aygiTWVtb3J5IG1hcDpcbiIpOwo+ICsgICAgZm9y ICggaSA9IDA7IGkgPCBlODIwX2VudHJpZXM7IGkrKyApCj4gKyAgICB7Cj4gKyAgICAgICAgaWYg KCBlODIwX21hcFtpXS50eXBlID49IEU4MjBfVFlQRVMgfHwgIWU4MjBfdHlwZXNbZTgyMF9tYXBb aV0udHlwZV0gKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgc25wcmludGYoYnVmLCBzaXpl b2YoYnVmKSwgIiU4eCIsIGU4MjBfbWFwW2ldLnR5cGUpOwo+ICsgICAgICAgICAgICB0eXBlID0g YnVmOwo+ICsgICAgICAgIH0KPiArICAgICAgICBlbHNlCj4gKyAgICAgICAgewo+ICsgICAgICAg ICAgICB0eXBlID0gZTgyMF90eXBlc1tlODIwX21hcFtpXS50eXBlXTsKPiArICAgICAgICB9Cj4g KyAgICAgICAgZnJvbSA9IGU4MjBfbWFwW2ldLmFkZHI7Cj4gKyAgICAgICAgdG8gPSBmcm9tICsg ZTgyMF9tYXBbaV0uc2l6ZSAtIDE7Cj4gKyAgICAgICAgcHJpbnRrKCIlMDEybHgtJTAxMmx4OiAl c1xuIiwgZnJvbSwgdG8sIHR5cGUpOwo+ICsgICAgfQo+ICB9Cj4gICNlbmRpZgo+ICAKPiBkaWZm IC0tZ2l0IGEvYXJjaC94ODYvc2V0dXAuYyBiL2FyY2gveDg2L3NldHVwLmMKPiBpbmRleCA5NDhi MDhhLi44MjliMDNjIDEwMDY0NAo+IC0tLSBhL2FyY2gveDg2L3NldHVwLmMKPiArKysgYi9hcmNo L3g4Ni9zZXR1cC5jCj4gQEAgLTE1MCw2ICsxNTAsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9zdGFy dF9vZl9kYXkodm9pZCAqcCkKPiAgICAgIHByaW50aygiICAgICAgIGZsYWdzOiAweCV4XG4iLCAo dW5zaWduZWQgaW50KXNpLT5mbGFncyk7Cj4gICAgICBwcmludGsoIiAgICBjbWRfbGluZTogJXNc biIsIGNtZGxpbmUpOwo+ICAgICAgcHJpbnRrKCIgICAgICAgc3RhY2s6ICVwLSVwXG4iLCBzdGFj aywgc3RhY2sgKyBzaXplb2Yoc3RhY2spKTsKPiArICAgIGFyY2hfcHJpbnRfbWVtbWFwKCk7Cj4g IH0KPiAgI2VuZGlmCj4gIAo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2U4MjAuaCBiL2luY2x1ZGUv ZTgyMC5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi45MjA1NTFjCj4g LS0tIC9kZXYvbnVsbAo+ICsrKyBiL2luY2x1ZGUvZTgyMC5oCj4gQEAgLTAsMCArMSw0OCBAQAo+ ICsvKiAtKi0gIE1vZGU6QzsgYy1iYXNpYy1vZmZzZXQ6NDsgdGFiLXdpZHRoOjQgLSotCj4gKyAq Cj4gKyAqIChDKSAyMDE2IC0gSnVlcmdlbiBHcm9zcywgU1VTRSBMaW51eCBHbWJICj4gKyAqCj4g KyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg cGVyc29uIG9idGFpbmluZyBhIGNvcHkKPiArICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCj4gKyAqIGRlYWwg aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp bWl0YXRpb24gdGhlCj4gKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgo+ICsgKiBzZWxsIGNvcGllcyBv ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2Fy ZSBpcwo+ICsgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj b25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp cyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgo+ICsgKiBhbGwgY29waWVz IG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KPiArICoKPiArICogVEhF IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ TkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU TyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxM IFRIRQo+ICsgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z IENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00s IE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1Ig T1RIRVIKPiArICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo+ICsgKi8KPiArCj4gKyNpZm5k ZWYgX19FODIwX0hFQURFUgo+ICsjZGVmaW5lIF9fRTgyMF9IRUFERVIKPiArCj4gKy8qIFBDIEJJ T1Mgc3RhbmRhcmQgRTgyMCB0eXBlcyBhbmQgc3RydWN0dXJlLiAqLwo+ICsjZGVmaW5lIEU4MjBf UkFNICAgICAgICAgIDEKPiArI2RlZmluZSBFODIwX1JFU0VSVkVEICAgICAyCj4gKyNkZWZpbmUg RTgyMF9BQ1BJICAgICAgICAgMwo+ICsjZGVmaW5lIEU4MjBfTlZTICAgICAgICAgIDQKPiArI2Rl ZmluZSBFODIwX1VOVVNBQkxFICAgICA1Cj4gKyNkZWZpbmUgRTgyMF9QTUVNICAgICAgICAgNwo+ ICsjZGVmaW5lIEU4MjBfVFlQRVMgICAgICAgIDgKPiArCj4gK3N0cnVjdCBfX3BhY2tlZCBlODIw ZW50cnkgewo+ICsgICAgdWludDY0X3QgYWRkcjsKPiArICAgIHVpbnQ2NF90IHNpemU7Cj4gKyAg ICB1aW50MzJfdCB0eXBlOwo+ICt9Owo+ICsKPiArLyogTWF4aW11bSBudW1iZXIgb2YgZW50cmll cy4gKi8KPiArI2RlZmluZSBFODIwX01BWCAgICAgICAgICAxMjgKPiArCj4gK2V4dGVybiBzdHJ1 Y3QgZTgyMGVudHJ5IGU4MjBfbWFwW107Cj4gK2V4dGVybiB1bnNpZ25lZCBlODIwX2VudHJpZXM7 Cj4gKwo+ICsjZW5kaWYgLypfX0U4MjBfSEVBREVSKi8KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS94 ODYvYXJjaF9tbS5oIGIvaW5jbHVkZS94ODYvYXJjaF9tbS5oCj4gaW5kZXggOTM3MmYxZS4uYWI4 YTUzZSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL3g4Ni9hcmNoX21tLmgKPiArKysgYi9pbmNsdWRl L3g4Ni9hcmNoX21tLmgKPiBAQCAtMjc5LDYgKzI3OSwxMCBAQCBwZ2VudHJ5X3QgKm5lZWRfcGd0 KHVuc2lnbmVkIGxvbmcgYWRkcik7Cj4gIHZvaWQgYXJjaF9tbV9wcmVpbml0KHZvaWQgKnApOwo+ ICB1bnNpZ25lZCBsb25nIGFsbG9jX3ZpcnRfa2VybmVsKHVuc2lnbmVkIG5fcGFnZXMpOwo+ICAK PiArI2lmbmRlZiBDT05GSUdfUEFSQVZJUlQKPiArdm9pZCBhcmNoX3ByaW50X21lbW1hcCh2b2lk KTsKPiArI2VuZGlmCj4gKwo+ICAjZW5kaWYKPiAgCj4gICNlbmRpZiAvKiBfQVJDSF9NTV9IXyAq Lwo+IGRpZmYgLS1naXQgYS9tbS5jIGIvbW0uYwo+IGluZGV4IGM3NmJlN2YuLjkzMmNlZWIgMTAw NjQ0Cj4gLS0tIGEvbW0uYwo+ICsrKyBiL21tLmMKPiBAQCAtNDMsNiArNDMsNyBAQAo+ICAjaW5j bHVkZSA8bWluaS1vcy90eXBlcy5oPgo+ICAjaW5jbHVkZSA8bWluaS1vcy9saWIuaD4KPiAgI2lu Y2x1ZGUgPG1pbmktb3MveG1hbGxvYy5oPgo+ICsjaW5jbHVkZSA8bWluaS1vcy9lODIwLmg+Cj4g IAo+ICAvKioqKioqKioqKioqKioqKioqKioqCj4gICAqIEFMTE9DQVRJT04gQklUTUFQCj4gQEAg LTE0NywxMCArMTQ4LDE0IEBAIHN0YXRpYyBjaHVua19oZWFkX3QgIGZyZWVfdGFpbFtGUkVFTElT VF9TSVpFXTsKPiAgICovCj4gIHN0YXRpYyB2b2lkIGluaXRfcGFnZV9hbGxvY2F0b3IodW5zaWdu ZWQgbG9uZyBtaW4sIHVuc2lnbmVkIGxvbmcgbWF4KQo+ICB7Cj4gLSAgICBpbnQgaTsKPiArICAg IGludCBpLCBtOwo+ICAgICAgdW5zaWduZWQgbG9uZyByYW5nZTsKPiArICAgIHVuc2lnbmVkIGxv bmcgcl9taW4sIHJfbWF4Owo+ICAgICAgY2h1bmtfaGVhZF90ICpjaDsKPiAgICAgIGNodW5rX3Rh aWxfdCAqY3Q7Cj4gKwo+ICsgICAgcHJpbnRrKCJNTTogSW5pdGlhbGlzZSBwYWdlIGFsbG9jYXRv ciBmb3IgJWx4KCVseCktJWx4KCVseClcbiIsCj4gKyAgICAgICAgICAgKHVfbG9uZyl0b192aXJ0 KG1pbiksIG1pbiwgKHVfbG9uZyl0b192aXJ0KG1heCksIG1heCk7Cj4gICAgICBmb3IgKCBpID0g MDsgaSA8IEZSRUVMSVNUX1NJWkU7IGkrKyApCj4gICAgICB7Cj4gICAgICAgICAgZnJlZV9oZWFk W2ldICAgICAgID0gJmZyZWVfdGFpbFtpXTsKPiBAQCAtMTY2LDM4ICsxNzEsNTcgQEAgc3RhdGlj IHZvaWQgaW5pdF9wYWdlX2FsbG9jYXRvcih1bnNpZ25lZCBsb25nIG1pbiwgdW5zaWduZWQgbG9u ZyBtYXgpCj4gICAgICBtbV9hbGxvY19iaXRtYXBfc2l6ZSAgPSByb3VuZF9wZ3VwKG1tX2FsbG9j X2JpdG1hcF9zaXplKTsKPiAgICAgIG1tX2FsbG9jX2JpdG1hcCA9ICh1bnNpZ25lZCBsb25nICop dG9fdmlydChtaW4pOwo+ICAgICAgbWluICAgICAgICAgKz0gbW1fYWxsb2NfYml0bWFwX3NpemU7 Cj4gLSAgICByYW5nZSAgICAgICAgPSBtYXggLSBtaW47Cj4gIAo+ICAgICAgLyogQWxsIGFsbG9j YXRlZCBieSBkZWZhdWx0LiAqLwo+ICAgICAgbWVtc2V0KG1tX2FsbG9jX2JpdG1hcCwgfjAsIG1t X2FsbG9jX2JpdG1hcF9zaXplKTsKPiAtICAgIC8qIEZyZWUgdXAgdGhlIG1lbW9yeSB3ZSd2ZSBi ZWVuIGdpdmVuIHRvIHBsYXkgd2l0aC4gKi8KPiAtICAgIG1hcF9mcmVlKFBIWVNfUEZOKG1pbiks IHJhbmdlPj5QQUdFX1NISUZUKTsKPiAgCj4gLSAgICAvKiBUaGUgYnVkZHkgbGlzdHMgYXJlIGFk ZHJlc3NlZCBpbiBoaWdoIG1lbW9yeS4gKi8KPiAtICAgIG1pbiA9ICh1bnNpZ25lZCBsb25nKSB0 b192aXJ0KG1pbik7Cj4gLSAgICBtYXggPSAodW5zaWduZWQgbG9uZykgdG9fdmlydChtYXgpOwo+ IC0KPiAtICAgIHdoaWxlICggcmFuZ2UgIT0gMCApCj4gKyAgICBmb3IgKCBtID0gMDsgbSA8IGU4 MjBfZW50cmllczsgbSsrICkKPiAgICAgIHsKPiAtICAgICAgICAvKgo+IC0gICAgICAgICAqIE5l eHQgY2h1bmsgaXMgbGltaXRlZCBieSBhbGlnbm1lbnQgb2YgbWluLCBidXQgYWxzbwo+IC0gICAg ICAgICAqIG11c3Qgbm90IGJlIGJpZ2dlciB0aGFuIHJlbWFpbmluZyByYW5nZS4KPiAtICAgICAg ICAgKi8KPiAtICAgICAgICBmb3IgKCBpID0gUEFHRV9TSElGVDsgKDFVTDw8KGkrMSkpIDw9IHJh bmdlOyBpKysgKQo+IC0gICAgICAgICAgICBpZiAoIG1pbiAmICgxVUw8PGkpICkgYnJlYWs7Cj4g KyAgICAgICAgaWYgKCBlODIwX21hcFttXS50eXBlICE9IEU4MjBfUkFNICkKPiArICAgICAgICAg ICAgY29udGludWU7Cj4gKyAgICAgICAgaWYgKCBlODIwX21hcFttXS5hZGRyICsgZTgyMF9tYXBb bV0uc2l6ZSA+PSBVTE9OR19NQVggKQo+ICsgICAgICAgICAgICBCVUcoKTsKPiAgCj4gKyAgICAg ICAgcl9taW4gPSBlODIwX21hcFttXS5hZGRyOwo+ICsgICAgICAgIHJfbWF4ID0gcl9taW4gKyBl ODIwX21hcFttXS5zaXplOwo+ICsgICAgICAgIGlmICggcl9tYXggPD0gbWluIHx8IHJfbWluID49 IG1heCApCj4gKyAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsgICAgICAgIGlmICggcl9taW4gPCBt aW4gKQo+ICsgICAgICAgICAgICByX21pbiA9IG1pbjsKPiArICAgICAgICBpZiAoIHJfbWF4ID4g bWF4ICkKPiArICAgICAgICAgICAgcl9tYXggPSBtYXg7Cj4gIAo+IC0gICAgICAgIGNoID0gKGNo dW5rX2hlYWRfdCAqKW1pbjsKPiAtICAgICAgICBtaW4gICArPSAoMVVMPDxpKTsKPiAtICAgICAg ICByYW5nZSAtPSAoMVVMPDxpKTsKPiAtICAgICAgICBjdCA9IChjaHVua190YWlsX3QgKiltaW4t MTsKPiAtICAgICAgICBpIC09IFBBR0VfU0hJRlQ7Cj4gLSAgICAgICAgY2gtPmxldmVsICAgICAg ID0gaTsKPiAtICAgICAgICBjaC0+bmV4dCAgICAgICAgPSBmcmVlX2hlYWRbaV07Cj4gLSAgICAg ICAgY2gtPnBwcmV2ICAgICAgID0gJmZyZWVfaGVhZFtpXTsKPiAtICAgICAgICBjaC0+bmV4dC0+ cHByZXYgPSAmY2gtPm5leHQ7Cj4gLSAgICAgICAgZnJlZV9oZWFkW2ldICAgID0gY2g7Cj4gLSAg ICAgICAgY3QtPmxldmVsICAgICAgID0gaTsKPiArICAgICAgICBwcmludGsoIiAgICBBZGRpbmcg bWVtb3J5IHJhbmdlICVseC0lbHhcbiIsIHJfbWluLCByX21heCk7Cj4gKwo+ICsgICAgICAgIC8q IFRoZSBidWRkeSBsaXN0cyBhcmUgYWRkcmVzc2VkIGluIGhpZ2ggbWVtb3J5LiAqLwo+ICsgICAg ICAgIHJfbWluID0gKHVuc2lnbmVkIGxvbmcpdG9fdmlydChyX21pbik7Cj4gKyAgICAgICAgcl9t YXggPSAodW5zaWduZWQgbG9uZyl0b192aXJ0KHJfbWF4KTsKPiArICAgICAgICByYW5nZSA9IHJf bWF4IC0gcl9taW47Cj4gKwo+ICsgICAgICAgIC8qIEZyZWUgdXAgdGhlIG1lbW9yeSB3ZSd2ZSBi ZWVuIGdpdmVuIHRvIHBsYXkgd2l0aC4gKi8KPiArICAgICAgICBtYXBfZnJlZShQSFlTX1BGTihy X21pbiksIHJhbmdlID4+IFBBR0VfU0hJRlQpOwo+ICsKPiArICAgICAgICB3aGlsZSAoIHJhbmdl ICE9IDAgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgLyoKPiArICAgICAgICAgICAgICog TmV4dCBjaHVuayBpcyBsaW1pdGVkIGJ5IGFsaWdubWVudCBvZiBtaW4sIGJ1dCBhbHNvCj4gKyAg ICAgICAgICAgICAqIG11c3Qgbm90IGJlIGJpZ2dlciB0aGFuIHJlbWFpbmluZyByYW5nZS4KPiAr ICAgICAgICAgICAgICovCj4gKyAgICAgICAgICAgIGZvciAoIGkgPSBQQUdFX1NISUZUOyAoMVVM IDw8IChpICsgMSkpIDw9IHJhbmdlOyBpKysgKQo+ICsgICAgICAgICAgICAgICAgaWYgKCByX21p biAmICgxVUwgPDwgaSkgKSBicmVhazsKPiArCj4gKyAgICAgICAgICAgIGNoID0gKGNodW5rX2hl YWRfdCAqKXJfbWluOwo+ICsgICAgICAgICAgICByX21pbiArPSAxVUwgPDwgaTsKPiArICAgICAg ICAgICAgcmFuZ2UgLT0gMVVMIDw8IGk7Cj4gKyAgICAgICAgICAgIGN0ID0gKGNodW5rX3RhaWxf dCAqKXJfbWluIC0gMTsKPiArICAgICAgICAgICAgaSAtPSBQQUdFX1NISUZUOwo+ICsgICAgICAg ICAgICBjaC0+bGV2ZWwgICAgICAgPSBpOwo+ICsgICAgICAgICAgICBjaC0+bmV4dCAgICAgICAg PSBmcmVlX2hlYWRbaV07Cj4gKyAgICAgICAgICAgIGNoLT5wcHJldiAgICAgICA9ICZmcmVlX2hl YWRbaV07Cj4gKyAgICAgICAgICAgIGNoLT5uZXh0LT5wcHJldiA9ICZjaC0+bmV4dDsKPiArICAg ICAgICAgICAgZnJlZV9oZWFkW2ldICAgID0gY2g7Cj4gKyAgICAgICAgICAgIGN0LT5sZXZlbCAg ICAgICA9IGk7Cj4gKyAgICAgICAgfQo+ICAgICAgfQo+ICAKPiAgICAgIG1tX2FsbG9jX2JpdG1h cF9yZW1hcCgpOwo+IEBAIC0zNzcsOSArNDAxLDYgQEAgdm9pZCBpbml0X21tKHZvaWQpCj4gICAg ICAvKgo+ICAgICAgICogbm93IHdlIGNhbiBpbml0aWFsaXNlIHRoZSBwYWdlIGFsbG9jYXRvcgo+ ICAgICAgICovCj4gLSAgICBwcmludGsoIk1NOiBJbml0aWFsaXNlIHBhZ2UgYWxsb2NhdG9yIGZv ciAlbHgoJWx4KS0lbHgoJWx4KVxuIiwKPiAtICAgICAgICAgICAodV9sb25nKXRvX3ZpcnQoUEZO X1BIWVMoc3RhcnRfcGZuKSksICh1X2xvbmcpUEZOX1BIWVMoc3RhcnRfcGZuKSwKPiAtICAgICAg ICAgICAodV9sb25nKXRvX3ZpcnQoUEZOX1BIWVMobWF4X3BmbikpLCAodV9sb25nKVBGTl9QSFlT KG1heF9wZm4pKTsKPiAgICAgIGluaXRfcGFnZV9hbGxvY2F0b3IoUEZOX1BIWVMoc3RhcnRfcGZu KSwgUEZOX1BIWVMobWF4X3BmbikpOwo+ICAgICAgcHJpbnRrKCJNTTogZG9uZVxuIik7Cj4gIAo+ IC0tIAo+IDIuNi42Cj4gCgotLSAKU2FtdWVsCiBMZXMgcm9vdHMgbmUgc29udCBwbHVzIGNlIHF1 J2lscyDDqXRhaWVudC4uLk1haW50ZW5hbnQgaWwgc29udCBkaW94aW7DqXMsCiBjJ2VzdCBkZSBs YSBtLi4uICEgQXZhbnQgb24gbGVzIMOpbGV2YWllbnQgYXZlYyBkdSBib24gdW5peCBtYWlzIMOn YSDDqXTDqQogcmVtcGxhY8OpIHBhciBkZXMgZmFyaW5lcyBpbmR1c3RyaWVsbGVzIG5vdXZlbGxl cyB0ZWNobm9sb2dpZXMgKE5UKS4KIC0rLSBKZEsgaW4gTlBDIDogRXhpZ2V6IHVuIHJvb3Qgw6ls ZXbDqSBzb3VzIGxhIG3DqHJlICEgLSstCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK