From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [RFC PATCH 05/24] ARM: GICv3 ITS: introduce ITS command handling Date: Wed, 2 Nov 2016 15:05:35 +0000 Message-ID: <5adbf128-1c4f-6701-bd50-a7edd14e4654@arm.com> References: <20160928182457.12433-1-andre.przywara@arm.com> <20160928182457.12433-6-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 1c1x6h-0003Pu-Si for xen-devel@lists.xenproject.org; Wed, 02 Nov 2016 15:05:39 +0000 In-Reply-To: <20160928182457.12433-6-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 SGkgQW5kcmUsCgpPbiAyOC8wOS8xNiAxOToyNCwgQW5kcmUgUHJ6eXdhcmEgd3JvdGU6Cj4gVG8g YmUgYWJsZSB0byBlYXNpbHkgc2VuZCBjb21tYW5kcyB0byB0aGUgSVRTLCBjcmVhdGUgdGhlIHJl c3BlY3RpdmUKPiB3cmFwcGVyIGZ1bmN0aW9ucywgd2hpY2ggdGFrZSBjYXJlIG9mIHRoZSByaW5n IGJ1ZmZlci4KPiBUaGUgZmlyc3QgdHdvIGNvbW1hbmRzIHdlIGltcGxlbWVudCBwcm92aWRlIG1l dGhvZHMgdG8gbWFwIGEgY29sbGVjdGlvbgo+IHRvIGEgcmVkaXN0cmlidXRvciAoYWthIGhvc3Qg Y29yZSkgYW5kIHRvIGZsdXNoIHRoZSBjb21tYW5kIHF1ZXVlIChTWU5DKS4KPiBTdGFydCB1c2lu ZyB0aGVzZSBjb21tYW5kcyBmb3IgbWFwcGluZyBvbmUgY29sbGVjdGlvbiB0byBlYWNoIGhvc3Qg Q1BVLgo+Cj4gU2lnbmVkLW9mZi1ieTogQW5kcmUgUHJ6eXdhcmEgPGFuZHJlLnByenl3YXJhQGFy bS5jb20+Cj4gLS0tCj4gIHhlbi9hcmNoL2FybS9naWMtaXRzLmMgICAgICAgIHwgMTAxICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICB4ZW4vYXJjaC9hcm0vZ2lj LXYzLmMgICAgICAgICB8ICAxNyArKysrKysrCj4gIHhlbi9pbmNsdWRlL2FzbS1hcm0vZ2ljLWl0 cy5oIHwgIDMyICsrKysrKysrKysrKysKPiAgMyBmaWxlcyBjaGFuZ2VkLCAxNTAgaW5zZXJ0aW9u cygrKQo+Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9naWMtaXRzLmMgYi94ZW4vYXJjaC9h cm0vZ2ljLWl0cy5jCj4gaW5kZXggYzhhN2E3ZS4uODgzOTdiYyAxMDA2NDQKPiAtLS0gYS94ZW4v YXJjaC9hcm0vZ2ljLWl0cy5jCj4gKysrIGIveGVuL2FyY2gvYXJtL2dpYy1pdHMuYwo+IEBAIC0z Myw2ICszMywxMCBAQCBzdGF0aWMgc3RydWN0IHsKPiAgICAgIGludCBob3N0X2xwaV9iaXRzOwo+ ICB9IGxwaV9kYXRhOwo+Cj4gKy8qIFBoeXNpY2FsIHJlZGlzdHJpYnV0b3IgYWRkcmVzcyAqLwo+ ICtzdGF0aWMgREVGSU5FX1BFUl9DUFUodWludDY0X3QsIHJkaXN0X2FkZHIpOwoKVGhlIHR5cGUg c2hvdWxkIGJlIHBhZGRyX3QuCgo+ICsvKiBSZWRpc3RyaWJ1dG9yIElEICovCj4gK3N0YXRpYyBE RUZJTkVfUEVSX0NQVSh1aW50NjRfdCwgcmRpc3RfaWQpOwo+ICAvKiBQZW5kaW5nIHRhYmxlIGZv ciBlYWNoIHJlZGlzdHJpYnV0b3IgKi8KPiAgc3RhdGljIERFRklORV9QRVJfQ1BVKHZvaWQgKiwg cGVuZGluZ190YWJsZSk7Cj4KPiBAQCAtNDAsNiArNDQsODYgQEAgc3RhdGljIERFRklORV9QRVJf Q1BVKHZvaWQgKiwgcGVuZGluZ190YWJsZSk7Cj4gICAgICAgICAgbWluX3QodW5zaWduZWQgaW50 LCBscGlfZGF0YS5ob3N0X2xwaV9iaXRzLCBDT05GSUdfSE9TVF9MUElfQklUUykKPiAgI2RlZmlu ZSBNQVhfSE9TVF9MUElTICAgKEJJVChNQVhfSE9TVF9MUElfQklUUykgLSA4MTkyKQo+Cj4gKyNk ZWZpbmUgSVRTX0NPTU1BTkRfU0laRSAgICAgICAgMzIKPiArCj4gK3N0YXRpYyBpbnQgaXRzX3Nl bmRfY29tbWFuZChzdHJ1Y3QgaG9zdF9pdHMgKmh3X2l0cywgdm9pZCAqaXRzX2NtZCkKClRoZSBp dHNfY21kIGNvdWxkIGJlIGNvbnN0IGFzIHlvdSBkb24ndCBtb2RpZnkgaXQuCgo+ICt7Cj4gKyAg ICBpbnQgcmVhZHAsIHdyaXRlcDsKClBsZWFzZSB1c2UgdWludDMyX3QgKG9yIG1heWJlIHVpbnQ2 NF90KSBoZXJlLgoKPiArCj4gKyAgICBzcGluX2xvY2soJmh3X2l0cy0+Y21kX2xvY2spOwo+ICsK PiArICAgIHJlYWRwID0gcmVhZGxfcmVsYXhlZChod19pdHMtPml0c19iYXNlICsgR0lUU19DUkVB RFIpICYgR0VOTUFTSygxOSwgNSk7Cj4gKyAgICB3cml0ZXAgPSByZWFkbF9yZWxheGVkKGh3X2l0 cy0+aXRzX2Jhc2UgKyBHSVRTX0NXUklURVIpICYgR0VOTUFTSygxOSwgNSk7CgpQbGVhc2UgaW50 cm9kdWNlIGEgZGVmaW5lIGZvciB0aGUgR0VOTUFTSygxOSwgNSkgcmF0aGVyIHRoYW4gaGFyZGNv ZGluZyAKaXQgaW4gbXVsdGlwbGUgcGxhY2UuCgo+ICsKPiArICAgIGlmICggKCh3cml0ZXAgKyBJ VFNfQ09NTUFORF9TSVpFKSAlIFBBR0VfU0laRSkgPT0gcmVhZHAgKQo+ICsgICAgewo+ICsgICAg ICAgIHNwaW5fdW5sb2NrKCZod19pdHMtPmNtZF9sb2NrKTsKPiArICAgICAgICByZXR1cm4gLUVC VVNZOwo+ICsgICAgfQo+ICsKPiArICAgIG1lbWNweShod19pdHMtPmNtZF9idWYgKyB3cml0ZXAs IGl0c19jbWQsIElUU19DT01NQU5EX1NJWkUpOwo+ICsgICAgX19mbHVzaF9kY2FjaGVfYXJlYSho d19pdHMtPmNtZF9idWYgKyB3cml0ZXAsIElUU19DT01NQU5EX1NJWkUpOwoKV2h5IHRoZSBmbHVz aCBoZXJlPyBGcm9tIHBhdGNoICM0LCB0aGUgR0lDIGhhcyBiZWVuIGNvbmZpZ3VyZWQgdG8gYmUg CmFibGUgdG8gc25vb3AgdGhlIGNhY2hlLiBTbyBhIGRzYihpc2gpIHdvdWxkIGJlIGVub3VnaCBo ZXJlLgoKPiArICAgIHdyaXRlcCA9ICh3cml0ZXAgKyBJVFNfQ09NTUFORF9TSVpFKSAlIFBBR0Vf U0laRTsKPiArCj4gKyAgICB3cml0ZXFfcmVsYXhlZCh3cml0ZXAgJiBHRU5NQVNLKDE5LCA1KSwg aHdfaXRzLT5pdHNfYmFzZSArIEdJVFNfQ1dSSVRFUik7Cj4gKwo+ICsgICAgc3Bpbl91bmxvY2so Jmh3X2l0cy0+Y21kX2xvY2spOwo+ICsKPiArICAgIHJldHVybiAwOwoKVGhpcyBmdW5jdGlvbiBy ZXR1cm4gZWl0aGVyIC1FQlVTWSBvciAwLiBXb3VsZCBub3QgaXQgYmUgYmV0dGVyIHRvIApyZXR1 cm4gYSBib29sIGluc3RlYWQ/Cgo+ICt9Cj4gKwo+ICtzdGF0aWMgdWludDY0X3QgZW5jb2RlX3Jk YmFzZShzdHJ1Y3QgaG9zdF9pdHMgKmh3X2l0cywgaW50IGNwdSwgdWludDY0X3QgcmVnKQo+ICt7 Cj4gKyAgICByZWcgJj0gfkdFTk1BU0soNTEsIDE2KTsKPiArCj4gKyAgICBpZiAoIGh3X2l0cy0+ cHRhICkKPiArICAgICAgICByZWcgfD0gcGVyX2NwdShyZGlzdF9hZGRyLCBjcHUpICYgR0VOTUFT Syg1MSwgMTYpOwo+ICsgICAgZWxzZQo+ICsgICAgICAgIHJlZyB8PSBwZXJfY3B1KHJkaXN0X2lk LCBjcHUpIDw8IDE2OwoKSSB3b3VsZCBwcmVmZXIgaWYgd2Ugc2V0dXAgdGhlIHRhcmdldCBhZGRy ZXNzIGF0IGluaXRpYWxpemUgcGVyLWNwdSAKcmF0aGVyIHRoYW4gZG9pbmcgaXQgZXZlcnkgdGlt ZSB3ZSBzZW5kIGEgc3luYyBjb21tYW5kIChvciBlbHNlKS4KCj4gKwo+ICsgICAgcmV0dXJuIHJl ZzsKPiArfQo+ICsKPiArc3RhdGljIGludCBpdHNfc2VuZF9jbWRfc3luYyhzdHJ1Y3QgaG9zdF9p dHMgKml0cywgaW50IGNwdSkKPiArewo+ICsgICAgdWludDY0X3QgY21kWzRdOwo+ICsKPiArICAg IGNtZFswXSA9IEdJVFNfQ01EX1NZTkM7Cj4gKyAgICBjbWRbMV0gPSAweDAwOwo+ICsgICAgY21k WzJdID0gZW5jb2RlX3JkYmFzZShpdHMsIGNwdSwgMHgwKTsKPiArICAgIGNtZFszXSA9IDB4MDA7 Cj4gKwo+ICsgICAgcmV0dXJuIGl0c19zZW5kX2NvbW1hbmQoaXRzLCBjbWQpOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW50IGl0c19zZW5kX2NtZF9tYXBjKHN0cnVjdCBob3N0X2l0cyAqaXRzLCBpbnQg Y29sbGVjdGlvbl9pZCwgaW50IGNwdSkKPiArewo+ICsgICAgdWludDY0X3QgY21kWzRdOwo+ICsK PiArICAgIGNtZFswXSA9IEdJVFNfQ01EX01BUEM7Cj4gKyAgICBjbWRbMV0gPSAweDAwOwo+ICsg ICAgY21kWzJdID0gZW5jb2RlX3JkYmFzZShpdHMsIGNwdSwgKGNvbGxlY3Rpb25faWQgJiBHRU5N QVNLKDE1LCAwKSkgfCBCSVQoNjMpKTsKPiArICAgIGNtZFszXSA9IDB4MDA7Cj4gKwo+ICsgICAg cmV0dXJuIGl0c19zZW5kX2NvbW1hbmQoaXRzLCBjbWQpOwo+ICt9Cj4gKwo+ICsvKiBTZXQgdXAg dGhlICgxOjEpIGNvbGxlY3Rpb24gbWFwcGluZyBmb3IgdGhlIGdpdmVuIGhvc3QgQ1BVLiAqLwo+ ICt2b2lkIGdpY3YzX2l0c19zZXR1cF9jb2xsZWN0aW9uKGludCBjcHUpCj4gK3sKPiArICAgIHN0 cnVjdCBob3N0X2l0cyAqaXRzOwo+ICsKPiArICAgIGxpc3RfZm9yX2VhY2hfZW50cnkoaXRzLCAm aG9zdF9pdHNfbGlzdCwgZW50cnkpCj4gKyAgICB7Cj4gKyAgICAgICAgLyogT25seSBzZW5kIGNv bW1hbmRzIHRvIElUUyB0aGF0IGhhdmUgYmVlbiBpbml0aWFsaXplZCBhbHJlYWR5LiAqLwo+ICsg ICAgICAgIGlmICggIWl0cy0+Y21kX2J1ZiApCj4gKyAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsK PiArICAgICAgICBpdHNfc2VuZF9jbWRfbWFwYyhpdHMsIGNwdSwgY3B1KTsKPiArICAgICAgICBp dHNfc2VuZF9jbWRfc3luYyhpdHMsIGNwdSk7CgpMb29raW5nIGF0IHRoZSBpbXBsZW1lbnRhdGlv biBvZiBpdHNfc2VuZF9jbWRfKiwgdGhlIGZ1bmN0aW9ucyBtYXkgCnJldHVybiBhbiBlcnJvciBp ZiB0aGUgY29tbWFuZCBxdWV1ZSBpcyBmdWxsLiBIb3dldmVyIHlvdSBkb24ndCBjaGVjayAKdGhl IHJldHVybiwgYW5kIGNvbnRpbnVlIGFzIGl0IHdhcyBmaW5lLiBXZSB3aWxsIGdldCBpbiB0cm91 YmxlIG11Y2ggbGF0ZXIuCgpGdXJ0aGVybW9yZSwgc2VuZGluZyB0aGUgU1lOQyBjb21tYW5kIGRv ZXMgbm90IG1lYW5pbmcgdGhlIElUUyBoYXMgCmV4ZWN1dGVkIHRoZSBjb21tYW5kLiBZb3UgaGF2 ZSB0byBlbnN1cmUgdGhhdCBHSVRTX0NSRUFEUiA9PSAKR0lUU19DV1JJVEVSIGFuZCBJIGRpZG4n dCBmaW5kIHRoaXMgY29kZSB3aXRoaW4gdGhpcyBzZXJpZXMuCgo+ICsgICAgfQo+ICt9Cj4gKwo+ ICAjZGVmaW5lIEJBU0VSX0FUVFJfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCj4gICAgICAgICAgKCgweDNVTCA8PCBHSVRTX0JBU0VSX1NIQVJFQUJJTElU WV9TSElGVCkgICAgICAgICAgICAgICB8IFwKPiAgICAgICAgICAgKDB4N1VMIDw8IEdJVFNfQkFT RVJfT1VURVJfQ0FDSEVBQklMSVRZX1NISUZUKSAgICAgICAgIHwgXAo+IEBAIC0xNDcsNiArMjMx LDEzIEBAIGludCBnaWN2M19pdHNfaW5pdChzdHJ1Y3QgaG9zdF9pdHMgKmh3X2l0cykKPiAgICAg IGlmICggIWh3X2l0cy0+aXRzX2Jhc2UgKQo+ICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+Cj4g KyAgICAvKiBNYWtlIHN1cmUgdGhlIElUUyBpcyBkaXNhYmxlZCBiZWZvcmUgcHJvZ3JhbW1pbmcg dGhlIEJBU0UgcmVnaXN0ZXJzLiAqLwo+ICsgICAgcmVnID0gcmVhZGxfcmVsYXhlZChod19pdHMt Pml0c19iYXNlICsgR0lUU19DVExSKTsKPiArICAgIHdyaXRlbF9yZWxheGVkKHJlZyAmIH5HSVRT X0NUTFJfRU5BQkxFLCBod19pdHMtPml0c19iYXNlICsgR0lUU19DVExSKTsKClRoZSBzcGVjICg2 LjIuMSBpbiBJSEkgMDA2OUMpIHJlcXVpcmVzIHRoZSBJVFMgdG8gYmUgZGlzYWJsZWQgYW5kIApx dWllc2NlbnQgYmVmb3JlIHByb2dyYW1taW5nIHRoZSBCQVNFIHJlZ2lzdGVycy4gU28gSSBkb24n dCB0aGluayB0aGlzIApjaGVjayBpcyBlbm91Z2ggaGVyZS4KCj4gKwo+ICsgICAgcmVnID0gcmVh ZHFfcmVsYXhlZChod19pdHMtPml0c19iYXNlICsgR0lUU19UWVBFUik7Cj4gKyAgICBod19pdHMt PnB0YSA9IHJlZyAmIEdJVFNfVFlQRVJfUFRBOwo+ICsKPiAgICAgIGZvciAoaSA9IDA7IGkgPCA4 OyBpKyspCj4gICAgICB7Cj4gICAgICAgICAgdm9pZCBfX2lvbWVtICpiYXNlcmVnID0gaHdfaXRz LT5pdHNfYmFzZSArIEdJVFNfQkFTRVIwICsgaSAqIDg7Cj4gQEAgLTE3NCw5ICsyNjUsMTggQEAg aW50IGdpY3YzX2l0c19pbml0KHN0cnVjdCBob3N0X2l0cyAqaHdfaXRzKQo+ICAgICAgaWYgKCBJ U19FUlIoaHdfaXRzLT5jbWRfYnVmKSApCj4gICAgICAgICAgcmV0dXJuIFBUUl9FUlIoaHdfaXRz LT5jbWRfYnVmKTsKPgo+ICsgICAgaXRzX3NlbmRfY21kX21hcGMoaHdfaXRzLCBzbXBfcHJvY2Vz c29yX2lkKCksIHNtcF9wcm9jZXNzb3JfaWQoKSk7Cj4gKyAgICBpdHNfc2VuZF9jbWRfc3luYyho d19pdHMsIHNtcF9wcm9jZXNzb3JfaWQoKSk7CgpTZWUgbXkgY29tbWVudHMgb24gdGhlIHByZXZp b3VzIGl0c19zZW5kXyogZnVuY3Rpb25zCgo+ICsKPiAgICAgIHJldHVybiAwOwo+ICB9Cj4KPiAr dm9pZCBnaWN2M19zZXRfcmVkaXN0X2FkZHIocGFkZHJfdCBhZGRyZXNzLCBpbnQgcmVkaXN0X2lk KQoKVGhlIHNlY29uZCBwYXJhbWV0ZXIgc2hvdWxkIHByb2JhYmx5IGJlIHVuc2lnbmVkLCBtYXli ZSB1aW50NjRfdD8KCj4gK3sKPiArICAgIHRoaXNfY3B1KHJkaXN0X2FkZHIpID0gYWRkcmVzczsK PiArICAgIHRoaXNfY3B1KHJkaXN0X2lkKSA9IHJlZGlzdF9pZDsKPiArfQo+ICsKPiAgdWludDY0 X3QgZ2ljdjNfbHBpX2FsbG9jYXRlX3BlbmR0YWJsZSh2b2lkKQo+ICB7Cj4gICAgICB1aW50NjRf dCByZWcsIGF0dHI7Cj4gQEAgLTI2NSw2ICszNjUsNyBAQCB2b2lkIGdpY3YzX2l0c19kdF9pbml0 KGNvbnN0IHN0cnVjdCBkdF9kZXZpY2Vfbm9kZSAqbm9kZSkKPiAgICAgICAgICBpdHNfZGF0YS0+ YWRkciA9IGFkZHI7Cj4gICAgICAgICAgaXRzX2RhdGEtPnNpemUgPSBzaXplOwo+ICAgICAgICAg IGl0c19kYXRhLT5kdF9ub2RlID0gaXRzOwo+ICsgICAgICAgIHNwaW5fbG9ja19pbml0KCZpdHNf ZGF0YS0+Y21kX2xvY2spOwo+Cj4gICAgICAgICAgcHJpbnRrKCJHSUN2MzogRm91bmQgSVRTIEAw eCVseFxuIiwgYWRkcik7Cj4KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2dpYy12My5jIGIv eGVuL2FyY2gvYXJtL2dpYy12My5jCj4gaW5kZXggNWNmNDYxOC4uYjkzODdhMyAxMDA2NDQKPiAt LS0gYS94ZW4vYXJjaC9hcm0vZ2ljLXYzLmMKPiArKysgYi94ZW4vYXJjaC9hcm0vZ2ljLXYzLmMK PiBAQCAtNjM4LDYgKzYzOCw4IEBAIHN0YXRpYyB2b2lkIGdpY3YzX3JkaXN0X2luaXRfbHBpcyh2 b2lkIF9faW9tZW0gKiByZGlzdF9iYXNlKQo+ICAgICAgdGFibGVfcmVnID0gZ2ljdjNfbHBpX2dl dF9wcm9wdGFibGUoKTsKPiAgICAgIGlmICggdGFibGVfcmVnICkKPiAgICAgICAgICB3cml0ZXFf cmVsYXhlZCh0YWJsZV9yZWcsIHJkaXN0X2Jhc2UgKyBHSUNSX1BST1BCQVNFUik7Cj4gKwo+ICsg ICAgZ2ljdjNfaXRzX3NldHVwX2NvbGxlY3Rpb24oc21wX3Byb2Nlc3Nvcl9pZCgpKTsKPiAgfQo+ Cj4gIHN0YXRpYyBpbnQgX19pbml0IGdpY3YzX3BvcHVsYXRlX3JkaXN0KHZvaWQpCj4gQEAgLTY4 NCw3ICs2ODYsMjIgQEAgc3RhdGljIGludCBfX2luaXQgZ2ljdjNfcG9wdWxhdGVfcmRpc3Qodm9p ZCkKPiAgICAgICAgICAgICAgICAgIHRoaXNfY3B1KHJiYXNlKSA9IHB0cjsKPgo+ICAgICAgICAg ICAgICAgICAgaWYgKCB0eXBlciAmIEdJQ1JfVFlQRVJfUExQSVMgKQo+ICsgICAgICAgICAgICAg ICAgewo+ICsgICAgICAgICAgICAgICAgICAgIHBhZGRyX3QgcmRpc3RfYWRkcjsKPiArCj4gKyAg ICAgICAgICAgICAgICAgICAgcmRpc3RfYWRkciA9IGdpY3YzLnJkaXN0X3JlZ2lvbnNbaV0uYmFz ZTsKPiArICAgICAgICAgICAgICAgICAgICByZGlzdF9hZGRyICs9IHB0ciAtIGdpY3YzLnJkaXN0 X3JlZ2lvbnNbaV0ubWFwX2Jhc2U7Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAgIC8qIFRoZSBJ VFMgcmVmZXJzIHRvIHJlZGlzdHJpYnV0b3JzIGVpdGhlciBieSB0aGVpciBwaHlzaWNhbAoKQ29k aW5nIHN0eWxlOgoKLyoKICAqIEZvbwoKPiArICAgICAgICAgICAgICAgICAgICAgKiBhZGRyZXNz IG9yIGJ5IHRoZWlyIElELiBEZXRlcm1pbmUgdGhvc2UgdHdvIHZhbHVlcyBhbmQKPiArICAgICAg ICAgICAgICAgICAgICAgKiBsZXQgdGhlIElUUyBjb2RlIHN0b3JlIHRoZW0gaW4gcGVyIGhvc3Qg Q1BVIHZhcmlhYmxlcyB0bwo+ICsgICAgICAgICAgICAgICAgICAgICAqIGxhdGVyIGJlIGFibGUg dG8gYWRkcmVzcyB0aG9zZSByZWRpc3RyaWJ1dG9ycy4KPiArICAgICAgICAgICAgICAgICAgICAg Ki8KPiArICAgICAgICAgICAgICAgICAgICBnaWN2M19zZXRfcmVkaXN0X2FkZHIocmRpc3RfYWRk ciwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGVyID4+ IDgpICYgR0VOTUFTSygxNSwgMCkpOwoKUGxlYXNlIGF2b2lkIGhhcmRjb2RpbmcgbWFzayBhbmQg dXNlIGEgZGVmaW5lLgoKPiArCj4gICAgICAgICAgICAgICAgICAgICAgZ2ljdjNfcmRpc3RfaW5p dF9scGlzKHB0cik7Cj4gKyAgICAgICAgICAgICAgICB9Cj4KPiAgICAgICAgICAgICAgICAgIHBy aW50aygiR0lDdjM6IENQVSVkOiBGb3VuZCByZWRpc3RyaWJ1dG9yIGluIHJlZ2lvbiAlZCBAJXBc biIsCj4gICAgICAgICAgICAgICAgICAgICAgICAgIHNtcF9wcm9jZXNzb3JfaWQoKSwgaSwgcHRy KTsKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9naWMtaXRzLmggYi94ZW4vaW5j bHVkZS9hc20tYXJtL2dpYy1pdHMuaAo+IGluZGV4IGIyYTAwM2YuLmI0OWQyNzQgMTAwNjQ0Cj4g LS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9naWMtaXRzLmgKPiArKysgYi94ZW4vaW5jbHVkZS9h c20tYXJtL2dpYy1pdHMuaAo+IEBAIC0zNyw2ICszNyw3IEBACj4KPiAgLyogUmVnaXN0ZXIgYml0 cyAqLwo+ICAjZGVmaW5lIEdJVFNfQ1RMUl9FTkFCTEUgICAgIDB4MQo+ICsjZGVmaW5lIEdJVFNf VFlQRVJfUFRBICAgICAgIEJJVCgxOSkKPiAgI2RlZmluZSBHSVRTX0lJRFJfVkFMVUUgICAgICAw eDM0Ywo+Cj4gICNkZWZpbmUgR0lUU19CQVNFUl9WQUxJRCAgICAgICAgICAgICAgICBCSVQoNjMp Cj4gQEAgLTU5LDYgKzYwLDIyIEBACj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoMzFVTCA8PCBHSVRTX0JBU0VSX0VOVFJZX1NJWkVfU0hJRlQpIHxcCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHSVRTX0JBU0VSX0lORElSRUNUKQo+ Cj4gKy8qIElUUyBjb21tYW5kIGRlZmluaXRpb25zICovCj4gKyNkZWZpbmUgSVRTX0NNRF9TSVpF ICAgICAgICAgICAgICAgICAgICAzMgo+ICsKPiArI2RlZmluZSBHSVRTX0NNRF9NT1ZJICAgICAg ICAgICAgICAgICAgIDB4MDEKPiArI2RlZmluZSBHSVRTX0NNRF9JTlQgICAgICAgICAgICAgICAg ICAgIDB4MDMKPiArI2RlZmluZSBHSVRTX0NNRF9DTEVBUiAgICAgICAgICAgICAgICAgIDB4MDQK PiArI2RlZmluZSBHSVRTX0NNRF9TWU5DICAgICAgICAgICAgICAgICAgIDB4MDUKPiArI2RlZmlu ZSBHSVRTX0NNRF9NQVBEICAgICAgICAgICAgICAgICAgIDB4MDgKPiArI2RlZmluZSBHSVRTX0NN RF9NQVBDICAgICAgICAgICAgICAgICAgIDB4MDkKPiArI2RlZmluZSBHSVRTX0NNRF9NQVBUSSAg ICAgICAgICAgICAgICAgIDB4MGEKPiArI2RlZmluZSBHSVRTX0NNRF9NQVBJICAgICAgICAgICAg ICAgICAgIDB4MGIKPiArI2RlZmluZSBHSVRTX0NNRF9JTlYgICAgICAgICAgICAgICAgICAgIDB4 MGMKPiArI2RlZmluZSBHSVRTX0NNRF9JTlZBTEwgICAgICAgICAgICAgICAgIDB4MGQKPiArI2Rl ZmluZSBHSVRTX0NNRF9NT1ZBTEwgICAgICAgICAgICAgICAgIDB4MGUKPiArI2RlZmluZSBHSVRT X0NNRF9ESVNDQVJEICAgICAgICAgICAgICAgIDB4MGYKPiArCj4gICNpZm5kZWYgX19BU1NFTUJM WV9fCj4gICNpbmNsdWRlIDx4ZW4vZGV2aWNlX3RyZWUuaD4KPgo+IEBAIC02OSw3ICs4Niw5IEBA IHN0cnVjdCBob3N0X2l0cyB7Cj4gICAgICBwYWRkcl90IGFkZHI7Cj4gICAgICBwYWRkcl90IHNp emU7Cj4gICAgICB2b2lkIF9faW9tZW0gKml0c19iYXNlOwo+ICsgICAgc3BpbmxvY2tfdCBjbWRf bG9jazsKPiAgICAgIHZvaWQgKmNtZF9idWY7Cj4gKyAgICBib29sIHB0YTsKPiAgfTsKPgo+ICBl eHRlcm4gc3RydWN0IGxpc3RfaGVhZCBob3N0X2l0c19saXN0Owo+IEBAIC04OSw2ICsxMDgsMTIg QEAgdWludDY0X3QgZ2ljdjNfbHBpX2FsbG9jYXRlX3BlbmR0YWJsZSh2b2lkKTsKPiAgaW50IGdp Y3YzX2xwaV9pbml0X2hvc3RfbHBpcyhpbnQgbnJfbHBpcyk7Cj4gIGludCBnaWN2M19pdHNfaW5p dChzdHJ1Y3QgaG9zdF9pdHMgKmh3X2l0cyk7Cj4KPiArLyogU2V0IHRoZSBwaHlzaWNhbCBhZGRy ZXNzIGFuZCBJRCBmb3IgZWFjaCByZWRpc3RyaWJ1dG9yIGFzIHJlYWQgZnJvbSBEVC4gKi8KPiAr dm9pZCBnaWN2M19zZXRfcmVkaXN0X2FkZHIocGFkZHJfdCBhZGRyZXNzLCBpbnQgcmVkaXN0X2lk KTsKPiArCj4gKy8qIE1hcCBhIGNvbGxlY3Rpb24gZm9yIHRoaXMgaG9zdCBDUFUgdG8gZWFjaCBo b3N0IElUUy4gKi8KPiArdm9pZCBnaWN2M19pdHNfc2V0dXBfY29sbGVjdGlvbihpbnQgY3B1KTsK PiArCj4gICNlbHNlCj4KPiAgc3RhdGljIGlubGluZSB2b2lkIGdpY3YzX2l0c19kdF9pbml0KGNv bnN0IHN0cnVjdCBkdF9kZXZpY2Vfbm9kZSAqbm9kZSkKPiBAQCAtMTEwLDYgKzEzNSwxMyBAQCBz dGF0aWMgaW5saW5lIGludCBnaWN2M19pdHNfaW5pdChzdHJ1Y3QgaG9zdF9pdHMgKmh3X2l0cykK PiAgewo+ICAgICAgcmV0dXJuIDA7Cj4gIH0KCk5ld2xpbmUgaGVyZQoKPiArc3RhdGljIGlubGlu ZSB2b2lkIGdpY3YzX3NldF9yZWRpc3RfYWRkcihwYWRkcl90IGFkZHJlc3MsIGludCByZWRpc3Rf aWQpCj4gK3sKPiArfQoKRGl0dG8KCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBnaWN2M19pdHNfc2V0 dXBfY29sbGVjdGlvbihpbnQgY3B1KQo+ICt7Cj4gK30KPiArCj4gICNlbmRpZiAvKiBDT05GSUdf SEFTX0lUUyAqLwo+Cj4gICNlbmRpZiAvKiBfX0FTU0VNQkxZX18gKi8KPgoKUmVnYXJkcywKCi0t IApKdWxpZW4gR3JhbGwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0 cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=