From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: Re: [PATCH v2 23/25] arm/altp2m: Extend libxl to activate altp2m on ARM. Date: Thu, 11 Aug 2016 17:00:46 +0100 Message-ID: <20160811160046.GR20641@citrix.com> References: <20160801171028.11615-1-proskurin@sec.in.tum.de> <20160801171028.11615-24-proskurin@sec.in.tum.de> <20160802115927.GI22419@citrix.com> <301cc79b-ea63-258a-59b8-5bf2fec8d5f7@sec.in.tum.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <301cc79b-ea63-258a-59b8-5bf2fec8d5f7@sec.in.tum.de> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Sergej Proskurin Cc: wei.liu2@citrix.com, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org U29ycnkgZm9yIHRoZSBsYXRlIHJlcGx5LgoKT24gVHVlLCBBdWcgMDIsIDIwMTYgYXQgMDQ6MDc6 NTNQTSArMDIwMCwgU2VyZ2VqIFByb3NrdXJpbiB3cm90ZToKPiBIaSBXZWksClsuLi5dCj4gPj4g QEAgLTkwMSw4ICs5MDMsOCBAQCBzdGF0aWMgdm9pZCBpbml0aWF0ZV9kb21haW5fY3JlYXRlKGxp YnhsX19lZ2MgKmVnYywKPiA+PiAgCj4gPj4gICAgICBpZiAoZF9jb25maWctPmNfaW5mby50eXBl ID09IExJQlhMX0RPTUFJTl9UWVBFX0hWTSAmJgo+ID4+ICAgICAgICAgIChsaWJ4bF9kZWZib29s X3ZhbChkX2NvbmZpZy0+Yl9pbmZvLnUuaHZtLm5lc3RlZF9odm0pICYmCj4gPj4gLSAgICAgICAg IGxpYnhsX2RlZmJvb2xfdmFsKGRfY29uZmlnLT5iX2luZm8udS5odm0uYWx0cDJtKSkpIHsKPiA+ PiAtICAgICAgICBMT0coRVJST1IsICJuZXN0ZWRodm0gYW5kIGFsdHAybWh2bSBjYW5ub3QgYmUg dXNlZCB0b2dldGhlciIpOwo+ID4+ICsgICAgICAgICBsaWJ4bF9kZWZib29sX3ZhbChkX2NvbmZp Zy0+Yl9pbmZvLmFsdHAybSkpKSB7Cj4gPj4gKyAgICAgICAgTE9HKEVSUk9SLCAibmVzdGVkaHZt IGFuZCBhbHRwMm0gY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiKTsKPiA+PiAgICAgICAgICBnb3Rv IGVycm9yX291dDsKPiA+PiAgICAgIH0KPiA+PiAgCj4gPj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xp YnhsL2xpYnhsX2RvbS5jIGIvdG9vbHMvbGlieGwvbGlieGxfZG9tLmMKPiA+PiBpbmRleCBlYzI5 MDYwLi4xNTUwZWY4IDEwMDY0NAo+ID4+IC0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX2RvbS5jCj4g Pj4gKysrIGIvdG9vbHMvbGlieGwvbGlieGxfZG9tLmMKPiA+PiBAQCAtMjkxLDggKzI5MSw2IEBA IHN0YXRpYyB2b2lkIGh2bV9zZXRfY29uZl9wYXJhbXMoeGNfaW50ZXJmYWNlICpoYW5kbGUsIHVp bnQzMl90IGRvbWlkLAo+ID4+ICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RlZmJvb2xfdmFs KGluZm8tPnUuaHZtLnZwdF9hbGlnbikpOwo+ID4+ICAgICAgeGNfaHZtX3BhcmFtX3NldChoYW5k bGUsIGRvbWlkLCBIVk1fUEFSQU1fTkVTVEVESFZNLAo+ID4+ICAgICAgICAgICAgICAgICAgICAg IGxpYnhsX2RlZmJvb2xfdmFsKGluZm8tPnUuaHZtLm5lc3RlZF9odm0pKTsKPiA+PiAtICAgIHhj X2h2bV9wYXJhbV9zZXQoaGFuZGxlLCBkb21pZCwgSFZNX1BBUkFNX0FMVFAyTSwKPiA+PiAtICAg ICAgICAgICAgICAgICAgICBsaWJ4bF9kZWZib29sX3ZhbChpbmZvLT51Lmh2bS5hbHRwMm0pKTsK PiA+PiAgfQo+ID4+ICAKPiA+PiAgaW50IGxpYnhsX19idWlsZF9wcmUobGlieGxfX2djICpnYywg dWludDMyX3QgZG9taWQsCj4gPj4gQEAgLTQzNCw2ICs0MzIsOCBAQCBpbnQgbGlieGxfX2J1aWxk X3ByZShsaWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKPiA+PiAgI2VuZGlmCj4gPj4gICAg ICB9Cj4gPj4gIAo+ID4+ICsgICAgeGNfaHZtX3BhcmFtX3NldChjdHgtPnhjaCwgZG9taWQsIEhW TV9QQVJBTV9BTFRQMk0sIGxpYnhsX2RlZmJvb2xfdmFsKGluZm8tPmFsdHAybSkpOwo+ID4+ICsK PiA+IEFuZCB0aGUgcmVhc29uIGZvciBtb3ZpbmcgdGhpcyBjYWxsIHRvIHRoaXMgZnVuY3Rpb24g aXM/Cj4gCj4gU2luY2UgdGhpcyBpbXBsZW1lbnRhdGlvbiByZW1vdmVzIHRoZSBmaWVsZCBpbmZv LT51Lmh2bS5hbHRwMm0gYW5kCj4gcmF0aGVyIHVzZXMgdGhlIGNvbW1vbiBmaWVsZCBpbmZvLT5h bHRwMm0sIEkgd2FudGVkIHRvIHNldCB0aGUgYWx0cDJtCj4gcGFyYW1ldGVyIG91dHNpZGUgb2Yg YSBmdW5jdGlvbiB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBhbiBIVk0gZG9tYWluCj4gKGFzIHRo ZSBmdW5jdGlvbiBodm1fc2V0X2NvbmZfcGFyYW1zIGlzIGNhbGxlZCBvbmx5IGlmIHRoZSBmaWVs ZAo+IGluZm8tPnR5cGUgPT0gTElCWExfRE9NQUlOX1RZUEVfSFZNKS4gVGhlIGlkZWEgd2FzIHRv IGhhdmUgb25seSBvbmUgY2FsbAo+IHRvIHhjX2h2bV9wYXJhbV9zZXQgaW5kZXBlbmRlbnQgb2Yg dGhlIGRvbWFpbiB0eXBlLCBhcyB3ZSBkbyBub3QKPiBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSB1 bmRlcmx5aW5nIGFyY2hpdGVjdHVyZSBhbnltb3JlLklmIHlvdSBiZWxpZXZlCj4gdGhhdCB3ZSBu ZXZlcnRoZWxlc3MgbmVlZCB0d28gY2FsbHMgaW4gdGhlIGNvZGUsIEkgd2lsbCBtb3ZlIHRoZQo+ IGZ1bmN0aW9uIGNhbGwgaW4gcXVlc3Rpb24gYmFjayB0byBodm1fc2V0X2NvbmZfcGFyYW1zIGFu ZCBhZGQgYW4KPiBhZGRpdGlvbmFsIGNhbGwgdG8geGNfaHZtX3BhcmFtX3NldCBmb3IgdGhlIGdl bmVyYWwgZmllbGQgaW5mby0+YWx0cDJtLgo+IFlldCwgSU1ITyB0aGUgYXJjaGl0ZWN0dXJlIHdv dWxkIGJlbmVmaXQgaWYgd2Ugd291bGQgaGF2ZSBvbmx5IG9uZSBjYWxsCj4gdG8geGNfaHZtX3Bh cmFtX3NldC4KPiAKCk5vIHByb2JsZW0uIEknbSBmaW5lIHdpdGggeW91ciBhcnJhbmdlbWVudC4K CkJ1dCB5b3UgZG8gbmVlZCB0byB3cmFwIHRoZSBsaW5lIHByb3Blcmx5LgoKPiA+PiAgICAgIHJj ID0gbGlieGxfX2FyY2hfZG9tYWluX2NyZWF0ZShnYywgZF9jb25maWcsIGRvbWlkKTsKPiA+PiAg Cj4gPj4gICAgICByZXR1cm4gcmM7Cj4gPj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhs X3R5cGVzLmlkbCBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbAo+ID4+IGluZGV4IGVmNjE0 YmUuLjQyZTdjOTUgMTAwNjQ0Cj4gPj4gLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRs Cj4gPj4gKysrIGIvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCj4gPj4gQEAgLTUxMiw3ICs1 MTIsNiBAQCBsaWJ4bF9kb21haW5fYnVpbGRfaW5mbyA9IFN0cnVjdCgiZG9tYWluX2J1aWxkX2lu Zm8iLFsKPiA+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJtbWlv X2hvbGVfbWVta2IiLCAgTWVtS0IpLAo+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoInRpbWVyX21vZGUiLCAgICAgICBsaWJ4bF90aW1lcl9tb2RlKSwKPiA+PiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJuZXN0ZWRfaHZtIiwgICAg ICAgbGlieGxfZGVmYm9vbCksCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICgiYWx0cDJtIiwgICAgICAgICAgIGxpYnhsX2RlZmJvb2wpLAo+ID4gTm8sIHlvdSBj YW4ndCByZW1vdmUgZXhpc3RpbmcgZmllbGQgLS0gdGhhdCB3b3VsZCBicmVhayBvbGQKPiA+IGFw cGxpY2F0aW9ucyB3aGljaCB1c2UgdGhlIG9sZCBmaWVsZC4KPiA+Cj4gPiBBbmQgcGxlYXNlIGhh bmRsZSBjb21wYXRpYmlsaXR5IGluIGxpYnhsIHdpdGggb2xkIGFwcGxpY2F0aW9ucyBpbiBtaW5k Lgo+IAo+IEkgZGlkIG5vdCBleHBlY3Qgb3RoZXIgYXBwbGljYXRpb25zIHVzaW5nIHRoaXMgZmll bGQgb3V0c2lkZSBvZiBsaWJ4bAo+IGJ1dCBvZiBjb3Vyc2UgeW91IGFyZSByaWdodC4gTXkgbmV4 dCBwYXRjaCB3aWxsIGNvbnRhaW4gdGhlIGxlZ2FjeQo+IGluZm8tPnUuaHZtLmFsdHAybSBmaWVs ZCBpbiBhZGRpdGlvbiB0byB0aGUgZ2VuZXJhbC9jb21tb24gZmllbGQKPiBpbmZvLT5hbHRwMm0u IFRoYW5rIHlvdSBmb3IgcG9pbnRpbmcgdGhhdCBvdXQuCj4gCj4gPj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICgic21iaW9zX2Zpcm13YXJlIiwgIHN0cmluZyksCj4g Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiYWNwaV9maXJtd2Fy ZSIsICAgIHN0cmluZyksCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICgiaGR0eXBlIiwgICAgICAgICAgIGxpYnhsX2hkdHlwZSksCj4gPj4gQEAgLTU2MSw2ICs1 NjAsOSBAQCBsaWJ4bF9kb21haW5fYnVpbGRfaW5mbyA9IFN0cnVjdCgiZG9tYWluX2J1aWxkX2lu Zm8iLFsKPiA+PiAgCj4gPj4gICAgICAoImFyY2hfYXJtIiwgU3RydWN0KE5vbmUsIFsoImdpY192 ZXJzaW9uIiwgbGlieGxfZ2ljX3ZlcnNpb24pLAoKQnV0IHlvdSBkbyBuZWVkIHRvIHdyYXAgdGhl IGxpbmUgcHJvcGVybHkuCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pKSwK PiA+PiArICAgICMgQWx0ZXJuYXRlIHAybSBpcyBub3QgYm91bmQgdG8gYW55IGFyY2hpdGVjdHVy ZSBvciBndWVzdCB0eXBlLCBhcyBpdCBpcwo+ID4+ICsgICAgIyBzdXBwb3J0ZWQgYnkgeDg2IEhW TSBhbmQgQVJNIFBWIGd1ZXN0cy4KPiA+IEp1c3QgIkFSTSBndWVzdHMiIHdvdWxkIGRvLiBBUk0g ZG9lc24ndCBoYXZlIG5vdGlvbiBvZiBQViB2cyBIVk0uCj4gCj4gSSB3aWxsIGNoYW5nZSB0aGF0 LCB0aGFuayB5b3UuIEkgbWVudGlvbmVkIEFSTSBQViBhcyBjdXJyZW50bHkgaXQgaXMgdGhlCj4g dHlwZSB0aGF0IGlzIHJlZ2lzdGVyZWQgZm9yIGd1ZXN0cyBvbiBBUk0uCj4gCj4gPj4gKyAgICAo ImFsdHAybSIsIGxpYnhsX2RlZmJvb2wpLAo+ID4+ICAKPiA+PiAgICAgIF0sIGRpcj1ESVJfSU4K PiA+PiAgKQo+ID4+IGRpZmYgLS1naXQgYS90b29scy9saWJ4bC94bF9jbWRpbXBsLmMgYi90b29s cy9saWJ4bC94bF9jbWRpbXBsLmMKPiA+PiBpbmRleCA1MWRjN2EwLi5mNGE0OWVlIDEwMDY0NAo+ ID4+IC0tLSBhL3Rvb2xzL2xpYnhsL3hsX2NtZGltcGwuYwo+ID4+ICsrKyBiL3Rvb2xzL2xpYnhs L3hsX2NtZGltcGwuYwo+ID4+IEBAIC0xNjY3LDcgKzE2NjcsMTIgQEAgc3RhdGljIHZvaWQgcGFy c2VfY29uZmlnX2RhdGEoY29uc3QgY2hhciAqY29uZmlnX3NvdXJjZSwKPiA+PiAgCj4gPj4gICAg ICAgICAgeGx1X2NmZ19nZXRfZGVmYm9vbChjb25maWcsICJuZXN0ZWRodm0iLCAmYl9pbmZvLT51 Lmh2bS5uZXN0ZWRfaHZtLCAwKTsKPiA+PiAgCj4gPj4gLSAgICAgICAgeGx1X2NmZ19nZXRfZGVm Ym9vbChjb25maWcsICJhbHRwMm1odm0iLCAmYl9pbmZvLT51Lmh2bS5hbHRwMm0sIDApOwo+ID4+ ICsgICAgICAgIC8qIFRoZSBjb25maWcgcGFyYW1ldGVyICJhbHRwMm1odm0iIGlzIGNvbnNpZGVy ZWQgZGVwcmVjYXRlZCwgaG93ZXZlcgo+ID4+ICsgICAgICAgICAqIGZ1cnRoZXIgY29uc2lkZXJl ZCBiZWNhdXNlIG9mIGxlZ2FjeSByZWFzb25zLiBUaGUgY29uZmlnIHBhcmFtZXRlcgo+ID4+ICsg ICAgICAgICAqICJhbHRwMm0iIHNoYWxsIGJlIHVzZWQgaW5zdGVhZC4gKi8KPiA+PiArICAgICAg ICBpZiAoIXhsdV9jZmdfZ2V0X2RlZmJvb2woY29uZmlnLCAiYWx0cDJtaHZtIiwgJmJfaW5mby0+ YWx0cDJtLCAwKSkKPiA+PiArICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJXQVJOSU5HOiBT cGVjaWZ5aW5nIFwiYWx0cDJtaHZtXCIgaXMgZGVwcmVjYXRlZC4gIgo+ID4+ICsgICAgICAgICAg ICAgICAgICAgICJQbGVhc2UgdXNlIGEgXCJhbHRwMm1cIiBpbnN0ZWFkLlxuIik7Cj4gPiBJbiB0 aGlzIGNhc2UgeW91IHNob3VsZDoKPiA+Cj4gPiAgaWYgYm90aCBhbHRwMm1odm0gYW5kIGFsdHAy bSBhcmUgcHJlc2VudCwgdXNlIHRoZSBsYXR0ZXIuCj4gPiAgaWYgb25seSBhbHRwMm1odm0gaXMg cHJlc2VudCwgaG9ub3VyIGl0Lgo+IAo+IFRoaXMgaXMgZXhhY3RseSB0aGUgYmVoYXZpb3Igcmln aHQgbm93IChzZWUgY29tbWVudCBiZWxvdyk6Cj4gCj4gKyAvKiBUaGUgY29uZmlnIHBhcmFtZXRl ciAiYWx0cDJtIiByZXBsYWNlcyB0aGUgcGFyYW1ldGVyICJhbHRwMm1odm0iLgo+ICsgICogRm9y IGxlZ2FjeSByZWFzb25zLCBib3RoIHBhcmFtZXRlcnMgYXJlIGFjY2VwdGVkIG9uIHg4NiBIVk0g Z3Vlc3RzCj4gKyAgKiAob25seSAiYWx0cDJtIiBpcyBhY2NlcHRlZCBvbiBBUk0gZ3Vlc3RzKS4g SWYgYm90aCBwYXJhbWV0ZXJzIGFyZQo+ICsgICogZ2l2ZW4sIGl0IG11c3QgYmUgY29uc2lkZXJl ZCB0aGF0IHRoZSBjb25maWcgcGFyYW1ldGVyICJhbHRwMm0iIHdpbGwKPiArICAqIGFsd2F5cyBo YXZlIHByaW9yaXR5IG92ZXIgImFsdHAybWh2bSIuICovCj4gCj4gVGhlIHdhcm5pbmcgaXMganVz dCBkaXNwbGF5ZWQgYXQgdGhpcyBwb2ludDsgImFsdHAybWh2bSIgaXMgY29uc2lkZXJlZAo+IGFz IGEgdmFsaWQgcGFyYW1ldGVyLgo+IAo+ID4KPiA+IE5vdGUgdGhhdCB3ZSBoYXZlIG5vdCB5ZXQg cmVtb3ZlZCB0aGUgb2xkIG9wdGlvbi4gSWRlYWxseSB3ZSB3b3VsZCBnaXZlCj4gPiB1c2VycyBh IHRyYW5zaXRpb24gcGVyaW9kIGJlZm9yZSByZW1vdmluZyB0aGUgb3B0aW9uLgo+ID4KPiA+IEFs c28geW91IG5lZWQgdG8gcGF0Y2ggZG9jcy9tYW4veGwucG9kLjEuaW4gZm9yIHRoZSBuZXcgb3B0 aW9uLgo+IAo+IEkgY2Fubm90IGZpbmQgYW55IGVudHJ5IGNvbmNlcm5pbmcgdGhlIGN1cnJlbnQg ImFsdHAybWh2bSIgb3B0aW9uLgo+IFBsZWFzZSBjb3JyZWN0IG1lIGlmIEkgYW0gd3JvbmcsIGJ1 dCBhcyBmYXIgYXMgSSB1bmRlcnN0YW5kLCB0aGlzCj4gZG9jdW1lbnQgaG9sZHMgaW5mb3JtYXRp b24gYWJvdXQgdGhlICJ4bCIgdG9vbC4gU2luY2UgYWx0cDJtIGlzCj4gY3VycmVudGx5IG5vdCBj b250cm9sbGVkIHRocm91Z2ggdGhlIHhsIHRvb2wsIEkgYW0gYWN0dWFsbHkgbm90IHN1cmUKPiB3 aGV0aGVyIGl0IGlzIHRoZSByaWdodCBwbGFjZSBmb3IgaXQuIEkgYmVsaWV2ZSB5b3UgbWVhbnQg dGhlIGZpbGUKPiBkb2NzL21hbi94bC5jZmcucG9kLjUuIElmIHllcywgSSB3aWxsIGdsYWRseSBl eHRlbmQgaXQsIHRoYW5rIHlvdS4KPiAKClllcywgSSBtZWFudCB4bC5jZmcucG9kLjUuaW4uIFNv cnJ5IGZvciB0aGUgdHlwby4KCj4gPj4gIAo+ID4+ICAgICAgICAgIHhsdV9jZmdfcmVwbGFjZV9z dHJpbmcoY29uZmlnLCAic21iaW9zX2Zpcm13YXJlIiwKPiA+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZiX2luZm8tPnUuaHZtLnNtYmlvc19maXJtd2FyZSwgMCk7Cj4gPj4gQEAg LTE3MjcsNiArMTczMiwyNSBAQCBzdGF0aWMgdm9pZCBwYXJzZV9jb25maWdfZGF0YShjb25zdCBj aGFyICpjb25maWdfc291cmNlLAo+ID4+ICAgICAgICAgIGFib3J0KCk7Cj4gPj4gICAgICB9Cj4g Pj4gIAo+ID4+ICsgICAgYm9vbCBhbHRwMm1fc3VwcG9ydCA9IGZhbHNlOwo+ID4+ICsjaWYgZGVm aW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKQo+ID4+ICsgICAgLyogQWx0ZXJu YXRlIHAybSBzdXBwb3J0IG9uIHg4NiBpcyBhdmFpbGFibGUgb25seSBmb3IgSFZNIGd1ZXN0cy4g Ki8KPiA+PiArICAgIGlmIChiX2luZm8tPnR5cGUgPT0gTElCWExfRE9NQUlOX1RZUEVfSFZNKQo+ ID4+ICsgICAgICAgIGFsdHAybV9zdXBwb3J0ID0gdHJ1ZTsKPiA+PiArI2VsaWYgZGVmaW5lZChf X2FybV9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKQo+ID4+ICsgICAgLyogQWx0ZXJuYXRlIHAy bSBzdXBwb3J0IG9uIEFSTSBpcyBhdmFpbGFibGUgZm9yIGFsbCBndWVzdHMuICovCj4gPj4gKyAg ICBhbHRwMm1fc3VwcG9ydCA9IHRydWU7Cj4gPj4gKyNlbmRpZgo+ID4+ICsKPiA+IEkgZG9uJ3Qg dGhpbmsgeW91IG5lZWQgdG8gY2FyZSB0b28gbXVjaCBhYm91dCBkZWFkIG9wdGlvbiBoZXJlLgo+ ID4gWGwgc2hvdWxkIGJlIGFibGUgdG8gc2V0IGFsdHAybSBmaWVsZCBhbGwgdGhlIHRpbWUuIAo+ IAo+IEkgYW0gYWN0dWFsbHkgbm90IHN1cmUgd2hhdCB5b3UgbWVhbiBieSB0aGUgZGVhZCBvcHRp b24uIENvdWxkIHlvdSBiZQo+IG1vcmUgc3BlY2lmaWMsIHBsZWFzZT8KPiAgCj4gQWxzbywgaW4g dGhlIGxhc3QgcGF0Y2gsIHdlIGNhbWUgdG8gdGhlIGFncmVlbWVudCB0byBndWFyZCB0aGUgYWx0 cDJtCj4gZnVuY3Rpb25hbGl0eSBzb2xlbHkgdGhyb3VnaCB0aGUgSFZNIHBhcmFtIChpbnN0ZWFk IG9mIHRoZSBhZGRpdGlvbmFsCj4gWGVuIGNtZC1saW5lIG9wdGlvbiBhbHRwMm0pLCB3aGljaCBp cyBzZXQgdGhyb3VnaCBsaWJ4bC4gQmVjYXVzZSBvZgo+IHRoaXMsIHRoZSBlbnRpcmUgZG9tdSBp bml0aWFsaXphdGlvbiByb3V0aW5lcyBkZXBlbmQgb24gdGhpcyBvcHRpb24gdG8KPiBiZSBzZXQg YXQgdGhlIG1vbWVudCBvZiBkb21haW4gY3JlYXRpb24gLS0gbm90IGFmdGVyIGl0LiBUaGF0IGlz LCBiZWluZwo+IGFibGUgdG8gc2V0IHRoZSBhbHRwMm0gb3B0aW9uIGF0IGFsbCB0aW1lIHdvdWxk IGFjdHVhbGx5IGJyZWFrIHRoZSBzeXN0ZW0uCj4gCgpXaHkgaXMgdGhpcz8gSXQncyBwb3NzaWJs ZSB3ZSdyZSB0YWxraW5nIHBhc3QgZWFjaCBvdGhlci4KCj4gPiBBbmQgdGhlcmUgc2hvdWxkIGJl Cj4gPiBjb2RlIGluIGxpYnhsIHRvIGhhbmRsZSBzaXR1YXRpb24gd2hlbiBhbHRwMm0gaXMgbm90 IGF2YWlsYWJsZS4KPiAKPiBJIGFtIG5vdCBzbyBzdXJlIGFib3V0IHRoYXQgZWl0aGVyOgo+IAo+ IEN1cnJlbnRseSwgYWx0cDJtIGlzIHN1cHBvcnRlZCBvbiB4ODYgSFZNIGFuZCBvbiBBUk0uCj4g ICogb24geDg2LCBhbHRwMm0gZGVwZW5kcyBvbiBIVyB0byBzdXBwb3J0IGFsdHAybS4gVGhlcmVm b3JlLCB0aGUKPiBjbWQtbGluZSBvcHRpb24gImFsdHAybSIgaXMgdXNlZCBkbyBhY3RpdmF0ZSBh bHRwMm0uIEFsbCBsaWJ4bAo+IGludGVyYWN0aW9uIHdpdGggdGhlIGFsdHAybSBzdWJzeXN0ZW0g d2lsbCBiZSBkaXNjYXJkZWQgYXQgdGhpcyBwb2ludC4KPiAgKiBvbiBBUk0sIGFsdHAybSBpcyBp bXBsZW1lbnRlZCBwdXJlbHkgaW4gU1cuIFRoYXQgaXMsIHdlIGRvIG5vdCBoYXZlCj4gQVJNIGFy Y2hpdGVjdHVyZXMsIHRoYXQgd291bGQgbm90IHN1cHBvcnQgYWx0cDJtIC0tIHNvIHRoZSBpZGVh Lgo+ICAqIEFsbCBvdGhlciBhcmNoaXRlY3R1cmVzIHNob3VsZCBub3QgYmUgYWJsZSB0byBhY3Rp dmF0ZSBhbHRwMm0sIHdoaWNoCj4gaXMgd2h5IEkgY2hvc2UgdGhlICNkZWZpbmVzIChfX2FybV9f LCBfX3g4Nl82NF9fLCAuLi4pIHRvIGd1YXJkIHRoZQo+IHVwcGVyIG9wdGlvbi4KPiAKPiA+PiAr ICAgIGlmIChhbHRwMm1fc3VwcG9ydCkgewo+ID4+ICsgICAgICAgIC8qIFRoZSBjb25maWcgcGFy YW1ldGVyICJhbHRwMm0iIHJlcGxhY2VzIHRoZSBwYXJhbWV0ZXIgImFsdHAybWh2bSIuCj4gPj4g KyAgICAgICAgICogRm9yIGxlZ2FjeSByZWFzb25zLCBib3RoIHBhcmFtZXRlcnMgYXJlIGFjY2Vw dGVkIG9uIHg4NiBIVk0gZ3Vlc3RzCj4gPj4gKyAgICAgICAgICogKG9ubHkgImFsdHAybSIgaXMg YWNjZXB0ZWQgb24gQVJNIGd1ZXN0cykuIElmIGJvdGggcGFyYW1ldGVycyBhcmUKPiA+PiArICAg ICAgICAgKiBnaXZlbiwgaXQgbXVzdCBiZSBjb25zaWRlcmVkIHRoYXQgdGhlIGNvbmZpZyBwYXJh bWV0ZXIgImFsdHAybSIgd2lsbAo+ID4+ICsgICAgICAgICAqIGFsd2F5cyBoYXZlIHByaW9yaXR5 IG92ZXIgImFsdHAybWh2bSIuICovCj4gPj4gKyAgICAgICAgeGx1X2NmZ19nZXRfZGVmYm9vbChj b25maWcsICJhbHRwMm0iLCAmYl9pbmZvLT5hbHRwMm0sIDApOwo+ID4+ICsgICAgfQo+ID4+ICsK CgpXaGF0IEkgbWVhbnQgd2FzOgoKV2UgZG9uJ3QgY2FyZSB4bCAodGhlIGFwcGxpY2F0aW9uKSBz ZXRzIGFsdHAybSBvciBub3QuIEl0J3MgZW50aXJlbHkgcG9zc2libGUKdGhhdCB0aGUgeGwgb24g aXRzIG93biBzZXRzIHRoYXQgZmllbGQuIFRoZSB2YWxpZGF0aW9uIHNob3VsZCBiZSBkb25lCmlu c2lkZSBsaWJ4bC4gSWYgYSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24gaXMgbm90IHN1cHBvcnRl ZCBieSBsaWJ4bCwKaXQgc2hvdWxkIHJlamVjdCB0aGF0LiBMaWJ4bCBzaG91bGRuJ3QgcmVseSBv biB4bCAodGhlIGFwcGxpY2F0aW9uKSB0bwpwYXNzIGluIGZ1bGx5IHNhbml0aXNlZCBkYXRhLCBp dCBzaG91bGQgc2FuaXRpc2UgdGhlIGlucHV0IGl0c2VsZi4KCkJhc2ljYWxseSB0aGF0IG1lYW5z LCBpbiB4bCwgeW91IG9ubHkgbmVlZDoKCiAgICArICAgICB4bHVfY2ZnX2dldF9kZWZib29sKGNv bmZpZywgImFsdHAybSIsICZiX2luZm8tPmFsdHAybSwgMCk7CgpBbmQgdGhlbiBpbiBsaWJ4bDpp bml0aWF0ZV9kb21haW5fY3JlYXRlIHlvdSBjaGVjayBpZiB0aGUgY29uZmlndXJhdGlvbgppcyB2 YWxpZC4gWW91IGNhbiBzZWUgYSBidW5jaCBvZiBvdGhlciBjaGVja3MgYXJlIGFscmVhZHkgdGhl cmUuCgpEb2VzIHRoaXMgbWFrZSBzZW5zZSB0byB5b3U/CgpXZWkuCgoKPiA+IEFzIGFsd2F5cywg aWYgd2hhdCBJIHNhaWQgYWJvdmUgZG9lc24ndCBtYWtlIHNlbnNlIHRvIHlvdSwgZmVlbCBmcmVl IHRvCj4gPiBhc2suCj4gCj4gVGhhbmsgeW91IHZlcnkgbXVjaCBmb3IgeW91ciByZXZpZXcuCj4g Cj4gQmVzdCByZWdhcmRzLAo+IH5TZXJnZWoKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=