From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH v8 07/11] arm: smccc: handle SMCs according to SMCCC Date: Wed, 11 Oct 2017 13:38:30 -0700 (PDT) Message-ID: References: <1507650771-16631-1-git-send-email-volodymyr_babchuk@epam.com> <1507650771-16631-8-git-send-email-volodymyr_babchuk@epam.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1507650771-16631-8-git-send-email-volodymyr_babchuk@epam.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Volodymyr Babchuk Cc: "Edgar E . Iglesias" , Tim Deegan , Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , xen-devel@lists.xen.org, Julien Grall List-Id: xen-devel@lists.xenproject.org T24gVHVlLCAxMCBPY3QgMjAxNywgVm9sb2R5bXlyIEJhYmNodWsgd3JvdGU6Cj4gU01DQ0MgKFNN QyBDYWxsIENvbnZlbnRpb24pIGRlc2NyaWJlcyBob3cgdG8gaGFuZGxlIGJvdGggSFZDcyBhbmQg U01Dcy4KPiBTTUNDQyBzdGF0ZXMgdGhhdCBib3RoIEhWQyBhbmQgU01DIGFyZSB2YWxpZCBjb25k dWl0cyB0byBjYWxsIHRvIGRpZmZlcmVudAo+IGZpcm13YXJlIGZ1bmN0aW9ucy4gVGh1cywgZm9y IGV4YW1wbGUsIFBTQ0kgY2FsbHMgY2FuIGJlIG1hZGUgYm90aCBieQo+IFNNQyBvciBIVkMuIEFs c28gU01DQ0MgZGVmaW5lcyBmdW5jdGlvbiBudW1iZXIgY29kaW5nIGZvciBzdWNoIGNhbGxzLgo+ IEJlc2lkZXMgZnVuY3Rpb25hbCBjYWxscyB0aGVyZSBhcmUgcXVlcnkgY2FsbHMsIHdoaWNoIGFs bG93cyB1bmRlcmxpbmcKPiBPUyBkZXRlcm1pbmUgdmVyc2lvbiwgVVVJRCBhbmQgbnVtYmVyIG9m IGZ1bmN0aW9ucyBwcm92aWRlZCBieSBzZXJ2aWNlCj4gcHJvdmlkZXIuCj4gCj4gVGhpcyBwYXRj aCBhZGRzIG5ldyBmaWxlIGB2c21jLmNgLCB3aGljaCBoYW5kbGVzIGJvdGggZ2VuZXJpYyBTTUNz Cj4gYW5kIEhWQyBhY2NvcmRpbmcgdG8gU01DQ0MuIEF0IHRoaXMgbW9tZW50IGl0IGltcGxlbWVu dHMgb25seSBvbmUKPiBzZXJ2aWNlOiBTdGFuZGFyZCBIeXBlcnZpc29yIFNlcnZpY2UuCj4gCj4g QXQgdGhpcyB0aW1lIFN0YW5kYXJkIEh5cGVydmlzb3IgU2VydmljZSBvbmx5IHN1cHBvcnRzIHF1 ZXJ5IGNhbGxzLAo+IHNvIGNhbGxlciBjYW4gYXNrIGFib3V0IGh5cGVydmlzb3IgVUlEIGFuZCBk ZXRlcm1pbmUgdGhhdCBpdCBpcyBYRU4gcnVubmluZy4KPiAKPiBUaGlzIGNoYW5nZSBhbGxvd3Mg bW9yZSBnZW5lcmljIGhhbmRsaW5nIGZvciBTTUNzIGFuZCBIVkNzIGFuZCBpdCBjYW4KPiBiZSBl YXNpbHkgZXh0ZW5kZWQgdG8gc3VwcG9ydCBuZXcgc2VydmljZXMgYW5kIGZ1bmN0aW9ucy4KPiAK PiBCdXQsIGJlZm9yZSBTTUMgaXMgZm9yd2FyZGVkIHRvIHN0YW5kYXJkIFNNQ0NDIGhhbmRsZXIs IGl0IGNhbiBiZSByb3V0ZWQKPiB0byBhIGRvbWFpbiBtb25pdG9yLCBpZiBvbmUgaXMgaW5zdGFs bGVkLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFZvbG9keW15ciBCYWJjaHVrIDx2b2xvZHlteXJfYmFi Y2h1a0BlcGFtLmNvbT4KPiBSZXZpZXdlZC1ieTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9s ZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgo+IFJldmlld2VkLWJ5OiBPbGVrc2FuZHIg VHlzaGNoZW5rbyA8b2xla3NhbmRyX3R5c2hjaGVua29AZXBhbS5jb20+Cj4gQWNrZWQtYnk6IEp1 bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+Cj4gLS0tCj4gIHhlbi9hcmNoL2FybS9N YWtlZmlsZSAgICAgICAgICAgICAgIHwgICAxICsKPiAgeGVuL2FyY2gvYXJtL3RyYXBzLmMgICAg ICAgICAgICAgICAgfCAgMTcgLS0tLQo+ICB4ZW4vYXJjaC9hcm0vdnNtYy5jICAgICAgICAgICAg ICAgICB8IDE5MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgeGVuL2lu Y2x1ZGUvYXNtLWFybS90cmFwcy5oICAgICAgICAgfCAgIDMgKwo+ICB4ZW4vaW5jbHVkZS9wdWJs aWMvYXJjaC1hcm0vc21jY2MuaCB8ICA1OCArKysrKysrKysrKwo+ICA1IGZpbGVzIGNoYW5nZWQs IDI1MyBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IHhlbi9hcmNoL2FybS92c21jLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3B1 YmxpYy9hcmNoLWFybS9zbWNjYy5oCj4gCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9NYWtl ZmlsZSBiL3hlbi9hcmNoL2FybS9NYWtlZmlsZQo+IGluZGV4IDQyNDU4MGIuLjMwYTJhNjUgMTAw NjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL01ha2VmaWxlCj4gKysrIGIveGVuL2FyY2gvYXJtL01h a2VmaWxlCj4gQEAgLTUzLDYgKzUzLDcgQEAgb2JqLSQoQ09ORklHX0hBU19JVFMpICs9IHZnaWMt djMtaXRzLm8KPiAgb2JqLXkgKz0gdm1fZXZlbnQubwo+ICBvYmoteSArPSB2dGltZXIubwo+ICBv YmotJChDT05GSUdfU0JTQV9WVUFSVF9DT05TT0xFKSArPSB2cGwwMTEubwo+ICtvYmoteSArPSB2 c21jLm8KPiAgb2JqLXkgKz0gdnBzY2kubwo+ICBvYmoteSArPSB2dWFydC5vCj4gIAo+IGRpZmYg LS1naXQgYS94ZW4vYXJjaC9hcm0vdHJhcHMuYyBiL3hlbi9hcmNoL2FybS90cmFwcy5jCj4gaW5k ZXggNWI5MWU2Yy4uNmVhMDA5MCAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC9hcm0vdHJhcHMuYwo+ ICsrKyBiL3hlbi9hcmNoL2FybS90cmFwcy5jCj4gQEAgLTIxOTUsMjMgKzIxOTUsNiBAQCBzdGF0 aWMgdm9pZCBkb190cmFwX2RhdGFfYWJvcnRfZ3Vlc3Qoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJl Z3MsCj4gICAgICBpbmplY3RfZGFidF9leGNlcHRpb24ocmVncywgaW5mby5ndmEsIGhzci5sZW4p Owo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBkb190cmFwX3NtYyhzdHJ1Y3QgY3B1X3VzZXJfcmVn cyAqcmVncywgY29uc3QgdW5pb24gaHNyIGhzcikKPiAtewo+IC0gICAgaW50IHJjID0gMDsKPiAt Cj4gLSAgICBpZiAoICFjaGVja19jb25kaXRpb25hbF9pbnN0cihyZWdzLCBoc3IpICkKPiAtICAg IHsKPiAtICAgICAgICBhZHZhbmNlX3BjKHJlZ3MsIGhzcik7Cj4gLSAgICAgICAgcmV0dXJuOwo+ IC0gICAgfQo+IC0KPiAtICAgIGlmICggY3VycmVudC0+ZG9tYWluLT5hcmNoLm1vbml0b3IucHJp dmlsZWdlZF9jYWxsX2VuYWJsZWQgKQo+IC0gICAgICAgIHJjID0gbW9uaXRvcl9zbWMoKTsKPiAt Cj4gLSAgICBpZiAoIHJjICE9IDEgKQo+IC0gICAgICAgIGluamVjdF91bmRlZl9leGNlcHRpb24o cmVncywgaHNyKTsKPiAtfQo+IC0KPiAgc3RhdGljIHZvaWQgZW50ZXJfaHlwZXJ2aXNvcl9oZWFk KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQo+ICB7Cj4gICAgICBpZiAoIGd1ZXN0X21vZGUo cmVncykgKQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdnNtYy5jIGIveGVuL2FyY2gvYXJt L3ZzbWMuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uMzhkZjgyMQo+ IC0tLSAvZGV2L251bGwKPiArKysgYi94ZW4vYXJjaC9hcm0vdnNtYy5jCj4gQEAgLTAsMCArMSwx OTEgQEAKPiArLyoKPiArICogeGVuL2FyY2gvYXJtL3ZzbWMuYwo+ICsgKgo+ICsgKiBHZW5lcmlj IGhhbmRsZXIgZm9yIFNNQyBhbmQgSFZDIGNhbGxzIGFjY29yZGluZyB0bwo+ICsgKiBBUk0gU01D IGNhbGxpbmcgY29udmVudGlvbgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBh cwo+ICsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiArICoK PiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPiArICogR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiArICovCj4gKwo+ICsKPiArI2luY2x1ZGUg PHhlbi9saWIuaD4KPiArI2luY2x1ZGUgPHhlbi90eXBlcy5oPgo+ICsjaW5jbHVkZSA8cHVibGlj L2FyY2gtYXJtL3NtY2NjLmg+Cj4gKyNpbmNsdWRlIDxhc20vbW9uaXRvci5oPgo+ICsjaW5jbHVk ZSA8YXNtL3JlZ3MuaD4KPiArI2luY2x1ZGUgPGFzbS9zbWNjYy5oPgo+ICsjaW5jbHVkZSA8YXNt L3RyYXBzLmg+Cj4gKwo+ICsvKiBOdW1iZXIgb2YgZnVuY3Rpb25zIGN1cnJlbnRseSBzdXBwb3J0 ZWQgYnkgSHlwZXJ2aXNvciBTZXJ2aWNlLiAqLwo+ICsjZGVmaW5lIFhFTl9TTUNDQ19GVU5DVElP Tl9DT1VOVCAzCj4gKwo+ICtzdGF0aWMgYm9vbCBmaWxsX3VpZChzdHJ1Y3QgY3B1X3VzZXJfcmVn cyAqcmVncywgeGVuX3V1aWRfdCB1dWlkKQo+ICt7Cj4gKyAgICBpbnQgbjsKPiArCj4gKyAgICAv Kgo+ICsgICAgICogVUlEIGlzIHJldHVybmVkIGluIHJlZ2lzdGVycyByMC4ucjMsIGZvdXIgYnl0 ZXMgcGVyIHJlZ2lzdGVyLAo+ICsgICAgICogZmlyc3QgYnl0ZSBpcyBzdG9yZWQgaW4gbG93LW9y ZGVyIGJpdHMgb2YgYSByZWdpc3Rlci4KPiArICAgICAqIChBUk0gREVOIDAwMjhCIHBhZ2UgMTQp Cj4gKyAgICAgKi8KPiArICAgIGZvciAobiA9IDA7IG4gPCA0OyBuKyspCj4gKyAgICB7Cj4gKyAg ICAgICAgY29uc3QgdWludDhfdCAqYnl0ZXMgPSB1dWlkLmEgKyBuICogNDsKPiArICAgICAgICB1 aW50MzJfdCByOwo+ICsKPiArICAgICAgICByID0gYnl0ZXNbMF07Cj4gKyAgICAgICAgciB8PSBi eXRlc1sxXSA8PCA4Owo+ICsgICAgICAgIHIgfD0gYnl0ZXNbMl0gPDwgMTY7Cj4gKyAgICAgICAg ciB8PSBieXRlc1szXSA8PCAyNDsKPiArCj4gKyAgICAgICAgc2V0X3VzZXJfcmVnKHJlZ3MsIG4s IHIpOwo+ICsgICAgfQo+ICsKPiArICAgIHJldHVybiB0cnVlOwo+ICt9Cj4gKwo+ICtzdGF0aWMg Ym9vbCBmaWxsX3JldmlzaW9uKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLCB1aW50MzJfdCBt YWpvciwKPiArICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG1pbm9yKQo+ICt7Cj4g KyAgICAvKgo+ICsgICAgICogUmV2aXNpb24gaXMgcmV0dXJuZWQgaW4gcmVnaXN0ZXJzIHIwIGFu ZCByMS4KPiArICAgICAqIHIwIHN0b3JlcyBtYWpvciBwYXJ0IG9mIHRoZSB2ZXJzaW9uCj4gKyAg ICAgKiByMSBzdG9yZXMgbWlub3IgcGFydCBvZiB0aGUgdmVyc2lvbgo+ICsgICAgICogKEFSTSBE RU4gMDAyOEIgcGFnZSAxNSkKPiArICAgICAqLwo+ICsgICAgc2V0X3VzZXJfcmVnKHJlZ3MsIDAs IG1ham9yKTsKPiArICAgIHNldF91c2VyX3JlZyhyZWdzLCAxLCBtaW5vcik7Cj4gKwo+ICsgICAg cmV0dXJuIHRydWU7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIGZpbGxfZnVuY3Rpb25fY2FsbF9j b3VudChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywgdWludDMyX3QgY250KQo+ICt7Cj4gKyAg ICAvKgo+ICsgICAgICogRnVuY3Rpb24gY2FsbCBjb3VudCBpcyByZXR1bmVkIGFzIGFueSBvdGhl ciByZXR1cm4gdmFsdWUgaW4gcmVnaXN0ZXIgcjAKPiArICAgICAqIChBUk0gREVOIDAwMjhCIHBh Z2UgMTcpCj4gKyAgICAgKi8KPiArICAgIHNldF91c2VyX3JlZyhyZWdzLCAwLCBjbnQpOwo+ICsK PiArICAgIHJldHVybiB0cnVlOwo+ICt9Cj4gKwo+ICsvKiBTTUNDQyBpbnRlcmZhY2UgZm9yIGh5 cGVydmlzb3IuIFRlbGwgYWJvdXQgaXRzZWxmLiAqLwo+ICtzdGF0aWMgYm9vbCBoYW5kbGVfaHlw ZXJ2aXNvcihzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKPiArewo+ICsgICAgc3dpdGNoICgg c21jY2NfZ2V0X2ZuKGdldF91c2VyX3JlZyhyZWdzLCAwKSkgKQo+ICsgICAgewo+ICsgICAgY2Fz ZSBBUk1fU01DQ0NfRlVOQ19DQUxMX0NPVU5UOgo+ICsgICAgICAgIHJldHVybiBmaWxsX2Z1bmN0 aW9uX2NhbGxfY291bnQocmVncywgWEVOX1NNQ0NDX0ZVTkNUSU9OX0NPVU5UKTsKPiArICAgIGNh c2UgQVJNX1NNQ0NDX0ZVTkNfQ0FMTF9VSUQ6Cj4gKyAgICAgICAgcmV0dXJuIGZpbGxfdWlkKHJl Z3MsIFhFTl9TTUNDQ19VSUQpOwo+ICsgICAgY2FzZSBBUk1fU01DQ0NfRlVOQ19DQUxMX1JFVklT SU9OOgo+ICsgICAgICAgIHJldHVybiBmaWxsX3JldmlzaW9uKHJlZ3MsIFhFTl9TTUNDQ19NQUpP Ul9SRVZJU0lPTiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYRU5fU01DQ0NfTUlO T1JfUkVWSVNJT04pOwo+ICsgICAgZGVmYXVsdDoKPiArICAgICAgICByZXR1cm4gZmFsc2U7Cj4g KyAgICB9Cj4gK30KPiArCj4gKy8qCj4gKyAqIHZzbWNjY19oYW5kbGVfY2FsbCgpIC0gaGFuZGxl IFNNQy9IVkMgY2FsbCBhY2NvcmRpbmcgdG8gQVJNIFNNQ0NDLgo+ICsgKiByZXR1cm5zIHRydWUg aWYgdGhhdCB3YXMgdmFsaWQgU01DQ0MgY2FsbCAoZXZlbiBpZiBmdW5jdGlvbiBudW1iZXIKPiAr ICogd2FzIHVua25vd24pLgo+ICsgKi8KPiArc3RhdGljIGJvb2wgdnNtY2NjX2hhbmRsZV9jYWxs KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQo+ICt7Cj4gKyAgICBib29sIGhhbmRsZWQgPSBm YWxzZTsKPiArICAgIGNvbnN0IHVuaW9uIGhzciBoc3IgPSB7IC5iaXRzID0gcmVncy0+aHNyIH07 Cj4gKyAgICByZWdpc3Rlcl90IGZ1bmNpZCA9IGdldF91c2VyX3JlZyhyZWdzLCAwKTsKPiArCj4g KyAgICAvKgo+ICsgICAgICogQ2hlY2sgaW1tZWRpYXRlIHZhbHVlIGZvciBIVkMzMiwgSFZDNjQg YW5kIFNNQzY0Lgo+ICsgICAgICogSXQgaXMgbm90IHNvIGVhc3kgdG8gY2hlY2sgaW1tZWRpYXRl IHZhbHVlIGZvciBTTUMzMiwKPiArICAgICAqIGJlY2F1c2UgaXQgaXMgbm90IHN0b3JlZCBpbiBI U1IuSVNTIGZpZWxkLiBUbyBnZXQgaW1tZWRpYXRlCj4gKyAgICAgKiB2YWx1ZSB3ZSBuZWVkIHRv IGRpc2Fzc2VtYmxlIGluc3RydWN0aW9uIGF0IGN1cnJlbnQgcGMsIHdoaWNoCj4gKyAgICAgKiBp cyBleHBlbnNpdmUuIFNvIHdlIHdpbGwgYXNzdW1lIHRoYXQgaXQgaXMgMHgwLgo+ICsgICAgICov Cj4gKyAgICBzd2l0Y2ggKCBoc3IuZWMgKQo+ICsgICAgewo+ICsgICAgY2FzZSBIU1JfRUNfSFZD MzI6Cj4gKyAgICBjYXNlIEhTUl9FQ19IVkM2NDoKPiArICAgIGNhc2UgSFNSX0VDX1NNQzY0OgoK SFNSX0VDX0hWQzY0IGFuZCBIU1JfRUNfU01DNjQgYXJlIG9ubHkgZGVmaW5lZCBvbiBBUk02NC4g SSBhZGRlZCBhbgojaWZkZWYgaGVyZSB3aGlsZSBjb21taXR0aW5nLgoKCj4gKyAgICAgICAgaWYg KCAoaHNyLmlzcyAmIEhTUl9YWENfSU1NX01BU0spICE9IDApCj4gKyAgICAgICAgICAgIHJldHVy biBmYWxzZTsKPiArICAgICAgICBicmVhazsKPiArICAgIGNhc2UgSFNSX0VDX1NNQzMyOgo+ICsg ICAgICAgIGJyZWFrOwo+ICsgICAgZGVmYXVsdDoKPiArICAgICAgICByZXR1cm4gZmFsc2U7Cj4g KyAgICB9Cj4gKwo+ICsgICAgLyogNjQgYml0IGNhbGxzIGFyZSBhbGxvd2VkIG9ubHkgZnJvbSA2 NCBiaXQgZG9tYWlucy4gKi8KPiArICAgIGlmICggc21jY2NfaXNfY29udl82NChmdW5jaWQpICYm IGlzXzMyYml0X2RvbWFpbihjdXJyZW50LT5kb21haW4pICkKPiArICAgIHsKPiArICAgICAgICBz ZXRfdXNlcl9yZWcocmVncywgMCwgQVJNX1NNQ0NDX0VSUl9VTktOT1dOX0ZVTkNUSU9OKTsKPiAr ICAgICAgICByZXR1cm4gdHJ1ZTsKPiArICAgIH0KPiArCj4gKyAgICBzd2l0Y2ggKCBzbWNjY19n ZXRfb3duZXIoZnVuY2lkKSApCj4gKyAgICB7Cj4gKyAgICBjYXNlIEFSTV9TTUNDQ19PV05FUl9I WVBFUlZJU09SOgo+ICsgICAgICAgIGhhbmRsZWQgPSBoYW5kbGVfaHlwZXJ2aXNvcihyZWdzKTsK PiArICAgICAgICBicmVhazsKPiArICAgIH0KPiArCj4gKyAgICBpZiAoICFoYW5kbGVkICkKPiAr ICAgIHsKPiArICAgICAgICBncHJpbnRrKFhFTkxPR19JTkZPLCAiVW5oYW5kbGVkIFNNQy9IVkM6 ICUwOCJQUklyZWdpc3RlciJcbiIsIGZ1bmNpZCk7Cj4gKwo+ICsgICAgICAgIC8qIEluZm9ybSBj YWxsZXIgdGhhdCBmdW5jdGlvbiBpcyBub3Qgc3VwcG9ydGVkLiAqLwo+ICsgICAgICAgIHNldF91 c2VyX3JlZyhyZWdzLCAwLCBBUk1fU01DQ0NfRVJSX1VOS05PV05fRlVOQ1RJT04pOwo+ICsgICAg fQo+ICsKPiArICAgIHJldHVybiB0cnVlOwo+ICt9Cj4gKwo+ICt2b2lkIGRvX3RyYXBfc21jKHN0 cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLCBjb25zdCB1bmlvbiBoc3IgaHNyKQo+ICt7Cj4gKyAg ICBpbnQgcmMgPSAwOwo+ICsKPiArICAgIGlmICggIWNoZWNrX2NvbmRpdGlvbmFsX2luc3RyKHJl Z3MsIGhzcikgKQo+ICsgICAgewo+ICsgICAgICAgIGFkdmFuY2VfcGMocmVncywgaHNyKTsKPiAr ICAgICAgICByZXR1cm47Cj4gKyAgICB9Cj4gKwo+ICsgICAgLyogSWYgbW9uaXRvciBpcyBlbmFi bGVkLCBsZXQgaXQgaGFuZGxlIHRoZSBjYWxsLiAqLwo+ICsgICAgaWYgKCBjdXJyZW50LT5kb21h aW4tPmFyY2gubW9uaXRvci5wcml2aWxlZ2VkX2NhbGxfZW5hYmxlZCApCj4gKyAgICAgICAgcmMg PSBtb25pdG9yX3NtYygpOwo+ICsKPiArICAgIGlmICggcmMgPT0gMSApCj4gKyAgICAgICAgcmV0 dXJuOwo+ICsKPiArICAgIC8qCj4gKyAgICAgKiBVc2Ugc3RhbmRhcmQgcm91dGluZXMgdG8gaGFu ZGxlIHRoZSBjYWxsLgo+ICsgICAgICogdnNtY2NjX2hhbmRsZV9jYWxsKCkgd2lsbCByZXR1cm4g ZmFsc2UgaWYgdGhpcyBjYWxsIGlzIG5vdAo+ICsgICAgICogU01DQ0MgY29tcGF0aWJsZSAoZS5n LiBpbW1lZGlhdGUgdmFsdWUgIT0gMCkuIEFzIGl0IGlzIG5vdAo+ICsgICAgICogY29tcGF0aWJs ZSwgd2UgY2FuJ3QgYmUgc3VyZSB0aGF0IGd1ZXN0IHdpbGwgdW5kZXJzdGFuZAo+ICsgICAgICog QVJNX1NNQ0NDX0VSUl9VTktOT1dOX0ZVTkNUSU9OLgo+ICsgICAgICovCj4gKyAgICBpZiAoIHZz bWNjY19oYW5kbGVfY2FsbChyZWdzKSApCj4gKyAgICAgICAgYWR2YW5jZV9wYyhyZWdzLCBoc3Ip Owo+ICsgICAgZWxzZQo+ICsgICAgICAgIGluamVjdF91bmRlZl9leGNlcHRpb24ocmVncywgaHNy KTsKPiArfQo+ICsKPiArLyoKPiArICogTG9jYWwgdmFyaWFibGVzOgo+ICsgKiBtb2RlOiBDCj4g KyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKPiArICogYy1iYXNpYy1vZmZzZXQ6IDQKPiArICogaW5k ZW50LXRhYnMtbW9kZTogbmlsCj4gKyAqIEVuZDoKPiArICovCj4gZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL2FzbS1hcm0vdHJhcHMuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vdHJhcHMuaAo+IGlu ZGV4IDc1MDhhZjguLjMyNWMxNWYgMTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS90 cmFwcy5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS90cmFwcy5oCj4gQEAgLTM1LDYgKzM1 LDkgQEAgdm9pZCBkb19jcDE0XzY0KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLCBjb25zdCB1 bmlvbiBoc3IgaHNyKTsKPiAgdm9pZCBkb19jcDE0X2RiZyhzdHJ1Y3QgY3B1X3VzZXJfcmVncyAq cmVncywgY29uc3QgdW5pb24gaHNyIGhzcik7Cj4gIHZvaWQgZG9fY3Aoc3RydWN0IGNwdV91c2Vy X3JlZ3MgKnJlZ3MsIGNvbnN0IHVuaW9uIGhzciBoc3IpOwo+ICAKPiArLyogU01DQ0MgaGFuZGxp bmcgKi8KPiArdm9pZCBkb190cmFwX3NtYyhzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywgY29u c3QgdW5pb24gaHNyIGhzcik7Cj4gKwo+ICAjZW5kaWYgLyogX19BU01fQVJNX1RSQVBTX18gKi8K PiAgLyoKPiAgICogTG9jYWwgdmFyaWFibGVzOgo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9w dWJsaWMvYXJjaC1hcm0vc21jY2MuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS9zbWNj Yy5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi4yYmVlNWIzCj4gLS0t IC9kZXYvbnVsbAo+ICsrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS9zbWNjYy5oCj4g QEAgLTAsMCArMSw1OCBAQAo+ICsvKgo+ICsgKiBzbWNjYy5oCj4gKyAqCj4gKyAqIFNNQy9IVkMg aW50ZXJmYWNlIGluIGFjY29yZGFuY2Ugd2l0aCBTTUMgQ2FsbGluZyBDb252ZW50aW9uLgo+ICsg Kgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g YW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Cj4gKyAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bwo+ICsgKiBk ZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91 dCBsaW1pdGF0aW9uIHRoZQo+ICsgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl LCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKPiArICogc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29m dHdhcmUgaXMKPiArICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dp bmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k IHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KPiArICogYWxsIGNv cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCj4gKyAqCj4gKyAq IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO WSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBT SEFMTCBUSEUKPiArICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9S IEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g QU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBG Uk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNF IE9SIE9USEVSCj4gKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPiArICoKPiArICogQ29w eXJpZ2h0IDIwMTcgKEMpIEVQQU0gU3lzdGVtcwo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19YRU5f UFVCTElDX0FSQ0hfQVJNX1NNQ0NDX0hfXwo+ICsjZGVmaW5lIF9fWEVOX1BVQkxJQ19BUkNIX0FS TV9TTUNDQ19IX18KPiArCj4gKyNpbmNsdWRlICJwdWJsaWMveGVuLmgiCj4gKwo+ICsvKgo+ICsg KiBIeXBlcnZpc29yIFNlcnZpY2UgdmVyc2lvbi4KPiArICoKPiArICogV2UgY2FuJ3QgdXNlIFhF TiB2ZXJzaW9uIGhlcmUsIGJlY2F1c2Ugb2YgU01DQ0MgcmVxdWlyZW1lbnRzOgo+ICsgKiBNYWpv ciByZXZpc2lvbiBzaG91bGQgY2hhbmdlIGV2ZXJ5IHRpbWUgU01DL0hWQyBmdW5jdGlvbiBpcyBy ZW1vdmVkLgo+ICsgKiBNaW5vciByZXZpc2lvbiBzaG91bGQgY2hhbmdlIGV2ZXJ5IHRpbWUgU01D L0hWQyBmdW5jdGlvbiBpcyBhZGRlZC4KPiArICogU28sIGl0IGlzIFNNQ0NDIHByb3RvY29sIHJl dmlzaW9uIGNvZGUsIG5vdCBYRU4gdmVyc2lvbi4KPiArICoKPiArICogVGhvc2UgdmFsdWVzIGFy ZSBzdWJqZWN0ZWQgdG8gY2hhbmdlLCB3aGVuIGludGVyZmFjZSB3aWxsIGJlIGV4dGVuZGVkLgo+ ICsgKi8KPiArI2RlZmluZSBYRU5fU01DQ0NfTUFKT1JfUkVWSVNJT04gMAo+ICsjZGVmaW5lIFhF Tl9TTUNDQ19NSU5PUl9SRVZJU0lPTiAxCj4gKwo+ICsvKiBIeXBlcnZpc29yIFNlcnZpY2UgVUlE LiBSYW5kb21seSBnZW5lcmF0ZWQgd2l0aCB1dWlkZ2VuLiAqLwo+ICsjZGVmaW5lIFhFTl9TTUND Q19VSUQgWEVOX0RFRklORV9VVUlEKDB4YTcxODEyZGMsIDB4YzY5OCwgMHg0MzY5LCAweDlhY2Ys IFwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc5LCAweGQxLCAw eDhkLCAweGRlLCAweGU2LCAweDY3KQo+ICsKPiArI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19BUkNI X0FSTV9TTUNDQ19IX18gKi8KPiArCj4gKy8qCj4gKyAqIExvY2FsIHZhcmlhYmxlczoKPiArICog bW9kZTogQwo+ICsgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCj4gKyAqIGMtYmFzaWMtb2Zmc2V0OiA0 Cj4gKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAo+ICsgKiBFbmQ6Ygo+ICsgKi8KPiAtLSAKPiAy LjcuNAo+IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4gWGVuLWRldmVsIG1haWxpbmcgbGlzdAo+IFhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCj4g aHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo+IAoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==