From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH v2 22/45] ARM: new VGIC: Add MMIO handling framework Date: Mon, 19 Mar 2018 07:59:30 +0000 Message-ID: References: <20180315203050.19791-1-andre.przywara@linaro.org> <20180315203050.19791-23-andre.przywara@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1expiI-0000lL-KI for xen-devel@lists.xenproject.org; Mon, 19 Mar 2018 08:00:14 +0000 In-Reply-To: <20180315203050.19791-23-andre.przywara@linaro.org> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Andre Przywara , Stefano Stabellini Cc: xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org SGkgQW5kcmUsCgpPbiAwMy8xNS8yMDE4IDA4OjMwIFBNLCBBbmRyZSBQcnp5d2FyYSB3cm90ZToK PiBBZGQgYW4gTU1JTyBoYW5kbGluZyBmcmFtZXdvcmsgdG8gdGhlIFZHSUMgZW11bGF0aW9uOgo+ IEVhY2ggcmVnaXN0ZXIgaXMgZGVzY3JpYmVkIGJ5IGl0cyBvZmZzZXQsIHNpemUgKG9yIG51bWJl ciBvZiBiaXRzIHBlcgo+IElSUSwgaWYgYXBwbGljYWJsZSkgYW5kIHRoZSByZWFkL3dyaXRlIGhh bmRsZXIgZnVuY3Rpb25zLiBXZSBwcm92aWRlCj4gaW5pdGlhbGl6YXRpb24gbWFjcm9zIHRvIGRl c2NyaWJlIGVhY2ggR0lDIHJlZ2lzdGVyIGxhdGVyIGVhc2lseS4KPiAKPiBTZXBhcmF0ZSBkaXNw YXRjaCBmdW5jdGlvbnMgZm9yIHJlYWQgYW5kIHdyaXRlIGFjY2Vzc2VzIGFyZSBjb25uZWN0ZWQK PiB0byBYZW4ncyBNTUlPIGhhbmRsaW5nIGZyYW1ld29yayBhbmQgYmluYXJ5LXNlYXJjaCBmb3Ig dGhlIHJlc3BvbnNpYmxlCj4gcmVnaXN0ZXIgaGFuZGxlciBiYXNlZCBvbiB0aGUgb2Zmc2V0IGFk ZHJlc3Mgd2l0aGluIHRoZSByZWdpb24uCj4gCj4gVGhlIHJlZ2lzdGVyIGhhbmRsZXIgcHJvdG90 eXBlIGFyZSBjb3VydGVzeSBvZiBDaHJpc3RvZmZlciBEYWxsLgo+IAo+IFRoaXMgaXMgYmFzZWQg b24gTGludXggY29tbWl0IDQ0OTNiMWM0ODY2YSwgd3JpdHRlbiBieSBNYXJjIFp5bmdpZXIuCj4g Cj4gU2lnbmVkLW9mZi1ieTogQW5kcmUgUHJ6eXdhcmEgPGFuZHJlLnByenl3YXJhQGxpbmFyby5v cmc+CgpSZXZpZXdlZC1ieTogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KCkNo ZWVycywKCj4gLS0tCj4gQ2hhbmdlbG9nIHYxIC4uLiB2MjoKPiAtIGFkanVzdCBpbmRlbnRhdGlv bgo+IC0gcmVtb3ZlIHVubmVlZGVkIG1hY3Jvcwo+IC0gdXNlIHVuc2lnbmVkIHR5cGVzCj4gLSB1 c2UgbmV3IGlsb2cyKCkgaW1wbGVtZW50YXRpb24KPiAKPiAgIHhlbi9hcmNoL2FybS92Z2ljL3Zn aWMtbW1pby5jIHwgMTgwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Kwo+ICAgeGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy1tbWlvLmggfCAgODkgKysrKysrKysrKysrKysr KysrKysrCj4gICAyIGZpbGVzIGNoYW5nZWQsIDI2OSBpbnNlcnRpb25zKCspCj4gICBjcmVhdGUg bW9kZSAxMDA2NDQgeGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy1tbWlvLmMKPiAgIGNyZWF0ZSBtb2Rl IDEwMDY0NCB4ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLW1taW8uaAo+IAo+IGRpZmYgLS1naXQgYS94 ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLW1taW8uYyBiL3hlbi9hcmNoL2FybS92Z2ljL3ZnaWMtbW1p by5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwLi44NjYwMjNhODRk Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3hlbi9hcmNoL2FybS92Z2ljL3ZnaWMtbW1pby5jCj4g QEAgLTAsMCArMSwxODAgQEAKPiArLyoKPiArICogVkdJQyBNTUlPIGhhbmRsaW5nIGZ1bmN0aW9u cwo+ICsgKiBJbXBvcnRlZCBmcm9tIExpbnV4ICgibmV3IiBLVk0gVkdJQykgYW5kIGhlYXZpbHkg YWRhcHRlZCB0byBYZW4uCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gKyAqIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCj4g KyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+ICsgKgo+ICsg KiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKPiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo+ICsgKiBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDx4ZW4vYml0 b3BzLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vbGliLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4K PiArI2luY2x1ZGUgPGFzbS9uZXdfdmdpYy5oPgo+ICsjaW5jbHVkZSA8YXNtL2J5dGVvcmRlci5o Pgo+ICsKPiArI2luY2x1ZGUgInZnaWMuaCIKPiArI2luY2x1ZGUgInZnaWMtbW1pby5oIgo+ICsK PiArdW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9yYXooc3RydWN0IHZjcHUgKnZjcHUsCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRyX3QgYWRkciwgdW5zaWduZWQg aW50IGxlbikKPiArewo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3Vuc2lnbmVkIGxvbmcg dmdpY19tbWlvX3JlYWRfcmFvKHN0cnVjdCB2Y3B1ICp2Y3B1LAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwYWRkcl90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4pCj4gK3sKPiAr ICAgIHJldHVybiAtMVVMOwo+ICt9Cj4gKwo+ICt2b2lkIHZnaWNfbW1pb193cml0ZV93aShzdHJ1 Y3QgdmNwdSAqdmNwdSwgcGFkZHJfdCBhZGRyLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgbGVuLCB1bnNpZ25lZCBsb25nIHZhbCkKPiArewo+ICsgICAgLyogSWdub3Jl ICovCj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbWF0Y2hfcmVnaW9uKGNvbnN0IHZvaWQgKmtleSwg Y29uc3Qgdm9pZCAqZWx0KQo+ICt7Cj4gKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgb2Zmc2V0ID0g KHVuc2lnbmVkIGxvbmcpa2V5Owo+ICsgICAgY29uc3Qgc3RydWN0IHZnaWNfcmVnaXN0ZXJfcmVn aW9uICpyZWdpb24gPSBlbHQ7Cj4gKwo+ICsgICAgaWYgKCBvZmZzZXQgPCByZWdpb24tPnJlZ19v ZmZzZXQgKQo+ICsgICAgICAgIHJldHVybiAtMTsKPiArCj4gKyAgICBpZiAoIG9mZnNldCA+PSBy ZWdpb24tPnJlZ19vZmZzZXQgKyByZWdpb24tPmxlbiApCj4gKyAgICAgICAgcmV0dXJuIDE7Cj4g Kwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdmdpY19y ZWdpc3Rlcl9yZWdpb24gKgo+ICt2Z2ljX2ZpbmRfbW1pb19yZWdpb24oY29uc3Qgc3RydWN0IHZn aWNfcmVnaXN0ZXJfcmVnaW9uICpyZWdpb25zLAo+ICsgICAgICAgICAgICAgICAgICAgICAgaW50 IG5yX3JlZ2lvbnMsIHVuc2lnbmVkIGludCBvZmZzZXQpCj4gK3sKPiArICAgIHJldHVybiBic2Vh cmNoKCh2b2lkICopKHVpbnRwdHJfdClvZmZzZXQsIHJlZ2lvbnMsIG5yX3JlZ2lvbnMsCj4gKyAg ICAgICAgICAgICAgICAgICBzaXplb2YocmVnaW9uc1swXSksIG1hdGNoX3JlZ2lvbik7Cj4gK30K PiArCj4gK3N0YXRpYyBib29sIGNoZWNrX3JlZ2lvbihjb25zdCBzdHJ1Y3QgZG9tYWluICpkLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHZnaWNfcmVnaXN0ZXJfcmVn aW9uICpyZWdpb24sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkcl90IGFkZHIsIGlu dCBsZW4pCj4gK3sKPiArICAgIHVuc2lnbmVkIGludCBmbGFncywgbnJfaXJxcyA9IGQtPmFyY2gu dmdpYy5ucl9zcGlzICsgVkdJQ19OUl9QUklWQVRFX0lSUVM7Cj4gKwo+ICsgICAgc3dpdGNoICgg bGVuICkKPiArICAgIHsKPiArICAgIGNhc2Ugc2l6ZW9mKHVpbnQ4X3QpOgo+ICsgICAgICAgIGZs YWdzID0gVkdJQ19BQ0NFU1NfOGJpdDsKPiArICAgICAgICBicmVhazsKPiArICAgIGNhc2Ugc2l6 ZW9mKHVpbnQzMl90KToKPiArICAgICAgICBmbGFncyA9IFZHSUNfQUNDRVNTXzMyYml0Owo+ICsg ICAgICAgIGJyZWFrOwo+ICsgICAgY2FzZSBzaXplb2YodWludDY0X3QpOgo+ICsgICAgICAgIGZs YWdzID0gVkdJQ19BQ0NFU1NfNjRiaXQ7Cj4gKyAgICAgICAgYnJlYWs7Cj4gKyAgICBkZWZhdWx0 Ogo+ICsgICAgICAgIHJldHVybiBmYWxzZTsKPiArICAgIH0KPiArCj4gKyAgICBpZiAoIChyZWdp b24tPmFjY2Vzc19mbGFncyAmIGZsYWdzKSAmJiBJU19BTElHTkVEKGFkZHIsIGxlbikgKQo+ICsg ICAgewo+ICsgICAgICAgIGlmICggIXJlZ2lvbi0+Yml0c19wZXJfaXJxICkKPiArICAgICAgICAg ICAgcmV0dXJuIHRydWU7Cj4gKwo+ICsgICAgICAgIC8qIERvIHdlIGFjY2VzcyBhIG5vbi1hbGxv Y2F0ZWQgSVJRPyAqLwo+ICsgICAgICAgIHJldHVybiBWR0lDX0FERFJfVE9fSU5USUQoYWRkciwg cmVnaW9uLT5iaXRzX3Blcl9pcnEpIDwgbnJfaXJxczsKPiArICAgIH0KPiArCj4gKyAgICByZXR1 cm4gZmFsc2U7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdmdpY19yZWdpc3Rlcl9y ZWdpb24gKgo+ICt2Z2ljX2dldF9tbWlvX3JlZ2lvbihzdHJ1Y3QgdmNwdSAqdmNwdSwgc3RydWN0 IHZnaWNfaW9fZGV2aWNlICppb2RldiwKPiArICAgICAgICAgICAgICAgICAgICAgcGFkZHJfdCBh ZGRyLCB1bnNpZ25lZCBpbnQgbGVuKQo+ICt7Cj4gKyAgICBjb25zdCBzdHJ1Y3QgdmdpY19yZWdp c3Rlcl9yZWdpb24gKnJlZ2lvbjsKPiArCj4gKyAgICByZWdpb24gPSB2Z2ljX2ZpbmRfbW1pb19y ZWdpb24oaW9kZXYtPnJlZ2lvbnMsIGlvZGV2LT5ucl9yZWdpb25zLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFkZHIgLSBnZm5fdG9fZ2FkZHIoaW9kZXYtPmJhc2VfZm4p KTsKPiArICAgIGlmICggIXJlZ2lvbiB8fCAhY2hlY2tfcmVnaW9uKHZjcHUtPmRvbWFpbiwgcmVn aW9uLCBhZGRyLCBsZW4pICkKPiArICAgICAgICByZXR1cm4gTlVMTDsKPiArCj4gKyAgICByZXR1 cm4gcmVnaW9uOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGRpc3BhdGNoX21taW9fcmVhZChzdHJ1 Y3QgdmNwdSAqdmNwdSwgbW1pb19pbmZvX3QgKmluZm8sCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlZ2lzdGVyX3QgKnIsIHZvaWQgKnByaXYpCj4gK3sKPiArICAgIHN0cnVjdCB2 Z2ljX2lvX2RldmljZSAqaW9kZXYgPSBwcml2Owo+ICsgICAgY29uc3Qgc3RydWN0IHZnaWNfcmVn aXN0ZXJfcmVnaW9uICpyZWdpb247Cj4gKyAgICB1bnNpZ25lZCBsb25nIGRhdGEgPSAwOwo+ICsg ICAgcGFkZHJfdCBhZGRyID0gaW5mby0+Z3BhOwo+ICsgICAgaW50IGxlbiA9IDFVIDw8IGluZm8t PmRhYnQuc2l6ZTsKPiArCj4gKyAgICByZWdpb24gPSB2Z2ljX2dldF9tbWlvX3JlZ2lvbih2Y3B1 LCBpb2RldiwgYWRkciwgbGVuKTsKPiArICAgIGlmICggIXJlZ2lvbiApCj4gKyAgICB7Cj4gKyAg ICAgICAgbWVtc2V0KHIsIDAsIGxlbik7Cj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKyAgICB9Cj4g Kwo+ICsgICAgc3dpdGNoIChpb2Rldi0+aW9kZXZfdHlwZSkKPiArICAgIHsKPiArICAgIGNhc2Ug SU9ERVZfRElTVDoKPiArICAgICAgICBkYXRhID0gcmVnaW9uLT5yZWFkKHZjcHUsIGFkZHIsIGxl bik7Cj4gKyAgICAgICAgYnJlYWs7Cj4gKyAgICBjYXNlIElPREVWX1JFRElTVDoKPiArICAgICAg ICBkYXRhID0gcmVnaW9uLT5yZWFkKGlvZGV2LT5yZWRpc3RfdmNwdSwgYWRkciwgbGVuKTsKPiAr ICAgICAgICBicmVhazsKPiArICAgIH0KPiArCj4gKyAgICBtZW1jcHkociwgJmRhdGEsIGxlbik7 Cj4gKwo+ICsgICAgcmV0dXJuIDE7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZGlzcGF0Y2hfbW1p b193cml0ZShzdHJ1Y3QgdmNwdSAqdmNwdSwgbW1pb19pbmZvX3QgKmluZm8sCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZWdpc3Rlcl90IHIsIHZvaWQgKnByaXYpCj4gK3sKPiAr ICAgIHN0cnVjdCB2Z2ljX2lvX2RldmljZSAqaW9kZXYgPSBwcml2Owo+ICsgICAgY29uc3Qgc3Ry dWN0IHZnaWNfcmVnaXN0ZXJfcmVnaW9uICpyZWdpb247Cj4gKyAgICB1bnNpZ25lZCBsb25nIGRh dGEgPSByOwo+ICsgICAgcGFkZHJfdCBhZGRyID0gaW5mby0+Z3BhOwo+ICsgICAgaW50IGxlbiA9 IDFVIDw8IGluZm8tPmRhYnQuc2l6ZTsKPiArCj4gKyAgICByZWdpb24gPSB2Z2ljX2dldF9tbWlv X3JlZ2lvbih2Y3B1LCBpb2RldiwgYWRkciwgbGVuKTsKPiArICAgIGlmICggIXJlZ2lvbiApCj4g KyAgICAgICAgcmV0dXJuIDA7Cj4gKwo+ICsgICAgc3dpdGNoIChpb2Rldi0+aW9kZXZfdHlwZSkK PiArICAgIHsKPiArICAgIGNhc2UgSU9ERVZfRElTVDoKPiArICAgICAgICByZWdpb24tPndyaXRl KHZjcHUsIGFkZHIsIGxlbiwgZGF0YSk7Cj4gKyAgICAgICAgYnJlYWs7Cj4gKyAgICBjYXNlIElP REVWX1JFRElTVDoKPiArICAgICAgICByZWdpb24tPndyaXRlKGlvZGV2LT5yZWRpc3RfdmNwdSwg YWRkciwgbGVuLCBkYXRhKTsKPiArICAgICAgICBicmVhazsKPiArICAgIH0KPiArCj4gKyAgICBy ZXR1cm4gMTsKPiArfQo+ICsKPiArc3RydWN0IG1taW9faGFuZGxlcl9vcHMgdmdpY19pb19vcHMg PSB7Cj4gKyAgICAucmVhZCA9IGRpc3BhdGNoX21taW9fcmVhZCwKPiArICAgIC53cml0ZSA9IGRp c3BhdGNoX21taW9fd3JpdGUsCj4gK307Cj4gKwo+ICsvKgo+ICsgKiBMb2NhbCB2YXJpYWJsZXM6 Cj4gKyAqIG1vZGU6IEMKPiArICogYy1maWxlLXN0eWxlOiAiQlNEIgo+ICsgKiBjLWJhc2ljLW9m ZnNldDogNAo+ICsgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKPiArICogRW5kOgo+ICsgKi8KPiBk aWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy1tbWlvLmggYi94ZW4vYXJjaC9hcm0v dmdpYy92Z2ljLW1taW8uaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAw MC4uYmYwNjJhMjdjYQo+IC0tLSAvZGV2L251bGwKPiArKysgYi94ZW4vYXJjaC9hcm0vdmdpYy92 Z2ljLW1taW8uaAo+IEBAIC0wLDAgKzEsODkgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IChDKSAy MDE1LCAyMDE2IEFSTSBMdGQuCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gKyAqIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFz Cj4gKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+ICsgKgo+ ICsgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKPiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo+ICsgKiBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo+ICsgKiBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KPiArICovCj4gKyNpZm5kZWYgX19YRU5fQVJNX1ZHSUNfVkdJQ19NTUlPX0hf Xwo+ICsjZGVmaW5lIF9fWEVOX0FSTV9WR0lDX1ZHSUNfTU1JT19IX18KPiArCj4gK3N0cnVjdCB2 Z2ljX3JlZ2lzdGVyX3JlZ2lvbiB7Cj4gKyAgICB1bnNpZ25lZCBpbnQgcmVnX29mZnNldDsKPiAr ICAgIHVuc2lnbmVkIGludCBsZW47Cj4gKyAgICB1bnNpZ25lZCBpbnQgYml0c19wZXJfaXJxOwo+ ICsgICAgdW5zaWduZWQgaW50IGFjY2Vzc19mbGFnczsKPiArICAgIHVuc2lnbmVkIGxvbmcgKCpy ZWFkKShzdHJ1Y3QgdmNwdSAqdmNwdSwgcGFkZHJfdCBhZGRyLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCBsZW4pOwo+ICsgICAgdm9pZCAoKndyaXRlKShzdHJ1Y3Qg dmNwdSAqdmNwdSwgcGFkZHJfdCBhZGRyLAo+ICsgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgbGVuLCB1bnNpZ25lZCBsb25nIHZhbCk7Cj4gK307Cj4gKwo+ICtleHRlcm4gc3RydWN0IG1t aW9faGFuZGxlcl9vcHMgdmdpY19pb19vcHM7Cj4gKwo+ICsjZGVmaW5lIFZHSUNfQUNDRVNTXzhi aXQgICAgMQo+ICsjZGVmaW5lIFZHSUNfQUNDRVNTXzMyYml0ICAgMgo+ICsjZGVmaW5lIFZHSUNf QUNDRVNTXzY0Yml0ICAgNAo+ICsKPiArLyoKPiArICogR2VuZXJhdGUgYSBtYXNrIHRoYXQgY292 ZXJzIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVxdWlyZWQgdG8gYWRkcmVzcwo+ICsgKiB1cCB0byAx MDI0IGludGVycnVwdHMsIGVhY2ggcmVwcmVzZW50ZWQgYnkgPGJpdHM+IGJpdHMuIFRoaXMgYXNz dW1lcwo+ICsgKiB0aGF0IDxiaXRzPiBpcyBhIHBvd2VyIG9mIHR3by4KPiArICovCj4gKyNkZWZp bmUgVkdJQ19BRERSX0lSUV9NQVNLKGJpdHMpICgoKGJpdHMpICogMTAyNCAvIDgpIC0gMSkKPiAr Cj4gKy8qCj4gKyAqIChhZGRyICYgbWFzaykgZ2l2ZXMgdXMgdGhlIF9ieXRlXyBvZmZzZXQgZm9y IHRoZSBJTlQgSUQuCj4gKyAqIFdlIG11bHRpcGx5IHRoaXMgYnkgOCB0aGUgZ2V0IHRoZSBfYml0 XyBvZmZzZXQsIHRoZW4gZGl2aWRlIHRoaXMgYnkKPiArICogdGhlIG51bWJlciBvZiBiaXRzIHRv IGxlYXJuIHRoZSBhY3R1YWwgSU5UIElELgo+ICsgKiBCdXQgaW5zdGVhZCBvZiBhIGRpdmlzaW9u ICh3aGljaCByZXF1aXJlcyBhICJsb25nIGxvbmcgZGl2IiBpbXBsZW1lbnRhdGlvbiksCj4gKyAq IHdlIHNoaWZ0IGJ5IHRoZSBiaW5hcnkgbG9nYXJpdGhtIG9mIDxiaXRzPi4KPiArICogVGhpcyBh c3N1bWVzIHRoYXQgPGJpdHM+IGlzIGEgcG93ZXIgb2YgdHdvLgo+ICsgKi8KPiArI2RlZmluZSBW R0lDX0FERFJfVE9fSU5USUQoYWRkciwgYml0cykgICgoKGFkZHIpICYgVkdJQ19BRERSX0lSUV9N QVNLKGJpdHMpKSAqIFwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA4ID4+IGlsb2cyKGJpdHMpKQo+ICsKPiArLyoKPiArICogU29tZSBWR0lDIHJlZ2lzdGVycyBz dG9yZSBwZXItSVJRIGluZm9ybWF0aW9uLCB3aXRoIGEgZGlmZmVyZW50IG51bWJlcgo+ICsgKiBv ZiBiaXRzIHBlciBJUlEuIEZvciB0aG9zZSByZWdpc3RlcnMgdGhpcyBtYWNybyBpcyB1c2VkLgo+ ICsgKiBUaGUgX1dJVEhfTEVOR1RIIHZlcnNpb24gaW5zdGFudGlhdGVzIHJlZ2lzdGVycyB3aXRo IGEgZml4ZWQgbGVuZ3RoCj4gKyAqIGFuZCBpcyBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCB0aGUg X1BFUl9JUlEgdmVyc2lvbi4KPiArICovCj4gKyNkZWZpbmUgUkVHSVNURVJfREVTQ19XSVRIX0JJ VFNfUEVSX0lSUShvZmYsIHJkLCB3ciwgYnBpLCBhY2MpICBcCj4gKyAgICB7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg ICAgLnJlZ19vZmZzZXQgPSBvZmYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCj4gKyAgICAgICAgLmJpdHNfcGVyX2lycSA9IGJwaSwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCj4gKyAgICAgICAgLmxlbiA9IGJwaSAqIDEwMjQgLyA4LCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgLmFjY2Vzc19mbGFncyA9IGFj YywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgLnJlYWQg PSByZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAg ICAgICAgLndyaXRlID0gd3IsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCj4gKyAgICB9Cj4gKwo+ICsjZGVmaW5lIFJFR0lTVEVSX0RFU0NfV0lUSF9MRU5HVEgo b2ZmLCByZCwgd3IsIGxlbmd0aCwgYWNjKSAgICAgXAo+ICsgICAgeyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIC5y ZWdfb2Zmc2V0ID0gb2ZmLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ ICsgICAgICAgIC5iaXRzX3Blcl9pcnEgPSAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAo+ICsgICAgICAgIC5sZW4gPSBsZW5ndGgsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIC5hY2Nlc3NfZmxhZ3MgPSBhY2MsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIC5yZWFkID0gcmQs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAg IC53cml0ZSA9IHdyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAo+ICsgICAgfQo+ICsKPiArdW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9yYXooc3RydWN0 IHZjcHUgKnZjcHUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRyX3Qg YWRkciwgdW5zaWduZWQgaW50IGxlbik7Cj4gKwo+ICt1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19y ZWFkX3JhbyhzdHJ1Y3QgdmNwdSAqdmNwdSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGFkZHJfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuKTsKPiArCj4gK3ZvaWQgdmdpY19t bWlvX3dyaXRlX3dpKHN0cnVjdCB2Y3B1ICp2Y3B1LCBwYWRkcl90IGFkZHIsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsZW4sIHVuc2lnbmVkIGxvbmcgdmFsKTsKPiAr Cj4gKyNlbmRpZgo+IAoKLS0gCkp1bGllbiBHcmFsbAoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu L2xpc3RpbmZvL3hlbi1kZXZlbA==