From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH v2 19/25] arm/altp2m: Add altp2m_propagate_change. Date: Thu, 4 Aug 2016 15:50:31 +0100 Message-ID: References: <20160801171028.11615-1-proskurin@sec.in.tum.de> <20160801171028.11615-20-proskurin@sec.in.tum.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" 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 1bVJym-000528-MT for xen-devel@lists.xenproject.org; Thu, 04 Aug 2016 14:50:36 +0000 In-Reply-To: <20160801171028.11615-20-proskurin@sec.in.tum.de> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Sergej Proskurin , xen-devel@lists.xenproject.org Cc: Stefano Stabellini List-Id: xen-devel@lists.xenproject.org SGVsbG8gU2VyZ2VqLAoKT24gMDEvMDgvMTYgMTg6MTAsIFNlcmdlaiBQcm9za3VyaW4gd3JvdGU6 Cj4gVGhpcyBjb21taXQgaW50cm9kdWNlcyB0aGUgZnVuY3Rpb24gImFsdHAybV9wcm9wYWdhdGVf Y2hhbmdlIiB0aGF0IGlzCj4gcmVzcG9uc2libGUgdG8gcHJvcGFnYXRlIGNoYW5nZXMgYXBwbGll ZCB0byB0aGUgaG9zdCdzIHAybSB0byBhIHNwZWNpZmljCj4gb3IgZXZlbiBhbGwgYWx0cDJtIHZp ZXdzLiBJbiB0aGlzIHdheSwgWGVuIGNhbiBpbi0vZGVjcmVhc2UgdGhlIGd1ZXN0J3MKPiBwaHlz bWVtIGF0IHJ1bi10aW1lIHdpdGhvdXQgbGVhdmluZyB0aGUgYWx0cDJtIHZpZXdzIHdpdGgKPiBz dGFsbGVkL2ludmFsaWQgZW50cmllcy4KPgo+IFNpZ25lZC1vZmYtYnk6IFNlcmdlaiBQcm9za3Vy aW4gPHByb3NrdXJpbkBzZWMuaW4udHVtLmRlPgo+IC0tLQo+IENjOiBTdGVmYW5vIFN0YWJlbGxp bmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+Cj4gQ2M6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdy YWxsQGFybS5jb20+Cj4gLS0tCj4gIHhlbi9hcmNoL2FybS9hbHRwMm0uYyAgICAgICAgfCA3NSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICB4ZW4vYXJjaC9h cm0vcDJtLmMgICAgICAgICAgIHwgMTQgKysrKysrKysrCj4gIHhlbi9pbmNsdWRlL2FzbS1hcm0v YWx0cDJtLmggfCAgOSArKysrKysKPiAgeGVuL2luY2x1ZGUvYXNtLWFybS9wMm0uaCAgICB8ICA1 ICsrKwo+ICA0IGZpbGVzIGNoYW5nZWQsIDEwMyBpbnNlcnRpb25zKCspCj4KPiBkaWZmIC0tZ2l0 IGEveGVuL2FyY2gvYXJtL2FsdHAybS5jIGIveGVuL2FyY2gvYXJtL2FsdHAybS5jCj4gaW5kZXgg Zjk4ZmQ3My4uZjNjMWNmZiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC9hcm0vYWx0cDJtLmMKPiAr KysgYi94ZW4vYXJjaC9hcm0vYWx0cDJtLmMKPiBAQCAtMTMzLDYgKzEzMyw4MSBAQCBvdXQ6Cj4g ICAgICByZXR1cm4gcmM7Cj4gIH0KPgo+ICtzdGF0aWMgaW5saW5lIHZvaWQgYWx0cDJtX3Jlc2V0 KHN0cnVjdCBwMm1fZG9tYWluICpwMm0pCj4gK3sKPiArICAgIHJlYWRfbG9jaygmcDJtLT5sb2Nr KTsKCkFnYWluIHJlYWRfbG9jayBkb2VzIG5vdCBwcm90ZWN0IHlvdSBhZ2FpbnN0IGNvbmN1cnJl bnQgYWNjZXNzLiBPbmx5IAphZ2FpbnN0IHNvbWVvbmUgZWxzZSB1cGRhdGUgdGhlIHBhZ2UgdGFi bGUuCgpUaGlzIHNob3VsZCBiZSBwMm1fd3JpdGVfbG9jay4KCj4gKwo+ICsgICAgcDJtX2ZsdXNo X3RhYmxlKHAybSk7Cj4gKyAgICBwMm1fZmx1c2hfdGxiKHAybSk7CgphbHRwMm1fcmVzZXQgbWF5 IGJlIGNhbGxlZCBvbiBhIHAybSB1c2VkIGJ5IGEgcnVubmluZyB2Q1BVLiBXaGF0IHRoaXMgCmNv ZGUgZG9lcyBpczoKICAgICAxKSBjbGVhcmluZyByb290IHBhZ2UgdGFibGUKICAgICAyKSBmcmVl IGludGVybWVkaWF0ZSBwYWdlIHRhYmxlCiAgICAgMykgaW52YWxpZGF0ZSB0aGUgVExCCgpVbnRp bCBzdGVwIDMsIHRoZSBvdGhlciBUTEJzIG1heSBjb250YWluIGVudHJpZXMgcG9pbnRpbmcgdGhl IAppbnRlcm1lZGlhdGUgcGFnZSB0YWJsZS4gQnV0IHRoZXkgd2VyZSBmcmVlZCBhbmQgY291bGQg dGhlcmVmb3JlIGJlIApyZS11c2VkIGZvciBhbm90aGVyIHB1cnBvc2UuIFNvIHN0ZXAgMiBhbmQg MyBzaG91bGQgYmUgaW52ZXJ0ZWQuCgpJIHdpbGwgcmUtaXRlcmF0ZSBzYW1lIG1lc3NhZ2UgYXMg aW4gdGhlIHByZXZpb3VzIHNlcmllcy4gUGxlYXNlIGhhdmUgYSAKdGhpbmsgYWJvdXQgdGhlIGxv Y2tpbmcgYW5kIG1lbW9yeSBvcmRlcmluZyBvZiBhbGwgdGhpcyBzZXJpZXMuIEkgZm91bmQgCmEg bG90IG9mIHJhY2UgY29uZGl0aW9uIGFuZCBJIG1heSBoYXZlIG1pc3Mgc29tZW9uZS4gSWYgeW91 IGhhdmUgYSBkb3VidCAKZG9uJ3QgaGVzaXRhdGUgdG8gYXNrLgoKPiArCj4gKyAgICBwMm0tPmxv d2VzdF9tYXBwZWRfZ2ZuID0gSU5WQUxJRF9HRk47Cj4gKyAgICBwMm0tPm1heF9tYXBwZWRfZ2Zu ID0gX2dmbigwKTsKPiArCj4gKyAgICByZWFkX3VubG9jaygmcDJtLT5sb2NrKTsKPiArfQo+ICsK PiArdm9pZCBhbHRwMm1fcHJvcGFnYXRlX2NoYW5nZShzdHJ1Y3QgZG9tYWluICpkLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdmbl90IHNnZm4sCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBuciwKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtZm5fdCBzbWZuLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90 IG1hc2ssCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtX3R5cGVfdCBwMm10LAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAybV9hY2Nlc3NfdCBwMm1hKQo+ICt7Cj4g KyAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtOwo+ICsgICAgbWZuX3QgbTsKPiArICAgIHVuc2ln bmVkIGludCBpOwo+ICsgICAgdW5zaWduZWQgaW50IHJlc2V0X2NvdW50ID0gMDsKPiArICAgIHVu c2lnbmVkIGludCBsYXN0X3Jlc2V0X2lkeCA9IH4wOwo+ICsKPiArICAgIGlmICggIWFsdHAybV9h Y3RpdmUoZCkgKQoKVGhpcyBpcyBub3Qgc2FmZS4gZC0+YXJjaC5hbHRwMm1fYWN0aXZlIG1heWJl IGJlIHR1cm4gb2ZmIGp1c3QgYWZ0ZXIgeW91IApyZWFkLiBNYXliZSB5b3Ugd2FudCB0byBwcm90 ZWN0IGl0IHdpdGggYWx0cDJtX2xvY2suCgo+ICsgICAgICAgIHJldHVybjsKPiArCj4gKyAgICBh bHRwMm1fbG9jayhkKTsKPiArCj4gKyAgICBmb3IgKCBpID0gMDsgaSA8IE1BWF9BTFRQMk07IGkr KyApCj4gKyAgICB7Cj4gKyAgICAgICAgaWYgKCBkLT5hcmNoLmFsdHAybV92dHRicltpXSA9PSBJ TlZBTElEX1ZUVEJSICkKPiArICAgICAgICAgICAgY29udGludWU7Cj4gKwo+ICsgICAgICAgIHAy bSA9IGQtPmFyY2guYWx0cDJtX3AybVtpXTsKPiArCj4gKyAgICAgICAgbSA9IHAybV9sb29rdXBf YXR0cihwMm0sIHNnZm4sIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpOwoKV2hhdCBpcyB0aGUgYmVu ZWZpdHMgdG8gY2hlY2sgaWYgaXQgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGFsdHAybT8KCj4gKwo+ ICsgICAgICAgIC8qIENoZWNrIGZvciBhIGRyb3BwZWQgcGFnZSB0aGF0IG1heSBpbXBhY3QgdGhp cyBhbHRwMm0uICovCj4gKyAgICAgICAgaWYgKCAobWZuX2VxKHNtZm4sIElOVkFMSURfTUZOKSB8 fCBwMm10ID09IHAybV9pbnZhbGlkKSAmJgoKV2h5IHRoZSBjaGVjayB0byBwMm10IGFnYWluc3Qg cDJtX2ludmFsaWQ/Cgo+ICsgICAgICAgICAgICAgZ2ZuX3goc2dmbikgPj0gZ2ZuX3gocDJtLT5s b3dlc3RfbWFwcGVkX2dmbikgJiYKPiArICAgICAgICAgICAgIGdmbl94KHNnZm4pIDw9IGdmbl94 KHAybS0+bWF4X21hcHBlZF9nZm4pICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIGlmICgg IXJlc2V0X2NvdW50KysgKQo+ICsgICAgICAgICAgICB7Cj4gKyAgICAgICAgICAgICAgICBhbHRw Mm1fcmVzZXQocDJtKTsKPiArICAgICAgICAgICAgICAgIGxhc3RfcmVzZXRfaWR4ID0gaTsKPiAr ICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICBlbHNlCj4gKyAgICAgICAgICAgIHsKPiArICAg ICAgICAgICAgICAgIC8qIEF0IGxlYXN0IDIgYWx0cDJtJ3MgaW1wYWN0ZWQsIHNvIHJlc2V0IGV2 ZXJ5dGhpbmcuICovCgpTbyBpZiB5b3UgcmVtb3ZlIGEgNEtCIHBhZ2UgaW4gbW9yZSB0aGFuIDIg YWx0cDJtLCB5b3Ugd2lsbCBmbHVzaCBhbGwgCnRoZSBwMm0uIFRoaXMgc291bmRzIHJlYWxseSBt b3JlIHRpbWUgY29uc3VtaW5nICh5b3UgaGF2ZSB0byBmcmVlIGFsbCAKdGhlIGludGVybWVkaWF0 ZSBwYWdlIHRhYmxlKSB0aGFuIHJlbW92aW5nIGEgc2luZ2xlIDRLQiBwYWdlLgoKPiArICAgICAg ICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgTUFYX0FMVFAyTTsgaSsrICkKPiArICAgICAgICAg ICAgICAgIHsKPiArICAgICAgICAgICAgICAgICAgICBpZiAoIGkgPT0gbGFzdF9yZXNldF9pZHgg fHwKPiArICAgICAgICAgICAgICAgICAgICAgICAgIGQtPmFyY2guYWx0cDJtX3Z0dGJyW2ldID09 IElOVkFMSURfVlRUQlIgKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiAr Cj4gKyAgICAgICAgICAgICAgICAgICAgcDJtID0gZC0+YXJjaC5hbHRwMm1fcDJtW2ldOwo+ICsg ICAgICAgICAgICAgICAgICAgIGFsdHAybV9yZXNldChwMm0pOwo+ICsgICAgICAgICAgICAgICAg fQo+ICsgICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAg ICB9Cj4gKyAgICAgICAgZWxzZSBpZiAoICFtZm5fZXEobSwgSU5WQUxJRF9NRk4pICkKPiArICAg ICAgICAgICAgbW9kaWZ5X2FsdHAybV9yYW5nZShkLCBwMm0sIHNnZm4sIG5yLCBzbWZuLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2ssIHAybXQsIHAybWEpOwoKSSBhbSBh IGJpdCBjb25jZXJuZWQgYWJvdXQgdGhpcyBmdW5jdGlvbi4gV2UgZGVjaWRlZCB0byBsaW1pdCB0 aGUgc2l6ZSAKb2YgdGhlIG1hcHBpbmcgdG8gYXZvaWQgbG9uZyBydW5uaW5nIG1lbW9yeSBvcGVy YXRpb25zIChzZWUgWFNBLTE1OCkuCgpXaXRoIHRoaXMgZnVuY3Rpb24geW91IG11bHRpcGx5IHVw IHRvIDEwIHRpbWVzIHRoZSBkdXJhdGlvbiBvZiB0aGUgCm9wZXJhdGlvbi4KCkFsc28sIHdoYXQg aXMgbW9kaWZ5X2FsdHAybV9yYW5nZSBoYXMgZmFpbGVkPwoKCj4gKyAgICB9Cj4gKwo+ICtvdXQ6 Cj4gKyAgICBhbHRwMm1fdW5sb2NrKGQpOwo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9pZCBhbHRwMm1f dmNwdV9yZXNldChzdHJ1Y3QgdmNwdSAqdikKPiAgewo+ICAgICAgc3RydWN0IGFsdHAybXZjcHUg KmF2ID0gJnZjcHVfYWx0cDJtKHYpOwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vcDJtLmMg Yi94ZW4vYXJjaC9hcm0vcDJtLmMKPiBpbmRleCBlMGE3ZjM4Li4zMTgxMGU2IDEwMDY0NAo+IC0t LSBhL3hlbi9hcmNoL2FybS9wMm0uYwo+ICsrKyBiL3hlbi9hcmNoL2FybS9wMm0uYwo+IEBAIC05 OTIsNiArOTkyLDcgQEAgc3RhdGljIGludCBhcHBseV9wMm1fY2hhbmdlcyhzdHJ1Y3QgZG9tYWlu ICpkLAo+ICAgICAgY29uc3QgYm9vbF90IHByZWVtcHQgPSAhaXNfaWRsZV92Y3B1KGN1cnJlbnQp Owo+ICAgICAgYm9vbF90IGZsdXNoID0gZmFsc2U7Cj4gICAgICBib29sX3QgZmx1c2hfcHQ7Cj4g KyAgICBib29sX3QgZW50cnlfd3JpdHRlbiA9IGZhbHNlOwo+ICAgICAgUEFHRV9MSVNUX0hFQUQo ZnJlZV9wYWdlcyk7Cj4gICAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwZzsKPgo+IEBAIC0xMTEyLDYg KzExMTMsNyBAQCBzdGF0aWMgaW50IGFwcGx5X3AybV9jaGFuZ2VzKHN0cnVjdCBkb21haW4gKmQs Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRkciwgJm1hZGRyLCAmZmx1 c2gsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LCBhKTsKPiAgICAgICAg ICAgICAgaWYgKCByZXQgPCAwICkgeyByYyA9IHJldCA7IGdvdG8gb3V0OyB9Cj4gKyAgICAgICAg ICAgIGlmICggcmV0ICkgZW50cnlfd3JpdHRlbiA9IDE7CgpQbGVhc2UgZG9uJ3QgbWl4IGZhbHNl IGFuZCAxLiBUaGlzIHNob3VsZCBiZSB0cnVlIGhlcmUuCgo+ICAgICAgICAgICAgICBjb3VudCAr PSByZXQ7Cj4KPiAgICAgICAgICAgICAgaWYgKCByZXQgIT0gUDJNX09ORV9QUk9HUkVTU19OT1Ag KQo+IEBAIC0xMjA4LDYgKzEyMTAsOSBAQCBvdXQ6Cj4KPiAgICAgIHAybV93cml0ZV91bmxvY2so cDJtKTsKPgo+ICsgICAgaWYgKCByYyA+PSAwICYmIGVudHJ5X3dyaXR0ZW4gJiYgcDJtX2lzX2hv c3RwMm0ocDJtKSApCj4gKyAgICAgICAgYWx0cDJtX3Byb3BhZ2F0ZV9jaGFuZ2UoZCwgc2dmbiwg bnIsIHNtZm4sIG1hc2ssIHQsIGEpOwoKVGhlcmUgYXJlIG9wZXJhdGlvbiB3aGljaCBkb2VzIG5v dCByZXF1aXJlIHByb3BhZ2F0aW9uIChmb3IgaW5zdGFuY2UgClJFTElOUVVJU0ggYW5kIENBQ0hF RkxVU0gpLgoKPiArCj4gICAgICBpZiAoIHJjIDwgMCAmJiAoIG9wID09IElOU0VSVCApICYmCj4g ICAgICAgICAgIGFkZHIgIT0gc3RhcnRfZ3BhZGRyICkKPiAgICAgIHsKPiBAQCAtMTMzMSw2ICsx MzM2LDE1IEBAIGludCBtb2RpZnlfYWx0cDJtX2VudHJ5KHN0cnVjdCBkb21haW4gKmQsIHN0cnVj dCBwMm1fZG9tYWluICphcDJtLAo+ICAgICAgcmV0dXJuIGFwcGx5X3AybV9jaGFuZ2VzKGQsIGFw Mm0sIElOU0VSVCwgZ2ZuLCBuciwgbWZuLCAwLCB0LCBhKTsKPiAgfQo+Cj4gK2ludCBtb2RpZnlf YWx0cDJtX3JhbmdlKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBwMm1fZG9tYWluICphcDJtLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICBnZm5fdCBzZ2ZuLCB1bnNpZ25lZCBsb25nIG5yLCBt Zm5fdCBzbWZuLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBtLCBwMm1fdHlw ZV90IHQsIHAybV9hY2Nlc3NfdCBhKQo+ICt7Cj4gKyAgICBBU1NFUlQocDJtX2lzX2FsdHAybShh cDJtKSk7Cj4gKwo+ICsgICAgcmV0dXJuIGFwcGx5X3AybV9jaGFuZ2VzKGQsIGFwMm0sIElOU0VS VCwgc2dmbiwgbnIsIHNtZm4sIG0sIHQsIGEpOwo+ICt9Cj4gKwo+ICBpbnQgcDJtX2FsbG9jX3Rh YmxlKHN0cnVjdCBwMm1fZG9tYWluICpwMm0pCj4gIHsKPiAgICAgIHVuc2lnbmVkIGludCBpOwo+ IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2FsdHAybS5oIGIveGVuL2luY2x1ZGUv YXNtLWFybS9hbHRwMm0uaAo+IGluZGV4IGRjNDFmOTMuLjlhZWI3ZDYgMTAwNjQ0Cj4gLS0tIGEv eGVuL2luY2x1ZGUvYXNtLWFybS9hbHRwMm0uaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0v YWx0cDJtLmgKPiBAQCAtODEsNCArODEsMTMgQEAgaW50IGFsdHAybV9zZXRfbWVtX2FjY2Vzcyhz dHJ1Y3QgZG9tYWluICpkLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAybV9hY2Nlc3Nf dCBhLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmbl90IGdmbik7Cj4KPiArLyogUHJv cGFnYXRlcyBjaGFuZ2VzIG1hZGUgdG8gaG9zdHAybSB0byBhZmZlY3RlZCBhbHRwMm0gdmlld3Mu ICovCj4gK3ZvaWQgYWx0cDJtX3Byb3BhZ2F0ZV9jaGFuZ2Uoc3RydWN0IGRvbWFpbiAqZCwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZm5fdCBzZ2ZuLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnIsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbWZuX3Qgc21mbiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 MzJfdCBtYXNrLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAybV90eXBlX3QgcDJt dCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fYWNjZXNzX3QgcDJtYSk7Cj4g Kwo+ICAjZW5kaWYgLyogX19BU01fQVJNX0FMVFAyTV9IICovCj4gZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL2FzbS1hcm0vcDJtLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL3AybS5oCj4gaW5kZXgg OTg1OWFkMS4uNTkxODZjOSAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL3AybS5o Cj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9wMm0uaAo+IEBAIC0xOTEsNiArMTkxLDExIEBA IGludCBtb2RpZnlfYWx0cDJtX2VudHJ5KHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBwMm1fZG9t YWluICpwMm0sCj4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRyX3QgZ3BhLCBwYWRkcl90 IG1hZGRyLCB1bnNpZ25lZCBpbnQgbGV2ZWwsCj4gICAgICAgICAgICAgICAgICAgICAgICAgIHAy bV90eXBlX3QgdCwgcDJtX2FjY2Vzc190IGEpOwo+Cj4gKy8qIE1vZGlmeSBhbiBhbHRwMm0gdmll dydzIHJhbmdlIG9mIGVudHJpZXMgb3IgdGhlaXIgYXR0cmlidXRlcy4gKi8KPiAraW50IG1vZGlm eV9hbHRwMm1fcmFuZ2Uoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHAybV9kb21haW4gKnAybSwK PiArICAgICAgICAgICAgICAgICAgICAgICAgZ2ZuX3Qgc2dmbiwgdW5zaWduZWQgbG9uZyBuciwg bWZuX3Qgc21mbiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbWFzaywgcDJt X3R5cGVfdCB0LCBwMm1fYWNjZXNzX3QgYSk7Cj4gKwo+ICAvKiBDbGVhbiAmIGludmFsaWRhdGUg Y2FjaGVzIGNvcnJlc3BvbmRpbmcgdG8gYSByZWdpb24gb2YgZ3Vlc3QgYWRkcmVzcyBzcGFjZSAq Lwo+ICBpbnQgcDJtX2NhY2hlX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIGdmbl90IHN0YXJ0LCB1 bnNpZ25lZCBsb25nIG5yKTsKPgo+CgotLSAKSnVsaWVuIEdyYWxsCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK