From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v2 for-4.9 5/6] x86/emul: Drop swint_emulate infrastructure Date: Wed, 5 Apr 2017 18:33:03 +0100 Message-ID: <1491413584-8410-6-git-send-email-andrew.cooper3@citrix.com> References: <1491413584-8410-1-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: <1491413584-8410-1-git-send-email-andrew.cooper3@citrix.com> 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 Deegan List-Id: xen-devel@lists.xenproject.org V2l0aCB0aGUgU1ZNIGluamVjdGlvbiBsb2dpYyBjYXBhYmxlIG9mIGRvaW5nIGl0cyBvd24gZW11 bGF0aW9uLCB0aGVyZSBpcyBubwpuZWVkIGZvciB0aGlzIGhhcmR3YXJlLXNwZWNpZmljIGFzc2lz dGFuY2UgaW4gdGhlIGNvbW1vbiBlbXVsYXRvci4KClNpZ25lZC1vZmYtYnk6IEFuZHJldyBDb29w ZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+ClJldmlld2VkLWJ5OiBQYXVsIER1cnJhbnQg PHBhdWwuZHVycmFudEBjaXRyaXguY29tPgpSZXZpZXdlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVs aWNoQHN1c2UuY29tPgotLS0KQ0M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpDQzogSnVsaWVu IEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KCnYyOgogKiBpbW04IC0+IGltbTEKLS0tCiB0 b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9mdXp6LWVtdWwuYyB8ICAxOCArLS0K IHhlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jICAgICAgICAgICAgICAgICAgICAgIHwgICA3IC0K IHhlbi9hcmNoL3g4Ni9tbS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyIC0K IHhlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMgICAgICAgICAgICAgICAgIHwgICAxIC0K IHhlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jICAgICAgICAgIHwgMTg3ICsr KystLS0tLS0tLS0tLS0tLS0tLS0tLQogeGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVs YXRlLmggICAgICAgICAgfCAgNTMgLS0tLS0tLQogNiBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRp b25zKCspLCAyMzggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvZnV6ei94ODZfaW5z dHJ1Y3Rpb25fZW11bGF0b3IvZnV6ei1lbXVsLmMgYi90b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlv bl9lbXVsYXRvci9mdXp6LWVtdWwuYwppbmRleCA4OTA2NDJjLi44NDg4ODE2IDEwMDY0NAotLS0g YS90b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9mdXp6LWVtdWwuYworKysgYi90 b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9mdXp6LWVtdWwuYwpAQCAtNTM2LDgg KzUzNiw3IEBAIGVudW0gewogICAgIEhPT0tfcHV0X2ZwdSwKICAgICBIT09LX2ludmxwZywKICAg ICBIT09LX3ZtZnVuYywKLSAgICBPUFRJT05fc3dpbnRfZW11bGF0aW9uLCAvKiBUd28gYml0cyAq LwotICAgIENBTk9OSUNBTElaRV9yaXAgPSBPUFRJT05fc3dpbnRfZW11bGF0aW9uICsgMiwKKyAg ICBDQU5PTklDQUxJWkVfcmlwLAogICAgIENBTk9OSUNBTElaRV9yc3AsCiAgICAgQ0FOT05JQ0FM SVpFX3JicAogfTsKQEAgLTU3NywxOSArNTc2LDYgQEAgc3RhdGljIHZvaWQgZGlzYWJsZV9ob29r cyh2b2lkKQogICAgIE1BWUJFX0RJU0FCTEVfSE9PSyhpbnZscGcpOwogfQogCi1zdGF0aWMgdm9p ZCBzZXRfc3dpbnRfc3VwcG9ydChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKLXsKLSAg ICB1bnNpZ25lZCBpbnQgc3dpbnRfb3B0ID0gKGlucHV0Lm9wdGlvbnMgPj4gT1BUSU9OX3N3aW50 X2VtdWxhdGlvbikgJiAzOwotICAgIHN0YXRpYyBjb25zdCBlbnVtIHg4Nl9zd2ludF9lbXVsYXRp b24gbWFwWzRdID0gewotICAgICAgICB4ODZfc3dpbnRfZW11bGF0ZV9ub25lLAotICAgICAgICB4 ODZfc3dpbnRfZW11bGF0ZV9ub25lLAotICAgICAgICB4ODZfc3dpbnRfZW11bGF0ZV9pY2VicCwK LSAgICAgICAgeDg2X3N3aW50X2VtdWxhdGVfYWxsCi0gICAgfTsKLQotICAgIGN0eHQtPnN3aW50 X2VtdWxhdGUgPSBtYXBbc3dpbnRfb3B0XTsKLX0KLQogLyoKICAqIENvbnN0cmFpbiBpbnB1dCB0 byBhcmNoaXRlY3R1cmFsbHktcG9zc2libGUgc3RhdGVzIHdoZXJlCiAgKiB0aGUgZW11bGF0b3Ig cmVsaWVzIG9uIHRoZXNlCkBAIC02OTMsOCArNjc5LDYgQEAgaW50IExMVk1GdXp6ZXJUZXN0T25l SW5wdXQoY29uc3QgdWludDhfdCAqZGF0YV9wLCBzaXplX3Qgc2l6ZSkKIAogICAgIGRpc2FibGVf aG9va3MoKTsKIAotICAgIHNldF9zd2ludF9zdXBwb3J0KCZjdHh0KTsKLQogICAgIGRvIHsKICAg ICAgICAgLyogRklYTUU6IFVudGlsIHdlIGFjdHVhbGx5IGltcGxlbWVudCBTSUdGUEUgaGFuZGxp bmcgcHJvcGVybHkgKi8KICAgICAgICAgc2V0dXBfZnB1X2V4Y2VwdGlvbl9oYW5kbGVyKCk7CmRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYyBiL3hlbi9hcmNoL3g4Ni9odm0v ZW11bGF0ZS5jCmluZGV4IDg3Y2E4MDEuLjM5ZTQzMTkgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9odm0vZW11bGF0ZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCkBAIC0yMDMz LDEzICsyMDMzLDYgQEAgdm9pZCBodm1fZW11bGF0ZV9pbml0X29uY2UoCiAgICAgaHZtZW11bF9j dHh0LT5jdHh0LnJlZ3MgPSByZWdzOwogICAgIGh2bWVtdWxfY3R4dC0+Y3R4dC52ZW5kb3IgPSBj dXJyLT5kb21haW4tPmFyY2guY3B1aWQtPng4Nl92ZW5kb3I7CiAgICAgaHZtZW11bF9jdHh0LT5j dHh0LmZvcmNlX3dyaXRlYmFjayA9IHRydWU7Ci0KLSAgICBpZiAoIGNwdV9oYXNfdm14ICkKLSAg ICAgICAgaHZtZW11bF9jdHh0LT5jdHh0LnN3aW50X2VtdWxhdGUgPSB4ODZfc3dpbnRfZW11bGF0 ZV9ub25lOwotICAgIGVsc2UgaWYgKCBjcHVfaGFzX3N2bV9ucmlwcyApCi0gICAgICAgIGh2bWVt dWxfY3R4dC0+Y3R4dC5zd2ludF9lbXVsYXRlID0geDg2X3N3aW50X2VtdWxhdGVfaWNlYnA7Ci0g ICAgZWxzZQotICAgICAgICBodm1lbXVsX2N0eHQtPmN0eHQuc3dpbnRfZW11bGF0ZSA9IHg4Nl9z d2ludF9lbXVsYXRlX2FsbDsKIH0KIAogdm9pZCBodm1fZW11bGF0ZV9pbml0X3Blcl9pbnNuKApk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tLmMgYi94ZW4vYXJjaC94ODYvbW0uYwppbmRleCBi ZTRlMzA4Li4zOTE4YTM3IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0uYworKysgYi94ZW4v YXJjaC94ODYvbW0uYwpAQCAtNTQxMiw3ICs1NDEyLDYgQEAgaW50IHB0d3JfZG9fcGFnZV9mYXVs dChzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyBhZGRyLAogICAgICAgICAgICAgLnZlbmRv ciA9IGQtPmFyY2guY3B1aWQtPng4Nl92ZW5kb3IsCiAgICAgICAgICAgICAuYWRkcl9zaXplID0g aXNfcHZfMzJiaXRfZG9tYWluKGQpID8gMzIgOiBCSVRTX1BFUl9MT05HLAogICAgICAgICAgICAg LnNwX3NpemUgICA9IGlzX3B2XzMyYml0X2RvbWFpbihkKSA/IDMyIDogQklUU19QRVJfTE9ORywK LSAgICAgICAgICAgIC5zd2ludF9lbXVsYXRlID0geDg2X3N3aW50X2VtdWxhdGVfbm9uZSwKICAg ICAgICAgfSwKICAgICB9OwogICAgIGludCByYzsKQEAgLTU1NjcsNyArNTU2Niw2IEBAIGludCBt bWlvX3JvX2RvX3BhZ2VfZmF1bHQoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGxvbmcgYWRkciwK ICAgICAgICAgLnZlbmRvciA9IHYtPmRvbWFpbi0+YXJjaC5jcHVpZC0+eDg2X3ZlbmRvciwKICAg ICAgICAgLmFkZHJfc2l6ZSA9IGFkZHJfc2l6ZSwKICAgICAgICAgLnNwX3NpemUgPSBhZGRyX3Np emUsCi0gICAgICAgIC5zd2ludF9lbXVsYXRlID0geDg2X3N3aW50X2VtdWxhdGVfbm9uZSwKICAg ICAgICAgLmRhdGEgPSAmbW1pb19yb19jdHh0CiAgICAgfTsKICAgICBpbnQgcmM7CmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5jIGIveGVuL2FyY2gveDg2L21tL3No YWRvdy9jb21tb24uYwppbmRleCA1NzQzMzdjLi43MzZjZWFhIDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYvbW0vc2hhZG93L2NvbW1vbi5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29t bW9uLmMKQEAgLTMyNiw3ICszMjYsNiBAQCBjb25zdCBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3BzICpz aGFkb3dfaW5pdF9lbXVsYXRpb24oCiAKICAgICBzaF9jdHh0LT5jdHh0LnJlZ3MgPSByZWdzOwog ICAgIHNoX2N0eHQtPmN0eHQudmVuZG9yID0gdi0+ZG9tYWluLT5hcmNoLmNwdWlkLT54ODZfdmVu ZG9yOwotICAgIHNoX2N0eHQtPmN0eHQuc3dpbnRfZW11bGF0ZSA9IHg4Nl9zd2ludF9lbXVsYXRl X25vbmU7CiAKICAgICAvKiBTZWdtZW50IGNhY2hlIGluaXRpYWxpc2F0aW9uLiBQcmltZWQgd2l0 aCBDUy4gKi8KICAgICBjcmVnID0gaHZtX2dldF9zZWdfcmVnKHg4Nl9zZWdfY3MsIHNoX2N0eHQp OwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMgYi94 ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwppbmRleCA3YWY4YTQyLi44YzRl ODg1IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwor KysgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwpAQCAtMTk5OSwxNDIg KzE5OTksNiBAQCBzdGF0aWMgYm9vbCB1bWlwX2FjdGl2ZShzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4 dCAqY3R4dCwKICAgICAgICAgICAgKGNyNCAmIFg4Nl9DUjRfVU1JUCk7CiB9CiAKLS8qIEluamVj dCBhIHNvZnR3YXJlIGludGVycnVwdC9leGNlcHRpb24sIGVtdWxhdGluZyBpZiBuZWVkZWQuICov Ci1zdGF0aWMgaW50IGluamVjdF9zd2ludChlbnVtIHg4Nl9zd2ludF90eXBlIHR5cGUsCi0gICAg ICAgICAgICAgICAgICAgICAgICB1aW50OF90IHZlY3RvciwgdWludDhfdCBpbnNuX2xlbiwKLSAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0LAotICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHg4Nl9lbXVsYXRlX29wcyAqb3BzKQot ewotICAgIGludCByYywgZXJyb3JfY29kZSwgZmF1bHRfdHlwZSA9IEVYQ19HUDsKLQotICAgIC8q Ci0gICAgICogV2l0aG91dCBoYXJkd2FyZSBzdXBwb3J0LCBpbmplY3Rpbmcgc29mdHdhcmUgaW50 ZXJydXB0cy9leGNlcHRpb25zIGlzCi0gICAgICogcHJvYmxlbWF0aWMuCi0gICAgICoKLSAgICAg KiBBbGwgc29mdHdhcmUgbWV0aG9kcyBvZiBnZW5lcmF0aW5nIGV4Y2VwdGlvbnMgKG90aGVyIHRo YW4gQk9VTkQpIHlpZWxkCi0gICAgICogdHJhcHMsIHNvIGVpcCBpbiB0aGUgZXhjZXB0aW9uIGZy YW1lIG5lZWRzIHRvIHBvaW50IGFmdGVyIHRoZQotICAgICAqIGluc3RydWN0aW9uLCBub3QgYXQg aXQuCi0gICAgICoKLSAgICAgKiBIb3dldmVyLCBpZiBpbmplY3RpbmcgaXQgYXMgYSBoYXJkd2Fy ZSBleGNlcHRpb24gY2F1c2VzIGEgZmF1bHQgZHVyaW5nCi0gICAgICogZGVsaXZlcnksIG91ciBh ZGp1c3RtZW50IG9mIGVpcCB3aWxsIGNhdXNlIHRoZSBmYXVsdCB0byBiZSByZXBvcnRlZAotICAg ICAqIGFmdGVyIHRoZSBmYXVsdGluZyBpbnN0cnVjdGlvbiwgbm90IHBvaW50aW5nIHRvIGl0Lgot ICAgICAqCi0gICAgICogVGhlcmVmb3JlLCBlaXAgY2FuIG9ubHkgc2FmZWx5IGJlIHdvdW5kIGZv cndhcmRzIGlmIHdlIGFyZSBjZXJ0YWluIHRoYXQKLSAgICAgKiBpbmplY3RpbmcgYW4gZXF1aXZh bGVudCBoYXJkd2FyZSBleGNlcHRpb24gd29uJ3QgZmF1bHQsIHdoaWNoIG1lYW5zCi0gICAgICog ZW11bGF0aW5nIGV2ZXJ5dGhpbmcgdGhlIHByb2Nlc3NvciB3b3VsZCBkbyBvbiBhIGNvbnRyb2wg dHJhbnNmZXIuCi0gICAgICoKLSAgICAgKiBIb3dldmVyLCBlbXVsYXRpb24gb2YgY29tcGxldGUg Y29udHJvbCB0cmFuc2ZlcnMgaXMgdmVyeSBjb21wbGljYXRlZC4KLSAgICAgKiBBbGwgd2UgY2Fy ZSBhYm91dCBpcyB0aGF0IGd1ZXN0IHVzZXJzcGFjZSBjYW5ub3QgYXZvaWQgdGhlIGRlc2NyaXB0 b3IKLSAgICAgKiBEUEwgY2hlY2sgYnkgdXNpbmcgdGhlIFhlbiBlbXVsYXRvciwgYW5kIHN1Y2Nl c3NmdWxseSBpbnZva2UgRFBMPTAKLSAgICAgKiBkZXNjcmlwdG9ycy4KLSAgICAgKgotICAgICAq IEFueSBPUyB3aGljaCB3b3VsZCBmdXJ0aGVyIGZhdWx0IGR1cmluZyBpbmplY3Rpb24gaXMgZ29p bmcgdG8gcmVjZWl2ZSBhCi0gICAgICogZG91YmxlIGZhdWx0IGFueXdheSwgYW5kIHdvbid0IGJl IGluIGEgcG9zaXRpb24gdG8gY2FyZSB0aGF0IHRoZQotICAgICAqIGZhdWx0aW5nIGVpcCBpcyBp bmNvcnJlY3QuCi0gICAgICovCi0KLSAgICBpZiAoIChjdHh0LT5zd2ludF9lbXVsYXRlID09IHg4 Nl9zd2ludF9lbXVsYXRlX2FsbCkgfHwKLSAgICAgICAgICgoY3R4dC0+c3dpbnRfZW11bGF0ZSA9 PSB4ODZfc3dpbnRfZW11bGF0ZV9pY2VicCkgJiYKLSAgICAgICAgICAodHlwZSA9PSB4ODZfc3dp bnRfaWNlYnApKSApCi0gICAgewotICAgICAgICBpZiAoICFpbl9yZWFsbW9kZShjdHh0LCBvcHMp ICkKLSAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgaW50IGlkdGVfc2l6ZSwgaWR0ZV9v ZmZzZXQ7Ci0gICAgICAgICAgICBzdHJ1Y3QgeyB1aW50MzJfdCBhLCBiLCBjLCBkOyB9IGlkdGUg PSB7fTsKLSAgICAgICAgICAgIGludCBsbSA9IGluX2xvbmdtb2RlKGN0eHQsIG9wcyk7Ci0KLSAg ICAgICAgICAgIGlmICggbG0gPCAwICkKLSAgICAgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9V TkhBTkRMRUFCTEU7Ci0KLSAgICAgICAgICAgIGlkdGVfc2l6ZSA9IGxtID8gMTYgOiA4OwotICAg ICAgICAgICAgaWR0ZV9vZmZzZXQgPSB2ZWN0b3IgKiBpZHRlX3NpemU7Ci0KLSAgICAgICAgICAg IC8qIGljZWJwIHNldHMgdGhlIEV4dGVybmFsIEV2ZW50IGJpdCBkZXNwaXRlIGJlaW5nIGFuIGlu c3RydWN0aW9uLiAqLwotICAgICAgICAgICAgZXJyb3JfY29kZSA9ICh2ZWN0b3IgPDwgMykgfCBF Q09ERV9JRFQgfAotICAgICAgICAgICAgICAgICh0eXBlID09IHg4Nl9zd2ludF9pY2VicCA/IEVD T0RFX0VYVCA6IDApOwotCi0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogVE9ETyAtIHRo aXMgZG9lcyBub3QgY292ZXIgdGhlIHY4MDg2IG1vZGUgd2l0aCBDUjQuVk1FIGNhc2UKLSAgICAg ICAgICAgICAqIGNvcnJlY3RseSwgYnV0IGZhbGxzIG9uIHRoZSBzYWZlIHNpZGUgZnJvbSB0aGUg cG9pbnQgb2YgdmlldyBvZgotICAgICAgICAgICAgICogYSAzMmJpdCBPUy4gIFNvbWVvbmUgd2l0 aCBtYW55IFRVSVRzIGNhbiBzZWUgYWJvdXQgcmVhZGluZyB0aGUKLSAgICAgICAgICAgICAqIFRT UyBTb2Z0d2FyZSBJbnRlcnJ1cHQgUmVkaXJlY3Rpb24gYml0bWFwLgotICAgICAgICAgICAgICov Ci0gICAgICAgICAgICBpZiAoIChjdHh0LT5yZWdzLT5lZmxhZ3MgJiBYODZfRUZMQUdTX1ZNKSAm JgotICAgICAgICAgICAgICAgICAoKGN0eHQtPnJlZ3MtPmVmbGFncyAmIFg4Nl9FRkxBR1NfSU9Q TCkgIT0gWDg2X0VGTEFHU19JT1BMKSApCi0gICAgICAgICAgICAgICAgZ290byByYWlzZV9leG47 Ci0KLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBSZWFkIGFsbCA4LzE2IGJ5dGVzIHNv IHRoZSBpZHRyIGxpbWl0IGNoZWNrIGlzIGFwcGxpZWQgcHJvcGVybHkKLSAgICAgICAgICAgICAq IHRvIHRoaXMgZW50cnksIGV2ZW4gdGhvdWdoIHdlIG9ubHkgZW5kIHVwIGxvb2tpbmcgYXQgdGhl IDJuZAotICAgICAgICAgICAgICogd29yZC4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAg c3dpdGNoICggcmMgPSBvcHMtPnJlYWQoeDg2X3NlZ19pZHRyLCBpZHRlX29mZnNldCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpZHRlLCBpZHRlX3NpemUsIGN0eHQpICkK LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIGNhc2UgWDg2RU1VTF9PS0FZOgotICAgICAgICAg ICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBjYXNlIFg4NkVNVUxfRVhDRVBUSU9OOgotICAg ICAgICAgICAgICAgIGlmICggIWN0eHQtPmV2ZW50X3BlbmRpbmcgKQotICAgICAgICAgICAgICAg ICAgICBnb3RvIHJhaXNlX2V4bjsKLSAgICAgICAgICAgICAgICAvKiBmYWxsdGhyb3VnaCAqLwot Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiByYzsKLSAgICAg ICAgICAgIH0KLQotICAgICAgICAgICAgLyogVGhpcyBtdXN0IGJlIGFuIGludGVycnVwdCwgdHJh cCwgb3IgdGFzayBnYXRlLiAqLwotI2lmZGVmIF9fWEVOX18KLSAgICAgICAgICAgIHN3aXRjaCAo IChpZHRlLmIgPj4gOCkgJiAweDFmICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIGNhc2Ug U1lTX0RFU0NfaXJxX2dhdGU6Ci0gICAgICAgICAgICBjYXNlIFNZU19ERVNDX3RyYXBfZ2F0ZToK LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgU1lTX0RFU0NfaXJxX2dh dGUxNjoKLSAgICAgICAgICAgIGNhc2UgU1lTX0RFU0NfdHJhcF9nYXRlMTY6Ci0gICAgICAgICAg ICBjYXNlIFNZU19ERVNDX3Rhc2tfZ2F0ZToKLSAgICAgICAgICAgICAgICBpZiAoICFsbSApCi0g ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIC8qIGZhbGwgdGhyb3Vn aCAqLwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBnb3RvIHJhaXNlX2V4 bjsKLSAgICAgICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgICAgICAvKiBUaGUgNjQtYml0IGhp Z2ggaGFsZidzIHR5cGUgbXVzdCBiZSB6ZXJvLiAqLwotICAgICAgICAgICAgaWYgKCBpZHRlLmQg JiAweDFmMDAgKQotICAgICAgICAgICAgICAgIGdvdG8gcmFpc2VfZXhuOwotCi0gICAgICAgICAg ICAvKiBpY2VicCBjb3VudHMgYXMgYSBoYXJkd2FyZSBldmVudCwgYW5kIGJ5cGFzc2VzIHRoZSBk cGwgY2hlY2suICovCi0gICAgICAgICAgICBpZiAoIHR5cGUgIT0geDg2X3N3aW50X2ljZWJwICkK LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgY3BsID0gZ2V0X2NwbChjdHh0LCBv cHMpOwotCi0gICAgICAgICAgICAgICAgZmFpbF9pZihjcGwgPCAwKTsKLQotICAgICAgICAgICAg ICAgIGlmICggY3BsID4gKChpZHRlLmIgPj4gMTMpICYgMykgKQotICAgICAgICAgICAgICAgICAg ICBnb3RvIHJhaXNlX2V4bjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLyogSXMgdGhp cyBlbnRyeSBwcmVzZW50PyAqLwotICAgICAgICAgICAgaWYgKCAhKGlkdGUuYiAmICgxdSA8PCAx NSkpICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmYXVsdF90eXBlID0gRVhDX05Q OwotICAgICAgICAgICAgICAgIGdvdG8gcmFpc2VfZXhuOwotICAgICAgICAgICAgfQotICAgICAg ICB9Ci0gICAgfQotCi0gICAgeDg2X2VtdWxfc29mdHdhcmVfZXZlbnQodHlwZSwgdmVjdG9yLCBp bnNuX2xlbiwgY3R4dCk7Ci0gICAgcmMgPSBYODZFTVVMX09LQVk7Ci0KLSBkb25lOgotICAgIHJl dHVybiByYzsKLQotIHJhaXNlX2V4bjoKLSAgICBnZW5lcmF0ZV9leGNlcHRpb24oZmF1bHRfdHlw ZSwgZXJyb3JfY29kZSk7Ci19Ci0KIHN0YXRpYyB2b2lkIGFkanVzdF9ibmQoc3RydWN0IHg4Nl9l bXVsYXRlX2N0eHQgKmN0eHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4 ODZfZW11bGF0ZV9vcHMgKm9wcywgZW51bSB2ZXhfcGZ4IHBmeCkKIHsKQEAgLTMxMDEsNyArMjk2 NSw2IEBAIHg4Nl9lbXVsYXRlKAogICAgIHN0cnVjdCBvcGVyYW5kIHNyYyA9IHsgLnJlZyA9IFBU Ul9QT0lTT04gfTsKICAgICBzdHJ1Y3Qgb3BlcmFuZCBkc3QgPSB7IC5yZWcgPSBQVFJfUE9JU09O IH07CiAgICAgdW5zaWduZWQgbG9uZyBjcjQ7Ci0gICAgZW51bSB4ODZfc3dpbnRfdHlwZSBzd2lu dF90eXBlOwogICAgIHN0cnVjdCBmcHVfaW5zbl9jdHh0IGZpYyA9IHsgLnR5cGUgPSBYODZFTVVM X0ZQVV9ub25lLCAuZXhuX3JhaXNlZCA9IC0xIH07CiAgICAgc3RydWN0IHg4Nl9lbXVsYXRlX3N0 dWIgc3R1YiA9IHt9OwogICAgIERFQ0xBUkVfQUxJR05FRChtbXZhbF90LCBtbXZhbCk7CkBAIC00 MTAzLDI1ICszOTY2LDM4IEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICAgICAgZ290byBkb25lOwog ICAgICAgICBicmVhazsKIAotICAgIGNhc2UgMHhjYzogLyogaW50MyAqLwotICAgICAgICBzcmMu dmFsID0gRVhDX0JQOwotICAgICAgICBzd2ludF90eXBlID0geDg2X3N3aW50X2ludDM7Ci0gICAg ICAgIGdvdG8gc3dpbnQ7Ci0KLSAgICBjYXNlIDB4Y2Q6IC8qIGludCBpbW04ICovCi0gICAgICAg IHN3aW50X3R5cGUgPSB4ODZfc3dpbnRfaW50OwotICAgIHN3aW50OgotICAgICAgICByYyA9IGlu amVjdF9zd2ludChzd2ludF90eXBlLCAodWludDhfdClzcmMudmFsLAotICAgICAgICAgICAgICAg ICAgICAgICAgICBfcmVncy5yKGlwKSAtIGN0eHQtPnJlZ3MtPnIoaXApLAotICAgICAgICAgICAg ICAgICAgICAgICAgICBjdHh0LCBvcHMpID8gOiBYODZFTVVMX0VYQ0VQVElPTjsKLSAgICAgICAg Z290byBkb25lOwotCiAgICAgY2FzZSAweGNlOiAvKiBpbnRvICovCiAgICAgICAgIGlmICggIShf cmVncy5lZmxhZ3MgJiBYODZfRUZMQUdTX09GKSApCiAgICAgICAgICAgICBicmVhazsKLSAgICAg ICAgc3JjLnZhbCA9IEVYQ19PRjsKLSAgICAgICAgc3dpbnRfdHlwZSA9IHg4Nl9zd2ludF9pbnRv OwotICAgICAgICBnb3RvIHN3aW50OworICAgICAgICAvKiBGYWxsdGhyb3VnaCAqLworICAgIGNh c2UgMHhjYzogLyogaW50MyAqLworICAgIGNhc2UgMHhjZDogLyogaW50IGltbTEgKi8KKyAgICBj YXNlIDB4ZjE6IC8qIGludDEgKGljZWJwKSAqLworICAgICAgICBBU1NFUlQoIWN0eHQtPmV2ZW50 X3BlbmRpbmcpOworICAgICAgICBzd2l0Y2ggKCBjdHh0LT5vcGNvZGUgKQorICAgICAgICB7Cisg ICAgICAgIGNhc2UgMHhjYzogLyogaW50MyAqLworICAgICAgICAgICAgY3R4dC0+ZXZlbnQudmVj dG9yID0gRVhDX0JQOworICAgICAgICAgICAgY3R4dC0+ZXZlbnQudHlwZSA9IFg4Nl9FVkVOVFRZ UEVfU1dfRVhDRVBUSU9OOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMHhjZDog LyogaW50IGltbTEgKi8KKyAgICAgICAgICAgIGN0eHQtPmV2ZW50LnZlY3RvciA9IHNyYy52YWw7 CisgICAgICAgICAgICBjdHh0LT5ldmVudC50eXBlID0gWDg2X0VWRU5UVFlQRV9TV19JTlRFUlJV UFQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAweGNlOiAvKiBpbnRvICovCisg ICAgICAgICAgICBjdHh0LT5ldmVudC52ZWN0b3IgPSBFWENfT0Y7CisgICAgICAgICAgICBjdHh0 LT5ldmVudC50eXBlID0gWDg2X0VWRU5UVFlQRV9TV19FWENFUFRJT047CisgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgY2FzZSAweGYxOiAvKiBpY2VicCAqLworICAgICAgICAgICAgY3R4dC0+ ZXZlbnQudmVjdG9yID0gRVhDX0RCOworICAgICAgICAgICAgY3R4dC0+ZXZlbnQudHlwZSA9IFg4 Nl9FVkVOVFRZUEVfUFJJX1NXX0VYQ0VQVElPTjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg ICB9CisgICAgICAgIGN0eHQtPmV2ZW50LmVycm9yX2NvZGUgPSBYODZfRVZFTlRfTk9fRUM7Cisg ICAgICAgIGN0eHQtPmV2ZW50Lmluc25fbGVuID0gX3JlZ3MucihpcCkgLSBjdHh0LT5yZWdzLT5y KGlwKTsKKyAgICAgICAgY3R4dC0+ZXZlbnRfcGVuZGluZyA9IHRydWU7CisgICAgICAgIHJjID0g WDg2RU1VTF9FWENFUFRJT047CisgICAgICAgIGdvdG8gZG9uZTsKIAogICAgIGNhc2UgMHhjZjog LyogaXJldCAqLyB7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2VsLCBlaXAsIGVmbGFnczsKQEAg LTQ3ODIsMTEgKzQ2NTgsNiBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgIGdvdG8gZG9uZTsK ICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIDB4ZjE6IC8qIGludDEgKGljZWJwKSAqLwotICAg ICAgICBzcmMudmFsID0gRVhDX0RCOwotICAgICAgICBzd2ludF90eXBlID0geDg2X3N3aW50X2lj ZWJwOwotICAgICAgICBnb3RvIHN3aW50OwotCiAgICAgY2FzZSAweGY0OiAvKiBobHQgKi8KICAg ICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKCFtb2RlX3JpbmcwKCksIEVYQ19HUCwgMCk7CiAg ICAgICAgIGN0eHQtPnJldGlyZS5obHQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmggYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2 X2VtdWxhdGUuaAppbmRleCA5YzVmY2RlLi4yMTVhZGY2IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94 ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaAorKysgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxh dGUveDg2X2VtdWxhdGUuaApAQCAtNjAsMjcgKzYwLDYgQEAgc3RhdGljIGlubGluZSBib29sIGlz X3g4Nl9zeXN0ZW1fc2VnbWVudChlbnVtIHg4Nl9zZWdtZW50IHNlZykKICAgICByZXR1cm4gc2Vn ID49IHg4Nl9zZWdfdHIgJiYgc2VnIDwgeDg2X3NlZ19ub25lOwogfQogCi0vKiBDbGFzc2lmaWNh dGlvbiBvZiB0aGUgdHlwZXMgb2Ygc29mdHdhcmUgZ2VuZXJhdGVkIGludGVycnVwdHMvZXhjZXB0 aW9ucy4gKi8KLWVudW0geDg2X3N3aW50X3R5cGUgewotICAgIHg4Nl9zd2ludF9pY2VicCwgLyog MHhmMSAqLwotICAgIHg4Nl9zd2ludF9pbnQzLCAgLyogMHhjYyAqLwotICAgIHg4Nl9zd2ludF9p bnRvLCAgLyogMHhjZSAqLwotICAgIHg4Nl9zd2ludF9pbnQsICAgLyogMHhjZCAkbiAqLwotfTsK LQotLyoKLSAqIEhvdyBtdWNoIGhlbHAgaXMgcmVxdWlyZWQgd2l0aCBzb2Z0d2FyZSBldmVudCBp bmplY3Rpb24/Ci0gKgotICogQWxsIHNvZnR3YXJlIGV2ZW50cyByZXR1cm4gZnJvbSB4ODZfZW11 bGF0ZSgpIHdpdGggWDg2RU1VTF9FWENFUFRJT04gYW5kCi0gKiBmYXVsdC1saWtlIHNlbWFudGlj cy4gIFRoaXMganVzdCBjb250cm9scyB3aGV0aGVyIHRoZSBlbXVsYXRvciBwZXJmb3JtcwotICog cHJlc2VuY2UvZHBsL2V0YyBjaGVja3MgYW5kIHBvc3NpYmx5IHJhaXNlcyBleGNlcHRpb25zIGlu c3RlYWQuCi0gKi8KLWVudW0geDg2X3N3aW50X2VtdWxhdGlvbiB7Ci0gICAgeDg2X3N3aW50X2Vt dWxhdGVfbm9uZSwgLyogSGFyZHdhcmUgc3VwcG9ydHMgYWxsIHNvZnR3YXJlIGluamVjdGlvbiBw cm9wZXJseSAqLwotICAgIHg4Nl9zd2ludF9lbXVsYXRlX2ljZWJwLC8qIEhlbHAgbmVlZGVkIHdp dGggYGljZWJwYCAoMHhmMSkgKi8KLSAgICB4ODZfc3dpbnRfZW11bGF0ZV9hbGwsICAvKiBIZWxw IG5lZWRlZCB3aXRoIGFsbCBzb2Z0d2FyZSBldmVudHMgKi8KLX07Ci0KIC8qCiAgKiB4ODYgZXZl bnQgdHlwZXMuIFRoaXMgZW51bWVyYXRpb24gaXMgdmFsaWQgZm9yOgogICogIEludGVsIFZNWDog e1ZNX0VOVFJZLFZNX0VYSVQsSURUX1ZFQ1RPUklOR31fSU5UUl9JTkZPWzEwOjhdCkBAIC00NzIs OSArNDUxLDYgQEAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQKICAgICAgKiBJbnB1dC1vbmx5IHN0 YXRlOgogICAgICAqLwogCi0gICAgLyogU29mdHdhcmUgZXZlbnQgaW5qZWN0aW9uIHN1cHBvcnQu ICovCi0gICAgZW51bSB4ODZfc3dpbnRfZW11bGF0aW9uIHN3aW50X2VtdWxhdGU7Ci0KICAgICAv KiBDUFUgdmVuZG9yIChYODZfVkVORE9SX1VOS05PV04gZm9yICJkb24ndCBjYXJlIikgKi8KICAg ICB1bnNpZ25lZCBjaGFyIHZlbmRvcjsKIApAQCAtNjk5LDM1ICs2NzUsNiBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgeDg2X2VtdWxfcGFnZWZhdWx0KAogICAgIGN0eHQtPmV2ZW50X3BlbmRpbmcgPSB0 cnVlOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgeDg2X2VtdWxfc29mdHdhcmVfZXZlbnQoCi0g ICAgZW51bSB4ODZfc3dpbnRfdHlwZSB0eXBlLCB1aW50OF90IHZlY3RvciwgdWludDhfdCBpbnNu X2xlbiwKLSAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKLXsKLSAgICBBU1NFUlQo IWN0eHQtPmV2ZW50X3BlbmRpbmcpOwotCi0gICAgc3dpdGNoICggdHlwZSApCi0gICAgewotICAg IGNhc2UgeDg2X3N3aW50X2ljZWJwOgotICAgICAgICBjdHh0LT5ldmVudC50eXBlID0gWDg2X0VW RU5UVFlQRV9QUklfU1dfRVhDRVBUSU9OOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgeDg2 X3N3aW50X2ludDM6Ci0gICAgY2FzZSB4ODZfc3dpbnRfaW50bzoKLSAgICAgICAgY3R4dC0+ZXZl bnQudHlwZSA9IFg4Nl9FVkVOVFRZUEVfU1dfRVhDRVBUSU9OOwotICAgICAgICBicmVhazsKLQot ICAgIGNhc2UgeDg2X3N3aW50X2ludDoKLSAgICAgICAgY3R4dC0+ZXZlbnQudHlwZSA9IFg4Nl9F VkVOVFRZUEVfU1dfSU5URVJSVVBUOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjdHh0 LT5ldmVudC52ZWN0b3IgPSB2ZWN0b3I7Ci0gICAgY3R4dC0+ZXZlbnQuZXJyb3JfY29kZSA9IFg4 Nl9FVkVOVF9OT19FQzsKLSAgICBjdHh0LT5ldmVudC5pbnNuX2xlbiA9IGluc25fbGVuOwotCi0g ICAgY3R4dC0+ZXZlbnRfcGVuZGluZyA9IHRydWU7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgdm9pZCB4 ODZfZW11bF9yZXNldF9ldmVudChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKIHsKICAg ICBjdHh0LT5ldmVudF9wZW5kaW5nID0gZmFsc2U7Ci0tIAoyLjEuNAoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QK WGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=