From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: [RFC XEN PATCH v2 10/15] tools/libacpi: add a simple AML builder Date: Mon, 20 Mar 2017 08:09:44 +0800 Message-ID: <20170320000949.24675-11-haozhong.zhang@intel.com> References: <20170320000949.24675-1-haozhong.zhang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170320000949.24675-1-haozhong.zhang@intel.com> 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: Haozhong Zhang , Wei Liu , Andrew Cooper , Ian Jackson , ross.philipson@ainfosec.com, Jan Beulich , Konrad Rzeszutek Wilk , Dan Williams List-Id: xen-devel@lists.xenproject.org SXQgaXMgdXNlZCBieSBsaWJhY3BpIHRvIGdlbmVyYXRlIFNTRFRzIGZyb20gQUNQSSBuYW1lc3Bh Y2UgZGV2aWNlcwpidWlsdCBieSB0aGUgZGV2aWNlIG1vZGVsLgoKU2lnbmVkLW9mZi1ieTogSGFv emhvbmcgWmhhbmcgPGhhb3pob25nLnpoYW5nQGludGVsLmNvbT4KLS0tCkNjOiBKYW4gQmV1bGlj aCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0Bj aXRyaXguY29tPgpDYzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+CkNj OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgpDYzogcm9zcy5waGlsaXBzb25AYWluZm9z ZWMuY29tCgpDaGFuZ2VzIGluIHYyOgogKiBBZGQgY29kZSBjb21tZW50IGZvciB3aGF0IGlzIGJ1 aWx0IGJ5IGVhY2ggZnVuY3Rpb24uCiAqIENoYW5nZSB0aGUgbGljZW5zZSB0byBMR1BMLgotLS0K IHRvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9NYWtlZmlsZSB8ICAgMyArLQogdG9vbHMvbGliYWNw aS9hbWxfYnVpbGQuYyAgICAgICAgIHwgMzI2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiB0b29scy9saWJhY3BpL2FtbF9idWlsZC5oICAgICAgICAgfCAxMTYgKysrKysr KysrKysrKysKIHRvb2xzL2xpYnhsL01ha2VmaWxlICAgICAgICAgICAgICB8ICAgMyArLQogNCBm aWxlcyBjaGFuZ2VkLCA0NDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCB0b29scy9saWJhY3BpL2FtbF9idWlsZC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg dG9vbHMvbGliYWNwaS9hbWxfYnVpbGQuaAoKZGlmZiAtLWdpdCBhL3Rvb2xzL2Zpcm13YXJlL2h2 bWxvYWRlci9NYWtlZmlsZSBiL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9NYWtlZmlsZQppbmRl eCA4MGQ3YjQ0OGE1Li5hYmJkYWFlYjQwIDEwMDY0NAotLS0gYS90b29scy9maXJtd2FyZS9odm1s b2FkZXIvTWFrZWZpbGUKKysrIGIvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL01ha2VmaWxlCkBA IC03NiwxMSArNzYsMTIgQEAgc21iaW9zLm86IENGTEFHUyArPSAtRF9fU01CSU9TX0RBVEVfXz0i XCIkKFNNQklPU19SRUxfREFURSlcIiIKIAogQUNQSV9QQVRIID0gLi4vLi4vbGliYWNwaQogRFNE VF9GSUxFUyA9IGRzZHRfYW55Y3B1LmMgZHNkdF8xNWNwdS5jIGRzZHRfYW55Y3B1X3FlbXVfeGVu LmMKLUFDUElfT0JKUyA9ICQocGF0c3Vic3QgJS5jLCUubywkKERTRFRfRklMRVMpKSBidWlsZC5v IHN0YXRpY190YWJsZXMubworQUNQSV9PQkpTID0gJChwYXRzdWJzdCAlLmMsJS5vLCQoRFNEVF9G SUxFUykpIGJ1aWxkLm8gc3RhdGljX3RhYmxlcy5vIGFtbF9idWlsZC5vCiAkKEFDUElfT0JKUyk6 IENGTEFHUyArPSAtSS4gLURMSUJBQ1BJX1NURFVUSUxTPVwiJChDVVJESVIpL3V0aWwuaFwiCiBD RkxBR1MgKz0gLUkkKEFDUElfUEFUSCkKIHZwYXRoIGJ1aWxkLmMgJChBQ1BJX1BBVEgpCiB2cGF0 aCBzdGF0aWNfdGFibGVzLmMgJChBQ1BJX1BBVEgpCit2cGF0aCBhbWxfYnVpbGQuYyAkKEFDUElf UEFUSCkKIE9CSlMgKz0gJChBQ1BJX09CSlMpCiAKIGh2bWxvYWRlcjogJChPQkpTKQpkaWZmIC0t Z2l0IGEvdG9vbHMvbGliYWNwaS9hbWxfYnVpbGQuYyBiL3Rvb2xzL2xpYmFjcGkvYW1sX2J1aWxk LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uOWI0ZTI4YWQ5NQotLS0g L2Rldi9udWxsCisrKyBiL3Rvb2xzL2xpYmFjcGkvYW1sX2J1aWxkLmMKQEAgLTAsMCArMSwzMjYg QEAKKy8qCisgKiB0b29scy9saWJhY3BpL2FtbF9idWlsZC5jCisgKgorICogQ29weXJpZ2h0IChD KSAyMDE3LCBJbnRlbCBDb3Jwb3JhdGlvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl LCB2ZXJzaW9uIDIuMSwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpbmNsdWRlIExJQkFDUElfU1REVVRJTFMKKyNp bmNsdWRlICJsaWJhY3BpLmgiCisjaW5jbHVkZSAiYW1sX2J1aWxkLmgiCisKKyNkZWZpbmUgQU1M X09QX1NDT1BFICAgICAweDEwCisjZGVmaW5lIEFNTF9PUF9FWFQgICAgICAgMHg1QgorI2RlZmlu ZSBBTUxfT1BfREVWSUNFICAgIDB4ODIKKworI2RlZmluZSBBQ1BJX05BTUVTRUdfTEVOIDQKKwor c3RydWN0IGFtbF9idWlsZF9hbGxvY3RvciB7CisgICAgc3RydWN0IGFjcGlfY3R4dCAqY3R4dDsK KyAgICB1aW50OF90ICpidWY7CisgICAgdWludDMyX3QgY2FwYWNpdHk7CisgICAgdWludDMyX3Qg dXNlZDsKK307CitzdGF0aWMgc3RydWN0IGFtbF9idWlsZF9hbGxvY3RvciBhbGxvYzsKKworc3Rh dGljIHVpbnQ4X3QgKmFtbF9idWZfYWxsb2ModWludDMyX3Qgc2l6ZSkKK3sKKyAgICB1aW50OF90 ICpidWYgPSBOVUxMOworICAgIHN0cnVjdCBhY3BpX2N0eHQgKmN0eHQgPSBhbGxvYy5jdHh0Owor ICAgIHVpbnQzMl90IGFsbG9jX3NpemUsIGFsbG9jX2FsaWduID0gY3R4dC0+bWluX2FsbG9jX2J5 dGVfYWxpZ247CisgICAgdWludDMyX3QgbGVuZ3RoID0gYWxsb2MudXNlZCArIHNpemU7CisKKyAg ICAvKiBPdmVyZmxvdyAuLi4gKi8KKyAgICBpZiAoIGxlbmd0aCA8IGFsbG9jLnVzZWQgKQorICAg ICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICggbGVuZ3RoIDw9IGFsbG9jLmNhcGFjaXR5ICkK KyAgICB7CisgICAgICAgIGJ1ZiA9IGFsbG9jLmJ1ZiArIGFsbG9jLnVzZWQ7CisgICAgICAgIGFs bG9jLnVzZWQgKz0gc2l6ZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgYWxsb2Nf c2l6ZSA9IGxlbmd0aCAtIGFsbG9jLmNhcGFjaXR5OworICAgICAgICBhbGxvY19zaXplID0gKGFs bG9jX3NpemUgKyBhbGxvY19hbGlnbikgJiB+KGFsbG9jX2FsaWduIC0gMSk7CisgICAgICAgIGJ1 ZiA9IGN0eHQtPm1lbV9vcHMuYWxsb2MoY3R4dCwgYWxsb2Nfc2l6ZSwgYWxsb2NfYWxpZ24pOwor CisgICAgICAgIGlmICggYnVmICYmCisgICAgICAgICAgICAgYnVmID09IGFsbG9jLmJ1ZiArIGFs bG9jLmNhcGFjaXR5IC8qIGNvbnQgdG8gZXhpc3RpbmcgYnVmICovICkKKyAgICAgICAgeworICAg ICAgICAgICAgYWxsb2MuY2FwYWNpdHkgKz0gYWxsb2Nfc2l6ZTsKKyAgICAgICAgICAgIGJ1ZiA9 IGFsbG9jLmJ1ZiArIGFsbG9jLnVzZWQ7CisgICAgICAgICAgICBhbGxvYy51c2VkICs9IHNpemU7 CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYnVmID0gTlVMTDsKKyAgICB9 CisKKyAgICByZXR1cm4gYnVmOworfQorCitzdGF0aWMgdWludDMyX3QgZ2V0X3BhY2thZ2VfbGVu Z3RoKHVpbnQ4X3QgKnBrZykKK3sKKyAgICB1aW50MzJfdCBsZW47CisKKyAgICBsZW4gPSBwa2cg LSBhbGxvYy5idWY7CisgICAgbGVuID0gYWxsb2MudXNlZCAtIGxlbjsKKworICAgIHJldHVybiBs ZW47Cit9CisKKy8qCisgKiBPbiBzdWNjZXNzLCBhbiBvYmplY3QgaW4gdGhlIGZvbGxvd2luZyBm b3JtIGlzIHN0b3JlZCBhdCBAYnVmLgorICogICBAYnl0ZQorICogICB0aGUgb3JpZ2luYWwgY29u dGVudCBpbiBAYnVmCisgKi8KK3N0YXRpYyBpbnQgYnVpbGRfcHJlcGVuZF9ieXRlKHVpbnQ4X3Qg KmJ1ZiwgdWludDhfdCBieXRlKQoreworICAgIHVpbnQzMl90IGxlbjsKKworICAgIGxlbiA9IGJ1 ZiAtIGFsbG9jLmJ1ZjsKKyAgICBsZW4gPSBhbGxvYy51c2VkIC0gbGVuOworCisgICAgaWYgKCAh YW1sX2J1Zl9hbGxvYyhzaXplb2YodWludDhfdCkpICkKKyAgICAgICAgcmV0dXJuIC0xOworCisg ICAgaWYgKCBsZW4gKQorICAgICAgICBtZW1tb3ZlKGJ1ZiArIDEsIGJ1ZiwgbGVuKTsKKyAgICBi dWZbMF0gPSBieXRlOworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBPbiBzdWNjZXNzLCBh biBvYmplY3QgaW4gdGhlIGZvbGxvd2luZyBmb3JtIGlzIHN0b3JlZCBhdCBAYnVmLgorICogICBB TUwgZW5jb2Rpbmcgb2YgZm91ci1jaGFyYWN0ZXIgQG5hbWUKKyAqICAgdGhlIG9yaWdpbmFsIGNv bnRlbnQgaW4gQGJ1ZgorICoKKyAqIFJlZmVyIHRvICBBQ1BJIHNwZWMgNi4xLCBTZWMgMjAuMi4y ICJOYW1lIE9iamVjdHMgRW5jb2RpbmciLgorICoKKyAqIFhYWDogbmFtZXMgb2YgbXVsdGlwbGUg c2VnbWVudHMgKGUuZy4gWC5ZLlopIGFyZSBub3Qgc3VwcG9ydGVkCisgKi8KK3N0YXRpYyBpbnQg YnVpbGRfcHJlcGVuZF9uYW1lKHVpbnQ4X3QgKmJ1ZiwgY29uc3QgY2hhciAqbmFtZSkKK3sKKyAg ICB1aW50OF90ICpwID0gYnVmOworICAgIGNvbnN0IGNoYXIgKnMgPSBuYW1lOworICAgIHVpbnQz Ml90IGxlbiwgbmFtZV9sZW47CisKKyAgICB3aGlsZSAoICpzID09ICdcXCcgfHwgKnMgPT0gJ14n ICkKKyAgICB7CisgICAgICAgIGlmICggYnVpbGRfcHJlcGVuZF9ieXRlKHAsICh1aW50OF90KSAq cykgKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICArK3A7CisgICAgICAgICsrczsK KyAgICB9CisKKyAgICBpZiAoICEqcyApCisgICAgICAgIHJldHVybiBidWlsZF9wcmVwZW5kX2J5 dGUocCwgMHgwMCk7CisKKyAgICBsZW4gPSBwIC0gYWxsb2MuYnVmOworICAgIGxlbiA9IGFsbG9j LnVzZWQgLSBsZW47CisgICAgbmFtZV9sZW4gPSBzdHJsZW4ocyk7CisgICAgQVNTRVJUKG5hbWVf bGVuIDw9IEFDUElfTkFNRVNFR19MRU4pOworCisgICAgaWYgKCAhYW1sX2J1Zl9hbGxvYyhBQ1BJ X05BTUVTRUdfTEVOKSApCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoIGxlbiApCisgICAg ICAgIG1lbW1vdmUocCArIEFDUElfTkFNRVNFR19MRU4sIHAsIGxlbik7CisgICAgbWVtY3B5KHAs IHMsIG5hbWVfbGVuKTsKKyAgICBtZW1jcHkocCArIG5hbWVfbGVuLCAiX19fXyIsIEFDUElfTkFN RVNFR19MRU4gLSBuYW1lX2xlbik7CisKKyAgICByZXR1cm4gMDsKK30KKworZW51bSB7CisgICAg UEFDS0FHRV9MRU5HVEhfMUJZVEVfU0hJRlQgPSA2LCAvKiBVcCB0byA2MyAtIHVzZSBleHRyYSAy IGJpdHMuICovCisgICAgUEFDS0FHRV9MRU5HVEhfMkJZVEVfU0hJRlQgPSA0LAorICAgIFBBQ0tB R0VfTEVOR1RIXzNCWVRFX1NISUZUID0gMTIsCisgICAgUEFDS0FHRV9MRU5HVEhfNEJZVEVfU0hJ RlQgPSAyMCwKK307CisKKy8qCisgKiBPbiBzdWNjZXNzLCBhbiBvYmplY3QgaW4gdGhlIGZvbGxv d2luZyBmb3JtIGlzIHN0b3JlZCBhdCBAcGtnLgorICogICBBTUwgZW5jb2Rpbmcgb2YgcGFja2Fn ZSBsZW5ndGggQGxlbmd0aAorICogICB0aGUgb3JpZ2luYWwgY29udGVudCBpbiBAcGtnCisgKgor ICogUmVmZXIgdG8gQUNQSSBzcGVjIDYuMSwgU2VjIDIwLjIuNCAiUGFja2FnZSBMZW5ndGggRW5j b2RpbmciLgorICovCitzdGF0aWMgaW50IGJ1aWxkX3ByZXBlbmRfcGFja2FnZV9sZW5ndGgodWlu dDhfdCAqcGtnLCB1aW50MzJfdCBsZW5ndGgpCit7CisgICAgaW50IHJjID0gMDsKKyAgICB1aW50 OF90IGJ5dGU7CisgICAgdW5zaWduZWQgbGVuZ3RoX2J5dGVzOworCisgICAgaWYgKCBsZW5ndGgg KyAxIDwgKDEgPDwgUEFDS0FHRV9MRU5HVEhfMUJZVEVfU0hJRlQpICkKKyAgICAgICAgbGVuZ3Ro X2J5dGVzID0gMTsKKyAgICBlbHNlIGlmICggbGVuZ3RoICsgMiA8ICgxIDw8IFBBQ0tBR0VfTEVO R1RIXzNCWVRFX1NISUZUKSApCisgICAgICAgIGxlbmd0aF9ieXRlcyA9IDI7CisgICAgZWxzZSBp ZiAoIGxlbmd0aCArIDMgPCAoMSA8PCBQQUNLQUdFX0xFTkdUSF80QllURV9TSElGVCkgKQorICAg ICAgICBsZW5ndGhfYnl0ZXMgPSAzOworICAgIGVsc2UKKyAgICAgICAgbGVuZ3RoX2J5dGVzID0g NDsKKworICAgIGxlbmd0aCArPSBsZW5ndGhfYnl0ZXM7CisKKyAgICBzd2l0Y2ggKCBsZW5ndGhf Ynl0ZXMgKQorICAgIHsKKyAgICBjYXNlIDE6CisgICAgICAgIGJ5dGUgPSBsZW5ndGg7CisgICAg ICAgIHJldHVybiBidWlsZF9wcmVwZW5kX2J5dGUocGtnLCBieXRlKTsKKworICAgIGNhc2UgNDoK KyAgICAgICAgYnl0ZSA9IGxlbmd0aCA+PiBQQUNLQUdFX0xFTkdUSF80QllURV9TSElGVDsKKyAg ICAgICAgaWYgKCBidWlsZF9wcmVwZW5kX2J5dGUocGtnLCBieXRlKSApCisgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgbGVuZ3RoICY9ICgxIDw8IFBBQ0tBR0VfTEVOR1RIXzRCWVRFX1NISUZU KSAtIDE7CisgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLworICAgIGNhc2UgMzoKKyAgICAgICAg Ynl0ZSA9IGxlbmd0aCA+PiBQQUNLQUdFX0xFTkdUSF8zQllURV9TSElGVDsKKyAgICAgICAgaWYg KCBidWlsZF9wcmVwZW5kX2J5dGUocGtnLCBieXRlKSApCisgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgbGVuZ3RoICY9ICgxIDw8IFBBQ0tBR0VfTEVOR1RIXzNCWVRFX1NISUZUKSAtIDE7Cisg ICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLworICAgIGNhc2UgMjoKKyAgICAgICAgYnl0ZSA9IGxl bmd0aCA+PiBQQUNLQUdFX0xFTkdUSF8yQllURV9TSElGVDsKKyAgICAgICAgaWYgKCBidWlsZF9w cmVwZW5kX2J5dGUocGtnLCBieXRlKSApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbGVu Z3RoICY9ICgxIDw8IFBBQ0tBR0VfTEVOR1RIXzJCWVRFX1NISUZUKSAtIDE7CisgICAgICAgIC8q IGZhbGwgdGhyb3VnaCAqLworICAgIH0KKworICAgIGlmICggIXJjICkKKyAgICB7CisgICAgICAg IC8qCisgICAgICAgICAqIE1vc3Qgc2lnbmlmaWNhbnQgdHdvIGJpdHMgb2YgYnl0ZSB6ZXJvIGlu ZGljYXRlIGhvdyBtYW55CisgICAgICAgICAqIGZvbGxvd2luZyBieXRlcyBhcmUgaW4gUGtnTGVu Z3RoIGVuY29kaW5nLgorICAgICAgICAgKi8KKyAgICAgICAgYnl0ZSA9ICgobGVuZ3RoX2J5dGVz IC0gMSkgPDwgUEFDS0FHRV9MRU5HVEhfMUJZVEVfU0hJRlQpIHwgbGVuZ3RoOworICAgICAgICBy YyA9IGJ1aWxkX3ByZXBlbmRfYnl0ZShwa2csIGJ5dGUpOworICAgIH0KKworICAgIHJldHVybiBy YzsKK30KKworLyoKKyAqIE9uIHN1Y2Nlc3MsIGFuIG9iamVjdCBpbiB0aGUgZm9sbG93aW5nIGZv cm0gaXMgc3RvcmVkIGF0IEBidWYuCisgKiAgIEBvcAorICogICBBTUwgZW5jb2Rpbmcgb2YgcGFj a2FnZSBsZW5ndGggb2YgQGJ1ZgorICogICBvcmlnaW5hbCBjb250ZW50IGluIEBidWYKKyAqCisg KiBSZWZlciB0byBjb21tZW50cyBvZiBjYWxsZXJzIGZvciBBQ1BJIHNwZWMgc2VjdGlvbnMuCisg Ki8KK3N0YXRpYyBpbnQgYnVpbGRfcHJlcGVuZF9wYWNrYWdlKHVpbnQ4X3QgKmJ1ZiwgdWludDhf dCBvcCkKK3sKKyAgICB1aW50MzJfdCBsZW5ndGggPSBnZXRfcGFja2FnZV9sZW5ndGgoYnVmKTsK KworICAgIGlmICggIWJ1aWxkX3ByZXBlbmRfcGFja2FnZV9sZW5ndGgoYnVmLCBsZW5ndGgpICkK KyAgICAgICAgcmV0dXJuIGJ1aWxkX3ByZXBlbmRfYnl0ZShidWYsIG9wKTsKKyAgICBlbHNlCisg ICAgICAgIHJldHVybiAtMTsKK30KKworLyoKKyAqIE9uIHN1Y2Nlc3MsIGFuIG9iamVjdCBpbiB0 aGUgZm9sbG93aW5nIGZvcm0gaXMgc3RvcmVkIGF0IEBidWYuCisgKiAgIEFNTF9PUF9FWFQKKyAq ICAgQG9wCisgKiAgIEFNTCBlbmNvZGluZyBvZiBwYWNrYWdlIGxlbmd0aCBvZiBAYnVmCisgKiAg IG9yaWdpbmFsIGNvbnRlbnQgaW4gQGJ1ZgorICoKKyAqIFJlZmVyIHRvIGNvbW1lbnRzIG9mIGNh bGxlcnMgZm9yIEFDUEkgc3BlYyBzZWN0aW9ucy4KKyAqLworc3RhdGljIGludCBidWlsZF9wcmVw ZW5kX2V4dF9wYWNrYWdlKHVpbnQ4X3QgKmJ1ZiwgdWludDhfdCBvcCkKK3sKKyAgICBpZiAoICFi dWlsZF9wcmVwZW5kX3BhY2thZ2UoYnVmLCBvcCkgKQorICAgICAgICByZXR1cm4gYnVpbGRfcHJl cGVuZF9ieXRlKGJ1ZiwgQU1MX09QX0VYVCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gLTE7 Cit9CisKK3ZvaWQgKmFtbF9idWlsZF9iZWdpbihzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0KQorewor ICAgIHVpbnQzMl90IGFsaWduID0gY3R4dC0+bWluX2FsbG9jX2J5dGVfYWxpZ247CisKKyAgICBh bGxvYy5jdHh0ID0gY3R4dDsKKyAgICBhbGxvYy5idWYgPSBjdHh0LT5tZW1fb3BzLmFsbG9jKGN0 eHQsIGFsaWduLCBhbGlnbik7CisgICAgYWxsb2MuY2FwYWNpdHkgPSBhbGlnbjsKKyAgICBhbGxv Yy51c2VkID0gMDsKKworICAgIHJldHVybiBhbGxvYy5idWY7Cit9CisKK3VpbnQzMl90IGFtbF9i dWlsZF9lbmQodm9pZCkKK3sKKyAgICByZXR1cm4gYWxsb2MudXNlZDsKK30KKworLyoKKyAqIE9u IHN1Y2Nlc3MsIGFuIG9iamVjdCBpbiB0aGUgZm9sbG93aW5nIGZvcm0gaXMgc3RvcmVkIGF0IEBi dWYuCisgKiAgIHRoZSBmaXJzdCBAbGVuZ3RoIGJ5dGVzIGluIEBibG9iCisgKiAgIHRoZSBvcmln aW5hbCBjb250ZW50IGluIEBidWYKKyAqLworaW50IGFtbF9wcmVwZW5kX2Jsb2IodWludDhfdCAq YnVmLCBjb25zdCB2b2lkICpibG9iLCB1aW50MzJfdCBibG9iX2xlbmd0aCkKK3sKKyAgICB1aW50 MzJfdCBsZW47CisKKyAgICBBU1NFUlQoYnVmID49IGFsbG9jLmJ1Zik7CisgICAgbGVuID0gYnVm IC0gYWxsb2MuYnVmOworICAgIEFTU0VSVChhbGxvYy51c2VkID49IGxlbik7CisgICAgbGVuID0g YWxsb2MudXNlZCAtIGxlbjsKKworICAgIGlmICggIWFtbF9idWZfYWxsb2MoYmxvYl9sZW5ndGgp ICkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICggbGVuICkKKyAgICAgICAgbWVtbW92ZShi dWYgKyBibG9iX2xlbmd0aCwgYnVmLCBsZW4pOworCisgICAgbWVtY3B5KGJ1ZiwgYmxvYiwgYmxv Yl9sZW5ndGgpOworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBPbiBzdWNjZXNzLCBhbiBv YmplY3QgZGVjb2RlZCBhcyBiZWxvdyBpcyBzdG9yZWQgYXQgQGJ1Zi4KKyAqICAgRGV2aWNlIChA bmFtZSkKKyAqICAgeworICogICAgIHRoZSBvcmlnaW5hbCBjb250ZW50IGluIEBidWYKKyAqICAg fQorICoKKyAqIFJlZmVyIHRvIEFDUEkgc3BlYyA2LjEsIFNlYyAyMC4yLjUuMiAiTmFtZWQgT2Jq ZWN0cyBFbmNvZGluZyIgLQorICogIkRlZkRldmljZSIuCisgKi8KK2ludCBhbWxfcHJlcGVuZF9k ZXZpY2UodWludDhfdCAqYnVmLCBjb25zdCBjaGFyICpuYW1lKQoreworICAgIGlmICggIWJ1aWxk X3ByZXBlbmRfbmFtZShidWYsIG5hbWUpICkKKyAgICAgICAgcmV0dXJuIGJ1aWxkX3ByZXBlbmRf ZXh0X3BhY2thZ2UoYnVmLCBBTUxfT1BfREVWSUNFKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVy biAtMTsKK30KKworLyoKKyAqIE9uIHN1Y2Nlc3MsIGFuIG9iamVjdCBkZWNvZGVkIGFzIGJlbG93 IGlzIHN0b3JlZCBhdCBAYnVmLgorICogICBTY29wZSAoQG5hbWUpCisgKiAgIHsKKyAqICAgICB0 aGUgb3JpZ2luYWwgY29udGVudCBpbiBAYnVmCisgKiAgIH0KKyAqCisgKiBSZWZlciB0byBBQ1BJ IHNwZWMgNi4xLCBTZWMgMjAuMi41LjEgIk5hbWVzcGFjZSBNb2RpZmllciBPYmplY3RzCisgKiBF bmNvZGluZyIgLSAiRGVmU2NvcGUiLgorICovCitpbnQgYW1sX3ByZXBlbmRfc2NvcGUodWludDhf dCAqYnVmLCBjb25zdCBjaGFyICpuYW1lKQoreworICAgIGlmICggIWJ1aWxkX3ByZXBlbmRfbmFt ZShidWYsIG5hbWUpICkKKyAgICAgICAgcmV0dXJuIGJ1aWxkX3ByZXBlbmRfcGFja2FnZShidWYs IEFNTF9PUF9TQ09QRSk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gLTE7Cit9CmRpZmYgLS1n aXQgYS90b29scy9saWJhY3BpL2FtbF9idWlsZC5oIGIvdG9vbHMvbGliYWNwaS9hbWxfYnVpbGQu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zMGFjYzBmN2ExCi0tLSAv ZGV2L251bGwKKysrIGIvdG9vbHMvbGliYWNwaS9hbWxfYnVpbGQuaApAQCAtMCwwICsxLDExNiBA QAorLyoKKyAqIHRvb2xzL2xpYmFjcGkvYW1sX2J1aWxkLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMp IDIwMTcsIEludGVsIENvcnBvcmF0aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Us IHZlcnNpb24gMi4xLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBM aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2lmbmRlZiBfQU1MX0JVSUxEX0hfCisjZGVmaW5l IF9BTUxfQlVJTERfSF8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgImxpYmFjcGku aCIKKworLyoKKyAqIE5COiBBbGwgYW1sX3ByZXBlbmRfKiBjYWxscywgd2hpY2ggYnVpbGQgQU1M IGNvZGUgaW4gb25lIEFDUEkKKyAqICAgICB0YWJsZSwgc2hvdWxkIGJlIHBsYWNlZCBiZXR3ZWVu IGEgcGFpciBvZiBjYWxscyB0bworICogICAgIGFtbF9idWlsZF9iZWdpbigpIGFuZCBhbWxfYnVp bGRfZW5kKCkuIE5lc3RlZCBhbWxfYnVpbGRfYmVnaW4oKQorICogICAgIGFuZCBhbWxfYnVpbGRf ZW5kKCkgYXJlIG5vdCBzdXBwb3J0ZWQuCisgKgorICogTkI6IElmIGEgY2FsbCB0byBhbWxfcHJl cGVuZF8qKCkgZmFpbHMsIHRoZSBBTUwgYnVpbGRlciBidWZmZXIKKyAqICAgICB3aWxsIGJlIGlu IGFuIGluY29uc2lzdGVudCBzdGF0ZSwgYW5kIGFueSBmb2xsb3dpbmcgY2FsbHMgdG8KKyAqICAg ICBhbWxfcHJlcGVuZF8qKCkgd2lsbCByZXN1bHQgaW4gdW5kZWZpbmVkIGJlaGF2aW9yLgorICov CisKKy8qKgorICogUmVzZXQgdGhlIEFNTCBidWlsZGVyIGFuZCBiZWdpbiBhIG5ldyByb3VuZCBv ZiBidWlsZGluZy4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICogICBjdHh0OiBBQ1BJIGNvbnRleHQg dXNlZCBieSB0aGUgQU1MIGJ1aWxkZXIKKyAqCisgKiBSZXR1cm5zOgorICogICBhIHBvaW50ZXIg dG8gdGhlIGJ1aWxkZXIgYnVmZmVyIHdoZXJlIHRoZSBBTUwgY29kZSB3aWxsIGJlIHN0b3JlZAor ICovCit2b2lkICphbWxfYnVpbGRfYmVnaW4oc3RydWN0IGFjcGlfY3R4dCAqY3R4dCk7CisKKy8q KgorICogTWFyayB0aGUgZW5kIG9mIGEgcm91bmQgb2YgQU1MIGJ1aWxkaW5nLgorICoKKyAqIFJl dHVybnM6CisgKiAgdGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGUgYnVpbGRlciBidWZmZXIgYnVp bHQgaW4gdGhpcyByb3VuZAorICovCit1aW50MzJfdCBhbWxfYnVpbGRfZW5kKHZvaWQpOworCisv KioKKyAqIFByZXBlbmQgYSBibG9iLCB3aGljaCBjYW4gY29udGFpbiBhcmJpdHJhcnkgY29udGVu dCwgdG8gdGhlIGJ1aWxkZXIgYnVmZmVyLgorICoKKyAqIE9uIHN1Y2Nlc3MsIGFuIG9iamVjdCBp biB0aGUgZm9sbG93aW5nIGZvcm0gaXMgc3RvcmVkIGF0IEBidWYuCisgKiAgIHRoZSBmaXJzdCBA bGVuZ3RoIGJ5dGVzIGluIEBibG9iCisgKiAgIHRoZSBvcmlnaW5hbCBjb250ZW50IGluIEBidWYK KyAqCisgKiBQYXJhbWV0ZXJzOgorICogICBidWY6ICAgIHBvaW50ZXIgdG8gdGhlIGJ1aWxkZXIg YnVmZmVyCisgKiAgIGJsb2I6ICAgcG9pbnRlciB0byB0aGUgYmxvYgorICogICBsZW5ndGg6IHRo ZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGJsb2IKKyAqCisgKiBSZXR1cm46CisgKiAgIDAgb24g c3VjY2VzcywgLTEgb24gZmFpbHVyZS4KKyAqLworaW50IGFtbF9wcmVwZW5kX2Jsb2IodWludDhf dCAqYnVmLCBjb25zdCB2b2lkICpibG9iLCB1aW50MzJfdCBsZW5ndGgpOworCisvKioKKyAqIFBy ZXBlbmQgYW4gQU1MIGRldmljZSBzdHJ1Y3R1cmUgdG8gdGhlIGJ1aWxkZXIgYnVmZmVyLiBUaGUg ZXhpc3RpbmcKKyAqIGRhdGEgaW4gdGhlIGJ1aWxkZXIgYnVmZmVyIGlzIGluY2x1ZGVkIGluIHRo ZSBBTUwgZGV2aWNlLgorICoKKyAqIE9uIHN1Y2Nlc3MsIGFuIG9iamVjdCBkZWNvZGVkIGFzIGJl bG93IGlzIHN0b3JlZCBhdCBAYnVmLgorICogICBEZXZpY2UgKEBuYW1lKQorICogICB7CisgKiAg ICAgdGhlIG9yaWdpbmFsIGNvbnRlbnQgaW4gQGJ1ZgorICogICB9CisgKgorICogUmVmZXIgdG8g QUNQSSBzcGVjIDYuMSwgU2VjIDIwLjIuNS4yICJOYW1lZCBPYmplY3RzIEVuY29kaW5nIiAtCisg KiAiRGVmRGV2aWNlIi4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICogICBidWY6ICBwb2ludGVyIHRv IHRoZSBidWlsZGVyIGJ1ZmZlcgorICogICBuYW1lOiB0aGUgbmFtZSBvZiB0aGUgZGV2aWNlCisg KgorICogUmV0dXJuOgorICogICAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGZhaWx1cmUuCisgKi8KK2lu dCBhbWxfcHJlcGVuZF9kZXZpY2UodWludDhfdCAqYnVmLCBjb25zdCBjaGFyICpuYW1lKTsKKwor LyoqCisgKiBQcmVwZW5kIGFuIEFNTCBzY29wZSBzdHJ1Y3R1cmUgdG8gdGhlIGJ1aWxkZXIgYnVm ZmVyLiBUaGUgZXhpc3RpbmcKKyAqIGRhdGEgaW4gdGhlIGJ1aWxkZXIgYnVmZmVyIGlzIGluY2x1 ZGVkIGluIHRoZSBBTUwgc2NvcGUuCisgKgorICogT24gc3VjY2VzcywgYW4gb2JqZWN0IGRlY29k ZWQgYXMgYmVsb3cgaXMgc3RvcmVkIGF0IEBidWYuCisgKiAgIFNjb3BlIChAbmFtZSkKKyAqICAg eworICogICAgIHRoZSBvcmlnaW5hbCBjb250ZW50IGluIEBidWYKKyAqICAgfQorICoKKyAqIFJl ZmVyIHRvIEFDUEkgc3BlYyA2LjEsIFNlYyAyMC4yLjUuMSAiTmFtZXNwYWNlIE1vZGlmaWVyIE9i amVjdHMKKyAqIEVuY29kaW5nIiAtICJEZWZTY29wZSIuCisgKgorICogUGFyYW1ldGVyczoKKyAq ICAgYnVmOiAgcG9pbnRlciB0byB0aGUgYnVpbGRlciBidWZmZXIKKyAqICAgbmFtZTogdGhlIG5h bWUgb2YgdGhlIHNjb3BlCisgKgorICogUmV0dXJuOgorICogICAwIG9uIHN1Y2Nlc3MsIC0xIG9u IGZhaWx1cmUuCisgKi8KK2ludCBhbWxfcHJlcGVuZF9zY29wZSh1aW50OF90ICpidWYsIGNvbnN0 IGNoYXIgKm5hbWUpOworCisjZW5kaWYgLyogX0FNTF9CVUlMRF9IXyAqLwpkaWZmIC0tZ2l0IGEv dG9vbHMvbGlieGwvTWFrZWZpbGUgYi90b29scy9saWJ4bC9NYWtlZmlsZQppbmRleCBmMDBkOWVm MzU1Li5hM2U1ZTk5MDlmIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9NYWtlZmlsZQorKysgYi90 b29scy9saWJ4bC9NYWtlZmlsZQpAQCAtNzcsMTEgKzc3LDEyIEBAIGVuZGlmCiAKIEFDUElfUEFU SCAgPSAkKFhFTl9ST09UKS90b29scy9saWJhY3BpCiBEU0RUX0ZJTEVTLSQoQ09ORklHX1g4Nikg PSBkc2R0X3B2aC5jCi1BQ1BJX09CSlMgID0gJChwYXRzdWJzdCAlLmMsJS5vLCQoRFNEVF9GSUxF Uy15KSkgYnVpbGQubyBzdGF0aWNfdGFibGVzLm8KK0FDUElfT0JKUyAgPSAkKHBhdHN1YnN0ICUu YywlLm8sJChEU0RUX0ZJTEVTLXkpKSBidWlsZC5vIHN0YXRpY190YWJsZXMubyBhbWxfYnVpbGQu bwogJChEU0RUX0ZJTEVTLXkpOiBhY3BpCiAkKEFDUElfT0JKUyk6IENGTEFHUyArPSAtSS4gLURM SUJBQ1BJX1NURFVUSUxTPVwiJChDVVJESVIpL2xpYnhsX3g4Nl9hY3BpLmhcIgogdnBhdGggYnVp bGQuYyAkKEFDUElfUEFUSCkvCiB2cGF0aCBzdGF0aWNfdGFibGVzLmMgJChBQ1BJX1BBVEgpLwor dnBhdGggYW1sX2J1aWxkLmMgJChBQ1BJX1BBVEgpLwogTElCWExfT0JKUy0kKENPTkZJR19YODYp ICs9ICQoQUNQSV9PQkpTKQogCiAuUEhPTlk6IGFjcGkKLS0gCjIuMTIuMAoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZl bAo=