From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [RFC PATCH v6 55/92] kvm: introspection: add KVMI_CONTROL_MSR and KVMI_EVENT_MSR Date: Fri, 9 Aug 2019 19:00:10 +0300 Message-ID: <20190809160047.8319-56-alazar@bitdefender.com> References: <20190809160047.8319-1-alazar@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190809160047.8319-1-alazar@bitdefender.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org To: kvm@vger.kernel.org Cc: Tamas K Lengyel , Weijiang Yang , Yu C , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , Jan Kiszka , =?UTF-8?q?Samuel=20Laur=C3=A9n?= , Konrad Rzeszutek Wilk , virtualization@lists.linux-foundation.org, =?UTF-8?q?Adalbert=20Laz=C4=83r?= , linux-mm@kvack.org, Patrick Colp , Mathieu Tarral , Stefan Hajnoczi , Paolo Bonzini , Zhang@mail.linuxfoundation.org, =?UTF-8?q?Mihai=20Don=C8=9Bu?= List-Id: virtualization@lists.linuxfoundation.org RnJvbTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgoKVGhlIEtWTUlfQ09O VFJPTF9NU1IgaXMgdXNlZCB0byBlbmFibGUvZGlzYWJsZSBpbnRyb3NwZWN0aW9uIGZvciBhCnNw ZWNpZmljIE1TUi4gVGhlIEtWTUlfRVZFTlRfTVNSIGlzIHNlbmQgd2hlbiB0aGUgdHJhY2tlZCBN U1IgaXMgZ29pbmcKdG8gYmUgY2hhbmdlZC4gVGhlIGludHJvc3BlY3Rpb24gdG9vbCBjYW4gcmVz cG9uZCBieSBhbGxvd2luZyB0aGUgZ3Vlc3QKdG8gY29udGludWUgd2l0aCBub3JtYWwgZXhlY3V0 aW9uIG9yIGJ5IGRpc2NhcmRpbmcgdGhlIGNoYW5nZS4KClRoaXMgaXMgbWVhbnQgdG8gcHJldmVu dCBtYWxpY2lvdXMgY2hhbmdlcyB0byBNU1ItcwpzdWNoIGFzIE1TUl9JQTMyX1NZU0VOVEVSX0VJ UC4KClNpZ25lZC1vZmYtYnk6IE1paGFpIERvbsibdSA8bWRvbnR1QGJpdGRlZmVuZGVyLmNvbT4K U2lnbmVkLW9mZi1ieTogQWRhbGJlcnQgTGF6xINyIDxhbGF6YXJAYml0ZGVmZW5kZXIuY29tPgot LS0KIERvY3VtZW50YXRpb24vdmlydHVhbC9rdm0va3ZtaS5yc3QgfCAgNzMgKysrKysrKysrKysr KysrKysKIGFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggICAgfCAgIDQgKwogYXJjaC94 ODYvaW5jbHVkZS9hc20va3ZtaV9ob3N0LmggICB8ICAgNiArKwogYXJjaC94ODYvaW5jbHVkZS91 YXBpL2FzbS9rdm1pLmggICB8ICAxOCArKysrCiBhcmNoL3g4Ni9rdm0va3ZtaS5jICAgICAgICAg ICAgICAgIHwgMTI3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBhcmNoL3g4Ni9rdm0v c3ZtLmMgICAgICAgICAgICAgICAgIHwgIDE1ICsrKysKIGFyY2gveDg2L2t2bS92bXgvdm14LmMg ICAgICAgICAgICAgfCAgMTAgKysrCiBhcmNoL3g4Ni9rdm0veDg2LmMgICAgICAgICAgICAgICAg IHwgIDEwICsrKwogdmlydC9rdm0va3ZtaV9pbnQuaCAgICAgICAgICAgICAgICB8ICAgOCArLQog dmlydC9rdm0va3ZtaV9tc2cuYyAgICAgICAgICAgICAgICB8ICAxMyArKysKIDEwIGZpbGVzIGNo YW5nZWQsIDI4MyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvRG9j dW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9rdm1pLnJzdCBiL0RvY3VtZW50YXRpb24vdmlydHVhbC9r dm0va3ZtaS5yc3QKaW5kZXggMmU2ZTI4NWM4ZTJlLi5jNDFjM2VkYjAxMzQgMTAwNjQ0Ci0tLSBh L0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0va3ZtaS5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi92 aXJ0dWFsL2t2bS9rdm1pLnJzdApAQCAtMTA0Miw2ICsxMDQyLDQ1IEBAIElEIHNldC4KICogLUtW TV9FSU5WQUwgLSBwYWRkaW5nIGlzIG5vdCB6ZXJvCiAqIC1LVk1fRUFHQUlOIC0gdGhlIHNlbGVj dGVkIHZDUFUgY2FuJ3QgYmUgaW50cm9zcGVjdGVkIHlldAogCisyMi4gS1ZNSV9DT05UUk9MX01T UgorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOkFyY2hpdGVjdHVyZXM6IHg4NgorOlZlcnNpb25z OiA+PSAxCis6UGFyYW1ldGVyczoKKworOjoKKworCXN0cnVjdCBrdm1pX3ZjcHVfaGRyOworCXN0 cnVjdCBrdm1pX2NvbnRyb2xfbXNyIHsKKwkJX191OCBlbmFibGU7CisJCV9fdTggcGFkZGluZzE7 CisJCV9fdTE2IHBhZGRpbmcyOworCQlfX3UzMiBtc3I7CisJfTsKKworOlJldHVybnM6CisKKzo6 CisKKwlzdHJ1Y3Qga3ZtaV9lcnJvcl9jb2RlCisKK0VuYWJsZXMvZGlzYWJsZXMgaW50cm9zcGVj dGlvbiBmb3IgYSBzcGVjaWZpYyBNU1IgYW5kIG11c3QgYmUgdXNlZAoraW4gYWRkaXRpb24gdG8g KktWTUlfQ09OVFJPTF9FVkVOVFMqIHdpdGggdGhlICpLVk1JX0VWRU5UX01TUiogSUQgc2V0Lgor CitDdXJyZW50bHksIG9ubHkgTVNScyB3aXRoaW4gdGhlIGZvbGxvd2luZyB0d28gcmFuZ2VzIGFy ZSBzdXBwb3J0ZWQuIFRyeWluZwordG8gY29udHJvbCBldmVudHMgZm9yIGFueSBvdGhlciByZWdp c3RlciB3aWxsIGZhaWwgd2l0aCAtS1ZNX0VJTlZBTDo6CisKKwkwICAgICAgICAgIC4uLiAweDAw MDAxZmZmCisJMHhjMDAwMDAwMCAuLi4gMHhjMDAwMWZmZgorCis6RXJyb3JzOgorCisqIC1LVk1f RUlOVkFMIC0gdGhlIHNlbGVjdGVkIHZDUFUgaXMgaW52YWxpZAorKiAtS1ZNX0VJTlZBTCAtIHRo ZSBzcGVjaWZpZWQgTVNSIGlzIGludmFsaWQKKyogLUtWTV9FSU5WQUwgLSBwYWRkaW5nIGlzIG5v dCB6ZXJvCisqIC1LVk1fRUFHQUlOIC0gdGhlIHNlbGVjdGVkIHZDUFUgY2FuJ3QgYmUgaW50cm9z cGVjdGVkIHlldAorCiBFdmVudHMKID09PT09PQogCkBAIC0xMzA4LDMgKzEzNDcsMzcgQEAgcmVn aXN0ZXIgKHNlZSAqKktWTUlfQ09OVFJPTF9FVkVOVFMqKikuCiBgYGt2bWlfZXZlbnRgYCwgdGhl IGNvbnRyb2wgcmVnaXN0ZXIgbnVtYmVyLCB0aGUgb2xkIHZhbHVlIGFuZCB0aGUgbmV3IHZhbHVl CiBhcmUgc2VudCB0byB0aGUgaW50cm9zcGVjdG9yLiBUaGUgKkNPTlRJTlVFKiBhY3Rpb24gd2ls bCBzZXQgdGhlIGBgbmV3X3ZhbGBgLgogCis3LiBLVk1JX0VWRU5UX01TUgorLS0tLS0tLS0tLS0t LS0tLS0KKworOkFyY2hpdGVjdHVyZXM6IHg4NgorOlZlcnNpb25zOiA+PSAxCis6QWN0aW9uczog Q09OVElOVUUsIENSQVNICis6UGFyYW1ldGVyczoKKworOjoKKworCXN0cnVjdCBrdm1pX2V2ZW50 OworCXN0cnVjdCBrdm1pX2V2ZW50X21zciB7CisJCV9fdTMyIG1zcjsKKwkJX191MzIgcGFkZGlu ZzsKKwkJX191NjQgb2xkX3ZhbHVlOworCQlfX3U2NCBuZXdfdmFsdWU7CisJfTsKKworOlJldHVy bnM6CisKKzo6CisKKwlzdHJ1Y3Qga3ZtaV92Y3B1X2hkcjsKKwlzdHJ1Y3Qga3ZtaV9ldmVudF9y ZXBseTsKKwlzdHJ1Y3Qga3ZtaV9ldmVudF9tc3JfcmVwbHkgeworCQlfX3U2NCBuZXdfdmFsOwor CX07CisKK1RoaXMgZXZlbnQgaXMgc2VudCB3aGVuIGEgbW9kZWwgc3BlY2lmaWMgcmVnaXN0ZXIg aXMgZ29pbmcgdG8gYmUgY2hhbmdlZAorYW5kIHRoZSBpbnRyb3NwZWN0aW9uIGhhcyBiZWVuIGVu YWJsZWQgZm9yIHRoaXMgZXZlbnQgYW5kIGZvciB0aGlzIHNwZWNpZmljCityZWdpc3RlciAoc2Vl ICoqS1ZNSV9DT05UUk9MX0VWRU5UUyoqKS4KKworYGBrdm1pX2V2ZW50YGAsIHRoZSBNU1IgbnVt YmVyLCB0aGUgb2xkIHZhbHVlIGFuZCB0aGUgbmV3IHZhbHVlIGFyZQorc2VudCB0byB0aGUgaW50 cm9zcGVjdG9yLiBUaGUgKkNPTlRJTlVFKiBhY3Rpb24gd2lsbCBzZXQgdGhlIGBgbmV3X3ZhbGBg LgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gveDg2 L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKaW5kZXggMjJmMDhmMjczMmNjLi45MWNkNDNhN2E3YmYg MTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKKysrIGIvYXJjaC94 ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaApAQCAtMTAxMyw2ICsxMDEzLDggQEAgc3RydWN0IGt2 bV94ODZfb3BzIHsKIAlib29sICgqaGFzX2VtdWxhdGVkX21zcikoaW50IGluZGV4KTsKIAl2b2lk ICgqY3B1aWRfdXBkYXRlKShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogCisJdm9pZCAoKm1zcl9p bnRlcmNlcHQpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IG1zciwKKwkJCQli b29sIGVuYWJsZSk7CiAJdm9pZCAoKmNyM193cml0ZV9leGl0aW5nKShzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUsIGJvb2wgZW5hYmxlKTsKIAlib29sICgqbmVzdGVkX3BhZ2VmYXVsdCkoc3RydWN0IGt2 bV92Y3B1ICp2Y3B1KTsKIAlib29sICgqc3B0X2ZhdWx0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUp OwpAQCAtMTYyMSw2ICsxNjIzLDggQEAgc3RhdGljIGlubGluZSBpbnQga3ZtX2NwdV9nZXRfYXBp Y2lkKGludCBtcHNfY3B1KQogI2RlZmluZSBwdXRfc21zdGF0ZSh0eXBlLCBidWYsIG9mZnNldCwg dmFsKSAgICAgICAgICAgICAgICAgICAgICBcCiAJKih0eXBlICopKChidWYpICsgKG9mZnNldCkg LSAweDdlMDApID0gdmFsCiAKK3ZvaWQga3ZtX2FyY2hfbXNyX2ludGVyY2VwdChzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBtc3IsCisJCQkJYm9vbCBlbmFibGUpOwogYm9vbCBr dm1fbW11X25lc3RlZF9wYWdlZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKIGJvb2wga3Zt X3NwdF9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogdm9pZCBrdm1fY29udHJvbF9jcjNf d3JpdGVfZXhpdGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgZW5hYmxlKTsKZGlmZiAt LWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bWlfaG9zdC5oIGIvYXJjaC94ODYvaW5jbHVk ZS9hc20va3ZtaV9ob3N0LmgKaW5kZXggODNhMDk4ZGM4OTM5Li44Mjg1ZDFlYjBkYjYgMTAwNjQ0 Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bWlfaG9zdC5oCisrKyBiL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL2t2bWlfaG9zdC5oCkBAIC0xMSwxMSArMTEsMTcgQEAgc3RydWN0IGt2bWlfYXJj aF9tZW1fYWNjZXNzIHsKIAogI2lmZGVmIENPTkZJR19LVk1fSU5UUk9TUEVDVElPTgogCitib29s IGt2bWlfbXNyX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICpt c3IpOwogYm9vbCBrdm1pX2NyX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQg aW50IGNyLAogCQkgICB1bnNpZ25lZCBsb25nIG9sZF92YWx1ZSwgdW5zaWduZWQgbG9uZyAqbmV3 X3ZhbHVlKTsKIAogI2Vsc2UgLyogQ09ORklHX0tWTV9JTlRST1NQRUNUSU9OICovCiAKK3N0YXRp YyBpbmxpbmUgYm9vbCBrdm1pX21zcl9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVj dCBtc3JfZGF0YSAqbXNyKQoreworCXJldHVybiB0cnVlOworfQorCiBzdGF0aWMgaW5saW5lIGJv b2wga3ZtaV9jcl9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBjciwK IAkJCQkgdW5zaWduZWQgbG9uZyBvbGRfdmFsdWUsCiAJCQkJIHVuc2lnbmVkIGxvbmcgKm5ld192 YWx1ZSkKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20va3ZtaS5oIGIvYXJj aC94ODYvaW5jbHVkZS91YXBpL2FzbS9rdm1pLmgKaW5kZXggYzk4M2I0YmQyYzcyLi4wOGFmMmVj Y2JkZmIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20va3ZtaS5oCisrKyBi L2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20va3ZtaS5oCkBAIC03OSw0ICs3OSwyMiBAQCBzdHJ1 Y3Qga3ZtaV9ldmVudF9jcl9yZXBseSB7CiAJX191NjQgbmV3X3ZhbDsKIH07CiAKK3N0cnVjdCBr dm1pX2NvbnRyb2xfbXNyIHsKKwlfX3U4IGVuYWJsZTsKKwlfX3U4IHBhZGRpbmcxOworCV9fdTE2 IHBhZGRpbmcyOworCV9fdTMyIG1zcjsKK307CisKK3N0cnVjdCBrdm1pX2V2ZW50X21zciB7CisJ X191MzIgbXNyOworCV9fdTMyIHBhZGRpbmc7CisJX191NjQgb2xkX3ZhbHVlOworCV9fdTY0IG5l d192YWx1ZTsKK307CisKK3N0cnVjdCBrdm1pX2V2ZW50X21zcl9yZXBseSB7CisJX191NjQgbmV3 X3ZhbDsKK307CisKICNlbmRpZiAvKiBfVUFQSV9BU01fWDg2X0tWTUlfSCAqLwpkaWZmIC0tZ2l0 IGEvYXJjaC94ODYva3ZtL2t2bWkuYyBiL2FyY2gveDg2L2t2bS9rdm1pLmMKaW5kZXggYjNjYWIw ZGI2YTcwLi41ZGJhNGY4N2FmZWYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9rdm1pLmMKKysr IGIvYXJjaC94ODYva3ZtL2t2bWkuYwpAQCAtOSw2ICs5LDEzMyBAQAogI2luY2x1ZGUgPGFzbS92 bXguaD4KICNpbmNsdWRlICIuLi8uLi8uLi92aXJ0L2t2bS9rdm1pX2ludC5oIgogCitzdGF0aWMg dW5zaWduZWQgbG9uZyAqbXNyX21hc2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBp bnQgKm1zcikKK3sKKwlzd2l0Y2ggKCptc3IpIHsKKwljYXNlIDAgLi4uIDB4MWZmZjoKKwkJcmV0 dXJuIElWQ1BVKHZjcHUpLT5tc3JfbWFzay5sb3c7CisJY2FzZSAweGMwMDAwMDAwIC4uLiAweGMw MDAxZmZmOgorCQkqbXNyICY9IDB4MWZmZjsKKwkJcmV0dXJuIElWQ1BVKHZjcHUpLT5tc3JfbWFz ay5oaWdoOworCX0KKworCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgYm9vbCB0ZXN0X21zcl9t YXNrKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IG1zcikKK3sKKwl1bnNpZ25l ZCBsb25nICptYXNrID0gbXNyX21hc2sodmNwdSwgJm1zcik7CisKKwlpZiAoIW1hc2spCisJCXJl dHVybiBmYWxzZTsKKwlpZiAoIXRlc3RfYml0KG1zciwgbWFzaykpCisJCXJldHVybiBmYWxzZTsK KworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgaW50IG1zcl9jb250cm9sKHN0cnVjdCBrdm1f dmNwdSAqdmNwdSwgdW5zaWduZWQgaW50IG1zciwgYm9vbCBlbmFibGUpCit7CisJdW5zaWduZWQg bG9uZyAqbWFzayA9IG1zcl9tYXNrKHZjcHUsICZtc3IpOworCisJaWYgKCFtYXNrKQorCQlyZXR1 cm4gLUtWTV9FSU5WQUw7CisJaWYgKGVuYWJsZSkKKwkJc2V0X2JpdChtc3IsIG1hc2spOworCWVs c2UKKwkJY2xlYXJfYml0KG1zciwgbWFzayk7CisJcmV0dXJuIDA7Cit9CisKK2ludCBrdm1pX2Fy Y2hfY21kX2NvbnRyb2xfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKKwkJCSAgICAgIGNvbnN0 IHN0cnVjdCBrdm1pX2NvbnRyb2xfbXNyICpyZXEpCit7CisJaW50IGVycjsKKworCWlmIChyZXEt PnBhZGRpbmcxIHx8IHJlcS0+cGFkZGluZzIpCisJCXJldHVybiAtS1ZNX0VJTlZBTDsKKworCWVy ciA9IG1zcl9jb250cm9sKHZjcHUsIHJlcS0+bXNyLCByZXEtPmVuYWJsZSk7CisKKwlpZiAoIWVy ciAmJiByZXEtPmVuYWJsZSkKKwkJa3ZtX2FyY2hfbXNyX2ludGVyY2VwdCh2Y3B1LCByZXEtPm1z ciwgcmVxLT5lbmFibGUpOworCisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIHUzMiBrdm1pX3Nl bmRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIG1zciwgdTY0IG9sZF92YWx1ZSwKKwkJ CSB1NjQgbmV3X3ZhbHVlLCB1NjQgKnJldF92YWx1ZSkKK3sKKwlzdHJ1Y3Qga3ZtaV9ldmVudF9t c3IgZSA9IHsKKwkJLm1zciA9IG1zciwKKwkJLm9sZF92YWx1ZSA9IG9sZF92YWx1ZSwKKwkJLm5l d192YWx1ZSA9IG5ld192YWx1ZSwKKwl9OworCXN0cnVjdCBrdm1pX2V2ZW50X21zcl9yZXBseSBy OworCWludCBlcnIsIGFjdGlvbjsKKworCWVyciA9IGt2bWlfc2VuZF9ldmVudCh2Y3B1LCBLVk1J X0VWRU5UX01TUiwgJmUsIHNpemVvZihlKSwKKwkJCSAgICAgICZyLCBzaXplb2YociksICZhY3Rp b24pOworCWlmIChlcnIpIHsKKwkJKnJldF92YWx1ZSA9IG5ld192YWx1ZTsKKwkJcmV0dXJuIEtW TUlfRVZFTlRfQUNUSU9OX0NPTlRJTlVFOworCX0KKworCSpyZXRfdmFsdWUgPSByLm5ld192YWw7 CisJcmV0dXJuIGFjdGlvbjsKK30KKworc3RhdGljIGJvb2wgX19rdm1pX21zcl9ldmVudChzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyKQoreworCXN0cnVjdCBtc3Jf ZGF0YSBvbGRfbXNyID0geworCQkuaG9zdF9pbml0aWF0ZWQgPSB0cnVlLAorCQkuaW5kZXggPSBt c3ItPmluZGV4LAorCX07CisJYm9vbCByZXQgPSBmYWxzZTsKKwl1NjQgcmV0X3ZhbHVlOworCXUz MiBhY3Rpb247CisKKwlpZiAoIXRlc3RfbXNyX21hc2sodmNwdSwgbXNyLT5pbmRleCkpCisJCXJl dHVybiB0cnVlOworCWlmIChrdm1fZ2V0X21zcih2Y3B1LCAmb2xkX21zcikpCisJCXJldHVybiB0 cnVlOworCWlmIChvbGRfbXNyLmRhdGEgPT0gbXNyLT5kYXRhKQorCQlyZXR1cm4gdHJ1ZTsKKwor CWFjdGlvbiA9IGt2bWlfc2VuZF9tc3IodmNwdSwgbXNyLT5pbmRleCwgb2xkX21zci5kYXRhLCBt c3ItPmRhdGEsCisJCQkgICAgICAgJnJldF92YWx1ZSk7CisJc3dpdGNoIChhY3Rpb24pIHsKKwlj YXNlIEtWTUlfRVZFTlRfQUNUSU9OX0NPTlRJTlVFOgorCQltc3ItPmRhdGEgPSByZXRfdmFsdWU7 CisJCXJldCA9IHRydWU7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWt2bWlfaGFuZGxlX2NvbW1v bl9ldmVudF9hY3Rpb25zKHZjcHUsIGFjdGlvbiwgIk1TUiIpOworCX0KKworCXJldHVybiByZXQ7 Cit9CisKK2Jvb2wga3ZtaV9tc3JfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qg bXNyX2RhdGEgKm1zcikKK3sKKwlzdHJ1Y3Qga3ZtaSAqaWt2bTsKKwlib29sIHJldCA9IHRydWU7 CisKKwlpZiAobXNyLT5ob3N0X2luaXRpYXRlZCkKKwkJcmV0dXJuIHRydWU7CisKKwlpa3ZtID0g a3ZtaV9nZXQodmNwdS0+a3ZtKTsKKwlpZiAoIWlrdm0pCisJCXJldHVybiB0cnVlOworCisJaWYg KGlzX2V2ZW50X2VuYWJsZWQodmNwdSwgS1ZNSV9FVkVOVF9NU1IpKQorCQlyZXQgPSBfX2t2bWlf bXNyX2V2ZW50KHZjcHUsIG1zcik7CisKKwlrdm1pX3B1dCh2Y3B1LT5rdm0pOworCisJcmV0dXJu IHJldDsKK30KKwogc3RhdGljIHZvaWQgKmFsbG9jX2dldF9yZWdpc3RlcnNfcmVwbHkoY29uc3Qg c3RydWN0IGt2bWlfbXNnX2hkciAqbXNnLAogCQkJCSAgICAgICBjb25zdCBzdHJ1Y3Qga3ZtaV9n ZXRfcmVnaXN0ZXJzICpyZXEsCiAJCQkJICAgICAgIHNpemVfdCAqcnBsX3NpemUpCmRpZmYgLS1n aXQgYS9hcmNoL3g4Ni9rdm0vc3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtLmMKaW5kZXggZmM3OGIw MDUyZGVlLi5jZGIzMTU1Nzg5NzkgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9zdm0uYworKysg Yi9hcmNoL3g4Ni9rdm0vc3ZtLmMKQEAgLTcwOTgsNiArNzA5OCwyMCBAQCBzdGF0aWMgaW50IG5l c3RlZF9lbmFibGVfZXZtY3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCXJldHVybiAtRU5PREVW OwogfQogCitzdGF0aWMgdm9pZCBzdm1fbXNyX2ludGVyY2VwdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZj cHUsIHVuc2lnbmVkIGludCBtc3IsCisJCQkJYm9vbCBlbmFibGUpCit7CisJc3RydWN0IHZjcHVf c3ZtICpzdm0gPSB0b19zdm0odmNwdSk7CisJdTMyICptc3JwbSA9IHN2bS0+bXNycG07CisKKwkv KgorCSAqIFRoZSBiZWxvdyBjb2RlIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBtc3IgaW50ZXJjZXB0 aW9uIGZvciBib3RoCisJICogcmVhZCBhbmQgd3JpdGUuIFRoZSBiZXN0IHdheSB3aWxsIGJlIHRv IGdldCBoZXJlIHRoZSBjdXJyZW50CisJICogYml0IHN0YXR1cyBmb3IgcmVhZCBhbmQgc2VuZCB0 aGF0IHZhbHVlIGFzIGFyZ3VtZW50LgorCSAqLworCXNldF9tc3JfaW50ZXJjZXB0aW9uKG1zcnBt LCBtc3IsIGVuYWJsZSwgZW5hYmxlKTsKK30KKwogc3RhdGljIGJvb2wgc3ZtX25lc3RlZF9wYWdl ZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewogCXJldHVybiBmYWxzZTsKQEAgLTcxMjYs NiArNzE0MCw3IEBAIHN0YXRpYyBzdHJ1Y3Qga3ZtX3g4Nl9vcHMgc3ZtX3g4Nl9vcHMgX19yb19h ZnRlcl9pbml0ID0gewogCS5oYXNfZW11bGF0ZWRfbXNyID0gc3ZtX2hhc19lbXVsYXRlZF9tc3Is CiAKIAkuY3IzX3dyaXRlX2V4aXRpbmcgPSBzdm1fY3IzX3dyaXRlX2V4aXRpbmcsCisJLm1zcl9p bnRlcmNlcHQgPSBzdm1fbXNyX2ludGVyY2VwdCwKIAkubmVzdGVkX3BhZ2VmYXVsdCA9IHN2bV9u ZXN0ZWRfcGFnZWZhdWx0LAogCS5zcHRfZmF1bHQgPSBzdm1fc3B0X2ZhdWx0LAogCmRpZmYgLS1n aXQgYS9hcmNoL3g4Ni9rdm0vdm14L3ZteC5jIGIvYXJjaC94ODYva3ZtL3ZteC92bXguYwppbmRl eCA2NDUwYzhjNDQ3NzEuLjAzMDZjN2VmMzE1OCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3Zt eC92bXguYworKysgYi9hcmNoL3g4Ni9rdm0vdm14L3ZteC5jCkBAIC03Nzg0LDYgKzc3ODQsMTUg QEAgc3RhdGljIF9fZXhpdCB2b2lkIGhhcmR3YXJlX3Vuc2V0dXAodm9pZCkKIAlmcmVlX2t2bV9h cmVhKCk7CiB9CiAKK3N0YXRpYyB2b2lkIHZteF9tc3JfaW50ZXJjZXB0KHN0cnVjdCBrdm1fdmNw dSAqdmNwdSwgdW5zaWduZWQgaW50IG1zciwKKwkJCSAgICAgIGJvb2wgZW5hYmxlKQoreworCXN0 cnVjdCB2Y3B1X3ZteCAqdm14ID0gdG9fdm14KHZjcHUpOworCXVuc2lnbmVkIGxvbmcgKm1zcl9i aXRtYXAgPSB2bXgtPnZtY3MwMS5tc3JfYml0bWFwOworCisJdm14X3NldF9pbnRlcmNlcHRfZm9y X21zcihtc3JfYml0bWFwLCBtc3IsIE1TUl9UWVBFX1csIGVuYWJsZSk7Cit9CisKIHN0YXRpYyB2 b2lkIHZteF9jcjNfd3JpdGVfZXhpdGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJCQkJCSBi b29sIGVuYWJsZSkKIHsKQEAgLTc4NDQsNiArNzg1Myw3IEBAIHN0YXRpYyBzdHJ1Y3Qga3ZtX3g4 Nl9vcHMgdm14X3g4Nl9vcHMgX19yb19hZnRlcl9pbml0ID0gewogCS5jcHVfaGFzX2FjY2VsZXJh dGVkX3RwciA9IHJlcG9ydF9mbGV4cHJpb3JpdHksCiAJLmhhc19lbXVsYXRlZF9tc3IgPSB2bXhf aGFzX2VtdWxhdGVkX21zciwKIAorCS5tc3JfaW50ZXJjZXB0ID0gdm14X21zcl9pbnRlcmNlcHQs CiAJLmNyM193cml0ZV9leGl0aW5nID0gdm14X2NyM193cml0ZV9leGl0aW5nLAogCS5uZXN0ZWRf cGFnZWZhdWx0ID0gdm14X25lc3RlZF9wYWdlZmF1bHQsCiAJLnNwdF9mYXVsdCA9IHZteF9zcHRf ZmF1bHQsCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2 LmMKaW5kZXggMmNkMTQ2Y2NjNmZmLi5hYzAyNzQ3MWM0ZjMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2 L2t2bS94ODYuYworKysgYi9hcmNoL3g4Ni9rdm0veDg2LmMKQEAgLTEzMTksNiArMTMxOSw5IEBA IEVYUE9SVF9TWU1CT0xfR1BMKGt2bV9lbmFibGVfZWZlcl9iaXRzKTsKICAqLwogaW50IGt2bV9z ZXRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3IpCiB7CisJ aWYgKCFrdm1pX21zcl9ldmVudCh2Y3B1LCBtc3IpKQorCQlyZXR1cm4gMTsKKwogCXN3aXRjaCAo bXNyLT5pbmRleCkgewogCWNhc2UgTVNSX0ZTX0JBU0U6CiAJY2FzZSBNU1JfR1NfQkFTRToKQEAg LTEwMDgzLDYgKzEwMDg2LDEzIEBAIGJvb2wga3ZtX3ZlY3Rvcl9oYXNoaW5nX2VuYWJsZWQodm9p ZCkKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKGt2bV92ZWN0b3JfaGFzaGluZ19lbmFibGVkKTsKIAor dm9pZCBrdm1fYXJjaF9tc3JfaW50ZXJjZXB0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWdu ZWQgaW50IG1zciwKKwkJCQlib29sIGVuYWJsZSkKK3sKKwlrdm1feDg2X29wcy0+bXNyX2ludGVy Y2VwdCh2Y3B1LCBtc3IsIGVuYWJsZSk7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChrdm1fYXJjaF9t c3JfaW50ZXJjZXB0KTsKKwogdm9pZCBrdm1fY29udHJvbF9jcjNfd3JpdGVfZXhpdGluZyhzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgZW5hYmxlKQogewogCWt2bV94ODZfb3BzLT5jcjNfd3Jp dGVfZXhpdGluZyh2Y3B1LCBlbmFibGUpOwpkaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtaV9pbnQu aCBiL3ZpcnQva3ZtL2t2bWlfaW50LmgKaW5kZXggYzkyYmUzYzJjMTMxLi42NDBhNzhiNTQ5NDcg MTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2t2bWlfaW50LmgKKysrIGIvdmlydC9rdm0va3ZtaV9pbnQu aApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBJVkNQVSh2Y3B1KSAoKHN0cnVjdCBrdm1pX3Zj cHUgKikoKHZjcHUpLT5rdm1pKSkKIAogI2RlZmluZSBLVk1JX05VTV9DUiA5Ci0KKyNkZWZpbmUg S1ZNSV9OVU1fTVNSIDB4MjAwMAogI2RlZmluZSBLVk1JX0NUWF9EQVRBX1NJWkUgRklFTERfU0la RU9GKHN0cnVjdCBrdm1pX2V2ZW50X3BmX3JlcGx5LCBjdHhfZGF0YSkKIAogI2RlZmluZSBLVk1J X01TR19TSVpFX0FMTE9DIChzaXplb2Yoc3RydWN0IGt2bWlfbXNnX2hkcikgKyBLVk1JX01TR19T SVpFKQpAQCAtMTIwLDYgKzEyMCwxMCBAQCBzdHJ1Y3Qga3ZtaV92Y3B1IHsKIAogCURFQ0xBUkVf QklUTUFQKGV2X21hc2ssIEtWTUlfTlVNX0VWRU5UUyk7CiAJREVDTEFSRV9CSVRNQVAoY3JfbWFz aywgS1ZNSV9OVU1fQ1IpOworCXN0cnVjdCB7CisJCURFQ0xBUkVfQklUTUFQKGxvdywgS1ZNSV9O VU1fTVNSKTsKKwkJREVDTEFSRV9CSVRNQVAoaGlnaCwgS1ZNSV9OVU1fTVNSKTsKKwl9IG1zcl9t YXNrOwogCiAJc3RydWN0IGxpc3RfaGVhZCBqb2JfbGlzdDsKIAlzcGlubG9ja190IGpvYl9sb2Nr OwpAQCAtMjU4LDUgKzI2Miw3IEBAIGludCBrdm1pX2FyY2hfY21kX2luamVjdF9leGNlcHRpb24o c3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1OCB2ZWN0b3IsCiAJCQkJICAgdTY0IGFkZHJlc3MpOwog aW50IGt2bWlfYXJjaF9jbWRfY29udHJvbF9jcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJCQkg ICAgIGNvbnN0IHN0cnVjdCBrdm1pX2NvbnRyb2xfY3IgKnJlcSk7CitpbnQga3ZtaV9hcmNoX2Nt ZF9jb250cm9sX21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCisJCQkgICAgICBjb25zdCBzdHJ1 Y3Qga3ZtaV9jb250cm9sX21zciAqcmVxKTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS92aXJ0L2t2 bS9rdm1pX21zZy5jIGIvdmlydC9rdm0va3ZtaV9tc2cuYwppbmRleCBkNGY1NDU5NzIyYmIuLjhh ODk1MWYxM2Y4ZSAxMDA2NDQKLS0tIGEvdmlydC9rdm0va3ZtaV9tc2cuYworKysgYi92aXJ0L2t2 bS9rdm1pX21zZy5jCkBAIC0yNiw2ICsyNiw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBt c2dfSURzW10gPSB7CiAJW0tWTUlfQ09OVFJPTF9DTURfUkVTUE9OU0VdICA9ICJLVk1JX0NPTlRS T0xfQ01EX1JFU1BPTlNFIiwKIAlbS1ZNSV9DT05UUk9MX0NSXSAgICAgICAgICAgID0gIktWTUlf Q09OVFJPTF9DUiIsCiAJW0tWTUlfQ09OVFJPTF9FVkVOVFNdICAgICAgICA9ICJLVk1JX0NPTlRS T0xfRVZFTlRTIiwKKwlbS1ZNSV9DT05UUk9MX01TUl0gICAgICAgICAgID0gIktWTUlfQ09OVFJP TF9NU1IiLAogCVtLVk1JX0NPTlRST0xfU1BQXSAgICAgICAgICAgPSAiS1ZNSV9DT05UUk9MX1NQ UCIsCiAJW0tWTUlfQ09OVFJPTF9WTV9FVkVOVFNdICAgICA9ICJLVk1JX0NPTlRST0xfVk1fRVZF TlRTIiwKIAlbS1ZNSV9FVkVOVF0gICAgICAgICAgICAgICAgID0gIktWTUlfRVZFTlQiLApAQCAt Njc0LDYgKzY3NSwxNyBAQCBzdGF0aWMgaW50IGhhbmRsZV9jb250cm9sX2NyKHN0cnVjdCBrdm1f dmNwdSAqdmNwdSwKIAlyZXR1cm4gcmVwbHlfY2IodmNwdSwgbXNnLCBlYywgTlVMTCwgMCk7CiB9 CiAKK3N0YXRpYyBpbnQgaGFuZGxlX2NvbnRyb2xfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwK KwkJCSAgICAgIGNvbnN0IHN0cnVjdCBrdm1pX21zZ19oZHIgKm1zZywgY29uc3Qgdm9pZCAqcmVx LAorCQkJICAgICAgdmNwdV9yZXBseV9mY3QgcmVwbHlfY2IpCit7CisJaW50IGVjOworCisJZWMg PSBrdm1pX2FyY2hfY21kX2NvbnRyb2xfbXNyKHZjcHUsIHJlcSk7CisKKwlyZXR1cm4gcmVwbHlf Y2IodmNwdSwgbXNnLCBlYywgTlVMTCwgMCk7Cit9CisKIHN0YXRpYyBpbnQgaGFuZGxlX2dldF9j cHVpZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJCQkgICAgY29uc3Qgc3RydWN0IGt2bWlfbXNn X2hkciAqbXNnLAogCQkJICAgIGNvbnN0IHZvaWQgKnJlcSwgdmNwdV9yZXBseV9mY3QgcmVwbHlf Y2IpCkBAIC02OTksNiArNzExLDcgQEAgc3RhdGljIGludCgqY29uc3QgbXNnX3ZjcHVbXSkoc3Ry dWN0IGt2bV92Y3B1ICosCiAJCQkgICAgICB2Y3B1X3JlcGx5X2ZjdCkgPSB7CiAJW0tWTUlfQ09O VFJPTF9DUl0gICAgICAgPSBoYW5kbGVfY29udHJvbF9jciwKIAlbS1ZNSV9DT05UUk9MX0VWRU5U U10gICA9IGhhbmRsZV9jb250cm9sX2V2ZW50cywKKwlbS1ZNSV9DT05UUk9MX01TUl0gICAgICA9 IGhhbmRsZV9jb250cm9sX21zciwKIAlbS1ZNSV9FVkVOVF9SRVBMWV0gICAgICA9IGhhbmRsZV9l dmVudF9yZXBseSwKIAlbS1ZNSV9HRVRfQ1BVSURdICAgICAgICA9IGhhbmRsZV9nZXRfY3B1aWQs CiAJW0tWTUlfR0VUX1JFR0lTVEVSU10gICAgPSBoYW5kbGVfZ2V0X3JlZ2lzdGVycywKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KVmlydHVhbGl6YXRpb24g bWFpbGluZyBsaXN0ClZpcnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0 dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3ZpcnR1YWxp emF0aW9u