From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v2 4/5] x86/hvm: Handle x2apic MSRs via the new guest_{rd, wr}msr() infrastructure Date: Wed, 7 Mar 2018 18:58:35 +0000 Message-ID: <1520449116-15443-5-git-send-email-andrew.cooper3@citrix.com> References: <1520449116-15443-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: <1520449116-15443-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Sergey Dyasli , Wei Liu , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org RGlzcGF0Y2ggZnJvbSB0aGUgZ3Vlc3Rfe3JkLHdyfW1zcigpIGZ1bmN0aW9ucy4gIFRoZSByZWFk IHNpZGUgc2hvdWxkIGJlIHNhZmUKb3V0c2lkZSBvZiBjdXJyZW50IGNvbnRleHQsIGJ1dCB0aGUg d3JpdGUgc2lkZSBpcyBkZWZpbml0ZWx5IG5vdC4gIEFzIHRoZQp0b29sc3RhY2sgaGFzIG5vIGxl Z2l0aW1hdGUgcmVhc29uIHRvIGFjY2VzcyB0aGUgQVBJQyByZWdpc3RlcnMgdmlhIHRoaXMKaW50 ZXJmYWNlIChub3QgbGVhc3QgYmVjYXVzZSB3aGV0aGVyIHRoZXkgYXJlIGFjY2Vzc2libGUgYXQg YWxsIGRlcGVuZHMgb24KZ3Vlc3Qgc2V0dGluZ3MpLCB1bmlsYXRlcmFsbHkgcmVqZWN0IGFjY2Vz cyBhdHRlbXB0cyBvdXRzaWRlIG9mIGN1cnJlbnQKY29udGV4dC4KClJlbmFtZSB0byBndWVzdF97 cmQsd3J9bXNyX3gyYXBpYygpIGZvciBjb25zaXN0ZW5jeSwgYW5kIGFsdGVyIHRoZSBmdW5jdGlv bnMKdG8gdXNlIFg4NkVNVUxfRVhDRVBUSU9OIHJhdGhlciB0aGFuIFg4NkVNVUxfVU5IQU5ETEVB QkxFLiAgVGhlIHByZXZpb3VzCmNhbGxlcnMgdHVybmVkIFVOSEFORExFQUJMRSBpbnRvIEVYQ0VQ VElPTiwgYnV0IHVzaW5nIFVOSEFORExFQUJMRSB3aWxsIG5vdwppbnRlcmZlcmUgd2l0aCB0aGUg ZmFsbGJhY2sgdG8gbGVnYWN5IE1TUiBoYW5kbGluZy4KCldoaWxlIGFsdGVyaW5nIGd1ZXN0X3Jk bXNyX3gyYXBpYygpIG1ha2UgYSBjb3VwbGUgb2YgbWlub3IgaW1wcm92ZW1lbnRzLgpSZWZvcm1h dCB0aGUgaW5pdGlhbGlzZXIgZm9yIHJlYWRhYmxlW10gc28gaXQgaW5kZW50cyBpbiBhIG1vcmUg bmF0dXJhbCB3YXksCmFuZCBhbHRlciBoaWdoIHRvIGJlIGEgNjRiaXQgaW50ZWdlciB0byBhdm9p ZCBzaGlmdGluZyAwIGJ5IDMyIGluIHRoZSBjb21tb24KcGF0aC4KCk9ic2VydmFudCBwZW9wbGUg bWlnaHQgbm90aWNlIHRoYXQgd2Ugbm93IGRvbid0IGxldCBQViBndWVzdHMgcmVhZCB0aGUgeDJh cGljCk1TUnMuICBUaGV5IHNob3VsZCBuZXZlciBoYXZlIGJlZW4gYWJsZSB0byBpbiB0aGUgZmly c3QgcGxhY2UuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0Bj aXRyaXguY29tPgotLS0KQ0M6IEphbiBCZXVsaWNoIDxKQmV1bGljaEBzdXNlLmNvbT4KQ0M6IFdl aSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+CkNDOiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5w YXVAY2l0cml4LmNvbT4KQ0M6IFNlcmdleSBEeWFzbGkgPHNlcmdleS5keWFzbGlAY2l0cml4LmNv bT4KCnYyOgogKiBSZWJhc2Ugb3ZlciBBUElDIE1TUiBuYW1pbmcgY2hhbmdlcwogKiBEcm9wIGdw X2ZhdWx0IGxhYmVsIGluIGd1ZXN0X3dybXNyX3gyYXBpYygpCi0tLQogeGVuL2FyY2gveDg2L2h2 bS9odm0uYyAgICAgICAgfCAxMCAtLS0tLS0tCiB4ZW4vYXJjaC94ODYvaHZtL3ZsYXBpYy5jICAg ICB8IDY1ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9h cmNoL3g4Ni9tc3IuYyAgICAgICAgICAgIHwgMTUgKysrKysrKysrKwogeGVuL2luY2x1ZGUvYXNt LXg4Ni9odm0vaHZtLmggfCAgNCArLS0KIDQgZmlsZXMgY2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygr KSwgMzkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9odm0uYyBi L3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKaW5kZXggNDAzZmZkNS4uYThkN2UxOSAxMDA2NDQKLS0t IGEveGVuL2FyY2gveDg2L2h2bS9odm0uYworKysgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCkBA IC0zNDM5LDExICszNDM5LDYgQEAgaW50IGh2bV9tc3JfcmVhZF9pbnRlcmNlcHQodW5zaWduZWQg aW50IG1zciwgdWludDY0X3QgKm1zcl9jb250ZW50KQogICAgICAgICAqbXNyX2NvbnRlbnQgPSB2 Y3B1X3ZsYXBpYyh2KS0+aHcuYXBpY19iYXNlX21zcjsKICAgICAgICAgYnJlYWs7CiAKLSAgICBj YXNlIE1TUl9YMkFQSUNfQkFTRSAuLi4gTVNSX1gyQVBJQ19MQVNUOgotICAgICAgICBpZiAoIGh2 bV94MmFwaWNfbXNyX3JlYWQodiwgbXNyLCBtc3JfY29udGVudCkgKQotICAgICAgICAgICAgZ290 byBncF9mYXVsdDsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIE1TUl9JQTMyX1RTQ19ERUFE TElORToKICAgICAgICAgKm1zcl9jb250ZW50ID0gdmxhcGljX3RkdF9tc3JfZ2V0KHZjcHVfdmxh cGljKHYpKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNTk4LDExICszNTkzLDYgQEAgaW50IGh2bV9t c3Jfd3JpdGVfaW50ZXJjZXB0KHVuc2lnbmVkIGludCBtc3IsIHVpbnQ2NF90IG1zcl9jb250ZW50 LAogICAgICAgICB2bGFwaWNfdGR0X21zcl9zZXQodmNwdV92bGFwaWModiksIG1zcl9jb250ZW50 KTsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIE1TUl9YMkFQSUNfQkFTRSAuLi4gTVNSX1gy QVBJQ19MQVNUOgotICAgICAgICBpZiAoIGh2bV94MmFwaWNfbXNyX3dyaXRlKHYsIG1zciwgbXNy X2NvbnRlbnQpICkKLSAgICAgICAgICAgIGdvdG8gZ3BfZmF1bHQ7Ci0gICAgICAgIGJyZWFrOwot CiAgICAgY2FzZSBNU1JfSUEzMl9DUl9QQVQ6CiAgICAgICAgIGlmICggIWh2bV9zZXRfZ3Vlc3Rf cGF0KHYsIG1zcl9jb250ZW50KSApCiAgICAgICAgICAgIGdvdG8gZ3BfZmF1bHQ7CmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZsYXBpYy5jIGIveGVuL2FyY2gveDg2L2h2bS92bGFwaWMu YwppbmRleCBmYmI1N2Y4Li44ODE3NDc2IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3Zs YXBpYy5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdmxhcGljLmMKQEAgLTY2NiwzMyArNjY2LDM5 IEBAIHN0YXRpYyBpbnQgdmxhcGljX3JlYWQoCiAgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKIH0K IAotaW50IGh2bV94MmFwaWNfbXNyX3JlYWQoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCBt c3IsIHVpbnQ2NF90ICptc3JfY29udGVudCkKK2ludCBndWVzdF9yZG1zcl94MmFwaWMoY29uc3Qg c3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IG1zciwgdWludDY0X3QgKnZhbCkKIHsKLSAgICBzdGF0 aWMgY29uc3QgdW5zaWduZWQgbG9uZyByZWFkYWJsZVtdID0KLSAgICAgICAgeworICAgIHN0YXRp YyBjb25zdCB1bnNpZ25lZCBsb25nIHJlYWRhYmxlW10gPSB7CiAjZGVmaW5lIFJFRyh4KSAoMVVM IDw8IChBUElDXyAjIyB4ID4+IDQpKQotICAgICAgICAgICAgUkVHKElEKSAgICB8IFJFRyhMVlIp ICB8IFJFRyhUQVNLUFJJKSB8IFJFRyhQUk9DUFJJKSB8Ci0gICAgICAgICAgICBSRUcoTERSKSAg IHwgUkVHKFNQSVYpIHwgUkVHKEVTUikgICAgIHwgUkVHKElDUikgICAgIHwKLSAgICAgICAgICAg IFJFRyhDTUNJKSAgfCBSRUcoTFZUVCkgfCBSRUcoTFZUVEhNUikgfCBSRUcoTFZUUEMpICAgfAot ICAgICAgICAgICAgUkVHKExWVDApICB8IFJFRyhMVlQxKSB8IFJFRyhMVlRFUlIpICB8IFJFRyhU TUlDVCkgICB8Ci0gICAgICAgICAgICBSRUcoVE1DQ1QpIHwgUkVHKFREQ1IpIHwKKyAgICAgICAg UkVHKElEKSAgICB8IFJFRyhMVlIpICB8IFJFRyhUQVNLUFJJKSB8IFJFRyhQUk9DUFJJKSB8Cisg ICAgICAgIFJFRyhMRFIpICAgfCBSRUcoU1BJVikgfCBSRUcoRVNSKSAgICAgfCBSRUcoSUNSKSAg ICAgfAorICAgICAgICBSRUcoQ01DSSkgIHwgUkVHKExWVFQpIHwgUkVHKExWVFRITVIpIHwgUkVH KExWVFBDKSAgIHwKKyAgICAgICAgUkVHKExWVDApICB8IFJFRyhMVlQxKSB8IFJFRyhMVlRFUlIp ICB8IFJFRyhUTUlDVCkgICB8CisgICAgICAgIFJFRyhUTUNDVCkgfCBSRUcoVERDUikgfAogI3Vu ZGVmIFJFRwogI2RlZmluZSBSRUdCTE9DSyh4KSAoKCgxVUwgPDwgKE5SX1ZFQ1RPUlMgLyAzMikp IC0gMSkgPDwgKEFQSUNfICMjIHggPj4gNCkpCi0gICAgICAgICAgICBSRUdCTE9DSyhJU1IpIHwg UkVHQkxPQ0soVE1SKSB8IFJFR0JMT0NLKElSUikKKyAgICAgICAgUkVHQkxPQ0soSVNSKSB8IFJF R0JMT0NLKFRNUikgfCBSRUdCTE9DSyhJUlIpCiAjdW5kZWYgUkVHQkxPQ0sKLSAgICAgICAgfTsK KyAgICB9OwogICAgIGNvbnN0IHN0cnVjdCB2bGFwaWMgKnZsYXBpYyA9IHZjcHVfdmxhcGljKHYp OwotICAgIHVpbnQzMl90IGhpZ2ggPSAwLCByZWcgPSBtc3IgLSBNU1JfWDJBUElDX0JBU0UsIG9m ZnNldCA9IHJlZyA8PCA0OworICAgIHVpbnQ2NF90IGhpZ2ggPSAwOworICAgIHVpbnQzMl90IHJl ZyA9IG1zciAtIE1TUl9YMkFQSUNfQkFTRSwgb2Zmc2V0ID0gcmVnIDw8IDQ7CisKKyAgICAvKgor ICAgICAqIFRoZSByZWFkIHNpZGUgbG9va3MgYXMgaWYgaXQgbWlnaHQgYmUgc2FmZSB0byB1c2Ug b3V0c2lkZSBvZiBjdXJyZW50CisgICAgICogY29udGV4dCwgYnV0IHRoZSB3cml0ZSBzaWRlIGlz IG1vc3QgY2VydGFpbmx5IG5vdC4gIEFzIHdlIGRvbid0IG5lZWQKKyAgICAgKiBhbnkgbm9uLWN1 cnJlbnQgYWNjZXNzLCBlbmZvcmNlIHN5bW1ldHJ5IHdpdGggdGhlIHdyaXRlIHNpZGUuCisgICAg ICovCisgICAgQVNTRVJUKHYgPT0gY3VycmVudCk7CiAKICAgICBpZiAoICF2bGFwaWNfeDJhcGlj X21vZGUodmxhcGljKSB8fAogICAgICAgICAgKHJlZyA+PSBzaXplb2YocmVhZGFibGUpICogOCkg fHwgIXRlc3RfYml0KHJlZywgcmVhZGFibGUpICkKLSAgICAgICAgcmV0dXJuIFg4NkVNVUxfVU5I QU5ETEVBQkxFOworICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047CiAKICAgICBpZiAo IG9mZnNldCA9PSBBUElDX0lDUiApCi0gICAgICAgIGhpZ2ggPSB2bGFwaWNfcmVhZF9hbGlnbmVk KHZsYXBpYywgQVBJQ19JQ1IyKTsKKyAgICAgICAgaGlnaCA9ICh1aW50NjRfdCl2bGFwaWNfcmVh ZF9hbGlnbmVkKHZsYXBpYywgQVBJQ19JQ1IyKSA8PCAzMjsKIAotICAgICptc3JfY29udGVudCA9 ICgodWludDY0X3QpaGlnaCA8PCAzMikgfAotICAgICAgICAgICAgICAgICAgIHZsYXBpY19yZWFk X2FsaWduZWQodmxhcGljLCBvZmZzZXQpOworICAgICp2YWwgPSBoaWdoIHwgdmxhcGljX3JlYWRf YWxpZ25lZCh2bGFwaWMsIG9mZnNldCk7CiAKICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwogfQpA QCAtOTgzLDQ5ICs5ODksNTIgQEAgaW50IHZsYXBpY19hcGljdl93cml0ZShzdHJ1Y3QgdmNwdSAq diwgdW5zaWduZWQgaW50IG9mZnNldCkKICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwogfQogCi1p bnQgaHZtX3gyYXBpY19tc3Jfd3JpdGUoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCBtc3Is IHVpbnQ2NF90IG1zcl9jb250ZW50KQoraW50IGd1ZXN0X3dybXNyX3gyYXBpYyhzdHJ1Y3QgdmNw dSAqdiwgdWludDMyX3QgbXNyLCB1aW50NjRfdCBtc3JfY29udGVudCkKIHsKICAgICBzdHJ1Y3Qg dmxhcGljICp2bGFwaWMgPSB2Y3B1X3ZsYXBpYyh2KTsKICAgICB1aW50MzJfdCBvZmZzZXQgPSAo bXNyIC0gTVNSX1gyQVBJQ19CQVNFKSA8PCA0OwogCisgICAgLyogVGhlIHRpbWVyIGhhbmRsaW5n IGF0IGxlYXN0IGlzIHVuc2FmZSBvdXRzaWRlIG9mIGN1cnJlbnQgY29udGV4dC4gKi8KKyAgICBB U1NFUlQodiA9PSBjdXJyZW50KTsKKwogICAgIGlmICggIXZsYXBpY194MmFwaWNfbW9kZSh2bGFw aWMpICkKLSAgICAgICAgcmV0dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOworICAgICAgICByZXR1 cm4gWDg2RU1VTF9FWENFUFRJT047CiAKICAgICBzd2l0Y2ggKCBvZmZzZXQgKQogICAgIHsKICAg ICBjYXNlIEFQSUNfVEFTS1BSSToKICAgICAgICAgaWYgKCBtc3JfY29udGVudCAmIH5BUElDX1RQ UklfTUFTSyApCi0gICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhBTkRMRUFCTEU7CisgICAg ICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047CiAgICAgICAgIGJyZWFrOwogCiAgICAg Y2FzZSBBUElDX1NQSVY6CiAgICAgICAgIGlmICggbXNyX2NvbnRlbnQgJiB+KEFQSUNfVkVDVE9S X01BU0sgfCBBUElDX1NQSVZfQVBJQ19FTkFCTEVEIHwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKFZMQVBJQ19WRVJTSU9OICYgQVBJQ19MVlJfRElSRUNURURfRU9JCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA/IEFQSUNfU1BJVl9ESVJFQ1RFRF9FT0kgOiAwKSkgKQotICAg ICAgICAgICAgcmV0dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOworICAgICAgICAgICAgcmV0dXJu IFg4NkVNVUxfRVhDRVBUSU9OOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQVBJQ19MVlRU OgogICAgICAgICBpZiAoIG1zcl9jb250ZW50ICYgfihMVlRfTUFTSyB8IEFQSUNfVElNRVJfTU9E RV9NQVNLKSApCi0gICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhBTkRMRUFCTEU7CisgICAg ICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047CiAgICAgICAgIGJyZWFrOwogCiAgICAg Y2FzZSBBUElDX0xWVFRITVI6CiAgICAgY2FzZSBBUElDX0xWVFBDOgogICAgIGNhc2UgQVBJQ19D TUNJOgogICAgICAgICBpZiAoIG1zcl9jb250ZW50ICYgfihMVlRfTUFTSyB8IEFQSUNfTU9ERV9N QVNLKSApCi0gICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhBTkRMRUFCTEU7CisgICAgICAg ICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2Fz ZSBBUElDX0xWVDA6CiAgICAgY2FzZSBBUElDX0xWVDE6CiAgICAgICAgIGlmICggbXNyX2NvbnRl bnQgJiB+TElOVF9NQVNLICkKLSAgICAgICAgICAgIHJldHVybiBYODZFTVVMX1VOSEFORExFQUJM RTsKKyAgICAgICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKICAgICAgICAgYnJlYWs7 CiAKICAgICBjYXNlIEFQSUNfTFZURVJSOgogICAgICAgICBpZiAoIG1zcl9jb250ZW50ICYgfkxW VF9NQVNLICkKLSAgICAgICAgICAgIHJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsKKyAgICAg ICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKICAgICAgICAgYnJlYWs7CiAKICAgICBj YXNlIEFQSUNfVE1JQ1Q6CkBAIC0xMDMzLDIwICsxMDQyLDIwIEBAIGludCBodm1feDJhcGljX21z cl93cml0ZShzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IG1zciwgdWludDY0X3QgbXNyX2Nv bnRlbnQpCiAKICAgICBjYXNlIEFQSUNfVERDUjoKICAgICAgICAgaWYgKCBtc3JfY29udGVudCAm IH5BUElDX1REUl9ESVZfMSApCi0gICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhBTkRMRUFC TEU7CisgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047CiAgICAgICAgIGJyZWFr OwogCiAgICAgY2FzZSBBUElDX0lDUjoKICAgICAgICAgaWYgKCAodWludDMyX3QpbXNyX2NvbnRl bnQgJiB+KEFQSUNfVkVDVE9SX01BU0sgfCBBUElDX01PREVfTUFTSyB8CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBBUElDX0RFU1RfTUFTSyB8IEFQSUNfSU5UX0FTU0VS VCB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUElDX0lOVF9MRVZF TFRSSUcgfCBBUElDX1NIT1JUX01BU0spICkKLSAgICAgICAgICAgIHJldHVybiBYODZFTVVMX1VO SEFORExFQUJMRTsKKyAgICAgICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsKICAgICAg ICAgdmxhcGljX3NldF9yZWcodmxhcGljLCBBUElDX0lDUjIsIG1zcl9jb250ZW50ID4+IDMyKTsK ICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEFQSUNfU0VMRl9JUEk6CiAgICAgICAgIGlmICgg bXNyX2NvbnRlbnQgJiB+QVBJQ19WRUNUT1JfTUFTSyApCi0gICAgICAgICAgICByZXR1cm4gWDg2 RU1VTF9VTkhBTkRMRUFCTEU7CisgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047 CiAgICAgICAgIG9mZnNldCA9IEFQSUNfSUNSOwogICAgICAgICBtc3JfY29udGVudCA9IEFQSUNf REVTVF9TRUxGIHwgKG1zcl9jb250ZW50ICYgQVBJQ19WRUNUT1JfTUFTSyk7CiAgICAgICAgIGJy ZWFrOwpAQCAtMTA1NCw4ICsxMDYzLDEwIEBAIGludCBodm1feDJhcGljX21zcl93cml0ZShzdHJ1 Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IG1zciwgdWludDY0X3QgbXNyX2NvbnRlbnQpCiAgICAg Y2FzZSBBUElDX0VPSToKICAgICBjYXNlIEFQSUNfRVNSOgogICAgICAgICBpZiAoIG1zcl9jb250 ZW50ICkKKyAgICAgICAgewogICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gWDg2RU1V TF9VTkhBTkRMRUFCTEU7CisgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047Cisg ICAgICAgIH0KICAgICB9CiAKICAgICB2bGFwaWNfcmVnX3dyaXRlKHYsIG9mZnNldCwgbXNyX2Nv bnRlbnQpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21zci5jIGIveGVuL2FyY2gveDg2L21z ci5jCmluZGV4IDYyMDc5YmIuLmZhMjU1MmEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tc3Iu YworKysgYi94ZW4vYXJjaC94ODYvbXNyLmMKQEAgLTE0MSw2ICsxNDEsNyBAQCBpbnQgaW5pdF92 Y3B1X21zcl9wb2xpY3koc3RydWN0IHZjcHUgKnYpCiAKIGludCBndWVzdF9yZG1zcihjb25zdCBz dHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgbXNyLCB1aW50NjRfdCAqdmFsKQogeworICAgIGNvbnN0 IHN0cnVjdCB2Y3B1ICpjdXJyID0gY3VycmVudDsKICAgICBjb25zdCBzdHJ1Y3QgZG9tYWluICpk ID0gdi0+ZG9tYWluOwogICAgIGNvbnN0IHN0cnVjdCBjcHVpZF9wb2xpY3kgKmNwID0gZC0+YXJj aC5jcHVpZDsKICAgICBjb25zdCBzdHJ1Y3QgbXNyX2RvbWFpbl9wb2xpY3kgKmRwID0gZC0+YXJj aC5tc3I7CkBAIC0xNzcsNiArMTc4LDEzIEBAIGludCBndWVzdF9yZG1zcihjb25zdCBzdHJ1Y3Qg dmNwdSAqdiwgdWludDMyX3QgbXNyLCB1aW50NjRfdCAqdmFsKQogICAgICAgICAgICAgICAgX01T Ul9NSVNDX0ZFQVRVUkVTX0NQVUlEX0ZBVUxUSU5HOwogICAgICAgICBicmVhazsKIAorICAgIGNh c2UgTVNSX1gyQVBJQ19CQVNFIC4uLiBNU1JfWDJBUElDX0xBU1Q6CisgICAgICAgIGlmICggIWlz X2h2bV9kb21haW4oZCkgfHwgdiAhPSBjdXJyICkKKyAgICAgICAgICAgIGdvdG8gZ3BfZmF1bHQ7 CisKKyAgICAgICAgcmV0ID0gZ3Vlc3RfcmRtc3JfeDJhcGljKHYsIG1zciwgdmFsKTsKKyAgICAg ICAgZ290byBvdXQ7CisKICAgICBjYXNlIE1TUl9IWVBFUlZJU09SX1NUQVJUIC4uLiBNU1JfSFlQ RVJWSVNPUl9TVEFSVCArIE5SX1ZJUklESUFOX01TUlMgLSAxOgogICAgICAgICBpZiAoIGlzX3Zp cmlkaWFuX2RvbWFpbihkKSApCiAgICAgICAgIHsKQEAgLTI3Miw2ICsyODAsMTMgQEAgaW50IGd1 ZXN0X3dybXNyKHN0cnVjdCB2Y3B1ICp2LCB1aW50MzJfdCBtc3IsIHVpbnQ2NF90IHZhbCkKICAg ICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBNU1JfWDJBUElDX0JBU0UgLi4uIE1TUl9Y MkFQSUNfTEFTVDoKKyAgICAgICAgaWYgKCAhaXNfaHZtX2RvbWFpbihkKSB8fCB2ICE9IGN1cnIg KQorICAgICAgICAgICAgZ290byBncF9mYXVsdDsKKworICAgICAgICByZXQgPSBndWVzdF93cm1z cl94MmFwaWModiwgbXNyLCB2YWwpOworICAgICAgICBnb3RvIG91dDsKKwogICAgIGNhc2UgTVNS X0hZUEVSVklTT1JfU1RBUlQgLi4uIE1TUl9IWVBFUlZJU09SX1NUQVJUICsgTlJfVklSSURJQU5f TVNSUyAtIDE6CiAgICAgICAgIGlmICggaXNfdmlyaWRpYW5fZG9tYWluKGQpICkKICAgICAgICAg ewpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaHZtLmggYi94ZW4vaW5jbHVk ZS9hc20teDg2L2h2bS9odm0uaAppbmRleCA5YWE2YzcyLi45ODhiODk2IDEwMDY0NAotLS0gYS94 ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9odm0uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2 bS9odm0uaApAQCAtNTI4LDggKzUyOCw4IEBAIGludCBodm1faGFwX25lc3RlZF9wYWdlX2ZhdWx0 KHBhZGRyX3QgZ3BhLCB1bnNpZ25lZCBsb25nIGdsYSwKICAgICAgICAgPyAodTMyKV9fZC0+YXJj aC5pbmNhcm5hdGlvbiA6ICh1MzIpKHYpLT5hcmNoLmh2bV92Y3B1Lm1zcl90c2NfYXV4OyBcCiB9 KQogCi1pbnQgaHZtX3gyYXBpY19tc3JfcmVhZChzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50 IG1zciwgdWludDY0X3QgKm1zcl9jb250ZW50KTsKLWludCBodm1feDJhcGljX21zcl93cml0ZShz dHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IG1zciwgdWludDY0X3QgbXNyX2NvbnRlbnQpOwor aW50IGd1ZXN0X3JkbXNyX3gyYXBpYyhjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgbXNy LCB1aW50NjRfdCAqdmFsKTsKK2ludCBndWVzdF93cm1zcl94MmFwaWMoc3RydWN0IHZjcHUgKnYs IHVpbnQzMl90IG1zciwgdWludDY0X3QgdmFsKTsKIAogLyoKICAqIE5lc3RlZCBIVk0KLS0gCjIu MS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu LWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6 Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==