From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH 4/6] xen/arm: platforms: Add Tegra platform to support basic IRQ routing Date: Thu, 13 Apr 2017 16:46:23 -0700 (PDT) Message-ID: References: <1491508074-31647-1-git-send-email-cjp256@gmail.com> <1491508074-31647-5-git-send-email-cjp256@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1491508074-31647-5-git-send-email-cjp256@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Chris Patterson Cc: Chris Patterson , julien.grall@arm.com, sstabellini@kernel.org, temkink@ainfosec.com, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org T24gVGh1LCA2IEFwciAyMDE3LCBDaHJpcyBQYXR0ZXJzb24gd3JvdGU6Cj4gRnJvbTogIkNocmlz IFBhdHRlcnNvbiIgPHBhdHRlcnNvbmNAYWluZm9zZWMuY29tPgo+IAo+IFRlZ3JhIGRldmljZXMg aGF2ZSBhIGxlZ2FjeSBpbnRlcnJ1cHQgY29udHJvbGxlciAobGljLCBvciBpY3RscikgdGhhdAo+ IG11c3QgYmUgcHJvZ3JhbW1lZCBpbiBwYXJhbGxlbCB3aXRoIHRoZWlyIHByaW1hcnkgR0lDLiBG b3IgYWxsIGludGVudHMKPiBhbmQgcHVycG9zZXMsIHdlIHRyZWF0IHRoZXNlIGRldmljZXMgYXR0 YWNoZWQgdG8gdGhpcyBjb250cm9sbGVyIGFzCj4gY29ubmVjdGVkIHRvIHRoZSBwcmltYXJ5IEdJ QywgYXMgaXQgd2lsbCBiZSBoYW5kbGluZyB0aGVpciBpbnRlcnJ1cHRzLgo+IAo+IFRoaXMgY29t bWl0IGFkZHMgc3VwcG9ydCBmb3IgZXhwb3NpbmcgdGhlIGljdGxyIHRvIHRoZSBoYXJkd2FyZSBk b21haW47Cj4gYnV0IGEgZnV0dXJlIGNvbW1pdCB3aWxsIGV4dGVuZCB0aGlzIHRvIHN1cHBvcnQg ZXhwb3NpbmcgYSB2aXJ0dWFsaXplZAo+IHZlcnNpb24gb2YgdGhlIGljdGxyIHRvIHRoZSBoYXJk d2FyZSBkb21haW4sIGFuZCB0byBlbnN1cmUgdGhhdAo+IGludGVycnVwdHMgYXJlIHVubWFza2Vk IHByb3Blcmx5IHdoZW4gcm91dGVkIHRvIGEgWGVuLCBvciB0byBhIGRvbWFpbgo+IG90aGVyIHRo YW4gdGhlIGhhcmR3YXJlIGRvbWFpbi4KPiAKPiBBdXRob3JlZC1ieTogS3lsZSBUZW1raW4gPHRl bWtpbmtAYWluZm9zZWMuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEt5bGUgVGVta2luIDx0ZW1raW5r QGFpbmZvc2VjLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBQYXR0ZXJzb24gPHBhdHRlcnNv bmNAYWluZm9zZWMuY29tPgo+IC0tLQo+IAo+IGNoYW5nZXMgc2luY2UgcmZjOgo+IC0gdXNlIGJv b2wgaW5zdGVhZCBvZiBib29sX3QKPiAtIGZvcm1hdHRpbmcgJiBjb2RlIHN0eWxlIGNsZWFudXAK PiAtIGZpeCBkdCBjb21wYXQgbGFiZWwgKG52aWRpYSx0ZWdyYTEyMCAtPiBudmlkaWEsdGVncmEx MjQpIGZvciBLMQo+IC0gc2VwYXJhdGUgbWVkaWF0ZWQgbGVnYWN5IGludGVycnVwdCBjb250cm9s bGVyIGludG8gaXRzIG93biBtb2R1bGUKPiAtIHNwbGl0IHRlZ3JhX2ljdGxyX3NldF9pbnRlcnJ1 cHRfZW5hYmxlKCkgaW50bwo+ICAgdGVncmFfbGljX3NldF9pbnRlcnJ1cHRfdHlwZV9ub3JtYWwo KSBhbmQKPiAgIHRlZ3JhX2xpY19zZXRfaW50ZXJydXB0X2VuYWJsZSgpCj4gLSBhZGRlZCBhIGNv dXBsZSBoZWxwZXIgZnVuY3Rpb25zIHRvIHJlZHVjZSBkdXBsaWNhdGVkIGxvZ2ljCj4gLSBhZGRl ZCB3cmFwcGVyIHRlZ3JhX2xpY19yZWFkbCBhbmQgd3JpdGVsIGZ1bmN0aW9ucyBmb3IgZXh0ZXJu YWwgdXNlIChtbGljKQo+IC0gcmUtb3JkZXIgZGVmaW5lcyBpbiB0ZWdyYS5oCj4gLSBjbGVhbnVw IHRlZ3JhX2luaXQoKSB0aGF0IHdhcyBwcmV2aW91c2x5IGluIHBhdGNoIDYKPiAKPiAtLS0KPiAK PiAgeGVuL2FyY2gvYXJtL3BsYXRmb3Jtcy9NYWtlZmlsZSAgICAgICB8ICAgMiArCj4gIHhlbi9h cmNoL2FybS9wbGF0Zm9ybXMvdGVncmEuYyAgICAgICAgfCAzMTMgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwo+ICB4ZW4vaW5jbHVkZS9hc20tYXJtL3BsYXRmb3Jtcy90ZWdyYS5o IHwgIDU0ICsrKysrKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDM2OSBpbnNlcnRpb25zKCspCj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC9hcm0vcGxhdGZvcm1zL3RlZ3JhLmMKPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL2FzbS1hcm0vcGxhdGZvcm1zL3RlZ3JhLmgKPiAKPiBk aWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3BsYXRmb3Jtcy9NYWtlZmlsZSBiL3hlbi9hcmNoL2Fy bS9wbGF0Zm9ybXMvTWFrZWZpbGUKPiBpbmRleCA0OWZhNjgzLi5kNzAzM2QyIDEwMDY0NAo+IC0t LSBhL3hlbi9hcmNoL2FybS9wbGF0Zm9ybXMvTWFrZWZpbGUKPiArKysgYi94ZW4vYXJjaC9hcm0v cGxhdGZvcm1zL01ha2VmaWxlCj4gQEAgLTYsNSArNiw3IEBAIG9iai0kKENPTkZJR19BUk1fMzIp ICs9IG9tYXA1Lm8KPiAgb2JqLSQoQ09ORklHX0FSTV8zMikgKz0gcmNhcjIubwo+ICBvYmotJChD T05GSUdfQVJNXzY0KSArPSBzZWF0dGxlLm8KPiAgb2JqLSQoQ09ORklHX0FSTV8zMikgKz0gc3Vu eGkubwo+ICtvYmotJChDT05GSUdfQVJNXzMyKSArPSB0ZWdyYS5vCj4gK29iai0kKENPTkZJR19B Uk1fNjQpICs9IHRlZ3JhLm8KPiAgb2JqLSQoQ09ORklHX0FSTV82NCkgKz0geGdlbmUtc3Rvcm0u bwo+ICBvYmotJChDT05GSUdfQVJNXzY0KSArPSB4aWxpbngtenlucW1wLm8KPiBkaWZmIC0tZ2l0 IGEveGVuL2FyY2gvYXJtL3BsYXRmb3Jtcy90ZWdyYS5jIGIveGVuL2FyY2gvYXJtL3BsYXRmb3Jt cy90ZWdyYS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5iZGQ5OTY2 Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3hlbi9hcmNoL2FybS9wbGF0Zm9ybXMvdGVncmEuYwo+ IEBAIC0wLDAgKzEsMzEyIEBACj4gKy8qCj4gKyAqIE5WSURJQSBUZWdyYSBzcGVjaWZpYyBzZXR0 aW5ncwo+ICsgKgo+ICsgKiBJYW4gQ2FtcGJlbGw7IENvcHlyaWdodCAoYykgMjAxNCBDaXRyaXgg U3lzdGVtcwo+ICsgKiBLeWxlIFRlbWtpbjsgQ29weXJpZ2h0IChjKSAyMDE2IEFzc3VyZWQgSW5m b3JtYXRpb24gU2VjdXJpdHksIEluYy4KPiArICogQ2hyaXMgUGF0dGVyc29uOyBDb3B5cmlnaHQg KGMpIDIwMTYgQXNzdXJlZCBJbmZvcm1hdGlvbiBTZWN1cml0eSwgSW5jLgo+ICsgKgo+ICsgKiBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgo+ICsgKiAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiArICogYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQo+ICsgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDx4ZW4vbGliLmg+Cj4gKyNpbmNsdWRlIDx4 ZW4vc3RkYm9vbC5oPgo+ICsjaW5jbHVkZSA8eGVuL3NjaGVkLmg+Cj4gKyNpbmNsdWRlIDx4ZW4v dm1hcC5oPgo+ICsKPiArI2luY2x1ZGUgPGFzbS9pby5oPgo+ICsjaW5jbHVkZSA8YXNtL2dpYy5o Pgo+ICsjaW5jbHVkZSA8YXNtL3BsYXRmb3JtLmg+Cj4gKyNpbmNsdWRlIDxhc20vcGxhdGZvcm1z L3RlZ3JhLmg+Cj4gKwo+ICsvKiBQZXJtYW5lbnQgbWFwcGluZyB0byB0aGUgVGVncmEgbGVnYWN5 IGludGVycnVwdCBjb250cm9sbGVyLiAqLwo+ICtzdGF0aWMgdm9pZCBfX2lvbWVtICp0ZWdyYV9p Y3Rscl9iYXNlOwo+ICsKPiArLyoKPiArICogTGlzdCBvZiBsZWdhY3kgaW50ZXJydXB0IGNvbnRy b2xsZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG8gcm91dGUKPiArICogVGVncmEgaW50ZXJydXB0cy4K PiArICovCj4gK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdGVncmFfaW50ZXJydXB0X2NvbXBh dFtdIF9faW5pdGNvbnN0ID0KPiArewo+ICsgICAgIm52aWRpYSx0ZWdyYTEyNC1pY3RsciIsICAv KiBUZWdyYSBLMSBjb250cm9sbGVycyAqLwo+ICsgICAgIm52aWRpYSx0ZWdyYTIxMC1pY3RsciIg ICAvKiBUZWdyYSBYMSBjb250cm9sbGVycyAqLwo+ICt9Owo+ICsKPiArLyoKPiArICogUmV0dXJu cyB0cnVlIGlmZiB0aGUgZ2l2ZW4gSVJRIGJlbG9uZ3MgdG8gYSBzdXBwb3J0ZWQgdGVncmEgaW50 ZXJydXB0Cj4gKyAqIGNvbnRyb2xsZXIuCj4gKyAqLwo+ICtzdGF0aWMgYm9vbCB0ZWdyYV9pcnFf YmVsb25nc190b19pY3Rscihjb25zdCBzdHJ1Y3QgZHRfcmF3X2lycSAqIHJpcnEpICB7Cj4gKyAg ICBpbnQgaTsKPiArCj4gKyAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUodGVncmFfaW50 ZXJydXB0X2NvbXBhdCk7IGkrKyApIHsKPiArICAgICAgICBpZiAoIGR0X2RldmljZV9pc19jb21w YXRpYmxlKHJpcnEtPmNvbnRyb2xsZXIsIHRlZ3JhX2ludGVycnVwdF9jb21wYXRbaV0pICkKPiAr ICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIGZhbHNl Owo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBSZXR1cm5zIHRydWUgaWZmIHRoZSBnaXZlbiBJUlEgaXMg cm91dGFibGUgLS0gdGhhdCBpcywgaWYgaXQgaXMgZGVzY2VuZGVkCj4gKyAqIGZyb20gdGhlIHBs YXRmb3JtJ3MgcHJpbWFyeSBHSUMuCj4gKyAqLwo+ICtzdGF0aWMgYm9vbCB0ZWdyYV9pcnFfaXNf cm91dGFibGUoY29uc3Qgc3RydWN0IGR0X3Jhd19pcnEgKiByaXJxKQo+ICt7Cj4gKyAgICAvKiBJ ZiB0aGUgSVJRIGNvbm5lY3RzIGRpcmVjdGx5IHRvIG91ciBHSUMsIGl0J3MgdHJpdmlhbGx5IHJv dXRhYmxlLiAqLwo+ICsgICAgaWYgKCByaXJxLT5jb250cm9sbGVyID09IGR0X2ludGVycnVwdF9j b250cm9sbGVyICkKPiArICAgICAgICByZXR1cm4gdHJ1ZTsKPiArCj4gKyAgICAvKgo+ICsgICAg ICogSWYgdGhlIElSUSBiZWxvbmdzIHRvIGEgbGVnYWN5IGludGVycnVwdCBjb250cm9sbGVyLCB0 aGVuIGl0J3MKPiArICAgICAqIGVmZmVjdGl2ZWx5IG93bmVkIGJ5IHRoZSBHSUMsIGFuZCBpcyBy b3V0YWJsZS4KPiArICAgICAqLwo+ICsgICAgaWYgKCB0ZWdyYV9pcnFfYmVsb25nc190b19pY3Rs cihyaXJxKSApCj4gKyAgICAgICAgcmV0dXJuIHRydWU7Cj4gKwo+ICsgICAgcmV0dXJuIGZhbHNl Owo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBQbGF0Zm9ybS1zcGVjaWZpYyByZXNldCBjb2RlIGZvciB0 aGUgVGVncmEgZGV2aWNlcy4KPiArICogU2hvdWxkIG5vdCByZXR1cm4uCj4gKyAqLwo+ICtzdGF0 aWMgdm9pZCB0ZWdyYV9yZXNldCh2b2lkKQo+ICt7Cj4gKyAgICB2b2lkIF9faW9tZW0gKmFkZHI7 Cj4gKyAgICB1MzIgdmFsOwo+ICsKPiArICAgIGFkZHIgPSBpb3JlbWFwX25vY2FjaGUoVEVHUkFf UkVTRVRfQkFTRSwgVEVHUkFfUkVTRVRfU0laRSk7Cj4gKyAgICBpZiAoICFhZGRyICkKPiArICAg IHsKPiArICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAiVGVncmE6IFVuYWJsZSB0byBtYXAgdGVn cmEgcmVzZXQgYWRkcmVzcy4gUmVzZXQgZmFpbGVkIVxuIik7Cj4gKyAgICAgICAgcmV0dXJuOwo+ ICsgICAgfQo+ICsKPiArICAgIC8qIFdyaXRlIGludG8gdGhlIHJlc2V0IGRldmljZS4gKi8KPiAr ICAgIHZhbCA9IHJlYWRsKGFkZHIpIHwgVEVHUkFfUkVTRVRfTUFTSzsKPiArICAgIHdyaXRlbCh2 YWwsIGFkZHIpOwo+ICsKPiArICAgIC8qIFNob3VsZCBub3QgZ2V0IGhlcmUgKi8KPiArICAgIGlv dW5tYXAoYWRkcik7Cj4gK30KPiArCj4gKy8qCj4gKyAqIENvbnZlcnQgaXJxIGxpbmUgdG8gaW5k ZXggb2Ygc2VydmljaW5nIGxlZ2FjeSBpbnRlcnJ1cHQgY29udHJvbGxlci4KPiArICovCj4gK3N0 YXRpYyB1bnNpZ25lZCBpbnQgdGVncmFfbGljX2lycV90b19pY3Rscl9pbmRleCh1bnNpZ25lZCBp bnQgaXJxKQo+ICt7Cj4gKyAgICByZXR1cm4gKGlycSAtIE5SX0xPQ0FMX0lSUVMpIC8gVEVHUkFf SVJRU19QRVJfSUNUTFI7Cj4gK30KPiArCj4gKy8qCj4gKyAqIENvbnZlcnQgaXJxIGxpbmUgdG8g aW5kZXggb2YgaXJxIHdpdGhpbiBzZXJ2aWNpbmcgaW50ZXJydXB0IGNvbnRyb2xsZXIuCj4gKyAq Lwo+ICtzdGF0aWMgdW5zaWduZWQgaW50IHRlZ3JhX2xpY19pcnFfdG9faWN0bHJfaXJxX2luZGV4 KHVuc2lnbmVkIGludCBpcnEpCj4gK3sKPiArICAgIHJldHVybiAoaXJxIC0gTlJfTE9DQUxfSVJR UykgJSBURUdSQV9JUlFTX1BFUl9JQ1RMUjsKPiArfQo+ICsKPiArLyoKPiArICogTWFyayBpbnRl cnJ1cHQgYXMgbm9ybWFsIHJhdGhlciB0aGFuIGEgZmFzdCBJUlEuCj4gKyAqLwo+ICtzdGF0aWMg dm9pZCB0ZWdyYV9saWNfc2V0X2ludGVycnVwdF90eXBlX25vcm1hbCh1bnNpZ25lZCBpbnQgaXJx KQo+ICt7Cj4gKyAgICB1aW50MzJfdCBwcmV2aW91c19pZXBfY2xhc3M7Cj4gKyAgICB1bnNpZ25l ZCBpbnQgaWN0bHJfaW5kZXggPSB0ZWdyYV9saWNfaXJxX3RvX2ljdGxyX2luZGV4KGlycSk7Cj4g KyAgICB1bnNpZ25lZCBpbnQgaWN0bHJfaXJxX2luZGV4ID0gdGVncmFfbGljX2lycV90b19pY3Rs cl9pcnFfaW5kZXgoaXJxKTsKPiArICAgIHVpbnQzMl90IG1hc2sgPSBCSVQoaWN0bHJfaXJxX2lu ZGV4KTsKPiArCj4gKyAgICAvKiBNYXJrIHRoZSBpbnRlcnJ1cHQgYXMgYSBub3JtYWwgaW50ZXJy dXB0LS0gbm90IGEgZmFzdCBJUlEuICovCj4gKyAgICBwcmV2aW91c19pZXBfY2xhc3MgPSB0ZWdy YV9saWNfcmVhZGwoaWN0bHJfaW5kZXgsIFRFR1JBX0lDVExSX0NQVV9JRVBfQ0xBU1MpOwo+ICsg ICAgdGVncmFfbGljX3dyaXRlbChpY3Rscl9pbmRleCwgVEVHUkFfSUNUTFJfQ1BVX0lFUF9DTEFT UywgcHJldmlvdXNfaWVwX2NsYXNzICYgfm1hc2spOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBFbmFi bGUvZGlzYWJsZSBpbnRlcnJ1cHQgbGluZSBmb3Igc3BlY2lmaWVkIGlycS4KPiArICovCj4gK3N0 YXRpYyB2b2lkIHRlZ3JhX2xpY19zZXRfaW50ZXJydXB0X2VuYWJsZSh1bnNpZ25lZCBpbnQgaXJx LCBib29sIGVuYWJsZWQpCj4gK3sKPiArICAgIHVuc2lnbmVkIGludCBpY3Rscl9pbmRleCA9IHRl Z3JhX2xpY19pcnFfdG9faWN0bHJfaW5kZXgoaXJxKTsKPiArICAgIHVuc2lnbmVkIGludCBpY3Rs cl9pcnFfaW5kZXggPSB0ZWdyYV9saWNfaXJxX3RvX2ljdGxyX2lycV9pbmRleChpcnEpOwo+ICsg ICAgdWludDMyX3QgbWFzayA9IEJJVChpY3Rscl9pcnFfaW5kZXgpOwo+ICsKPiArICAgIGlmICgg ZW5hYmxlZCApCj4gKyAgICAgICAgdGVncmFfbGljX3dyaXRlbChpY3Rscl9pbmRleCwgVEVHUkFf SUNUTFJfQ1BVX0lFUl9TRVQsIG1hc2spOwo+ICsgICAgZWxzZQo+ICsgICAgICAgIHRlZ3JhX2xp Y193cml0ZWwoaWN0bHJfaW5kZXgsIFRFR1JBX0lDVExSX0NQVV9JRVJfQ0xSLCBtYXNrKTsKPiAr fQo+ICsKPiArLyoKPiArICogUm91dGVzIGFuIElSUSB0byBhIGd1ZXN0LCBhcHBseWluZyBzYW5l IHZhbHVlcyB0byB0aGUgaWN0bHIgbWFza3MuCj4gKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBv ciBhbiBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCj4gKyAqLwo+ICtzdGF0aWMgaW50IHRlZ3JhX3Jv dXRlX2lycV90b19ndWVzdChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgdmlycSwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2MsIHVu c2lnbmVkIGludCBwcmlvcml0eSkKPiArewo+ICsgICAgLyogUHJvZ3JhbSB0aGUgY29yZSBHSUMg dG8gZGVsaXZlciB0aGUgaW50ZXJydXB0IHRvIHRoZSBndWVzdC4gKi8KPiArICAgIGludCByYyA9 IGdpY19yb3V0ZV9pcnFfdG9fZ3Vlc3QoZCwgdmlycSwgZGVzYywgcHJpb3JpdHkpOwo+ICsKPiAr ICAgIC8qIElmIHdlIGNvdWxkbid0IHJvdXRlIHRoZSBJUlEgdmlhIHRoZSBHSUMsIGJhaWwgb3V0 LiAqLwo+ICsgICAgaWYgKCByYyApCj4gKyAgICB7Cj4gKyAgICAgICAgcHJpbnRrKFhFTkxPR19F UlIgIlRlZ3JhIExJQzogQ291bGRuJ3QgcHJvZ3JhbSBHSUMgdG8gcm91dGUgdklSUSAlZCAoJWQp LlxuIiwKPiArICAgICAgICAgICAgICAgZGVzYy0+aXJxLCByYyk7Cj4gKyAgICAgICAgcmV0dXJu IHJjOwo+ICsgICAgfQoKUmVtb3ZlIHRoZSB3YXJuaW5nLgoKCj4gKyAgICAvKgo+ICsgICAgICog SWYgdGhpcyBpcyBhIGxvY2FsIElSUSwgaXQncyBub3QgbWFza2VkIGJ5IHRoZSBpY3Rsciwgc28g d2UKPiArICAgICAqIGRvbid0IG5lZWQgdG8gcGVyZm9ybSBhbnkgaWN0bHIgbWFuaXB1bGF0aW9u Lgo+ICsgICAgICovCj4gKyAgICBpZiAoIGRlc2MtPmlycSA8IE5SX0xPQ0FMX0lSUVMgKQo+ICsg ICAgICAgIHJldHVybiByYzsKPiArCj4gKyAgICAvKgo+ICsgICAgICogSWYgdGhpcyBpcyB0aGUg aGFyZHdhcmUgZG9tYWluLCBpdCB3aWxsIGhhdmUgcmVhbCBhY2Nlc3MgdG8gdGhlIGljdGxyLAo+ ICsgICAgICogYW5kIHdpbGwgcHJvZ3JhbSB0aGUgaWN0bHIgaXRzZWxmLCBzbyBpdCBzaG91bGQg c3RhcnQgd2l0aCB0aGUgaWN0bHIKPiArICAgICAqIGRpc2FibGVkLiBJZiB3ZSdyZSBub3QgdGhl IGh3ZG9tLCB0aGUgZG9tYWluIHdvbid0IGludGVyYWN0IHdpdGggdGhlCj4gKyAgICAgKiBpY3Rs ciwgYW5kIHRoZSBpbnRlcnJ1cHQgc2hvdWxkbid0IGJlIG1hc2tlZC4gIEVpdGhlciB3YXksIGZp cnN0Cj4gKyAgICAgKiBzZXQgdGhlIGludGVycnVwdCB0eXBlIHRvIG5vcm1hbCAoaWYgcHJldmlv dXNseSBzZXQgdG8gZmFzdCBJUlEpLgo+ICsgICAgICovCj4gKyAgICB0ZWdyYV9saWNfc2V0X2lu dGVycnVwdF90eXBlX25vcm1hbChkZXNjLT5pcnEpOwo+ICsgICAgdGVncmFfbGljX3NldF9pbnRl cnJ1cHRfZW5hYmxlKGRlc2MtPmlycSwgIWlzX2hhcmR3YXJlX2RvbWFpbihkKSk7Cj4gKyAgICBy ZXR1cm4gcmM7Cj4gK30KPiArCj4gKwo+ICsvKgo+ICsgKiBSb3V0ZXMgYW4gSVJRIHRvIFhlbi4g VGhpcyBtZXRob2QgYm90aCBwZXJmb3JtcyB0aGUgY29yZSBJUlEgcm91dGluZywgYW5kCj4gKyAq IHNldHMgdXAgYW55IGljdGxyIHJvdXRpbmcgbmVjZXNzYXJ5Lgo+ICsgKi8KPiArc3RhdGljIHZv aWQgdGVncmFfcm91dGVfaXJxX3RvX3hlbihzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2MsIHVuc2lnbmVk IGludCBwcmlvcml0eSkKPiArewo+ICsgICAgdW5zaWduZWQgaW50IGlycSA9IGRlc2MtPmlycTsK PiArCj4gKyAgICAvKiBQcm9ncmFtIHRoZSBjb3JlIEdJQyB0byBkZWxpdmVyIHRoZSBpbnRlcnJ1 cHQgdG8gWGVuLiAqLwo+ICsgICAgZ2ljX3JvdXRlX2lycV90b194ZW4oZGVzYywgcHJpb3JpdHkp Owo+ICsKPiArICAgIC8qCj4gKyAgICAgKiBJZiB0aGlzIGlzIGEgbG9jYWwgSVJRLCBpdCdzIG5v dCBtYXNrZWQgYnkgdGhlIGljdGxyLCBzbyB3ZQo+ICsgICAgICogZG9uJ3QgbmVlZCB0byBwZXJm b3JtIGFueSBpY3RsciBtYW5pcHVsYXRpb24uCj4gKyAgICAgKi8KPiArICAgIGlmICggaXJxIDwg TlJfTE9DQUxfSVJRUyApCj4gKyAgICAgICAgcmV0dXJuOwo+ICsKPiArICAgIC8qCj4gKyAgICAg KiBFbmFibGUgdGhlIGludGVycnVwdCBpbiB0aGUgaWN0bHIuIFhlbiBvbmx5IHVzZXMgdGhlIEdJ QyB0bwo+ICsgICAgICogcGVyZm9ybSBtYXNraW5nLCBzbyB3ZSdsbCBlbmFibGUgdGhlIGludGVy cnVwdCB0byBwcmV2ZW50IGljdGxyCj4gKyAgICAgKiBnYXRpbmcgb2YgdGhlIGludGVycnVwdC4K PiArICAgICAqLwo+ICsgICAgdGVncmFfbGljX3NldF9pbnRlcnJ1cHRfdHlwZV9ub3JtYWwoZGVz Yy0+aXJxKTsKPiArICAgIHRlZ3JhX2xpY19zZXRfaW50ZXJydXB0X2VuYWJsZShkZXNjLT5pcnEs IHRydWUpOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBSZWFkIHJlZ2lzdGVyIGZyb20gc3BlY2lmaWVk IGxlZ2FjeSBpbnRlcnJ1cHQgaW50ZXJydXB0IGNvbnRyb2xsZXIuCj4gKyAqLwo+ICt1aW50MzJf dCB0ZWdyYV9saWNfcmVhZGwodW5zaWduZWQgaW50IGljdGxyX2luZGV4LCB1bnNpZ25lZCBpbnQg cmVnaXN0ZXJfb2Zmc2V0KQo+ICt7Cj4gKyAgICBBU1NFUlQodGVncmFfaWN0bHJfYmFzZSk7Cj4g KyAgICBBU1NFUlQoaWN0bHJfaW5kZXggPCBURUdSQV9JQ1RMUl9DT1VOVCk7Cj4gKyAgICBBU1NF UlQocmVnaXN0ZXJfb2Zmc2V0IDwgVEVHUkFfSUNUTFJfU0laRSk7Cj4gKyAgICByZXR1cm4gcmVh ZGwodGVncmFfaWN0bHJfYmFzZSArIGljdGxyX2luZGV4ICogVEVHUkFfSUNUTFJfU0laRSArCj4g KyAgICAgICAgICAgICAgICAgcmVnaXN0ZXJfb2Zmc2V0KTsKPiArfQo+ICsKPiArLyoKPiArICog V3JpdGUgcmVnaXN0ZXIgZm9yIHNwZWNpZmllZCBsZWdhY3kgaW50ZXJydXB0IGludGVycnVwdCBj b250cm9sbGVyLgo+ICsgKi8KPiArdm9pZCB0ZWdyYV9saWNfd3JpdGVsKHVuc2lnbmVkIGludCBp Y3Rscl9pbmRleCwgdW5zaWduZWQgaW50IHJlZ2lzdGVyX29mZnNldCwgdWludDMyX3QgdmFsdWUp Cj4gK3sKPiArICAgIEFTU0VSVCh0ZWdyYV9pY3Rscl9iYXNlKTsKPiArICAgIEFTU0VSVChpY3Rs cl9pbmRleCA8IFRFR1JBX0lDVExSX0NPVU5UKTsKPiArICAgIEFTU0VSVChyZWdpc3Rlcl9vZmZz ZXQgPCBURUdSQV9JQ1RMUl9TSVpFKTsKPiArICAgIHdyaXRlbCh2YWx1ZSwgdGVncmFfaWN0bHJf YmFzZSArIGljdGxyX2luZGV4ICogVEVHUkFfSUNUTFJfU0laRSArCj4gKyAgICAgICAgICAgcmVn aXN0ZXJfb2Zmc2V0KTsKPiArfQo+ICsKPiArLyoKPiArICogSW5pdGlhbGl6ZSB0aGUgVGVncmEg bGVnYWN5IGludGVycnVwdCBjb250cm9sbGVyLCBwbGFjaW5nIGVhY2ggaW50ZXJydXB0Cj4gKyAq IGludG8gYSBkZWZhdWx0IHN0YXRlLiBUaGVzZSBkZWZhdWx0cyBlbnN1cmUgdGhhdCBzdHJheSBp bnRlcnJ1cHRzIGRvbid0Cj4gKyAqIGFmZmVjdCBYZW4uCj4gKyAqLwo+ICtzdGF0aWMgaW50IHRl Z3JhX2xpY19pbml0KHZvaWQpCj4gK3sKPiArICAgIGludCBpOwo+ICsKPiArICAgIC8qIE1hcCBp biB0aGUgdGVncmEgaWN0bHIuICovCj4gKyAgICB0ZWdyYV9pY3Rscl9iYXNlID0gaW9yZW1hcF9u b2NhY2hlKFRFR1JBX0lDVExSX0JBU0UsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFRFR1JBX0lDVExSX1NJWkUgKiBURUdSQV9JQ1RMUl9DT1VOVCk7Cj4gKwo+ICsg ICAgaWYgKCAhdGVncmFfaWN0bHJfYmFzZSApCj4gKyAgICAgICAgcGFuaWMoIkZhaWxlZCB0byBt YXAgaW4gdGhlIFRlZ3JhIGxlZ2FjeSBpbnRlcnJ1cHQgY29udHJvbGxlciIpOwo+ICsKPiArICAg IC8qIEluaXRpYWxpemUgZWFjaCBvZiB0aGUgbGVnYWN5IGludGVycnVwdCBjb250cm9sbGVycy4g Ki8KPiArICAgIGZvciAoIGkgPSAwOyBpIDwgVEVHUkFfSUNUTFJfQ09VTlQ7IGkrKyApIHsKPiAr Cj4gKyAgICAgICAgLyogQ2xlYXIgdGhlIGludGVycnVwdCBlbmFibGVzIGZvciBldmVyeSBpbnRl cnJ1cHQuICovCj4gKyAgICAgICAgdGVncmFfbGljX3dyaXRlbChpLCBURUdSQV9JQ1RMUl9DUFVf SUVSX0NMUiwgfjApOwo+ICsKPiArICAgICAgICAvKgo+ICsgICAgICAgICAqIE1hcmsgYWxsIG9m IG91ciBpbnRlcnJ1cHRzIGFzIG5vcm1hbCBBUk0gaW50ZXJydXB0cyAoYXMgb3Bwb3NlZAo+ICsg ICAgICAgICAqIHRvIEZhc3QgSW50ZXJydXB0cy4pCj4gKyAgICAgICAgICovCj4gKyAgICAgICAg dGVncmFfbGljX3dyaXRlbChpLCBURUdSQV9JQ1RMUl9DUFVfSUVQX0NMQVNTLCAwKTsKPiArICAg IH0KPiArCj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArLyoqCj4gKyAqICBTdGFydHVwIGNv ZGUgZm9yIHRoZSBUZWdyYS4KPiArICovCj4gK3N0YXRpYyBpbnQgdGVncmFfaW5pdCh2b2lkKQoK X19pbml0CgoKPiArewo+ICsgICAgcmV0dXJuIHRlZ3JhX2xpY19pbml0KCk7Cj4gK30KPiArCj4g Kwo+ICtzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHRlZ3JhX2R0X2NvbXBhdFtdIF9faW5pdGNv bnN0ID0KPiArewo+ICsgICAgIm52aWRpYSx0ZWdyYTEyMCIsICAvKiBUZWdyYSBLMSAqLwoKVGhp cyBpcyBzdGlsbCB0ZWdyYTEyMCAobm90IHRlZ3JhMTI0KSwgaXMgdGhhdCBpbnRlbmRlZD8gSWYg c28sIGl0IGlzCnN0aWxsIG1pc3NpbmcgZnJvbSBhcmNoL2FybSovYm9vdC9kdHMuIERvIHlvdSBo YXZlIGEgcG9pbnRlcj8KCkFsc28sIGRvIHdlIG5lZWQgYm90aCB0ZWdyYV9kdF9jb21wYXQgYW5k IHRlZ3JhX2ludGVycnVwdF9jb21wYXQ/IENhbiB3ZQprZWVwIG9ubHkgb25lPwoKCj4gKyAgICAi bnZpZGlhLHRlZ3JhMjEwIiwgIC8qIFRlZ3JhIFgxICovCj4gKyAgICBOVUxMCj4gK307Cj4gKwo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGR0X2RldmljZV9tYXRjaCB0ZWdyYV9ibGFja2xpc3RfZGV2 W10gX19pbml0Y29uc3QgPQo+ICt7Cj4gKyAgICAvKgo+ICsgICAgICogVGhlIFVBUlRzIHNoYXJl IGEgcGFnZSB3aGljaCBydW5zIHRoZSByaXNrIG9mIG1hcHBpbmcgdGhlIFhlbiBjb25zb2xlCj4g KyAgICAgKiBVQVJUIHRvIGRvbTAsIHNvIGRvbid0IG1hcCBhbnkgb2YgdGhlbS4KPiArICAgICAq Lwo+ICsgICAgRFRfTUFUQ0hfQ09NUEFUSUJMRSgibnZpZGlhLHRlZ3JhMjAtdWFydCIpLAo+ICsg ICAgeyAvKiBzZW50aW5lbCAqLyB9LAo+ICt9Owo+ICsKPiArUExBVEZPUk1fU1RBUlQodGVncmEs ICJUZWdyYSIpCj4gKyAgICAuYmxhY2tsaXN0X2RldiA9IHRlZ3JhX2JsYWNrbGlzdF9kZXYsCj4g KyAgICAuY29tcGF0aWJsZSA9IHRlZ3JhX2R0X2NvbXBhdCwKPiArICAgIC5pbml0ID0gdGVncmFf aW5pdCwKPiArICAgIC5yZXNldCA9IHRlZ3JhX3Jlc2V0LAo+ICsgICAgLmlycV9pc19yb3V0YWJs ZSA9IHRlZ3JhX2lycV9pc19yb3V0YWJsZSwKPiArICAgIC5yb3V0ZV9pcnFfdG9feGVuID0gdGVn cmFfcm91dGVfaXJxX3RvX3hlbiwKPiArICAgIC5yb3V0ZV9pcnFfdG9fZ3Vlc3QgPSB0ZWdyYV9y b3V0ZV9pcnFfdG9fZ3Vlc3QsCj4gK1BMQVRGT1JNX0VORAo+ICsKPiArLyoKPiArICogTG9jYWwg dmFyaWFibGVzOgo+ICsgKiBtb2RlOiBDCj4gKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKPiArICog Yy1iYXNpYy1vZmZzZXQ6IDQKPiArICogdGFiLXdpZHRoOiA0Cj4gKyAqIGluZGVudC10YWJzLW1v ZGU6IG5pbAo+ICsgKiBFbmQ6Cj4gKyAqLwo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20t YXJtL3BsYXRmb3Jtcy90ZWdyYS5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9wbGF0Zm9ybXMvdGVn cmEuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uZTljZDc5Mgo+IC0t LSAvZGV2L251bGwKPiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL3BsYXRmb3Jtcy90ZWdyYS5o Cj4gQEAgLTAsMCArMSw1NCBAQAo+ICsvKgo+ICsgKiBOVklESUEgVGVncmEgcGxhdGZvcm0gZGVm aW5pdGlvbnMKPiArICoKPiArICogS3lsZSBUZW1raW47IENvcHlyaWdodCAoYykgMjAxNiBBc3N1 cmVkIEluZm9ybWF0aW9uIFNlY3VyaXR5LCBJbmMuCj4gKyAqIENocmlzIFBhdHRlcnNvbjsgQ29w eXJpZ2h0IChjKSAyMDE2IEFzc3VyZWQgSW5mb3JtYXRpb24gU2VjdXJpdHksIEluYy4KPiArICoK PiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKPiArICogdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKPiArICog KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICoKPiArICogVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4g KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKPiArICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KPiArICovCj4gKwo+ICsKPiArI2lmbmRlZiBfX0FTTV9BUk1fUExBVEZP Uk1TX1RFR1JBX0gKPiArI2RlZmluZSBfX0FTTV9BUk1fUExBVEZPUk1TX1RFR1JBX0gKPiArCj4g KyNkZWZpbmUgICBURUdSQV9JQ1RMUl9CQVNFICAgICAgICAgICAgMHg2MDAwNDAwMAo+ICsjZGVm aW5lICAgVEVHUkFfSUNUTFJfU0laRSAgICAgICAgICAgIDB4MDAwMDAxMDAKPiArI2RlZmluZSAg IFRFR1JBX0lDVExSX0NPVU5UICAgICAgICAgICA2Cj4gKyNkZWZpbmUgICBURUdSQV9JUlFTX1BF Ul9JQ1RMUiAgICAgICAgMzIKPiArCj4gKyNkZWZpbmUgICBURUdSQV9JQ1RMUl9DUFVfSUVSICAg ICAgICAgMHgyMAo+ICsjZGVmaW5lICAgVEVHUkFfSUNUTFJfQ1BVX0lFUl9TRVQgICAgIDB4MjQK PiArI2RlZmluZSAgIFRFR1JBX0lDVExSX0NQVV9JRVJfQ0xSICAgICAweDI4Cj4gKyNkZWZpbmUg ICBURUdSQV9JQ1RMUl9DUFVfSUVQX0NMQVNTICAgMHgyQwo+ICsKPiArI2RlZmluZSAgIFRFR1JB X0lDVExSX0NPUF9JRVIgICAgICAgICAweDMwCj4gKyNkZWZpbmUgICBURUdSQV9JQ1RMUl9DT1Bf SUVSX1NFVCAgICAgMHgzNAo+ICsjZGVmaW5lICAgVEVHUkFfSUNUTFJfQ09QX0lFUl9DTFIgICAg IDB4MzgKPiArI2RlZmluZSAgIFRFR1JBX0lDVExSX0NPUF9JRVBfQ0xBU1MgICAweDNjCj4gKwo+ ICsjZGVmaW5lICAgVEVHUkFfUkVTRVRfQkFTRSAgICAgICAgICAgIDB4NzAwMGU0MDAKPiArI2Rl ZmluZSAgIFRFR1JBX1JFU0VUX1NJWkUgICAgICAgICAgICA0Cj4gKyNkZWZpbmUgICBURUdSQV9S RVNFVF9NQVNLICAgICAgICAgICAgMHgxMAo+ICsKPiArdWludDMyX3QgdGVncmFfbGljX3JlYWRs KHVuc2lnbmVkIGludCBpY3Rscl9pbmRleCwgdW5zaWduZWQgaW50IHJlZ2lzdGVyX29mZnNldCk7 Cj4gK3ZvaWQgdGVncmFfbGljX3dyaXRlbCh1bnNpZ25lZCBpbnQgaWN0bHJfaW5kZXgsIHVuc2ln bmVkIGludCByZWdpc3Rlcl9vZmZzZXQsIHVpbnQzMl90IHZhbHVlKTsKPiArCj4gKyNlbmRpZiAv KiBfX0FTTV9BUk1fUExBVEZPUk1TX1RFR1JBX0ggKi8KPiArCj4gKy8qCj4gKyAqIExvY2FsIHZh cmlhYmxlczoKPiArICogbW9kZTogQwo+ICsgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCj4gKyAqIGMt YmFzaWMtb2Zmc2V0OiA0Cj4gKyAqIHRhYi13aWR0aDogNAo+ICsgKiBpbmRlbnQtdGFicy1tb2Rl OiBuaWwKPiArICogRW5kOgo+ICsgKi8KPiAtLSAKPiAyLjEuNAo+IAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApY ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==