From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH v6 01/22] arm/acpi: Estimate memory required for acpi/efi tables Date: Thu, 24 Mar 2016 12:36:54 +0000 Message-ID: References: <1458207668-12012-1-git-send-email-zhaoshenglong@huawei.com> <1458207668-12012-2-git-send-email-zhaoshenglong@huawei.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1458207668-12012-2-git-send-email-zhaoshenglong@huawei.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Shannon Zhao Cc: peter.huangpeng@huawei.com, julien.grall@arm.com, stefano.stabellini@citrix.com, shannon.zhao@linaro.org, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org T24gVGh1LCAxNyBNYXIgMjAxNiwgU2hhbm5vbiBaaGFvIHdyb3RlOgo+IEZyb206IFNoYW5ub24g WmhhbyA8c2hhbm5vbi56aGFvQGxpbmFyby5vcmc+Cj4gCj4gRXN0aW1hdGUgdGhlIG1lbW9yeSBy ZXF1aXJlZCBmb3IgbG9hZGluZyBhY3BpL2VmaSB0YWJsZXMgaW4gRG9tMC4gTWFrZQo+IHRoZSBs ZW5ndGggb2YgZWFjaCB0YWJsZSBhbGlnbmVkIHdpdGggNjRiaXQuIEFsbG9jIHRoZSBwYWdlcyB0 byBzdG9yZQo+IHRoZSBuZXcgY3JlYXRlZCBFRkkgYW5kIEFDUEkgdGFibGVzIGFuZCBmcmVlIHRo ZXNlIHBhZ2VzIHdoZW4KPiBkZXN0cm95aW5nIGRvbWFpbi4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBT aGFubm9uIFpoYW8gPHNoYW5ub24uemhhb0BsaW5hcm8ub3JnPgo+IC0tLQo+IHY2OiBkZWZpbmUg YWNwaV9tZW0gaW4gbmV3IGhlYWRlciB1bmRlciBhcmNoL2FybS8KPiAtLS0KPiAgeGVuL2FyY2gv YXJtL2RvbWFpbi5jICAgICAgIHwgIDQgKysrCj4gIHhlbi9hcmNoL2FybS9kb21haW5fYnVpbGQu YyB8IDgxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ICB4 ZW4vYXJjaC9hcm0vZWZpL01ha2VmaWxlICAgfCAgMSArCj4gIHhlbi9hcmNoL2FybS9lZmkvZWZp LWJvb3QuaCB8ICA0ICstLQo+ICB4ZW4vYXJjaC9hcm0vZWZpL2VmaS1kb20wLmMgfCA1MCArKysr KysrKysrKysrKysrKysrKysrKysrKysrCj4gIHhlbi9hcmNoL2FybS9lZmkvZWZpLWRvbTAuaCB8 ICAzICsrCj4gIHhlbi9pbmNsdWRlL2FzbS1hcm0vc2V0dXAuaCB8ICAyICsrCj4gIDcgZmlsZXMg Y2hhbmdlZCwgMTQxIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCB4ZW4vYXJjaC9hcm0vZWZpL2VmaS1kb20wLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IHhlbi9hcmNoL2FybS9lZmkvZWZpLWRvbTAuaAo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9h cm0vZG9tYWluLmMgYi94ZW4vYXJjaC9hcm0vZG9tYWluLmMKPiBpbmRleCAzZDI3NGFlLi4xMzY1 YjRhIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL2FybS9kb21haW4uYwo+ICsrKyBiL3hlbi9hcmNo L2FybS9kb21haW4uYwo+IEBAIC02NDAsNiArNjQwLDEwIEBAIHZvaWQgYXJjaF9kb21haW5fZGVz dHJveShzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAgZG9tYWluX3ZnaWNfZnJlZShkKTsKPiAgICAg IGRvbWFpbl92dWFydF9mcmVlKGQpOwo+ICAgICAgZnJlZV94ZW5oZWFwX3BhZ2UoZC0+c2hhcmVk X2luZm8pOwo+ICsjaWZkZWYgQ09ORklHX0FDUEkKPiArICAgIGZyZWVfeGVuaGVhcF9wYWdlcyhk LT5hcmNoLmVmaV9hY3BpX3RhYmxlLAo+ICsgICAgICAgICAgICAgICAgICAgICAgIGdldF9vcmRl cl9mcm9tX2J5dGVzKGQtPmFyY2guZWZpX2FjcGlfbGVuKSk7Cj4gKyNlbmRpZgo+ICB9Cj4gIAo+ ICB2b2lkIGFyY2hfZG9tYWluX3NodXRkb3duKHN0cnVjdCBkb21haW4gKmQpCj4gZGlmZiAtLWdp dCBhL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYyBiL3hlbi9hcmNoL2FybS9kb21haW5fYnVp bGQuYwo+IGluZGV4IDgzNjc2ZTQuLjRlMjA0OTkgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJt L2RvbWFpbl9idWlsZC5jCj4gKysrIGIveGVuL2FyY2gvYXJtL2RvbWFpbl9idWlsZC5jCj4gQEAg LTEyLDYgKzEyLDggQEAKPiAgI2luY2x1ZGUgPHhlbi9saWJmZHQvbGliZmR0Lmg+Cj4gICNpbmNs dWRlIDx4ZW4vZ3Vlc3RfYWNjZXNzLmg+Cj4gICNpbmNsdWRlIDx4ZW4vaW9jYXAuaD4KPiArI2lu Y2x1ZGUgPHhlbi9hY3BpLmg+Cj4gKyNpbmNsdWRlIDxhY3BpL2FjdGFibGVzLmg+Cj4gICNpbmNs dWRlIDxhc20vZGV2aWNlLmg+Cj4gICNpbmNsdWRlIDxhc20vc2V0dXAuaD4KPiAgI2luY2x1ZGUg PGFzbS9wbGF0Zm9ybS5oPgo+IEBAIC0xMzU0LDYgKzEzNTYsNzkgQEAgc3RhdGljIGludCBwcmVw YXJlX2R0YihzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3Qga2VybmVsX2luZm8gKmtpbmZvKQo+ICAg ICAgcmV0dXJuIC1FSU5WQUw7Cj4gIH0KPiAgCj4gKyNpZmRlZiBDT05GSUdfQUNQSQo+ICtzdGF0 aWMgaW50IGVzdGltYXRlX2FjcGlfZWZpX3NpemUoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGtl cm5lbF9pbmZvICpraW5mbykKPiArewo+ICsgICAgc2l6ZV90IGVmaV9zaXplLCBhY3BpX3NpemUs IG1hZHRfc2l6ZTsKPiArICAgIHU2NCBhZGRyOwo+ICsgICAgc3RydWN0IGFjcGlfdGFibGVfcnNk cCAqcnNkcF90Ymw7Cj4gKyAgICBzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIgKnRhYmxlOwo+ICsK PiArICAgIGVmaV9zaXplID0gZXN0aW1hdGVfZWZpX3NpemUoa2luZm8tPm1lbS5ucl9iYW5rcyk7 Cj4gKwo+ICsgICAgYWNwaV9zaXplID0gUk9VTkRVUChzaXplb2Yoc3RydWN0IGFjcGlfdGFibGVf ZmFkdCksIDgpOwo+ICsgICAgYWNwaV9zaXplICs9IFJPVU5EVVAoc2l6ZW9mKHN0cnVjdCBhY3Bp X3RhYmxlX3N0YW8pLCA4KTsKPiArCj4gKyAgICBtYWR0X3NpemUgPSBzaXplb2Yoc3RydWN0IGFj cGlfdGFibGVfbWFkdCkKPiArICAgICAgICAgICAgICAgICsgc2l6ZW9mKHN0cnVjdCBhY3BpX21h ZHRfZ2VuZXJpY19pbnRlcnJ1cHQpICogZC0+bWF4X3ZjcHVzCj4gKyAgICAgICAgICAgICAgICAr IHNpemVvZihzdHJ1Y3QgYWNwaV9tYWR0X2dlbmVyaWNfZGlzdHJpYnV0b3IpOwo+ICsgICAgaWYg KCBkLT5hcmNoLnZnaWMudmVyc2lvbiA9PSBHSUNfVjMgKQo+ICsgICAgICAgIG1hZHRfc2l6ZSAr PSBzaXplb2Yoc3RydWN0IGFjcGlfbWFkdF9nZW5lcmljX3JlZGlzdHJpYnV0b3IpCj4gKyAgICAg ICAgICAgICAgICAgICAgICogZC0+YXJjaC52Z2ljLm5yX3JlZ2lvbnM7Cj4gKyAgICBhY3BpX3Np emUgKz0gUk9VTkRVUChtYWR0X3NpemUsIDgpOwo+ICsKPiArICAgIGFkZHIgPSBhY3BpX29zX2dl dF9yb290X3BvaW50ZXIoKTsKPiArICAgIGlmICggIWFkZHIgKQo+ICsgICAgewo+ICsgICAgICAg IHByaW50aygiVW5hYmxlIHRvIGdldCBhY3BpIHJvb3QgcG9pbnRlclxuIik7Cj4gKyAgICAgICAg cmV0dXJuIC1FSU5WQUw7Cj4gKyAgICB9Cj4gKyAgICByc2RwX3RibCA9IGFjcGlfb3NfbWFwX21l bW9yeShhZGRyLCBzaXplb2Yoc3RydWN0IGFjcGlfdGFibGVfcnNkcCkpOwo+ICsgICAgdGFibGUg PSBhY3BpX29zX21hcF9tZW1vcnkocnNkcF90YmwtPnhzZHRfcGh5c2ljYWxfYWRkcmVzcywKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgYWNwaV90YWJsZV9o ZWFkZXIpKTsKPiArICAgIC8qIEFkZCBwbGFjZSBmb3IgU1RBTyB0YWJsZSBpbiBYU0RUIHRhYmxl ICovCj4gKyAgICBhY3BpX3NpemUgKz0gUk9VTkRVUCh0YWJsZS0+bGVuZ3RoICsgc2l6ZW9mKHU2 NCksIDgpOwo+ICsgICAgYWNwaV9vc191bm1hcF9tZW1vcnkodGFibGUsIHNpemVvZihzdHJ1Y3Qg YWNwaV90YWJsZV9oZWFkZXIpKTsKPiArICAgIGFjcGlfb3NfdW5tYXBfbWVtb3J5KHJzZHBfdGJs LCBzaXplb2Yoc3RydWN0IGFjcGlfdGFibGVfcnNkcCkpOwo+ICsKPiArICAgIGFjcGlfc2l6ZSAr PSBST1VORFVQKHNpemVvZihzdHJ1Y3QgYWNwaV90YWJsZV9yc2RwKSwgOCk7Cj4gKyAgICBkLT5h cmNoLmVmaV9hY3BpX2xlbiA9IFJPVU5EVVAoZWZpX3NpemUsIDgpICsgUk9VTkRVUChhY3BpX3Np emUsIDgpOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHByZXBh cmVfYWNwaShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3Qga2VybmVsX2luZm8gKmtpbmZvKQo+ICt7 Cj4gKyAgICBpbnQgcmMgPSAwOwo+ICsgICAgaW50IG9yZGVyOwo+ICsKPiArICAgIHJjID0gZXN0 aW1hdGVfYWNwaV9lZmlfc2l6ZShkLCBraW5mbyk7Cj4gKyAgICBpZiAoIHJjICE9IDAgKQo+ICsg ICAgICAgIHJldHVybiByYzsKPiArCj4gKyAgICBvcmRlciA9IGdldF9vcmRlcl9mcm9tX2J5dGVz KGQtPmFyY2guZWZpX2FjcGlfbGVuKTsKPiArICAgIGQtPmFyY2guZWZpX2FjcGlfdGFibGUgPSBh bGxvY194ZW5oZWFwX3BhZ2VzKG9yZGVyLCAwKTsKPiArICAgIGlmICggZC0+YXJjaC5lZmlfYWNw aV90YWJsZSA9PSBOVUxMICkKPiArICAgIHsKPiArICAgICAgICBwcmludGsoInVuYWJsZSB0byBh bGxvY2F0ZSBtZW1vcnkhXG4iKTsKPiArICAgICAgICByZXR1cm4gLUVOT01FTTsKPiArICAgIH0K PiArICAgIG1lbXNldChkLT5hcmNoLmVmaV9hY3BpX3RhYmxlLCAwLCBkLT5hcmNoLmVmaV9hY3Bp X2xlbik7Cj4gKwo+ICsgICAgLyogRm9yIEFDUEksIERvbTAgZG9lc24ndCB1c2Uga2luZm8tPmdu dHRhYl9zdGFydCB0byBnZXQgdGhlIGdyYW50IHRhYmxlCj4gKyAgICAgKiByZWdpb24uIFNvIHdl IHVzZSBpdCBhcyB0aGUgQUNQSSB0YWJsZSBtYXBwZWQgYWRkcmVzcy4gKi8KPiArICAgIGQtPmFy Y2guZWZpX2FjcGlfZ3BhID0ga2luZm8tPmdudHRhYl9zdGFydDsKPiArCj4gKyAgICByZXR1cm4g MDsKPiArfQo+ICsjZWxzZQo+ICtzdGF0aWMgaW50IHByZXBhcmVfYWNwaShzdHJ1Y3QgZG9tYWlu ICpkLCBzdHJ1Y3Qga2VybmVsX2luZm8gKmtpbmZvKQo+ICt7Cj4gKyAgICAvKiBPbmx5IGJvb3Rp bmcgd2l0aCBBQ1BJIHdpbGwgaGl0IGhlcmUgKi8KPiArICAgIEJVR19PTigxKTsKPiArICAgIHJl dHVybiAtRUlOVkFMOwo+ICt9Cj4gKyNlbmRpZgo+ICBzdGF0aWMgdm9pZCBkdGJfbG9hZChzdHJ1 Y3Qga2VybmVsX2luZm8gKmtpbmZvKQo+ICB7Cj4gICAgICB2b2lkICogX191c2VyIGR0Yl92aXJ0 ID0gKHZvaWQgKiBfX3VzZXIpKHJlZ2lzdGVyX3Qpa2luZm8tPmR0Yl9wYWRkcjsKPiBAQCAtMTU0 MCw3ICsxNjE1LDExIEBAIGludCBjb25zdHJ1Y3RfZG9tMChzdHJ1Y3QgZG9tYWluICpkKQo+ICAg ICAgYWxsb2NhdGVfbWVtb3J5KGQsICZraW5mbyk7Cj4gICAgICBmaW5kX2dudHRhYl9yZWdpb24o ZCwgJmtpbmZvKTsKPiAgCj4gLSAgICByYyA9IHByZXBhcmVfZHRiKGQsICZraW5mbyk7Cj4gKyAg ICBpZiAoIGFjcGlfZGlzYWJsZWQgKQo+ICsgICAgICAgIHJjID0gcHJlcGFyZV9kdGIoZCwgJmtp bmZvKTsKPiArICAgIGVsc2UKPiArICAgICAgICByYyA9IHByZXBhcmVfYWNwaShkLCAma2luZm8p Owo+ICsKPiAgICAgIGlmICggcmMgPCAwICkKPiAgICAgICAgICByZXR1cm4gcmM7Cj4gIAo+IGRp ZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZWZpL01ha2VmaWxlIGIveGVuL2FyY2gvYXJtL2VmaS9N YWtlZmlsZQo+IGluZGV4IDcyOWU1M2UuLmQzNGM5MTYgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gv YXJtL2VmaS9NYWtlZmlsZQo+ICsrKyBiL3hlbi9hcmNoL2FybS9lZmkvTWFrZWZpbGUKPiBAQCAt MSwzICsxLDQgQEAKPiAgQ0ZMQUdTICs9IC1mc2hvcnQtd2NoYXIKPiAgCj4gIG9iai15ICs9ICBi b290LmluaXQubyBydW50aW1lLm8KPiArb2JqLSQoQ09ORklHX0FDUEkpICs9ICBlZmktZG9tMC5p bml0Lm8KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2VmaS9lZmktYm9vdC5oIGIveGVuL2Fy Y2gvYXJtL2VmaS9lZmktYm9vdC5oCj4gaW5kZXggYzU4Y2FjYS4uMDQ1ZDZjZSAxMDA2NDQKPiAt LS0gYS94ZW4vYXJjaC9hcm0vZWZpL2VmaS1ib290LmgKPiArKysgYi94ZW4vYXJjaC9hcm0vZWZp L2VmaS1ib290LmgKPiBAQCAtNyw2ICs3LDcgQEAKPiAgI2luY2x1ZGUgPHhlbi9saWJmZHQvbGli ZmR0Lmg+Cj4gICNpbmNsdWRlIDxhc20vc2V0dXAuaD4KPiAgI2luY2x1ZGUgPGFzbS9zbXAuaD4K PiArI2luY2x1ZGUgImVmaS1kb20wLmgiCj4gIAo+ICB2b2lkIG5vcmV0dXJuIGVmaV94ZW5fc3Rh cnQodm9pZCAqZmR0X3B0ciwgdWludDMyX3QgZmR0X3NpemUpOwo+ICB2b2lkIF9fZmx1c2hfZGNh Y2hlX2FyZWEoY29uc3Qgdm9pZCAqdmFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7Cj4gQEAgLTE3 LDkgKzE4LDYgQEAgdm9pZCBfX2ZsdXNoX2RjYWNoZV9hcmVhKGNvbnN0IHZvaWQgKnZhZGRyLCB1 bnNpZ25lZCBsb25nIHNpemUpOwo+ICBzdGF0aWMgc3RydWN0IGZpbGUgX19pbml0ZGF0YSBkdGJm aWxlOwo+ICBzdGF0aWMgdm9pZCBfX2luaXRkYXRhICpmZHQ7Cj4gIHN0YXRpYyB2b2lkIF9faW5p dGRhdGEgKm1lbW1hcDsKPiAtI2lmZGVmIENPTkZJR19BQ1BJCj4gLXN0YXRpYyBzdHJ1Y3QgbWVt aW5mbyBfX2luaXRkYXRhIGFjcGlfbWVtOwo+IC0jZW5kaWYKPiAgCj4gIHN0YXRpYyBpbnQgX19p bml0IHNldHVwX2Nob3Nlbl9ub2RlKHZvaWQgKmZkdCwgaW50ICphZGRyX2NlbGxzLCBpbnQgKnNp emVfY2VsbHMpCj4gIHsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2VmaS9lZmktZG9tMC5j IGIveGVuL2FyY2gvYXJtL2VmaS9lZmktZG9tMC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBp bmRleCAwMDAwMDAwLi45MGE3Njk5Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3hlbi9hcmNoL2Fy bS9lZmkvZWZpLWRvbTAuYwo+IEBAIC0wLDAgKzEsNTAgQEAKPiArLyoKPiArICogIGVmaS1kb20w LmMgLSBEb21haW4wIEVGSSBCb290IFN1cHBvcnQKPiArICoKPiArICogIENvcHlyaWdodCAoQykg MjAxNiBTaGFubm9uIFpoYW8gPHNoYW5ub24uemhhb0BsaW5hcm8ub3JnPgo+ICsgKgo+ICsgKiB+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fgo+ICsgKgo+ICsgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICogIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Cj4gKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy IG9mIHRoZSBMaWNlbnNlLCBvcgo+ICsgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KPiArICoKPiArICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPiArICogIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPiArICog IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAq ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQo+ICsgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KPiArICoKPiArICogfn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn4KPiArICovCj4gKwo+ICsjaW5jbHVkZSAiZWZpLmgiCj4gKyNpbmNsdWRlICJlZmktZG9tMC5o Igo+ICsjaW5jbHVkZSA8YXNtL3NldHVwLmg+Cj4gKyNpbmNsdWRlIDxhc20vYWNwaS5oPgo+ICsK PiArc3RydWN0IG1lbWluZm8gX19pbml0ZGF0YSBhY3BpX21lbTsKPiArLyogQ29uc3RhbnQgdG8g aW5kaWNhdGUgIlhlbiIgaW4gdW5pY29kZSB1MTYgZm9ybWF0ICovCj4gK3N0YXRpYyBjb25zdCBD SEFSMTYgeGVuX2VmaV9md192ZW5kb3JbXSA9IHsweDAwNTgsIDB4MDA2NSwgMHgwMDZFLCAweDAw MDB9Owo+ICsKPiArc2l6ZV90IF9faW5pdCBlc3RpbWF0ZV9lZmlfc2l6ZShpbnQgbWVtX25yX2Jh bmtzKQo+ICt7Cj4gKyAgICBzaXplX3Qgc2l6ZTsKPiArICAgIHNpemVfdCBlc3Rfc2l6ZSA9IHNp emVvZihFRklfU1lTVEVNX1RBQkxFKTsKPiArICAgIHNpemVfdCBlY3Rfc2l6ZSA9IHNpemVvZihF RklfQ09ORklHVVJBVElPTl9UQUJMRSk7Cj4gKyAgICBzaXplX3QgZW1kX3NpemUgPSBzaXplb2Yo RUZJX01FTU9SWV9ERVNDUklQVE9SKTsKPiArICAgIHNpemVfdCBmd192ZW5kb3Jfc2l6ZSA9IHNp emVvZih4ZW5fZWZpX2Z3X3ZlbmRvcik7Cj4gKyAgICBpbnQgYWNwaV9tZW1fbnJfYmFua3MgPSAw Owo+ICsKPiArICAgIGlmICggIWFjcGlfZGlzYWJsZWQgKQo+ICsgICAgICAgIGFjcGlfbWVtX25y X2JhbmtzID0gYWNwaV9tZW0ubnJfYmFua3M7Cj4gKwo+ICsgICAgc2l6ZSA9IFJPVU5EVVAoZXN0 X3NpemUgKyBlY3Rfc2l6ZSArIGZ3X3ZlbmRvcl9zaXplLCA4KTsKPiArICAgIC8qIHBsdXMgMSBm b3IgbmV3IGNyZWF0ZWQgdGFibGVzICovCj4gKyAgICBzaXplICs9IFJPVU5EVVAoZW1kX3NpemUg KiAobWVtX25yX2JhbmtzICsgYWNwaV9tZW1fbnJfYmFua3MgKyAxKSwgOCk7Cj4gKwo+ICsgICAg cmV0dXJuIHNpemU7Cj4gK30KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2VmaS9lZmktZG9t MC5oIGIveGVuL2FyY2gvYXJtL2VmaS9lZmktZG9tMC5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK PiBpbmRleCAwMDAwMDAwLi5hNTA5Y2RkCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3hlbi9hcmNo L2FybS9lZmkvZWZpLWRvbTAuaAo+IEBAIC0wLDAgKzEsMyBAQAo+ICsjaW5jbHVkZSA8YXNtL3Nl dHVwLmg+Cj4gKwo+ICtleHRlcm4gc3RydWN0IG1lbWluZm8gYWNwaV9tZW07CgpUaGUgaGVhZGVy IHNob3VsZCBiZSBndWFyZGVkLgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9y ZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK