From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [RFC PATCH v6 49/92] kvm: introspection: add KVMI_PAUSE_VCPU and KVMI_EVENT_PAUSE_VCPU Date: Fri, 9 Aug 2019 19:00:04 +0300 Message-ID: <20190809160047.8319-50-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 VGhpcyBpcyB0aGUgb25seSB2Q1BVIGNvbW1hbmQgaGFuZGxlZCBieSB0aGUgcmVjZWl2aW5nIHdv cmtlci4KSXQgaW5jcmVtZW50cyBhIHBhdXNlIHJlcXVlc3QgY291bnRlciBhbmQga2lja3MgdGhl IHZDUFUuCgpUaGlzIGV2ZW50IGlzIHNlbmQgYnkgdGhlIHZDUFUgdGhyZWFkLCBidXQgaGFzIGEg bG93IHByaW9yaXR5LiBJdAp3aWxsIGJlIHNlbnQgYWZ0ZXIgYW55IG90aGVyIHZDUFUgaW50cm9z cGVjdGlvbiBldmVudCBhbmQgd2hlbiBubyB2Q1BVCmludHJvc3BlY3Rpb24gY29tbWFuZCBpcyBx dWV1ZWQuCgpTaWduZWQtb2ZmLWJ5OiBBZGFsYmVydCBMYXrEg3IgPGFsYXphckBiaXRkZWZlbmRl ci5jb20+Ci0tLQogRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9rdm1pLnJzdCB8IDY4ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS91YXBpL2xpbnV4L2t2bV9wYXJhLmgg ICAgICB8ICAxICsKIGluY2x1ZGUvdWFwaS9saW51eC9rdm1pLmggICAgICAgICAgfCAgNyArKysK IHZpcnQva3ZtL2t2bWkuYyAgICAgICAgICAgICAgICAgICAgfCA2NSArKysrKysrKysrKysrKysr KysrKysrKysrKysrCiB2aXJ0L2t2bS9rdm1pX2ludC5oICAgICAgICAgICAgICAgIHwgIDQgKysK IHZpcnQva3ZtL2t2bWlfbXNnLmMgICAgICAgICAgICAgICAgfCA2MSArKysrKysrKysrKysrKysr KysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgMjA2IGluc2VydGlvbnMoKykKCmRpZmYgLS1n aXQgYS9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2t2bWkucnN0IGIvRG9jdW1lbnRhdGlvbi92 aXJ0dWFsL2t2bS9rdm1pLnJzdAppbmRleCBlZWYzMjEwNzgzN2EuLjU1OGQzZWI2MDA3ZiAxMDA2 NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9rdm1pLnJzdAorKysgYi9Eb2N1bWVu dGF0aW9uL3ZpcnR1YWwva3ZtL2t2bWkucnN0CkBAIC04MjAsNiArODIwLDQ4IEBAIG9uZSBwYWdl IChvZmZzZXQgKyBzaXplIDw9IFBBR0VfU0laRSkuCiAKICogLUtWTV9FSU5WQUwgLSB0aGUgc3Bl Y2lmaWVkIGdwYSBpcyBpbnZhbGlkCiAKKzE2LiBLVk1JX1BBVVNFX1ZDUFUKKy0tLS0tLS0tLS0t LS0tLS0tLS0KKworOkFyY2hpdGVjdHVyZTogYWxsCis6VmVyc2lvbnM6ID49IDEKKzpQYXJhbWV0 ZXJzOgorCisJc3RydWN0IGt2bWlfdmNwdV9oZHI7CisJc3RydWN0IGt2bWlfcGF1c2VfdmNwdSB7 CisJCV9fdTggd2FpdDsKKwkJX191OCBwYWRkaW5nMTsKKwkJX191MTYgcGFkZGluZzI7CisJCV9f dTMyIHBhZGRpbmczOworCX07CisKKzpSZXR1cm5zOgorCis6OgorCisJc3RydWN0IGt2bWlfZXJy b3JfY29kZTsKKworS2lja3MgdGhlIHZDUFUgZnJvbSBndWVzdC4KKworSWYgYHdhaXRgIGlzIDEs IHRoZSBjb21tYW5kIHdpbGwgd2FpdCBmb3IgdkNQVSB0byBhY2tub3dsZWRnZSB0aGUgSVBJLgor CitUaGUgdkNQVSB3aWxsIGhhbmRsZSB0aGUgcGVuZGluZyBjb21tYW5kcy9ldmVudHMgYW5kIHNl bmQgdGhlCisqS1ZNSV9FVkVOVF9QQVVTRV9WQ1BVKiBldmVudCAob25lIGZvciBldmVyeSBzdWNj ZXNzZnVsICpLVk1JX1BBVVNFX1ZDUFUqCitjb21tYW5kKSBiZWZvcmUgcmV0dXJuaW5nIHRvIGd1 ZXN0LgorCitQbGVhc2Ugbm90ZSB0aGF0IG5ldyB2Q1BVcyBtaWdodCBieSBjcmVhdGVkIGF0IGFu eSB0aW1lLgorVGhlIGludHJvc3BlY3Rpb24gdG9vbCBzaG91bGQgdXNlICpLVk1JX0NPTlRST0xf Vk1fRVZFTlRTKiB0byBlbmFibGUgdGhlCisqS1ZNSV9FVkVOVF9DUkVBVEVfVkNQVSogZXZlbnQg aW4gb3JkZXIgdG8gc3RvcCB0aGVzZSBuZXcgdkNQVXMgYXMgd2VsbAorKGJ5IGRlbGF5aW5nIHRo ZSBldmVudCByZXBseSkuCisKKzpFcnJvcnM6CisKKyogLUtWTV9FSU5WQUwgLSB0aGUgc2VsZWN0 ZWQgdkNQVSBpcyBpbnZhbGlkCisqIC1LVk1fRUlOVkFMIC0gcGFkZGluZyBpcyBub3QgemVybwor KiAtS1ZNX0VBR0FJTiAtIHRoZSBzZWxlY3RlZCB2Q1BVIGNhbid0IGJlIGludHJvc3BlY3RlZCB5 ZXQKKyogLUtWTV9FQlVTWSAgLSB0aGUgc2VsZWN0ZWQgdkNQVSBoYXMgdG9vIG1hbnkgcXVldWVk ICpLVk1JX0VWRU5UX1BBVVNFX1ZDUFUqIGV2ZW50cworKiAtS1ZNX0VQRVJNICAtIHRoZSAqS1ZN SV9FVkVOVF9QQVVTRV9WQ1BVKiBldmVudCBpcyBkaXNhbGxvd2VkIChzZWUgKktWTUlfQ09OVFJP TF9FVkVOVFMqKQorCQlhbmQgdGhlIGludHJvc3BlY3Rpb24gdG9vbCBleHBlY3RzIGEgcmVwbHku CiBFdmVudHMKID09PT09PQogCkBAIC05OTIsMyArMTAzNCwyOSBAQCBUaGUgKlJFVFJZKiBhY3Rp b24gaXMgdXNlZCBieSB0aGUgaW50cm9zcGVjdG9yIHRvIHJldHJ5IHRoZSBleGVjdXRpb24gb2YK IHRoZSBjdXJyZW50IGluc3RydWN0aW9uLiBFaXRoZXIgdXNpbmcgc2luZ2xlLXN0ZXAgKGlmIGBg c2luZ2xlc3RlcGBgIGlzCiBub3QgemVybykgb3IgcmV0dXJuIHRvIGd1ZXN0IChpZiB0aGUgaW50 cm9zcGVjdG9yIGNoYW5nZWQgdGhlIGluc3RydWN0aW9uCiBwb2ludGVyIG9yIHRoZSBwYWdlIHJl c3RyaWN0aW9ucykuCisKKzQuIEtWTUlfRVZFTlRfUEFVU0VfVkNQVQorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisKKzpBcmNoaXRlY3R1cmVzOiBhbGwKKzpWZXJzaW9uczogPj0gMQorOkFjdGlv bnM6IENPTlRJTlVFLCBDUkFTSAorOlBhcmFtZXRlcnM6CisKKzo6CisKKwlzdHJ1Y3Qga3ZtaV9l dmVudDsKKworOlJldHVybnM6CisKKzo6CisKKwlzdHJ1Y3Qga3ZtaV92Y3B1X2hkcjsKKwlzdHJ1 Y3Qga3ZtaV9ldmVudF9yZXBseTsKKworVGhpcyBldmVudCBpcyBzZW50IGluIHJlc3BvbnNlIHRv IGEgKktWTUlfUEFVU0VfVkNQVSogY29tbWFuZCBhbmQKK2Nhbm5vdCBiZSBkaXNhYmxlZCB2aWEg KktWTUlfQ09OVFJPTF9FVkVOVFMqLgorCitUaGlzIGV2ZW50IGhhcyBhIGxvdyBwcmlvcml0eS4g SXQgd2lsbCBiZSBzZW50IGFmdGVyIGFueSBvdGhlciB2Q1BVCitpbnRyb3NwZWN0aW9uIGV2ZW50 IGFuZCB3aGVuIG5vIHZDUFUgaW50cm9zcGVjdGlvbiBjb21tYW5kIGlzIHF1ZXVlZC4KKwpkaWZm IC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bV9wYXJhLmggYi9pbmNsdWRlL3VhcGkvbGlu dXgva3ZtX3BhcmEuaAppbmRleCA1NGMwZTIwZjViNjQuLjA3ZTNmMjY2MmIzNiAxMDA2NDQKLS0t IGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bV9wYXJhLmgKKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4 L2t2bV9wYXJhLmgKQEAgLTE4LDYgKzE4LDcgQEAKICNkZWZpbmUgS1ZNX0VQRVJNCQlFUEVSTQog I2RlZmluZSBLVk1fRU9QTk9UU1VQUAkJOTUKICNkZWZpbmUgS1ZNX0VBR0FJTgkJMTEKKyNkZWZp bmUgS1ZNX0VCVVNZCQlFQlVTWQogI2RlZmluZSBLVk1fRU5PTUVNCQlFTk9NRU0KIAogI2RlZmlu ZSBLVk1fSENfVkFQSUNfUE9MTF9JUlEJCTEKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51 eC9rdm1pLmggYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtaS5oCmluZGV4IGJlM2YwNjZmMzE0ZS4u Y2E5YzZiNmFlZWQ1IDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvbGludXgva3ZtaS5oCisrKyBi L2luY2x1ZGUvdWFwaS9saW51eC9rdm1pLmgKQEAgLTE3Nyw2ICsxNzcsMTMgQEAgc3RydWN0IGt2 bWlfZ2V0X3ZjcHVfaW5mb19yZXBseSB7CiAJX191NjQgdHNjX3NwZWVkOwogfTsKIAorc3RydWN0 IGt2bWlfcGF1c2VfdmNwdSB7CisJX191OCB3YWl0OworCV9fdTggcGFkZGluZzE7CisJX191MTYg cGFkZGluZzI7CisJX191MzIgcGFkZGluZzM7Cit9OworCiBzdHJ1Y3Qga3ZtaV9jb250cm9sX2V2 ZW50cyB7CiAJX191MTYgZXZlbnRfaWQ7CiAJX191OCBlbmFibGU7CmRpZmYgLS1naXQgYS92aXJ0 L2t2bS9rdm1pLmMgYi92aXJ0L2t2bS9rdm1pLmMKaW5kZXggYTg0ZWIxNTBlMTE2Li44NWRlMmRh M2ViN2IgMTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2t2bWkuYworKysgYi92aXJ0L2t2bS9rdm1pLmMK QEAgLTExLDYgKzExLDggQEAKICNpbmNsdWRlIDxsaW51eC9rdGhyZWFkLmg+CiAjaW5jbHVkZSA8 bGludXgvYml0bWFwLmg+CiAKKyNkZWZpbmUgTUFYX1BBVVNFX1JFUVVFU1RTIDEwMDEKKwogc3Rh dGljIHN0cnVjdCBrbWVtX2NhY2hlICptc2dfY2FjaGU7CiBzdGF0aWMgc3RydWN0IGttZW1fY2Fj aGUgKnJhZGl4X2NhY2hlOwogc3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICpqb2JfY2FjaGU7CkBA IC0xMDkwLDYgKzEwOTIsMzkgQEAgc3RhdGljIGJvb2wga3ZtaV9jcmVhdGVfdmNwdV9ldmVudChz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIGJvb2wgX19r dm1pX3BhdXNlX3ZjcHVfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQoreworCXUzMiBhY3Rp b247CisJYm9vbCByZXQgPSBmYWxzZTsKKworCWFjdGlvbiA9IGt2bWlfbXNnX3NlbmRfcGF1c2Vf dmNwdSh2Y3B1KTsKKwlzd2l0Y2ggKGFjdGlvbikgeworCWNhc2UgS1ZNSV9FVkVOVF9BQ1RJT05f Q09OVElOVUU6CisJCXJldCA9IHRydWU7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWt2bWlfaGFu ZGxlX2NvbW1vbl9ldmVudF9hY3Rpb25zKHZjcHUsIGFjdGlvbiwgIlBBVVNFIik7CisJfQorCisJ cmV0dXJuIHJldDsKK30KKworc3RhdGljIGJvb2wga3ZtaV9wYXVzZV92Y3B1X2V2ZW50KHN0cnVj dCBrdm1fdmNwdSAqdmNwdSkKK3sKKwlzdHJ1Y3Qga3ZtaSAqaWt2bTsKKwlib29sIHJldCA9IHRy dWU7CisKKwlpa3ZtID0ga3ZtaV9nZXQodmNwdS0+a3ZtKTsKKwlpZiAoIWlrdm0pCisJCXJldHVy biB0cnVlOworCisJcmV0ID0gX19rdm1pX3BhdXNlX3ZjcHVfZXZlbnQodmNwdSk7CisKKwlrdm1p X3B1dCh2Y3B1LT5rdm0pOworCisJcmV0dXJuIHJldDsKK30KKwogdm9pZCBrdm1pX3J1bl9qb2Jz KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKIAlzdHJ1Y3Qga3ZtaV92Y3B1ICppdmNwdSA9IElW Q1BVKHZjcHUpOwpAQCAtMTE1NCw2ICsxMTg5LDcgQEAgaW50IGt2bWlfcnVuX2pvYnNfYW5kX3dh aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCiB2b2lkIGt2bWlfaGFuZGxlX3JlcXVlc3RzKHN0 cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKKwlzdHJ1Y3Qga3ZtaV92Y3B1ICppdmNwdSA9IElWQ1BV KHZjcHUpOwogCXN0cnVjdCBrdm1pICppa3ZtOwogCiAJaWt2bSA9IGt2bWlfZ2V0KHZjcHUtPmt2 bSk7CkBAIC0xMTY1LDYgKzEyMDEsMTIgQEAgdm9pZCBrdm1pX2hhbmRsZV9yZXF1ZXN0cyhzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAKIAkJaWYgKGVycikKIAkJCWJyZWFrOworCisJCWlmICghYXRv bWljX3JlYWQoJml2Y3B1LT5wYXVzZV9yZXF1ZXN0cykpCisJCQlicmVhazsKKworCQlhdG9taWNf ZGVjKCZpdmNwdS0+cGF1c2VfcmVxdWVzdHMpOworCQlrdm1pX3BhdXNlX3ZjcHVfZXZlbnQodmNw dSk7CiAJfQogCiAJa3ZtaV9wdXQodmNwdS0+a3ZtKTsKQEAgLTEzNTEsMTAgKzEzOTMsMzMgQEAg aW50IGt2bWlfY21kX2NvbnRyb2xfdm1fZXZlbnRzKHN0cnVjdCBrdm1pICppa3ZtLCB1bnNpZ25l ZCBpbnQgZXZlbnRfaWQsCiAJcmV0dXJuIDA7CiB9CiAKK2ludCBrdm1pX2NtZF9wYXVzZV92Y3B1 KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCB3YWl0KQoreworCXN0cnVjdCBrdm1pX3ZjcHUg Kml2Y3B1ID0gSVZDUFUodmNwdSk7CisJdW5zaWduZWQgaW50IHJlcSA9IEtWTV9SRVFfSU5UUk9T UEVDVElPTjsKKworCWlmIChhdG9taWNfcmVhZCgmaXZjcHUtPnBhdXNlX3JlcXVlc3RzKSA+IE1B WF9QQVVTRV9SRVFVRVNUUykKKwkJcmV0dXJuIC1LVk1fRUJVU1k7CisKKwlhdG9taWNfaW5jKCZp dmNwdS0+cGF1c2VfcmVxdWVzdHMpOworCWt2bV9tYWtlX3JlcXVlc3QocmVxLCB2Y3B1KTsKKwlp ZiAod2FpdCkKKwkJa3ZtX3ZjcHVfa2lja19hbmRfd2FpdCh2Y3B1KTsKKwllbHNlCisJCWt2bV92 Y3B1X2tpY2sodmNwdSk7CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIHZvaWQga3ZtaV9qb2Jf YWJvcnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB2b2lkICpjdHgpCiB7CiAJc3RydWN0IGt2bWlf dmNwdSAqaXZjcHUgPSBJVkNQVSh2Y3B1KTsKIAorCS8qCisJICogVGhlIHRocmVhZCB0aGF0IG1p Z2h0IGluY3JlbWVudCB0aGlzIGF0b21pYyBpcyBzdG9wcGVkCisJICogYW5kIHRoaXMgdGhyZWFk IGlzIHRoZSBvbmx5IG9uZSB0aGF0IGNvdWxkIGRlY3JlbWVudCBpdC4KKwkgKi8KKwlhdG9taWNf c2V0KCZpdmNwdS0+cGF1c2VfcmVxdWVzdHMsIDApOwogCWl2Y3B1LT5yZXBseV93YWl0aW5nID0g ZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bWlfaW50LmggYi92aXJ0L2t2bS9r dm1pX2ludC5oCmluZGV4IDdiZGZmNzBkNDMwOS4uY2IzYjBjZTg3YmMxIDEwMDY0NAotLS0gYS92 aXJ0L2t2bS9rdm1pX2ludC5oCisrKyBiL3ZpcnQva3ZtL2t2bWlfaW50LmgKQEAgLTEwMCw2ICsx MDAsOCBAQCBzdHJ1Y3Qga3ZtaV92Y3B1IHsKIAlib29sIHJlcF9jb21wbGV0ZTsKIAlib29sIGVm ZmVjdGl2ZV9yZXBfY29tcGxldGU7CiAKKwlhdG9taWNfdCBwYXVzZV9yZXF1ZXN0czsKKwogCWJv b2wgcmVwbHlfd2FpdGluZzsKIAlzdHJ1Y3Qga3ZtaV92Y3B1X3JlcGx5IHJlcGx5OwogCkBAIC0x NjQsNiArMTY2LDcgQEAgdTMyIGt2bWlfbXNnX3NlbmRfcGYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1 LCB1NjQgZ3BhLCB1NjQgZ3ZhLCB1OCBhY2Nlc3MsCiAJCSAgICAgYm9vbCAqc2luZ2xlc3RlcCwg Ym9vbCAqcmVwX2NvbXBsZXRlLAogCQkgICAgIHU2NCAqY3R4X2FkZHIsIHU4ICpjdHgsIHUzMiAq Y3R4X3NpemUpOwogdTMyIGt2bWlfbXNnX3NlbmRfY3JlYXRlX3ZjcHUoc3RydWN0IGt2bV92Y3B1 ICp2Y3B1KTsKK3UzMiBrdm1pX21zZ19zZW5kX3BhdXNlX3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2 Y3B1KTsKIGludCBrdm1pX21zZ19zZW5kX3VuaG9vayhzdHJ1Y3Qga3ZtaSAqaWt2bSk7CiAKIC8q IGt2bWkuYyAqLwpAQCAtMTg1LDYgKzE4OCw3IEBAIGludCBrdm1pX2NtZF9jb250cm9sX2V2ZW50 cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBldmVudF9pZCwKIAkJCSAgICBi b29sIGVuYWJsZSk7CiBpbnQga3ZtaV9jbWRfY29udHJvbF92bV9ldmVudHMoc3RydWN0IGt2bWkg Kmlrdm0sIHVuc2lnbmVkIGludCBldmVudF9pZCwKIAkJCSAgICAgICBib29sIGVuYWJsZSk7Citp bnQga3ZtaV9jbWRfcGF1c2VfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgd2FpdCk7 CiBpbnQga3ZtaV9ydW5fam9ic19hbmRfd2FpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogaW50 IGt2bWlfYWRkX2pvYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJCSB2b2lkICgqZmN0KShzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUsIHZvaWQgKmN0eCksCmRpZmYgLS1naXQgYS92aXJ0L2t2bS9rdm1p X21zZy5jIGIvdmlydC9rdm0va3ZtaV9tc2cuYwppbmRleCA5YzIwYTljZmRhNDIuLmE0NDQ2ZWVk MzU0ZCAxMDA2NDQKLS0tIGEvdmlydC9rdm0va3ZtaV9tc2cuYworKysgYi92aXJ0L2t2bS9rdm1p X21zZy5jCkBAIC0zNCw2ICszNCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBtc2dfSURz W10gPSB7CiAJW0tWTUlfR0VUX1BBR0VfV1JJVEVfQklUTUFQXSA9ICJLVk1JX0dFVF9QQUdFX1dS SVRFX0JJVE1BUCIsCiAJW0tWTUlfR0VUX1ZDUFVfSU5GT10gICAgICAgICA9ICJLVk1JX0dFVF9W Q1BVX0lORk8iLAogCVtLVk1JX0dFVF9WRVJTSU9OXSAgICAgICAgICAgPSAiS1ZNSV9HRVRfVkVS U0lPTiIsCisJW0tWTUlfUEFVU0VfVkNQVV0gICAgICAgICAgICA9ICJLVk1JX1BBVVNFX1ZDUFUi LAogCVtLVk1JX1JFQURfUEhZU0lDQUxdICAgICAgICAgPSAiS1ZNSV9SRUFEX1BIWVNJQ0FMIiwK IAlbS1ZNSV9TRVRfUEFHRV9BQ0NFU1NdICAgICAgID0gIktWTUlfU0VUX1BBR0VfQUNDRVNTIiwK IAlbS1ZNSV9TRVRfUEFHRV9XUklURV9CSVRNQVBdID0gIktWTUlfU0VUX1BBR0VfV1JJVEVfQklU TUFQIiwKQEAgLTQ1Nyw2ICs0NTgsNTMgQEAgc3RhdGljIGJvb2wgaW52YWxpZF92Y3B1X2hkcihj b25zdCBzdHJ1Y3Qga3ZtaV92Y3B1X2hkciAqaGRyKQogCXJldHVybiBoZHItPnBhZGRpbmcxIHx8 IGhkci0+cGFkZGluZzI7CiB9CiAKKy8qCisgKiBXZSBoYW5kbGUgdGhpcyB2Q1BVIGNvbW1hbmQg b24gdGhlIHJlY2VpdmluZyB0aHJlYWQgdG8gbWFrZSBpdCBlYXNpZXIKKyAqIGZvciB1c2Vyc3Bh Y2UgdG8gaW1wbGVtZW50IGEgJ3BhdXNlIFZNJyBjb21tYW5kLiBVc3VhbGx5LCB0aGlzIGlzIGRv bmUKKyAqIGJ5IHNlbmRpbmcgb25lICdwYXVzZSB2Q1BVJyBjb21tYW5kIGZvciBldmVyeSB2Q1BV LiBCeSBoYW5kbGluZyB0aGUKKyAqIGNvbW1hbmQgaGVyZSwgdGhlIHVzZXJzcGFjZSBjYW46Cisg KiAgICAtIG9wdGltaXplLCBieSBub3QgcmVxdWVzdGluZyBhIHJlcGx5IGZvciB0aGUgZmlyc3Qg Ti0xIHZDUFUncworICogICAgLSBjb25zaWRlciB0aGUgVk0gc3RvcHBlZCBvbmNlIGl0IHJlY2Vp dmVzIHRoZSByZXBseQorICogICAgICBmb3IgdGhlIGxhc3QgJ3BhdXNlIHZDUFUnIGNvbW1hbmQK KyAqLworc3RhdGljIGludCBoYW5kbGVfcGF1c2VfdmNwdShzdHJ1Y3Qga3ZtaSAqaWt2bSwKKwkJ CSAgICAgY29uc3Qgc3RydWN0IGt2bWlfbXNnX2hkciAqbXNnLAorCQkJICAgICBjb25zdCB2b2lk ICpfcmVxKQoreworCWNvbnN0IHN0cnVjdCBrdm1pX3BhdXNlX3ZjcHUgKnJlcSA9IF9yZXE7CisJ Y29uc3Qgc3RydWN0IGt2bWlfdmNwdV9oZHIgKmNtZDsKKwlzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUg PSBOVUxMOworCWludCBlcnI7CisKKwlpZiAocmVxLT5wYWRkaW5nMSB8fCByZXEtPnBhZGRpbmcy IHx8IHJlcS0+cGFkZGluZzMpIHsKKwkJZXJyID0gLUtWTV9FSU5WQUw7CisJCWdvdG8gcmVwbHk7 CisJfQorCisJY21kID0gKGNvbnN0IHN0cnVjdCBrdm1pX3ZjcHVfaGRyICopIChtc2cgKyAxKTsK KworCWlmIChpbnZhbGlkX3ZjcHVfaGRyKGNtZCkpIHsKKwkJZXJyID0gLUtWTV9FSU5WQUw7CisJ CWdvdG8gcmVwbHk7CisJfQorCisJaWYgKCFpc19ldmVudF9hbGxvd2VkKGlrdm0sIEtWTUlfRVZF TlRfUEFVU0VfVkNQVSkpIHsKKwkJZXJyID0gLUtWTV9FUEVSTTsKKworCQlpZiAoaWt2bS0+Y21k X3JlcGx5X2Rpc2FibGVkKQorCQkJcmV0dXJuIGt2bWlfbXNnX3ZtX3JlcGx5KGlrdm0sIG1zZywg ZXJyLCBOVUxMLCAwKTsKKworCQlnb3RvIHJlcGx5OworCX0KKworCWVyciA9IGt2bWlfZ2V0X3Zj cHUoaWt2bSwgY21kLT52Y3B1LCAmdmNwdSk7CisJaWYgKCFlcnIpCisJCWVyciA9IGt2bWlfY21k X3BhdXNlX3ZjcHUodmNwdSwgcmVxLT53YWl0ID09IDEpOworCityZXBseToKKwlyZXR1cm4ga3Zt aV9tc2dfdm1fbWF5YmVfcmVwbHkoaWt2bSwgbXNnLCBlcnIsIE5VTEwsIDApOworfQorCiAvKgog ICogVGhlc2UgY29tbWFuZHMgYXJlIGV4ZWN1dGVkIG9uIHRoZSByZWNlaXZpbmcgdGhyZWFkL3dv cmtlci4KICAqLwpAQCAtNDcxLDYgKzUxOSw3IEBAIHN0YXRpYyBpbnQoKmNvbnN0IG1zZ192bVtd KShzdHJ1Y3Qga3ZtaSAqLCBjb25zdCBzdHJ1Y3Qga3ZtaV9tc2dfaGRyICosCiAJW0tWTUlfR0VU X1BBR0VfQUNDRVNTXSAgICAgICA9IGhhbmRsZV9nZXRfcGFnZV9hY2Nlc3MsCiAJW0tWTUlfR0VU X1BBR0VfV1JJVEVfQklUTUFQXSA9IGhhbmRsZV9nZXRfcGFnZV93cml0ZV9iaXRtYXAsCiAJW0tW TUlfR0VUX1ZFUlNJT05dICAgICAgICAgICA9IGhhbmRsZV9nZXRfdmVyc2lvbiwKKwlbS1ZNSV9Q QVVTRV9WQ1BVXSAgICAgICAgICAgID0gaGFuZGxlX3BhdXNlX3ZjcHUsCiAJW0tWTUlfUkVBRF9Q SFlTSUNBTF0gICAgICAgICA9IGhhbmRsZV9yZWFkX3BoeXNpY2FsLAogCVtLVk1JX1NFVF9QQUdF X0FDQ0VTU10gICAgICAgPSBoYW5kbGVfc2V0X3BhZ2VfYWNjZXNzLAogCVtLVk1JX1NFVF9QQUdF X1dSSVRFX0JJVE1BUF0gPSBoYW5kbGVfc2V0X3BhZ2Vfd3JpdGVfYml0bWFwLApAQCAtOTY2LDMg KzEwMTUsMTUgQEAgdTMyIGt2bWlfbXNnX3NlbmRfY3JlYXRlX3ZjcHUoc3RydWN0IGt2bV92Y3B1 ICp2Y3B1KQogCiAJcmV0dXJuIGFjdGlvbjsKIH0KKwordTMyIGt2bWlfbXNnX3NlbmRfcGF1c2Vf dmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCit7CisJaW50IGVyciwgYWN0aW9uOworCisJZXJy ID0ga3ZtaV9zZW5kX2V2ZW50KHZjcHUsIEtWTUlfRVZFTlRfUEFVU0VfVkNQVSwgTlVMTCwgMCwK KwkJCSAgICAgIE5VTEwsIDAsICZhY3Rpb24pOworCWlmIChlcnIpCisJCXJldHVybiBLVk1JX0VW RU5UX0FDVElPTl9DT05USU5VRTsKKworCXJldHVybiBhY3Rpb247Cit9Cl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClZpcnR1YWxpemF0aW9uIG1haWxpbmcg bGlzdApWaXJ0dWFsaXphdGlvbkBsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZwpodHRwczovL2xp c3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby92aXJ0dWFsaXphdGlvbg==