From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v2 1/5] x86/hvm: Handle viridian MSRs via the new guest_{rd, wr}msr() infrastructure Date: Wed, 7 Mar 2018 18:58:32 +0000 Message-ID: <1520449116-15443-2-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 , Wei Liu , Jan Beulich , Sergey Dyasli List-Id: xen-devel@lists.xenproject.org RGlzcGF0Y2ggZnJvbSB0aGUgZ3Vlc3Rfe3JkLHdyfW1zcigpIGZ1bmN0aW9ucywgYWZ0ZXIgY29u ZmlybWluZyB0aGF0IHRoZQpkb21haW4gaXMgY29uZmlndXJlZCB0byB1c2UgdmlyaWRpYW4uICBU aGlzIGFsbG93cyBmb3Igc2ltcGxpZmljdGlvbiBvZiB0aGUKdmlyaWRpYW4gaGVscGVycyBhcyB0 aGV5IGRvbid0IG5lZWQgdG8gY29wZSB3aXRoIHRoZSAibm90IGEgdmlyaWRpYW4gTVNSIgpjYXNl LiAgSXQgYWxzbyBtZWFucyB0aGF0IHZpcmlkaWFuIE1TUnMgd2hpY2ggYXJlIHVuaW1wbGVtZW50 ZWQsIG9yIGV4Y2x1ZGVkCmJlY2F1c2Ugb2YgZmVhdHVyZXMsIGRvbid0IGZhbGwgYmFjayBpbnRv IGRlZmF1bHQgaGFuZGxpbmcgcGF0aC4KClJlbmFtZSB7cmQsd3J9bXNyX3ZpcmlkaWFuX3JlZ3Mo KSB0byBndWVzdF97cmQsd3J9bXNyX3ZpcmlkaWFuKCkgZm9yCmNvbnNpc3RlbmN5LCBhbmQgYmVj YXVzZSB0aGUgX3JlZ3Mgc3VmZml4IGlzbid0IHZlcnkgYXBwcm9wcmlhdGUuCgpVcGRhdGUgdGhl bSB0byB0YWtlIGEgdmNwdSBwb2ludGVyIHJhdGhlciB0aGFuIHByZXN1bWluZyB0aGF0IHRoZXkg YWN0IG9uCmN1cnJlbnQsIHdoaWNoIGlzIHNhZmUgZm9yIGFsbCBpbXBsZW1lbnRlZCBvcGVyYXRp b25zLiAgQWxzbyB1cGRhdGUgdGhlbSB0bwp1c2UgWDg2RU1VTF8qIHJldHVybiB2YWx1ZXMuCgpT aWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgpS ZXZpZXdlZC1ieTogQm9yaXMgT3N0cm92c2t5IDxib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbT4K UmV2aWV3ZWQtYnk6IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPgpSZXZpZXdlZC1i eTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KUmV2aWV3ZWQtYnk6IFJv Z2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgotLS0KQ0M6IEphbiBCZXVsaWNo IDxKQmV1bGljaEBzdXNlLmNvbT4KQ0M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+CkND OiBTZXJnZXkgRHlhc2xpIDxzZXJnZXkuZHlhc2xpQGNpdHJpeC5jb20+Cgp2MjoKICogSW50cm9k dWNlIHNvbWUgY29uc3RhbnRzIGZvciB0aGUgaHlwZXJ2aXNvciByYW5nZS4gIEhvd2V2ZXIsIEkg ZG8gbm90IHRoaW5rCiAgIHRoZSBjdXJyZW50IGNvZGUgaXMgYW4gaW1wcm92ZW1lbnQgb3ZlciBi YXJlIG51bWJlcnMuCi0tLQogeGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMgICAgICAgICB8ICA2 ICstLS0tCiB4ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuLmMgICAgICAgIHwgNTIgKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5j ICAgICAgICAgfCAgNiArLS0tLQogeGVuL2FyY2gveDg2L21zci5jICAgICAgICAgICAgICAgICB8 IDQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9o dm0vdmlyaWRpYW4uaCB8IDExICsrLS0tLS0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L21zci1pbmRl eC5oICAgIHwgIDQgKysrCiA2IGZpbGVzIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyksIDUyIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5jIGIveGVu L2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMKaW5kZXggYzM0ZjViNS4uZThhYzJkOCAxMDA2NDQKLS0t IGEveGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9zdm0v c3ZtLmMKQEAgLTE5NjYsOCArMTk2Niw3IEBAIHN0YXRpYyBpbnQgc3ZtX21zcl9yZWFkX2ludGVy Y2VwdCh1bnNpZ25lZCBpbnQgbXNyLCB1aW50NjRfdCAqbXNyX2NvbnRlbnQpCiAgICAgICAgIGVs c2UgaWYgKCByZXQgKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgaWYgKCByZG1zcl92 aXJpZGlhbl9yZWdzKG1zciwgbXNyX2NvbnRlbnQpIHx8Ci0gICAgICAgICAgICAgcmRtc3JfaHlw ZXJ2aXNvcl9yZWdzKG1zciwgbXNyX2NvbnRlbnQpICkKKyAgICAgICAgaWYgKCByZG1zcl9oeXBl cnZpc29yX3JlZ3MobXNyLCBtc3JfY29udGVudCkgKQogICAgICAgICAgICAgYnJlYWs7CiAKICAg ICAgICAgaWYgKCByZG1zcl9zYWZlKG1zciwgKm1zcl9jb250ZW50KSA9PSAwICkKQEAgLTIxMjIs OSArMjEyMSw2IEBAIHN0YXRpYyBpbnQgc3ZtX21zcl93cml0ZV9pbnRlcmNlcHQodW5zaWduZWQg aW50IG1zciwgdWludDY0X3QgbXNyX2NvbnRlbnQpCiAgICAgICAgIGVsc2UgaWYgKCByZXQgKQog ICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgaWYgKCB3cm1zcl92aXJpZGlhbl9yZWdzKG1z ciwgbXNyX2NvbnRlbnQpICkKLSAgICAgICAgICAgIGJyZWFrOwotCiAgICAgICAgIHN3aXRjaCAo IHdybXNyX2h5cGVydmlzb3JfcmVncyhtc3IsIG1zcl9jb250ZW50KSApCiAgICAgICAgIHsKICAg ICAgICAgY2FzZSAtRVJFU1RBUlQ6CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3Zpcmlk aWFuLmMgYi94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuLmMKaW5kZXggNzBhYWI1Mi4uMDc0ZDky MCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi5jCisrKyBiL3hlbi9hcmNo L3g4Ni9odm0vdmlyaWRpYW4uYwpAQCAtODgsOSArODgsNiBAQAogI2RlZmluZSBIVl9YNjRfTVNS X0NSQVNIX1A0ICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAxMDQKICNkZWZpbmUgSFZfWDY0 X01TUl9DUkFTSF9DVEwgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMTA1CiAKLSNkZWZpbmUg VklSSURJQU5fTVNSX01JTiBIVl9YNjRfTVNSX0dVRVNUX09TX0lECi0jZGVmaW5lIFZJUklESUFO X01TUl9NQVggSFZfWDY0X01TUl9DUkFTSF9DVEwKLQogLyogVmlyaWRpYW4gSHlwZXJjYWxsIFN0 YXR1cyBDb2Rlcy4gKi8KICNkZWZpbmUgSFZfU1RBVFVTX1NVQ0NFU1MgICAgICAgICAgICAgICAg ICAgICAgIDB4MDAwMAogI2RlZmluZSBIVl9TVEFUVVNfSU5WQUxJRF9IWVBFUkNBTExfQ09ERSAg ICAgICAgMHgwMDAyCkBAIC01NTQsMTMgKzU1MSwxMSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfcmVm ZXJlbmNlX3RzYyhzdHJ1Y3QgZG9tYWluICpkLCBib29sX3QgaW5pdGlhbGl6ZSkKICAgICBwdXRf cGFnZV9hbmRfdHlwZShwYWdlKTsKIH0KIAotaW50IHdybXNyX3ZpcmlkaWFuX3JlZ3ModWludDMy X3QgaWR4LCB1aW50NjRfdCB2YWwpCitpbnQgZ3Vlc3Rfd3Jtc3JfdmlyaWRpYW4oc3RydWN0IHZj cHUgKnYsIHVpbnQzMl90IGlkeCwgdWludDY0X3QgdmFsKQogewotICAgIHN0cnVjdCB2Y3B1ICp2 ID0gY3VycmVudDsKICAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOwogCi0gICAgaWYg KCAhaXNfdmlyaWRpYW5fZG9tYWluKGQpICkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgQVNTRVJU KGlzX3ZpcmlkaWFuX2RvbWFpbihkKSk7CiAKICAgICBzd2l0Y2ggKCBpZHggKQogICAgIHsKQEAg LTYxNSw3ICs2MTAsNyBAQCBpbnQgd3Jtc3JfdmlyaWRpYW5fcmVncyh1aW50MzJfdCBpZHgsIHVp bnQ2NF90IHZhbCkKIAogICAgIGNhc2UgSFZfWDY0X01TUl9SRUZFUkVOQ0VfVFNDOgogICAgICAg ICBpZiAoICEodmlyaWRpYW5fZmVhdHVyZV9tYXNrKGQpICYgSFZNUFZfcmVmZXJlbmNlX3RzYykg KQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBnb3RvIGdwX2ZhdWx0OwogCiAg ICAgICAgIHBlcmZjX2luY3IobXNodl93cm1zcl90c2NfbXNyKTsKICAgICAgICAgZC0+YXJjaC5o dm1fZG9tYWluLnZpcmlkaWFuLnJlZmVyZW5jZV90c2MucmF3ID0gdmFsOwpAQCAtNjU1LDE0ICs2 NTAsMTUgQEAgaW50IHdybXNyX3ZpcmlkaWFuX3JlZ3ModWludDMyX3QgaWR4LCB1aW50NjRfdCB2 YWwpCiAgICAgfQogCiAgICAgZGVmYXVsdDoKLSAgICAgICAgaWYgKCBpZHggPj0gVklSSURJQU5f TVNSX01JTiAmJiBpZHggPD0gVklSSURJQU5fTVNSX01BWCApCi0gICAgICAgICAgICBncHJpbnRr KFhFTkxPR19XQVJOSU5HLCAid3JpdGUgdG8gdW5pbXBsZW1lbnRlZCBNU1IgJSN4XG4iLAotICAg ICAgICAgICAgICAgICAgICBpZHgpOwotCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBnZHBy aW50ayhYRU5MT0dfV0FSTklORywKKyAgICAgICAgICAgICAgICAgIldyaXRlICUwMTYiUFJJeDY0 IiB0byB1bmltcGxlbWVudGVkIE1TUiAlI3hcbiIsIHZhbCwgaWR4KTsKKyAgICAgICAgZ290byBn cF9mYXVsdDsKICAgICB9CiAKLSAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gWDg2RU1VTF9PS0FZ OworCisgZ3BfZmF1bHQ6CisgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOwogfQogCiBzdGF0 aWMgaW50NjRfdCByYXdfdHJjX3ZhbChzdHJ1Y3QgZG9tYWluICpkKQpAQCAtNjk4LDEzICs2OTQs MTEgQEAgdm9pZCB2aXJpZGlhbl90aW1lX3JlZl9jb3VudF90aGF3KHN0cnVjdCBkb21haW4gKmQp CiAgICAgICAgIHRyYy0+b2ZmID0gKGludDY0X3QpdHJjLT52YWwgLSByYXdfdHJjX3ZhbChkKTsK IH0KIAotaW50IHJkbXNyX3ZpcmlkaWFuX3JlZ3ModWludDMyX3QgaWR4LCB1aW50NjRfdCAqdmFs KQoraW50IGd1ZXN0X3JkbXNyX3ZpcmlkaWFuKGNvbnN0IHN0cnVjdCB2Y3B1ICp2LCB1aW50MzJf dCBpZHgsIHVpbnQ2NF90ICp2YWwpCiB7Ci0gICAgc3RydWN0IHZjcHUgKnYgPSBjdXJyZW50Owog ICAgIHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47Ci0gICAgCi0gICAgaWYgKCAhaXNfdmly aWRpYW5fZG9tYWluKGQpICkKLSAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBU1NFUlQoaXNfdmly aWRpYW5fZG9tYWluKGQpKTsKIAogICAgIHN3aXRjaCAoIGlkeCApCiAgICAgewpAQCAtNzI1LDcg KzcxOSw3IEBAIGludCByZG1zcl92aXJpZGlhbl9yZWdzKHVpbnQzMl90IGlkeCwgdWludDY0X3Qg KnZhbCkKIAogICAgIGNhc2UgSFZfWDY0X01TUl9UU0NfRlJFUVVFTkNZOgogICAgICAgICBpZiAo IHZpcmlkaWFuX2ZlYXR1cmVfbWFzayhkKSAmIEhWTVBWX25vX2ZyZXEgKQotICAgICAgICAgICAg cmV0dXJuIDA7CisgICAgICAgICAgICBnb3RvIGdwX2ZhdWx0OwogCiAgICAgICAgIHBlcmZjX2lu Y3IobXNodl9yZG1zcl90c2NfZnJlcXVlbmN5KTsKICAgICAgICAgKnZhbCA9ICh1aW50NjRfdClk LT5hcmNoLnRzY19raHogKiAxMDAwdWxsOwpAQCAtNzMzLDcgKzcyNyw3IEBAIGludCByZG1zcl92 aXJpZGlhbl9yZWdzKHVpbnQzMl90IGlkeCwgdWludDY0X3QgKnZhbCkKIAogICAgIGNhc2UgSFZf WDY0X01TUl9BUElDX0ZSRVFVRU5DWToKICAgICAgICAgaWYgKCB2aXJpZGlhbl9mZWF0dXJlX21h c2soZCkgJiBIVk1QVl9ub19mcmVxICkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAg ICAgZ290byBncF9mYXVsdDsKIAogICAgICAgICBwZXJmY19pbmNyKG1zaHZfcmRtc3JfYXBpY19m cmVxdWVuY3kpOwogICAgICAgICAqdmFsID0gMTAwMDAwMDAwMHVsbCAvIEFQSUNfQlVTX0NZQ0xF X05TOwpAQCAtNzU3LDcgKzc1MSw3IEBAIGludCByZG1zcl92aXJpZGlhbl9yZWdzKHVpbnQzMl90 IGlkeCwgdWludDY0X3QgKnZhbCkKIAogICAgIGNhc2UgSFZfWDY0X01TUl9SRUZFUkVOQ0VfVFND OgogICAgICAgICBpZiAoICEodmlyaWRpYW5fZmVhdHVyZV9tYXNrKGQpICYgSFZNUFZfcmVmZXJl bmNlX3RzYykgKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBnb3RvIGdwX2Zh dWx0OwogCiAgICAgICAgIHBlcmZjX2luY3IobXNodl9yZG1zcl90c2NfbXNyKTsKICAgICAgICAg KnZhbCA9IGQtPmFyY2guaHZtX2RvbWFpbi52aXJpZGlhbi5yZWZlcmVuY2VfdHNjLnJhdzsKQEAg LTc3MCw3ICs3NjQsNyBAQCBpbnQgcmRtc3JfdmlyaWRpYW5fcmVncyh1aW50MzJfdCBpZHgsIHVp bnQ2NF90ICp2YWwpCiAgICAgICAgIHRyYyA9ICZkLT5hcmNoLmh2bV9kb21haW4udmlyaWRpYW4u dGltZV9yZWZfY291bnQ7CiAKICAgICAgICAgaWYgKCAhKHZpcmlkaWFuX2ZlYXR1cmVfbWFzayhk KSAmIEhWTVBWX3RpbWVfcmVmX2NvdW50KSApCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg ICAgICAgIGdvdG8gZ3BfZmF1bHQ7CiAKICAgICAgICAgaWYgKCAhdGVzdF9hbmRfc2V0X2JpdChf VFJDX2FjY2Vzc2VkLCAmdHJjLT5mbGFncykgKQogICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19H X0lORk8gImQlZDogVklSSURJQU4gTVNSX1RJTUVfUkVGX0NPVU5UOiBhY2Nlc3NlZFxuIiwKQEAg LTgwNCwxNCArNzk4LDE0IEBAIGludCByZG1zcl92aXJpZGlhbl9yZWdzKHVpbnQzMl90IGlkeCwg dWludDY0X3QgKnZhbCkKICAgICB9CiAKICAgICBkZWZhdWx0OgotICAgICAgICBpZiAoIGlkeCA+ PSBWSVJJRElBTl9NU1JfTUlOICYmIGlkeCA8PSBWSVJJRElBTl9NU1JfTUFYICkKLSAgICAgICAg ICAgIGdwcmludGsoWEVOTE9HX1dBUk5JTkcsICJyZWFkIGZyb20gdW5pbXBsZW1lbnRlZCBNU1Ig JSN4XG4iLAotICAgICAgICAgICAgICAgICAgICBpZHgpOwotCi0gICAgICAgIHJldHVybiAwOwor ICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywgIlJlYWQgZnJvbSB1bmltcGxlbWVudGVk IE1TUiAlI3hcbiIsIGlkeCk7CisgICAgICAgIGdvdG8gZ3BfZmF1bHQ7CiAgICAgfQogCi0gICAg cmV0dXJuIDE7CisgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsKKworIGdwX2ZhdWx0OgorICAgIHJl dHVybiBYODZFTVVMX0VYQ0VQVElPTjsKIH0KIAogdm9pZCB2aXJpZGlhbl92Y3B1X2RlaW5pdChz dHJ1Y3QgdmNwdSAqdikKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jIGIv eGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMKaW5kZXggMThkOGNlMi4uNWZjMjFhNSAxMDA2NDQK LS0tIGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS92 bXgvdm14LmMKQEAgLTI5MDksOCArMjkwOSw3IEBAIHN0YXRpYyBpbnQgdm14X21zcl9yZWFkX2lu dGVyY2VwdCh1bnNpZ25lZCBpbnQgbXNyLCB1aW50NjRfdCAqbXNyX2NvbnRlbnQpCiAgICAgICAg ICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGlmICggcmRtc3JfdmlyaWRpYW5fcmVn cyhtc3IsIG1zcl9jb250ZW50KSB8fAotICAgICAgICAgICAgIHJkbXNyX2h5cGVydmlzb3JfcmVn cyhtc3IsIG1zcl9jb250ZW50KSApCisgICAgICAgIGlmICggcmRtc3JfaHlwZXJ2aXNvcl9yZWdz KG1zciwgbXNyX2NvbnRlbnQpICkKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGlmICgg cmRtc3Jfc2FmZShtc3IsICptc3JfY29udGVudCkgPT0gMCApCkBAIC0zMTUwLDkgKzMxNDksNiBA QCBzdGF0aWMgaW50IHZteF9tc3Jfd3JpdGVfaW50ZXJjZXB0KHVuc2lnbmVkIGludCBtc3IsIHVp bnQ2NF90IG1zcl9jb250ZW50KQogICAgICAgICBpZiAoIHBhc3NpdmVfZG9tYWluX2RvX3dybXNy KG1zciwgbXNyX2NvbnRlbnQpICkKICAgICAgICAgICAgIHJldHVybiBYODZFTVVMX09LQVk7CiAK LSAgICAgICAgaWYgKCB3cm1zcl92aXJpZGlhbl9yZWdzKG1zciwgbXNyX2NvbnRlbnQpICkgCi0g ICAgICAgICAgICBicmVhazsKLQogICAgICAgICBpZiAoIHZteF93cml0ZV9ndWVzdF9tc3IobXNy LCBtc3JfY29udGVudCkgPT0gMCB8fAogICAgICAgICAgICAgIGlzX2xhc3RfYnJhbmNoX21zciht c3IpICkKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21zci5j IGIveGVuL2FyY2gveDg2L21zci5jCmluZGV4IDhhZTNiNGUuLjJmYzIwMjEgMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL3g4Ni9tc3IuYworKysgYi94ZW4vYXJjaC94ODYvbXNyLmMKQEAgLTE0MSw5ICsx NDEsMTEgQEAgaW50IGluaXRfdmNwdV9tc3JfcG9saWN5KHN0cnVjdCB2Y3B1ICp2KQogCiBpbnQg Z3Vlc3RfcmRtc3IoY29uc3Qgc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IG1zciwgdWludDY0X3Qg KnZhbCkKIHsKLSAgICBjb25zdCBzdHJ1Y3QgY3B1aWRfcG9saWN5ICpjcCA9IHYtPmRvbWFpbi0+ YXJjaC5jcHVpZDsKLSAgICBjb25zdCBzdHJ1Y3QgbXNyX2RvbWFpbl9wb2xpY3kgKmRwID0gdi0+ ZG9tYWluLT5hcmNoLm1zcjsKKyAgICBjb25zdCBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWlu OworICAgIGNvbnN0IHN0cnVjdCBjcHVpZF9wb2xpY3kgKmNwID0gZC0+YXJjaC5jcHVpZDsKKyAg ICBjb25zdCBzdHJ1Y3QgbXNyX2RvbWFpbl9wb2xpY3kgKmRwID0gZC0+YXJjaC5tc3I7CiAgICAg Y29uc3Qgc3RydWN0IG1zcl92Y3B1X3BvbGljeSAqdnAgPSB2LT5hcmNoLm1zcjsKKyAgICBpbnQg cmV0ID0gWDg2RU1VTF9PS0FZOwogCiAgICAgc3dpdGNoICggbXNyICkKICAgICB7CkBAIC0xNzUs MTEgKzE3NywyNiBAQCBpbnQgZ3Vlc3RfcmRtc3IoY29uc3Qgc3RydWN0IHZjcHUgKnYsIHVpbnQz Ml90IG1zciwgdWludDY0X3QgKnZhbCkKICAgICAgICAgICAgICAgIF9NU1JfTUlTQ19GRUFUVVJF U19DUFVJRF9GQVVMVElORzsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIE1TUl9IWVBFUlZJ U09SX1NUQVJUIC4uLiBNU1JfSFlQRVJWSVNPUl9TVEFSVCArIE5SX1ZJUklESUFOX01TUlMgLSAx OgorICAgICAgICBpZiAoIGlzX3ZpcmlkaWFuX2RvbWFpbihkKSApCisgICAgICAgIHsKKyAgICAg ICAgICAgIHJldCA9IGd1ZXN0X3JkbXNyX3ZpcmlkaWFuKHYsIG1zciwgdmFsKTsKKyAgICAgICAg ICAgIGdvdG8gb3V0OworICAgICAgICB9CisKKyAgICAgICAgLyogRmFsbHRocm91Z2guICovCiAg ICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOwogICAgIH0K IAotICAgIHJldHVybiBYODZFTVVMX09LQVk7Cisgb3V0OgorICAgIC8qCisgICAgICogQ2hlY2sg dGhhdCBmdW5jdGlvbnMgd2UgZGlzcGF0Y2ggdG8gZG9uJ3QgZW5kIHVwIHJldHVybmluZworICAg ICAqIFg4NkVNVUxfVU5IQU5ETEVBQkxFLCBhcyB0aGF0IGludGVyZmVyZXMgd2l0aCB0aGUgdHJh bnNpdGlvbmFyeSBwZXJpb2QKKyAgICAgKiBtZWFuaW5nIG9mICJmYWxsIGJhY2sgdG8gdGhlIGxl Z2FjeSBNU1IgaGFuZGxlcnMiLgorICAgICAqLworICAgIEFTU0VSVChyZXQgIT0gWDg2RU1VTF9V TkhBTkRMRUFCTEUpOworICAgIHJldHVybiByZXQ7CiAKICBncF9mYXVsdDoKICAgICByZXR1cm4g WDg2RU1VTF9FWENFUFRJT047CkBAIC0xOTIsNiArMjA5LDcgQEAgaW50IGd1ZXN0X3dybXNyKHN0 cnVjdCB2Y3B1ICp2LCB1aW50MzJfdCBtc3IsIHVpbnQ2NF90IHZhbCkKICAgICBjb25zdCBzdHJ1 Y3QgY3B1aWRfcG9saWN5ICpjcCA9IGQtPmFyY2guY3B1aWQ7CiAgICAgc3RydWN0IG1zcl9kb21h aW5fcG9saWN5ICpkcCA9IGQtPmFyY2gubXNyOwogICAgIHN0cnVjdCBtc3JfdmNwdV9wb2xpY3kg KnZwID0gdi0+YXJjaC5tc3I7CisgICAgaW50IHJldCA9IFg4NkVNVUxfT0tBWTsKIAogICAgIHN3 aXRjaCAoIG1zciApCiAgICAgewpAQCAtMjUwLDExICsyNjgsMjYgQEAgaW50IGd1ZXN0X3dybXNy KHN0cnVjdCB2Y3B1ICp2LCB1aW50MzJfdCBtc3IsIHVpbnQ2NF90IHZhbCkKICAgICAgICAgYnJl YWs7CiAgICAgfQogCisgICAgY2FzZSBNU1JfSFlQRVJWSVNPUl9TVEFSVCAuLi4gTVNSX0hZUEVS VklTT1JfU1RBUlQgKyBOUl9WSVJJRElBTl9NU1JTIC0gMToKKyAgICAgICAgaWYgKCBpc192aXJp ZGlhbl9kb21haW4oZCkgKQorICAgICAgICB7CisgICAgICAgICAgICByZXQgPSBndWVzdF93cm1z cl92aXJpZGlhbih2LCBtc3IsIHZhbCk7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAg fQorCisgICAgICAgIC8qIEZhbGx0aHJvdWdoLiAqLwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJl dHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsKICAgICB9CiAKLSAgICByZXR1cm4gWDg2RU1VTF9P S0FZOworIG91dDoKKyAgICAvKgorICAgICAqIENoZWNrIHRoYXQgZnVuY3Rpb25zIHdlIGRpc3Bh dGNoIHRvIGRvbid0IGVuZCB1cCByZXR1cm5pbmcKKyAgICAgKiBYODZFTVVMX1VOSEFORExFQUJM RSwgYXMgdGhhdCBpbnRlcmZlcmVzIHdpdGggdGhlIHRyYW5zaXRpb25hcnkgcGVyaW9kCisgICAg ICogbWVhbmluZyBvZiAiZmFsbCBiYWNrIHRvIHRoZSBsZWdhY3kgTVNSIGhhbmRsZXJzIi4KKyAg ICAgKi8KKyAgICBBU1NFUlQocmV0ICE9IFg4NkVNVUxfVU5IQU5ETEVBQkxFKTsKKyAgICByZXR1 cm4gcmV0OwogCiAgZ3BfZmF1bHQ6CiAgICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOwpkaWZm IC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdmlyaWRpYW4uaCBiL3hlbi9pbmNsdWRl L2FzbS14ODYvaHZtL3ZpcmlkaWFuLmgKaW5kZXggNGNiZDEzMy4uMDcxZmI0NCAxMDA2NDQKLS0t IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdmlyaWRpYW4uaAorKysgYi94ZW4vaW5jbHVkZS9h c20teDg2L2h2bS92aXJpZGlhbi5oCkBAIC0xMDEsMTUgKzEwMSw4IEBAIHN0cnVjdCB2aXJpZGlh bl9kb21haW4KIHZvaWQgY3B1aWRfdmlyaWRpYW5fbGVhdmVzKGNvbnN0IHN0cnVjdCB2Y3B1ICp2 LCB1aW50MzJfdCBsZWFmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3Vi bGVhZiwgc3RydWN0IGNwdWlkX2xlYWYgKnJlcyk7CiAKLWludAotd3Jtc3JfdmlyaWRpYW5fcmVn cygKLSAgICB1aW50MzJfdCBpZHgsCi0gICAgdWludDY0X3QgdmFsKTsKLQotaW50Ci1yZG1zcl92 aXJpZGlhbl9yZWdzKAotICAgIHVpbnQzMl90IGlkeCwKLSAgICB1aW50NjRfdCAqdmFsKTsKK2lu dCBndWVzdF93cm1zcl92aXJpZGlhbihzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgaWR4LCB1aW50 NjRfdCB2YWwpOworaW50IGd1ZXN0X3JkbXNyX3ZpcmlkaWFuKGNvbnN0IHN0cnVjdCB2Y3B1ICp2 LCB1aW50MzJfdCBpZHgsIHVpbnQ2NF90ICp2YWwpOwogCiBpbnQKIHZpcmlkaWFuX2h5cGVyY2Fs bChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncyk7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9h c20teDg2L21zci1pbmRleC5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9tc3ItaW5kZXguaAppbmRl eCAyM2FkNzQzLi5lZTAyOWEyIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L21zci1p bmRleC5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbXNyLWluZGV4LmgKQEAgLTU0MCw0ICs1 NDAsOCBAQAogI2RlZmluZSBNU1JfUEtHQzlfSVJUTAkJCTB4MDAwMDA2MzQKICNkZWZpbmUgTVNS X1BLR0MxMF9JUlRMCQkJMHgwMDAwMDYzNQogCisvKiBIeXBlcnZpc29yIGxlYXZlcyBpbiB0aGUg MHg0eHh4eHh4eCByYW5nZS4gKi8KKyNkZWZpbmUgTVNSX0hZUEVSVklTT1JfU1RBUlQgICAgICAg ICAgICAweDQwMDAwMDAwCisjZGVmaW5lIE5SX1ZJUklESUFOX01TUlMgICAgICAgICAgICAgICAg MHgwMDAwMDIwMAorCiAjZW5kaWYgLyogX19BU01fTVNSX0lOREVYX0ggKi8KLS0gCjIuMS40CgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0 cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==