From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: Re: [PATCH v9 20/28] ARM: GICv3: handle unmapped LPIs Date: Tue, 23 May 2017 15:41:57 +0100 Message-ID: References: <20170511175340.8448-1-andre.przywara@arm.com> <20170511175340.8448-21-andre.przywara@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dDB0c-0006Y3-Ty for xen-devel@lists.xenproject.org; Tue, 23 May 2017 14:42:03 +0000 In-Reply-To: Content-Language: en-GB List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Stefano Stabellini Cc: xen-devel@lists.xenproject.org, Julien Grall , Shanker Donthineni , Vijaya Kumar K , Vijay Kilari List-Id: xen-devel@lists.xenproject.org SGkgU3RlZmFubywKCk9uIDIwLzA1LzE3IDAyOjI1LCBTdGVmYW5vIFN0YWJlbGxpbmkgd3JvdGU6 Cj4gT24gVGh1LCAxMSBNYXkgMjAxNywgQW5kcmUgUHJ6eXdhcmEgd3JvdGU6Cj4+IFdoZW4gTFBJ cyBnZXQgdW5tYXBwZWQgYnkgYSBndWVzdCwgdGhleSBtaWdodCBzdGlsbCBiZSBpbiBzb21lIExS IG9mCj4+IHNvbWUgVkNQVS4gTmV2ZXJ0aGVsZXNzIHdlIHJlbW92ZSB0aGUgY29ycmVzcG9uZGlu ZyBwZW5kaW5nX2lycQo+PiAocG9zc2libHkgZnJlZWluZyBpdCksIGFuZCBkZXRlY3QgdGhpcyBj YXNlIChpcnFfdG9fcGVuZGluZygpIHJldHVybnMKPj4gTlVMTCkgd2hlbiB0aGUgTFIgZ2V0cyBj bGVhbmVkIHVwIGxhdGVyLgo+PiBIb3dldmVyIGEgKm5ldyogTFBJIG1heSBnZXQgbWFwcGVkIHdp dGggdGhlIHNhbWUgbnVtYmVyIHdoaWxlIHRoZSBvbGQKPj4gTFBJIGlzICpzdGlsbCogaW4gc29t ZSBMUi4gVG8gYXZvaWQgZ2V0dGluZyB0aGUgd3Jvbmcgc3RhdGUsIHdlIG1hcmsKPj4gZXZlcnkg bmV3bHkgbWFwcGVkIExQSSBhcyBQUklTVElORSwgd2hpY2ggbWVhbnM6IGhhcyBuZXZlciBiZWVu IGluIGFuCj4+IExSIGJlZm9yZS4gSWYgd2UgZGV0ZWN0IHRoZSBMUEkgaW4gYW4gTFIgYW55d2F5 LCBpdCBtdXN0IGhhdmUgYmVlbiBhbgo+PiBvbGRlciBvbmUsIHdoaWNoIHdlIGNhbiBzaW1wbHkg cmV0aXJlLgo+PiBCZWZvcmUgaW5zZXJ0aW5nIHN1Y2ggYSBQUklTVElORSBMUEkgaW50byBhbiBM Uiwgd2UgbXVzdCBtYWtlIHN1cmUgdGhhdAo+PiBpdCdzIG5vdCBhbHJlYWR5IGluIGFub3RoZXIg TFIsIGFzIHRoZSBhcmNoaXRlY3R1cmUgZm9yYmlkcyB0d28KPj4gaW50ZXJydXB0cyB3aXRoIHRo ZSBzYW1lIHZpcnR1YWwgSVJRIG51bWJlciBvbiBvbmUgQ1BVLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5 OiBBbmRyZSBQcnp5d2FyYSA8YW5kcmUucHJ6eXdhcmFAYXJtLmNvbT4KPj4gLS0tCj4+ICB4ZW4v YXJjaC9hcm0vZ2ljLmMgICAgICAgICB8IDU1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0KPj4gIHhlbi9pbmNsdWRlL2FzbS1hcm0vdmdpYy5oIHwgIDYgKysr KysKPj4gIDIgZmlsZXMgY2hhbmdlZCwgNTYgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkK Pj4KPj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9naWMuYyBiL3hlbi9hcmNoL2FybS9naWMu Ywo+PiBpbmRleCBmZDNmYTA1Li44YmYwNTc4IDEwMDY0NAo+PiAtLS0gYS94ZW4vYXJjaC9hcm0v Z2ljLmMKPj4gKysrIGIveGVuL2FyY2gvYXJtL2dpYy5jCj4+IEBAIC0zNzUsNiArMzc1LDggQEAg c3RhdGljIGlubGluZSB2b2lkIGdpY19zZXRfbHIoaW50IGxyLCBzdHJ1Y3QgcGVuZGluZ19pcnEg KnAsCj4+ICB7Cj4+ICAgICAgQVNTRVJUKCFsb2NhbF9pcnFfaXNfZW5hYmxlZCgpKTsKPj4gIAo+ PiArICAgIGNsZWFyX2JpdChHSUNfSVJRX0dVRVNUX1BSSVNUSU5FX0xQSSwgJnAtPnN0YXR1cyk7 Cj4+ICsKPj4gICAgICBnaWNfaHdfb3BzLT51cGRhdGVfbHIobHIsIHAsIHN0YXRlKTsKPj4gIAo+ PiAgICAgIHNldF9iaXQoR0lDX0lSUV9HVUVTVF9WSVNJQkxFLCAmcC0+c3RhdHVzKTsKPj4gQEAg LTQ0MiwxMiArNDQ0LDQxIEBAIHZvaWQgZ2ljX3JhaXNlX2luZmxpZ2h0X2lycShzdHJ1Y3QgdmNw dSAqdiwgdW5zaWduZWQgaW50IHZpcnR1YWxfaXJxKQo+PiAgI2VuZGlmCj4+ICB9Cj4+ICAKPj4g Ky8qCj4+ICsgKiBGaW5kIGFuIHVudXNlZCBMUiB0byBpbnNlcnQgYW4gSVJRIGludG8uIElmIHRo aXMgbmV3IGludGVycnVwdCBpcyBhCj4+ICsgKiBQUklTVElORSBMUEksIHNjYW4gdGhlIG90aGVy IExScyB0byBhdm9pZCBpbnNlcnRpbmcgdGhlIHNhbWUgSVJRIHR3aWNlLgo+PiArICovCj4+ICtz dGF0aWMgaW50IGdpY19maW5kX3VudXNlZF9scihzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IHBlbmRp bmdfaXJxICpwLCBpbnQgbHIpCj4+ICt7Cj4+ICsgICAgdW5zaWduZWQgaW50IG5yX2xycyA9IGdp Y19od19vcHMtPmluZm8tPm5yX2xyczsKPj4gKyAgICB1bnNpZ25lZCBsb25nICpscl9tYXNrID0g KHVuc2lnbmVkIGxvbmcgKikgJnRoaXNfY3B1KGxyX21hc2spOwo+PiArICAgIHN0cnVjdCBnaWNf bHIgbHJfdmFsOwo+PiArCj4+ICsgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZ2LT5hcmNoLnZn aWMubG9jaykpOwo+PiArCj4+ICsgICAgaWYgKCB0ZXN0X2JpdChHSUNfSVJRX0dVRVNUX1BSSVNU SU5FX0xQSSwgJnAtPnN0YXR1cykgKQo+IAo+IE1heWJlIHdlIHNob3VsZCBhZGQgYW4gInVubGlr ZWx5Ii4KPiAKPiBJIGNhbiBzZWUgaG93IHRoaXMgd291bGQgYmUgT0tpc2ggYXQgcnVudGltZSwg YnV0IGF0IGJvb3QgdGltZSB0aGVyZQo+IG1pZ2h0IGJlIGEgYnVuY2ggb2YgUFJJU1RJTkVfTFBJ cywKCldoYXQgaXMgeW91ciBjb25jZXJuIGhlcmUsIHBlcmZvcm1hbmNlPwpMZXQncyBwdXQgdGhp cyBpbnRvIHBlcnNwZWN0aXZlOgotIFRoZSBQUklTVElORSBiaXQgZ2V0cyBzZXQgdXBvbiBNQVBU SSwgd2hpY2ggTGludXggdXN1YWxseSBkb2VzICpvbmNlKgp3aGVuIHRoZSBkcml2ZXIgZ2V0cyBs b2FkZWQuIEl0IGdldHMgY2xlYXJlZCBhZnRlciB0aGUgZmlyc3QgaW5qZWN0aW9uLgotIElmIHRo YXQgaGFwcGVucywgd2Ugc2NhbiBhbGwgTFJzLiBNb3N0IGltcGxlbWVudGF0aW9ucyBoYXZlIDQo ISkgb2YKdGhlbSAoQVJNIEdJQyBpbXBsZW1lbnRhdGlvbnMsIGZvciBpbnN0YW5jZSksIGFsc28g dGhlIGFsZ29yaXRobSBvbmx5CnNjYW5zICp1c2VkKiBMUnMsIHNvIG5vcm1hbGx5IGp1c3Qgb25l IG9yIHR3by4KLSBSZWFkaW5nIHRoZSBMUiBpcyBhICpsb2NhbCogc3lzdGVtIHJlZ2lzdGVyICpy ZWFkKiwgbm90IGFuIE1NSU8KYWNjZXNzLCBhbmQgbm90IHByb3BhZ2F0ZWQgdG8gb3RoZXIgY29y ZXMuIFllcywgdGhpcyBtYXkgYmUgImNvc3RseSIKKGNvbXBhcmVkIHRvIG90aGVyIGluc3RydWN0 aW9ucyksIGJ1dCBpdCdzIHByb2JhYmx5IHN0aWxsIGNoZWFwZXIgdGhhbiBhCnBhZ2UgdGFibGUg d2FsayAoVExCIG1pc3MpIG9yIEwyIGNhY2hlIG1pc3MuCgpTbyB0byBzdW1tYXJpemU6IHRoaXMg aXMgcmFyZSwgaXRlcmF0ZXMgb3ZlciBvbmx5IGEgdmVyeSBzbWFsbCBudW1iZXIgb2YKcmVnaXN0 ZXJzIGFuZCBpcyBub3QgaHVnZWx5IGV4cGVuc2l2ZS4KQXQgdGhpcyBwb2ludCBpbiB0aW1lIEkg d291bGQgcmVmcmFpbiBmcm9tIGFueSBraW5kIG9mIHBlcmZvcm1hbmNlCm9wdGltaXphdGlvbiwg YXQgbGVhc3QgdW5sZXNzIHdlIGhhdmUgc29sdmVkIGFsbCB0aGUgb3RoZXIgaXNzdWVzIGFuZApo YXZlIGRvbmUgc29tZSBiZW5jaG1hcmtpbmcvcHJvZmlsaW5nIChvbiBkaWZmZXJlbnQgaGFyZHdh cmUgcGxhdGZvcm1zKS4KCj4gYnV0IG5vIE1BUERzIGhhdmUgYmVlbiBpc3N1ZWQgeWV0LCByaWdo dD8KCkFzIEp1bGllbiBhbHJlYWR5IG1lbnRpb25lZCwgdGhpcyBnZXRzIHNldCBhZnRlciBhIE1B UFRJLCB3aGljaCByZXF1aXJlcwphIE1BUEQgYmVmb3JlLgoKQ2hlZXJzLApBbmRyZS4KCj4gSSBo YXZlIGEgc3VnZ2VzdGlvbiwgSSdsbCBsZWF2ZSBpdCB0byB5b3UgYW5kIEp1bGllbiBpZiB5b3Ug d2FudCB0byBkbwo+IHRoaXMgbm93LCBvciBtYXliZSBjb25zaWRlciBpdCBhcyBhIFRPRE8gaXRl bS4gSSBhbSBPSyBlaXRoZXIgd2F5IChJCj4gZG9uJ3Qgd2FudCB0byBkZWxheSB0aGUgSVRTIGFu eSBsb25nZXIpLgo+IAo+IEkgYW0gdGhpbmtpbmcgd2Ugc2hvdWxkIGRvIHRoaXMgc2Nhbm5pbmcg b25seSBhZnRlciBhdCBsZWFzdCBvbmUgTUFQRAo+IGhhcyBiZWVuIGlzc3VlZCBmb3IgYSBnaXZl biBjcHUgYXQgbGVhc3Qgb25jZS4gSSB3b3VsZCByZXN1cnJlY3QgdGhlCj4gaWRlYSBvZiBhIERJ U0NBUkQgZmxhZywgYnV0IG5vdCBvbiB0aGUgcGVuZGluZ19pcnEsIHRoYXQgSSBiZWxpZXZlIGl0 J3MKPiBkaWZmaWN1bHQgdG8gaGFuZGxlLCBidXQgYSBzaW5nbGUgZ2xvYmFsIERJU0NBUkQgZmxh ZyBwZXIgc3RydWN0IHZjcHUuCj4gCj4gT24gTUFQRCwgd2Ugc2V0IERJU0NBUkQgZm9yIHRoZSB0 YXJnZXQgdmNwdSBvZiB0aGUgTFBJIHdlIGFyZSBkcm9wcGluZy4KPiBOZXh0IHRpbWUgd2Ugd2Fu dCB0byBpbmplY3QgYSBQUklTVElORV9JUlEgb24gdGhhdCBjcHUgaW50ZXJmYWNlLCB3ZQo+IHNj YW4gYWxsIExScyBmb3IgaW50ZXJydXB0cyB3aXRoIGEgTlVMTCBwZW5kaW5nX2lycS4gV2UgcmVt b3ZlIHRob3NlCj4gZnJvbSBMUnMsIHRoZW4gd2UgcmVtb3ZlIHRoZSBESVNDQVJEIGZsYWcuCj4g Cj4gRG8geW91IHRoaW5rIGl0IHdvdWxkIHdvcms/Cj4gCj4gCj4+ICsgICAgewo+PiArICAgICAg ICBpbnQgdXNlZF9sciA9IDA7Cj4+ICsKPj4gKyAgICAgICAgd2hpbGUgKCAodXNlZF9sciA9IGZp bmRfbmV4dF9iaXQobHJfbWFzaywgbnJfbHJzLCB1c2VkX2xyKSkgPCBucl9scnMgKQo+PiArICAg ICAgICB7Cj4+ICsgICAgICAgICAgICBnaWNfaHdfb3BzLT5yZWFkX2xyKHVzZWRfbHIsICZscl92 YWwpOwo+PiArICAgICAgICAgICAgaWYgKCBscl92YWwudmlycSA9PSBwLT5pcnEgKQo+PiArICAg ICAgICAgICAgICAgIHJldHVybiB1c2VkX2xyOwo+PiArICAgICAgICB9Cj4+ICsgICAgfQo+PiAr Cj4+ICsgICAgbHIgPSBmaW5kX25leHRfemVyb19iaXQobHJfbWFzaywgbnJfbHJzLCBscik7Cj4+ ICsKPj4gKyAgICByZXR1cm4gbHI7Cj4+ICt9Cj4+ICsKPj4gIHZvaWQgZ2ljX3JhaXNlX2d1ZXN0 X2lycShzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IHZpcnR1YWxfaXJxLAo+PiAgICAgICAg ICB1bnNpZ25lZCBpbnQgcHJpb3JpdHkpCj4+ICB7Cj4+IC0gICAgaW50IGk7Cj4+IC0gICAgdW5z aWduZWQgaW50IG5yX2xycyA9IGdpY19od19vcHMtPmluZm8tPm5yX2xyczsKPj4gICAgICBzdHJ1 Y3QgcGVuZGluZ19pcnEgKnAgPSBpcnFfdG9fcGVuZGluZyh2LCB2aXJ0dWFsX2lycSk7Cj4+ICsg ICAgdW5zaWduZWQgaW50IG5yX2xycyA9IGdpY19od19vcHMtPmluZm8tPm5yX2xyczsKPj4gKyAg ICBpbnQgaSA9IG5yX2xyczsKPj4gIAo+PiAgICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmdi0+ YXJjaC52Z2ljLmxvY2spKTsKPj4gIAo+PiBAQCAtNDU3LDcgKzQ4OCw4IEBAIHZvaWQgZ2ljX3Jh aXNlX2d1ZXN0X2lycShzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IHZpcnR1YWxfaXJxLAo+ PiAgCj4+ICAgICAgaWYgKCB2ID09IGN1cnJlbnQgJiYgbGlzdF9lbXB0eSgmdi0+YXJjaC52Z2lj LmxyX3BlbmRpbmcpICkKPj4gICAgICB7Cj4+IC0gICAgICAgIGkgPSBmaW5kX2ZpcnN0X3plcm9f Yml0KCZ0aGlzX2NwdShscl9tYXNrKSwgbnJfbHJzKTsKPj4gKyAgICAgICAgaSA9IGdpY19maW5k X3VudXNlZF9scih2LCBwLCAwKTsKPj4gKwo+PiAgICAgICAgICBpZiAoaSA8IG5yX2xycykgewo+ PiAgICAgICAgICAgICAgc2V0X2JpdChpLCAmdGhpc19jcHUobHJfbWFzaykpOwo+PiAgICAgICAg ICAgICAgZ2ljX3NldF9scihpLCBwLCBHSUNIX0xSX1BFTkRJTkcpOwo+PiBAQCAtNTA5LDcgKzU0 MSwxNyBAQCBzdGF0aWMgdm9pZCBnaWNfdXBkYXRlX29uZV9scihzdHJ1Y3QgdmNwdSAqdiwgaW50 IGkpCj4+ICAgICAgfQo+PiAgICAgIGVsc2UgaWYgKCBscl92YWwuc3RhdGUgJiBHSUNIX0xSX1BF TkRJTkcgKQo+PiAgICAgIHsKPj4gLSAgICAgICAgaW50IHEgX19hdHRyaWJ1dGVfXyAoKHVudXNl ZCkpID0gdGVzdF9hbmRfY2xlYXJfYml0KEdJQ19JUlFfR1VFU1RfUVVFVUVELCAmcC0+c3RhdHVz KTsKPj4gKyAgICAgICAgaW50IHEgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOwo+PiArCj4+ICsg ICAgICAgIGlmICggdGVzdF9hbmRfY2xlYXJfYml0KEdJQ19JUlFfR1VFU1RfUFJJU1RJTkVfTFBJ LCAmcC0+c3RhdHVzKSApCj4+ICsgICAgICAgIHsKPj4gKyAgICAgICAgICAgIGdpY19od19vcHMt PmNsZWFyX2xyKGkpOwo+PiArICAgICAgICAgICAgY2xlYXJfYml0KGksICZ0aGlzX2NwdShscl9t YXNrKSk7Cj4+ICsKPj4gKyAgICAgICAgICAgIHJldHVybjsKPj4gKyAgICAgICAgfQo+PiArCj4+ ICsgICAgICAgIHEgPSB0ZXN0X2FuZF9jbGVhcl9iaXQoR0lDX0lSUV9HVUVTVF9RVUVVRUQsICZw LT5zdGF0dXMpOwo+PiAgI2lmZGVmIEdJQ19ERUJVRwo+PiAgICAgICAgICBpZiAoIHEgKQo+PiAg ICAgICAgICAgICAgZ2RwcmludGsoWEVOTE9HX0RFQlVHLCAidHJ5aW5nIHRvIGluamVjdCBpcnE9 JWQgaW50byBkJWR2JWQsIHdoZW4gaXQgaXMgYWxyZWFkeSBwZW5kaW5nIGluIExSJWRcbiIsCj4+ IEBAIC01MjEsNiArNTYzLDkgQEAgc3RhdGljIHZvaWQgZ2ljX3VwZGF0ZV9vbmVfbHIoc3RydWN0 IHZjcHUgKnYsIGludCBpKQo+PiAgICAgICAgICBnaWNfaHdfb3BzLT5jbGVhcl9scihpKTsKPj4g ICAgICAgICAgY2xlYXJfYml0KGksICZ0aGlzX2NwdShscl9tYXNrKSk7Cj4+ICAKPj4gKyAgICAg ICAgaWYgKCB0ZXN0X2FuZF9jbGVhcl9iaXQoR0lDX0lSUV9HVUVTVF9QUklTVElORV9MUEksICZw LT5zdGF0dXMpICkKPj4gKyAgICAgICAgICAgIHJldHVybjsKPj4gICAgICAgICAgaWYgKCBwLT5k ZXNjICE9IE5VTEwgKQo+PiAgICAgICAgICAgICAgY2xlYXJfYml0KF9JUlFfSU5QUk9HUkVTUywg JnAtPmRlc2MtPnN0YXR1cyk7Cj4+ICAgICAgICAgIGNsZWFyX2JpdChHSUNfSVJRX0dVRVNUX1ZJ U0lCTEUsICZwLT5zdGF0dXMpOwo+PiBAQCAtNTkxLDcgKzYzNiw3IEBAIHN0YXRpYyB2b2lkIGdp Y19yZXN0b3JlX3BlbmRpbmdfaXJxcyhzdHJ1Y3QgdmNwdSAqdikKPj4gICAgICBpbmZsaWdodF9y ID0gJnYtPmFyY2gudmdpYy5pbmZsaWdodF9pcnFzOwo+PiAgICAgIGxpc3RfZm9yX2VhY2hfZW50 cnlfc2FmZSAoIHAsIHQsICZ2LT5hcmNoLnZnaWMubHJfcGVuZGluZywgbHJfcXVldWUgKQo+PiAg ICAgIHsKPj4gLSAgICAgICAgbHIgPSBmaW5kX25leHRfemVyb19iaXQoJnRoaXNfY3B1KGxyX21h c2spLCBucl9scnMsIGxyKTsKPj4gKyAgICAgICAgbHIgPSBnaWNfZmluZF91bnVzZWRfbHIodiwg cCwgbHIpOwo+PiAgICAgICAgICBpZiAoIGxyID49IG5yX2xycyApCj4+ICAgICAgICAgIHsKPj4g ICAgICAgICAgICAgIC8qIE5vIG1vcmUgZnJlZSBMUnM6IGZpbmQgYSBsb3dlciBwcmlvcml0eSBp cnEgdG8gZXZpY3QgKi8KPj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vdmdpYy5o IGIveGVuL2luY2x1ZGUvYXNtLWFybS92Z2ljLmgKPj4gaW5kZXggMDI3MzJkYi4uM2ZjNGNlYiAx MDA2NDQKPj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS92Z2ljLmgKPj4gKysrIGIveGVuL2lu Y2x1ZGUvYXNtLWFybS92Z2ljLmgKPj4gQEAgLTYwLDEyICs2MCwxOCBAQCBzdHJ1Y3QgcGVuZGlu Z19pcnEKPj4gICAgICAgKiB2Y3B1IHdoaWxlIGl0IGlzIHN0aWxsIGluZmxpZ2h0IGFuZCBvbiBh biBHSUNIX0xSIHJlZ2lzdGVyIG9uIHRoZQo+PiAgICAgICAqIG9sZCB2Y3B1Lgo+PiAgICAgICAq Cj4+ICsgICAgICogR0lDX0lSUV9HVUVTVF9QUklTVElORV9MUEk6IHRoZSBJUlEgaXMgYSBuZXds eSBtYXBwZWQgTFBJLCB3aGljaAo+PiArICAgICAqIGhhcyBuZXZlciBiZWVuIGluIGFuIExSIGJl Zm9yZS4gVGhpcyBtZWFucyB0aGF0IGFueSB0cmFjZSBvZiBhbgo+PiArICAgICAqIExQSSB3aXRo IHRoZSBzYW1lIG51bWJlciBpbiBhbiBMUiBtdXN0IGJlIGZyb20gYW4gb2xkZXIgTFBJLCB3aGlj aAo+PiArICAgICAqIGhhcyBiZWVuIHVubWFwcGVkIGJlZm9yZS4KPj4gKyAgICAgKgo+PiAgICAg ICAqLwo+PiAgI2RlZmluZSBHSUNfSVJRX0dVRVNUX1FVRVVFRCAgIDAKPj4gICNkZWZpbmUgR0lD X0lSUV9HVUVTVF9BQ1RJVkUgICAxCj4+ICAjZGVmaW5lIEdJQ19JUlFfR1VFU1RfVklTSUJMRSAg Mgo+PiAgI2RlZmluZSBHSUNfSVJRX0dVRVNUX0VOQUJMRUQgIDMKPj4gICNkZWZpbmUgR0lDX0lS UV9HVUVTVF9NSUdSQVRJTkcgICA0Cj4+ICsjZGVmaW5lIEdJQ19JUlFfR1VFU1RfUFJJU1RJTkVf TFBJICA1Cj4+ICAgICAgdW5zaWduZWQgbG9uZyBzdGF0dXM7Cj4+ICAgICAgc3RydWN0IGlycV9k ZXNjICpkZXNjOyAvKiBvbmx5IHNldCBpdCB0aGUgaXJxIGNvcnJlc3BvbmRzIHRvIGEgcGh5c2lj YWwgaXJxICovCj4+ICAgICAgdW5zaWduZWQgaW50IGlycTsKPj4gLS0gCj4+IDIuOS4wCj4+Cj4+ Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+IFhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKPj4gWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKPj4gaHR0cHM6 Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo+PgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==