From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: Re: [PATCH v2 05/27] ARM: GICv3 ITS: introduce ITS command handling Date: Mon, 3 Apr 2017 11:58:07 +0100 Message-ID: <7335b4ff-64a2-052f-c510-0e735db8e23a@arm.com> References: <20170316112030.20419-1-andre.przywara@arm.com> <20170316112030.20419-6-andre.przywara@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cuzeY-0008Hx-J9 for xen-devel@lists.xenproject.org; Mon, 03 Apr 2017 10:56:06 +0000 In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Julien Grall , Stefano Stabellini Cc: xen-devel@lists.xenproject.org, Shanker Donthineni , Vijay Kilari List-Id: xen-devel@lists.xenproject.org SGksCgpPbiAyMi8wMy8xNyAxNTo1OSwgSnVsaWVuIEdyYWxsIHdyb3RlOgo+IEhpIEFuZHJlLAo+ IAo+IE9uIDE2LzAzLzE3IDExOjIwLCBBbmRyZSBQcnp5d2FyYSB3cm90ZToKPj4gVG8gYmUgYWJs ZSB0byBlYXNpbHkgc2VuZCBjb21tYW5kcyB0byB0aGUgSVRTLCBjcmVhdGUgdGhlIHJlc3BlY3Rp dmUKPj4gd3JhcHBlciBmdW5jdGlvbnMsIHdoaWNoIHRha2UgY2FyZSBvZiB0aGUgcmluZyBidWZm ZXIuCj4+IFRoZSBmaXJzdCB0d28gY29tbWFuZHMgd2UgaW1wbGVtZW50IHByb3ZpZGUgbWV0aG9k cyB0byBtYXAgYSBjb2xsZWN0aW9uCj4+IHRvIGEgcmVkaXN0cmlidXRvciAoYWthIGhvc3QgY29y ZSkgYW5kIHRvIGZsdXNoIHRoZSBjb21tYW5kIHF1ZXVlIChTWU5DKS4KPj4gU3RhcnQgdXNpbmcg dGhlc2UgY29tbWFuZHMgZm9yIG1hcHBpbmcgb25lIGNvbGxlY3Rpb24gdG8gZWFjaCBob3N0IENQ VS4KPj4KPj4gU2lnbmVkLW9mZi1ieTogQW5kcmUgUHJ6eXdhcmEgPGFuZHJlLnByenl3YXJhQGFy bS5jb20+Cj4+IC0tLQo+PiAgeGVuL2FyY2gvYXJtL2dpYy12My1pdHMuYyAgICAgICAgIHwgMTgx Cj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4+ICB4ZW4vYXJjaC9h cm0vZ2ljLXYzLWxwaS5jICAgICAgICAgfCAgMjIgKysrKysKPj4gIHhlbi9hcmNoL2FybS9naWMt djMuYyAgICAgICAgICAgICB8ICAxOSArKystCj4+ICB4ZW4vaW5jbHVkZS9hc20tYXJtL2dpY192 M19kZWZzLmggfCAgIDIgKwo+PiAgeGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfaXRzLmggIHwg IDM4ICsrKysrKysrCj4+ICA1IGZpbGVzIGNoYW5nZWQsIDI2MCBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2dpYy12My1pdHMuYyBi L3hlbi9hcmNoL2FybS9naWMtdjMtaXRzLmMKPj4gaW5kZXggZTU2MDFlZC4uNWMxMWIwZCAxMDA2 NDQKPj4gLS0tIGEveGVuL2FyY2gvYXJtL2dpYy12My1pdHMuYwo+PiArKysgYi94ZW4vYXJjaC9h cm0vZ2ljLXYzLWl0cy5jCj4+IEBAIC0xOSwxMSArMTksMTQgQEAKPj4gICAqLwo+Pgo+PiAgI2lu Y2x1ZGUgPHhlbi9saWIuaD4KPj4gKyNpbmNsdWRlIDx4ZW4vZGVsYXkuaD4KPj4gICNpbmNsdWRl IDx4ZW4vbW0uaD4KPj4gICNpbmNsdWRlIDx4ZW4vc2l6ZXMuaD4KPj4gKyNpbmNsdWRlIDxhc20v Z2ljLmg+Cj4+ICAjaW5jbHVkZSA8YXNtL2dpY192M19kZWZzLmg+Cj4+ICAjaW5jbHVkZSA8YXNt L2dpY192M19pdHMuaD4KPj4gICNpbmNsdWRlIDxhc20vaW8uaD4KPj4gKyNpbmNsdWRlIDxhc20v cGFnZS5oPgo+Pgo+PiAgI2RlZmluZSBJVFNfQ01EX1FVRVVFX1NaICAgICAgICAgICAgICAgIFNa XzY0Swo+Pgo+PiBAQCAtMzQsNiArMzcsMTQ1IEBAIGJvb2wgZ2ljdjNfaXRzX2hvc3RfaGFzX2l0 cyh2b2lkKQo+PiAgICAgIHJldHVybiAhbGlzdF9lbXB0eSgmaG9zdF9pdHNfbGlzdCk7Cj4+ICB9 Cj4+Cj4+ICsjZGVmaW5lIEJVRlBUUl9NQVNLICAgICAgICAgICAgICAgICAgICAgR0VOTUFTSygx OSwgNSkKPj4gK3N0YXRpYyBpbnQgaXRzX3NlbmRfY29tbWFuZChzdHJ1Y3QgaG9zdF9pdHMgKmh3 X2l0cywgY29uc3Qgdm9pZAo+PiAqaXRzX2NtZCkKPj4gK3sKPj4gKyAgICBzX3RpbWVfdCBkZWFk bGluZSA9IE5PVygpICsgTUlMTElTRUNTKDEpOwo+IAo+IEl0IHdvdWxkIGJlIG5pY2UgdG8gZXhw bGFpbiB3aGVyZSBkb2VzIHRoaXMgdmFsdWUgY29tZXMgZnJvbS4KCkluIGxhY2sgb2YgYW55IHJl YWwgZGF0YSBvbiB0aGlzLCBvbmUgbWlsbGlzZWNvbmQgaXMganVzdCBhIGd1ZXNzLgpJbiB2MyBJ IGFkZGVkIHNvbWUgY29tbWVudCBzdGF0aW5nIHRoYXQgdGhpcyBpcyBhICJzaG9ydCIgcGVyaW9k IHRvIHdhaXQKZm9yLiBXZSBkb24ndCB3YW50IHRvIHN0YWxsIGZvciBhIGxvbmcgdGltZSBmb3Ig YSBzaW5nbGUgY29tbWFuZCwgYnV0CmFsc28gZG9uJ3Qgd2FudCB0byBnaXZlIHVwIHRvbyBlYXNp bHkuIFRoZSBjb21tYW5kIHF1ZXVlIGlzIGhhbmRsZWQgYnkKdGhlIElUUywgd2hpY2ggaXMgaGFy ZHdhcmUsIHNvIHRoZSBvbmx5IHRoaW5nIGl0IGRvZXMgaXMgaGFuZGxpbmcKY29tbWFuZHMuIElm IHdlIGFyZSB1bmx1Y2t5IGVub3VnaCB0byBoaXQgYSBmdWxsIGNvbW1hbmQgcXVldWUgZHVlIHRv IGEKc3VkZGVuIHNwaWtlIGluIGhvc3QgY29tbWFuZHMsIGNoYW5jZXMgYXJlIHRoYXQgd2UgZ2V0 IGEgZnJlZSBzbG90IHZlcnkKc29vbiBhZnRlcndhcmRzLiBJZiBub3QsIHdlIGFyZSBzY3Jld2Vk IGFueXdheS4KCj4+ICsgICAgdWludDY0X3QgcmVhZHAsIHdyaXRlcDsKPj4gKyAgICBpbnQgcmV0 ID0gLUVCVVNZOwo+PiArCj4+ICsgICAgLyogTm8gSVRTIGNvbW1hbmRzIGZyb20gYW4gaW50ZXJy dXB0IGhhbmRsZXIgKGF0IHRoZSBtb21lbnQpLiAqLwo+PiArICAgIEFTU0VSVCghaW5faXJxKCkp Owo+PiArCj4+ICsgICAgc3Bpbl9sb2NrKCZod19pdHMtPmNtZF9sb2NrKTsKPj4gKwo+PiArICAg IGRvIHsKPj4gKyAgICAgICAgcmVhZHAgPSByZWFkcV9yZWxheGVkKGh3X2l0cy0+aXRzX2Jhc2Ug KyBHSVRTX0NSRUFEUikgJgo+PiBCVUZQVFJfTUFTSzsKPj4gKyAgICAgICAgd3JpdGVwID0gcmVh ZHFfcmVsYXhlZChod19pdHMtPml0c19iYXNlICsgR0lUU19DV1JJVEVSKSAmCj4+IEJVRlBUUl9N QVNLOwo+PiArCj4+ICsgICAgICAgIGlmICggKCh3cml0ZXAgKyBJVFNfQ01EX1NJWkUpICUgSVRT X0NNRF9RVUVVRV9TWikgIT0gcmVhZHAgKQo+PiArICAgICAgICB7Cj4+ICsgICAgICAgICAgICBy ZXQgPSAwOwo+PiArICAgICAgICAgICAgYnJlYWs7Cj4+ICsgICAgICAgIH0KPj4gKwo+PiArICAg ICAgICAvKgo+PiArICAgICAgICAgKiBJZiB0aGUgY29tbWFuZCBxdWV1ZSBpcyBmdWxsLCB3YWl0 IGZvciBhIGJpdCBpbiB0aGUgaG9wZQo+PiBpdCBkcmFpbnMKPj4gKyAgICAgICAgICogYmVmb3Jl IGdpdmluZyB1cC4KPj4gKyAgICAgICAgICovCj4+ICsgICAgICAgIHNwaW5fdW5sb2NrKCZod19p dHMtPmNtZF9sb2NrKTsKPj4gKyAgICAgICAgY3B1X3JlbGF4KCk7Cj4+ICsgICAgICAgIHVkZWxh eSgxKTsKPj4gKyAgICAgICAgc3Bpbl9sb2NrKCZod19pdHMtPmNtZF9sb2NrKTsKPj4gKyAgICB9 IHdoaWxlICggTk9XKCkgPD0gZGVhZGxpbmUgKTsKPj4gKwo+PiArICAgIGlmICggcmV0ICkKPj4g KyAgICB7Cj4+ICsgICAgICAgIHNwaW5fdW5sb2NrKCZod19pdHMtPmNtZF9sb2NrKTsKPj4gKyAg ICAgICAgcHJpbnRrKFhFTkxPR19XQVJOSU5HICJJVFM6IGNvbW1hbmQgcXVldWUgZnVsbC5cbiIp Owo+IAo+IFRoaXMgZnVuY3Rpb24gY291bGQgYmUgY2FsbGVkIGZyb20gYSBkb21haW4uIFNvIHBs ZWFzZSByYXRlbGltaXQgdGhlCj4gbWVzc2FnZSAoc2VlIHByaW50a19yYXRlbGltaXQpLgoKRml4 ZWQgaW4gdjQuCgo+IAo+PiArICAgICAgICByZXR1cm4gcmV0Owo+PiArICAgIH0KPj4gKwo+PiAr ICAgIG1lbWNweShod19pdHMtPmNtZF9idWYgKyB3cml0ZXAsIGl0c19jbWQsIElUU19DTURfU0la RSk7Cj4+ICsgICAgaWYgKCBod19pdHMtPmZsYWdzICYgSE9TVF9JVFNfRkxVU0hfQ01EX1FVRVVF ICkKPj4gKyAgICAgICAgY2xlYW5fYW5kX2ludmFsaWRhdGVfZGNhY2hlX3ZhX3JhbmdlKGh3X2l0 cy0+Y21kX2J1ZiArIHdyaXRlcCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIElUU19DTURfU0laRSk7Cj4+ICsgICAgZWxzZQo+PiArICAgICAgICBkc2Io aXNoc3QpOwo+PiArCj4+ICsgICAgd3JpdGVwID0gKHdyaXRlcCArIElUU19DTURfU0laRSkgJSBJ VFNfQ01EX1FVRVVFX1NaOwo+PiArICAgIHdyaXRlcV9yZWxheGVkKHdyaXRlcCAmIEJVRlBUUl9N QVNLLCBod19pdHMtPml0c19iYXNlICsKPj4gR0lUU19DV1JJVEVSKTsKPj4gKwo+PiArICAgIHNw aW5fdW5sb2NrKCZod19pdHMtPmNtZF9sb2NrKTsKPj4gKwo+PiArICAgIHJldHVybiAwOwo+PiAr fQo+PiArCj4+ICsvKiBXYWl0IGZvciBhbiBJVFMgdG8gZmluaXNoIHByb2Nlc3NpbmcgYWxsIGNv bW1hbmRzLiAqLwo+PiArc3RhdGljIGludCBnaWN2M19pdHNfd2FpdF9jb21tYW5kcyhzdHJ1Y3Qg aG9zdF9pdHMgKmh3X2l0cykKPj4gK3sKPj4gKyAgICBzX3RpbWVfdCBkZWFkbGluZSA9IE5PVygp ICsgTUlMTElTRUNTKDEwMCk7Cj4gCj4gU2FtZSByZW1hcmsgYXMgYWJvdmUuIFdoeSAxbXMgYW5k IDEwMG1zIGhlcmU/CgpJIG1hZGUgdGhpcyBwZXJpb2QgbG9uZ2VyLCBiZWNhdXNlIGl0IGNvdmVy cyBtdWx0aXBsZSBjb21tYW5kcyBhbmQgd2UKYXJlIHNvbWV3aGF0IGV4cGVjdGVkIHRvIHdhaXQg aGVyZS4gU3RpbGwgaXQgc2hvdWxkIGJlIHNob3J0ZXIgdGhhbiB0aGUKTGludXggdGltZW91dCwg d2hpY2ggaXMgb25lIHNlY29uZC4KCj4+ICsgICAgdWludDY0X3QgcmVhZHAsIHdyaXRlcDsKPj4g Kwo+PiArICAgIGRvIHsKPj4gKyAgICAgICAgc3Bpbl9sb2NrKCZod19pdHMtPmNtZF9sb2NrKTsK Pj4gKyAgICAgICAgcmVhZHAgPSByZWFkcV9yZWxheGVkKGh3X2l0cy0+aXRzX2Jhc2UgKyBHSVRT X0NSRUFEUikgJgo+PiBCVUZQVFJfTUFTSzsKPj4gKyAgICAgICAgd3JpdGVwID0gcmVhZHFfcmVs YXhlZChod19pdHMtPml0c19iYXNlICsgR0lUU19DV1JJVEVSKSAmCj4+IEJVRlBUUl9NQVNLOwo+ PiArICAgICAgICBzcGluX3VubG9jaygmaHdfaXRzLT5jbWRfbG9jayk7Cj4+ICsKPj4gKyAgICAg ICAgaWYgKCByZWFkcCA9PSB3cml0ZXAgKQo+PiArICAgICAgICAgICAgcmV0dXJuIDA7Cj4+ICsK Pj4gKyAgICAgICAgY3B1X3JlbGF4KCk7Cj4+ICsgICAgICAgIHVkZWxheSgxKTsKPj4gKyAgICB9 IHdoaWxlICggTk9XKCkgPD0gZGVhZGxpbmUgKTsKPj4gKwo+PiArICAgIHJldHVybiAtRVRJTUVE T1VUOwo+PiArfQo+IAo+IFsuLi5dCj4gCj4+ICtzdGF0aWMgaW50IGl0c19zZW5kX2NtZF9tYXBj KHN0cnVjdCBob3N0X2l0cyAqaXRzLCB1aW50MzJfdAo+PiBjb2xsZWN0aW9uX2lkLAo+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY3B1KQo+PiArewo+PiArICAg IHVpbnQ2NF90IGNtZFs0XTsKPj4gKwo+PiArICAgIGNtZFswXSA9IEdJVFNfQ01EX01BUEM7Cj4+ ICsgICAgY21kWzFdID0gMHgwMDsKPj4gKyAgICBjbWRbMl0gPSBlbmNvZGVfcmRiYXNlKGl0cywg Y3B1LCAoY29sbGVjdGlvbl9pZCAmIEdFTk1BU0soMTUsIDApKSk7Cj4gCj4gSSByZXF1ZXN0ZWQg dG8gZHJvcCB0aGUgbWFzayBoZXJlIGFuZCBJIGRpZG4ndCBzZWUgYW55IGFuc3dlciBleHBsYWlu aW5nCj4gd2h5IHlvdSB3b3VsZCBub3QgZG8gaXQuIFNvIHRoaXMgc2hvdWxkIGJlIGRyb3BwZWQg dW5sZXNzIHlvdSBnaXZlIG1lIGEKPiByZWFzb24gdG8ga2VlcCBpdC4KCkZpeGVkIGluIHYzLgoK PiAKPj4gKyAgICBjbWRbMl0gfD0gR0lUU19WQUxJRF9CSVQ7Cj4+ICsgICAgY21kWzNdID0gMHgw MDsKPj4gKwo+PiArICAgIHJldHVybiBpdHNfc2VuZF9jb21tYW5kKGl0cywgY21kKTsKPj4gK30K Pj4gKwo+PiArLyogU2V0IHVwIHRoZSAoMToxKSBjb2xsZWN0aW9uIG1hcHBpbmcgZm9yIHRoZSBn aXZlbiBob3N0IENQVS4gKi8KPj4gK2ludCBnaWN2M19pdHNfc2V0dXBfY29sbGVjdGlvbih1bnNp Z25lZCBpbnQgY3B1KQo+PiArewo+PiArICAgIHN0cnVjdCBob3N0X2l0cyAqaXRzOwo+PiArICAg IGludCByZXQ7Cj4+ICsKPj4gKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0cywgJmhvc3RfaXRz X2xpc3QsIGVudHJ5KQo+PiArICAgIHsKPj4gKyAgICAgICAgaWYgKCAhaXRzLT5jbWRfYnVmICkK Pj4gKyAgICAgICAgICAgIGNvbnRpbnVlOwo+IAo+IFdoeSB0aGlzIGNoZWNrPwoKSW5kZWVkIGEg bGVmdG92ZXIgZnJvbSB0aGUgb2xkZXIgY29kZS4gR2l2ZW4gdGhlIGN1cnJlbnQgY29kZSBmbG93 LCB3ZQpzaG91bGRuJ3QgZ2V0IGhlcmUgd2l0aG91dCB0aGUgY21kX2J1ZiBiZWluZyBpbml0aWFs aXplZC4gU3RpbGwgSSBsaWtlZAp0aGUgaWRlYSBvZiBoYXZpbmcgc29tZSBjaGVjayBoZXJlIGlu IGNhc2UgdGhlIGNvZGUgZmxvdyBjaGFuZ2VzLgpXaWxsIGRyb3AgdGhpcyBpcyB2NC4KCj4gWy4u Ll0KPiAKPj4gKy8qCj4+ICsgKiBCZWZvcmUgYW4gSVRTIGdldHMgaW5pdGlhbGl6ZWQsIGl0IHNo b3VsZCBiZSBpbiBhIHF1aWVzY2VudCBzdGF0ZSwKPj4gd2hlcmUKPj4gKyAqIGFsbCBvdXRzdGFu ZGluZyBjb21tYW5kcyBhbmQgdHJhbnNhY3Rpb25zIGhhdmUgZmluaXNoZWQuCj4+ICsgKiBTbyBp ZiB0aGUgSVRTIGlzIGFscmVhZHkgZW5hYmxlZCwgdHVybiBpdCBvZmYgYW5kIHdhaXQgZm9yIGFs bAo+PiBvdXRzdGFuZGluZwo+PiArICogb3BlcmF0aW9ucyB0byBnZXQgcHJvY2Vzc2VkIGJ5IHBv bGxpbmcgdGhlIFFVSUVTQ0VOVCBiaXQuCj4+ICsgKi8KPj4gK3N0YXRpYyBpbnQgZ2ljdjNfZGlz YWJsZV9pdHMoc3RydWN0IGhvc3RfaXRzICpod19pdHMpCj4+ICt7Cj4+ICsgICAgdWludDMyX3Qg cmVnOwo+PiArICAgIHNfdGltZV90IGRlYWRsaW5lID0gTk9XKCkgKyBNSUxMSVNFQ1MoMTAwKTsK PiAKPiBXaHkgMTAwbXM/CgpTYW1lIHJhdGlvbmFsZSBhcyBhYm92ZTogV2UgYXJlIGRlYWxpbmcg d2l0aCBtdWx0aXBsZSBjb21tYW5kcyBoZXJlLAphbHNvIGFyZSBleHBlY3RlZCB0byB0YWtlIGEg bG9uZ2VyIHRpbWUuCgo+PiAgc3RhdGljIGludCBnaWN2M19scGlfYWxsb2NhdGVfcGVuZHRhYmxl KHVpbnQ2NF90ICpyZWcpCj4+ICB7Cj4+ICAgICAgdWludDY0X3QgdmFsOwo+PiBkaWZmIC0tZ2l0 IGEveGVuL2FyY2gvYXJtL2dpYy12My5jIGIveGVuL2FyY2gvYXJtL2dpYy12My5jCj4+IGluZGV4 IGNjMWUyMTkuLjM4ZGFmZTcgMTAwNjQ0Cj4+IC0tLSBhL3hlbi9hcmNoL2FybS9naWMtdjMuYwo+ PiArKysgYi94ZW4vYXJjaC9hcm0vZ2ljLXYzLmMKPj4gQEAgLTY2Niw3ICs2NjYsMjEgQEAgc3Rh dGljIGludCBfX2luaXQgZ2ljdjNfcG9wdWxhdGVfcmRpc3Qodm9pZCkKPj4KPj4gICAgICAgICAg ICAgICAgICBpZiAoIHR5cGVyICYgR0lDUl9UWVBFUl9QTFBJUyApCj4+ICAgICAgICAgICAgICAg ICAgewo+PiAtICAgICAgICAgICAgICAgICAgICBpbnQgcmV0Owo+PiArICAgICAgICAgICAgICAg ICAgICBwYWRkcl90IHJkaXN0X2FkZHI7Cj4+ICsgICAgICAgICAgICAgICAgICAgIGludCBwcm9j bnVtLCByZXQ7Cj4gCj4gQXMgbWVudGlvbmVkIGluIHYxLCBwcm9jbnVtIHNob3VsZCBiZSB1bnNp Z25lZC4gSWYgeW91IGRpc2FncmVlLCBwbGVhc2UKPiBleHBsYWluLgoKRml4ZWQgaW4gdjQuCgo+ PiArCj4+ICsgICAgICAgICAgICAgICAgICAgIC8qCj4+ICsgICAgICAgICAgICAgICAgICAgICAq IFRoZSBJVFMgcmVmZXJzIHRvIHJlZGlzdHJpYnV0b3JzIGVpdGhlciBieQo+PiB0aGVpciBwaHlz aWNhbAo+PiArICAgICAgICAgICAgICAgICAgICAgKiBhZGRyZXNzIG9yIGJ5IHRoZWlyIElELiBE ZXRlcm1pbmUgdGhvc2UgdHdvCj4+IHZhbHVlcyBhbmQKPj4gKyAgICAgICAgICAgICAgICAgICAg ICogbGV0IHRoZSBJVFMgY29kZSBzdG9yZSB0aGVtIGluIHBlciBob3N0IENQVQo+PiB2YXJpYWJs ZXMgdG8KPj4gKyAgICAgICAgICAgICAgICAgICAgICogbGF0ZXIgYmUgYWJsZSB0byBhZGRyZXNz IHRob3NlIHJlZGlzdHJpYnV0b3JzLgo+PiArICAgICAgICAgICAgICAgICAgICAgKi8KPiAKPiBB Z2FpbiwgdGhpcyBjb21tZW50IGRvZXMgbm90IGxvb2sgdXNlZnVsIGFuZCBpcyBtaXNsZWFkaW5n IGFzIHRoZSBjb2RlCj4gdG8gZ2V0L3NldCB0aGUgcmVkaXN0cmlidXRvciBpbmZvcm1hdGlvbiBp cyBsaXZpbmcgaW4gZ2ljLXYzLWxwaS5jIGFuZAo+IG5vdCBnaWMtdjMtaXRzLmMuCgpCdXQgd2Ug bmVlZCB0byBwcmVwYXJlIHRob3NlIHZhbHVlcyBoZXJlIChhbmQgb25seSBoZXJlKSBhbmQgaXQg ZG9lcwptYWtlIGEgbG90IG9mIHNlbnNlIHRvIGV4cGxhaW4gdGhpcywgc2luY2UgdGhlIGFiaWxp dHkgdG8gZGVhbCB3aXRoIGJvdGgKd2F5cyBvZiByZXByZXNlbnRpbmcgYSByZWRpc3RyaWJ1dG9y IGlzIG5vdCBvYnZpb3VzLgpBbmQgdGhpcyBpcyBvbmUgb2YgdGhlIGNvbm5lY3Rpb25zIGJldHdl ZW4gdGhlIElUUyBhbmQgdGhlIChHSUN2MykKcmVkaXN0cmlidXRvcnMsIHdoZXJlIHRoZSBsaW5l IGJldHdlZW4gdGhlbSBpcyBub3QgZWFzeSB0byBkcmF3LgpTbyBpbiB2NCBJIG5vdyByZXdvcmRl ZCB0aGUgY29tbWVudCB0byBzYXkgdGhhdCB3ZSBoYW5kIHRoaXMgb3ZlciB0byB0aGUKSVRTIChp bnN0ZWFkIG9mIHNwb2lsaW5nIElUUyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzKS4KSG9wZSB5b3Ug YXJlIE9LIHdpdGggdGhpcy4KCj4gCj4gWy4uLl0KPiAKPj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNs dWRlL2FzbS1hcm0vZ2ljX3YzX2l0cy5oCj4+IGIveGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNf aXRzLmgKPj4gaW5kZXggZDVmYWNmMC4uOGI0OTNmYiAxMDA2NDQKPj4gLS0tIGEveGVuL2luY2x1 ZGUvYXNtLWFybS9naWNfdjNfaXRzLmgKPj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9naWNf djNfaXRzLmgKPiAKPiBbLi4uXQo+IAo+PiAgI2luY2x1ZGUgPHhlbi9kZXZpY2VfdHJlZS5oPgo+ Pgo+PiAgI2RlZmluZSBIT1NUX0lUU19GTFVTSF9DTURfUVVFVUUgICAgICAgICgxVSA8PCAwKQo+ PiArI2RlZmluZSBIT1NUX0lUU19VU0VTX1BUQSAgICAgICAgICAgICAgICgxVSA8PCAxKQo+Pgo+ PiAgLyogZGF0YSBzdHJ1Y3R1cmUgZm9yIGVhY2ggaGFyZHdhcmUgSVRTICovCj4+ICBzdHJ1Y3Qg aG9zdF9pdHMgewo+PiBAQCAtODcsNiArMTA2LDcgQEAgc3RydWN0IGhvc3RfaXRzIHsKPj4gICAg ICBwYWRkcl90IGFkZHI7Cj4+ICAgICAgcGFkZHJfdCBzaXplOwo+PiAgICAgIHZvaWQgX19pb21l bSAqaXRzX2Jhc2U7Cj4+ICsgICAgc3BpbmxvY2tfdCBjbWRfbG9jazsKPiAKPiBBZ2FpbiwgaW5p dGlhbGl6YXRpb24sIGNsZWFuLXVwIG9mIGEgZmllbGQgc2hvdWxkIGJlIGRvbmUgaW4gdGhlIHNh bWUKPiB0aGF0IGFkZGVkIHRoZSBmaWVsZC4gT3RoZXJ3aXNlLCB0aGlzIGlzIGEgY2FsbCB0byBt aXNzIGEgYml0IG9mIHRoZQo+IGNvZGUgYW5kIG1ha2VzIG1vcmUgZGlmZmljdWx0IGZvciB0aGUg cmV2aWV3ZXIuCj4gCj4gU28gcGxlYXNlIGluaXRpYWxpemUgY21kX2xvY2sgaW4gdGhpcyBwYXRj aCBhbmQgcGF0Y2ggIzYuCgpGaXhlZCBpbiB2NC4KCj4gCj4+ICAgICAgdm9pZCAqY21kX2J1ZjsK Pj4gICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7Cj4+ICB9Owo+PiBAQCAtMTA3LDYgKzEyNywxMyBA QCBpbnQgZ2ljdjNfbHBpX2luaXRfcmRpc3Qodm9pZCBfX2lvbWVtICogcmRpc3RfYmFzZSk7Cj4+ ICBpbnQgZ2ljdjNfbHBpX2luaXRfaG9zdF9scGlzKHVuc2lnbmVkIGludCBucl9scGlzKTsKPj4g IGludCBnaWN2M19pdHNfaW5pdCh2b2lkKTsKPj4KPj4gKy8qIFN0b3JlIHRoZSBwaHlzaWNhbCBh ZGRyZXNzIGFuZCBJRCBmb3IgZWFjaCByZWRpc3RyaWJ1dG9yIGFzIHJlYWQKPj4gZnJvbSBEVC4g Ki8KPj4gK3ZvaWQgZ2ljdjNfc2V0X3JlZGlzdF9hZGRyZXNzKHBhZGRyX3QgYWRkcmVzcywgdW5z aWduZWQgaW50IHJlZGlzdF9pZCk7Cj4+ICt1aW50NjRfdCBnaWN2M19nZXRfcmVkaXN0X2FkZHJl c3ModW5zaWduZWQgaW50IGNwdSwgYm9vbCB1c2VfcHRhKTsKPj4gKwo+PiArLyogTWFwIGEgY29s bGVjdGlvbiBmb3IgdGhpcyBob3N0IENQVSB0byBlYWNoIGhvc3QgSVRTLiAqLwo+PiAraW50IGdp Y3YzX2l0c19zZXR1cF9jb2xsZWN0aW9uKHVuc2lnbmVkIGludCBjcHUpOwo+PiArCj4+ICAjZWxz ZQo+Pgo+PiAgc3RhdGljIExJU1RfSEVBRChob3N0X2l0c19saXN0KTsKPj4gQEAgLTEzNCw2ICsx NjEsMTcgQEAgc3RhdGljIGlubGluZSBpbnQgZ2ljdjNfaXRzX2luaXQodm9pZCkKPj4gIHsKPj4g ICAgICByZXR1cm4gMDsKPj4gIH0KPj4gKwo+PiArc3RhdGljIGlubGluZSB2b2lkIGdpY3YzX3Nl dF9yZWRpc3RfYWRkcmVzcyhwYWRkcl90IGFkZHJlc3MsCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCByZWRpc3RfaWQpCj4+ICt7Cj4+ ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgaW50IGdpY3YzX2l0c19zZXR1cF9jb2xsZWN0aW9u KHVuc2lnbmVkIGludCBjcHUpCj4+ICt7Cj4gCj4gVGhpcyBmdW5jdGlvbiBzaG91bGQgbmV2ZXIg YmUgY2FsbGVkIGFzIGl0IGlzIGdhdGVkIGJ5IHRoZSBwcmVzZW5jZSBvZgo+IElUUy4gSSB3b3Vs ZCBhZGQgYSBCVUcoKSB3aXRoIGEgY29tbWVudCB0byBlbnN1cmUgdGhpcyBpcyB0aGUgY2FzZS4K ClJpZ2h0LCBmaXhlZCB0aGF0IGluIHY0LgoKQ2hlZXJzLApBbmRyZS4KCj4gCj4+ICsgICAgcmV0 dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gICNlbmRpZiAvKiBDT05GSUdfSEFTX0lUUyAqLwo+Pgo+PiAg I2VuZGlmCj4+Cj4gCj4gQ2hlZXJzCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK