From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v3 3/4] xen/mapcache: introduce xen_replace_cache_entry() Date: Tue, 11 Jul 2017 07:13:55 +0000 Message-ID: References: <1499726403-10129-1-git-send-email-igor.druzhinin@citrix.com> <1499726403-10129-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 1dUpMr-0001bo-Sl for xen-devel@lists.xenproject.org; Tue, 11 Jul 2017 07:13:57 +0000 In-Reply-To: <1499726403-10129-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 dDogMTEgSnVseSAyMDE3IDAwOjQwCj4gVG86IHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9y ZzsgcWVtdS1kZXZlbEBub25nbnUub3JnCj4gQ2M6IElnb3IgRHJ1emhpbmluIDxpZ29yLmRydXpo aW5pbkBjaXRyaXguY29tPjsgc3N0YWJlbGxpbmlAa2VybmVsLm9yZzsKPiBBbnRob255IFBlcmFy ZCA8YW50aG9ueS5wZXJhcmRAY2l0cml4LmNvbT47IFBhdWwgRHVycmFudAo+IDxQYXVsLkR1cnJh bnRAY2l0cml4LmNvbT47IHBib256aW5pQHJlZGhhdC5jb20KPiBTdWJqZWN0OiBbUEFUQ0ggdjMg My80XSB4ZW4vbWFwY2FjaGU6IGludHJvZHVjZQo+IHhlbl9yZXBsYWNlX2NhY2hlX2VudHJ5KCkK PiAKPiBUaGlzIG5ldyBjYWxsIGlzIHRyeWluZyB0byB1cGRhdGUgYSByZXF1ZXN0ZWQgbWFwIGNh Y2hlIGVudHJ5Cj4gYWNjb3JkaW5nIHRvIHRoZSBjaGFuZ2VzIGluIHRoZSBwaHlzbWFwLiBUaGUg Y2FsbCBpcyBzZWFyY2hpbmcKPiBmb3IgdGhlIGVudHJ5LCB1bm1hcHMgaXQgYW5kIG1hcHMgYWdh aW4gYXQgdGhlIHNhbWUgcGxhY2UgdXNpbmcKPiBhIG5ldyBndWVzdCBhZGRyZXNzLiBJZiB0aGUg bWFwcGluZyBpcyBkdW1teSB0aGlzIGNhbGwgd2lsbAo+IG1ha2UgaXQgcmVhbC4KPiAKPiBUaGlz IGZ1bmN0aW9uIG1ha2VzIHVzZSBvZiBhIG5ldyB4ZW5mb3JlaWdubWVtb3J5X21hcDIoKSBjYWxs Cj4gd2l0aCBhbiBleHRlbmRlZCBpbnRlcmZhY2UgdGhhdCB3YXMgcmVjZW50bHkgaW50cm9kdWNl ZCBpbgo+IGxpYnhlbmZvcmVpZ25tZW1vcnkgWzFdLgo+IAo+IFsxXSBodHRwczovL3d3dy5tYWls LWFyY2hpdmUuY29tL3hlbi1kZXZlbEBsaXN0cy54ZW4ub3JnL21zZzExMzAwNy5odG1sCj4gCj4g U2lnbmVkLW9mZi1ieTogSWdvciBEcnV6aGluaW4gPGlnb3IuZHJ1emhpbmluQGNpdHJpeC5jb20+ CgpMR1RNCgpSZXZpZXdlZC1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNv bT4KCj4gLS0tCj4gIGNvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgIHwgMTggKysrKysrKysr Cj4gIGh3L2kzODYveGVuL3hlbi1tYXBjYWNoZS5jICAgIHwgODUKPiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tCj4gIGluY2x1ZGUvaHcveGVuL3hlbl9jb21tb24u aCAgIHwgMTQgKysrKysrKwo+ICBpbmNsdWRlL3N5c2VtdS94ZW4tbWFwY2FjaGUuaCB8IDExICsr KysrLQo+ICA0IGZpbGVzIGNoYW5nZWQsIDExOSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygt KQo+IAo+IGRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKPiBpbmRleCBjNTcxYWQx Li5hZDYxNTZiIDEwMDc1NQo+IC0tLSBhL2NvbmZpZ3VyZQo+ICsrKyBiL2NvbmZpZ3VyZQo+IEBA IC0yMDIxLDYgKzIwMjEsMjQgQEAgRU9GCj4gICAgICAjIFhlbiB1bnN0YWJsZQo+ICAgICAgZWxp Zgo+ICAgICAgICAgIGNhdCA+ICRUTVBDIDw8RU9GICYmCj4gKyN1bmRlZiBYQ19XQU5UX0NPTVBB VF9NQVBfRk9SRUlHTl9BUEkKPiArI2luY2x1ZGUgPHhlbmZvcmVpZ25tZW1vcnkuaD4KPiAraW50 IG1haW4odm9pZCkgewo+ICsgIHhlbmZvcmVpZ25tZW1vcnlfaGFuZGxlICp4Zm1lbTsKPiArCj4g KyAgeGZtZW0gPSB4ZW5mb3JlaWdubWVtb3J5X29wZW4oMCwgMCk7Cj4gKyAgeGVuZm9yZWlnbm1l bW9yeV9tYXAyKHhmbWVtLCAwLCAwLCAwLCAwLCAwLCAwLCAwKTsKPiArCj4gKyAgcmV0dXJuIDA7 Cj4gK30KPiArRU9GCj4gKyAgICAgICAgY29tcGlsZV9wcm9nICIiICIkeGVuX2xpYnMgLWx4ZW5k ZXZpY2Vtb2RlbCAkeGVuX3N0YWJsZV9saWJzIgo+ICsgICAgICB0aGVuCj4gKyAgICAgIHhlbl9z dGFibGVfbGlicz0iLWx4ZW5kZXZpY2Vtb2RlbCAkeGVuX3N0YWJsZV9saWJzIgo+ICsgICAgICB4 ZW5fY3RybF92ZXJzaW9uPTQxMDAwCj4gKyAgICAgIHhlbj15ZXMKPiArICAgIGVsaWYKPiArICAg ICAgICBjYXQgPiAkVE1QQyA8PEVPRiAmJgo+ICAjdW5kZWYgWENfV0FOVF9DT01QQVRfREVWSUNF TU9ERUxfQVBJCj4gICNkZWZpbmUgX19YRU5fVE9PTFNfXwo+ICAjaW5jbHVkZSA8eGVuZGV2aWNl bW9kZWwuaD4KPiBkaWZmIC0tZ2l0IGEvaHcvaTM4Ni94ZW4veGVuLW1hcGNhY2hlLmMgYi9ody9p Mzg2L3hlbi94ZW4tbWFwY2FjaGUuYwo+IGluZGV4IDM5Y2I1MTEuLjhiYzYzZTAgMTAwNjQ0Cj4g LS0tIGEvaHcvaTM4Ni94ZW4veGVuLW1hcGNhY2hlLmMKPiArKysgYi9ody9pMzg2L3hlbi94ZW4t bWFwY2FjaGUuYwo+IEBAIC0xNTEsNiArMTUxLDcgQEAgdm9pZCB4ZW5fbWFwX2NhY2hlX2luaXQo cGh5c19vZmZzZXRfdG9fZ2FkZHJfdCBmLAo+IHZvaWQgKm9wYXF1ZSkKPiAgfQo+IAo+ICBzdGF0 aWMgdm9pZCB4ZW5fcmVtYXBfYnVja2V0KE1hcENhY2hlRW50cnkgKmVudHJ5LAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnZhZGRyLAo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGh3YWRkciBzaXplLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh3 YWRkciBhZGRyZXNzX2luZGV4LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg ZHVtbXkpCj4gQEAgLTE2Nyw3ICsxNjgsOSBAQCBzdGF0aWMgdm9pZCB4ZW5fcmVtYXBfYnVja2V0 KE1hcENhY2hlRW50cnkKPiAqZW50cnksCj4gICAgICBlcnIgPSBnX21hbGxvYzAobmJfcGZuICog c2l6ZW9mIChpbnQpKTsKPiAKPiAgICAgIGlmIChlbnRyeS0+dmFkZHJfYmFzZSAhPSBOVUxMKSB7 Cj4gLSAgICAgICAgcmFtX2Jsb2NrX25vdGlmeV9yZW1vdmUoZW50cnktPnZhZGRyX2Jhc2UsIGVu dHJ5LT5zaXplKTsKPiArICAgICAgICBpZiAoIShlbnRyeS0+ZmxhZ3MgJiBYRU5fTUFQQ0FDSEVf RU5UUllfRFVNTVkpKSB7Cj4gKyAgICAgICAgICAgIHJhbV9ibG9ja19ub3RpZnlfcmVtb3ZlKGVu dHJ5LT52YWRkcl9iYXNlLCBlbnRyeS0+c2l6ZSk7Cj4gKyAgICAgICAgfQo+ICAgICAgICAgIGlm IChtdW5tYXAoZW50cnktPnZhZGRyX2Jhc2UsIGVudHJ5LT5zaXplKSAhPSAwKSB7Cj4gICAgICAg ICAgICAgIHBlcnJvcigidW5tYXAgZmFpbHMiKTsKPiAgICAgICAgICAgICAgZXhpdCgtMSk7Cj4g QEAgLTE4MSwxMSArMTg0LDExIEBAIHN0YXRpYyB2b2lkIHhlbl9yZW1hcF9idWNrZXQoTWFwQ2Fj aGVFbnRyeQo+ICplbnRyeSwKPiAgICAgIH0KPiAKPiAgICAgIGlmICghZHVtbXkpIHsKPiAtICAg ICAgICB2YWRkcl9iYXNlID0geGVuZm9yZWlnbm1lbW9yeV9tYXAoeGVuX2ZtZW0sIHhlbl9kb21p ZCwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1RfUkVB RCB8IFBST1RfV1JJVEUsCj4gKyAgICAgICAgdmFkZHJfYmFzZSA9IHhlbmZvcmVpZ25tZW1vcnlf bWFwMih4ZW5fZm1lbSwgeGVuX2RvbWlkLAo+IHZhZGRyLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgMCwKPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5iX3BmbiwgcGZucywgZXJy KTsKPiAgICAgICAgICBpZiAodmFkZHJfYmFzZSA9PSBOVUxMKSB7Cj4gLSAgICAgICAgICAgIHBl cnJvcigieGVuZm9yZWlnbm1lbW9yeV9tYXAiKTsKPiArICAgICAgICAgICAgcGVycm9yKCJ4ZW5m b3JlaWdubWVtb3J5X21hcDIiKTsKPiAgICAgICAgICAgICAgZXhpdCgtMSk7Cj4gICAgICAgICAg fQo+ICAgICAgfSBlbHNlIHsKPiBAQCAtMTkzLDcgKzE5Niw3IEBAIHN0YXRpYyB2b2lkIHhlbl9y ZW1hcF9idWNrZXQoTWFwQ2FjaGVFbnRyeQo+ICplbnRyeSwKPiAgICAgICAgICAgKiBXZSBjcmVh dGUgZHVtbXkgbWFwcGluZ3Mgd2hlcmUgd2UgYXJlIHVuYWJsZSB0byBjcmVhdGUgYSBmb3JlaWdu Cj4gICAgICAgICAgICogbWFwcGluZyBpbW1lZGlhdGVseSBkdWUgdG8gY2VydGFpbiBjaXJjdW1z dGFuY2VzIChpLmUuIG9uIHJlc3VtZQo+IG5vdykKPiAgICAgICAgICAgKi8KPiAtICAgICAgICB2 YWRkcl9iYXNlID0gbW1hcChOVUxMLCBzaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAo+ICsg ICAgICAgIHZhZGRyX2Jhc2UgPSBtbWFwKHZhZGRyLCBzaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dS SVRFLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BUF9BTk9OIHwgTUFQX1NIQVJFRCwg LTEsIDApOwo+ICAgICAgICAgIGlmICh2YWRkcl9iYXNlID09IE5VTEwpIHsKPiAgICAgICAgICAg ICAgcGVycm9yKCJtbWFwIik7Cj4gQEAgLTIwMSw2ICsyMDQsMTAgQEAgc3RhdGljIHZvaWQgeGVu X3JlbWFwX2J1Y2tldChNYXBDYWNoZUVudHJ5Cj4gKmVudHJ5LAo+ICAgICAgICAgIH0KPiAgICAg IH0KPiAKPiArICAgIGlmICghKGVudHJ5LT5mbGFncyAmIFhFTl9NQVBDQUNIRV9FTlRSWV9EVU1N WSkpIHsKPiArICAgICAgICByYW1fYmxvY2tfbm90aWZ5X2FkZCh2YWRkcl9iYXNlLCBzaXplKTsK PiArICAgIH0KPiArCj4gICAgICBlbnRyeS0+dmFkZHJfYmFzZSA9IHZhZGRyX2Jhc2U7Cj4gICAg ICBlbnRyeS0+cGFkZHJfaW5kZXggPSBhZGRyZXNzX2luZGV4Owo+ICAgICAgZW50cnktPnNpemUg PSBzaXplOwo+IEBAIC0yMTMsNyArMjIwLDYgQEAgc3RhdGljIHZvaWQgeGVuX3JlbWFwX2J1Y2tl dChNYXBDYWNoZUVudHJ5Cj4gKmVudHJ5LAo+ICAgICAgICAgIGVudHJ5LT5mbGFncyAmPSB+KFhF Tl9NQVBDQUNIRV9FTlRSWV9EVU1NWSk7Cj4gICAgICB9Cj4gCj4gLSAgICByYW1fYmxvY2tfbm90 aWZ5X2FkZChlbnRyeS0+dmFkZHJfYmFzZSwgZW50cnktPnNpemUpOwo+ICAgICAgYml0bWFwX3pl cm8oZW50cnktPnZhbGlkX21hcHBpbmcsIG5iX3Bmbik7Cj4gICAgICBmb3IgKGkgPSAwOyBpIDwg bmJfcGZuOyBpKyspIHsKPiAgICAgICAgICBpZiAoIWVycltpXSkgewo+IEBAIC0yODYsMTQgKzI5 MiwxNCBAQCB0cnlhZ2FpbjoKPiAgICAgIGlmICghZW50cnkpIHsKPiAgICAgICAgICBlbnRyeSA9 IGdfbWFsbG9jMChzaXplb2YgKE1hcENhY2hlRW50cnkpKTsKPiAgICAgICAgICBwZW50cnktPm5l eHQgPSBlbnRyeTsKPiAtICAgICAgICB4ZW5fcmVtYXBfYnVja2V0KGVudHJ5LCBjYWNoZV9zaXpl LCBhZGRyZXNzX2luZGV4LCBkdW1teSk7Cj4gKyAgICAgICAgeGVuX3JlbWFwX2J1Y2tldChlbnRy eSwgTlVMTCwgY2FjaGVfc2l6ZSwgYWRkcmVzc19pbmRleCwgZHVtbXkpOwo+ICAgICAgfSBlbHNl IGlmICghZW50cnktPmxvY2spIHsKPiAgICAgICAgICBpZiAoIWVudHJ5LT52YWRkcl9iYXNlIHx8 IGVudHJ5LT5wYWRkcl9pbmRleCAhPSBhZGRyZXNzX2luZGV4IHx8Cj4gICAgICAgICAgICAgICAg ICBlbnRyeS0+c2l6ZSAhPSBjYWNoZV9zaXplIHx8Cj4gICAgICAgICAgICAgICAgICAhdGVzdF9i aXRzKGFkZHJlc3Nfb2Zmc2V0ID4+IFhDX1BBR0VfU0hJRlQsCj4gICAgICAgICAgICAgICAgICAg ICAgdGVzdF9iaXRfc2l6ZSA+PiBYQ19QQUdFX1NISUZULAo+ICAgICAgICAgICAgICAgICAgICAg IGVudHJ5LT52YWxpZF9tYXBwaW5nKSkgewo+IC0gICAgICAgICAgICB4ZW5fcmVtYXBfYnVja2V0 KGVudHJ5LCBjYWNoZV9zaXplLCBhZGRyZXNzX2luZGV4LCBkdW1teSk7Cj4gKyAgICAgICAgICAg IHhlbl9yZW1hcF9idWNrZXQoZW50cnksIE5VTEwsIGNhY2hlX3NpemUsIGFkZHJlc3NfaW5kZXgs Cj4gZHVtbXkpOwo+ICAgICAgICAgIH0KPiAgICAgIH0KPiAKPiBAQCAtNDkwLDMgKzQ5Niw2NiBA QCB2b2lkIHhlbl9pbnZhbGlkYXRlX21hcF9jYWNoZSh2b2lkKQo+IAo+ICAgICAgbWFwY2FjaGVf dW5sb2NrKCk7Cj4gIH0KPiArCj4gK3N0YXRpYyB1aW50OF90ICp4ZW5fcmVwbGFjZV9jYWNoZV9l bnRyeV91bmxvY2tlZChod2FkZHIKPiBvbGRfcGh5c19hZGRyLAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHdhZGRyIG5ld19waHlzX2FkZHIsCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBod2FkZHIg c2l6ZSkKPiArewo+ICsgICAgTWFwQ2FjaGVFbnRyeSAqZW50cnk7Cj4gKyAgICBod2FkZHIgYWRk cmVzc19pbmRleCwgYWRkcmVzc19vZmZzZXQ7Cj4gKyAgICBod2FkZHIgdGVzdF9iaXRfc2l6ZSwg Y2FjaGVfc2l6ZSA9IHNpemU7Cj4gKwo+ICsgICAgYWRkcmVzc19pbmRleCAgPSBvbGRfcGh5c19h ZGRyID4+IE1DQUNIRV9CVUNLRVRfU0hJRlQ7Cj4gKyAgICBhZGRyZXNzX29mZnNldCA9IG9sZF9w aHlzX2FkZHIgJiAoTUNBQ0hFX0JVQ0tFVF9TSVpFIC0gMSk7Cj4gKwo+ICsgICAgYXNzZXJ0KHNp emUpOwo+ICsgICAgLyogdGVzdF9iaXRfc2l6ZSBpcyBhbHdheXMgYSBtdWx0aXBsZSBvZiBYQ19Q QUdFX1NJWkUgKi8KPiArICAgIHRlc3RfYml0X3NpemUgPSBzaXplICsgKG9sZF9waHlzX2FkZHIg JiAoWENfUEFHRV9TSVpFIC0gMSkpOwo+ICsgICAgaWYgKHRlc3RfYml0X3NpemUgJSBYQ19QQUdF X1NJWkUpIHsKPiArICAgICAgICB0ZXN0X2JpdF9zaXplICs9IFhDX1BBR0VfU0laRSAtICh0ZXN0 X2JpdF9zaXplICUgWENfUEFHRV9TSVpFKTsKPiArICAgIH0KPiArICAgIGNhY2hlX3NpemUgPSBz aXplICsgYWRkcmVzc19vZmZzZXQ7Cj4gKyAgICBpZiAoY2FjaGVfc2l6ZSAlIE1DQUNIRV9CVUNL RVRfU0laRSkgewo+ICsgICAgICAgIGNhY2hlX3NpemUgKz0gTUNBQ0hFX0JVQ0tFVF9TSVpFIC0g KGNhY2hlX3NpemUgJQo+IE1DQUNIRV9CVUNLRVRfU0laRSk7Cj4gKyAgICB9Cj4gKwo+ICsgICAg ZW50cnkgPSAmbWFwY2FjaGUtPmVudHJ5W2FkZHJlc3NfaW5kZXggJSBtYXBjYWNoZS0+bnJfYnVj a2V0c107Cj4gKyAgICB3aGlsZSAoZW50cnkgJiYgIShlbnRyeS0+cGFkZHJfaW5kZXggPT0gYWRk cmVzc19pbmRleCAmJgo+ICsgICAgICAgICAgICAgICAgICAgICAgZW50cnktPnNpemUgPT0gY2Fj aGVfc2l6ZSkpIHsKPiArICAgICAgICBlbnRyeSA9IGVudHJ5LT5uZXh0Owo+ICsgICAgfQo+ICsg ICAgaWYgKCFlbnRyeSkgewo+ICsgICAgICAgIERQUklOVEYoIlRyeWluZyB0byB1cGRhdGUgYW4g ZW50cnkgZm9yICVseCAiIFwKPiArICAgICAgICAgICAgICAgICJ0aGF0IGlzIG5vdCBpbiB0aGUg bWFwY2FjaGUhXG4iLCBvbGRfcGh5c19hZGRyKTsKPiArICAgICAgICByZXR1cm4gTlVMTDsKPiAr ICAgIH0KPiArCj4gKyAgICBhZGRyZXNzX2luZGV4ICA9IG5ld19waHlzX2FkZHIgPj4gTUNBQ0hF X0JVQ0tFVF9TSElGVDsKPiArICAgIGFkZHJlc3Nfb2Zmc2V0ID0gbmV3X3BoeXNfYWRkciAmIChN Q0FDSEVfQlVDS0VUX1NJWkUgLSAxKTsKPiArCj4gKyAgICBmcHJpbnRmKHN0ZGVyciwgIlJlcGxh Y2luZyBhIGR1bW15IG1hcGNhY2hlIGVudHJ5IGZvciAlbHggd2l0aCAlbHhcbiIsCj4gKyAgICAg ICAgICAgIG9sZF9waHlzX2FkZHIsIG5ld19waHlzX2FkZHIpOwo+ICsKPiArICAgIHhlbl9yZW1h cF9idWNrZXQoZW50cnksIGVudHJ5LT52YWRkcl9iYXNlLAo+ICsgICAgICAgICAgICAgICAgICAg ICBjYWNoZV9zaXplLCBhZGRyZXNzX2luZGV4LCBmYWxzZSk7Cj4gKyAgICBpZighdGVzdF9iaXRz KGFkZHJlc3Nfb2Zmc2V0ID4+IFhDX1BBR0VfU0hJRlQsCj4gKyAgICAgICAgICAgICAgICB0ZXN0 X2JpdF9zaXplID4+IFhDX1BBR0VfU0hJRlQsCj4gKyAgICAgICAgICAgICAgICBlbnRyeS0+dmFs aWRfbWFwcGluZykpIHsKPiArICAgICAgICBEUFJJTlRGKCJVbmFibGUgdG8gdXBkYXRlIGEgbWFw Y2FjaGUgZW50cnkgZm9yICVseCFcbiIsCj4gb2xkX3BoeXNfYWRkcik7Cj4gKyAgICAgICAgcmV0 dXJuIE5VTEw7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIGVudHJ5LT52YWRkcl9iYXNlICsg YWRkcmVzc19vZmZzZXQ7Cj4gK30KPiArCj4gK3VpbnQ4X3QgKnhlbl9yZXBsYWNlX2NhY2hlX2Vu dHJ5KGh3YWRkciBvbGRfcGh5c19hZGRyLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBod2FkZHIgbmV3X3BoeXNfYWRkciwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaHdhZGRyIHNpemUpCj4gK3sKPiArICAgIHVpbnQ4X3QgKnA7Cj4gKwo+ICsgICAgbWFw Y2FjaGVfbG9jaygpOwo+ICsgICAgcCA9IHhlbl9yZXBsYWNlX2NhY2hlX2VudHJ5X3VubG9ja2Vk KG9sZF9waHlzX2FkZHIsCj4gbmV3X3BoeXNfYWRkciwgc2l6ZSk7Cj4gKyAgICBtYXBjYWNoZV91 bmxvY2soKTsKPiArICAgIHJldHVybiBwOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvaHcv eGVuL3hlbl9jb21tb24uaAo+IGIvaW5jbHVkZS9ody94ZW4veGVuX2NvbW1vbi5oCj4gaW5kZXgg ZTAwZGRkNy4uZTI4ZWQ0OCAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2h3L3hlbi94ZW5fY29tbW9u LmgKPiArKysgYi9pbmNsdWRlL2h3L3hlbi94ZW5fY29tbW9uLmgKPiBAQCAtNzgsNiArNzgsMjAg QEAgc3RhdGljIGlubGluZSB2b2lkCj4gKnhlbmZvcmVpZ25tZW1vcnlfbWFwKHhjX2ludGVyZmFj ZSAqaCwgdWludDMyX3QgZG9tLAo+IAo+ICBleHRlcm4geGVuZm9yZWlnbm1lbW9yeV9oYW5kbGUg Knhlbl9mbWVtOwo+IAo+ICsjaWYgQ09ORklHX1hFTl9DVFJMX0lOVEVSRkFDRV9WRVJTSU9OIDwg NDEwMDAKPiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCAqeGVuZm9yZWlnbm1lbW9yeV9tYXAyKHhl bmZvcmVpZ25tZW1vcnlfaGFuZGxlCj4gKmgsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQzMl90IGRvbSwgdm9pZCAqYWRkciwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHByb3QsIGludCBmbGFncywgc2l6ZV90 IHBhZ2VzLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCB4ZW5fcGZuX3QgYXJyWy8qcGFnZXMqL10sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBlcnJbLypwYWdlcyovXSkKPiArewo+ICsgICAgYXNzZXJ0KGFk ZHIgPT0gTlVMTCAmJiBmbGFncyA9PSAwKTsKPiArICAgIHJldHVybiB4ZW5mb3JlaWdubWVtb3J5 X21hcChoLCBkb20sIHByb3QsIHBhZ2VzLCBhcnIsIGVycik7Cj4gK30KPiArCj4gKyNlbmRpZgo+ ICsKPiAgI2lmIENPTkZJR19YRU5fQ1RSTF9JTlRFUkZBQ0VfVkVSU0lPTiA8IDQwOTAwCj4gCj4g IHR5cGVkZWYgeGNfaW50ZXJmYWNlIHhlbmRldmljZW1vZGVsX2hhbmRsZTsKPiBkaWZmIC0tZ2l0 IGEvaW5jbHVkZS9zeXNlbXUveGVuLW1hcGNhY2hlLmggYi9pbmNsdWRlL3N5c2VtdS94ZW4tCj4g bWFwY2FjaGUuaAo+IGluZGV4IDAxZGFhYWQuLmIzODk2MmMgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVk ZS9zeXNlbXUveGVuLW1hcGNhY2hlLmgKPiArKysgYi9pbmNsdWRlL3N5c2VtdS94ZW4tbWFwY2Fj aGUuaAo+IEBAIC0yMSw3ICsyMSw5IEBAIHVpbnQ4X3QgKnhlbl9tYXBfY2FjaGUoaHdhZGRyIHBo eXNfYWRkciwgaHdhZGRyCj4gc2l6ZSwKPiAgcmFtX2FkZHJfdCB4ZW5fcmFtX2FkZHJfZnJvbV9t YXBjYWNoZSh2b2lkICpwdHIpOwo+ICB2b2lkIHhlbl9pbnZhbGlkYXRlX21hcF9jYWNoZV9lbnRy eSh1aW50OF90ICpidWZmZXIpOwo+ICB2b2lkIHhlbl9pbnZhbGlkYXRlX21hcF9jYWNoZSh2b2lk KTsKPiAtCj4gK3VpbnQ4X3QgKnhlbl9yZXBsYWNlX2NhY2hlX2VudHJ5KGh3YWRkciBvbGRfcGh5 c19hZGRyLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBod2FkZHIgbmV3X3Bo eXNfYWRkciwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHdhZGRyIHNpemUp Owo+ICAjZWxzZQo+IAo+ICBzdGF0aWMgaW5saW5lIHZvaWQgeGVuX21hcF9jYWNoZV9pbml0KHBo eXNfb2Zmc2V0X3RvX2dhZGRyX3QgZiwKPiBAQCAtNTAsNiArNTIsMTMgQEAgc3RhdGljIGlubGlu ZSB2b2lkIHhlbl9pbnZhbGlkYXRlX21hcF9jYWNoZSh2b2lkKQo+ICB7Cj4gIH0KPiAKPiArdWlu dDhfdCAqeGVuX3JlcGxhY2VfY2FjaGVfZW50cnkoaHdhZGRyIG9sZF9waHlzX2FkZHIsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh3YWRkciBuZXdfcGh5c19hZGRyLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBod2FkZHIgc2l6ZSkKPiArewo+ICsgICAg YWJvcnQoKTsKPiArfQo+ICsKPiAgI2VuZGlmCj4gCj4gICNlbmRpZiAvKiBYRU5fTUFQQ0FDSEVf SCAqLwo+IC0tCj4gMi43LjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3Jn Cmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK