From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: Re: [RFC PATCH 30/49] ARM: new VGIC: Add ENABLE registers handlers Date: Mon, 19 Feb 2018 12:41:31 +0000 Message-ID: <13390e85-23d5-a9d3-bab8-9ef4a3cc9d8f@linaro.org> References: <20180209143937.28866-1-andre.przywara@linaro.org> <20180209143937.28866-31-andre.przywara@linaro.org> <0af8db8c-25f2-2472-5c36-e2891c53eec5@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1enklD-0000d8-Bk for xen-devel@lists.xenproject.org; Mon, 19 Feb 2018 12:41:35 +0000 Received: by mail-wm0-x241.google.com with SMTP id f3so14816458wmc.1 for ; Mon, 19 Feb 2018 04:41:33 -0800 (PST) In-Reply-To: <0af8db8c-25f2-2472-5c36-e2891c53eec5@arm.com> Content-Language: en-GB List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Julien Grall , Stefano Stabellini , xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org SGksCgpPbiAxNi8wMi8xOCAxNjo1NywgSnVsaWVuIEdyYWxsIHdyb3RlOgo+IEhpIEFuZHJlLAo+ IAo+IE9uIDA5LzAyLzE4IDE0OjM5LCBBbmRyZSBQcnp5d2FyYSB3cm90ZToKPj4gQXMgdGhlIGVu YWJsZSByZWdpc3RlciBoYW5kbGVycyBhcmUgc2hhcmVkIGJldHdlZW4gdGhlIHYyIGFuZCB2Mwo+ PiBlbXVsYXRpb24sIHRoZWlyIGltcGxlbWVudGF0aW9uIGdvZXMgaW50byB2Z2ljLW1taW8uYywg dG8gYmUgZWFzaWx5Cj4+IHJlZmVyZW5jZWQgZnJvbSB0aGUgdjMgZW11bGF0aW9uIGFzIHdlbGwg bGF0ZXIuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IEFuZHJlIFByenl3YXJhIDxhbmRyZS5wcnp5d2Fy YUBsaW5hcm8ub3JnPgo+PiAtLS0KPj4gwqAgeGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy1tbWlvLXYy LmMgfMKgwqAgNCArLQo+PiDCoCB4ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLW1taW8uY8KgwqDCoCB8 IDExNAo+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4gwqAgeGVu L2FyY2gvYXJtL3ZnaWMvdmdpYy1tbWlvLmjCoMKgwqAgfMKgIDExICsrKysKPj4gwqAgMyBmaWxl cyBjaGFuZ2VkLCAxMjcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAt LWdpdCBhL3hlbi9hcmNoL2FybS92Z2ljL3ZnaWMtbW1pby12Mi5jCj4+IGIveGVuL2FyY2gvYXJt L3ZnaWMvdmdpYy1tbWlvLXYyLmMKPj4gaW5kZXggMDkyNmIzMjQzZS4uZWNhNjg0MGZmOSAxMDA2 NDQKPj4gLS0tIGEveGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy1tbWlvLXYyLmMKPj4gKysrIGIveGVu L2FyY2gvYXJtL3ZnaWMvdmdpYy1tbWlvLXYyLmMKPj4gQEAgLTc0LDEwICs3NCwxMCBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IHZnaWNfcmVnaXN0ZXJfcmVnaW9uCj4+IHZnaWNfdjJfZGlzdF9yZWdp c3RlcnNbXSA9IHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHZnaWNfbW1pb19yZWFkX3Jhbywgdmdp Y19tbWlvX3dyaXRlX3dpLCBOVUxMLCBOVUxMLCAxLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgVkdJ Q19BQ0NFU1NfMzJiaXQpLAo+PiDCoMKgwqDCoMKgIFJFR0lTVEVSX0RFU0NfV0lUSF9CSVRTX1BF Ul9JUlEoR0lDRF9JU0VOQUJMRVIsCj4+IC3CoMKgwqDCoMKgwqDCoCB2Z2ljX21taW9fcmVhZF9y YXosIHZnaWNfbW1pb193cml0ZV93aSwgTlVMTCwgTlVMTCwgMSwKPj4gK8KgwqDCoMKgwqDCoMKg IHZnaWNfbW1pb19yZWFkX2VuYWJsZSwgdmdpY19tbWlvX3dyaXRlX3NlbmFibGUsIE5VTEwsIE5V TEwsIDEsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBWR0lDX0FDQ0VTU18zMmJpdCksCj4+IMKgwqDC oMKgwqAgUkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVSX0lSUShHSUNEX0lDRU5BQkxFUiwKPj4g LcKgwqDCoMKgwqDCoMKgIHZnaWNfbW1pb19yZWFkX3JheiwgdmdpY19tbWlvX3dyaXRlX3dpLCBO VUxMLCBOVUxMLCAxLAo+PiArwqDCoMKgwqDCoMKgwqAgdmdpY19tbWlvX3JlYWRfZW5hYmxlLCB2 Z2ljX21taW9fd3JpdGVfY2VuYWJsZSwgTlVMTCwgTlVMTCwgMSwKPj4gwqDCoMKgwqDCoMKgwqDC oMKgIFZHSUNfQUNDRVNTXzMyYml0KSwKPj4gwqDCoMKgwqDCoCBSRUdJU1RFUl9ERVNDX1dJVEhf QklUU19QRVJfSVJRKEdJQ0RfSVNQRU5EUiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHZnaWNfbW1p b19yZWFkX3JheiwgdmdpY19tbWlvX3dyaXRlX3dpLCBOVUxMLCBOVUxMLCAxLAo+PiBkaWZmIC0t Z2l0IGEveGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy1tbWlvLmMKPj4gYi94ZW4vYXJjaC9hcm0vdmdp Yy92Z2ljLW1taW8uYwo+PiBpbmRleCA1OTcwM2E2OTA5Li4zZDlmYTAyYTEwIDEwMDY0NAo+PiAt LS0gYS94ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLW1taW8uYwo+PiArKysgYi94ZW4vYXJjaC9hcm0v dmdpYy92Z2ljLW1taW8uYwo+PiBAQCAtMzksNiArMzksMTIwIEBAIHZvaWQgdmdpY19tbWlvX3dy aXRlX3dpKHN0cnVjdCB2Y3B1ICp2Y3B1LCBwYWRkcl90Cj4+IGFkZHIsCj4+IMKgwqDCoMKgwqAg LyogSWdub3JlICovCj4+IMKgIH0KPj4gwqAgKy8qCj4+ICsgKiBSZWFkIGFjY2Vzc2VzIHRvIGJv dGggR0lDRF9JQ0VOQUJMRVIgYW5kIEdJQ0RfSVNFTkFCTEVSIHJldHVybiB0aGUKPj4gdmFsdWUK Pj4gKyAqIG9mIHRoZSBlbmFibGVkIGJpdCwgc28gdGhlcmUgaXMgb25seSBvbmUgZnVuY3Rpb24g Zm9yIGJvdGggaGVyZS4KPj4gKyAqLwo+PiArdW5zaWduZWQgbG9uZyB2Z2ljX21taW9fcmVhZF9l bmFibGUoc3RydWN0IHZjcHUgKnZjcHUsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBwYWRkcl90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4pCj4gCj4gSW5kZW50YXRp b24uCj4gCj4+ICt7Cj4+ICvCoMKgwqAgdTMyIGludGlkID0gVkdJQ19BRERSX1RPX0lOVElEKGFk ZHIsIDEpOwo+IAo+IHVpbnQzMl90IGhlcmUgcGxlYXNlLgo+IAo+PiArwqDCoMKgIHUzMiB2YWx1 ZSA9IDA7Cj4gCj4gU2FtZSBoZXJlLgo+IAo+PiArwqDCoMKgIGludCBpOwo+PiArCj4+ICvCoMKg wqAgLyogTG9vcCBvdmVyIGFsbCBJUlFzIGFmZmVjdGVkIGJ5IHRoaXMgcmVhZCAqLwo+PiArwqDC oMKgIGZvciAoIGkgPSAwOyBpIDwgbGVuICogODsgaSsrICkKPj4gK8KgwqDCoCB7Cj4+ICvCoMKg wqDCoMKgwqDCoCBzdHJ1Y3QgdmdpY19pcnEgKmlycSA9IHZnaWNfZ2V0X2lycSh2Y3B1LT5kb21h aW4sIHZjcHUsIGludGlkCj4+ICsgaSk7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmICggaXJx LT5lbmFibGVkICkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmFsdWUgfD0gKDFVIDw8IGkp Owo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCB2Z2ljX3B1dF9pcnEodmNwdS0+ZG9tYWluLCBpcnEp Owo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIHJldHVybiB2YWx1ZTsKPj4gK30KPj4gKwo+ PiArc3RhdGljIHZvaWQgdmdpY19oYW5kbGVfaGFyZHdhcmVfaXJxKGlycV9kZXNjX3QgKmRlc2Ms IGludCBpcnFfdHlwZSwKPiAKPiBMb29raW5nIGJlbG93IGlycV90eXBlIHNob3VsZCBhIGVudW0g dmdpY19pcnFfY29uZmlnIGFuZCBub3QgYW4gaW50Lgo+IAo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBib29sIGVuYWJsZSkKPiAKPiBJbmRlbnRhdGlvbi4KPiAK Pj4gK3sKPj4gK8KgwqDCoCB1bnNpZ25lZCBsb25nIGZsYWdzOwo+PiArCj4+ICsvL8KgIGlycV9z ZXRfYWZmaW5pdHkoZGVzYywgY3B1bWFza19vZih2X3RhcmdldC0+cHJvY2Vzc29yKSk7Cj4gCj4g V2h5IGlzIHRoYXQgY29tbWVudGVkPwoKVGhhdCBzaG91bGQgaW5kZWVkIGJlIGEgVE9ETzosIGFj dHVhbGx5LgpBcyB3ZSBhbHJlYWR5IGRpc2N1c3NlZCwgS1ZNIGRvZXMgbm90IGltcGxlbWVudCB0 aGlzCmhhcmR3YXJlLWZvbGxvd3MtdmlydHVhbCBhZmZpbml0eS4gVGhpcyBsaW5lIGlzIGp1c3Qg Y29waWVkIGZyb20gdGhlIG9sZApWR0lDLCB0byByZW1pbmQgbWUgdG8gYWRkcmVzcyB0aGlzLiBC dXQgSSBuZWVkIHRvIGNoZWNrIHRoZSBsb2NraW5nCm9yZGVyIGhlcmUgZmlyc3QgYW5kIGlmIHRo ZXJlIGFyZSBhbnkgb3RoZXIgc2lkZSBlZmZlY3RzIG9mIGNoYW5naW5nIHRoZQpoYXJkd2FyZSBh ZmZpbml0eSBpbiB0aGlzIHBhcnRpY3VsYXIgY29udGV4dC4KCj4+ICvCoMKgwqAgc3Bpbl9sb2Nr X2lycXNhdmUoJmRlc2MtPmxvY2ssIGZsYWdzKTsKPj4gK8KgwqDCoCBpZiAoIGVuYWJsZSApCj4+ ICvCoMKgwqAgewo+PiArwqDCoMKgwqDCoMKgwqAgZ2ljX3NldF9pcnFfdHlwZShkZXNjLCBpcnFf dHlwZSA9PSBWR0lDX0NPTkZJR19MRVZFTCA/Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBJUlFfVFlQRV9MRVZFTF9ISUdIIDogSVJRX1RZUEVfRURHRV9SSVNJTkcpOwo+IAo+ IEluZGVudGF0aW9uIGFuZCBJIHdvdWxkIHByZWZlciBhIGhlbHBlciB0byBjb252ZXJ0IGJldHdl ZW4gdGhlIHZnaWMKPiB2YWx1ZSBhbmQgdGhlIElSUV9UWVBFLiBUaGlzIHdvdWxkIG1ha2UgdGhl IGNvZGUgZWFzaWVyIHRvIHJlYWQuCj4gCj4gQWxzbywgdGhpcyBjb2RlIGRvZXMgbm90IHJlcGxp Y2F0ZSBjb3JyZWN0bHkgdGhlIGN1cnJlbnQgdkdJQy4KPiBnaWNfc2V0X2lycV90eXBlIGlzIG9u bHkgYWxsb3dlZCB0byBiZSB1c2VkIHdoZW4KPiBpcnFfc2V0X3R5cGVfYnlfZG9tYWluKGQpIHJl dHVybnMgdHJ1ZS4gSWYgeW91IGNvbnNpZGVyIHRoaXMgY2hhbmdlCj4gdmFsaWQsIHRoZW4gSSB3 b3VsZCBsaWtlIHRvIGtub3cgd2h5LgoKU28gd2hhdCBpcy93YXMgdGhlIHJhdGlvbmFsZSBmb3Ig bm90IGFsbG93aW5nIElSUSB0eXBlIGNoYW5nZXMgZm9yCm5vbi1wcml2aWxlZ2VkIGd1ZXN0cz8g SWYgeW91IGFsbG93IHRvIHBhc3MgdGhyb3VnaCBhbiBoYXJkd2FyZSBJUlEgdG8gYQpndWVzdCAo d2hpY2ggaXMgdGhlIGNhc2UgdGhpcyBmdW5jdGlvbiBoYW5kbGVzKSwgdGhlbiBJIGRvbid0IHNl ZSB3aHkgYQpndWVzdCB3b3VsZCBub3QgYmUgYWxsb3dlZCB0byBjaGFuZ2UgdGhlIGNvbmZpZ3Vy YXRpb24/IEl0IHNlZW1zIHJhdGhlcgpvZGQsIEkgZ3Vlc3MgaXQncyB1cCB0byB0aGUgZ3Vlc3Qg dG8ga25vdyB3aGljaCB0eXBlIG9mIElSUSB0aGlzIGlzPwoKPj4gK8KgwqDCoMKgwqDCoMKgIGRl c2MtPmhhbmRsZXItPmVuYWJsZShkZXNjKTsKPj4gK8KgwqDCoCB9Cj4+ICvCoMKgwqAgZWxzZQo+ PiArwqDCoMKgwqDCoMKgwqAgZGVzYy0+aGFuZGxlci0+ZGlzYWJsZShkZXNjKTsKPj4gK8KgwqDC oCBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXNjLT5sb2NrLCBmbGFncyk7Cj4+ICt9Cj4+ICsK Pj4gK3ZvaWQgdmdpY19tbWlvX3dyaXRlX3NlbmFibGUoc3RydWN0IHZjcHUgKnZjcHUsCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwYWRkcl90IGFkZHIsIHVuc2lnbmVkIGlu dCBsZW4sCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBsb25n IHZhbCkKPiAKPiBJbmRlbnRhdGlvbi4KPiAKPj4gK3sKPj4gK8KgwqDCoCB1MzIgaW50aWQgPSBW R0lDX0FERFJfVE9fSU5USUQoYWRkciwgMSk7Cj4gCj4gdWludDMyX3QuCj4gCj4+ICvCoMKgwqAg aXJxX2Rlc2NfdCAqZGVzYzsKPj4gK8KgwqDCoCBpbnQgaTsKPj4gK8KgwqDCoCB1bnNpZ25lZCBs b25nIGZsYWdzOwo+PiArwqDCoMKgIGVudW0gdmdpY19pcnFfY29uZmlnIGNvbmZpZzsKPj4gKwo+ PiArwqDCoMKgIGZvcl9lYWNoX3NldF9iaXQoIGksICZ2YWwsIGxlbiAqIDggKQo+PiArwqDCoMKg IHsKPj4gK8KgwqDCoMKgwqDCoMKgIHN0cnVjdCB2Z2ljX2lycSAqaXJxOwo+PiArCj4+ICvCoMKg wqDCoMKgwqDCoCBpcnEgPSB2Z2ljX2dldF9pcnEodmNwdS0+ZG9tYWluLCB2Y3B1LCBpbnRpZCAr IGkpOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBzcGluX2xvY2tfaXJxc2F2ZSgmaXJxLT5pcnFf bG9jaywgZmxhZ3MpOwo+PiArwqDCoMKgwqDCoMKgwqAgaXJxLT5lbmFibGVkID0gdHJ1ZTsKPj4g K8KgwqDCoMKgwqDCoMKgIGlmICggaXJxLT5odyApCj4+ICvCoMKgwqDCoMKgwqDCoCB7Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBU aGUgaXJxIGNhbm5vdCBiZSBhIFBQSSwgd2Ugb25seSBzdXBwb3J0IGRlbGl2ZXJ5Cj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBvZiBTUElzIHRvIGd1ZXN0cy4KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAqLwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBU1NFUlQoaXJxLT5o d2ludGlkID49IDMyKTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXNjID0gaXJx X3RvX2Rlc2MoaXJxLT5od2ludGlkKTsKPiAKPiBXaGF0IGlzIHRoZSByYXRpb25hbGUgYmVoaW5k IHN0b3JpbmcgaHdpbnRpZCByYXRoZXIgdGhhbiB0aGUgaXJxX2Rlc2MKPiBkaXJlY3RseT8KPiAK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uZmlnID0gaXJxLT5jb25maWc7Cj4+ICvCoMKg wqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqDCoMKgwqDCoCBlbHNlCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGRlc2MgPSBOVUxMOwo+PiArwqDCoMKgwqDCoMKgwqAgdmdpY19xdWV1ZV9pcnFfdW5s b2NrKHZjcHUtPmRvbWFpbiwgaXJxLCBmbGFncyk7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIHZn aWNfcHV0X2lycSh2Y3B1LT5kb21haW4sIGlycSk7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIGlm ICggZGVzYyApCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZnaWNfaGFuZGxlX2hhcmR3YXJl X2lycShkZXNjLCBjb25maWcsIHRydWUpOwo+IAo+IFRoaXMgaXMgc2xpZ2h0bHkgc3RyYW5nZS4g WW91IGhhbmRsZSB0aGUgaGFyZHdhcmUgSVJRIG91dHNpZGUgdGhlCj4gdmlydHVhbCBJUlEgbG9j ay4gSXQgbWVhbnMgdGhhdCB0aGUgaGFyZHdhcmUgSVJRIG1heSBlbmQgdXAgZW5hYmxlZCBidXQK PiB0aGUgdmlydHVhbCBJUlEgZGlzYWJsZWQuCgpZZWFoLCBnb29kIGNhdGNoLiBUaGlzIGNhbid0 IGJlIGVhc2lseSBjYWxsZWQgYmVmb3JlIGRyb3BwaW5nIHRoZSBJUlEKbG9jaywgYXMgdGhpcyB3 b3VsZCB2aW9sYXRlIHRoZSBsb2NraW5nIG9yZGVyLgpCdXQgSSBjYW4gdHJ5IHRvIHJlLXRha2Ug dGhlIElSUSBsb2NrIGFmdGVyIGhhdmluZyBhY3F1aXJlZCB0aGUgZGVzYwpsb2NrLCB0aGVuIHVz ZSB0aGUgZW5hYmxlZCAoYW5kIGNvbmZpZykgdmFsdWUgZnJvbSBzdHJ1Y3QgdmdpY19pcnEgZGly ZWN0bHkuCgpDaGVlcnMsCkFuZHJlLgoKPiAKPj4gK8KgwqDCoCB9Cj4+ICt9Cj4+ICsKPj4gK3Zv aWQgdmdpY19tbWlvX3dyaXRlX2NlbmFibGUoc3RydWN0IHZjcHUgKnZjcHUsCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwYWRkcl90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4s Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIHZhbCkK Pj4gK3sKPj4gK8KgwqDCoCB1MzIgaW50aWQgPSBWR0lDX0FERFJfVE9fSU5USUQoYWRkciwgMSk7 Cj4+ICvCoMKgwqAgaW50IGk7Cj4+ICsKPj4gK8KgwqDCoCBmb3JfZWFjaF9zZXRfYml0KCBpLCAm dmFsLCBsZW4gKiA4ICkKPj4gK8KgwqDCoCB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgdmdp Y19pcnEgKmlycTsKPj4gK8KgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+ICvC oMKgwqDCoMKgwqDCoCBpcnFfZGVzY190ICpkZXNjOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBp cnEgPSB2Z2ljX2dldF9pcnEodmNwdS0+ZG9tYWluLCB2Y3B1LCBpbnRpZCArIGkpOwo+PiArwqDC oMKgwqDCoMKgwqAgc3Bpbl9sb2NrX2lycXNhdmUoJmlycS0+aXJxX2xvY2ssIGZsYWdzKTsKPj4g Kwo+PiArwqDCoMKgwqDCoMKgwqAgaXJxLT5lbmFibGVkID0gZmFsc2U7Cj4+ICsKPj4gK8KgwqDC oMKgwqDCoMKgIGlmICggaXJxLT5odyApCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRlc2Mg PSBpcnFfdG9fZGVzYyhpcnEtPmh3aW50aWQpOwo+PiArwqDCoMKgwqDCoMKgwqAgZWxzZQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXNjID0gTlVMTDsKPj4gKwo+PiArwqDCoMKgwqDCoMKg wqAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaXJxLT5pcnFfbG9jaywgZmxhZ3MpOwo+PiArwqDC oMKgwqDCoMKgwqAgdmdpY19wdXRfaXJxKHZjcHUtPmRvbWFpbiwgaXJxKTsKPj4gKwo+PiArwqDC oMKgwqDCoMKgwqAgaWYgKCBkZXNjICkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmdpY19o YW5kbGVfaGFyZHdhcmVfaXJxKGRlc2MsIDAsIGZhbHNlKTsKPiAKPiBTYW1lIHJlbWFyayBoZXJl Lgo+IAo+PiArwqDCoMKgIH0KPj4gK30KPj4gKwo+PiDCoCBzdGF0aWMgaW50IG1hdGNoX3JlZ2lv bihjb25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQgKmVsdCkKPj4gwqAgewo+PiDCoMKgwqDCoMKg IGNvbnN0IHVuc2lnbmVkIGludCBvZmZzZXQgPSAodW5zaWduZWQgbG9uZylrZXk7Cj4+IGRpZmYg LS1naXQgYS94ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLW1taW8uaAo+PiBiL3hlbi9hcmNoL2FybS92 Z2ljL3ZnaWMtbW1pby5oCj4+IGluZGV4IDEwYWM2ODIyOTYuLjlmMzRiZDFhZWMgMTAwNjQ0Cj4+ IC0tLSBhL3hlbi9hcmNoL2FybS92Z2ljL3ZnaWMtbW1pby5oCj4+ICsrKyBiL3hlbi9hcmNoL2Fy bS92Z2ljL3ZnaWMtbW1pby5oCj4+IEBAIC0xMzcsNiArMTM3LDE3IEBAIHVuc2lnbmVkIGxvbmcg dmdpY19tbWlvX3JlYWRfcmFvKHN0cnVjdCB2Y3B1ICp2Y3B1LAo+PiDCoCB2b2lkIHZnaWNfbW1p b193cml0ZV93aShzdHJ1Y3QgdmNwdSAqdmNwdSwgcGFkZHJfdCBhZGRyLAo+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgbGVu LCB1bnNpZ25lZCBsb25nIHZhbCk7Cj4+IMKgICt1bnNpZ25lZCBsb25nIHZnaWNfbW1pb19yZWFk X2VuYWJsZShzdHJ1Y3QgdmNwdSAqdmNwdSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHBhZGRyX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbik7Cj4gCj4gSW5kZW50 YXRpb24uCj4gCj4+ICsKPj4gK3ZvaWQgdmdpY19tbWlvX3dyaXRlX3NlbmFibGUoc3RydWN0IHZj cHUgKnZjcHUsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwYWRkcl90IGFk ZHIsIHVuc2lnbmVkIGludCBsZW4sCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB1bnNpZ25lZCBsb25nIHZhbCk7Cj4gCj4gRGl0dG8uCj4gCj4+ICsKPj4gK3ZvaWQgdmdpY19t bWlvX3dyaXRlX2NlbmFibGUoc3RydWN0IHZjcHUgKnZjcHUsCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBwYWRkcl90IGFkZHIsIHVuc2lnbmVkIGludCBsZW4sCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIHZhbCk7Cj4gCj4gRGl0 dG8uCj4gCj4+ICsKPj4gwqAgdW5zaWduZWQgaW50IHZnaWNfdjJfaW5pdF9kaXN0X2lvZGV2KHN0 cnVjdCB2Z2ljX2lvX2RldmljZSAqZGV2KTsKPj4gwqAgwqAgLyogRmluZCB0aGUgcHJvcGVyIHJl Z2lzdGVyIGhhbmRsZXIgZW50cnkgZ2l2ZW4gYSBjZXJ0YWluIGFkZHJlc3MKPj4gb2Zmc2V0ICov Cj4+Cj4gCj4gQ2hlZXJzLAo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJv amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hl bi1kZXZlbA==