From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [RFC XEN PATCH 10/16] tools/libacpi: add a simple AML builder Date: Fri, 27 Jan 2017 16:19:23 -0500 Message-ID: <20170127211923.GE18581@localhost.localdomain> References: <20161010003235.4213-1-haozhong.zhang@intel.com> <20161010003235.4213-11-haozhong.zhang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20161010003235.4213-11-haozhong.zhang@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Haozhong Zhang , ross.philipson@ainfosec.com Cc: Wei Liu , Andrew Cooper , Ian Jackson , xen-devel@lists.xen.org, Jan Beulich , Xiao Guangrong List-Id: xen-devel@lists.xenproject.org T24gTW9uLCBPY3QgMTAsIDIwMTYgYXQgMDg6MzI6MjlBTSArMDgwMCwgSGFvemhvbmcgWmhhbmcg d3JvdGU6Cj4gSXQgaXMgdXNlZCBieSBsaWJhY3BpIHRvIGdlbmVyYXRlIFNTRFRzIGZyb20gQUNQ SSBuYW1lc3BhY2UgZGV2aWNlcwo+IGJ1aWx0IGJ5IHRoZSBkZXZpY2UgbW9kZWwuCgpXb3VsZCBp dCBtYWtlIHNlbnNlIHRvIGluY2x1ZGUgYSBsaW5rIHRvIGRvY3VtZW50IG91dGxpbmluZyB0aGUK dGhlIEFNTCBjb2RlPyBPciBwZXJoYXBzIGV2ZW4ganVzdCBpbmNsdWRlIGFuIHNpbXBsZSBleGFt cGxlCm9mIEFTTCBhbmQgd2hhdCB0aGUgcmVzdWx0aW5nIEFNTCBjb2RlIHNob3VsZCBsb29rIGxp a2U/CgpBbmQgbWF5YmUgd2hhdCBzdWJzZXQgb2YgdGhlIEFNTCBjb2RlIHRoaXMgaW1wbGVtZW50 cz8KKHdpdGggc29tZSBzaW1wbGUgQVNMIGV4YW1wbGVzPykKCkFsc28gYWRkaW5nIFJvc3Mgd2hv IHdyb3RlIGFuIEFNTCBidWlsZGVyIGFzIHdlbGwuCgo+IAo+IFNpZ25lZC1vZmYtYnk6IEhhb3po b25nIFpoYW5nIDxoYW96aG9uZy56aGFuZ0BpbnRlbC5jb20+Cj4gLS0tCj4gQ2M6IEphbiBCZXVs aWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KPiBDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3Bl cjNAY2l0cml4LmNvbT4KPiBDYzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5j b20+Cj4gQ2M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+Cj4gLS0tCj4gIHRvb2xzL2Zp cm13YXJlL2h2bWxvYWRlci9NYWtlZmlsZSB8ICAgMyArLQo+ICB0b29scy9saWJhY3BpL2FtbF9i dWlsZC5jICAgICAgICAgfCAyNTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKPiAgdG9vbHMvbGliYWNwaS9hbWxfYnVpbGQuaCAgICAgICAgIHwgIDgzICsrKysrKysrKysr KysKPiAgdG9vbHMvbGlieGwvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAzICstCj4gIDQgZmls ZXMgY2hhbmdlZCwgMzQxIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBt b2RlIDEwMDY0NCB0b29scy9saWJhY3BpL2FtbF9idWlsZC5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCB0b29scy9saWJhY3BpL2FtbF9idWlsZC5oCj4gCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2Zpcm13 YXJlL2h2bWxvYWRlci9NYWtlZmlsZSBiL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9NYWtlZmls ZQo+IGluZGV4IDc3ZDc1NTEuLmNmMGRhYzMgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvZmlybXdhcmUv aHZtbG9hZGVyL01ha2VmaWxlCj4gKysrIGIvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL01ha2Vm aWxlCj4gQEAgLTc5LDExICs3OSwxMiBAQCBzbWJpb3MubzogQ0ZMQUdTICs9IC1EX19TTUJJT1Nf REFURV9fPSJcIiQoU01CSU9TX1JFTF9EQVRFKVwiIgo+ICAKPiAgQUNQSV9QQVRIID0gLi4vLi4v bGliYWNwaQo+ICBBQ1BJX0ZJTEVTID0gZHNkdF9hbnljcHUuYyBkc2R0XzE1Y3B1LmMgZHNkdF9h bnljcHVfcWVtdV94ZW4uYwo+IC1BQ1BJX09CSlMgPSAkKHBhdHN1YnN0ICUuYywlLm8sJChBQ1BJ X0ZJTEVTKSkgYnVpbGQubyBzdGF0aWNfdGFibGVzLm8KPiArQUNQSV9PQkpTID0gJChwYXRzdWJz dCAlLmMsJS5vLCQoQUNQSV9GSUxFUykpIGJ1aWxkLm8gc3RhdGljX3RhYmxlcy5vIGFtbF9idWls ZC5vCj4gICQoQUNQSV9PQkpTKTogQ0ZMQUdTICs9IC1JLiAtRExJQkFDUElfU1REVVRJTFM9XCIk KENVUkRJUikvdXRpbC5oXCIKPiAgQ0ZMQUdTICs9IC1JJChBQ1BJX1BBVEgpCj4gIHZwYXRoIGJ1 aWxkLmMgJChBQ1BJX1BBVEgpCj4gIHZwYXRoIHN0YXRpY190YWJsZXMuYyAkKEFDUElfUEFUSCkK PiArdnBhdGggYW1sX2J1aWxkLmMgJChBQ1BJX1BBVEgpCj4gIE9CSlMgKz0gJChBQ1BJX09CSlMp Cj4gIAo+ICBodm1sb2FkZXI6ICQoT0JKUykKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGliYWNwaS9h bWxfYnVpbGQuYyBiL3Rvb2xzL2xpYmFjcGkvYW1sX2J1aWxkLmMKPiBuZXcgZmlsZSBtb2RlIDEw MDY0NAo+IGluZGV4IDAwMDAwMDAuLmI2ZjIzZjQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvdG9v bHMvbGliYWNwaS9hbWxfYnVpbGQuYwo+IEBAIC0wLDAgKzEsMjU0IEBACj4gKy8qCj4gKyAqIHRv b2xzL2xpYmFjcGkvYW1sX2J1aWxkLmMKPiArICoKPiArICogQ29weXJpZ2h0IChjKSAyMDE2LCBJ bnRlbCBDb3Jwb3JhdGlvbi4KCi4uIG5vdyAyMDE3Cj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4g KyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CgpUaGUgbGliYWNwaSBpcyBMR1BMLgoKQ291bGQgdGhpcyBiZSBsaWNl bnNlZCBhcyBMR1BMIHBsZWFzZT8KCj4gKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4gKyAqIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsg KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCj4gKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu Cj4gKyAqCj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCj4gKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCj4gKyAqCj4gKyAqIEF1dGhv cjogSGFvemhvbmcgWmhhbmcgPGhhb3pob25nLnpoYW5nQGludGVsLmNvbT4KPiArICovCj4gKwo+ ICsjaW5jbHVkZSBMSUJBQ1BJX1NURFVUSUxTCj4gKyNpbmNsdWRlICJsaWJhY3BpLmgiCj4gKyNp bmNsdWRlICJhbWxfYnVpbGQuaCIKPiArCj4gKyNkZWZpbmUgQU1MX09QX1NDT1BFICAgICAweDEw Cj4gKyNkZWZpbmUgQU1MX09QX0VYVCAgICAgICAweDVCCj4gKyNkZWZpbmUgQU1MX09QX0RFVklD RSAgICAweDgyCj4gKwo+ICsjZGVmaW5lIEFDUElfTkFNRVNFR19MRU4gNAo+ICsKPiArc3RydWN0 IGFtbF9idWlsZF9hbGxvY3RvciB7Cj4gKyAgICBzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0Owo+ICsg ICAgdWludDhfdCAqYnVmOwo+ICsgICAgdWludDMyX3QgY2FwYWNpdHk7Cj4gKyAgICB1aW50MzJf dCB1c2VkOwo+ICt9Owo+ICtzdGF0aWMgc3RydWN0IGFtbF9idWlsZF9hbGxvY3RvciBhbGxvYzsK PiArCj4gK2VudW0geyBBTExPQ19PVkVSRkxPVywgQUxMT0NfTk9UX05FRURFRCwgQUxMT0NfTkVF REVEIH07CgpXaHkgbm90IG1ha2UgdGhpcyBhIG5hbWVkIGVudW0/Cj4gKwo+ICtzdGF0aWMgaW50 IGFsbG9jX25lZWRlZCh1aW50MzJfdCBzaXplKQo+ICt7Cj4gKyAgICB1aW50MzJfdCBsZW4gPSBh bGxvYy51c2VkICsgc2l6ZTsKPiArCj4gKyAgICBpZiAoIGxlbiA8IGFsbG9jLnVzZWQgKQo+ICsg ICAgICAgIHJldHVybiBBTExPQ19PVkVSRkxPVzsKPiArICAgIGVsc2UgaWYgKCBsZW4gPD0gYWxs b2MuY2FwYWNpdHkgKQo+ICsgICAgICAgIHJldHVybiBBTExPQ19OT1RfTkVFREVEOwo+ICsgICAg ZWxzZQo+ICsgICAgICAgIHJldHVybiBBTExPQ19ORUVERUQ7Cj4gK30KPiArCj4gK3N0YXRpYyB1 aW50OF90ICphbWxfYnVmX2FsbG9jKHVpbnQzMl90IHNpemUpCj4gK3sKPiArICAgIGludCBuZWVk ZWQgPSBhbGxvY19uZWVkZWQoc2l6ZSk7CgpBbmQgdGhlbiB0aGlzIGNhbiBiZSBhbiBlbnVtPyBP ciBhbHRlcm5hdGl2ZWx5IG1ha2UgdGhpcyB1bnNpZ25lZCBpbnQuCgo+ICsgICAgdWludDhfdCAq YnVmID0gTlVMTDsKPiArICAgIHN0cnVjdCBhY3BpX2N0eHQgKmN0eHQgPSBhbGxvYy5jdHh0Owo+ ICsgICAgdWludDMyX3QgYWxsb2Nfc2l6ZSwgYWxsb2NfYWxpZ24gPSBjdHh0LT5taW5fYWxsb2Nf YWxpZ247Cj4gKwo+ICsgICAgc3dpdGNoICggbmVlZGVkICkKPiArICAgIHsKPiArICAgIGNhc2Ug QUxMT0NfT1ZFUkZMT1c6Cj4gKyAgICAgICAgYnJlYWs7Cj4gKwo+ICsgICAgY2FzZSBBTExPQ19O RUVERUQ6Cj4gKyAgICAgICAgYWxsb2Nfc2l6ZSA9IChzaXplICsgYWxsb2NfYWxpZ24pICYgfihh bGxvY19hbGlnbiAtIDEpOwoKUGVyaGFwcyBtdWx0aXBseSB0aW1lcyB0d28gc28gd2UgaGF2ZSBt b3JlIHdpZ2dsZSByb29tPwoKPiArICAgICAgICBidWYgPSBjdHh0LT5tZW1fb3BzLmFsbG9jKGN0 eHQsIGFsbG9jX3NpemUsIGFsbG9jX2FsaWduKTsKPiArICAgICAgICBpZiAoICFidWYgKQo+ICsg ICAgICAgICAgICBicmVhazsKPiArICAgICAgICBpZiAoIGFsbG9jLmJ1ZiArIGFsbG9jLmNhcGFj aXR5ICE9IGJ1ZiApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgICBidWYgPSBOVUxMOwo+ICsg ICAgICAgICAgICBicmVhazsKPiArICAgICAgICB9Cj4gKyAgICAgICAgYWxsb2MuY2FwYWNpdHkg Kz0gYWxsb2Nfc2l6ZTsKPiArICAgICAgICBhbGxvYy51c2VkICs9IHNpemU7Cj4gKyAgICAgICAg YnJlYWs7Cj4gKwo+ICsgICAgY2FzZSBBTExPQ19OT1RfTkVFREVEOgo+ICsgICAgICAgIGJ1ZiA9 IGFsbG9jLmJ1ZiArIGFsbG9jLnVzZWQ7Cj4gKyAgICAgICAgYWxsb2MudXNlZCArPSBzaXplOwo+ ICsgICAgICAgIGJyZWFrOwo+ICsKPiArICAgIGRlZmF1bHQ6Cj4gKyAgICAgICAgYnJlYWs7Cj4g KyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIGJ1ZjsKPiArfQo+ICsKPiArc3RhdGljIHVpbnQzMl90 IGdldF9wYWNrYWdlX2xlbmd0aCh1aW50OF90ICpwa2cpCj4gK3sKPiArICAgIHVpbnQzMl90IGxl bjsKPiArCj4gKyAgICBsZW4gPSBwa2cgLSBhbGxvYy5idWY7Cj4gKyAgICBsZW4gPSBhbGxvYy51 c2VkIC0gbGVuOwo+ICsKPiArICAgIHJldHVybiBsZW47Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IGJ1aWxkX3ByZXBlbmRfYnl0ZSh1aW50OF90ICpidWYsIHVpbnQ4X3QgYnl0ZSkKPiArewo+ICsg ICAgdWludDMyX3QgbGVuOwo+ICsKPiArICAgIGxlbiA9IGJ1ZiAtIGFsbG9jLmJ1ZjsKPiArICAg IGxlbiA9IGFsbG9jLnVzZWQgLSBsZW47Cj4gKwo+ICsgICAgYW1sX2J1Zl9hbGxvYyhzaXplb2Yo dWludDhfdCkpOwo+ICsgICAgaWYgKCBsZW4gKQo+ICsgICAgICAgIG1lbW1vdmUoYnVmICsgMSwg YnVmLCBsZW4pOwo+ICsgICAgYnVmWzBdID0gYnl0ZTsKPiArfQo+ICsKPiArLyoKPiArICogWFhY OiBuYW1lcyBvZiBtdWx0aXBsZSBzZWdtZW50cyAoZS5nLiBYLlkuWikgYXJlIG5vdCBzdXBwb3J0 ZWQKPiArICovCj4gK3N0YXRpYyB2b2lkIGJ1aWxkX3ByZXBlbmRfbmFtZSh1aW50OF90ICpidWYs IGNvbnN0IGNoYXIgKm5hbWUpCj4gK3sKPiArICAgIHVpbnQ4X3QgKnAgPSBidWY7Cj4gKyAgICBj b25zdCBjaGFyICpzID0gbmFtZTsKPiArICAgIHVpbnQzMl90IGxlbiwgbmFtZV9sZW47Cj4gKwo+ ICsgICAgd2hpbGUgKCAqcyA9PSAnXFwnIHx8ICpzID09ICdeJyApCj4gKyAgICB7Cj4gKyAgICAg ICAgYnVpbGRfcHJlcGVuZF9ieXRlKHAsICh1aW50OF90KSAqcyk7Cj4gKyAgICAgICAgKytwOwo+ ICsgICAgICAgICsrczsKPiArICAgIH0KPiArCj4gKyAgICBpZiAoICEqcyApCj4gKyAgICB7Cj4g KyAgICAgICAgYnVpbGRfcHJlcGVuZF9ieXRlKHAsIDB4MDApOwo+ICsgICAgICAgIHJldHVybjsK PiArICAgIH0KPiArCj4gKyAgICBsZW4gPSBwIC0gYWxsb2MuYnVmOwo+ICsgICAgbGVuID0gYWxs b2MudXNlZCAtIGxlbjsKPiArICAgIG5hbWVfbGVuID0gc3RybGVuKHMpOwo+ICsgICAgQVNTRVJU KHN0cmxlbihzKSA8PSBBQ1BJX05BTUVTRUdfTEVOKTsKPiArCj4gKyAgICBhbWxfYnVmX2FsbG9j KEFDUElfTkFNRVNFR19MRU4pOwo+ICsgICAgaWYgKCBsZW4gKQo+ICsgICAgICAgIG1lbW1vdmUo cCArIEFDUElfTkFNRVNFR19MRU4sIHAsIGxlbik7Cj4gKyAgICBtZW1jcHkocCwgcywgbmFtZV9s ZW4pOwo+ICsgICAgbWVtY3B5KHAgKyBuYW1lX2xlbiwgIl9fX18iLCBBQ1BJX05BTUVTRUdfTEVO IC0gbmFtZV9sZW4pOwo+ICt9Cj4gKwo+ICtlbnVtIHsKPiArICAgIFBBQ0tBR0VfTEVOR1RIXzFC WVRFX1NISUZUID0gNiwgLyogVXAgdG8gNjMgLSB1c2UgZXh0cmEgMiBiaXRzLiAqLwo+ICsgICAg UEFDS0FHRV9MRU5HVEhfMkJZVEVfU0hJRlQgPSA0LAo+ICsgICAgUEFDS0FHRV9MRU5HVEhfM0JZ VEVfU0hJRlQgPSAxMiwKPiArICAgIFBBQ0tBR0VfTEVOR1RIXzRCWVRFX1NISUZUID0gMjAsCj4g K307Cj4gKwo+ICtzdGF0aWMgdm9pZCBidWlsZF9wcmVwZW5kX3BhY2thZ2VfbGVuZ3RoKHVpbnQ4 X3QgKnBrZywgdWludDMyX3QgbGVuZ3RoKQo+ICt7Cj4gKyAgICB1aW50OF90IGJ5dGU7Cj4gKyAg ICB1bnNpZ25lZCBsZW5ndGhfYnl0ZXM7Cj4gKwo+ICsgICAgaWYgKCBsZW5ndGggKyAxIDwgKDEg PDwgUEFDS0FHRV9MRU5HVEhfMUJZVEVfU0hJRlQpICkKPiArICAgICAgICBsZW5ndGhfYnl0ZXMg PSAxOwo+ICsgICAgZWxzZSBpZiAoIGxlbmd0aCArIDIgPCAoMSA8PCBQQUNLQUdFX0xFTkdUSF8z QllURV9TSElGVCkgKQo+ICsgICAgICAgIGxlbmd0aF9ieXRlcyA9IDI7Cj4gKyAgICBlbHNlIGlm ICggbGVuZ3RoICsgMyA8ICgxIDw8IFBBQ0tBR0VfTEVOR1RIXzRCWVRFX1NISUZUKSApCj4gKyAg ICAgICAgbGVuZ3RoX2J5dGVzID0gMzsKPiArICAgIGVsc2UKPiArICAgICAgICBsZW5ndGhfYnl0 ZXMgPSA0Owo+ICsKPiArICAgIGxlbmd0aCArPSBsZW5ndGhfYnl0ZXM7Cj4gKwo+ICsgICAgc3dp dGNoICggbGVuZ3RoX2J5dGVzICkKPiArICAgIHsKPiArICAgIGNhc2UgMToKPiArICAgICAgICBi eXRlID0gbGVuZ3RoOwo+ICsgICAgICAgIGJ1aWxkX3ByZXBlbmRfYnl0ZShwa2csIGJ5dGUpOwo+ ICsgICAgICAgIHJldHVybjsKPiArICAgIGNhc2UgNDoKPiArICAgICAgICBieXRlID0gbGVuZ3Ro ID4+IFBBQ0tBR0VfTEVOR1RIXzRCWVRFX1NISUZUOwo+ICsgICAgICAgIGJ1aWxkX3ByZXBlbmRf Ynl0ZShwa2csIGJ5dGUpOwo+ICsgICAgICAgIGxlbmd0aCAmPSAoMSA8PCBQQUNLQUdFX0xFTkdU SF80QllURV9TSElGVCkgLSAxOwo+ICsgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwo+ICsgICAg Y2FzZSAzOgo+ICsgICAgICAgIGJ5dGUgPSBsZW5ndGggPj4gUEFDS0FHRV9MRU5HVEhfM0JZVEVf U0hJRlQ7Cj4gKyAgICAgICAgYnVpbGRfcHJlcGVuZF9ieXRlKHBrZywgYnl0ZSk7Cj4gKyAgICAg ICAgbGVuZ3RoICY9ICgxIDw8IFBBQ0tBR0VfTEVOR1RIXzNCWVRFX1NISUZUKSAtIDE7Cj4gKyAg ICAgICAgLyogZmFsbCB0aHJvdWdoICovCj4gKyAgICBjYXNlIDI6Cj4gKyAgICAgICAgYnl0ZSA9 IGxlbmd0aCA+PiBQQUNLQUdFX0xFTkdUSF8yQllURV9TSElGVDsKPiArICAgICAgICBidWlsZF9w cmVwZW5kX2J5dGUocGtnLCBieXRlKTsKPiArICAgICAgICBsZW5ndGggJj0gKDEgPDwgUEFDS0FH RV9MRU5HVEhfMkJZVEVfU0hJRlQpIC0gMTsKPiArICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8K PiArICAgIH0KPiArICAgIC8qCj4gKyAgICAgKiBNb3N0IHNpZ25pZmljYW50IHR3byBiaXRzIG9m IGJ5dGUgemVybyBpbmRpY2F0ZSBob3cgbWFueSBmb2xsb3dpbmcgYnl0ZXMKPiArICAgICAqIGFy ZSBpbiBQa2dMZW5ndGggZW5jb2RpbmcuCj4gKyAgICAgKi8KPiArICAgIGJ5dGUgPSAoKGxlbmd0 aF9ieXRlcyAtIDEpIDw8IFBBQ0tBR0VfTEVOR1RIXzFCWVRFX1NISUZUKSB8IGxlbmd0aDsKPiAr ICAgIGJ1aWxkX3ByZXBlbmRfYnl0ZShwa2csIGJ5dGUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9p ZCBidWlsZF9wcmVwZW5kX3BhY2thZ2UodWludDhfdCAqYnVmLCB1aW50OF90IG9wKQo+ICt7Cj4g KyAgICB1aW50MzJfdCBsZW5ndGggPSBnZXRfcGFja2FnZV9sZW5ndGgoYnVmKTsKPiArICAgIGJ1 aWxkX3ByZXBlbmRfcGFja2FnZV9sZW5ndGgoYnVmLCBsZW5ndGgpOwo+ICsgICAgYnVpbGRfcHJl cGVuZF9ieXRlKGJ1Ziwgb3ApOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBidWlsZF9wcmVwZW5k X2V4dF9wYWNrZ2UodWludDhfdCAqYnVmLCB1aW50OF90IG9wKQo+ICt7Cj4gKyAgICBidWlsZF9w cmVwZW5kX3BhY2thZ2UoYnVmLCBvcCk7Cj4gKyAgICBidWlsZF9wcmVwZW5kX2J5dGUoYnVmLCBB TUxfT1BfRVhUKTsKPiArfQo+ICsKPiArdm9pZCAqYW1sX2J1aWxkX2JlZ2luKHN0cnVjdCBhY3Bp X2N0eHQgKmN0eHQpCj4gK3sKPiArICAgIGFsbG9jLmN0eHQgPSBjdHh0Owo+ICsgICAgYWxsb2Mu YnVmID0gY3R4dC0+bWVtX29wcy5hbGxvYyhjdHh0LAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjdHh0LT5taW5fYWxsb2NfdW5pdCwgY3R4dC0+bWluX2FsbG9jX2FsaWdu KTsKPiArICAgIGFsbG9jLmNhcGFjaXR5ID0gY3R4dC0+bWluX2FsbG9jX3VuaXQ7Cj4gKyAgICBh bGxvYy51c2VkID0gMDsKPiArICAgIHJldHVybiBhbGxvYy5idWY7Cj4gK30KPiArCj4gK3VpbnQz Ml90IGFtbF9idWlsZF9lbmQodm9pZCkKPiArewo+ICsgICAgcmV0dXJuIGFsbG9jLnVzZWQ7Cj4g K30KPiArCj4gK3ZvaWQgYW1sX3ByZXBlbmRfYmxvYih1aW50OF90ICpidWYsIGNvbnN0IHZvaWQg KmJsb2IsIHVpbnQzMl90IGJsb2JfbGVuZ3RoKQo+ICt7Cj4gKyAgICB1aW50MzJfdCBsZW47Cj4g Kwo+ICsgICAgbGVuID0gYnVmIC0gYWxsb2MuYnVmOwo+ICsgICAgbGVuID0gYWxsb2MudXNlZCAt IGxlbjsKPiArCj4gKyAgICBhbWxfYnVmX2FsbG9jKGJsb2JfbGVuZ3RoKTsKPiArICAgIGlmICgg bGVuICkKPiArICAgICAgICBtZW1tb3ZlKGJ1ZiArIGJsb2JfbGVuZ3RoLCBidWYsIGxlbik7Cj4g Kwo+ICsgICAgbWVtY3B5KGJ1ZiwgYmxvYiwgYmxvYl9sZW5ndGgpOwo+ICt9Cj4gKwo+ICt2b2lk IGFtbF9wcmVwZW5kX2RldmljZSh1aW50OF90ICpidWYsIGNvbnN0IGNoYXIgKm5hbWUpCj4gK3sK PiArICAgIGJ1aWxkX3ByZXBlbmRfbmFtZShidWYsIG5hbWUpOwo+ICsgICAgYnVpbGRfcHJlcGVu ZF9leHRfcGFja2dlKGJ1ZiwgQU1MX09QX0RFVklDRSk7Cj4gK30KPiArCj4gK3ZvaWQgYW1sX3By ZXBlbmRfc2NvcGUodWludDhfdCAqYnVmLCBjb25zdCBjaGFyICpuYW1lKQo+ICt7Cj4gKyAgICBi dWlsZF9wcmVwZW5kX25hbWUoYnVmLCBuYW1lKTsKPiArICAgIGJ1aWxkX3ByZXBlbmRfcGFja2Fn ZShidWYsIEFNTF9PUF9TQ09QRSk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGliYWNwaS9h bWxfYnVpbGQuaCBiL3Rvb2xzL2xpYmFjcGkvYW1sX2J1aWxkLmgKPiBuZXcgZmlsZSBtb2RlIDEw MDY0NAo+IGluZGV4IDAwMDAwMDAuLmVkNjhmNjYKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvdG9v bHMvbGliYWNwaS9hbWxfYnVpbGQuaAo+IEBAIC0wLDAgKzEsODMgQEAKPiArLyoKPiArICogdG9v bHMvbGliYWNwaS9hbWxfYnVpbGQuaAo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTYsIElu dGVsIENvcnBvcmF0aW9uLgoKTm93IDIwMTcuCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gKyAq IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Cj4gKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4gKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCgpBZ2FpbiB0aGlzIG5lZWRzIHRvIGJlIExHUEwgbGljZW5zZS4KCj4gKyAq Cj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCj4gKyAqIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCj4gKyAq IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCj4gKyAqCj4gKyAqIEF1dGhvcjogSGFvemhvbmcgWmhhbmcgPGhhb3pob25n LnpoYW5nQGludGVsLmNvbT4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9BTUxfQlVJTERfSF8KPiAr I2RlZmluZSBfQU1MX0JVSUxEX0hfCj4gKwo+ICsjaW5jbHVkZSA8c3RkaW50Lmg+Cj4gKyNpbmNs dWRlICJsaWJhY3BpLmgiCj4gKwo+ICsvKgo+ICsgKiBOQjogQWxsIGFtbF9wcmVwZW5kXyogY2Fs bHMsIHdoaWNoIGJ1aWxkIEFNTCBjb2RlIGluIG9uZSBBQ1BJCj4gKyAqICAgICB0YWJsZSwgc2hv dWxkIGJlIHBsYWNlZCBiZXR3ZWVuIGEgcGFpciBvZiBjYWxscyB0bwo+ICsgKiAgICAgYW1sX2J1 aWxkX2JlZ2luKCkgYW5kIGFtbF9idWlsZF9lbmQoKS4KPiArICovCj4gKwo+ICsvKioKPiArICog UmVzZXQgdGhlIEFNTCBidWlsZGVyIGFuZCBiZWdpbiBhIG5ldyByb3VuZCBvZiBidWlsZGluZy4K PiArICoKPiArICogUGFyYW1ldGVyczoKPiArICogICBAY3R4dDogQUNQSSBjb250ZXh0IHVzZWQg YnkgdGhlIEFNTCBidWlsZGVyCj4gKyAqCj4gKyAqIFJldHVybnM6Cj4gKyAqICAgYSBwb2ludGVy IHRvIHRoZSBidWlsZGVyIGJ1ZmZlciB3aGVyZSB0aGUgQU1MIGNvZGUgd2lsbCBiZSBzdG9yZWQK PiArICovCj4gK3ZvaWQgKmFtbF9idWlsZF9iZWdpbihzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0KTsK PiArCj4gKy8qKgo+ICsgKiBNYXJrIHRoZSBlbmQgb2YgYSByb3VuZCBvZiBBTUwgYnVpbGRpbmcu Cj4gKyAqCj4gKyAqIFJldHVybnM6Cj4gKyAqICB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBi dWlsZGVyIGJ1ZmZlciBidWlsdCBpbiB0aGlzIHJvdW5kCj4gKyAqLwo+ICt1aW50MzJfdCBhbWxf YnVpbGRfZW5kKHZvaWQpOwo+ICsKPiArLyoqCj4gKyAqIFByZXBlbmQgYSBibG9iLCB3aGljaCBj YW4gY29udGFpbiBhcmJpdHJhcnkgY29udGVudCwgdG8gdGhlIGJ1aWxkZXIgYnVmZmVyLgo+ICsg Kgo+ICsgKiBQYXJhbWV0ZXJzOgo+ICsgKiAgIEBidWY6ICAgIHBvaW50ZXIgdG8gdGhlIGJ1aWxk ZXIgYnVmZmVyCj4gKyAqICAgQGJsb2I6ICAgcG9pbnRlciB0byB0aGUgYmxvYgo+ICsgKiAgIEBs ZW5ndGg6IHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGJsb2IKPiArICovCj4gK3ZvaWQgYW1s X3ByZXBlbmRfYmxvYih1aW50OF90ICpidWYsIGNvbnN0IHZvaWQgKmJsb2IsIHVpbnQzMl90IGxl bmd0aCk7Cj4gKwo+ICsvKioKPiArICogUHJlcGVuZCBhbiBBTUwgZGV2aWNlIHN0cnVjdHVyZSB0 byB0aGUgYnVpbGRlciBidWZmZXIuIFRoZSBleGlzdGluZwo+ICsgKiBkYXRhIGluIHRoZSBidWls ZGVyIGJ1ZmZlciBpcyBpbmNsdWRlZCBpbiB0aGUgQU1MIGRldmljZS4KPiArICoKPiArICogUGFy YW1ldGVyczoKPiArICogICBAYnVmOiAgcG9pbnRlciB0byB0aGUgYnVpbGRlciBidWZmZXIKPiAr ICogICBAbmFtZTogdGhlIG5hbWUgb2YgdGhlIGRldmljZQo+ICsgKi8KPiArdm9pZCBhbWxfcHJl cGVuZF9kZXZpY2UodWludDhfdCAqYnVmLCBjb25zdCBjaGFyICpuYW1lKTsKPiArCj4gKy8qKgo+ ICsgKiBQcmVwZW5kIGFuIEFNTCBzY29wZSBzdHJ1Y3R1cmUgdG8gdGhlIGJ1aWxkZXIgYnVmZmVy LiBUaGUgZXhpc3RpbmcKPiArICogZGF0YSBpbiB0aGUgYnVpbGRlciBidWZmZXIgaXMgaW5jbHVk ZWQgaW4gdGhlIEFNTCBzY29wZS4KPiArICoKPiArICogUGFyYW1ldGVyczoKPiArICogICBAYnVm OiAgcG9pbnRlciB0byB0aGUgYnVpbGRlciBidWZmZXIKPiArICogICBAbmFtZTogdGhlIG5hbWUg b2YgdGhlIHNjb3BlCj4gKyAqLwo+ICt2b2lkIGFtbF9wcmVwZW5kX3Njb3BlKHVpbnQ4X3QgKmJ1 ZiwgY29uc3QgY2hhciAqbmFtZSk7Cj4gKwo+ICsjZW5kaWYgLyogX0FNTF9CVUlMRF9IXyAqLwo+ IGRpZmYgLS1naXQgYS90b29scy9saWJ4bC9NYWtlZmlsZSBiL3Rvb2xzL2xpYnhsL01ha2VmaWxl Cj4gaW5kZXggYzRlNDExNy4uYTkwNDkyNyAxMDA2NDQKPiAtLS0gYS90b29scy9saWJ4bC9NYWtl ZmlsZQo+ICsrKyBiL3Rvb2xzL2xpYnhsL01ha2VmaWxlCj4gQEAgLTc3LDExICs3NywxMiBAQCBl bmRpZgo+ICAKPiAgQUNQSV9QQVRIICA9ICQoWEVOX1JPT1QpL3Rvb2xzL2xpYmFjcGkKPiAgQUNQ SV9GSUxFUyA9IGRzZHRfcHZoLmMKPiAtQUNQSV9PQkpTICA9ICQocGF0c3Vic3QgJS5jLCUubywk KEFDUElfRklMRVMpKSBidWlsZC5vIHN0YXRpY190YWJsZXMubwo+ICtBQ1BJX09CSlMgID0gJChw YXRzdWJzdCAlLmMsJS5vLCQoQUNQSV9GSUxFUykpIGJ1aWxkLm8gc3RhdGljX3RhYmxlcy5vIGFt bF9idWlsZC5vCj4gICQoQUNQSV9GSUxFUyk6IGFjcGkKPiAgJChBQ1BJX09CSlMpOiBDRkxBR1Mg Kz0gLUkuIC1ETElCQUNQSV9TVERVVElMUz1cIiQoQ1VSRElSKS9saWJ4bF94ODZfYWNwaS5oXCIK PiAgdnBhdGggYnVpbGQuYyAkKEFDUElfUEFUSCkvCj4gIHZwYXRoIHN0YXRpY190YWJsZXMuYyAk KEFDUElfUEFUSCkvCj4gK3ZwYXRoIGFtbF9idWlsZC5jICQoQUNQSV9QQVRIKS8KPiAgTElCWExf T0JKUy0kKENPTkZJR19YODYpICs9ICQoQUNQSV9PQkpTKQo+ICAKPiAgLlBIT05ZOiBhY3BpCj4g LS0gCj4gMi4xMC4xCj4gCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KPiBYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Cj4gWGVuLWRldmVsQGxpc3RzLnhl bi5vcmcKPiBodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK