From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [RFC 15/16] hack: move gicv2 LRs reads and writes out of spinlocks Date: Wed, 28 Nov 2018 21:58:46 +0000 Message-ID: References: <1543440731-21947-1-git-send-email-andrii.anisov@gmail.com> <1543440731-21947-16-git-send-email-andrii.anisov@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gS7r9-0003qG-SK for xen-devel@lists.xenproject.org; Wed, 28 Nov 2018 21:58:52 +0000 In-Reply-To: <1543440731-21947-16-git-send-email-andrii.anisov@gmail.com> Content-Language: en-US Content-ID: <231A119AAA23C84CA21E265E23425F21@eurprd08.prod.outlook.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Andrii Anisov Cc: "xen-devel@lists.xenproject.org" , nd , Andrii Anisov , Stefano Stabellini , Andre Przywara List-Id: xen-devel@lists.xenproject.org SGkgQW5kcmlpLA0KDQpJIGNhbid0IGNvbW1lbnQgb24gdGhlIGNvdmVyIGxldHRlciBiZWNhdXNl IGl0IGlzIGluLWV4aXN0ZW50Li4uDQpUaGlzIHNlcmllcyBuZWVkcyBhIGxvdCBvZiBleHBsYW5h dGlvbiB3aHkgeW91IGFyZSBkb2luZyB0aGlzIHdheQ0KYW5kIHRoZSBwZXJmb3JtYW5jZSBpbXBy b3ZlbWVudCBvdmVyIG11bHRpcGxlIHVzZSBjYXNlIChub3Qgb25seQ0KZ3JhcGhpY3MgYmVuY2ht YXJrKS4gQnV0Li4uDQoNCk9uIDI4LzExLzIwMTggMjE6MzIsIEFuZHJpaSBBbmlzb3Ygd3JvdGU6 DQo+IEZyb206IEFuZHJpaSBBbmlzb3YgPGFuZHJpaV9hbmlzb3ZAZXBhbS5jb20+DQo+IA0KPiBV c2UgdmFsdWVzIGNhY2hlZCBpbiBgc3RydWN0IHZjcHVgIGZvciBndWVzdCBJUlFzIHByb2Nlc3Np bmcuDQo+IFRoaXMgYWxzbyByZWR1Y2VzIExSIHN0b3JlcyBhbmQgcmVzdG9yZXMgb24gVkNQVSBz d2l0Y2guDQoNCi4uLiBJIGFtIHRyeWluZyB0byB1bmRlcnN0YW5kIHdoYXQgaXMgdGhlIGJlbmVm aXRzIHRvIGltcHJvdmUgdGhlIG9sZCANCnZHSUMgd2hlbiBpZGVhbGx5IHdlIHdvdWxkIGxpa2Ug dG8gZ2V0IHRoZSBuZXcgdkdJQyB1c2VkIGluIG1vcmUgcGxhY2UNCmFzIGl0IGlzIG1vcmUgY29t cGxpYW50IHdpdGggdGhlIEdJQyBzcGVjLiBUaGUgbW9yZSB0aGF0IHRoaXMgcGF0Y2ggDQpsb29r cyB2ZXJ5IHNpbWlsYXIgdG8gd2hhdCB0aGUgbmV3IHZHSUMgZG9lcy4uLg0KDQpDaGVlcnMsDQoN Cj4gDQo+IFNpZ25lZC1vZmYtYnk6IEFuZHJpaSBBbmlzb3YgPGFuZHJpaV9hbmlzb3ZAZXBhbS5j b20+DQo+IC0tLQ0KPiAgIHhlbi9hcmNoL2FybS9naWMtdjIuYyAgICAgfCA1NiArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQ0KPiAgIHhlbi9hcmNoL2FybS9n aWMtdmdpYy5jICAgfCAgOCArKysrKy0tDQo+ICAgeGVuL2luY2x1ZGUvYXNtLWFybS9naWMuaCB8 ICA1ICsrKystDQo+ICAgMyBmaWxlcyBjaGFuZ2VkLCA0NyBpbnNlcnRpb25zKCspLCAyMiBkZWxl dGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZ2ljLXYyLmMgYi94ZW4v YXJjaC9hcm0vZ2ljLXYyLmMNCj4gaW5kZXggMjUxNDdiZC4uYTJlYjBhNyAxMDA2NDQNCj4gLS0t IGEveGVuL2FyY2gvYXJtL2dpYy12Mi5jDQo+ICsrKyBiL3hlbi9hcmNoL2FybS9naWMtdjIuYw0K PiBAQCAtMTc2LDMxICsxNzYsMTggQEAgc3RhdGljIHVuc2lnbmVkIGludCBnaWN2Ml9jcHVfbWFz ayhjb25zdCBjcHVtYXNrX3QgKmNwdW1hc2spDQo+ICAgDQo+ICAgc3RhdGljIHZvaWQgZ2ljdjJf c2F2ZV9zdGF0ZShzdHJ1Y3QgdmNwdSAqdikNCj4gICB7DQo+IC0gICAgaW50IGk7DQo+IC0NCj4g LSAgICAvKiBObyBuZWVkIGZvciBzcGlubG9ja3MgaGVyZSBiZWNhdXNlIGludGVycnVwdHMgYXJl IGRpc2FibGVkIGFyb3VuZA0KPiAtICAgICAqIHRoaXMgY2FsbCBhbmQgaXQgb25seSBhY2Nlc3Nl cyBzdHJ1Y3QgdmNwdSBmaWVsZHMgdGhhdCBjYW5ub3QgYmUNCj4gLSAgICAgKiBhY2Nlc3NlZCBz aW11bHRhbmVvdXNseSBieSBhbm90aGVyIHBDUFUuDQo+IC0gICAgICovDQo+IC0gICAgZm9yICgg aSA9IDA7IGkgPCBnaWN2Ml9pbmZvLm5yX2xyczsgaSsrICkNCj4gLSAgICAgICAgdi0+YXJjaC5n aWMudjIubHJbaV0gPSByZWFkbF9naWNoKEdJQ0hfTFIgKyBpICogNCk7DQo+IC0NCj4gICAgICAg di0+YXJjaC5naWMudjIuYXByID0gcmVhZGxfZ2ljaChHSUNIX0FQUik7DQo+ICAgICAgIHYtPmFy Y2guZ2ljLnYyLnZtY3IgPSByZWFkbF9naWNoKEdJQ0hfVk1DUik7DQo+ICAgICAgIC8qIERpc2Fi bGUgdW50aWwgbmV4dCBWQ1BVIHNjaGVkdWxlZCAqLw0KPiAgICAgICB3cml0ZWxfZ2ljaCgwLCBH SUNIX0hDUik7DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGljIHZvaWQgZ2ljdjJfcmVzdG9yZV9zdGF0 ZShjb25zdCBzdHJ1Y3QgdmNwdSAqdikNCj4gK3N0YXRpYyB2b2lkIGdpY3YyX3Jlc3RvcmVfc3Rh dGUoc3RydWN0IHZjcHUgKnYpDQo+ICAgew0KPiAtICAgIGludCBpOw0KPiAtDQo+IC0gICAgZm9y ICggaSA9IDA7IGkgPCBnaWN2Ml9pbmZvLm5yX2xyczsgaSsrICkNCj4gLSAgICAgICAgd3JpdGVs X2dpY2godi0+YXJjaC5naWMudjIubHJbaV0sIEdJQ0hfTFIgKyBpICogNCk7DQo+IC0NCj4gICAg ICAgd3JpdGVsX2dpY2godi0+YXJjaC5naWMudjIuYXByLCBHSUNIX0FQUik7DQo+ICAgICAgIHdy aXRlbF9naWNoKHYtPmFyY2guZ2ljLnYyLnZtY3IsIEdJQ0hfVk1DUik7DQo+ICAgICAgIHdyaXRl bF9naWNoKEdJQ0hfSENSX0VOLCBHSUNIX0hDUik7DQo+ICsgICAgdi0+YXJjaC5naWMudjIubHJf dXBkYXRlX21hc2sgPSAoMSA8PCBnaWNfaHdfb3BzLT5pbmZvLT5ucl9scnMpIC0gMTsNCj4gICB9 DQo+ICAgDQo+ICAgc3RhdGljIHZvaWQgZ2ljdjJfZHVtcF9zdGF0ZShjb25zdCBzdHJ1Y3QgdmNw dSAqdikNCj4gQEAgLTQ5Myw2ICs0ODAsNyBAQCBzdGF0aWMgdm9pZCBnaWN2Ml9kaXNhYmxlX2lu dGVyZmFjZSh2b2lkKQ0KPiAgIHN0YXRpYyB2b2lkIGdpY3YyX3VwZGF0ZV9scihpbnQgbHIsIHVu c2lnbmVkIGludCB2aXJxLCB1aW50OF90IHByaW9yaXR5LA0KPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgaHdfaXJxLCB1bnNpZ25lZCBpbnQgc3RhdGUpDQo+ICAg ew0KPiArICAgIHN0cnVjdCB2Y3B1ICp2ID0gY3VycmVudDsNCj4gICAgICAgdWludDMyX3QgbHJf cmVnOw0KPiAgIA0KPiAgICAgICBCVUdfT04obHIgPj0gZ2ljdjJfaW5mby5ucl9scnMpOw0KPiBA QCAtNTA3LDE5ICs0OTUsMjMgQEAgc3RhdGljIHZvaWQgZ2ljdjJfdXBkYXRlX2xyKGludCBsciwg dW5zaWduZWQgaW50IHZpcnEsIHVpbnQ4X3QgcHJpb3JpdHksDQo+ICAgICAgICAgICBscl9yZWcg fD0gR0lDSF9WMl9MUl9IVyB8ICgoaHdfaXJxICYgR0lDSF9WMl9MUl9QSFlTSUNBTF9NQVNLICkN Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IEdJQ0hfVjJfTFJfUEhZ U0lDQUxfU0hJRlQpOw0KPiAgIA0KPiAtICAgIHdyaXRlbF9naWNoKGxyX3JlZywgR0lDSF9MUiAr IGxyICogNCk7DQo+ICsgICAgdi0+YXJjaC5naWMudjIubHJbbHJdID0gbHJfcmVnOw0KPiArICAg IHYtPmFyY2guZ2ljLnYyLmxyX3VwZGF0ZV9tYXNrIHw9IDE8PGxyOw0KPiAgIH0NCj4gICANCj4g ICBzdGF0aWMgdm9pZCBnaWN2Ml9jbGVhcl9scihpbnQgbHIpDQo+ICAgew0KPiAtICAgIHdyaXRl bF9naWNoKDAsIEdJQ0hfTFIgKyBsciAqIDQpOw0KPiArICAgIHN0cnVjdCB2Y3B1ICp2ID0gY3Vy cmVudDsNCj4gKw0KPiArICAgIHYtPmFyY2guZ2ljLnYyLmxyW2xyXSA9IDA7DQo+ICsgICAgdi0+ YXJjaC5naWMudjIubHJfdXBkYXRlX21hc2sgfD0gMTw8bHI7DQo+ICAgfQ0KPiAgIA0KPiAgIHN0 YXRpYyB2b2lkIGdpY3YyX3JlYWRfbHIoaW50IGxyLCBzdHJ1Y3QgZ2ljX2xyICpscl9yZWcpDQo+ ICAgew0KPiAgICAgICB1aW50MzJfdCBscnY7DQo+ICAgDQo+IC0gICAgbHJ2ICAgICAgICAgID0g cmVhZGxfZ2ljaChHSUNIX0xSICsgbHIgKiA0KTsNCj4gKyAgICBscnYgPSBjdXJyZW50LT5hcmNo LmdpYy52Mi5scltscl07DQo+ICAgICAgIGxyX3JlZy0+dmlycSA9IChscnYgPj4gR0lDSF9WMl9M Ul9WSVJUVUFMX1NISUZUKSAmIEdJQ0hfVjJfTFJfVklSVFVBTF9NQVNLOw0KPiAgICAgICBscl9y ZWctPnByaW9yaXR5ID0gKGxydiA+PiBHSUNIX1YyX0xSX1BSSU9SSVRZX1NISUZUKSAmIEdJQ0hf VjJfTFJfUFJJT1JJVFlfTUFTSzsNCj4gICAgICAgbHJfcmVnLT5wZW5kaW5nID0gbHJ2ICYgR0lD SF9WMl9MUl9QRU5ESU5HOw0KPiBAQCAtNTQ2LDYgKzUzOCw3IEBAIHN0YXRpYyB2b2lkIGdpY3Yy X3JlYWRfbHIoaW50IGxyLCBzdHJ1Y3QgZ2ljX2xyICpscl9yZWcpDQo+ICAgc3RhdGljIHZvaWQg Z2ljdjJfd3JpdGVfbHIoaW50IGxyLCBjb25zdCBzdHJ1Y3QgZ2ljX2xyICpscl9yZWcpDQo+ICAg ew0KPiAgICAgICB1aW50MzJfdCBscnYgPSAwOw0KPiArICAgIHN0cnVjdCB2Y3B1ICp2ID0gY3Vy cmVudDsNCj4gICANCj4gICAgICAgbHJ2ID0gKCgobHJfcmVnLT52aXJxICYgR0lDSF9WMl9MUl9W SVJUVUFMX01BU0spIDw8IEdJQ0hfVjJfTFJfVklSVFVBTF9TSElGVCkgICB8DQo+ICAgICAgICAg ICAgICgodWludDMyX3QpKGxyX3JlZy0+cHJpb3JpdHkgJiBHSUNIX1YyX0xSX1BSSU9SSVRZX01B U0spDQo+IEBAIC01NzQsNyArNTY3LDMwIEBAIHN0YXRpYyB2b2lkIGdpY3YyX3dyaXRlX2xyKGlu dCBsciwgY29uc3Qgc3RydWN0IGdpY19sciAqbHJfcmVnKQ0KPiAgICAgICAgICAgbHJ2IHw9ICh1 aW50MzJfdClscl9yZWctPnZpcnQuc291cmNlIDw8IEdJQ0hfVjJfTFJfQ1BVSURfU0hJRlQ7DQo+ ICAgICAgIH0NCj4gICANCj4gLSAgICB3cml0ZWxfZ2ljaChscnYsIEdJQ0hfTFIgKyBsciAqIDQp Ow0KPiArICAgIHYtPmFyY2guZ2ljLnYyLmxyW2xyXSA9IGxydjsNCj4gKyAgICB2LT5hcmNoLmdp Yy52Mi5scl91cGRhdGVfbWFzayB8PSAxPDxscjsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQg Z2ljdjJfZmV0Y2hfbHJzKHN0cnVjdCB2Y3B1ICp2KQ0KPiArew0KPiArICAgIGludCBpOw0KPiAr DQo+ICsgICAgZm9yICggaSA9IDA7IGkgPCBnaWN2Ml9pbmZvLm5yX2xyczsgaSsrICkNCj4gKyAg ICAgICAgaWYgKCB0aGlzX2NwdShscl9tYXNrKSAmIDE8PGkgKQ0KPiArICAgICAgICAgICAgdi0+ YXJjaC5naWMudjIubHJbaV0gPSByZWFkbF9naWNoKEdJQ0hfTFIgKyBpICogNCk7DQo+ICsgICAg ICAgIGVsc2UNCj4gKyAgICAgICAgICAgIHYtPmFyY2guZ2ljLnYyLmxyW2ldID0gMDsNCj4gK30N Cj4gKw0KPiArc3RhdGljIHZvaWQgZ2ljdjJfcHVzaF9scnMoc3RydWN0IHZjcHUgKnYpDQo+ICt7 DQo+ICsgICAgaW50IGk7DQo+ICsgICAgdWludDY0X3QgbWFzayA9IHYtPmFyY2guZ2ljLnYyLmxy X3VwZGF0ZV9tYXNrOw0KPiArDQo+ICsgICAgZm9yICggaSA9IDA7IGkgPCBnaWN2Ml9pbmZvLm5y X2xyczsgaSsrICkNCj4gKyAgICAgICAgaWYgKCBtYXNrICYgMTw8aSApDQo+ICsgICAgICAgICAg ICB3cml0ZWxfZ2ljaCh2LT5hcmNoLmdpYy52Mi5scltpXSwgR0lDSF9MUiArIGkgKiA0KTsNCj4g KyAgICB2LT5hcmNoLmdpYy52Mi5scl91cGRhdGVfbWFzayA9IDA7DQo+ICAgfQ0KPiAgIA0KPiAg IHN0YXRpYyB2b2lkIGdpY3YyX2hjcl9zdGF0dXModWludDMyX3QgZmxhZywgYm9vbCBzdGF0dXMp DQo+IEBAIC0xMzYwLDYgKzEzNzYsOCBAQCBjb25zdCBzdGF0aWMgc3RydWN0IGdpY19od19vcGVy YXRpb25zIGdpY3YyX29wcyA9IHsNCj4gICAgICAgLm1hcF9od2RvbV9leHRyYV9tYXBwaW5ncyA9 IGdpY3YyX21hcF9od2Rvd25fZXh0cmFfbWFwcGluZ3MsDQo+ICAgICAgIC5pb21lbV9kZW55X2Fj Y2VzcyAgID0gZ2ljdjJfaW9tZW1fZGVueV9hY2Nlc3MsDQo+ICAgICAgIC5kb19MUEkgICAgICAg ICAgICAgID0gZ2ljdjJfZG9fTFBJLA0KPiArICAgIC5mZXRjaF9scnMgICAgICAgICAgID0gZ2lj djJfZmV0Y2hfbHJzLA0KPiArICAgIC5wdXNoX2xycyAgICAgICAgICAgID0gZ2ljdjJfcHVzaF9s cnMsDQo+ICAgfTsNCj4gICANCj4gICAvKiBTZXQgdXAgdGhlIEdJQyAqLw0KPiBkaWZmIC0tZ2l0 IGEveGVuL2FyY2gvYXJtL2dpYy12Z2ljLmMgYi94ZW4vYXJjaC9hcm0vZ2ljLXZnaWMuYw0KPiBp bmRleCBlNTExZjkxLi44NmM4YWUyIDEwMDY0NA0KPiAtLS0gYS94ZW4vYXJjaC9hcm0vZ2ljLXZn aWMuYw0KPiArKysgYi94ZW4vYXJjaC9hcm0vZ2ljLXZnaWMuYw0KPiBAQCAtMjc3LDYgKzI3Nyw3 IEBAIHZvaWQgdmdpY19zeW5jX2Zyb21fbHJzKHN0cnVjdCB2Y3B1ICp2KQ0KPiAgICAgICAgICAg cmV0dXJuOw0KPiAgIA0KPiAgICAgICBnaWNfaHdfb3BzLT51cGRhdGVfaGNyX3N0YXR1cyhHSUNI X0hDUl9VSUUsIGZhbHNlKTsNCj4gKyAgICBnaWNfaHdfb3BzLT5mZXRjaF9scnModik7DQo+ICAg DQo+ICAgICAgIHNwaW5fbG9jaygmdi0+YXJjaC52Z2ljLmxvY2spOw0KPiAgIA0KPiBAQCAtNDAz LDExICs0MDQsMTQgQEAgaW50IHZnaWNfdmNwdV9wZW5kaW5nX2lycShzdHJ1Y3QgdmNwdSAqdikN Cj4gICANCj4gICB2b2lkIHZnaWNfc3luY190b19scnModm9pZCkNCj4gICB7DQo+ICsgICAgc3Ry dWN0IHZjcHUgKnYgPSBjdXJyZW50Ow0KPiAgICAgICBBU1NFUlQoIWxvY2FsX2lycV9pc19lbmFi bGVkKCkpOw0KPiAgIA0KPiAtICAgIGdpY19yZXN0b3JlX3BlbmRpbmdfaXJxcyhjdXJyZW50KTsN Cj4gKyAgICBnaWNfcmVzdG9yZV9wZW5kaW5nX2lycXModik7DQo+ICAgDQo+IC0gICAgaWYgKCAh bGlzdF9lbXB0eSgmY3VycmVudC0+YXJjaC52Z2ljLmxyX3BlbmRpbmcpICYmIGxyX2FsbF9mdWxs KCkgKQ0KPiArICAgIGdpY19od19vcHMtPnB1c2hfbHJzKHYpOw0KPiArDQo+ICsgICAgaWYgKCAh bGlzdF9lbXB0eSgmdi0+YXJjaC52Z2ljLmxyX3BlbmRpbmcpICYmIGxyX2FsbF9mdWxsKCkgKQ0K PiAgICAgICAgICAgZ2ljX2h3X29wcy0+dXBkYXRlX2hjcl9zdGF0dXMoR0lDSF9IQ1JfVUlFLCB0 cnVlKTsNCj4gICB9DQo+ICAgDQo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2dp Yy5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9naWMuaA0KPiBpbmRleCAzZDczOTRkLi5hZGQyNTY2 IDEwMDY0NA0KPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL2dpYy5oDQo+ICsrKyBiL3hlbi9p bmNsdWRlL2FzbS1hcm0vZ2ljLmgNCj4gQEAgLTE4Nyw2ICsxODcsNyBAQCBzdHJ1Y3QgZ2ljX3Yy IHsNCj4gICAgICAgdWludDMyX3Qgdm1jcjsNCj4gICAgICAgdWludDMyX3QgYXByOw0KPiAgICAg ICB1aW50MzJfdCBscls2NF07DQo+ICsgICAgdWludDY0X3QgbHJfdXBkYXRlX21hc2s7DQo+ICAg fTsNCj4gICANCj4gICAvKg0KPiBAQCAtMzIzLDcgKzMyNCw3IEBAIHN0cnVjdCBnaWNfaHdfb3Bl cmF0aW9ucyB7DQo+ICAgICAgIC8qIFNhdmUgR0lDIHJlZ2lzdGVycyAqLw0KPiAgICAgICB2b2lk ICgqc2F2ZV9zdGF0ZSkoc3RydWN0IHZjcHUgKik7DQo+ICAgICAgIC8qIFJlc3RvcmUgR0lDIHJl Z2lzdGVycyAqLw0KPiAtICAgIHZvaWQgKCpyZXN0b3JlX3N0YXRlKShjb25zdCBzdHJ1Y3QgdmNw dSAqKTsNCj4gKyAgICB2b2lkICgqcmVzdG9yZV9zdGF0ZSkoc3RydWN0IHZjcHUgKik7DQo+ICAg ICAgIC8qIER1bXAgR0lDIExSIHJlZ2lzdGVyIGluZm9ybWF0aW9uICovDQo+ICAgICAgIHZvaWQg KCpkdW1wX3N0YXRlKShjb25zdCBzdHJ1Y3QgdmNwdSAqKTsNCj4gICANCj4gQEAgLTM4NCw2ICsz ODUsOCBAQCBzdHJ1Y3QgZ2ljX2h3X29wZXJhdGlvbnMgew0KPiAgICAgICBpbnQgKCppb21lbV9k ZW55X2FjY2VzcykoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCk7DQo+ICAgICAgIC8qIEhhbmRsZSBM UElzLCB3aGljaCByZXF1aXJlIHNwZWNpYWwgaGFuZGxpbmcgKi8NCj4gICAgICAgdm9pZCAoKmRv X0xQSSkodW5zaWduZWQgaW50IGxwaSk7DQo+ICsgICAgdm9pZCAoKmZldGNoX2xycykgKHN0cnVj dCB2Y3B1ICp2KTsNCj4gKyAgICB2b2lkICgqcHVzaF9scnMpIChzdHJ1Y3QgdmNwdSAqdik7DQo+ ICAgfTsNCj4gICANCj4gICBleHRlcm4gY29uc3Qgc3RydWN0IGdpY19od19vcGVyYXRpb25zICpn aWNfaHdfb3BzOw0KPiANCg0KLS0gDQpKdWxpZW4gR3JhbGwNCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRl dmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFp bG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=