From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: [RFC XEN PATCH 10/16] tools/libacpi: add a simple AML builder Date: Mon, 10 Oct 2016 08:32:29 +0800 Message-ID: <20161010003235.4213-11-haozhong.zhang@intel.com> References: <20161010003235.4213-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: <20161010003235.4213-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 , Xiao Guangrong , Andrew Cooper , Ian Jackson , Jan Beulich , Wei Liu List-Id: xen-devel@lists.xenproject.org SXQgaXMgdXNlZCBieSBsaWJhY3BpIHRvIGdlbmVyYXRlIFNTRFRzIGZyb20gQUNQSSBuYW1lc3Bh Y2UgZGV2aWNlcwpidWlsdCBieSB0aGUgZGV2aWNlIG1vZGVsLgoKU2lnbmVkLW9mZi1ieTogSGFv emhvbmcgWmhhbmcgPGhhb3pob25nLnpoYW5nQGludGVsLmNvbT4KLS0tCkNjOiBKYW4gQmV1bGlj aCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0Bj aXRyaXguY29tPgpDYzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+CkNj OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgotLS0KIHRvb2xzL2Zpcm13YXJlL2h2bWxv YWRlci9NYWtlZmlsZSB8ICAgMyArLQogdG9vbHMvbGliYWNwaS9hbWxfYnVpbGQuYyAgICAgICAg IHwgMjU0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0b29scy9saWJh Y3BpL2FtbF9idWlsZC5oICAgICAgICAgfCAgODMgKysrKysrKysrKysrKwogdG9vbHMvbGlieGwv TWFrZWZpbGUgICAgICAgICAgICAgIHwgICAzICstCiA0IGZpbGVzIGNoYW5nZWQsIDM0MSBpbnNl cnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2xpYmFj cGkvYW1sX2J1aWxkLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9saWJhY3BpL2FtbF9idWls ZC5oCgpkaWZmIC0tZ2l0IGEvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL01ha2VmaWxlIGIvdG9v bHMvZmlybXdhcmUvaHZtbG9hZGVyL01ha2VmaWxlCmluZGV4IDc3ZDc1NTEuLmNmMGRhYzMgMTAw NjQ0Ci0tLSBhL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9NYWtlZmlsZQorKysgYi90b29scy9m aXJtd2FyZS9odm1sb2FkZXIvTWFrZWZpbGUKQEAgLTc5LDExICs3OSwxMiBAQCBzbWJpb3Mubzog Q0ZMQUdTICs9IC1EX19TTUJJT1NfREFURV9fPSJcIiQoU01CSU9TX1JFTF9EQVRFKVwiIgogCiBB Q1BJX1BBVEggPSAuLi8uLi9saWJhY3BpCiBBQ1BJX0ZJTEVTID0gZHNkdF9hbnljcHUuYyBkc2R0 XzE1Y3B1LmMgZHNkdF9hbnljcHVfcWVtdV94ZW4uYwotQUNQSV9PQkpTID0gJChwYXRzdWJzdCAl LmMsJS5vLCQoQUNQSV9GSUxFUykpIGJ1aWxkLm8gc3RhdGljX3RhYmxlcy5vCitBQ1BJX09CSlMg PSAkKHBhdHN1YnN0ICUuYywlLm8sJChBQ1BJX0ZJTEVTKSkgYnVpbGQubyBzdGF0aWNfdGFibGVz Lm8gYW1sX2J1aWxkLm8KICQoQUNQSV9PQkpTKTogQ0ZMQUdTICs9IC1JLiAtRExJQkFDUElfU1RE VVRJTFM9XCIkKENVUkRJUikvdXRpbC5oXCIKIENGTEFHUyArPSAtSSQoQUNQSV9QQVRIKQogdnBh dGggYnVpbGQuYyAkKEFDUElfUEFUSCkKIHZwYXRoIHN0YXRpY190YWJsZXMuYyAkKEFDUElfUEFU SCkKK3ZwYXRoIGFtbF9idWlsZC5jICQoQUNQSV9QQVRIKQogT0JKUyArPSAkKEFDUElfT0JKUykK IAogaHZtbG9hZGVyOiAkKE9CSlMpCmRpZmYgLS1naXQgYS90b29scy9saWJhY3BpL2FtbF9idWls ZC5jIGIvdG9vbHMvbGliYWNwaS9hbWxfYnVpbGQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5iNmYyM2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvbGliYWNwaS9hbWxf YnVpbGQuYwpAQCAtMCwwICsxLDI1NCBAQAorLyoKKyAqIHRvb2xzL2xpYmFjcGkvYW1sX2J1aWxk LmMKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYsIEludGVsIENvcnBvcmF0aW9uLgorICoKKyAq IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqCisgKiBBdXRob3I6IEhhb3pob25nIFpoYW5n IDxoYW96aG9uZy56aGFuZ0BpbnRlbC5jb20+CisgKi8KKworI2luY2x1ZGUgTElCQUNQSV9TVERV VElMUworI2luY2x1ZGUgImxpYmFjcGkuaCIKKyNpbmNsdWRlICJhbWxfYnVpbGQuaCIKKworI2Rl ZmluZSBBTUxfT1BfU0NPUEUgICAgIDB4MTAKKyNkZWZpbmUgQU1MX09QX0VYVCAgICAgICAweDVC CisjZGVmaW5lIEFNTF9PUF9ERVZJQ0UgICAgMHg4MgorCisjZGVmaW5lIEFDUElfTkFNRVNFR19M RU4gNAorCitzdHJ1Y3QgYW1sX2J1aWxkX2FsbG9jdG9yIHsKKyAgICBzdHJ1Y3QgYWNwaV9jdHh0 ICpjdHh0OworICAgIHVpbnQ4X3QgKmJ1ZjsKKyAgICB1aW50MzJfdCBjYXBhY2l0eTsKKyAgICB1 aW50MzJfdCB1c2VkOworfTsKK3N0YXRpYyBzdHJ1Y3QgYW1sX2J1aWxkX2FsbG9jdG9yIGFsbG9j OworCitlbnVtIHsgQUxMT0NfT1ZFUkZMT1csIEFMTE9DX05PVF9ORUVERUQsIEFMTE9DX05FRURF RCB9OworCitzdGF0aWMgaW50IGFsbG9jX25lZWRlZCh1aW50MzJfdCBzaXplKQoreworICAgIHVp bnQzMl90IGxlbiA9IGFsbG9jLnVzZWQgKyBzaXplOworCisgICAgaWYgKCBsZW4gPCBhbGxvYy51 c2VkICkKKyAgICAgICAgcmV0dXJuIEFMTE9DX09WRVJGTE9XOworICAgIGVsc2UgaWYgKCBsZW4g PD0gYWxsb2MuY2FwYWNpdHkgKQorICAgICAgICByZXR1cm4gQUxMT0NfTk9UX05FRURFRDsKKyAg ICBlbHNlCisgICAgICAgIHJldHVybiBBTExPQ19ORUVERUQ7Cit9CisKK3N0YXRpYyB1aW50OF90 ICphbWxfYnVmX2FsbG9jKHVpbnQzMl90IHNpemUpCit7CisgICAgaW50IG5lZWRlZCA9IGFsbG9j X25lZWRlZChzaXplKTsKKyAgICB1aW50OF90ICpidWYgPSBOVUxMOworICAgIHN0cnVjdCBhY3Bp X2N0eHQgKmN0eHQgPSBhbGxvYy5jdHh0OworICAgIHVpbnQzMl90IGFsbG9jX3NpemUsIGFsbG9j X2FsaWduID0gY3R4dC0+bWluX2FsbG9jX2FsaWduOworCisgICAgc3dpdGNoICggbmVlZGVkICkK KyAgICB7CisgICAgY2FzZSBBTExPQ19PVkVSRkxPVzoKKyAgICAgICAgYnJlYWs7CisKKyAgICBj YXNlIEFMTE9DX05FRURFRDoKKyAgICAgICAgYWxsb2Nfc2l6ZSA9IChzaXplICsgYWxsb2NfYWxp Z24pICYgfihhbGxvY19hbGlnbiAtIDEpOworICAgICAgICBidWYgPSBjdHh0LT5tZW1fb3BzLmFs bG9jKGN0eHQsIGFsbG9jX3NpemUsIGFsbG9jX2FsaWduKTsKKyAgICAgICAgaWYgKCAhYnVmICkK KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoIGFsbG9jLmJ1ZiArIGFsbG9jLmNhcGFj aXR5ICE9IGJ1ZiApCisgICAgICAgIHsKKyAgICAgICAgICAgIGJ1ZiA9IE5VTEw7CisgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBhbGxvYy5jYXBhY2l0eSArPSBhbGxvY19z aXplOworICAgICAgICBhbGxvYy51c2VkICs9IHNpemU7CisgICAgICAgIGJyZWFrOworCisgICAg Y2FzZSBBTExPQ19OT1RfTkVFREVEOgorICAgICAgICBidWYgPSBhbGxvYy5idWYgKyBhbGxvYy51 c2VkOworICAgICAgICBhbGxvYy51c2VkICs9IHNpemU7CisgICAgICAgIGJyZWFrOworCisgICAg ZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIGJ1ZjsKK30KKwor c3RhdGljIHVpbnQzMl90IGdldF9wYWNrYWdlX2xlbmd0aCh1aW50OF90ICpwa2cpCit7CisgICAg dWludDMyX3QgbGVuOworCisgICAgbGVuID0gcGtnIC0gYWxsb2MuYnVmOworICAgIGxlbiA9IGFs bG9jLnVzZWQgLSBsZW47CisKKyAgICByZXR1cm4gbGVuOworfQorCitzdGF0aWMgdm9pZCBidWls ZF9wcmVwZW5kX2J5dGUodWludDhfdCAqYnVmLCB1aW50OF90IGJ5dGUpCit7CisgICAgdWludDMy X3QgbGVuOworCisgICAgbGVuID0gYnVmIC0gYWxsb2MuYnVmOworICAgIGxlbiA9IGFsbG9jLnVz ZWQgLSBsZW47CisKKyAgICBhbWxfYnVmX2FsbG9jKHNpemVvZih1aW50OF90KSk7CisgICAgaWYg KCBsZW4gKQorICAgICAgICBtZW1tb3ZlKGJ1ZiArIDEsIGJ1ZiwgbGVuKTsKKyAgICBidWZbMF0g PSBieXRlOworfQorCisvKgorICogWFhYOiBuYW1lcyBvZiBtdWx0aXBsZSBzZWdtZW50cyAoZS5n LiBYLlkuWikgYXJlIG5vdCBzdXBwb3J0ZWQKKyAqLworc3RhdGljIHZvaWQgYnVpbGRfcHJlcGVu ZF9uYW1lKHVpbnQ4X3QgKmJ1ZiwgY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICB1aW50OF90ICpw ID0gYnVmOworICAgIGNvbnN0IGNoYXIgKnMgPSBuYW1lOworICAgIHVpbnQzMl90IGxlbiwgbmFt ZV9sZW47CisKKyAgICB3aGlsZSAoICpzID09ICdcXCcgfHwgKnMgPT0gJ14nICkKKyAgICB7Cisg ICAgICAgIGJ1aWxkX3ByZXBlbmRfYnl0ZShwLCAodWludDhfdCkgKnMpOworICAgICAgICArK3A7 CisgICAgICAgICsrczsKKyAgICB9CisKKyAgICBpZiAoICEqcyApCisgICAgeworICAgICAgICBi dWlsZF9wcmVwZW5kX2J5dGUocCwgMHgwMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg ICBsZW4gPSBwIC0gYWxsb2MuYnVmOworICAgIGxlbiA9IGFsbG9jLnVzZWQgLSBsZW47CisgICAg bmFtZV9sZW4gPSBzdHJsZW4ocyk7CisgICAgQVNTRVJUKHN0cmxlbihzKSA8PSBBQ1BJX05BTUVT RUdfTEVOKTsKKworICAgIGFtbF9idWZfYWxsb2MoQUNQSV9OQU1FU0VHX0xFTik7CisgICAgaWYg KCBsZW4gKQorICAgICAgICBtZW1tb3ZlKHAgKyBBQ1BJX05BTUVTRUdfTEVOLCBwLCBsZW4pOwor ICAgIG1lbWNweShwLCBzLCBuYW1lX2xlbik7CisgICAgbWVtY3B5KHAgKyBuYW1lX2xlbiwgIl9f X18iLCBBQ1BJX05BTUVTRUdfTEVOIC0gbmFtZV9sZW4pOworfQorCitlbnVtIHsKKyAgICBQQUNL QUdFX0xFTkdUSF8xQllURV9TSElGVCA9IDYsIC8qIFVwIHRvIDYzIC0gdXNlIGV4dHJhIDIgYml0 cy4gKi8KKyAgICBQQUNLQUdFX0xFTkdUSF8yQllURV9TSElGVCA9IDQsCisgICAgUEFDS0FHRV9M RU5HVEhfM0JZVEVfU0hJRlQgPSAxMiwKKyAgICBQQUNLQUdFX0xFTkdUSF80QllURV9TSElGVCA9 IDIwLAorfTsKKworc3RhdGljIHZvaWQgYnVpbGRfcHJlcGVuZF9wYWNrYWdlX2xlbmd0aCh1aW50 OF90ICpwa2csIHVpbnQzMl90IGxlbmd0aCkKK3sKKyAgICB1aW50OF90IGJ5dGU7CisgICAgdW5z aWduZWQgbGVuZ3RoX2J5dGVzOworCisgICAgaWYgKCBsZW5ndGggKyAxIDwgKDEgPDwgUEFDS0FH RV9MRU5HVEhfMUJZVEVfU0hJRlQpICkKKyAgICAgICAgbGVuZ3RoX2J5dGVzID0gMTsKKyAgICBl bHNlIGlmICggbGVuZ3RoICsgMiA8ICgxIDw8IFBBQ0tBR0VfTEVOR1RIXzNCWVRFX1NISUZUKSAp CisgICAgICAgIGxlbmd0aF9ieXRlcyA9IDI7CisgICAgZWxzZSBpZiAoIGxlbmd0aCArIDMgPCAo MSA8PCBQQUNLQUdFX0xFTkdUSF80QllURV9TSElGVCkgKQorICAgICAgICBsZW5ndGhfYnl0ZXMg PSAzOworICAgIGVsc2UKKyAgICAgICAgbGVuZ3RoX2J5dGVzID0gNDsKKworICAgIGxlbmd0aCAr PSBsZW5ndGhfYnl0ZXM7CisKKyAgICBzd2l0Y2ggKCBsZW5ndGhfYnl0ZXMgKQorICAgIHsKKyAg ICBjYXNlIDE6CisgICAgICAgIGJ5dGUgPSBsZW5ndGg7CisgICAgICAgIGJ1aWxkX3ByZXBlbmRf Ynl0ZShwa2csIGJ5dGUpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSA0OgorICAgICAgICBi eXRlID0gbGVuZ3RoID4+IFBBQ0tBR0VfTEVOR1RIXzRCWVRFX1NISUZUOworICAgICAgICBidWls ZF9wcmVwZW5kX2J5dGUocGtnLCBieXRlKTsKKyAgICAgICAgbGVuZ3RoICY9ICgxIDw8IFBBQ0tB R0VfTEVOR1RIXzRCWVRFX1NISUZUKSAtIDE7CisgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwor ICAgIGNhc2UgMzoKKyAgICAgICAgYnl0ZSA9IGxlbmd0aCA+PiBQQUNLQUdFX0xFTkdUSF8zQllU RV9TSElGVDsKKyAgICAgICAgYnVpbGRfcHJlcGVuZF9ieXRlKHBrZywgYnl0ZSk7CisgICAgICAg IGxlbmd0aCAmPSAoMSA8PCBQQUNLQUdFX0xFTkdUSF8zQllURV9TSElGVCkgLSAxOworICAgICAg ICAvKiBmYWxsIHRocm91Z2ggKi8KKyAgICBjYXNlIDI6CisgICAgICAgIGJ5dGUgPSBsZW5ndGgg Pj4gUEFDS0FHRV9MRU5HVEhfMkJZVEVfU0hJRlQ7CisgICAgICAgIGJ1aWxkX3ByZXBlbmRfYnl0 ZShwa2csIGJ5dGUpOworICAgICAgICBsZW5ndGggJj0gKDEgPDwgUEFDS0FHRV9MRU5HVEhfMkJZ VEVfU0hJRlQpIC0gMTsKKyAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCisgICAgfQorICAgIC8q CisgICAgICogTW9zdCBzaWduaWZpY2FudCB0d28gYml0cyBvZiBieXRlIHplcm8gaW5kaWNhdGUg aG93IG1hbnkgZm9sbG93aW5nIGJ5dGVzCisgICAgICogYXJlIGluIFBrZ0xlbmd0aCBlbmNvZGlu Zy4KKyAgICAgKi8KKyAgICBieXRlID0gKChsZW5ndGhfYnl0ZXMgLSAxKSA8PCBQQUNLQUdFX0xF TkdUSF8xQllURV9TSElGVCkgfCBsZW5ndGg7CisgICAgYnVpbGRfcHJlcGVuZF9ieXRlKHBrZywg Ynl0ZSk7Cit9CisKK3N0YXRpYyB2b2lkIGJ1aWxkX3ByZXBlbmRfcGFja2FnZSh1aW50OF90ICpi dWYsIHVpbnQ4X3Qgb3ApCit7CisgICAgdWludDMyX3QgbGVuZ3RoID0gZ2V0X3BhY2thZ2VfbGVu Z3RoKGJ1Zik7CisgICAgYnVpbGRfcHJlcGVuZF9wYWNrYWdlX2xlbmd0aChidWYsIGxlbmd0aCk7 CisgICAgYnVpbGRfcHJlcGVuZF9ieXRlKGJ1Ziwgb3ApOworfQorCitzdGF0aWMgdm9pZCBidWls ZF9wcmVwZW5kX2V4dF9wYWNrZ2UodWludDhfdCAqYnVmLCB1aW50OF90IG9wKQoreworICAgIGJ1 aWxkX3ByZXBlbmRfcGFja2FnZShidWYsIG9wKTsKKyAgICBidWlsZF9wcmVwZW5kX2J5dGUoYnVm LCBBTUxfT1BfRVhUKTsKK30KKwordm9pZCAqYW1sX2J1aWxkX2JlZ2luKHN0cnVjdCBhY3BpX2N0 eHQgKmN0eHQpCit7CisgICAgYWxsb2MuY3R4dCA9IGN0eHQ7CisgICAgYWxsb2MuYnVmID0gY3R4 dC0+bWVtX29wcy5hbGxvYyhjdHh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY3R4dC0+bWluX2FsbG9jX3VuaXQsIGN0eHQtPm1pbl9hbGxvY19hbGlnbik7CisgICAgYWxs b2MuY2FwYWNpdHkgPSBjdHh0LT5taW5fYWxsb2NfdW5pdDsKKyAgICBhbGxvYy51c2VkID0gMDsK KyAgICByZXR1cm4gYWxsb2MuYnVmOworfQorCit1aW50MzJfdCBhbWxfYnVpbGRfZW5kKHZvaWQp Cit7CisgICAgcmV0dXJuIGFsbG9jLnVzZWQ7Cit9CisKK3ZvaWQgYW1sX3ByZXBlbmRfYmxvYih1 aW50OF90ICpidWYsIGNvbnN0IHZvaWQgKmJsb2IsIHVpbnQzMl90IGJsb2JfbGVuZ3RoKQorewor ICAgIHVpbnQzMl90IGxlbjsKKworICAgIGxlbiA9IGJ1ZiAtIGFsbG9jLmJ1ZjsKKyAgICBsZW4g PSBhbGxvYy51c2VkIC0gbGVuOworCisgICAgYW1sX2J1Zl9hbGxvYyhibG9iX2xlbmd0aCk7Cisg ICAgaWYgKCBsZW4gKQorICAgICAgICBtZW1tb3ZlKGJ1ZiArIGJsb2JfbGVuZ3RoLCBidWYsIGxl bik7CisKKyAgICBtZW1jcHkoYnVmLCBibG9iLCBibG9iX2xlbmd0aCk7Cit9CisKK3ZvaWQgYW1s X3ByZXBlbmRfZGV2aWNlKHVpbnQ4X3QgKmJ1ZiwgY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBi dWlsZF9wcmVwZW5kX25hbWUoYnVmLCBuYW1lKTsKKyAgICBidWlsZF9wcmVwZW5kX2V4dF9wYWNr Z2UoYnVmLCBBTUxfT1BfREVWSUNFKTsKK30KKwordm9pZCBhbWxfcHJlcGVuZF9zY29wZSh1aW50 OF90ICpidWYsIGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgYnVpbGRfcHJlcGVuZF9uYW1lKGJ1 ZiwgbmFtZSk7CisgICAgYnVpbGRfcHJlcGVuZF9wYWNrYWdlKGJ1ZiwgQU1MX09QX1NDT1BFKTsK K30KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYmFjcGkvYW1sX2J1aWxkLmggYi90b29scy9saWJhY3Bp L2FtbF9idWlsZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkNjhmNjYK LS0tIC9kZXYvbnVsbAorKysgYi90b29scy9saWJhY3BpL2FtbF9idWlsZC5oCkBAIC0wLDAgKzEs ODMgQEAKKy8qCisgKiB0b29scy9saWJhY3BpL2FtbF9idWlsZC5oCisgKgorICogQ29weXJpZ2h0 IChjKSAyMDE2LCBJbnRlbCBDb3Jwb3JhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCisgKgorICogQXV0aG9yOiBIYW96aG9uZyBaaGFuZyA8aGFvemhvbmcuemhhbmdAaW50 ZWwuY29tPgorICovCisKKyNpZm5kZWYgX0FNTF9CVUlMRF9IXworI2RlZmluZSBfQU1MX0JVSUxE X0hfCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlICJsaWJhY3BpLmgiCisKKy8qCisg KiBOQjogQWxsIGFtbF9wcmVwZW5kXyogY2FsbHMsIHdoaWNoIGJ1aWxkIEFNTCBjb2RlIGluIG9u ZSBBQ1BJCisgKiAgICAgdGFibGUsIHNob3VsZCBiZSBwbGFjZWQgYmV0d2VlbiBhIHBhaXIgb2Yg Y2FsbHMgdG8KKyAqICAgICBhbWxfYnVpbGRfYmVnaW4oKSBhbmQgYW1sX2J1aWxkX2VuZCgpLgor ICovCisKKy8qKgorICogUmVzZXQgdGhlIEFNTCBidWlsZGVyIGFuZCBiZWdpbiBhIG5ldyByb3Vu ZCBvZiBidWlsZGluZy4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICogICBAY3R4dDogQUNQSSBjb250 ZXh0IHVzZWQgYnkgdGhlIEFNTCBidWlsZGVyCisgKgorICogUmV0dXJuczoKKyAqICAgYSBwb2lu dGVyIHRvIHRoZSBidWlsZGVyIGJ1ZmZlciB3aGVyZSB0aGUgQU1MIGNvZGUgd2lsbCBiZSBzdG9y ZWQKKyAqLwordm9pZCAqYW1sX2J1aWxkX2JlZ2luKHN0cnVjdCBhY3BpX2N0eHQgKmN0eHQpOwor CisvKioKKyAqIE1hcmsgdGhlIGVuZCBvZiBhIHJvdW5kIG9mIEFNTCBidWlsZGluZy4KKyAqCisg KiBSZXR1cm5zOgorICogIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGJ1aWxkZXIgYnVmZmVy IGJ1aWx0IGluIHRoaXMgcm91bmQKKyAqLwordWludDMyX3QgYW1sX2J1aWxkX2VuZCh2b2lkKTsK KworLyoqCisgKiBQcmVwZW5kIGEgYmxvYiwgd2hpY2ggY2FuIGNvbnRhaW4gYXJiaXRyYXJ5IGNv bnRlbnQsIHRvIHRoZSBidWlsZGVyIGJ1ZmZlci4KKyAqCisgKiBQYXJhbWV0ZXJzOgorICogICBA YnVmOiAgICBwb2ludGVyIHRvIHRoZSBidWlsZGVyIGJ1ZmZlcgorICogICBAYmxvYjogICBwb2lu dGVyIHRvIHRoZSBibG9iCisgKiAgIEBsZW5ndGg6IHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhl IGJsb2IKKyAqLwordm9pZCBhbWxfcHJlcGVuZF9ibG9iKHVpbnQ4X3QgKmJ1ZiwgY29uc3Qgdm9p ZCAqYmxvYiwgdWludDMyX3QgbGVuZ3RoKTsKKworLyoqCisgKiBQcmVwZW5kIGFuIEFNTCBkZXZp Y2Ugc3RydWN0dXJlIHRvIHRoZSBidWlsZGVyIGJ1ZmZlci4gVGhlIGV4aXN0aW5nCisgKiBkYXRh IGluIHRoZSBidWlsZGVyIGJ1ZmZlciBpcyBpbmNsdWRlZCBpbiB0aGUgQU1MIGRldmljZS4KKyAq CisgKiBQYXJhbWV0ZXJzOgorICogICBAYnVmOiAgcG9pbnRlciB0byB0aGUgYnVpbGRlciBidWZm ZXIKKyAqICAgQG5hbWU6IHRoZSBuYW1lIG9mIHRoZSBkZXZpY2UKKyAqLwordm9pZCBhbWxfcHJl cGVuZF9kZXZpY2UodWludDhfdCAqYnVmLCBjb25zdCBjaGFyICpuYW1lKTsKKworLyoqCisgKiBQ cmVwZW5kIGFuIEFNTCBzY29wZSBzdHJ1Y3R1cmUgdG8gdGhlIGJ1aWxkZXIgYnVmZmVyLiBUaGUg ZXhpc3RpbmcKKyAqIGRhdGEgaW4gdGhlIGJ1aWxkZXIgYnVmZmVyIGlzIGluY2x1ZGVkIGluIHRo ZSBBTUwgc2NvcGUuCisgKgorICogUGFyYW1ldGVyczoKKyAqICAgQGJ1ZjogIHBvaW50ZXIgdG8g dGhlIGJ1aWxkZXIgYnVmZmVyCisgKiAgIEBuYW1lOiB0aGUgbmFtZSBvZiB0aGUgc2NvcGUKKyAq Lwordm9pZCBhbWxfcHJlcGVuZF9zY29wZSh1aW50OF90ICpidWYsIGNvbnN0IGNoYXIgKm5hbWUp OworCisjZW5kaWYgLyogX0FNTF9CVUlMRF9IXyAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwv TWFrZWZpbGUgYi90b29scy9saWJ4bC9NYWtlZmlsZQppbmRleCBjNGU0MTE3Li5hOTA0OTI3IDEw MDY0NAotLS0gYS90b29scy9saWJ4bC9NYWtlZmlsZQorKysgYi90b29scy9saWJ4bC9NYWtlZmls ZQpAQCAtNzcsMTEgKzc3LDEyIEBAIGVuZGlmCiAKIEFDUElfUEFUSCAgPSAkKFhFTl9ST09UKS90 b29scy9saWJhY3BpCiBBQ1BJX0ZJTEVTID0gZHNkdF9wdmguYwotQUNQSV9PQkpTICA9ICQocGF0 c3Vic3QgJS5jLCUubywkKEFDUElfRklMRVMpKSBidWlsZC5vIHN0YXRpY190YWJsZXMubworQUNQ SV9PQkpTICA9ICQocGF0c3Vic3QgJS5jLCUubywkKEFDUElfRklMRVMpKSBidWlsZC5vIHN0YXRp Y190YWJsZXMubyBhbWxfYnVpbGQubwogJChBQ1BJX0ZJTEVTKTogYWNwaQogJChBQ1BJX09CSlMp OiBDRkxBR1MgKz0gLUkuIC1ETElCQUNQSV9TVERVVElMUz1cIiQoQ1VSRElSKS9saWJ4bF94ODZf YWNwaS5oXCIKIHZwYXRoIGJ1aWxkLmMgJChBQ1BJX1BBVEgpLwogdnBhdGggc3RhdGljX3RhYmxl cy5jICQoQUNQSV9QQVRIKS8KK3ZwYXRoIGFtbF9idWlsZC5jICQoQUNQSV9QQVRIKS8KIExJQlhM X09CSlMtJChDT05GSUdfWDg2KSArPSAkKEFDUElfT0JKUykKIAogLlBIT05ZOiBhY3BpCi0tIAoy LjEwLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpY ZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlz dHMueGVuLm9yZy94ZW4tZGV2ZWwK