From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v2 15/19] x86/hvm: Reimplement hvm_copy_*_nofault() in terms of no pagefault_info Date: Mon, 28 Nov 2016 12:56:58 +0000 Message-ID: References: <1480331616-6165-1-git-send-email-andrew.cooper3@citrix.com> <1480331616-6165-16-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1480331616-6165-16-git-send-email-andrew.cooper3@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: Xen-devel Cc: Andrew Cooper List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IEFuZHJldyBDb29wZXIgW21haWx0 bzphbmRyZXcuY29vcGVyM0BjaXRyaXguY29tXQo+IFNlbnQ6IDI4IE5vdmVtYmVyIDIwMTYgMTE6 MTQKPiBUbzogWGVuLWRldmVsIDx4ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZz4KPiBDYzogQW5kcmV3 IENvb3BlciA8QW5kcmV3LkNvb3BlcjNAY2l0cml4LmNvbT47IFBhdWwgRHVycmFudAo+IDxQYXVs LkR1cnJhbnRAY2l0cml4LmNvbT4KPiBTdWJqZWN0OiBbUEFUQ0ggdjIgMTUvMTldIHg4Ni9odm06 IFJlaW1wbGVtZW50IGh2bV9jb3B5Xypfbm9mYXVsdCgpIGluCj4gdGVybXMgb2Ygbm8gcGFnZWZh dWx0X2luZm8KPiAKPiBObyBmdW5jdGlvbmFsIGNoYW5nZS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBB bmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgo+IFJldmlld2VkLWJ5OiBK YW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Cj4gQWNrZWQtYnk6IFRpbSBEZWVnYW4gPHRp bUB4ZW4ub3JnPgo+IC0tLQo+IENDOiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXgu Y29tPgoKUmV2aWV3ZWQtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+ Cgo+IC0tLQo+ICB4ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYyAgICAgICAgfCAgNiArKy0tLQo+ ICB4ZW4vYXJjaC94ODYvaHZtL2h2bS5jICAgICAgICAgICAgfCA1NiArKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgeGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24u YyAgIHwgIDggKysrLS0tCj4gIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N1cHBvcnQuaCB8IDEx IC0tLS0tLS0tCj4gIDQgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgNjIgZGVsZXRp b25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jIGIveGVu L2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKPiBpbmRleCA2ZGU5NGQ0Li41MTY1YmIyIDEwMDY0NAo+ IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2 bS9lbXVsYXRlLmMKPiBAQCAtMTk0Nyw5ICsxOTQ3LDkgQEAgdm9pZCBodm1fZW11bGF0ZV9pbml0 X3Blcl9pbnNuKAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHZt X2FjY2Vzc19pbnNuX2ZldGNoLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaHZtZW11bF9jdHh0LT5jdHh0LmFkZHJfc2l6ZSwKPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZhZGRyKSAmJgo+IC0gICAgICAgICAgICAgaHZtX2ZldGNo X2Zyb21fZ3Vlc3RfdmlydF9ub2ZhdWx0KGh2bWVtdWxfY3R4dC0+aW5zbl9idWYsCj4gYWRkciwK PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yo aHZtZW11bF9jdHh0LT5pbnNuX2J1ZiksCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcGZlYykgPT0gSFZNQ09QWV9va2F5KSA/Cj4gKyAgICAgICAgICAg ICBodm1fZmV0Y2hfZnJvbV9ndWVzdF92aXJ0KGh2bWVtdWxfY3R4dC0+aW5zbl9idWYsIGFkZHIs Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihodm1lbXVs X2N0eHQtPmluc25fYnVmKSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGZlYywgTlVMTCkgPT0gSFZNQ09QWV9va2F5KSA/Cj4gICAgICAgICAgICAgIHNpemVvZiho dm1lbXVsX2N0eHQtPmluc25fYnVmKSA6IDA7Cj4gICAgICB9Cj4gICAgICBlbHNlCj4gZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCj4g aW5kZXggMzkwZjc2ZC4uNWVhZTA2YSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2h2 bS5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYwo+IEBAIC0zMDY2LDggKzMwNjYsNiBA QCB2b2lkIGh2bV90YXNrX3N3aXRjaCgKPiAKPiAgI2RlZmluZSBIVk1DT1BZX2Zyb21fZ3Vlc3Qg KDB1PDwwKQo+ICAjZGVmaW5lIEhWTUNPUFlfdG9fZ3Vlc3QgICAoMXU8PDApCj4gLSNkZWZpbmUg SFZNQ09QWV9ub19mYXVsdCAgICgwdTw8MSkKPiAtI2RlZmluZSBIVk1DT1BZX2ZhdWx0ICAgICAg KDF1PDwxKQo+ICAjZGVmaW5lIEhWTUNPUFlfcGh5cyAgICAgICAoMHU8PDIpCj4gICNkZWZpbmUg SFZNQ09QWV92aXJ0ICAgICAgICgxdTw8MikKPiAgc3RhdGljIGVudW0gaHZtX2NvcHlfcmVzdWx0 IF9faHZtX2NvcHkoCj4gQEAgLTMxMTIsMTMgKzMxMTAsMTAgQEAgc3RhdGljIGVudW0gaHZtX2Nv cHlfcmVzdWx0IF9faHZtX2NvcHkoCj4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEhWTUNP UFlfZ2ZuX3BhZ2VkX291dDsKPiAgICAgICAgICAgICAgICAgIGlmICggcGZlYyAmIFBGRUNfcGFn ZV9zaGFyZWQgKQo+ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBIVk1DT1BZX2dmbl9zaGFy ZWQ7Cj4gLSAgICAgICAgICAgICAgICBpZiAoIGZsYWdzICYgSFZNQ09QWV9mYXVsdCApCj4gKyAg ICAgICAgICAgICAgICBpZiAoIHBmaW5mbyApCj4gICAgICAgICAgICAgICAgICB7Cj4gLSAgICAg ICAgICAgICAgICAgICAgaWYgKCBwZmluZm8gKQo+IC0gICAgICAgICAgICAgICAgICAgIHsKPiAt ICAgICAgICAgICAgICAgICAgICAgICAgcGZpbmZvLT5saW5lYXIgPSBhZGRyOwo+IC0gICAgICAg ICAgICAgICAgICAgICAgICBwZmluZm8tPmVjID0gcGZlYzsKPiAtICAgICAgICAgICAgICAgICAg ICB9Cj4gKyAgICAgICAgICAgICAgICAgICAgcGZpbmZvLT5saW5lYXIgPSBhZGRyOwo+ICsgICAg ICAgICAgICAgICAgICAgIHBmaW5mby0+ZWMgPSBwZmVjOwo+IAo+ICAgICAgICAgICAgICAgICAg ICAgIGh2bV9pbmplY3RfcGFnZV9mYXVsdChwZmVjLCBhZGRyKTsKPiAgICAgICAgICAgICAgICAg IH0KPiBAQCAtMzI5MCwxNiArMzI4NSwxNCBAQCBlbnVtIGh2bV9jb3B5X3Jlc3VsdAo+IGh2bV9j b3B5X3RvX2d1ZXN0X3BoeXMoCj4gICAgICBwYWRkcl90IHBhZGRyLCB2b2lkICpidWYsIGludCBz aXplKQo+ICB7Cj4gICAgICByZXR1cm4gX19odm1fY29weShidWYsIHBhZGRyLCBzaXplLAo+IC0g ICAgICAgICAgICAgICAgICAgICAgSFZNQ09QWV90b19ndWVzdCB8IEhWTUNPUFlfZmF1bHQgfCBI Vk1DT1BZX3BoeXMsCj4gLSAgICAgICAgICAgICAgICAgICAgICAwLCBOVUxMKTsKPiArICAgICAg ICAgICAgICAgICAgICAgIEhWTUNPUFlfdG9fZ3Vlc3QgfCBIVk1DT1BZX3BoeXMsIDAsIE5VTEwp Owo+ICB9Cj4gCj4gIGVudW0gaHZtX2NvcHlfcmVzdWx0IGh2bV9jb3B5X2Zyb21fZ3Vlc3RfcGh5 cygKPiAgICAgIHZvaWQgKmJ1ZiwgcGFkZHJfdCBwYWRkciwgaW50IHNpemUpCj4gIHsKPiAgICAg IHJldHVybiBfX2h2bV9jb3B5KGJ1ZiwgcGFkZHIsIHNpemUsCj4gLSAgICAgICAgICAgICAgICAg ICAgICBIVk1DT1BZX2Zyb21fZ3Vlc3QgfCBIVk1DT1BZX2ZhdWx0IHwgSFZNQ09QWV9waHlzLAo+ IC0gICAgICAgICAgICAgICAgICAgICAgMCwgTlVMTCk7Cj4gKyAgICAgICAgICAgICAgICAgICAg ICBIVk1DT1BZX2Zyb21fZ3Vlc3QgfCBIVk1DT1BZX3BoeXMsIDAsIE5VTEwpOwo+ICB9Cj4gCj4g IGVudW0gaHZtX2NvcHlfcmVzdWx0IGh2bV9jb3B5X3RvX2d1ZXN0X3ZpcnQoCj4gQEAgLTMzMDcs NyArMzMwMCw3IEBAIGVudW0gaHZtX2NvcHlfcmVzdWx0IGh2bV9jb3B5X3RvX2d1ZXN0X3ZpcnQo Cj4gICAgICBwYWdlZmF1bHRfaW5mb190ICpwZmluZm8pCj4gIHsKPiAgICAgIHJldHVybiBfX2h2 bV9jb3B5KGJ1ZiwgdmFkZHIsIHNpemUsCj4gLSAgICAgICAgICAgICAgICAgICAgICBIVk1DT1BZ X3RvX2d1ZXN0IHwgSFZNQ09QWV9mYXVsdCB8IEhWTUNPUFlfdmlydCwKPiArICAgICAgICAgICAg ICAgICAgICAgIEhWTUNPUFlfdG9fZ3Vlc3QgfCBIVk1DT1BZX3ZpcnQsCj4gICAgICAgICAgICAg ICAgICAgICAgICBQRkVDX3BhZ2VfcHJlc2VudCB8IFBGRUNfd3JpdGVfYWNjZXNzIHwgcGZlYywg cGZpbmZvKTsKPiAgfQo+IAo+IEBAIC0zMzE2LDcgKzMzMDksNyBAQCBlbnVtIGh2bV9jb3B5X3Jl c3VsdAo+IGh2bV9jb3B5X2Zyb21fZ3Vlc3RfdmlydCgKPiAgICAgIHBhZ2VmYXVsdF9pbmZvX3Qg KnBmaW5mbykKPiAgewo+ICAgICAgcmV0dXJuIF9faHZtX2NvcHkoYnVmLCB2YWRkciwgc2l6ZSwK PiAtICAgICAgICAgICAgICAgICAgICAgIEhWTUNPUFlfZnJvbV9ndWVzdCB8IEhWTUNPUFlfZmF1 bHQgfCBIVk1DT1BZX3ZpcnQsCj4gKyAgICAgICAgICAgICAgICAgICAgICBIVk1DT1BZX2Zyb21f Z3Vlc3QgfCBIVk1DT1BZX3ZpcnQsCj4gICAgICAgICAgICAgICAgICAgICAgICBQRkVDX3BhZ2Vf cHJlc2VudCB8IHBmZWMsIHBmaW5mbyk7Cj4gIH0KPiAKPiBAQCAtMzMyNSwzNCArMzMxOCwxMCBA QCBlbnVtIGh2bV9jb3B5X3Jlc3VsdAo+IGh2bV9mZXRjaF9mcm9tX2d1ZXN0X3ZpcnQoCj4gICAg ICBwYWdlZmF1bHRfaW5mb190ICpwZmluZm8pCj4gIHsKPiAgICAgIHJldHVybiBfX2h2bV9jb3B5 KGJ1ZiwgdmFkZHIsIHNpemUsCj4gLSAgICAgICAgICAgICAgICAgICAgICBIVk1DT1BZX2Zyb21f Z3Vlc3QgfCBIVk1DT1BZX2ZhdWx0IHwgSFZNQ09QWV92aXJ0LAo+ICsgICAgICAgICAgICAgICAg ICAgICAgSFZNQ09QWV9mcm9tX2d1ZXN0IHwgSFZNQ09QWV92aXJ0LAo+ICAgICAgICAgICAgICAg ICAgICAgICAgUEZFQ19wYWdlX3ByZXNlbnQgfCBQRkVDX2luc25fZmV0Y2ggfCBwZmVjLCBwZmlu Zm8pOwo+ICB9Cj4gCj4gLWVudW0gaHZtX2NvcHlfcmVzdWx0IGh2bV9jb3B5X3RvX2d1ZXN0X3Zp cnRfbm9mYXVsdCgKPiAtICAgIHVuc2lnbmVkIGxvbmcgdmFkZHIsIHZvaWQgKmJ1ZiwgaW50IHNp emUsIHVpbnQzMl90IHBmZWMpCj4gLXsKPiAtICAgIHJldHVybiBfX2h2bV9jb3B5KGJ1ZiwgdmFk ZHIsIHNpemUsCj4gLSAgICAgICAgICAgICAgICAgICAgICBIVk1DT1BZX3RvX2d1ZXN0IHwgSFZN Q09QWV9ub19mYXVsdCB8IEhWTUNPUFlfdmlydCwKPiAtICAgICAgICAgICAgICAgICAgICAgIFBG RUNfcGFnZV9wcmVzZW50IHwgUEZFQ193cml0ZV9hY2Nlc3MgfCBwZmVjLCBOVUxMKTsKPiAtfQo+ IC0KPiAtZW51bSBodm1fY29weV9yZXN1bHQgaHZtX2NvcHlfZnJvbV9ndWVzdF92aXJ0X25vZmF1 bHQoCj4gLSAgICB2b2lkICpidWYsIHVuc2lnbmVkIGxvbmcgdmFkZHIsIGludCBzaXplLCB1aW50 MzJfdCBwZmVjKQo+IC17Cj4gLSAgICByZXR1cm4gX19odm1fY29weShidWYsIHZhZGRyLCBzaXpl LAo+IC0gICAgICAgICAgICAgICAgICAgICAgSFZNQ09QWV9mcm9tX2d1ZXN0IHwgSFZNQ09QWV9u b19mYXVsdCB8IEhWTUNPUFlfdmlydCwKPiAtICAgICAgICAgICAgICAgICAgICAgIFBGRUNfcGFn ZV9wcmVzZW50IHwgcGZlYywgTlVMTCk7Cj4gLX0KPiAtCj4gLWVudW0gaHZtX2NvcHlfcmVzdWx0 IGh2bV9mZXRjaF9mcm9tX2d1ZXN0X3ZpcnRfbm9mYXVsdCgKPiAtICAgIHZvaWQgKmJ1ZiwgdW5z aWduZWQgbG9uZyB2YWRkciwgaW50IHNpemUsIHVpbnQzMl90IHBmZWMpCj4gLXsKPiAtICAgIHJl dHVybiBfX2h2bV9jb3B5KGJ1ZiwgdmFkZHIsIHNpemUsCj4gLSAgICAgICAgICAgICAgICAgICAg ICBIVk1DT1BZX2Zyb21fZ3Vlc3QgfCBIVk1DT1BZX25vX2ZhdWx0IHwgSFZNQ09QWV92aXJ0LAo+ IC0gICAgICAgICAgICAgICAgICAgICAgUEZFQ19wYWdlX3ByZXNlbnQgfCBQRkVDX2luc25fZmV0 Y2ggfCBwZmVjLCBOVUxMKTsKPiAtfQo+IC0KPiAgdW5zaWduZWQgbG9uZyBjb3B5X3RvX3VzZXJf aHZtKHZvaWQgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBpbnQKPiBsZW4pCj4gIHsK PiAgICAgIGludCByYzsKPiBAQCAtMzM2NCw4ICszMzMzLDcgQEAgdW5zaWduZWQgbG9uZyBjb3B5 X3RvX3VzZXJfaHZtKHZvaWQgKnRvLCBjb25zdAo+IHZvaWQgKmZyb20sIHVuc2lnbmVkIGludCBs ZW4pCj4gICAgICAgICAgcmV0dXJuIDA7Cj4gICAgICB9Cj4gCj4gLSAgICByYyA9IGh2bV9jb3B5 X3RvX2d1ZXN0X3ZpcnRfbm9mYXVsdCgodW5zaWduZWQgbG9uZyl0bywgKHZvaWQgKilmcm9tLAo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuLCAwKTsKPiArICAg IHJjID0gaHZtX2NvcHlfdG9fZ3Vlc3RfdmlydCgodW5zaWduZWQgbG9uZyl0bywgKHZvaWQgKilm cm9tLCBsZW4sIDAsCj4gTlVMTCk7Cj4gICAgICByZXR1cm4gcmMgPyBsZW4gOiAwOyAvKiBmYWtl IGEgY29weV90b191c2VyKCkgcmV0dXJuIGNvZGUgKi8KPiAgfQo+IAo+IEBAIC0zMzk1LDcgKzMz NjMsNyBAQCB1bnNpZ25lZCBsb25nIGNvcHlfZnJvbV91c2VyX2h2bSh2b2lkICp0bywKPiBjb25z dCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsZW4pCj4gICAgICAgICAgcmV0dXJuIDA7Cj4gICAgICB9 Cj4gCj4gLSAgICByYyA9IGh2bV9jb3B5X2Zyb21fZ3Vlc3RfdmlydF9ub2ZhdWx0KHRvLCAodW5z aWduZWQgbG9uZylmcm9tLCBsZW4sIDApOwo+ICsgICAgcmMgPSBodm1fY29weV9mcm9tX2d1ZXN0 X3ZpcnQodG8sICh1bnNpZ25lZCBsb25nKWZyb20sIGxlbiwgMCwgTlVMTCk7Cj4gICAgICByZXR1 cm4gcmMgPyBsZW4gOiAwOyAvKiBmYWtlIGEgY29weV9mcm9tX3VzZXIoKSByZXR1cm4gY29kZSAq Lwo+ICB9Cj4gCj4gQEAgLTQwNzAsOCArNDAzOCw4IEBAIHZvaWQgaHZtX3VkX2ludGVyY2VwdChz dHJ1Y3QgY3B1X3VzZXJfcmVncwo+ICpyZWdzKQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGh2bV9sb25nX21vZGVfZW5hYmxlZChjdXIpICYmCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3MtPmF0dHIuZmllbGRzLmwpID8gNjQg Ogo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3MtPmF0dHIuZmll bGRzLmRiID8gMzIgOiAxNiwgJmFkZHIpICYmCj4gLSAgICAgICAgICAgICAoaHZtX2ZldGNoX2Zy b21fZ3Vlc3RfdmlydF9ub2ZhdWx0KHNpZywgYWRkciwgc2l6ZW9mKHNpZyksCj4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhbGspID09IEhWTUNPUFlf b2theSkgJiYKPiArICAgICAgICAgICAgIChodm1fZmV0Y2hfZnJvbV9ndWVzdF92aXJ0KHNpZywg YWRkciwgc2l6ZW9mKHNpZyksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB3YWxrLCBOVUxMKSA9PSBIVk1DT1BZX29rYXkpICYmCj4gICAgICAgICAgICAgICAobWVt Y21wKHNpZywgIlx4Zlx4YnhlbiIsIHNpemVvZihzaWcpKSA9PSAwKSApCj4gICAgICAgICAgewo+ ICAgICAgICAgICAgICByZWdzLT5laXAgKz0gc2l6ZW9mKHNpZyk7Cj4gZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMKPiBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cv Y29tbW9uLmMKPiBpbmRleCBlODUwMWNlLi5iNjU5MzI0IDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNo L3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMKPiArKysgYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2Nv bW1vbi5jCj4gQEAgLTQxOSw4ICs0MTksOCBAQCBjb25zdCBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3Bz Cj4gKnNoYWRvd19pbml0X2VtdWxhdGlvbigKPiAgICAgICAgICAoIWh2bV90cmFuc2xhdGVfbGlu ZWFyX2FkZHIoCj4gICAgICAgICAgICAgIHg4Nl9zZWdfY3MsIHJlZ3MtPmVpcCwgc2l6ZW9mKHNo X2N0eHQtPmluc25fYnVmKSwKPiAgICAgICAgICAgICAgaHZtX2FjY2Vzc19pbnNuX2ZldGNoLCBz aF9jdHh0LCAmYWRkcikgJiYKPiAtICAgICAgICAgIWh2bV9mZXRjaF9mcm9tX2d1ZXN0X3ZpcnRf bm9mYXVsdCgKPiAtICAgICAgICAgICAgIHNoX2N0eHQtPmluc25fYnVmLCBhZGRyLCBzaXplb2Yo c2hfY3R4dC0+aW5zbl9idWYpLCAwKSkKPiArICAgICAgICAgIWh2bV9mZXRjaF9mcm9tX2d1ZXN0 X3ZpcnQoCj4gKyAgICAgICAgICAgICBzaF9jdHh0LT5pbnNuX2J1ZiwgYWRkciwgc2l6ZW9mKHNo X2N0eHQtPmluc25fYnVmKSwgMCwgTlVMTCkpCj4gICAgICAgICAgPyBzaXplb2Yoc2hfY3R4dC0+ aW5zbl9idWYpIDogMDsKPiAKPiAgICAgIHJldHVybiAmaHZtX3NoYWRvd19lbXVsYXRvcl9vcHM7 Cj4gQEAgLTQ0Nyw4ICs0NDcsOCBAQCB2b2lkIHNoYWRvd19jb250aW51ZV9lbXVsYXRpb24oc3Ry dWN0Cj4gc2hfZW11bGF0ZV9jdHh0ICpzaF9jdHh0LAo+ICAgICAgICAgICAgICAgICAgKCFodm1f dHJhbnNsYXRlX2xpbmVhcl9hZGRyKAo+ICAgICAgICAgICAgICAgICAgICAgIHg4Nl9zZWdfY3Ms IHJlZ3MtPmVpcCwgc2l6ZW9mKHNoX2N0eHQtPmluc25fYnVmKSwKPiAgICAgICAgICAgICAgICAg ICAgICBodm1fYWNjZXNzX2luc25fZmV0Y2gsIHNoX2N0eHQsICZhZGRyKSAmJgo+IC0gICAgICAg ICAgICAgICAgICFodm1fZmV0Y2hfZnJvbV9ndWVzdF92aXJ0X25vZmF1bHQoCj4gLSAgICAgICAg ICAgICAgICAgICAgIHNoX2N0eHQtPmluc25fYnVmLCBhZGRyLCBzaXplb2Yoc2hfY3R4dC0+aW5z bl9idWYpLCAwKSkKPiArICAgICAgICAgICAgICAgICAhaHZtX2ZldGNoX2Zyb21fZ3Vlc3Rfdmly dCgKPiArICAgICAgICAgICAgICAgICAgICAgc2hfY3R4dC0+aW5zbl9idWYsIGFkZHIsIHNpemVv ZihzaF9jdHh0LT5pbnNuX2J1ZiksIDAsIE5VTEwpKQo+ICAgICAgICAgICAgICAgICAgPyBzaXpl b2Yoc2hfY3R4dC0+aW5zbl9idWYpIDogMDsKPiAgICAgICAgICAgICAgc2hfY3R4dC0+aW5zbl9i dWZfZWlwID0gcmVncy0+ZWlwOwo+ICAgICAgICAgIH0KPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvYXNtLXg4Ni9odm0vc3VwcG9ydC5oIGIveGVuL2luY2x1ZGUvYXNtLQo+IHg4Ni9odm0vc3Vw cG9ydC5oCj4gaW5kZXggNGFhNWEzNi4uMTE0YWEwNCAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVk ZS9hc20teDg2L2h2bS9zdXBwb3J0LmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9z dXBwb3J0LmgKPiBAQCAtMTA1LDE3ICsxMDUsNiBAQCBlbnVtIGh2bV9jb3B5X3Jlc3VsdAo+IGh2 bV9mZXRjaF9mcm9tX2d1ZXN0X3ZpcnQoCj4gICAgICB2b2lkICpidWYsIHVuc2lnbmVkIGxvbmcg dmFkZHIsIGludCBzaXplLCB1aW50MzJfdCBwZmVjLAo+ICAgICAgcGFnZWZhdWx0X2luZm9fdCAq cGZpbmZvKTsKPiAKPiAtLyoKPiAtICogQXMgYWJvdmUgKGNvcHkgdG8vZnJvbSBhIGd1ZXN0IHZp cnR1YWwgYWRkcmVzcyksIGJ1dCBubyBmYXVsdCBpcyBnZW5lcmF0ZWQKPiAtICogd2hlbiBIVk1D T1BZX2JhZF9ndmFfdG9fZ2ZuIGlzIHJldHVybmVkLgo+IC0gKi8KPiAtZW51bSBodm1fY29weV9y ZXN1bHQgaHZtX2NvcHlfdG9fZ3Vlc3RfdmlydF9ub2ZhdWx0KAo+IC0gICAgdW5zaWduZWQgbG9u ZyB2YWRkciwgdm9pZCAqYnVmLCBpbnQgc2l6ZSwgdWludDMyX3QgcGZlYyk7Cj4gLWVudW0gaHZt X2NvcHlfcmVzdWx0IGh2bV9jb3B5X2Zyb21fZ3Vlc3RfdmlydF9ub2ZhdWx0KAo+IC0gICAgdm9p ZCAqYnVmLCB1bnNpZ25lZCBsb25nIHZhZGRyLCBpbnQgc2l6ZSwgdWludDMyX3QgcGZlYyk7Cj4g LWVudW0gaHZtX2NvcHlfcmVzdWx0IGh2bV9mZXRjaF9mcm9tX2d1ZXN0X3ZpcnRfbm9mYXVsdCgK PiAtICAgIHZvaWQgKmJ1ZiwgdW5zaWduZWQgbG9uZyB2YWRkciwgaW50IHNpemUsIHVpbnQzMl90 IHBmZWMpOwo+IC0KPiAgI2RlZmluZSBIVk1fSENBTExfY29tcGxldGVkICAwIC8qIGh5cGVyY2Fs bCBjb21wbGV0ZWQgLSBubyBmdXJ0aGVyCj4gYWN0aW9uICovCj4gICNkZWZpbmUgSFZNX0hDQUxM X3ByZWVtcHRlZCAgMSAvKiBoeXBlcmNhbGwgcHJlZW1wdGVkIC0gcmUtZXhlY3V0ZQo+IFZNQ0FM TCAqLwo+ICAjZGVmaW5lIEhWTV9IQ0FMTF9pbnZhbGlkYXRlIDIgLyogaW52YWxpZGF0ZSBpb2Vt dS1kbSBtZW1vcnkgY2FjaGUKPiAqLwo+IC0tCj4gMi4xLjQKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK