From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [RFC PATCH v6 54/92] kvm: introspection: add KVMI_CONTROL_CR and KVMI_EVENT_CR Date: Fri, 9 Aug 2019 19:00:09 +0300 Message-ID: <20190809160047.8319-55-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 RnJvbTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgoKVXNpbmcgdGhlIEtW TUlfQ09OVFJPTF9DUiBjb21tYW5kLCB0aGUgaW50cm9zcGVjdGlvbiB0b29sIHN1YnNjcmliZXMg dG8KS1ZNSV9FVkVOVF9DUiBldmVudHMgdGhhdCB3aWxsIGJlIHNlbnQgd2hlbiBDUnswLDMsNH0g aXMgZ29pbmcgdG8KYmUgY2hhbmdlZC4KClNpZ25lZC1vZmYtYnk6IE1paGFpIERvbsibdSA8bWRv bnR1QGJpdGRlZmVuZGVyLmNvbT4KU2lnbmVkLW9mZi1ieTogQWRhbGJlcnQgTGF6xINyIDxhbGF6 YXJAYml0ZGVmZW5kZXIuY29tPgotLS0KIERvY3VtZW50YXRpb24vdmlydHVhbC9rdm0va3ZtaS5y c3QgfCA3MCArKysrKysrKysrKysrKysrKysrKysrCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1f aG9zdC5oICAgIHwgIDIgKwogYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtaV9ob3N0LmggICB8IDE2 ICsrKysrCiBhcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL2t2bWkuaCAgIHwgMTggKysrKysrCiBh cmNoL3g4Ni9rdm0va3ZtaS5jICAgICAgICAgICAgICAgIHwgOTUgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCiBhcmNoL3g4Ni9rdm0vc3ZtLmMgICAgICAgICAgICAgICAgIHwgIDUgKysK IGFyY2gveDg2L2t2bS92bXgvdm14LmMgICAgICAgICAgICAgfCAxNCArKysrKwogYXJjaC94ODYv a3ZtL3g4Ni5jICAgICAgICAgICAgICAgICB8IDE5ICsrKysrLQogdmlydC9rdm0va3ZtaV9pbnQu aCAgICAgICAgICAgICAgICB8ICA3ICsrKwogdmlydC9rdm0va3ZtaV9tc2cuYyAgICAgICAgICAg ICAgICB8IDEzICsrKysKIDEwIGZpbGVzIGNoYW5nZWQsIDI1OCBpbnNlcnRpb25zKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9rdm1pLnJz dCBiL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0va3ZtaS5yc3QKaW5kZXggMWVhZWQ3YzYxMTQ4 Li4yZTZlMjg1YzhlMmUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0va3Zt aS5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9rdm1pLnJzdApAQCAtMTAwNyw2 ICsxMDA3LDQxIEBAIG9yZGVyIHRvIGJlIG5vdGlmaWVkIGlmIHRoZSBleHBlY3Rpb24gd2FzIG5v dCBkZWxpdmVyZWQuCiAqIC1LVk1fRUlOVkFMIC0gcGFkZGluZyBpcyBub3QgemVybwogKiAtS1ZN X0VBR0FJTiAtIHRoZSBzZWxlY3RlZCB2Q1BVIGNhbid0IGJlIGludHJvc3BlY3RlZCB5ZXQKIAor MjEuIEtWTUlfQ09OVFJPTF9DUgorLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6QXJjaGl0ZWN0dXJl czogeDg2Cis6VmVyc2lvbnM6ID49IDEKKzpQYXJhbWV0ZXJzOgorCis6OgorCisJc3RydWN0IGt2 bWlfdmNwdV9oZHI7CisJc3RydWN0IGt2bWlfY29udHJvbF9jciB7CisJCV9fdTggZW5hYmxlOwor CQlfX3U4IHBhZGRpbmcxOworCQlfX3UxNiBwYWRkaW5nMjsKKwkJX191MzIgY3I7CisJfTsKKwor OlJldHVybnM6CisKKzo6CisKKwlzdHJ1Y3Qga3ZtaV9lcnJvcl9jb2RlCisKK0VuYWJsZXMvZGlz YWJsZXMgaW50cm9zcGVjdGlvbiBmb3IgYSBzcGVjaWZpYyBjb250cm9sIHJlZ2lzdGVyIGFuZCBt dXN0CitiZSB1c2VkIGluIGFkZGl0aW9uIHRvICpLVk1JX0NPTlRST0xfRVZFTlRTKiB3aXRoIHRo ZSAqS1ZNSV9FVkVOVF9DUioKK0lEIHNldC4KKworOkVycm9yczoKKworKiAtS1ZNX0VJTlZBTCAt IHRoZSBzZWxlY3RlZCB2Q1BVIGlzIGludmFsaWQKKyogLUtWTV9FSU5WQUwgLSB0aGUgc3BlY2lm aWVkIGNvbnRyb2wgcmVnaXN0ZXIgaXMgbm90IHBhcnQgb2YgdGhlIENSMCwgQ1IzCisgICBvciBD UjQgc2V0CisqIC1LVk1fRUlOVkFMIC0gcGFkZGluZyBpcyBub3QgemVybworKiAtS1ZNX0VBR0FJ TiAtIHRoZSBzZWxlY3RlZCB2Q1BVIGNhbid0IGJlIGludHJvc3BlY3RlZCB5ZXQKKwogRXZlbnRz CiA9PT09PT0KIApAQCAtMTIzOCwzICsxMjczLDM4IEBAIGludHJvc3BlY3Rpb24gaGFzIGJlZW4g ZW5hYmxlZCBmb3IgdGhpcyBldmVudCAoc2VlICpLVk1JX0NPTlRST0xfRVZFTlRTKikuCiBgYGt2 bWlfZXZlbnRgYCwgZXhjZXB0aW9uL2ludGVycnVwdCBudW1iZXIgKHZlY3RvciksIGV4Y2VwdGlv bi9pbnRlcnJ1cHQKIHR5cGUsIGV4Y2VwdGlvbiBjb2RlIChgYGVycm9yX2NvZGVgYCkgYW5kIENS MiBhcmUgc2VudCB0byB0aGUgaW50cm9zcGVjdG9yLgogCis2LiBLVk1JX0VWRU5UX0NSCistLS0t LS0tLS0tLS0tLS0tCisKKzpBcmNoaXRlY3R1cmVzOiB4ODYKKzpWZXJzaW9uczogPj0gMQorOkFj dGlvbnM6IENPTlRJTlVFLCBDUkFTSAorOlBhcmFtZXRlcnM6CisKKzo6CisKKwlzdHJ1Y3Qga3Zt aV9ldmVudDsKKwlzdHJ1Y3Qga3ZtaV9ldmVudF9jciB7CisJCV9fdTE2IGNyOworCQlfX3UxNiBw YWRkaW5nWzNdOworCQlfX3U2NCBvbGRfdmFsdWU7CisJCV9fdTY0IG5ld192YWx1ZTsKKwl9Owor Cis6UmV0dXJuczoKKworOjoKKworCXN0cnVjdCBrdm1pX3ZjcHVfaGRyOworCXN0cnVjdCBrdm1p X2V2ZW50X3JlcGx5OworCXN0cnVjdCBrdm1pX2V2ZW50X2NyX3JlcGx5IHsKKwkJX191NjQgbmV3 X3ZhbDsKKwl9OworCitUaGlzIGV2ZW50IGlzIHNlbnQgd2hlbiBhIGNvbnRyb2wgcmVnaXN0ZXIg aXMgZ29pbmcgdG8gYmUgY2hhbmdlZCBhbmQgdGhlCitpbnRyb3NwZWN0aW9uIGhhcyBiZWVuIGVu YWJsZWQgZm9yIHRoaXMgZXZlbnQgYW5kIGZvciB0aGlzIHNwZWNpZmljCityZWdpc3RlciAoc2Vl ICoqS1ZNSV9DT05UUk9MX0VWRU5UUyoqKS4KKworYGBrdm1pX2V2ZW50YGAsIHRoZSBjb250cm9s IHJlZ2lzdGVyIG51bWJlciwgdGhlIG9sZCB2YWx1ZSBhbmQgdGhlIG5ldyB2YWx1ZQorYXJlIHNl bnQgdG8gdGhlIGludHJvc3BlY3Rvci4gVGhlICpDT05USU5VRSogYWN0aW9uIHdpbGwgc2V0IHRo ZSBgYG5ld192YWxgYC4KKwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hv c3QuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKaW5kZXggN2VlNmUxZmY1ZWU5 Li4yMmYwOGYyNzMyY2MgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0 LmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaApAQCAtMTAxMyw2ICsxMDEz LDcgQEAgc3RydWN0IGt2bV94ODZfb3BzIHsKIAlib29sICgqaGFzX2VtdWxhdGVkX21zcikoaW50 IGluZGV4KTsKIAl2b2lkICgqY3B1aWRfdXBkYXRlKShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwog CisJdm9pZCAoKmNyM193cml0ZV9leGl0aW5nKShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wg ZW5hYmxlKTsKIAlib29sICgqbmVzdGVkX3BhZ2VmYXVsdCkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1 KTsKIAlib29sICgqc3B0X2ZhdWx0KShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogCkBAIC0xNjIy LDUgKzE2MjMsNiBAQCBzdGF0aWMgaW5saW5lIGludCBrdm1fY3B1X2dldF9hcGljaWQoaW50IG1w c19jcHUpCiAKIGJvb2wga3ZtX21tdV9uZXN0ZWRfcGFnZWZhdWx0KHN0cnVjdCBrdm1fdmNwdSAq dmNwdSk7CiBib29sIGt2bV9zcHRfZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKK3ZvaWQg a3ZtX2NvbnRyb2xfY3IzX3dyaXRlX2V4aXRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29s IGVuYWJsZSk7CiAKICNlbmRpZiAvKiBfQVNNX1g4Nl9LVk1fSE9TVF9IICovCmRpZmYgLS1naXQg YS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1pX2hvc3QuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNt L2t2bWlfaG9zdC5oCmluZGV4IDdhYjZkZDcxYTBjMi4uODNhMDk4ZGM4OTM5IDEwMDY0NAotLS0g YS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1pX2hvc3QuaAorKysgYi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9rdm1pX2hvc3QuaApAQCAtOSw0ICs5LDIwIEBAIHN0cnVjdCBrdm1pX2FyY2hfbWVtX2Fj Y2VzcyB7CiAJdW5zaWduZWQgbG9uZyBhY3RpdmVbS1ZNX1BBR0VfVFJBQ0tfTUFYXVtCSVRTX1RP X0xPTkdTKEtWTV9NRU1fU0xPVFNfTlVNKV07CiB9OwogCisjaWZkZWYgQ09ORklHX0tWTV9JTlRS T1NQRUNUSU9OCisKK2Jvb2wga3ZtaV9jcl9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVu c2lnbmVkIGludCBjciwKKwkJICAgdW5zaWduZWQgbG9uZyBvbGRfdmFsdWUsIHVuc2lnbmVkIGxv bmcgKm5ld192YWx1ZSk7CisKKyNlbHNlIC8qIENPTkZJR19LVk1fSU5UUk9TUEVDVElPTiAqLwor CitzdGF0aWMgaW5saW5lIGJvb2wga3ZtaV9jcl9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUs IHVuc2lnbmVkIGludCBjciwKKwkJCQkgdW5zaWduZWQgbG9uZyBvbGRfdmFsdWUsCisJCQkJIHVu c2lnbmVkIGxvbmcgKm5ld192YWx1ZSkKK3sKKwlyZXR1cm4gdHJ1ZTsKK30KKworI2VuZGlmIC8q IENPTkZJR19LVk1fSU5UUk9TUEVDVElPTiAqLworCiAjZW5kaWYgLyogX0FTTV9YODZfS1ZNSV9I T1NUX0ggKi8KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20va3ZtaS5oIGIv YXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9rdm1pLmgKaW5kZXggYjA3NGFkNzM1ZTg0Li5jOTgz YjRiZDJjNzIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20va3ZtaS5oCisr KyBiL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20va3ZtaS5oCkBAIC02MSw0ICs2MSwyMiBAQCBz dHJ1Y3Qga3ZtaV9nZXRfY3B1aWRfcmVwbHkgewogCV9fdTMyIGVkeDsKIH07CiAKK3N0cnVjdCBr dm1pX2NvbnRyb2xfY3IgeworCV9fdTggZW5hYmxlOworCV9fdTggcGFkZGluZzE7CisJX191MTYg cGFkZGluZzI7CisJX191MzIgY3I7Cit9OworCitzdHJ1Y3Qga3ZtaV9ldmVudF9jciB7CisJX191 MTYgY3I7CisJX191MTYgcGFkZGluZ1szXTsKKwlfX3U2NCBvbGRfdmFsdWU7CisJX191NjQgbmV3 X3ZhbHVlOworfTsKKworc3RydWN0IGt2bWlfZXZlbnRfY3JfcmVwbHkgeworCV9fdTY0IG5ld192 YWw7Cit9OworCiAjZW5kaWYgLyogX1VBUElfQVNNX1g4Nl9LVk1JX0ggKi8KZGlmZiAtLWdpdCBh L2FyY2gveDg2L2t2bS9rdm1pLmMgYi9hcmNoL3g4Ni9rdm0va3ZtaS5jCmluZGV4IDhjMTgwMzBk MTJmNC4uYjNjYWIwZGI2YTcwIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0va3ZtaS5jCisrKyBi L2FyY2gveDg2L2t2bS9rdm1pLmMKQEAgLTE3MSw2ICsxNzEsNzIgQEAgdm9pZCBrdm1pX2FyY2hf c2V0dXBfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtaV9ldmVudCAqZXYp CiAJa3ZtaV9nZXRfbXNycyh2Y3B1LCBldmVudCk7CiB9CiAKK3N0YXRpYyB1MzIga3ZtaV9zZW5k X2NyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGNyLCB1NjQgb2xkX3ZhbHVlLAorCQkJdTY0 IG5ld192YWx1ZSwgdTY0ICpyZXRfdmFsdWUpCit7CisJc3RydWN0IGt2bWlfZXZlbnRfY3IgZSA9 IHsKKwkJLmNyID0gY3IsCisJCS5vbGRfdmFsdWUgPSBvbGRfdmFsdWUsCisJCS5uZXdfdmFsdWUg PSBuZXdfdmFsdWUKKwl9OworCXN0cnVjdCBrdm1pX2V2ZW50X2NyX3JlcGx5IHI7CisJaW50IGVy ciwgYWN0aW9uOworCisJZXJyID0ga3ZtaV9zZW5kX2V2ZW50KHZjcHUsIEtWTUlfRVZFTlRfQ1Is ICZlLCBzaXplb2YoZSksCisJCQkgICAgICAmciwgc2l6ZW9mKHIpLCAmYWN0aW9uKTsKKwlpZiAo ZXJyKSB7CisJCSpyZXRfdmFsdWUgPSBuZXdfdmFsdWU7CisJCXJldHVybiBLVk1JX0VWRU5UX0FD VElPTl9DT05USU5VRTsKKwl9CisKKwkqcmV0X3ZhbHVlID0gci5uZXdfdmFsOworCXJldHVybiBh Y3Rpb247Cit9CisKK3N0YXRpYyBib29sIF9fa3ZtaV9jcl9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUsIHVuc2lnbmVkIGludCBjciwKKwkJCSAgICB1bnNpZ25lZCBsb25nIG9sZF92YWx1ZSwg dW5zaWduZWQgbG9uZyAqbmV3X3ZhbHVlKQoreworCXU2NCByZXRfdmFsdWU7CisJdTMyIGFjdGlv bjsKKwlib29sIHJldCA9IGZhbHNlOworCisJaWYgKCF0ZXN0X2JpdChjciwgSVZDUFUodmNwdSkt PmNyX21hc2spKQorCQlyZXR1cm4gdHJ1ZTsKKworCWFjdGlvbiA9IGt2bWlfc2VuZF9jcih2Y3B1 LCBjciwgb2xkX3ZhbHVlLCAqbmV3X3ZhbHVlLCAmcmV0X3ZhbHVlKTsKKwlzd2l0Y2ggKGFjdGlv bikgeworCWNhc2UgS1ZNSV9FVkVOVF9BQ1RJT05fQ09OVElOVUU6CisJCSpuZXdfdmFsdWUgPSBy ZXRfdmFsdWU7CisJCXJldCA9IHRydWU7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWt2bWlfaGFu ZGxlX2NvbW1vbl9ldmVudF9hY3Rpb25zKHZjcHUsIGFjdGlvbiwgIkNSIik7CisJfQorCisJcmV0 dXJuIHJldDsKK30KKworYm9vbCBrdm1pX2NyX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwg dW5zaWduZWQgaW50IGNyLAorCQkgICB1bnNpZ25lZCBsb25nIG9sZF92YWx1ZSwgdW5zaWduZWQg bG9uZyAqbmV3X3ZhbHVlKQoreworCXN0cnVjdCBrdm1pICppa3ZtOworCWJvb2wgcmV0ID0gdHJ1 ZTsKKworCWlmIChvbGRfdmFsdWUgPT0gKm5ld192YWx1ZSkKKwkJcmV0dXJuIHRydWU7CisKKwlp a3ZtID0ga3ZtaV9nZXQodmNwdS0+a3ZtKTsKKwlpZiAoIWlrdm0pCisJCXJldHVybiB0cnVlOwor CisJaWYgKGlzX2V2ZW50X2VuYWJsZWQodmNwdSwgS1ZNSV9FVkVOVF9DUikpCisJCXJldCA9IF9f a3ZtaV9jcl9ldmVudCh2Y3B1LCBjciwgb2xkX3ZhbHVlLCBuZXdfdmFsdWUpOworCisJa3ZtaV9w dXQodmNwdS0+a3ZtKTsKKworCXJldHVybiByZXQ7Cit9CisKIGJvb2wga3ZtaV9hcmNoX3BmX2V2 ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3QgZ3BhLCBndmFfdCBndmEsCiAJCQl1OCBh Y2Nlc3MpCiB7CkBAIC0zNDksNiArNDE1LDM1IEBAIGludCBrdm1pX2FyY2hfY21kX2luamVjdF9l eGNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1OCB2ZWN0b3IsCiAJcmV0dXJuIDA7CiB9 CiAKK2ludCBrdm1pX2FyY2hfY21kX2NvbnRyb2xfY3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAor CQkJICAgICBjb25zdCBzdHJ1Y3Qga3ZtaV9jb250cm9sX2NyICpyZXEpCit7CisJc3RydWN0IGt2 bWlfdmNwdSAqaXZjcHUgPSBJVkNQVSh2Y3B1KTsKKwl1MzIgY3IgPSByZXEtPmNyOworCisJaWYg KHJlcS0+cGFkZGluZzEgfHwgcmVxLT5wYWRkaW5nMikKKwkJcmV0dXJuIC1LVk1fRUlOVkFMOwor CisJc3dpdGNoIChjcikgeworCWNhc2UgMDoKKwkJYnJlYWs7CisJY2FzZSAzOgorCQlrdm1fY29u dHJvbF9jcjNfd3JpdGVfZXhpdGluZyh2Y3B1LCByZXEtPmVuYWJsZSk7CisJCWJyZWFrOworCWNh c2UgNDoKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1LVk1fRUlOVkFMOworCX0KKwor CWlmIChyZXEtPmVuYWJsZSkKKwkJc2V0X2JpdChjciwgaXZjcHUtPmNyX21hc2spOworCWVsc2UK KwkJY2xlYXJfYml0KGNyLCBpdmNwdS0+Y3JfbWFzayk7CisKKwlyZXR1cm4gMDsKK30KKwogc3Rh dGljIGNvbnN0IHN0cnVjdCB7CiAJdW5zaWduZWQgaW50IGFsbG93X2JpdDsKIAllbnVtIGt2bV9w YWdlX3RyYWNrX21vZGUgdHJhY2tfbW9kZTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0u YyBiL2FyY2gveDg2L2t2bS9zdm0uYwppbmRleCA2YjUzMzY5OGM3M2QuLmZjNzhiMDA1MmRlZSAx MDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3N2bS5jCisrKyBiL2FyY2gveDg2L2t2bS9zdm0uYwpA QCAtNzExMCw2ICs3MTEwLDEwIEBAIHN0YXRpYyBib29sIHN2bV9zcHRfZmF1bHQoc3RydWN0IGt2 bV92Y3B1ICp2Y3B1KQogCXJldHVybiAoc3ZtLT52bWNiLT5jb250cm9sLmV4aXRfY29kZSA9PSBT Vk1fRVhJVF9OUEYpOwogfQogCitzdGF0aWMgdm9pZCBzdm1fY3IzX3dyaXRlX2V4aXRpbmcoc3Ry dWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGVuYWJsZSkKK3sKK30KKwogc3RhdGljIHN0cnVjdCBr dm1feDg2X29wcyBzdm1feDg2X29wcyBfX3JvX2FmdGVyX2luaXQgPSB7CiAJLmNwdV9oYXNfa3Zt X3N1cHBvcnQgPSBoYXNfc3ZtLAogCS5kaXNhYmxlZF9ieV9iaW9zID0gaXNfZGlzYWJsZWQsCkBA IC03MTIxLDYgKzcxMjUsNyBAQCBzdGF0aWMgc3RydWN0IGt2bV94ODZfb3BzIHN2bV94ODZfb3Bz IF9fcm9fYWZ0ZXJfaW5pdCA9IHsKIAkuY3B1X2hhc19hY2NlbGVyYXRlZF90cHIgPSBzdm1fY3B1 X2hhc19hY2NlbGVyYXRlZF90cHIsCiAJLmhhc19lbXVsYXRlZF9tc3IgPSBzdm1faGFzX2VtdWxh dGVkX21zciwKIAorCS5jcjNfd3JpdGVfZXhpdGluZyA9IHN2bV9jcjNfd3JpdGVfZXhpdGluZywK IAkubmVzdGVkX3BhZ2VmYXVsdCA9IHN2bV9uZXN0ZWRfcGFnZWZhdWx0LAogCS5zcHRfZmF1bHQg PSBzdm1fc3B0X2ZhdWx0LAogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vdm14L3ZteC5jIGIv YXJjaC94ODYva3ZtL3ZteC92bXguYwppbmRleCA1ZDRiNjFhYWZmOWEuLjY0NTBjOGM0NDc3MSAx MDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3ZteC92bXguYworKysgYi9hcmNoL3g4Ni9rdm0vdm14 L3ZteC5jCkBAIC03Nzg0LDYgKzc3ODQsMTkgQEAgc3RhdGljIF9fZXhpdCB2b2lkIGhhcmR3YXJl X3Vuc2V0dXAodm9pZCkKIAlmcmVlX2t2bV9hcmVhKCk7CiB9CiAKK3N0YXRpYyB2b2lkIHZteF9j cjNfd3JpdGVfZXhpdGluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCisJCQkJCSBib29sIGVuYWJs ZSkKK3sKKwlpZiAoZW5hYmxlKQorCQl2bWNzX3NldF9iaXRzKENQVV9CQVNFRF9WTV9FWEVDX0NP TlRST0wsCisJCQkJQ1BVX0JBU0VEX0NSM19MT0FEX0VYSVRJTkcpOworCWVsc2UKKwkJdm1jc19j bGVhcl9iaXRzKENQVV9CQVNFRF9WTV9FWEVDX0NPTlRST0wsCisJCQkJQ1BVX0JBU0VEX0NSM19M T0FEX0VYSVRJTkcpOworCisJLyogVE9ETzogbmVzdGVkID8gdm1jczEyLT5jcHVfYmFzZWRfdm1f ZXhlY19jb250cm9sICovCit9CisKIHN0YXRpYyBib29sIHZteF9uZXN0ZWRfcGFnZWZhdWx0KHN0 cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKIAlpZiAodmNwdS0+YXJjaC5leGl0X3F1YWxpZmljYXRp b24gJiBFUFRfVklPTEFUSU9OX0dWQV9UUkFOU0xBVEVEKQpAQCAtNzgzMSw2ICs3ODQ0LDcgQEAg c3RhdGljIHN0cnVjdCBrdm1feDg2X29wcyB2bXhfeDg2X29wcyBfX3JvX2FmdGVyX2luaXQgPSB7 CiAJLmNwdV9oYXNfYWNjZWxlcmF0ZWRfdHByID0gcmVwb3J0X2ZsZXhwcmlvcml0eSwKIAkuaGFz X2VtdWxhdGVkX21zciA9IHZteF9oYXNfZW11bGF0ZWRfbXNyLAogCisJLmNyM193cml0ZV9leGl0 aW5nID0gdm14X2NyM193cml0ZV9leGl0aW5nLAogCS5uZXN0ZWRfcGFnZWZhdWx0ID0gdm14X25l c3RlZF9wYWdlZmF1bHQsCiAJLnNwdF9mYXVsdCA9IHZteF9zcHRfZmF1bHQsCiAKZGlmZiAtLWdp dCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuYwppbmRleCBlMzhjMGI5 NWEwZTcuLjJjZDE0NmNjYzZmZiAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jCisrKyBi L2FyY2gveDg2L2t2bS94ODYuYwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2t2 bV9ob3N0Lmg+CiAjaW5jbHVkZSA8dWFwaS9saW51eC9rdm1pLmg+CiAjaW5jbHVkZSA8bGludXgv a3ZtaS5oPgorI2luY2x1ZGUgPGFzbS9rdm1pX2hvc3QuaD4KICNpbmNsdWRlICJpcnEuaCIKICNp bmNsdWRlICJtbXUuaCIKICNpbmNsdWRlICJpODI1NC5oIgpAQCAtNzc3LDYgKzc3OCw5IEBAIGlu dCBrdm1fc2V0X2NyMChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgY3IwKQog CWlmICghKGNyMCAmIFg4Nl9DUjBfUEcpICYmIGt2bV9yZWFkX2NyNF9iaXRzKHZjcHUsIFg4Nl9D UjRfUENJREUpKQogCQlyZXR1cm4gMTsKIAorCWlmICgha3ZtaV9jcl9ldmVudCh2Y3B1LCAwLCBv bGRfY3IwLCAmY3IwKSkKKwkJcmV0dXJuIDE7CisKIAlrdm1feDg2X29wcy0+c2V0X2NyMCh2Y3B1 LCBjcjApOwogCiAJaWYgKChjcjAgXiBvbGRfY3IwKSAmIFg4Nl9DUjBfUEcpIHsKQEAgLTkyMSw2 ICs5MjUsOSBAQCBpbnQga3ZtX3NldF9jcjQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25l ZCBsb25nIGNyNCkKIAkJCXJldHVybiAxOwogCX0KIAorCWlmICgha3ZtaV9jcl9ldmVudCh2Y3B1 LCA0LCBvbGRfY3I0LCAmY3I0KSkKKwkJcmV0dXJuIDE7CisKIAlpZiAoa3ZtX3g4Nl9vcHMtPnNl dF9jcjQodmNwdSwgY3I0KSkKIAkJcmV0dXJuIDE7CiAKQEAgLTkzNyw2ICs5NDQsNyBAQCBFWFBP UlRfU1lNQk9MX0dQTChrdm1fc2V0X2NyNCk7CiAKIGludCBrdm1fc2V0X2NyMyhzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgY3IzKQogeworCXVuc2lnbmVkIGxvbmcgb2xkX2Ny MyA9IGt2bV9yZWFkX2NyMyh2Y3B1KTsKIAlib29sIHNraXBfdGxiX2ZsdXNoID0gZmFsc2U7CiAj aWZkZWYgQ09ORklHX1g4Nl82NAogCWJvb2wgcGNpZF9lbmFibGVkID0ga3ZtX3JlYWRfY3I0X2Jp dHModmNwdSwgWDg2X0NSNF9QQ0lERSk7CkBAIC05NDcsNyArOTU1LDcgQEAgaW50IGt2bV9zZXRf Y3IzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjMpCiAJfQogI2VuZGlm CiAKLQlpZiAoY3IzID09IGt2bV9yZWFkX2NyMyh2Y3B1KSAmJiAhcGRwdHJzX2NoYW5nZWQodmNw dSkpIHsKKwlpZiAoY3IzID09IG9sZF9jcjMgJiYgIXBkcHRyc19jaGFuZ2VkKHZjcHUpKSB7CiAJ CWlmICghc2tpcF90bGJfZmx1c2gpIHsKIAkJCWt2bV9tbXVfc3luY19yb290cyh2Y3B1KTsKIAkJ CWt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9UTEJfRkxVU0gsIHZjcHUpOwpAQCAtOTYyLDYgKzk3 MCw5IEBAIGludCBrdm1fc2V0X2NyMyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxv bmcgY3IzKQogCQkgICAhbG9hZF9wZHB0cnModmNwdSwgdmNwdS0+YXJjaC53YWxrX21tdSwgY3Iz KSkKIAkJcmV0dXJuIDE7CiAKKwlpZiAoIWt2bWlfY3JfZXZlbnQodmNwdSwgMywgb2xkX2NyMywg JmNyMykpCisJCXJldHVybiAxOworCiAJa3ZtX21tdV9uZXdfY3IzKHZjcHUsIGNyMywgc2tpcF90 bGJfZmx1c2gpOwogCXZjcHUtPmFyY2guY3IzID0gY3IzOwogCV9fc2V0X2JpdChWQ1BVX0VYUkVH X0NSMywgKHVsb25nICopJnZjcHUtPmFyY2gucmVnc19hdmFpbCk7CkBAIC0xMDA3Miw2ICsxMDA4 MywxMiBAQCBib29sIGt2bV92ZWN0b3JfaGFzaGluZ19lbmFibGVkKHZvaWQpCiB9CiBFWFBPUlRf U1lNQk9MX0dQTChrdm1fdmVjdG9yX2hhc2hpbmdfZW5hYmxlZCk7CiAKK3ZvaWQga3ZtX2NvbnRy b2xfY3IzX3dyaXRlX2V4aXRpbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGVuYWJsZSkK K3sKKwlrdm1feDg2X29wcy0+Y3IzX3dyaXRlX2V4aXRpbmcodmNwdSwgZW5hYmxlKTsKK30KK0VY UE9SVF9TWU1CT0woa3ZtX2NvbnRyb2xfY3IzX3dyaXRlX2V4aXRpbmcpOworCiBib29sIGt2bV9z cHRfZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewogCXJldHVybiBrdm1feDg2X29wcy0+ c3B0X2ZhdWx0KHZjcHUpOwpkaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtaV9pbnQuaCBiL3ZpcnQv a3ZtL2t2bWlfaW50LmgKaW5kZXggMmVhZGViNmVmZGU4Li5jOTJiZTNjMmMxMzEgMTAwNjQ0Ci0t LSBhL3ZpcnQva3ZtL2t2bWlfaW50LmgKKysrIGIvdmlydC9rdm0va3ZtaV9pbnQuaApAQCAtMjYs NiArMjYsOCBAQAogCiAjZGVmaW5lIElWQ1BVKHZjcHUpICgoc3RydWN0IGt2bWlfdmNwdSAqKSgo dmNwdSktPmt2bWkpKQogCisjZGVmaW5lIEtWTUlfTlVNX0NSIDkKKwogI2RlZmluZSBLVk1JX0NU WF9EQVRBX1NJWkUgRklFTERfU0laRU9GKHN0cnVjdCBrdm1pX2V2ZW50X3BmX3JlcGx5LCBjdHhf ZGF0YSkKIAogI2RlZmluZSBLVk1JX01TR19TSVpFX0FMTE9DIChzaXplb2Yoc3RydWN0IGt2bWlf bXNnX2hkcikgKyBLVk1JX01TR19TSVpFKQpAQCAtMTE3LDYgKzExOSw3IEBAIHN0cnVjdCBrdm1p X3ZjcHUgewogCXN0cnVjdCBrdm1fcmVncyBkZWxheWVkX3JlZ3M7CiAKIAlERUNMQVJFX0JJVE1B UChldl9tYXNrLCBLVk1JX05VTV9FVkVOVFMpOworCURFQ0xBUkVfQklUTUFQKGNyX21hc2ssIEtW TUlfTlVNX0NSKTsKIAogCXN0cnVjdCBsaXN0X2hlYWQgam9iX2xpc3Q7CiAJc3BpbmxvY2tfdCBq b2JfbG9jazsKQEAgLTIwNCw2ICsyMDcsOCBAQCBpbnQga3ZtaV9jbWRfY29udHJvbF9ldmVudHMo c3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgZXZlbnRfaWQsCiBpbnQga3ZtaV9j bWRfY29udHJvbF92bV9ldmVudHMoc3RydWN0IGt2bWkgKmlrdm0sIHVuc2lnbmVkIGludCBldmVu dF9pZCwKIAkJCSAgICAgICBib29sIGVuYWJsZSk7CiBpbnQga3ZtaV9jbWRfcGF1c2VfdmNwdShz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgd2FpdCk7CitzdHJ1Y3Qga3ZtaSAqIF9fbXVzdF9j aGVjayBrdm1pX2dldChzdHJ1Y3Qga3ZtICprdm0pOwordm9pZCBrdm1pX3B1dChzdHJ1Y3Qga3Zt ICprdm0pOwogaW50IGt2bWlfcnVuX2pvYnNfYW5kX3dhaXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1 KTsKIHZvaWQga3ZtaV9wb3N0X3JlcGx5KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiBpbnQga3Zt aV9hZGRfam9iKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKQEAgLTI1MSw1ICsyNTYsNyBAQCBpbnQg a3ZtaV9hcmNoX2NtZF9nZXRfdmNwdV9pbmZvKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKIGludCBr dm1pX2FyY2hfY21kX2luamVjdF9leGNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1OCB2 ZWN0b3IsCiAJCQkJICAgYm9vbCBlcnJvcl9jb2RlX3ZhbGlkLCB1MzIgZXJyb3JfY29kZSwKIAkJ CQkgICB1NjQgYWRkcmVzcyk7CitpbnQga3ZtaV9hcmNoX2NtZF9jb250cm9sX2NyKHN0cnVjdCBr dm1fdmNwdSAqdmNwdSwKKwkJCSAgICAgY29uc3Qgc3RydWN0IGt2bWlfY29udHJvbF9jciAqcmVx KTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS92aXJ0L2t2bS9rdm1pX21zZy5jIGIvdmlydC9rdm0v a3ZtaV9tc2cuYwppbmRleCBlODBkMjhkYmIwNjEuLmQ0ZjU0NTk3MjJiYiAxMDA2NDQKLS0tIGEv dmlydC9rdm0va3ZtaV9tc2cuYworKysgYi92aXJ0L2t2bS9rdm1pX21zZy5jCkBAIC0yNCw2ICsy NCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBtc2dfSURzW10gPSB7CiAJW0tWTUlfQ0hF Q0tfQ09NTUFORF0gICAgICAgICA9ICJLVk1JX0NIRUNLX0NPTU1BTkQiLAogCVtLVk1JX0NIRUNL X0VWRU5UXSAgICAgICAgICAgPSAiS1ZNSV9DSEVDS19FVkVOVCIsCiAJW0tWTUlfQ09OVFJPTF9D TURfUkVTUE9OU0VdICA9ICJLVk1JX0NPTlRST0xfQ01EX1JFU1BPTlNFIiwKKwlbS1ZNSV9DT05U Uk9MX0NSXSAgICAgICAgICAgID0gIktWTUlfQ09OVFJPTF9DUiIsCiAJW0tWTUlfQ09OVFJPTF9F VkVOVFNdICAgICAgICA9ICJLVk1JX0NPTlRST0xfRVZFTlRTIiwKIAlbS1ZNSV9DT05UUk9MX1NQ UF0gICAgICAgICAgID0gIktWTUlfQ09OVFJPTF9TUFAiLAogCVtLVk1JX0NPTlRST0xfVk1fRVZF TlRTXSAgICAgPSAiS1ZNSV9DT05UUk9MX1ZNX0VWRU5UUyIsCkBAIC02NjIsNiArNjYzLDE3IEBA IHN0YXRpYyBpbnQgaGFuZGxlX2NvbnRyb2xfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwK IAlyZXR1cm4gcmVwbHlfY2IodmNwdSwgbXNnLCBlYywgTlVMTCwgMCk7CiB9CiAKK3N0YXRpYyBp bnQgaGFuZGxlX2NvbnRyb2xfY3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAorCQkJICAgICBjb25z dCBzdHJ1Y3Qga3ZtaV9tc2dfaGRyICptc2csIGNvbnN0IHZvaWQgKnJlcSwKKwkJCSAgICAgdmNw dV9yZXBseV9mY3QgcmVwbHlfY2IpCit7CisJaW50IGVjOworCisJZWMgPSBrdm1pX2FyY2hfY21k X2NvbnRyb2xfY3IodmNwdSwgcmVxKTsKKworCXJldHVybiByZXBseV9jYih2Y3B1LCBtc2csIGVj LCBOVUxMLCAwKTsKK30KKwogc3RhdGljIGludCBoYW5kbGVfZ2V0X2NwdWlkKHN0cnVjdCBrdm1f dmNwdSAqdmNwdSwKIAkJCSAgICBjb25zdCBzdHJ1Y3Qga3ZtaV9tc2dfaGRyICptc2csCiAJCQkg ICAgY29uc3Qgdm9pZCAqcmVxLCB2Y3B1X3JlcGx5X2ZjdCByZXBseV9jYikKQEAgLTY4NSw2ICs2 OTcsNyBAQCBzdGF0aWMgaW50IGhhbmRsZV9nZXRfY3B1aWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1 LAogc3RhdGljIGludCgqY29uc3QgbXNnX3ZjcHVbXSkoc3RydWN0IGt2bV92Y3B1ICosCiAJCQkg ICAgICBjb25zdCBzdHJ1Y3Qga3ZtaV9tc2dfaGRyICosIGNvbnN0IHZvaWQgKiwKIAkJCSAgICAg IHZjcHVfcmVwbHlfZmN0KSA9IHsKKwlbS1ZNSV9DT05UUk9MX0NSXSAgICAgICA9IGhhbmRsZV9j b250cm9sX2NyLAogCVtLVk1JX0NPTlRST0xfRVZFTlRTXSAgID0gaGFuZGxlX2NvbnRyb2xfZXZl bnRzLAogCVtLVk1JX0VWRU5UX1JFUExZXSAgICAgID0gaGFuZGxlX2V2ZW50X3JlcGx5LAogCVtL Vk1JX0dFVF9DUFVJRF0gICAgICAgID0gaGFuZGxlX2dldF9jcHVpZCwKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KVmlydHVhbGl6YXRpb24gbWFpbGluZyBs aXN0ClZpcnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlz dHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3ZpcnR1YWxpemF0aW9u