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: Tue, 4 Jul 2017 16:27:25 +0000 Message-ID: <5e854d8a0df0401eba375f959ee5de8c@AMSPEX02CL01.citrite.net> References: <1499183267-28623-1-git-send-email-igor.druzhinin@citrix.com> <1499183267-28623-4-git-send-email-igor.druzhinin@citrix.com> 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 1dSQgI-0007tA-Fv for xen-devel@lists.xenproject.org; Tue, 04 Jul 2017 16:28:06 +0000 In-Reply-To: <1499183267-28623-4-git-send-email-igor.druzhinin@citrix.com> 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 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IElnb3IgRHJ1emhpbmluCj4gU2Vu dDogMDQgSnVseSAyMDE3IDE2OjQ4Cj4gVG86IHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y ZzsgcWVtdS1kZXZlbEBub25nbnUub3JnCj4gQ2M6IElnb3IgRHJ1emhpbmluIDxpZ29yLmRydXpo aW5pbkBjaXRyaXguY29tPjsgc3N0YWJlbGxpbmlAa2VybmVsLm9yZzsKPiBBbnRob255IFBlcmFy ZCA8YW50aG9ueS5wZXJhcmRAY2l0cml4LmNvbT47IFBhdWwgRHVycmFudAo+IDxQYXVsLkR1cnJh bnRAY2l0cml4LmNvbT47IHBib256aW5pQHJlZGhhdC5jb20KPiBTdWJqZWN0OiBbUEFUQ0ggdjIg My80XSB4ZW4vbWFwY2FjaGU6IGludHJvZHVjZQo+IHhlbl9yZXBsYWNlX2NhY2hlX2VudHJ5KCkK PiAKPiBUaGlzIG5ldyBjYWxsIGlzIHRyeWluZyB0byB1cGRhdGUgYSByZXF1ZXN0ZWQgbWFwIGNh Y2hlIGVudHJ5Cj4gYWNjb3JkaW5nIHRvIHRoZSBjaGFuZ2VzIGluIHRoZSBwaHlzbWFwLiBUaGUg Y2FsbCBpcyBzZWFyY2hpbmcKPiBmb3IgdGhlIGVudHJ5LCB1bm1hcHMgaXQgYW5kIG1hcHMgYWdh aW4gYXQgdGhlIHNhbWUgcGxhY2UgdXNpbmcKPiBhIG5ldyBndWVzdCBhZGRyZXNzLiBJZiB0aGUg bWFwcGluZyBpcyBkdW1teSB0aGlzIGNhbGwgd2lsbAo+IG1ha2UgaXQgcmVhbC4KPiAKPiBUaGlz IGZ1bmN0aW9uIG1ha2VzIHVzZSBvZiBhIG5ldyB4ZW5mb3JlaWdubWVtb3J5X21hcDIoKSBjYWxs Cj4gd2l0aCBhbiBleHRlbmRlZCBpbnRlcmZhY2UgdGhhdCB3YXMgcmVjZW50bHkgaW50cm9kdWNl ZCBpbgo+IGxpYnhlbmZvcmVpZ25tZW1vcnkgWzFdLgoKSSBkb24ndCB1bmRlcnN0YW5kIGhvdyB0 aGUgY29tcGF0IGxheWVyIHdvcmtzIGhlcmUuIElmIHhlbmZvcmVpZ25tZW1vcnlfbWFwMigpIGlz IG5vdCBhdmFpbGFibGUgdGhlbiB5b3UgY2FuJ3QgY29udHJvbCB0aGUgcGxhY2VtZW50IGluIHZp cnR1YWwgYWRkcmVzcyBzcGFjZS4KCiAgUGF1bAoKPiAKPiBbMV0gaHR0cHM6Ly93d3cubWFpbC1h cmNoaXZlLmNvbS94ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZy9tc2cxMTMwMDcuaHRtbAo+IAo+IFNp Z25lZC1vZmYtYnk6IElnb3IgRHJ1emhpbmluIDxpZ29yLmRydXpoaW5pbkBjaXRyaXguY29tPgo+ IC0tLQo+ICBjb25maWd1cmUgICAgICAgICAgICAgICAgICAgICB8IDE4ICsrKysrKysrKysKPiAg aHcvaTM4Ni94ZW4veGVuLW1hcGNhY2hlLmMgICAgfCA3OQo+ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0KPiAgaW5jbHVkZS9ody94ZW4veGVuX2NvbW1vbi5oICAg fCAgNyArKysrCj4gIGluY2x1ZGUvc3lzZW11L3hlbi1tYXBjYWNoZS5oIHwgMTEgKysrKystCj4g IDQgZmlsZXMgY2hhbmdlZCwgMTA2IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCj4gCj4g ZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQo+IGluZGV4IGM1NzFhZDEuLmFkNjE1 NmIgMTAwNzU1Cj4gLS0tIGEvY29uZmlndXJlCj4gKysrIGIvY29uZmlndXJlCj4gQEAgLTIwMjEs NiArMjAyMSwyNCBAQCBFT0YKPiAgICAgICMgWGVuIHVuc3RhYmxlCj4gICAgICBlbGlmCj4gICAg ICAgICAgY2F0ID4gJFRNUEMgPDxFT0YgJiYKPiArI3VuZGVmIFhDX1dBTlRfQ09NUEFUX01BUF9G T1JFSUdOX0FQSQo+ICsjaW5jbHVkZSA8eGVuZm9yZWlnbm1lbW9yeS5oPgo+ICtpbnQgbWFpbih2 b2lkKSB7Cj4gKyAgeGVuZm9yZWlnbm1lbW9yeV9oYW5kbGUgKnhmbWVtOwo+ICsKPiArICB4Zm1l bSA9IHhlbmZvcmVpZ25tZW1vcnlfb3BlbigwLCAwKTsKPiArICB4ZW5mb3JlaWdubWVtb3J5X21h cDIoeGZtZW0sIDAsIDAsIDAsIDAsIDAsIDAsIDApOwo+ICsKPiArICByZXR1cm4gMDsKPiArfQo+ ICtFT0YKPiArICAgICAgICBjb21waWxlX3Byb2cgIiIgIiR4ZW5fbGlicyAtbHhlbmRldmljZW1v ZGVsICR4ZW5fc3RhYmxlX2xpYnMiCj4gKyAgICAgIHRoZW4KPiArICAgICAgeGVuX3N0YWJsZV9s aWJzPSItbHhlbmRldmljZW1vZGVsICR4ZW5fc3RhYmxlX2xpYnMiCj4gKyAgICAgIHhlbl9jdHJs X3ZlcnNpb249NDEwMDAKPiArICAgICAgeGVuPXllcwo+ICsgICAgZWxpZgo+ICsgICAgICAgIGNh dCA+ICRUTVBDIDw8RU9GICYmCj4gICN1bmRlZiBYQ19XQU5UX0NPTVBBVF9ERVZJQ0VNT0RFTF9B UEkKPiAgI2RlZmluZSBfX1hFTl9UT09MU19fCj4gICNpbmNsdWRlIDx4ZW5kZXZpY2Vtb2RlbC5o Pgo+IGRpZmYgLS1naXQgYS9ody9pMzg2L3hlbi94ZW4tbWFwY2FjaGUuYyBiL2h3L2kzODYveGVu L3hlbi1tYXBjYWNoZS5jCj4gaW5kZXggY2Q0ZTc0Ni4uYTk4OGJlNyAxMDA2NDQKPiAtLS0gYS9o dy9pMzg2L3hlbi94ZW4tbWFwY2FjaGUuYwo+ICsrKyBiL2h3L2kzODYveGVuL3hlbi1tYXBjYWNo ZS5jCj4gQEAgLTE1MSw2ICsxNTEsNyBAQCB2b2lkIHhlbl9tYXBfY2FjaGVfaW5pdChwaHlzX29m ZnNldF90b19nYWRkcl90IGYsCj4gdm9pZCAqb3BhcXVlKQo+ICB9Cj4gCj4gIHN0YXRpYyB2b2lk IHhlbl9yZW1hcF9idWNrZXQoTWFwQ2FjaGVFbnRyeSAqZW50cnksCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdm9pZCAqdmFkZHIsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaHdhZGRyIHNpemUsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHdhZGRyIGFk ZHJlc3NfaW5kZXgsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkdW1teSkK PiBAQCAtMTY3LDcgKzE2OCw5IEBAIHN0YXRpYyB2b2lkIHhlbl9yZW1hcF9idWNrZXQoTWFwQ2Fj aGVFbnRyeQo+ICplbnRyeSwKPiAgICAgIGVyciA9IGdfbWFsbG9jMChuYl9wZm4gKiBzaXplb2Yg KGludCkpOwo+IAo+ICAgICAgaWYgKGVudHJ5LT52YWRkcl9iYXNlICE9IE5VTEwpIHsKPiAtICAg ICAgICByYW1fYmxvY2tfbm90aWZ5X3JlbW92ZShlbnRyeS0+dmFkZHJfYmFzZSwgZW50cnktPnNp emUpOwo+ICsgICAgICAgIGlmIChlbnRyeS0+dmFkZHJfYmFzZSAhPSB2YWRkcikgewo+ICsgICAg ICAgICAgICByYW1fYmxvY2tfbm90aWZ5X3JlbW92ZShlbnRyeS0+dmFkZHJfYmFzZSwgZW50cnkt PnNpemUpOwo+ICsgICAgICAgIH0KPiAgICAgICAgICBpZiAobXVubWFwKGVudHJ5LT52YWRkcl9i YXNlLCBlbnRyeS0+c2l6ZSkgIT0gMCkgewo+ICAgICAgICAgICAgICBwZXJyb3IoInVubWFwIGZh aWxzIik7Cj4gICAgICAgICAgICAgIGV4aXQoLTEpOwo+IEBAIC0xODEsMTEgKzE4NCwxMSBAQCBz dGF0aWMgdm9pZCB4ZW5fcmVtYXBfYnVja2V0KE1hcENhY2hlRW50cnkKPiAqZW50cnksCj4gICAg ICB9Cj4gCj4gICAgICBpZiAoIWR1bW15KSB7Cj4gLSAgICAgICAgdmFkZHJfYmFzZSA9IHhlbmZv cmVpZ25tZW1vcnlfbWFwKHhlbl9mbWVtLCB4ZW5fZG9taWQsCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9UX1JFQUR8UFJPVF9XUklURSwKPiArICAgICAg ICB2YWRkcl9iYXNlID0geGVuZm9yZWlnbm1lbW9yeV9tYXAyKHhlbl9mbWVtLCB4ZW5fZG9taWQs Cj4gdmFkZHIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ Uk9UX1JFQUR8UFJPVF9XUklURSwgMCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5iX3BmbiwgcGZucywgZXJyKTsKPiAgICAgICAgICBpZiAodmFkZHJfYmFz ZSA9PSBOVUxMKSB7Cj4gLSAgICAgICAgICAgIHBlcnJvcigieGVuZm9yZWlnbm1lbW9yeV9tYXAi KTsKPiArICAgICAgICAgICAgcGVycm9yKCJ4ZW5mb3JlaWdubWVtb3J5X21hcDIiKTsKPiAgICAg ICAgICAgICAgZXhpdCgtMSk7Cj4gICAgICAgICAgfQo+ICAgICAgICAgIGVudHJ5LT5mbGFncyAm PSB+KFhFTl9NQVBDQUNIRV9FTlRSWV9EVU1NWSk7Cj4gQEAgLTE5NCw3ICsxOTcsNyBAQCBzdGF0 aWMgdm9pZCB4ZW5fcmVtYXBfYnVja2V0KE1hcENhY2hlRW50cnkKPiAqZW50cnksCj4gICAgICAg ICAgICogV2UgY3JlYXRlIGR1bW15IG1hcHBpbmdzIHdoZXJlIHdlIGFyZSB1bmFibGUgdG8gY3Jl YXRlIGEgZm9yZWlnbgo+ICAgICAgICAgICAqIG1hcHBpbmcgaW1tZWRpYXRlbHkgZHVlIHRvIGNl cnRhaW4gY2lyY3Vtc3RhbmNlcyAoaS5lLiBvbiByZXN1bWUKPiBub3cpCj4gICAgICAgICAgICov Cj4gLSAgICAgICAgdmFkZHJfYmFzZSA9IG1tYXAoTlVMTCwgc2l6ZSwgUFJPVF9SRUFEfFBST1Rf V1JJVEUsCj4gKyAgICAgICAgdmFkZHJfYmFzZSA9IG1tYXAodmFkZHIsIHNpemUsIFBST1RfUkVB RHxQUk9UX1dSSVRFLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BUF9BTk9OfE1BUF9T SEFSRUQsIC0xLCAwKTsKPiAgICAgICAgICBpZiAodmFkZHJfYmFzZSA9PSBOVUxMKSB7Cj4gICAg ICAgICAgICAgIHBlcnJvcigibW1hcCIpOwo+IEBAIC0yMDMsMTMgKzIwNiwxNiBAQCBzdGF0aWMg dm9pZCB4ZW5fcmVtYXBfYnVja2V0KE1hcENhY2hlRW50cnkKPiAqZW50cnksCj4gICAgICAgICAg ZW50cnktPmZsYWdzIHw9IFhFTl9NQVBDQUNIRV9FTlRSWV9EVU1NWTsKPiAgICAgIH0KPiAKPiAr ICAgIGlmIChlbnRyeS0+dmFkZHJfYmFzZSA9PSBOVUxMIHx8IGVudHJ5LT52YWRkcl9iYXNlICE9 IHZhZGRyKSB7Cj4gKyAgICAgICAgcmFtX2Jsb2NrX25vdGlmeV9hZGQodmFkZHJfYmFzZSwgc2l6 ZSk7Cj4gKyAgICB9Cj4gKwo+ICAgICAgZW50cnktPnZhZGRyX2Jhc2UgPSB2YWRkcl9iYXNlOwo+ ICAgICAgZW50cnktPnBhZGRyX2luZGV4ID0gYWRkcmVzc19pbmRleDsKPiAgICAgIGVudHJ5LT5z aXplID0gc2l6ZTsKPiAgICAgIGVudHJ5LT52YWxpZF9tYXBwaW5nID0gKHVuc2lnbmVkIGxvbmcg KikgZ19tYWxsb2MwKHNpemVvZih1bnNpZ25lZCBsb25nKQo+ICoKPiAgICAgICAgICAgICAgQklU U19UT19MT05HUyhzaXplID4+IFhDX1BBR0VfU0hJRlQpKTsKPiAKPiAtICAgIHJhbV9ibG9ja19u b3RpZnlfYWRkKGVudHJ5LT52YWRkcl9iYXNlLCBlbnRyeS0+c2l6ZSk7Cj4gICAgICBiaXRtYXBf emVybyhlbnRyeS0+dmFsaWRfbWFwcGluZywgbmJfcGZuKTsKPiAgICAgIGZvciAoaSA9IDA7IGkg PCBuYl9wZm47IGkrKykgewo+ICAgICAgICAgIGlmICghZXJyW2ldKSB7Cj4gQEAgLTI4MiwxNCAr Mjg4LDE0IEBAIHRyeWFnYWluOgo+ICAgICAgaWYgKCFlbnRyeSkgewo+ICAgICAgICAgIGVudHJ5 ID0gZ19tYWxsb2MwKHNpemVvZiAoTWFwQ2FjaGVFbnRyeSkpOwo+ICAgICAgICAgIHBlbnRyeS0+ bmV4dCA9IGVudHJ5Owo+IC0gICAgICAgIHhlbl9yZW1hcF9idWNrZXQoZW50cnksIGNhY2hlX3Np emUsIGFkZHJlc3NfaW5kZXgsIGR1bW15KTsKPiArICAgICAgICB4ZW5fcmVtYXBfYnVja2V0KGVu dHJ5LCBOVUxMLCBjYWNoZV9zaXplLCBhZGRyZXNzX2luZGV4LCBkdW1teSk7Cj4gICAgICB9IGVs c2UgaWYgKCFlbnRyeS0+bG9jaykgewo+ICAgICAgICAgIGlmICghZW50cnktPnZhZGRyX2Jhc2Ug fHwgZW50cnktPnBhZGRyX2luZGV4ICE9IGFkZHJlc3NfaW5kZXggfHwKPiAgICAgICAgICAgICAg ICAgIGVudHJ5LT5zaXplICE9IGNhY2hlX3NpemUgfHwKPiAgICAgICAgICAgICAgICAgICF0ZXN0 X2JpdHMoYWRkcmVzc19vZmZzZXQgPj4gWENfUEFHRV9TSElGVCwKPiAgICAgICAgICAgICAgICAg ICAgICB0ZXN0X2JpdF9zaXplID4+IFhDX1BBR0VfU0hJRlQsCj4gICAgICAgICAgICAgICAgICAg ICAgZW50cnktPnZhbGlkX21hcHBpbmcpKSB7Cj4gLSAgICAgICAgICAgIHhlbl9yZW1hcF9idWNr ZXQoZW50cnksIGNhY2hlX3NpemUsIGFkZHJlc3NfaW5kZXgsIGR1bW15KTsKPiArICAgICAgICAg ICAgeGVuX3JlbWFwX2J1Y2tldChlbnRyeSwgTlVMTCwgY2FjaGVfc2l6ZSwgYWRkcmVzc19pbmRl eCwKPiBkdW1teSk7Cj4gICAgICAgICAgfQo+ICAgICAgfQo+IAo+IEBAIC00ODYsMyArNDkyLDYw IEBAIHZvaWQgeGVuX2ludmFsaWRhdGVfbWFwX2NhY2hlKHZvaWQpCj4gCj4gICAgICBtYXBjYWNo ZV91bmxvY2soKTsKPiAgfQo+ICsKPiArc3RhdGljIHVpbnQ4X3QgKnhlbl9yZXBsYWNlX2NhY2hl X2VudHJ5X3VubG9ja2VkKGh3YWRkcgo+IG9sZF9waHlzX2FkZHIsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBod2FkZHIgbmV3X3BoeXNfYWRkciwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh3YWRk ciBzaXplKQo+ICt7Cj4gKyAgICBNYXBDYWNoZUVudHJ5ICplbnRyeTsKPiArICAgIGh3YWRkciBh ZGRyZXNzX2luZGV4Owo+ICsgICAgaHdhZGRyIGFkZHJlc3Nfb2Zmc2V0Owo+ICsgICAgaHdhZGRy IGNhY2hlX3NpemUgPSBzaXplOwo+ICsgICAgaHdhZGRyIHRlc3RfYml0X3NpemU7Cj4gKwo+ICsg ICAgYWRkcmVzc19pbmRleCAgPSBvbGRfcGh5c19hZGRyID4+IE1DQUNIRV9CVUNLRVRfU0hJRlQ7 Cj4gKyAgICBhZGRyZXNzX29mZnNldCA9IG9sZF9waHlzX2FkZHIgJiAoTUNBQ0hFX0JVQ0tFVF9T SVpFIC0gMSk7Cj4gKwo+ICsgICAgYXNzZXJ0KHNpemUpOwo+ICsgICAgLyogdGVzdF9iaXRfc2l6 ZSBpcyBhbHdheXMgYSBtdWx0aXBsZSBvZiBYQ19QQUdFX1NJWkUgKi8KPiArICAgIHRlc3RfYml0 X3NpemUgPSBzaXplICsgKG9sZF9waHlzX2FkZHIgJiAoWENfUEFHRV9TSVpFIC0gMSkpOwo+ICsg ICAgaWYgKHRlc3RfYml0X3NpemUgJSBYQ19QQUdFX1NJWkUpIHsKPiArICAgICAgICB0ZXN0X2Jp dF9zaXplICs9IFhDX1BBR0VfU0laRSAtICh0ZXN0X2JpdF9zaXplICUgWENfUEFHRV9TSVpFKTsK PiArICAgIH0KPiArICAgIGNhY2hlX3NpemUgPSBzaXplICsgYWRkcmVzc19vZmZzZXQ7Cj4gKyAg ICBpZiAoY2FjaGVfc2l6ZSAlIE1DQUNIRV9CVUNLRVRfU0laRSkgewo+ICsgICAgICAgIGNhY2hl X3NpemUgKz0gTUNBQ0hFX0JVQ0tFVF9TSVpFIC0gKGNhY2hlX3NpemUgJQo+IE1DQUNIRV9CVUNL RVRfU0laRSk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgZW50cnkgPSAmbWFwY2FjaGUtPmVudHJ5W2Fk ZHJlc3NfaW5kZXggJSBtYXBjYWNoZS0+bnJfYnVja2V0c107Cj4gKyAgICB3aGlsZSAoZW50cnkg JiYgIShlbnRyeS0+cGFkZHJfaW5kZXggPT0gYWRkcmVzc19pbmRleCAmJiBlbnRyeS0+c2l6ZQo+ ID09IGNhY2hlX3NpemUpKSB7Cj4gKyAgICAgICAgZW50cnkgPSBlbnRyeS0+bmV4dDsKPiArICAg IH0KPiArICAgIGlmICghZW50cnkpIHsKPiArICAgICAgICBEUFJJTlRGKCJUcnlpbmcgdG8gdXBk YXRlIGFuIGVudHJ5IGZvciAlbHggdGhhdCBpcyBub3QgaW4gdGhlCj4gbWFwY2FjaGUhXG4iLCBw aHlzX2FkZHIpOwo+ICsgICAgICAgIHJldHVybiBOVUxMOwo+ICsgICAgfQo+ICsKPiArICAgIGFk ZHJlc3NfaW5kZXggID0gbmV3X3BoeXNfYWRkciA+PiBNQ0FDSEVfQlVDS0VUX1NISUZUOwo+ICsg ICAgYWRkcmVzc19vZmZzZXQgPSBuZXdfcGh5c19hZGRyICYgKE1DQUNIRV9CVUNLRVRfU0laRSAt IDEpOwo+ICsKPiArICAgIHhlbl9yZW1hcF9idWNrZXQoZW50cnksIGVudHJ5LT52YWRkcl9iYXNl LCBjYWNoZV9zaXplLAo+IGFkZHJlc3NfaW5kZXgsIGZhbHNlKTsKPiArICAgIGlmKCF0ZXN0X2Jp dHMoYWRkcmVzc19vZmZzZXQgPj4gWENfUEFHRV9TSElGVCwKPiArICAgICAgICAgICAgICAgIHRl c3RfYml0X3NpemUgPj4gWENfUEFHRV9TSElGVCwKPiArICAgICAgICAgICAgICAgIGVudHJ5LT52 YWxpZF9tYXBwaW5nKSkgewo+ICsgICAgICAgIERQUklOVEYoIlVuYWJsZSB0byB1cGRhdGUgYW4g ZW50cnkgZm9yICVseCBpbiB0aGUgbWFwY2FjaGUhXG4iLAo+IHBoeXNfYWRkcik7Cj4gKyAgICAg ICAgcmV0dXJuIE5VTEw7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIGVudHJ5LT52YWRkcl9i YXNlICsgYWRkcmVzc19vZmZzZXQ7Cj4gK30KPiArCj4gK3VpbnQ4X3QgKnhlbl9yZXBsYWNlX2Nh Y2hlX2VudHJ5KGh3YWRkciBvbGRfcGh5c19hZGRyLCBod2FkZHIKPiBuZXdfcGh5c19hZGRyLCBo d2FkZHIgc2l6ZSkKPiArewo+ICsgICAgdWludDhfdCAqcDsKPiArCj4gKyAgICBtYXBjYWNoZV9s b2NrKCk7Cj4gKyAgICBwID0geGVuX3JlcGxhY2VfY2FjaGVfZW50cnlfdW5sb2NrZWQob2xkX3Bo eXNfYWRkciwKPiBuZXdfcGh5c19hZGRyLCBzaXplKTsKPiArICAgIG1hcGNhY2hlX3VubG9jaygp Owo+ICsgICAgcmV0dXJuIHA7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ody94ZW4veGVu X2NvbW1vbi5oCj4gYi9pbmNsdWRlL2h3L3hlbi94ZW5fY29tbW9uLmgKPiBpbmRleCBlMDBkZGQ3 Li43MGE1Y2FkIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvaHcveGVuL3hlbl9jb21tb24uaAo+ICsr KyBiL2luY2x1ZGUvaHcveGVuL3hlbl9jb21tb24uaAo+IEBAIC03OCw2ICs3OCwxMyBAQCBzdGF0 aWMgaW5saW5lIHZvaWQKPiAqeGVuZm9yZWlnbm1lbW9yeV9tYXAoeGNfaW50ZXJmYWNlICpoLCB1 aW50MzJfdCBkb20sCj4gCj4gIGV4dGVybiB4ZW5mb3JlaWdubWVtb3J5X2hhbmRsZSAqeGVuX2Zt ZW07Cj4gCj4gKyNpZiBDT05GSUdfWEVOX0NUUkxfSU5URVJGQUNFX1ZFUlNJT04gPCA0MTAwMAo+ ICsKPiArI2RlZmluZSB4ZW5mb3JlaWdubWVtb3J5X21hcDIoaCwgZCwgYSwgcCwgZiwgcHMsIGFy LCBlKSBcCj4gKyAgICB4ZW5mb3JlaWdubWVtb3J5X21hcChoLCBkLCBwLCBwcywgYXIsIGUpCj4g Kwo+ICsjZW5kaWYKPiArCj4gICNpZiBDT05GSUdfWEVOX0NUUkxfSU5URVJGQUNFX1ZFUlNJT04g PCA0MDkwMAo+IAo+ICB0eXBlZGVmIHhjX2ludGVyZmFjZSB4ZW5kZXZpY2Vtb2RlbF9oYW5kbGU7 Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvc3lzZW11L3hlbi1tYXBjYWNoZS5oIGIvaW5jbHVkZS9z eXNlbXUveGVuLQo+IG1hcGNhY2hlLmgKPiBpbmRleCAwMWRhYWFkLi5iMzg5NjJjIDEwMDY0NAo+ IC0tLSBhL2luY2x1ZGUvc3lzZW11L3hlbi1tYXBjYWNoZS5oCj4gKysrIGIvaW5jbHVkZS9zeXNl bXUveGVuLW1hcGNhY2hlLmgKPiBAQCAtMjEsNyArMjEsOSBAQCB1aW50OF90ICp4ZW5fbWFwX2Nh Y2hlKGh3YWRkciBwaHlzX2FkZHIsIGh3YWRkcgo+IHNpemUsCj4gIHJhbV9hZGRyX3QgeGVuX3Jh bV9hZGRyX2Zyb21fbWFwY2FjaGUodm9pZCAqcHRyKTsKPiAgdm9pZCB4ZW5faW52YWxpZGF0ZV9t YXBfY2FjaGVfZW50cnkodWludDhfdCAqYnVmZmVyKTsKPiAgdm9pZCB4ZW5faW52YWxpZGF0ZV9t YXBfY2FjaGUodm9pZCk7Cj4gLQo+ICt1aW50OF90ICp4ZW5fcmVwbGFjZV9jYWNoZV9lbnRyeSho d2FkZHIgb2xkX3BoeXNfYWRkciwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aHdhZGRyIG5ld19waHlzX2FkZHIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGh3YWRkciBzaXplKTsKPiAgI2Vsc2UKPiAKPiAgc3RhdGljIGlubGluZSB2b2lkIHhlbl9tYXBf Y2FjaGVfaW5pdChwaHlzX29mZnNldF90b19nYWRkcl90IGYsCj4gQEAgLTUwLDYgKzUyLDEzIEBA IHN0YXRpYyBpbmxpbmUgdm9pZCB4ZW5faW52YWxpZGF0ZV9tYXBfY2FjaGUodm9pZCkKPiAgewo+ ICB9Cj4gCj4gK3VpbnQ4X3QgKnhlbl9yZXBsYWNlX2NhY2hlX2VudHJ5KGh3YWRkciBvbGRfcGh5 c19hZGRyLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBod2FkZHIgbmV3X3Bo eXNfYWRkciwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHdhZGRyIHNpemUp Cj4gK3sKPiArICAgIGFib3J0KCk7Cj4gK30KPiArCj4gICNlbmRpZgo+IAo+ICAjZW5kaWYgLyog WEVOX01BUENBQ0hFX0ggKi8KPiAtLQo+IDIuNy40CgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==