From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH for 4.9 5/6] x86/emul: Drop swint_emulate infrastructure Date: Mon, 3 Apr 2017 08:36:08 +0000 Message-ID: References: <1490989853-21879-1-git-send-email-andrew.cooper3@citrix.com> <1490989853-21879-6-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: <1490989853-21879-6-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 , Julien Grall , "Tim (Xen.org)" , Jan Beulich List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IEFuZHJldyBDb29wZXIgW21haWx0 bzphbmRyZXcuY29vcGVyM0BjaXRyaXguY29tXQo+IFNlbnQ6IDMxIE1hcmNoIDIwMTcgMjA6NTEK PiBUbzogWGVuLWRldmVsIDx4ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZz4KPiBDYzogQW5kcmV3IENv b3BlciA8QW5kcmV3LkNvb3BlcjNAY2l0cml4LmNvbT47IEphbiBCZXVsaWNoCj4gPEpCZXVsaWNo QHN1c2UuY29tPjsgUGF1bCBEdXJyYW50IDxQYXVsLkR1cnJhbnRAY2l0cml4LmNvbT47IFRpbQo+ IChYZW4ub3JnKSA8dGltQHhlbi5vcmc+OyBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0u Y29tPgo+IFN1YmplY3Q6IFtQQVRDSCBmb3IgNC45IDUvNl0geDg2L2VtdWw6IERyb3Agc3dpbnRf ZW11bGF0ZSBpbmZyYXN0cnVjdHVyZQo+IAo+IFdpdGggdGhlIFNWTSBpbmplY3Rpb24gbG9naWMg Y2FwYWJsZSBvZiBkb2luZyBpdHMgb3duIGVtdWxhdGlvbiwgdGhlcmUgaXMgbm8KPiBuZWVkIGZv ciB0aGlzIGhhcmR3YXJlLXNwZWNpZmljIGFzc2lzdGFuY2UgaW4gdGhlIGNvbW1vbiBlbXVsYXRv ci4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRy aXguY29tPgoKZW11bGF0ZSBwYXJ0cy4uLgoKUmV2aWV3ZWQtYnk6IFBhdWwgRHVycmFudCA8cGF1 bC5kdXJyYW50QGNpdHJpeC5jb20+Cgo+IC0tLQo+IENDOiBKYW4gQmV1bGljaCA8SkJldWxpY2hA c3VzZS5jb20+Cj4gQ0M6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+Cj4g Q0M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgo+IENDOiBKdWxpZW4gR3JhbGwgPGp1bGllbi5n cmFsbEBhcm0uY29tPgo+IC0tLQo+ICB0b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRv ci9mdXp6LWVtdWwuYyB8ICAxOCArLS0KPiAgeGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMgICAg ICAgICAgICAgICAgICAgICAgfCAgIDcgLQo+ICB4ZW4vYXJjaC94ODYvbW0uYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMiAtCj4gIHhlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29t bW9uLmMgICAgICAgICAgICAgICAgIHwgICAxIC0KPiAgeGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRl L3g4Nl9lbXVsYXRlLmMgICAgICAgICAgfCAxODcgKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCj4g IHhlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oICAgICAgICAgIHwgIDUzIC0t LS0tLS0KPiAgNiBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCAyMzggZGVsZXRpb25z KC0pCj4gCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9y L2Z1enotZW11bC5jCj4gYi90b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9mdXp6 LWVtdWwuYwo+IGluZGV4IDg5MDY0MmMuLjg0ODg4MTYgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvZnV6 ei94ODZfaW5zdHJ1Y3Rpb25fZW11bGF0b3IvZnV6ei1lbXVsLmMKPiArKysgYi90b29scy9mdXp6 L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9mdXp6LWVtdWwuYwo+IEBAIC01MzYsOCArNTM2LDcg QEAgZW51bSB7Cj4gICAgICBIT09LX3B1dF9mcHUsCj4gICAgICBIT09LX2ludmxwZywKPiAgICAg IEhPT0tfdm1mdW5jLAo+IC0gICAgT1BUSU9OX3N3aW50X2VtdWxhdGlvbiwgLyogVHdvIGJpdHMg Ki8KPiAtICAgIENBTk9OSUNBTElaRV9yaXAgPSBPUFRJT05fc3dpbnRfZW11bGF0aW9uICsgMiwK PiArICAgIENBTk9OSUNBTElaRV9yaXAsCj4gICAgICBDQU5PTklDQUxJWkVfcnNwLAo+ICAgICAg Q0FOT05JQ0FMSVpFX3JicAo+ICB9Owo+IEBAIC01NzcsMTkgKzU3Niw2IEBAIHN0YXRpYyB2b2lk IGRpc2FibGVfaG9va3Modm9pZCkKPiAgICAgIE1BWUJFX0RJU0FCTEVfSE9PSyhpbnZscGcpOwo+ ICB9Cj4gCj4gLXN0YXRpYyB2b2lkIHNldF9zd2ludF9zdXBwb3J0KHN0cnVjdCB4ODZfZW11bGF0 ZV9jdHh0ICpjdHh0KQo+IC17Cj4gLSAgICB1bnNpZ25lZCBpbnQgc3dpbnRfb3B0ID0gKGlucHV0 Lm9wdGlvbnMgPj4gT1BUSU9OX3N3aW50X2VtdWxhdGlvbikgJgo+IDM7Cj4gLSAgICBzdGF0aWMg Y29uc3QgZW51bSB4ODZfc3dpbnRfZW11bGF0aW9uIG1hcFs0XSA9IHsKPiAtICAgICAgICB4ODZf c3dpbnRfZW11bGF0ZV9ub25lLAo+IC0gICAgICAgIHg4Nl9zd2ludF9lbXVsYXRlX25vbmUsCj4g LSAgICAgICAgeDg2X3N3aW50X2VtdWxhdGVfaWNlYnAsCj4gLSAgICAgICAgeDg2X3N3aW50X2Vt dWxhdGVfYWxsCj4gLSAgICB9Owo+IC0KPiAtICAgIGN0eHQtPnN3aW50X2VtdWxhdGUgPSBtYXBb c3dpbnRfb3B0XTsKPiAtfQo+IC0KPiAgLyoKPiAgICogQ29uc3RyYWluIGlucHV0IHRvIGFyY2hp dGVjdHVyYWxseS1wb3NzaWJsZSBzdGF0ZXMgd2hlcmUKPiAgICogdGhlIGVtdWxhdG9yIHJlbGll cyBvbiB0aGVzZQo+IEBAIC02OTMsOCArNjc5LDYgQEAgaW50IExMVk1GdXp6ZXJUZXN0T25lSW5w dXQoY29uc3QgdWludDhfdCAqZGF0YV9wLAo+IHNpemVfdCBzaXplKQo+IAo+ICAgICAgZGlzYWJs ZV9ob29rcygpOwo+IAo+IC0gICAgc2V0X3N3aW50X3N1cHBvcnQoJmN0eHQpOwo+IC0KPiAgICAg IGRvIHsKPiAgICAgICAgICAvKiBGSVhNRTogVW50aWwgd2UgYWN0dWFsbHkgaW1wbGVtZW50IFNJ R0ZQRSBoYW5kbGluZyBwcm9wZXJseSAqLwo+ICAgICAgICAgIHNldHVwX2ZwdV9leGNlcHRpb25f aGFuZGxlcigpOwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYyBiL3hl bi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCj4gaW5kZXggZjU3ODc5Ni4uZWZhYzJlOSAxMDA2NDQK PiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9o dm0vZW11bGF0ZS5jCj4gQEAgLTIwMzYsMTMgKzIwMzYsNiBAQCB2b2lkIGh2bV9lbXVsYXRlX2lu aXRfb25jZSgKPiAgICAgIGh2bWVtdWxfY3R4dC0+Y3R4dC5yZWdzID0gcmVnczsKPiAgICAgIGh2 bWVtdWxfY3R4dC0+Y3R4dC52ZW5kb3IgPSBjdXJyLT5kb21haW4tPmFyY2guY3B1aWQtPng4Nl92 ZW5kb3I7Cj4gICAgICBodm1lbXVsX2N0eHQtPmN0eHQuZm9yY2Vfd3JpdGViYWNrID0gdHJ1ZTsK PiAtCj4gLSAgICBpZiAoIGNwdV9oYXNfdm14ICkKPiAtICAgICAgICBodm1lbXVsX2N0eHQtPmN0 eHQuc3dpbnRfZW11bGF0ZSA9IHg4Nl9zd2ludF9lbXVsYXRlX25vbmU7Cj4gLSAgICBlbHNlIGlm ICggY3B1X2hhc19zdm1fbnJpcHMgKQo+IC0gICAgICAgIGh2bWVtdWxfY3R4dC0+Y3R4dC5zd2lu dF9lbXVsYXRlID0geDg2X3N3aW50X2VtdWxhdGVfaWNlYnA7Cj4gLSAgICBlbHNlCj4gLSAgICAg ICAgaHZtZW11bF9jdHh0LT5jdHh0LnN3aW50X2VtdWxhdGUgPSB4ODZfc3dpbnRfZW11bGF0ZV9h bGw7Cj4gIH0KPiAKPiAgdm9pZCBodm1fZW11bGF0ZV9pbml0X3Blcl9pbnNuKAo+IGRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvbW0uYyBiL3hlbi9hcmNoL3g4Ni9tbS5jCj4gaW5kZXggYmU0ZTMw OC4uMzkxOGEzNyAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvbW0uYwo+ICsrKyBiL3hlbi9h cmNoL3g4Ni9tbS5jCj4gQEAgLTU0MTIsNyArNTQxMiw2IEBAIGludCBwdHdyX2RvX3BhZ2VfZmF1 bHQoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkCj4gbG9uZyBhZGRyLAo+ICAgICAgICAgICAgICAu dmVuZG9yID0gZC0+YXJjaC5jcHVpZC0+eDg2X3ZlbmRvciwKPiAgICAgICAgICAgICAgLmFkZHJf c2l6ZSA9IGlzX3B2XzMyYml0X2RvbWFpbihkKSA/IDMyIDogQklUU19QRVJfTE9ORywKPiAgICAg ICAgICAgICAgLnNwX3NpemUgICA9IGlzX3B2XzMyYml0X2RvbWFpbihkKSA/IDMyIDogQklUU19Q RVJfTE9ORywKPiAtICAgICAgICAgICAgLnN3aW50X2VtdWxhdGUgPSB4ODZfc3dpbnRfZW11bGF0 ZV9ub25lLAo+ICAgICAgICAgIH0sCj4gICAgICB9Owo+ICAgICAgaW50IHJjOwo+IEBAIC01NTY3 LDcgKzU1NjYsNiBAQCBpbnQgbW1pb19yb19kb19wYWdlX2ZhdWx0KHN0cnVjdCB2Y3B1ICp2LAo+ IHVuc2lnbmVkIGxvbmcgYWRkciwKPiAgICAgICAgICAudmVuZG9yID0gdi0+ZG9tYWluLT5hcmNo LmNwdWlkLT54ODZfdmVuZG9yLAo+ICAgICAgICAgIC5hZGRyX3NpemUgPSBhZGRyX3NpemUsCj4g ICAgICAgICAgLnNwX3NpemUgPSBhZGRyX3NpemUsCj4gLSAgICAgICAgLnN3aW50X2VtdWxhdGUg PSB4ODZfc3dpbnRfZW11bGF0ZV9ub25lLAo+ICAgICAgICAgIC5kYXRhID0gJm1taW9fcm9fY3R4 dAo+ICAgICAgfTsKPiAgICAgIGludCByYzsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21t L3NoYWRvdy9jb21tb24uYwo+IGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYwo+IGlu ZGV4IDU1MWE3ZDMuLjJmYzc5NmIgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tL3NoYWRv dy9jb21tb24uYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMKPiBAQCAt MzI4LDcgKzMyOCw2IEBAIGNvbnN0IHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMKPiAqc2hhZG93X2lu aXRfZW11bGF0aW9uKAo+IAo+ICAgICAgc2hfY3R4dC0+Y3R4dC5yZWdzID0gcmVnczsKPiAgICAg IHNoX2N0eHQtPmN0eHQudmVuZG9yID0gdi0+ZG9tYWluLT5hcmNoLmNwdWlkLT54ODZfdmVuZG9y Owo+IC0gICAgc2hfY3R4dC0+Y3R4dC5zd2ludF9lbXVsYXRlID0geDg2X3N3aW50X2VtdWxhdGVf bm9uZTsKPiAKPiAgICAgIC8qIFNlZ21lbnQgY2FjaGUgaW5pdGlhbGlzYXRpb24uIFByaW1lZCB3 aXRoIENTLiAqLwo+ICAgICAgY3JlZyA9IGh2bV9nZXRfc2VnX3JlZyh4ODZfc2VnX2NzLCBzaF9j dHh0KTsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRl LmMKPiBiL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCj4gaW5kZXggN2Fm OGE0Mi4uNzMxNWNhNiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2 X2VtdWxhdGUuYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5j Cj4gQEAgLTE5OTksMTQyICsxOTk5LDYgQEAgc3RhdGljIGJvb2wgdW1pcF9hY3RpdmUoc3RydWN0 IHg4Nl9lbXVsYXRlX2N0eHQKPiAqY3R4dCwKPiAgICAgICAgICAgICAoY3I0ICYgWDg2X0NSNF9V TUlQKTsKPiAgfQo+IAo+IC0vKiBJbmplY3QgYSBzb2Z0d2FyZSBpbnRlcnJ1cHQvZXhjZXB0aW9u LCBlbXVsYXRpbmcgaWYgbmVlZGVkLiAqLwo+IC1zdGF0aWMgaW50IGluamVjdF9zd2ludChlbnVt IHg4Nl9zd2ludF90eXBlIHR5cGUsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg dmVjdG9yLCB1aW50OF90IGluc25fbGVuLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgY29u c3Qgc3RydWN0IHg4Nl9lbXVsYXRlX29wcyAqb3BzKQo+IC17Cj4gLSAgICBpbnQgcmMsIGVycm9y X2NvZGUsIGZhdWx0X3R5cGUgPSBFWENfR1A7Cj4gLQo+IC0gICAgLyoKPiAtICAgICAqIFdpdGhv dXQgaGFyZHdhcmUgc3VwcG9ydCwgaW5qZWN0aW5nIHNvZnR3YXJlIGludGVycnVwdHMvZXhjZXB0 aW9ucyBpcwo+IC0gICAgICogcHJvYmxlbWF0aWMuCj4gLSAgICAgKgo+IC0gICAgICogQWxsIHNv ZnR3YXJlIG1ldGhvZHMgb2YgZ2VuZXJhdGluZyBleGNlcHRpb25zIChvdGhlciB0aGFuIEJPVU5E KQo+IHlpZWxkCj4gLSAgICAgKiB0cmFwcywgc28gZWlwIGluIHRoZSBleGNlcHRpb24gZnJhbWUg bmVlZHMgdG8gcG9pbnQgYWZ0ZXIgdGhlCj4gLSAgICAgKiBpbnN0cnVjdGlvbiwgbm90IGF0IGl0 Lgo+IC0gICAgICoKPiAtICAgICAqIEhvd2V2ZXIsIGlmIGluamVjdGluZyBpdCBhcyBhIGhhcmR3 YXJlIGV4Y2VwdGlvbiBjYXVzZXMgYSBmYXVsdCBkdXJpbmcKPiAtICAgICAqIGRlbGl2ZXJ5LCBv dXIgYWRqdXN0bWVudCBvZiBlaXAgd2lsbCBjYXVzZSB0aGUgZmF1bHQgdG8gYmUgcmVwb3J0ZWQK PiAtICAgICAqIGFmdGVyIHRoZSBmYXVsdGluZyBpbnN0cnVjdGlvbiwgbm90IHBvaW50aW5nIHRv IGl0Lgo+IC0gICAgICoKPiAtICAgICAqIFRoZXJlZm9yZSwgZWlwIGNhbiBvbmx5IHNhZmVseSBi ZSB3b3VuZCBmb3J3YXJkcyBpZiB3ZSBhcmUgY2VydGFpbiB0aGF0Cj4gLSAgICAgKiBpbmplY3Rp bmcgYW4gZXF1aXZhbGVudCBoYXJkd2FyZSBleGNlcHRpb24gd29uJ3QgZmF1bHQsIHdoaWNoIG1l YW5zCj4gLSAgICAgKiBlbXVsYXRpbmcgZXZlcnl0aGluZyB0aGUgcHJvY2Vzc29yIHdvdWxkIGRv IG9uIGEgY29udHJvbCB0cmFuc2Zlci4KPiAtICAgICAqCj4gLSAgICAgKiBIb3dldmVyLCBlbXVs YXRpb24gb2YgY29tcGxldGUgY29udHJvbCB0cmFuc2ZlcnMgaXMgdmVyeSBjb21wbGljYXRlZC4K PiAtICAgICAqIEFsbCB3ZSBjYXJlIGFib3V0IGlzIHRoYXQgZ3Vlc3QgdXNlcnNwYWNlIGNhbm5v dCBhdm9pZCB0aGUgZGVzY3JpcHRvcgo+IC0gICAgICogRFBMIGNoZWNrIGJ5IHVzaW5nIHRoZSBY ZW4gZW11bGF0b3IsIGFuZCBzdWNjZXNzZnVsbHkgaW52b2tlIERQTD0wCj4gLSAgICAgKiBkZXNj cmlwdG9ycy4KPiAtICAgICAqCj4gLSAgICAgKiBBbnkgT1Mgd2hpY2ggd291bGQgZnVydGhlciBm YXVsdCBkdXJpbmcgaW5qZWN0aW9uIGlzIGdvaW5nIHRvIHJlY2VpdmUgYQo+IC0gICAgICogZG91 YmxlIGZhdWx0IGFueXdheSwgYW5kIHdvbid0IGJlIGluIGEgcG9zaXRpb24gdG8gY2FyZSB0aGF0 IHRoZQo+IC0gICAgICogZmF1bHRpbmcgZWlwIGlzIGluY29ycmVjdC4KPiAtICAgICAqLwo+IC0K PiAtICAgIGlmICggKGN0eHQtPnN3aW50X2VtdWxhdGUgPT0geDg2X3N3aW50X2VtdWxhdGVfYWxs KSB8fAo+IC0gICAgICAgICAoKGN0eHQtPnN3aW50X2VtdWxhdGUgPT0geDg2X3N3aW50X2VtdWxh dGVfaWNlYnApICYmCj4gLSAgICAgICAgICAodHlwZSA9PSB4ODZfc3dpbnRfaWNlYnApKSApCj4g LSAgICB7Cj4gLSAgICAgICAgaWYgKCAhaW5fcmVhbG1vZGUoY3R4dCwgb3BzKSApCj4gLSAgICAg ICAgewo+IC0gICAgICAgICAgICB1bnNpZ25lZCBpbnQgaWR0ZV9zaXplLCBpZHRlX29mZnNldDsK PiAtICAgICAgICAgICAgc3RydWN0IHsgdWludDMyX3QgYSwgYiwgYywgZDsgfSBpZHRlID0ge307 Cj4gLSAgICAgICAgICAgIGludCBsbSA9IGluX2xvbmdtb2RlKGN0eHQsIG9wcyk7Cj4gLQo+IC0g ICAgICAgICAgICBpZiAoIGxtIDwgMCApCj4gLSAgICAgICAgICAgICAgICByZXR1cm4gWDg2RU1V TF9VTkhBTkRMRUFCTEU7Cj4gLQo+IC0gICAgICAgICAgICBpZHRlX3NpemUgPSBsbSA/IDE2IDog ODsKPiAtICAgICAgICAgICAgaWR0ZV9vZmZzZXQgPSB2ZWN0b3IgKiBpZHRlX3NpemU7Cj4gLQo+ IC0gICAgICAgICAgICAvKiBpY2VicCBzZXRzIHRoZSBFeHRlcm5hbCBFdmVudCBiaXQgZGVzcGl0 ZSBiZWluZyBhbiBpbnN0cnVjdGlvbi4gKi8KPiAtICAgICAgICAgICAgZXJyb3JfY29kZSA9ICh2 ZWN0b3IgPDwgMykgfCBFQ09ERV9JRFQgfAo+IC0gICAgICAgICAgICAgICAgKHR5cGUgPT0geDg2 X3N3aW50X2ljZWJwID8gRUNPREVfRVhUIDogMCk7Cj4gLQo+IC0gICAgICAgICAgICAvKgo+IC0g ICAgICAgICAgICAgKiBUT0RPIC0gdGhpcyBkb2VzIG5vdCBjb3ZlciB0aGUgdjgwODYgbW9kZSB3 aXRoIENSNC5WTUUgY2FzZQo+IC0gICAgICAgICAgICAgKiBjb3JyZWN0bHksIGJ1dCBmYWxscyBv biB0aGUgc2FmZSBzaWRlIGZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YKPiAtICAgICAgICAgICAg ICogYSAzMmJpdCBPUy4gIFNvbWVvbmUgd2l0aCBtYW55IFRVSVRzIGNhbiBzZWUgYWJvdXQgcmVh ZGluZyB0aGUKPiAtICAgICAgICAgICAgICogVFNTIFNvZnR3YXJlIEludGVycnVwdCBSZWRpcmVj dGlvbiBiaXRtYXAuCj4gLSAgICAgICAgICAgICAqLwo+IC0gICAgICAgICAgICBpZiAoIChjdHh0 LT5yZWdzLT5lZmxhZ3MgJiBYODZfRUZMQUdTX1ZNKSAmJgo+IC0gICAgICAgICAgICAgICAgICgo Y3R4dC0+cmVncy0+ZWZsYWdzICYgWDg2X0VGTEFHU19JT1BMKSAhPSBYODZfRUZMQUdTX0lPUEwp ICkKPiAtICAgICAgICAgICAgICAgIGdvdG8gcmFpc2VfZXhuOwo+IC0KPiAtICAgICAgICAgICAg LyoKPiAtICAgICAgICAgICAgICogUmVhZCBhbGwgOC8xNiBieXRlcyBzbyB0aGUgaWR0ciBsaW1p dCBjaGVjayBpcyBhcHBsaWVkIHByb3Blcmx5Cj4gLSAgICAgICAgICAgICAqIHRvIHRoaXMgZW50 cnksIGV2ZW4gdGhvdWdoIHdlIG9ubHkgZW5kIHVwIGxvb2tpbmcgYXQgdGhlIDJuZAo+IC0gICAg ICAgICAgICAgKiB3b3JkLgo+IC0gICAgICAgICAgICAgKi8KPiAtICAgICAgICAgICAgc3dpdGNo ICggcmMgPSBvcHMtPnJlYWQoeDg2X3NlZ19pZHRyLCBpZHRlX29mZnNldCwKPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlkdGUsIGlkdGVfc2l6ZSwgY3R4dCkgKQo+IC0g ICAgICAgICAgICB7Cj4gLSAgICAgICAgICAgIGNhc2UgWDg2RU1VTF9PS0FZOgo+IC0gICAgICAg ICAgICAgICAgYnJlYWs7Cj4gLQo+IC0gICAgICAgICAgICBjYXNlIFg4NkVNVUxfRVhDRVBUSU9O Ogo+IC0gICAgICAgICAgICAgICAgaWYgKCAhY3R4dC0+ZXZlbnRfcGVuZGluZyApCj4gLSAgICAg ICAgICAgICAgICAgICAgZ290byByYWlzZV9leG47Cj4gLSAgICAgICAgICAgICAgICAvKiBmYWxs dGhyb3VnaCAqLwo+IC0KPiAtICAgICAgICAgICAgZGVmYXVsdDoKPiAtICAgICAgICAgICAgICAg IHJldHVybiByYzsKPiAtICAgICAgICAgICAgfQo+IC0KPiAtICAgICAgICAgICAgLyogVGhpcyBt dXN0IGJlIGFuIGludGVycnVwdCwgdHJhcCwgb3IgdGFzayBnYXRlLiAqLwo+IC0jaWZkZWYgX19Y RU5fXwo+IC0gICAgICAgICAgICBzd2l0Y2ggKCAoaWR0ZS5iID4+IDgpICYgMHgxZiApCj4gLSAg ICAgICAgICAgIHsKPiAtICAgICAgICAgICAgY2FzZSBTWVNfREVTQ19pcnFfZ2F0ZToKPiAtICAg ICAgICAgICAgY2FzZSBTWVNfREVTQ190cmFwX2dhdGU6Cj4gLSAgICAgICAgICAgICAgICBicmVh azsKPiAtICAgICAgICAgICAgY2FzZSBTWVNfREVTQ19pcnFfZ2F0ZTE2Ogo+IC0gICAgICAgICAg ICBjYXNlIFNZU19ERVNDX3RyYXBfZ2F0ZTE2Ogo+IC0gICAgICAgICAgICBjYXNlIFNZU19ERVND X3Rhc2tfZ2F0ZToKPiAtICAgICAgICAgICAgICAgIGlmICggIWxtICkKPiAtICAgICAgICAgICAg ICAgICAgICBicmVhazsKPiAtICAgICAgICAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwo+IC0g ICAgICAgICAgICBkZWZhdWx0Ogo+IC0gICAgICAgICAgICAgICAgZ290byByYWlzZV9leG47Cj4g LSAgICAgICAgICAgIH0KPiAtI2VuZGlmCj4gLQo+IC0gICAgICAgICAgICAvKiBUaGUgNjQtYml0 IGhpZ2ggaGFsZidzIHR5cGUgbXVzdCBiZSB6ZXJvLiAqLwo+IC0gICAgICAgICAgICBpZiAoIGlk dGUuZCAmIDB4MWYwMCApCj4gLSAgICAgICAgICAgICAgICBnb3RvIHJhaXNlX2V4bjsKPiAtCj4g LSAgICAgICAgICAgIC8qIGljZWJwIGNvdW50cyBhcyBhIGhhcmR3YXJlIGV2ZW50LCBhbmQgYnlw YXNzZXMgdGhlIGRwbCBjaGVjay4gKi8KPiAtICAgICAgICAgICAgaWYgKCB0eXBlICE9IHg4Nl9z d2ludF9pY2VicCApCj4gLSAgICAgICAgICAgIHsKPiAtICAgICAgICAgICAgICAgIGludCBjcGwg PSBnZXRfY3BsKGN0eHQsIG9wcyk7Cj4gLQo+IC0gICAgICAgICAgICAgICAgZmFpbF9pZihjcGwg PCAwKTsKPiAtCj4gLSAgICAgICAgICAgICAgICBpZiAoIGNwbCA+ICgoaWR0ZS5iID4+IDEzKSAm IDMpICkKPiAtICAgICAgICAgICAgICAgICAgICBnb3RvIHJhaXNlX2V4bjsKPiAtICAgICAgICAg ICAgfQo+IC0KPiAtICAgICAgICAgICAgLyogSXMgdGhpcyBlbnRyeSBwcmVzZW50PyAqLwo+IC0g ICAgICAgICAgICBpZiAoICEoaWR0ZS5iICYgKDF1IDw8IDE1KSkgKQo+IC0gICAgICAgICAgICB7 Cj4gLSAgICAgICAgICAgICAgICBmYXVsdF90eXBlID0gRVhDX05QOwo+IC0gICAgICAgICAgICAg ICAgZ290byByYWlzZV9leG47Cj4gLSAgICAgICAgICAgIH0KPiAtICAgICAgICB9Cj4gLSAgICB9 Cj4gLQo+IC0gICAgeDg2X2VtdWxfc29mdHdhcmVfZXZlbnQodHlwZSwgdmVjdG9yLCBpbnNuX2xl biwgY3R4dCk7Cj4gLSAgICByYyA9IFg4NkVNVUxfT0tBWTsKPiAtCj4gLSBkb25lOgo+IC0gICAg cmV0dXJuIHJjOwo+IC0KPiAtIHJhaXNlX2V4bjoKPiAtICAgIGdlbmVyYXRlX2V4Y2VwdGlvbihm YXVsdF90eXBlLCBlcnJvcl9jb2RlKTsKPiAtfQo+IC0KPiAgc3RhdGljIHZvaWQgYWRqdXN0X2Ju ZChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwKPiAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3BzICpvcHMsIGVudW0gdmV4X3BmeCBwZngpCj4g IHsKPiBAQCAtMzEwMSw3ICsyOTY1LDYgQEAgeDg2X2VtdWxhdGUoCj4gICAgICBzdHJ1Y3Qgb3Bl cmFuZCBzcmMgPSB7IC5yZWcgPSBQVFJfUE9JU09OIH07Cj4gICAgICBzdHJ1Y3Qgb3BlcmFuZCBk c3QgPSB7IC5yZWcgPSBQVFJfUE9JU09OIH07Cj4gICAgICB1bnNpZ25lZCBsb25nIGNyNDsKPiAt ICAgIGVudW0geDg2X3N3aW50X3R5cGUgc3dpbnRfdHlwZTsKPiAgICAgIHN0cnVjdCBmcHVfaW5z bl9jdHh0IGZpYyA9IHsgLnR5cGUgPSBYODZFTVVMX0ZQVV9ub25lLCAuZXhuX3JhaXNlZCA9IC0x Cj4gfTsKPiAgICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9zdHViIHN0dWIgPSB7fTsKPiAgICAgIERF Q0xBUkVfQUxJR05FRChtbXZhbF90LCBtbXZhbCk7Cj4gQEAgLTQxMDMsMjUgKzM5NjYsMzggQEAg eDg2X2VtdWxhdGUoCj4gICAgICAgICAgICAgIGdvdG8gZG9uZTsKPiAgICAgICAgICBicmVhazsK PiAKPiAtICAgIGNhc2UgMHhjYzogLyogaW50MyAqLwo+IC0gICAgICAgIHNyYy52YWwgPSBFWENf QlA7Cj4gLSAgICAgICAgc3dpbnRfdHlwZSA9IHg4Nl9zd2ludF9pbnQzOwo+IC0gICAgICAgIGdv dG8gc3dpbnQ7Cj4gLQo+IC0gICAgY2FzZSAweGNkOiAvKiBpbnQgaW1tOCAqLwo+IC0gICAgICAg IHN3aW50X3R5cGUgPSB4ODZfc3dpbnRfaW50Owo+IC0gICAgc3dpbnQ6Cj4gLSAgICAgICAgcmMg PSBpbmplY3Rfc3dpbnQoc3dpbnRfdHlwZSwgKHVpbnQ4X3Qpc3JjLnZhbCwKPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICBfcmVncy5yKGlwKSAtIGN0eHQtPnJlZ3MtPnIoaXApLAo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgIGN0eHQsIG9wcykgPyA6IFg4NkVNVUxfRVhDRVBUSU9OOwo+ IC0gICAgICAgIGdvdG8gZG9uZTsKPiAtCj4gICAgICBjYXNlIDB4Y2U6IC8qIGludG8gKi8KPiAg ICAgICAgICBpZiAoICEoX3JlZ3MuZWZsYWdzICYgWDg2X0VGTEFHU19PRikgKQo+ICAgICAgICAg ICAgICBicmVhazsKPiAtICAgICAgICBzcmMudmFsID0gRVhDX09GOwo+IC0gICAgICAgIHN3aW50 X3R5cGUgPSB4ODZfc3dpbnRfaW50bzsKPiAtICAgICAgICBnb3RvIHN3aW50Owo+ICsgICAgICAg IC8qIEZhbGx0aHJvdWdoICovCj4gKyAgICBjYXNlIDB4Y2M6IC8qIGludDMgKi8KPiArICAgIGNh c2UgMHhjZDogLyogaW50IGltbTggKi8KPiArICAgIGNhc2UgMHhmMTogLyogaW50MSAoaWNlYnAp ICovCj4gKyAgICAgICAgQVNTRVJUKCFjdHh0LT5ldmVudF9wZW5kaW5nKTsKPiArICAgICAgICBz d2l0Y2ggKCBjdHh0LT5vcGNvZGUgKQo+ICsgICAgICAgIHsKPiArICAgICAgICBjYXNlIDB4Y2M6 IC8qIGludDMgKi8KPiArICAgICAgICAgICAgY3R4dC0+ZXZlbnQudmVjdG9yID0gRVhDX0JQOwo+ ICsgICAgICAgICAgICBjdHh0LT5ldmVudC50eXBlID0gWDg2X0VWRU5UVFlQRV9TV19FWENFUFRJ T047Cj4gKyAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgIGNhc2UgMHhjZDogLyogaW50IGlt bTggKi8KPiArICAgICAgICAgICAgY3R4dC0+ZXZlbnQudmVjdG9yID0gc3JjLnZhbDsKPiArICAg ICAgICAgICAgY3R4dC0+ZXZlbnQudHlwZSA9IFg4Nl9FVkVOVFRZUEVfU1dfSU5URVJSVVBUOwo+ ICsgICAgICAgICAgICBicmVhazsKPiArICAgICAgICBjYXNlIDB4Y2U6IC8qIGludG8gKi8KPiAr ICAgICAgICAgICAgY3R4dC0+ZXZlbnQudmVjdG9yID0gRVhDX09GOwo+ICsgICAgICAgICAgICBj dHh0LT5ldmVudC50eXBlID0gWDg2X0VWRU5UVFlQRV9TV19FWENFUFRJT047Cj4gKyAgICAgICAg ICAgIGJyZWFrOwo+ICsgICAgICAgIGNhc2UgMHhmMTogLyogaWNlYnAgKi8KPiArICAgICAgICAg ICAgY3R4dC0+ZXZlbnQudmVjdG9yID0gRVhDX0RCOwo+ICsgICAgICAgICAgICBjdHh0LT5ldmVu dC50eXBlID0gWDg2X0VWRU5UVFlQRV9QUklfU1dfRVhDRVBUSU9OOwo+ICsgICAgICAgICAgICBi cmVhazsKPiArICAgICAgICB9Cj4gKyAgICAgICAgY3R4dC0+ZXZlbnQuZXJyb3JfY29kZSA9IFg4 Nl9FVkVOVF9OT19FQzsKPiArICAgICAgICBjdHh0LT5ldmVudC5pbnNuX2xlbiA9IF9yZWdzLnIo aXApIC0gY3R4dC0+cmVncy0+cihpcCk7Cj4gKyAgICAgICAgY3R4dC0+ZXZlbnRfcGVuZGluZyA9 IHRydWU7Cj4gKyAgICAgICAgcmMgPSBYODZFTVVMX0VYQ0VQVElPTjsKPiArICAgICAgICBnb3Rv IGRvbmU7Cj4gCj4gICAgICBjYXNlIDB4Y2Y6IC8qIGlyZXQgKi8gewo+ICAgICAgICAgIHVuc2ln bmVkIGxvbmcgc2VsLCBlaXAsIGVmbGFnczsKPiBAQCAtNDc4MiwxMSArNDY1OCw2IEBAIHg4Nl9l bXVsYXRlKAo+ICAgICAgICAgICAgICBnb3RvIGRvbmU7Cj4gICAgICAgICAgYnJlYWs7Cj4gCj4g LSAgICBjYXNlIDB4ZjE6IC8qIGludDEgKGljZWJwKSAqLwo+IC0gICAgICAgIHNyYy52YWwgPSBF WENfREI7Cj4gLSAgICAgICAgc3dpbnRfdHlwZSA9IHg4Nl9zd2ludF9pY2VicDsKPiAtICAgICAg ICBnb3RvIHN3aW50Owo+IC0KPiAgICAgIGNhc2UgMHhmNDogLyogaGx0ICovCj4gICAgICAgICAg Z2VuZXJhdGVfZXhjZXB0aW9uX2lmKCFtb2RlX3JpbmcwKCksIEVYQ19HUCwgMCk7Cj4gICAgICAg ICAgY3R4dC0+cmV0aXJlLmhsdCA9IHRydWU7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94 ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oCj4gYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2 X2VtdWxhdGUuaAo+IGluZGV4IDljNWZjZGUuLjIxNWFkZjYgMTAwNjQ0Cj4gLS0tIGEveGVuL2Fy Y2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmgKPiArKysgYi94ZW4vYXJjaC94ODYveDg2 X2VtdWxhdGUveDg2X2VtdWxhdGUuaAo+IEBAIC02MCwyNyArNjAsNiBAQCBzdGF0aWMgaW5saW5l IGJvb2wgaXNfeDg2X3N5c3RlbV9zZWdtZW50KGVudW0KPiB4ODZfc2VnbWVudCBzZWcpCj4gICAg ICByZXR1cm4gc2VnID49IHg4Nl9zZWdfdHIgJiYgc2VnIDwgeDg2X3NlZ19ub25lOwo+ICB9Cj4g Cj4gLS8qIENsYXNzaWZpY2F0aW9uIG9mIHRoZSB0eXBlcyBvZiBzb2Z0d2FyZSBnZW5lcmF0ZWQg aW50ZXJydXB0cy9leGNlcHRpb25zLgo+ICovCj4gLWVudW0geDg2X3N3aW50X3R5cGUgewo+IC0g ICAgeDg2X3N3aW50X2ljZWJwLCAvKiAweGYxICovCj4gLSAgICB4ODZfc3dpbnRfaW50MywgIC8q IDB4Y2MgKi8KPiAtICAgIHg4Nl9zd2ludF9pbnRvLCAgLyogMHhjZSAqLwo+IC0gICAgeDg2X3N3 aW50X2ludCwgICAvKiAweGNkICRuICovCj4gLX07Cj4gLQo+IC0vKgo+IC0gKiBIb3cgbXVjaCBo ZWxwIGlzIHJlcXVpcmVkIHdpdGggc29mdHdhcmUgZXZlbnQgaW5qZWN0aW9uPwo+IC0gKgo+IC0g KiBBbGwgc29mdHdhcmUgZXZlbnRzIHJldHVybiBmcm9tIHg4Nl9lbXVsYXRlKCkgd2l0aAo+IFg4 NkVNVUxfRVhDRVBUSU9OIGFuZAo+IC0gKiBmYXVsdC1saWtlIHNlbWFudGljcy4gIFRoaXMganVz dCBjb250cm9scyB3aGV0aGVyIHRoZSBlbXVsYXRvciBwZXJmb3Jtcwo+IC0gKiBwcmVzZW5jZS9k cGwvZXRjIGNoZWNrcyBhbmQgcG9zc2libHkgcmFpc2VzIGV4Y2VwdGlvbnMgaW5zdGVhZC4KPiAt ICovCj4gLWVudW0geDg2X3N3aW50X2VtdWxhdGlvbiB7Cj4gLSAgICB4ODZfc3dpbnRfZW11bGF0 ZV9ub25lLCAvKiBIYXJkd2FyZSBzdXBwb3J0cyBhbGwgc29mdHdhcmUgaW5qZWN0aW9uCj4gcHJv cGVybHkgKi8KPiAtICAgIHg4Nl9zd2ludF9lbXVsYXRlX2ljZWJwLC8qIEhlbHAgbmVlZGVkIHdp dGggYGljZWJwYCAoMHhmMSkgKi8KPiAtICAgIHg4Nl9zd2ludF9lbXVsYXRlX2FsbCwgIC8qIEhl bHAgbmVlZGVkIHdpdGggYWxsIHNvZnR3YXJlIGV2ZW50cyAqLwo+IC19Owo+IC0KPiAgLyoKPiAg ICogeDg2IGV2ZW50IHR5cGVzLiBUaGlzIGVudW1lcmF0aW9uIGlzIHZhbGlkIGZvcjoKPiAgICog IEludGVsIFZNWDoge1ZNX0VOVFJZLFZNX0VYSVQsSURUX1ZFQ1RPUklOR31fSU5UUl9JTkZPWzEw OjhdCj4gQEAgLTQ3Miw5ICs0NTEsNiBAQCBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dAo+ICAgICAg ICogSW5wdXQtb25seSBzdGF0ZToKPiAgICAgICAqLwo+IAo+IC0gICAgLyogU29mdHdhcmUgZXZl bnQgaW5qZWN0aW9uIHN1cHBvcnQuICovCj4gLSAgICBlbnVtIHg4Nl9zd2ludF9lbXVsYXRpb24g c3dpbnRfZW11bGF0ZTsKPiAtCj4gICAgICAvKiBDUFUgdmVuZG9yIChYODZfVkVORE9SX1VOS05P V04gZm9yICJkb24ndCBjYXJlIikgKi8KPiAgICAgIHVuc2lnbmVkIGNoYXIgdmVuZG9yOwo+IAo+ IEBAIC02OTksMzUgKzY3NSw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB4ODZfZW11bF9wYWdlZmF1 bHQoCj4gICAgICBjdHh0LT5ldmVudF9wZW5kaW5nID0gdHJ1ZTsKPiAgfQo+IAo+IC1zdGF0aWMg aW5saW5lIHZvaWQgeDg2X2VtdWxfc29mdHdhcmVfZXZlbnQoCj4gLSAgICBlbnVtIHg4Nl9zd2lu dF90eXBlIHR5cGUsIHVpbnQ4X3QgdmVjdG9yLCB1aW50OF90IGluc25fbGVuLAo+IC0gICAgc3Ry dWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCj4gLXsKPiAtICAgIEFTU0VSVCghY3R4dC0+ZXZl bnRfcGVuZGluZyk7Cj4gLQo+IC0gICAgc3dpdGNoICggdHlwZSApCj4gLSAgICB7Cj4gLSAgICBj YXNlIHg4Nl9zd2ludF9pY2VicDoKPiAtICAgICAgICBjdHh0LT5ldmVudC50eXBlID0gWDg2X0VW RU5UVFlQRV9QUklfU1dfRVhDRVBUSU9OOwo+IC0gICAgICAgIGJyZWFrOwo+IC0KPiAtICAgIGNh c2UgeDg2X3N3aW50X2ludDM6Cj4gLSAgICBjYXNlIHg4Nl9zd2ludF9pbnRvOgo+IC0gICAgICAg IGN0eHQtPmV2ZW50LnR5cGUgPSBYODZfRVZFTlRUWVBFX1NXX0VYQ0VQVElPTjsKPiAtICAgICAg ICBicmVhazsKPiAtCj4gLSAgICBjYXNlIHg4Nl9zd2ludF9pbnQ6Cj4gLSAgICAgICAgY3R4dC0+ ZXZlbnQudHlwZSA9IFg4Nl9FVkVOVFRZUEVfU1dfSU5URVJSVVBUOwo+IC0gICAgICAgIGJyZWFr Owo+IC0gICAgfQo+IC0KPiAtICAgIGN0eHQtPmV2ZW50LnZlY3RvciA9IHZlY3RvcjsKPiAtICAg IGN0eHQtPmV2ZW50LmVycm9yX2NvZGUgPSBYODZfRVZFTlRfTk9fRUM7Cj4gLSAgICBjdHh0LT5l dmVudC5pbnNuX2xlbiA9IGluc25fbGVuOwo+IC0KPiAtICAgIGN0eHQtPmV2ZW50X3BlbmRpbmcg PSB0cnVlOwo+IC19Cj4gLQo+ICBzdGF0aWMgaW5saW5lIHZvaWQgeDg2X2VtdWxfcmVzZXRfZXZl bnQoc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCj4gIHsKPiAgICAgIGN0eHQtPmV2ZW50 X3BlbmRpbmcgPSBmYWxzZTsKPiAtLQo+IDIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==