From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Vrabel Subject: Re: [PATCHv8] x86/ept: defer the invalidation until the p2m lock is released Date: Tue, 19 Apr 2016 08:18:14 +0100 Message-ID: <5715DBB6.7010407@cantab.net> References: <1460477983-6277-1-git-send-email-david.vrabel@citrix.com> <1460477983-6277-2-git-send-email-david.vrabel@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1asPvO-0008EP-CW for xen-devel@lists.xenproject.org; Tue, 19 Apr 2016 07:18:18 +0000 In-Reply-To: <1460477983-6277-2-git-send-email-david.vrabel@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: David Vrabel , xen-devel@lists.xenproject.org Cc: Kevin Tian , Wei Liu , Jun Nakajima , George Dunlap , Andrew Cooper , Jan Beulich List-Id: xen-devel@lists.xenproject.org SGkgV2VpLAoKVGhpcyBwYXRjaCBoYXMgYWxsIHRoZSByZXF1aXJlZCBhY2tzIG5vdy4gIENhbiB5 b3UgY29uc2lkZXIgaXQgZm9yIDQuNz8KCkl0J3MgYSBzaWduZmljYW50IHNjYWxhYmlsaXR5IGlt cHJvdmVtZW50IChzZWUgdGhlIGNvdmVyIGxldHRlciBmb3IKZGV0YWlscykuCgp2NyBoYXMgYmVl biBpbiBYZW5TZXJ2ZXIncyB1cGNvbWluZyByZWxlYXNlIGZvciBhIHdoaWxlIG5vdyBzbyBpdCBo YXMKYmVlbiB0ZXN0ZWQgd2l0aCBtYW55IGd1ZXN0cyBhbmQgbWFueSBsaWZlIGN5Y2xlIG9wZXJh dGlvbnMsIGluY2x1ZGluZwpwbGVudHkgb2YgdXNlcyBvZiBQb0QuCgpUaGFua3MuCgpEYXZpZAoK T24gMTIvMDQvMjAxNiAxNzoxOSwgRGF2aWQgVnJhYmVsIHdyb3RlOgo+IEhvbGRpbmcgdGhlIHAy bSBsb2NrIHdoaWxlIGNhbGxpbmcgZXB0X3N5bmNfZG9tYWluKCkgaXMgdmVyeSBleHBlbnNpdmUK PiBzaW5jZSBpdCBkb2VzIGFuIG9uX3NlbGVjdGVkX2NwdXMoKSBjYWxsLiAgSVBJcyBvbiBtYW55 IHNvY2tldAo+IG1hY2hpbmVzIGNhbiBiZSB2ZXJ5IHNsb3cgYW5kIG9uX3NlbGVjdGVkX2NwdXMo KSBpcyBzZXJpYWxpemVkLgo+IAo+IEl0IGlzIHNhZmUgdG8gZGVmZXIgdGhlIGludmFsaWRhdGUg dW50aWwgdGhlIHAybSBsb2NrIGlzIHJlbGVhc2VkCj4gZXhjZXB0IGZvciB0d28gY2FzZXM6Cj4g Cj4gMS4gV2hlbiBmcmVlaW5nIGEgcGFnZSB0YWJsZSBwYWdlIChzaW5jZSBwYXJ0aWFsIHRyYW5z bGF0aW9ucyBtYXkgYmUKPiAgICBjYWNoZWQpLgo+IDIuIFdoZW4gcmVjbGFpbWluZyBhIHplcm8g cGFnZSBhcyBwYXJ0IG9mIFBvRC4KPiAKPiBGb3IgdGhlc2UgY2FzZXMsIGFkZCBwMm1fdGxiX2Zs dXNoX3N5bmMoKSBjYWxscyB3aGljaCB3aWxsIGltbWVkaWF0ZWx5Cj4gcGVyZm9ybSB0aGUgaW52 YWxpZGF0ZSBiZWZvcmUgdGhlIHBhZ2UgaXMgZnJlZWQgb3IgcmVjbGFpbWVkLgo+IAo+IFNpZ25l ZC1vZmYtYnk6IERhdmlkIFZyYWJlbCA8ZGF2aWQudnJhYmVsQGNpdHJpeC5jb20+Cj4gLS0tCj4g djg6Cj4gLSBwMm1fdGxiX2ZsdXNoX2FuZF91bmxvY2soKSAtPiBwMm1fdW5sb2NrX2FuZF90bGJf Zmx1c2goKS4KPiAtIHAybV91bmxvY2tfYW5kX3RsYl9mbHVzaCgpIG5vdyBkb2VzIHRoZSB1bmxv Y2sgYW5kIHRoZSBwMm0KPiAgIGltcGxlbWVudGF0aW9uIG5lZWQgb25seSBwcm92aWRlIGEgdGxi X2ZsdXNoKCkgb3AuCj4gCj4gdjc6Cj4gLSBBZGQgc29tZSBtb3JlIHAybV90bGJfZmx1c2hfc3lu YygpIGNhbGxzIHRvIFBvRC4KPiAtIE1vcmUgY29tbWVudHMuCj4gCj4gdjY6Cj4gLSBNb3ZlIHAy bV90bGJfZmx1c2hfc3luYygpIHRvIGltbWVkaWF0ZWx5IGJlZm9yZSBwMm1fZnJlZV9wdHAoKS4g IEl0IHdhcwo+ICAgY2FsbGVkIGFsbCB0aGUgdGltZSBvdGhlcndpc2UuCj4gCj4gdjU6Cj4gLSBh ZGQgcDJtX3RsYl9mbHVzaF9zeW5jKCkgYW5kIGNhbGwgaXQgYmVmb3JlIGZyZWVpbmcgcGdhZSB0 YWJsZSBwYWdlcwo+ICAgYW5kIHJlY2xhaW1pbmcgemVyb2VkIHBvZCBwYWdlcy4KPiAKPiB2MjoK PiAtIHVzZSBwZXItcDJtIGxpc3QgZm9yIGRlZmVycmVkIHBhZ2VzLgo+IC0gdXBkYXRlIHN5bmNl ZF9tYXNrIHdoaWxlIGhvbGRpbmcgd3JpdGUgbG9jay4KPiAtLS0KPiAgeGVuL2FyY2gveDg2L21t L21tLWxvY2tzLmggfCAyMyArKysrKysrKysrKysrKystLS0tLS0tLQo+ICB4ZW4vYXJjaC94ODYv bW0vcDJtLWVwdC5jICB8IDM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LQo+ICB4ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5jICB8ICA0ICsrKysKPiAgeGVuL2FyY2gveDg2 L21tL3AybS5jICAgICAgfCAyNiArKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICB4ZW4vaW5j bHVkZS9hc20teDg2L3AybS5oICB8IDIyICsrKysrKysrKysrKysrKysrKysrKysKPiAgNSBmaWxl cyBjaGFuZ2VkLCA5OCBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L21tL21tLWxvY2tzLmggYi94ZW4vYXJjaC94ODYvbW0vbW0tbG9j a3MuaAo+IGluZGV4IDhhNDA5ODYuLjA4NmM4YmIgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2 L21tL21tLWxvY2tzLmgKPiArKysgYi94ZW4vYXJjaC94ODYvbW0vbW0tbG9ja3MuaAo+IEBAIC0y NjUsMTQgKzI2NSwyMSBAQCBkZWNsYXJlX21tX2xvY2soYWx0cDJtbGlzdCkKPiAgICovCj4gIAo+ ICBkZWNsYXJlX21tX3J3bG9jayhhbHRwMm0pOwo+IC0jZGVmaW5lIHAybV9sb2NrKHApICAgICAg ICAgICAgICAgICAgICAgICAgIFwKPiAteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCj4gLSAgICBpZiAoIHAybV9pc19hbHRwMm0ocCkgKSAgICAgICAgICAgICAg ICAgXAo+IC0gICAgICAgIG1tX3dyaXRlX2xvY2soYWx0cDJtLCAmKHApLT5sb2NrKTsgIFwKPiAt ICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gLSAgICAgICAg bW1fd3JpdGVfbG9jayhwMm0sICYocCktPmxvY2spOyAgICAgXAo+IC19Cj4gLSNkZWZpbmUgcDJt X3VubG9jayhwKSAgICAgICAgIG1tX3dyaXRlX3VubG9jaygmKHApLT5sb2NrKTsKPiArI2RlZmlu ZSBwMm1fbG9jayhwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgZG8geyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgaWYgKCBw Mm1faXNfYWx0cDJtKHApICkgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgbW1fd3Jp dGVfbG9jayhhbHRwMm0sICYocCktPmxvY2spOyAgXAo+ICsgICAgICAgIGVsc2UgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgIG1tX3dyaXRlX2xvY2so cDJtLCAmKHApLT5sb2NrKTsgICAgIFwKPiArICAgICAgICAocCktPmRlZmVyX2ZsdXNoKys7ICAg ICAgICAgICAgICAgICAgICAgXAo+ICsgICAgfSB3aGlsZSAoMCkKPiArI2RlZmluZSBwMm1fdW5s b2NrKHApICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgZG8geyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgaWYgKCAtLShwKS0+ZGVm ZXJfZmx1c2ggPT0gMCApICAgICAgICAgIFwKPiArICAgICAgICAgICAgcDJtX3VubG9ja19hbmRf dGxiX2ZsdXNoKHApOyAgICAgICAgXAo+ICsgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgIG1tX3dyaXRlX3VubG9jaygmKHApLT5s b2NrKTsgICAgICAgIFwKPiArICAgIH0gd2hpbGUgKDApCj4gICNkZWZpbmUgZ2ZuX2xvY2socCxn LG8pICAgICAgIHAybV9sb2NrKHApCj4gICNkZWZpbmUgZ2ZuX3VubG9jayhwLGcsbykgICAgIHAy bV91bmxvY2socCkKPiAgI2RlZmluZSBwMm1fcmVhZF9sb2NrKHApICAgICAgbW1fcmVhZF9sb2Nr KHAybSwgJihwKS0+bG9jaykKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3AybS1lcHQu YyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMKPiBpbmRleCAzY2I2ODY4Li4xZWQ1YjQ3IDEw MDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMKPiArKysgYi94ZW4vYXJjaC94 ODYvbW0vcDJtLWVwdC5jCj4gQEAgLTI2NCw2ICsyNjQsNyBAQCBzdGF0aWMgdm9pZCBlcHRfZnJl ZV9lbnRyeShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCBlcHRfZW50cnlfdCAqZXB0X2VudHJ5LCBp bnQgbAo+ICAgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKGVwdGUpOwo+ICAgICAgfQo+ICAgICAg Cj4gKyAgICBwMm1fdGxiX2ZsdXNoX3N5bmMocDJtKTsKPiAgICAgIHAybV9mcmVlX3B0cChwMm0s IG1mbl90b19wYWdlKGVwdF9lbnRyeS0+bWZuKSk7Cj4gIH0KPiAgCj4gQEAgLTEwOTYsMTUgKzEw OTcsMTAgQEAgc3RhdGljIHZvaWQgX19lcHRfc3luY19kb21haW4odm9pZCAqaW5mbykKPiAgICAg ICAqLwo+ICB9Cj4gIAo+IC12b2lkIGVwdF9zeW5jX2RvbWFpbihzdHJ1Y3QgcDJtX2RvbWFpbiAq cDJtKQo+ICtzdGF0aWMgdm9pZCBlcHRfc3luY19kb21haW5fcHJlcGFyZShzdHJ1Y3QgcDJtX2Rv bWFpbiAqcDJtKQo+ICB7Cj4gICAgICBzdHJ1Y3QgZG9tYWluICpkID0gcDJtLT5kb21haW47Cj4g ICAgICBzdHJ1Y3QgZXB0X2RhdGEgKmVwdCA9ICZwMm0tPmVwdDsKPiAtICAgIC8qIE9ubHkgaWYg dXNpbmcgRVBUIGFuZCB0aGlzIGRvbWFpbiBoYXMgc29tZSBWQ1BVcyB0byBkaXJ0eS4gKi8KPiAt ICAgIGlmICggIXBhZ2luZ19tb2RlX2hhcChkKSB8fCAhZC0+dmNwdSB8fCAhZC0+dmNwdVswXSAp Cj4gLSAgICAgICAgcmV0dXJuOwo+IC0KPiAtICAgIEFTU0VSVChsb2NhbF9pcnFfaXNfZW5hYmxl ZCgpKTsKPiAgCj4gICAgICBpZiAoIG5lc3RlZGh2bV9lbmFibGVkKGQpICYmICFwMm1faXNfbmVz dGVkcDJtKHAybSkgKQo+ICAgICAgICAgIHAybV9mbHVzaF9uZXN0ZWRwMm0oZCk7Cj4gQEAgLTEx MTcsOSArMTExMywzNSBAQCB2b2lkIGVwdF9zeW5jX2RvbWFpbihzdHJ1Y3QgcDJtX2RvbWFpbiAq cDJtKQo+ICAgICAgICogICAgb2YgYW4gRVA0VEEgcmV1c2UgaXMgc3RpbGwgbmVlZGVkLgo+ICAg ICAgICovCj4gICAgICBjcHVtYXNrX3NldGFsbChlcHQtPmludmFsaWRhdGUpOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCBlcHRfc3luY19kb21haW5fbWFzayhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJt LCBjb25zdCBjcHVtYXNrX3QgKm1hc2spCj4gK3sKPiArICAgIG9uX3NlbGVjdGVkX2NwdXMobWFz aywgX19lcHRfc3luY19kb21haW4sIHAybSwgMSk7Cj4gK30KPiArCj4gK3ZvaWQgZXB0X3N5bmNf ZG9tYWluKHN0cnVjdCBwMm1fZG9tYWluICpwMm0pCj4gK3sKPiArICAgIHN0cnVjdCBkb21haW4g KmQgPSBwMm0tPmRvbWFpbjsKPiAgCj4gLSAgICBvbl9zZWxlY3RlZF9jcHVzKGQtPmRvbWFpbl9k aXJ0eV9jcHVtYXNrLAo+IC0gICAgICAgICAgICAgICAgICAgICBfX2VwdF9zeW5jX2RvbWFpbiwg cDJtLCAxKTsKPiArICAgIC8qIE9ubHkgaWYgdXNpbmcgRVBUIGFuZCB0aGlzIGRvbWFpbiBoYXMg c29tZSBWQ1BVcyB0byBkaXJ0eS4gKi8KPiArICAgIGlmICggIXBhZ2luZ19tb2RlX2hhcChkKSB8 fCAhZC0+dmNwdSB8fCAhZC0+dmNwdVswXSApCj4gKyAgICAgICAgcmV0dXJuOwo+ICsKPiArICAg IGVwdF9zeW5jX2RvbWFpbl9wcmVwYXJlKHAybSk7Cj4gKwo+ICsgICAgaWYgKCBwMm0tPmRlZmVy X2ZsdXNoICkKPiArICAgIHsKPiArICAgICAgICBwMm0tPm5lZWRfZmx1c2ggPSAxOwo+ICsgICAg ICAgIHJldHVybjsKPiArICAgIH0KPiArCj4gKyAgICBlcHRfc3luY19kb21haW5fbWFzayhwMm0s IGQtPmRvbWFpbl9kaXJ0eV9jcHVtYXNrKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZXB0X3Rs Yl9mbHVzaChzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtKQo+ICt7Cj4gKyAgICBlcHRfc3luY19kb21h aW5fbWFzayhwMm0sIHAybS0+ZG9tYWluLT5kb21haW5fZGlydHlfY3B1bWFzayk7Cj4gIH0KPiAg Cj4gIHN0YXRpYyB2b2lkIGVwdF9lbmFibGVfcG1sKHN0cnVjdCBwMm1fZG9tYWluICpwMm0pCj4g QEAgLTExNzAsNiArMTE5Miw3IEBAIGludCBlcHRfcDJtX2luaXQoc3RydWN0IHAybV9kb21haW4g KnAybSkKPiAgICAgIHAybS0+Y2hhbmdlX2VudHJ5X3R5cGVfcmFuZ2UgPSBlcHRfY2hhbmdlX2Vu dHJ5X3R5cGVfcmFuZ2U7Cj4gICAgICBwMm0tPm1lbW9yeV90eXBlX2NoYW5nZWQgPSBlcHRfbWVt b3J5X3R5cGVfY2hhbmdlZDsKPiAgICAgIHAybS0+YXVkaXRfcDJtID0gTlVMTDsKPiArICAgIHAy bS0+dGxiX2ZsdXNoID0gZXB0X3RsYl9mbHVzaDsKPiAgCj4gICAgICAvKiBTZXQgdGhlIG1lbW9y eSB0eXBlIHVzZWQgd2hlbiBhY2Nlc3NpbmcgRVBUIHBhZ2luZyBzdHJ1Y3R1cmVzLiAqLwo+ICAg ICAgZXB0LT5lcHRfbXQgPSBFUFRfREVGQVVMVF9NVDsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L21tL3AybS1wb2QuYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcG9kLmMKPiBpbmRleCBlYTE2 ZDNlLi4zNTgzNWQxIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcG9kLmMKPiAr KysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5jCj4gQEAgLTYyNiw2ICs2MjYsNyBAQCBwMm1f cG9kX2RlY3JlYXNlX3Jlc2VydmF0aW9uKHN0cnVjdCBkb21haW4gKmQsCj4gIAo+ICAgICAgICAg ICAgICBwMm1fc2V0X2VudHJ5KHAybSwgZ3BmbiArIGksIF9tZm4oSU5WQUxJRF9NRk4pLCBjdXJf b3JkZXIsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtX2ludmFsaWQsIHAybS0+ZGVm YXVsdF9hY2Nlc3MpOwo+ICsgICAgICAgICAgICBwMm1fdGxiX2ZsdXNoX3N5bmMocDJtKTsKPiAg ICAgICAgICAgICAgZm9yICggaiA9IDA7IGogPCBuOyArK2ogKQo+ICAgICAgICAgICAgICAgICAg c2V0X2dwZm5fZnJvbV9tZm4obWZuX3gobWZuKSwgSU5WQUxJRF9NMlBfRU5UUlkpOwo+ICAgICAg ICAgICAgICBwMm1fcG9kX2NhY2hlX2FkZChwMm0sIHBhZ2UsIGN1cl9vcmRlcik7Cj4gQEAgLTc1 NSw2ICs3NTYsNyBAQCBwMm1fcG9kX3plcm9fY2hlY2tfc3VwZXJwYWdlKHN0cnVjdCBwMm1fZG9t YWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuKQo+ICAgICAgLyogVHJ5IHRvIHJlbW92ZSB0aGUg cGFnZSwgcmVzdG9yaW5nIG9sZCBtYXBwaW5nIGlmIGl0IGZhaWxzLiAqLwo+ICAgICAgcDJtX3Nl dF9lbnRyeShwMm0sIGdmbiwgX21mbihJTlZBTElEX01GTiksIFBBR0VfT1JERVJfMk0sCj4gICAg ICAgICAgICAgICAgICAgIHAybV9wb3B1bGF0ZV9vbl9kZW1hbmQsIHAybS0+ZGVmYXVsdF9hY2Nl c3MpOwo+ICsgICAgcDJtX3RsYl9mbHVzaF9zeW5jKHAybSk7Cj4gIAo+ICAgICAgLyogTWFrZSBu b25lIG9mIHRoZSBNRk5zIGFyZSB1c2VkIGVsc2V3aGVyZS4uLiBmb3IgZXhhbXBsZSwgbWFwcGVk Cj4gICAgICAgKiB2aWEgdGhlIGdyYW50IHRhYmxlIGludGVyZmFjZSwgb3IgYnkgcWVtdS4gIEFs bG93IG9uZSByZWZjb3VudCBmb3IKPiBAQCAtODg2LDYgKzg4OCw4IEBAIHAybV9wb2RfemVyb19j aGVjayhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nICpnZm5zLCBpbnQgY291 bnQpCj4gICAgICAgICAgfQo+ICAgICAgfQo+ICAKPiArICAgIHAybV90bGJfZmx1c2hfc3luYyhw Mm0pOwo+ICsKPiAgICAgIC8qIE5vdyBjaGVjayBlYWNoIHBhZ2UgZm9yIHJlYWwgKi8KPiAgICAg IGZvciAoIGk9MDsgaSA8IGNvdW50OyBpKysgKQo+ICAgICAgewo+IGRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvbW0vcDJtLmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKPiBpbmRleCBiM2ZjZTFi Li40OTFkZWFjIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwo+ICsrKyBiL3hl bi9hcmNoL3g4Ni9tbS9wMm0uYwo+IEBAIC0zMjUsNiArMzI1LDMyIEBAIHZvaWQgcDJtX2ZsdXNo X2hhcmR3YXJlX2NhY2hlZF9kaXJ0eShzdHJ1Y3QgZG9tYWluICpkKQo+ICAgICAgfQo+ICB9Cj4g IAo+ICsvKgo+ICsgKiBGb3JjZSBhIHN5bmNocm9ub3VzIFAyTSBUTEIgZmx1c2ggaWYgYSBkZWZl cnJlZCBmbHVzaCBpcyBwZW5kaW5nLgo+ICsgKgo+ICsgKiBNdXN0IGJlIGNhbGxlZCB3aXRoIHRo ZSBwMm0gbG9jayBoZWxkLgo+ICsgKi8KPiArdm9pZCBwMm1fdGxiX2ZsdXNoX3N5bmMoc3RydWN0 IHAybV9kb21haW4gKnAybSkKPiArewo+ICsgICAgaWYgKCBwMm0tPm5lZWRfZmx1c2ggKSB7Cj4g KyAgICAgICAgcDJtLT5uZWVkX2ZsdXNoID0gMDsKPiArICAgICAgICBwMm0tPnRsYl9mbHVzaChw Mm0pOwo+ICsgICAgfQo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBVbmxvY2sgdGhlIHAybSBsb2NrIGFu ZCBkbyBhIFAyTSBUTEIgZmx1c2ggaWYgbmVlZGVkLgo+ICsgKi8KPiArdm9pZCBwMm1fdW5sb2Nr X2FuZF90bGJfZmx1c2goc3RydWN0IHAybV9kb21haW4gKnAybSkKPiArewo+ICsgICAgaWYgKCBw Mm0tPm5lZWRfZmx1c2ggKSB7Cj4gKyAgICAgICAgcDJtLT5uZWVkX2ZsdXNoID0gMDsKPiArICAg ICAgICBtbV93cml0ZV91bmxvY2soJnAybS0+bG9jayk7Cj4gKyAgICAgICAgcDJtLT50bGJfZmx1 c2gocDJtKTsKPiArICAgIH0gZWxzZQo+ICsgICAgICAgIG1tX3dyaXRlX3VubG9jaygmcDJtLT5s b2NrKTsKPiArfQo+ICsKPiAgbWZuX3QgX19nZXRfZ2ZuX3R5cGVfYWNjZXNzKHN0cnVjdCBwMm1f ZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuLAo+ICAgICAgICAgICAgICAgICAgICAgIHAy bV90eXBlX3QgKnQsIHAybV9hY2Nlc3NfdCAqYSwgcDJtX3F1ZXJ5X3QgcSwKPiAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgKnBhZ2Vfb3JkZXIsIGJvb2xfdCBsb2NrZWQpCj4gZGlm ZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmggYi94ZW4vaW5jbHVkZS9hc20teDg2 L3AybS5oCj4gaW5kZXggNTM5MmViMC4uNjU2NzVhMiAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVk ZS9hc20teDg2L3AybS5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaAo+IEBAIC0y NjIsNiArMjYyLDIyIEBAIHN0cnVjdCBwMm1fZG9tYWluIHsKPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbDFfcGdlbnRyeV90IG5ldywgdW5zaWduZWQgaW50IGxl dmVsKTsKPiAgICAgIGxvbmcgICAgICAgICAgICAgICAoKmF1ZGl0X3AybSkoc3RydWN0IHAybV9k b21haW4gKnAybSk7Cj4gIAo+ICsgICAgLyoKPiArICAgICAqIFAyTSB1cGRhdGVzIG1heSByZXF1 aXJlIFRMQnMgdG8gYmUgZmx1c2hlZCAoaW52YWxpZGF0ZWQpLgo+ICsgICAgICoKPiArICAgICAq IElmICdkZWZlcl9mbHVzaCcgaXMgc2V0LCBmbHVzaGVzIG1heSBiZSBkZWZlcnJlZCBieSBzZXR0 aW5nCj4gKyAgICAgKiAnbmVlZF9mbHVzaCcgYW5kIHRoZW4gZmx1c2hpbmcgaW4gJ3RsYl9mbHVz aCgpJy4KPiArICAgICAqCj4gKyAgICAgKiAndGxiX2ZsdXNoKCknIGlzIG9ubHkgY2FsbGVkIGlm ICduZWVkX2ZsdXNoJyB3YXMgc2V0Lgo+ICsgICAgICoKPiArICAgICAqIElmIGEgZmx1c2ggbWF5 IGJlIGJlaW5nIGRlZmVycmVkIGJ1dCBhbiBpbW1lZGlhdGUgZmx1c2ggaXMKPiArICAgICAqIHJl cXVpcmVkIChlLmcuLCBpZiBhIHBhZ2UgaXMgYmVpbmcgZnJlZWQgdG8gcG9vbCBvdGhlciB0aGFu IHRoZQo+ICsgICAgICogZG9taGVhcCksIGNhbGwgcDJtX3RsYl9mbHVzaF9zeW5jKCkuCj4gKyAg ICAgKi8KPiArICAgIHZvaWQgKCp0bGJfZmx1c2gpKHN0cnVjdCBwMm1fZG9tYWluICpwMm0pOwo+ ICsgICAgdW5zaWduZWQgaW50IGRlZmVyX2ZsdXNoOwo+ICsgICAgYm9vbF90IG5lZWRfZmx1c2g7 Cj4gKwo+ICAgICAgLyogRGVmYXVsdCBQMk0gYWNjZXNzIHR5cGUgZm9yIGVhY2ggcGFnZSBpbiB0 aGUgdGhlIGRvbWFpbjogbmV3IHBhZ2VzLAo+ICAgICAgICogc3dhcHBlZCBpbiBwYWdlcywgY2xl YXJlZCBwYWdlcywgYW5kIHBhZ2VzIHRoYXQgYXJlIGFtYmlndW91c2x5Cj4gICAgICAgKiByZXR5 cGVkIGdldCB0aGlzIGFjY2VzcyB0eXBlLiAgU2VlIGRlZmluaXRpb24gb2YgcDJtX2FjY2Vzc190 LiAqLwo+IEBAIC0zNTMsNiArMzY5LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbF90IHAybV9pc19h bHRwMm0oY29uc3Qgc3RydWN0IHAybV9kb21haW4gKnAybSkKPiAgCj4gICNkZWZpbmUgcDJtX2dl dF9wYWdldGFibGUocDJtKSAgKChwMm0pLT5waHlzX3RhYmxlKQo+ICAKPiArLyoKPiArICogRW5z dXJlIGFueSBkZWZlcnJlZCBwMm0gVExCIGZsdXNoIGhhcyBiZWVuIGNvbXBsZXRlZCBvbiBhbGwg VkNQVXMuCj4gKyAqLwo+ICt2b2lkIHAybV90bGJfZmx1c2hfc3luYyhzdHJ1Y3QgcDJtX2RvbWFp biAqcDJtKTsKPiArdm9pZCBwMm1fdW5sb2NrX2FuZF90bGJfZmx1c2goc3RydWN0IHAybV9kb21h aW4gKnAybSk7Cj4gKwo+ICAvKioqKiBwMm0gcXVlcnkgYWNjZXNzb3JzLiBUaGV5IGxvY2sgcDJt X2xvY2ssIGFuZCB0aHVzIHNlcmlhbGl6ZQo+ICAgKiBsb29rdXBzIHdydCBtb2RpZmljYXRpb25z LiBUaGV5IF9kbyBub3RfIHJlbGVhc2UgdGhlIGxvY2sgb24gZXhpdC4KPiAgICogQWZ0ZXIgY2Fs bGluZyBhbnkgb2YgdGhlIHZhcmlhbnRzIGJlbG93LCBjYWxsZXIgbmVlZHMgdG8gdXNlCj4gCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwg bWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3Jn L3hlbi1kZXZlbAo=