From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v3 13/24] x86/emul: Rework emulator event injection Date: Wed, 30 Nov 2016 13:50:30 +0000 Message-ID: <1480513841-7565-14-git-send-email-andrew.cooper3@citrix.com> References: <1480513841-7565-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: <1480513841-7565-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: George Dunlap , Andrew Cooper , Paul Durrant , Tim Deegan , Jan Beulich List-Id: xen-devel@lists.xenproject.org VGhlIGVtdWxhdG9yIG5lZWRzIHRvIGdhaW4gYW4gdW5kZXJzdGFuZGluZyBvZiBpbnRlcnJ1cHRz IGFuZCBleGNlcHRpb25zCmdlbmVyYXRlZCBieSBpdHMgYWN0aW9ucy4KCk1vdmUgaHZtX2VtdWxh dGVfY3R4dC57ZXhuX3BlbmRpbmcsdHJhcH0gaW50byBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCBz byB0aGV5CmFyZSB2aXNpYmxlIHRvIHRoZSBlbXVsYXRvci4gIFRoaXMgcmVtb3ZlcyB0aGUgbmVl ZCBmb3IgdGhlCmluamVjdF97aHdfZXhjZXB0aW9uLHN3X2ludGVycnVwdH0oKSBob29rcywgd2hp Y2ggYXJlIGRyb3BwZWQgYW5kIHJlcGxhY2VkCndpdGggeDg2X2VtdWxfe2h3X2V4Y2VwdGlvbixz b2Z0d2FyZV9ldmVudCxyZXNldF9ldmVudH0oKSBpbnN0ZWFkLgoKRm9yIGV4Y2VwdGlvbnMgcmFp c2VkIGJ5IHg4Nl9lbXVsYXRlKCkgaXRzZWxmIChyYXRoZXIgdGhhbiBpdHMgY2FsbGJhY2tzKSwg dGhlCnNoYWRvdyBwYWdldGFibGUgYW5kIFBWIHVzZXMgb2YgeDg2X2VtdWxhdGUoKSBwcmV2aW91 c2x5IGZhaWxlZCB3aXRoClg4NkVNVUxfVU5IQU5ETEVBQkxFIGR1ZSB0byB0aGUgbGFjayBvZiBp bmplY3RfKigpIGhvb2tzLgoKVGhpcyBiZWhhdmlvdXIgaGFzIGNoYW5nZWQsIGFuZCBzdWNoIGNh c2VzIHdpbGwgbm93IHJldHVybiBYODZFTVVMX0VYQ0VQVElPTgp3aXRoIGV2ZW50X3BlbmRpbmcg c2V0LiAgVW50aWwgdGhlIGNhbGxlcnMgb2YgeDg2X2VtdWxhdGUoKSBoYXZlIGJlZW4gdXBkYXRl ZAp0byBpbmplY3QgZXZlbnRzIGJhY2sgaW50byB0aGUgZ3Vlc3QsIGRpdmVydCB0aGUgZXZlbnRf cGVuZGluZyBjYXNlIGJhY2sgaW50bwp0aGUgWDg2RU1VTF9VTkhBTkRMRUFCTEUgcGF0aCB0byBt YWludGFpbiB0aGUgc2FtZSBndWVzdC12aXNpYmxlIGJlaGF2aW91ci4KCk5vIG92ZXJhbGwgZnVu Y3Rpb25hbCBjaGFuZ2UuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29v cGVyM0BjaXRyaXguY29tPgpSZXZpZXdlZC1ieTogQm9yaXMgT3N0cm92c2t5IDxib3Jpcy5vc3Ry b3Zza3lAb3JhY2xlLmNvbT4KUmV2aWV3ZWQtYnk6IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50 ZWwuY29tPgotLS0KQ0M6IEphbiBCZXVsaWNoIDxKQmV1bGljaEBzdXNlLmNvbT4KQ0M6IFBhdWwg RHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+CkNDOiBUaW0gRGVlZ2FuIDx0aW1AeGVu Lm9yZz4KQ0M6IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAZXUuY2l0cml4LmNvbT4KCnYz OgogKiBSZXdvcmsgaG93IHRoZSBldmVudF9wZW5kaW5nIGNhc2UgaXMgY3VycmVudGx5IGhhbmRs ZWQKdjI6CiAqIENoYW5nZSB4ODZfZW11bF9od19leGNlcHRpb24oKSdzIGVycm9yX2NvZGUgcGFy YW1ldGVyIHRvIGJlaW5nIHNpZ25lZAogKiBDbGFyaWZ5IGhvdyBzb2Z0d2FyZSBpbnRlcnJ1cHQg aW5qZWN0aW9uIGhhcHBlbnMuCiAqIE1vcmUgQVNTRVJUKCkncyBhbmQgZGVzY3JpcHRpb24gb2Yg aG93IGV2ZW50X3BlbmRpbmcgd29ya3Mgd2l0aG91dCB0aGUKICAgaW5qZWN0X3N3X2ludGVycnVw dCgpIGhvb2sKLS0tCiB4ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYyAgICAgICAgICAgICB8IDgx ICsrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9odm0vaHZt LmMgICAgICAgICAgICAgICAgIHwgIDQgKy0KIHhlbi9hcmNoL3g4Ni9odm0vaW8uYyAgICAgICAg ICAgICAgICAgIHwgIDQgKy0KIHhlbi9hcmNoL3g4Ni9odm0vdm14L3JlYWxtb2RlLmMgICAgICAg IHwgMTYgKysrLS0tLQogeGVuL2FyY2gveDg2L21tLmMgICAgICAgICAgICAgICAgICAgICAgfCAy NiArKysrKysrKysrKwogeGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jICAgICAgICAgfCAx NyArKysrKysrCiB4ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYyB8IDEyICsr Ky0tCiB4ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaCB8IDc2ICsrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0KIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2VtdWxhdGUu aCAgICAgIHwgIDMgLS0KIDkgZmlsZXMgY2hhbmdlZCwgMTMyIGluc2VydGlvbnMoKyksIDEwNyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYyBiL3hl bi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCmluZGV4IDkxYzc5ZmEuLjRiOGM5YTAgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11 bGF0ZS5jCkBAIC01NjgsMTIgKzU2OCw5IEBAIHN0YXRpYyBpbnQgaHZtZW11bF92aXJ0dWFsX3Rv X2xpbmVhcigKICAgICAgICAgcmV0dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOwogCiAgICAgLyog VGhpcyBpcyBhIHNpbmdsZXRvbiBvcGVyYXRpb246IGZhaWwgaXQgd2l0aCBhbiBleGNlcHRpb24u ICovCi0gICAgaHZtZW11bF9jdHh0LT5leG5fcGVuZGluZyA9IDE7Ci0gICAgaHZtZW11bF9jdHh0 LT50cmFwLnZlY3RvciA9Ci0gICAgICAgIChzZWcgPT0geDg2X3NlZ19zcykgPyBUUkFQX3N0YWNr X2Vycm9yIDogVFJBUF9ncF9mYXVsdDsKLSAgICBodm1lbXVsX2N0eHQtPnRyYXAudHlwZSA9IFg4 Nl9FVkVOVFRZUEVfSFdfRVhDRVBUSU9OOwotICAgIGh2bWVtdWxfY3R4dC0+dHJhcC5lcnJvcl9j b2RlID0gMDsKLSAgICBodm1lbXVsX2N0eHQtPnRyYXAuaW5zbl9sZW4gPSAwOworICAgIHg4Nl9l bXVsX2h3X2V4Y2VwdGlvbigoc2VnID09IHg4Nl9zZWdfc3MpCisgICAgICAgICAgICAgICAgICAg ICAgICAgID8gVFJBUF9zdGFja19lcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgICA6IFRS QVBfZ3BfZmF1bHQsIDAsICZodm1lbXVsX2N0eHQtPmN0eHQpOwogICAgIHJldHVybiBYODZFTVVM X0VYQ0VQVElPTjsKIH0KIApAQCAtMTU2Miw1OSArMTU1OSw2IEBAIGludCBodm1lbXVsX2NwdWlk KAogICAgIHJldHVybiBYODZFTVVMX09LQVk7CiB9CiAKLXN0YXRpYyBpbnQgaHZtZW11bF9pbmpl Y3RfaHdfZXhjZXB0aW9uKAotICAgIHVpbnQ4X3QgdmVjdG9yLAotICAgIGludDMyX3QgZXJyb3Jf Y29kZSwKLSAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKLXsKLSAgICBzdHJ1Y3Qg aHZtX2VtdWxhdGVfY3R4dCAqaHZtZW11bF9jdHh0ID0KLSAgICAgICAgY29udGFpbmVyX29mKGN0 eHQsIHN0cnVjdCBodm1fZW11bGF0ZV9jdHh0LCBjdHh0KTsKLQotICAgIGh2bWVtdWxfY3R4dC0+ ZXhuX3BlbmRpbmcgPSAxOwotICAgIGh2bWVtdWxfY3R4dC0+dHJhcC52ZWN0b3IgPSB2ZWN0b3I7 Ci0gICAgaHZtZW11bF9jdHh0LT50cmFwLnR5cGUgPSBYODZfRVZFTlRUWVBFX0hXX0VYQ0VQVElP TjsKLSAgICBodm1lbXVsX2N0eHQtPnRyYXAuZXJyb3JfY29kZSA9IGVycm9yX2NvZGU7Ci0gICAg aHZtZW11bF9jdHh0LT50cmFwLmluc25fbGVuID0gMDsKLQotICAgIHJldHVybiBYODZFTVVMX09L QVk7Ci19Ci0KLXN0YXRpYyBpbnQgaHZtZW11bF9pbmplY3Rfc3dfaW50ZXJydXB0KAotICAgIGVu dW0geDg2X3N3aW50X3R5cGUgdHlwZSwKLSAgICB1aW50OF90IHZlY3RvciwKLSAgICB1aW50OF90 IGluc25fbGVuLAotICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQotewotICAgIHN0 cnVjdCBodm1fZW11bGF0ZV9jdHh0ICpodm1lbXVsX2N0eHQgPQotICAgICAgICBjb250YWluZXJf b2YoY3R4dCwgc3RydWN0IGh2bV9lbXVsYXRlX2N0eHQsIGN0eHQpOwotCi0gICAgc3dpdGNoICgg dHlwZSApCi0gICAgewotICAgIGNhc2UgeDg2X3N3aW50X2ljZWJwOgotICAgICAgICBodm1lbXVs X2N0eHQtPnRyYXAudHlwZSA9IFg4Nl9FVkVOVFRZUEVfUFJJX1NXX0VYQ0VQVElPTjsKLSAgICAg ICAgYnJlYWs7Ci0KLSAgICBjYXNlIHg4Nl9zd2ludF9pbnQzOgotICAgIGNhc2UgeDg2X3N3aW50 X2ludG86Ci0gICAgICAgIGh2bWVtdWxfY3R4dC0+dHJhcC50eXBlID0gWDg2X0VWRU5UVFlQRV9T V19FWENFUFRJT047Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSB4ODZfc3dpbnRfaW50Ogot ICAgICAgICBodm1lbXVsX2N0eHQtPnRyYXAudHlwZSA9IFg4Nl9FVkVOVFRZUEVfU1dfSU5URVJS VVBUOwotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBYODZF TVVMX1VOSEFORExFQUJMRTsKLSAgICB9Ci0KLSAgICBodm1lbXVsX2N0eHQtPmV4bl9wZW5kaW5n ID0gMTsKLSAgICBodm1lbXVsX2N0eHQtPnRyYXAudmVjdG9yID0gdmVjdG9yOwotICAgIGh2bWVt dWxfY3R4dC0+dHJhcC5lcnJvcl9jb2RlID0gWDg2X0VWRU5UX05PX0VDOwotICAgIGh2bWVtdWxf Y3R4dC0+dHJhcC5pbnNuX2xlbiA9IGluc25fbGVuOwotCi0gICAgcmV0dXJuIFg4NkVNVUxfT0tB WTsKLX0KLQogc3RhdGljIGludCBodm1lbXVsX2dldF9mcHUoCiAgICAgdm9pZCAoKmV4Y2VwdGlv bl9jYWxsYmFjaykodm9pZCAqLCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqKSwKICAgICB2b2lkICpl eGNlcHRpb25fY2FsbGJhY2tfYXJnLApAQCAtMTY3OCw4ICsxNjIyLDcgQEAgc3RhdGljIGludCBo dm1lbXVsX2ludmxwZygKICAgICAgICAgICogaHZtZW11bF92aXJ0dWFsX3RvX2xpbmVhcigpIHJh aXNlcyBleGNlcHRpb25zIGZvciB0eXBlL2xpbWl0CiAgICAgICAgICAqIHZpb2xhdGlvbnMsIHNv IHNxdWFzaCB0aGVtLgogICAgICAgICAgKi8KLSAgICAgICAgaHZtZW11bF9jdHh0LT5leG5fcGVu ZGluZyA9IDA7Ci0gICAgICAgIGh2bWVtdWxfY3R4dC0+dHJhcCA9IChzdHJ1Y3QgeDg2X2V2ZW50 KXt9OworICAgICAgICB4ODZfZW11bF9yZXNldF9ldmVudChjdHh0KTsKICAgICAgICAgcmMgPSBY ODZFTVVMX09LQVk7CiAgICAgfQogCkBAIC0xNjk2LDcgKzE2MzksNyBAQCBzdGF0aWMgaW50IGh2 bWVtdWxfdm1mdW5jKAogCiAgICAgcmMgPSBodm1fZnVuY3MuYWx0cDJtX3ZjcHVfZW11bGF0ZV92 bWZ1bmMoY3R4dC0+cmVncyk7CiAgICAgaWYgKCByYyAhPSBYODZFTVVMX09LQVkgKQotICAgICAg ICBodm1lbXVsX2luamVjdF9od19leGNlcHRpb24oVFJBUF9pbnZhbGlkX29wLCBYODZfRVZFTlRf Tk9fRUMsIGN0eHQpOworICAgICAgICB4ODZfZW11bF9od19leGNlcHRpb24oVFJBUF9pbnZhbGlk X29wLCBYODZfRVZFTlRfTk9fRUMsIGN0eHQpOwogCiAgICAgcmV0dXJuIHJjOwogfQpAQCAtMTcy MCw4ICsxNjYzLDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMgaHZtX2Vt dWxhdGVfb3BzID0gewogICAgIC53cml0ZV9tc3IgICAgID0gaHZtZW11bF93cml0ZV9tc3IsCiAg ICAgLndiaW52ZCAgICAgICAgPSBodm1lbXVsX3diaW52ZCwKICAgICAuY3B1aWQgICAgICAgICA9 IGh2bWVtdWxfY3B1aWQsCi0gICAgLmluamVjdF9od19leGNlcHRpb24gPSBodm1lbXVsX2luamVj dF9od19leGNlcHRpb24sCi0gICAgLmluamVjdF9zd19pbnRlcnJ1cHQgPSBodm1lbXVsX2luamVj dF9zd19pbnRlcnJ1cHQsCiAgICAgLmdldF9mcHUgICAgICAgPSBodm1lbXVsX2dldF9mcHUsCiAg ICAgLnB1dF9mcHUgICAgICAgPSBodm1lbXVsX3B1dF9mcHUsCiAgICAgLmludmxwZyAgICAgICAg PSBodm1lbXVsX2ludmxwZywKQEAgLTE3NDcsOCArMTY4OCw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgeDg2X2VtdWxhdGVfb3BzIGh2bV9lbXVsYXRlX29wc19ub193cml0ZSA9IHsKICAgICAud3Jp dGVfbXNyICAgICA9IGh2bWVtdWxfd3JpdGVfbXNyX2Rpc2NhcmQsCiAgICAgLndiaW52ZCAgICAg ICAgPSBodm1lbXVsX3diaW52ZF9kaXNjYXJkLAogICAgIC5jcHVpZCAgICAgICAgID0gaHZtZW11 bF9jcHVpZCwKLSAgICAuaW5qZWN0X2h3X2V4Y2VwdGlvbiA9IGh2bWVtdWxfaW5qZWN0X2h3X2V4 Y2VwdGlvbiwKLSAgICAuaW5qZWN0X3N3X2ludGVycnVwdCA9IGh2bWVtdWxfaW5qZWN0X3N3X2lu dGVycnVwdCwKICAgICAuZ2V0X2ZwdSAgICAgICA9IGh2bWVtdWxfZ2V0X2ZwdSwKICAgICAucHV0 X2ZwdSAgICAgICA9IGh2bWVtdWxfcHV0X2ZwdSwKICAgICAuaW52bHBnICAgICAgICA9IGh2bWVt dWxfaW52bHBnLApAQCAtMTg3MCw4ICsxODA5LDggQEAgaW50IGh2bV9lbXVsYXRlX29uZV9tbWlv KHVuc2lnbmVkIGxvbmcgbWZuLCB1bnNpZ25lZCBsb25nIGdsYSkKICAgICAgICAgaHZtX2R1bXBf ZW11bGF0aW9uX3N0YXRlKFhFTkxPR19HX1dBUk5JTkcgIk1NQ0ZHIiwgJmN0eHQpOwogICAgICAg ICBicmVhazsKICAgICBjYXNlIFg4NkVNVUxfRVhDRVBUSU9OOgotICAgICAgICBpZiAoIGN0eHQu ZXhuX3BlbmRpbmcgKQotICAgICAgICAgICAgaHZtX2luamVjdF9ldmVudCgmY3R4dC50cmFwKTsK KyAgICAgICAgaWYgKCBjdHh0LmN0eHQuZXZlbnRfcGVuZGluZyApCisgICAgICAgICAgICBodm1f aW5qZWN0X2V2ZW50KCZjdHh0LmN0eHQuZXZlbnQpOwogICAgICAgICAvKiBmYWxsdGhyb3VnaCAq LwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGh2bV9lbXVsYXRlX3dyaXRlYmFjaygmY3R4dCk7CkBA IC0xOTMwLDggKzE4NjksOCBAQCB2b2lkIGh2bV9lbXVsYXRlX29uZV92bV9ldmVudChlbnVtIGVt dWxfa2luZCBraW5kLCB1bnNpZ25lZCBpbnQgdHJhcG5yLAogICAgICAgICBodm1faW5qZWN0X2h3 X2V4Y2VwdGlvbih0cmFwbnIsIGVycmNvZGUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFg4 NkVNVUxfRVhDRVBUSU9OOgotICAgICAgICBpZiAoIGN0eC5leG5fcGVuZGluZyApCi0gICAgICAg ICAgICBodm1faW5qZWN0X2V2ZW50KCZjdHgudHJhcCk7CisgICAgICAgIGlmICggY3R4LmN0eHQu ZXZlbnRfcGVuZGluZyApCisgICAgICAgICAgICBodm1faW5qZWN0X2V2ZW50KCZjdHguY3R4dC5l dmVudCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMjAwNiw4ICsxOTQ1LDYgQEAgdm9p ZCBodm1fZW11bGF0ZV9pbml0X3Blcl9pbnNuKAogICAgICAgICBodm1lbXVsX2N0eHQtPmluc25f YnVmX2J5dGVzID0gaW5zbl9ieXRlczsKICAgICAgICAgbWVtY3B5KGh2bWVtdWxfY3R4dC0+aW5z bl9idWYsIGluc25fYnVmLCBpbnNuX2J5dGVzKTsKICAgICB9Ci0KLSAgICBodm1lbXVsX2N0eHQt PmV4bl9wZW5kaW5nID0gMDsKIH0KIAogdm9pZCBodm1fZW11bGF0ZV93cml0ZWJhY2soCmRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYwpp bmRleCBiOTUwODQyLi5lZjgzMTAwIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5j CisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKQEAgLTQwNzYsOCArNDA3Niw4IEBAIHZvaWQg aHZtX3VkX2ludGVyY2VwdChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICAgICAgaHZt X2luamVjdF9od19leGNlcHRpb24oVFJBUF9pbnZhbGlkX29wLCBYODZfRVZFTlRfTk9fRUMpOwog ICAgICAgICBicmVhazsKICAgICBjYXNlIFg4NkVNVUxfRVhDRVBUSU9OOgotICAgICAgICBpZiAo IGN0eHQuZXhuX3BlbmRpbmcgKQotICAgICAgICAgICAgaHZtX2luamVjdF9ldmVudCgmY3R4dC50 cmFwKTsKKyAgICAgICAgaWYgKCBjdHh0LmN0eHQuZXZlbnRfcGVuZGluZyApCisgICAgICAgICAg ICBodm1faW5qZWN0X2V2ZW50KCZjdHh0LmN0eHQuZXZlbnQpOwogICAgICAgICAvKiBmYWxsIHRo cm91Z2ggKi8KICAgICBkZWZhdWx0OgogICAgICAgICBodm1fZW11bGF0ZV93cml0ZWJhY2soJmN0 eHQpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9pby5jIGIveGVuL2FyY2gveDg2L2h2 bS9pby5jCmluZGV4IDEyNzlmNjguLmFiYjlkNTEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9o dm0vaW8uYworKysgYi94ZW4vYXJjaC94ODYvaHZtL2lvLmMKQEAgLTEwMiw4ICsxMDIsOCBAQCBp bnQgaGFuZGxlX21taW8odm9pZCkKICAgICAgICAgaHZtX2R1bXBfZW11bGF0aW9uX3N0YXRlKFhF TkxPR19HX1dBUk5JTkcgIk1NSU8iLCAmY3R4dCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIGNh c2UgWDg2RU1VTF9FWENFUFRJT046Ci0gICAgICAgIGlmICggY3R4dC5leG5fcGVuZGluZyApCi0g ICAgICAgICAgICBodm1faW5qZWN0X2V2ZW50KCZjdHh0LnRyYXApOworICAgICAgICBpZiAoIGN0 eHQuY3R4dC5ldmVudF9wZW5kaW5nICkKKyAgICAgICAgICAgIGh2bV9pbmplY3RfZXZlbnQoJmN0 eHQuY3R4dC5ldmVudCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJy ZWFrOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92bXgvcmVhbG1vZGUuYyBiL3hlbi9h cmNoL3g4Ni9odm0vdm14L3JlYWxtb2RlLmMKaW5kZXggOTAwMjYzOC4uZGMzYWI0NCAxMDA2NDQK LS0tIGEveGVuL2FyY2gveDg2L2h2bS92bXgvcmVhbG1vZGUuYworKysgYi94ZW4vYXJjaC94ODYv aHZtL3ZteC9yZWFsbW9kZS5jCkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCB2bXhfcmVhbG1vZGVf ZW11bGF0ZV9vbmUoc3RydWN0IGh2bV9lbXVsYXRlX2N0eHQgKmh2bWVtdWxfY3R4dCkKIAogICAg IGlmICggcmMgPT0gWDg2RU1VTF9FWENFUFRJT04gKQogICAgIHsKLSAgICAgICAgaWYgKCAhaHZt ZW11bF9jdHh0LT5leG5fcGVuZGluZyApCisgICAgICAgIGlmICggIWh2bWVtdWxfY3R4dC0+Y3R4 dC5ldmVudF9wZW5kaW5nICkKICAgICAgICAgewogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBp bnRyX2luZm87CiAKQEAgLTEzMywyNyArMTMzLDI3IEBAIHZvaWQgdm14X3JlYWxtb2RlX2VtdWxh dGVfb25lKHN0cnVjdCBodm1fZW11bGF0ZV9jdHh0ICpodm1lbXVsX2N0eHQpCiAgICAgICAgICAg ICAgICAgZ2RwcmludGsoWEVOTE9HX0VSUiwgIkV4Y2VwdGlvbiBwZW5kaW5nIGJ1dCBubyBpbmZv LlxuIik7CiAgICAgICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICAgICAgfQotICAgICAg ICAgICAgaHZtZW11bF9jdHh0LT50cmFwLnZlY3RvciA9ICh1aW50OF90KWludHJfaW5mbzsKLSAg ICAgICAgICAgIGh2bWVtdWxfY3R4dC0+dHJhcC5pbnNuX2xlbiA9IDA7CisgICAgICAgICAgICBo dm1lbXVsX2N0eHQtPmN0eHQuZXZlbnQudmVjdG9yID0gKHVpbnQ4X3QpaW50cl9pbmZvOworICAg ICAgICAgICAgaHZtZW11bF9jdHh0LT5jdHh0LmV2ZW50Lmluc25fbGVuID0gMDsKICAgICAgICAg fQogCiAgICAgICAgIGlmICggdW5saWtlbHkoY3Vyci0+ZG9tYWluLT5kZWJ1Z2dlcl9hdHRhY2hl ZCkgJiYKLSAgICAgICAgICAgICAoKGh2bWVtdWxfY3R4dC0+dHJhcC52ZWN0b3IgPT0gVFJBUF9k ZWJ1ZykgfHwKLSAgICAgICAgICAgICAgKGh2bWVtdWxfY3R4dC0+dHJhcC52ZWN0b3IgPT0gVFJB UF9pbnQzKSkgKQorICAgICAgICAgICAgICgoaHZtZW11bF9jdHh0LT5jdHh0LmV2ZW50LnZlY3Rv ciA9PSBUUkFQX2RlYnVnKSB8fAorICAgICAgICAgICAgICAoaHZtZW11bF9jdHh0LT5jdHh0LmV2 ZW50LnZlY3RvciA9PSBUUkFQX2ludDMpKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIGRvbWFp bl9wYXVzZV9mb3JfZGVidWdnZXIoKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmICggY3Vy ci0+YXJjaC5odm1fdmNwdS5ndWVzdF9jclswXSAmIFg4Nl9DUjBfUEUgKQogICAgICAgICB7CiAg ICAgICAgICAgICBnZHByaW50ayhYRU5MT0dfRVJSLCAiRXhjZXB0aW9uICUwMnggaW4gcHJvdGVj dGVkIG1vZGUuXG4iLAotICAgICAgICAgICAgICAgICAgICAgaHZtZW11bF9jdHh0LT50cmFwLnZl Y3Rvcik7CisgICAgICAgICAgICAgICAgICAgICBodm1lbXVsX2N0eHQtPmN0eHQuZXZlbnQudmVj dG9yKTsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAg ICAgICAgIHsKICAgICAgICAgICAgIHJlYWxtb2RlX2RlbGl2ZXJfZXhjZXB0aW9uKAotICAgICAg ICAgICAgICAgIGh2bWVtdWxfY3R4dC0+dHJhcC52ZWN0b3IsCi0gICAgICAgICAgICAgICAgaHZt ZW11bF9jdHh0LT50cmFwLmluc25fbGVuLAorICAgICAgICAgICAgICAgIGh2bWVtdWxfY3R4dC0+ Y3R4dC5ldmVudC52ZWN0b3IsCisgICAgICAgICAgICAgICAgaHZtZW11bF9jdHh0LT5jdHh0LmV2 ZW50Lmluc25fbGVuLAogICAgICAgICAgICAgICAgIGh2bWVtdWxfY3R4dCk7CiAgICAgICAgIH0K ICAgICB9CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0uYyBiL3hlbi9hcmNoL3g4Ni9tbS5j CmluZGV4IDIzMWM3YmYuLjVkNTk0NzkgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS5jCisr KyBiL3hlbi9hcmNoL3g4Ni9tbS5jCkBAIC01Mzc5LDYgKzUzNzksMTkgQEAgaW50IHB0d3JfZG9f cGFnZV9mYXVsdChzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyBhZGRyLAogICAgIHBhZ2Vf dW5sb2NrKHBhZ2UpOwogICAgIHB1dF9wYWdlKHBhZ2UpOwogCisgICAgLyoKKyAgICAgKiBUaGUg cHJldmlvdXMgbGFjayBvZiBpbmplY3Rfe3N3LGh3fSooKSBob29rcyBjYXVzZWQgZXhjZXB0aW9u cyByYWlzZWQKKyAgICAgKiBieSB0aGUgZW11bGF0b3IgaXRzZWxmIHRvIGJlY29tZSBYODZFTVVM X1VOSEFORExFQUJMRS4gIFN1Y2ggZXhjZXB0aW9ucworICAgICAqIG5vdyBzZXQgZXZlbnRfcGVu ZGluZyBpbnN0ZWFkLiAgRXhjZXB0aW9ucyByYWlzZWQgYmVoaW5kIHRoZSBiYWNrIG9mCisgICAg ICogdGhlIGVtdWxhdG9yIGRvbid0IHlldCBzZXQgZXZlbnRfcGVuZGluZy4KKyAgICAgKgorICAg ICAqIEZvciBub3csIGNhdXNlIHN1Y2ggY2FzZXMgdG8gcmV0dXJuIHRvIHRoZSBYODZFTVVMX1VO SEFORExFQUJMRSBwYXRoLAorICAgICAqIGZvciBubyBmdW5jdGlvbmFsIGNoYW5nZSBmcm9tIGJl Zm9yZS4gIEZ1dHVyZSBwYXRjaGVzIHdpbGwgZml4IHRoaXMKKyAgICAgKiBwcm9wZXJseS4KKyAg ICAgKi8KKyAgICBpZiAoIHJjID09IFg4NkVNVUxfRVhDRVBUSU9OICYmIHB0d3JfY3R4dC5jdHh0 LmV2ZW50X3BlbmRpbmcgKQorICAgICAgICByYyA9IFg4NkVNVUxfVU5IQU5ETEVBQkxFOworCiAg ICAgaWYgKCByYyA9PSBYODZFTVVMX1VOSEFORExFQUJMRSApCiAgICAgICAgIGdvdG8gYmFpbDsK IApAQCAtNTUwNiw2ICs1NTE5LDE5IEBAIGludCBtbWlvX3JvX2RvX3BhZ2VfZmF1bHQoc3RydWN0 IHZjcHUgKnYsIHVuc2lnbmVkIGxvbmcgYWRkciwKICAgICBlbHNlCiAgICAgICAgIHJjID0geDg2 X2VtdWxhdGUoJmN0eHQsICZtbWlvX3JvX2VtdWxhdGVfb3BzKTsKIAorICAgIC8qCisgICAgICog VGhlIHByZXZpb3VzIGxhY2sgb2YgaW5qZWN0X3tzdyxod30qKCkgaG9va3MgY2F1c2VkIGV4Y2Vw dGlvbnMgcmFpc2VkCisgICAgICogYnkgdGhlIGVtdWxhdG9yIGl0c2VsZiB0byBiZWNvbWUgWDg2 RU1VTF9VTkhBTkRMRUFCTEUuICBTdWNoIGV4Y2VwdGlvbnMKKyAgICAgKiBub3cgc2V0IGV2ZW50 X3BlbmRpbmcgaW5zdGVhZC4gIEV4Y2VwdGlvbnMgcmFpc2VkIGJlaGluZCB0aGUgYmFjayBvZgor ICAgICAqIHRoZSBlbXVsYXRvciBkb24ndCB5ZXQgc2V0IGV2ZW50X3BlbmRpbmcuCisgICAgICoK KyAgICAgKiBGb3Igbm93LCBjYXVzZSBzdWNoIGNhc2VzIHRvIHJldHVybiB0byB0aGUgWDg2RU1V TF9VTkhBTkRMRUFCTEUgcGF0aCwKKyAgICAgKiBmb3Igbm8gZnVuY3Rpb25hbCBjaGFuZ2UgZnJv bSBiZWZvcmUuICBGdXR1cmUgcGF0Y2hlcyB3aWxsIGZpeCB0aGlzCisgICAgICogcHJvcGVybHku CisgICAgICovCisgICAgaWYgKCByYyA9PSBYODZFTVVMX0VYQ0VQVElPTiAmJiBjdHh0LmV2ZW50 X3BlbmRpbmcgKQorICAgICAgICByYyA9IFg4NkVNVUxfVU5IQU5ETEVBQkxFOworCiAgICAgaWYg KCByYyA9PSBYODZFTVVMX1VOSEFORExFQUJMRSApCiAgICAgICAgIHJldHVybiAwOwogCmRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMgYi94ZW4vYXJjaC94ODYvbW0v c2hhZG93L211bHRpLmMKaW5kZXggZGRmYjgxNS4uNTZjNDBmOCAxMDA2NDQKLS0tIGEveGVuL2Fy Y2gveDg2L21tL3NoYWRvdy9tdWx0aS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVs dGkuYwpAQCAtMzM3NCw2ICszMzc0LDE5IEBAIHN0YXRpYyBpbnQgc2hfcGFnZV9mYXVsdChzdHJ1 Y3QgdmNwdSAqdiwKICAgICByID0geDg2X2VtdWxhdGUoJmVtdWxfY3R4dC5jdHh0LCBlbXVsX29w cyk7CiAKICAgICAvKgorICAgICAqIFRoZSBwcmV2aW91cyBsYWNrIG9mIGluamVjdF97c3csaHd9 KigpIGhvb2tzIGNhdXNlZCBleGNlcHRpb25zIHJhaXNlZAorICAgICAqIGJ5IHRoZSBlbXVsYXRv ciBpdHNlbGYgdG8gYmVjb21lIFg4NkVNVUxfVU5IQU5ETEVBQkxFLiAgU3VjaCBleGNlcHRpb25z CisgICAgICogbm93IHNldCBldmVudF9wZW5kaW5nIGluc3RlYWQuICBFeGNlcHRpb25zIHJhaXNl ZCBiZWhpbmQgdGhlIGJhY2sgb2YKKyAgICAgKiB0aGUgZW11bGF0b3IgZG9uJ3QgeWV0IHNldCBl dmVudF9wZW5kaW5nLgorICAgICAqCisgICAgICogRm9yIG5vdywgY2F1c2Ugc3VjaCBjYXNlcyB0 byByZXR1cm4gdG8gdGhlIFg4NkVNVUxfVU5IQU5ETEVBQkxFIHBhdGgsCisgICAgICogZm9yIG5v IGZ1bmN0aW9uYWwgY2hhbmdlIGZyb20gYmVmb3JlLiAgRnV0dXJlIHBhdGNoZXMgd2lsbCBmaXgg dGhpcworICAgICAqIHByb3Blcmx5LgorICAgICAqLworICAgIGlmICggciA9PSBYODZFTVVMX0VY Q0VQVElPTiAmJiBlbXVsX2N0eHQuY3R4dC5ldmVudF9wZW5kaW5nICkKKyAgICAgICAgciA9IFg4 NkVNVUxfVU5IQU5ETEVBQkxFOworCisgICAgLyoKICAgICAgKiBOQi4gV2UgZG8gbm90IHVuc2hh ZG93IG9uIFg4NkVNVUxfRVhDRVBUSU9OLiBJdCdzIG5vdCBjbGVhciB0aGF0IGl0CiAgICAgICog d291bGQgYmUgYSBnb29kIHVuc2hhZG93IGhpbnQuIElmIHdlICpkbyogZGVjaWRlIHRvIHVuc2hh ZG93LW9uLWZhdWx0CiAgICAgICogdGhlbiBpdCBtdXN0IGJlICdmYWlsYWJsZSc6IHdlIGNhbm5v dCByZXF1aXJlIHRoZSB1bnNoYWRvdyB0byBzdWNjZWVkLgpAQCAtMzQ0Myw2ICszNDU2LDEwIEBA IHN0YXRpYyBpbnQgc2hfcGFnZV9mYXVsdChzdHJ1Y3QgdmNwdSAqdiwKICAgICAgICAgICAgIHNo YWRvd19jb250aW51ZV9lbXVsYXRpb24oJmVtdWxfY3R4dCwgcmVncyk7CiAgICAgICAgICAgICB2 LT5hcmNoLnBhZ2luZy5sYXN0X3dyaXRlX3dhc19wdCA9IDA7CiAgICAgICAgICAgICByID0geDg2 X2VtdWxhdGUoJmVtdWxfY3R4dC5jdHh0LCBlbXVsX29wcyk7CisKKyAgICAgICAgICAgIGlmICgg ciA9PSBYODZFTVVMX0VYQ0VQVElPTiAmJiBlbXVsX2N0eHQuY3R4dC5ldmVudF9wZW5kaW5nICkK KyAgICAgICAgICAgICAgICByID0gWDg2RU1VTF9VTkhBTkRMRUFCTEU7CisKICAgICAgICAgICAg IGlmICggciA9PSBYODZFTVVMX09LQVkgJiYgIWVtdWxfY3R4dC5jdHh0LnJldGlyZS5yYXcgKQog ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGVtdWxhdGlvbl9jb3VudCsrOwpkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMgYi94ZW4vYXJjaC94 ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwppbmRleCA2YWRmZGJlLi4wZmIyYzA5IDEwMDY0 NAotLS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYworKysgYi94ZW4v YXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwpAQCAtNjgwLDkgKzY4MCw4IEBAIHN0 YXRpYyBpbmxpbmUgaW50IG1rZWModWludDhfdCBlLCBpbnQzMl90IGVjLCAuLi4pCiAKICNkZWZp bmUgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKHAsIGUsIGVjLi4uKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAogKHsgIGlmICggKHApICkgeyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGZhaWxfaWYob3BzLT5p bmplY3RfaHdfZXhjZXB0aW9uID09IE5VTEwpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg ICAgICAgcmMgPSBvcHMtPmluamVjdF9od19leGNlcHRpb24oZSwgbWtlYyhlLCAjI2VjLCAwKSwg Y3R4dCkgICAgICAgICAgXAotICAgICAgICAgICAgPyA6IFg4NkVNVUxfRVhDRVBUSU9OOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHg4Nl9lbXVsX2h3 X2V4Y2VwdGlvbihlLCBta2VjKGUsICMjZWMsIDApLCBjdHh0KTsgICAgICAgICAgICAgICAgIFwK KyAgICAgICAgcmMgPSBYODZFTVVMX0VYQ0VQVElPTjsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAogICAgICAgICBnb3RvIGRvbmU7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKIH0pCkBAIC0xNjA0LDkgKzE2MDMsNiBAQCBzdGF0aWMgaW50IGluamVjdF9zd2ludChlbnVt IHg4Nl9zd2ludF90eXBlIHR5cGUsCiB7CiAgICAgaW50IHJjLCBlcnJvcl9jb2RlLCBmYXVsdF90 eXBlID0gRVhDX0dQOwogCi0gICAgZmFpbF9pZihvcHMtPmluamVjdF9zd19pbnRlcnJ1cHQgPT0g TlVMTCk7Ci0gICAgZmFpbF9pZihvcHMtPmluamVjdF9od19leGNlcHRpb24gPT0gTlVMTCk7Ci0K ICAgICAvKgogICAgICAqIFdpdGhvdXQgaGFyZHdhcmUgc3VwcG9ydCwgaW5qZWN0aW5nIHNvZnR3 YXJlIGludGVycnVwdHMvZXhjZXB0aW9ucyBpcwogICAgICAqIHByb2JsZW1hdGljLgpAQCAtMTcw MSw3ICsxNjk3LDggQEAgc3RhdGljIGludCBpbmplY3Rfc3dpbnQoZW51bSB4ODZfc3dpbnRfdHlw ZSB0eXBlLAogICAgICAgICB9CiAgICAgfQogCi0gICAgcmMgPSBvcHMtPmluamVjdF9zd19pbnRl cnJ1cHQodHlwZSwgdmVjdG9yLCBpbnNuX2xlbiwgY3R4dCk7CisgICAgeDg2X2VtdWxfc29mdHdh cmVfZXZlbnQodHlwZSwgdmVjdG9yLCBpbnNuX2xlbiwgY3R4dCk7CisgICAgcmMgPSBYODZFTVVM X09LQVk7CiAKICBkb25lOgogICAgIHJldHVybiByYzsKQEAgLTE5MDksNiArMTkwNiw3IEBAIHg4 Nl9kZWNvZGUoCiAKICAgICAvKiBJbml0aWFsaXNlIG91dHB1dCBzdGF0ZSBpbiB4ODZfZW11bGF0 ZV9jdHh0ICovCiAgICAgY3R4dC0+cmV0aXJlLnJhdyA9IDA7CisgICAgeDg2X2VtdWxfcmVzZXRf ZXZlbnQoY3R4dCk7CiAKICAgICBvcF9ieXRlcyA9IGRlZl9vcF9ieXRlcyA9IGFkX2J5dGVzID0g ZGVmX2FkX2J5dGVzID0gY3R4dC0+YWRkcl9zaXplLzg7CiAgICAgaWYgKCBvcF9ieXRlcyA9PSA4 ICkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oIGIv eGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmgKaW5kZXggZGE4OTI0Yi4uM2Mw YjI1ZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmgK KysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmgKQEAgLTM5NiwxOSAr Mzk2LDYgQEAgc3RydWN0IHg4Nl9lbXVsYXRlX29wcwogICAgICAgICB1bnNpZ25lZCBpbnQgKmVk eCwKICAgICAgICAgc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpOwogCi0gICAgLyogaW5q ZWN0X2h3X2V4Y2VwdGlvbiAqLwotICAgIGludCAoKmluamVjdF9od19leGNlcHRpb24pKAotICAg ICAgICB1aW50OF90IHZlY3RvciwKLSAgICAgICAgaW50MzJfdCBlcnJvcl9jb2RlLAotICAgICAg ICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCk7Ci0KLSAgICAvKiBpbmplY3Rfc3dfaW50 ZXJydXB0ICovCi0gICAgaW50ICgqaW5qZWN0X3N3X2ludGVycnVwdCkoCi0gICAgICAgIGVudW0g eDg2X3N3aW50X3R5cGUgdHlwZSwKLSAgICAgICAgdWludDhfdCB2ZWN0b3IsCi0gICAgICAgIHVp bnQ4X3QgaW5zbl9sZW4sCi0gICAgICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KTsK LQogICAgIC8qCiAgICAgICogZ2V0X2ZwdTogTG9hZCBlbXVsYXRlZCBlbnZpcm9ubWVudCdzIEZQ VSBzdGF0ZSBvbnRvIHByb2Nlc3Nvci4KICAgICAgKiAgQGV4bl9jYWxsYmFjazogT24gYW55IEZQ VSBvciBTSU1EIGV4Y2VwdGlvbiwgcGFzcyBjb250cm9sIHRvCkBAIC00ODYsNiArNDczLDkgQEAg c3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQKICAgICAgICAgICAgIGJvb2wgc2luZ2xlc3RlcDoxOyAg IC8qIFNpbmdsZXN0ZXBwaW5nIHdhcyBhY3RpdmUuICovCiAgICAgICAgIH07CiAgICAgfSByZXRp cmU7CisKKyAgICBib29sIGV2ZW50X3BlbmRpbmc7CisgICAgc3RydWN0IHg4Nl9ldmVudCBldmVu dDsKIH07CiAKIC8qCkBAIC01ODQsNiArNTc0LDE5IEBAIHN0YXRpYyBpbmxpbmUgaW50IHg4Nl9l bXVsYXRlX3dyYXBwZXIoCiAgICAgaWYgKCByYyA9PSBYODZFTVVMX0VYQ0VQVElPTiApCiAgICAg ICAgIEFTU0VSVChjdHh0LT5yZWdzLT5laXAgPT0gb3JpZ19laXApOwogCisgICAgLyoKKyAgICAg KiBUT0RPOiBNYWtlIHRoaXMgdHJ1ZToKKyAgICAgKgorICAgIEFTU0VSVChjdHh0LT5ldmVudF9w ZW5kaW5nID09IChyYyA9PSBYODZFTVVMX0VYQ0VQVElPTikpOworICAgICAqCisgICAgICogU29t ZSBjb2RlcGF0aHMgc3RpbGwgcmFpc2UgZXhjZXB0aW9ucyBiZWhpbmQgdGhlIGJhY2sgb2YgdGhl CisgICAgICogZW11bGF0b3IuIChpLmUuIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTiBidXQgd2l0 aG91dAorICAgICAqIGV2ZW50X3BlbmRpbmcgYmVpbmcgc2V0KS4gIEluIHRoZSBtZWFudGltZSwg dXNlIGEgc2xpZ2h0bHkKKyAgICAgKiByZWxheGVkIGNoZWNrLi4uCisgICAgICovCisgICAgaWYg KCBjdHh0LT5ldmVudF9wZW5kaW5nICkKKyAgICAgICAgQVNTRVJUKHJjID09IFg4NkVNVUxfRVhD RVBUSU9OKTsKKwogICAgIHJldHVybiByYzsKIH0KIApAQCAtNjMzLDQgKzYzNiw1MSBAQCB2b2lk IHg4Nl9lbXVsYXRlX2ZyZWVfc3RhdGUoc3RydWN0IHg4Nl9lbXVsYXRlX3N0YXRlICpzdGF0ZSk7 CiAKICNlbmRpZgogCitzdGF0aWMgaW5saW5lIHZvaWQgeDg2X2VtdWxfaHdfZXhjZXB0aW9uKAor ICAgIHVuc2lnbmVkIGludCB2ZWN0b3IsIGludCBlcnJvcl9jb2RlLCBzdHJ1Y3QgeDg2X2VtdWxh dGVfY3R4dCAqY3R4dCkKK3sKKyAgICBBU1NFUlQoIWN0eHQtPmV2ZW50X3BlbmRpbmcpOworCisg ICAgY3R4dC0+ZXZlbnQudmVjdG9yID0gdmVjdG9yOworICAgIGN0eHQtPmV2ZW50LnR5cGUgPSBY ODZfRVZFTlRUWVBFX0hXX0VYQ0VQVElPTjsKKyAgICBjdHh0LT5ldmVudC5lcnJvcl9jb2RlID0g ZXJyb3JfY29kZTsKKworICAgIGN0eHQtPmV2ZW50X3BlbmRpbmcgPSB0cnVlOworfQorCitzdGF0 aWMgaW5saW5lIHZvaWQgeDg2X2VtdWxfc29mdHdhcmVfZXZlbnQoCisgICAgZW51bSB4ODZfc3dp bnRfdHlwZSB0eXBlLCB1aW50OF90IHZlY3RvciwgdWludDhfdCBpbnNuX2xlbiwKKyAgICBzdHJ1 Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKK3sKKyAgICBBU1NFUlQoIWN0eHQtPmV2ZW50X3Bl bmRpbmcpOworCisgICAgc3dpdGNoICggdHlwZSApCisgICAgeworICAgIGNhc2UgeDg2X3N3aW50 X2ljZWJwOgorICAgICAgICBjdHh0LT5ldmVudC50eXBlID0gWDg2X0VWRU5UVFlQRV9QUklfU1df RVhDRVBUSU9OOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgeDg2X3N3aW50X2ludDM6Cisg ICAgY2FzZSB4ODZfc3dpbnRfaW50bzoKKyAgICAgICAgY3R4dC0+ZXZlbnQudHlwZSA9IFg4Nl9F VkVOVFRZUEVfU1dfRVhDRVBUSU9OOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgeDg2X3N3 aW50X2ludDoKKyAgICAgICAgY3R4dC0+ZXZlbnQudHlwZSA9IFg4Nl9FVkVOVFRZUEVfU1dfSU5U RVJSVVBUOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjdHh0LT5ldmVudC52ZWN0b3Ig PSB2ZWN0b3I7CisgICAgY3R4dC0+ZXZlbnQuZXJyb3JfY29kZSA9IFg4Nl9FVkVOVF9OT19FQzsK KyAgICBjdHh0LT5ldmVudC5pbnNuX2xlbiA9IGluc25fbGVuOworCisgICAgY3R4dC0+ZXZlbnRf cGVuZGluZyA9IHRydWU7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB4ODZfZW11bF9yZXNldF9l dmVudChzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkKK3sKKyAgICBjdHh0LT5ldmVudF9w ZW5kaW5nID0gZmFsc2U7CisgICAgY3R4dC0+ZXZlbnQgPSAoc3RydWN0IHg4Nl9ldmVudCl7fTsK K30KKwogI2VuZGlmIC8qIF9fWDg2X0VNVUxBVEVfSF9fICovCmRpZmYgLS1naXQgYS94ZW4vaW5j bHVkZS9hc20teDg2L2h2bS9lbXVsYXRlLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9lbXVs YXRlLmgKaW5kZXggM2I3ZWMzMy4uZDY0ZDgzNCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNt LXg4Ni9odm0vZW11bGF0ZS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2VtdWxhdGUu aApAQCAtMjksOSArMjksNiBAQCBzdHJ1Y3QgaHZtX2VtdWxhdGVfY3R4dCB7CiAgICAgdW5zaWdu ZWQgbG9uZyBzZWdfcmVnX2FjY2Vzc2VkOwogICAgIHVuc2lnbmVkIGxvbmcgc2VnX3JlZ19kaXJ0 eTsKIAotICAgIGJvb2xfdCBleG5fcGVuZGluZzsKLSAgICBzdHJ1Y3QgeDg2X2V2ZW50IHRyYXA7 Ci0KICAgICB1aW50MzJfdCBpbnRyX3NoYWRvdzsKIAogICAgIGJvb2xfdCBzZXRfY29udGV4dDsK LS0gCjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczov L2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==