From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH 4/4] x86emul: correct FPU code/data pointers and opcode handling Date: Tue, 14 Mar 2017 09:21:19 +0000 Message-ID: <1219c66fcee547a881dba18f215d3875@AMSPEX02CL03.citrite.net> References: <58C688FF0200007800142615@prv-mh.provo.novell.com> <58C688FF0200007800142615@prv-mh.provo.novell.com> <58C68B25020000780014269F@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cnidu-0006fb-9e for xen-devel@lists.xenproject.org; Tue, 14 Mar 2017 09:21:22 +0000 In-Reply-To: <58C68B25020000780014269F@prv-mh.provo.novell.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: 'Jan Beulich' , xen-devel Cc: Andrew Cooper List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IEphbiBCZXVsaWNoIFttYWlsdG86 SkJldWxpY2hAc3VzZS5jb21dCj4gU2VudDogMTMgTWFyY2ggMjAxNyAxMTowNgo+IFRvOiB4ZW4t ZGV2ZWwgPHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZz4KPiBDYzogQW5kcmV3IENvb3Bl ciA8QW5kcmV3LkNvb3BlcjNAY2l0cml4LmNvbT47IFBhdWwgRHVycmFudAo+IDxQYXVsLkR1cnJh bnRAY2l0cml4LmNvbT4KPiBTdWJqZWN0OiBbUEFUQ0ggNC80XSB4ODZlbXVsOiBjb3JyZWN0IEZQ VSBjb2RlL2RhdGEgcG9pbnRlcnMgYW5kIG9wY29kZQo+IGhhbmRsaW5nCj4gCj4gUHJldmVudCBs ZWFraW5nIHRoZSBoeXBlcnZpc29yIG9uZXMgKHN0b3JlZCBieSBoYXJkd2FyZSBkdXJpbmcgc3R1 Ygo+IGV4ZWN1dGlvbiksIGF0IG9uY2UgbWFraW5nIHN1cmUgdGhlIGd1ZXN0IHNlZXMgY29ycmVj dCB2YWx1ZXMgdGhlcmUuCj4gVGhpcyBwaWdneWJhY2tzIG9uIHRoZSBiYWNrb3V0IGxvZ2ljIHVz ZWQgdG8gZGVhbCB3aXRoIHdyaXRlIGZhdWx0cyBvZgo+IEZQVSBpbnNucy4KPiAKPiBEZWxpYmVy YXRlbHkgaWdub3JlIHRoZSBOT19GUFVfU0VMIGZlYXR1cmUgaGVyZTogSG9ub3JpbmcgaXQgd291 bGQKPiBtZXJlbHkgbWVhbiBleHRyYSBjb2RlIHdpdGggbm8gYmVuZWZpdCAob25jZSB3ZSBYUlNU T1Igc3RhdGUsIHRoZQo+IHNlbGVjdG9yIHZhbHVlcyB3aWxsIHNpbXBseSBiZSBsb3N0IGFueXdh eSkuCj4gCj4gU2lnbmVkLW9mZi1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgo+ IAoKZW11bGF0ZS5jIHBhcnRzLi4uCgpSZXZpZXdlZC1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1 cnJhbnRAY2l0cml4LmNvbT4KCj4gLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3g4Nl9l bXVsYXRlLmMKPiArKysgYi90b29scy90ZXN0cy94ODZfZW11bGF0b3IveDg2X2VtdWxhdGUuYwo+ IEBAIC0xNDAsNyArMTQwLDggQEAgaW50IGVtdWxfdGVzdF9nZXRfZnB1KAo+IAo+ICB2b2lkIGVt dWxfdGVzdF9wdXRfZnB1KAo+ICAgICAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQsCj4g LSAgICBlbnVtIHg4Nl9lbXVsYXRlX2ZwdV90eXBlIGJhY2tvdXQpCj4gKyAgICBlbnVtIHg4Nl9l bXVsYXRlX2ZwdV90eXBlIGJhY2tvdXQsCj4gKyAgICBjb25zdCBzdHJ1Y3QgeDg2X2VtdWxfZnB1 X2F1eCAqYXV4KQo+ICB7Cj4gICAgICAvKiBUQkQgKi8KPiAgfQo+IC0tLSBhL3Rvb2xzL3Rlc3Rz L3g4Nl9lbXVsYXRvci94ODZfZW11bGF0ZS5oCj4gKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxh dG9yL3g4Nl9lbXVsYXRlLmgKPiBAQCAtMTgxLDQgKzE4MSw1IEBAIGludCBlbXVsX3Rlc3RfZ2V0 X2ZwdSgKPiAKPiAgdm9pZCBlbXVsX3Rlc3RfcHV0X2ZwdSgKPiAgICAgIHN0cnVjdCB4ODZfZW11 bGF0ZV9jdHh0ICpjdHh0LAo+IC0gICAgZW51bSB4ODZfZW11bGF0ZV9mcHVfdHlwZSBiYWNrb3V0 KTsKPiArICAgIGVudW0geDg2X2VtdWxhdGVfZnB1X3R5cGUgYmFja291dCwKPiArICAgIGNvbnN0 IHN0cnVjdCB4ODZfZW11bF9mcHVfYXV4ICphdXgpOwo+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0v ZW11bGF0ZS5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKPiBAQCAtMTY1OCwx MiArMTY1OCw3MyBAQCBzdGF0aWMgaW50IGh2bWVtdWxfZ2V0X2ZwdSgKPiAKPiAgc3RhdGljIHZv aWQgaHZtZW11bF9wdXRfZnB1KAo+ICAgICAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQs Cj4gLSAgICBlbnVtIHg4Nl9lbXVsYXRlX2ZwdV90eXBlIGJhY2tvdXQpCj4gKyAgICBlbnVtIHg4 Nl9lbXVsYXRlX2ZwdV90eXBlIGJhY2tvdXQsCj4gKyAgICBjb25zdCBzdHJ1Y3QgeDg2X2VtdWxf ZnB1X2F1eCAqYXV4KQo+ICB7Cj4gICAgICBzdHJ1Y3QgdmNwdSAqY3VyciA9IGN1cnJlbnQ7Cj4g Cj4gICAgICBjdXJyLT5hcmNoLmh2bV92Y3B1LmZwdV9leGNlcHRpb25fY2FsbGJhY2sgPSBOVUxM Owo+IAo+ICsgICAgaWYgKCBhdXggKQo+ICsgICAgewo+ICsgICAgICAgIHR5cGVvZihjdXJyLT5h cmNoLnhzYXZlX2FyZWEtPmZwdV9zc2UpICpmcHVfY3R4dCA9IGN1cnItCj4gPmFyY2guZnB1X2N0 eHQ7Cj4gKyAgICAgICAgYm9vbCBkdmFsID0gYXV4LT5kdmFsOwo+ICsgICAgICAgIGludCBtb2Rl ID0gaHZtX2d1ZXN0X3g4Nl9tb2RlKGN1cnIpOwo+ICsKPiArICAgICAgICBBU1NFUlQoYmFja291 dCA9PSBYODZFTVVMX0ZQVV9ub25lKTsKPiArICAgICAgICAvKgo+ICsgICAgICAgICAqIExhdGNo IGN1cnJlbnQgcmVnaXN0ZXIgc3RhdGUgc28gdGhhdCB3ZSBjYW4gcmVwbGFjZSBGSVAvRkRQL0ZP UAo+ICsgICAgICAgICAqICh3aGljaCBoYXZlIHZhbHVlcyByZXN1bHRpbmcgZnJvbSBvdXIgb3du IGludm9jYXRpb24gb2YgdGhlIEZQVQo+ICsgICAgICAgICAqIGluc3RydWN0aW9uIGR1cmluZyBl bXVsYXRpb24pLgo+ICsgICAgICAgICAqIE5COiBTZWUgYWxzbyB0aGUgY29tbWVudCBpbiBodm1l bXVsX2dldF9mcHUoKTsgd2UgZG9uJ3QgbmVlZCB0bwo+ICsgICAgICAgICAqIHNldCAtPmZwdV9k aXJ0aWVkIGhlcmUgYXMgaXQgaXMgZ29pbmcgdG8gYmUgY2xlYXJlZCBiZWxvdywgYW5kCj4gKyAg ICAgICAgICogd2UgYWxzbyBkb24ndCBuZWVkIHRvIHJlbG9hZCBGQ1cgYXMgd2UncmUgZm9yY2lu ZyBmdWxsIHN0YXRlIHRvCj4gKyAgICAgICAgICogYmUgcmVsb2FkZWQgYW55d2F5Lgo+ICsgICAg ICAgICAqLwo+ICsgICAgICAgIHNhdmVfZnB1X2VuYWJsZSgpOwo+ICsKPiArICAgICAgICBpZiAo IGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9GRFBfRVhDUF9PTkxZKSAmJgo+ICsgICAgICAgICAg ICAgIShmcHVfY3R4dC0+ZnN3ICYgfmZwdV9jdHh0LT5mY3cgJiAweDAwM2YpICkKPiArICAgICAg ICAgICAgZHZhbCA9IGZhbHNlOwo+ICsKPiArICAgICAgICBzd2l0Y2ggKCBtb2RlICkKPiArICAg ICAgICB7Cj4gKyAgICAgICAgY2FzZSA4Ogo+ICsgICAgICAgICAgICBmcHVfY3R4dC0+ZmlwLmFk ZHIgPSBhdXgtPmlwOwo+ICsgICAgICAgICAgICBpZiAoIGR2YWwgKQo+ICsgICAgICAgICAgICAg ICAgZnB1X2N0eHQtPmZkcC5hZGRyID0gYXV4LT5kcDsKPiArICAgICAgICAgICAgZnB1X2N0eHQt PnhbRlBVX1dPUkRfU0laRV9PRkZTRVRdID0gODsKPiArICAgICAgICAgICAgYnJlYWs7Cj4gKwo+ ICsgICAgICAgIGNhc2UgNDogY2FzZSAyOgo+ICsgICAgICAgICAgICBmcHVfY3R4dC0+ZmlwLm9m ZnMgPSBhdXgtPmlwOwo+ICsgICAgICAgICAgICBmcHVfY3R4dC0+ZmlwLnNlbCAgPSBhdXgtPmNz Owo+ICsgICAgICAgICAgICBpZiAoIGR2YWwgKQo+ICsgICAgICAgICAgICB7Cj4gKyAgICAgICAg ICAgICAgICBmcHVfY3R4dC0+ZmRwLm9mZnMgPSBhdXgtPmRwOwo+ICsgICAgICAgICAgICAgICAg ZnB1X2N0eHQtPmZkcC5zZWwgID0gYXV4LT5kczsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAg ICAgICBmcHVfY3R4dC0+eFtGUFVfV09SRF9TSVpFX09GRlNFVF0gPSBtb2RlOwo+ICsgICAgICAg ICAgICBicmVhazsKPiArCj4gKyAgICAgICAgY2FzZSAwOiBjYXNlIDE6Cj4gKyAgICAgICAgICAg IGZwdV9jdHh0LT5maXAuYWRkciA9IGF1eC0+aXAgfCAoYXV4LT5jcyA8PCA0KTsKPiArICAgICAg ICAgICAgaWYgKCBkdmFsICkKPiArICAgICAgICAgICAgICAgIGZwdV9jdHh0LT5mZHAuYWRkciA9 IGF1eC0+ZHAgfCAoYXV4LT5kcyA8PCA0KTsKPiArICAgICAgICAgICAgZnB1X2N0eHQtPnhbRlBV X1dPUkRfU0laRV9PRkZTRVRdID0gMjsKPiArICAgICAgICAgICAgYnJlYWs7Cj4gKwo+ICsgICAg ICAgIGRlZmF1bHQ6Cj4gKyAgICAgICAgICAgIEFTU0VSVF9VTlJFQUNIQUJMRSgpOwo+ICsgICAg ICAgICAgICByZXR1cm47Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBmcHVfY3R4dC0+Zm9w ID0gYXV4LT5vcDsKPiArCj4gKyAgICAgICAgLyogUmUtdXNlIGJhY2tvdXQgY29kZSBiZWxvdy4g Ki8KPiArICAgICAgICBiYWNrb3V0ID0gWDg2RU1VTF9GUFVfZnB1Owo+ICsgICAgfQo+ICsKPiAg ICAgIGlmICggYmFja291dCA9PSBYODZFTVVMX0ZQVV9mcHUgKQo+ICAgICAgewo+ICAgICAgICAg IC8qCj4gLS0tIGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKPiArKysg Yi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwo+IEBAIC01MzYsNiArNTM2 LDU1IEBAIHN0cnVjdCBvcGVyYW5kIHsKPiAgICAgICAgICB1bnNpZ25lZCBsb25nICAgIG9mZjsK PiAgICAgIH0gbWVtOwo+ICB9Owo+ICsKPiArc3RydWN0IHg4Nl9lbXVsYXRlX3N0YXRlIHsKPiAr ICAgIHVuc2lnbmVkIGludCBvcF9ieXRlcywgYWRfYnl0ZXM7Cj4gKwo+ICsgICAgZW51bSB7Cj4g KyAgICAgICAgZXh0X25vbmUgPSB2ZXhfbm9uZSwKPiArICAgICAgICBleHRfMGYgICA9IHZleF8w ZiwKPiArICAgICAgICBleHRfMGYzOCA9IHZleF8wZjM4LAo+ICsgICAgICAgIGV4dF8wZjNhID0g dmV4XzBmM2EsCj4gKyAgICAgICAgLyoKPiArICAgICAgICAgKiBGb3IgWE9QIHVzZSB2YWx1ZXMg c3VjaCB0aGF0IHRoZSByZXNwZWN0aXZlIGluc3RydWN0aW9uIGZpZWxkCj4gKyAgICAgICAgICog Y2FuIGJlIHVzZWQgd2l0aG91dCBhZGp1c3RtZW50Lgo+ICsgICAgICAgICAqLwo+ICsgICAgICAg IGV4dF84ZjA4ID0gOCwKPiArICAgICAgICBleHRfOGYwOSwKPiArICAgICAgICBleHRfOGYwYSwK PiArICAgIH0gZXh0Owo+ICsgICAgdWludDhfdCBtb2RybSwgbW9kcm1fbW9kLCBtb2RybV9yZWcs IG1vZHJtX3JtOwo+ICsgICAgdWludDhfdCByZXhfcHJlZml4Owo+ICsgICAgYm9vbCBsb2NrX3By ZWZpeDsKPiArICAgIGJvb2wgbm90XzY0Yml0OyAvKiBJbnN0cnVjdGlvbiBub3QgYXZhaWxhYmxl IGluIDY0Yml0LiAqLwo+ICsgICAgYm9vbCBmcHVfY3RybDsgIC8qIEluc3RydWN0aW9uIGlzIGFu IEZQVSBjb250cm9sIG9uZS4gKi8KPiArICAgIG9wY29kZV9kZXNjX3QgZGVzYzsKPiArICAgIHVu aW9uIHZleCB2ZXg7Cj4gKyAgICB1bmlvbiBldmV4IGV2ZXg7Cj4gKyAgICBlbnVtIHNpbWRfb3Bz aXplIHNpbWRfc2l6ZTsKPiArCj4gKyAgICAvKgo+ICsgICAgICogRGF0YSBvcGVyYW5kIGVmZmVj dGl2ZSBhZGRyZXNzICh1c3VhbGx5IGNvbXB1dGVkIGZyb20gTW9kUk0pLgo+ICsgICAgICogRGVm YXVsdCBpcyBhIG1lbW9yeSBvcGVyYW5kIHJlbGF0aXZlIHRvIHNlZ21lbnQgRFMuCj4gKyAgICAg Ki8KPiArICAgIHN0cnVjdCBvcGVyYW5kIGVhOwo+ICsKPiArICAgIC8qIEltbWVkaWF0ZSBvcGVy YW5kIHZhbHVlcywgaWYgYW55LiBVc2Ugb3RoZXJ3aXNlIHVudXNlZCBmaWVsZHMuICovCj4gKyNk ZWZpbmUgaW1tMSBlYS52YWwKPiArI2RlZmluZSBpbW0yIGVhLm9yaWdfdmFsCj4gKwo+ICsgICAg dW5zaWduZWQgbG9uZyBpcDsKPiArICAgIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzOwo+ICsK PiArI2lmbmRlZiBOREVCVUcKPiArICAgIC8qCj4gKyAgICAgKiBUcmFjayBjYWxsZXIgb2YgeDg2 X2RlY29kZV9pbnNuKCkgdG8gc3BvdCBtaXNzaW5nIGFzIHdlbGwgYXMKPiArICAgICAqIHByZW1h dHVyZSBjYWxscyB0byB4ODZfZW11bGF0ZV9mcmVlX3N0YXRlKCkuCj4gKyAgICAgKi8KPiArICAg IHZvaWQgKmNhbGxlcjsKPiArI2VuZGlmCj4gK307Cj4gKwo+ICAjaWZkZWYgX194ODZfNjRfXwo+ ICAjZGVmaW5lIFBUUl9QT0lTT04gKCh2b2lkICopMHg4MDg2MDAwMDAwMDA4MDg2VUwpIC8qIG5v bi1jYW5vbmljYWwgKi8KPiAgI2Vsc2UKPiBAQCAtMTAyNywxMyArMTA3Niw0OCBAQCBkbyB7Cj4g IHN0YXRpYyB2b2lkIHB1dF9mcHUoCj4gICAgICBzdHJ1Y3QgZnB1X2luc25fY3R4dCAqZmljLAo+ ICAgICAgYm9vbCBmYWlsZWRfbGF0ZSwKPiArICAgIGNvbnN0IHN0cnVjdCB4ODZfZW11bGF0ZV9z dGF0ZSAqc3RhdGUsCj4gICAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwKPiAgICAg IGNvbnN0IHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMgKm9wcykKPiAgewo+ICAgICAgaWYgKCB1bmxp a2VseShmYWlsZWRfbGF0ZSkgJiYgZmljLT50eXBlID09IFg4NkVNVUxfRlBVX2ZwdSApCj4gLSAg ICAgICAgb3BzLT5wdXRfZnB1KGN0eHQsIFg4NkVNVUxfRlBVX2ZwdSk7Cj4gKyAgICAgICAgb3Bz LT5wdXRfZnB1KGN0eHQsIFg4NkVNVUxfRlBVX2ZwdSwgTlVMTCk7Cj4gKyAgICBlbHNlIGlmICgg dW5saWtlbHkoZmljLT50eXBlID09IFg4NkVNVUxfRlBVX2ZwdSkgJiYgIXN0YXRlLT5mcHVfY3Ry bCApCj4gKyAgICB7Cj4gKyAgICAgICAgc3RydWN0IHg4Nl9lbXVsX2ZwdV9hdXggYXV4ID0gewo+ ICsgICAgICAgICAgICAuaXAgPSBjdHh0LT5yZWdzLT5yKGlwKSwKPiArICAgICAgICAgICAgLmNz ID0gY3R4dC0+cmVncy0+Y3MsCj4gKyAgICAgICAgICAgIC5vcCA9ICgoY3R4dC0+b3Bjb2RlICYg NykgPDwgOCkgfCBzdGF0ZS0+bW9kcm0sCj4gKyAgICAgICAgfTsKPiArICAgICAgICBzdHJ1Y3Qg c2VnbWVudF9yZWdpc3RlciBzcmVnOwo+ICsKPiArICAgICAgICBpZiAoIG9wcy0+cmVhZF9zZWdt ZW50ICYmCj4gKyAgICAgICAgICAgICBvcHMtPnJlYWRfc2VnbWVudCh4ODZfc2VnX2NzLCAmc3Jl ZywgY3R4dCkgPT0gWDg2RU1VTF9PS0FZICkKPiArICAgICAgICAgICAgYXV4LmNzID0gc3JlZy5z ZWw7Cj4gKyAgICAgICAgaWYgKCBzdGF0ZS0+ZWEudHlwZSA9PSBPUF9NRU0gKQo+ICsgICAgICAg IHsKPiArICAgICAgICAgICAgYXV4LmRwID0gc3RhdGUtPmVhLm1lbS5vZmY7Cj4gKyAgICAgICAg ICAgIGlmICggb3BzLT5yZWFkX3NlZ21lbnQgJiYKPiArICAgICAgICAgICAgICAgICBvcHMtPnJl YWRfc2VnbWVudChzdGF0ZS0+ZWEubWVtLnNlZywgJnNyZWcsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY3R4dCkgPT0gWDg2RU1VTF9PS0FZICkKPiArICAgICAgICAgICAg ICAgIGF1eC5kcyA9IHNyZWcuc2VsOwo+ICsgICAgICAgICAgICBlbHNlCj4gKyAgICAgICAgICAg ICAgICBzd2l0Y2ggKCBzdGF0ZS0+ZWEubWVtLnNlZyApCj4gKyAgICAgICAgICAgICAgICB7Cj4g KyAgICAgICAgICAgICAgICBjYXNlIHg4Nl9zZWdfY3M6IGF1eC5kcyA9IGN0eHQtPnJlZ3MtPmNz OyBicmVhazsKPiArICAgICAgICAgICAgICAgIGNhc2UgeDg2X3NlZ19kczogYXV4LmRzID0gY3R4 dC0+cmVncy0+ZHM7IGJyZWFrOwo+ICsgICAgICAgICAgICAgICAgY2FzZSB4ODZfc2VnX2VzOiBh dXguZHMgPSBjdHh0LT5yZWdzLT5lczsgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgICBjYXNlIHg4 Nl9zZWdfZnM6IGF1eC5kcyA9IGN0eHQtPnJlZ3MtPmZzOyBicmVhazsKPiArICAgICAgICAgICAg ICAgIGNhc2UgeDg2X3NlZ19nczogYXV4LmRzID0gY3R4dC0+cmVncy0+Z3M7IGJyZWFrOwo+ICsg ICAgICAgICAgICAgICAgY2FzZSB4ODZfc2VnX3NzOiBhdXguZHMgPSBjdHh0LT5yZWdzLT5zczsg YnJlYWs7Cj4gKyAgICAgICAgICAgICAgICBkZWZhdWx0OiAgICAgICAgIEFTU0VSVF9VTlJFQUNI QUJMRSgpOyAgICBicmVhazsKPiArICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgYXV4 LmR2YWwgPSB0cnVlOwo+ICsgICAgICAgIH0KPiArICAgICAgICBvcHMtPnB1dF9mcHUoY3R4dCwg WDg2RU1VTF9GUFVfbm9uZSwgJmF1eCk7Cj4gKyAgICB9Cj4gICAgICBlbHNlIGlmICggZmljLT50 eXBlICE9IFg4NkVNVUxfRlBVX25vbmUgJiYgb3BzLT5wdXRfZnB1ICkKPiAtICAgICAgICBvcHMt PnB1dF9mcHUoY3R4dCwgWDg2RU1VTF9GUFVfbm9uZSk7Cj4gKyAgICAgICAgb3BzLT5wdXRfZnB1 KGN0eHQsIFg4NkVNVUxfRlBVX25vbmUsIE5VTEwpOwo+ICB9Cj4gCj4gIHN0YXRpYyBpbmxpbmUg Ym9vbCBmcHVfY2hlY2tfd3JpdGUodm9pZCkKPiBAQCAtMjA4Niw1MyArMjE3MCw2IEBAIGludCB4 ODZlbXVsX3VuaGFuZGxlYWJsZV9ydygKPiAgICAgIHJldHVybiBYODZFTVVMX1VOSEFORExFQUJM RTsKPiAgfQo+IAo+IC1zdHJ1Y3QgeDg2X2VtdWxhdGVfc3RhdGUgewo+IC0gICAgdW5zaWduZWQg aW50IG9wX2J5dGVzLCBhZF9ieXRlczsKPiAtCj4gLSAgICBlbnVtIHsKPiAtICAgICAgICBleHRf bm9uZSA9IHZleF9ub25lLAo+IC0gICAgICAgIGV4dF8wZiAgID0gdmV4XzBmLAo+IC0gICAgICAg IGV4dF8wZjM4ID0gdmV4XzBmMzgsCj4gLSAgICAgICAgZXh0XzBmM2EgPSB2ZXhfMGYzYSwKPiAt ICAgICAgICAvKgo+IC0gICAgICAgICAqIEZvciBYT1AgdXNlIHZhbHVlcyBzdWNoIHRoYXQgdGhl IHJlc3BlY3RpdmUgaW5zdHJ1Y3Rpb24gZmllbGQKPiAtICAgICAgICAgKiBjYW4gYmUgdXNlZCB3 aXRob3V0IGFkanVzdG1lbnQuCj4gLSAgICAgICAgICovCj4gLSAgICAgICAgZXh0XzhmMDggPSA4 LAo+IC0gICAgICAgIGV4dF84ZjA5LAo+IC0gICAgICAgIGV4dF84ZjBhLAo+IC0gICAgfSBleHQ7 Cj4gLSAgICB1aW50OF90IG1vZHJtLCBtb2RybV9tb2QsIG1vZHJtX3JlZywgbW9kcm1fcm07Cj4g LSAgICB1aW50OF90IHJleF9wcmVmaXg7Cj4gLSAgICBib29sIGxvY2tfcHJlZml4Owo+IC0gICAg Ym9vbCBub3RfNjRiaXQ7IC8qIEluc3RydWN0aW9uIG5vdCBhdmFpbGFibGUgaW4gNjRiaXQuICov Cj4gLSAgICBvcGNvZGVfZGVzY190IGRlc2M7Cj4gLSAgICB1bmlvbiB2ZXggdmV4Owo+IC0gICAg dW5pb24gZXZleCBldmV4Owo+IC0gICAgZW51bSBzaW1kX29wc2l6ZSBzaW1kX3NpemU7Cj4gLQo+ IC0gICAgLyoKPiAtICAgICAqIERhdGEgb3BlcmFuZCBlZmZlY3RpdmUgYWRkcmVzcyAodXN1YWxs eSBjb21wdXRlZCBmcm9tIE1vZFJNKS4KPiAtICAgICAqIERlZmF1bHQgaXMgYSBtZW1vcnkgb3Bl cmFuZCByZWxhdGl2ZSB0byBzZWdtZW50IERTLgo+IC0gICAgICovCj4gLSAgICBzdHJ1Y3Qgb3Bl cmFuZCBlYTsKPiAtCj4gLSAgICAvKiBJbW1lZGlhdGUgb3BlcmFuZCB2YWx1ZXMsIGlmIGFueS4g VXNlIG90aGVyd2lzZSB1bnVzZWQgZmllbGRzLiAqLwo+IC0jZGVmaW5lIGltbTEgZWEudmFsCj4g LSNkZWZpbmUgaW1tMiBlYS5vcmlnX3ZhbAo+IC0KPiAtICAgIHVuc2lnbmVkIGxvbmcgaXA7Cj4g LSAgICBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVnczsKPiAtCj4gLSNpZm5kZWYgTkRFQlVHCj4g LSAgICAvKgo+IC0gICAgICogVHJhY2sgY2FsbGVyIG9mIHg4Nl9kZWNvZGVfaW5zbigpIHRvIHNw b3QgbWlzc2luZyBhcyB3ZWxsIGFzCj4gLSAgICAgKiBwcmVtYXR1cmUgY2FsbHMgdG8geDg2X2Vt dWxhdGVfZnJlZV9zdGF0ZSgpLgo+IC0gICAgICovCj4gLSAgICB2b2lkICpjYWxsZXI7Cj4gLSNl bmRpZgo+IC19Owo+IC0KPiAgLyogSGVscGVyIGRlZmluaXRpb25zLiAqLwo+ICAjZGVmaW5lIG9w X2J5dGVzIChzdGF0ZS0+b3BfYnl0ZXMpCj4gICNkZWZpbmUgYWRfYnl0ZXMgKHN0YXRlLT5hZF9i eXRlcykKPiBAQCAtNDIzMSw4ICs0MjY4LDEwIEBAIHg4Nl9lbXVsYXRlKAo+ICAgICAgICAgICAg ICAgICAgZHN0LmJ5dGVzID0gNDsKPiAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAg ICAgICBjYXNlIDQ6IC8qIGZsZGVudiAtIFRPRE8gKi8KPiArICAgICAgICAgICAgICAgIHN0YXRl LT5mcHVfY3RybCA9IHRydWU7Cj4gICAgICAgICAgICAgICAgICBnb3RvIGNhbm5vdF9lbXVsYXRl Owo+ICAgICAgICAgICAgICBjYXNlIDU6IC8qIGZsZGN3IG0yYnl0ZSAqLwo+ICsgICAgICAgICAg ICAgICAgc3RhdGUtPmZwdV9jdHJsID0gdHJ1ZTsKPiAgICAgICAgICAgICAgICAgIGlmICggKHJj ID0gb3BzLT5yZWFkKGVhLm1lbS5zZWcsIGVhLm1lbS5vZmYsICZzcmMudmFsLAo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiwgY3R4dCkpICE9IFg4NkVNVUxfT0tBWSAp Cj4gICAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOwo+IEBAIC00MjQwLDggKzQyNzksMTAg QEAgeDg2X2VtdWxhdGUoCj4gICAgICAgICAgICAgICAgICBkc3QudHlwZSA9IE9QX05PTkU7Cj4g ICAgICAgICAgICAgICAgICBicmVhazsKPiAgICAgICAgICAgICAgY2FzZSA2OiAvKiBmbnN0ZW52 IC0gVE9ETyAqLwo+ICsgICAgICAgICAgICAgICAgc3RhdGUtPmZwdV9jdHJsID0gdHJ1ZTsKPiAg ICAgICAgICAgICAgICAgIGdvdG8gY2Fubm90X2VtdWxhdGU7Cj4gICAgICAgICAgICAgIGNhc2Ug NzogLyogZm5zdGN3IG0yYnl0ZSAqLwo+ICsgICAgICAgICAgICAgICAgc3RhdGUtPmZwdV9jdHJs ID0gdHJ1ZTsKPiAgICAgICAgICAgICAgICAgIGVtdWxhdGVfZnB1X2luc25fbWVtZHN0KCJmbnN0 Y3ciLCBkc3QudmFsKTsKPiAgICAgICAgICAgICAgICAgIGRzdC5ieXRlcyA9IDI7Cj4gICAgICAg ICAgICAgICAgICBicmVhazsKPiBAQCAtNDMzMCw2ICs0MzcxLDcgQEAgeDg2X2VtdWxhdGUoCj4g ICAgICAgICAgY2FzZSAweGUzOiAvKiBmbmluaXQgKi8KPiAgICAgICAgICBjYXNlIDB4ZTQ6IC8q IGZuc2V0cG0gLSAyODcgb25seSwgaWdub3JlZCBieSAzODcgKi8KPiAgICAgICAgICAvKiBjYXNl IDB4ZTU6IGZyc3RwbSAtIDI4NyBvbmx5LCAjVUQgb24gMzg3ICovCj4gKyAgICAgICAgICAgIHN0 YXRlLT5mcHVfY3RybCA9IHRydWU7Cj4gICAgICAgICAgICAgIGVtdWxhdGVfZnB1X2luc25fc3R1 YigweGRiLCBtb2RybSk7Cj4gICAgICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAgIGRlZmF1bHQ6 Cj4gQEAgLTQ0NzMsOCArNDUxNSwxMCBAQCB4ODZfZW11bGF0ZSgKPiAgICAgICAgICAgICAgICAg IGJyZWFrOwo+ICAgICAgICAgICAgICBjYXNlIDQ6IC8qIGZyc3RvciAtIFRPRE8gKi8KPiAgICAg ICAgICAgICAgY2FzZSA2OiAvKiBmbnNhdmUgLSBUT0RPICovCj4gKyAgICAgICAgICAgICAgICBz dGF0ZS0+ZnB1X2N0cmwgPSB0cnVlOwo+ICAgICAgICAgICAgICAgICAgZ290byBjYW5ub3RfZW11 bGF0ZTsKPiAgICAgICAgICAgICAgY2FzZSA3OiAvKiBmbnN0c3cgbTJieXRlICovCj4gKyAgICAg ICAgICAgICAgICBzdGF0ZS0+ZnB1X2N0cmwgPSB0cnVlOwo+ICAgICAgICAgICAgICAgICAgZW11 bGF0ZV9mcHVfaW5zbl9tZW1kc3QoImZuc3RzdyIsIGRzdC52YWwpOwo+ICAgICAgICAgICAgICAg ICAgZHN0LmJ5dGVzID0gMjsKPiAgICAgICAgICAgICAgICAgIGJyZWFrOwo+IEBAIC00NTQ3LDYg KzQ1OTEsNyBAQCB4ODZfZW11bGF0ZSgKPiAgICAgICAgICB7Cj4gICAgICAgICAgY2FzZSAweGUw Ogo+ICAgICAgICAgICAgICAvKiBmbnN0c3cgJWF4ICovCj4gKyAgICAgICAgICAgIHN0YXRlLT5m cHVfY3RybCA9IHRydWU7Cj4gICAgICAgICAgICAgIGRzdC5ieXRlcyA9IDI7Cj4gICAgICAgICAg ICAgIGRzdC50eXBlID0gT1BfUkVHOwo+ICAgICAgICAgICAgICBkc3QucmVnID0gKHZvaWQgKikm X3JlZ3MuYXg7Cj4gQEAgLTc4OTIsNyArNzkzNyw3IEBAIHg4Nl9lbXVsYXRlKAo+ICAgICAgfQo+ IAo+ICAgY29tcGxldGVfaW5zbjogLyogQ29tbWl0IHNoYWRvdyByZWdpc3RlciBzdGF0ZS4gKi8K PiAtICAgIHB1dF9mcHUoJmZpYywgZmFsc2UsIGN0eHQsIG9wcyk7Cj4gKyAgICBwdXRfZnB1KCZm aWMsIGZhbHNlLCBzdGF0ZSwgY3R4dCwgb3BzKTsKPiAKPiAgICAgIC8qIFplcm8gdGhlIHVwcGVy IDMyIGJpdHMgb2YgJXJpcCBpZiBub3QgaW4gNjQtYml0IG1vZGUuICovCj4gICAgICBpZiAoICFt b2RlXzY0Yml0KCkgKQo+IEBAIC03OTE3LDcgKzc5NjIsOCBAQCB4ODZfZW11bGF0ZSgKPiAKPiAg IGRvbmU6Cj4gICAgICBpZiAoIHJjICE9IFg4NkVNVUxfT0tBWSApCj4gLSAgICAgICAgcHV0X2Zw dSgmZmljLCBmaWMuaW5zbl9ieXRlcyA+IDAgJiYgZHN0LnR5cGUgPT0gT1BfTUVNLCBjdHh0LCBv cHMpOwo+ICsgICAgICAgIHB1dF9mcHUoJmZpYywgZmljLmluc25fYnl0ZXMgPiAwICYmIGRzdC50 eXBlID09IE9QX01FTSwKPiArICAgICAgICAgICAgICAgIHN0YXRlLCBjdHh0LCBvcHMpOwo+ICAg ICAgcHV0X3N0dWIoc3R1Yik7Cj4gICAgICByZXR1cm4gcmM7Cj4gICN1bmRlZiBzdGF0ZQo+IC0t LSBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oCj4gKysrIGIveGVuL2Fy Y2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmgKPiBAQCAtMTM1LDYgKzEzNSwxMyBAQCBz dHJ1Y3QgX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpIHNlZ21lCj4gICAgICB1aW50NjRfdCAg IGJhc2U7Cj4gIH07Cj4gCj4gK3N0cnVjdCB4ODZfZW11bF9mcHVfYXV4IHsKPiArICAgIHVuc2ln bmVkIGxvbmcgaXAsIGRwOwo+ICsgICAgdWludDE2X3QgY3MsIGRzOwo+ICsgICAgdW5zaWduZWQg aW50IG9wOjExOwo+ICsgICAgdW5zaWduZWQgaW50IGR2YWw6MTsKPiArfTsKPiArCj4gIC8qCj4g ICAqIFJldHVybiBjb2RlcyBmcm9tIHN0YXRlLWFjY2Vzc29yIGZ1bmN0aW9ucyBhbmQgZnJvbSB4 ODZfZW11bGF0ZSgpLgo+ICAgKi8KPiBAQCAtNDM5LDEwICs0NDYsMTIgQEAgc3RydWN0IHg4Nl9l bXVsYXRlX29wcwo+ICAgICAgICogIHRoZSBnZXRfZnB1IG9uZSBoYXZpbmcgZ290IGNhbGxlZCBi ZWZvcmUhCj4gICAgICAgKiBAYmFja291dDogVW5kbyB1cGRhdGVzIHRvIHRoZSBzcGVjaWZpZWQg cmVnaXN0ZXIgZmlsZSAoY2FuLCBiZXNpZGVzCj4gICAgICAgKiAgICAgICAgICAgWDg2RU1VTF9G UFVfbm9uZSwgb25seSBiZSBYODZFTVVMX0ZQVV9mcHUgYXQgcHJlc2VudCk7Cj4gKyAgICAgKiBA YXV4OiBQYWNrYWdlZCB1cCBGSVAvRkRQL0ZPUCB2YWx1ZXMgdG8gbG9hZCBpbnRvIEZQVS4KPiAg ICAgICAqLwo+ICAgICAgdm9pZCAoKnB1dF9mcHUpKAo+ICAgICAgICAgIHN0cnVjdCB4ODZfZW11 bGF0ZV9jdHh0ICpjdHh0LAo+IC0gICAgICAgIGVudW0geDg2X2VtdWxhdGVfZnB1X3R5cGUgYmFj a291dCk7Cj4gKyAgICAgICAgZW51bSB4ODZfZW11bGF0ZV9mcHVfdHlwZSBiYWNrb3V0LAo+ICsg ICAgICAgIGNvbnN0IHN0cnVjdCB4ODZfZW11bF9mcHVfYXV4ICphdXgpOwo+IAo+ICAgICAgLyog aW52bHBnOiBJbnZhbGlkYXRlIHBhZ2luZyBzdHJ1Y3R1cmVzIHdoaWNoIG1hcCBhZGRyZXNzZWQg Ynl0ZS4gKi8KPiAgICAgIGludCAoKmludmxwZykoCj4gCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==