From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH v4 03/27] ARM: GICv3: allocate LPI pending and property table Date: Mon, 3 Apr 2017 22:47:40 +0100 Message-ID: References: <20170403202829.7278-1-andre.przywara@arm.com> <20170403202829.7278-4-andre.przywara@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cv9pC-0006MU-Ef for xen-devel@lists.xenproject.org; Mon, 03 Apr 2017 21:47:46 +0000 In-Reply-To: <20170403202829.7278-4-andre.przywara@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Andre Przywara , Stefano Stabellini Cc: xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org SGkgQW5kcmUsCgpZZWFoLi4uIGFub3RoZXIgcm91bmQgcmVwZWF0aW5nIHRoZSBzYW1lIHRoaW5n cy4KCk9uIDA0LzAzLzIwMTcgMDk6MjggUE0sIEFuZHJlIFByenl3YXJhIHdyb3RlOgo+IGRpZmYg LS1naXQgYS94ZW4vYXJjaC9hcm0vZ2ljLXYzLWxwaS5jIGIveGVuL2FyY2gvYXJtL2dpYy12My1s cGkuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYTAwM2E3Mgo+IC0t LSAvZGV2L251bGwKPiArKysgYi94ZW4vYXJjaC9hcm0vZ2ljLXYzLWxwaS5jCgpbLi4uXQoKPiAr I2luY2x1ZGUgPHhlbi9saWIuaD4KPiArI2luY2x1ZGUgPHhlbi9tbS5oPgo+ICsjaW5jbHVkZSA8 eGVuL3NpemVzLmg+Cj4gKyNpbmNsdWRlIDxhc20vZ2ljLmg+Cj4gKyNpbmNsdWRlIDxhc20vZ2lj X3YzX2RlZnMuaD4KPiArI2luY2x1ZGUgPGFzbS9naWNfdjNfaXRzLmg+Cj4gKyNpbmNsdWRlIDxh c20vaW8uaD4KPiArI2luY2x1ZGUgPGFzbS9wYWdlLmg+Cj4gKwo+ICsjZGVmaW5lIExQSV9QUk9Q VEFCTEVfTkVFRFNfRkxVU0hJTkcgICAgKDFVIDw8IDApCgpOZXdsaW5lIGhlcmUuCgo+ICsvKiBH bG9iYWwgc3RhdGUgKi8KPiArc3RhdGljIHN0cnVjdCB7Cj4gKyAgICAvKiBUaGUgZ2xvYmFsIExQ SSBwcm9wZXJ0eSB0YWJsZSwgc2hhcmVkIGJ5IGFsbCByZWRpc3RyaWJ1dG9ycy4gKi8KPiArICAg IHVpbnQ4X3QgKmxwaV9wcm9wZXJ0eTsKPiArICAgIC8qCj4gKyAgICAgKiBOdW1iZXIgb2YgcGh5 c2ljYWwgTFBJcyB0aGUgaG9zdCBzdXBwb3J0cy4gVGhpcyBpcyBhIHByb3BlcnR5IG9mCj4gKyAg ICAgKiB0aGUgR0lDIGhhcmR3YXJlLiBXZSBkZXBhcnQgZnJvbSB0aGUgaGFiaXQgb2YgbmFtaW5n IHRoZXNlIHRoaW5ncwo+ICsgICAgICogInBoeXNpY2FsIiBpbiBYZW4sIGFzIHRoZSBHSUN2My80 IHNwZWMgdXNlcyB0aGUgdGVybSAicGh5c2ljYWwgTFBJIgo+ICsgICAgICogaW4gYSBkaWZmZXJl bnQgY29udGV4dCB0byBkaWZmZXJlbnRpYXRlIHRoZW0gZnJvbSAidmlydHVhbCBMUElzIi4KPiAr ICAgICAqLwo+ICsgICAgdW5zaWduZWQgbG9uZyBpbnQgbnJfaG9zdF9scGlzOwoKT24gdjIsIHlv dSBzYWlkIHlvdSB3aWxsIHJlbmFtZSB0aGlzIHZhcmlhYmxlIHRvIG1heF9ob3N0X2xwaV9pZHMg YW5kIC4uLgoKPiArICAgIHVuc2lnbmVkIGludCBmbGFnczsKPiArfSBscGlfZGF0YTsKPiArCj4g K3N0cnVjdCBscGlfcmVkaXN0X2RhdGEgewo+ICsgICAgdm9pZCAgICAgICAgICAgICAgICAqcGVu ZGluZ190YWJsZTsKPiArfTsKPiArCj4gK3N0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgbHBp X3JlZGlzdF9kYXRhLCBscGlfcmVkaXN0KTsKPiArCj4gKyNkZWZpbmUgTUFYX1BIWVNfTFBJUyAg IChscGlfZGF0YS5ucl9ob3N0X2xwaXMgLSBMUElfT0ZGU0VUKQoKLi4uIHRoaXMgb25lIHRvIE1B WF9OUl9QSFlTX0xQSVMgb3IgZXZlbiBNQVhfTlJfSE9TVF9MUElTIHRvIHN0YXkgCmNvbnNpc3Rl bnQuCgpTbyBwbGVhc2UgZG8gaXQuCgo+ICsKPiArc3RhdGljIGludCBnaWN2M19scGlfYWxsb2Nh dGVfcGVuZHRhYmxlKHVpbnQ2NF90ICpyZWcpCj4gK3sKPiArICAgIHVpbnQ2NF90IHZhbDsKPiAr ICAgIHZvaWQgKnBlbmR0YWJsZTsKPiArCj4gKyAgICBpZiAoIHRoaXNfY3B1KGxwaV9yZWRpc3Qp LnBlbmRpbmdfdGFibGUgKQo+ICsgICAgICAgIHJldHVybiAtRUJVU1k7Cj4gKwo+ICsgICAgdmFs ICA9IEdJQ19CQVNFUl9DQUNIRV9SYVdhV2IgPDwgR0lDUl9QRU5EQkFTRVJfSU5ORVJfQ0FDSEVB QklMSVRZX1NISUZUOwo+ICsgICAgdmFsIHw9IEdJQ19CQVNFUl9DQUNIRV9TYW1lQXNJbm5lciA8 PCBHSUNSX1BFTkRCQVNFUl9PVVRFUl9DQUNIRUFCSUxJVFlfU0hJRlQ7Cj4gKyAgICB2YWwgfD0g R0lDX0JBU0VSX0lubmVyU2hhcmVhYmxlIDw8IEdJQ1JfUEVOREJBU0VSX1NIQVJFQUJJTElUWV9T SElGVDsKPiArCj4gKyAgICAvKgo+ICsgICAgICogVGhlIHBlbmRpbmcgdGFibGUgaG9sZHMgb25l IGJpdCBwZXIgTFBJIGFuZCBldmVuIGNvdmVycyBiaXRzIGZvcgo+ICsgICAgICogaW50ZXJydXB0 IElEcyBiZWxvdyA4MTkyLCBzbyB3ZSBhbGxvY2F0ZSB0aGUgZnVsbCByYW5nZS4KPiArICAgICAq IFRoZSBHSUN2MyBpbXBvc2VzIGEgNjRLQiBhbGlnbm1lbnQgcmVxdWlyZW1lbnQsIGFsc28gcmVx dWlyZXMKPiArICAgICAqIHBoeXNpY2FsbHkgY29udGlndW91cyBtZW1vcnkuCj4gKyAgICAgKi8K PiArICAgIHBlbmR0YWJsZSA9IF94emFsbG9jKGxwaV9kYXRhLm5yX2hvc3RfbHBpcyAvIDgsIFNa XzY0Syk7Cj4gKyAgICBpZiAoICFwZW5kdGFibGUgKQo+ICsgICAgICAgIHJldHVybiAtRU5PTUVN Owo+ICsKPiArICAgIC8qIE1ha2Ugc3VyZSB0aGUgcGh5c2ljYWwgYWRkcmVzcyBjYW4gYmUgZW5j b2RlZCBpbiB0aGUgcmVnaXN0ZXIuICovCj4gKyAgICBpZiAoICh2aXJ0X3RvX21hZGRyKHBlbmR0 YWJsZSkgJiB+R0VOTUFTS19VTEwoNTEsIDE2KSkgKQoKVGhlIG1pZGRsZSAoIC4uLiApIGFyZSBu b3QgbmVjZXNzYXJ5LgoKWy4uLl0KCj4gKy8qCj4gKyAqIFRlbGwgYSByZWRpc3RyaWJ1dG9yIGFi b3V0IHRoZSAoc2hhcmVkKSBwcm9wZXJ0eSB0YWJsZSwgYWxsb2NhdGluZyBvbmUKPiArICogaWYg bm90IGFscmVhZHkgZG9uZS4KPiArICovCj4gK3N0YXRpYyBpbnQgZ2ljdjNfbHBpX3NldF9wcm9w dGFibGUodm9pZCBfX2lvbWVtICogcmRpc3RfYmFzZSkKPiArewoKWy4uLl0KCj4gKyAgICAvKiBF bmNvZGUgdGhlIG51bWJlciBvZiBiaXRzIG5lZWRlZCwgbWludXMgb25lICovCj4gKyAgICByZWcg fD0gKGZscyhscGlfZGF0YS5ucl9ob3N0X2xwaXMgLSAxKSAtIDEpOwoKVGhlIG91dGVyICggLi4u ICkgYXJlIG5vdCBuZWNlc3NhcnkuCgpbLi4uXQoKPiAraW50IGdpY3YzX2xwaV9pbml0X3JkaXN0 KHZvaWQgX19pb21lbSAqIHJkaXN0X2Jhc2UpCj4gK3sKPiArICAgIHVpbnQzMl90IHJlZzsKPiAr ICAgIHVpbnQ2NF90IHRhYmxlX3JlZzsKPiArICAgIGludCByZXQ7Cj4gKwo+ICsgICAgLyogV2Ug ZG9uJ3Qgc3VwcG9ydCBMUElzIHdpdGhvdXQgYW4gSVRTLiAqLwo+ICsgICAgaWYgKCAhZ2ljdjNf aXRzX2hvc3RfaGFzX2l0cygpICkKPiArICAgICAgICByZXR1cm4gLUVOT0RFVjsKPiArCj4gKyAg ICAvKiBNYWtlIHN1cmUgTFBJcyBhcmUgZGlzYWJsZWQgYmVmb3JlIHNldHRpbmcgdXAgdGhlIHRh Ymxlcy4gKi8KPiArICAgIHJlZyA9IHJlYWRsX3JlbGF4ZWQocmRpc3RfYmFzZSArIEdJQ1JfQ1RM Uik7Cj4gKyAgICBpZiAoIHJlZyAmIEdJQ1JfQ1RMUl9FTkFCTEVfTFBJUyApCj4gKyAgICAgICAg cmV0dXJuIC1FQlVTWTsKPiArCj4gKyAgICByZXQgPSBnaWN2M19scGlfYWxsb2NhdGVfcGVuZHRh YmxlKCZ0YWJsZV9yZWcpOwo+ICsgICAgaWYgKHJldCkKCkNvZGluZyBzdHlsZToKCmlmICggLi4u ICkKCj4gKyAgICAgICAgcmV0dXJuIHJldDsKPiArICAgIHdyaXRlcV9yZWxheGVkKHRhYmxlX3Jl ZywgcmRpc3RfYmFzZSArIEdJQ1JfUEVOREJBU0VSKTsKPiArICAgIHRhYmxlX3JlZyA9IHJlYWRx X3JlbGF4ZWQocmRpc3RfYmFzZSArIEdJQ1JfUEVOREJBU0VSKTsKPiArCj4gKyAgICAvKiBJZiB0 aGUgaGFyZHdhcmUgcmVwb3J0cyBub24tc2hhcmVhYmxlLCBkcm9wIGNhY2hlYWJpbGl0eSBhcyB3 ZWxsLiAqLwo+ICsgICAgaWYgKCAhKHRhYmxlX3JlZyAmIEdJQ1JfUEVOREJBU0VSX1NIQVJFQUJJ TElUWV9NQVNLKSApCj4gKyAgICB7Cj4gKyAgICAgICAgdGFibGVfcmVnICY9IEdJQ1JfUEVOREJB U0VSX1NIQVJFQUJJTElUWV9NQVNLOwo+ICsgICAgICAgIHRhYmxlX3JlZyAmPSBHSUNSX1BFTkRC QVNFUl9JTk5FUl9DQUNIRUFCSUxJVFlfTUFTSzsKPiArICAgICAgICB0YWJsZV9yZWcgfD0gR0lD X0JBU0VSX0NBQ0hFX25DIDw8IEdJQ1JfUEVOREJBU0VSX0lOTkVSX0NBQ0hFQUJJTElUWV9TSElG VDsKPiArCj4gKyAgICAgICAgd3JpdGVxX3JlbGF4ZWQodGFibGVfcmVnLCByZGlzdF9iYXNlICsg R0lDUl9QRU5EQkFTRVIpOwo+ICsgICAgfQo+ICsKPiArICAgIHJldHVybiBnaWN2M19scGlfc2V0 X3Byb3B0YWJsZShyZGlzdF9iYXNlKTsKPiArfQo+ICsKPiArc3RhdGljIHVuc2lnbmVkIGludCBt YXhfbHBpX2JpdHMgPSAyMDsKPiAraW50ZWdlcl9wYXJhbSgibWF4X2xwaV9iaXRzIiwgbWF4X2xw aV9iaXRzKTsKPiArCj4gK2ludCBnaWN2M19scGlfaW5pdF9ob3N0X2xwaXModW5zaWduZWQgaW50 IGh3X2xwaV9iaXRzKQo+ICt7CgpBZ2FpbiwgdGhpcyBzaG91bGQgYmUgc2FuaXRpemUuIEEgdXNl ciBjb3VsZCBwYXNzIG1heF9scGlfYml0cz0xMCwgYW5kIEkgCmRvbid0IHRoaW5rIHRoaXMgY29k ZSB3aWxsIGJlaGF2ZSB3ZWxsLgoKPiArICAgIGxwaV9kYXRhLm5yX2hvc3RfbHBpcyA9IEJJVF9V TEwobWluKGh3X2xwaV9iaXRzLCBtYXhfbHBpX2JpdHMpKTsKCkFnYWluLCBucl9ob3N0X2xwaXMg aXMgInVuc2lnbmVkIGxvbmciIHNvIHdoeSBhcmUgeW91IHVzaW5nIEJJVF9VTEw/IApMb29raW5n IGF0IHRoZSBpbnRyb2R1Y3Rpb24gb2YgR0VOTUFTS19VTEwsIGl0IGxpa2VseSBtZWFucyBucl9o b3N0X2xwaXMgCnNob3VsZCBiZSB1bnNpZ25lZCBsb25nIGxvbmcuCgoKPiArCj4gKyAgICBpZiAo IGxwaV9kYXRhLm5yX2hvc3RfbHBpcyA+IDE2ICogMTAyNCAqIDEwMjQgKQoKSG1tbT8gMTYgKiAx MDI0ICogMTAyND8gV2hlcmUgZG9lcyBpdCBjb21lIGZyb20/IFBsZWFzZSBhZGQgYSBjb21tZW50 IAphbmQgZXhwbGFpbiBpbiB0aGUgY29tbWl0IG1lc3NhZ2UuCgpBbHNvLCB5b3UgY291bGQgbWFr ZSB0aGUgY29kZSBtb3JlIHJlYWRhYmxlIGFuZCB1c2luZyAiMTYgPDwgMjAiLgoKPiArICAgICAg ICBwcmludGsoWEVOTE9HX1dBUk5JTkcgIkFsbG9jYXRpbmcgJWx1IGhvc3QgTFBJcywgcGxlYXNl IGxpbWl0IHdpdGggLS1tYXhfbHBpX2JpdHNcbiIsCgpUaGUgY29tbWFuZCBsaW5lIG9wdGlvbnMg b24geGVuIGRvZXMgbm90IHN0YXJ0IHdpdGggIi0tIi4gQWxzbyB0aGUgdXNlciAKbWF5IGhhdmUg cHVycG9zZWZ1bGx5IGNob3NlbiBhIHZhbHVlIGhpZ2hlciB0aGFuIDE2IDw8IDIwLiBTbyB0aGlz IApjb21tZW50IHNlZW0gYSBiaWcgd2VpcmQuIEhvdyBhYm91dDoKCiIlbHUgaG9zdCBMUElzIHdp bGwgYWxsb2NhdGVkLCB0byBsaW1pdCBtZW1vcnkgdXNhZ2UgcGxlYXNlIHJlc3RyaWN0IGl0IAp3 aXRoIG1heF9scGlfYml0cy5cbiIuCgo+ICsgICAgICAgICAgICAgICAgbHBpX2RhdGEubnJfaG9z dF9scGlzKTsKClBsZWFzZSB1c2Ugd2FybmluZ19hZGQsIGl0IHdpbGwgZ2F0aGVyIGF0IHRoZSBl bmQgb2YgdGhlIGJvb3QuCgo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2NvbmZp Zy5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9jb25maWcuaAo+IGluZGV4IGIyZWRmOTUuLjFmNzMw Y2UgMTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9jb25maWcuaAo+ICsrKyBiL3hl bi9pbmNsdWRlL2FzbS1hcm0vY29uZmlnLmgKPiBAQCAtMTksNiArMTksOCBAQAo+ICAjZGVmaW5l IEJJVFNfUEVSX0xPTkcgKEJZVEVTX1BFUl9MT05HIDw8IDMpCj4gICNkZWZpbmUgUE9JTlRFUl9B TElHTiBCWVRFU19QRVJfTE9ORwo+Cj4gKyNkZWZpbmUgQklUU19QRVJfTE9OR19MT05HIChzaXpl b2YgKGxvbmcgbG9uZykgKiBCSVRTX1BFUl9CWVRFKQo+ICsKPiAgLyogeGVuX3Vsb25nX3QgaXMg YWx3YXlzIDY0IGJpdHMgKi8KPiAgI2RlZmluZSBCSVRTX1BFUl9YRU5fVUxPTkcgNjQKPgo+IGRp ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2dpY192M19kZWZzLmggYi94ZW4vaW5jbHVk ZS9hc20tYXJtL2dpY192M19kZWZzLmgKPiBpbmRleCA2YmQyNWE1Li43Y2RlYmM1IDEwMDY0NAo+ IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljX3YzX2RlZnMuaAo+ICsrKyBiL3hlbi9pbmNs dWRlL2FzbS1hcm0vZ2ljX3YzX2RlZnMuaAo+IEBAIC00NCw3ICs0NCwxMCBAQAo+ICAjZGVmaW5l IEdJQ0NfU1JFX0VMMl9FTkVMMSAgICAgICAgICAgKDFVTCA8PCAzKQo+Cj4gIC8qIEFkZGl0aW9u YWwgYml0cyBpbiBHSUNEX1RZUEVSIGRlZmluZWQgYnkgR0lDdjMgKi8KPiAtI2RlZmluZSBHSUNE X1RZUEVfSURfQklUU19TSElGVCAxOQo+ICsjZGVmaW5lIEdJQ0RfVFlQRV9JRF9CSVRTX1NISUZU ICAgICAgMTkKPiArI2RlZmluZSBHSUNEX1RZUEVfSURfQklUUyhyKSAgICAgKCgoKHIpID4+IEdJ Q0RfVFlQRV9JRF9CSVRTX1NISUZUKSAmIDB4MWYpICsgMSkKClBsZWFzZSBhbGlnbiB3aXRoIHRo ZSByZXN0LgoKWy4uLl0KCj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljX3Yz X2l0cy5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfaXRzLmgKPiBpbmRleCA3ZDg4OTg3 Li43YzVhMmZhIDEwMDY0NAo+IC0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljX3YzX2l0cy5o Cj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfaXRzLmgKPiBAQCAtNzYsNyArNzYs MTAgQEAgdm9pZCBnaWN2M19pdHNfZHRfaW5pdChjb25zdCBzdHJ1Y3QgZHRfZGV2aWNlX25vZGUg Km5vZGUpOwo+Cj4gIGJvb2wgZ2ljdjNfaXRzX2hvc3RfaGFzX2l0cyh2b2lkKTsKPgo+IC0vKiBJ bml0aWFsaXplIHRoZSBob3N0IHN0cnVjdHVyZXMgZm9yIHRoZSBob3N0IElUU2VzLiAqLwo+ICtp bnQgZ2ljdjNfbHBpX2luaXRfcmRpc3Qodm9pZCBfX2lvbWVtICogcmRpc3RfYmFzZSk7Cj4gKwo+ ICsvKiBJbml0aWFsaXplIHRoZSBob3N0IHN0cnVjdHVyZXMgZm9yIExQSXMgYW5kIHRoZSBob3N0 IElUU2VzLiAqLwo+ICtpbnQgZ2ljdjNfbHBpX2luaXRfaG9zdF9scGlzKHVuc2lnbmVkIGludCBu cl9scGlzKTsKCkFnYWluLCBpbiB0aGUgaW1wbGVtZW50YXRpb24sIHRoZSBwYXJhbWV0ZXIgaXMg Y2FsbGVkICJod19scGlfYml0cyIuIApQbGVhc2Ugc3RheSBjb25zaXN0ZW50LgoKCj4gIGludCBn aWN2M19pdHNfaW5pdCh2b2lkKTsKPgo+ICAjZWxzZQo+IEBAIC05Miw2ICs5NSwxNiBAQCBzdGF0 aWMgaW5saW5lIGJvb2wgZ2ljdjNfaXRzX2hvc3RfaGFzX2l0cyh2b2lkKQo+ICAgICAgcmV0dXJu IGZhbHNlOwo+ICB9Cj4KPiArc3RhdGljIGlubGluZSBpbnQgZ2ljdjNfbHBpX2luaXRfcmRpc3Qo dm9pZCBfX2lvbWVtICogcmRpc3RfYmFzZSkKPiArewo+ICsgICAgcmV0dXJuIC1FTk9ERVY7Cj4g K30KPiArCj4gK3N0YXRpYyBpbmxpbmUgaW50IGdpY3YzX2xwaV9pbml0X2hvc3RfbHBpcyh1bnNp Z25lZCBpbnQgbnJfbHBpcykKPiArewoKRGl0dG8uCgo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiAr Cj4gIHN0YXRpYyBpbmxpbmUgaW50IGdpY3YzX2l0c19pbml0KHZvaWQpCj4gIHsKPiAgICAgIHJl dHVybiAwOwo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2lycS5oIGIveGVuL2lu Y2x1ZGUvYXNtLWFybS9pcnEuaAo+IGluZGV4IDQ4NDlmMTYuLmY5NDAwOTIgMTAwNjQ0Cj4gLS0t IGEveGVuL2luY2x1ZGUvYXNtLWFybS9pcnEuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0v aXJxLmgKPiBAQCAtMTgsOCArMTgsMTYgQEAgc3RydWN0IGFyY2hfaXJxX2Rlc2Mgewo+ICB9Owo+ Cj4gICNkZWZpbmUgTlJfTE9DQUxfSVJRUwkzMgo+ICsKPiArLyoKPiArICogVGhpcyBvbmx5IGNv dmVycyB0aGUgaW50ZXJydXB0cyB0aGF0IFhlbiBjYXJlcyBhYm91dCwgc28gU0dJcywgUFBJcyBh bmQKPiArICogU1BJcy4gTFBJcyBhcmUgdG9vIG51bWVyb3VzLCBhbHNvIG9ubHkgcHJvcGFnYXRl ZCB0byBndWVzdHMsIHNvIHRoZXkgYXJlCj4gKyAqIG5vdCBpbmNsdWRlZCBpbiB0aGlzIG51bWJl ci4KPiArICovCj4gICNkZWZpbmUgTlJfSVJRUwkJMTAyNAo+Cj4gKyNkZWZpbmUgTFBJX09GRlNF VCAgICAgIDgxOTIKPiArCj4gICNkZWZpbmUgbnJfaXJxcyBOUl9JUlFTCj4gICNkZWZpbmUgbnJf c3RhdGljX2lycXMgTlJfSVJRUwo+ICAjZGVmaW5lIGFyY2hfaHdkb21faXJxcyhkb21pZCkgTlJf SVJRUwo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vYml0b3BzLmggYi94ZW4vaW5jbHVk ZS94ZW4vYml0b3BzLmgKPiBpbmRleCBiZDA4ODNhLi45MjYxZTA2IDEwMDY0NAo+IC0tLSBhL3hl bi9pbmNsdWRlL3hlbi9iaXRvcHMuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL3hlbi9iaXRvcHMuaAo+ IEBAIC01LDExICs1LDE0IEBACj4gIC8qCj4gICAqIENyZWF0ZSBhIGNvbnRpZ3VvdXMgYml0bWFz ayBzdGFydGluZyBhdCBiaXQgcG9zaXRpb24gQGwgYW5kIGVuZGluZyBhdAo+ICAgKiBwb3NpdGlv biBAaC4gRm9yIGV4YW1wbGUKPiAtICogR0VOTUFTSygzMCwgMjEpIGdpdmVzIHVzIHRoZSAzMmJp dCB2ZWN0b3IgMHgwMWZlMDAwMDAuCj4gKyAqIEdFTk1BU0soMzAsIDIxKSBnaXZlcyB1cyB0aGUg MzJiaXQgdmVjdG9yIDB4N2ZlMDAwMDAuCgpZb3Ugc2FpZCwgeW91IHdpbGwgZml4IGl0IHRvbW9y cm93LiBCdXQgZm9yIHJlY29yZCwgdGhpcyBpcyBhIG5ldyAKYWRkaXRpb24gaW4gdGhpcyBzZXJp ZXMgYW5kIHNob3VsZCByZWFsbHkgYmUgYSBzZXBhcmF0ZSBwYXRjaCB3aXRoIHRoZSAKYXBwcm9w cmlhdGUgbWFpbnRhaW5lcnMgQ0NlZC4KCj4gICAqLwo+ICAjZGVmaW5lIEdFTk1BU0soaCwgbCkg XAo+ICAgICAgKCgofjBVTCkgPDwgKGwpKSAmICh+MFVMID4+IChCSVRTX1BFUl9MT05HIC0gMSAt IChoKSkpKQo+Cj4gKyNkZWZpbmUgR0VOTUFTS19VTEwoaCwgbCkgXAo+ICsgICAgKCgofjBVTEwp IDw8IChsKSkgJiAofjBVTEwgPj4gKEJJVFNfUEVSX0xPTkdfTE9ORyAtIDEgLSAoaCkpKSkKClRo aXMgc2hvdWxkIGFsc28gYmUgYSBzZXBhcmF0ZSBwYXRjaCB3aXRoIEJJVFNfUEVSX0xPTkdfTE9O RyB0b28uIFBsZWFzZSAKdGFrZSBhIGxvb2sgYXQgaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9y Zy9wYXRjaC84ODI0MDkxLwpmb3Igc29tZSBzdWdnZXN0aW9uIGFib3V0IHRoaXMuCgo+ICsKPiAg LyoKPiAgICogZmZzOiBmaW5kIGZpcnN0IGJpdCBzZXQuIFRoaXMgaXMgZGVmaW5lZCB0aGUgc2Ft ZSB3YXkgYXMKPiAgICogdGhlIGxpYmMgYW5kIGNvbXBpbGVyIGJ1aWx0aW4gZmZzIHJvdXRpbmVz LCB0aGVyZWZvcmUKPgoKQ2hlZXJzLAoKLS0gCkp1bGllbiBHcmFsbAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApY ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==