From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [RFC PATCH v6 61/92] kvm: introspection: add KVMI_EVENT_BREAKPOINT Date: Fri, 9 Aug 2019 19:00:16 +0300 Message-ID: <20190809160047.8319-62-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 , =?UTF-8?q?Nicu=C8=99or=20C=C3=AE=C8=9Bu?= , Mathieu Tarral , Stefan Hajnoczi , Paolo Bonzini , Zhang@mail.linuxfoundation.org, =?UTF-8?q?Mihai=20Don=C8=9Bu?= List-Id: virtualization@lists.linuxfoundation.org RnJvbTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgoKVGhpcyBldmVudCBp cyBzZW50IHdoZW4gYSBicmVha3BvaW50IHdhcyByZWFjaGVkLiBJdCBoYXMgdG8KYmUgZW5hYmxl ZCB3aXRoIHRoZSBLVk1JX0NPTlRST0xfRVZFTlRTIGNvbW1hbmQgZmlyc3QuCgpUaGUgaW50cm9z cGVjdGlvbiB0b29sIGNhbiBwbGFjZSBicmVha3BvaW50cyBhbmQgdXNlIHRoZW0gYXMgbm90aWZp Y2F0aW9uCmZvciB3aGVuIHRoZSBPUyBvciBhbiBhcHBsaWNhdGlvbiBoYXMgcmVhY2hlZCBhIGNl cnRhaW4gc3RhdGUgb3IgaXMKdHJ5aW5nIHRvIHBlcmZvcm0gYSBjZXJ0YWluIG9wZXJhdGlvbiAo bGlrZSBjcmVhdGluZyBhIHByb2Nlc3MpLgoKU2lnbmVkLW9mZi1ieTogTWloYWkgRG9uyJt1IDxt ZG9udHVAYml0ZGVmZW5kZXIuY29tPgpDby1kZXZlbG9wZWQtYnk6IE5pY3XImW9yIEPDrsibdSA8 bmNpdHVAYml0ZGVmZW5kZXIuY29tPgpTaWduZWQtb2ZmLWJ5OiBOaWN1yJlvciBDw67Im3UgPG5j aXR1QGJpdGRlZmVuZGVyLmNvbT4KU2lnbmVkLW9mZi1ieTogQWRhbGJlcnQgTGF6xINyIDxhbGF6 YXJAYml0ZGVmZW5kZXIuY29tPgotLS0KIERvY3VtZW50YXRpb24vdmlydHVhbC9rdm0va3ZtaS5y c3QgfCAzNiArKysrKysrKysrKysrCiBhcmNoL3g4Ni9rdm0va3ZtaS5jICAgICAgICAgICAgICAg IHwgMjAgKysrKysrKwogYXJjaC94ODYva3ZtL3N2bS5jICAgICAgICAgICAgICAgICB8ICA2ICsr KwogYXJjaC94ODYva3ZtL3ZteC92bXguYyAgICAgICAgICAgICB8IDE3ICsrKystLQogYXJjaC94 ODYva3ZtL3g4Ni5jICAgICAgICAgICAgICAgICB8IDEyICsrKysrCiBpbmNsdWRlL2xpbnV4L2t2 bV9ob3N0LmggICAgICAgICAgIHwgIDIgKwogaW5jbHVkZS9saW51eC9rdm1pLmggICAgICAgICAg ICAgICB8ICA3ICsrKwogaW5jbHVkZS91YXBpL2xpbnV4L2t2bWkuaCAgICAgICAgICB8ICA2ICsr KwogdmlydC9rdm0va3ZtaS5jICAgICAgICAgICAgICAgICAgICB8IDg0ICsrKysrKysrKysrKysr KysrKysrKysrKysrKystLQogdmlydC9rdm0va3ZtaV9pbnQuaCAgICAgICAgICAgICAgICB8ICAz ICsrCiB2aXJ0L2t2bS9rdm1pX21zZy5jICAgICAgICAgICAgICAgIHwgMTcgKysrKysrCiAxMSBm aWxlcyBjaGFuZ2VkLCAyMDEgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2t2bWkucnN0IGIvRG9jdW1lbnRhdGlvbi92 aXJ0dWFsL2t2bS9rdm1pLnJzdAppbmRleCAxZDI0MzE2Mzk3NzAuLmRhMjE2NDE1YmYzMiAxMDA2 NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9rdm1pLnJzdAorKysgYi9Eb2N1bWVu dGF0aW9uL3ZpcnR1YWwva3ZtL2t2bWkucnN0CkBAIC0xNDY5LDMgKzE0NjksMzkgQEAgdG8gYmUg Y2hhbmdlZCBhbmQgdGhlIGludHJvc3BlY3Rpb24gaGFzIGJlZW4gZW5hYmxlZCBmb3IgdGhpcyBl dmVudAogKHNlZSAqS1ZNSV9DT05UUk9MX0VWRU5UUyopLgogCiBgYGt2bWlfZXZlbnRgYCBpcyBz ZW50IHRvIHRoZSBpbnRyb3NwZWN0b3IuCisKKzkuIEtWTUlfRVZFTlRfQlJFQUtQT0lOVAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzpBcmNoaXRlY3R1cmVzOiB4ODYKKzpWZXJzaW9uczog Pj0gMQorOkFjdGlvbnM6IENPTlRJTlVFLCBDUkFTSCwgUkVUUlkKKzpQYXJhbWV0ZXJzOgorCis6 OgorCisJc3RydWN0IGt2bWlfZXZlbnQ7CisJc3RydWN0IGt2bWlfZXZlbnRfYnJlYWtwb2ludCB7 CisJCV9fdTY0IGdwYTsKKwkJX191OCBpbnNuX2xlbjsKKwkJX191OCBwYWRkaW5nWzddOworCX07 CisKKzpSZXR1cm5zOgorCis6OgorCisJc3RydWN0IGt2bWlfdmNwdV9oZHI7CisJc3RydWN0IGt2 bWlfZXZlbnRfcmVwbHk7CisKK1RoaXMgZXZlbnQgaXMgc2VudCB3aGVuIGEgYnJlYWtwb2ludCB3 YXMgcmVhY2hlZCBhbmQgdGhlIGludHJvc3BlY3Rpb24gaGFzCitiZWVuIGVuYWJsZWQgZm9yIHRo aXMgZXZlbnQgKHNlZSAqS1ZNSV9DT05UUk9MX0VWRU5UUyopLgorCitTb21lIG9mIHRoZXNlIGJy ZWFrcG9pbnRzIGNvdWxkIGhhdmUgYmVlbiBpbmplY3RlZCBieSB0aGUgaW50cm9zcGVjdG9yLAor cGxhY2VkIGluIHRoZSBzbGFjayBzcGFjZSBvZiB2YXJpb3VzIGZ1bmN0aW9ucyBhbmQgdXNlZCBh cyBub3RpZmljYXRpb24KK2ZvciB3aGVuIHRoZSBPUyBvciBhbiBhcHBsaWNhdGlvbiBoYXMgcmVh Y2hlZCBhIGNlcnRhaW4gc3RhdGUgb3IgaXMKK3RyeWluZyB0byBwZXJmb3JtIGEgY2VydGFpbiBv cGVyYXRpb24gKGxpa2UgY3JlYXRpbmcgYSBwcm9jZXNzKS4KKworYGBrdm1pX2V2ZW50YGAgYW5k IHRoZSBndWVzdCBwaHlzaWNhbCBhZGRyZXNzIGFyZSBzZW50IHRvIHRoZSBpbnRyb3NwZWN0b3Iu CisKK1RoZSAqUkVUUlkqIGFjdGlvbiBpcyB1c2VkIGJ5IHRoZSBpbnRyb3NwZWN0b3IgZm9yIGl0 cyBvd24gYnJlYWtwb2ludHMuCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0va3ZtaS5jIGIvYXJj aC94ODYva3ZtL2t2bWkuYwppbmRleCAwZTljOTFkMmYyODIuLmU5OTgyMjNiY2ExZSAxMDA2NDQK LS0tIGEvYXJjaC94ODYva3ZtL2t2bWkuYworKysgYi9hcmNoL3g4Ni9rdm0va3ZtaS5jCkBAIC00 MjgsNiArNDI4LDI2IEBAIHZvaWQga3ZtaV94c2V0YnZfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2 Y3B1KQogCWt2bWlfcHV0KHZjcHUtPmt2bSk7CiB9CiAKK3ZvaWQga3ZtaV9hcmNoX2JyZWFrcG9p bnRfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgZ3ZhLCB1OCBpbnNuX2xlbikKK3sK Kwl1MzIgYWN0aW9uOworCXU2NCBncGE7CisKKwlncGEgPSBrdm1fbW11X2d2YV90b19ncGFfc3lz dGVtKHZjcHUsIGd2YSwgTlVMTCk7CisKKwlhY3Rpb24gPSBrdm1pX21zZ19zZW5kX2JwKHZjcHUs IGdwYSwgaW5zbl9sZW4pOworCXN3aXRjaCAoYWN0aW9uKSB7CisJY2FzZSBLVk1JX0VWRU5UX0FD VElPTl9DT05USU5VRToKKwkJa3ZtX2FyY2hfcXVldWVfYnAodmNwdSk7CisJCWJyZWFrOworCWNh c2UgS1ZNSV9FVkVOVF9BQ1RJT05fUkVUUlk6CisJCS8qIHJpcCB3YXMgbW9zdCBsaWtlbHkgYWRq dXN0ZWQgcGFzdCB0aGUgSU5UIDMgaW5zdHJ1Y3Rpb24gKi8KKwkJYnJlYWs7CisJZGVmYXVsdDoK KwkJa3ZtaV9oYW5kbGVfY29tbW9uX2V2ZW50X2FjdGlvbnModmNwdSwgYWN0aW9uLCAiQlAiKTsK Kwl9Cit9CisKIGJvb2wga3ZtaV9hcmNoX3BmX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwg Z3BhX3QgZ3BhLCBndmFfdCBndmEsCiAJCQl1OCBhY2Nlc3MpCiB7CmRpZmYgLS1naXQgYS9hcmNo L3g4Ni9rdm0vc3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtLmMKaW5kZXggZTQ2YTRjNDIzNTQ1Li5i NGU1OWVmMDQwYjcgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9zdm0uYworKysgYi9hcmNoL3g4 Ni9rdm0vc3ZtLmMKQEAgLTE4LDYgKzE4LDcgQEAKICNkZWZpbmUgcHJfZm10KGZtdCkgIlNWTTog IiBmbXQKIAogI2luY2x1ZGUgPGxpbnV4L2t2bV9ob3N0Lmg+CisjaW5jbHVkZSA8bGludXgva3Zt aS5oPgogI2luY2x1ZGUgPGFzbS9rdm1pX2hvc3QuaD4KIAogI2luY2x1ZGUgImlycS5oIgpAQCAt MjcyMiw2ICsyNzIzLDExIEBAIHN0YXRpYyBpbnQgYnBfaW50ZXJjZXB0aW9uKHN0cnVjdCB2Y3B1 X3N2bSAqc3ZtKQogewogCXN0cnVjdCBrdm1fcnVuICprdm1fcnVuID0gc3ZtLT52Y3B1LnJ1bjsK IAorCWlmICgha3ZtaV9icmVha3BvaW50X2V2ZW50KCZzdm0tPnZjcHUsCisJCXN2bS0+dm1jYi0+ c2F2ZS5jcy5iYXNlICsgc3ZtLT52bWNiLT5zYXZlLnJpcCwKKwkJc3ZtLT52bWNiLT5jb250cm9s Lmluc25fbGVuKSkKKwkJcmV0dXJuIDE7CisKIAlrdm1fcnVuLT5leGl0X3JlYXNvbiA9IEtWTV9F WElUX0RFQlVHOwogCWt2bV9ydW4tPmRlYnVnLmFyY2gucGMgPSBzdm0tPnZtY2ItPnNhdmUuY3Mu YmFzZSArIHN2bS0+dm1jYi0+c2F2ZS5yaXA7CiAJa3ZtX3J1bi0+ZGVidWcuYXJjaC5leGNlcHRp b24gPSBCUF9WRUNUT1I7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vdm14L3ZteC5jIGIvYXJj aC94ODYva3ZtL3ZteC92bXguYwppbmRleCBmZmY0MWFkY2RmZmUuLmQ1NjBiNTgzYmYzMCAxMDA2 NDQKLS0tIGEvYXJjaC94ODYva3ZtL3ZteC92bXguYworKysgYi9hcmNoL3g4Ni9rdm0vdm14L3Zt eC5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CiAjaW5jbHVk ZSA8bGludXgva3ZtX2hvc3QuaD4KICNpbmNsdWRlIDxhc20va3ZtaV9ob3N0Lmg+CisjaW5jbHVk ZSA8bGludXgva3ZtaS5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGxp bnV4L21vZHVsZXBhcmFtLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kX2RldmljZXRhYmxlLmg+CkBA IC00NDg0LDcgKzQ0ODUsNyBAQCBzdGF0aWMgaW50IGhhbmRsZV9leGNlcHRpb24oc3RydWN0IGt2 bV92Y3B1ICp2Y3B1KQogCXN0cnVjdCB2Y3B1X3ZteCAqdm14ID0gdG9fdm14KHZjcHUpOwogCXN0 cnVjdCBrdm1fcnVuICprdm1fcnVuID0gdmNwdS0+cnVuOwogCXUzMiBpbnRyX2luZm8sIGV4X25v LCBlcnJvcl9jb2RlOwotCXVuc2lnbmVkIGxvbmcgY3IyLCByaXAsIGRyNjsKKwl1bnNpZ25lZCBs b25nIGNyMiwgZHI2OwogCXUzMiB2ZWN0X2luZm87CiAJZW51bSBlbXVsYXRpb25fcmVzdWx0IGVy OwogCkBAIC00NTYyLDcgKzQ1NjMsMTAgQEAgc3RhdGljIGludCBoYW5kbGVfZXhjZXB0aW9uKHN0 cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAkJa3ZtX3J1bi0+ZGVidWcuYXJjaC5kcjYgPSBkcjYgfCBE UjZfRklYRURfMTsKIAkJa3ZtX3J1bi0+ZGVidWcuYXJjaC5kcjcgPSB2bWNzX3JlYWRsKEdVRVNU X0RSNyk7CiAJCS8qIGZhbGwgdGhyb3VnaCAqLwotCWNhc2UgQlBfVkVDVE9SOgorCWNhc2UgQlBf VkVDVE9SOiB7CisJCXVuc2lnbmVkIGxvbmcgZ3ZhID0gdm1jc19yZWFkbChHVUVTVF9DU19CQVNF KSArCisJCQlrdm1fcmlwX3JlYWQodmNwdSk7CisKIAkJLyoKIAkJICogVXBkYXRlIGluc3RydWN0 aW9uIGxlbmd0aCBhcyB3ZSBtYXkgcmVpbmplY3QgI0JQIGZyb20KIAkJICogdXNlciBzcGFjZSB3 aGlsZSBpbiBndWVzdCBkZWJ1Z2dpbmcgbW9kZS4gUmVhZGluZyBpdCBmb3IKQEAgLTQ1NzAsMTEg KzQ1NzQsMTYgQEAgc3RhdGljIGludCBoYW5kbGVfZXhjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAq dmNwdSkKIAkJICovCiAJCXZteC0+dmNwdS5hcmNoLmV2ZW50X2V4aXRfaW5zdF9sZW4gPQogCQkJ dm1jc19yZWFkMzIoVk1fRVhJVF9JTlNUUlVDVElPTl9MRU4pOworCisJCWlmICgha3ZtaV9icmVh a3BvaW50X2V2ZW50KHZjcHUsIGd2YSwKKwkJCQkJICAgdm14LT52Y3B1LmFyY2guZXZlbnRfZXhp dF9pbnN0X2xlbikpCisJCQlyZXR1cm4gMTsKKwogCQlrdm1fcnVuLT5leGl0X3JlYXNvbiA9IEtW TV9FWElUX0RFQlVHOwotCQlyaXAgPSBrdm1fcmlwX3JlYWQodmNwdSk7Ci0JCWt2bV9ydW4tPmRl YnVnLmFyY2gucGMgPSB2bWNzX3JlYWRsKEdVRVNUX0NTX0JBU0UpICsgcmlwOworCQlrdm1fcnVu LT5kZWJ1Zy5hcmNoLnBjID0gZ3ZhOwogCQlrdm1fcnVuLT5kZWJ1Zy5hcmNoLmV4Y2VwdGlvbiA9 IGV4X25vOwogCQlicmVhazsKKwl9CiAJZGVmYXVsdDoKIAkJa3ZtX3J1bi0+ZXhpdF9yZWFzb24g PSBLVk1fRVhJVF9FWENFUFRJT047CiAJCWt2bV9ydW4tPmV4LmV4Y2VwdGlvbiA9IGV4X25vOwpk aWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jCmluZGV4 IGU2MzNmMjk3ZTg2ZC4uYTlkYThhYzBkMmIzIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0veDg2 LmMKKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jCkBAIC04NzYzLDYgKzg3NjMsMTMgQEAgaW50IGt2 bV9hcmNoX3ZjcHVfc2V0X2d1ZXN0X2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKIAkJCWt2 bV9xdWV1ZV9leGNlcHRpb24odmNwdSwgQlBfVkVDVE9SKTsKIAl9CiAKKyNpZmRlZiBDT05GSUdf S1ZNX0lOVFJPU1BFQ1RJT04KKwlpZiAoa3ZtaV9icF9pbnRlcmNlcHRlZCh2Y3B1LCBkYmctPmNv bnRyb2wpKSB7CisJCXIgPSAtRUJVU1k7CisJCWdvdG8gb3V0OworCX0KKyNlbmRpZgorCiAJLyoK IAkgKiBSZWFkIHJmbGFncyBhcyBsb25nIGFzIHBvdGVudGlhbGx5IGluamVjdGVkIHRyYWNlIGZs YWdzIGFyZSBzdGlsbAogCSAqIGZpbHRlcmVkIG91dC4KQEAgLTEwMTA2LDYgKzEwMTEzLDExIEBA IHZvaWQga3ZtX2FyY2hfbXNyX2ludGVyY2VwdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2ln bmVkIGludCBtc3IsCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChrdm1fYXJjaF9tc3JfaW50ZXJjZXB0 KTsKIAordm9pZCBrdm1fYXJjaF9xdWV1ZV9icChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCit7CisJ a3ZtX3F1ZXVlX2V4Y2VwdGlvbih2Y3B1LCBCUF9WRUNUT1IpOworfQorCiB2b2lkIGt2bV9jb250 cm9sX2NyM193cml0ZV9leGl0aW5nKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBlbmFibGUp CiB7CiAJa3ZtX3g4Nl9vcHMtPmNyM193cml0ZV9leGl0aW5nKHZjcHUsIGVuYWJsZSk7CmRpZmYg LS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmggYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0 LmgKaW5kZXggNjkxYzI0NTk4YjRkLi5iNzc5MTRlOTQ0YTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv bGludXgva3ZtX2hvc3QuaAorKysgYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgKQEAgLTEzMzAs NCArMTMzMCw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IGt2bV9hcmNoX3ZjcHVfcnVuX3BpZF9jaGFu Z2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogfQogI2VuZGlmIC8qIENPTkZJR19IQVZFX0tWTV9W Q1BVX1JVTl9QSURfQ0hBTkdFICovCiAKK3ZvaWQga3ZtX2FyY2hfcXVldWVfYnAoc3RydWN0IGt2 bV92Y3B1ICp2Y3B1KTsKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2t2bWku aCBiL2luY2x1ZGUvbGludXgva3ZtaS5oCmluZGV4IDVhZTAyYzY0ZmIzMy4uMTNiNThiMzIwMmJi IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2t2bWkuaAorKysgYi9pbmNsdWRlL2xpbnV4L2t2 bWkuaApAQCAtMTYsMTEgKzE2LDEzIEBAIGludCBrdm1pX2lvY3RsX2V2ZW50KHN0cnVjdCBrdm0g Kmt2bSwgdm9pZCBfX3VzZXIgKmFyZ3ApOwogaW50IGt2bWlfaW9jdGxfdW5ob29rKHN0cnVjdCBr dm0gKmt2bSwgYm9vbCBmb3JjZV9yZXNldCk7CiBpbnQga3ZtaV92Y3B1X2luaXQoc3RydWN0IGt2 bV92Y3B1ICp2Y3B1KTsKIHZvaWQga3ZtaV92Y3B1X3VuaW5pdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZj cHUpOworYm9vbCBrdm1pX2JyZWFrcG9pbnRfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1 NjQgZ3ZhLCB1OCBpbnNuX2xlbik7CiBib29sIGt2bWlfcXVldWVfZXhjZXB0aW9uKHN0cnVjdCBr dm1fdmNwdSAqdmNwdSk7CiB2b2lkIGt2bWlfdHJhcF9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZj cHUpOwogdm9pZCBrdm1pX2hhbmRsZV9yZXF1ZXN0cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwog dm9pZCBrdm1pX2luaXRfZW11bGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogdm9pZCBrdm1p X2FjdGl2YXRlX3JlcF9jb21wbGV0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOworYm9vbCBrdm1p X2JwX2ludGVyY2VwdGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIGRiZyk7CiAKICNlbHNl CiAKQEAgLTI5LDEyICszMSwxNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQga3ZtaV91bmluaXQodm9p ZCkgeyB9CiBzdGF0aWMgaW5saW5lIHZvaWQga3ZtaV9jcmVhdGVfdm0oc3RydWN0IGt2bSAqa3Zt KSB7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBrdm1pX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3Zt KSB7IH0KIHN0YXRpYyBpbmxpbmUgaW50IGt2bWlfdmNwdV9pbml0KHN0cnVjdCBrdm1fdmNwdSAq dmNwdSkgeyByZXR1cm4gMDsgfQorc3RhdGljIGlubGluZSBib29sIGt2bWlfYnJlYWtwb2ludF9l dmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBndmEsCisJCQkJCSB1OCBpbnNuX2xlbikK KwkJCXsgcmV0dXJuIHRydWU7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBrdm1pX3ZjcHVfdW5pbml0 KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkgeyB9CiBzdGF0aWMgaW5saW5lIHZvaWQga3ZtaV9oYW5k bGVfcmVxdWVzdHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7IH0KIHN0YXRpYyBpbmxpbmUgYm9v bCBrdm1pX3F1ZXVlX2V4Y2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpIHsgcmV0dXJuIHRy dWU7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBrdm1pX3RyYXBfZXZlbnQoc3RydWN0IGt2bV92Y3B1 ICp2Y3B1KSB7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBrdm1pX2luaXRfZW11bGF0ZShzdHJ1Y3Qg a3ZtX3ZjcHUgKnZjcHUpIHsgfQogc3RhdGljIGlubGluZSB2b2lkIGt2bWlfYWN0aXZhdGVfcmVw X2NvbXBsZXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkgeyB9CitzdGF0aWMgaW5saW5lIGJvb2wg a3ZtaV9icF9pbnRlcmNlcHRlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBkYmcpCisJCQl7 IHJldHVybiBmYWxzZTsgfQogCiAjZW5kaWYgLyogQ09ORklHX0tWTV9JTlRST1NQRUNUSU9OICov CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9rdm1pLmggYi9pbmNsdWRlL3VhcGkv bGludXgva3ZtaS5oCmluZGV4IGE0NTgzZGU1YzJmNi4uYjA3MmUwYTRmMzNkIDEwMDY0NAotLS0g YS9pbmNsdWRlL3VhcGkvbGludXgva3ZtaS5oCisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm1p LmgKQEAgLTI1Niw0ICsyNTYsMTAgQEAgc3RydWN0IGt2bWlfZXZlbnRfcGZfcmVwbHkgewogCV9f dTggY3R4X2RhdGFbMjU2XTsKIH07CiAKK3N0cnVjdCBrdm1pX2V2ZW50X2JyZWFrcG9pbnQgewor CV9fdTY0IGdwYTsKKwlfX3U4IGluc25fbGVuOworCV9fdTggcGFkZGluZ1s3XTsKK307CisKICNl bmRpZiAvKiBfVUFQSV9fTElOVVhfS1ZNSV9IICovCmRpZmYgLS1naXQgYS92aXJ0L2t2bS9rdm1p LmMgYi92aXJ0L2t2bS9rdm1pLmMKaW5kZXggZTNmMzA4ODk4YTYwLi40Yzg2OGE5NGFjMzcgMTAw NjQ0Ci0tLSBhL3ZpcnQva3ZtL2t2bWkuYworKysgYi92aXJ0L2t2bS9rdm1pLmMKQEAgLTIxOSw2 ICsyMTksNDggQEAgc3RhdGljIHZvaWQga3ZtaV9jbGVhcl9tZW1fYWNjZXNzKHN0cnVjdCBrdm0g Kmt2bSkKIAlzcmN1X3JlYWRfdW5sb2NrKCZrdm0tPnNyY3UsIGlkeCk7CiB9CiAKK3N0YXRpYyBp bnQga3ZtaV9jb250cm9sX2V2ZW50X2JyZWFrcG9pbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBi b29sIGVuYWJsZSkKK3sKKwlzdHJ1Y3Qga3ZtaV92Y3B1ICppdmNwdSA9IElWQ1BVKHZjcHUpOwor CXN0cnVjdCBrdm1fZ3Vlc3RfZGVidWcgZGJnID0ge307CisJaW50IGVyciA9IDA7CisKKwlpZiAo ZW5hYmxlKSB7CisJCWlmICghaXNfZXZlbnRfZW5hYmxlZCh2Y3B1LCBLVk1JX0VWRU5UX0JSRUFL UE9JTlQpKSB7CisJCQlkYmcuY29udHJvbCA9IEtWTV9HVUVTVERCR19FTkFCTEUgfAorCQkJCSAg ICAgIEtWTV9HVUVTVERCR19VU0VfU1dfQlA7CisJCQlpdmNwdS0+YnBfaW50ZXJjZXB0ZWQgPSB0 cnVlOworCQkJZXJyID0ga3ZtX2FyY2hfdmNwdV9zZXRfZ3Vlc3RfZGVidWcodmNwdSwgJmRiZyk7 CisJCX0KKwl9IGVsc2UgaWYgKGlzX2V2ZW50X2VuYWJsZWQodmNwdSwgS1ZNSV9FVkVOVF9CUkVB S1BPSU5UKSkgeworCQlpdmNwdS0+YnBfaW50ZXJjZXB0ZWQgPSBmYWxzZTsKKwkJZXJyID0ga3Zt X2FyY2hfdmNwdV9zZXRfZ3Vlc3RfZGVidWcodmNwdSwgJmRiZyk7CisJfQorCisJcmV0dXJuIGVy cjsKK30KKworYm9vbCBrdm1pX2JwX2ludGVyY2VwdGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwg dTMyIGRiZykKK3sKKwlzdHJ1Y3Qga3ZtaSAqaWt2bTsKKwlib29sIHJldCA9IGZhbHNlOworCisJ aWt2bSA9IGt2bWlfZ2V0KHZjcHUtPmt2bSk7CisJaWYgKCFpa3ZtKQorCQlyZXR1cm4gZmFsc2U7 CisKKwlpZiAoSVZDUFUodmNwdSktPmJwX2ludGVyY2VwdGVkICYmCisJCSEoZGJnICYgKEtWTV9H VUVTVERCR19FTkFCTEUgfCBLVk1fR1VFU1REQkdfVVNFX1NXX0JQKSkpIHsKKwkJa3ZtaV93YXJu X29uY2UoaWt2bSwgIlRyeWluZyB0byBkaXNhYmxlIFNXIEJQIGludGVyY2VwdGlvblxuIik7CisJ CXJldCA9IHRydWU7CisJfQorCisJa3ZtaV9wdXQodmNwdS0+a3ZtKTsKKworCXJldHVybiByZXQ7 Cit9CitFWFBPUlRfU1lNQk9MKGt2bWlfYnBfaW50ZXJjZXB0ZWQpOworCiBzdGF0aWMgdm9pZCBr dm1pX2NhY2hlX2Rlc3Ryb3kodm9pZCkKIHsKIAlrbWVtX2NhY2hlX2Rlc3Ryb3kobXNnX2NhY2hl KTsKQEAgLTEwNTgsNiArMTEwMCwyNiBAQCB2b2lkIGt2bWlfYWN0aXZhdGVfcmVwX2NvbXBsZXRl KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIH0KIEVYUE9SVF9TWU1CT0woa3ZtaV9hY3RpdmF0ZV9y ZXBfY29tcGxldGUpOwogCitib29sIGt2bWlfYnJlYWtwb2ludF9ldmVudChzdHJ1Y3Qga3ZtX3Zj cHUgKnZjcHUsIHU2NCBndmEsIHU4IGluc25fbGVuKQoreworCXN0cnVjdCBrdm1pICppa3ZtOwor CWJvb2wgcmV0ID0gZmFsc2U7CisKKwlpa3ZtID0ga3ZtaV9nZXQodmNwdS0+a3ZtKTsKKwlpZiAo IWlrdm0pCisJCXJldHVybiB0cnVlOworCisJaWYgKGlzX2V2ZW50X2VuYWJsZWQodmNwdSwgS1ZN SV9FVkVOVF9CUkVBS1BPSU5UKSkKKwkJa3ZtaV9hcmNoX2JyZWFrcG9pbnRfZXZlbnQodmNwdSwg Z3ZhLCBpbnNuX2xlbik7CisJZWxzZQorCQlyZXQgPSB0cnVlOworCisJa3ZtaV9wdXQodmNwdS0+ a3ZtKTsKKworCXJldHVybiByZXQ7Cit9CitFWFBPUlRfU1lNQk9MKGt2bWlfYnJlYWtwb2ludF9l dmVudCk7CisKIC8qCiAgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgZmFsc2UgaWYgdGhlcmUgaXMg YW4gZXhjZXB0aW9uIG9yIGludGVycnVwdCBwZW5kaW5nLgogICogSXQgcmV0dXJucyB0cnVlIGlu IGFsbCBvdGhlciBjYXNlcyBpbmNsdWRpbmcgS1ZNSSBub3QgYmVpbmcgaW5pdGlhbGl6ZWQuCkBA IC0xNDM4LDEzICsxNTAwLDI1IEBAIGludCBrdm1pX2NtZF9jb250cm9sX2V2ZW50cyhzdHJ1Y3Qg a3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBldmVudF9pZCwKIAkJCSAgICBib29sIGVuYWJs ZSkKIHsKIAlzdHJ1Y3Qga3ZtaV92Y3B1ICppdmNwdSA9IElWQ1BVKHZjcHUpOworCWludCBlcnI7 CiAKLQlpZiAoZW5hYmxlKQotCQlzZXRfYml0KGV2ZW50X2lkLCBpdmNwdS0+ZXZfbWFzayk7Ci0J ZWxzZQotCQljbGVhcl9iaXQoZXZlbnRfaWQsIGl2Y3B1LT5ldl9tYXNrKTsKKwlzd2l0Y2ggKGV2 ZW50X2lkKSB7CisJY2FzZSBLVk1JX0VWRU5UX0JSRUFLUE9JTlQ6CisJCWVyciA9IGt2bWlfY29u dHJvbF9ldmVudF9icmVha3BvaW50KHZjcHUsIGVuYWJsZSk7CisJCWJyZWFrOworCWRlZmF1bHQ6 CisJCWVyciA9IDA7CisJCWJyZWFrOworCX0KIAotCXJldHVybiAwOworCWlmICghZXJyKSB7CisJ CWlmIChlbmFibGUpCisJCQlzZXRfYml0KGV2ZW50X2lkLCBpdmNwdS0+ZXZfbWFzayk7CisJCWVs c2UKKwkJCWNsZWFyX2JpdChldmVudF9pZCwgaXZjcHUtPmV2X21hc2spOworCX0KKworCXJldHVy biBlcnI7CiB9CiAKIGludCBrdm1pX2NtZF9jb250cm9sX3ZtX2V2ZW50cyhzdHJ1Y3Qga3ZtaSAq aWt2bSwgdW5zaWduZWQgaW50IGV2ZW50X2lkLApkaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtaV9p bnQuaCBiL3ZpcnQva3ZtL2t2bWlfaW50LmgKaW5kZXggYWMyZTEzNzg3ZjAxLi5kMDM5NDQ2OTIy ZTYgMTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2t2bWlfaW50LmgKKysrIGIvdmlydC9rdm0va3ZtaV9p bnQuaApAQCAtMTE4LDYgKzExOCw3IEBAIHN0cnVjdCBrdm1pX3ZjcHUgewogCWJvb2wgaGF2ZV9k ZWxheWVkX3JlZ3M7CiAJc3RydWN0IGt2bV9yZWdzIGRlbGF5ZWRfcmVnczsKIAorCWJvb2wgYnBf aW50ZXJjZXB0ZWQ7CiAJREVDTEFSRV9CSVRNQVAoZXZfbWFzaywgS1ZNSV9OVU1fRVZFTlRTKTsK IAlERUNMQVJFX0JJVE1BUChjcl9tYXNrLCBLVk1JX05VTV9DUik7CiAJc3RydWN0IHsKQEAgLTE4 Myw2ICsxODQsNyBAQCBib29sIGt2bWlfbXNnX3Byb2Nlc3Moc3RydWN0IGt2bWkgKmlrdm0pOwog aW50IGt2bWlfc2VuZF9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBldl9pZCwKIAkJ ICAgIHZvaWQgKmV2LCBzaXplX3QgZXZfc2l6ZSwKIAkJICAgIHZvaWQgKnJwbCwgc2l6ZV90IHJw bF9zaXplLCBpbnQgKmFjdGlvbik7Cit1MzIga3ZtaV9tc2dfc2VuZF9icChzdHJ1Y3Qga3ZtX3Zj cHUgKnZjcHUsIHU2NCBncGEsIHU4IGluc25fbGVuKTsKIHUzMiBrdm1pX21zZ19zZW5kX3BmKHN0 cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IGdwYSwgdTY0IGd2YSwgdTggYWNjZXNzLAogCQkgICAg IGJvb2wgKnNpbmdsZXN0ZXAsIGJvb2wgKnJlcF9jb21wbGV0ZSwKIAkJICAgICB1NjQgKmN0eF9h ZGRyLCB1OCAqY3R4LCB1MzIgKmN0eF9zaXplKTsKQEAgLTI1Miw2ICsyNTQsNyBAQCBib29sIGt2 bWlfYXJjaF9wZl9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGdwYV90IGdwYSwgZ3ZhX3Qg Z3ZhLAogCQkJdTggYWNjZXNzKTsKIGJvb2wga3ZtaV9hcmNoX3F1ZXVlX2V4Y2VwdGlvbihzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogdm9pZCBrdm1pX2FyY2hfdHJhcF9ldmVudChzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUpOwordm9pZCBrdm1pX2FyY2hfYnJlYWtwb2ludF9ldmVudChzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUsIHU2NCBndmEsIHU4IGluc25fbGVuKTsKIGludCBrdm1pX2FyY2hfY21kX2dl dF9jcHVpZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJCQkgICAgY29uc3Qgc3RydWN0IGt2bWlf Z2V0X2NwdWlkICpyZXEsCiAJCQkgICAgc3RydWN0IGt2bWlfZ2V0X2NwdWlkX3JlcGx5ICpycGwp OwpkaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtaV9tc2cuYyBiL3ZpcnQva3ZtL2t2bWlfbXNnLmMK aW5kZXggZWU1NGQ5MmIwN2VjLi5jN2ExZmE1ZjcyNDUgMTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2t2 bWlfbXNnLmMKKysrIGIvdmlydC9rdm0va3ZtaV9tc2cuYwpAQCAtMTA3OSw2ICsxMDc5LDIzIEBA IGludCBrdm1pX21zZ19zZW5kX3VuaG9vayhzdHJ1Y3Qga3ZtaSAqaWt2bSkKIAlyZXR1cm4ga3Zt aV9zb2NrX3dyaXRlKGlrdm0sIHZlYywgbiwgbXNnX3NpemUpOwogfQogCit1MzIga3ZtaV9tc2df c2VuZF9icChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBncGEsIHU4IGluc25fbGVuKQorewor CXN0cnVjdCBrdm1pX2V2ZW50X2JyZWFrcG9pbnQgZTsKKwlpbnQgZXJyLCBhY3Rpb247CisKKwlt ZW1zZXQoJmUsIDAsIHNpemVvZihlKSk7CisJZS5ncGEgPSBncGE7CisJZS5pbnNuX2xlbiA9IGlu c25fbGVuOworCisJZXJyID0ga3ZtaV9zZW5kX2V2ZW50KHZjcHUsIEtWTUlfRVZFTlRfQlJFQUtQ T0lOVCwgJmUsIHNpemVvZihlKSwKKwkJCSAgICAgIE5VTEwsIDAsICZhY3Rpb24pOworCWlmIChl cnIpCisJCXJldHVybiBLVk1JX0VWRU5UX0FDVElPTl9DT05USU5VRTsKKworCXJldHVybiBhY3Rp b247Cit9CisKIHUzMiBrdm1pX21zZ19zZW5kX3BmKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0 IGdwYSwgdTY0IGd2YSwgdTggYWNjZXNzLAogCQkgICAgIGJvb2wgKnNpbmdsZXN0ZXAsIGJvb2wg KnJlcF9jb21wbGV0ZSwgdTY0ICpjdHhfYWRkciwKIAkJICAgICB1OCAqY3R4X2RhdGEsIHUzMiAq Y3R4X3NpemUpCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f ClZpcnR1YWxpemF0aW9uIG1haWxpbmcgbGlzdApWaXJ0dWFsaXphdGlvbkBsaXN0cy5saW51eC1m b3VuZGF0aW9uLm9yZwpodHRwczovL2xpc3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9s aXN0aW5mby92aXJ0dWFsaXphdGlvbg==