From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH for 4.9 5/6] x86/emul: Drop swint_emulate infrastructure Date: Fri, 31 Mar 2017 20:50:52 +0100 Message-ID: <1490989853-21879-6-git-send-email-andrew.cooper3@citrix.com> References: <1490989853-21879-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: <1490989853-21879-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 , Paul Durrant , Tim Deegan , Jan Beulich List-Id: xen-devel@lists.xenproject.org V2l0aCB0aGUgU1ZNIGluamVjdGlvbiBsb2dpYyBjYXBhYmxlIG9mIGRvaW5nIGl0cyBvd24gZW11 bGF0aW9uLCB0aGVyZSBpcyBubwpuZWVkIGZvciB0aGlzIGhhcmR3YXJlLXNwZWNpZmljIGFzc2lz dGFuY2UgaW4gdGhlIGNvbW1vbiBlbXVsYXRvci4KClNpZ25lZC1vZmYtYnk6IEFuZHJldyBDb29w ZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Ci0tLQpDQzogSmFuIEJldWxpY2ggPEpCZXVs aWNoQHN1c2UuY29tPgpDQzogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4K Q0M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpDQzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3Jh bGxAYXJtLmNvbT4KLS0tCiB0b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9mdXp6 LWVtdWwuYyB8ICAxOCArLS0KIHhlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jICAgICAgICAgICAg ICAgICAgICAgIHwgICA3IC0KIHhlbi9hcmNoL3g4Ni9tbS5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAyIC0KIHhlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMgICAgICAg ICAgICAgICAgIHwgICAxIC0KIHhlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5j ICAgICAgICAgIHwgMTg3ICsrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogeGVuL2FyY2gveDg2L3g4 Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmggICAgICAgICAgfCAgNTMgLS0tLS0tLQogNiBmaWxlcyBj aGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCAyMzggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv dG9vbHMvZnV6ei94ODZfaW5zdHJ1Y3Rpb25fZW11bGF0b3IvZnV6ei1lbXVsLmMgYi90b29scy9m dXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9mdXp6LWVtdWwuYwppbmRleCA4OTA2NDJjLi44 NDg4ODE2IDEwMDY0NAotLS0gYS90b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9m dXp6LWVtdWwuYworKysgYi90b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9mdXp6 LWVtdWwuYwpAQCAtNTM2LDggKzUzNiw3IEBAIGVudW0gewogICAgIEhPT0tfcHV0X2ZwdSwKICAg ICBIT09LX2ludmxwZywKICAgICBIT09LX3ZtZnVuYywKLSAgICBPUFRJT05fc3dpbnRfZW11bGF0 aW9uLCAvKiBUd28gYml0cyAqLwotICAgIENBTk9OSUNBTElaRV9yaXAgPSBPUFRJT05fc3dpbnRf ZW11bGF0aW9uICsgMiwKKyAgICBDQU5PTklDQUxJWkVfcmlwLAogICAgIENBTk9OSUNBTElaRV9y c3AsCiAgICAgQ0FOT05JQ0FMSVpFX3JicAogfTsKQEAgLTU3NywxOSArNTc2LDYgQEAgc3RhdGlj IHZvaWQgZGlzYWJsZV9ob29rcyh2b2lkKQogICAgIE1BWUJFX0RJU0FCTEVfSE9PSyhpbnZscGcp OwogfQogCi1zdGF0aWMgdm9pZCBzZXRfc3dpbnRfc3VwcG9ydChzdHJ1Y3QgeDg2X2VtdWxhdGVf Y3R4dCAqY3R4dCkKLXsKLSAgICB1bnNpZ25lZCBpbnQgc3dpbnRfb3B0ID0gKGlucHV0Lm9wdGlv bnMgPj4gT1BUSU9OX3N3aW50X2VtdWxhdGlvbikgJiAzOwotICAgIHN0YXRpYyBjb25zdCBlbnVt IHg4Nl9zd2ludF9lbXVsYXRpb24gbWFwWzRdID0gewotICAgICAgICB4ODZfc3dpbnRfZW11bGF0 ZV9ub25lLAotICAgICAgICB4ODZfc3dpbnRfZW11bGF0ZV9ub25lLAotICAgICAgICB4ODZfc3dp bnRfZW11bGF0ZV9pY2VicCwKLSAgICAgICAgeDg2X3N3aW50X2VtdWxhdGVfYWxsCi0gICAgfTsK LQotICAgIGN0eHQtPnN3aW50X2VtdWxhdGUgPSBtYXBbc3dpbnRfb3B0XTsKLX0KLQogLyoKICAq IENvbnN0cmFpbiBpbnB1dCB0byBhcmNoaXRlY3R1cmFsbHktcG9zc2libGUgc3RhdGVzIHdoZXJl CiAgKiB0aGUgZW11bGF0b3IgcmVsaWVzIG9uIHRoZXNlCkBAIC02OTMsOCArNjc5LDYgQEAgaW50 IExMVk1GdXp6ZXJUZXN0T25lSW5wdXQoY29uc3QgdWludDhfdCAqZGF0YV9wLCBzaXplX3Qgc2l6 ZSkKIAogICAgIGRpc2FibGVfaG9va3MoKTsKIAotICAgIHNldF9zd2ludF9zdXBwb3J0KCZjdHh0 KTsKLQogICAgIGRvIHsKICAgICAgICAgLyogRklYTUU6IFVudGlsIHdlIGFjdHVhbGx5IGltcGxl bWVudCBTSUdGUEUgaGFuZGxpbmcgcHJvcGVybHkgKi8KICAgICAgICAgc2V0dXBfZnB1X2V4Y2Vw dGlvbl9oYW5kbGVyKCk7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYyBi L3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCmluZGV4IGY1Nzg3OTYuLmVmYWMyZTkgMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0v ZW11bGF0ZS5jCkBAIC0yMDM2LDEzICsyMDM2LDYgQEAgdm9pZCBodm1fZW11bGF0ZV9pbml0X29u Y2UoCiAgICAgaHZtZW11bF9jdHh0LT5jdHh0LnJlZ3MgPSByZWdzOwogICAgIGh2bWVtdWxfY3R4 dC0+Y3R4dC52ZW5kb3IgPSBjdXJyLT5kb21haW4tPmFyY2guY3B1aWQtPng4Nl92ZW5kb3I7CiAg ICAgaHZtZW11bF9jdHh0LT5jdHh0LmZvcmNlX3dyaXRlYmFjayA9IHRydWU7Ci0KLSAgICBpZiAo IGNwdV9oYXNfdm14ICkKLSAgICAgICAgaHZtZW11bF9jdHh0LT5jdHh0LnN3aW50X2VtdWxhdGUg PSB4ODZfc3dpbnRfZW11bGF0ZV9ub25lOwotICAgIGVsc2UgaWYgKCBjcHVfaGFzX3N2bV9ucmlw cyApCi0gICAgICAgIGh2bWVtdWxfY3R4dC0+Y3R4dC5zd2ludF9lbXVsYXRlID0geDg2X3N3aW50 X2VtdWxhdGVfaWNlYnA7Ci0gICAgZWxzZQotICAgICAgICBodm1lbXVsX2N0eHQtPmN0eHQuc3dp bnRfZW11bGF0ZSA9IHg4Nl9zd2ludF9lbXVsYXRlX2FsbDsKIH0KIAogdm9pZCBodm1fZW11bGF0 ZV9pbml0X3Blcl9pbnNuKApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tLmMgYi94ZW4vYXJj aC94ODYvbW0uYwppbmRleCBiZTRlMzA4Li4zOTE4YTM3IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94 ODYvbW0uYworKysgYi94ZW4vYXJjaC94ODYvbW0uYwpAQCAtNTQxMiw3ICs1NDEyLDYgQEAgaW50 IHB0d3JfZG9fcGFnZV9mYXVsdChzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyBhZGRyLAog ICAgICAgICAgICAgLnZlbmRvciA9IGQtPmFyY2guY3B1aWQtPng4Nl92ZW5kb3IsCiAgICAgICAg ICAgICAuYWRkcl9zaXplID0gaXNfcHZfMzJiaXRfZG9tYWluKGQpID8gMzIgOiBCSVRTX1BFUl9M T05HLAogICAgICAgICAgICAgLnNwX3NpemUgICA9IGlzX3B2XzMyYml0X2RvbWFpbihkKSA/IDMy IDogQklUU19QRVJfTE9ORywKLSAgICAgICAgICAgIC5zd2ludF9lbXVsYXRlID0geDg2X3N3aW50 X2VtdWxhdGVfbm9uZSwKICAgICAgICAgfSwKICAgICB9OwogICAgIGludCByYzsKQEAgLTU1Njcs NyArNTU2Niw2IEBAIGludCBtbWlvX3JvX2RvX3BhZ2VfZmF1bHQoc3RydWN0IHZjcHUgKnYsIHVu c2lnbmVkIGxvbmcgYWRkciwKICAgICAgICAgLnZlbmRvciA9IHYtPmRvbWFpbi0+YXJjaC5jcHVp ZC0+eDg2X3ZlbmRvciwKICAgICAgICAgLmFkZHJfc2l6ZSA9IGFkZHJfc2l6ZSwKICAgICAgICAg LnNwX3NpemUgPSBhZGRyX3NpemUsCi0gICAgICAgIC5zd2ludF9lbXVsYXRlID0geDg2X3N3aW50 X2VtdWxhdGVfbm9uZSwKICAgICAgICAgLmRhdGEgPSAmbW1pb19yb19jdHh0CiAgICAgfTsKICAg ICBpbnQgcmM7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5jIGIv eGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYwppbmRleCA1NTFhN2QzLi4yZmM3OTZiIDEw MDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5jCisrKyBiL3hlbi9hcmNo L3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMKQEAgLTMyOCw3ICszMjgsNiBAQCBjb25zdCBzdHJ1Y3Qg eDg2X2VtdWxhdGVfb3BzICpzaGFkb3dfaW5pdF9lbXVsYXRpb24oCiAKICAgICBzaF9jdHh0LT5j dHh0LnJlZ3MgPSByZWdzOwogICAgIHNoX2N0eHQtPmN0eHQudmVuZG9yID0gdi0+ZG9tYWluLT5h cmNoLmNwdWlkLT54ODZfdmVuZG9yOwotICAgIHNoX2N0eHQtPmN0eHQuc3dpbnRfZW11bGF0ZSA9 IHg4Nl9zd2ludF9lbXVsYXRlX25vbmU7CiAKICAgICAvKiBTZWdtZW50IGNhY2hlIGluaXRpYWxp c2F0aW9uLiBQcmltZWQgd2l0aCBDUy4gKi8KICAgICBjcmVnID0gaHZtX2dldF9zZWdfcmVnKHg4 Nl9zZWdfY3MsIHNoX2N0eHQpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRl L3g4Nl9lbXVsYXRlLmMgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwpp bmRleCA3YWY4YTQyLi43MzE1Y2E2IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxh dGUveDg2X2VtdWxhdGUuYworKysgYi94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxh dGUuYwpAQCAtMTk5OSwxNDIgKzE5OTksNiBAQCBzdGF0aWMgYm9vbCB1bWlwX2FjdGl2ZShzdHJ1 Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwKICAgICAgICAgICAgKGNyNCAmIFg4Nl9DUjRfVU1J UCk7CiB9CiAKLS8qIEluamVjdCBhIHNvZnR3YXJlIGludGVycnVwdC9leGNlcHRpb24sIGVtdWxh dGluZyBpZiBuZWVkZWQuICovCi1zdGF0aWMgaW50IGluamVjdF9zd2ludChlbnVtIHg4Nl9zd2lu dF90eXBlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IHZlY3RvciwgdWlu dDhfdCBpbnNuX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4ODZfZW11bGF0 ZV9jdHh0ICpjdHh0LAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHg4Nl9l bXVsYXRlX29wcyAqb3BzKQotewotICAgIGludCByYywgZXJyb3JfY29kZSwgZmF1bHRfdHlwZSA9 IEVYQ19HUDsKLQotICAgIC8qCi0gICAgICogV2l0aG91dCBoYXJkd2FyZSBzdXBwb3J0LCBpbmpl Y3Rpbmcgc29mdHdhcmUgaW50ZXJydXB0cy9leGNlcHRpb25zIGlzCi0gICAgICogcHJvYmxlbWF0 aWMuCi0gICAgICoKLSAgICAgKiBBbGwgc29mdHdhcmUgbWV0aG9kcyBvZiBnZW5lcmF0aW5nIGV4 Y2VwdGlvbnMgKG90aGVyIHRoYW4gQk9VTkQpIHlpZWxkCi0gICAgICogdHJhcHMsIHNvIGVpcCBp biB0aGUgZXhjZXB0aW9uIGZyYW1lIG5lZWRzIHRvIHBvaW50IGFmdGVyIHRoZQotICAgICAqIGlu c3RydWN0aW9uLCBub3QgYXQgaXQuCi0gICAgICoKLSAgICAgKiBIb3dldmVyLCBpZiBpbmplY3Rp bmcgaXQgYXMgYSBoYXJkd2FyZSBleGNlcHRpb24gY2F1c2VzIGEgZmF1bHQgZHVyaW5nCi0gICAg ICogZGVsaXZlcnksIG91ciBhZGp1c3RtZW50IG9mIGVpcCB3aWxsIGNhdXNlIHRoZSBmYXVsdCB0 byBiZSByZXBvcnRlZAotICAgICAqIGFmdGVyIHRoZSBmYXVsdGluZyBpbnN0cnVjdGlvbiwgbm90 IHBvaW50aW5nIHRvIGl0LgotICAgICAqCi0gICAgICogVGhlcmVmb3JlLCBlaXAgY2FuIG9ubHkg c2FmZWx5IGJlIHdvdW5kIGZvcndhcmRzIGlmIHdlIGFyZSBjZXJ0YWluIHRoYXQKLSAgICAgKiBp bmplY3RpbmcgYW4gZXF1aXZhbGVudCBoYXJkd2FyZSBleGNlcHRpb24gd29uJ3QgZmF1bHQsIHdo aWNoIG1lYW5zCi0gICAgICogZW11bGF0aW5nIGV2ZXJ5dGhpbmcgdGhlIHByb2Nlc3NvciB3b3Vs ZCBkbyBvbiBhIGNvbnRyb2wgdHJhbnNmZXIuCi0gICAgICoKLSAgICAgKiBIb3dldmVyLCBlbXVs YXRpb24gb2YgY29tcGxldGUgY29udHJvbCB0cmFuc2ZlcnMgaXMgdmVyeSBjb21wbGljYXRlZC4K LSAgICAgKiBBbGwgd2UgY2FyZSBhYm91dCBpcyB0aGF0IGd1ZXN0IHVzZXJzcGFjZSBjYW5ub3Qg YXZvaWQgdGhlIGRlc2NyaXB0b3IKLSAgICAgKiBEUEwgY2hlY2sgYnkgdXNpbmcgdGhlIFhlbiBl bXVsYXRvciwgYW5kIHN1Y2Nlc3NmdWxseSBpbnZva2UgRFBMPTAKLSAgICAgKiBkZXNjcmlwdG9y cy4KLSAgICAgKgotICAgICAqIEFueSBPUyB3aGljaCB3b3VsZCBmdXJ0aGVyIGZhdWx0IGR1cmlu ZyBpbmplY3Rpb24gaXMgZ29pbmcgdG8gcmVjZWl2ZSBhCi0gICAgICogZG91YmxlIGZhdWx0IGFu eXdheSwgYW5kIHdvbid0IGJlIGluIGEgcG9zaXRpb24gdG8gY2FyZSB0aGF0IHRoZQotICAgICAq IGZhdWx0aW5nIGVpcCBpcyBpbmNvcnJlY3QuCi0gICAgICovCi0KLSAgICBpZiAoIChjdHh0LT5z d2ludF9lbXVsYXRlID09IHg4Nl9zd2ludF9lbXVsYXRlX2FsbCkgfHwKLSAgICAgICAgICgoY3R4 dC0+c3dpbnRfZW11bGF0ZSA9PSB4ODZfc3dpbnRfZW11bGF0ZV9pY2VicCkgJiYKLSAgICAgICAg ICAodHlwZSA9PSB4ODZfc3dpbnRfaWNlYnApKSApCi0gICAgewotICAgICAgICBpZiAoICFpbl9y ZWFsbW9kZShjdHh0LCBvcHMpICkKLSAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgaW50 IGlkdGVfc2l6ZSwgaWR0ZV9vZmZzZXQ7Ci0gICAgICAgICAgICBzdHJ1Y3QgeyB1aW50MzJfdCBh LCBiLCBjLCBkOyB9IGlkdGUgPSB7fTsKLSAgICAgICAgICAgIGludCBsbSA9IGluX2xvbmdtb2Rl KGN0eHQsIG9wcyk7Ci0KLSAgICAgICAgICAgIGlmICggbG0gPCAwICkKLSAgICAgICAgICAgICAg ICByZXR1cm4gWDg2RU1VTF9VTkhBTkRMRUFCTEU7Ci0KLSAgICAgICAgICAgIGlkdGVfc2l6ZSA9 IGxtID8gMTYgOiA4OwotICAgICAgICAgICAgaWR0ZV9vZmZzZXQgPSB2ZWN0b3IgKiBpZHRlX3Np emU7Ci0KLSAgICAgICAgICAgIC8qIGljZWJwIHNldHMgdGhlIEV4dGVybmFsIEV2ZW50IGJpdCBk ZXNwaXRlIGJlaW5nIGFuIGluc3RydWN0aW9uLiAqLwotICAgICAgICAgICAgZXJyb3JfY29kZSA9 ICh2ZWN0b3IgPDwgMykgfCBFQ09ERV9JRFQgfAotICAgICAgICAgICAgICAgICh0eXBlID09IHg4 Nl9zd2ludF9pY2VicCA/IEVDT0RFX0VYVCA6IDApOwotCi0gICAgICAgICAgICAvKgotICAgICAg ICAgICAgICogVE9ETyAtIHRoaXMgZG9lcyBub3QgY292ZXIgdGhlIHY4MDg2IG1vZGUgd2l0aCBD UjQuVk1FIGNhc2UKLSAgICAgICAgICAgICAqIGNvcnJlY3RseSwgYnV0IGZhbGxzIG9uIHRoZSBz YWZlIHNpZGUgZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZgotICAgICAgICAgICAgICogYSAzMmJp dCBPUy4gIFNvbWVvbmUgd2l0aCBtYW55IFRVSVRzIGNhbiBzZWUgYWJvdXQgcmVhZGluZyB0aGUK LSAgICAgICAgICAgICAqIFRTUyBTb2Z0d2FyZSBJbnRlcnJ1cHQgUmVkaXJlY3Rpb24gYml0bWFw LgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAoIChjdHh0LT5yZWdzLT5lZmxhZ3Mg JiBYODZfRUZMQUdTX1ZNKSAmJgotICAgICAgICAgICAgICAgICAoKGN0eHQtPnJlZ3MtPmVmbGFn cyAmIFg4Nl9FRkxBR1NfSU9QTCkgIT0gWDg2X0VGTEFHU19JT1BMKSApCi0gICAgICAgICAgICAg ICAgZ290byByYWlzZV9leG47Ci0KLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBSZWFk IGFsbCA4LzE2IGJ5dGVzIHNvIHRoZSBpZHRyIGxpbWl0IGNoZWNrIGlzIGFwcGxpZWQgcHJvcGVy bHkKLSAgICAgICAgICAgICAqIHRvIHRoaXMgZW50cnksIGV2ZW4gdGhvdWdoIHdlIG9ubHkgZW5k IHVwIGxvb2tpbmcgYXQgdGhlIDJuZAotICAgICAgICAgICAgICogd29yZC4KLSAgICAgICAgICAg ICAqLwotICAgICAgICAgICAgc3dpdGNoICggcmMgPSBvcHMtPnJlYWQoeDg2X3NlZ19pZHRyLCBp ZHRlX29mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpZHRlLCBp ZHRlX3NpemUsIGN0eHQpICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIGNhc2UgWDg2RU1V TF9PS0FZOgotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBjYXNlIFg4NkVN VUxfRVhDRVBUSU9OOgotICAgICAgICAgICAgICAgIGlmICggIWN0eHQtPmV2ZW50X3BlbmRpbmcg KQotICAgICAgICAgICAgICAgICAgICBnb3RvIHJhaXNlX2V4bjsKLSAgICAgICAgICAgICAgICAv KiBmYWxsdGhyb3VnaCAqLwotCi0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAg IHJldHVybiByYzsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLyogVGhpcyBtdXN0IGJl IGFuIGludGVycnVwdCwgdHJhcCwgb3IgdGFzayBnYXRlLiAqLwotI2lmZGVmIF9fWEVOX18KLSAg ICAgICAgICAgIHN3aXRjaCAoIChpZHRlLmIgPj4gOCkgJiAweDFmICkKLSAgICAgICAgICAgIHsK LSAgICAgICAgICAgIGNhc2UgU1lTX0RFU0NfaXJxX2dhdGU6Ci0gICAgICAgICAgICBjYXNlIFNZ U19ERVNDX3RyYXBfZ2F0ZToKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh c2UgU1lTX0RFU0NfaXJxX2dhdGUxNjoKLSAgICAgICAgICAgIGNhc2UgU1lTX0RFU0NfdHJhcF9n YXRlMTY6Ci0gICAgICAgICAgICBjYXNlIFNZU19ERVNDX3Rhc2tfZ2F0ZToKLSAgICAgICAgICAg ICAgICBpZiAoICFsbSApCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg ICAgIC8qIGZhbGwgdGhyb3VnaCAqLwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg ICAgICBnb3RvIHJhaXNlX2V4bjsKLSAgICAgICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgICAg ICAvKiBUaGUgNjQtYml0IGhpZ2ggaGFsZidzIHR5cGUgbXVzdCBiZSB6ZXJvLiAqLwotICAgICAg ICAgICAgaWYgKCBpZHRlLmQgJiAweDFmMDAgKQotICAgICAgICAgICAgICAgIGdvdG8gcmFpc2Vf ZXhuOwotCi0gICAgICAgICAgICAvKiBpY2VicCBjb3VudHMgYXMgYSBoYXJkd2FyZSBldmVudCwg YW5kIGJ5cGFzc2VzIHRoZSBkcGwgY2hlY2suICovCi0gICAgICAgICAgICBpZiAoIHR5cGUgIT0g eDg2X3N3aW50X2ljZWJwICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgY3Bs ID0gZ2V0X2NwbChjdHh0LCBvcHMpOwotCi0gICAgICAgICAgICAgICAgZmFpbF9pZihjcGwgPCAw KTsKLQotICAgICAgICAgICAgICAgIGlmICggY3BsID4gKChpZHRlLmIgPj4gMTMpICYgMykgKQot ICAgICAgICAgICAgICAgICAgICBnb3RvIHJhaXNlX2V4bjsKLSAgICAgICAgICAgIH0KLQotICAg ICAgICAgICAgLyogSXMgdGhpcyBlbnRyeSBwcmVzZW50PyAqLwotICAgICAgICAgICAgaWYgKCAh KGlkdGUuYiAmICgxdSA8PCAxNSkpICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBm YXVsdF90eXBlID0gRVhDX05QOwotICAgICAgICAgICAgICAgIGdvdG8gcmFpc2VfZXhuOwotICAg ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgeDg2X2VtdWxfc29mdHdhcmVfZXZl bnQodHlwZSwgdmVjdG9yLCBpbnNuX2xlbiwgY3R4dCk7Ci0gICAgcmMgPSBYODZFTVVMX09LQVk7 Ci0KLSBkb25lOgotICAgIHJldHVybiByYzsKLQotIHJhaXNlX2V4bjoKLSAgICBnZW5lcmF0ZV9l eGNlcHRpb24oZmF1bHRfdHlwZSwgZXJyb3JfY29kZSk7Ci19Ci0KIHN0YXRpYyB2b2lkIGFkanVz dF9ibmQoc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQsCiAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMgKm9wcywgZW51bSB2ZXhfcGZ4IHBmeCkK IHsKQEAgLTMxMDEsNyArMjk2NSw2IEBAIHg4Nl9lbXVsYXRlKAogICAgIHN0cnVjdCBvcGVyYW5k IHNyYyA9IHsgLnJlZyA9IFBUUl9QT0lTT04gfTsKICAgICBzdHJ1Y3Qgb3BlcmFuZCBkc3QgPSB7 IC5yZWcgPSBQVFJfUE9JU09OIH07CiAgICAgdW5zaWduZWQgbG9uZyBjcjQ7Ci0gICAgZW51bSB4 ODZfc3dpbnRfdHlwZSBzd2ludF90eXBlOwogICAgIHN0cnVjdCBmcHVfaW5zbl9jdHh0IGZpYyA9 IHsgLnR5cGUgPSBYODZFTVVMX0ZQVV9ub25lLCAuZXhuX3JhaXNlZCA9IC0xIH07CiAgICAgc3Ry dWN0IHg4Nl9lbXVsYXRlX3N0dWIgc3R1YiA9IHt9OwogICAgIERFQ0xBUkVfQUxJR05FRChtbXZh bF90LCBtbXZhbCk7CkBAIC00MTAzLDI1ICszOTY2LDM4IEBAIHg4Nl9lbXVsYXRlKAogICAgICAg ICAgICAgZ290byBkb25lOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgMHhjYzogLyogaW50 MyAqLwotICAgICAgICBzcmMudmFsID0gRVhDX0JQOwotICAgICAgICBzd2ludF90eXBlID0geDg2 X3N3aW50X2ludDM7Ci0gICAgICAgIGdvdG8gc3dpbnQ7Ci0KLSAgICBjYXNlIDB4Y2Q6IC8qIGlu dCBpbW04ICovCi0gICAgICAgIHN3aW50X3R5cGUgPSB4ODZfc3dpbnRfaW50OwotICAgIHN3aW50 OgotICAgICAgICByYyA9IGluamVjdF9zd2ludChzd2ludF90eXBlLCAodWludDhfdClzcmMudmFs LAotICAgICAgICAgICAgICAgICAgICAgICAgICBfcmVncy5yKGlwKSAtIGN0eHQtPnJlZ3MtPnIo aXApLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjdHh0LCBvcHMpID8gOiBYODZFTVVMX0VY Q0VQVElPTjsKLSAgICAgICAgZ290byBkb25lOwotCiAgICAgY2FzZSAweGNlOiAvKiBpbnRvICov CiAgICAgICAgIGlmICggIShfcmVncy5lZmxhZ3MgJiBYODZfRUZMQUdTX09GKSApCiAgICAgICAg ICAgICBicmVhazsKLSAgICAgICAgc3JjLnZhbCA9IEVYQ19PRjsKLSAgICAgICAgc3dpbnRfdHlw ZSA9IHg4Nl9zd2ludF9pbnRvOwotICAgICAgICBnb3RvIHN3aW50OworICAgICAgICAvKiBGYWxs dGhyb3VnaCAqLworICAgIGNhc2UgMHhjYzogLyogaW50MyAqLworICAgIGNhc2UgMHhjZDogLyog aW50IGltbTggKi8KKyAgICBjYXNlIDB4ZjE6IC8qIGludDEgKGljZWJwKSAqLworICAgICAgICBB U1NFUlQoIWN0eHQtPmV2ZW50X3BlbmRpbmcpOworICAgICAgICBzd2l0Y2ggKCBjdHh0LT5vcGNv ZGUgKQorICAgICAgICB7CisgICAgICAgIGNhc2UgMHhjYzogLyogaW50MyAqLworICAgICAgICAg ICAgY3R4dC0+ZXZlbnQudmVjdG9yID0gRVhDX0JQOworICAgICAgICAgICAgY3R4dC0+ZXZlbnQu dHlwZSA9IFg4Nl9FVkVOVFRZUEVfU1dfRVhDRVBUSU9OOworICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgIGNhc2UgMHhjZDogLyogaW50IGltbTggKi8KKyAgICAgICAgICAgIGN0eHQtPmV2ZW50 LnZlY3RvciA9IHNyYy52YWw7CisgICAgICAgICAgICBjdHh0LT5ldmVudC50eXBlID0gWDg2X0VW RU5UVFlQRV9TV19JTlRFUlJVUFQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAw eGNlOiAvKiBpbnRvICovCisgICAgICAgICAgICBjdHh0LT5ldmVudC52ZWN0b3IgPSBFWENfT0Y7 CisgICAgICAgICAgICBjdHh0LT5ldmVudC50eXBlID0gWDg2X0VWRU5UVFlQRV9TV19FWENFUFRJ T047CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAweGYxOiAvKiBpY2VicCAqLwor ICAgICAgICAgICAgY3R4dC0+ZXZlbnQudmVjdG9yID0gRVhDX0RCOworICAgICAgICAgICAgY3R4 dC0+ZXZlbnQudHlwZSA9IFg4Nl9FVkVOVFRZUEVfUFJJX1NXX0VYQ0VQVElPTjsKKyAgICAgICAg ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGN0eHQtPmV2ZW50LmVycm9yX2NvZGUgPSBY ODZfRVZFTlRfTk9fRUM7CisgICAgICAgIGN0eHQtPmV2ZW50Lmluc25fbGVuID0gX3JlZ3Mucihp cCkgLSBjdHh0LT5yZWdzLT5yKGlwKTsKKyAgICAgICAgY3R4dC0+ZXZlbnRfcGVuZGluZyA9IHRy dWU7CisgICAgICAgIHJjID0gWDg2RU1VTF9FWENFUFRJT047CisgICAgICAgIGdvdG8gZG9uZTsK IAogICAgIGNhc2UgMHhjZjogLyogaXJldCAqLyB7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2Vs LCBlaXAsIGVmbGFnczsKQEAgLTQ3ODIsMTEgKzQ2NTgsNiBAQCB4ODZfZW11bGF0ZSgKICAgICAg ICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIDB4ZjE6IC8qIGlu dDEgKGljZWJwKSAqLwotICAgICAgICBzcmMudmFsID0gRVhDX0RCOwotICAgICAgICBzd2ludF90 eXBlID0geDg2X3N3aW50X2ljZWJwOwotICAgICAgICBnb3RvIHN3aW50OwotCiAgICAgY2FzZSAw eGY0OiAvKiBobHQgKi8KICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKCFtb2RlX3Jpbmcw KCksIEVYQ19HUCwgMCk7CiAgICAgICAgIGN0eHQtPnJldGlyZS5obHQgPSB0cnVlOwpkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmggYi94ZW4vYXJjaC94 ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaAppbmRleCA5YzVmY2RlLi4yMTVhZGY2IDEwMDY0 NAotLS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaAorKysgYi94ZW4v YXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaApAQCAtNjAsMjcgKzYwLDYgQEAgc3Rh dGljIGlubGluZSBib29sIGlzX3g4Nl9zeXN0ZW1fc2VnbWVudChlbnVtIHg4Nl9zZWdtZW50IHNl ZykKICAgICByZXR1cm4gc2VnID49IHg4Nl9zZWdfdHIgJiYgc2VnIDwgeDg2X3NlZ19ub25lOwog fQogCi0vKiBDbGFzc2lmaWNhdGlvbiBvZiB0aGUgdHlwZXMgb2Ygc29mdHdhcmUgZ2VuZXJhdGVk IGludGVycnVwdHMvZXhjZXB0aW9ucy4gKi8KLWVudW0geDg2X3N3aW50X3R5cGUgewotICAgIHg4 Nl9zd2ludF9pY2VicCwgLyogMHhmMSAqLwotICAgIHg4Nl9zd2ludF9pbnQzLCAgLyogMHhjYyAq LwotICAgIHg4Nl9zd2ludF9pbnRvLCAgLyogMHhjZSAqLwotICAgIHg4Nl9zd2ludF9pbnQsICAg LyogMHhjZCAkbiAqLwotfTsKLQotLyoKLSAqIEhvdyBtdWNoIGhlbHAgaXMgcmVxdWlyZWQgd2l0 aCBzb2Z0d2FyZSBldmVudCBpbmplY3Rpb24/Ci0gKgotICogQWxsIHNvZnR3YXJlIGV2ZW50cyBy ZXR1cm4gZnJvbSB4ODZfZW11bGF0ZSgpIHdpdGggWDg2RU1VTF9FWENFUFRJT04gYW5kCi0gKiBm YXVsdC1saWtlIHNlbWFudGljcy4gIFRoaXMganVzdCBjb250cm9scyB3aGV0aGVyIHRoZSBlbXVs YXRvciBwZXJmb3JtcwotICogcHJlc2VuY2UvZHBsL2V0YyBjaGVja3MgYW5kIHBvc3NpYmx5IHJh aXNlcyBleGNlcHRpb25zIGluc3RlYWQuCi0gKi8KLWVudW0geDg2X3N3aW50X2VtdWxhdGlvbiB7 Ci0gICAgeDg2X3N3aW50X2VtdWxhdGVfbm9uZSwgLyogSGFyZHdhcmUgc3VwcG9ydHMgYWxsIHNv ZnR3YXJlIGluamVjdGlvbiBwcm9wZXJseSAqLwotICAgIHg4Nl9zd2ludF9lbXVsYXRlX2ljZWJw LC8qIEhlbHAgbmVlZGVkIHdpdGggYGljZWJwYCAoMHhmMSkgKi8KLSAgICB4ODZfc3dpbnRfZW11 bGF0ZV9hbGwsICAvKiBIZWxwIG5lZWRlZCB3aXRoIGFsbCBzb2Z0d2FyZSBldmVudHMgKi8KLX07 Ci0KIC8qCiAgKiB4ODYgZXZlbnQgdHlwZXMuIFRoaXMgZW51bWVyYXRpb24gaXMgdmFsaWQgZm9y OgogICogIEludGVsIFZNWDoge1ZNX0VOVFJZLFZNX0VYSVQsSURUX1ZFQ1RPUklOR31fSU5UUl9J TkZPWzEwOjhdCkBAIC00NzIsOSArNDUxLDYgQEAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQKICAg ICAgKiBJbnB1dC1vbmx5IHN0YXRlOgogICAgICAqLwogCi0gICAgLyogU29mdHdhcmUgZXZlbnQg aW5qZWN0aW9uIHN1cHBvcnQuICovCi0gICAgZW51bSB4ODZfc3dpbnRfZW11bGF0aW9uIHN3aW50 X2VtdWxhdGU7Ci0KICAgICAvKiBDUFUgdmVuZG9yIChYODZfVkVORE9SX1VOS05PV04gZm9yICJk b24ndCBjYXJlIikgKi8KICAgICB1bnNpZ25lZCBjaGFyIHZlbmRvcjsKIApAQCAtNjk5LDM1ICs2 NzUsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgeDg2X2VtdWxfcGFnZWZhdWx0KAogICAgIGN0eHQt PmV2ZW50X3BlbmRpbmcgPSB0cnVlOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgeDg2X2VtdWxf c29mdHdhcmVfZXZlbnQoCi0gICAgZW51bSB4ODZfc3dpbnRfdHlwZSB0eXBlLCB1aW50OF90IHZl Y3RvciwgdWludDhfdCBpbnNuX2xlbiwKLSAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4 dCkKLXsKLSAgICBBU1NFUlQoIWN0eHQtPmV2ZW50X3BlbmRpbmcpOwotCi0gICAgc3dpdGNoICgg dHlwZSApCi0gICAgewotICAgIGNhc2UgeDg2X3N3aW50X2ljZWJwOgotICAgICAgICBjdHh0LT5l dmVudC50eXBlID0gWDg2X0VWRU5UVFlQRV9QUklfU1dfRVhDRVBUSU9OOwotICAgICAgICBicmVh azsKLQotICAgIGNhc2UgeDg2X3N3aW50X2ludDM6Ci0gICAgY2FzZSB4ODZfc3dpbnRfaW50bzoK LSAgICAgICAgY3R4dC0+ZXZlbnQudHlwZSA9IFg4Nl9FVkVOVFRZUEVfU1dfRVhDRVBUSU9OOwot ICAgICAgICBicmVhazsKLQotICAgIGNhc2UgeDg2X3N3aW50X2ludDoKLSAgICAgICAgY3R4dC0+ ZXZlbnQudHlwZSA9IFg4Nl9FVkVOVFRZUEVfU1dfSU5URVJSVVBUOwotICAgICAgICBicmVhazsK LSAgICB9Ci0KLSAgICBjdHh0LT5ldmVudC52ZWN0b3IgPSB2ZWN0b3I7Ci0gICAgY3R4dC0+ZXZl bnQuZXJyb3JfY29kZSA9IFg4Nl9FVkVOVF9OT19FQzsKLSAgICBjdHh0LT5ldmVudC5pbnNuX2xl biA9IGluc25fbGVuOwotCi0gICAgY3R4dC0+ZXZlbnRfcGVuZGluZyA9IHRydWU7Ci19Ci0KIHN0 YXRpYyBpbmxpbmUgdm9pZCB4ODZfZW11bF9yZXNldF9ldmVudChzdHJ1Y3QgeDg2X2VtdWxhdGVf Y3R4dCAqY3R4dCkKIHsKICAgICBjdHh0LT5ldmVudF9wZW5kaW5nID0gZmFsc2U7Ci0tIAoyLjEu NAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54 ZW4ub3JnL3hlbi1kZXZlbAo=