From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH 4/9] x86/vmx: Support remote access to the MSR lists Date: Tue, 22 May 2018 12:20:41 +0100 Message-ID: <1526988046-22948-5-git-send-email-andrew.cooper3@citrix.com> References: <1526988046-22948-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: <1526988046-22948-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: Kevin Tian , Wei Liu , Jan Beulich , Andrew Cooper , Jun Nakajima , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org QXQgdGhlIG1vbWVudCwgYWxsIG1vZGlmaWNhdGlvbnMgb2YgdGhlIE1TUiBsaXN0cyBhcmUgaW4g Y3VycmVudCBjb250ZXh0LgpIb3dldmVyLCBmdXR1cmUgY2hhbmdlcyBtYXkgbmVlZCB0byBwdXQg TVNSX0VGRVIgaW50byB0aGUgbGlzdHMgZnJvbSBkb21jdGwKaHlwZXJjYWxsIGNvbnRleHQuCgpQ bHVtYiBhIHN0cnVjdCB2Y3B1IHBhcmFtZXRlciBkb3duIHRocm91Z2ggdGhlIGluZnJhc3RydWN0 dXJlLCBhbmQgdXNlCnZteF92bWNzX3tlbnRlcixleGl0fSgpIGZvciBzYWZlIGFjY2VzcyB0byB0 aGUgVk1DUyBpbiB2bXhfYWRkX21zcigpLiAgVXNlCmFzc2VydGlvbnMgdG8gZW5zdXJlIHRoYXQg YWNjZXNzIGlzIGVpdGhlciBpbiBjdXJyZW50IGNvbnRleHQsIG9yIHdoaWxlIHRoZQp2Y3B1IGlz IHBhdXNlZC4KCkZvciBub3cgaXQgaXMgc2FmZSB0byByZXF1aXJlIHRoYXQgcmVtb3RlIGFjY2Vz c2VzIGFyZSB1bmRlciB0aGUgZG9tY3RsIGxvY2suClRoaXMgd2lsbCByZW1haW4gc2FmZSBpZi93 aGVuIHRoZSBnbG9iYWwgZG9tY3RsIGxvY2sgYmVjb21lcyBwZXItZG9tYWluLgoKTm90ZSB0aGVz ZSBleHBlY3RhdGlvbnMgYmVzaWRlIHRoZSBmaWVsZHMgaW4gYXJjaF92bXhfc3RydWN0LCBhbmQg cmVvcmRlciB0aGUKZmllbGRzIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHBhZGRpbmcuCgpTaWduZWQt b2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgotLS0KQ0M6 IEphbiBCZXVsaWNoIDxKQmV1bGljaEBzdXNlLmNvbT4KQ0M6IEp1biBOYWthamltYSA8anVuLm5h a2FqaW1hQGludGVsLmNvbT4KQ0M6IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPgpD QzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KQ0M6IFJvZ2VyIFBhdSBNb25uw6kgPHJv Z2VyLnBhdUBjaXRyaXguY29tPgoKVG8gcHJlZW1wdCBhbnkgcXVlc3Rpb25zIGFib3V0IHNwaW5s b2NrcywgdGhlIHVzZSBvZiB0aGUgTVNSIGxpc3RzIGluIHRoZQpyZXR1cm4tdG8tZ3Vlc3QgcGF0 aCBjYXVzZXMgY2hlY2tsb2NrIGZhaWx1cmVzIGZvciBwbGFpbiBzcGlubG9ja3MgKGRlc3BpdGUg aXQKdGVjaG5pY2FsbHkgYmVpbmcgc2FmZSB0byBsaXZlIGhlcmUpLCBhbmQgdGhlIGNhbGwgdG8g YWxsb2NfeGVuaGVhcF9wYWdlKCkKbWFrZXMgaXQgaW1wb3NzaWJsZSB0byB1c2UgaXJxc2F2ZS9y ZXN0b3JlIHZhcmlhbnRzLCBkdWUgdG8gdGhlIG5lc3RlZAphY3F1aXNpdGlvbiBvZiB0aGUgaGVh cCBsb2NrLgotLS0KIHhlbi9hcmNoL3g4Ni9jcHUvdnBtdV9pbnRlbC5jICAgICAgfCAxNCArKysr KystLS0tLS0tCiB4ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNzLmMgICAgICAgIHwgNDAgKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9odm0vdm14L3Zt eC5jICAgICAgICAgfCAyNCArKysrKysrKysrKystLS0tLS0tLS0tLQogeGVuL2luY2x1ZGUvYXNt LXg4Ni9odm0vdm14L3ZtY3MuaCB8IDM0ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t CiA0IGZpbGVzIGNoYW5nZWQsIDcyIGluc2VydGlvbnMoKyksIDQwIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvdnBtdV9pbnRlbC5jIGIveGVuL2FyY2gveDg2L2Nw dS92cG11X2ludGVsLmMKaW5kZXggMjA3ZTJlNy4uYzQ5OWU2OSAxMDA2NDQKLS0tIGEveGVuL2Fy Y2gveDg2L2NwdS92cG11X2ludGVsLmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS92cG11X2ludGVs LmMKQEAgLTQ1NSwxMiArNDU1LDEyIEBAIHN0YXRpYyBpbnQgY29yZTJfdnBtdV9hbGxvY19yZXNv dXJjZShzdHJ1Y3QgdmNwdSAqdikKICAgICBpZiAoIGlzX2h2bV92Y3B1KHYpICkKICAgICB7CiAg ICAgICAgIHdybXNybChNU1JfQ09SRV9QRVJGX0dMT0JBTF9DVFJMLCAwKTsKLSAgICAgICAgaWYg KCB2bXhfYWRkX2hvc3RfbG9hZF9tc3IoTVNSX0NPUkVfUEVSRl9HTE9CQUxfQ1RSTCkgKQorICAg ICAgICBpZiAoIHZteF9hZGRfaG9zdF9sb2FkX21zcih2LCBNU1JfQ09SRV9QRVJGX0dMT0JBTF9D VFJMKSApCiAgICAgICAgICAgICBnb3RvIG91dF9lcnI7CiAKLSAgICAgICAgaWYgKCB2bXhfYWRk X2d1ZXN0X21zcihNU1JfQ09SRV9QRVJGX0dMT0JBTF9DVFJMKSApCisgICAgICAgIGlmICggdm14 X2FkZF9ndWVzdF9tc3IodiwgTVNSX0NPUkVfUEVSRl9HTE9CQUxfQ1RSTCkgKQogICAgICAgICAg ICAgZ290byBvdXRfZXJyOwotICAgICAgICB2bXhfd3JpdGVfZ3Vlc3RfbXNyKE1TUl9DT1JFX1BF UkZfR0xPQkFMX0NUUkwsIDApOworICAgICAgICB2bXhfd3JpdGVfZ3Vlc3RfbXNyKHYsIE1TUl9D T1JFX1BFUkZfR0xPQkFMX0NUUkwsIDApOwogICAgIH0KIAogICAgIGNvcmUyX3ZwbXVfY3h0ID0g eHphbGxvY19ieXRlcyhzaXplb2YoKmNvcmUyX3ZwbXVfY3h0KSArCkBAIC02MTMsNyArNjEzLDcg QEAgc3RhdGljIGludCBjb3JlMl92cG11X2RvX3dybXNyKHVuc2lnbmVkIGludCBtc3IsIHVpbnQ2 NF90IG1zcl9jb250ZW50LAogICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKICAgICAgICAg aWYgKCBpc19odm1fdmNwdSh2KSApCi0gICAgICAgICAgICB2bXhfcmVhZF9ndWVzdF9tc3IoTVNS X0NPUkVfUEVSRl9HTE9CQUxfQ1RSTCwKKyAgICAgICAgICAgIHZteF9yZWFkX2d1ZXN0X21zcih2 LCBNU1JfQ09SRV9QRVJGX0dMT0JBTF9DVFJMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZjb3JlMl92cG11X2N4dC0+Z2xvYmFsX2N0cmwpOwogICAgICAgICBlbHNlCiAgICAgICAg ICAgICByZG1zcmwoTVNSX0NPUkVfUEVSRl9HTE9CQUxfQ1RSTCwgY29yZTJfdnBtdV9jeHQtPmds b2JhbF9jdHJsKTsKQEAgLTY4Miw3ICs2ODIsNyBAQCBzdGF0aWMgaW50IGNvcmUyX3ZwbXVfZG9f d3Jtc3IodW5zaWduZWQgaW50IG1zciwgdWludDY0X3QgbXNyX2NvbnRlbnQsCiAgICAgICAgICAg ICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKICAgICAgICAgICAgIGlmICggaXNfaHZtX3ZjcHUodikg KQotICAgICAgICAgICAgICAgIHZteF9yZWFkX2d1ZXN0X21zcihNU1JfQ09SRV9QRVJGX0dMT0JB TF9DVFJMLAorICAgICAgICAgICAgICAgIHZteF9yZWFkX2d1ZXN0X21zcih2LCBNU1JfQ09SRV9Q RVJGX0dMT0JBTF9DVFJMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29y ZTJfdnBtdV9jeHQtPmdsb2JhbF9jdHJsKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg ICAgICByZG1zcmwoTVNSX0NPUkVfUEVSRl9HTE9CQUxfQ1RSTCwgY29yZTJfdnBtdV9jeHQtPmds b2JhbF9jdHJsKTsKQEAgLTcwMSw3ICs3MDEsNyBAQCBzdGF0aWMgaW50IGNvcmUyX3ZwbXVfZG9f d3Jtc3IodW5zaWduZWQgaW50IG1zciwgdWludDY0X3QgbXNyX2NvbnRlbnQsCiAgICAgZWxzZQog ICAgIHsKICAgICAgICAgaWYgKCBpc19odm1fdmNwdSh2KSApCi0gICAgICAgICAgICB2bXhfd3Jp dGVfZ3Vlc3RfbXNyKE1TUl9DT1JFX1BFUkZfR0xPQkFMX0NUUkwsIG1zcl9jb250ZW50KTsKKyAg ICAgICAgICAgIHZteF93cml0ZV9ndWVzdF9tc3IodiwgTVNSX0NPUkVfUEVSRl9HTE9CQUxfQ1RS TCwgbXNyX2NvbnRlbnQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB3cm1zcmwoTVNSX0NP UkVfUEVSRl9HTE9CQUxfQ1RSTCwgbXNyX2NvbnRlbnQpOwogICAgIH0KQEAgLTczNSw3ICs3MzUs NyBAQCBzdGF0aWMgaW50IGNvcmUyX3ZwbXVfZG9fcmRtc3IodW5zaWduZWQgaW50IG1zciwgdWlu dDY0X3QgKm1zcl9jb250ZW50KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTVNS X0NPUkVfUEVSRl9HTE9CQUxfQ1RSTDoKICAgICAgICAgICAgIGlmICggaXNfaHZtX3ZjcHUodikg KQotICAgICAgICAgICAgICAgIHZteF9yZWFkX2d1ZXN0X21zcihNU1JfQ09SRV9QRVJGX0dMT0JB TF9DVFJMLCBtc3JfY29udGVudCk7CisgICAgICAgICAgICAgICAgdm14X3JlYWRfZ3Vlc3RfbXNy KHYsIE1TUl9DT1JFX1BFUkZfR0xPQkFMX0NUUkwsIG1zcl9jb250ZW50KTsKICAgICAgICAgICAg IGVsc2UKICAgICAgICAgICAgICAgICByZG1zcmwoTVNSX0NPUkVfUEVSRl9HTE9CQUxfQ1RSTCwg Km1zcl9jb250ZW50KTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L2h2bS92bXgvdm1jcy5jIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdm1jcy5jCmluZGV4IGU0 YWNkYzEuLjhiZjU0YzQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZtY3MuYwor KysgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNzLmMKQEAgLTEzMDEsMTMgKzEzMDEsMTUgQEAg c3RhdGljIHN0cnVjdCB2bXhfbXNyX2VudHJ5ICpsb2NhdGVfbXNyX2VudHJ5KAogICAgIHJldHVy biBzdGFydDsKIH0KIAotc3RydWN0IHZteF9tc3JfZW50cnkgKnZteF9maW5kX21zcih1aW50MzJf dCBtc3IsIGVudW0gdm14X21zcl9saXN0X3R5cGUgdHlwZSkKK3N0cnVjdCB2bXhfbXNyX2VudHJ5 ICp2bXhfZmluZF9tc3Ioc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IG1zciwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZW51bSB2bXhfbXNyX2xpc3RfdHlwZSB0eXBlKQogewot ICAgIHN0cnVjdCB2Y3B1ICpjdXJyID0gY3VycmVudDsKLSAgICBzdHJ1Y3QgYXJjaF92bXhfc3Ry dWN0ICphcmNoX3ZteCA9ICZjdXJyLT5hcmNoLmh2bV92bXg7CisgICAgc3RydWN0IGFyY2hfdm14 X3N0cnVjdCAqYXJjaF92bXggPSAmdi0+YXJjaC5odm1fdm14OwogICAgIHN0cnVjdCB2bXhfbXNy X2VudHJ5ICpzdGFydCA9IE5VTEwsICplbnQsICplbmQ7CiAgICAgdW5zaWduZWQgaW50IHRvdGFs OwogCisgICAgQVNTRVJUKHYgPT0gY3VycmVudCB8fCAhdmNwdV9ydW5uYWJsZSh2KSk7CisKICAg ICBzd2l0Y2ggKCB0eXBlICkKICAgICB7CiAgICAgY2FzZSBWTVhfTVNSX0hPU1Q6CkBAIC0xMzMz LDEyICsxMzM1LDE0IEBAIHN0cnVjdCB2bXhfbXNyX2VudHJ5ICp2bXhfZmluZF9tc3IodWludDMy X3QgbXNyLCBlbnVtIHZteF9tc3JfbGlzdF90eXBlIHR5cGUpCiAgICAgcmV0dXJuICgoZW50IDwg ZW5kKSAmJiAoZW50LT5pbmRleCA9PSBtc3IpKSA/IGVudCA6IE5VTEw7CiB9CiAKLWludCB2bXhf YWRkX21zcih1aW50MzJfdCBtc3IsIGVudW0gdm14X21zcl9saXN0X3R5cGUgdHlwZSkKK2ludCB2 bXhfYWRkX21zcihzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgbXNyLCBlbnVtIHZteF9tc3JfbGlz dF90eXBlIHR5cGUpCiB7Ci0gICAgc3RydWN0IHZjcHUgKmN1cnIgPSBjdXJyZW50OwotICAgIHN0 cnVjdCBhcmNoX3ZteF9zdHJ1Y3QgKmFyY2hfdm14ID0gJmN1cnItPmFyY2guaHZtX3ZteDsKKyAg ICBzdHJ1Y3QgYXJjaF92bXhfc3RydWN0ICphcmNoX3ZteCA9ICZ2LT5hcmNoLmh2bV92bXg7CiAg ICAgc3RydWN0IHZteF9tc3JfZW50cnkgKipwdHIsICpzdGFydCA9IE5VTEwsICplbnQsICplbmQ7 CiAgICAgdW5zaWduZWQgaW50IHRvdGFsOworICAgIGludCByYzsKKworICAgIEFTU0VSVCh2ID09 IGN1cnJlbnQgfHwgIXZjcHVfcnVubmFibGUodikpOwogCiAgICAgc3dpdGNoICggdHlwZSApCiAg ICAgewpAQCAtMTM1NywxMyArMTM2MSwxOCBAQCBpbnQgdm14X2FkZF9tc3IodWludDMyX3QgbXNy LCBlbnVtIHZteF9tc3JfbGlzdF90eXBlIHR5cGUpCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwog ICAgIH0KIAorICAgIHZteF92bWNzX2VudGVyKHYpOworCiAgICAgLyogQWxsb2NhdGUgbWVtb3J5 IG9uIGZpcnN0IHVzZS4gKi8KICAgICBpZiAoIHVubGlrZWx5KCEqcHRyKSApCiAgICAgewogICAg ICAgICBwYWRkcl90IGFkZHI7CiAKICAgICAgICAgaWYgKCAoKnB0ciA9IGFsbG9jX3hlbmhlYXBf cGFnZSgpKSA9PSBOVUxMICkKLSAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOworICAgICAgICB7 CisgICAgICAgICAgICByYyA9IC1FTk9NRU07CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAg ICAgfQogCiAgICAgICAgIGFkZHIgPSB2aXJ0X3RvX21hZGRyKCpwdHIpOwogCkBAIC0xMzg1LDEw ICsxMzk0LDE2IEBAIGludCB2bXhfYWRkX21zcih1aW50MzJfdCBtc3IsIGVudW0gdm14X21zcl9s aXN0X3R5cGUgdHlwZSkKICAgICBlbnQgICA9IGxvY2F0ZV9tc3JfZW50cnkoc3RhcnQsIGVuZCwg bXNyKTsKIAogICAgIGlmICggKGVudCA8IGVuZCkgJiYgKGVudC0+aW5kZXggPT0gbXNyKSApCi0g ICAgICAgIHJldHVybiAwOworICAgIHsKKyAgICAgICAgcmMgPSAwOworICAgICAgICBnb3RvIG91 dDsKKyAgICB9CiAKICAgICBpZiAoIHRvdGFsID09IChQQUdFX1NJWkUgLyBzaXplb2YoKmVudCkp ICkKLSAgICAgICAgcmV0dXJuIC1FTk9TUEM7CisgICAgeworICAgICAgICByYyA9IC1FTk9TUEM7 CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KIAogICAgIG1lbW1vdmUoZW50ICsgMSwgZW50LCBz aXplb2YoKmVudCkgKiAoZW5kIC0gZW50KSk7CiAKQEAgLTE0MDksNyArMTQyNCwxMiBAQCBpbnQg dm14X2FkZF9tc3IodWludDMyX3QgbXNyLCBlbnVtIHZteF9tc3JfbGlzdF90eXBlIHR5cGUpCiAg ICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJldHVybiAwOworICAgIHJjID0gMDsKKworIG91 dDoKKyAgICB2bXhfdm1jc19leGl0KHYpOworCisgICAgcmV0dXJuIHJjOwogfQogCiB2b2lkIHZt eF9zZXRfZW9pX2V4aXRfYml0bWFwKHN0cnVjdCB2Y3B1ICp2LCB1OCB2ZWN0b3IpCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3Zt eC5jCmluZGV4IDEyM2RjY2IuLjM5NTBiMTIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0v dm14L3ZteC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCkBAIC0yODE4LDcgKzI4 MTgsNyBAQCBzdGF0aWMgaW50IGlzX2xhc3RfYnJhbmNoX21zcih1MzIgZWN4KQogCiBzdGF0aWMg aW50IHZteF9tc3JfcmVhZF9pbnRlcmNlcHQodW5zaWduZWQgaW50IG1zciwgdWludDY0X3QgKm1z cl9jb250ZW50KQogewotICAgIGNvbnN0IHN0cnVjdCB2Y3B1ICpjdXJyID0gY3VycmVudDsKKyAg ICBzdHJ1Y3QgdmNwdSAqY3VyciA9IGN1cnJlbnQ7CiAKICAgICBIVk1fREJHX0xPRyhEQkdfTEVW RUxfTVNSLCAiZWN4PSUjeCIsIG1zcik7CiAKQEAgLTI4OTcsNyArMjg5Nyw3IEBAIHN0YXRpYyBp bnQgdm14X21zcl9yZWFkX2ludGVyY2VwdCh1bnNpZ25lZCBpbnQgbXNyLCB1aW50NjRfdCAqbXNy X2NvbnRlbnQpCiAgICAgICAgIGlmICggcGFzc2l2ZV9kb21haW5fZG9fcmRtc3IobXNyLCBtc3Jf Y29udGVudCkgKQogICAgICAgICAgICAgZ290byBkb25lOwogCi0gICAgICAgIGlmICggdm14X3Jl YWRfZ3Vlc3RfbXNyKG1zciwgbXNyX2NvbnRlbnQpID09IDAgKQorICAgICAgICBpZiAoIHZteF9y ZWFkX2d1ZXN0X21zcihjdXJyLCBtc3IsIG1zcl9jb250ZW50KSA9PSAwICkKICAgICAgICAgICAg IGJyZWFrOwogCiAgICAgICAgIGlmICggaXNfbGFzdF9icmFuY2hfbXNyKG1zcikgKQpAQCAtMzEw OSw3ICszMTA5LDcgQEAgc3RhdGljIGludCB2bXhfbXNyX3dyaXRlX2ludGVyY2VwdCh1bnNpZ25l ZCBpbnQgbXNyLCB1aW50NjRfdCBtc3JfY29udGVudCkKIAogICAgICAgICAgICAgZm9yICggOyAo cmMgPT0gMCkgJiYgbGJyLT5jb3VudDsgbGJyKysgKQogICAgICAgICAgICAgICAgIGZvciAoIGkg PSAwOyAocmMgPT0gMCkgJiYgKGkgPCBsYnItPmNvdW50KTsgaSsrICkKLSAgICAgICAgICAgICAg ICAgICAgaWYgKCAocmMgPSB2bXhfYWRkX2d1ZXN0X21zcihsYnItPmJhc2UgKyBpKSkgPT0gMCAp CisgICAgICAgICAgICAgICAgICAgIGlmICggKHJjID0gdm14X2FkZF9ndWVzdF9tc3IodiwgbGJy LT5iYXNlICsgaSkpID09IDAgKQogICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg ICAgICAgICAgICB2bXhfY2xlYXJfbXNyX2ludGVyY2VwdCh2LCBsYnItPmJhc2UgKyBpLCBWTVhf TVNSX1JXKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbGJyX3RzeF9maXh1cF9uZWVk ZWQgKQpAQCAtMzEyMSw3ICszMTIxLDcgQEAgc3RhdGljIGludCB2bXhfbXNyX3dyaXRlX2ludGVy Y2VwdCh1bnNpZ25lZCBpbnQgbXNyLCB1aW50NjRfdCBtc3JfY29udGVudCkKICAgICAgICAgfQog CiAgICAgICAgIGlmICggKHJjIDwgMCkgfHwKLSAgICAgICAgICAgICAobXNyX2NvbnRlbnQgJiYg KHZteF9hZGRfaG9zdF9sb2FkX21zcihtc3IpIDwgMCkpICkKKyAgICAgICAgICAgICAobXNyX2Nv bnRlbnQgJiYgKHZteF9hZGRfaG9zdF9sb2FkX21zcih2LCBtc3IpIDwgMCkpICkKICAgICAgICAg ICAgIGh2bV9pbmplY3RfaHdfZXhjZXB0aW9uKFRSQVBfbWFjaGluZV9jaGVjaywgWDg2X0VWRU5U X05PX0VDKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgX192bXdyaXRlKEdVRVNUX0lBMzJf REVCVUdDVEwsIG1zcl9jb250ZW50KTsKQEAgLTMxNTAsNyArMzE1MCw3IEBAIHN0YXRpYyBpbnQg dm14X21zcl93cml0ZV9pbnRlcmNlcHQodW5zaWduZWQgaW50IG1zciwgdWludDY0X3QgbXNyX2Nv bnRlbnQpCiAgICAgICAgIGlmICggd3Jtc3JfdmlyaWRpYW5fcmVncyhtc3IsIG1zcl9jb250ZW50 KSApIAogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgaWYgKCB2bXhfd3JpdGVfZ3Vlc3Rf bXNyKG1zciwgbXNyX2NvbnRlbnQpID09IDAgfHwKKyAgICAgICAgaWYgKCB2bXhfd3JpdGVfZ3Vl c3RfbXNyKHYsIG1zciwgbXNyX2NvbnRlbnQpID09IDAgfHwKICAgICAgICAgICAgICBpc19sYXN0 X2JyYW5jaF9tc3IobXNyKSApCiAgICAgICAgICAgICBicmVhazsKIApAQCAtNDE2NSw3ICs0MTY1 LDcgQEAgc3RhdGljIHZvaWQgbGJyX3RzeF9maXh1cCh2b2lkKQogICAgIHN0cnVjdCB2bXhfbXNy X2VudHJ5ICptc3JfYXJlYSA9IGN1cnItPmFyY2guaHZtX3ZteC5tc3JfYXJlYTsKICAgICBzdHJ1 Y3Qgdm14X21zcl9lbnRyeSAqbXNyOwogCi0gICAgaWYgKCAobXNyID0gdm14X2ZpbmRfbXNyKGxi cl9mcm9tX3N0YXJ0LCBWTVhfTVNSX0dVRVNUKSkgIT0gTlVMTCApCisgICAgaWYgKCAobXNyID0g dm14X2ZpbmRfbXNyKGN1cnIsIGxicl9mcm9tX3N0YXJ0LCBWTVhfTVNSX0dVRVNUKSkgIT0gTlVM TCApCiAgICAgewogICAgICAgICAvKgogICAgICAgICAgKiBTaWduIGV4dGVuZCBpbnRvIGJpdHMg NjE6NjIgd2hpbGUgcHJlc2VydmluZyBiaXQgNjMKQEAgLTQxNzUsMTUgKzQxNzUsMTUgQEAgc3Rh dGljIHZvaWQgbGJyX3RzeF9maXh1cCh2b2lkKQogICAgICAgICAgICAgbXNyLT5kYXRhIHw9ICgo TEJSX0ZST01fU0lHTkVYVF8yTVNCICYgbXNyLT5kYXRhKSA8PCAyKTsKICAgICB9CiAKLSAgICBp ZiAoIChtc3IgPSB2bXhfZmluZF9tc3IobGJyX2xhc3RpbnRfZnJvbSwgVk1YX01TUl9HVUVTVCkp ICE9IE5VTEwgKQorICAgIGlmICggKG1zciA9IHZteF9maW5kX21zcihjdXJyLCBsYnJfbGFzdGlu dF9mcm9tLCBWTVhfTVNSX0dVRVNUKSkgIT0gTlVMTCApCiAgICAgICAgIG1zci0+ZGF0YSB8PSAo KExCUl9GUk9NX1NJR05FWFRfMk1TQiAmIG1zci0+ZGF0YSkgPDwgMik7CiB9CiAKLXN0YXRpYyB2 b2lkIHNpZ25fZXh0ZW5kX21zcih1MzIgbXNyLCBpbnQgdHlwZSkKK3N0YXRpYyB2b2lkIHNpZ25f ZXh0ZW5kX21zcihzdHJ1Y3QgdmNwdSAqdiwgdTMyIG1zciwgaW50IHR5cGUpCiB7CiAgICAgc3Ry dWN0IHZteF9tc3JfZW50cnkgKmVudHJ5OwogCi0gICAgaWYgKCAoZW50cnkgPSB2bXhfZmluZF9t c3IobXNyLCB0eXBlKSkgIT0gTlVMTCApCisgICAgaWYgKCAoZW50cnkgPSB2bXhfZmluZF9tc3Io diwgbXNyLCB0eXBlKSkgIT0gTlVMTCApCiAgICAgewogICAgICAgICBpZiAoIGVudHJ5LT5kYXRh ICYgVkFERFJfVE9QX0JJVCApCiAgICAgICAgICAgICBlbnRyeS0+ZGF0YSB8PSBDQU5PTklDQUxf TUFTSzsKQEAgLTQxOTQsNiArNDE5NCw4IEBAIHN0YXRpYyB2b2lkIHNpZ25fZXh0ZW5kX21zcih1 MzIgbXNyLCBpbnQgdHlwZSkKIAogc3RhdGljIHZvaWQgYmR3X2VycmF0dW1fYmRmMTRfZml4dXAo dm9pZCkKIHsKKyAgICBzdHJ1Y3QgdmNwdSAqY3VyciA9IGN1cnJlbnQ7CisKICAgICAvKgogICAg ICAqIE9jY2FzaW9uYWxseSwgb24gY2VydGFpbiBCcm9hZHdlbGwgQ1BVcyBNU1JfSUEzMl9MQVNU SU5UVE9JUCBoYXMKICAgICAgKiBiZWVuIG9ic2VydmVkIHRvIGhhdmUgdGhlIHRvcCB0aHJlZSBi aXRzIGNvcnJ1cHRlZCBhcyB0aG91Z2ggdGhlCkBAIC00MjAzLDggKzQyMDUsOCBAQCBzdGF0aWMg dm9pZCBiZHdfZXJyYXR1bV9iZGYxNF9maXh1cCh2b2lkKQogICAgICAqIGVycmF0dW0gQkRGMTQu IEZpeCB1cCBNU1JfSUEzMl9MQVNUSU5Ue0ZST00sVE99SVAgYnkKICAgICAgKiBzaWduLWV4dGVu ZGluZyBpbnRvIGJpdHMgNDg6NjMuCiAgICAgICovCi0gICAgc2lnbl9leHRlbmRfbXNyKE1TUl9J QTMyX0xBU1RJTlRGUk9NSVAsIFZNWF9NU1JfR1VFU1QpOwotICAgIHNpZ25fZXh0ZW5kX21zcihN U1JfSUEzMl9MQVNUSU5UVE9JUCwgVk1YX01TUl9HVUVTVCk7CisgICAgc2lnbl9leHRlbmRfbXNy KGN1cnIsIE1TUl9JQTMyX0xBU1RJTlRGUk9NSVAsIFZNWF9NU1JfR1VFU1QpOworICAgIHNpZ25f ZXh0ZW5kX21zcihjdXJyLCBNU1JfSUEzMl9MQVNUSU5UVE9JUCwgVk1YX01TUl9HVUVTVCk7CiB9 CiAKIHN0YXRpYyB2b2lkIGxicl9maXh1cCh2b2lkKQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUv YXNtLXg4Ni9odm0vdm14L3ZtY3MuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZteC92bWNz LmgKaW5kZXggYzhhMWY4OS4uZjY2ZjEyMSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4 Ni9odm0vdm14L3ZtY3MuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92bXgvdm1jcy5o CkBAIC0xMzAsMTAgKzEzMCwxNyBAQCBzdHJ1Y3QgYXJjaF92bXhfc3RydWN0IHsKICAgICB1aW50 NjRfdCAgICAgICAgICAgICBzZm1hc2s7CiAKICAgICBzdHJ1Y3Qgdm14X21zcl9iaXRtYXAgKm1z cl9iaXRtYXA7Ci0gICAgdW5zaWduZWQgaW50ICAgICAgICAgbXNyX2NvdW50OworCisgICAgLyoK KyAgICAgKiBNb3N0IGFjY2Vzc2VzIHRvIHRoZSBNU1IgaG9zdC9ndWVzdCBsb2FkL3NhdmUgbGlz dHMgYXJlIGluIGN1cnJlbnQKKyAgICAgKiBjb250ZXh0LiAgSG93ZXZlciwgdGhlIGRhdGEgY2Fu IGJlIG1vZGlmaWVkIGJ5IHRvb2xzdGFjay9taWdyYXRpb24KKyAgICAgKiBhY3Rpb25zLiAgUmVt b3RlIGFjY2VzcyBpcyBvbmx5IHBlcm1pdHRlZCBmb3IgcGF1c2VkIHZjcHVzLCBhbmQgaXMKKyAg ICAgKiBwcm90ZWN0ZWQgdW5kZXIgdGhlIGRvbWN0bCBsb2NrLgorICAgICAqLwogICAgIHN0cnVj dCB2bXhfbXNyX2VudHJ5ICptc3JfYXJlYTsKLSAgICB1bnNpZ25lZCBpbnQgICAgICAgICBob3N0 X21zcl9jb3VudDsKICAgICBzdHJ1Y3Qgdm14X21zcl9lbnRyeSAqaG9zdF9tc3JfYXJlYTsKKyAg ICB1bnNpZ25lZCBpbnQgICAgICAgICBtc3JfY291bnQ7CisgICAgdW5zaWduZWQgaW50ICAgICAg ICAgaG9zdF9tc3JfY291bnQ7CiAKICAgICB1bnNpZ25lZCBsb25nICAgICAgICBlb2lfZXhpdG1h cF9jaGFuZ2VkOwogICAgIERFQ0xBUkVfQklUTUFQKGVvaV9leGl0X2JpdG1hcCwgTlJfVkVDVE9S Uyk7CkBAIC01MzcsMjUgKzU0NCwyNyBAQCBlbnVtIHZteF9tc3JfbGlzdF90eXBlIHsKICAgICBW TVhfTVNSX0dVRVNULAogfTsKIAotaW50IHZteF9hZGRfbXNyKHVpbnQzMl90IG1zciwgZW51bSB2 bXhfbXNyX2xpc3RfdHlwZSB0eXBlKTsKK2ludCB2bXhfYWRkX21zcihzdHJ1Y3QgdmNwdSAqdiwg dWludDMyX3QgbXNyLCBlbnVtIHZteF9tc3JfbGlzdF90eXBlIHR5cGUpOwogCi1zdGF0aWMgaW5s aW5lIGludCB2bXhfYWRkX2hvc3RfbG9hZF9tc3IodWludDMyX3QgbXNyKQorc3RhdGljIGlubGlu ZSBpbnQgdm14X2FkZF9ndWVzdF9tc3Ioc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IG1zcikKIHsK LSAgICByZXR1cm4gdm14X2FkZF9tc3IobXNyLCBWTVhfTVNSX0hPU1QpOworICAgIHJldHVybiB2 bXhfYWRkX21zcih2LCBtc3IsIFZNWF9NU1JfR1VFU1QpOwogfQogCi1zdGF0aWMgaW5saW5lIGlu dCB2bXhfYWRkX2d1ZXN0X21zcih1aW50MzJfdCBtc3IpCitzdGF0aWMgaW5saW5lIGludCB2bXhf YWRkX2hvc3RfbG9hZF9tc3Ioc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IG1zcikKIHsKLSAgICBy ZXR1cm4gdm14X2FkZF9tc3IobXNyLCBWTVhfTVNSX0dVRVNUKTsKKyAgICByZXR1cm4gdm14X2Fk ZF9tc3IodiwgbXNyLCBWTVhfTVNSX0hPU1QpOwogfQogCi1zdHJ1Y3Qgdm14X21zcl9lbnRyeSAq dm14X2ZpbmRfbXNyKHVpbnQzMl90IG1zciwgZW51bSB2bXhfbXNyX2xpc3RfdHlwZSB0eXBlKTsK K3N0cnVjdCB2bXhfbXNyX2VudHJ5ICp2bXhfZmluZF9tc3Ioc3RydWN0IHZjcHUgKnYsIHVpbnQz Ml90IG1zciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSB2bXhfbXNy X2xpc3RfdHlwZSB0eXBlKTsKIAotc3RhdGljIGlubGluZSBpbnQgdm14X3JlYWRfZ3Vlc3RfbXNy KHVpbnQzMl90IG1zciwgdWludDY0X3QgKnZhbCkKK3N0YXRpYyBpbmxpbmUgaW50IHZteF9yZWFk X2d1ZXN0X21zcihzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgbXNyLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90ICp2YWwpCiB7CiAgICAgc3RydWN0IHZteF9t c3JfZW50cnkgKmVudDsKIAotICAgIGlmICggKGVudCA9IHZteF9maW5kX21zcihtc3IsIFZNWF9N U1JfR1VFU1QpKSApCisgICAgaWYgKCAoZW50ID0gdm14X2ZpbmRfbXNyKHYsIG1zciwgVk1YX01T Ul9HVUVTVCkpICkKICAgICB7CiAgICAgICAgICp2YWwgPSBlbnQtPmRhdGE7CiAgICAgICAgIHJl dHVybiAwOwpAQCAtNTY0LDExICs1NzMsMTIgQEAgc3RhdGljIGlubGluZSBpbnQgdm14X3JlYWRf Z3Vlc3RfbXNyKHVpbnQzMl90IG1zciwgdWludDY0X3QgKnZhbCkKICAgICByZXR1cm4gLUVTUkNI OwogfQogCi1zdGF0aWMgaW5saW5lIGludCB2bXhfd3JpdGVfZ3Vlc3RfbXNyKHVpbnQzMl90IG1z ciwgdWludDY0X3QgdmFsKQorc3RhdGljIGlubGluZSBpbnQgdm14X3dyaXRlX2d1ZXN0X21zcihz dHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgbXNyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50NjRfdCB2YWwpCiB7CiAgICAgc3RydWN0IHZteF9tc3JfZW50cnkgKmVu dDsKIAotICAgIGlmICggKGVudCA9IHZteF9maW5kX21zcihtc3IsIFZNWF9NU1JfR1VFU1QpKSAp CisgICAgaWYgKCAoZW50ID0gdm14X2ZpbmRfbXNyKHYsIG1zciwgVk1YX01TUl9HVUVTVCkpICkK ICAgICB7CiAgICAgICAgIGVudC0+ZGF0YSA9IHZhbDsKICAgICAgICAgcmV0dXJuIDA7Ci0tIAoy LjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=