From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH 6/6] xen/arm: platforms/tegra: Ensure the hwdom can only affect its own interrupts Date: Thu, 13 Apr 2017 16:54:35 -0700 (PDT) Message-ID: References: <1491508074-31647-1-git-send-email-cjp256@gmail.com> <1491508074-31647-7-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-7-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 T24gVGh1LCA2IEFwciAyMDE3LCBDaHJpcyBQYXR0ZXJzb24gd3JvdGU6Cj4gRnJvbTogQ2hyaXMg UGF0dGVyc29uIDxwYXR0ZXJzb25jQGFpbmZvc2VjLmNvbT4KPiAKPiBTZXZlcmFsIFRlZ3JhIGhh cmR3YXJlIGRldmljZXMsIGFuZCB0aGUgVGVncmEgZGV2aWNlIHRyZWUsIGV4cGVjdAo+IHRoZSBw cmVzZW5jZSBvZiBhIFRlZ3JhIExlZ2FjeSBJbnRlcnJ1cHQgQ29udHJvbGxlciAoTElDKSBpbiB0 aGUgaGFyZHdhcmUKPiBkb21haW4uIEFjY29yZGluZ2x5LCB3ZSdsbCBuZWVkIHRvIGV4cG9zZSAo bW9zdCBvZikgdGhlIExJQydzIHJlZ2lzdGVycwo+IHRvIHRoZSBoYXJkd2FyZSBkb21haW4uCj4g Cj4gQXMgdGhlIFRlZ3JhIExJQyBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBtb2RpZnkgaW50ZXJy dXB0IGRlbGl2ZXJ5IChlLmcuCj4gYnkgbWFza2luZyBpbnRlcnJ1cHRzLCBmb3JjaW5nIGFzc2Vy dGluZy9jbGVhcmluZyB0aGVtLCBvciBhZGp1c3RpbmcKPiB0aGVpciBwcm9yaXR5KSwgaXQncyBp bXBvcnRhbnQgdGhhdCB0aGUgaGFyZHdhcmUgZG9tYWluJ3MgYWNjZXNzIGJlCj4gbWVkaWF0ZWQu IFRoaXMgY29tbWl0IGFkZHMgcmVhZC93cml0ZSBoYW5kbGVycyB0aGF0IHByb2hpYml0Cj4gbW9k aWZpY2F0aW9uIG9mIHJlZ2lzdGVyIHNlY3Rpb25zIGNvcnJlc3BvbmRpbmcgdG8gaW50ZXJydXB0 cyBub3Qgb3duZWQKPiBieSB0aGUgaGFyZHdhcmUgZG9tYWluLgo+IAo+IE5vdGUgdGhhdCB0aGlz IGlzIHdyaXR0ZW4gdG8gYmUgZG9tYWluIGFnbm9zdGljOyB0aGlzIGFsbG93cyB0aGUKPiBwb3Rl bnRpYWwgdG8gZS5nLiBtYXAgdGhlIGljdGxyIGludG8gbXVsdGlwbGUgZG9tYWlucyBpZiB0aGlz IGlzIGRlc2lyZWQKPiBmb3IgcGFzc3Rocm91Z2ggaW4gdGhlIGZ1dHVyZS4KPiAKPiBBdXRob3Jl ZC1ieTogS3lsZSBUZW1raW4gPHRlbWtpbmtAYWluZm9zZWMuY29tPgo+IFNpZ25lZC1vZmYtYnk6 IEt5bGUgVGVta2luIDx0ZW1raW5rQGFpbmZvc2VjLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBDaHJp cyBQYXR0ZXJzb24gPHBhdHRlcnNvbmNAYWluZm9zZWMuY29tPgo+IC0tLQo+IAo+IGNoYW5nZXMg c2luY2UgcmZjOgo+IC0gZG9jdW1lbnRhdGlvbiwgZm9ybWF0dGluZyAmIGNvZGUgc3R5bGUgY2xl YW51cAo+IC0gZHJvcCB0ZWdyYV9pbml0IGNoYW5nZXMgKGZvbGRlZCBpbnRvIHBhdGNoIDQpCj4g Cj4gLS0tCj4gIHhlbi9hcmNoL2FybS9wbGF0Zm9ybXMvTWFrZWZpbGUgICAgICAgICAgICB8ICAg MiArCj4gIHhlbi9hcmNoL2FybS9wbGF0Zm9ybXMvdGVncmEtbWxpYy5jICAgICAgICB8IDI2MSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICB4ZW4vYXJjaC9hcm0vcGxhdGZvcm1zL3Rl Z3JhLmMgICAgICAgICAgICAgfCAgMTMgKysKPiAgeGVuL2luY2x1ZGUvYXNtLWFybS9wbGF0Zm9y bXMvdGVncmEtbWxpYy5oIHwgIDM0ICsrKysKPiAgNCBmaWxlcyBjaGFuZ2VkLCAzMTAgaW5zZXJ0 aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gvYXJtL3BsYXRmb3Jtcy90ZWdy YS1tbGljLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL2FzbS1hcm0vcGxhdGZv cm1zL3RlZ3JhLW1saWMuaAo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vcGxhdGZvcm1z L01ha2VmaWxlIGIveGVuL2FyY2gvYXJtL3BsYXRmb3Jtcy9NYWtlZmlsZQo+IGluZGV4IGQ3MDMz ZDIuLjU3MDFlNjIgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL3BsYXRmb3Jtcy9NYWtlZmls ZQo+ICsrKyBiL3hlbi9hcmNoL2FybS9wbGF0Zm9ybXMvTWFrZWZpbGUKPiBAQCAtNyw2ICs3LDgg QEAgb2JqLSQoQ09ORklHX0FSTV8zMikgKz0gcmNhcjIubwo+ICBvYmotJChDT05GSUdfQVJNXzY0 KSArPSBzZWF0dGxlLm8KPiAgb2JqLSQoQ09ORklHX0FSTV8zMikgKz0gc3VueGkubwo+ICBvYmot JChDT05GSUdfQVJNXzMyKSArPSB0ZWdyYS5vCj4gK29iai0kKENPTkZJR19BUk1fMzIpICs9IHRl Z3JhLW1saWMubwo+ICBvYmotJChDT05GSUdfQVJNXzY0KSArPSB0ZWdyYS5vCj4gK29iai0kKENP TkZJR19BUk1fNjQpICs9IHRlZ3JhLW1saWMubwo+ICBvYmotJChDT05GSUdfQVJNXzY0KSArPSB4 Z2VuZS1zdG9ybS5vCj4gIG9iai0kKENPTkZJR19BUk1fNjQpICs9IHhpbGlueC16eW5xbXAubwo+ IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vcGxhdGZvcm1zL3RlZ3JhLW1saWMuYyBiL3hlbi9h cmNoL2FybS9wbGF0Zm9ybXMvdGVncmEtbWxpYy5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBp bmRleCAwMDAwMDAwLi5hZDc3NzY2Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3hlbi9hcmNoL2Fy bS9wbGF0Zm9ybXMvdGVncmEtbWxpYy5jCj4gQEAgLTAsMCArMSwyNjAgQEAKPiArLyoKPiArICog eGVuL2FyY2gvYXJtL3RlZ3JhX21saWMuYwo+ICsgKgo+ICsgKiBNZWRpYXRvciBmb3IgVGVncmEg TGVnYWN5IEludGVycnVwdCBDb250cm9sbGVyCj4gKyAqCj4gKyAqIFRoaXMgbW9kdWxlIGFsbG93 IHRoZSBoYXJkd2FyZSBkb21haW4gdG8gaGF2ZSBhY2Nlc3MgdG8gdGhlIHNlY3Rpb25zIG9mCj4g KyAqIHRoZSBsZWdhY3kgaW50ZXJydXB0IGNvbnRyb2xsZXIgdGhhdCBjb3JyZXNwb25kIHRvIGl0 cyBkZXZpY2VzLAo+ICsgKiBidXQgZGlzYWxsb3cgYWNjZXNzIHRvIHRoZSBzZWN0aW9ucyBjb250 cm9sbGVkIGJ5IG90aGVyIGRvbWFpbnMKPiArICogb3IgYnkgWGVuLgo+ICsgKgo+ICsgKiBLeWxl IFRlbWtpbjsgQ29weXJpZ2h0IChjKSAyMDE2IEFzc3VyZWQgSW5mb3JtYXRpb24gU2VjdXJpdHks IEluYy4KPiArICogQ2hyaXMgUGF0dGVyc29uOyBDb3B5cmlnaHQgKGMpIDIwMTYgQXNzdXJlZCBJ bmZvcm1hdGlvbiBTZWN1cml0eSwgSW5jLgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ICsgKiBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQo+ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgo+ICsgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPiArICogTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo+ICsg KiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKi8KPiAr Cj4gKyNpbmNsdWRlIDx4ZW4vbGliLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vc3RkYm9vbC5oPgo+ICsj aW5jbHVkZSA8eGVuL3NjaGVkLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vdm1hcC5oPgo+ICsjaW5jbHVk ZSA8eGVuL2lvY2FwLmg+Cj4gKwo+ICsjaW5jbHVkZSA8YXNtL2lvLmg+Cj4gKyNpbmNsdWRlIDxh c20vZ2ljLmg+Cj4gKyNpbmNsdWRlIDxhc20vcGxhdGZvcm0uaD4KPiArI2luY2x1ZGUgPGFzbS9w bGF0Zm9ybXMvdGVncmEuaD4KPiArI2luY2x1ZGUgPGFzbS9wbGF0Zm9ybXMvdGVncmEtbWxpYy5o Pgo+ICsjaW5jbHVkZSA8YXNtL21taW8uaD4KPiArI2luY2x1ZGUgPHhlbi9wZXJmYy5oPgo+ICsK PiArc3RhdGljIGludCB0ZWdyYV9tbGljX21taW9fcmVhZChzdHJ1Y3QgdmNwdSAqdiwgbW1pb19p bmZvX3QgKmluZm8sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyX3QgKnIs IHZvaWQgKnByaXYpOwo+ICtzdGF0aWMgaW50IHRlZ3JhX21saWNfbW1pb193cml0ZShzdHJ1Y3Qg dmNwdSAqdiwgbW1pb19pbmZvX3QgKmluZm8sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZWdpc3Rlcl90IHIsIHZvaWQgKnByaXYpOwo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBt bWlvX2hhbmRsZXJfb3BzIHRlZ3JhX21saWNfbW1pb19oYW5kbGVyID0gewo+ICsgICAgLnJlYWQg ID0gdGVncmFfbWxpY19tbWlvX3JlYWQsCj4gKyAgICAud3JpdGUgPSB0ZWdyYV9tbGljX21taW9f d3JpdGUsCj4gK307Cj4gKwo+ICsvKgo+ICsgKiBQYXJzZXMgYSBMSUMgTU1JTyByZWFkIG9yIHdy aXRlLCBhbmQgZXh0cmFjdHMgdGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0bwo+ICsgKiBjb21wbGV0 ZSB0aGUgcmVxdWVzdC4KPiArICoKPiArICogaW5mbzogSW5mb3JtYXRpb24gZGVzY3JpYmluZyB0 aGUgTU1JTyByZWFkL3dyaXRlIGJlaW5nIHBlcmZvcm1lZAo+ICsgKiBpY3Rscl9pbmRleDogVGhl IGludGVycnVwdCBjb250cm9sbGVyIG51bWJlciBpbiB0aGUgaWN0bHIgKGUuZy4gMC01KQo+ICsg KiByZWdpc3Rlcl9vZmZzZXQ6IFRoZSByZWdpc3RlciBvZmZzZXQgaW50byB0aGUgc3BlY2lmaWVk IGludGVycnVwdCBjb250cm9sbGVyCj4gKyAqICAgICAgICAoZS5nLiBURUdSQV9JQ1RMUl9DUFVf SUVSX1NFVCkKPiArICogaXJxX2Jhc2U6IFRoZSBudW1iZXIgb2YgdGhlIGZpcnN0IElSUSByZXBy ZXNlbnRlZCBieSB0aGUgZ2l2ZW4gaWN0bHIuCj4gKyAqLwo+ICtzdGF0aWMgdm9pZCB0ZWdyYV9t bGljX3BhcnNlX21taW9fcmVxdWVzdChtbWlvX2luZm9fdCAqaW5mbywKPiArICAgIHVpbnQzMl90 ICppY3Rscl9pbmRleCwgdWludDMyX3QgKnJlZ2lzdGVyX29mZnNldCwgdWludDMyX3QgKmlycV9i YXNlKQoKc3R5bGU6IHBhcmFtZXRlcnMgYWxpZ25tZW50CgoKPiArewo+ICsgICAgLyogRGV0ZXJt aW5lIHRoZSBvZmZzZXQgb2YgdGhlIGFjY2VzcyBpbnRvIHRoZSBJQ1RMUiByZWdpb24uICovCj4g KyAgICB1aW50MzJfdCBvZmZzZXQgPSBpbmZvLT5ncGEgLSBURUdSQV9JQ1RMUl9CQVNFOwo+ICsg ICAgdWludDMyX3QgaWN0bHIgPSBvZmZzZXQgLyBURUdSQV9JQ1RMUl9TSVpFOwo+ICsgICAgdWlu dDMyX3QgcmVnID0gb2Zmc2V0ICUgVEVHUkFfSUNUTFJfU0laRTsKPiArCj4gKyAgICBpZiAoIGlj dGxyX2luZGV4ICkKPiArICAgICAgICAqaWN0bHJfaW5kZXggPSBpY3RscjsKPiArCj4gKyAgICBp ZiAoIHJlZ2lzdGVyX29mZnNldCApCj4gKyAgICAgICAgKnJlZ2lzdGVyX29mZnNldCA9IHJlZzsK PiArCj4gKyAgICBpZiAoIGlycV9iYXNlICkKPiArICAgICAgICAqaXJxX2Jhc2UgPSAoaWN0bHIg KiBURUdSQV9JUlFTX1BFUl9JQ1RMUikgKyBOUl9MT0NBTF9JUlFTOwo+ICsKPiArICAgIC8qIEVu c3VyZSB0aGF0IHdlJ3ZlIG9ubHkgYmVlbiBoYW5kZWQgYSB2YWxpZCBvZmZzZXQgd2l0aGluIG91 ciByZWdpb24uICovCj4gKyAgICBCVUdfT04oaWN0bHIgPj0gVEVHUkFfSUNUTFJfQ09VTlQpOwo+ ICsgICAgQlVHX09OKG9mZnNldCA+PSAoVEVHUkFfSUNUTFJfQ09VTlQgKiBURUdSQV9JQ1RMUl9T SVpFKSk7Cj4gKyAgICBCVUdfT04oKGljdGxyICogVEVHUkFfSUNUTFJfU0laRSArIHJlZykgIT0g b2Zmc2V0KTsKPiArfQo+ICsKPiArLyoKPiArICogUmV0dXJucyB0cnVlIGlmZiB0aGUgZ2l2ZW4g SVJRIGlzIGN1cnJlbnRseSByb3V0ZWQgdG8gdGhlIGdpdmVuIGRvbWFpbi4KPiArICovCj4gK3N0 YXRpYyBib29sIGlycV9vd25lZF9ieV9kb21haW4oaW50IGlycSwgc3RydWN0IGRvbWFpbiAqZCkK PiArewo+ICsgICAgc3RydWN0IGlycV9kZXNjICpkZXNjID0gaXJxX3RvX2Rlc2MoaXJxKTsKPiAr ICAgIGRvbWlkX3QgZG9taWQ7Cj4gKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICsKPiArICAg IEJVR19PTighZGVzYyk7Cj4gKwo+ICsgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmRlc2MtPmxvY2ss IGZsYWdzKTsKPiArICAgIGRvbWlkID0gaXJxX2dldF9kb21haW5faWQoZGVzYyk7Cj4gKyAgICBz cGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXNjLT5sb2NrLCBmbGFncyk7Cj4gKwo+ICsgICAgcmV0 dXJuIChkLT5kb21haW5faWQgPT0gZG9taWQpOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBNZWRpYXRl cyBhbiBNTUlPLXJlYWQgdG8gdGhlIFRlZ3JhIGxlZ2FjeSBpbnRlcnJ1cHQgY29udHJvbGxlci4K PiArICogRW5zdXJlcyB0aGF0IGVhY2ggZG9tYWluIG9ubHkgaXMgcGFzc2VkIGludGVycnVwdCBz dGF0ZSBmb3IgaXRzCj4gKyAqIG93biBpbnRlcnVwdHMuCj4gKyAqLwo+ICtzdGF0aWMgaW50IHRl Z3JhX21saWNfbW1pb19yZWFkKHN0cnVjdCB2Y3B1ICp2LCBtbWlvX2luZm9fdCAqaW5mbywKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3Rlcl90ICp0YXJnZXRfcmVnaXN0 ZXIsIHZvaWQgKnByaXYpCj4gK3sKPiArICAgIHJlZ2lzdGVyX3QgcmF3X3ZhbHVlOwo+ICsgICAg dW5zaWduZWQgaW50IGljdGxyX2luZGV4Owo+ICsgICAgdW5zaWduZWQgaW50IHJlZ2lzdGVyX29m ZnNldDsKPiArICAgIHVuc2lnbmVkIGludCBpcnFfYmFzZTsKPiArICAgIGludCBpOwo+ICsKPiAr ICAgIHBlcmZjX2luY3IodGVncmFfbWxpY19yZWFkcyk7Cj4gKwo+ICsgICAgdGVncmFfbWxpY19w YXJzZV9tbWlvX3JlcXVlc3QoaW5mbywgJmljdGxyX2luZGV4LCAmcmVnaXN0ZXJfb2Zmc2V0LAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaXJxX2Jhc2UpOwo+ICsK PiArICAgIC8qIFNhbml0eSBjaGVjayB0aGUgcmVhZC4gKi8KPiArICAgIGlmICggcmVnaXN0ZXJf b2Zmc2V0ICYgMHgzICkKPiArICAgIHsKPiArICAgICAgICBwcmludGsoWEVOTE9HX0dfRVJSICJk JXU6IFRlZ3JhIExJQzogQXR0ZW1wdCB0byByZWFkIHVuYWxpZ25lZCBpY3RsciBhZGRyIgo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIiglIiBQUklwYWRkciAiKVxuIiwgY3VycmVudC0+ ZG9tYWluLT5kb21haW5faWQsIGluZm8tPmdwYSk7Cj4gKyAgICAgICAgZG9tYWluX2NyYXNoX3N5 bmNocm9ub3VzKCk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKCBpbmZvLT5kYWJ0LnNpemUgIT0g REFCVF9XT1JEICkKPiArICAgIHsKPiArICAgICAgICBwcmludGsoWEVOTE9HX0dfRVJSICJkJXU6 IFRlZ3JhIExJQzogTm9uLXdvcmQgcmVhZCBmcm9tIGljdGxyIGFkZHIiCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiJSIgUFJJcGFkZHIgIlxuIiwgY3VycmVudC0+ZG9tYWluLT5kb21h aW5faWQsIGluZm8tPmdwYSk7Cj4gKyAgICAgICAgZG9tYWluX2NyYXNoX3N5bmNocm9ub3VzKCk7 Cj4gKyAgICB9Cj4gKwo+ICsKPiArICAgIC8qIFBlcmZvcm0gdGhlIGNvcmUgaWN0bHIgcmVhZC4g Ki8KPiArICAgIHJhd192YWx1ZSA9IHRlZ3JhX2xpY19yZWFkbChpY3Rscl9pbmRleCwgcmVnaXN0 ZXJfb2Zmc2V0KTsKPiArCj4gKyAgICAvKgo+ICsgICAgICogV2UgZG9uJ3Qgd2FudCB0byBsZWFr IGluZm9ybWF0aW9uIGFib3V0IGludGVycnVwdHMgbm90IGNvbnRyb2xsZWQKPiArICAgICAqIGJ5 IHRoZSBhY3RpdmUgZG9tYWluLiBUaHVzLCB3ZSdsbCB6ZXJvIG91dCBhbnkgaWN0bHIgc2xvdHMg Zm9yCj4gKyAgICAgKiBJUlFzIG5vdCBvd25lZCBieSB0aGUgZ2l2ZW4gZG9tYWluLgo+ICsgICAg ICovCj4gKyAgICBmb3IgKCBpID0gMDsgaSA8IFRFR1JBX0lSUVNfUEVSX0lDVExSOyArK2kgKSB7 CgpzdHlsZTogeyBvbiBuZXdsaW5lCgoKPiArICAgICAgICBpbnQgaXJxID0gaXJxX2Jhc2UgKyBp Owo+ICsKPiArICAgICAgICBpZiAoICFpcnFfb3duZWRfYnlfZG9tYWluKGlycSwgY3VycmVudC0+ ZG9tYWluKSApCj4gKyAgICAgICAgICAgIHJhd192YWx1ZSAmPSB+KCAxIDw8IGkgKTsKPiArICAg IH0KPiArCj4gKyAgICAvKiBGaW5hbGx5LCBzZXQgdGhlIHRhcmdldCByZWdpc3RlciB0byBvdXIg cmVhZCB2YWx1ZSAqLwo+ICsgICAgKnRhcmdldF9yZWdpc3RlciA9IHJhd192YWx1ZTsKPiArICAg IHJldHVybiAxOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBNZWRpYXRlcyBhbiBNTUlPLXJlYWQgdG8g dGhlIFRlZ3JhIGxlZ2FjeSBpbnRlcnJ1cHQgY29udHJvbGxlci4KPiArICogRW5zdXJlcyB0aGF0 IGVhY2ggZG9tYWluIG9ubHkgY2FuIG9ubHkgY29udHJvbCBpcyBvd24gaW50ZXJydXB0cy4KPiAr ICovCj4gK3N0YXRpYyBpbnQgdGVncmFfbWxpY19tbWlvX3dyaXRlKHN0cnVjdCB2Y3B1ICp2LCBt bWlvX2luZm9fdCAqaW5mbywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZWdpc3Rlcl90IG5ld192YWx1ZSwgdm9pZCAqcHJpdikKPiArewo+ICsgICAgcmVnaXN0ZXJfdCB3 cml0ZV9tYXNrID0gMDsKPiArICAgIHJlZ2lzdGVyX3QgcmF3X3ZhbHVlOwo+ICsgICAgdW5zaWdu ZWQgaW50IGljdGxyX2luZGV4Owo+ICsgICAgdW5zaWduZWQgaW50IHJlZ2lzdGVyX29mZnNldDsK PiArICAgIHVuc2lnbmVkIGludCBpcnFfYmFzZTsKPiArICAgIGludCBpOwo+ICsKPiArICAgIHBl cmZjX2luY3IodGVncmFfbWxpY193cml0ZXMpOwo+ICsKPiArICAgIHRlZ3JhX21saWNfcGFyc2Vf bW1pb19yZXF1ZXN0KGluZm8sICZpY3Rscl9pbmRleCwgJnJlZ2lzdGVyX29mZnNldCwKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpcnFfYmFzZSk7Cj4gKwo+ICsgICAgLyog U2FuaXR5IGNoZWNrIHRoZSByZWFkLiAqLwo+ICsgICAgaWYgKCByZWdpc3Rlcl9vZmZzZXQgJiAw eDMgKSB7CgpzdHlsZTogeyBvbiBuZXdsaW5lCgoKPiArICAgICAgICBwcmludGsoWEVOTE9HX0df RVJSICJkJXU6IFRlZ3JhIExJQzogQXR0ZW1wdCB0byB3cml0ZSB1bmFsaWduZWQgaWN0bHIgYWRk ciIKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoJSIgUFJJcGFkZHIgIilcbiIsIGN1 cnJlbnQtPmRvbWFpbi0+ZG9tYWluX2lkLCBpbmZvLT5ncGEpOwo+ICsgICAgICAgIGRvbWFpbl9j cmFzaF9zeW5jaHJvbm91cygpOwo+ICsgICAgICAgIHJldHVybiAwOwo+ICsgICAgfQo+ICsKPiAr ICAgIGlmICggaW5mby0+ZGFidC5zaXplICE9IERBQlRfV09SRCApIHsKCnN0eWxlOiB7IG9uIG5l d2xpbmUKCgo+ICsgICAgICAgIHByaW50ayhYRU5MT0dfR19FUlIgImQldTogVGVncmEgTElDOiBO b24td29yZCB3cml0ZSB0byBpY3RsciBhZGRyIgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIiUiIFBSSXBhZGRyICJcbiIsIGN1cnJlbnQtPmRvbWFpbi0+ZG9tYWluX2lkLCBpbmZvLT5n cGEpOwo+ICsgICAgICAgIGRvbWFpbl9jcmFzaF9zeW5jaHJvbm91cygpOwo+ICsgICAgICAgIHJl dHVybiAwOwo+ICsgICAgfQo+ICsKPiArICAgIC8qCj4gKyAgICAgKiBXZSBvbmx5IHdhbnQgdG8g d3JpdGUgdG8gYml0cyB0aGF0IGNvcnJlc3BvbmQgdG8gaW50ZXJydXB0cyB0aGF0IHRoZQo+ICsg ICAgICogY3VycmVudCBkb21haW4gY29udHJvbHMuIEFjY29yZGluZ2x5LCB3ZSdsbCBjcmVhdGUg YSBtYXNrIHRoYXQgaGFzIGEKPiArICAgICAqIHNpbmdsZSBiaXQgc2V0IGZvciBlYWNoIHdyaXRh YmxlIGJpdC4KPiArICAgICAqLwo+ICsgICAgZm9yICggaSA9IDA7IGkgPCBURUdSQV9JUlFTX1BF Ul9JQ1RMUjsgKytpICkgewoKc3R5bGU6IHsgb24gbmV3bGluZQoKCj4gKyAgICAgICAgaW50IGly cSA9IGlycV9iYXNlICsgaTsKPiArCj4gKyAgICAgICAgaWYgKCBpcnFfb3duZWRfYnlfZG9tYWlu KGlycSwgY3VycmVudC0+ZG9tYWluKSApCj4gKyAgICAgICAgICAgIHdyaXRlX21hc2sgfD0gKCAx IDw8IGkgKTsKPiArICAgIH0KPiArCj4gKyAgICAvKgo+ICsgICAgICogUmVhZCBpbiB0aGUgb3Jp Z2luYWwgdmFsdWUuIFdlJ2xsIHVzZSB0aGlzIHRvIGVuc3VyZSB0aGF0IHdlIG1haW50YWluCj4g KyAgICAgKiB0aGUgYml0IHZhbHVlcyBmb3IgYW55IGJpdHMgbm90IGFjdGl2ZWx5IGNvbnRyb2xs ZWQgYnkgdGhpcyBkb21haW4uIE5vdGUKPiArICAgICAqIHRoYXQgd2UgY2FuIHBlcmZvcm0gdGhp cyByZWFkIHdpdGhvdXQgc2lkZSBlZmZlY3RzLCBzbyB0aGlzIHNob3VsZG4ndAo+ICsgICAgICog Y2hhbmdlIHRoZSBhY3R1YWwgb3BlcmF0aW9uIGJlaW5nIHBlcmZvcm1lZC4KPiArICAgICAqLwo+ ICsgICAgcmF3X3ZhbHVlID0gdGVncmFfbGljX3JlYWRsKGljdGxyX2luZGV4LCByZWdpc3Rlcl9v ZmZzZXQpOwo+ICsKPiArICAgIC8qIFJlbW92ZSBiaXRzIHRoYXQgdGhlIGd1ZXN0IGlzIG5vdCBh bGxvd2VkIHRvIHdyaXRlLiAqLwo+ICsgICAgcmF3X3ZhbHVlICY9IH53cml0ZV9tYXNrOwo+ICsg ICAgcmF3X3ZhbHVlIHw9ICh3cml0ZV9tYXNrICYgbmV3X3ZhbHVlKTsKPiArCj4gKyAgICAvKiBG aW5hbGx5IHBlcmZvcm0gdGhlIHdyaXRlLiAqLwo+ICsgICAgdGVncmFfbGljX3dyaXRlbChpY3Rs cl9pbmRleCwgcmVnaXN0ZXJfb2Zmc2V0LCByYXdfdmFsdWUpOwo+ICsgICAgcmV0dXJuIDE7Cj4g K30KPiArCj4gKy8qCj4gKyAqIFNldCB1cCB0aGUgaGFyZHdhcmUgZG9tYWluIGZvciB0aGUgVGVn cmEsIGdpdmluZyBpdCBtZWRpYXRlZCBhY2Nlc3MgdG8gdGhlCj4gKyAqIHBsYXRmb3JtJ3MgbGVn YWN5IGludGVycnVwdCBjb250cm9sbGVyLgo+ICsgKi8KPiAraW50IGRvbWFpbl90ZWdyYV9tbGlj X2luaXQoc3RydWN0IGRvbWFpbiAqZCkKPiArewo+ICsgICAgaW50IHJjOwo+ICsgICAgdW5zaWdu ZWQgbG9uZyBwZm5fc3RhcnQsIHBmbl9lbmQ7Cj4gKwo+ICsgICAgQVNTRVJUKCBpc19oYXJkd2Fy ZV9kb21haW4oZCkgKTsKPiArCj4gKyAgICBwZm5fc3RhcnQgPSBwYWRkcl90b19wZm4oVEVHUkFf SUNUTFJfQkFTRSk7Cj4gKyAgICBwZm5fZW5kID0gRElWX1JPVU5EX1VQKFRFR1JBX0lDVExSX0JB U0UgKyAoVEVHUkFfSUNUTFJfU0laRSAqIFRFR1JBX0lDVExSX0NPVU5UKSwgUEFHRV9TSVpFKTsK PiArCj4gKyAgICAvKiBGb3JjZSBhbGwgYWNjZXNzIHRvIHRoZSBpY3RsciB0byBnbyB0aHJvdWdo IG91ciBtZWRpYXRvci4gKi8KPiArICAgIHJjID0gaW9tZW1fZGVueV9hY2Nlc3MoZCwgcGZuX3N0 YXJ0LCBwZm5fZW5kKTsKPiArCj4gKyAgICBpZiAoIHJjICkKPiArICAgICAgICBwYW5pYygiRmFp bGVkIHRvIGRlbnkgYWNjZXNzIHRvIHRoZSBUZWdyYSBMSUMgaW9tZW0iKTsKPiArCj4gKyAgICBy YyA9IHVubWFwX21taW9fcmVnaW9ucyhkLCBfZ2ZuKHBmbl9zdGFydCksCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwZm5fZW5kIC0gcGZuX3N0YXJ0ICsgMSwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF9tZm4ocGZuX3N0YXJ0KSk7CgpQbGVhc2UgYXZvaWQgbWFwcGluZyB0 aGUgcmVnaW9uIGF0IGJvb3QgdGltZSwgaWYgcG9zc2libGUuIE1heWJlIHlvdSBjYW4KZG8gdGhh dCB1c2luZyBibGFja2xpc3RfZGV2PwoKCj4gKyAgICBpZiAoIHJjICkKPiArICAgICAgICBwYW5p YygiRmFpbGVkIHRvIGRlbnkgYWNjZXNzIHRvIHRoZSBUZWdyYSBMSUMiKTsKPiArCj4gKyAgICBy ZWdpc3Rlcl9tbWlvX2hhbmRsZXIoZCwgJnRlZ3JhX21saWNfbW1pb19oYW5kbGVyLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgIFRFR1JBX0lDVExSX0JBU0UsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgVEVHUkFfSUNUTFJfU0laRSAqIFRFR1JBX0lDVExSX0NPVU5ULAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4g Kwo+ICsvKgo+ICsgKiBMb2NhbCB2YXJpYWJsZXM6Cj4gKyAqIG1vZGU6IEMKPiArICogYy1maWxl LXN0eWxlOiAiQlNEIgo+ICsgKiBjLWJhc2ljLW9mZnNldDogNAo+ICsgKiBpbmRlbnQtdGFicy1t b2RlOiBuaWwKPiArICogRW5kOgo+ICsgKi8KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3Bs YXRmb3Jtcy90ZWdyYS5jIGIveGVuL2FyY2gvYXJtL3BsYXRmb3Jtcy90ZWdyYS5jCj4gaW5kZXgg YmRkOTk2Ni4uZWU2MjcwOCAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC9hcm0vcGxhdGZvcm1zL3Rl Z3JhLmMKPiArKysgYi94ZW4vYXJjaC9hcm0vcGxhdGZvcm1zL3RlZ3JhLmMKPiBAQCAtMjAsMTEg KzIwLDE0IEBACj4gICNpbmNsdWRlIDx4ZW4vc3RkYm9vbC5oPgo+ICAjaW5jbHVkZSA8eGVuL3Nj aGVkLmg+Cj4gICNpbmNsdWRlIDx4ZW4vdm1hcC5oPgo+ICsjaW5jbHVkZSA8eGVuL2lvY2FwLmg+ Cj4gIAo+ICAjaW5jbHVkZSA8YXNtL2lvLmg+Cj4gICNpbmNsdWRlIDxhc20vZ2ljLmg+Cj4gICNp bmNsdWRlIDxhc20vcGxhdGZvcm0uaD4KPiAgI2luY2x1ZGUgPGFzbS9wbGF0Zm9ybXMvdGVncmEu aD4KPiArI2luY2x1ZGUgPGFzbS9wbGF0Zm9ybXMvdGVncmEtbWxpYy5oPgo+ICsjaW5jbHVkZSA8 YXNtL21taW8uaD4KPiAgCj4gIC8qIFBlcm1hbmVudCBtYXBwaW5nIHRvIHRoZSBUZWdyYSBsZWdh Y3kgaW50ZXJydXB0IGNvbnRyb2xsZXIuICovCj4gIHN0YXRpYyB2b2lkIF9faW9tZW0gKnRlZ3Jh X2ljdGxyX2Jhc2U7Cj4gQEAgLTIxMSw2ICsyMTQsMTUgQEAgc3RhdGljIHZvaWQgdGVncmFfcm91 dGVfaXJxX3RvX3hlbihzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2MsIHVuc2lnbmVkIGludCBwcmlvcml0 eSkKPiAgfQo+ICAKPiAgLyoKPiArICogVXNlIHBsYXRmb3JtIHNwZWNpZmljIG1hcHBpbmcgZm9y IGhvb2sgdG8gaW5pdGlhbGl6ZSBtZWRpYXRlZCBsZWdhY3kKPiArICogaW50ZXJydXB0IGNvbnRy b2xsZXIgZm9yIGhhcmR3YXJlIGRvbWFpbi4KPiArICovCj4gK3N0YXRpYyBpbnQgdGVncmFfc3Bl Y2lmaWNfbWFwcGluZyhzdHJ1Y3QgZG9tYWluICpkKQo+ICt7Cj4gKyAgICByZXR1cm4gZG9tYWlu X3RlZ3JhX21saWNfaW5pdChkKTsKCmRvbWFpbl90ZWdyYV9tbGljX2luaXQgZG9lc24ndCBtYXAg YW55dGhpbmcuIEluIGZhY3QsIGl0IHVubWFwcyBhIG1lbW9yeQpyZWdpb24uIFBsZWFzZSBjYWxs IGRvbWFpbl90ZWdyYV9tbGljX2luaXQgZnJvbSBhbm90aGVyIGZ1bmN0aW9uLCBtYXliZQp0ZWdy YV9pbml0LgoKCj4gK30KPiArCj4gKy8qCj4gICAqIFJlYWQgcmVnaXN0ZXIgZnJvbSBzcGVjaWZp ZWQgbGVnYWN5IGludGVycnVwdCBpbnRlcnJ1cHQgY29udHJvbGxlci4KPiAgICovCj4gIHVpbnQz Ml90IHRlZ3JhX2xpY19yZWFkbCh1bnNpZ25lZCBpbnQgaWN0bHJfaW5kZXgsIHVuc2lnbmVkIGlu dCByZWdpc3Rlcl9vZmZzZXQpCj4gQEAgLTMwMCw2ICszMTIsNyBAQCBQTEFURk9STV9TVEFSVCh0 ZWdyYSwgIlRlZ3JhIikKPiAgICAgIC5pcnFfaXNfcm91dGFibGUgPSB0ZWdyYV9pcnFfaXNfcm91 dGFibGUsCj4gICAgICAucm91dGVfaXJxX3RvX3hlbiA9IHRlZ3JhX3JvdXRlX2lycV90b194ZW4s Cj4gICAgICAucm91dGVfaXJxX3RvX2d1ZXN0ID0gdGVncmFfcm91dGVfaXJxX3RvX2d1ZXN0LAo+ ICsgICAgLnNwZWNpZmljX21hcHBpbmcgPSB0ZWdyYV9zcGVjaWZpY19tYXBwaW5nLAo+ICBQTEFU Rk9STV9FTkQKPiAgCj4gIC8qCj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vcGxh dGZvcm1zL3RlZ3JhLW1saWMuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vcGxhdGZvcm1zL3RlZ3Jh LW1saWMuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uZmVlMTBjNAo+ IC0tLSAvZGV2L251bGwKPiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL3BsYXRmb3Jtcy90ZWdy YS1tbGljLmgKPiBAQCAtMCwwICsxLDM0IEBACj4gKy8qCj4gKyAqIHhlbi9hcmNoL2FybS92dWFy dC5oCj4gKyAqCj4gKyAqIE1lZGlhdGVkIFRlZ3JhIExlZ2FjeSBJbnRlcnJ1cHQgQ29udHJvbGxl cgo+ICsgKgo+ICsgKiBLeWxlIFRlbWtpbjsgQ29weXJpZ2h0IChjKSAyMDE2IEFzc3VyZWQgSW5m b3JtYXRpb24gU2VjdXJpdHksIEluYy4KPiArICogQ2hyaXMgUGF0dGVyc29uOyBDb3B5cmlnaHQg KGMpIDIwMTYgQXNzdXJlZCBJbmZvcm1hdGlvbiBTZWN1cml0eSwgSW5jLgo+ICsgKgo+ICsgKiBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgo+ICsgKiAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiArICogYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQo+ICsgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19BU01fQVJNX1BMQVRGT1JNU19URUdSQV9N TElDX0gKPiArI2RlZmluZSBfX0FTTV9BUk1fUExBVEZPUk1TX1RFR1JBX01MSUNfSAo+ICsKPiAr aW50IGRvbWFpbl90ZWdyYV9tbGljX2luaXQoc3RydWN0IGRvbWFpbiAqZCk7Cj4gKwo+ICsjZW5k aWYgLyogX19BU01fQVJNX1BMQVRGT1JNU19URUdSQV9NTElDX0ggKi8KPiArCj4gKy8qCj4gKyAq IExvY2FsIHZhcmlhYmxlczoKPiArICogbW9kZTogQwo+ICsgKiBjLWZpbGUtc3R5bGU6ICJCU0Qi Cj4gKyAqIGMtYmFzaWMtb2Zmc2V0OiA0Cj4gKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAo+ICsg KiBFbmQ6Cj4gKyAqLwo+IC0tIAo+IDIuMS40Cj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBs aXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK