From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v2 3/4] xen/mapcache: introduce xen_replace_cache_entry() Date: Wed, 5 Jul 2017 08:52:46 +0000 Message-ID: References: <1499183267-28623-1-git-send-email-igor.druzhinin@citrix.com> <1499183267-28623-4-git-send-email-igor.druzhinin@citrix.com> <5e854d8a0df0401eba375f959ee5de8c@AMSPEX02CL01.citrite.net> <7833d6fb-b930-6890-b679-afc1ad8cde9e@citrix.com> <449552367f194ec5bc0a0ac5f0646fb0@AMSPEX02CL01.citrite.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dSg3E-0006wg-UX for xen-devel@lists.xenproject.org; Wed, 05 Jul 2017 08:52:49 +0000 In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Igor Druzhinin , "xen-devel@lists.xenproject.org" , "qemu-devel@nongnu.org" Cc: Anthony Perard , "pbonzini@redhat.com" , "sstabellini@kernel.org" List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBJZ29yIERydXpoaW5pbg0KPiBT ZW50OiAwNCBKdWx5IDIwMTcgMTc6NDcNCj4gVG86IFBhdWwgRHVycmFudCA8UGF1bC5EdXJyYW50 QGNpdHJpeC5jb20+OyB4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmc7DQo+IHFlbXUtZGV2 ZWxAbm9uZ251Lm9yZw0KPiBDYzogc3N0YWJlbGxpbmlAa2VybmVsLm9yZzsgQW50aG9ueSBQZXJh cmQgPGFudGhvbnkucGVyYXJkQGNpdHJpeC5jb20+Ow0KPiBwYm9uemluaUByZWRoYXQuY29tDQo+ IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjIgMy80XSB4ZW4vbWFwY2FjaGU6IGludHJvZHVjZQ0KPiB4 ZW5fcmVwbGFjZV9jYWNoZV9lbnRyeSgpDQo+IA0KPiBPbiAwNC8wNy8xNyAxNzo0MiwgUGF1bCBE dXJyYW50IHdyb3RlOg0KPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiBGcm9t OiBJZ29yIERydXpoaW5pbg0KPiA+PiBTZW50OiAwNCBKdWx5IDIwMTcgMTc6MzQNCj4gPj4gVG86 IFBhdWwgRHVycmFudCA8UGF1bC5EdXJyYW50QGNpdHJpeC5jb20+OyB4ZW4tDQo+IGRldmVsQGxp c3RzLnhlbnByb2plY3Qub3JnOw0KPiA+PiBxZW11LWRldmVsQG5vbmdudS5vcmcNCj4gPj4gQ2M6 IHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc7IEFudGhvbnkgUGVyYXJkDQo+IDxhbnRob255LnBlcmFy ZEBjaXRyaXguY29tPjsNCj4gPj4gcGJvbnppbmlAcmVkaGF0LmNvbQ0KPiA+PiBTdWJqZWN0OiBS ZTogW1BBVENIIHYyIDMvNF0geGVuL21hcGNhY2hlOiBpbnRyb2R1Y2UNCj4gPj4geGVuX3JlcGxh Y2VfY2FjaGVfZW50cnkoKQ0KPiA+Pg0KPiA+PiBPbiAwNC8wNy8xNyAxNzoyNywgUGF1bCBEdXJy YW50IHdyb3RlOg0KPiA+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4gRnJv bTogSWdvciBEcnV6aGluaW4NCj4gPj4+PiBTZW50OiAwNCBKdWx5IDIwMTcgMTY6NDgNCj4gPj4+ PiBUbzogeGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnOyBxZW11LWRldmVsQG5vbmdudS5v cmcNCj4gPj4+PiBDYzogSWdvciBEcnV6aGluaW4gPGlnb3IuZHJ1emhpbmluQGNpdHJpeC5jb20+ OyBzc3RhYmVsbGluaUBrZXJuZWwub3JnOw0KPiA+Pj4+IEFudGhvbnkgUGVyYXJkIDxhbnRob255 LnBlcmFyZEBjaXRyaXguY29tPjsgUGF1bCBEdXJyYW50DQo+ID4+Pj4gPFBhdWwuRHVycmFudEBj aXRyaXguY29tPjsgcGJvbnppbmlAcmVkaGF0LmNvbQ0KPiA+Pj4+IFN1YmplY3Q6IFtQQVRDSCB2 MiAzLzRdIHhlbi9tYXBjYWNoZTogaW50cm9kdWNlDQo+ID4+Pj4geGVuX3JlcGxhY2VfY2FjaGVf ZW50cnkoKQ0KPiA+Pj4+DQo+ID4+Pj4gVGhpcyBuZXcgY2FsbCBpcyB0cnlpbmcgdG8gdXBkYXRl IGEgcmVxdWVzdGVkIG1hcCBjYWNoZSBlbnRyeQ0KPiA+Pj4+IGFjY29yZGluZyB0byB0aGUgY2hh bmdlcyBpbiB0aGUgcGh5c21hcC4gVGhlIGNhbGwgaXMgc2VhcmNoaW5nDQo+ID4+Pj4gZm9yIHRo ZSBlbnRyeSwgdW5tYXBzIGl0IGFuZCBtYXBzIGFnYWluIGF0IHRoZSBzYW1lIHBsYWNlIHVzaW5n DQo+ID4+Pj4gYSBuZXcgZ3Vlc3QgYWRkcmVzcy4gSWYgdGhlIG1hcHBpbmcgaXMgZHVtbXkgdGhp cyBjYWxsIHdpbGwNCj4gPj4+PiBtYWtlIGl0IHJlYWwuDQo+ID4+Pj4NCj4gPj4+PiBUaGlzIGZ1 bmN0aW9uIG1ha2VzIHVzZSBvZiBhIG5ldyB4ZW5mb3JlaWdubWVtb3J5X21hcDIoKSBjYWxsDQo+ ID4+Pj4gd2l0aCBhbiBleHRlbmRlZCBpbnRlcmZhY2UgdGhhdCB3YXMgcmVjZW50bHkgaW50cm9k dWNlZCBpbg0KPiA+Pj4+IGxpYnhlbmZvcmVpZ25tZW1vcnkgWzFdLg0KPiA+Pj4NCj4gPj4+IEkg ZG9uJ3QgdW5kZXJzdGFuZCBob3cgdGhlIGNvbXBhdCBsYXllciB3b3JrcyBoZXJlLiBJZg0KPiA+ PiB4ZW5mb3JlaWdubWVtb3J5X21hcDIoKSBpcyBub3QgYXZhaWxhYmxlIHRoZW4geW91IGNhbid0 IGNvbnRyb2wgdGhlDQo+ID4+IHBsYWNlbWVudCBpbiB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UuDQo+ ID4+Pg0KPiA+Pg0KPiA+PiBJZiBpdCdzIG5vdCA0LjEwIG9yIG5ld2VyIHhlbmZvcmVpZ25tZW1v cnlfbWFwMigpIGRvZXNuJ3QgZXhpc3QgYW5kIGlzDQo+ID4+IGdvaW5nIHRvIGJlIGRlZmluZWQg YXMgeGVuZm9yZWlnbm1lbW9yeV9tYXAoKS4gQXQgdGhlIHNhbWUgdGltZQ0KPiA+PiBYRU5fQ09N UEFUX1BIWVNNQVAgaXMgZGVmaW5lZCBhbmQgdGhlIGVudHJ5IHJlcGxhY2UgZnVuY3Rpb24NCj4g KHdoaWNoDQo+ID4+IHJlbGllcyBvbiB4ZW5mb3JlaWdubWVtb3J5X21hcDIgZnVuY3Rpb25hbGl0 eSkgaXMgbmV2ZXIgZ29pbmcgdG8gYmUNCj4gY2FsbGVkLg0KPiA+Pg0KPiA+PiBJZiB5b3UgbWVh biB0aGF0IEkgc2hvdWxkIGluY29ycG9yYXRlIHRoaXMgaW50byB0aGUgZGVzY3JpcHRpb24gSSBj YW4gZG8gaXQuDQo+ID4NCj4gPiBBRkFJQ1QgWEVOX0NPTVBBVF9QSFlTTUFQIGlzIG5vdCBpbnRy b2R1Y2VkIHVudGlsIHBhdGNoICM0IHRob3VnaC4NCj4gPg0KPiA+IFRoZSBwcm9ibGVtIHJlYWxs eSBjb21lcyBkb3duIHRvIGRlZmluaW5nIHhlbmZvcmVpZ25tZW1vcnlfbWFwMigpIGluDQo+IHRl cm1zIG9mIHhlbmZvcmVpZ25tZW1vcnlfbWFwKCkuIEl0IGJhc2ljYWxseSBjYW4ndCBiZSBzYWZl bHkgZG9uZS4gQ291bGQNCj4geW91IGRlZmluZSB4ZW5mb3JlaWdubWVtb3J5X21hcDIoKSBhcyBh Ym9ydCgpIGluIHRoZSBjb21wYXQgY2FzZQ0KPiBpbnN0ZWFkPw0KPiA+DQo+IA0KPiB4ZW5fcmVw bGFjZV9jYWNoZV9lbnRyeSgpIGlzIG5vdCBjYWxsZWQgaW4gcGF0Y2ggIzMuIFdoaWNoIG1lYW5z IGl0J3MNCj4gc2FmZSB0byB1c2UgYSBmYWxsYmFjayB2ZXJzaW9uICh4ZW5mb3JlaWdubWVtb3J5 X21hcCkgaW4NCj4geGVuX3JlbWFwX2J1Y2tldCBoZXJlLg0KDQpJIHN0aWxsIGRvbid0IGxpa2Ug dGhlIGZhY3QgdGhhdCB0aGUgY29tcGF0IGRlZmluaXRpb24gb2YgeGVuZm9yZWlnbm1lbW9yeV9t YXAyKCkgbG9zZXMgdGhlIGV4dHJhIGFyZ3VtZW50LiBUaGF0J3MgZ29pbmcgdG8gY2F0Y2ggc29t ZW9uZSBvdXQgb25lIGRheS4gSXMgdGhlcmUgYW55IHdheSB5b3UgY291bGQgcmUtd29yayBpdCBz byB0aGF0IHhlbmZvcmVpZ25tZW1vcnlfbWFwKCkgaXMgdXNlcyBpbiB0aGUgY2FzZXMgd2hlcmUg dGhlIG1lbW9yeSBwbGFjZW1lbnQgZG9lcyBub3QgbWF0dGVyPw0KDQogIFBhdWwNCg0KPiANCj4g SWdvcg0KPiANCj4gPiAgIFBhdWwNCj4gPg0KPiA+Pg0KPiA+PiBJZ29yDQo+ID4+DQo+ID4+PiAg IFBhdWwNCj4gPj4+DQo+ID4+Pj4NCj4gPj4+PiBbMV0gaHR0cHM6Ly93d3cubWFpbC1hcmNoaXZl LmNvbS94ZW4tDQo+ID4+IGRldmVsQGxpc3RzLnhlbi5vcmcvbXNnMTEzMDA3Lmh0bWwNCj4gPj4+ Pg0KPiA+Pj4+IFNpZ25lZC1vZmYtYnk6IElnb3IgRHJ1emhpbmluIDxpZ29yLmRydXpoaW5pbkBj aXRyaXguY29tPg0KPiA+Pj4+IC0tLQ0KPiA+Pj4+ICBjb25maWd1cmUgICAgICAgICAgICAgICAg ICAgICB8IDE4ICsrKysrKysrKysNCj4gPj4+PiAgaHcvaTM4Ni94ZW4veGVuLW1hcGNhY2hlLmMg ICAgfCA3OQ0KPiA+Pj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0NCj4gPj4+PiAgaW5jbHVkZS9ody94ZW4veGVuX2NvbW1vbi5oICAgfCAgNyArKysrDQo+ID4+ Pj4gIGluY2x1ZGUvc3lzZW11L3hlbi1tYXBjYWNoZS5oIHwgMTEgKysrKystDQo+ID4+Pj4gIDQg ZmlsZXMgY2hhbmdlZCwgMTA2IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pDQo+ID4+Pj4N Cj4gPj4+PiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlDQo+ID4+Pj4gaW5kZXgg YzU3MWFkMS4uYWQ2MTU2YiAxMDA3NTUNCj4gPj4+PiAtLS0gYS9jb25maWd1cmUNCj4gPj4+PiAr KysgYi9jb25maWd1cmUNCj4gPj4+PiBAQCAtMjAyMSw2ICsyMDIxLDI0IEBAIEVPRg0KPiA+Pj4+ ICAgICAgIyBYZW4gdW5zdGFibGUNCj4gPj4+PiAgICAgIGVsaWYNCj4gPj4+PiAgICAgICAgICBj YXQgPiAkVE1QQyA8PEVPRiAmJg0KPiA+Pj4+ICsjdW5kZWYgWENfV0FOVF9DT01QQVRfTUFQX0ZP UkVJR05fQVBJDQo+ID4+Pj4gKyNpbmNsdWRlIDx4ZW5mb3JlaWdubWVtb3J5Lmg+DQo+ID4+Pj4g K2ludCBtYWluKHZvaWQpIHsNCj4gPj4+PiArICB4ZW5mb3JlaWdubWVtb3J5X2hhbmRsZSAqeGZt ZW07DQo+ID4+Pj4gKw0KPiA+Pj4+ICsgIHhmbWVtID0geGVuZm9yZWlnbm1lbW9yeV9vcGVuKDAs IDApOw0KPiA+Pj4+ICsgIHhlbmZvcmVpZ25tZW1vcnlfbWFwMih4Zm1lbSwgMCwgMCwgMCwgMCwg MCwgMCwgMCk7DQo+ID4+Pj4gKw0KPiA+Pj4+ICsgIHJldHVybiAwOw0KPiA+Pj4+ICt9DQo+ID4+ Pj4gK0VPRg0KPiA+Pj4+ICsgICAgICAgIGNvbXBpbGVfcHJvZyAiIiAiJHhlbl9saWJzIC1seGVu ZGV2aWNlbW9kZWwgJHhlbl9zdGFibGVfbGlicyINCj4gPj4+PiArICAgICAgdGhlbg0KPiA+Pj4+ ICsgICAgICB4ZW5fc3RhYmxlX2xpYnM9Ii1seGVuZGV2aWNlbW9kZWwgJHhlbl9zdGFibGVfbGli cyINCj4gPj4+PiArICAgICAgeGVuX2N0cmxfdmVyc2lvbj00MTAwMA0KPiA+Pj4+ICsgICAgICB4 ZW49eWVzDQo+ID4+Pj4gKyAgICBlbGlmDQo+ID4+Pj4gKyAgICAgICAgY2F0ID4gJFRNUEMgPDxF T0YgJiYNCj4gPj4+PiAgI3VuZGVmIFhDX1dBTlRfQ09NUEFUX0RFVklDRU1PREVMX0FQSQ0KPiA+ Pj4+ICAjZGVmaW5lIF9fWEVOX1RPT0xTX18NCj4gPj4+PiAgI2luY2x1ZGUgPHhlbmRldmljZW1v ZGVsLmg+DQo+ID4+Pj4gZGlmZiAtLWdpdCBhL2h3L2kzODYveGVuL3hlbi1tYXBjYWNoZS5jIGIv aHcvaTM4Ni94ZW4veGVuLQ0KPiBtYXBjYWNoZS5jDQo+ID4+Pj4gaW5kZXggY2Q0ZTc0Ni4uYTk4 OGJlNyAxMDA2NDQNCj4gPj4+PiAtLS0gYS9ody9pMzg2L3hlbi94ZW4tbWFwY2FjaGUuYw0KPiA+ Pj4+ICsrKyBiL2h3L2kzODYveGVuL3hlbi1tYXBjYWNoZS5jDQo+ID4+Pj4gQEAgLTE1MSw2ICsx NTEsNyBAQCB2b2lkDQo+ID4+IHhlbl9tYXBfY2FjaGVfaW5pdChwaHlzX29mZnNldF90b19nYWRk cl90IGYsDQo+ID4+Pj4gdm9pZCAqb3BhcXVlKQ0KPiA+Pj4+ICB9DQo+ID4+Pj4NCj4gPj4+PiAg c3RhdGljIHZvaWQgeGVuX3JlbWFwX2J1Y2tldChNYXBDYWNoZUVudHJ5ICplbnRyeSwNCj4gPj4+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWRkciwNCj4gPj4+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBod2FkZHIgc2l6ZSwNCj4gPj4+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBod2FkZHIgYWRkcmVzc19pbmRleCwNCj4gPj4+PiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBib29sIGR1bW15KQ0KPiA+Pj4+IEBAIC0xNjcsNyArMTY4 LDkgQEAgc3RhdGljIHZvaWQgeGVuX3JlbWFwX2J1Y2tldChNYXBDYWNoZUVudHJ5DQo+ID4+Pj4g KmVudHJ5LA0KPiA+Pj4+ICAgICAgZXJyID0gZ19tYWxsb2MwKG5iX3BmbiAqIHNpemVvZiAoaW50 KSk7DQo+ID4+Pj4NCj4gPj4+PiAgICAgIGlmIChlbnRyeS0+dmFkZHJfYmFzZSAhPSBOVUxMKSB7 DQo+ID4+Pj4gLSAgICAgICAgcmFtX2Jsb2NrX25vdGlmeV9yZW1vdmUoZW50cnktPnZhZGRyX2Jh c2UsIGVudHJ5LT5zaXplKTsNCj4gPj4+PiArICAgICAgICBpZiAoZW50cnktPnZhZGRyX2Jhc2Ug IT0gdmFkZHIpIHsNCj4gPj4+PiArICAgICAgICAgICAgcmFtX2Jsb2NrX25vdGlmeV9yZW1vdmUo ZW50cnktPnZhZGRyX2Jhc2UsIGVudHJ5LT5zaXplKTsNCj4gPj4+PiArICAgICAgICB9DQo+ID4+ Pj4gICAgICAgICAgaWYgKG11bm1hcChlbnRyeS0+dmFkZHJfYmFzZSwgZW50cnktPnNpemUpICE9 IDApIHsNCj4gPj4+PiAgICAgICAgICAgICAgcGVycm9yKCJ1bm1hcCBmYWlscyIpOw0KPiA+Pj4+ ICAgICAgICAgICAgICBleGl0KC0xKTsNCj4gPj4+PiBAQCAtMTgxLDExICsxODQsMTEgQEAgc3Rh dGljIHZvaWQNCj4geGVuX3JlbWFwX2J1Y2tldChNYXBDYWNoZUVudHJ5DQo+ID4+Pj4gKmVudHJ5 LA0KPiA+Pj4+ICAgICAgfQ0KPiA+Pj4+DQo+ID4+Pj4gICAgICBpZiAoIWR1bW15KSB7DQo+ID4+ Pj4gLSAgICAgICAgdmFkZHJfYmFzZSA9IHhlbmZvcmVpZ25tZW1vcnlfbWFwKHhlbl9mbWVtLCB4 ZW5fZG9taWQsDQo+ID4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQUk9UX1JFQUR8UFJPVF9XUklURSwNCj4gPj4+PiArICAgICAgICB2YWRkcl9iYXNlID0g eGVuZm9yZWlnbm1lbW9yeV9tYXAyKHhlbl9mbWVtLCB4ZW5fZG9taWQsDQo+ID4+Pj4gdmFkZHIs DQo+ID4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9U X1JFQUR8UFJPVF9XUklURSwgMCwNCj4gPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5iX3BmbiwgcGZucywgZXJyKTsNCj4gPj4+PiAgICAgICAgICBpZiAo dmFkZHJfYmFzZSA9PSBOVUxMKSB7DQo+ID4+Pj4gLSAgICAgICAgICAgIHBlcnJvcigieGVuZm9y ZWlnbm1lbW9yeV9tYXAiKTsNCj4gPj4+PiArICAgICAgICAgICAgcGVycm9yKCJ4ZW5mb3JlaWdu bWVtb3J5X21hcDIiKTsNCj4gPj4+PiAgICAgICAgICAgICAgZXhpdCgtMSk7DQo+ID4+Pj4gICAg ICAgICAgfQ0KPiA+Pj4+ICAgICAgICAgIGVudHJ5LT5mbGFncyAmPSB+KFhFTl9NQVBDQUNIRV9F TlRSWV9EVU1NWSk7DQo+ID4+Pj4gQEAgLTE5NCw3ICsxOTcsNyBAQCBzdGF0aWMgdm9pZCB4ZW5f cmVtYXBfYnVja2V0KE1hcENhY2hlRW50cnkNCj4gPj4+PiAqZW50cnksDQo+ID4+Pj4gICAgICAg ICAgICogV2UgY3JlYXRlIGR1bW15IG1hcHBpbmdzIHdoZXJlIHdlIGFyZSB1bmFibGUgdG8gY3Jl YXRlIGENCj4gPj4gZm9yZWlnbg0KPiA+Pj4+ICAgICAgICAgICAqIG1hcHBpbmcgaW1tZWRpYXRl bHkgZHVlIHRvIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyAoaS5lLiBvbg0KPiByZXN1bWUNCj4gPj4+ PiBub3cpDQo+ID4+Pj4gICAgICAgICAgICovDQo+ID4+Pj4gLSAgICAgICAgdmFkZHJfYmFzZSA9 IG1tYXAoTlVMTCwgc2l6ZSwgUFJPVF9SRUFEfFBST1RfV1JJVEUsDQo+ID4+Pj4gKyAgICAgICAg dmFkZHJfYmFzZSA9IG1tYXAodmFkZHIsIHNpemUsIFBST1RfUkVBRHxQUk9UX1dSSVRFLA0KPiA+ Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BUF9BTk9OfE1BUF9TSEFSRUQsIC0xLCAw KTsNCj4gPj4+PiAgICAgICAgICBpZiAodmFkZHJfYmFzZSA9PSBOVUxMKSB7DQo+ID4+Pj4gICAg ICAgICAgICAgIHBlcnJvcigibW1hcCIpOw0KPiA+Pj4+IEBAIC0yMDMsMTMgKzIwNiwxNiBAQCBz dGF0aWMgdm9pZA0KPiB4ZW5fcmVtYXBfYnVja2V0KE1hcENhY2hlRW50cnkNCj4gPj4+PiAqZW50 cnksDQo+ID4+Pj4gICAgICAgICAgZW50cnktPmZsYWdzIHw9IFhFTl9NQVBDQUNIRV9FTlRSWV9E VU1NWTsNCj4gPj4+PiAgICAgIH0NCj4gPj4+Pg0KPiA+Pj4+ICsgICAgaWYgKGVudHJ5LT52YWRk cl9iYXNlID09IE5VTEwgfHwgZW50cnktPnZhZGRyX2Jhc2UgIT0gdmFkZHIpIHsNCj4gPj4+PiAr ICAgICAgICByYW1fYmxvY2tfbm90aWZ5X2FkZCh2YWRkcl9iYXNlLCBzaXplKTsNCj4gPj4+PiAr ICAgIH0NCj4gPj4+PiArDQo+ID4+Pj4gICAgICBlbnRyeS0+dmFkZHJfYmFzZSA9IHZhZGRyX2Jh c2U7DQo+ID4+Pj4gICAgICBlbnRyeS0+cGFkZHJfaW5kZXggPSBhZGRyZXNzX2luZGV4Ow0KPiA+ Pj4+ICAgICAgZW50cnktPnNpemUgPSBzaXplOw0KPiA+Pj4+ICAgICAgZW50cnktPnZhbGlkX21h cHBpbmcgPSAodW5zaWduZWQgbG9uZyAqKQ0KPiBnX21hbGxvYzAoc2l6ZW9mKHVuc2lnbmVkDQo+ ID4+IGxvbmcpDQo+ID4+Pj4gKg0KPiA+Pj4+ICAgICAgICAgICAgICBCSVRTX1RPX0xPTkdTKHNp emUgPj4gWENfUEFHRV9TSElGVCkpOw0KPiA+Pj4+DQo+ID4+Pj4gLSAgICByYW1fYmxvY2tfbm90 aWZ5X2FkZChlbnRyeS0+dmFkZHJfYmFzZSwgZW50cnktPnNpemUpOw0KPiA+Pj4+ICAgICAgYml0 bWFwX3plcm8oZW50cnktPnZhbGlkX21hcHBpbmcsIG5iX3Bmbik7DQo+ID4+Pj4gICAgICBmb3Ig KGkgPSAwOyBpIDwgbmJfcGZuOyBpKyspIHsNCj4gPj4+PiAgICAgICAgICBpZiAoIWVycltpXSkg ew0KPiA+Pj4+IEBAIC0yODIsMTQgKzI4OCwxNCBAQCB0cnlhZ2FpbjoNCj4gPj4+PiAgICAgIGlm ICghZW50cnkpIHsNCj4gPj4+PiAgICAgICAgICBlbnRyeSA9IGdfbWFsbG9jMChzaXplb2YgKE1h cENhY2hlRW50cnkpKTsNCj4gPj4+PiAgICAgICAgICBwZW50cnktPm5leHQgPSBlbnRyeTsNCj4g Pj4+PiAtICAgICAgICB4ZW5fcmVtYXBfYnVja2V0KGVudHJ5LCBjYWNoZV9zaXplLCBhZGRyZXNz X2luZGV4LCBkdW1teSk7DQo+ID4+Pj4gKyAgICAgICAgeGVuX3JlbWFwX2J1Y2tldChlbnRyeSwg TlVMTCwgY2FjaGVfc2l6ZSwgYWRkcmVzc19pbmRleCwNCj4gPj4gZHVtbXkpOw0KPiA+Pj4+ICAg ICAgfSBlbHNlIGlmICghZW50cnktPmxvY2spIHsNCj4gPj4+PiAgICAgICAgICBpZiAoIWVudHJ5 LT52YWRkcl9iYXNlIHx8IGVudHJ5LT5wYWRkcl9pbmRleCAhPSBhZGRyZXNzX2luZGV4DQo+IHx8 DQo+ID4+Pj4gICAgICAgICAgICAgICAgICBlbnRyeS0+c2l6ZSAhPSBjYWNoZV9zaXplIHx8DQo+ ID4+Pj4gICAgICAgICAgICAgICAgICAhdGVzdF9iaXRzKGFkZHJlc3Nfb2Zmc2V0ID4+IFhDX1BB R0VfU0hJRlQsDQo+ID4+Pj4gICAgICAgICAgICAgICAgICAgICAgdGVzdF9iaXRfc2l6ZSA+PiBY Q19QQUdFX1NISUZULA0KPiA+Pj4+ICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT52YWxpZF9t YXBwaW5nKSkgew0KPiA+Pj4+IC0gICAgICAgICAgICB4ZW5fcmVtYXBfYnVja2V0KGVudHJ5LCBj YWNoZV9zaXplLCBhZGRyZXNzX2luZGV4LCBkdW1teSk7DQo+ID4+Pj4gKyAgICAgICAgICAgIHhl bl9yZW1hcF9idWNrZXQoZW50cnksIE5VTEwsIGNhY2hlX3NpemUsIGFkZHJlc3NfaW5kZXgsDQo+ ID4+Pj4gZHVtbXkpOw0KPiA+Pj4+ICAgICAgICAgIH0NCj4gPj4+PiAgICAgIH0NCj4gPj4+Pg0K PiA+Pj4+IEBAIC00ODYsMyArNDkyLDYwIEBAIHZvaWQgeGVuX2ludmFsaWRhdGVfbWFwX2NhY2hl KHZvaWQpDQo+ID4+Pj4NCj4gPj4+PiAgICAgIG1hcGNhY2hlX3VubG9jaygpOw0KPiA+Pj4+ICB9 DQo+ID4+Pj4gKw0KPiA+Pj4+ICtzdGF0aWMgdWludDhfdCAqeGVuX3JlcGxhY2VfY2FjaGVfZW50 cnlfdW5sb2NrZWQoaHdhZGRyDQo+ID4+Pj4gb2xkX3BoeXNfYWRkciwNCj4gPj4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh3YWRkciBuZXdfcGh5 c19hZGRyLA0KPiA+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaHdhZGRyIHNpemUpDQo+ID4+Pj4gK3sNCj4gPj4+PiArICAgIE1hcENhY2hlRW50 cnkgKmVudHJ5Ow0KPiA+Pj4+ICsgICAgaHdhZGRyIGFkZHJlc3NfaW5kZXg7DQo+ID4+Pj4gKyAg ICBod2FkZHIgYWRkcmVzc19vZmZzZXQ7DQo+ID4+Pj4gKyAgICBod2FkZHIgY2FjaGVfc2l6ZSA9 IHNpemU7DQo+ID4+Pj4gKyAgICBod2FkZHIgdGVzdF9iaXRfc2l6ZTsNCj4gPj4+PiArDQo+ID4+ Pj4gKyAgICBhZGRyZXNzX2luZGV4ICA9IG9sZF9waHlzX2FkZHIgPj4gTUNBQ0hFX0JVQ0tFVF9T SElGVDsNCj4gPj4+PiArICAgIGFkZHJlc3Nfb2Zmc2V0ID0gb2xkX3BoeXNfYWRkciAmIChNQ0FD SEVfQlVDS0VUX1NJWkUgLSAxKTsNCj4gPj4+PiArDQo+ID4+Pj4gKyAgICBhc3NlcnQoc2l6ZSk7 DQo+ID4+Pj4gKyAgICAvKiB0ZXN0X2JpdF9zaXplIGlzIGFsd2F5cyBhIG11bHRpcGxlIG9mIFhD X1BBR0VfU0laRSAqLw0KPiA+Pj4+ICsgICAgdGVzdF9iaXRfc2l6ZSA9IHNpemUgKyAob2xkX3Bo eXNfYWRkciAmIChYQ19QQUdFX1NJWkUgLSAxKSk7DQo+ID4+Pj4gKyAgICBpZiAodGVzdF9iaXRf c2l6ZSAlIFhDX1BBR0VfU0laRSkgew0KPiA+Pj4+ICsgICAgICAgIHRlc3RfYml0X3NpemUgKz0g WENfUEFHRV9TSVpFIC0gKHRlc3RfYml0X3NpemUgJQ0KPiBYQ19QQUdFX1NJWkUpOw0KPiA+Pj4+ ICsgICAgfQ0KPiA+Pj4+ICsgICAgY2FjaGVfc2l6ZSA9IHNpemUgKyBhZGRyZXNzX29mZnNldDsN Cj4gPj4+PiArICAgIGlmIChjYWNoZV9zaXplICUgTUNBQ0hFX0JVQ0tFVF9TSVpFKSB7DQo+ID4+ Pj4gKyAgICAgICAgY2FjaGVfc2l6ZSArPSBNQ0FDSEVfQlVDS0VUX1NJWkUgLSAoY2FjaGVfc2l6 ZSAlDQo+ID4+Pj4gTUNBQ0hFX0JVQ0tFVF9TSVpFKTsNCj4gPj4+PiArICAgIH0NCj4gPj4+PiAr DQo+ID4+Pj4gKyAgICBlbnRyeSA9ICZtYXBjYWNoZS0+ZW50cnlbYWRkcmVzc19pbmRleCAlIG1h cGNhY2hlLQ0KPiA+bnJfYnVja2V0c107DQo+ID4+Pj4gKyAgICB3aGlsZSAoZW50cnkgJiYgIShl bnRyeS0+cGFkZHJfaW5kZXggPT0gYWRkcmVzc19pbmRleCAmJiBlbnRyeS0NCj4gPj4+IHNpemUN Cj4gPj4+PiA9PSBjYWNoZV9zaXplKSkgew0KPiA+Pj4+ICsgICAgICAgIGVudHJ5ID0gZW50cnkt Pm5leHQ7DQo+ID4+Pj4gKyAgICB9DQo+ID4+Pj4gKyAgICBpZiAoIWVudHJ5KSB7DQo+ID4+Pj4g KyAgICAgICAgRFBSSU5URigiVHJ5aW5nIHRvIHVwZGF0ZSBhbiBlbnRyeSBmb3IgJWx4IHRoYXQg aXMgbm90IGluIHRoZQ0KPiA+Pj4+IG1hcGNhY2hlIVxuIiwgcGh5c19hZGRyKTsNCj4gPj4+PiAr ICAgICAgICByZXR1cm4gTlVMTDsNCj4gPj4+PiArICAgIH0NCj4gPj4+PiArDQo+ID4+Pj4gKyAg ICBhZGRyZXNzX2luZGV4ICA9IG5ld19waHlzX2FkZHIgPj4gTUNBQ0hFX0JVQ0tFVF9TSElGVDsN Cj4gPj4+PiArICAgIGFkZHJlc3Nfb2Zmc2V0ID0gbmV3X3BoeXNfYWRkciAmIChNQ0FDSEVfQlVD S0VUX1NJWkUgLSAxKTsNCj4gPj4+PiArDQo+ID4+Pj4gKyAgICB4ZW5fcmVtYXBfYnVja2V0KGVu dHJ5LCBlbnRyeS0+dmFkZHJfYmFzZSwgY2FjaGVfc2l6ZSwNCj4gPj4+PiBhZGRyZXNzX2luZGV4 LCBmYWxzZSk7DQo+ID4+Pj4gKyAgICBpZighdGVzdF9iaXRzKGFkZHJlc3Nfb2Zmc2V0ID4+IFhD X1BBR0VfU0hJRlQsDQo+ID4+Pj4gKyAgICAgICAgICAgICAgICB0ZXN0X2JpdF9zaXplID4+IFhD X1BBR0VfU0hJRlQsDQo+ID4+Pj4gKyAgICAgICAgICAgICAgICBlbnRyeS0+dmFsaWRfbWFwcGlu ZykpIHsNCj4gPj4+PiArICAgICAgICBEUFJJTlRGKCJVbmFibGUgdG8gdXBkYXRlIGFuIGVudHJ5 IGZvciAlbHggaW4gdGhlIG1hcGNhY2hlIVxuIiwNCj4gPj4+PiBwaHlzX2FkZHIpOw0KPiA+Pj4+ ICsgICAgICAgIHJldHVybiBOVUxMOw0KPiA+Pj4+ICsgICAgfQ0KPiA+Pj4+ICsNCj4gPj4+PiAr ICAgIHJldHVybiBlbnRyeS0+dmFkZHJfYmFzZSArIGFkZHJlc3Nfb2Zmc2V0Ow0KPiA+Pj4+ICt9 DQo+ID4+Pj4gKw0KPiA+Pj4+ICt1aW50OF90ICp4ZW5fcmVwbGFjZV9jYWNoZV9lbnRyeShod2Fk ZHIgb2xkX3BoeXNfYWRkciwgaHdhZGRyDQo+ID4+Pj4gbmV3X3BoeXNfYWRkciwgaHdhZGRyIHNp emUpDQo+ID4+Pj4gK3sNCj4gPj4+PiArICAgIHVpbnQ4X3QgKnA7DQo+ID4+Pj4gKw0KPiA+Pj4+ ICsgICAgbWFwY2FjaGVfbG9jaygpOw0KPiA+Pj4+ICsgICAgcCA9IHhlbl9yZXBsYWNlX2NhY2hl X2VudHJ5X3VubG9ja2VkKG9sZF9waHlzX2FkZHIsDQo+ID4+Pj4gbmV3X3BoeXNfYWRkciwgc2l6 ZSk7DQo+ID4+Pj4gKyAgICBtYXBjYWNoZV91bmxvY2soKTsNCj4gPj4+PiArICAgIHJldHVybiBw Ow0KPiA+Pj4+ICt9DQo+ID4+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvaHcveGVuL3hlbl9jb21t b24uaA0KPiA+Pj4+IGIvaW5jbHVkZS9ody94ZW4veGVuX2NvbW1vbi5oDQo+ID4+Pj4gaW5kZXgg ZTAwZGRkNy4uNzBhNWNhZCAxMDA2NDQNCj4gPj4+PiAtLS0gYS9pbmNsdWRlL2h3L3hlbi94ZW5f Y29tbW9uLmgNCj4gPj4+PiArKysgYi9pbmNsdWRlL2h3L3hlbi94ZW5fY29tbW9uLmgNCj4gPj4+ PiBAQCAtNzgsNiArNzgsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkDQo+ID4+Pj4gKnhlbmZvcmVp Z25tZW1vcnlfbWFwKHhjX2ludGVyZmFjZSAqaCwgdWludDMyX3QgZG9tLA0KPiA+Pj4+DQo+ID4+ Pj4gIGV4dGVybiB4ZW5mb3JlaWdubWVtb3J5X2hhbmRsZSAqeGVuX2ZtZW07DQo+ID4+Pj4NCj4g Pj4+PiArI2lmIENPTkZJR19YRU5fQ1RSTF9JTlRFUkZBQ0VfVkVSU0lPTiA8IDQxMDAwDQo+ID4+ Pj4gKw0KPiA+Pj4+ICsjZGVmaW5lIHhlbmZvcmVpZ25tZW1vcnlfbWFwMihoLCBkLCBhLCBwLCBm LCBwcywgYXIsIGUpIFwNCj4gPj4+PiArICAgIHhlbmZvcmVpZ25tZW1vcnlfbWFwKGgsIGQsIHAs IHBzLCBhciwgZSkNCj4gPj4+PiArDQo+ID4+Pj4gKyNlbmRpZg0KPiA+Pj4+ICsNCj4gPj4+PiAg I2lmIENPTkZJR19YRU5fQ1RSTF9JTlRFUkZBQ0VfVkVSU0lPTiA8IDQwOTAwDQo+ID4+Pj4NCj4g Pj4+PiAgdHlwZWRlZiB4Y19pbnRlcmZhY2UgeGVuZGV2aWNlbW9kZWxfaGFuZGxlOw0KPiA+Pj4+ IGRpZmYgLS1naXQgYS9pbmNsdWRlL3N5c2VtdS94ZW4tbWFwY2FjaGUuaCBiL2luY2x1ZGUvc3lz ZW11L3hlbi0NCj4gPj4+PiBtYXBjYWNoZS5oDQo+ID4+Pj4gaW5kZXggMDFkYWFhZC4uYjM4OTYy YyAxMDA2NDQNCj4gPj4+PiAtLS0gYS9pbmNsdWRlL3N5c2VtdS94ZW4tbWFwY2FjaGUuaA0KPiA+ Pj4+ICsrKyBiL2luY2x1ZGUvc3lzZW11L3hlbi1tYXBjYWNoZS5oDQo+ID4+Pj4gQEAgLTIxLDcg KzIxLDkgQEAgdWludDhfdCAqeGVuX21hcF9jYWNoZShod2FkZHIgcGh5c19hZGRyLA0KPiA+PiBo d2FkZHINCj4gPj4+PiBzaXplLA0KPiA+Pj4+ICByYW1fYWRkcl90IHhlbl9yYW1fYWRkcl9mcm9t X21hcGNhY2hlKHZvaWQgKnB0cik7DQo+ID4+Pj4gIHZvaWQgeGVuX2ludmFsaWRhdGVfbWFwX2Nh Y2hlX2VudHJ5KHVpbnQ4X3QgKmJ1ZmZlcik7DQo+ID4+Pj4gIHZvaWQgeGVuX2ludmFsaWRhdGVf bWFwX2NhY2hlKHZvaWQpOw0KPiA+Pj4+IC0NCj4gPj4+PiArdWludDhfdCAqeGVuX3JlcGxhY2Vf Y2FjaGVfZW50cnkoaHdhZGRyIG9sZF9waHlzX2FkZHIsDQo+ID4+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGh3YWRkciBuZXdfcGh5c19hZGRyLA0KPiA+Pj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBod2FkZHIgc2l6ZSk7DQo+ID4+Pj4gICNlbHNlDQo+ ID4+Pj4NCj4gPj4+PiAgc3RhdGljIGlubGluZSB2b2lkIHhlbl9tYXBfY2FjaGVfaW5pdChwaHlz X29mZnNldF90b19nYWRkcl90IGYsDQo+ID4+Pj4gQEAgLTUwLDYgKzUyLDEzIEBAIHN0YXRpYyBp bmxpbmUgdm9pZA0KPiB4ZW5faW52YWxpZGF0ZV9tYXBfY2FjaGUodm9pZCkNCj4gPj4+PiAgew0K PiA+Pj4+ICB9DQo+ID4+Pj4NCj4gPj4+PiArdWludDhfdCAqeGVuX3JlcGxhY2VfY2FjaGVfZW50 cnkoaHdhZGRyIG9sZF9waHlzX2FkZHIsDQo+ID4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGh3YWRkciBuZXdfcGh5c19hZGRyLA0KPiA+Pj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBod2FkZHIgc2l6ZSkNCj4gPj4+PiArew0KPiA+Pj4+ICsgICAgYWJv cnQoKTsNCj4gPj4+PiArfQ0KPiA+Pj4+ICsNCj4gPj4+PiAgI2VuZGlmDQo+ID4+Pj4NCj4gPj4+ PiAgI2VuZGlmIC8qIFhFTl9NQVBDQUNIRV9IICovDQo+ID4+Pj4gLS0NCj4gPj4+PiAyLjcuNA0K PiA+Pj4NCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0 cy54ZW4ub3JnL3hlbi1kZXZlbAo=