From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shannon Zhao Subject: [PATCH v7 01/22] arm/acpi: Estimate memory required for acpi/efi tables Date: Fri, 25 Mar 2016 21:48:34 +0800 Message-ID: <1458913735-2678-2-git-send-email-shannon.zhao@linaro.org> References: <1458913735-2678-1-git-send-email-shannon.zhao@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1458913735-2678-1-git-send-email-shannon.zhao@linaro.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: julien.grall@arm.com, shannon.zhao@linaro.org, stefano.stabellini@citrix.com, peter.huangpeng@huawei.com, zhaoshenglong@huawei.com List-Id: xen-devel@lists.xenproject.org RXN0aW1hdGUgdGhlIG1lbW9yeSByZXF1aXJlZCBmb3IgbG9hZGluZyBhY3BpL2VmaSB0YWJsZXMg aW4gRG9tMC4gTWFrZQp0aGUgbGVuZ3RoIG9mIGVhY2ggdGFibGUgYWxpZ25lZCB3aXRoIDY0Yml0 LiBBbGxvYyB0aGUgcGFnZXMgdG8gc3RvcmUKdGhlIG5ldyBjcmVhdGVkIEVGSSBhbmQgQUNQSSB0 YWJsZXMgYW5kIGZyZWUgdGhlc2UgcGFnZXMgd2hlbgpkZXN0cm95aW5nIGRvbWFpbi4KClNpZ25l ZC1vZmYtYnk6IFNoYW5ub24gWmhhbyA8c2hhbm5vbi56aGFvQGxpbmFyby5vcmc+Ci0tLQp2Nzog YWRkcmVzcyBzZXZlcmFsIGNvbW1lbnRzIGZyb20gSnVsaWVuCi0tLQogeGVuL2FyY2gvYXJtL2Rv bWFpbi5jICAgICAgIHwgICA0ICsrCiB4ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMgfCAxMDMg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHhlbi9hcmNoL2Fy bS9lZmkvTWFrZWZpbGUgICB8ICAgMSArCiB4ZW4vYXJjaC9hcm0vZWZpL2VmaS1ib290LmggfCAg IDQgKy0KIHhlbi9hcmNoL2FybS9lZmkvZWZpLWRvbTAuYyB8ICA1OSArKysrKysrKysrKysrKysr KysrKysrKysrCiB4ZW4vYXJjaC9hcm0vZWZpL2VmaS1kb20wLmggfCAgIDggKysrKwogeGVuL2lu Y2x1ZGUvYXNtLWFybS9zZXR1cC5oIHwgICAyICsKIDcgZmlsZXMgY2hhbmdlZCwgMTc3IGluc2Vy dGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gvYXJt L2VmaS9lZmktZG9tMC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gvYXJtL2VmaS9lZmkt ZG9tMC5oCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2RvbWFpbi5jIGIveGVuL2FyY2gvYXJt L2RvbWFpbi5jCmluZGV4IDNkMjc0YWUuLjEzNjViNGEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2Fy bS9kb21haW4uYworKysgYi94ZW4vYXJjaC9hcm0vZG9tYWluLmMKQEAgLTY0MCw2ICs2NDAsMTAg QEAgdm9pZCBhcmNoX2RvbWFpbl9kZXN0cm95KHN0cnVjdCBkb21haW4gKmQpCiAgICAgZG9tYWlu X3ZnaWNfZnJlZShkKTsKICAgICBkb21haW5fdnVhcnRfZnJlZShkKTsKICAgICBmcmVlX3hlbmhl YXBfcGFnZShkLT5zaGFyZWRfaW5mbyk7CisjaWZkZWYgQ09ORklHX0FDUEkKKyAgICBmcmVlX3hl bmhlYXBfcGFnZXMoZC0+YXJjaC5lZmlfYWNwaV90YWJsZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgZ2V0X29yZGVyX2Zyb21fYnl0ZXMoZC0+YXJjaC5lZmlfYWNwaV9sZW4pKTsKKyNlbmRpZgog fQogCiB2b2lkIGFyY2hfZG9tYWluX3NodXRkb3duKHN0cnVjdCBkb21haW4gKmQpCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC9hcm0vZG9tYWluX2J1aWxkLmMgYi94ZW4vYXJjaC9hcm0vZG9tYWluX2J1 aWxkLmMKaW5kZXggODM2NzZlNC4uMTMwMjdlYSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL2Rv bWFpbl9idWlsZC5jCisrKyBiL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYwpAQCAtMTIsNiAr MTIsOCBAQAogI2luY2x1ZGUgPHhlbi9saWJmZHQvbGliZmR0Lmg+CiAjaW5jbHVkZSA8eGVuL2d1 ZXN0X2FjY2Vzcy5oPgogI2luY2x1ZGUgPHhlbi9pb2NhcC5oPgorI2luY2x1ZGUgPHhlbi9hY3Bp Lmg+CisjaW5jbHVkZSA8YWNwaS9hY3RhYmxlcy5oPgogI2luY2x1ZGUgPGFzbS9kZXZpY2UuaD4K ICNpbmNsdWRlIDxhc20vc2V0dXAuaD4KICNpbmNsdWRlIDxhc20vcGxhdGZvcm0uaD4KQEAgLTEz NTQsNiArMTM1NiwxMDEgQEAgc3RhdGljIGludCBwcmVwYXJlX2R0YihzdHJ1Y3QgZG9tYWluICpk LCBzdHJ1Y3Qga2VybmVsX2luZm8gKmtpbmZvKQogICAgIHJldHVybiAtRUlOVkFMOwogfQogCisj aWZkZWYgQ09ORklHX0FDUEkKK3N0YXRpYyBpbnQgZXN0aW1hdGVfYWNwaV9lZmlfc2l6ZShzdHJ1 Y3QgZG9tYWluICpkLCBzdHJ1Y3Qga2VybmVsX2luZm8gKmtpbmZvKQoreworICAgIHNpemVfdCBl Zmlfc2l6ZSwgYWNwaV9zaXplLCBtYWR0X3NpemU7CisgICAgdTY0IGFkZHI7CisgICAgc3RydWN0 IGFjcGlfdGFibGVfcnNkcCAqcnNkcF90Ymw7CisgICAgc3RydWN0IGFjcGlfdGFibGVfaGVhZGVy ICp0YWJsZTsKKworICAgIGVmaV9zaXplID0gZXN0aW1hdGVfZWZpX3NpemUoa2luZm8tPm1lbS5u cl9iYW5rcyk7CisKKyAgICBhY3BpX3NpemUgPSBST1VORFVQKHNpemVvZihzdHJ1Y3QgYWNwaV90 YWJsZV9mYWR0KSwgOCk7CisgICAgYWNwaV9zaXplICs9IFJPVU5EVVAoc2l6ZW9mKHN0cnVjdCBh Y3BpX3RhYmxlX3N0YW8pLCA4KTsKKworICAgIG1hZHRfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgYWNw aV90YWJsZV9tYWR0KQorICAgICAgICAgICAgICAgICsgc2l6ZW9mKHN0cnVjdCBhY3BpX21hZHRf Z2VuZXJpY19pbnRlcnJ1cHQpICogZC0+bWF4X3ZjcHVzCisgICAgICAgICAgICAgICAgKyBzaXpl b2Yoc3RydWN0IGFjcGlfbWFkdF9nZW5lcmljX2Rpc3RyaWJ1dG9yKTsKKyAgICBpZiAoIGQtPmFy Y2gudmdpYy52ZXJzaW9uID09IEdJQ19WMyApCisgICAgICAgIG1hZHRfc2l6ZSArPSBzaXplb2Yo c3RydWN0IGFjcGlfbWFkdF9nZW5lcmljX3JlZGlzdHJpYnV0b3IpCisgICAgICAgICAgICAgICAg ICAgICAqIGQtPmFyY2gudmdpYy5ucl9yZWdpb25zOworICAgIGFjcGlfc2l6ZSArPSBST1VORFVQ KG1hZHRfc2l6ZSwgOCk7CisKKyAgICBhZGRyID0gYWNwaV9vc19nZXRfcm9vdF9wb2ludGVyKCk7 CisgICAgaWYgKCAhYWRkciApCisgICAgeworICAgICAgICBwcmludGsoIlVuYWJsZSB0byBnZXQg YWNwaSByb290IHBvaW50ZXJcbiIpOworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisK KyAgICByc2RwX3RibCA9IGFjcGlfb3NfbWFwX21lbW9yeShhZGRyLCBzaXplb2Yoc3RydWN0IGFj cGlfdGFibGVfcnNkcCkpOworICAgIGlmICggIXJzZHBfdGJsICkKKyAgICB7CisgICAgICAgIHBy aW50aygiVW5hYmxlIHRvIG1hcCBSU0RQIHRhYmxlXG4iKTsKKyAgICAgICAgcmV0dXJuIC1FSU5W QUw7CisgICAgfQorCisgICAgdGFibGUgPSBhY3BpX29zX21hcF9tZW1vcnkocnNkcF90YmwtPnhz ZHRfcGh5c2ljYWxfYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl b2Yoc3RydWN0IGFjcGlfdGFibGVfaGVhZGVyKSk7CisgICAgaWYgKCAhdGFibGUgKQorICAgIHsK KyAgICAgICAgcHJpbnRrKCJVbmFibGUgdG8gbWFwIFhTRFQgdGFibGVcbiIpOworICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICAvKiBBZGQgcGxhY2UgZm9yIFNUQU8gdGFibGUg aW4gWFNEVCB0YWJsZSAqLworICAgIGFjcGlfc2l6ZSArPSBST1VORFVQKHRhYmxlLT5sZW5ndGgg KyBzaXplb2YodTY0KSwgOCk7CisgICAgYWNwaV9vc191bm1hcF9tZW1vcnkodGFibGUsIHNpemVv ZihzdHJ1Y3QgYWNwaV90YWJsZV9oZWFkZXIpKTsKKyAgICBhY3BpX29zX3VubWFwX21lbW9yeShy c2RwX3RibCwgc2l6ZW9mKHN0cnVjdCBhY3BpX3RhYmxlX3JzZHApKTsKKworICAgIGFjcGlfc2l6 ZSArPSBST1VORFVQKHNpemVvZihzdHJ1Y3QgYWNwaV90YWJsZV9yc2RwKSwgOCk7CisgICAgZC0+ YXJjaC5lZmlfYWNwaV9sZW4gPSBQQUdFX0FMSUdOKFJPVU5EVVAoZWZpX3NpemUsIDgpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgUk9VTkRVUChhY3BpX3NpemUsIDgp KTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IHByZXBhcmVfYWNwaShzdHJ1Y3Qg ZG9tYWluICpkLCBzdHJ1Y3Qga2VybmVsX2luZm8gKmtpbmZvKQoreworICAgIGludCByYyA9IDA7 CisgICAgaW50IG9yZGVyOworCisgICAgcmMgPSBlc3RpbWF0ZV9hY3BpX2VmaV9zaXplKGQsIGtp bmZvKTsKKyAgICBpZiAoIHJjICE9IDAgKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICBvcmRl ciA9IGdldF9vcmRlcl9mcm9tX2J5dGVzKGQtPmFyY2guZWZpX2FjcGlfbGVuKTsKKyAgICBkLT5h cmNoLmVmaV9hY3BpX3RhYmxlID0gYWxsb2NfeGVuaGVhcF9wYWdlcyhvcmRlciwgMCk7CisgICAg aWYgKCBkLT5hcmNoLmVmaV9hY3BpX3RhYmxlID09IE5VTEwgKQorICAgIHsKKyAgICAgICAgcHJp bnRrKCJ1bmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IVxuIik7CisgICAgICAgIHJldHVybiAtRU5P TUVNOworICAgIH0KKyAgICBtZW1zZXQoZC0+YXJjaC5lZmlfYWNwaV90YWJsZSwgMCwgZC0+YXJj aC5lZmlfYWNwaV9sZW4pOworCisgICAgLyoKKyAgICAgKiBGb3IgQUNQSSwgRG9tMCBkb2Vzbid0 IHVzZSBraW5mby0+Z250dGFiX3N0YXJ0IHRvIGdldCB0aGUgZ3JhbnQgdGFibGUKKyAgICAgKiBy ZWdpb24uIFNvIHdlIHVzZSBpdCBhcyB0aGUgQUNQSSB0YWJsZSBtYXBwZWQgYWRkcmVzcy4gQWxz byBpdCBuZWVkcyB0bworICAgICAqIGNoZWNrIGlmIHRoZSBzaXplIG9mIGdyYW50IHRhYmxlIHJl Z2lvbiBpcyBlbm91Z2ggZm9yIHRob3NlIEFDUEkgdGFibGVzLgorICAgICAqLworICAgIGQtPmFy Y2guZWZpX2FjcGlfZ3BhID0ga2luZm8tPmdudHRhYl9zdGFydDsKKyAgICBpZiAoIGtpbmZvLT5n bnR0YWJfc2l6ZSA8IGQtPmFyY2guZWZpX2FjcGlfbGVuICkKKyAgICB7CisgICAgICAgIHByaW50 aygiVGhlIGdyYW50IHRhYmxlIHJlZ2lvbiBpcyBub3QgZW5vdWdoIHRvIGZpdCB0aGUgQUNQSSB0 YWJsZXMhXG4iKTsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgcmV0dXJu IDA7Cit9CisjZWxzZQorc3RhdGljIGludCBwcmVwYXJlX2FjcGkoc3RydWN0IGRvbWFpbiAqZCwg c3RydWN0IGtlcm5lbF9pbmZvICpraW5mbykKK3sKKyAgICAvKiBPbmx5IGJvb3Rpbmcgd2l0aCBB Q1BJIHdpbGwgaGl0IGhlcmUgKi8KKyAgICBCVUcoKTsKKyAgICByZXR1cm4gLUVJTlZBTDsKK30K KyNlbmRpZgogc3RhdGljIHZvaWQgZHRiX2xvYWQoc3RydWN0IGtlcm5lbF9pbmZvICpraW5mbykK IHsKICAgICB2b2lkICogX191c2VyIGR0Yl92aXJ0ID0gKHZvaWQgKiBfX3VzZXIpKHJlZ2lzdGVy X3Qpa2luZm8tPmR0Yl9wYWRkcjsKQEAgLTE1NDAsNyArMTYzNywxMSBAQCBpbnQgY29uc3RydWN0 X2RvbTAoc3RydWN0IGRvbWFpbiAqZCkKICAgICBhbGxvY2F0ZV9tZW1vcnkoZCwgJmtpbmZvKTsK ICAgICBmaW5kX2dudHRhYl9yZWdpb24oZCwgJmtpbmZvKTsKIAotICAgIHJjID0gcHJlcGFyZV9k dGIoZCwgJmtpbmZvKTsKKyAgICBpZiAoIGFjcGlfZGlzYWJsZWQgKQorICAgICAgICByYyA9IHBy ZXBhcmVfZHRiKGQsICZraW5mbyk7CisgICAgZWxzZQorICAgICAgICByYyA9IHByZXBhcmVfYWNw aShkLCAma2luZm8pOworCiAgICAgaWYgKCByYyA8IDAgKQogICAgICAgICByZXR1cm4gcmM7CiAK ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9lZmkvTWFrZWZpbGUgYi94ZW4vYXJjaC9hcm0vZWZp L01ha2VmaWxlCmluZGV4IDcyOWU1M2UuLmQzNGM5MTYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2Fy bS9lZmkvTWFrZWZpbGUKKysrIGIveGVuL2FyY2gvYXJtL2VmaS9NYWtlZmlsZQpAQCAtMSwzICsx LDQgQEAKIENGTEFHUyArPSAtZnNob3J0LXdjaGFyCiAKIG9iai15ICs9ICBib290LmluaXQubyBy dW50aW1lLm8KK29iai0kKENPTkZJR19BQ1BJKSArPSAgZWZpLWRvbTAuaW5pdC5vCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC9hcm0vZWZpL2VmaS1ib290LmggYi94ZW4vYXJjaC9hcm0vZWZpL2VmaS1i b290LmgKaW5kZXggYzU4Y2FjYS4uMDQ1ZDZjZSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL2Vm aS9lZmktYm9vdC5oCisrKyBiL3hlbi9hcmNoL2FybS9lZmkvZWZpLWJvb3QuaApAQCAtNyw2ICs3 LDcgQEAKICNpbmNsdWRlIDx4ZW4vbGliZmR0L2xpYmZkdC5oPgogI2luY2x1ZGUgPGFzbS9zZXR1 cC5oPgogI2luY2x1ZGUgPGFzbS9zbXAuaD4KKyNpbmNsdWRlICJlZmktZG9tMC5oIgogCiB2b2lk IG5vcmV0dXJuIGVmaV94ZW5fc3RhcnQodm9pZCAqZmR0X3B0ciwgdWludDMyX3QgZmR0X3NpemUp Owogdm9pZCBfX2ZsdXNoX2RjYWNoZV9hcmVhKGNvbnN0IHZvaWQgKnZhZGRyLCB1bnNpZ25lZCBs b25nIHNpemUpOwpAQCAtMTcsOSArMTgsNiBAQCB2b2lkIF9fZmx1c2hfZGNhY2hlX2FyZWEoY29u c3Qgdm9pZCAqdmFkZHIsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CiBzdGF0aWMgc3RydWN0IGZpbGUg X19pbml0ZGF0YSBkdGJmaWxlOwogc3RhdGljIHZvaWQgX19pbml0ZGF0YSAqZmR0Owogc3RhdGlj IHZvaWQgX19pbml0ZGF0YSAqbWVtbWFwOwotI2lmZGVmIENPTkZJR19BQ1BJCi1zdGF0aWMgc3Ry dWN0IG1lbWluZm8gX19pbml0ZGF0YSBhY3BpX21lbTsKLSNlbmRpZgogCiBzdGF0aWMgaW50IF9f aW5pdCBzZXR1cF9jaG9zZW5fbm9kZSh2b2lkICpmZHQsIGludCAqYWRkcl9jZWxscywgaW50ICpz aXplX2NlbGxzKQogewpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2VmaS9lZmktZG9tMC5jIGIv eGVuL2FyY2gvYXJtL2VmaS9lZmktZG9tMC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjAyMWFhMDIKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vYXJjaC9hcm0vZWZpL2VmaS1k b20wLmMKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqICBlZmktZG9tMC5jIC0gRG9tYWluMCBFRkkg Qm9vdCBTdXBwb3J0CisgKgorICogIENvcHlyaWdodCAoQykgMjAxNiBTaGFubm9uIFpoYW8gPHNo YW5ub24uemhhb0BsaW5hcm8ub3JnPgorICoKKyAqIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisgKgorICog IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqCisgKiB+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fgorICovCisKKyNpbmNsdWRlICJlZmkuaCIKKyNpbmNsdWRlICJlZmktZG9tMC5oIgorI2lu Y2x1ZGUgPGFzbS9zZXR1cC5oPgorI2luY2x1ZGUgPGFzbS9hY3BpLmg+CisKK3N0cnVjdCBtZW1p bmZvIF9faW5pdGRhdGEgYWNwaV9tZW07CisvKiBDb25zdGFudCB0byBpbmRpY2F0ZSAiWGVuIiBp biB1bmljb2RlIHUxNiBmb3JtYXQgKi8KK3N0YXRpYyBjb25zdCBDSEFSMTYgeGVuX2VmaV9md192 ZW5kb3JbXSA9IHsweDAwNTgsIDB4MDA2NSwgMHgwMDZFLCAweDAwMDB9OworCitzaXplX3QgX19p bml0IGVzdGltYXRlX2VmaV9zaXplKGludCBtZW1fbnJfYmFua3MpCit7CisgICAgc2l6ZV90IHNp emU7CisgICAgc2l6ZV90IGVzdF9zaXplID0gc2l6ZW9mKEVGSV9TWVNURU1fVEFCTEUpOworICAg IHNpemVfdCBlY3Rfc2l6ZSA9IHNpemVvZihFRklfQ09ORklHVVJBVElPTl9UQUJMRSk7CisgICAg c2l6ZV90IGVtZF9zaXplID0gc2l6ZW9mKEVGSV9NRU1PUllfREVTQ1JJUFRPUik7CisgICAgc2l6 ZV90IGZ3X3ZlbmRvcl9zaXplID0gc2l6ZW9mKHhlbl9lZmlfZndfdmVuZG9yKTsKKyAgICBpbnQg YWNwaV9tZW1fbnJfYmFua3MgPSAwOworCisgICAgaWYgKCAhYWNwaV9kaXNhYmxlZCApCisgICAg ICAgIGFjcGlfbWVtX25yX2JhbmtzID0gYWNwaV9tZW0ubnJfYmFua3M7CisKKyAgICBzaXplID0g Uk9VTkRVUChlc3Rfc2l6ZSArIGVjdF9zaXplICsgZndfdmVuZG9yX3NpemUsIDgpOworICAgIC8q IHBsdXMgMSBmb3IgbmV3IGNyZWF0ZWQgdGFibGVzICovCisgICAgc2l6ZSArPSBST1VORFVQKGVt ZF9zaXplICogKG1lbV9ucl9iYW5rcyArIGFjcGlfbWVtX25yX2JhbmtzICsgMSksIDgpOworCisg ICAgcmV0dXJuIHNpemU7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBD CisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogaW5kZW50 LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9l ZmkvZWZpLWRvbTAuaCBiL3hlbi9hcmNoL2FybS9lZmkvZWZpLWRvbTAuaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2Q0Y2FhCi0tLSAvZGV2L251bGwKKysrIGIveGVuL2Fy Y2gvYXJtL2VmaS9lZmktZG9tMC5oCkBAIC0wLDAgKzEsOCBAQAorI2lmbmRlZiBfX0FSTV9FRklf RE9NMF9IX18KKyNkZWZpbmUgX19BUk1fRUZJX0RPTTBfSF9fCisKKyNpbmNsdWRlIDxhc20vc2V0 dXAuaD4KKworZXh0ZXJuIHN0cnVjdCBtZW1pbmZvIGFjcGlfbWVtOworCisjZW5kaWYKZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vc2V0dXAuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0v c2V0dXAuaAppbmRleCAzMGFjNTNiLi43ZjIzM2ExIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9h c20tYXJtL3NldHVwLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9zZXR1cC5oCkBAIC01MSw2 ICs1MSw4IEBAIHZvaWQgYXJjaF9pbml0X21lbW9yeSh2b2lkKTsKIAogdm9pZCBjb3B5X2Zyb21f cGFkZHIodm9pZCAqZHN0LCBwYWRkcl90IHBhZGRyLCB1bnNpZ25lZCBsb25nIGxlbik7CiAKK3Np emVfdCBlc3RpbWF0ZV9lZmlfc2l6ZShpbnQgbWVtX25yX2JhbmtzKTsKKwogaW50IGNvbnN0cnVj dF9kb20wKHN0cnVjdCBkb21haW4gKmQpOwogCiB2b2lkIGRpc2NhcmRfaW5pdGlhbF9tb2R1bGVz KHZvaWQpOwotLSAKMi4xLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3Jn Cmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=