From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v2 1/3] x86/hvm: Don't raise #GP behind the emulators back for MSR accesses Date: Mon, 20 Feb 2017 10:28:47 +0000 Message-ID: <1487586529-27092-2-git-send-email-andrew.cooper3@citrix.com> References: <1487586529-27092-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: <1487586529-27092-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 , Boris Ostrovsky , Paul Durrant , Suravee Suthikulpanit List-Id: xen-devel@lists.xenproject.org VGhlIGN1cnJlbnQgaHZtX21zcl97cmVhZCx3cml0ZX1faW50ZXJjZXB0KCkgaW5mcmFzdHJ1Y3R1 cmUgY2FsbHMKaHZtX2luamVjdF9od19leGNlcHRpb24oKSBkaXJlY3RseSB0byBsYXRjaCBhIGZh dWx0LCBhbmQgcmV0dXJucwpYODZFTVVMX0VYQ0VQVElPTiB0byBpdHMgY2FsbGVyLgoKVGhpcyBi ZWhhdmlvdXIgaXMgcHJvYmxlbWF0aWMgZm9yIHRoZSBodm1lbXVsX3tyZWFkLHdyaXRlfV9tc3Io KSBwYXRocywgYXMgdGhlCmZhdWx0IGlzIHJhaXNlZCBiZWhpbmQgdGhlIGJhY2sgb2YgdGhlIHg4 NiBlbXVsYXRvci4KCkFsdGVyIHRoZSBiZWhhdmlvdXIgc28gaHZtX21zcl97cmVhZCx3cml0ZX1f aW50ZXJjZXB0KCkgc2ltcGx5IHJldHVybnMKWDg2RU1VTF9FWENFUFRJT04sIGxlYXZpbmcgdGhl IGNhbGxlcnMgdG8gYWN0dWFsbHkgaW5qZWN0IHRoZSAjR1AgZmF1bHQuCgpTaWduZWQtb2ZmLWJ5 OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgpBY2tlZC1ieTogS2V2 aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8 amJldWxpY2hAc3VzZS5jb20+Ci0tLQpDQzogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0 cml4LmNvbT4KQ0M6IEJvcmlzIE9zdHJvdnNreSA8Ym9yaXMub3N0cm92c2t5QG9yYWNsZS5jb20+ CkNDOiBTdXJhdmVlIFN1dGhpa3VscGFuaXQgPHN1cmF2ZWUuc3V0aGlrdWxwYW5pdEBhbWQuY29t PgoKdjI6CiAqIFN1YnN0YW50aWFsIHJlYmFzZQogKiBJbnRyb2R1Y2UgX19tdXN0X2NoZWNrIGZv ciBodm1fbXNyX3tyZWFkLHdyaXRlfV9pbnRlcmNlcHQoKQotLS0KIHhlbi9hcmNoL3g4Ni9odm0v ZW11bGF0ZS5jICAgICAgICB8IDE0ICsrKysrKysrKysrKy0tCiB4ZW4vYXJjaC94ODYvaHZtL2h2 bS5jICAgICAgICAgICAgfCAgNyArKysrLS0tCiB4ZW4vYXJjaC94ODYvaHZtL3N2bS9zdm0uYyAg ICAgICAgfCAgNCArKy0tCiB4ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYyAgICAgICAgfCAyMyAr KysrKysrKysrKysrKysrKystLS0tLQogeGVuL2FyY2gveDg2L2h2bS92bXgvdnZteC5jICAgICAg IHwgMTkgKysrKysrKysrKysrKystLS0tLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc3VwcG9y dC5oIHwgMTIgKysrKysrKysrLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKyks IDIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5j IGIveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKaW5kZXggMTRmOWI0My4uZWRjYWU1ZSAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKKysrIGIveGVuL2FyY2gveDg2L2h2 bS9lbXVsYXRlLmMKQEAgLTE1NDQsNyArMTU0NCwxMiBAQCBzdGF0aWMgaW50IGh2bWVtdWxfcmVh ZF9tc3IoCiAgICAgdWludDY0X3QgKnZhbCwKICAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAq Y3R4dCkKIHsKLSAgICByZXR1cm4gaHZtX21zcl9yZWFkX2ludGVyY2VwdChyZWcsIHZhbCk7Cisg ICAgaW50IHJjID0gaHZtX21zcl9yZWFkX2ludGVyY2VwdChyZWcsIHZhbCk7CisKKyAgICBpZiAo IHJjID09IFg4NkVNVUxfRVhDRVBUSU9OICkKKyAgICAgICAgeDg2X2VtdWxfaHdfZXhjZXB0aW9u KFRSQVBfZ3BfZmF1bHQsIDAsIGN0eHQpOworCisgICAgcmV0dXJuIHJjOwogfQogCiBzdGF0aWMg aW50IGh2bWVtdWxfd3JpdGVfbXNyKApAQCAtMTU1Miw3ICsxNTU3LDEyIEBAIHN0YXRpYyBpbnQg aHZtZW11bF93cml0ZV9tc3IoCiAgICAgdWludDY0X3QgdmFsLAogICAgIHN0cnVjdCB4ODZfZW11 bGF0ZV9jdHh0ICpjdHh0KQogewotICAgIHJldHVybiBodm1fbXNyX3dyaXRlX2ludGVyY2VwdChy ZWcsIHZhbCwgMSk7CisgICAgaW50IHJjID0gaHZtX21zcl93cml0ZV9pbnRlcmNlcHQocmVnLCB2 YWwsIDEpOworCisgICAgaWYgKCByYyA9PSBYODZFTVVMX0VYQ0VQVElPTiApCisgICAgICAgIHg4 Nl9lbXVsX2h3X2V4Y2VwdGlvbihUUkFQX2dwX2ZhdWx0LCAwLCBjdHh0KTsKKworICAgIHJldHVy biByYzsKIH0KIAogc3RhdGljIGludCBodm1lbXVsX3diaW52ZCgKZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni9odm0vaHZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCmluZGV4IDY2MjFkNjIu LjA4ODU1YzIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKKysrIGIveGVuL2Fy Y2gveDg2L2h2bS9odm0uYwpAQCAtNTE4LDcgKzUxOCwxMCBAQCB2b2lkIGh2bV9kb19yZXN1bWUo c3RydWN0IHZjcHUgKnYpCiAKICAgICAgICAgaWYgKCB3LT5kb193cml0ZS5tc3IgKQogICAgICAg ICB7Ci0gICAgICAgICAgICBodm1fbXNyX3dyaXRlX2ludGVyY2VwdCh3LT5tc3IsIHctPnZhbHVl LCAwKTsKKyAgICAgICAgICAgIGlmICggaHZtX21zcl93cml0ZV9pbnRlcmNlcHQody0+bXNyLCB3 LT52YWx1ZSwgMCkgPT0KKyAgICAgICAgICAgICAgICAgWDg2RU1VTF9FWENFUFRJT04gKQorICAg ICAgICAgICAgICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDApOwor CiAgICAgICAgICAgICB3LT5kb193cml0ZS5tc3IgPSAwOwogICAgICAgICB9CiAKQEAgLTM0NTUs NyArMzQ1OCw2IEBAIGludCBodm1fbXNyX3JlYWRfaW50ZXJjZXB0KHVuc2lnbmVkIGludCBtc3Is IHVpbnQ2NF90ICptc3JfY29udGVudCkKICAgICByZXR1cm4gcmV0OwogCiAgZ3BfZmF1bHQ6Ci0g ICAgaHZtX2luamVjdF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCk7CiAgICAgcmV0ID0g WDg2RU1VTF9FWENFUFRJT047CiAgICAgKm1zcl9jb250ZW50ID0gLTF1bGw7CiAgICAgZ290byBv dXQ7CkBAIC0zNjAwLDcgKzM2MDIsNiBAQCBpbnQgaHZtX21zcl93cml0ZV9pbnRlcmNlcHQodW5z aWduZWQgaW50IG1zciwgdWludDY0X3QgbXNyX2NvbnRlbnQsCiAgICAgcmV0dXJuIHJldDsKIAog Z3BfZmF1bHQ6Ci0gICAgaHZtX2luamVjdF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCk7 CiAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOwogfQogCmRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvaHZtL3N2bS9zdm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5jCmluZGV4IDg5 NGM0NTcuLmI4NjQ1MzUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5jCisr KyBiL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5jCkBAIC0xNzQ0LDcgKzE3NDQsNiBAQCBzdGF0 aWMgaW50IHN2bV9tc3JfcmVhZF9pbnRlcmNlcHQodW5zaWduZWQgaW50IG1zciwgdWludDY0X3Qg Km1zcl9jb250ZW50KQogICAgIHJldHVybiBYODZFTVVMX09LQVk7CiAKICBncGY6Ci0gICAgaHZt X2luamVjdF9od19leGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCk7CiAgICAgcmV0dXJuIFg4NkVN VUxfRVhDRVBUSU9OOwogfQogCkBAIC0xODk3LDcgKzE4OTYsNiBAQCBzdGF0aWMgaW50IHN2bV9t c3Jfd3JpdGVfaW50ZXJjZXB0KHVuc2lnbmVkIGludCBtc3IsIHVpbnQ2NF90IG1zcl9jb250ZW50 KQogICAgIHJldHVybiByZXN1bHQ7CiAKICBncGY6Ci0gICAgaHZtX2luamVjdF9od19leGNlcHRp b24oVFJBUF9ncF9mYXVsdCwgMCk7CiAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOwogfQog CkBAIC0xOTI0LDYgKzE5MjIsOCBAQCBzdGF0aWMgdm9pZCBzdm1fZG9fbXNyX2FjY2VzcyhzdHJ1 Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKIAogICAgIGlmICggcmMgPT0gWDg2RU1VTF9PS0FZICkK ICAgICAgICAgX191cGRhdGVfZ3Vlc3RfZWlwKHJlZ3MsIGluc3RfbGVuKTsKKyAgICBlbHNlIGlm ICggcmMgPT0gWDg2RU1VTF9FWENFUFRJT04gKQorICAgICAgICBodm1faW5qZWN0X2h3X2V4Y2Vw dGlvbihUUkFQX2dwX2ZhdWx0LCAwKTsKIH0KIAogc3RhdGljIHZvaWQgc3ZtX3ZtZXhpdF9kb19o bHQoc3RydWN0IHZtY2Jfc3RydWN0ICp2bWNiLApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2 bS92bXgvdm14LmMgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYwppbmRleCA1OTdkN2FjLi5i NWJmYTA1IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYworKysgYi94ZW4v YXJjaC94ODYvaHZtL3ZteC92bXguYwpAQCAtMjczNCw3ICsyNzM0LDYgQEAgc3RhdGljIGludCB2 bXhfbXNyX3JlYWRfaW50ZXJjZXB0KHVuc2lnbmVkIGludCBtc3IsIHVpbnQ2NF90ICptc3JfY29u dGVudCkKICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwogCiBncF9mYXVsdDoKLSAgICBodm1faW5q ZWN0X2h3X2V4Y2VwdGlvbihUUkFQX2dwX2ZhdWx0LCAwKTsKICAgICByZXR1cm4gWDg2RU1VTF9F WENFUFRJT047CiB9CiAKQEAgLTI5NzEsNyArMjk3MCw2IEBAIHN0YXRpYyBpbnQgdm14X21zcl93 cml0ZV9pbnRlcmNlcHQodW5zaWduZWQgaW50IG1zciwgdWludDY0X3QgbXNyX2NvbnRlbnQpCiAg ICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKIAogZ3BfZmF1bHQ6Ci0gICAgaHZtX2luamVjdF9od19l eGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCk7CiAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9O OwogfQogCkBAIC0zNjY0LDE4ICszNjYyLDMzIEBAIHZvaWQgdm14X3ZtZXhpdF9oYW5kbGVyKHN0 cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgICAgICBicmVhazsKICAgICBjYXNlIEVYSVRf UkVBU09OX01TUl9SRUFEOgogICAgIHsKLSAgICAgICAgdWludDY0X3QgbXNyX2NvbnRlbnQ7Ci0g ICAgICAgIGlmICggaHZtX21zcl9yZWFkX2ludGVyY2VwdChyZWdzLT5fZWN4LCAmbXNyX2NvbnRl bnQpID09IFg4NkVNVUxfT0tBWSApCisgICAgICAgIHVpbnQ2NF90IG1zcl9jb250ZW50ID0gMDsK KworICAgICAgICBzd2l0Y2ggKCBodm1fbXNyX3JlYWRfaW50ZXJjZXB0KHJlZ3MtPl9lY3gsICZt c3JfY29udGVudCkgKQogICAgICAgICB7CisgICAgICAgIGNhc2UgWDg2RU1VTF9PS0FZOgogICAg ICAgICAgICAgbXNyX3NwbGl0KHJlZ3MsIG1zcl9jb250ZW50KTsKICAgICAgICAgICAgIHVwZGF0 ZV9ndWVzdF9laXAoKTsgLyogU2FmZTogUkRNU1IgKi8KKyAgICAgICAgICAgIGJyZWFrOworCisg ICAgICAgIGNhc2UgWDg2RU1VTF9FWENFUFRJT046CisgICAgICAgICAgICBodm1faW5qZWN0X2h3 X2V4Y2VwdGlvbihUUkFQX2dwX2ZhdWx0LCAwKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg ICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNhc2UgRVhJVF9SRUFTT05fTVNSX1dS SVRFOgotICAgICAgICBpZiAoIGh2bV9tc3Jfd3JpdGVfaW50ZXJjZXB0KHJlZ3MtPl9lY3gsIG1z cl9mb2xkKHJlZ3MpLCAxKSA9PSBYODZFTVVMX09LQVkgKQorICAgICAgICBzd2l0Y2ggKCBodm1f bXNyX3dyaXRlX2ludGVyY2VwdChyZWdzLT5fZWN4LCBtc3JfZm9sZChyZWdzKSwgMSkgKQorICAg ICAgICB7CisgICAgICAgIGNhc2UgWDg2RU1VTF9PS0FZOgogICAgICAgICAgICAgdXBkYXRlX2d1 ZXN0X2VpcCgpOyAvKiBTYWZlOiBXUk1TUiAqLworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg ICAgY2FzZSBYODZFTVVMX0VYQ0VQVElPTjoKKyAgICAgICAgICAgIGh2bV9pbmplY3RfaHdfZXhj ZXB0aW9uKFRSQVBfZ3BfZmF1bHQsIDApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K ICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEVYSVRfUkVBU09OX1ZNWE9GRjoKZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3Z2bXguYyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3Z2 bXguYwppbmRleCBmNmEyNWE2Li5jODMwZDE2IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZt L3ZteC92dm14LmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdnZteC5jCkBAIC0xMDMyLDYg KzEwMzIsNyBAQCBzdGF0aWMgdm9pZCBsb2FkX3NoYWRvd19ndWVzdF9zdGF0ZShzdHJ1Y3QgdmNw dSAqdikKICAgICBzdHJ1Y3QgbmVzdGVkdmNwdSAqbnZjcHUgPSAmdmNwdV9uZXN0ZWRodm0odik7 CiAgICAgdTMyIGNvbnRyb2w7CiAgICAgdTY0IGNyX2doX21hc2ssIGNyX3JlYWRfc2hhZG93Owor ICAgIGludCByYzsKIAogICAgIHN0YXRpYyBjb25zdCB1MTYgdm1lbnRyeV9maWVsZHNbXSA9IHsK ICAgICAgICAgVk1fRU5UUllfSU5UUl9JTkZPLApAQCAtMTA1Myw4ICsxMDU0LDEyIEBAIHN0YXRp YyB2b2lkIGxvYWRfc2hhZG93X2d1ZXN0X3N0YXRlKHN0cnVjdCB2Y3B1ICp2KQogICAgIGlmICgg Y29udHJvbCAmIFZNX0VOVFJZX0xPQURfR1VFU1RfUEFUICkKICAgICAgICAgaHZtX3NldF9ndWVz dF9wYXQodiwgZ2V0X3Z2bWNzKHYsIEdVRVNUX1BBVCkpOwogICAgIGlmICggY29udHJvbCAmIFZN X0VOVFJZX0xPQURfUEVSRl9HTE9CQUxfQ1RSTCApCi0gICAgICAgIGh2bV9tc3Jfd3JpdGVfaW50 ZXJjZXB0KE1TUl9DT1JFX1BFUkZfR0xPQkFMX0NUUkwsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdldF92dm1jcyh2LCBHVUVTVF9QRVJGX0dMT0JBTF9DVFJMKSwgMCk7CisgICAg eworICAgICAgICByYyA9IGh2bV9tc3Jfd3JpdGVfaW50ZXJjZXB0KE1TUl9DT1JFX1BFUkZfR0xP QkFMX0NUUkwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X3Z2bWNz KHYsIEdVRVNUX1BFUkZfR0xPQkFMX0NUUkwpLCAwKTsKKyAgICAgICAgaWYgKCByYyA9PSBYODZF TVVMX0VYQ0VQVElPTiApCisgICAgICAgICAgICBodm1faW5qZWN0X2h3X2V4Y2VwdGlvbihUUkFQ X2dwX2ZhdWx0LCAwKTsKKyAgICB9CiAKICAgICBodm1fZnVuY3Muc2V0X3RzY19vZmZzZXQodiwg di0+YXJjaC5odm1fdmNwdS5jYWNoZV90c2Nfb2Zmc2V0LCAwKTsKIApAQCAtMTIyMiw3ICsxMjI3 LDcgQEAgc3RhdGljIHZvaWQgc3luY192dm1jc19ybyhzdHJ1Y3QgdmNwdSAqdikKIAogc3RhdGlj IHZvaWQgbG9hZF92dm1jc19ob3N0X3N0YXRlKHN0cnVjdCB2Y3B1ICp2KQogewotICAgIGludCBp OworICAgIGludCBpLCByYzsKICAgICB1NjQgcjsKICAgICB1MzIgY29udHJvbDsKIApAQCAtMTI0 MCw4ICsxMjQ1LDEyIEBAIHN0YXRpYyB2b2lkIGxvYWRfdnZtY3NfaG9zdF9zdGF0ZShzdHJ1Y3Qg dmNwdSAqdikKICAgICBpZiAoIGNvbnRyb2wgJiBWTV9FWElUX0xPQURfSE9TVF9QQVQgKQogICAg ICAgICBodm1fc2V0X2d1ZXN0X3BhdCh2LCBnZXRfdnZtY3ModiwgSE9TVF9QQVQpKTsKICAgICBp ZiAoIGNvbnRyb2wgJiBWTV9FWElUX0xPQURfUEVSRl9HTE9CQUxfQ1RSTCApCi0gICAgICAgIGh2 bV9tc3Jfd3JpdGVfaW50ZXJjZXB0KE1TUl9DT1JFX1BFUkZfR0xPQkFMX0NUUkwsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdldF92dm1jcyh2LCBIT1NUX1BFUkZfR0xPQkFMX0NU UkwpLCAxKTsKKyAgICB7CisgICAgICAgIHJjID0gaHZtX21zcl93cml0ZV9pbnRlcmNlcHQoTVNS X0NPUkVfUEVSRl9HTE9CQUxfQ1RSTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBnZXRfdnZtY3ModiwgSE9TVF9QRVJGX0dMT0JBTF9DVFJMKSwgMSk7CisgICAgICAgIGlm ICggcmMgPT0gWDg2RU1VTF9FWENFUFRJT04gKQorICAgICAgICAgICAgaHZtX2luamVjdF9od19l eGNlcHRpb24oVFJBUF9ncF9mYXVsdCwgMCk7CisgICAgfQogCiAgICAgaHZtX2Z1bmNzLnNldF90 c2Nfb2Zmc2V0KHYsIHYtPmFyY2guaHZtX3ZjcHUuY2FjaGVfdHNjX29mZnNldCwgMCk7CiAKZGlm ZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N1cHBvcnQuaCBiL3hlbi9pbmNsdWRl L2FzbS14ODYvaHZtL3N1cHBvcnQuaAppbmRleCAyNjI5NTVkLi41ZTI1Njk4IDEwMDY0NAotLS0g YS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdXBwb3J0LmgKKysrIGIveGVuL2luY2x1ZGUvYXNt LXg4Ni9odm0vc3VwcG9ydC5oCkBAIC0xMjEsMTMgKzEyMSwxOSBAQCBpbnQgaHZtX3NldF9lZmVy KHVpbnQ2NF90IHZhbHVlKTsKIGludCBodm1fc2V0X2NyMCh1bnNpZ25lZCBsb25nIHZhbHVlLCBi b29sX3QgbWF5X2RlZmVyKTsKIGludCBodm1fc2V0X2NyMyh1bnNpZ25lZCBsb25nIHZhbHVlLCBi b29sX3QgbWF5X2RlZmVyKTsKIGludCBodm1fc2V0X2NyNCh1bnNpZ25lZCBsb25nIHZhbHVlLCBi b29sX3QgbWF5X2RlZmVyKTsKLWludCBodm1fbXNyX3JlYWRfaW50ZXJjZXB0KHVuc2lnbmVkIGlu dCBtc3IsIHVpbnQ2NF90ICptc3JfY29udGVudCk7Ci1pbnQgaHZtX21zcl93cml0ZV9pbnRlcmNl cHQoCi0gICAgdW5zaWduZWQgaW50IG1zciwgdWludDY0X3QgbXNyX2NvbnRlbnQsIGJvb2xfdCBt YXlfZGVmZXIpOwogaW50IGh2bV9tb3ZfdG9fY3IodW5zaWduZWQgaW50IGNyLCB1bnNpZ25lZCBp bnQgZ3ByKTsKIGludCBodm1fbW92X2Zyb21fY3IodW5zaWduZWQgaW50IGNyLCB1bnNpZ25lZCBp bnQgZ3ByKTsKIHZvaWQgaHZtX3VkX2ludGVyY2VwdChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqKTsK IAorLyoKKyAqIE1heSByZXR1cm4gWDg2RU1VTF9FWENFUFRJT04sIGF0IHdoaWNoIHBvaW50IHRo ZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yCisgKiBpbmplY3RpbmcgYSAjR1AgZmF1bHQuICBV c2VkIHRvIHN1cHBvcnQgc3BlY3VsYXRpdmUgcmVhZHMuCisgKi8KK2ludCBfX211c3RfY2hlY2sg aHZtX21zcl9yZWFkX2ludGVyY2VwdCgKKyAgICB1bnNpZ25lZCBpbnQgbXNyLCB1aW50NjRfdCAq bXNyX2NvbnRlbnQpOworaW50IF9fbXVzdF9jaGVjayBodm1fbXNyX3dyaXRlX2ludGVyY2VwdCgK KyAgICB1bnNpZ25lZCBpbnQgbXNyLCB1aW50NjRfdCBtc3JfY29udGVudCwgYm9vbF90IG1heV9k ZWZlcik7CisKICNlbmRpZiAvKiBfX0FTTV9YODZfSFZNX1NVUFBPUlRfSF9fICovCiAKIC8qCi0t IAoyLjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Clhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9s aXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=