From mboxrd@z Thu Jan 1 00:00:00 1970 From: Volodymyr Babchuk Subject: Re: [PATCH v3 06/11] optee: add std call handling Date: Thu, 17 Jan 2019 19:13:33 +0000 Message-ID: <87tvi7t7vn.fsf@epam.com> References: <20181218211126.6886-1-volodymyr_babchuk@epam.com> <20181218211126.6886-7-volodymyr_babchuk@epam.com> <87va2ntimz.fsf@epam.com> <67d7e422-246a-10db-341d-07b51cd5085f@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 1gkD6h-000810-75 for xen-devel@lists.xenproject.org; Thu, 17 Jan 2019 19:13:39 +0000 In-Reply-To: <67d7e422-246a-10db-341d-07b51cd5085f@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: Volodymyr Babchuk , "xen-devel@lists.xenproject.org" , Stefano Stabellini , Volodymyr Babchuk , "tee-dev@lists.linaro.org" List-Id: xen-devel@lists.xenproject.org CkhpIEp1bGllbiwKCkp1bGllbiBHcmFsbCB3cml0ZXM6Cgo+IEhpIFZvbG9keW15ciwKPgo+IE9u IDE3LzAxLzIwMTkgMTU6MjEsIFZvbG9keW15ciBCYWJjaHVrIHdyb3RlOgo+PiBKdWxpZW4gR3Jh bGwgd3JpdGVzOgo+Pgo+Pj4gSGkgVm9sb2R5bXlyLAo+Pj4KPj4+IE9uIDE4LzEyLzIwMTggMjE6 MTEsIFZvbG9keW15ciBCYWJjaHVrIHdyb3RlOgo+Pj4+IEZyb206IFZvbG9keW15ciBCYWJjaHVr IDx2bGFkLmJhYmNodWtAZ21haWwuY29tPgo+Pj4+Cj4+Pj4gVGhlIG1haW4gd2F5IHRvIGNvbW11 bmljYXRlIHdpdGggT1AtVEVFIGlzIHRvIGlzc3VlIHN0YW5kYXJkIFNNQ0NDCj4+Pj4gY2FsbC4g IlN0YW5kYXJkIiBpcyBhIFNNQ0NDIHRlcm0gYW5kIGl0IG1lYW5zIHRoYXQgY2FsbCBjYW4gYmUK Pj4+PiBpbnRlcnJ1cHRlZCBhbmQgT1AtVEVFIGNhbiByZXR1cm4gY29udHJvbCB0byBOVyBiZWZv cmUgY29tcGxldGluZwo+Pj4+IHRoZSBjYWxsLgo+Pj4+Cj4+Pj4gSW4gY29udHJhc3Qgd2l0aCBm YXN0IGNhbGxzLCB3aGVyZSBhcmd1bWVudHMgYW5kIHJldHVybiB2YWx1ZXMKPj4+PiBhcmUgcGFz c2VkIGluIHJlZ2lzdGVycywgc3RhbmRhcmQgY2FsbHMgdXNlIHNoYXJlZCBtZW1vcnkuIFJlZ2lz dGVyCj4+Pj4gcGFpciBhMSxhMiBob2xkcyA2NC1iaXQgUEEgb2YgY29tbWFuZCBidWZmZXIsIHdo ZXJlIGFsbCBhcmd1bWVudHMKPj4+PiBhcmUgc3RvcmVkIGFuZCB3aGljaCBpcyB1c2VkIHRvIHJl dHVybiBkYXRhLiBPUC1URUUgaW50ZXJuYWxseQo+Pj4+IGNvcGllcyBjb250ZW50cyBvZiB0aGlz IGJ1ZmZlciBpbnRvIG93biBzZWN1cmUgbWVtb3J5IGJlZm9yZSBhY2Nlc3NpbmcKPj4+PiBhbmQg dmFsaWRhdGluZyBhbnkgZGF0YSBpbiBjb21tYW5kIGJ1ZmZlci4gVGhpcyBpcyBkb25lIHRvIG1h a2Ugc3VyZQo+Pj4+IHRoYXQgTlcgd2lsbCBub3QgY2hhbmdlIGNvbnRlbnRzIG9mIHRoZSB2YWxp ZGF0ZWQgcGFyYW1ldGVycy4KPj4+Pgo+Pj4+IE1lZGlhdG9yIG5lZWRzIHRvIGRvIHRoZSBzYW1l IGZvciBudW1iZXIgb2YgcmVhc29uczoKPj4+Pgo+Pj4+IDEuIFRvIG1ha2Ugc3VyZSB0aGF0IGd1 ZXN0IHdpbGwgbm90IGNoYW5nZSBkYXRhIGFmdGVyIHZhbGlkYXRpb24uCj4+Pj4gMi4gVG8gdHJh bnNsYXRlIElQQXMgdG8gUEFzIGluIHRoZSBjb21tYW5kIGJ1ZmZlciAodGhpcyBpcyBub3QgZG9u ZQo+Pj4+ICAgICAgaW4gdGhpcyBwYXRjaCkuCj4+Pj4gMy4gVG8gaGlkZSB0cmFuc2xhdGVkIGFk ZHJlc3MgZnJvbSBndWVzdCwgc28gaXQgd2lsbCBub3QgYmUgYWJsZQo+Pj4+ICAgICAgdG8gZG8g SVBBLT5QQSB0cmFuc2xhdGlvbiBieSBtaXN1c2luZyBtZWRpYXRvci4KPj4+Pgo+Pj4+IER1cmlu ZyBzdGFuZGFyZCBjYWxsIE9QLVRFRSBjYW4gaXNzdWUgbXVsdGlwbGUgIlJQQyByZXR1cm5zIiwg YXNraW5nCj4+Pj4gTlcgdG8gZG8gc29tZSB3b3JrIGZvciBPUC1URUUuIE5XIHRoZW4gaXNzdWVz IHNwZWNpYWwgY2FsbAo+Pj4+IE9QVEVFX1NNQ19DQUxMX1JFVFVSTl9GUk9NX1JQQyB0byByZXN1 bWUgaGFuZGxpbmcgb2YgdGhlIG9yaWdpbmFsIGNhbGwuCj4+Pj4gVGh1cywgbWVkaWF0b3IgbmVl ZHMgdG8gbWFpbnRhaW4gY29udGV4dCBmb3Igb3JpZ2luYWwgc3RhbmRhcmQgY2FsbAo+Pj4+IGR1 cmluZyBtdWx0aXBsZSBTTUNDQyBjYWxscy4KPj4+Pgo+Pj4+IFN0YW5kYXJkIGNhbGwgaXMgY29u c2lkZXJlZCBjb21wbGV0ZSwgd2hlbiByZXR1cm5lZCB2YWx1ZSBpcwo+Pj4+IG5vdCBhIFJQQyBy ZXF1ZXN0Lgo+Pj4+Cj4+Pj4gU2lnbmVkLW9mZi1ieTogVm9sb2R5bXlyIEJhYmNodWsgPHZsYWQu YmFiY2h1a0BnbWFpbC5jb20+Cj4+Pj4gLS0tCj4+Pj4KPj4+PiAgICBDaGFuZ2VzIGZyb20gdjI6 Cj4+Pj4gICAgIC0gcmVuYW1lZCBzdHJ1Y3QgZG9tYWluX2N0eCB0byBzdHJ1Y3Qgb3B0ZWVfZG9t YWluCj4+Pj4gICAgIC0gZml4ZWQgY29kaW5nIHN0eWxlCj4+Pj4gICAgIC0gTm93IEkgdXNlIGFj Y2Vzc19ndWVzdF9tZW1vcnlfYnlfaXBhKCkgaW5zdGVhZCBvZiBtYXBwaW5ncwo+Pj4+ICAgICAg IHRvIHJlYWQgY29tbWFuZCBidWZmZXIKPj4+PiAgICAgLSBBZGRlZCB0cmFja2luZyBmb3IgaW4g ZmxpZ2h0IGNhbGxzLCBzbyBndWVzdCBjYW4ndCByZXN1bWUKPj4+PiAgICAgICB0aGUgc2FtZSBj YWxsIGZyb20gdHdvIENQVXMgc2ltdWx0YW5pb3VzbHkKPj4+Pgo+Pj4+ICAgIHhlbi9hcmNoL2Fy bS90ZWUvb3B0ZWUuYyAgICAgfCAzMTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0KPj4+PiAgICB4ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oIHwgICAzICsKPj4+PiAgICAy IGZpbGVzIGNoYW5nZWQsIDMyMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+Pj4+Cj4+ Pj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS90ZWUvb3B0ZWUuYyBiL3hlbi9hcmNoL2FybS90 ZWUvb3B0ZWUuYwo+Pj4+IGluZGV4IDU4NDI0MWIwM2EuLmRjOTBlMmVkOGUgMTAwNjQ0Cj4+Pj4g LS0tIGEveGVuL2FyY2gvYXJtL3RlZS9vcHRlZS5jCj4+Pj4gKysrIGIveGVuL2FyY2gvYXJtL3Rl ZS9vcHRlZS5jCj4+Pj4gQEAgLTEyLDYgKzEyLDggQEAKPj4+PiAgICAgKi8KPj4+PiAgICAgICNp bmNsdWRlIDx4ZW4vZGV2aWNlX3RyZWUuaD4KPj4+PiArI2luY2x1ZGUgPHhlbi9kb21haW5fcGFn ZS5oPgo+Pj4+ICsjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgo+Pj4+ICAgICNpbmNsdWRl IDx4ZW4vc2NoZWQuaD4KPj4+PiAgICAjaW5jbHVkZSA8YXNtL3NtY2NjLmg+Cj4+Pj4gICAgI2lu Y2x1ZGUgPGFzbS90ZWUvdGVlLmg+Cj4+Pj4gQEAgLTIyLDExICsyNCwzOCBAQAo+Pj4+ICAgIC8q IENsaWVudCBJRCAwIGlzIHJlc2VydmVkIGZvciBoeXBlcnZpc29yIGl0c2VsZiAqLwo+Pj4+ICAg ICNkZWZpbmUgT1BURUVfQ0xJRU5UX0lEKGRvbWFpbikgKGRvbWFpbi0+ZG9tYWluX2lkICsgMSkK Pj4+PiAgICArLyoKPj4+PiArICogTWF4aW1hbCBudW1iZXIgb2YgY29uY3VycmVudCBzdGFuZGFy ZCBjYWxscyBmcm9tIG9uZSBndWVzdC4gVGhpcwo+Pj4+ICsgKiBjb3JyZXNwb25kcyB0byBPUFRF RSBjb25maWd1cmF0aW9uIG9wdGlvbiBDRkdfTlVNX1RIUkVBRFMsIGJlY2F1c2UKPj4+PiArICog T1AtVEVFIHNwYXducyBhIHRocmVhZCBmb3IgZXZlcnkgc3RhbmRhcmQgY2FsbC4KPj4+Cj4+PiBM b29raW5nIGF0IE9QLVRFRSwgQ0ZHX05VTV9USFJFQURTIHdpbGwgdmFyeSBkZXBlbmRpbmcgb24g dGhlCj4+PiBwbGF0Zm9ybS4gSXMgdGhlcmUgYW55IHdheSB0byBwcm9iZSB0aGF0IG51bWJlciBv ZiB0aHJlYWRzIGZyb20gWGVuPwo+PiBZZXMsIHRoaXMgaXMgcGVyLXBsYXRmb3JtIGNvbmZpZ3Vy YXRpb24uCj4+IEVhc2llc3Qgd2F5IGlzIHRvIGFkZCBGYXN0IFNNQyB0byBPUC1URUUgdGhhdCB3 aWxsIHJlcG9ydCB0aGlzCj4+IHBhcmFtZXRlci4KPj4gSmVucywgd2hhdCBkbyB5b3UgdGhpbmsg YWJvdXQgYWRkaW5nIGFkZGl0aW9uYWwgY2FsbD8KPj4KPj4+IEluIGFueSBjYXNlLCBJIHRoaW5r IHdlIHNob3VsZCB1cGRhdGUgdGhlIGNvbW1lbnQgdG8gcmVmbGVjdCB0aGF0IHRoaXMKPj4+IHNl ZW1zIHRvIGJlIHRoZSBtYXhpbXVtIENGR19OVU1fVEhSRUFEUyBzdXBwb3J0ZWQgYnkgYW55IHVw c3RyZWFtCj4+PiBwbGF0Zm9ybS4KPj4KPj4gQWN0dWFsbHksIE9QLVRFRSBwcm90b2NvbCBoYXZl IHBvc3NpYmlsaXR5IHRvIGhhbmRsZSBsaW1pdGVkIG51bWJlciBvZgo+PiB0aHJlYWRzIGNvcnJl Y3RseS4gT1AtVEVFIGNhbiByZXBvcnQgdGhhdCBhbGwgdGhyZWFkcyBhcmUgYnVzeSBhbmQKPj4g Y2xpZW50IHdpbGwgd2FpdCBmb3IgYSBmcmVlIG9uZS4gWEVOIGNhbiBkbyB0aGUgc2FtZSwgYWx0 aG91Z2ggdGhpcyBpcyBub3QKPj4gaW1wbGVtZW50ZWQgaW4gdGhpcyBwYXRjaCBzZXJpZXMuIEJ1 dCBJIGNhbiBhZGQgdGhpcy4KPgo+IENvdWxkIHlvdSBleHBhbmQgYnkgd2FpdD8gV2lsbCBpdCBi bG9jayBpbiBPUC1URUUvWGVuIG9yIGRvZXMgaXQKPiByZXR1cm4gdG8gdGhlIGd1ZXN0PwpJdCBy ZXR1cm5zIHRvIHRoZSBndWVzdCB3aXRoIHJlc3BvbnNlIGNvZGUKT1BURUVfU01DX1JFVFVSTl9F VEhSRUFEX0xJTUlULiBMaW51eCBkcml2ZXIgYmxvY2tzIGNhbGxpbmcgYXBwbGljYXRpb24KdGhy ZWFkIHVudGlsIG9uZSBvZiB0aGUgY2FsbHMgdG8gT1AtVEVFIGlzIGZpbmlzaGVkLiBUaGVuIGRy aXZlciBhd2FrZW5zCm9uZSBvZiB0aGUgYmxvY2tlZCB0aHJlYWRzLCBzbyBpdCBjYW4gcGVyZm9y bSB0aGUgY2FsbC4KCj4+Cj4+IEJhc2ljYWxseSB0aGlzIG1lYW5zIHRoYXQgYWxsIGNhbiB3b3Jr IGNvcnJlY3RseSBldmVuIHdpdGgKPj4gTUFYX1NURF9DQUxMUz09MS4gSXQganVzdCB3aWxsIGJl IG5vdCBzbyBlZmZpY2llbnQuCj4KPiBHaXZlbiB0aGUgT1MgaXMgbm90IGF3YXJlIG9mIHRoZSBu dW1iZXIgb2YgdGhyZWFkcywgVGhlIHByb2JsZW0gd291bGQKPiBiZSB0aGUgc2FtZSB3aXRob3V0 IFhlbiBiZXR3ZWVuLiBBbSBJIHJpZ2h0PwpFeGFjdGx5LgoKPiBbLi4uXQo+Cj4+Pj4gKwo+Pj4+ ICsgICAgLyoKPj4+PiArICAgICAqIENvbW1hbmQgYnVmZmVyIHNob3VsZCBzdGFydCBhdCBwYWdl IGJvdW5kYXJ5Lgo+Pj4+ICsgICAgICogVGhpcyBpcyBPUC1URUUgQUJJIHJlcXVpcmVtZW50Lgo+ Pj4+ICsgICAgICovCj4+Pj4gKyAgICBpZiAoIGNhbGwtPmd1ZXN0X2FyZ19pcGEgJiAoT1BURUVf TVNHX05PTkNPTlRJR19QQUdFX1NJWkUgLSAxKSApCj4+Pj4gKyAgICAgICAgcmV0dXJuIGZhbHNl Owo+Pj4+ICsKPj4+PiArICAgIGNhbGwtPnhlbl9hcmcgPSBfeG1hbGxvYyhPUFRFRV9NU0dfTk9O Q09OVElHX1BBR0VfU0laRSwKPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUFRF RV9NU0dfTk9OQ09OVElHX1BBR0VfU0laRSk7Cj4+Pj4gKyAgICBpZiAoICFjYWxsLT54ZW5fYXJn ICkKPj4+PiArICAgICAgICByZXR1cm4gZmFsc2U7Cj4+Pj4gKwo+Pj4+ICsgICAgQlVJTERfQlVH X09OKE9QVEVFX01TR19OT05DT05USUdfUEFHRV9TSVpFID4gUEFHRV9TSVpFKTsKPj4+Cj4+PiBB cyB5b3UgdXNlIF94bWFsbG9jLCB5b3Ugc2hvdWxkIG5vdCBuZWVkIHRoaXMuIFRoaXMgaXMgb25s eSBuZWNlc3NhcnkKPj4+IGlmIHlvdSB1c2UgYWxsb2NfeGVuaGVhcF9wYWdlLgo+Pj4KPj4gWWVz LCByaWdodC4gVGhpcyBpcyBsZWZ0b3ZlciBmcm9tIHRpbWUgd2hlbiBJIG1hcHBlZCBndWVzdCBw YWdlIGludG8KPj4gWEVOLiBJJ2xsIG1vdmUgaXQgZG93biwgdG8gcGxhY2Ugd2hlcmUgSSBtYXAg dGhhdCBwYWdlLgo+Pgo+Pj4gSSBhbSB3b25kZXJpbmcgd2hldGhlciBpdCBpcyB3aXNlIHRvIGFs bG9jYXRlIHRoZSBtZW1vcnkgZnJvbSB4ZW5oZWFwCj4+PiBhbmQgbm90IGRvbWhlYXAuIFdoaWxl IG9uIEFybTY0IChmb3Igbm93KSB4ZW5oZWFwIGFuZCBkb21oZWFwIGFyZSB0aGUKPj4+IHNhbWUs IG9uIEFybTMyIHRoZXkgYXJlIGRpZmZlcmVudC4gVGhlIHhlbmhlYXAgaXMgYXQgbW9zdCAxR0Is IHNvCj4+PiBwcmV0dHkgbGltaXRlZC4KPj4gSG9uZXN0bHksIEkgaGF2ZSBubyBvcGluaW9uIHRo ZXJlLiBXaGF0IGFyZSBsaW1pdGF0aW9ucyBvZiBkb21oZWFwIGluCj4+IHRoaXMgY2FzZT8KPgo+ IGRvbWhlYXAgcGFnZXMgbWF5IG5vdCBhbHdheXMgYmUgbWFwcGVkIGluIFhlbiBwYWdlLXRhYmxl cy4gU28geW91IGhhdmUKPiB0byBjYWxsIG1hcF9kb21haW5fcGFnZS91bm1hcF9kb21haW5fcGFn ZSBhdCBldmVyeSB1c2UuCgo+IEluIHByYWN0aWNlLCBvbiBBcm02NCwgdGhvc2Ugb3BlcmF0aW9u cyBhcmUgdG9kYXkgYSBOT1AgYmVjYXVzZSB0aGUKPiBtZW1vcnkgaXMgYWx3YXlzIG1hcHBlZC4g T24gQXJtMzIsIGRvbWhlYXAgaXMgbmV2ZXIgbWFwcGVkIHNvIHRob3NlCj4gb3BlcmF0aW9ucyB3 aWxsIHJlcXVpcmUgdG8gbW9kaWZ5IHRoZSBwYWdlLXRhYmxlcy4KCj4gVGhlcmUgd291bGQgYmUg cG90ZW50aWFsbHkgd2F5cyB0byBvcHRpbWl6ZSB0aGUgQXJtMzIgY2FzZS4gU28gSSB0aGluawo+ IHRoaXMgaXMgbm90IGEgYmlnIGNvbmNlcm4gYXMgaXQgd291bGQgYWxsb3cgdG8gYWNjb3VudCB0 aGUgbWVtb3J5IHRvCj4gdGhlIGRvbWFpbiBhbmQgdGFrZSBhZHZhbnRhZ2Ugb2YgcG90ZW50aWFs IG5ldyBzYWZldHkgZmVhdHVyZSBhcm91bmQKPiBkb21oZWFwLgo+Cj4gQlRXLCBJIGFtIG5vdCBh c2tpbmcgdG8gaW1wbGVtZW50IHRoZSBhY2NvdW50aW5nIDopLiBZb3UgY2FuIHN0aWxsCj4gYWxs b2NhdGUgZG9taGVhcCBtZW1vcnkgd2l0aG91dCBhIGRvbWFpbiBhc3NpZ25lZC4gSSBhbSBvbmx5 IGdpdmluZwo+IHRoZSBhZHZhbnRhZ2VzIG9mIHVzaW5nIGRvbWhlYXAgb3ZlciB4ZW5oZWFwIDop LgpBY3R1YWxseSwgSSBjb25zaWRlcmVkIHVzaW5nIGRvbWhlYXAgaW4gdGhlIGJlZ2lubmluZy4g QnV0IGZvciBzb21lCnJlYXNvbiBJIHRob3VnaCB0aGF0IGRvbWhlYXAgaXMgbGltaXRlZCBieSBh IHRvdGFsIG1lbW9yeSBhc3NpZ25lZCBmb3IgYQpkb21haW4uIExvb2tzIGxpa2UgSSB3YXMgbWlz dGFrZW4uClNvIHllcywgSSdsbCB1c2VkIGRvbWhlYXAgZm9yIGEgbGFyZ2UgYWxsb2NhdGlvbnMu CgpbLi4uXQo+Pj4+ICt7Cj4+Pj4gKyAgICBzdHJ1Y3Qgb3B0ZWVfbXNnX2FyZyAqZ3Vlc3RfYXJn Owo+Pj4+ICsgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsKPj4+PiArICAgIHVuc2lnbmVkIGlu dCBpOwo+Pj4+ICsgICAgdWludDMyX3QgYXR0cjsKPj4+PiArCj4+Pj4gKyAgICAvKiBjb3B5X3N0 ZF9yZXF1ZXN0KCkgdmFsaWRhdGVkIElQQSBmb3IgdXMgKi8KPj4+Cj4+PiBOb3QgcmVhbGx5LCB0 aGUgZ3Vlc3QgaXMgZnJlZSB0byBtb2RpZnkgdGhlIHN0YWdlLTIgbWFwcGluZyBvbiBhbm90aGVy Cj4+PiB2Q1BVIHdoaWxlIHRoaXMgaXMgaGFwcGVuaW5nLiBJIGFncmVlIHRoYXQgdGhlIGd1ZXN0 IHdpbGwgc2hvb3QKPj4+IGhpbXNlbGYsIGJ1dCB3ZSBhdCBsZWFzdCBuZWVkIHRvIG5vdCBoYXZl IHdlaXJkIGJlaGF2aW9yIGhhcHBlbmluZy4KPj4+Cj4+PiBJbiB0aGF0IGNhc2UsIEkgd291bGQg Y2hlY2sgdGhhdCB0aGUgdHlwZSBpcyBwMm1fcmFtX3J3IGFzIHlvdSBkb24ndAo+Pj4gd2FudCB0 byB3cml0ZSBpbiByZWFkLW9ubHkgb3IgZm9yZWlnbiBtYXBwaW5nLgo+PiBIb3cgSSBjYW4gZG8g dGhpcyBhdG9taWNhbGx5PyBJLmUuIHdoYXQgaWYgZ3Vlc3Qgd2lsbCBtYW5nbGUgcDJtIHJpZ2h0 Cj4+IGFmdGVyIHRoZSBjaGVjaz8KPgo+IFdoYXQgeW91IHdhbnQgdG8gcHJldmVudCBpcyBYZW4g d3JpdGluZyB0byB0aGUgd3JvbmcgcGFnZS4gVGhlIGd1ZXN0Cj4gc2hvdWxkIG5vdCBwbGF5IHdp dGggcGFnZSB0aGF0IGFyZSBzaGFyZWQgd2l0aCBhbiBoaWdoZXIgZXhjZXB0aW9uCj4gbGV2ZWwu Cj4KPiBnZXRfcGFnZV9mcm9tX2dmbigpIHRha2VzIGEgcmVmZXJlbmNlIG9uIHRoZSBjdXJyZW50 IHBhZ2UsIHRoYXQgd2lsbAo+IGJlIHJlbGVhc2UgYnkgcHV0X3BhZ2UoKS4gQmV0d2VlbiB0aGF0 IHlvdSBhcmUgc3VyZSB0aGUgcGFnZSBjYW4gbm90Cj4gZGlzYXBwZWFyIHVuZGVyIHlvdXIgZmVl dC4KQWhoaCwgcmlnaHQuIFRoYW5rIHlvdS4KCj4KPiBGdXJ0aGVybW9yZSwgQUZBSUssIHRoZXJl IGFyZSBubyB3YXkgZm9yIGFuIEFybSBndWVzdCB0byBtb2RpZnkgdGhlCj4gcDJtIHR5cGUgb2Yg YSBwYWdlIG9uY2UgaW5zZXJ0ZWQuIEl0IGNhbiBvbmx5IHJlbW92ZSBvciByZXBsYWNlIHdpdGgg YQo+IG5ld2x5IGFsbG9jYXRlZCBwYWdlIHRoZSBtYXBwaW5nLiBJZiB0aGUgZ3Vlc3QgaW5zdHJ1 Y3RzIHRvCj4gCS0gcmVtb3ZlIHRoZSBwYWdlLCBhcyB5b3UgaGF2ZSBhIHJlZmVyZW5jZSB0aGF0 IHBhZ2Ugd2lsbCBub3QgZGlzYXBwZWFyLgo+IAktIHJlcGxhY2UgdGhlIHBhZ2Ugd2l0aCBhIG5l dyBvbmUsIHRoZW4gdGhlIGd1ZXN0IHdpbGwgbm90IGJlCj4gYWJsZSB0byBzZWUgdGhlIHJlc3Vs dC4gVG91Z2ggbHVjaywgYnV0IGl0IHdhcyBub3QgbWVhbnQgdG8gZG8gdGhhdAo+IDopLgo+Cj4+ Cj4+PiBBbHNvLCBhcyBjb3B5X3N0ZF9yZXF1ZXN0KCkgYW5kIGNvcHlfc3RkX3JlcXVlc3RfYmFj ayBtYXkgbm90IGJlCj4+PiBjYWxsZWQgaW4gdGhlIHNhbWUgInRocmVhZCIgaXQgd291bGQgYmUg dXNlZnVsIGlmIHlvdSBzcGVjaWZ5IGEgYml0Cj4+PiBtb3JlIHRoZSBpbnRlcmFjdGlvbi4KPj4g SSBub3Qgc3VyZSB3aGF0IGRvIHlvdSBtZWFuIHRoZXJlLgo+Cj4gV2hhdCBJIG1lYW50IGlzIHRo ZSBmb2xsb3dpbmcgY2FuIGhhcHBlbjoKPgo+ICAgICAgZ3Vlc3QgdkNQVSBBICAgICAgICAgfCAg IFhlbgo+Cj4gICAgICBJbml0aWF0ZSBjYWxsIDEKPiAJICAgICAgICAgICAgICAgICAgICAgIGNv cHlfc3RkX3JlcXVlc3QoKQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwgT1At VEVFCj4gCQkJCS0+IENhbGwgInByZWVtcHRlZCIKPiAgICAgICAgICAgICAgICAgICAgICAJICAg ICAgcmV0dXJuIHRvIGd1ZXN0Cj4gICAgICBSZXN1bWUgY2FsbCAxCj4gCQkJICAgICAgcmVzdW1l IGNhbGwgaW4gT1AtVEVFCj4gCQkJICAgICAgY29weV9zdGRfYmFja19yZXF1ZXN0KCkKPgpZZXMs IHRoaXMgaXMgcmlnaHQuCgo+IEFGQUlDVCwgdGhlIGNhbGwgY291bGQgZXZlbiByZXN1bWUgZnJv bSBhIGRpZmZlcmVudCB2Q1BVLgpUaGlzIGlzIGFsc28gdHJ1ZS4KCj4gSXQgaXMgbm90Cj4gZW50 aXJlbHkgdHJpdmlhbCB0byB1bmRlcnN0YW5kIHRoaXMgZnJvbSBqdXN0IHJlYWRpbmcgdGhlIGNv ZGUgYW5kIHRoZQo+IGNvbW1lbnQgImNvcHlfc3RkX3JlcXVlc3QoKSB2YWxpZGF0ZWQgSVBBIGZv ciB1cyIgbGVhZHMgdG8gdGhpbmsKPiBjb3B5X3N0ZF9yZXF1ZXN0KCkgd2FzIGNhbGxlZCByaWdo dCBiZWZvcmUuIFRoaXMgbWF5IG5vdCBiZSB0aGUKPiBjYXNlLiBTbyBjYW4geW91IGRldGFpbCBh IGJpdCBtb3JlIHRoZSBpbnRlcmFjdGlvbiBpbiB0aGUgY29kZT8KWWVzLCB0aGVyZSBjYW4gYmUg YW4gaXNzdWUuIE15IHByZXZpb3VzIGFwcHJvYWNoIHBpbmVkIGd1ZXN0IHBhZ2UgZm9yIGEKY2Fs bCBkdXJhdGlvbiwgc28gSSB3YXMgc3VyZSB0aGF0IElQQSBpcyBzdGlsbCB2YWxpZC4gQnV0IG5v dyB0aGlzIGlzCm5vdCB0cnVlIGFueW1vcmUuIFNvIHllcywgdGhpcyBjb21tZW50IGlzIG1pc2xl YWRpbmcuIEknbGwgZml4IGJvdGggdGhlCmNvZGUgYW5kIHRoZSBjb21tZW50LgoKWy4uLl0KPj4+ PiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9kb21haW4uaCBiL3hlbi9pbmNsdWRl L2FzbS1hcm0vZG9tYWluLmgKPj4+PiBpbmRleCAxNzVkZTQ0OTI3Li44OGI0ODY5N2JkIDEwMDY0 NAo+Pj4+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZG9tYWluLmgKPj4+PiArKysgYi94ZW4v aW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oCj4+Pj4gQEAgLTk3LDYgKzk3LDkgQEAgc3RydWN0IGFy Y2hfZG9tYWluCj4+Pj4gICAgICAgIHN0cnVjdCB2cGwwMTEgdnBsMDExOwo+Pj4+ICAgICNlbmRp Zgo+Pj4+ICAgICsjaWZkZWYgQ09ORklHX1RFRQo+Pj4+ICsgICAgdm9pZCAqdGVlOwo+Pj4+ICsj ZW5kaWYKPj4+Cj4+PiBEaWQgeW91IGxvb2sgd2hldGhlciB0aGVyZSBhcmUgYW55IGhvbGUgaW4g YXJjaF9kb21haW4gdGhhdCBjb3VsZCBiZSByZS11c2VkPwo+PiBJIHRob3VnaHQgYWJvdXQgdGhh dC4gQnV0IHdoYXQgYXJlIGNoYW5jZXMgdG8gZmluZCA2NGJpdC13aWRlLAo+PiA2NGJpdC1hbGln bmVkIGhvbGUgaW4gYSBzdHJ1Y3R1cmU/IElmIEkgcmVtZW1iZXIgQyBzdGFuZGFyZCBjb3JyZWN0 bHksCj4+IHRoZXJlIGFyZSBubyByZWFzb25zIGZvciBjb21waWxlciB0byBsZWF2ZSBzdWNoIGhv bGVzLgo+Cj4gSXQgZGVwZW5kcyBvbiB0aGUgYWxpZ25tZW50IHJlcXVlc3RlZCBmb3IgZWFjaCBz dHJ1Y3R1cmUuIEhhdmUgYSBsb29rCj4gYXQgcGFob2xlIHRvIHNlZSB0aGUgbnVtYmVyIChhbmQg c2l6ZSkgb2YgaG9sZXMgd2UgaGF2ZSBpbiBzb21lCj4gc3RydWN0dXJlcyA7KS4KV293LCAxMDgg Ynl0ZXMgaG9sZSBpbiByY3VfY3RybGJsayA6KSBBbmQgeWVzLCBvbmx5IHR3byA4IGJ5dGUgaG9s ZXMgaW4KdGhlIHdob2xlIHhlbi4KCgotLQpCZXN0IHJlZ2FyZHMsIFZvbG9keW15ciBCYWJjaHVr Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZl bCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz dHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=