From mboxrd@z Thu Jan 1 00:00:00 1970 From: Igor Druzhinin Subject: Re: [PATCH v2 3/4] xen/mapcache: introduce xen_replace_cache_entry() Date: Tue, 4 Jul 2017 17:34:04 +0100 Message-ID: <7833d6fb-b930-6890-b679-afc1ad8cde9e@citrix.com> 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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dSQmB-0000Jw-VS for xen-devel@lists.xenproject.org; Tue, 04 Jul 2017 16:34:12 +0000 In-Reply-To: <5e854d8a0df0401eba375f959ee5de8c@AMSPEX02CL01.citrite.net> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Paul Durrant , "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 T24gMDQvMDcvMTcgMTc6MjcsIFBhdWwgRHVycmFudCB3cm90ZToKPj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0KPj4gRnJvbTogSWdvciBEcnV6aGluaW4KPj4gU2VudDogMDQgSnVseSAyMDE3 IDE2OjQ4Cj4+IFRvOiB4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmc7IHFlbXUtZGV2ZWxA bm9uZ251Lm9yZwo+PiBDYzogSWdvciBEcnV6aGluaW4gPGlnb3IuZHJ1emhpbmluQGNpdHJpeC5j b20+OyBzc3RhYmVsbGluaUBrZXJuZWwub3JnOwo+PiBBbnRob255IFBlcmFyZCA8YW50aG9ueS5w ZXJhcmRAY2l0cml4LmNvbT47IFBhdWwgRHVycmFudAo+PiA8UGF1bC5EdXJyYW50QGNpdHJpeC5j b20+OyBwYm9uemluaUByZWRoYXQuY29tCj4+IFN1YmplY3Q6IFtQQVRDSCB2MiAzLzRdIHhlbi9t YXBjYWNoZTogaW50cm9kdWNlCj4+IHhlbl9yZXBsYWNlX2NhY2hlX2VudHJ5KCkKPj4KPj4gVGhp cyBuZXcgY2FsbCBpcyB0cnlpbmcgdG8gdXBkYXRlIGEgcmVxdWVzdGVkIG1hcCBjYWNoZSBlbnRy eQo+PiBhY2NvcmRpbmcgdG8gdGhlIGNoYW5nZXMgaW4gdGhlIHBoeXNtYXAuIFRoZSBjYWxsIGlz IHNlYXJjaGluZwo+PiBmb3IgdGhlIGVudHJ5LCB1bm1hcHMgaXQgYW5kIG1hcHMgYWdhaW4gYXQg dGhlIHNhbWUgcGxhY2UgdXNpbmcKPj4gYSBuZXcgZ3Vlc3QgYWRkcmVzcy4gSWYgdGhlIG1hcHBp bmcgaXMgZHVtbXkgdGhpcyBjYWxsIHdpbGwKPj4gbWFrZSBpdCByZWFsLgo+Pgo+PiBUaGlzIGZ1 bmN0aW9uIG1ha2VzIHVzZSBvZiBhIG5ldyB4ZW5mb3JlaWdubWVtb3J5X21hcDIoKSBjYWxsCj4+ IHdpdGggYW4gZXh0ZW5kZWQgaW50ZXJmYWNlIHRoYXQgd2FzIHJlY2VudGx5IGludHJvZHVjZWQg aW4KPj4gbGlieGVuZm9yZWlnbm1lbW9yeSBbMV0uCj4gCj4gSSBkb24ndCB1bmRlcnN0YW5kIGhv dyB0aGUgY29tcGF0IGxheWVyIHdvcmtzIGhlcmUuIElmIHhlbmZvcmVpZ25tZW1vcnlfbWFwMigp IGlzIG5vdCBhdmFpbGFibGUgdGhlbiB5b3UgY2FuJ3QgY29udHJvbCB0aGUgcGxhY2VtZW50IGlu IHZpcnR1YWwgYWRkcmVzcyBzcGFjZS4KPiAKCklmIGl0J3Mgbm90IDQuMTAgb3IgbmV3ZXIgeGVu Zm9yZWlnbm1lbW9yeV9tYXAyKCkgZG9lc24ndCBleGlzdCBhbmQgaXMKZ29pbmcgdG8gYmUgZGVm aW5lZCBhcyB4ZW5mb3JlaWdubWVtb3J5X21hcCgpLiBBdCB0aGUgc2FtZSB0aW1lClhFTl9DT01Q QVRfUEhZU01BUCBpcyBkZWZpbmVkIGFuZCB0aGUgZW50cnkgcmVwbGFjZSBmdW5jdGlvbiAod2hp Y2gKcmVsaWVzIG9uIHhlbmZvcmVpZ25tZW1vcnlfbWFwMiBmdW5jdGlvbmFsaXR5KSBpcyBuZXZl ciBnb2luZyB0byBiZSBjYWxsZWQuCgpJZiB5b3UgbWVhbiB0aGF0IEkgc2hvdWxkIGluY29ycG9y YXRlIHRoaXMgaW50byB0aGUgZGVzY3JpcHRpb24gSSBjYW4gZG8gaXQuCgpJZ29yCgo+ICAgUGF1 bAo+IAo+Pgo+PiBbMV0gaHR0cHM6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS94ZW4tZGV2ZWxAbGlz dHMueGVuLm9yZy9tc2cxMTMwMDcuaHRtbAo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBJZ29yIERydXpo aW5pbiA8aWdvci5kcnV6aGluaW5AY2l0cml4LmNvbT4KPj4gLS0tCj4+ICBjb25maWd1cmUgICAg ICAgICAgICAgICAgICAgICB8IDE4ICsrKysrKysrKysKPj4gIGh3L2kzODYveGVuL3hlbi1tYXBj YWNoZS5jICAgIHwgNzkKPj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tLQo+PiAgaW5jbHVkZS9ody94ZW4veGVuX2NvbW1vbi5oICAgfCAgNyArKysrCj4+ICBpbmNs dWRlL3N5c2VtdS94ZW4tbWFwY2FjaGUuaCB8IDExICsrKysrLQo+PiAgNCBmaWxlcyBjaGFuZ2Vk LCAxMDYgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2Nv bmZpZ3VyZSBiL2NvbmZpZ3VyZQo+PiBpbmRleCBjNTcxYWQxLi5hZDYxNTZiIDEwMDc1NQo+PiAt LS0gYS9jb25maWd1cmUKPj4gKysrIGIvY29uZmlndXJlCj4+IEBAIC0yMDIxLDYgKzIwMjEsMjQg QEAgRU9GCj4+ICAgICAgIyBYZW4gdW5zdGFibGUKPj4gICAgICBlbGlmCj4+ICAgICAgICAgIGNh dCA+ICRUTVBDIDw8RU9GICYmCj4+ICsjdW5kZWYgWENfV0FOVF9DT01QQVRfTUFQX0ZPUkVJR05f QVBJCj4+ICsjaW5jbHVkZSA8eGVuZm9yZWlnbm1lbW9yeS5oPgo+PiAraW50IG1haW4odm9pZCkg ewo+PiArICB4ZW5mb3JlaWdubWVtb3J5X2hhbmRsZSAqeGZtZW07Cj4+ICsKPj4gKyAgeGZtZW0g PSB4ZW5mb3JlaWdubWVtb3J5X29wZW4oMCwgMCk7Cj4+ICsgIHhlbmZvcmVpZ25tZW1vcnlfbWFw Mih4Zm1lbSwgMCwgMCwgMCwgMCwgMCwgMCwgMCk7Cj4+ICsKPj4gKyAgcmV0dXJuIDA7Cj4+ICt9 Cj4+ICtFT0YKPj4gKyAgICAgICAgY29tcGlsZV9wcm9nICIiICIkeGVuX2xpYnMgLWx4ZW5kZXZp Y2Vtb2RlbCAkeGVuX3N0YWJsZV9saWJzIgo+PiArICAgICAgdGhlbgo+PiArICAgICAgeGVuX3N0 YWJsZV9saWJzPSItbHhlbmRldmljZW1vZGVsICR4ZW5fc3RhYmxlX2xpYnMiCj4+ICsgICAgICB4 ZW5fY3RybF92ZXJzaW9uPTQxMDAwCj4+ICsgICAgICB4ZW49eWVzCj4+ICsgICAgZWxpZgo+PiAr ICAgICAgICBjYXQgPiAkVE1QQyA8PEVPRiAmJgo+PiAgI3VuZGVmIFhDX1dBTlRfQ09NUEFUX0RF VklDRU1PREVMX0FQSQo+PiAgI2RlZmluZSBfX1hFTl9UT09MU19fCj4+ICAjaW5jbHVkZSA8eGVu ZGV2aWNlbW9kZWwuaD4KPj4gZGlmZiAtLWdpdCBhL2h3L2kzODYveGVuL3hlbi1tYXBjYWNoZS5j IGIvaHcvaTM4Ni94ZW4veGVuLW1hcGNhY2hlLmMKPj4gaW5kZXggY2Q0ZTc0Ni4uYTk4OGJlNyAx MDA2NDQKPj4gLS0tIGEvaHcvaTM4Ni94ZW4veGVuLW1hcGNhY2hlLmMKPj4gKysrIGIvaHcvaTM4 Ni94ZW4veGVuLW1hcGNhY2hlLmMKPj4gQEAgLTE1MSw2ICsxNTEsNyBAQCB2b2lkIHhlbl9tYXBf Y2FjaGVfaW5pdChwaHlzX29mZnNldF90b19nYWRkcl90IGYsCj4+IHZvaWQgKm9wYXF1ZSkKPj4g IH0KPj4KPj4gIHN0YXRpYyB2b2lkIHhlbl9yZW1hcF9idWNrZXQoTWFwQ2FjaGVFbnRyeSAqZW50 cnksCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnZhZGRyLAo+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBod2FkZHIgc2l6ZSwKPj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaHdhZGRyIGFkZHJlc3NfaW5kZXgsCj4+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJvb2wgZHVtbXkpCj4+IEBAIC0xNjcsNyArMTY4LDkgQEAgc3RhdGljIHZv aWQgeGVuX3JlbWFwX2J1Y2tldChNYXBDYWNoZUVudHJ5Cj4+ICplbnRyeSwKPj4gICAgICBlcnIg PSBnX21hbGxvYzAobmJfcGZuICogc2l6ZW9mIChpbnQpKTsKPj4KPj4gICAgICBpZiAoZW50cnkt PnZhZGRyX2Jhc2UgIT0gTlVMTCkgewo+PiAtICAgICAgICByYW1fYmxvY2tfbm90aWZ5X3JlbW92 ZShlbnRyeS0+dmFkZHJfYmFzZSwgZW50cnktPnNpemUpOwo+PiArICAgICAgICBpZiAoZW50cnkt PnZhZGRyX2Jhc2UgIT0gdmFkZHIpIHsKPj4gKyAgICAgICAgICAgIHJhbV9ibG9ja19ub3RpZnlf cmVtb3ZlKGVudHJ5LT52YWRkcl9iYXNlLCBlbnRyeS0+c2l6ZSk7Cj4+ICsgICAgICAgIH0KPj4g ICAgICAgICAgaWYgKG11bm1hcChlbnRyeS0+dmFkZHJfYmFzZSwgZW50cnktPnNpemUpICE9IDAp IHsKPj4gICAgICAgICAgICAgIHBlcnJvcigidW5tYXAgZmFpbHMiKTsKPj4gICAgICAgICAgICAg IGV4aXQoLTEpOwo+PiBAQCAtMTgxLDExICsxODQsMTEgQEAgc3RhdGljIHZvaWQgeGVuX3JlbWFw X2J1Y2tldChNYXBDYWNoZUVudHJ5Cj4+ICplbnRyeSwKPj4gICAgICB9Cj4+Cj4+ICAgICAgaWYg KCFkdW1teSkgewo+PiAtICAgICAgICB2YWRkcl9iYXNlID0geGVuZm9yZWlnbm1lbW9yeV9tYXAo eGVuX2ZtZW0sIHhlbl9kb21pZCwKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQUk9UX1JFQUR8UFJPVF9XUklURSwKPj4gKyAgICAgICAgdmFkZHJfYmFzZSA9 IHhlbmZvcmVpZ25tZW1vcnlfbWFwMih4ZW5fZm1lbSwgeGVuX2RvbWlkLAo+PiB2YWRkciwKPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9UX1JFQUR8UFJP VF9XUklURSwgMCwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBuYl9wZm4sIHBmbnMsIGVycik7Cj4+ICAgICAgICAgIGlmICh2YWRkcl9iYXNlID09IE5VTEwp IHsKPj4gLSAgICAgICAgICAgIHBlcnJvcigieGVuZm9yZWlnbm1lbW9yeV9tYXAiKTsKPj4gKyAg ICAgICAgICAgIHBlcnJvcigieGVuZm9yZWlnbm1lbW9yeV9tYXAyIik7Cj4+ICAgICAgICAgICAg ICBleGl0KC0xKTsKPj4gICAgICAgICAgfQo+PiAgICAgICAgICBlbnRyeS0+ZmxhZ3MgJj0gfihY RU5fTUFQQ0FDSEVfRU5UUllfRFVNTVkpOwo+PiBAQCAtMTk0LDcgKzE5Nyw3IEBAIHN0YXRpYyB2 b2lkIHhlbl9yZW1hcF9idWNrZXQoTWFwQ2FjaGVFbnRyeQo+PiAqZW50cnksCj4+ICAgICAgICAg ICAqIFdlIGNyZWF0ZSBkdW1teSBtYXBwaW5ncyB3aGVyZSB3ZSBhcmUgdW5hYmxlIHRvIGNyZWF0 ZSBhIGZvcmVpZ24KPj4gICAgICAgICAgICogbWFwcGluZyBpbW1lZGlhdGVseSBkdWUgdG8gY2Vy dGFpbiBjaXJjdW1zdGFuY2VzIChpLmUuIG9uIHJlc3VtZQo+PiBub3cpCj4+ICAgICAgICAgICAq Lwo+PiAtICAgICAgICB2YWRkcl9iYXNlID0gbW1hcChOVUxMLCBzaXplLCBQUk9UX1JFQUR8UFJP VF9XUklURSwKPj4gKyAgICAgICAgdmFkZHJfYmFzZSA9IG1tYXAodmFkZHIsIHNpemUsIFBST1Rf UkVBRHxQUk9UX1dSSVRFLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVBfQU5PTnxN QVBfU0hBUkVELCAtMSwgMCk7Cj4+ICAgICAgICAgIGlmICh2YWRkcl9iYXNlID09IE5VTEwpIHsK Pj4gICAgICAgICAgICAgIHBlcnJvcigibW1hcCIpOwo+PiBAQCAtMjAzLDEzICsyMDYsMTYgQEAg c3RhdGljIHZvaWQgeGVuX3JlbWFwX2J1Y2tldChNYXBDYWNoZUVudHJ5Cj4+ICplbnRyeSwKPj4g ICAgICAgICAgZW50cnktPmZsYWdzIHw9IFhFTl9NQVBDQUNIRV9FTlRSWV9EVU1NWTsKPj4gICAg ICB9Cj4+Cj4+ICsgICAgaWYgKGVudHJ5LT52YWRkcl9iYXNlID09IE5VTEwgfHwgZW50cnktPnZh ZGRyX2Jhc2UgIT0gdmFkZHIpIHsKPj4gKyAgICAgICAgcmFtX2Jsb2NrX25vdGlmeV9hZGQodmFk ZHJfYmFzZSwgc2l6ZSk7Cj4+ICsgICAgfQo+PiArCj4+ICAgICAgZW50cnktPnZhZGRyX2Jhc2Ug PSB2YWRkcl9iYXNlOwo+PiAgICAgIGVudHJ5LT5wYWRkcl9pbmRleCA9IGFkZHJlc3NfaW5kZXg7 Cj4+ICAgICAgZW50cnktPnNpemUgPSBzaXplOwo+PiAgICAgIGVudHJ5LT52YWxpZF9tYXBwaW5n ID0gKHVuc2lnbmVkIGxvbmcgKikgZ19tYWxsb2MwKHNpemVvZih1bnNpZ25lZCBsb25nKQo+PiAq Cj4+ICAgICAgICAgICAgICBCSVRTX1RPX0xPTkdTKHNpemUgPj4gWENfUEFHRV9TSElGVCkpOwo+ Pgo+PiAtICAgIHJhbV9ibG9ja19ub3RpZnlfYWRkKGVudHJ5LT52YWRkcl9iYXNlLCBlbnRyeS0+ c2l6ZSk7Cj4+ICAgICAgYml0bWFwX3plcm8oZW50cnktPnZhbGlkX21hcHBpbmcsIG5iX3Bmbik7 Cj4+ICAgICAgZm9yIChpID0gMDsgaSA8IG5iX3BmbjsgaSsrKSB7Cj4+ICAgICAgICAgIGlmICgh ZXJyW2ldKSB7Cj4+IEBAIC0yODIsMTQgKzI4OCwxNCBAQCB0cnlhZ2FpbjoKPj4gICAgICBpZiAo IWVudHJ5KSB7Cj4+ICAgICAgICAgIGVudHJ5ID0gZ19tYWxsb2MwKHNpemVvZiAoTWFwQ2FjaGVF bnRyeSkpOwo+PiAgICAgICAgICBwZW50cnktPm5leHQgPSBlbnRyeTsKPj4gLSAgICAgICAgeGVu X3JlbWFwX2J1Y2tldChlbnRyeSwgY2FjaGVfc2l6ZSwgYWRkcmVzc19pbmRleCwgZHVtbXkpOwo+ PiArICAgICAgICB4ZW5fcmVtYXBfYnVja2V0KGVudHJ5LCBOVUxMLCBjYWNoZV9zaXplLCBhZGRy ZXNzX2luZGV4LCBkdW1teSk7Cj4+ICAgICAgfSBlbHNlIGlmICghZW50cnktPmxvY2spIHsKPj4g ICAgICAgICAgaWYgKCFlbnRyeS0+dmFkZHJfYmFzZSB8fCBlbnRyeS0+cGFkZHJfaW5kZXggIT0g YWRkcmVzc19pbmRleCB8fAo+PiAgICAgICAgICAgICAgICAgIGVudHJ5LT5zaXplICE9IGNhY2hl X3NpemUgfHwKPj4gICAgICAgICAgICAgICAgICAhdGVzdF9iaXRzKGFkZHJlc3Nfb2Zmc2V0ID4+ IFhDX1BBR0VfU0hJRlQsCj4+ICAgICAgICAgICAgICAgICAgICAgIHRlc3RfYml0X3NpemUgPj4g WENfUEFHRV9TSElGVCwKPj4gICAgICAgICAgICAgICAgICAgICAgZW50cnktPnZhbGlkX21hcHBp bmcpKSB7Cj4+IC0gICAgICAgICAgICB4ZW5fcmVtYXBfYnVja2V0KGVudHJ5LCBjYWNoZV9zaXpl LCBhZGRyZXNzX2luZGV4LCBkdW1teSk7Cj4+ICsgICAgICAgICAgICB4ZW5fcmVtYXBfYnVja2V0 KGVudHJ5LCBOVUxMLCBjYWNoZV9zaXplLCBhZGRyZXNzX2luZGV4LAo+PiBkdW1teSk7Cj4+ICAg ICAgICAgIH0KPj4gICAgICB9Cj4+Cj4+IEBAIC00ODYsMyArNDkyLDYwIEBAIHZvaWQgeGVuX2lu dmFsaWRhdGVfbWFwX2NhY2hlKHZvaWQpCj4+Cj4+ICAgICAgbWFwY2FjaGVfdW5sb2NrKCk7Cj4+ ICB9Cj4+ICsKPj4gK3N0YXRpYyB1aW50OF90ICp4ZW5fcmVwbGFjZV9jYWNoZV9lbnRyeV91bmxv Y2tlZChod2FkZHIKPj4gb2xkX3BoeXNfYWRkciwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBod2FkZHIgbmV3X3BoeXNfYWRkciwKPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBod2FkZHIgc2l6ZSkK Pj4gK3sKPj4gKyAgICBNYXBDYWNoZUVudHJ5ICplbnRyeTsKPj4gKyAgICBod2FkZHIgYWRkcmVz c19pbmRleDsKPj4gKyAgICBod2FkZHIgYWRkcmVzc19vZmZzZXQ7Cj4+ICsgICAgaHdhZGRyIGNh Y2hlX3NpemUgPSBzaXplOwo+PiArICAgIGh3YWRkciB0ZXN0X2JpdF9zaXplOwo+PiArCj4+ICsg ICAgYWRkcmVzc19pbmRleCAgPSBvbGRfcGh5c19hZGRyID4+IE1DQUNIRV9CVUNLRVRfU0hJRlQ7 Cj4+ICsgICAgYWRkcmVzc19vZmZzZXQgPSBvbGRfcGh5c19hZGRyICYgKE1DQUNIRV9CVUNLRVRf U0laRSAtIDEpOwo+PiArCj4+ICsgICAgYXNzZXJ0KHNpemUpOwo+PiArICAgIC8qIHRlc3RfYml0 X3NpemUgaXMgYWx3YXlzIGEgbXVsdGlwbGUgb2YgWENfUEFHRV9TSVpFICovCj4+ICsgICAgdGVz dF9iaXRfc2l6ZSA9IHNpemUgKyAob2xkX3BoeXNfYWRkciAmIChYQ19QQUdFX1NJWkUgLSAxKSk7 Cj4+ICsgICAgaWYgKHRlc3RfYml0X3NpemUgJSBYQ19QQUdFX1NJWkUpIHsKPj4gKyAgICAgICAg dGVzdF9iaXRfc2l6ZSArPSBYQ19QQUdFX1NJWkUgLSAodGVzdF9iaXRfc2l6ZSAlIFhDX1BBR0Vf U0laRSk7Cj4+ICsgICAgfQo+PiArICAgIGNhY2hlX3NpemUgPSBzaXplICsgYWRkcmVzc19vZmZz ZXQ7Cj4+ICsgICAgaWYgKGNhY2hlX3NpemUgJSBNQ0FDSEVfQlVDS0VUX1NJWkUpIHsKPj4gKyAg ICAgICAgY2FjaGVfc2l6ZSArPSBNQ0FDSEVfQlVDS0VUX1NJWkUgLSAoY2FjaGVfc2l6ZSAlCj4+ IE1DQUNIRV9CVUNLRVRfU0laRSk7Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgZW50cnkgPSAmbWFw Y2FjaGUtPmVudHJ5W2FkZHJlc3NfaW5kZXggJSBtYXBjYWNoZS0+bnJfYnVja2V0c107Cj4+ICsg ICAgd2hpbGUgKGVudHJ5ICYmICEoZW50cnktPnBhZGRyX2luZGV4ID09IGFkZHJlc3NfaW5kZXgg JiYgZW50cnktPnNpemUKPj4gPT0gY2FjaGVfc2l6ZSkpIHsKPj4gKyAgICAgICAgZW50cnkgPSBl bnRyeS0+bmV4dDsKPj4gKyAgICB9Cj4+ICsgICAgaWYgKCFlbnRyeSkgewo+PiArICAgICAgICBE UFJJTlRGKCJUcnlpbmcgdG8gdXBkYXRlIGFuIGVudHJ5IGZvciAlbHggdGhhdCBpcyBub3QgaW4g dGhlCj4+IG1hcGNhY2hlIVxuIiwgcGh5c19hZGRyKTsKPj4gKyAgICAgICAgcmV0dXJuIE5VTEw7 Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgYWRkcmVzc19pbmRleCAgPSBuZXdfcGh5c19hZGRyID4+ IE1DQUNIRV9CVUNLRVRfU0hJRlQ7Cj4+ICsgICAgYWRkcmVzc19vZmZzZXQgPSBuZXdfcGh5c19h ZGRyICYgKE1DQUNIRV9CVUNLRVRfU0laRSAtIDEpOwo+PiArCj4+ICsgICAgeGVuX3JlbWFwX2J1 Y2tldChlbnRyeSwgZW50cnktPnZhZGRyX2Jhc2UsIGNhY2hlX3NpemUsCj4+IGFkZHJlc3NfaW5k ZXgsIGZhbHNlKTsKPj4gKyAgICBpZighdGVzdF9iaXRzKGFkZHJlc3Nfb2Zmc2V0ID4+IFhDX1BB R0VfU0hJRlQsCj4+ICsgICAgICAgICAgICAgICAgdGVzdF9iaXRfc2l6ZSA+PiBYQ19QQUdFX1NI SUZULAo+PiArICAgICAgICAgICAgICAgIGVudHJ5LT52YWxpZF9tYXBwaW5nKSkgewo+PiArICAg ICAgICBEUFJJTlRGKCJVbmFibGUgdG8gdXBkYXRlIGFuIGVudHJ5IGZvciAlbHggaW4gdGhlIG1h cGNhY2hlIVxuIiwKPj4gcGh5c19hZGRyKTsKPj4gKyAgICAgICAgcmV0dXJuIE5VTEw7Cj4+ICsg ICAgfQo+PiArCj4+ICsgICAgcmV0dXJuIGVudHJ5LT52YWRkcl9iYXNlICsgYWRkcmVzc19vZmZz ZXQ7Cj4+ICt9Cj4+ICsKPj4gK3VpbnQ4X3QgKnhlbl9yZXBsYWNlX2NhY2hlX2VudHJ5KGh3YWRk ciBvbGRfcGh5c19hZGRyLCBod2FkZHIKPj4gbmV3X3BoeXNfYWRkciwgaHdhZGRyIHNpemUpCj4+ ICt7Cj4+ICsgICAgdWludDhfdCAqcDsKPj4gKwo+PiArICAgIG1hcGNhY2hlX2xvY2soKTsKPj4g KyAgICBwID0geGVuX3JlcGxhY2VfY2FjaGVfZW50cnlfdW5sb2NrZWQob2xkX3BoeXNfYWRkciwK Pj4gbmV3X3BoeXNfYWRkciwgc2l6ZSk7Cj4+ICsgICAgbWFwY2FjaGVfdW5sb2NrKCk7Cj4+ICsg ICAgcmV0dXJuIHA7Cj4+ICt9Cj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2h3L3hlbi94ZW5fY29t bW9uLmgKPj4gYi9pbmNsdWRlL2h3L3hlbi94ZW5fY29tbW9uLmgKPj4gaW5kZXggZTAwZGRkNy4u NzBhNWNhZCAxMDA2NDQKPj4gLS0tIGEvaW5jbHVkZS9ody94ZW4veGVuX2NvbW1vbi5oCj4+ICsr KyBiL2luY2x1ZGUvaHcveGVuL3hlbl9jb21tb24uaAo+PiBAQCAtNzgsNiArNzgsMTMgQEAgc3Rh dGljIGlubGluZSB2b2lkCj4+ICp4ZW5mb3JlaWdubWVtb3J5X21hcCh4Y19pbnRlcmZhY2UgKmgs IHVpbnQzMl90IGRvbSwKPj4KPj4gIGV4dGVybiB4ZW5mb3JlaWdubWVtb3J5X2hhbmRsZSAqeGVu X2ZtZW07Cj4+Cj4+ICsjaWYgQ09ORklHX1hFTl9DVFJMX0lOVEVSRkFDRV9WRVJTSU9OIDwgNDEw MDAKPj4gKwo+PiArI2RlZmluZSB4ZW5mb3JlaWdubWVtb3J5X21hcDIoaCwgZCwgYSwgcCwgZiwg cHMsIGFyLCBlKSBcCj4+ICsgICAgeGVuZm9yZWlnbm1lbW9yeV9tYXAoaCwgZCwgcCwgcHMsIGFy LCBlKQo+PiArCj4+ICsjZW5kaWYKPj4gKwo+PiAgI2lmIENPTkZJR19YRU5fQ1RSTF9JTlRFUkZB Q0VfVkVSU0lPTiA8IDQwOTAwCj4+Cj4+ICB0eXBlZGVmIHhjX2ludGVyZmFjZSB4ZW5kZXZpY2Vt b2RlbF9oYW5kbGU7Cj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3N5c2VtdS94ZW4tbWFwY2FjaGUu aCBiL2luY2x1ZGUvc3lzZW11L3hlbi0KPj4gbWFwY2FjaGUuaAo+PiBpbmRleCAwMWRhYWFkLi5i Mzg5NjJjIDEwMDY0NAo+PiAtLS0gYS9pbmNsdWRlL3N5c2VtdS94ZW4tbWFwY2FjaGUuaAo+PiAr KysgYi9pbmNsdWRlL3N5c2VtdS94ZW4tbWFwY2FjaGUuaAo+PiBAQCAtMjEsNyArMjEsOSBAQCB1 aW50OF90ICp4ZW5fbWFwX2NhY2hlKGh3YWRkciBwaHlzX2FkZHIsIGh3YWRkcgo+PiBzaXplLAo+ PiAgcmFtX2FkZHJfdCB4ZW5fcmFtX2FkZHJfZnJvbV9tYXBjYWNoZSh2b2lkICpwdHIpOwo+PiAg dm9pZCB4ZW5faW52YWxpZGF0ZV9tYXBfY2FjaGVfZW50cnkodWludDhfdCAqYnVmZmVyKTsKPj4g IHZvaWQgeGVuX2ludmFsaWRhdGVfbWFwX2NhY2hlKHZvaWQpOwo+PiAtCj4+ICt1aW50OF90ICp4 ZW5fcmVwbGFjZV9jYWNoZV9lbnRyeShod2FkZHIgb2xkX3BoeXNfYWRkciwKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGh3YWRkciBuZXdfcGh5c19hZGRyLAo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaHdhZGRyIHNpemUpOwo+PiAgI2Vsc2UKPj4KPj4g IHN0YXRpYyBpbmxpbmUgdm9pZCB4ZW5fbWFwX2NhY2hlX2luaXQocGh5c19vZmZzZXRfdG9fZ2Fk ZHJfdCBmLAo+PiBAQCAtNTAsNiArNTIsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIHhlbl9pbnZh bGlkYXRlX21hcF9jYWNoZSh2b2lkKQo+PiAgewo+PiAgfQo+Pgo+PiArdWludDhfdCAqeGVuX3Jl cGxhY2VfY2FjaGVfZW50cnkoaHdhZGRyIG9sZF9waHlzX2FkZHIsCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBod2FkZHIgbmV3X3BoeXNfYWRkciwKPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGh3YWRkciBzaXplKQo+PiArewo+PiArICAgIGFib3J0KCk7 Cj4+ICt9Cj4+ICsKPj4gICNlbmRpZgo+Pgo+PiAgI2VuZGlmIC8qIFhFTl9NQVBDQUNIRV9IICov Cj4+IC0tCj4+IDIuNy40Cj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3Jn Cmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK