From mboxrd@z Thu Jan 1 00:00:00 1970 From: Volodymyr Babchuk Subject: Re: [PATCH v3 04/11] optee: add OP-TEE mediator skeleton Date: Wed, 16 Jan 2019 17:31:09 +0000 Message-ID: <87won4tst3.fsf@epam.com> References: <20181218211126.6886-1-volodymyr_babchuk@epam.com> <20181218211126.6886-5-volodymyr_babchuk@epam.com> <839e8cf4-c773-56e0-8c55-7c3b3764683a@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gjp21-0006Nd-Vh for xen-devel@lists.xenproject.org; Wed, 16 Jan 2019 17:31:14 +0000 In-Reply-To: <839e8cf4-c773-56e0-8c55-7c3b3764683a@arm.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Julien Grall Cc: Stefano Stabellini , Volodymyr Babchuk , "tee-dev@lists.linaro.org" , "xen-devel@lists.xenproject.org" , nd , Volodymyr Babchuk List-Id: xen-devel@lists.xenproject.org CkhpIEp1bGllbiwKCkp1bGllbiBHcmFsbCB3cml0ZXM6Cgo+IEhpIFZvbG9keW15ciwKPgo+IE9u IDEyLzE4LzE4IDk6MTEgUE0sIFZvbG9keW15ciBCYWJjaHVrIHdyb3RlOgo+PiBGcm9tOiBWb2xv ZHlteXIgQmFiY2h1ayA8dmxhZC5iYWJjaHVrQGdtYWlsLmNvbT4KPj4KPj4gQWRkIHZlcnkgYmFz aWMgT1AtVEVFIG1lZGlhdG9yLiBJdCBjYW4gcHJvYmUgZm9yIE9QLVRFRSBwcmVzZW5jZSwKPj4g dGVsbCBpdCBhYm91dCBkb21haW4gY3JlYXRpb24vZGVzdHJ1Y3Rpb24gYW5kIGZvcndhcmQgYWxs IGtub3duCj4+IGNhbGxzLgo+Pgo+PiBUaGlzIGlzIGFsbCB3aGF0IGlzIG5lZWRlZCBmb3IgRG9t MCB0byB3b3JrIHdpdGggT1AtVEVFIGFzIGxvbmcKPj4gYXMgRG9tMCBzaGFyZXMgMToxIG1hcHBl ZCBwYWdlcyB3aXRoIE9QLVRFRS4gQW55IGF0dGVtcHQgdG8gY2FsbAo+PiBPUC1URUUgZnJvbSBE b21VIHdpbGwgZmFpbCBhbmQgY2FuIGxlYWQgdG8gc3BlY3RhY3VsYXIgcmVzdWx0cy4gQWxzbywK Pj4gcHJvYmxlbXMgY2FuIGFyaXNlIGlmIERvbTAgdXNlcyBwYWdlcyBtYXBwZWQgZnJvbSBvdGhl ciBkb21haW5zLgo+PiBTbywgdGhpcyBwYXRjaCBzaG91bGQgbm90IGJlIG1lcmdlZCB3aXRob3V0 IG5leHQgcGF0Y2hlcyBpbiB0aGUgc2VyaWVzLgo+Cj4gVGhlIGxhc3Qgc2VudGVuY2UgaXMgbm90 IG5lY2Vzc2FyeSBpbiB0aGUgY29tbWl0IG1lc3NhZ2UuIFlvdSBjYW4gYWRkIGl0Cj4gYWZ0ZXIg Ii0tLSIuIFNvIGl0IGlzIHN0cmlwcGVkIGRvd24gd2hlbiB0aGUgcGF0Y2ggaXMgY29tbWl0dGVk LCB5ZXQgd2UKPiBrbm93IGl0IHNob3VsZCBub3QgYmUgbWVyZ2VkIDopLgpPaCwgb2theS4KCj4+ Cj4+IFRoaXMgY29kZSBpc3N1ZXMgdHdvIG5vbi1wcmVlbXB0aWJsZSBjYWxscyB0byBPUC1URUU6 IHRvIGNyZWF0ZSBhbmQKPj4gdG8gZGVzdHJveSBjbGllbnQgY29udGV4dC4gVGhleSBjYW4ndCBi bG9jayBpbiBPUC1URUUsIGJ1dCBPUC1URUUgY2FuCj4+IHdhaXQgb24gYSBzcGxpbmxvY2tzLCBz byB0aGVyZSBpcyBubyBtYXhpbWFsIGV4ZWN1dGlvbiB0aW1lCj4+IGd1YXJhbnRlZWQuCj4KPiBU aGlzIHBhcmFncmFwaCBpcyB3b3JyeWluZy4gRnJvbSB0aGUgZGlzY3Vzc2lvbiB3ZSBoYWQgb24g dGhlIHByZXZpb3VzCj4gdmVyc2lvbiBhbmQgc29tZSBkaXNjdXNzaW9ucyBhdCBMaW5hcm8gQ29u bmVjdCB3aXRoIE9QLVRFRSBmb2xrcywgSQo+IGdhdGhlcmVkIHRoaXMgY2FsbCBzaG91bGQgbm90 IHRha2UgYSBsb25nIHRpbWUuClllcywgdGhpcyBpcyByaWdodC4gSXQgKipzaG91bGQqKiBub3Qg dGFrZSBhIGxvbmcgdGltZS4gQW5kIGN1cnJlbnRseSBJCmNhbid0IHNlZSB3aHkgaXQgd291bGQg dGFrZSBhIGxvbmcgdGltZSBhbnl3YXlzLiBCdXQsIHlvdSBrbm93LAp0aGVvcmV0aWNhbGx5LCB0 aGVyZSBpcyBubyB1cHBlciBsaW1pdCBvbiB3YWl0aW5nIGZvciBzcGlubG9jay4KCj4gSW4gZ2Vu ZXJhbCBzcGlubG9jayBzaG91bGQgaGF2ZSBubyBjb250ZW50aW9uIG9yIHdhaXQgc2hvdWxkIGJl IGxpbWl0ZWQuCj4gSW4gcGFydGljdWxhciwgaW4gdGhlIGNvbnRleHQgb2YgT1AtVEVFIEkgd291 bGQgZXhwZWN0IHNvbWV0aGluZyBpcwo+IHJlYWxseSB3cm9uZyBpZiB5b3Ugd2FpdCBvbiBhIHNw aW5sb2NrIGZvciBhIHJlYWxseSBsb25nIHRpbWUgYXMgeW91Cj4gYmxvY2sgdGhlIG5vcm1hbCB3 b3JsZC4gU28gbWF5YmUgdGhpcyBpcyBqdXN0IGEgbWlzdW5kZXJzdGFuZGluZyBvZiB0aGUKPiBj b21taXQgbWVzc2FnZT8KWWVzLCBJIHRoaW5rIGl0IGlzIGEgbWlzdW5kZXJzdGFuZGluZy4gT1At VEVFIHVzZXMgc3BpbmxvY2tzIGluIHRoZSBzYW1lCndheSBhcyBYRU4gb3Iga2VybmVsIC0gZm9y IHNob3J0IGF0b21pYyBvcGVyYXRpb25zLiBCdXQgYXMgc3BpbmxvY2soKQpmdW5jdGlvbiBoYXZl IG5vIHRpbWVvdXQgYXJndW1lbnQsIHRoZW9yZXRpY2FsbHkgaXQgd291bGQgYmxvY2sgZm9yIGEK bG9uZyB0aW1lLgoKSSB0aGluaywgSSdsbCByZW1vdmUgdGhhdCBjbGF1c2UgZnJvbSB0aGUgY29t bWl0IG1lc3NhZ2UuIEp1c3QgZm9yCmNsYXJpdHkgOikKCj4KPj4KPj4gU2lnbmVkLW9mZi1ieTog Vm9sb2R5bXlyIEJhYmNodWsgPHZsYWQuYmFiY2h1a0BnbWFpbC5jb20+Cj4+IC0tLQo+Pgo+PiAg IENoYW5nZXMgZnJvbSB2MjoKPj4gICAgLSBGaXhlZCBjb2Rpbmcgc3R5bGUKPj4gICAgLSBJbnRy b2R1Y2VkIHRlZS9LY29uZmlnCj4+ICAgIC0gRml4ZWQgZXJyb3IgbWVzc2FnZXMKPj4KPj4gICB4 ZW4vYXJjaC9hcm0vS2NvbmZpZyAgICAgICAgICAgICAgICB8ICAgMiArCj4+ICAgeGVuL2FyY2gv YXJtL3RlZS9LY29uZmlnICAgICAgICAgICAgfCAgIDQgKwo+PiAgIHhlbi9hcmNoL2FybS90ZWUv TWFrZWZpbGUgICAgICAgICAgIHwgICAxICsKPj4gICB4ZW4vYXJjaC9hcm0vdGVlL29wdGVlLmMg ICAgICAgICAgICB8IDE1MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICAgeGVuL2lu Y2x1ZGUvYXNtLWFybS90ZWUvb3B0ZWVfc21jLmggfCAgNTAgKysrKysrKysrCj4+ICAgNSBmaWxl cyBjaGFuZ2VkLCAyMDggaW5zZXJ0aW9ucygrKQo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4v YXJjaC9hcm0vdGVlL0tjb25maWcKPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gvYXJt L3RlZS9vcHRlZS5jCj4+Cj4+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vS2NvbmZpZyBiL3hl bi9hcmNoL2FybS9LY29uZmlnCj4+IGluZGV4IGU1MjdiMmY4ODUuLjk5ZTZmMGViYjIgMTAwNjQ0 Cj4+IC0tLSBhL3hlbi9hcmNoL2FybS9LY29uZmlnCj4+ICsrKyBiL3hlbi9hcmNoL2FybS9LY29u ZmlnCj4+IEBAIC0yMzcsMyArMjM3LDUgQEAgc291cmNlICJhcmNoL2FybS9wbGF0Zm9ybXMvS2Nv bmZpZyIKPj4gICBzb3VyY2UgImNvbW1vbi9LY29uZmlnIgo+Pgo+PiAgIHNvdXJjZSAiZHJpdmVy cy9LY29uZmlnIgo+PiArCj4+ICtzb3VyY2UgImFyY2gvYXJtL3RlZS9LY29uZmlnIgo+PiBkaWZm IC0tZ2l0IGEveGVuL2FyY2gvYXJtL3RlZS9LY29uZmlnIGIveGVuL2FyY2gvYXJtL3RlZS9LY29u ZmlnCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAuLjViODI5ZGIy ZTkKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi94ZW4vYXJjaC9hcm0vdGVlL0tjb25maWcKPj4g QEAgLTAsMCArMSw0IEBACj4+ICtjb25maWcgT1BURUUKPj4gKwlib29sICJFbmFibGUgT1AtVEVF IG1lZGlhdG9yIgo+PiArCWRlZmF1bHQgbgo+PiArCWRlcGVuZHMgb24gVEVFCj4+IGRpZmYgLS1n aXQgYS94ZW4vYXJjaC9hcm0vdGVlL01ha2VmaWxlIGIveGVuL2FyY2gvYXJtL3RlZS9NYWtlZmls ZQo+PiBpbmRleCBjNTRkNDc5NmZmLi45ODJjODc5Njg0IDEwMDY0NAo+PiAtLS0gYS94ZW4vYXJj aC9hcm0vdGVlL01ha2VmaWxlCj4+ICsrKyBiL3hlbi9hcmNoL2FybS90ZWUvTWFrZWZpbGUKPj4g QEAgLTEgKzEsMiBAQAo+PiAgIG9iai15ICs9IHRlZS5vCj4+ICtvYmotJChDT05GSUdfT1BURUUp ICs9IG9wdGVlLm8KPj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS90ZWUvb3B0ZWUuYyBiL3hl bi9hcmNoL2FybS90ZWUvb3B0ZWUuYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAw MDAwMDAwMDAwLi43M2FkMjVlZTBiCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIveGVuL2FyY2gv YXJtL3RlZS9vcHRlZS5jCj4+IEBAIC0wLDAgKzEsMTUxIEBACj4+ICsvKgo+PiArICogeGVuL2Fy Y2gvYXJtL3RlZS9vcHRlZS5jCj4+ICsgKgo+PiArICogT1AtVEVFIG1lZGlhdG9yCj4+ICsgKgo+ PiArICogVm9sb2R5bXlyIEJhYmNodWsgPHZvbG9keW15cl9iYWJjaHVrQGVwYW0uY29tPgo+PiAr ICogQ29weXJpZ2h0IChjKSAyMDE4IEVQQU0gU3lzdGVtcy4KPj4gKyAqCj4+ICsgKiBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQo+PiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSB2ZXJzaW9uIDIgYXMKPj4gKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLgo+PiArICovCj4+ICsKPj4gKyNpbmNsdWRlIDx4ZW4vZGV2aWNlX3RyZWUu aD4KPj4gKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KPj4gKyNpbmNsdWRlIDxhc20vc21jY2MuaD4K Pj4gKyNpbmNsdWRlIDxhc20vdGVlL3RlZS5oPgo+PiArCj4+ICsjaW5jbHVkZSA8YXNtL3RlZS9v cHRlZV9tc2cuaD4KPj4gKyNpbmNsdWRlIDxhc20vdGVlL29wdGVlX3NtYy5oPgo+PiArCj4+ICsv KiBDbGllbnQgSUQgMCBpcyByZXNlcnZlZCBmb3IgaHlwZXJ2aXNvciBpdHNlbGYgKi8KPj4gKyNk ZWZpbmUgT1BURUVfQ0xJRU5UX0lEKGRvbWFpbikgKGRvbWFpbi0+ZG9tYWluX2lkICsgMSkKPgo+ IFRoZSBzZWNvbmQgJ2RvbWFpbicgc2hvdWxkIGJlIGJldHdlZW4gKCkgdG8gYXZvaWQgbWFjcm8t ZXhwYW5zaW9uIGlzc3VlLgo+Cj4+ICsKPj4gK3N0YXRpYyBib29sIG9wdGVlX3Byb2JlKHZvaWQp Cj4+ICt7Cj4+ICsgICAgc3RydWN0IGR0X2RldmljZV9ub2RlICpub2RlOwo+PiArICAgIHN0cnVj dCBhcm1fc21jY2NfcmVzIHJlc3A7Cj4+ICsKPj4gKyAgICAvKiBDaGVjayBmb3IgZW50cnkgaW4g ZHRiICAqLwo+PiArICAgIG5vZGUgPSBkdF9maW5kX2NvbXBhdGlibGVfbm9kZShOVUxMLCBOVUxM LCAibGluYXJvLG9wdGVlLXR6Iik7Cj4+ICsgICAgaWYgKCAhbm9kZSApCj4+ICsgICAgICAgIHJl dHVybiBmYWxzZTsKPj4gKwo+PiArICAgIC8qIENoZWNrIFVJRCAqLwo+PiArICAgIGFybV9zbWNj Y19zbWMoQVJNX1NNQ0NDX0NBTExfVUlEX0ZJRChUUlVTVEVEX09TX0VORCksICZyZXNwKTsKPj4g Kwo+PiArICAgIGlmICggKHVpbnQzMl90KXJlc3AuYTAgIT0gT1BURUVfTVNHX1VJRF8wIHx8Cj4+ ICsgICAgICAgICAodWludDMyX3QpcmVzcC5hMSAhPSBPUFRFRV9NU0dfVUlEXzEgfHwKPj4gKyAg ICAgICAgICh1aW50MzJfdClyZXNwLmEyICE9IE9QVEVFX01TR19VSURfMiB8fAo+PiArICAgICAg ICAgKHVpbnQzMl90KXJlc3AuYTMgIT0gT1BURUVfTVNHX1VJRF8zICkKPj4gKyAgICAgICAgcmV0 dXJuIGZhbHNlOwo+PiArCj4+ICsgICAgcmV0dXJuIHRydWU7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRp YyBpbnQgb3B0ZWVfZW5hYmxlKHN0cnVjdCBkb21haW4gKmQpCj4+ICt7Cj4+ICsgICAgc3RydWN0 IGFybV9zbWNjY19yZXMgcmVzcDsKPj4gKwo+PiArICAgIC8qCj4+ICsgICAgICogSW5mb3JtIE9Q LVRFRSBhYm91dCBhIG5ldyBndWVzdC4KPj4gKyAgICAgKiBUaGlzIGlzIGEgIkZhc3QiIGNhbGwg aW4gdGVybXMgb2YgT1AtVEVFLiBUaGlzIGJhc2ljYWxseQo+PiArICAgICAqIG1lYW5zIHRoYXQg aXQgY2FuJ3QgYmUgcHJlZW1wdGVkLCBiZWNhdXNlIHRoZXJlIGlzIG5vCj4+ICsgICAgICogdGhy ZWFkIGFsbG9jYXRlZCBmb3IgaXQgaW4gT1AtVEVFLiBJdCBpcyBjbG9zZSB0byBhdG9taWMKPj4g KyAgICAgKiBjb250ZXh0IGluIGxpbnV4IGtlcm5lbDogRS5nLiBubyBibG9ja2luZyBjYWxscyBj YW4gYmUgaXNzdWVkLgo+PiArICAgICAqIEFsc28sIGludGVycnVwdHMgYXJlIGRpc2FibGVkLgo+ PiArICAgICAqIFJpZ2h0IG5vdyBPUC1URUUganVzdCBmcmVlcyBhbGxvY2F0ZWQgbWVtb3J5LCBz byBpdCBzaG91bGQgYmUKPj4gKyAgICAgKiByZWFsbHkgZmFzdC4KPgo+IFRoZSBsYXN0IHNlbnRl bmNlIGxvb2tzIHdyb25nIGluIHRoaXMgY29udGV4dC4KPgo+PiArICAgICAqLwo+PiArICAgIGFy bV9zbWNjY19zbWMoT1BURUVfU01DX1ZNX0NSRUFURUQsIE9QVEVFX0NMSUVOVF9JRChkKSwgMCwg MCwgMCwgMCwgMCwgMCwKPj4gKyAgICAgICAgICAgICAgICAgICZyZXNwKTsKPj4gKyAgICBpZiAo IHJlc3AuYTAgIT0gT1BURUVfU01DX1JFVFVSTl9PSyApCj4+ICsgICAgewo+PiArICAgICAgICBn cHJpbnRrKFhFTkxPR19XQVJOSU5HLCAiVW5hYmxlIHRvIGNyZWF0ZSBPUFRFRSBjbGllbnQ6IHJj ID0gMHglWFxuIiwKPj4gKyAgICAgICAgICAgICAgICAodWludDMyX3QpcmVzcC5hMCk7Cj4+ICsg ICAgICAgIHJldHVybiAtRU5PREVWOwo+PiArICAgIH0KPj4gKwo+PiArICAgIHJldHVybiAwOwo+ PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBmb3J3YXJkX2NhbGwoc3RydWN0IGNwdV91c2VyX3Jl Z3MgKnJlZ3MpCj4+ICt7Cj4+ICsgICAgc3RydWN0IGFybV9zbWNjY19yZXMgcmVzcDsKPj4gKwo+ PiArICAgIGFybV9zbWNjY19zbWMoZ2V0X3VzZXJfcmVnKHJlZ3MsIDApLAo+PiArICAgICAgICAg ICAgICAgICAgZ2V0X3VzZXJfcmVnKHJlZ3MsIDEpLAo+PiArICAgICAgICAgICAgICAgICAgZ2V0 X3VzZXJfcmVnKHJlZ3MsIDIpLAo+PiArICAgICAgICAgICAgICAgICAgZ2V0X3VzZXJfcmVnKHJl Z3MsIDMpLAo+PiArICAgICAgICAgICAgICAgICAgZ2V0X3VzZXJfcmVnKHJlZ3MsIDQpLAo+PiAr ICAgICAgICAgICAgICAgICAgZ2V0X3VzZXJfcmVnKHJlZ3MsIDUpLAo+PiArICAgICAgICAgICAg ICAgICAgZ2V0X3VzZXJfcmVnKHJlZ3MsIDYpLAo+PiArICAgICAgICAgICAgICAgICAgT1BURUVf Q0xJRU5UX0lEKGN1cnJlbnQtPmRvbWFpbiksCj4+ICsgICAgICAgICAgICAgICAgICAmcmVzcCk7 Cj4+ICsKPj4gKyAgICBzZXRfdXNlcl9yZWcocmVncywgMCwgcmVzcC5hMCk7Cj4+ICsgICAgc2V0 X3VzZXJfcmVnKHJlZ3MsIDEsIHJlc3AuYTEpOwo+PiArICAgIHNldF91c2VyX3JlZyhyZWdzLCAy LCByZXNwLmEyKTsKPj4gKyAgICBzZXRfdXNlcl9yZWcocmVncywgMywgcmVzcC5hMyk7Cj4+ICsg ICAgc2V0X3VzZXJfcmVnKHJlZ3MsIDQsIDApOwo+PiArICAgIHNldF91c2VyX3JlZyhyZWdzLCA1 LCAwKTsKPj4gKyAgICBzZXRfdXNlcl9yZWcocmVncywgNiwgMCk7Cj4+ICsgICAgc2V0X3VzZXJf cmVnKHJlZ3MsIDcsIDApOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBvcHRlZV9kb21haW5f ZGVzdHJveShzdHJ1Y3QgZG9tYWluICpkKQo+PiArewo+PiArICAgIHN0cnVjdCBhcm1fc21jY2Nf cmVzIHJlc3A7Cj4+ICsKPj4gKyAgICAvKiBBdCB0aGlzIHRpbWUgYWxsIGRvbWFpbiBWQ1BVcyBz aG91bGQgYmUgc3RvcHBlZCAqLwo+PiArCj4+ICsgICAgLyoKPj4gKyAgICAgKiBJbmZvcm0gT1At VEVFIHRoYXQgZG9tYWluIGlzIHNodXR0aW5nIGRvd24uIFRoaXMgaXMKPj4gKyAgICAgKiBhbHNv IGEgZmFzdCBTTUMgY2FsbCwgbGlrZSBPUFRFRV9TTUNfVk1fQ1JFQVRFRCwgc28KPj4gKyAgICAg KiBpdCBpcyBhbHNvIG5vbi1wcmVlbXB0aWJsZS4KPj4gKyAgICAgKi8KPj4gKyAgICBhcm1fc21j Y2Nfc21jKE9QVEVFX1NNQ19WTV9ERVNUUk9ZRUQsIE9QVEVFX0NMSUVOVF9JRChkKSwgMCwgMCwg MCwgMCwgMCwgMCwKPj4gKyAgICAgICAgICAgICAgICAgICZyZXNwKTsKPj4gK30KPj4gKwo+PiAr c3RhdGljIGJvb2wgb3B0ZWVfaGFuZGxlX2NhbGwoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3Mp Cj4+ICt7Cj4+ICsgICAgc3dpdGNoICggZ2V0X3VzZXJfcmVnKHJlZ3MsIDApICkKPj4gKyAgICB7 Cj4+ICsgICAgY2FzZSBPUFRFRV9TTUNfQ0FMTFNfQ09VTlQ6Cj4+ICsgICAgY2FzZSBPUFRFRV9T TUNfQ0FMTFNfVUlEOgo+PiArICAgIGNhc2UgT1BURUVfU01DX0NBTExTX1JFVklTSU9OOgo+PiAr ICAgIGNhc2UgT1BURUVfU01DX0NBTExfR0VUX09TX1VVSUQ6Cj4+ICsgICAgY2FzZSBPUFRFRV9T TUNfRlVOQ0lEX0dFVF9PU19SRVZJU0lPTjoKPj4gKyAgICBjYXNlIE9QVEVFX1NNQ19FTkFCTEVf U0hNX0NBQ0hFOgo+PiArICAgIGNhc2UgT1BURUVfU01DX0RJU0FCTEVfU0hNX0NBQ0hFOgo+PiAr ICAgIGNhc2UgT1BURUVfU01DX0dFVF9TSE1fQ09ORklHOgo+PiArICAgIGNhc2UgT1BURUVfU01D X0VYQ0hBTkdFX0NBUEFCSUxJVElFUzoKPj4gKyAgICBjYXNlIE9QVEVFX1NNQ19DQUxMX1dJVEhf QVJHOgo+PiArICAgIGNhc2UgT1BURUVfU01DX0NBTExfUkVUVVJOX0ZST01fUlBDOgo+PiArICAg ICAgICBmb3J3YXJkX2NhbGwocmVncyk7Cj4+ICsgICAgICAgIHJldHVybiB0cnVlOwo+PiArICAg IGRlZmF1bHQ6Cj4+ICsgICAgICAgIHJldHVybiBmYWxzZTsKPj4gKyAgICB9Cj4+ICt9Cj4+ICsK Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdGVlX21lZGlhdG9yX29wcyBvcHRlZV9vcHMgPQo+PiAr ewo+PiArICAgIC5wcm9iZSA9IG9wdGVlX3Byb2JlLAo+PiArICAgIC5lbmFibGUgPSBvcHRlZV9l bmFibGUsCj4+ICsgICAgLmRvbWFpbl9kZXN0cm95ID0gb3B0ZWVfZG9tYWluX2Rlc3Ryb3ksCj4+ ICsgICAgLmhhbmRsZV9jYWxsID0gb3B0ZWVfaGFuZGxlX2NhbGwsCj4+ICt9Owo+PiArCj4+ICtS RUdJU1RFUl9URUVfTUVESUFUT1Iob3B0ZWUsICJPUC1URUUiLCAmb3B0ZWVfb3BzKTsKPj4gKwo+ PiArLyoKPj4gKyAqIExvY2FsIHZhcmlhYmxlczoKPj4gKyAqIG1vZGU6IEMKPj4gKyAqIGMtZmls ZS1zdHlsZTogIkJTRCIKPj4gKyAqIGMtYmFzaWMtb2Zmc2V0OiA0Cj4+ICsgKiBpbmRlbnQtdGFi cy1tb2RlOiBuaWwKPj4gKyAqIEVuZDoKPj4gKyAqLwo+PiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvYXNtLWFybS90ZWUvb3B0ZWVfc21jLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL3RlZS9vcHRl ZV9zbWMuaAo+PiBpbmRleCAyNmQxMDBlMjE1Li4xYzVhMjQ3OWU5IDEwMDY0NAo+PiAtLS0gYS94 ZW4vaW5jbHVkZS9hc20tYXJtL3RlZS9vcHRlZV9zbWMuaAo+PiArKysgYi94ZW4vaW5jbHVkZS9h c20tYXJtL3RlZS9vcHRlZV9zbWMuaAo+PiBAQCAtMzA0LDYgKzMwNCw1NiBAQCBzdHJ1Y3Qgb3B0 ZWVfc21jX2Rpc2FibGVfc2htX2NhY2hlX3Jlc3VsdCB7Cj4+ICAgI2RlZmluZSBPUFRFRV9TTUNf RU5BQkxFX1NITV9DQUNIRSBcCj4+ICAgCU9QVEVFX1NNQ19GQVNUX0NBTExfVkFMKE9QVEVFX1NN Q19GVU5DSURfRU5BQkxFX1NITV9DQUNIRSkKPj4KPj4gKy8qCj4+ICsgKiBJbmZvcm0gT1AtVEVF IGFib3V0IGEgbmV3IHZpcnR1YWwgbWFjaGluZQo+PiArICoKPj4gKyAqIEh5cGVydmlzb3IgaXNz dWVzIHRoaXMgY2FsbCBkdXJpbmcgdmlydHVhbCBtYWNoaW5lIChndWVzdCkgY3JlYXRpb24uCj4+ ICsgKiBPUC1URUUgcmVjb3JkcyBWTV9JRCBvZiBuZXcgdmlydHVhbCBtYWNoaW5lIGFuZCBtYWtl cyBzZWxmIHJlYWR5Cj4+ICsgKiB0byByZWNlaXZlIHJlcXVlc3RzIGZyb20gaXQuCj4+ICsgKgo+ PiArICogQ2FsbCByZXF1ZXN0cyB1c2FnZToKPj4gKyAqIGEwCVNNQyBGdW5jdGlvbiBJRCwgT1BU RUVfU01DX1ZNX0NSRUFURUQKPj4gKyAqIGExCVZNX0lEIG9mIG5ld2x5IGNyZWF0ZWQgdmlydHVh bCBtYWNoaW5lCj4+ICsgKiBhMi02IE5vdCB1c2VkCj4+ICsgKiBhNwlIeXBlcnZpc29yIENsaWVu dCBJRCByZWdpc3Rlci4gTXVzdCBiZSAwLCBiZWNhdXNlIG9ubHkgaHlwZXJ2aXNvcgo+PiArICog ICAgICBjYW4gaXNzdWUgdGhpcyBjYWxsCj4+ICsgKgo+PiArICogTm9ybWFsIHJldHVybiByZWdp c3RlciB1c2FnZToKPj4gKyAqIGEwCU9QVEVFX1NNQ19SRVRVUk5fT0sKPj4gKyAqIGExLTcJUHJl c2VydmVkCj4+ICsgKgo+PiArICogRXJyb3IgcmV0dXJuOgo+PiArICogYTAJT1BURUVfU01DX1JF VFVSTl9FTk9UQVZBSUwJT1AtVEVFIGhhcyBubyByZXNvdXJjZXMgZm9yCj4+ICsgKgkJCQkJYW5v dGhlciBWTQo+PiArICogYTEtNwlQcmVzZXJ2ZWQKPj4gKyAqCj4+ICsgKi8KPj4gKyNkZWZpbmUg T1BURUVfU01DX0ZVTkNJRF9WTV9DUkVBVEVECTEzCj4+ICsjZGVmaW5lIE9QVEVFX1NNQ19WTV9D UkVBVEVEIFwKPj4gKwlPUFRFRV9TTUNfRkFTVF9DQUxMX1ZBTChPUFRFRV9TTUNfRlVOQ0lEX1ZN X0NSRUFURUQpCj4+ICsKPj4gKy8qCj4+ICsgKiBJbmZvcm0gT1AtVEVFIGFib3V0IHNodXRkb3du IG9mIGEgdmlydHVhbCBtYWNoaW5lCj4+ICsgKgo+PiArICogSHlwZXJ2aXNvciBpc3N1ZXMgdGhp cyBjYWxsIGR1cmluZyB2aXJ0dWFsIG1hY2hpbmUgKGd1ZXN0KSBkZXN0cnVjdGlvbi4KPj4gKyAq IE9QLVRFRSB3aWxsIGNsZWFuIHVwIGFsbCByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMg Vk0uCj4+ICsgKgo+PiArICogQ2FsbCByZXF1ZXN0cyB1c2FnZToKPj4gKyAqIGEwCVNNQyBGdW5j dGlvbiBJRCwgT1BURUVfU01DX1ZNX0RFU1RST1lFRAo+PiArICogYTEJVk1fSUQgb2YgdmlydHVh bCBtYWNoaW5lIGJlaW5nIHNodXR0ZWQgZG93bgo+PiArICogYTItNiBOb3QgdXNlZAo+PiArICog YTcJSHlwZXJ2aXNvciBDbGllbnQgSUQgcmVnaXN0ZXIuIE11c3QgYmUgMCwgYmVjYXVzZSBvbmx5 IGh5cGVydmlzb3IKPj4gKyAqICAgICAgY2FuIGlzc3VlIHRoaXMgY2FsbAo+PiArICoKPj4gKyAq IE5vcm1hbCByZXR1cm4gcmVnaXN0ZXIgdXNhZ2U6Cj4+ICsgKiBhMAlPUFRFRV9TTUNfUkVUVVJO X09LCj4+ICsgKiBhMS03CVByZXNlcnZlZAo+PiArICoKPj4gKyAqLwo+PiArI2RlZmluZSBPUFRF RV9TTUNfRlVOQ0lEX1ZNX0RFU1RST1lFRAkxNAo+PiArI2RlZmluZSBPUFRFRV9TTUNfVk1fREVT VFJPWUVEIFwKPj4gKwlPUFRFRV9TTUNfRkFTVF9DQUxMX1ZBTChPUFRFRV9TTUNfRlVOQ0lEX1ZN X0RFU1RST1lFRCkKPj4gKwo+PiAgIC8qCj4+ICAgICogUmVzdW1lIGZyb20gUlBDIChmb3IgZXhh bXBsZSBhZnRlciBwcm9jZXNzaW5nIGEgZm9yZWlnbiBpbnRlcnJ1cHQpCj4+ICAgICoKPj4KPgo+ IENoZWVycywKCgotLQpCZXN0IHJlZ2FyZHMsVm9sb2R5bXlyIEJhYmNodWsKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0 Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==