From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH 4/7] arm: smccc: handle SMCs according to SMCCC Date: Wed, 9 Aug 2017 11:10:12 +0100 Message-ID: <5ba4d55c-a7f1-4a1e-42d6-e962015e6e4d@arm.com> References: <1502222922-25821-1-git-send-email-volodymyr_babchuk@epam.com> <1502222922-25821-5-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: <1502222922-25821-5-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 , xen-devel@lists.xen.org Cc: "Edgar E . Iglesias" , Stefano Stabellini , Wei Liu , George Dunlap , Tim Deegan , Ian Jackson , Jan Beulich , Andrew Cooper List-Id: xen-devel@lists.xenproject.org SGkgVm9sb2R5bXlyLAoKQ0MgIlRIRSBSRVNUIiBtYWludGFpbmVycyB0byBnZXQgYW4gb3Bpbmlv biBvbiB0aGUgcHVibGljIGhlYWRlcnMuCgpPbiAwOC8wOC8xNyAyMTowOCwgVm9sb2R5bXlyIEJh YmNodWsgd3JvdGU6Cj4gU01DQ0MgKFNNQyBDYWxsIENvbnZlbnRpb24pIGRlc2NyaWJlcyBob3cg dG8gaGFuZGxlIGJvdGggSFZDcyBhbmQgU01Dcy4KPiBTTUNDQyBzdGF0ZXMgdGhhdCBib3RoIEhW QyBhbmQgU01DIGFyZSB2YWxpZCBjb25kdWl0cyB0byBjYWxsIHRvIGEgZGlmZmVyZW50Cj4gZmly bXdhcmUgZnVuY3Rpb25zLiBUaHVzLCBmb3IgZXhhbXBsZSBQU0NJIGNhbGxzIGNhbiBiZSBtYWRl IGJvdGggYnkKPiBTTUMgb3IgSFZDLiBBbHNvIFNNQ0NDIGRlZmluZXMgZnVuY3Rpb24gbnVtYmVy IGNvZGluZyBmb3Igc3VjaCBjYWxscy4KPiBCZXNpZGVzIGZ1bmN0aW9uYWwgY2FsbHMgdGhlcmUg YXJlIHF1ZXJ5IGNhbGxzLCB3aGljaCBhbGxvd3MgdW5kZXJsaW5nCj4gT1MgZGV0ZXJtaW5lIHZl cnNpb24sIFVJRCBhbmQgbnVtYmVyIG9mIGZ1bmN0aW9ucyBwcm92aWRlZCBieSBzZXJ2aWNlCj4g cHJvdmlkZXIuCj4KPiBUaGlzIHBhdGNoIGFkZHMgbmV3IGZpbGUgYHZzbWMuY2AsIHdoaWNoIGhh bmRsZXMgYm90aCBnZW5lcmljIFNNQ3MKPiBhbmQgSFZDIGFjY29yZGluZyB0byBTTUMuIEF0IHRo aXMgbW9tZW50IGl0IGltcGxlbWVudHMgb25seSBvbmUKPiBzZXJ2aWNlOiBTdGFuZGFyZCBIeXBl cnZpc29yIFNlcnZpY2UuCj4KPiBTdGFuZGFyZCBIeXBlcnZpc29yIFNlcnZpY2Ugb25seSBzdXBw b3J0cyBxdWVyeSBjYWxscywgc28gY2FsbGVyIGNhbgo+IGFzayBhYm91dCBoeXBlcnZpc29yIFVJ RCBhbmQgZGV0ZXJtaW5lIHRoYXQgaXQgaXMgWEVOIHJ1bm5pbmcuCj4KPiBUaGlzIGNoYW5nZSBh bGxvd3MgbW9yZSBnZW5lcmljIGhhbmRsaW5nIGZvciBTTUNzIGFuZCBIVkNzIGFuZCBpdCBjYW4K PiBiZSBlYXNpbHkgZXh0ZW5kZWQgdG8gc3VwcG9ydCBuZXcgc2VydmljZXMgYW5kIGZ1bmN0aW9u cy4KPgo+IEJ1dCwgYmVmb3JlIFNNQyBpcyBmb3J3YXJkZWQgdG8gc3RhbmRhcmQgU01DQ0MgaGFu ZGxlciwgaXQgY2FuIGJlIHJvdXRlZAo+IHRvIGEgZG9tYWluIG1vbml0b3IsIGlmIG9uZSBpcyBp bnN0YWxsZWQuCj4KPiBTaWduZWQtb2ZmLWJ5OiBWb2xvZHlteXIgQmFiY2h1ayA8dm9sb2R5bXly X2JhYmNodWtAZXBhbS5jb20+Cj4gUmV2aWV3ZWQtYnk6IE9sZWtzYW5kciBBbmRydXNoY2hlbmtv IDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KPiBSZXZpZXdlZC1ieTogT2xla3Nh bmRyIFR5c2hjaGVua28gPG9sZWtzYW5kcl90eXNoY2hlbmtvQGVwYW0uY29tPgo+IC0tLQo+ICAt IFVwZGF0ZWQgZGVzY3JpcHRpb24gdG8gaW5kaWNhdGUgdGhhdCB0aGlzIHBhdGNoIGFmZmVjdHMg b25seSBTTUMgY2FsbCBwYXRoLgo+ICAtIGFkZGVkICJ4ZW5fIiBwcmVmaXggdG8gZGVmaW5pdGlv bnMgaW4gaW5jbHVkZS9wdWJsaWMvYXJjaC1hcm0vc21jLmgKPiAgLSBtb3ZlZCBkb190cmFwX3Nt YygpIGludG8gdnNtYy5jIGZyb20gdHJhcHMuYwo+ICAtIHJlcGxhY2VkIGFsbCB0YWJzIHdpdGgg c3BhY2VzCgpJIHdvdWxkIGhhdmUgcmVhbGx5IGFwcHJlY2lhdGVkIGEgc3VtbWFyeSBvZiB0aGUg ZGlzY3Vzc2lvbiB3ZSBoYWQgb24gCnRoZSBwcmV2aW91cyB2ZXJzaW9uIHJlZ2FyZGluZyB0aGUg YmluZGluZ3MuIFRoaXMgaXMgYSByZWFsIGJsb2NrZXIgZm9yIAp0aGlzIHNlcmllcyBhbmQgc2hv dWxkIG5vdCBiZSBpZ25vcmVkLgoKPgo+IC0tLQo+ICB4ZW4vYXJjaC9hcm0vTWFrZWZpbGUgICAg ICAgICAgICAgfCAgIDEgKwo+ICB4ZW4vYXJjaC9hcm0vdHJhcHMuYyAgICAgICAgICAgICAgfCAg MTkgKy0tLS0tCj4gIHhlbi9hcmNoL2FybS92c21jLmMgICAgICAgICAgICAgICB8IDEzOSArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICB4ZW4vaW5jbHVkZS9hc20tYXJt L3ZzbWMuaCAgICAgICAgfCAgOTQgKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgeGVuL2lu Y2x1ZGUvcHVibGljL2FyY2gtYXJtL3NtYy5oIHwgIDY4ICsrKysrKysrKysrKysrKysrKysKPiAg NSBmaWxlcyBjaGFuZ2VkLCAzMDMgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC9hcm0vdnNtYy5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCB4ZW4vaW5jbHVkZS9hc20tYXJtL3ZzbWMuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2lu Y2x1ZGUvcHVibGljL2FyY2gtYXJtL3NtYy5oCj4KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJt L01ha2VmaWxlIGIveGVuL2FyY2gvYXJtL01ha2VmaWxlCj4gaW5kZXggNDllMWZiMi4uNGVmZDAx YyAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKPiArKysgYi94ZW4vYXJjaC9h cm0vTWFrZWZpbGUKPiBAQCAtNTAsNiArNTAsNyBAQCBvYmotJChDT05GSUdfSEFTX0dJQ1YzKSAr PSB2Z2ljLXYzLm8KPiAgb2JqLSQoQ09ORklHX0hBU19JVFMpICs9IHZnaWMtdjMtaXRzLm8KPiAg b2JqLXkgKz0gdm1fZXZlbnQubwo+ICBvYmoteSArPSB2dGltZXIubwo+ICtvYmoteSArPSB2c21j Lm8KPiAgb2JqLXkgKz0gdnBzY2kubwo+ICBvYmoteSArPSB2dWFydC5vCj4KPiBkaWZmIC0tZ2l0 IGEveGVuL2FyY2gvYXJtL3RyYXBzLmMgYi94ZW4vYXJjaC9hcm0vdHJhcHMuYwo+IGluZGV4IGUx NGU3YzAuLmIxMTlkYzAgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL3RyYXBzLmMKPiArKysg Yi94ZW4vYXJjaC9hcm0vdHJhcHMuYwo+IEBAIC00Myw3ICs0Myw3IEBACj4gICNpbmNsdWRlIDxh c20vbW1pby5oPgo+ICAjaW5jbHVkZSA8YXNtL2NwdWZlYXR1cmUuaD4KPiAgI2luY2x1ZGUgPGFz bS9mbHVzaHRsYi5oPgo+IC0jaW5jbHVkZSA8YXNtL21vbml0b3IuaD4KPiArI2luY2x1ZGUgPGFz bS92c21jLmg+Cj4KPiAgI2luY2x1ZGUgImRlY29kZS5oIgo+ICAjaW5jbHVkZSAidnRpbWVyLmgi Cj4gQEAgLTI3NjksMjMgKzI3NjksNiBAQCBzdGF0aWMgdm9pZCBkb190cmFwX2RhdGFfYWJvcnRf Z3Vlc3Qoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsCj4gICAgICBpbmplY3RfZGFidF9leGNl cHRpb24ocmVncywgaW5mby5ndmEsIGhzci5sZW4pOwo+ICB9Cj4KPiAtc3RhdGljIHZvaWQgZG9f dHJhcF9zbWMoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsIGNvbnN0IHVuaW9uIGhzciBoc3Ip Cj4gLXsKPiAtICAgIGludCByYyA9IDA7Cj4gLQo+IC0gICAgaWYgKCAhY2hlY2tfY29uZGl0aW9u YWxfaW5zdHIocmVncywgaHNyKSApCj4gLSAgICB7Cj4gLSAgICAgICAgYWR2YW5jZV9wYyhyZWdz LCBoc3IpOwo+IC0gICAgICAgIHJldHVybjsKPiAtICAgIH0KPiAtCj4gLSAgICBpZiAoIGN1cnJl bnQtPmRvbWFpbi0+YXJjaC5tb25pdG9yLnByaXZpbGVnZWRfY2FsbF9lbmFibGVkICkKPiAtICAg ICAgICByYyA9IG1vbml0b3Jfc21jKCk7Cj4gLQo+IC0gICAgaWYgKCByYyAhPSAxICkKPiAtICAg ICAgICBpbmplY3RfdW5kZWZfZXhjZXB0aW9uKHJlZ3MsIGhzcik7Cj4gLX0KPiAtCj4gIHN0YXRp YyB2b2lkIGVudGVyX2h5cGVydmlzb3JfaGVhZChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykK PiAgewo+ICAgICAgaWYgKCBndWVzdF9tb2RlKHJlZ3MpICkKPiBkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gvYXJtL3ZzbWMuYyBiL3hlbi9hcmNoL2FybS92c21jLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDAwMDAwMDAuLjVlZjYxNjcKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIveGVuL2Fy Y2gvYXJtL3ZzbWMuYwo+IEBAIC0wLDAgKzEsMTM5IEBACj4gKy8qCj4gKyAqIHhlbi9hcmNoL2Fy bS92c21jLmMKPiArICoKPiArICogR2VuZXJpYyBoYW5kbGVyIGZvciBTTUMgYW5kIEhWQyBjYWxs cyBhY2NvcmRpbmcgdG8KPiArICogQVJNIFNNQyBjYWxsaW5nIGNvbnZlbnRpb24KPiArICoKPiAr ICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKPiArICogcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24uCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsg KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCj4gKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu Cj4gKyAqLwo+ICsKPiArCj4gKyNpbmNsdWRlIDx4ZW4vbGliLmg+Cj4gKyNpbmNsdWRlIDx4ZW4v dHlwZXMuaD4KPiArI2luY2x1ZGUgPHB1YmxpYy9hcmNoLWFybS9zbWMuaD4KPiArI2luY2x1ZGUg PGFzbS9tb25pdG9yLmg+Cj4gKyNpbmNsdWRlIDxhc20vdnNtYy5oPgo+ICsjaW5jbHVkZSA8YXNt L3JlZ3MuaD4KCjxhc20vcmVncy5oPiBzaG91bGQgYmUgYmVmb3JlIDxhc20vdnNtYy5oPiB0byBr ZWVwIHRoZSBoZWFkZXJzIG9yZGVyZWQgCmFscGhhYmV0aWNhbGx5LgoKPiArCj4gKy8qIE51bWJl ciBvZiBmdW5jdGlvbnMgY3VycmVudGx5IHN1cHBvcnRlZCBieSBIeXBlcnZpc29yIFNlcnZpY2Uu ICovCj4gKyNkZWZpbmUgWEVOX1NNQ0NDX0ZVTkNUSU9OX0NPVU5UIDMKPiArCj4gKy8qIFNNQ0ND IGludGVyZmFjZSBmb3IgaHlwZXJ2aXNvci4gVGVsbCBhYm91dCBpdHNlbGYuICovCj4gK3N0YXRp YyBib29sIGhhbmRsZV9oeXBlcnZpc29yKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQo+ICt7 Cj4gKyAgICBzd2l0Y2ggKCBBUk1fU01DQ0NfRlVOQ19OVU0oZ2V0X3VzZXJfcmVnKHJlZ3MsIDAp KSApCj4gKyAgICB7Cj4gKyAgICBjYXNlIEFSTV9TTUNDQ19GVU5DX0NBTExfQ09VTlQ6Cj4gKyAg ICAgICAgc2V0X3VzZXJfcmVnKHJlZ3MsIDAsIFhFTl9TTUNDQ19GVU5DVElPTl9DT1VOVCk7Cj4g KyAgICAgICAgcmV0dXJuIHRydWU7Cj4gKyAgICBjYXNlIEFSTV9TTUNDQ19GVU5DX0NBTExfVUlE Ogo+ICsgICAgICAgIHNldF91c2VyX3JlZyhyZWdzLCAwLCBYRU5fU01DQ0NfVUlELmFbMF0pOwo+ ICsgICAgICAgIHNldF91c2VyX3JlZyhyZWdzLCAxLCBYRU5fU01DQ0NfVUlELmFbMV0pOwo+ICsg ICAgICAgIHNldF91c2VyX3JlZyhyZWdzLCAyLCBYRU5fU01DQ0NfVUlELmFbMl0pOwo+ICsgICAg ICAgIHNldF91c2VyX3JlZyhyZWdzLCAzLCBYRU5fU01DQ0NfVUlELmFbM10pOwo+ICsgICAgICAg IHJldHVybiB0cnVlOwo+ICsgICAgY2FzZSBBUk1fU01DQ0NfRlVOQ19DQUxMX1JFVklTSU9OOgo+ ICsgICAgICAgIHNldF91c2VyX3JlZyhyZWdzLCAwLCBYRU5fU01DQ0NfTUFKT1JfUkVWSVNJT04p Owo+ICsgICAgICAgIHNldF91c2VyX3JlZyhyZWdzLCAxLCBYRU5fU01DQ0NfTUlOT1JfUkVWSVNJ T04pOwo+ICsgICAgICAgIHJldHVybiB0cnVlOwo+ICsgICAgfQo+ICsgICAgcmV0dXJuIGZhbHNl Owo+ICt9Cj4gKwo+ICsvKgo+ICsgKiB2c21jX2hhbmRsZV9jYWxsKCkgLSBoYW5kbGUgU01DL0hW QyBjYWxsIGFjY29yZGluZyB0byBBUk0gU01DQ0MuCj4gKyAqIHJldHVybnMgdHJ1ZSBpZiB0aGF0 IHdhcyB2YWxpZCBTTUNDQyBjYWxsIChldmVuIGlmIGZ1bmN0aW9uIG51bWJlcgo+ICsgKiB3YXMg dW5rb3duKS4KPiArICovCj4gK3N0YXRpYyBib29sIHZzbWNfaGFuZGxlX2NhbGwoc3RydWN0IGNw dV91c2VyX3JlZ3MgKnJlZ3MpCgpTb21ldGhpbmcgaXMgd3JvbmcgaGVyZS4gVGhlIGNvbW1lbnQg c2F5cyAiSGFuZGxlIFNNQy9IVkMiIGJ1dCB0aGUgbmFtZSAKb2YgdGhlIGZ1bmN0aW9uIGlzICJ2 c21jIi4KCj4gK3sKPiArICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwo+ICsgICAgY29uc3QgdW5p b24gaHNyIGhzciA9IHsgLmJpdHMgPSByZWdzLT5oc3IgfTsKPiArCj4gKyAgICAvKgo+ICsgICAg ICogQ2hlY2sgaW1tZWRpYXRlIHZhbHVlIGZvciBIVkMzMiwgSFZDNjQgYW5kIFNNQzY0Lgo+ICsg ICAgICogSXQgaXMgbm90IHNvIGVhc3kgdG8gY2hlY2sgaW1tZWRpYXRlIHZhbHVlIGZvciBTTUMz MiwKPiArICAgICAqIGJlY2F1c2UgaXQgaXMgbm90IHN0b3JlZCBpbiBIU1IuSVNTIGZpZWxkLiBU byBnZXQgaW1tZWRpYXRlCj4gKyAgICAgKiB2YWx1ZSB3ZSBuZWVkIHRvIGRpc3Nhc2VtYmxlIGlu c3RydWN0aW9uIGF0IGN1cnJlbnQgcGMsIHdoaWNoCgpzL2Rpc3Nhc2VtYmxlL2Rpc2Fzc2VtYmxl LwoKPiArICAgICAqIGlzIGV4cGVuc2l2ZS4gU28gd2Ugd2lsbCBhc3N1bWUgdGhhdCBpdCBpcyAw eDAuCj4gKyAgICAgKi8KPiArICAgIHN3aXRjaCAoIGhzci5lYyApCj4gKyAgICB7Cj4gKyAgICBj YXNlIEhTUl9FQ19IVkMzMjoKPiArICAgIGNhc2UgSFNSX0VDX0hWQzY0Ogo+ICsgICAgY2FzZSBI U1JfRUNfU01DNjQ6Cj4gKyAgICAgICAgaWYgKCAoaHNyLmlzcyAmIDB4RkYpICE9IDApCgpUaGUg aW1tZWRpYXRlIGlzIDE2IGJpdHMuIFNvIGl0IHNob3VsZCBiZSAweEZGRkYuIEl0IHdvdWxkIGFs c28gYmUgbmljZSAKdG8gaGF2ZSBhIGNvbW1lbnQgZXhwbGFpbmluZyBpdCBhbmQgcHJvYmFibHkg YSBkZWZpbmUuCgo+ICsgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4gKyAgICAgICAgYnJlYWs7 Cj4gKyAgICBjYXNlIEhTUl9FQ19TTUMzMjoKPiArICAgICAgICBicmVhazsKPiArICAgIGRlZmF1 bHQ6Cj4gKyAgICAgICAgcmV0dXJuIGZhbHNlOwo+ICsgICAgfQo+ICsKPiArICAgIC8qIDY0IGJp dCBjYWxscyBhcmUgYWxsb3dlZCBvbmx5IGZyb20gNjQgYml0IGRvbWFpbnMgKi8KCk1pc3Npbmcg ZnVsbCBzdG9wLgoKPiArICAgIGlmICggQVJNX1NNQ0NDX0lTXzY0KGdldF91c2VyX3JlZyhyZWdz LCAwKSkgJiYKPiArICAgICAgICAgaXNfMzJiaXRfZG9tYWluKGN1cnJlbnQtPmRvbWFpbikgKQo+ ICsgICAgewo+ICsgICAgICAgIHNldF91c2VyX3JlZyhyZWdzLCAwLCBBUk1fU01DQ0NfRVJSX1VO S05PV05fRlVOQ1RJT04pOwo+ICsgICAgICAgIHJldHVybiB0cnVlOwo+ICsgICAgfQo+ICsKPiAr ICAgIHN3aXRjaCAoIEFSTV9TTUNDQ19PV05FUl9OVU0oZ2V0X3VzZXJfcmVnKHJlZ3MsIDApKSAp Cj4gKyAgICB7Cj4gKyAgICBjYXNlIEFSTV9TTUNDQ19PV05FUl9IWVBFUlZJU09SOgo+ICsgICAg ICAgIGhhbmRsZWQgPSBoYW5kbGVfaHlwZXJ2aXNvcihyZWdzKTsKPiArICAgICAgICBicmVhazsK PiArICAgIH0KPiArCj4gKyAgICBpZiAoICFoYW5kbGVkICkKPiArICAgIHsKPiArICAgICAgICBn cHJpbnRrKFhFTkxPR19JTkZPLCAiVW5oYW5kbGVkIFNNQy9IVkM6ICUwOCJQUklyZWdpc3RlciJc biIsCj4gKyAgICAgICAgICAgICAgICBnZXRfdXNlcl9yZWcocmVncywgMCkpOwo+ICsgICAgICAg IC8qIEluZm9ybSBjYWxsZXIgdGhhdCBmdW5jdGlvbiBpcyBub3Qgc3VwcG9ydGVkICovCj4gKyAg ICAgICAgc2V0X3VzZXJfcmVnKHJlZ3MsIDAsIEFSTV9TTUNDQ19FUlJfVU5LTk9XTl9GVU5DVElP Tik7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIHRydWU7Cj4gK30KPiArCj4gKy8qIFRoaXMg ZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgZnJvbSB0cmFwcy5jICovCj4gK3ZvaWQgZG9fdHJhcF9z bWMoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsIGNvbnN0IHVuaW9uIGhzciBoc3IpCj4gK3sK PiArICAgIGludCByYyA9IDA7Cj4gKwo+ICsgICAgaWYgKCAhY2hlY2tfY29uZGl0aW9uYWxfaW5z dHIocmVncywgaHNyKSApCj4gKyAgICB7Cj4gKyAgICAgICAgYWR2YW5jZV9wYyhyZWdzLCBoc3Ip Owo+ICsgICAgICAgIHJldHVybjsKPiArICAgIH0KPiArCj4gKyAgICAvKiBJZiBtb25pdG9yIGlz IGVuYWJsZWQsIGxldCBpdCBoYW5kbGUgdGhlIGNhbGwgKi8KPiArICAgIGlmICggY3VycmVudC0+ ZG9tYWluLT5hcmNoLm1vbml0b3IucHJpdmlsZWdlZF9jYWxsX2VuYWJsZWQgKQo+ICsgICAgICAg IHJjID0gbW9uaXRvcl9zbWMoKTsKPiArCj4gKyAgICBpZiAoIHJjID09IDEgKQo+ICsgICAgICAg IHJldHVybjsKPiArCj4gKyAgICAvKiBVc2Ugc3RhbmRhcmQgcm91dGluZXMgdG8gaGFuZGxlIHRo ZSBjYWxsICovCj4gKyAgICBpZiAoIHZzbWNfaGFuZGxlX2NhbGwocmVncykgKQo+ICsgICAgICAg IGFkdmFuY2VfcGMocmVncywgaHNyKTsKPiArICAgIGVsc2UKPiArICAgICAgICBpbmplY3RfdW5k ZWZfZXhjZXB0aW9uKHJlZ3MsIGhzcik7Cj4gK30KPiArCj4gKy8qCj4gKyAqIExvY2FsIHZhcmlh YmxlczoKPiArICogbW9kZTogQwo+ICsgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCj4gKyAqIGMtYmFz aWMtb2Zmc2V0OiA0Cj4gKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAo+ICsgKiBFbmQ6Cj4gKyAq Lwo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL3ZzbWMuaCBiL3hlbi9pbmNsdWRl L2FzbS1hcm0vdnNtYy5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi43 YmFhYmVmCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vdnNtYy5o Cj4gQEAgLTAsMCArMSw5NCBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTcsIEVQQU0g U3lzdGVtcwo+ICsgKgo+ICsgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgdmVyc2lvbiAyLCBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgYW5kCj4gKyAqIG1h eSBiZSBjb3BpZWQsIGRpc3RyaWJ1dGVkLCBhbmQgbW9kaWZpZWQgdW5kZXIgdGhvc2UgdGVybXMu Cj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCj4gKyAqIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqLwo+ICsjaWZu ZGVmIF9fQVNNX0FSTV9WU01DX0hfXwo+ICsjZGVmaW5lIF9fQVNNX0FSTV9WU01DX0hfXwo+ICsK PiArI2luY2x1ZGUgPHhlbi90eXBlcy5oPgo+ICsKPiArLyoKPiArICogVGhpcyBmaWxlIHByb3Zp ZGVzIGNvbW1vbiBkZWZpbmVzIGZvciBBUk0gU01DIENhbGxpbmcgQ29udmVudGlvbiBhcwo+ICsg KiBzcGVjaWZpZWQgaW4KPiArICogaHR0cDovL2luZm9jZW50ZXIuYXJtLmNvbS9oZWxwL3RvcGlj L2NvbS5hcm0uZG9jLmRlbjAwMjhhL2luZGV4Lmh0bWwKPiArICovCj4gKwo+ICsjZGVmaW5lIEFS TV9TTUNDQ19TVERfQ0FMTCAgICAgICAgICAgICAgMFUKPiArI2RlZmluZSBBUk1fU01DQ0NfRkFT VF9DQUxMICAgICAgICAgICAgIDFVCj4gKyNkZWZpbmUgQVJNX1NNQ0NDX1RZUEVfU0hJRlQgICAg ICAgICAgICAzMQo+ICsKPiArI2RlZmluZSBBUk1fU01DQ0NfU01DXzMyICAgICAgICAgICAgICAg IDBVCj4gKyNkZWZpbmUgQVJNX1NNQ0NDX1NNQ182NCAgICAgICAgICAgICAgICAxVQo+ICsjZGVm aW5lIEFSTV9TTUNDQ19DQUxMX0NPTlZfU0hJRlQgICAgICAgMzAKPiArCj4gKyNkZWZpbmUgQVJN X1NNQ0NDX09XTkVSX01BU0sgICAgICAgICAgICAweDNGCj4gKyNkZWZpbmUgQVJNX1NNQ0NDX09X TkVSX1NISUZUICAgICAgICAgICAyNAo+ICsKPiArI2RlZmluZSBBUk1fU01DQ0NfRlVOQ19NQVNL ICAgICAgICAgICAgIDB4RkZGRgo+ICsKPiArLyogQ2hlY2sgaWYgdGhpcyBpcyBmYXN0IGNhbGwg Ki8KPiArI2RlZmluZSBBUk1fU01DQ0NfSVNfRkFTVF9DQUxMKHNtY192YWwpIFwKPiArICAgICgo c21jX3ZhbCkgJiAoQVJNX1NNQ0NDX0ZBU1RfQ0FMTCA8PCBBUk1fU01DQ0NfVFlQRV9TSElGVCkp Cj4gKwo+ICsvKiBDaGVjayBpZiB0aGlzIGlzIDY0IGJpdCBjYWxsICAqLwo+ICsjZGVmaW5lIEFS TV9TTUNDQ19JU182NChzbWNfdmFsKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCj4gKyAgICAoKHNtY192YWwpICYgKEFSTV9TTUNDQ19TTUNfNjQgPDwgQVJNX1NNQ0ND X0NBTExfQ09OVl9TSElGVCkpCj4gKwo+ICsvKiBHZXQgZnVuY3Rpb24gbnVtYmVyIGZyb20gZnVu Y3Rpb24gaWRlbnRpZmllciAqLwo+ICsjZGVmaW5lIEFSTV9TTUNDQ19GVU5DX05VTShzbWNfdmFs KSAgICAgKChzbWNfdmFsKSAmIEFSTV9TTUNDQ19GVU5DX01BU0spCj4gKwo+ICsvKiBHZXQgc2Vy dmljZSBvd25lciBudW1iZXIgZnJvbSBmdW5jdGlvbiBpZGVudGlmaWVyICovCj4gKyNkZWZpbmUg QVJNX1NNQ0NDX09XTkVSX05VTShzbWNfdmFsKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKPiArICAgICgoKHNtY192YWwpID4+IEFSTV9TTUNDQ19PV05FUl9TSElGVCkgJiBB Uk1fU01DQ0NfT1dORVJfTUFTSykKPiArCj4gKy8qCj4gKyAqIENvbnN0cnVjdCBmdW5jdGlvbiBp ZGVudGlmaWVyIGZyb20gY2FsbCB0eXBlIChmYXN0IG9yIHN0YW5kYXJkKSwKPiArICogY2FsbGlu ZyBjb252ZW50aW9uICgzMiBvciA2NCBiaXQpLCBzZXJ2aWNlIG93bmVyIGFuZCBmdW5jdGlvbiBu dW1iZXIKPiArICovCj4gKyNkZWZpbmUgQVJNX1NNQ0NDX0NBTExfVkFMKHR5cGUsIGNhbGxpbmdf Y29udmVudGlvbiwgb3duZXIsIGZ1bmNfbnVtKSAgIFwKPiArICAgICgoKHR5cGUpIDw8IEFSTV9T TUNDQ19UWVBFX1NISUZUKSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsg ICAgICAgICAoKGNhbGxpbmdfY29udmVudGlvbikgPDwgQVJNX1NNQ0NDX0NBTExfQ09OVl9TSElG VCkgfCAgICAgICAgICBcCj4gKyAgICAgICAgICgoKG93bmVyKSAmIEFSTV9TTUNDQ19PV05FUl9N QVNLKSA8PCBBUk1fU01DQ0NfT1dORVJfU0hJRlQpIHwgIFwKPiArICAgICAgICAgKChmdW5jX251 bSkgJiBBUk1fU01DQ0NfRlVOQ19NQVNLKSkKPiArCj4gKy8qIExpc3Qgb2Yga25vd24gc2Vydmlj ZSBvd25lcnMgKi8KPiArI2RlZmluZSBBUk1fU01DQ0NfT1dORVJfQVJDSCAgICAgICAgICAgIDAK PiArI2RlZmluZSBBUk1fU01DQ0NfT1dORVJfQ1BVICAgICAgICAgICAgIDEKPiArI2RlZmluZSBB Uk1fU01DQ0NfT1dORVJfU0lQICAgICAgICAgICAgIDIKPiArI2RlZmluZSBBUk1fU01DQ0NfT1dO RVJfT0VNICAgICAgICAgICAgIDMKPiArI2RlZmluZSBBUk1fU01DQ0NfT1dORVJfU1RBTkRBUkQg ICAgICAgIDQKPiArI2RlZmluZSBBUk1fU01DQ0NfT1dORVJfSFlQRVJWSVNPUiAgICAgIDUKPiAr I2RlZmluZSBBUk1fU01DQ0NfT1dORVJfVFJVU1RFRF9BUFAgICAgIDQ4Cj4gKyNkZWZpbmUgQVJN X1NNQ0NDX09XTkVSX1RSVVNURURfQVBQX0VORCA0OQo+ICsjZGVmaW5lIEFSTV9TTUNDQ19PV05F Ul9UUlVTVEVEX09TICAgICAgNTAKPiArI2RlZmluZSBBUk1fU01DQ0NfT1dORVJfVFJVU1RFRF9P U19FTkQgIDYzCj4gKwo+ICsvKiBMaXN0IG9mIGdlbmVyaWMgZnVuY3Rpb24gbnVtYmVycyAqLwo+ ICsjZGVmaW5lIEFSTV9TTUNDQ19GVU5DX0NBTExfQ09VTlQgICAgICAgMHhGRjAwCj4gKyNkZWZp bmUgQVJNX1NNQ0NDX0ZVTkNfQ0FMTF9VSUQgICAgICAgICAweEZGMDEKPiArI2RlZmluZSBBUk1f U01DQ0NfRlVOQ19DQUxMX1JFVklTSU9OICAgIDB4RkYwMwo+ICsKPiArLyogT25seSBvbmUgZXJy b3IgY29kZSBkZWZpbmVkIGluIFNNQ0NDICovCj4gKyNkZWZpbmUgQVJNX1NNQ0NDX0VSUl9VTktO T1dOX0ZVTkNUSU9OICAoLTEpCj4gKwo+ICt2b2lkIGRvX3RyYXBfc21jKHN0cnVjdCBjcHVfdXNl cl9yZWdzICpyZWdzLCBjb25zdCB1bmlvbiBoc3IgaHNyKTsKPiArCj4gKyNlbmRpZiAgLyogX19B U01fQVJNX1ZTTUNfSF9fICovCj4gKwo+ICsvKgo+ICsgKiBMb2NhbCB2YXJpYWJsZXM6Cj4gKyAq IG1vZGU6IEMKPiArICogYy1maWxlLXN0eWxlOiAiQlNEIgo+ICsgKiBjLWJhc2ljLW9mZnNldDog NAo+ICsgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKPiArICogRW5kOmIKPiArICovCj4gZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS9zbWMuaCBiL3hlbi9pbmNsdWRlL3B1 YmxpYy9hcmNoLWFybS9zbWMuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAw MC4uNDJmMzE2NQo+IC0tLSAvZGV2L251bGwKPiArKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvYXJj aC1hcm0vc21jLmgKPiBAQCAtMCwwICsxLDY4IEBACj4gKy8qCj4gKyAqIHNtYy5oCj4gKyAqCj4g KyAqIFNNQy9IVkMgaW50ZXJmYWNlIGluIGFjY29yZGFuY2Ugd2l0aCBTTUMgQ2FsbGluZyBDb252 ZW50aW9uLgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m IGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Cj4gKyAqIG9mIHRoaXMgc29m dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIp LCB0bwo+ICsgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNs dWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQo+ICsgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBt b2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKPiAr ICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8g d2hvbSB0aGUgU29mdHdhcmUgaXMKPiArICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4K PiArICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUu Cj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBC VVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsg KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJ TiBOTyBFVkVOVCBTSEFMTCBUSEUKPiArICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFks IFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJ U0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FS RSBPUiBUSEUgVVNFIE9SIE9USEVSCj4gKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPiAr ICoKPiArICogQ29weXJpZ2h0IDIwMTcgKEMpIEVQQU0gU3lzdGVtcwo+ICsgKi8KPiArCj4gKyNp Zm5kZWYgX19YRU5fUFVCTElDX0FSQ0hfQVJNX1NNQ19IX18KPiArI2RlZmluZSBfX1hFTl9QVUJM SUNfQVJDSF9BUk1fU01DX0hfXwo+ICsKPiArdHlwZWRlZiBzdHJ1Y3Qgewo+ICsgICAgdWludDMy X3QgYVs0XTsKPiArfSB4ZW5fYXJtX3NtY2NjX3VpZDsKPiArCj4gKyNkZWZpbmUgWEVOX0FSTV9T TUNDQ19VSUQoYSwgYiwgYywgZDAsIGQxLCBkMiwgZDMsIGQ0LCBkNSwgZDYsIGQ3KSAgICAgIFwK PiArICAgICgoeGVuX2FybV9zbWNjY191aWQpIHt7KGEpLCAoKGIpIDw8IDE2IHwgKGMpICksICAg ICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICgoZDApIDw8IDI0IHwgKGQxKSA8PCAxNiB8 IChkMikgPDwgOCB8IChkMykgPDwgMCksICAgICAgICAgICAgICBcCj4gKyAgICAgICAgKChkNCkg PDwgMjQgfCAoZDUpIDw8IDE2IHwgKGQ2KSA8PCA4IHwgKGQ3KSA8PCAwKX19KQo+ICsKPiArLyoK PiArICogSHlwZXJ2aXNvciBTZXJ2aWNlIHZlcnNpb24uCj4gKyAqCj4gKyAqIFdlIGNhbid0IHVz ZSBYRU4gdmVyc2lvbiBoZXJlLCBiZWNhdXNlIG9mIFNNQ0NDIHJlcXVpcmVtZW50czoKPiArICog TWFqb3IgcmV2aXNpb24gc2hvdWxkIGNoYW5nZSBldmVyeSB0aW1lIFNNQy9IVkMgZnVuY3Rpb24g aXMgcmVtb3ZlZC4KPiArICogTWlub3IgcmV2aXNpb24gc2hvdWxkIGNoYW5nZSBldmVyeSB0aW1l IFNNQy9IVkMgZnVuY3Rpb24gaXMgYWRkZWQuCj4gKyAqIFNvLCBpdCBpcyBTTUNDQyBwcm90b2Nv bCByZXZpc2lvbiBjb2RlLCBub3QgWEVOIHZlcnNpb24uCj4gKyAqCj4gKyAqIFRob3NlIHZhbHVl cyBhcmUgc3ViamVjdGVkIHRvIGNoYW5nZSwgd2hlbiBpbnRlcmZhY2Ugd2lsbCBiZSBleHRlbmRl ZC4KPiArICogVGhleSBzaG91bGQgbm90IGJlIHN0b3JlZCBpbiBwdWJsaWMvYXNtLWFybS9zbWMu aCBiZWNhdXNlIHRoZXkgc2hvdWxkCj4gKyAqIGJlIHF1ZXJpZWQgYnkgZ3Vlc3QgdXNpbmcgU01D L0hWQyBpbnRlcmZhY2UuCj4gKyAqLwo+ICsjZGVmaW5lIFhFTl9TTUNDQ19NQUpPUl9SRVZJU0lP TiAwCj4gKyNkZWZpbmUgWEVOX1NNQ0NDX01JTk9SX1JFVklTSU9OIDEKPiArCj4gKy8qIEh5cGVy dmlzb3IgU2VydmljZSBVSUQuIFJhbmRvbWx5IGdlbmVyYXRlZCB3aXRoIDNyZCBwYXJ0eSB0b29s LiAgKi8KPiArI2RlZmluZSBYRU5fU01DQ0NfVUlEIFhFTl9BUk1fU01DQ0NfVUlEKDB4YTcxODEy ZGMsIDB4YzY5OCwgMHg0MzY5LCBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAweDlhLCAweGNmLCAweDc5LCAweGQxLCBcCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweDhkLCAweGRlLCAweGU2LCAweDY3KQo+ICsKPiArI2VuZGlm ICAvKiBfX1hFTl9QVUJMSUNfQVJDSF9BUk1fU01DX0hfXyAqLwo+ICsKPiArLyoKPiArICogTG9j YWwgdmFyaWFibGVzOgo+ICsgKiBtb2RlOiBDCj4gKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKPiAr ICogYy1iYXNpYy1vZmZzZXQ6IDQKPiArICogaW5kZW50LXRhYnMtbW9kZTogbmlsCj4gKyAqIEVu ZDpiCj4gKyAqLwo+CgpDaGVlcnMsCgotLSAKSnVsaWVuIEdyYWxsCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK