From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [RFC 2/4] arm: add generic TEE mediator framework Date: Mon, 16 Oct 2017 14:00:32 +0100 Message-ID: <79ae66fb-c9f7-6ef8-74c1-cb683ad3bf38@linaro.org> References: <1507748484-16871-1-git-send-email-volodymyr_babchuk@epam.com> <1507748484-16871-3-git-send-email-volodymyr_babchuk@epam.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1507748484-16871-3-git-send-email-volodymyr_babchuk@epam.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Volodymyr Babchuk , Stefano Stabellini , Julien Grall , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org SGkgVm9sb2R5bXlyLAoKT24gMTEvMTAvMTcgMjA6MDEsIFZvbG9keW15ciBCYWJjaHVrIHdyb3Rl Ogo+IFRoaXMgcGF0Y2ggYWRkcyBiYXNpYyBmcmFtZXdvcmsgZm9yIFRFRSBtZWRpYXRvcnMuIEd1 ZXN0cyBjYW4ndCB0YWxrCj4gdG8gVEVFIGRpcmVjdGx5LCB3ZSBuZWVkIHNvbWUgZW50aXR5IHRo YXQgd2lsbCBpbnRlcmNlcHQgcmVxdWVzdAo+IGFuZCBkZWNpZGUgd2hhdCB0byBkbyB3aXRoIHRo ZW0uICJURUUgbWVkaWFvciIgaXMgYSBzdWNoIGVudGl0eS4KCnMvbWVkaWFvci9tZWRpYXRvci8K Cj4gCj4gVGhpcyBpcyBob3cgaXQgd29ya3M6IHVzZXIgY2FuIGJ1aWxkIFhFTiB3aXRoIG11bHRp cGxlIFRFRSBtZWRpYXRvcnMKPiAoc2VlIHRoZSBuZXh0IHBhdGNoZXMsIHdoZXJlIE9QLVRFRSBt ZWRpYXRvciBpcyBpbnRyb2R1Y2VkKS4KPiBURUUgbWVkaWF0b3IgcmVnaXN0ZXIgc2VsZiB3aXRo IFJFR0lTVEVSX1RFRV9NRURJQVRPUigpIG1hY3JvIGluIHRoZQo+IHNhbWUgd2F5LCBhcyBkZXZp Y2UgZHJpdmVycyB1c2UgRFRfREVWSUNFX1NUQVJUKCkvRFRfREVWSUNFX0VORCgpCj4gbWFjcm9z Lgo+IEluIHJ1bnRpbWUsIGR1cmluZyBpbml0aWFsaXphdGlvbiwgWEVOIGlzc3VlcyBzdGFuZGFy ZCBTTUMgdG8gcmVhZAo+IFRFRSBVSUQuIFVzaW5nIHRoaXMgVUlEIGl0IHNlbGVjdHMgYW5kIGlu aXRpYWxpemVzIG9uZSBvZiBidWlsdC1pbgo+IG1lZGlhdG9ycy4gVGhlbiBnZW5lcmljIHZTTUMg aGFuZGxlciB3aWxsIGNhbGwgc2VsZWN0ZWQgbWVkaWF0b3IKPiB3aGVuIGl0IGludGVyY2VwdCBT TUMgdGhhdCBiZWxvbmdzIHRvIFRFRSBPUyBvciBURUUgYXBwbGljYXRpb24uCgpBcyB5b3UgbWF5 IHJlbWVtYmVyIHRoZSBkaXNjdXNzaW9uIG9uIHRoZSBTTUNDQyBzdXBwb3J0IGZvciBndWVzdHMs IAp0aGVyZSBhcmUgY3VycmVudGx5IG5vIHdheSB0byBrbm93IHRoZSBTTUNDQyBpcyBwcmVzZW50 IG9uIHRoZSBwbGF0Zm9ybS4KCkkgZG9uJ3QgdGhpbmsgeW91IGNhbiByZWx5IG9uIHRoZSBwbGF0 Zm9ybSBzdXBwb3J0IFNNQ0Mgbm9yIGZ1bGx5IAppbXBsZW1lbnRpbmcgaXQuIFRoaXMgYWxzbyBi cmluZyB0aGUgcXVlc3Rpb24gb2YgZG9lcyBldmVyeSBURUUgYXJlIApzdXBwb3J0aW5nIFNNQ0ND PwoKPiAKPiBBbHNvLCB0aGVyZSBhcmUgaG9va3MgZm9yIGRvbWFpbiBjb25zdHJ1Y3Rpb24gYW5k IGRlc3RydWN0aW9uLCBzbwo+IFRFRSBtZWRpYXRvciBjYW4gaW5mb3JtIFRFRSBhYm91dCBWTSBs aWZlY3ljbGUuCj4gCj4gU2lnbmVkLW9mZi1ieTogVm9sb2R5bXlyIEJhYmNodWsgPHZvbG9keW15 cl9iYWJjaHVrQGVwYW0uY29tPgo+IC0tLQo+ICAgTUFJTlRBSU5FUlMgICAgICAgICAgICAgICB8 ICAgNSArKwo+ICAgeGVuL2FyY2gvYXJtL0tjb25maWcgICAgICB8ICAxMCArKysrCj4gICB4ZW4v YXJjaC9hcm0vTWFrZWZpbGUgICAgIHwgICAxICsKPiAgIHhlbi9hcmNoL2FybS9kb21haW4uYyAg ICAgfCAgIDcgKysrCj4gICB4ZW4vYXJjaC9hcm0vc2V0dXAuYyAgICAgIHwgICA0ICsrCj4gICB4 ZW4vYXJjaC9hcm0vdGVlL0tjb25maWcgIHwgICAwCj4gICB4ZW4vYXJjaC9hcm0vdGVlL01ha2Vm aWxlIHwgICAxICsKPiAgIHhlbi9hcmNoL2FybS90ZWUvdGVlLmMgICAgfCAxMzQgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgeGVuL2FyY2gvYXJtL3Zz bWMuYyAgICAgICB8ICAgNSArKwo+ICAgeGVuL2FyY2gvYXJtL3hlbi5sZHMuUyAgICB8ICAgNyAr KysKPiAgIHhlbi9pbmNsdWRlL2FzbS1hcm0vdGVlLmggfCAgNzkgKysrKysrKysrKysrKysrKysr KysrKysrKysrCj4gICAxMSBmaWxlcyBjaGFuZ2VkLCAyNTMgaW5zZXJ0aW9ucygrKQo+ICAgY3Jl YXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL2FybS90ZWUvS2NvbmZpZwo+ICAgY3JlYXRlIG1vZGUg MTAwNjQ0IHhlbi9hcmNoL2FybS90ZWUvTWFrZWZpbGUKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCB4 ZW4vYXJjaC9hcm0vdGVlL3RlZS5jCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2luY2x1ZGUv YXNtLWFybS90ZWUuaAo+IAo+IGRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJT Cj4gaW5kZXggNzdiMWUxMS4uZWRlMDBjNSAxMDA2NDQKPiAtLS0gYS9NQUlOVEFJTkVSUwo+ICsr KyBiL01BSU5UQUlORVJTCj4gQEAgLTM1Nyw2ICszNTcsMTEgQEAgRjoJY29uZmlnL1N0dWJkb20u bWsuaW4KPiAgIEY6CW00L3N0dWJkb20ubTQKPiAgIEY6CXN0dWJkb20vCj4gICAKPiArVEVFIE1F RElBVE9SUwo+ICtNOglWb2xvZHlteXIgQmFiY2h1ayA8dm9sb2R5bXlyX2JhYmNodWtAZXBhbS5j b20+Cj4gK1M6CVN1cHBvcnRlZAo+ICtGOgl4ZW4vYXJjaC9hcm0vdGVlLyoKPiArCj4gICBUT09M U1RBQ0sKPiAgIE06CUlhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgo+ICAg TToJV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gv YXJtL0tjb25maWcgYi94ZW4vYXJjaC9hcm0vS2NvbmZpZwo+IGluZGV4IGQ0NmI5OGMuLmUxZjEx MmEgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL0tjb25maWcKPiArKysgYi94ZW4vYXJjaC9h cm0vS2NvbmZpZwo+IEBAIC01MCw2ICs1MCwxNCBAQCBjb25maWcgSEFTX0lUUwo+ICAgICAgICAg ICBwcm9tcHQgIkdJQ3YzIElUUyBNU0kgY29udHJvbGxlciBzdXBwb3J0IiBpZiBFWFBFUlQgPSAi eSIKPiAgICAgICAgICAgZGVwZW5kcyBvbiBIQVNfR0lDVjMKPiAgIAo+ICtjb25maWcgQVJNX1RF RQoKVGhlIEFSTSBpbiB0aGUgdGl0bGUgaXMgYSBiaXQgcG9pbnRsZXNzLiBUaGlzIEtjb25maWcg aXMgb25seSB1c2VkIGZvciAKQXJtIGFyY2hpdGVjdHVyZS4KCj4gKwlib29sICJFbmFibGUgVEVF IG1lZGlhdG9ycyBzdXBwb3J0Igo+ICsJZGVmYXVsdCBuCj4gKwlkZXBlbmRzIG9uIEFSTQoKTm8g bmVlZCBmb3IgdGhhdC4KCj4gKwloZWxwCj4gKwkgIFRoaXMgb3B0aW9uIGVuYWJsZXMgZ2VuZXJp YyBURUUgbWVkaWF0b3JzIHN1cHBvcnQuIEl0IGFsbG93cyBndWVzdHMKPiArCSAgdG8gYWNjZXNz IHJlYWwgVEVFIHZpYSBvbmUgb2YgVEVFIG1lZGlhdG9ycyBpbXBsZW1lbnRlZCBpbiBYRU4KCk1p c3NpbmcgZnVsbCBzdG9wLgoKPiArCj4gICBlbmRtZW51Cj4gICAKPiAgIG1lbnUgIkFSTSBlcnJh dGEgd29ya2Fyb3VuZCB2aWEgdGhlIGFsdGVybmF0aXZlIGZyYW1ld29yayIKPiBAQCAtMTY3LDMg KzE3NSw1IEBAIGVuZG1lbnUKPiAgIHNvdXJjZSAiY29tbW9uL0tjb25maWciCj4gICAKPiAgIHNv dXJjZSAiZHJpdmVycy9LY29uZmlnIgo+ICsKPiArc291cmNlICJhcmNoL2FybS90ZWUvS2NvbmZp ZyIKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL01ha2VmaWxlIGIveGVuL2FyY2gvYXJtL01h a2VmaWxlCj4gaW5kZXggZWRlMjFmZC4uMjcxMGUwZSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC9h cm0vTWFrZWZpbGUKPiArKysgYi94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKPiBAQCAtMyw2ICszLDcg QEAgc3ViZGlyLSQoQ09ORklHX0FSTV82NCkgKz0gYXJtNjQKPiAgIHN1YmRpci15ICs9IHBsYXRm b3Jtcwo+ICAgc3ViZGlyLSQoQ09ORklHX0FSTV82NCkgKz0gZWZpCj4gICBzdWJkaXItJChDT05G SUdfQUNQSSkgKz0gYWNwaQo+ICtzdWJkaXItJChDT05GSUdfQVJNX1RFRSkgKz0gdGVlCj4gICAK PiAgIG9iai0kKENPTkZJR19IQVNfQUxURVJOQVRJVkUpICs9IGFsdGVybmF0aXZlLm8KPiAgIG9i ai15ICs9IGJvb3RmZHQuaW5pdC5vCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9kb21haW4u YyBiL3hlbi9hcmNoL2FybS9kb21haW4uYwo+IGluZGV4IDc4NGFlMzkuLjMyOTBkMzkgMTAwNjQ0 Cj4gLS0tIGEveGVuL2FyY2gvYXJtL2RvbWFpbi5jCj4gKysrIGIveGVuL2FyY2gvYXJtL2RvbWFp bi5jCj4gQEAgLTMxLDYgKzMxLDcgQEAKPiAgICNpbmNsdWRlIDxhc20vcGxhdGZvcm0uaD4KPiAg ICNpbmNsdWRlIDxhc20vcHJvY2luZm8uaD4KPiAgICNpbmNsdWRlIDxhc20vcmVncy5oPgo+ICsj aW5jbHVkZSA8YXNtL3RlZS5oPgo+ICAgI2luY2x1ZGUgPGFzbS92ZnAuaD4KPiAgICNpbmNsdWRl IDxhc20vdmdpYy5oPgo+ICAgI2luY2x1ZGUgPGFzbS92dGltZXIuaD4KPiBAQCAtNjczLDYgKzY3 NCw5IEBAIGludCBhcmNoX2RvbWFpbl9jcmVhdGUoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQg aW50IGRvbWNyX2ZsYWdzLAo+ICAgICAgIGlmICggaXNfaGFyZHdhcmVfZG9tYWluKGQpICYmIChy YyA9IGRvbWFpbl92dWFydF9pbml0KGQpKSApCj4gICAgICAgICAgIGdvdG8gZmFpbDsKPiAgIAo+ ICsgICAgLyogTm90aWZ5IFRFRSB0aGF0IG5ldyBkb21haW4gd2FzIGNyZWF0ZWQgKi8KPiArICAg IHRlZV9kb21haW5fY3JlYXRlKGQpOwoKSSBhbSBub3QgYSBiaWcgZmFuIHRvIHNlZSB0aGlzIGlu IGFyY2hfZG9tYWluX2NyZWF0ZSB1bnRpbCB3ZSBzZWUgaG93IAp0aGlzIGlzIGdvaW5nIHRvIGZp dCB3aXRoIGd1ZXN0LiBGb3IgaW5zdGFuY2UsIHdpbGwgVEVFIGJlIGZvciBldmVyeSAKZ3Vlc3Rz PyBXaGF0IHdvdWxkIGJlIHRoZSBvdGhlciBuZWNlc3NhcnkgaW5mb3JtYXRpb24gdG8gY29uZmln dXJlIGl0Py4uLgoKPiArCj4gICAgICAgcmV0dXJuIDA7Cj4gICAKPiAgIGZhaWw6Cj4gQEAgLTY4 NCw2ICs2ODgsOSBAQCBmYWlsOgo+ICAgCj4gICB2b2lkIGFyY2hfZG9tYWluX2Rlc3Ryb3koc3Ry dWN0IGRvbWFpbiAqZCkKPiAgIHsKPiArICAgIC8qIE5vdGlmeSBURUUgdGhhdCBkb21haW4gaXMg YmVpbmcgZGVzdHJveWVkICovCj4gKyAgICB0ZWVfZG9tYWluX2Rlc3Ryb3koZCk7Cj4gKwo+ICAg ICAgIC8qIElPTU1VIHBhZ2UgdGFibGUgaXMgc2hhcmVkIHdpdGggUDJNLCBhbHdheXMgY2FsbAo+ ICAgICAgICAqIGlvbW11X2RvbWFpbl9kZXN0cm95KCkgYmVmb3JlIHAybV90ZWFyZG93bigpLgo+ ICAgICAgICAqLwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vc2V0dXAuYyBiL3hlbi9hcmNo L2FybS9zZXR1cC5jCj4gaW5kZXggOTJmMTczYi4uOGE0ZmNkOCAxMDA2NDQKPiAtLS0gYS94ZW4v YXJjaC9hcm0vc2V0dXAuYwo+ICsrKyBiL3hlbi9hcmNoL2FybS9zZXR1cC5jCj4gQEAgLTQ3LDYg KzQ3LDcgQEAKPiAgICNpbmNsdWRlIDxhc20vcGxhdGZvcm0uaD4KPiAgICNpbmNsdWRlIDxhc20v cHJvY2luZm8uaD4KPiAgICNpbmNsdWRlIDxhc20vc2V0dXAuaD4KPiArI2luY2x1ZGUgPGFzbS90 ZWUuaD4KPiAgICNpbmNsdWRlIDx4c20veHNtLmg+Cj4gICAjaW5jbHVkZSA8YXNtL2FjcGkuaD4K PiAgIAo+IEBAIC04NDYsNiArODQ3LDkgQEAgdm9pZCBfX2luaXQgc3RhcnRfeGVuKHVuc2lnbmVk IGxvbmcgYm9vdF9waHlzX29mZnNldCwKPiAgICAgICAgKi8KPiAgICAgICBhcHBseV9hbHRlcm5h dGl2ZXNfYWxsKCk7Cj4gICAKPiArICAgIC8qIEluaXRpYWxpemUgVEVFIG1lZGlhdG9yICovCj4g KyAgICB0ZWVfaW5pdCgpOwo+ICsKPiAgICAgICAvKiBDcmVhdGUgaW5pdGlhbCBkb21haW4gMC4g Ki8KPiAgICAgICAvKiBUaGUgdkdJQyBmb3IgRE9NMCBpcyBleGFjdGx5IGVtdWxhdGluZyB0aGUg aGFyZHdhcmUgR0lDICovCj4gICAgICAgY29uZmlnLmdpY192ZXJzaW9uID0gWEVOX0RPTUNUTF9D T05GSUdfR0lDX05BVElWRTsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3RlZS9LY29uZmln IGIveGVuL2FyY2gvYXJtL3RlZS9LY29uZmlnCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl eCAwMDAwMDAwLi5lNjlkZTI5Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS90ZWUvTWFrZWZp bGUgYi94ZW4vYXJjaC9hcm0vdGVlL01ha2VmaWxlCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBp bmRleCAwMDAwMDAwLi5jNTRkNDc5Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3hlbi9hcmNoL2Fy bS90ZWUvTWFrZWZpbGUKPiBAQCAtMCwwICsxIEBACj4gK29iai15ICs9IHRlZS5vCj4gZGlmZiAt LWdpdCBhL3hlbi9hcmNoL2FybS90ZWUvdGVlLmMgYi94ZW4vYXJjaC9hcm0vdGVlL3RlZS5jCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi43ZjdhODQ2Cj4gLS0tIC9kZXYv bnVsbAo+ICsrKyBiL3hlbi9hcmNoL2FybS90ZWUvdGVlLmMKPiBAQCAtMCwwICsxLDEzNCBAQAo+ ICsvKgo+ICsgKiB4ZW4vYXJjaC9hcm0vdGVlL3RlZS5jCj4gKyAqCj4gKyAqIEdlbmVyaWMgcGFy dCBvZiBURUUgbWVkaWF0b3Igc3Vic3lzdGVtCj4gKyAqCj4gKyAqIFZvbG9keW15ciBCYWJjaHVr IDx2b2xvZHlteXJfYmFiY2h1a0BlcGFtLmNvbT4KPiArICogQ29weXJpZ2h0IChjKSAyMDE3IEVQ QU0gU3lzdGVtcy4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKPiArICog cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCj4gKyAqCj4gKyAqIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCj4gKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPHhlbi90eXBlcy5o Pgo+ICsjaW5jbHVkZSA8YXNtL3NtY2NjLmg+Cj4gKyNpbmNsdWRlIDxhc20vdGVlLmg+Cj4gKwo+ ICsvKgo+ICsgKiBBY2NvcmRpbmcgdG8gQVJNIFNNQ0NDIChBUk0gREVOIDAwMjhCLCBwYWdlIDE3 KSwgc2VydmljZSBvd25lcgo+ICsgKiBmb3IgZ2VuZXJpYyBURUUgcXVlcmllcyBpcyA2My4KPiAr ICovCj4gKyNkZWZpbmUgVFJVU1RFRF9PU19HRU5FUklDX0FQSV9PV05FUiA2Mwo+ICsKPiArI2Rl ZmluZSBBUk1fU01DQ0NfRlVOQ19HRVRfVEVFX1VJRCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAo+ICsgICAgICAgIEFSTV9TTUNDQ19DQUxMX1ZBTChBUk1fU01DQ0NfRkFT VF9DQUxMLCAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIEFSTV9TTUNDQ19DT05WXzMyLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVU1RFRF9PU19HRU5FUklDX0FQSV9PV05FUiwg ICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBBUk1fU01DQ0Nf RlVOQ19DQUxMX1VJRCkKClRoaXMgbGlrZWx5IG5lZWRzIHRvIGJlIGRlZmluZWQgaW4gc21jY2Mg YXMgQUZBSVUgaXQgaXMgcGFydCBvZiB0aGUgU01DQ0MuCgo+ICsKPiArZXh0ZXJuIGNvbnN0IHN0 cnVjdCB0ZWVfbWVkaWF0b3JfZGVzYyBfc3RlZW1lZGlhdG9yW10sIF9ldGVlbWVkaWF0b3JbXTsK PiArc3RhdGljIGNvbnN0IHN0cnVjdCB0ZWVfbWVkaWF0b3Jfb3BzICptZWRpYXRvcl9vcHM7Cj4g Kwo+ICsvKiBIZWxwZXIgZnVuY3Rpb24gdG8gcmVhZCBVSUQgcmV0dXJuZWQgYnkgU01DICovCj4g K3N0YXRpYyB2b2lkIHBhcnNlX3VpZChjb25zdCByZWdpc3Rlcl90IHJlZ3NbNF0sIHhlbl91dWlk X3QgKnVpZCkKPiArewo+ICsgICAgdWludDhfdCAqYnl0ZXMgPSB1aWQtPmE7Cj4gKyAgICBpbnQg bjsKCnVuc2lnbmVkIGludCBwbGVhc2UuCgo+ICsKPiArICAgIC8qCj4gKyAgICAgKiBVSUQgaXMg cmV0dXJuZWQgaW4gcmVnaXN0ZXJzIHIwLi5yMywgZm91ciBieXRlcyBwZXIgcmVnaXN0ZXIsCj4g KyAgICAgKiBmaXJzdCBieXRlIGlzIHN0b3JlZCBpbiBsb3ctb3JkZXIgYml0cyBvZiBhIHJlZ2lz dGVyLgo+ICsgICAgICogKEFSTSBERU4gMDAyOEIgcGFnZSAxNCkKPiArICAgICAqLwo+ICsgICAg Zm9yIChuID0gMDsgbiA8IDE2OyBuKyspCgpmb3IgKCBuID0gMDsgLi4uICkKCj4gKyAgICAgICAg Ynl0ZXNbbl0gPSAodWludDhfdCkocmVnc1tuLzRdID4+ICgobiAmIDMpICogOCkpOwo+ICsKPiAr fQo+ICsKPiArdm9pZCB0ZWVfaW5pdCh2b2lkKQo+ICt7Cj4gKyAgICBjb25zdCBzdHJ1Y3QgdGVl X21lZGlhdG9yX2Rlc2MgKmRlc2M7Cj4gKyAgICByZWdpc3Rlcl90IHJlc3BbNF07Cj4gKyAgICB4 ZW5fdXVpZF90IHRlZV91aWQ7Cj4gKyAgICBpbnQgcmV0Owo+ICsKPiArICAgIC8qIFJlYWQgVVVJ RCB0byBkZXRlcm1pbmUgd2hpY2ggVEVFIGlzIHJ1bm5pbmcgKi8KCllvdSBjYW4ndCBhc3N1bWUg dGhlIHBsYXRmb3JtIGlzIHN1cHBvcnRpbmcgU01DQ0MuIFNlZSBteSBjb21tZW50IGF0IHRoZSAK YmVnaW5uaW5nIG9mIHRoZSBlLW1haWwuCgo+ICsgICAgY2FsbF9zbWNjY19zbWMoQVJNX1NNQ0ND X0ZVTkNfR0VUX1RFRV9VSUQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIHJlc3ApOwo+ICsgICAgaWYg KCByZXNwWzBdID09IDB4RkZGRkZGRkYgKSB7CgpZb3UgbGlrZWx5IHdhbnQgdG8gdXNlIEFSTV9T TUNDQ19FUlJfVU5LT1dOX0ZVTkNUSU9OIGhlcmUuCgo+ICsgICAgICAgIHByaW50aygiTm8gVEVF IGZvdW5kXG4iKTsKPiArICAgICAgICByZXR1cm47Cj4gKyAgICB9Cj4gKwo+ICsgICAgcGFyc2Vf dWlkKHJlc3AsICZ0ZWVfdWlkKTsKPiArCj4gKyAgICBwcmludGsoIlRFRSBVSUQ6ICUwMnglMDJ4 JTAyeCUwMngtJTAyeCUwMngtJTAyeCUwMngtJTAyeCUwMngtJTAyeCUwMnglMDJ4JTAyeCUwMngl MDJ4XG4iLAo+ICsgICAgICAgICAgIHRlZV91aWQuYVswIF0sIHRlZV91aWQuYVsxIF0sIHRlZV91 aWQuYVsyIF0sIHRlZV91aWQuYVszIF0sCgpQbGVhc2Ugbm8gc3BhY2UgYmVmb3JlIF0uIFRoaXMg aXMgbWFraW5nIG1vcmUgY29uZnVzaW5nIHRvIHJlYWQuCgo+ICsgICAgICAgICAgIHRlZV91aWQu YVs0IF0sIHRlZV91aWQuYVs1IF0sIHRlZV91aWQuYVs2IF0sIHRlZV91aWQuYVs3IF0sCj4gKyAg ICAgICAgICAgdGVlX3VpZC5hWzggXSwgdGVlX3VpZC5hWzkgXSwgdGVlX3VpZC5hWzEwXSwgdGVl X3VpZC5hWzExXSwKPiArICAgICAgICAgICB0ZWVfdWlkLmFbMTJdLCB0ZWVfdWlkLmFbMTNdLCB0 ZWVfdWlkLmFbMTRdLCB0ZWVfdWlkLmFbMTVdKTsKPiArCj4gKyAgICBmb3IgKCBkZXNjID0gX3N0 ZWVtZWRpYXRvcjsgZGVzYyAhPSBfZXRlZW1lZGlhdG9yOyBkZXNjKysgKQoKewoKPiArICAgICAg ICBpZiAoIG1lbWNtcCgmZGVzYy0+dWlkLCAmdGVlX3VpZCwgc2l6ZW9mKHhlbl91dWlkX3QpKSA9 PSAwICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIHByaW50aygiVXNpbmcgVEVFIG1lZGlh dG9yIGZvciAlc3BcbiIsIGRlc2MtPm5hbWUpOwo+ICsgICAgICAgICAgICBtZWRpYXRvcl9vcHMg PSBkZXNjLT5vcHM7Cj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgIH0KCn0KCj4gKwo+ ICsgICAgaWYgKCAhbWVkaWF0b3Jfb3BzICkKCkEgd2FybmluZyBoZXJlIHdvdWxkIGJlIHVzZWZ1 bC4KCj4gKyAgICAgICAgcmV0dXJuOwo+ICsKPiArICAgIHJldCA9IG1lZGlhdG9yX29wcy0+aW5p dCgpOwo+ICsgICAgaWYgKCByZXQgKQo+ICsgICAgewo+ICsgICAgICAgIHByaW50aygiVEVFIG1l ZGlhdG9yIGZhaWxlZCB0byBpbml0aWFsaXplIDolZFxuIiwgcmV0KTsKPiArICAgICAgICBtZWRp YXRvcl9vcHMgPSBOVUxMOwo+ICsgICAgfQo+ICt9Cj4gKwo+ICtib29sIHRlZV9oYW5kbGVfc21j KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQo+ICt7Cj4gKyAgICBpZiAoICFtZWRpYXRvcl9v cHMgKQo+ICsgICAgICAgIHJldHVybiBmYWxzZTsKPiArCj4gKyAgICByZXR1cm4gbWVkaWF0b3Jf b3BzLT5oYW5kbGVfc21jKHJlZ3MpOwo+ICt9Cj4gKwo+ICt2b2lkIHRlZV9kb21haW5fY3JlYXRl KHN0cnVjdCBkb21haW4gKmQpCj4gK3sKPiArICAgIGlmICggIW1lZGlhdG9yX29wcyApCj4gKyAg ICAgICAgcmV0dXJuOwo+ICsKPiArICAgIHJldHVybiBtZWRpYXRvcl9vcHMtPmRvbWFpbl9jcmVh dGUoZCk7CgpyZXR1cm4gaGVyZSBpcyBub3QgbmVjZXNzYXJ5LiBIb3dldmVyLCBJIGFtIHNsaWdo dGx5IHN1cnByaXNlZCB0aGF0IAp0ZWVfZG9tYWluX2NyZWF0ZSBjb3VsZCBuZXZlciBmYWlsLgoK PiArfQo+ICsKPiArdm9pZCB0ZWVfZG9tYWluX2Rlc3Ryb3koc3RydWN0IGRvbWFpbiAqZCkKPiAr ewo+ICsgICAgaWYgKCAhbWVkaWF0b3Jfb3BzICkKPiArICAgICAgICByZXR1cm47Cj4gKwo+ICsg ICAgcmV0dXJuIG1lZGlhdG9yX29wcy0+ZG9tYWluX2Rlc3Ryb3koZCk7CgpTYW1lIGhlcmUuCgo+ ICt9Cj4gKwo+ICt2b2lkIHRlZV9yZW1vdmUodm9pZCkKCldoYXQgaXMgdGhpcyBjYWxsYmFjayBm b3I/IEkgZG9uJ3Qgc2VlIGFueSB1c2Ugd2l0aGluIHRoaXMgc2VyaWVzLgoKPiArewo+ICsgICAg aWYgKCAhbWVkaWF0b3Jfb3BzICkKPiArICAgICAgICByZXR1cm47Cj4gKwo+ICsgICAgcmV0dXJu IG1lZGlhdG9yX29wcy0+cmVtb3ZlKCk7Cj4gK30KPiArCj4gKy8qCj4gKyAqIExvY2FsIHZhcmlh YmxlczoKPiArICogbW9kZTogQwo+ICsgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCj4gKyAqIGMtYmFz aWMtb2Zmc2V0OiA0Cj4gKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAo+ICsgKiBFbmQ6Cj4gKyAq Lwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdnNtYy5jIGIveGVuL2FyY2gvYXJtL3ZzbWMu Ywo+IGluZGV4IDdiZDYwMDguLjE4NmUzNGIgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL3Zz bWMuYwo+ICsrKyBiL3hlbi9hcmNoL2FybS92c21jLmMKPiBAQCAtMjIsNiArMjIsNyBAQAo+ICAg I2luY2x1ZGUgPGFzbS9wc2NpLmg+Cj4gICAjaW5jbHVkZSA8YXNtL3JlZ3MuaD4KPiAgICNpbmNs dWRlIDxhc20vc21jY2MuaD4KPiArI2luY2x1ZGUgPGFzbS90ZWUuaD4KPiAgICNpbmNsdWRlIDxh c20vdHJhcHMuaD4KPiAgIAo+ICAgLyogTnVtYmVyIG9mIGZ1bmN0aW9ucyBjdXJyZW50bHkgc3Vw cG9ydGVkIGJ5IEh5cGVydmlzb3IgU2VydmljZS4gKi8KPiBAQCAtMjg4LDYgKzI4OSwxMCBAQCBz dGF0aWMgYm9vbCB2c21jY2NfaGFuZGxlX2NhbGwoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3Mp Cj4gICAgICAgICAgIGNhc2UgQVJNX1NNQ0NDX09XTkVSX1NUQU5EQVJEOgo+ICAgICAgICAgICAg ICAgaGFuZGxlZCA9IGhhbmRsZV9zc3NjKHJlZ3MpOwo+ICAgICAgICAgICAgICAgYnJlYWs7Cj4g KyAgICAgICAgY2FzZSBBUk1fU01DQ0NfT1dORVJfVFJVU1RFRF9BUFAgLi4uIEFSTV9TTUNDQ19P V05FUl9UUlVTVEVEX0FQUF9FTkQ6Cj4gKyAgICAgICAgY2FzZSBBUk1fU01DQ0NfT1dORVJfVFJV U1RFRF9PUyAuLi4gQVJNX1NNQ0NDX09XTkVSX1RSVVNURURfT1NfRU5EOgo+ICsgICAgICAgICAg ICBoYW5kbGVkID0gdGVlX2hhbmRsZV9zbWMocmVncyk7Cj4gKyAgICAgICAgICAgIGJyZWFrOwo+ ICAgICAgICAgICB9Cj4gICAgICAgfQo+ICAgCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS94 ZW4ubGRzLlMgYi94ZW4vYXJjaC9hcm0veGVuLmxkcy5TCj4gaW5kZXggYzliOTU0Ni4uYjc4Yjdm MSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC9hcm0veGVuLmxkcy5TCj4gKysrIGIveGVuL2FyY2gv YXJtL3hlbi5sZHMuUwo+IEBAIC0xMjYsNiArMTI2LDEzIEBAIFNFQ1RJT05TCj4gICAgICAgICBf YWVkZXZpY2UgPSAuOwo+ICAgICB9IDp0ZXh0Cj4gICAKPiArICAuID0gQUxJR04oOCk7Cj4gKyAg LnRlZW1lZGlhdG9yLmluZm8gOiB7Cj4gKyAgICAgIF9zdGVlbWVkaWF0b3IgPSAuOwo+ICsgICAg ICAqKC50ZWVtZWRpYXRvci5pbmZvKQo+ICsgICAgICBfZXRlZW1lZGlhdG9yID0gLjsKPiArICB9 IDp0ZXh0Cj4gKwo+ICAgICAuID0gQUxJR04oUEFHRV9TSVpFKTsgICAgICAgICAgICAgLyogSW5p dCBjb2RlIGFuZCBkYXRhICovCj4gICAgIF9faW5pdF9iZWdpbiA9IC47Cj4gICAgIC5pbml0LnRl eHQgOiB7Cj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vdGVlLmggYi94ZW4vaW5j bHVkZS9hc20tYXJtL3RlZS5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw Li43ZjUwMGFjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vdGVl LmgKPiBAQCAtMCwwICsxLDc5IEBACj4gKy8qCj4gKyAqIHhlbi9pbmNsdWRlL2FzbS1hcm0vdGVl LmgKPiArICoKPiArICogR2VuZXJpYyBwYXJ0IG9mIFRFRSBtZWRpYXRvciBzdWJzeXN0ZW0KPiAr ICoKPiArICogVm9sb2R5bXlyIEJhYmNodWsgPHZvbG9keW15cl9iYWJjaHVrQGVwYW0uY29tPgo+ ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTcgRVBBTSBTeXN0ZW1zLgo+ICsgKgo+ICsgKiBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgo+ICsgKiAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiArICogYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPiAr ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQo+ICsgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz Lgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19BUkNIX0FSTV9URUVfVEVFX0hfXwo+ICsjZGVmaW5l IF9fQVJDSF9BUk1fVEVFX1RFRV9IX18KPiArCj4gKyNpbmNsdWRlIDx4ZW4vbGliLmg+Cj4gKyNp bmNsdWRlIDx4ZW4vdHlwZXMuaD4KPiArI2luY2x1ZGUgPGFzbS9yZWdzLmg+Cj4gKwo+ICsjaWZk ZWYgQ09ORklHX0FSTV9URUUKPiArCj4gK3N0cnVjdCB0ZWVfbWVkaWF0b3Jfb3BzIHsKClBsZWFz ZSBhZGQgZG9jdW1lbnRhdGlvbnMgb24gYWxsIHRoZSBmaWVsZHMgdG8gZXhwbGFpbiB0aGVpciBw dXJwb3Nlcy4KCj4gKyAgICBpbnQgKCppbml0KSh2b2lkKTsKPiArICAgIHZvaWQgKCpkb21haW5f Y3JlYXRlKShzdHJ1Y3QgZG9tYWluICpkKTsKPiArICAgIHZvaWQgKCpkb21haW5fZGVzdHJveSko c3RydWN0IGRvbWFpbiAqZCk7Cj4gKyAgICBib29sICgqaGFuZGxlX3NtYykoc3RydWN0IGNwdV91 c2VyX3JlZ3MgKnJlZ3MpOwo+ICsgICAgdm9pZCAoKnJlbW92ZSkodm9pZCk7Cj4gK307Cj4gKwo+ ICtzdHJ1Y3QgdGVlX21lZGlhdG9yX2Rlc2MgewoKRGl0dG8uCgo+ICsgICAgY29uc3QgY2hhciAq bmFtZTsKPiArICAgIGNvbnN0IHhlbl91dWlkX3QgdWlkOwo+ICsgICAgY29uc3Qgc3RydWN0IHRl ZV9tZWRpYXRvcl9vcHMgKm9wczsKPiArfTsKPiArCj4gK3ZvaWQgdGVlX2luaXQodm9pZCk7Cj4g K2Jvb2wgdGVlX2hhbmRsZV9zbWMoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpOwo+ICt2b2lk IHRlZV9kb21haW5fY3JlYXRlKHN0cnVjdCBkb21haW4gKmQpOwo+ICt2b2lkIHRlZV9kb21haW5f ZGVzdHJveShzdHJ1Y3QgZG9tYWluICpkKTsKPiArdm9pZCB0ZWVfcmVtb3ZlKHZvaWQpOwo+ICsK PiArI2RlZmluZSBSRUdJU1RFUl9URUVfTUVESUFUT1IoX25hbWUsIF9uYW1lc3RyLCBfdWlkLCBf b3BzKSAgICAgICAgICBcCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdGVlX21lZGlhdG9yX2Rlc2Mg X190ZWVfZGVzY18jI19uYW1lIF9fdXNlZCAgICAgXAo+ICtfX3NlY3Rpb24oIi50ZWVtZWRpYXRv ci5pbmZvIikgPSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgIC5u YW1lID0gX25hbWVzdHIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCj4gKyAgICAudWlkID0gX3VpZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgLm9wcyA9IF9vcHMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArfQo+ICsKPiArI2Vsc2UK PiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCB0ZWVfaW5pdCh2b2lkKSB7fQo+ICtzdGF0aWMgaW5s aW5lIGJvb2wgdGVlX2hhbmRsZV9zbWMoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCj4gK3sK PiArICAgIHJldHVybiBmYWxzZTsKPiArfQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgdGVlX2RvbWFp bl9jcmVhdGUoc3RydWN0IGRvbWFpbiAqZCkge30KPiArc3RhdGljIGlubGluZSB0ZWVfZG9tYWlu X2Rlc3Ryb3koc3RydWN0IGRvbWFpbiAqZCkge30KPiArc3RhdGljIGlubGluZSB0ZWVfcmVtb3Zl KHZvaWQpIHt9Cj4gKwo+ICsjZW5kaWYgIC8qIENPTkZJR19BUk1fVEVFICovCj4gKwo+ICsjZW5k aWYgLyogX19BUkNIX0FSTV9URUVfVEVFX0hfXyAqLwo+ICsKPiArLyoKPiArICogTG9jYWwgdmFy aWFibGVzOgo+ICsgKiBtb2RlOiBDCj4gKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKPiArICogYy1i YXNpYy1vZmZzZXQ6IDQKPiArICogaW5kZW50LXRhYnMtbW9kZTogbmlsCj4gKyAqIEVuZDoKPiAr ICovCj4gCgpDaGVlcnMsCgotLSAKSnVsaWVuIEdyYWxsCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZl bEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK