From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v2 1/3] x86/hvm: Don't raise #GP behind the emulators back for MSR accesses Date: Mon, 20 Feb 2017 10:34:08 +0000 Message-ID: <0b917f392f6645568e6afe6f48e2d576@AMSPEX02CL03.citrite.net> References: <1487586529-27092-1-git-send-email-andrew.cooper3@citrix.com> <1487586529-27092-2-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: <1487586529-27092-2-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 , Boris Ostrovsky , Suravee Suthikulpanit List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IEFuZHJldyBDb29wZXIgW21haWx0 bzphbmRyZXcuY29vcGVyM0BjaXRyaXguY29tXQo+IFNlbnQ6IDIwIEZlYnJ1YXJ5IDIwMTcgMTA6 MjkKPiBUbzogWGVuLWRldmVsIDx4ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZz4KPiBDYzogQW5kcmV3 IENvb3BlciA8QW5kcmV3LkNvb3BlcjNAY2l0cml4LmNvbT47IFBhdWwgRHVycmFudAo+IDxQYXVs LkR1cnJhbnRAY2l0cml4LmNvbT47IEJvcmlzIE9zdHJvdnNreSA8Ym9yaXMub3N0cm92c2t5QG9y YWNsZS5jb20+Owo+IFN1cmF2ZWUgU3V0aGlrdWxwYW5pdCA8c3VyYXZlZS5zdXRoaWt1bHBhbml0 QGFtZC5jb20+Cj4gU3ViamVjdDogW1BBVENIIHYyIDEvM10geDg2L2h2bTogRG9uJ3QgcmFpc2Ug I0dQIGJlaGluZCB0aGUgZW11bGF0b3JzIGJhY2sKPiBmb3IgTVNSIGFjY2Vzc2VzCj4gCj4gVGhl IGN1cnJlbnQgaHZtX21zcl97cmVhZCx3cml0ZX1faW50ZXJjZXB0KCkgaW5mcmFzdHJ1Y3R1cmUg Y2FsbHMKPiBodm1faW5qZWN0X2h3X2V4Y2VwdGlvbigpIGRpcmVjdGx5IHRvIGxhdGNoIGEgZmF1 bHQsIGFuZCByZXR1cm5zCj4gWDg2RU1VTF9FWENFUFRJT04gdG8gaXRzIGNhbGxlci4KPiAKPiBU aGlzIGJlaGF2aW91ciBpcyBwcm9ibGVtYXRpYyBmb3IgdGhlIGh2bWVtdWxfe3JlYWQsd3JpdGV9 X21zcigpIHBhdGhzLCBhcwo+IHRoZQo+IGZhdWx0IGlzIHJhaXNlZCBiZWhpbmQgdGhlIGJhY2sg b2YgdGhlIHg4NiBlbXVsYXRvci4KPiAKPiBBbHRlciB0aGUgYmVoYXZpb3VyIHNvIGh2bV9tc3Jf e3JlYWQsd3JpdGV9X2ludGVyY2VwdCgpIHNpbXBseSByZXR1cm5zCj4gWDg2RU1VTF9FWENFUFRJ T04sIGxlYXZpbmcgdGhlIGNhbGxlcnMgdG8gYWN0dWFsbHkgaW5qZWN0IHRoZSAjR1AgZmF1bHQu Cj4gCj4gU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4 LmNvbT4KPiBBY2tlZC1ieTogS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+Cj4gUmV2 aWV3ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KPiAtLS0KPiBDQzogUGF1 bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KPiBDQzogQm9yaXMgT3N0cm92c2t5 IDxib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbT4KPiBDQzogU3VyYXZlZSBTdXRoaWt1bHBhbml0 IDxzdXJhdmVlLnN1dGhpa3VscGFuaXRAYW1kLmNvbT4KPgoKaHZtL2VtdWxhdGUuYyBjaGFuZ2Vz Li4uCgpQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgogCj4gdjI6Cj4gICog U3Vic3RhbnRpYWwgcmViYXNlCj4gICogSW50cm9kdWNlIF9fbXVzdF9jaGVjayBmb3IgaHZtX21z cl97cmVhZCx3cml0ZX1faW50ZXJjZXB0KCkKPiAtLS0KPiAgeGVuL2FyY2gveDg2L2h2bS9lbXVs YXRlLmMgICAgICAgIHwgMTQgKysrKysrKysrKysrLS0KPiAgeGVuL2FyY2gveDg2L2h2bS9odm0u YyAgICAgICAgICAgIHwgIDcgKysrKy0tLQo+ICB4ZW4vYXJjaC94ODYvaHZtL3N2bS9zdm0uYyAg ICAgICAgfCAgNCArKy0tCj4gIHhlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jICAgICAgICB8IDIz ICsrKysrKysrKysrKysrKysrKy0tLS0tCj4gIHhlbi9hcmNoL3g4Ni9odm0vdm14L3Z2bXguYyAg ICAgICB8IDE5ICsrKysrKysrKysrKysrLS0tLS0KPiAgeGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0v c3VwcG9ydC5oIHwgMTIgKysrKysrKysrLS0tCj4gIDYgZmlsZXMgY2hhbmdlZCwgNTkgaW5zZXJ0 aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9o dm0vZW11bGF0ZS5jIGIveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKPiBpbmRleCAxNGY5YjQz Li5lZGNhZTVlIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCj4gKysr IGIveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKPiBAQCAtMTU0NCw3ICsxNTQ0LDEyIEBAIHN0 YXRpYyBpbnQgaHZtZW11bF9yZWFkX21zcigKPiAgICAgIHVpbnQ2NF90ICp2YWwsCj4gICAgICBz dHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKPiAgewo+IC0gICAgcmV0dXJuIGh2bV9tc3Jf cmVhZF9pbnRlcmNlcHQocmVnLCB2YWwpOwo+ICsgICAgaW50IHJjID0gaHZtX21zcl9yZWFkX2lu dGVyY2VwdChyZWcsIHZhbCk7Cj4gKwo+ICsgICAgaWYgKCByYyA9PSBYODZFTVVMX0VYQ0VQVElP TiApCj4gKyAgICAgICAgeDg2X2VtdWxfaHdfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDAsIGN0 eHQpOwo+ICsKPiArICAgIHJldHVybiByYzsKPiAgfQo+IAo+ICBzdGF0aWMgaW50IGh2bWVtdWxf d3JpdGVfbXNyKAo+IEBAIC0xNTUyLDcgKzE1NTcsMTIgQEAgc3RhdGljIGludCBodm1lbXVsX3dy aXRlX21zcigKPiAgICAgIHVpbnQ2NF90IHZhbCwKPiAgICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9j dHh0ICpjdHh0KQo+ICB7Cj4gLSAgICByZXR1cm4gaHZtX21zcl93cml0ZV9pbnRlcmNlcHQocmVn LCB2YWwsIDEpOwo+ICsgICAgaW50IHJjID0gaHZtX21zcl93cml0ZV9pbnRlcmNlcHQocmVnLCB2 YWwsIDEpOwo+ICsKPiArICAgIGlmICggcmMgPT0gWDg2RU1VTF9FWENFUFRJT04gKQo+ICsgICAg ICAgIHg4Nl9lbXVsX2h3X2V4Y2VwdGlvbihUUkFQX2dwX2ZhdWx0LCAwLCBjdHh0KTsKPiArCj4g KyAgICByZXR1cm4gcmM7Cj4gIH0KPiAKPiAgc3RhdGljIGludCBodm1lbXVsX3diaW52ZCgKPiBk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9odm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZt LmMKPiBpbmRleCA2NjIxZDYyLi4wODg1NWMyIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9o dm0vaHZtLmMKPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCj4gQEAgLTUxOCw3ICs1MTgs MTAgQEAgdm9pZCBodm1fZG9fcmVzdW1lKHN0cnVjdCB2Y3B1ICp2KQo+IAo+ICAgICAgICAgIGlm ICggdy0+ZG9fd3JpdGUubXNyICkKPiAgICAgICAgICB7Cj4gLSAgICAgICAgICAgIGh2bV9tc3Jf d3JpdGVfaW50ZXJjZXB0KHctPm1zciwgdy0+dmFsdWUsIDApOwo+ICsgICAgICAgICAgICBpZiAo IGh2bV9tc3Jfd3JpdGVfaW50ZXJjZXB0KHctPm1zciwgdy0+dmFsdWUsIDApID09Cj4gKyAgICAg ICAgICAgICAgICAgWDg2RU1VTF9FWENFUFRJT04gKQo+ICsgICAgICAgICAgICAgICAgaHZtX2lu amVjdF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCk7Cj4gKwo+ICAgICAgICAgICAgICB3 LT5kb193cml0ZS5tc3IgPSAwOwo+ICAgICAgICAgIH0KPiAKPiBAQCAtMzQ1NSw3ICszNDU4LDYg QEAgaW50IGh2bV9tc3JfcmVhZF9pbnRlcmNlcHQodW5zaWduZWQgaW50IG1zciwKPiB1aW50NjRf dCAqbXNyX2NvbnRlbnQpCj4gICAgICByZXR1cm4gcmV0Owo+IAo+ICAgZ3BfZmF1bHQ6Cj4gLSAg ICBodm1faW5qZWN0X2h3X2V4Y2VwdGlvbihUUkFQX2dwX2ZhdWx0LCAwKTsKPiAgICAgIHJldCA9 IFg4NkVNVUxfRVhDRVBUSU9OOwo+ICAgICAgKm1zcl9jb250ZW50ID0gLTF1bGw7Cj4gICAgICBn b3RvIG91dDsKPiBAQCAtMzYwMCw3ICszNjAyLDYgQEAgaW50IGh2bV9tc3Jfd3JpdGVfaW50ZXJj ZXB0KHVuc2lnbmVkIGludCBtc3IsCj4gdWludDY0X3QgbXNyX2NvbnRlbnQsCj4gICAgICByZXR1 cm4gcmV0Owo+IAo+ICBncF9mYXVsdDoKPiAtICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRS QVBfZ3BfZmF1bHQsIDApOwo+ICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOwo+ICB9Cj4g Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5jIGIveGVuL2FyY2gveDg2 L2h2bS9zdm0vc3ZtLmMKPiBpbmRleCA4OTRjNDU3Li5iODY0NTM1IDEwMDY0NAo+IC0tLSBhL3hl bi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9zdm0vc3Zt LmMKPiBAQCAtMTc0NCw3ICsxNzQ0LDYgQEAgc3RhdGljIGludCBzdm1fbXNyX3JlYWRfaW50ZXJj ZXB0KHVuc2lnbmVkIGludAo+IG1zciwgdWludDY0X3QgKm1zcl9jb250ZW50KQo+ICAgICAgcmV0 dXJuIFg4NkVNVUxfT0tBWTsKPiAKPiAgIGdwZjoKPiAtICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0 aW9uKFRSQVBfZ3BfZmF1bHQsIDApOwo+ICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOwo+ ICB9Cj4gCj4gQEAgLTE4OTcsNyArMTg5Niw2IEBAIHN0YXRpYyBpbnQgc3ZtX21zcl93cml0ZV9p bnRlcmNlcHQodW5zaWduZWQgaW50Cj4gbXNyLCB1aW50NjRfdCBtc3JfY29udGVudCkKPiAgICAg IHJldHVybiByZXN1bHQ7Cj4gCj4gICBncGY6Cj4gLSAgICBodm1faW5qZWN0X2h3X2V4Y2VwdGlv bihUUkFQX2dwX2ZhdWx0LCAwKTsKPiAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKPiAg fQo+IAo+IEBAIC0xOTI0LDYgKzE5MjIsOCBAQCBzdGF0aWMgdm9pZCBzdm1fZG9fbXNyX2FjY2Vz cyhzdHJ1Y3QKPiBjcHVfdXNlcl9yZWdzICpyZWdzKQo+IAo+ICAgICAgaWYgKCByYyA9PSBYODZF TVVMX09LQVkgKQo+ICAgICAgICAgIF9fdXBkYXRlX2d1ZXN0X2VpcChyZWdzLCBpbnN0X2xlbik7 Cj4gKyAgICBlbHNlIGlmICggcmMgPT0gWDg2RU1VTF9FWENFUFRJT04gKQo+ICsgICAgICAgIGh2 bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDApOwo+ICB9Cj4gCj4gIHN0YXRp YyB2b2lkIHN2bV92bWV4aXRfZG9faGx0KHN0cnVjdCB2bWNiX3N0cnVjdCAqdm1jYiwKPiBkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMgYi94ZW4vYXJjaC94ODYvaHZtL3Zt eC92bXguYwo+IGluZGV4IDU5N2Q3YWMuLmI1YmZhMDUgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gv eDg2L2h2bS92bXgvdm14LmMKPiArKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYwo+IEBA IC0yNzM0LDcgKzI3MzQsNiBAQCBzdGF0aWMgaW50IHZteF9tc3JfcmVhZF9pbnRlcmNlcHQodW5z aWduZWQgaW50Cj4gbXNyLCB1aW50NjRfdCAqbXNyX2NvbnRlbnQpCj4gICAgICByZXR1cm4gWDg2 RU1VTF9PS0FZOwo+IAo+ICBncF9mYXVsdDoKPiAtICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9u KFRSQVBfZ3BfZmF1bHQsIDApOwo+ICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOwo+ICB9 Cj4gCj4gQEAgLTI5NzEsNyArMjk3MCw2IEBAIHN0YXRpYyBpbnQgdm14X21zcl93cml0ZV9pbnRl cmNlcHQodW5zaWduZWQgaW50Cj4gbXNyLCB1aW50NjRfdCBtc3JfY29udGVudCkKPiAgICAgIHJl dHVybiBYODZFTVVMX09LQVk7Cj4gCj4gIGdwX2ZhdWx0Ogo+IC0gICAgaHZtX2luamVjdF9od19l eGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCk7Cj4gICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJ T047Cj4gIH0KPiAKPiBAQCAtMzY2NCwxOCArMzY2MiwzMyBAQCB2b2lkIHZteF92bWV4aXRfaGFu ZGxlcihzdHJ1Y3QgY3B1X3VzZXJfcmVncwo+ICpyZWdzKQo+ICAgICAgICAgIGJyZWFrOwo+ICAg ICAgY2FzZSBFWElUX1JFQVNPTl9NU1JfUkVBRDoKPiAgICAgIHsKPiAtICAgICAgICB1aW50NjRf dCBtc3JfY29udGVudDsKPiAtICAgICAgICBpZiAoIGh2bV9tc3JfcmVhZF9pbnRlcmNlcHQocmVn cy0+X2VjeCwgJm1zcl9jb250ZW50KSA9PQo+IFg4NkVNVUxfT0tBWSApCj4gKyAgICAgICAgdWlu dDY0X3QgbXNyX2NvbnRlbnQgPSAwOwo+ICsKPiArICAgICAgICBzd2l0Y2ggKCBodm1fbXNyX3Jl YWRfaW50ZXJjZXB0KHJlZ3MtPl9lY3gsICZtc3JfY29udGVudCkgKQo+ICAgICAgICAgIHsKPiAr ICAgICAgICBjYXNlIFg4NkVNVUxfT0tBWToKPiAgICAgICAgICAgICAgbXNyX3NwbGl0KHJlZ3Ms IG1zcl9jb250ZW50KTsKPiAgICAgICAgICAgICAgdXBkYXRlX2d1ZXN0X2VpcCgpOyAvKiBTYWZl OiBSRE1TUiAqLwo+ICsgICAgICAgICAgICBicmVhazsKPiArCj4gKyAgICAgICAgY2FzZSBYODZF TVVMX0VYQ0VQVElPTjoKPiArICAgICAgICAgICAgaHZtX2luamVjdF9od19leGNlcHRpb24oVFJB UF9ncF9mYXVsdCwgMCk7Cj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAgIH0KPiAgICAg ICAgICBicmVhazsKPiAgICAgIH0KPiAKPiAgICAgIGNhc2UgRVhJVF9SRUFTT05fTVNSX1dSSVRF Ogo+IC0gICAgICAgIGlmICggaHZtX21zcl93cml0ZV9pbnRlcmNlcHQocmVncy0+X2VjeCwgbXNy X2ZvbGQocmVncyksIDEpID09Cj4gWDg2RU1VTF9PS0FZICkKPiArICAgICAgICBzd2l0Y2ggKCBo dm1fbXNyX3dyaXRlX2ludGVyY2VwdChyZWdzLT5fZWN4LCBtc3JfZm9sZChyZWdzKSwgMSkgKQo+ ICsgICAgICAgIHsKPiArICAgICAgICBjYXNlIFg4NkVNVUxfT0tBWToKPiAgICAgICAgICAgICAg dXBkYXRlX2d1ZXN0X2VpcCgpOyAvKiBTYWZlOiBXUk1TUiAqLwo+ICsgICAgICAgICAgICBicmVh azsKPiArCj4gKyAgICAgICAgY2FzZSBYODZFTVVMX0VYQ0VQVElPTjoKPiArICAgICAgICAgICAg aHZtX2luamVjdF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCk7Cj4gKyAgICAgICAgICAg IGJyZWFrOwo+ICsgICAgICAgIH0KPiAgICAgICAgICBicmVhazsKPiAKPiAgICAgIGNhc2UgRVhJ VF9SRUFTT05fVk1YT0ZGOgo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92dm14 LmMKPiBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3Z2bXguYwo+IGluZGV4IGY2YTI1YTYuLmM4MzBk MTYgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS92bXgvdnZteC5jCj4gKysrIGIveGVu L2FyY2gveDg2L2h2bS92bXgvdnZteC5jCj4gQEAgLTEwMzIsNiArMTAzMiw3IEBAIHN0YXRpYyB2 b2lkIGxvYWRfc2hhZG93X2d1ZXN0X3N0YXRlKHN0cnVjdCB2Y3B1Cj4gKnYpCj4gICAgICBzdHJ1 Y3QgbmVzdGVkdmNwdSAqbnZjcHUgPSAmdmNwdV9uZXN0ZWRodm0odik7Cj4gICAgICB1MzIgY29u dHJvbDsKPiAgICAgIHU2NCBjcl9naF9tYXNrLCBjcl9yZWFkX3NoYWRvdzsKPiArICAgIGludCBy YzsKPiAKPiAgICAgIHN0YXRpYyBjb25zdCB1MTYgdm1lbnRyeV9maWVsZHNbXSA9IHsKPiAgICAg ICAgICBWTV9FTlRSWV9JTlRSX0lORk8sCj4gQEAgLTEwNTMsOCArMTA1NCwxMiBAQCBzdGF0aWMg dm9pZCBsb2FkX3NoYWRvd19ndWVzdF9zdGF0ZShzdHJ1Y3QgdmNwdQo+ICp2KQo+ICAgICAgaWYg KCBjb250cm9sICYgVk1fRU5UUllfTE9BRF9HVUVTVF9QQVQgKQo+ICAgICAgICAgIGh2bV9zZXRf Z3Vlc3RfcGF0KHYsIGdldF92dm1jcyh2LCBHVUVTVF9QQVQpKTsKPiAgICAgIGlmICggY29udHJv bCAmIFZNX0VOVFJZX0xPQURfUEVSRl9HTE9CQUxfQ1RSTCApCj4gLSAgICAgICAgaHZtX21zcl93 cml0ZV9pbnRlcmNlcHQoTVNSX0NPUkVfUEVSRl9HTE9CQUxfQ1RSTCwKPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnZXRfdnZtY3ModiwgR1VFU1RfUEVSRl9HTE9CQUxfQ1RSTCks IDApOwo+ICsgICAgewo+ICsgICAgICAgIHJjID0gaHZtX21zcl93cml0ZV9pbnRlcmNlcHQoTVNS X0NPUkVfUEVSRl9HTE9CQUxfQ1RSTCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGdldF92dm1jcyh2LCBHVUVTVF9QRVJGX0dMT0JBTF9DVFJMKSwgMCk7Cj4gKyAgICAg ICAgaWYgKCByYyA9PSBYODZFTVVMX0VYQ0VQVElPTiApCj4gKyAgICAgICAgICAgIGh2bV9pbmpl Y3RfaHdfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDApOwo+ICsgICAgfQo+IAo+ICAgICAgaHZt X2Z1bmNzLnNldF90c2Nfb2Zmc2V0KHYsIHYtPmFyY2guaHZtX3ZjcHUuY2FjaGVfdHNjX29mZnNl dCwgMCk7Cj4gCj4gQEAgLTEyMjIsNyArMTIyNyw3IEBAIHN0YXRpYyB2b2lkIHN5bmNfdnZtY3Nf cm8oc3RydWN0IHZjcHUgKnYpCj4gCj4gIHN0YXRpYyB2b2lkIGxvYWRfdnZtY3NfaG9zdF9zdGF0 ZShzdHJ1Y3QgdmNwdSAqdikKPiAgewo+IC0gICAgaW50IGk7Cj4gKyAgICBpbnQgaSwgcmM7Cj4g ICAgICB1NjQgcjsKPiAgICAgIHUzMiBjb250cm9sOwo+IAo+IEBAIC0xMjQwLDggKzEyNDUsMTIg QEAgc3RhdGljIHZvaWQgbG9hZF92dm1jc19ob3N0X3N0YXRlKHN0cnVjdCB2Y3B1ICp2KQo+ICAg ICAgaWYgKCBjb250cm9sICYgVk1fRVhJVF9MT0FEX0hPU1RfUEFUICkKPiAgICAgICAgICBodm1f c2V0X2d1ZXN0X3BhdCh2LCBnZXRfdnZtY3ModiwgSE9TVF9QQVQpKTsKPiAgICAgIGlmICggY29u dHJvbCAmIFZNX0VYSVRfTE9BRF9QRVJGX0dMT0JBTF9DVFJMICkKPiAtICAgICAgICBodm1fbXNy X3dyaXRlX2ludGVyY2VwdChNU1JfQ09SRV9QRVJGX0dMT0JBTF9DVFJMLAo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdldF92dm1jcyh2LCBIT1NUX1BFUkZfR0xPQkFMX0NUUkwp LCAxKTsKPiArICAgIHsKPiArICAgICAgICByYyA9IGh2bV9tc3Jfd3JpdGVfaW50ZXJjZXB0KE1T Ul9DT1JFX1BFUkZfR0xPQkFMX0NUUkwsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnZXRfdnZtY3ModiwgSE9TVF9QRVJGX0dMT0JBTF9DVFJMKSwgMSk7Cj4gKyAgICAg ICAgaWYgKCByYyA9PSBYODZFTVVMX0VYQ0VQVElPTiApCj4gKyAgICAgICAgICAgIGh2bV9pbmpl Y3RfaHdfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDApOwo+ICsgICAgfQo+IAo+ICAgICAgaHZt X2Z1bmNzLnNldF90c2Nfb2Zmc2V0KHYsIHYtPmFyY2guaHZtX3ZjcHUuY2FjaGVfdHNjX29mZnNl dCwgMCk7Cj4gCj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N1cHBvcnQu aCBiL3hlbi9pbmNsdWRlL2FzbS0KPiB4ODYvaHZtL3N1cHBvcnQuaAo+IGluZGV4IDI2Mjk1NWQu LjVlMjU2OTggMTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc3VwcG9ydC5o Cj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc3VwcG9ydC5oCj4gQEAgLTEyMSwxMyAr MTIxLDE5IEBAIGludCBodm1fc2V0X2VmZXIodWludDY0X3QgdmFsdWUpOwo+ICBpbnQgaHZtX3Nl dF9jcjAodW5zaWduZWQgbG9uZyB2YWx1ZSwgYm9vbF90IG1heV9kZWZlcik7Cj4gIGludCBodm1f c2V0X2NyMyh1bnNpZ25lZCBsb25nIHZhbHVlLCBib29sX3QgbWF5X2RlZmVyKTsKPiAgaW50IGh2 bV9zZXRfY3I0KHVuc2lnbmVkIGxvbmcgdmFsdWUsIGJvb2xfdCBtYXlfZGVmZXIpOwo+IC1pbnQg aHZtX21zcl9yZWFkX2ludGVyY2VwdCh1bnNpZ25lZCBpbnQgbXNyLCB1aW50NjRfdCAqbXNyX2Nv bnRlbnQpOwo+IC1pbnQgaHZtX21zcl93cml0ZV9pbnRlcmNlcHQoCj4gLSAgICB1bnNpZ25lZCBp bnQgbXNyLCB1aW50NjRfdCBtc3JfY29udGVudCwgYm9vbF90IG1heV9kZWZlcik7Cj4gIGludCBo dm1fbW92X3RvX2NyKHVuc2lnbmVkIGludCBjciwgdW5zaWduZWQgaW50IGdwcik7Cj4gIGludCBo dm1fbW92X2Zyb21fY3IodW5zaWduZWQgaW50IGNyLCB1bnNpZ25lZCBpbnQgZ3ByKTsKPiAgdm9p ZCBodm1fdWRfaW50ZXJjZXB0KHN0cnVjdCBjcHVfdXNlcl9yZWdzICopOwo+IAo+ICsvKgo+ICsg KiBNYXkgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OLCBhdCB3aGljaCBwb2ludCB0aGUgY2FsbGVy IGlzIHJlc3BvbnNpYmxlCj4gZm9yCj4gKyAqIGluamVjdGluZyBhICNHUCBmYXVsdC4gIFVzZWQg dG8gc3VwcG9ydCBzcGVjdWxhdGl2ZSByZWFkcy4KPiArICovCj4gK2ludCBfX211c3RfY2hlY2sg aHZtX21zcl9yZWFkX2ludGVyY2VwdCgKPiArICAgIHVuc2lnbmVkIGludCBtc3IsIHVpbnQ2NF90 ICptc3JfY29udGVudCk7Cj4gK2ludCBfX211c3RfY2hlY2sgaHZtX21zcl93cml0ZV9pbnRlcmNl cHQoCj4gKyAgICB1bnNpZ25lZCBpbnQgbXNyLCB1aW50NjRfdCBtc3JfY29udGVudCwgYm9vbF90 IG1heV9kZWZlcik7Cj4gKwo+ICAjZW5kaWYgLyogX19BU01fWDg2X0hWTV9TVVBQT1JUX0hfXyAq Lwo+IAo+ICAvKgo+IC0tCj4gMi4xLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK