From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: Re: [PATCH 39/57] ARM: new VGIC: Add ACTIVE registers handlers Date: Tue, 13 Mar 2018 17:02:06 +0000 Message-ID: <2cb568e9-7f92-ab2c-8b79-17b4365d67c7@linaro.org> References: <20180305160415.16760-1-andre.przywara@linaro.org> <20180305160415.16760-40-andre.przywara@linaro.org> <5cfb7bb1-c7c8-5b44-5838-a0c3a582499b@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 1evnJe-0002zy-E5 for xen-devel@lists.xenproject.org; Tue, 13 Mar 2018 17:02:22 +0000 Received: by mail-wr0-x243.google.com with SMTP id z12so916244wrg.4 for ; Tue, 13 Mar 2018 10:02:20 -0700 (PDT) In-Reply-To: <5cfb7bb1-c7c8-5b44-5838-a0c3a582499b@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 Cc: xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org SGksCgpPbiAwOC8wMy8xOCAxNTozOSwgSnVsaWVuIEdyYWxsIHdyb3RlOgo+IEhpIEFuZHJlLAo+ IAo+IE9uIDA1LzAzLzE4IDE2OjAzLCBBbmRyZSBQcnp5d2FyYSB3cm90ZToKPj4gVGhlIGFjdGl2 ZSByZWdpc3RlciBoYW5kbGVycyBhcmUgc2hhcmVkIGJldHdlZW4gdGhlIHYyIGFuZCB2MyBlbXVs YXRpb24sCj4+IHNvIHRoZWlyIGltcGxlbWVudGF0aW9uIGdvZXMgaW50byB2Z2ljLW1taW8uYywg dG8gYmUgZWFzaWx5IHJlZmVyZW5jZWQKPj4gZnJvbSB0aGUgdjMgZW11bGF0aW9uIGFzIHdlbGwg bGF0ZXIuCj4+IFNpbmNlIGFjdGl2YXRpb24vZGVhY3RpdmF0aW9uIG9mIGFuIGludGVycnVwdCBt YXkgaGFwcGVuIGVudGlyZWx5IGluIHRoZQo+PiBndWVzdCB3aXRob3V0IGl0IGV2ZXIgZXhpdGlu Zywgd2UgbmVlZCBzb21lIGV4dHJhIGxvZ2ljIHRvIHByb3Blcmx5IHRyYWNrCj4+IHRoZSBhY3Rp dmUgc3RhdGUuCj4+IEZvciBjbGVhcmluZyB0aGUgYWN0aXZlIHN0YXRlLCB3ZSB3b3VsZCBiYXNp Y2FsbHkgaGF2ZSB0byBoYWx0IHRoZSBndWVzdAo+PiB0byBtYWtlIHN1cmUgdGhpcyBpcyBwcm9w ZXJseSBwcm9wYWdhdGVkIGludG8gdGhlIHJlc3BlY3RpdmUgVkNQVXMuCj4+IFRoaXMgaXMgbm90 IHlldCBpbXBsZW1lbnRlZCBpbiBYZW4uCj4+IEZvcnR1bmF0ZWx5IHRoaXMgZmVhdHVyZSBpcyBt b3N0bHkgdXNlZCB0byByZXNldCBhIGp1c3QgaW4gaW5pdGlhbGlzZWQKPj4gR0lDLCBzbyBjaGFu Y2VzIGFyZSB3ZSBhcmUgdGFza2VkIHRvIGNsZWFyIGJpdHMgdGhhdCBhcmUgYWxyZWFkeSB6ZXJv Lgo+PiBBZGQgc29tZSBzaW1wbGUgY2hlY2sgdG8gYXZvaWQgYSBwb2ludGxlc3Mgd2FybmluZyBp biB0aGlzIGNhc2UuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IEFuZHJlIFByenl3YXJhIDxhbmRyZS5w cnp5d2FyYUBsaW5hcm8ub3JnPgo+PiAtLS0KPj4gQ2hhbmdlbG9nIFJGQyAuLi4gdjE6Cj4+IC0g cmVtb3ZlIHByZW1hdHVyZSAicHJvcGVyIEFDVElWRSIgaGFuZGxlciBzdHViCj4+IC0gYXZvaWQg dW5uZWNlc3Nhcnkgd2FybmluZ3Mgb24gTk8tT1AgcmVnaXN0ZXIgd3JpdGVzCj4+IC0gZXh0ZW5k IGNvbW1lbnRzCj4+Cj4+IMKgIHhlbi9hcmNoL2FybS92Z2ljL3ZnaWMtbW1pby12Mi5jIHzCoMKg IDQgKy0KPj4gwqAgeGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy1tbWlvLmPCoMKgwqAgfCAxMDMKPj4g KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+IMKgIHhlbi9hcmNoL2Fy bS92Z2ljL3ZnaWMtbW1pby5owqDCoMKgIHzCoCAxMSArKysrKwo+PiDCoCAzIGZpbGVzIGNoYW5n ZWQsIDExNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEv eGVuL2FyY2gvYXJtL3ZnaWMvdmdpYy1tbWlvLXYyLmMKPj4gYi94ZW4vYXJjaC9hcm0vdmdpYy92 Z2ljLW1taW8tdjIuYwo+PiBpbmRleCBlZmRkNzMzMDFkLi5jOTM0NTVmYmIyIDEwMDY0NAo+PiAt LS0gYS94ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLW1taW8tdjIuYwo+PiArKysgYi94ZW4vYXJjaC9h cm0vdmdpYy92Z2ljLW1taW8tdjIuYwo+PiBAQCAtOTIsMTAgKzkyLDEwIEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgdmdpY19yZWdpc3Rlcl9yZWdpb24KPj4gdmdpY192Ml9kaXN0X3JlZ2lzdGVyc1td ID0gewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgdmdpY19tbWlvX3JlYWRfcGVuZGluZywgdmdpY19t bWlvX3dyaXRlX2NwZW5kaW5nLCAxLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgVkdJQ19BQ0NFU1Nf MzJiaXQpLAo+PiDCoMKgwqDCoMKgIFJFR0lTVEVSX0RFU0NfV0lUSF9CSVRTX1BFUl9JUlEoR0lD RF9JU0FDVElWRVIsCj4+IC3CoMKgwqDCoMKgwqDCoCB2Z2ljX21taW9fcmVhZF9yYXosIHZnaWNf bW1pb193cml0ZV93aSwgMSwKPj4gK8KgwqDCoMKgwqDCoMKgIHZnaWNfbW1pb19yZWFkX2FjdGl2 ZSwgdmdpY19tbWlvX3dyaXRlX3NhY3RpdmUsIDEsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBWR0lD X0FDQ0VTU18zMmJpdCksCj4+IMKgwqDCoMKgwqAgUkVHSVNURVJfREVTQ19XSVRIX0JJVFNfUEVS X0lSUShHSUNEX0lDQUNUSVZFUiwKPj4gLcKgwqDCoMKgwqDCoMKgIHZnaWNfbW1pb19yZWFkX3Jh eiwgdmdpY19tbWlvX3dyaXRlX3dpLCAxLAo+PiArwqDCoMKgwqDCoMKgwqAgdmdpY19tbWlvX3Jl YWRfYWN0aXZlLCB2Z2ljX21taW9fd3JpdGVfY2FjdGl2ZSwgMSwKPj4gwqDCoMKgwqDCoMKgwqDC oMKgIFZHSUNfQUNDRVNTXzMyYml0KSwKPj4gwqDCoMKgwqDCoCBSRUdJU1RFUl9ERVNDX1dJVEhf QklUU19QRVJfSVJRKEdJQ0RfSVBSSU9SSVRZUiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHZnaWNf bW1pb19yZWFkX3JheiwgdmdpY19tbWlvX3dyaXRlX3dpLCA4LAo+PiBkaWZmIC0tZ2l0IGEveGVu L2FyY2gvYXJtL3ZnaWMvdmdpYy1tbWlvLmMKPj4gYi94ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLW1t aW8uYwo+PiBpbmRleCAyZTkzOWQ1ZTM5Li5jNDRkNjcwODJmIDEwMDY0NAo+PiAtLS0gYS94ZW4v YXJjaC9hcm0vdmdpYy92Z2ljLW1taW8uYwo+PiArKysgYi94ZW4vYXJjaC9hcm0vdmdpYy92Z2lj LW1taW8uYwo+PiBAQCAtMjgxLDYgKzI4MSwxMDkgQEAgdm9pZCB2Z2ljX21taW9fd3JpdGVfY3Bl bmRpbmcoc3RydWN0IHZjcHUgKnZjcHUsCj4+IMKgwqDCoMKgwqAgfQo+PiDCoCB9Cj4+IMKgICsv Kgo+PiArICogVGhlIGFjdHVhbCBhY3RpdmUgYml0IGZvciBhIHZpcnR1YWwgSVJRIGlzIGhlbGQg aW4gdGhlIExSLiBPdXIgc2hhZG93Cj4+ICsgKiBjb3B5IGluIHN0cnVjdCB2Z2ljX2lycSBpcyBv bmx5IHN5bmNlZCB3aGVuIG5lZWRlZCBhbmQgbWF5IG5vdCBiZQo+PiArICogdXAtdG8tZGF0ZSBh bGwgb2YgdGhlIHRpbWUuCj4+ICsgKiBSZXR1cm5pbmcgdGhlIGFjdHVhbCBhY3RpdmUgc3RhdGUg aXMgcXVpdGUgY29zdGx5IChzdG9wcGluZyBhbGwKPj4gKyAqIFZDUFVzIHByb2Nlc3NpbmcgYW55 IGFmZmVjdGVkIHZJUlFzKSwgc28gd2UgdXNlIGEgc2ltcGxlCj4+IGltcGxlbWVudGF0aW9uCj4+ ICsgKiB0byBnZXQgdGhlIGJlc3QgcG9zc2libGUgYW5zd2VyLgo+PiArICovCj4+ICt1bnNpZ25l ZCBsb25nIHZnaWNfbW1pb19yZWFkX2FjdGl2ZShzdHJ1Y3QgdmNwdSAqdmNwdSwKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcGFkZHJfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuKQo+PiArewo+PiArwqDCoMKg IHVpbnQzMl90IGludGlkID0gVkdJQ19BRERSX1RPX0lOVElEKGFkZHIsIDEpOwo+PiArwqDCoMKg IHVpbnQzMl90IHZhbHVlID0gMDsKPj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgaTsKPj4gKwo+PiAr wqDCoMKgIC8qIExvb3Agb3ZlciBhbGwgSVJRcyBhZmZlY3RlZCBieSB0aGlzIHJlYWQgKi8KPj4g K8KgwqDCoCBmb3IgKCBpID0gMDsgaSA8IGxlbiAqIDg7IGkrKyApCj4+ICvCoMKgwqAgewo+PiAr wqDCoMKgwqDCoMKgwqAgc3RydWN0IHZnaWNfaXJxICppcnEgPSB2Z2ljX2dldF9pcnEodmNwdS0+ ZG9tYWluLCB2Y3B1LCBpbnRpZAo+PiArIGkpOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAo IGlycS0+YWN0aXZlICkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmFsdWUgfD0gKDFVIDw8 IGkpOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCB2Z2ljX3B1dF9pcnEodmNwdS0+ZG9tYWluLCBp cnEpOwo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIHJldHVybiB2YWx1ZTsKPj4gK30KPj4g Kwo+PiArLyoKPj4gKyAqIFdlIGRvbid0IGFjdHVhbGx5IHN1cHBvcnQgY2xlYXJpbmcgdGhlIGFj dGl2ZSBzdGF0ZSBvZiBhbiBJUlEgKHlldCkuCj4+ICsgKiBIb3dldmVyIHRoZXJlIGlzIGEgY2hh bmNlIHRoYXQgbW9zdCBndWVzdHMgdXNlIHRoaXMgZm9yCj4+IGluaXRpYWxpemF0aW9uLgo+PiAr ICogV2UgY2hlY2sgd2hldGhlciB0aGlzIE1NSU8gYWNjZXNzIHdvdWxkIGFjdHVhbGx5IGFmZmVj dCBhbnkgYWN0aXZlCj4+IElSUSwKPj4gKyAqIGFuZCBvbmx5IHByaW50IG91ciB3YXJuaW5nIGlu IHRoaXMgY2FzZS4gU28gY2xlYXJpbmcgYWxyZWFkeQo+PiBub24tYWN0aXZlCj4+ICsgKiBJUlFz IHdvdWxkIG5vdCBiZSBtb2FuZWQgYWJvdXQgaW4gdGhlIGxvZ3MuCj4+ICsgKi8KPj4gK3ZvaWQg dmdpY19tbWlvX3dyaXRlX2NhY3RpdmUoc3RydWN0IHZjcHUgKnZjcHUsCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwYWRkcl90IGFk ZHIsIHVuc2lnbmVkIGludCBsZW4sCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIHZhbCkKPj4gK3sKPj4gK8Kg wqDCoCB1aW50MzJfdCBpbnRpZCA9IFZHSUNfQUREUl9UT19JTlRJRChhZGRyLCAxKTsKPj4gK8Kg wqDCoCB1bnNpZ25lZCBpbnQgaTsKPj4gK8KgwqDCoCBib29sIGJhaWxfb3V0ID0gZmFsc2U7Cj4+ ICsKPj4gK8KgwqDCoCBmb3JfZWFjaF9zZXRfYml0KCBpLCAmdmFsLCBsZW4gKiA4ICkKPj4gK8Kg wqDCoCB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdmdpY19pcnEgKmlycSA9IHZnaWNfZ2V0 X2lycSh2Y3B1LT5kb21haW4sIHZjcHUsIGludGlkCj4+ICsgaSk7Cj4+ICsKPj4gK8KgwqDCoMKg wqDCoMKgIC8qCj4+ICvCoMKgwqDCoMKgwqDCoMKgICogSWYgd2Uga25vdyB0aGF0IHRoZSBJUlEg aXMgYWN0aXZlIG9yIHdlIGNhbid0IGJlIHN1cmUgYWJvdXQKPj4gK8KgwqDCoMKgwqDCoMKgwqAg KiBpdCAoYmVjYXVzZSBpdCBpcyBjdXJyZW50bHkgaW4gYSBDUFUpLCBsb2cgdGhlIG5vdCBwcm9w ZXJseQo+PiArwqDCoMKgwqDCoMKgwqDCoCAqIGVtdWxhdGVkIE1NSU8gYWNjZXNzLgo+PiArwqDC oMKgwqDCoMKgwqDCoCAqLwo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCBpcnEtPmFjdGl2ZSB8fCBp cnEtPnZjcHUgKQo+PiArwqDCoMKgwqDCoMKgwqAgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBnZHByaW50ayhYRU5MT0dfRVJSLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAiJXB2OiB2R0lDRDogSVJRJWQ6IGNsZWFyaW5nIGFjdGl2ZSBzdGF0ZSBub3QK Pj4gc3VwcG9ydGVkXG4iLAo+IAo+IHMvJWQvJXUvCj4gCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZjcHUsIGlycS0+aW50aWQpOwo+IAo+IGdkcHJpbnRrIHdp bGwgYWx3YXlzIHByaW50IHRoZSB2Q1BVLiBUaG91Z2h0IGl0IGlzIHRoZSBjdXJyZW50IHdoaWNo Cj4gbWlnaHQgYmUgZGlmZmVyZW50IGZyb20gdmNwdSAobW9zdGx5IGluIHRoZSByZS1kaXN0IGNh c2UpLgoKQWgsIHRoYW5rcy4gSSBhbHdheXMgZ2V0IGNvbmZ1c2VkIGFib3V0IHdoYXQgd2hpY2gg dmVyc2lvbiBvZiAqcHJpbnRrIGRvZXMuCgo+IFNvIEkgd291bGQgdXNlIGRwcmludGsoWEVOTE9H X0dfRVJSLCAiJXB2OiAuLi4iKS4gSSB3b3VsZCBldmVuIGJlIHRlbXB0Cj4gdG8gdXNlIHByaW50 ayguLi4uKSBzbyB3ZSBjYW4gc3BvdCBwb3RlbnRpYWwgaXNzdWUgb24gbm9uLWRlYnVnIGJ1aWxk LgoKV2VsbCwgaW4gdGhlIHRydWUgc3Bpcml0IG9mIFhlbiBwYXJhbm9pYSA7LSkgSSB3YW50ZWQg dG8gYXZvaWQgYSBndWVzdApzcGFtbWluZyB0aGUgY29uc29sZS4gQW5kIGluIHRoZSBlbmQgdGhl cmUgaXMgbm90aGluZyBhIGFkbWluaXN0cmF0b3IKY291bGQgcmVhbGx5IGRvIGFib3V0IGl0LiBJ biBteSBleHBlcmllbmNlIHRob3NlIG1lc3NhZ2VzIHRlbmQgdG8gcmVhbGx5CnNjYXJlIHVzZXJz ICgiSSBjb3VsZCBib290IERvbTAgYnV0IEkgc2VlIHRob3NlIGVycm9yIG1lc3NhZ2VzIC4uLi4i KS4KCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJhaWxfb3V0ID0gdHJ1ZTsKPiAKPiBJIGFk bWl0IHRoZSBiYWlsb3V0IGlzIGEgYml0IHdlaXJkIGhlcmUuIFlvdSB3b3VsZCBvbmx5IHByaW50 IHRoZQo+IHdhcm5pbmcgZm9yIHRoZSBmaXJzdCBhY3RpdmF0ZWQgSVJRIGFuZCBnaXZlIHRoZSBp bXByZXNzaW9uIGl0IGlzIGZpbmUKPiBmb3IgdGhlIHJlc3QuIFNvIG1heWJlIHlvdSB3YW50IHRv IGRyb3AgSVJRJWQ/CgpGb3IgdGhlIGFib3ZlIHJlYXNvbnMgSSB3YW50ZWQgdG8ga2VlcCB0aGVt IGNvbmNpc2UsIHNvIHRoYXQgd2Ugc2VlIHRoYXQKdGhlIGlzc3VlIGhhcyBoYXBwZW5lZCwgYnV0 IGF2b2lkIGdldHRpbmcgdG9ucyBvZiBlcnJvciBtZXNzYWdlcyBhYm91dAp0aGUgc2FtZSBwcm9i bGVtIChhcyB0aGlzIG1heSBhZmZlY3QgdXAgdG8gMzIgSVJRcykuCkJ1dCBmb3IgZGVidWdnaW5n IGl0IG1pZ2h0IGJlIGdvb2QgdG8ga25vdyB3aGljaCBJUlEgd2FzIGFmZmVjdGVkLiBJIHNlZQp0 d28gdXNlIGNhc2VzIGZvciBhIGd1ZXN0OgotIChEZS0pYWN0aXZhdGluZyBhIHNpbmdsZSBJUlE6 IHdlIGdldCBvbmUgbWVzc2FnZSBhbmQga25vdyB3aGljaCBJUlEgaXQKd2FzLCBzbyBhbiBhZG1p biBjYW4gY2hhc2UgdGhpcyBkb3duIHRvIGEgY2VydGFpbiBkZXZpY2UgKGRyaXZlcikuCi0gKERl LSlhY3RpdmF0aW5nICpldmVyeSogSVJRIGluIHRoaXMgcmFuZ2UgKH4wKTogd2Ugc3RpbGwgZ2V0 IG9uZQptZXNzYWdlIHBlciAzMiBJUlFzLCBidXQgY2FuIHNlZSB3aGV0aGVyIGl0IGNvdmVycyBT UElzIG9ubHkgKElSUT49MzIpCmFuZCB3aGljaCBvbmVzLgoKU28gd2hhdCBhYm91dCBhIGNvbXBy b21pc2U6IEkgdXNlIGRwcmludGsoWEVOTE9HX0dfRVJSLCAiJXB2IC4uLiksIHByaW50CnRoZSAo Zmlyc3QpIElSUSBhbmQgdGhlICp2YWx1ZSogdG8gYmUgd3JpdHRlbi4gU28gYSBrbm93bGVkZ2Vh YmxlIGFkbWluCmNhbiB0ZWxsIHdoZXRoZXIgaXQncyBhIHNpbmdsZSBJUlEgb3IgYSAiY2xlYXIv c2V0LWFsbCIgY2FzZS4gVGhhdApzaG91bGQgYWxzbyBnaXZlIGVub3VnaCBpbmZvIGZvciBkZWJ1 Z2dpbmcsIGJ1dCBrZWVwcyBpdCBzaG9ydC4KCkRvZXMgdGhhdCBzb3VuZCBPSz8KCkNoZWVycywK QW5kcmUuCgo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCB2Z2lj X3B1dF9pcnEodmNwdS0+ZG9tYWluLCBpcnEpOwo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCBiYWls X291dCApCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4gK8KgwqDCoCB9Cj4+ ICt9Cj4+ICsKPj4gKy8qCj4+ICsgKiBXZSBkb24ndCBhY3R1YWxseSBzdXBwb3J0IHNldHRpbmcg dGhlIGFjdGl2ZSBzdGF0ZSBvZiBhbiBJUlEgKHlldCkuCj4+ICsgKiBXZSBjaGVjayB3aGV0aGVy IHRoaXMgTU1JTyBhY2Nlc3Mgd291bGQgYWN0dWFsbHkgYWZmZWN0IGFueQo+PiBub24tYWN0aXZl IElSUSwKPj4gKyAqIGFuZCBvbmx5IHByaW50IG91ciB3YXJuaW5nIGluIHRoaXMgY2FzZS4KPj4g KyAqLwo+PiArdm9pZCB2Z2ljX21taW9fd3JpdGVfc2FjdGl2ZShzdHJ1Y3QgdmNwdSAqdmNwdSwK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHBhZGRyX3QgYWRkciwgdW5zaWduZWQgaW50IGxlbiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgdmFs KQo+IAo+IFNlZSBteSBjb21tZW50cyBvbiBjYWN0aXZlLgo+IAo+PiArewo+PiArwqDCoMKgIHVp bnQzMl90IGludGlkID0gVkdJQ19BRERSX1RPX0lOVElEKGFkZHIsIDEpOwo+PiArwqDCoMKgIHVu c2lnbmVkIGludCBpOwo+PiArwqDCoMKgIGJvb2wgYmFpbF9vdXQgPSBmYWxzZTsKPj4gKwo+PiAr wqDCoMKgIGZvcl9lYWNoX3NldF9iaXQoIGksICZ2YWwsIGxlbiAqIDggKQo+PiArwqDCoMKgIHsK Pj4gK8KgwqDCoMKgwqDCoMKgIHN0cnVjdCB2Z2ljX2lycSAqaXJxID0gdmdpY19nZXRfaXJxKHZj cHUtPmRvbWFpbiwgdmNwdSwgaW50aWQKPj4gKyBpKTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAg LyoKPj4gK8KgwqDCoMKgwqDCoMKgwqAgKiBJZiB3ZSBrbm93IHRoYXQgdGhlIElSUSBpcyBub3Qg YWN0aXZlIG9yIHdlIGNhbid0IGJlIHN1cmUKPj4gYWJvdXQKPj4gK8KgwqDCoMKgwqDCoMKgwqAg KiBpdCAoYmVjYXVzZSBpdCBpcyBjdXJyZW50bHkgaW4gYSBDUFUpLCBsb2cgdGhlIG5vdCBwcm9w ZXJseQo+PiArwqDCoMKgwqDCoMKgwqDCoCAqIGVtdWxhdGVkIE1NSU8gYWNjZXNzLgo+PiArwqDC oMKgwqDCoMKgwqDCoCAqLwo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCAhaXJxLT5hY3RpdmUgfHwg aXJxLT52Y3B1ICkKPj4gK8KgwqDCoMKgwqDCoMKgIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZ2RwcmludGsoWEVOTE9HX0VSUiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgIiVwdjogdkdJQ0Q6IElSUSVkOiBzZXR0aW5nIGFjdGl2ZSBzdGF0ZSBub3QK Pj4gc3VwcG9ydGVkXG4iLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB2Y3B1LCBpcnEtPmludGlkKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYmFpbF9v dXQgPSB0cnVlOwo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCB2 Z2ljX3B1dF9pcnEodmNwdS0+ZG9tYWluLCBpcnEpOwo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCBi YWlsX291dCApCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4gK8KgwqDCoCB9 Cj4+ICt9Cj4+ICsKPj4gwqAgc3RhdGljIGludCBtYXRjaF9yZWdpb24oY29uc3Qgdm9pZCAqa2V5 LCBjb25zdCB2b2lkICplbHQpCj4+IMKgIHsKPj4gwqDCoMKgwqDCoCBjb25zdCB1bnNpZ25lZCBp bnQgb2Zmc2V0ID0gKHVuc2lnbmVkIGxvbmcpa2V5Owo+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gv YXJtL3ZnaWMvdmdpYy1tbWlvLmgKPj4gYi94ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLW1taW8uaAo+ PiBpbmRleCA0NDY1ZjNiN2U1Li44NjA0NzIwNjI4IDEwMDY0NAo+PiAtLS0gYS94ZW4vYXJjaC9h cm0vdmdpYy92Z2ljLW1taW8uaAo+PiArKysgYi94ZW4vYXJjaC9hcm0vdmdpYy92Z2ljLW1taW8u aAo+PiBAQCAtMTE4LDYgKzExOCwxNyBAQCB2b2lkIHZnaWNfbW1pb193cml0ZV9jcGVuZGluZyhz dHJ1Y3QgdmNwdSAqdmNwdSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGFkZHJfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVu LAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIHZhbCk7Cj4+IMKgICt1bnNpZ25lZCBsb25nIHZnaWNf bW1pb19yZWFkX2FjdGl2ZShzdHJ1Y3QgdmNwdSAqdmNwdSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGFk ZHJfdCBhZGRyLCB1bnNpZ25lZCBpbnQgbGVuKTsKPj4gKwo+PiArdm9pZCB2Z2ljX21taW9fd3Jp dGVfY2FjdGl2ZShzdHJ1Y3QgdmNwdSAqdmNwdSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBhZGRyX3QgYWRkciwgdW5zaWduZWQg aW50IGxlbiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgdmFsKTsKPj4gKwo+PiArdm9pZCB2Z2ljX21taW9f d3JpdGVfc2FjdGl2ZShzdHJ1Y3QgdmNwdSAqdmNwdSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBhZGRyX3QgYWRkciwgdW5zaWdu ZWQgaW50IGxlbiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgdmFsKTsKPj4gKwo+PiDCoCB1bnNpZ25lZCBp bnQgdmdpY192Ml9pbml0X2Rpc3RfaW9kZXYoc3RydWN0IHZnaWNfaW9fZGV2aWNlICpkZXYpOwo+ PiDCoCDCoCAjZW5kaWYKPj4KPiAKPiBDaGVlcnMsCj4gCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZl bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxt YW4vbGlzdGluZm8veGVuLWRldmVs