From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v2 06/19] x86/pv: Implement pv_inject_{event, page_fault, hw_exception}() Date: Mon, 28 Nov 2016 11:13:23 +0000 Message-ID: <1480331616-6165-7-git-send-email-andrew.cooper3@citrix.com> References: <1480331616-6165-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: <1480331616-6165-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 , Tim Deegan , Jan Beulich List-Id: xen-devel@lists.xenproject.org VG8gaGVscCB3aXRoIGV2ZW50IGluamVjdGlvbiBpbXByb3ZlbWVudHMgZm9yIHRoZSBQViB1c2Vz IG9mIHg4Nl9lbXVsYXRlKCksCmltcGxlbWVudCBhIGV2ZW50IGluamVjdGlvbiBBUEkgd2hpY2gg bWF0Y2hlcyBpdHMgaHZtIGNvdW50ZXJwYXJ0LgoKVGhpcyBpcyBzdGFydGVkIHdpdGggdGFraW5n IGRvX2d1ZXN0X3RyYXAoKSBhbmQgbW9kaWZ5aW5nIGl0cyBjYWxsaW5nIEFQSSB0bwpwdl9pbmpl Y3RfZXZlbnQoKSwgc3Vic2VxdWVudGFsbHkgaW1wbGVtZW50aW5nIHRoZSBmb3JtZXIgaW4gdGVy bXMgb2YgdGhlCmxhdHRlci4KClRoZSBleGlzdGluZyBwcm9wYWdhdGVfcGFnZV9mYXVsdCgpIGlz IGZhaXJseSBzaW1pbGFyIHRvCnB2X2luamVjdF9wYWdlX2ZhdWx0KCksIGFsdGhvdWdoIGl0IGhh cyBhIHJldHVybiB2YWx1ZS4gIE9ubHkgYSBzaW5nbGUgY2FsbGVyCm1ha2VzIHVzZSBvZiB0aGUg cmV0dXJuIHZhbHVlLCBhbmQgbm9uLU5VTEwgaXMgb25seSByZXR1cm5lZCBpZiB0aGUgcGFzc2Vk IGNyMgppcyBub24tY2Fub25pY2FsLiAgT3BlbmNvZGUgdGhpcyBzaW5nbGUgY2FzZSBpbgpoYW5k bGVfZ2R0X2xkdF9tYXBwaW5nX2ZhdWx0KCksIGFsbG93aW5nIHByb3BhZ2F0ZV9wYWdlX2ZhdWx0 KCkgdG8gYmVjb21lCnZvaWQuCgpUaGUgI1BGIHNwZWNpZmljIGJpdHMgYXJlIG1vdmVkIGludG8g cHZfaW5qZWN0X2V2ZW50KCksIGFuZApwdl9pbmplY3RfcGFnZV9mYXVsdCgpIGlzIGltcGxlbWVu dGVkIGFzIGEgc3RhdGljIGlubGluZSB3cmFwcGVyLgpyZXNlcnZlZF9iaXRfcGFnZV9mYXVsdCgp IGlzIHB1cmUgY29kZSBtb3Rpb24uCgpObyBmdW5jdGlvbmFsIGNoYW5nZS4KClNpZ25lZC1vZmYt Ynk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Ci0tLQpDQzogSmFu IEJldWxpY2ggPEpCZXVsaWNoQHN1c2UuY29tPgpDQzogVGltIERlZWdhbiA8dGltQHhlbi5vcmc+ Cgp2MjoKICogTmV3Ci0tLQogeGVuL2FyY2gveDg2L21tLmMgICAgICAgICAgICAgICB8ICAgNSAr LQogeGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYyB8ICAgNCArLQogeGVuL2FyY2gveDg2 L3RyYXBzLmMgICAgICAgICAgICB8IDE3MiArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLS0tLS0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L2RvbWFpbi5oICAgIHwgIDI2ICsrKysrKwog eGVuL2luY2x1ZGUvYXNtLXg4Ni9tbS5oICAgICAgICB8ICAgMSAtCiA1IGZpbGVzIGNoYW5nZWQs IDExOCBpbnNlcnRpb25zKCspLCA5MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvbW0uYyBiL3hlbi9hcmNoL3g4Ni9tbS5jCmluZGV4IGQzNjVmNTkuLmI3YzcxMjIgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS5jCkBAIC01 MTM2LDcgKzUxMzYsNyBAQCBzdGF0aWMgaW50IHB0d3JfZW11bGF0ZWRfcmVhZCgKICAgICBpZiAo ICFfX2FkZHJfb2soYWRkcikgfHwKICAgICAgICAgIChyYyA9IF9fY29weV9mcm9tX3VzZXIocF9k YXRhLCAodm9pZCAqKWFkZHIsIGJ5dGVzKSkgKQogICAgIHsKLSAgICAgICAgcHJvcGFnYXRlX3Bh Z2VfZmF1bHQoYWRkciArIGJ5dGVzIC0gcmMsIDApOyAvKiByZWFkIGZhdWx0ICovCisgICAgICAg IHB2X2luamVjdF9wYWdlX2ZhdWx0KDAsIGFkZHIgKyBieXRlcyAtIHJjKTsgLyogUmVhZCBmYXVs dC4gKi8KICAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOwogICAgIH0KIApAQCAtNTE3 Nyw3ICs1MTc3LDggQEAgc3RhdGljIGludCBwdHdyX2VtdWxhdGVkX3VwZGF0ZSgKICAgICAgICAg YWRkciAmPSB+KHNpemVvZihwYWRkcl90KS0xKTsKICAgICAgICAgaWYgKCAocmMgPSBjb3B5X2Zy b21fdXNlcigmZnVsbCwgKHZvaWQgKilhZGRyLCBzaXplb2YocGFkZHJfdCkpKSAhPSAwICkKICAg ICAgICAgewotICAgICAgICAgICAgcHJvcGFnYXRlX3BhZ2VfZmF1bHQoYWRkcitzaXplb2YocGFk ZHJfdCktcmMsIDApOyAvKiByZWFkIGZhdWx0ICovCisgICAgICAgICAgICBwdl9pbmplY3RfcGFn ZV9mYXVsdCgwLCAvKiBSZWFkIGZhdWx0LiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYWRkciArIHNpemVvZihwYWRkcl90KSAtIHJjKTsKICAgICAgICAgICAgIHJldHVybiBY ODZFTVVMX0VYQ0VQVElPTjsKICAgICAgICAgfQogICAgICAgICAvKiBNYXNrIG91dCBiaXRzIHBy b3ZpZGVkIGJ5IGNhbGxlci4gKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cv Y29tbW9uLmMgYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5jCmluZGV4IGE0YTNjNGIu LmYwNzgwM2IgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMKKysr IGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYwpAQCAtMzIzLDcgKzMyMyw3IEBAIHB2 X2VtdWxhdGVfcmVhZChlbnVtIHg4Nl9zZWdtZW50IHNlZywKIAogICAgIGlmICggKHJjID0gY29w eV9mcm9tX3VzZXIocF9kYXRhLCAodm9pZCAqKW9mZnNldCwgYnl0ZXMpKSAhPSAwICkKICAgICB7 Ci0gICAgICAgIHByb3BhZ2F0ZV9wYWdlX2ZhdWx0KG9mZnNldCArIGJ5dGVzIC0gcmMsIDApOyAv KiByZWFkIGZhdWx0ICovCisgICAgICAgIHB2X2luamVjdF9wYWdlX2ZhdWx0KDAsIG9mZnNldCAr IGJ5dGVzIC0gcmMpOyAvKiBSZWFkIGZhdWx0LiAqLwogICAgICAgICByZXR1cm4gWDg2RU1VTF9F WENFUFRJT047CiAgICAgfQogCkBAIC0xNzIzLDcgKzE3MjMsNyBAQCBzdGF0aWMgbWZuX3QgZW11 bGF0ZV9ndmFfdG9fbWZuKHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBsb25nIHZhZGRyLAogICAg ICAgICBpZiAoIGlzX2h2bV92Y3B1KHYpICkKICAgICAgICAgICAgIGh2bV9pbmplY3RfcGFnZV9m YXVsdChwZmVjLCB2YWRkcik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByb3BhZ2F0ZV9w YWdlX2ZhdWx0KHZhZGRyLCBwZmVjKTsKKyAgICAgICAgICAgIHB2X2luamVjdF9wYWdlX2ZhdWx0 KHBmZWMsIHZhZGRyKTsKICAgICAgICAgcmV0dXJuIF9tZm4oQkFEX0dWQV9UT19HRk4pOwogICAg IH0KIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3RyYXBzLmMgYi94ZW4vYXJjaC94ODYvdHJh cHMuYwppbmRleCBiNDY0MjExLi43MzAxMjk4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvdHJh cHMuYworKysgYi94ZW4vYXJjaC94ODYvdHJhcHMuYwpAQCAtNjI1LDM3ICs2MjUsOTAgQEAgdm9p ZCBmYXRhbF90cmFwKGNvbnN0IHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLCBib29sX3Qgc2hv d19yZW1vdGUpCiAgICAgICAgICAgKHJlZ3MtPmVmbGFncyAmIFg4Nl9FRkxBR1NfSUYpID8gIiIg OiAiLCBJTiBJTlRFUlJVUFQgQ09OVEVYVCIpOwogfQogCi1zdGF0aWMgdm9pZCBkb19ndWVzdF90 cmFwKHVuc2lnbmVkIGludCB0cmFwbnIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQorc3RhdGljIHZvaWQgcmVzZXJ2ZWRfYml0X3Bh Z2VfZmF1bHQoCisgICAgdW5zaWduZWQgbG9uZyBhZGRyLCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAq cmVncykKK3sKKyAgICBwcmludGsoIiVwdjogcmVzZXJ2ZWQgYml0IGluIHBhZ2UgdGFibGUgKGVj PSUwNFgpXG4iLAorICAgICAgICAgICBjdXJyZW50LCByZWdzLT5lcnJvcl9jb2RlKTsKKyAgICBz aG93X3BhZ2Vfd2FsayhhZGRyKTsKKyAgICBzaG93X2V4ZWN1dGlvbl9zdGF0ZShyZWdzKTsKK30K Kwordm9pZCBwdl9pbmplY3RfZXZlbnQoY29uc3Qgc3RydWN0IHg4Nl9ldmVudCAqZXZlbnQpCiB7 CiAgICAgc3RydWN0IHZjcHUgKnYgPSBjdXJyZW50OworICAgIHN0cnVjdCBjcHVfdXNlcl9yZWdz ICpyZWdzID0gZ3Vlc3RfY3B1X3VzZXJfcmVncygpOwogICAgIHN0cnVjdCB0cmFwX2JvdW5jZSAq dGI7CiAgICAgY29uc3Qgc3RydWN0IHRyYXBfaW5mbyAqdGk7CisgICAgY29uc3QgdWludDhfdCB2 ZWN0b3IgPSBldmVudC0+dmVjdG9yOwogICAgIGNvbnN0IGJvb2wgdXNlX2Vycm9yX2NvZGUgPQot ICAgICAgICAoKHRyYXBuciA8IDMyKSAmJiAoVFJBUF9IQVZFX0VDICYgKDF1IDw8IHRyYXBucikp KTsKKyAgICAgICAgKCh2ZWN0b3IgPCAzMikgJiYgKFRSQVBfSEFWRV9FQyAmICgxdSA8PCB2ZWN0 b3IpKSk7CisgICAgdW5zaWduZWQgaW50IGVycm9yX2NvZGUgPSBldmVudC0+ZXJyb3JfY29kZTsK IAotICAgIHRyYWNlX3B2X3RyYXAodHJhcG5yLCByZWdzLT5laXAsIHVzZV9lcnJvcl9jb2RlLCBy ZWdzLT5lcnJvcl9jb2RlKTsKKyAgICBBU1NFUlQodmVjdG9yID09IGV2ZW50LT52ZWN0b3IpOyAv KiBDaGVjayBmb3Igbm8gdHJ1bmNhdGlvbi4gKi8KKyAgICBpZiAoIHVzZV9lcnJvcl9jb2RlICkK KyAgICAgICAgQVNTRVJUKGVycm9yX2NvZGUgIT0gWDg2X0VWRU5UX05PX0VDKTsKKyAgICBlbHNl CisgICAgICAgIEFTU0VSVChlcnJvcl9jb2RlID09IFg4Nl9FVkVOVF9OT19FQyk7CiAKICAgICB0 YiA9ICZ2LT5hcmNoLnB2X3ZjcHUudHJhcF9ib3VuY2U7Ci0gICAgdGkgPSAmdi0+YXJjaC5wdl92 Y3B1LnRyYXBfY3R4dFt0cmFwbnJdOworICAgIHRpID0gJnYtPmFyY2gucHZfdmNwdS50cmFwX2N0 eHRbdmVjdG9yXTsKIAogICAgIHRiLT5mbGFncyA9IFRCRl9FWENFUFRJT047CiAgICAgdGItPmNz ICAgID0gdGktPmNzOwogICAgIHRiLT5laXAgICA9IHRpLT5hZGRyZXNzOwogCisgICAgaWYgKCB2 ZWN0b3IgPT0gVFJBUF9wYWdlX2ZhdWx0ICkKKyAgICB7CisgICAgICAgIHYtPmFyY2gucHZfdmNw dS5jdHJscmVnWzJdID0gZXZlbnQtPmNyMjsKKyAgICAgICAgYXJjaF9zZXRfY3IyKHYsIGV2ZW50 LT5jcjIpOworCisgICAgICAgIC8qIFJlLXNldCBlcnJvcl9jb2RlLnVzZXIgZmxhZyBhcHByb3By aWF0ZWx5IGZvciB0aGUgZ3Vlc3QuICovCisgICAgICAgIGVycm9yX2NvZGUgJj0gflBGRUNfdXNl cl9tb2RlOworICAgICAgICBpZiAoICFndWVzdF9rZXJuZWxfbW9kZSh2LCByZWdzKSApCisgICAg ICAgICAgICBlcnJvcl9jb2RlIHw9IFBGRUNfdXNlcl9tb2RlOworCisgICAgICAgIHRyYWNlX3B2 X3BhZ2VfZmF1bHQoZXZlbnQtPmNyMiwgZXJyb3JfY29kZSk7CisgICAgfQorICAgIGVsc2UKKyAg ICAgICAgdHJhY2VfcHZfdHJhcCh2ZWN0b3IsIHJlZ3MtPmVpcCwgdXNlX2Vycm9yX2NvZGUsIGVy cm9yX2NvZGUpOworCiAgICAgaWYgKCB1c2VfZXJyb3JfY29kZSApCiAgICAgewogICAgICAgICB0 Yi0+ZmxhZ3MgfD0gVEJGX0VYQ0VQVElPTl9FUlJDT0RFOwotICAgICAgICB0Yi0+ZXJyb3JfY29k ZSA9IHJlZ3MtPmVycm9yX2NvZGU7CisgICAgICAgIHRiLT5lcnJvcl9jb2RlID0gZXJyb3JfY29k ZTsKICAgICB9CiAKICAgICBpZiAoIFRJX0dFVF9JRih0aSkgKQogICAgICAgICB0Yi0+ZmxhZ3Mg fD0gVEJGX0lOVEVSUlVQVDsKIAogICAgIGlmICggdW5saWtlbHkobnVsbF90cmFwX2JvdW5jZSh2 LCB0YikpICkKLSAgICAgICAgZ3ByaW50ayhYRU5MT0dfV0FSTklORywKLSAgICAgICAgICAgICAg ICAiVW5oYW5kbGVkICVzIGZhdWx0L3RyYXAgWyMlZCwgZWM9JTA0eF1cbiIsCi0gICAgICAgICAg ICAgICAgdHJhcHN0cih0cmFwbnIpLCB0cmFwbnIsIHJlZ3MtPmVycm9yX2NvZGUpOworICAgIHsK KyAgICAgICAgaWYgKCB2ZWN0b3IgPT0gVFJBUF9wYWdlX2ZhdWx0ICkKKyAgICAgICAgeworICAg ICAgICAgICAgcHJpbnRrKCIlcHY6IHVuaGFuZGxlZCBwYWdlIGZhdWx0IChlYz0lMDRYKVxuIiwg diwgZXJyb3JfY29kZSk7CisgICAgICAgICAgICBzaG93X3BhZ2Vfd2FsayhldmVudC0+Y3IyKTsK KworICAgICAgICAgICAgaWYgKCB1bmxpa2VseShlcnJvcl9jb2RlICYgUEZFQ19yZXNlcnZlZF9i aXQpICkKKyAgICAgICAgICAgICAgICByZXNlcnZlZF9iaXRfcGFnZV9mYXVsdChldmVudC0+Y3Iy LCByZWdzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBncHJpbnRrKFhF TkxPR19XQVJOSU5HLAorICAgICAgICAgICAgICAgICAgICAiVW5oYW5kbGVkICVzIGZhdWx0L3Ry YXAgWyMlZCwgZWM9JTA0eF1cbiIsCisgICAgICAgICAgICAgICAgICAgIHRyYXBzdHIodmVjdG9y KSwgdmVjdG9yLCBlcnJvcl9jb2RlKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBk b19ndWVzdF90cmFwKHVuc2lnbmVkIGludCB0cmFwbnIsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKK3sKKyAgICBjb25z dCBzdHJ1Y3QgeDg2X2V2ZW50IGV2ZW50ID0geworICAgICAgICAudmVjdG9yID0gdHJhcG5yLAor ICAgICAgICAuZXJyb3JfY29kZSA9ICgoKHRyYXBuciA8IDMyKSAmJiAoVFJBUF9IQVZFX0VDICYg KDF1IDw8IHRyYXBucikpKQorICAgICAgICAgICAgICAgICAgICAgICA/IHJlZ3MtPmVycm9yX2Nv ZGUgOiBYODZfRVZFTlRfTk9fRUMpLAorICAgIH07CisKKyAgICBwdl9pbmplY3RfZXZlbnQoJmV2 ZW50KTsKIH0KIAogc3RhdGljIHZvaWQgaW5zdHJ1Y3Rpb25fZG9uZSgKQEAgLTEyODksNyArMTM0 Miw3IEBAIHN0YXRpYyBpbnQgZW11bGF0ZV9pbnZhbGlkX3JkdHNjcChzdHJ1Y3QgY3B1X3VzZXJf cmVncyAqcmVncykKICAgICBlaXAgPSByZWdzLT5laXA7CiAgICAgaWYgKCAocmMgPSBjb3B5X2Zy b21fdXNlcihvcGNvZGUsIChjaGFyICopZWlwLCBzaXplb2Yob3Bjb2RlKSkpICE9IDAgKQogICAg IHsKLSAgICAgICAgcHJvcGFnYXRlX3BhZ2VfZmF1bHQoZWlwICsgc2l6ZW9mKG9wY29kZSkgLSBy YywgMCk7CisgICAgICAgIHB2X2luamVjdF9wYWdlX2ZhdWx0KDAsIGVpcCArIHNpemVvZihvcGNv ZGUpIC0gcmMpOwogICAgICAgICByZXR1cm4gRVhDUkVUX2ZhdWx0X2ZpeGVkOwogICAgIH0KICAg ICBpZiAoIG1lbWNtcChvcGNvZGUsICJceGZceDFceGY5Iiwgc2l6ZW9mKG9wY29kZSkpICkKQEAg LTEzMTAsNyArMTM2Myw3IEBAIHN0YXRpYyBpbnQgZW11bGF0ZV9mb3JjZWRfaW52YWxpZF9vcChz dHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICAvKiBDaGVjayBmb3IgZm9yY2VkIGVtdWxh dGlvbiBzaWduYXR1cmU6IHVkMiA7IC5hc2NpaSAieGVuIi4gKi8KICAgICBpZiAoIChyYyA9IGNv cHlfZnJvbV91c2VyKHNpZywgKGNoYXIgKillaXAsIHNpemVvZihzaWcpKSkgIT0gMCApCiAgICAg ewotICAgICAgICBwcm9wYWdhdGVfcGFnZV9mYXVsdChlaXAgKyBzaXplb2Yoc2lnKSAtIHJjLCAw KTsKKyAgICAgICAgcHZfaW5qZWN0X3BhZ2VfZmF1bHQoMCwgZWlwICsgc2l6ZW9mKHNpZykgLSBy Yyk7CiAgICAgICAgIHJldHVybiBFWENSRVRfZmF1bHRfZml4ZWQ7CiAgICAgfQogICAgIGlmICgg bWVtY21wKHNpZywgIlx4Zlx4YnhlbiIsIHNpemVvZihzaWcpKSApCkBAIC0xMzIwLDcgKzEzNzMs NyBAQCBzdGF0aWMgaW50IGVtdWxhdGVfZm9yY2VkX2ludmFsaWRfb3Aoc3RydWN0IGNwdV91c2Vy X3JlZ3MgKnJlZ3MpCiAgICAgLyogV2Ugb25seSBlbXVsYXRlIENQVUlELiAqLwogICAgIGlmICgg KCByYyA9IGNvcHlfZnJvbV91c2VyKGluc3RyLCAoY2hhciAqKWVpcCwgc2l6ZW9mKGluc3RyKSkp ICE9IDAgKQogICAgIHsKLSAgICAgICAgcHJvcGFnYXRlX3BhZ2VfZmF1bHQoZWlwICsgc2l6ZW9m KGluc3RyKSAtIHJjLCAwKTsKKyAgICAgICAgcHZfaW5qZWN0X3BhZ2VfZmF1bHQoMCwgZWlwICsg c2l6ZW9mKGluc3RyKSAtIHJjKTsKICAgICAgICAgcmV0dXJuIEVYQ1JFVF9mYXVsdF9maXhlZDsK ICAgICB9CiAgICAgaWYgKCBtZW1jbXAoaW5zdHIsICJceGZceGEyIiwgc2l6ZW9mKGluc3RyKSkg KQpAQCAtMTQ3OCw2MiArMTUzMSw2IEBAIHZvaWQgZG9faW50MyhzdHJ1Y3QgY3B1X3VzZXJfcmVn cyAqcmVncykKICAgICBkb19ndWVzdF90cmFwKFRSQVBfaW50MywgcmVncyk7CiB9CiAKLXN0YXRp YyB2b2lkIHJlc2VydmVkX2JpdF9wYWdlX2ZhdWx0KAotICAgIHVuc2lnbmVkIGxvbmcgYWRkciwg c3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCi17Ci0gICAgcHJpbnRrKCIlcHY6IHJlc2VydmVk IGJpdCBpbiBwYWdlIHRhYmxlIChlYz0lMDRYKVxuIiwKLSAgICAgICAgICAgY3VycmVudCwgcmVn cy0+ZXJyb3JfY29kZSk7Ci0gICAgc2hvd19wYWdlX3dhbGsoYWRkcik7Ci0gICAgc2hvd19leGVj dXRpb25fc3RhdGUocmVncyk7Ci19Ci0KLXN0cnVjdCB0cmFwX2JvdW5jZSAqcHJvcGFnYXRlX3Bh Z2VfZmF1bHQodW5zaWduZWQgbG9uZyBhZGRyLCB1MTYgZXJyb3JfY29kZSkKLXsKLSAgICBzdHJ1 Y3QgdHJhcF9pbmZvICp0aTsKLSAgICBzdHJ1Y3QgdmNwdSAqdiA9IGN1cnJlbnQ7Ci0gICAgc3Ry dWN0IHRyYXBfYm91bmNlICp0YiA9ICZ2LT5hcmNoLnB2X3ZjcHUudHJhcF9ib3VuY2U7Ci0KLSAg ICBpZiAoIHVubGlrZWx5KCFpc19jYW5vbmljYWxfYWRkcmVzcyhhZGRyKSkgKQotICAgIHsKLSAg ICAgICAgdGkgPSAmdi0+YXJjaC5wdl92Y3B1LnRyYXBfY3R4dFtUUkFQX2dwX2ZhdWx0XTsKLSAg ICAgICAgdGItPmZsYWdzICAgICAgPSBUQkZfRVhDRVBUSU9OIHwgVEJGX0VYQ0VQVElPTl9FUlJD T0RFOwotICAgICAgICB0Yi0+ZXJyb3JfY29kZSA9IDA7Ci0gICAgICAgIHRiLT5jcyAgICAgICAg ID0gdGktPmNzOwotICAgICAgICB0Yi0+ZWlwICAgICAgICA9IHRpLT5hZGRyZXNzOwotICAgICAg ICBpZiAoIFRJX0dFVF9JRih0aSkgKQotICAgICAgICAgICAgdGItPmZsYWdzIHw9IFRCRl9JTlRF UlJVUFQ7Ci0gICAgICAgIHJldHVybiB0YjsKLSAgICB9Ci0KLSAgICB2LT5hcmNoLnB2X3ZjcHUu Y3RybHJlZ1syXSA9IGFkZHI7Ci0gICAgYXJjaF9zZXRfY3IyKHYsIGFkZHIpOwotCi0gICAgLyog UmUtc2V0IGVycm9yX2NvZGUudXNlciBmbGFnIGFwcHJvcHJpYXRlbHkgZm9yIHRoZSBndWVzdC4g Ki8KLSAgICBlcnJvcl9jb2RlICY9IH5QRkVDX3VzZXJfbW9kZTsKLSAgICBpZiAoICFndWVzdF9r ZXJuZWxfbW9kZSh2LCBndWVzdF9jcHVfdXNlcl9yZWdzKCkpICkKLSAgICAgICAgZXJyb3JfY29k ZSB8PSBQRkVDX3VzZXJfbW9kZTsKLQotICAgIHRyYWNlX3B2X3BhZ2VfZmF1bHQoYWRkciwgZXJy b3JfY29kZSk7Ci0KLSAgICB0aSA9ICZ2LT5hcmNoLnB2X3ZjcHUudHJhcF9jdHh0W1RSQVBfcGFn ZV9mYXVsdF07Ci0gICAgdGItPmZsYWdzID0gVEJGX0VYQ0VQVElPTiB8IFRCRl9FWENFUFRJT05f RVJSQ09ERTsKLSAgICB0Yi0+ZXJyb3JfY29kZSA9IGVycm9yX2NvZGU7Ci0gICAgdGItPmNzICAg ICAgICAgPSB0aS0+Y3M7Ci0gICAgdGItPmVpcCAgICAgICAgPSB0aS0+YWRkcmVzczsKLSAgICBp ZiAoIFRJX0dFVF9JRih0aSkgKQotICAgICAgICB0Yi0+ZmxhZ3MgfD0gVEJGX0lOVEVSUlVQVDsK LSAgICBpZiAoIHVubGlrZWx5KG51bGxfdHJhcF9ib3VuY2UodiwgdGIpKSApCi0gICAgewotICAg ICAgICBwcmludGsoIiVwdjogdW5oYW5kbGVkIHBhZ2UgZmF1bHQgKGVjPSUwNFgpXG4iLCB2LCBl cnJvcl9jb2RlKTsKLSAgICAgICAgc2hvd19wYWdlX3dhbGsoYWRkcik7Ci0gICAgfQotCi0gICAg aWYgKCB1bmxpa2VseShlcnJvcl9jb2RlICYgUEZFQ19yZXNlcnZlZF9iaXQpICkKLSAgICAgICAg cmVzZXJ2ZWRfYml0X3BhZ2VfZmF1bHQoYWRkciwgZ3Vlc3RfY3B1X3VzZXJfcmVncygpKTsKLQot ICAgIHJldHVybiBOVUxMOwotfQotCiBzdGF0aWMgaW50IGhhbmRsZV9nZHRfbGR0X21hcHBpbmdf ZmF1bHQoCiAgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQsIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpy ZWdzKQogewpAQCAtMTU2NSwxNyArMTU2MiwyMiBAQCBzdGF0aWMgaW50IGhhbmRsZV9nZHRfbGR0 X21hcHBpbmdfZmF1bHQoCiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAg ICAgICAgICBzdHJ1Y3QgdHJhcF9ib3VuY2UgKnRiOwotCiAgICAgICAgICAgICAvKiBJbiBoeXBl cnZpc29yIG1vZGU/IExlYXZlIGl0IHRvIHRoZSAjUEYgaGFuZGxlciB0byBmaXggdXAuICovCiAg ICAgICAgICAgICBpZiAoICFndWVzdF9tb2RlKHJlZ3MpICkKICAgICAgICAgICAgICAgICByZXR1 cm4gMDsKLSAgICAgICAgICAgIC8qIEluIGd1ZXN0IG1vZGU/IFByb3BhZ2F0ZSBmYXVsdCB0byBn dWVzdCwgd2l0aCBhZGp1c3RlZCAlY3IyLiAqLwotICAgICAgICAgICAgdGIgPSBwcm9wYWdhdGVf cGFnZV9mYXVsdChjdXJyLT5hcmNoLnB2X3ZjcHUubGR0X2Jhc2UgKyBvZmZzZXQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ3MtPmVycm9yX2NvZGUpOwotICAgICAg ICAgICAgaWYgKCB0YiApCi0gICAgICAgICAgICAgICAgdGItPmVycm9yX2NvZGUgPSAob2Zmc2V0 ICYgfihYODZfWEVDX0VYVCB8IFg4Nl9YRUNfSURUKSkgfAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgWDg2X1hFQ19USTsKKworICAgICAgICAgICAgLyogQWNjZXNzIHdvdWxkIGhh dmUgYmVjb21lIG5vbi1jYW5vbmljYWw/IFBhc3MgI0dQW3NlbF0gYmFjay4gKi8KKyAgICAgICAg ICAgIGlmICggdW5saWtlbHkoIWlzX2Nhbm9uaWNhbF9hZGRyZXNzKAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY3Vyci0+YXJjaC5wdl92Y3B1LmxkdF9iYXNlICsgb2Zmc2V0KSkgKQor ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHVpbnQxNl90IGVjID0gKG9mZnNldCAmIH4o WDg2X1hFQ19FWFQgfCBYODZfWEVDX0lEVCkpIHwgWDg2X1hFQ19USTsKKworICAgICAgICAgICAg ICAgIHB2X2luamVjdF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgZWMpOworICAgICAgICAg ICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIC8qIGVsc2UgcGFzcyB0aGUg I1BGIGJhY2ssIHdpdGggYWRqdXN0ZWQgJWNyMi4gKi8KKyAgICAgICAgICAgICAgICBwdl9pbmpl Y3RfcGFnZV9mYXVsdChyZWdzLT5lcnJvcl9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGN1cnItPmFyY2gucHZfdmNwdS5sZHRfYmFzZSArIG9mZnNldCk7CiAgICAg ICAgIH0KICAgICB9CiAgICAgZWxzZQpAQCAtMTg1OCw3ICsxODYwLDcgQEAgdm9pZCBkb19wYWdl X2ZhdWx0KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgICAgICAgICAgcmV0dXJuOwog ICAgIH0KIAotICAgIHByb3BhZ2F0ZV9wYWdlX2ZhdWx0KGFkZHIsIHJlZ3MtPmVycm9yX2NvZGUp OworICAgIHB2X2luamVjdF9wYWdlX2ZhdWx0KHJlZ3MtPmVycm9yX2NvZGUsIGFkZHIpOwogfQog CiAvKgpAQCAtMjc4OCw3ICsyNzkwLDcgQEAgaW50IHB2X2VtdWxfY3B1aWQodW5zaWduZWQgaW50 ICplYXgsIHVuc2lnbmVkIGludCAqZWJ4LCB1bnNpZ25lZCBpbnQgKmVjeCwKICAgICAgICAgZ290 byBmYWlsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCiAgICAgaWYgKCAoX3JjID0gY29weV9mcm9tX3VzZXIoJl94LCAodHlwZSAqKV9w dHIsIHNpemVvZihfeCkpKSAhPSAwICkgICAgICAgXAogICAgIHsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg ICAgICAgcHJvcGFnYXRlX3BhZ2VfZmF1bHQoX3B0ciArIHNpemVvZihfeCkgLSBfcmMsIDApOyAg ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHB2X2luamVjdF9wYWdlX2ZhdWx0KDAsIF9wdHIg KyBzaXplb2YoX3gpIC0gX3JjKTsgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBnb3RvIHNr aXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgKGVpcCkgKz0gc2l6ZW9mKF94KTsgX3g7 IH0pCkBAIC0yOTUzLDggKzI5NTUsOCBAQCBzdGF0aWMgaW50IGVtdWxhdGVfcHJpdmlsZWdlZF9v cChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICAgICAgICAgIGlmICggKHJjID0gY29w eV90b191c2VyKCh2b2lkICopZGF0YV9iYXNlICsgcmRfYWQoZWRpKSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZkYXRhLCBvcF9ieXRlcykpICE9IDAgKQogICAgICAgICAg ICAgewotICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9wYWdlX2ZhdWx0KGRhdGFfYmFzZSArIHJk X2FkKGVkaSkgKyBvcF9ieXRlcyAtIHJjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFBGRUNfd3JpdGVfYWNjZXNzKTsKKyAgICAgICAgICAgICAgICBwdl9pbmplY3RfcGFn ZV9mYXVsdChQRkVDX3dyaXRlX2FjY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhX2Jhc2UgKyByZF9hZChlZGkpICsgb3BfYnl0ZXMgLSByYyk7CiAgICAgICAg ICAgICAgICAgcmV0dXJuIEVYQ1JFVF9mYXVsdF9maXhlZDsKICAgICAgICAgICAgIH0KICAgICAg ICAgICAgIHdyX2FkKGVkaSwgcmVncy0+ZWRpICsgKGludCkoKHJlZ3MtPmVmbGFncyAmIFg4Nl9F RkxBR1NfREYpCkBAIC0yOTcxLDggKzI5NzMsOCBAQCBzdGF0aWMgaW50IGVtdWxhdGVfcHJpdmls ZWdlZF9vcChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICAgICAgICAgIGlmICggKHJj ID0gY29weV9mcm9tX3VzZXIoJmRhdGEsICh2b2lkICopZGF0YV9iYXNlICsgcmRfYWQoZXNpKSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BfYnl0ZXMpKSAhPSAwICkK ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBwcm9wYWdhdGVfcGFnZV9mYXVsdChkYXRh X2Jhc2UgKyByZF9hZChlc2kpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KyBvcF9ieXRlcyAtIHJjLCAwKTsKKyAgICAgICAgICAgICAgICBwdl9pbmplY3RfcGFnZV9mYXVs dCgwLCBkYXRhX2Jhc2UgKyByZF9hZChlc2kpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKyBvcF9ieXRlcyAtIHJjKTsKICAgICAgICAgICAgICAgICByZXR1cm4gRVhDUkVU X2ZhdWx0X2ZpeGVkOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZ3Vlc3RfaW9fd3JpdGUo cG9ydCwgb3BfYnl0ZXMsIGRhdGEsIGN1cnJkKTsKQEAgLTM1MjksOCArMzUzMSw4IEBAIHN0YXRp YyB2b2lkIGVtdWxhdGVfZ2F0ZV9vcChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICAg ICAgICAgIHJjID0gX19wdXRfdXNlcihpdGVtLCBzdGtwKTsgXAogICAgICAgICAgICAgaWYgKCBy YyApIFwKICAgICAgICAgICAgIHsgXAotICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9wYWdlX2Zh dWx0KCh1bnNpZ25lZCBsb25nKShzdGtwICsgMSkgLSByYywgXAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFBGRUNfd3JpdGVfYWNjZXNzKTsgXAorICAgICAgICAgICAgICAg IHB2X2luamVjdF9wYWdlX2ZhdWx0KFBGRUNfd3JpdGVfYWNjZXNzLCBcCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpKHN0a3AgKyAxKSAtIHJjKTsg XAogICAgICAgICAgICAgICAgIHJldHVybjsgXAogICAgICAgICAgICAgfSBcCiAgICAgICAgIH0g d2hpbGUgKCAwICkKQEAgLTM1OTcsNyArMzU5OSw3IEBAIHN0YXRpYyB2b2lkIGVtdWxhdGVfZ2F0 ZV9vcChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICAgICAgICAgICAgICAgICAgcmMg PSBfX2dldF91c2VyKHBhcm0sIHVzdGtwKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCByYyAp CiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0 ZV9wYWdlX2ZhdWx0KCh1bnNpZ25lZCBsb25nKSh1c3RrcCArIDEpIC0gcmMsIDApOworICAgICAg ICAgICAgICAgICAgICAgICAgcHZfaW5qZWN0X3BhZ2VfZmF1bHQoMCwgKHVuc2lnbmVkIGxvbmcp KHVzdGtwICsgMSkgLSByYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcHVzaChwYXJtKTsKZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvZG9tYWluLmggYi94ZW4vaW5jbHVkZS9hc20teDg2 L2RvbWFpbi5oCmluZGV4IGY2YTQwZWIuLjM5Y2M2NTggMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRl L2FzbS14ODYvZG9tYWluLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9kb21haW4uaApAQCAt OCw2ICs4LDcgQEAKICNpbmNsdWRlIDxhc20vaHZtL2RvbWFpbi5oPgogI2luY2x1ZGUgPGFzbS9l ODIwLmg+CiAjaW5jbHVkZSA8YXNtL21jZS5oPgorI2luY2x1ZGUgPGFzbS94ODZfZW11bGF0ZS5o PgogI2luY2x1ZGUgPHB1YmxpYy92Y3B1Lmg+CiAjaW5jbHVkZSA8cHVibGljL2h2bS9odm1faW5m b190YWJsZS5oPgogCkBAIC02MzIsNiArNjMzLDMxIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmcmVl X3ZjcHVfZ3Vlc3RfY29udGV4dChzdHJ1Y3QgdmNwdV9ndWVzdF9jb250ZXh0ICp2Z2MpCiBzdHJ1 Y3QgdmNwdV9odm1fY29udGV4dDsKIGludCBhcmNoX3NldF9pbmZvX2h2bV9ndWVzdChzdHJ1Y3Qg dmNwdSAqdiwgY29uc3Qgc3RydWN0IHZjcHVfaHZtX2NvbnRleHQgKmN0eCk7CiAKK3ZvaWQgcHZf aW5qZWN0X2V2ZW50KGNvbnN0IHN0cnVjdCB4ODZfZXZlbnQgKmV2ZW50KTsKKworc3RhdGljIGlu bGluZSB2b2lkIHB2X2luamVjdF9od19leGNlcHRpb24odW5zaWduZWQgaW50IHZlY3RvciwgaW50 IGVycmNvZGUpCit7CisgICAgY29uc3Qgc3RydWN0IHg4Nl9ldmVudCBldmVudCA9IHsKKyAgICAg ICAgLnZlY3RvciA9IHZlY3RvciwKKyAgICAgICAgLnR5cGUgPSBYODZfRVZFTlRUWVBFX0hXX0VY Q0VQVElPTiwKKyAgICAgICAgLmVycm9yX2NvZGUgPSBlcnJjb2RlLAorICAgIH07CisKKyAgICBw dl9pbmplY3RfZXZlbnQoJmV2ZW50KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHB2X2luamVj dF9wYWdlX2ZhdWx0KGludCBlcnJjb2RlLCB1bnNpZ25lZCBsb25nIGNyMikKK3sKKyAgICBjb25z dCBzdHJ1Y3QgeDg2X2V2ZW50IGV2ZW50ID0geworICAgICAgICAudmVjdG9yID0gVFJBUF9wYWdl X2ZhdWx0LAorICAgICAgICAudHlwZSA9IFg4Nl9FVkVOVFRZUEVfSFdfRVhDRVBUSU9OLAorICAg ICAgICAuZXJyb3JfY29kZSA9IGVycmNvZGUsCisgICAgICAgIC5jcjIgPSBjcjIsCisgICAgfTsK KworICAgIHB2X2luamVjdF9ldmVudCgmZXZlbnQpOworfQorCiAjZW5kaWYgLyogX19BU01fRE9N QUlOX0hfXyAqLwogCiAvKgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9tbS5oIGIv eGVuL2luY2x1ZGUvYXNtLXg4Ni9tbS5oCmluZGV4IDFiNGQxYzMuLmExNTAyOWMgMTAwNjQ0Ci0t LSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbW0uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L21t LmgKQEAgLTUzOSw3ICs1MzksNiBAQCBpbnQgbmV3X2d1ZXN0X2NyMyh1bnNpZ25lZCBsb25nIHBm bik7CiB2b2lkIG1ha2VfY3IzKHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBsb25nIG1mbik7CiB2 b2lkIHVwZGF0ZV9jcjMoc3RydWN0IHZjcHUgKnYpOwogaW50IHZjcHVfZGVzdHJveV9wYWdldGFi bGVzKHN0cnVjdCB2Y3B1ICopOwotc3RydWN0IHRyYXBfYm91bmNlICpwcm9wYWdhdGVfcGFnZV9m YXVsdCh1bnNpZ25lZCBsb25nIGFkZHIsIHUxNiBlcnJvcl9jb2RlKTsKIHZvaWQgKmRvX3BhZ2Vf d2FsayhzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyBhZGRyKTsKIAogaW50IF9fc3luY19s b2NhbF9leGVjc3RhdGUodm9pZCk7Ci0tIAoyLjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=