From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrii Anisov Subject: [PATCH v3] xen: introduce VCPUOP_register_runstate_phys_memory_area hypercall Date: Fri, 24 May 2019 21:12:56 +0300 Message-ID: <1558721577-13958-3-git-send-email-andrii.anisov@gmail.com> References: <1558721577-13958-1-git-send-email-andrii.anisov@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hUEgm-00078S-U5 for xen-devel@lists.xenproject.org; Fri, 24 May 2019 18:13:08 +0000 Received: by mail-lf1-x141.google.com with SMTP id b11so1389657lfa.5 for ; Fri, 24 May 2019 11:13:06 -0700 (PDT) In-Reply-To: <1558721577-13958-1-git-send-email-andrii.anisov@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Stefano Stabellini , Andrii Anisov , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Jan Beulich , Wei Liu , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org RnJvbTogQW5kcmlpIEFuaXNvdiA8YW5kcmlpX2FuaXNvdkBlcGFtLmNvbT4KCkV4aXN0aW5nIGlu dGVyZmFjZSB0byByZWdpc3RlciBydW5zdGF0ZSBhcmUgd2l0aCBpdHMgdmlydHVhbCBhZGRyZXNz CmlzIHByb25lIHRvIGlzc3VlcyB3aGljaCBiZWNhbWUgbW9yZSBvYnZpb3VzIHdpdGggS1BUSSBl bmFibGVtZW50IGluCmd1ZXN0cy4gVGhlIG5hdHVyZSBvZiB0aG9zZSBpc3N1ZXMgaXMgdGhlIGZh Y3QgdGhhdCB0aGUgZ3Vlc3QgY291bGQKYmUgaW50ZXJydXB0ZWQgYnkgdGhlIGh5cGVydmlzb3Ig YXQgYW55IHRpbWUsIGFuZCB0aGVyZSBpcyBubyBndWFyYW50ZWUKdG8gaGF2ZSB0aGUgcmVnaXN0 ZXJlZCB2aXJ0dWFsIGFkZHJlc3MgdHJhbnNsYXRlZCB3aXRoIHRoZSBjdXJyZW50bHkKYXZhaWxh YmxlIGd1ZXN0J3MgcGFnZSB0YWJsZXMuIEJlZm9yZSB0aGUgS1BUSSBzdWNoIGEgc2l0dWF0aW9u IHdhcwpwb3NzaWJsZSBpbiBjYXNlIHRoZSBndWVzdCBpcyBjYXVnaHQgaW4gdGhlIG1pZGRsZSBv ZiBQVCBwcm9jZXNzaW5nCihlLmcuIHN1cGVycGFnZSBzaGF0dGVyaW5nKS4gV2l0aCB0aGUgS1BU SSB0aGlzIGhhcHBlbnMgYWxzbyB3aGVuIHRoZQpndWVzdCBydW5zIHVzZXJzcGFjZSwgc28gaGFz IGEgcHJldHR5IGhpZ2ggcHJvYmFiaWxpdHkuClNvIGl0IHdhcyBhZ3JlZWQgdG8gcmVnaXN0ZXIg cnVuc3RhdGUgd2l0aCB0aGUgZ3Vlc3QncyBwaHlzaWNhbCBhZGRyZXNzCnNvIHRoYXQgaXRzIG1h cHBpbmcgaXMgcGVybWFuZW50IGZyb20gdGhlIGh5cGVydmlzb3IgcG9pbnQgb2Ygdmlldy4gWzFd CgpUaGUgaHlwZXJjYWxsIGVtcGxveXMgdGhlIHNhbWUgdmNwdV9yZWdpc3Rlcl9ydW5zdGF0ZV9t ZW1vcnlfYXJlYQpzdHJ1Y3R1cmUgZm9yIHRoZSBpbnRlcmZhY2UsIGJ1dCByZXF1aXJlcyBhIHJl Z2lzdGVyZWQgYXJlYSB0byBub3QKY3Jvc3MgYSBwYWdlIGJvdW5kYXJ5LgoKWzFdIGh0dHBzOi8v bGlzdHMueGVucHJvamVjdC5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2ZWwvMjAxOS0wMi9tc2cw MDQxNi5odG1sCgpTaWduZWQtb2ZmLWJ5OiBBbmRyaWkgQW5pc292IDxhbmRyaWlfYW5pc292QGVw YW0uY29tPgotLS0KIHhlbi9hcmNoL2FybS9kb21haW4uYyAgICAgICAgfCAgNTggKysrKysrKysr KysrKysrKysrLS0tCiB4ZW4vYXJjaC94ODYvZG9tYWluLmMgICAgICAgIHwgIDk5ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tCiB4ZW4vYXJjaC94ODYveDg2XzY0L2RvbWFpbi5j IHwgIDE2ICsrKysrLQogeGVuL2NvbW1vbi9kb21haW4uYyAgICAgICAgICB8IDEyMSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCiB4ZW4vaW5jbHVkZS9wdWJsaWMv dmNwdS5oICAgIHwgIDE1ICsrKysrKwogeGVuL2luY2x1ZGUveGVuL3NjaGVkLmggICAgICB8ICAy OCArKysrKysrLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDMwNiBpbnNlcnRpb25zKCspLCAzMSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZG9tYWluLmMgYi94ZW4vYXJjaC9h cm0vZG9tYWluLmMKaW5kZXggZmYzMzBiMy4uZWNlZGYxYyAxMDA2NDQKLS0tIGEveGVuL2FyY2gv YXJtL2RvbWFpbi5jCisrKyBiL3hlbi9hcmNoL2FybS9kb21haW4uYwpAQCAtMjc0LDE3ICsyNzQs MTUgQEAgc3RhdGljIHZvaWQgY3R4dF9zd2l0Y2hfdG8oc3RydWN0IHZjcHUgKm4pCiAgICAgdmly dF90aW1lcl9yZXN0b3JlKG4pOwogfQogCi0vKiBVcGRhdGUgcGVyLVZDUFUgZ3Vlc3QgcnVuc3Rh dGUgc2hhcmVkIG1lbW9yeSBhcmVhIChpZiByZWdpc3RlcmVkKS4gKi8KLXN0YXRpYyB2b2lkIHVw ZGF0ZV9ydW5zdGF0ZV9hcmVhKHN0cnVjdCB2Y3B1ICp2KQorc3RhdGljIHZvaWQgdXBkYXRlX3J1 bnN0YXRlX2J5X2d2YWRkcihzdHJ1Y3QgdmNwdSAqdikKIHsKICAgICB2b2lkIF9fdXNlciAqZ3Vl c3RfaGFuZGxlID0gTlVMTDsKIAotICAgIGlmICggZ3Vlc3RfaGFuZGxlX2lzX251bGwocnVuc3Rh dGVfZ3Vlc3QodikpICkKLSAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCghZ3Vlc3RfaGFuZGxl X2lzX251bGwocnVuc3RhdGVfZ3Vlc3RfdmlydCh2KSkpOwogCiAgICAgaWYgKCBWTV9BU1NJU1Qo di0+ZG9tYWluLCBydW5zdGF0ZV91cGRhdGVfZmxhZykgKQogICAgIHsKLSAgICAgICAgZ3Vlc3Rf aGFuZGxlID0gJnYtPnJ1bnN0YXRlX2d1ZXN0LnAtPnN0YXRlX2VudHJ5X3RpbWUgKyAxOworICAg ICAgICBndWVzdF9oYW5kbGUgPSAmdi0+cnVuc3RhdGVfZ3Vlc3QudmlydC5wLT5zdGF0ZV9lbnRy eV90aW1lICsgMTsKICAgICAgICAgZ3Vlc3RfaGFuZGxlLS07CiAgICAgICAgIHYtPnJ1bnN0YXRl LnN0YXRlX2VudHJ5X3RpbWUgfD0gWEVOX1JVTlNUQVRFX1VQREFURTsKICAgICAgICAgX19yYXdf Y29weV90b19ndWVzdChndWVzdF9oYW5kbGUsCkBAIC0yOTIsNyArMjkwLDcgQEAgc3RhdGljIHZv aWQgdXBkYXRlX3J1bnN0YXRlX2FyZWEoc3RydWN0IHZjcHUgKnYpCiAgICAgICAgIHNtcF93bWIo KTsKICAgICB9CiAKLSAgICBfX2NvcHlfdG9fZ3Vlc3QocnVuc3RhdGVfZ3Vlc3QodiksICZ2LT5y dW5zdGF0ZSwgMSk7CisgICAgX19jb3B5X3RvX2d1ZXN0KHJ1bnN0YXRlX2d1ZXN0X3ZpcnQodiks ICZ2LT5ydW5zdGF0ZSwgMSk7CiAKICAgICBpZiAoIGd1ZXN0X2hhbmRsZSApCiAgICAgewpAQCAt MzAzLDYgKzMwMSw1MyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfcnVuc3RhdGVfYXJlYShzdHJ1Y3Qg dmNwdSAqdikKICAgICB9CiB9CiAKK3N0YXRpYyB2b2lkIHVwZGF0ZV9ydW5zdGF0ZV9ieV9ncGFk ZHIoc3RydWN0IHZjcHUgKnYpCit7CisgICAgc3RydWN0IHZjcHVfcnVuc3RhdGVfaW5mbyAqcnVu c3RhdGUgPQorICAgICAgICAgICAgKHN0cnVjdCB2Y3B1X3J1bnN0YXRlX2luZm8gKil2LT5ydW5z dGF0ZV9ndWVzdC5waHlzOworCisgICAgQVNTRVJUKHJ1bnN0YXRlICE9IE5VTEwpOworCisgICAg aWYgKCBWTV9BU1NJU1Qodi0+ZG9tYWluLCBydW5zdGF0ZV91cGRhdGVfZmxhZykgKQorICAgIHsK KyAgICAgICAgcnVuc3RhdGUtPnN0YXRlX2VudHJ5X3RpbWUgfD0gWEVOX1JVTlNUQVRFX1VQREFU RTsKKyAgICAgICAgc21wX3dtYigpOworICAgICAgICB2LT5ydW5zdGF0ZS5zdGF0ZV9lbnRyeV90 aW1lIHw9IFhFTl9SVU5TVEFURV9VUERBVEU7CisgICAgfQorCisgICAgbWVtY3B5KHYtPnJ1bnN0 YXRlX2d1ZXN0LnBoeXMsICZ2LT5ydW5zdGF0ZSwgc2l6ZW9mKHYtPnJ1bnN0YXRlKSk7CisKKyAg ICBpZiAoIFZNX0FTU0lTVCh2LT5kb21haW4sIHJ1bnN0YXRlX3VwZGF0ZV9mbGFnKSApCisgICAg eworICAgICAgICBydW5zdGF0ZS0+c3RhdGVfZW50cnlfdGltZSAmPSB+WEVOX1JVTlNUQVRFX1VQ REFURTsKKyAgICAgICAgc21wX3dtYigpOworICAgICAgICB2LT5ydW5zdGF0ZS5zdGF0ZV9lbnRy eV90aW1lICY9IH5YRU5fUlVOU1RBVEVfVVBEQVRFOworICAgIH0KK30KKworLyogVXBkYXRlIHBl ci1WQ1BVIGd1ZXN0IHJ1bnN0YXRlIHNoYXJlZCBtZW1vcnkgYXJlYSAoaWYgcmVnaXN0ZXJlZCku ICovCitzdGF0aWMgdm9pZCB1cGRhdGVfcnVuc3RhdGVfYXJlYShzdHJ1Y3QgdmNwdSAqdikKK3sK KyAgICBpZiAoIHhjaGcoJnYtPnJ1bnN0YXRlX2luX3VzZSwgMSkgKQorICAgICAgICByZXR1cm47 CisKKyAgICBzd2l0Y2ggKCB2LT5ydW5zdGF0ZV9ndWVzdF90eXBlICkKKyAgICB7CisgICAgY2Fz ZSBSVU5TVEFURV9OT05FOgorICAgICAgICBicmVhazsKKworICAgIGNhc2UgUlVOU1RBVEVfVkFE RFI6CisgICAgICAgIHVwZGF0ZV9ydW5zdGF0ZV9ieV9ndmFkZHIodik7CisgICAgICAgIGJyZWFr OworCisgICAgY2FzZSBSVU5TVEFURV9QQUREUjoKKyAgICAgICAgdXBkYXRlX3J1bnN0YXRlX2J5 X2dwYWRkcih2KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgeGNoZygmdi0+cnVuc3Rh dGVfaW5fdXNlLCAwKTsKK30KKwogc3RhdGljIHZvaWQgc2NoZWR1bGVfdGFpbChzdHJ1Y3QgdmNw dSAqcHJldikKIHsKICAgICBBU1NFUlQocHJldiAhPSBjdXJyZW50KTsKQEAgLTk5OCw2ICsxMDQz LDcgQEAgbG9uZyBkb19hcm1fdmNwdV9vcChpbnQgY21kLCB1bnNpZ25lZCBpbnQgdmNwdWlkLCBY RU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGEKICAgICB7CiAgICAgICAgIGNhc2UgVkNQVU9Q X3JlZ2lzdGVyX3ZjcHVfaW5mbzoKICAgICAgICAgY2FzZSBWQ1BVT1BfcmVnaXN0ZXJfcnVuc3Rh dGVfbWVtb3J5X2FyZWE6CisgICAgICAgIGNhc2UgVkNQVU9QX3JlZ2lzdGVyX3J1bnN0YXRlX3Bo eXNfbWVtb3J5X2FyZWE6CiAgICAgICAgICAgICByZXR1cm4gZG9fdmNwdV9vcChjbWQsIHZjcHVp ZCwgYXJnKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwpk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWFpbi5jIGIveGVuL2FyY2gveDg2L2RvbWFpbi5j CmluZGV4IGFjOTYwZGQuLmZlNzE3NzYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9kb21haW4u YworKysgYi94ZW4vYXJjaC94ODYvZG9tYWluLmMKQEAgLTE1NjYsMjIgKzE1NjYsMjEgQEAgdm9p ZCBwYXJhdmlydF9jdHh0X3N3aXRjaF90byhzdHJ1Y3QgdmNwdSAqdikKIH0KIAogLyogVXBkYXRl IHBlci1WQ1BVIGd1ZXN0IHJ1bnN0YXRlIHNoYXJlZCBtZW1vcnkgYXJlYSAoaWYgcmVnaXN0ZXJl ZCkuICovCi1ib29sIHVwZGF0ZV9ydW5zdGF0ZV9hcmVhKHN0cnVjdCB2Y3B1ICp2KQorc3RhdGlj IGJvb2wgdXBkYXRlX3J1bnN0YXRlX2J5X2d2YWRkcihzdHJ1Y3QgdmNwdSAqdikKIHsKICAgICBi b29sIHJjOwogICAgIHN0cnVjdCBndWVzdF9tZW1vcnlfcG9saWN5IHBvbGljeSA9IHsgLm5lc3Rl ZF9ndWVzdF9tb2RlID0gZmFsc2UgfTsKICAgICB2b2lkIF9fdXNlciAqZ3Vlc3RfaGFuZGxlID0g TlVMTDsKIAotICAgIGlmICggZ3Vlc3RfaGFuZGxlX2lzX251bGwocnVuc3RhdGVfZ3Vlc3Qodikp ICkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgQVNTRVJUKCFndWVzdF9oYW5kbGVfaXNfbnVs bChydW5zdGF0ZV9ndWVzdF92aXJ0KHYpKSk7CiAKICAgICB1cGRhdGVfZ3Vlc3RfbWVtb3J5X3Bv bGljeSh2LCAmcG9saWN5KTsKIAogICAgIGlmICggVk1fQVNTSVNUKHYtPmRvbWFpbiwgcnVuc3Rh dGVfdXBkYXRlX2ZsYWcpICkKICAgICB7CiAgICAgICAgIGd1ZXN0X2hhbmRsZSA9IGhhc18zMmJp dF9zaGluZm8odi0+ZG9tYWluKQotICAgICAgICAgICAgPyAmdi0+cnVuc3RhdGVfZ3Vlc3QuY29t cGF0LnAtPnN0YXRlX2VudHJ5X3RpbWUgKyAxCi0gICAgICAgICAgICA6ICZ2LT5ydW5zdGF0ZV9n dWVzdC5uYXRpdmUucC0+c3RhdGVfZW50cnlfdGltZSArIDE7CisgICAgICAgICAgICA/ICZ2LT5y dW5zdGF0ZV9ndWVzdC52aXJ0LmNvbXBhdC5wLT5zdGF0ZV9lbnRyeV90aW1lICsgMQorICAgICAg ICAgICAgOiAmdi0+cnVuc3RhdGVfZ3Vlc3QudmlydC5uYXRpdmUucC0+c3RhdGVfZW50cnlfdGlt ZSArIDE7CiAgICAgICAgIGd1ZXN0X2hhbmRsZS0tOwogICAgICAgICB2LT5ydW5zdGF0ZS5zdGF0 ZV9lbnRyeV90aW1lIHw9IFhFTl9SVU5TVEFURV9VUERBVEU7CiAgICAgICAgIF9fcmF3X2NvcHlf dG9fZ3Vlc3QoZ3Vlc3RfaGFuZGxlLApAQCAtMTU5NCwxMSArMTU5MywxMSBAQCBib29sIHVwZGF0 ZV9ydW5zdGF0ZV9hcmVhKHN0cnVjdCB2Y3B1ICp2KQogICAgICAgICBzdHJ1Y3QgY29tcGF0X3Zj cHVfcnVuc3RhdGVfaW5mbyBpbmZvOwogCiAgICAgICAgIFhMQVRfdmNwdV9ydW5zdGF0ZV9pbmZv KCZpbmZvLCAmdi0+cnVuc3RhdGUpOwotICAgICAgICBfX2NvcHlfdG9fZ3Vlc3Qodi0+cnVuc3Rh dGVfZ3Vlc3QuY29tcGF0LCAmaW5mbywgMSk7CisgICAgICAgIF9fY29weV90b19ndWVzdCh2LT5y dW5zdGF0ZV9ndWVzdC52aXJ0LmNvbXBhdCwgJmluZm8sIDEpOwogICAgICAgICByYyA9IHRydWU7 CiAgICAgfQogICAgIGVsc2UKLSAgICAgICAgcmMgPSBfX2NvcHlfdG9fZ3Vlc3QocnVuc3RhdGVf Z3Vlc3QodiksICZ2LT5ydW5zdGF0ZSwgMSkgIT0KKyAgICAgICAgcmMgPSBfX2NvcHlfdG9fZ3Vl c3QocnVuc3RhdGVfZ3Vlc3RfdmlydCh2KSwgJnYtPnJ1bnN0YXRlLCAxKSAhPQogICAgICAgICAg ICAgIHNpemVvZih2LT5ydW5zdGF0ZSk7CiAKICAgICBpZiAoIGd1ZXN0X2hhbmRsZSApCkBAIC0x NjE0LDYgKzE2MTMsOTIgQEAgYm9vbCB1cGRhdGVfcnVuc3RhdGVfYXJlYShzdHJ1Y3QgdmNwdSAq dikKICAgICByZXR1cm4gcmM7CiB9CiAKK3N0YXRpYyBib29sIHVwZGF0ZV9ydW5zdGF0ZV9ieV9n cGFkZHJfbmF0aXZlKHN0cnVjdCB2Y3B1ICp2KQoreworICAgIHN0cnVjdCB2Y3B1X3J1bnN0YXRl X2luZm8gKnJ1bnN0YXRlID0KKyAgICAgICAgICAgIChzdHJ1Y3QgdmNwdV9ydW5zdGF0ZV9pbmZv ICopdi0+cnVuc3RhdGVfZ3Vlc3QucGh5czsKKworICAgIEFTU0VSVChydW5zdGF0ZSAhPSBOVUxM KTsKKworICAgIGlmICggVk1fQVNTSVNUKHYtPmRvbWFpbiwgcnVuc3RhdGVfdXBkYXRlX2ZsYWcp ICkKKyAgICB7CisgICAgICAgIHJ1bnN0YXRlLT5zdGF0ZV9lbnRyeV90aW1lIHw9IFhFTl9SVU5T VEFURV9VUERBVEU7CisgICAgICAgIHNtcF93bWIoKTsKKyAgICAgICAgdi0+cnVuc3RhdGUuc3Rh dGVfZW50cnlfdGltZSB8PSBYRU5fUlVOU1RBVEVfVVBEQVRFOworICAgIH0KKworICAgIG1lbWNw eSh2LT5ydW5zdGF0ZV9ndWVzdC5waHlzLCAmdi0+cnVuc3RhdGUsIHNpemVvZih2LT5ydW5zdGF0 ZSkpOworCisgICAgaWYgKCBWTV9BU1NJU1Qodi0+ZG9tYWluLCBydW5zdGF0ZV91cGRhdGVfZmxh ZykgKQorICAgIHsKKyAgICAgICAgcnVuc3RhdGUtPnN0YXRlX2VudHJ5X3RpbWUgJj0gflhFTl9S VU5TVEFURV9VUERBVEU7CisgICAgICAgIHNtcF93bWIoKTsKKyAgICAgICAgdi0+cnVuc3RhdGUu c3RhdGVfZW50cnlfdGltZSAmPSB+WEVOX1JVTlNUQVRFX1VQREFURTsKKyAgICB9CisKKyAgICBy ZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgdXBkYXRlX3J1bnN0YXRlX2J5X2dwYWRkcl9j b21wYXQoc3RydWN0IHZjcHUgKnYpCit7CisgICAgc3RydWN0IGNvbXBhdF92Y3B1X3J1bnN0YXRl X2luZm8gKnJ1bnN0YXRlID0KKyAgICAgICAgICAgIChzdHJ1Y3QgY29tcGF0X3ZjcHVfcnVuc3Rh dGVfaW5mbyAqKXYtPnJ1bnN0YXRlX2d1ZXN0LnBoeXM7CisKKyAgICBBU1NFUlQocnVuc3RhdGUg IT0gTlVMTCk7CisKKyAgICBpZiAoIFZNX0FTU0lTVCh2LT5kb21haW4sIHJ1bnN0YXRlX3VwZGF0 ZV9mbGFnKSApCisgICAgeworICAgICAgICBydW5zdGF0ZS0+c3RhdGVfZW50cnlfdGltZSB8PSBY RU5fUlVOU1RBVEVfVVBEQVRFOworICAgICAgICBzbXBfd21iKCk7CisgICAgICAgIHYtPnJ1bnN0 YXRlLnN0YXRlX2VudHJ5X3RpbWUgfD0gWEVOX1JVTlNUQVRFX1VQREFURTsKKyAgICB9CisKKyAg ICB7CisgICAgICAgIHN0cnVjdCBjb21wYXRfdmNwdV9ydW5zdGF0ZV9pbmZvIGluZm87CisgICAg ICAgIFhMQVRfdmNwdV9ydW5zdGF0ZV9pbmZvKCZpbmZvLCAmdi0+cnVuc3RhdGUpOworICAgICAg ICBtZW1jcHkodi0+cnVuc3RhdGVfZ3Vlc3QucGh5cywgJmluZm8sIHNpemVvZihpbmZvKSk7Cisg ICAgfQorICAgIGVsc2UKKyAgICAgICAgbWVtY3B5KHYtPnJ1bnN0YXRlX2d1ZXN0LnBoeXMsICZ2 LT5ydW5zdGF0ZSwgc2l6ZW9mKHYtPnJ1bnN0YXRlKSk7CisKKyAgICBpZiAoIFZNX0FTU0lTVCh2 LT5kb21haW4sIHJ1bnN0YXRlX3VwZGF0ZV9mbGFnKSApCisgICAgeworICAgICAgICBydW5zdGF0 ZS0+c3RhdGVfZW50cnlfdGltZSAmPSB+WEVOX1JVTlNUQVRFX1VQREFURTsKKyAgICAgICAgc21w X3dtYigpOworICAgICAgICB2LT5ydW5zdGF0ZS5zdGF0ZV9lbnRyeV90aW1lICY9IH5YRU5fUlVO U1RBVEVfVVBEQVRFOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIHVwZGF0 ZV9ydW5zdGF0ZV9hcmVhKHN0cnVjdCB2Y3B1ICp2KQoreworICAgIGJvb2wgcmMgPSB0cnVlOwor CisgICAgaWYgKCB4Y2hnKCZ2LT5ydW5zdGF0ZV9pbl91c2UsIDEpICkKKyAgICAgICAgcmV0dXJu IHJjOworCisgICAgc3dpdGNoICggdi0+cnVuc3RhdGVfZ3Vlc3RfdHlwZSApCisgICAgeworICAg IGNhc2UgUlVOU1RBVEVfTk9ORToKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFJVTlNUQVRF X1ZBRERSOgorICAgICAgICByYyA9IHVwZGF0ZV9ydW5zdGF0ZV9ieV9ndmFkZHIodik7CisgICAg ICAgIGJyZWFrOworCisgICAgY2FzZSBSVU5TVEFURV9QQUREUjoKKyAgICAgICAgaWYgKCBoYXNf MzJiaXRfc2hpbmZvKHYtPmRvbWFpbikgKQorICAgICAgICAgICAgcmMgPSB1cGRhdGVfcnVuc3Rh dGVfYnlfZ3BhZGRyX2NvbXBhdCh2KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmMgPSB1 cGRhdGVfcnVuc3RhdGVfYnlfZ3BhZGRyX25hdGl2ZSh2KTsKKyAgICAgICAgYnJlYWs7CisgICAg fQorCisgICAgeGNoZygmdi0+cnVuc3RhdGVfaW5fdXNlLCAwKTsKKyAgICByZXR1cm4gcmM7Cit9 CisKIHN0YXRpYyB2b2lkIF91cGRhdGVfcnVuc3RhdGVfYXJlYShzdHJ1Y3QgdmNwdSAqdikKIHsK ICAgICBpZiAoICF1cGRhdGVfcnVuc3RhdGVfYXJlYSh2KSAmJiBpc19wdl92Y3B1KHYpICYmCmRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2XzY0L2RvbWFpbi5jIGIveGVuL2FyY2gveDg2L3g4 Nl82NC9kb21haW4uYwppbmRleCBjNDZkY2NjLi44NWQwMDcyIDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYveDg2XzY0L2RvbWFpbi5jCisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvZG9tYWluLmMK QEAgLTEyLDYgKzEyLDggQEAKIENIRUNLX3ZjcHVfZ2V0X3BoeXNpZDsKICN1bmRlZiB4ZW5fdmNw dV9nZXRfcGh5c2lkCiAKK2V4dGVybiB2b2lkIGRpc2NhcmRfcnVuc3RhdGVfYXJlYShzdHJ1Y3Qg dmNwdSAqdik7CisKIGludAogYXJjaF9jb21wYXRfdmNwdV9vcCgKICAgICBpbnQgY21kLCBzdHJ1 Y3QgdmNwdSAqdiwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCkBAIC0zNSw4ICsz NywxNiBAQCBhcmNoX2NvbXBhdF92Y3B1X29wKAogICAgICAgICAgICAgICFjb21wYXRfaGFuZGxl X29rYXkoYXJlYS5hZGRyLmgsIDEpICkKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIHdo aWxlKCB4Y2hnKCZ2LT5ydW5zdGF0ZV9pbl91c2UsIDEpID09IDApOworCisgICAgICAgIGRpc2Nh cmRfcnVuc3RhdGVfYXJlYSh2KTsKKwogICAgICAgICByYyA9IDA7Ci0gICAgICAgIGd1ZXN0X2Zy b21fY29tcGF0X2hhbmRsZSh2LT5ydW5zdGF0ZV9ndWVzdC5jb21wYXQsIGFyZWEuYWRkci5oKTsK KworICAgICAgICBndWVzdF9mcm9tX2NvbXBhdF9oYW5kbGUodi0+cnVuc3RhdGVfZ3Vlc3Qudmly dC5jb21wYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmVhLmFkZHIuaCk7 CisKKyAgICAgICAgdi0+cnVuc3RhdGVfZ3Vlc3RfdHlwZSA9IFJVTlNUQVRFX1ZBRERSOwogCiAg ICAgICAgIGlmICggdiA9PSBjdXJyZW50ICkKICAgICAgICAgewpAQCAtNDksNyArNTksOSBAQCBh cmNoX2NvbXBhdF92Y3B1X29wKAogICAgICAgICAgICAgdmNwdV9ydW5zdGF0ZV9nZXQodiwgJnJ1 bnN0YXRlKTsKICAgICAgICAgICAgIFhMQVRfdmNwdV9ydW5zdGF0ZV9pbmZvKCZpbmZvLCAmcnVu c3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIF9fY29weV90b19ndWVzdCh2LT5ydW5zdGF0ZV9n dWVzdC5jb21wYXQsICZpbmZvLCAxKTsKKyAgICAgICAgX19jb3B5X3RvX2d1ZXN0KHYtPnJ1bnN0 YXRlX2d1ZXN0LnZpcnQuY29tcGF0LCAmaW5mbywgMSk7CisKKyAgICAgICAgeGNoZygmdi0+cnVu c3RhdGVfaW5fdXNlLCAwKTsKIAogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS94 ZW4vY29tbW9uL2RvbWFpbi5jIGIveGVuL2NvbW1vbi9kb21haW4uYwppbmRleCA5MGM2NjA3Li5k Mjc2Yjg3IDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL2RvbWFpbi5jCisrKyBiL3hlbi9jb21tb24v ZG9tYWluLmMKQEAgLTY5OCw2ICs2OTgsNzQgQEAgaW50IHJjdV9sb2NrX2xpdmVfcmVtb3RlX2Rv bWFpbl9ieV9pZChkb21pZF90IGRvbSwgc3RydWN0IGRvbWFpbiAqKmQpCiAgICAgcmV0dXJuIDA7 CiB9CiAKK3N0YXRpYyB2b2lkIHVubWFwX3J1bnN0YXRlX2FyZWEoc3RydWN0IHZjcHUgKnYpCit7 CisgICAgbWZuX3QgbWZuOworCisgICAgaWYgKCAhIHYtPnJ1bnN0YXRlX2d1ZXN0LnBoeXMgKQor ICAgICAgICByZXR1cm47CisKKyAgICBtZm4gPSBkb21haW5fcGFnZV9tYXBfdG9fbWZuKHYtPnJ1 bnN0YXRlX2d1ZXN0LnBoeXMpOworCisgICAgdW5tYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKCh2b2lk ICopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgbG9uZyl2LT5ydW5z dGF0ZV9ndWVzdC5waHlzICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VfTUFT SykpOworCisgICAgdi0+cnVuc3RhdGVfZ3Vlc3QucGh5cyA9IE5VTEw7CisgICAgcHV0X3BhZ2Vf YW5kX3R5cGUobWZuX3RvX3BhZ2UobWZuKSk7Cit9CisKK3N0YXRpYyBpbnQgbWFwX3J1bnN0YXRl X2FyZWEoc3RydWN0IHZjcHUgKnYsCisgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZjcHVf cmVnaXN0ZXJfcnVuc3RhdGVfbWVtb3J5X2FyZWEgKmFyZWEpCit7CisgICAgdW5zaWduZWQgbG9u ZyBvZmZzZXQgPSBhcmVhLT5hZGRyLnAgJiB+UEFHRV9NQVNLOworICAgIGdmbl90IGdmbiA9IGdh ZGRyX3RvX2dmbihhcmVhLT5hZGRyLnApOworICAgIHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21h aW47CisgICAgdm9pZCAqbWFwcGluZzsKKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlOworICAg IHNpemVfdCBzaXplID0gc2l6ZW9mKHN0cnVjdCB2Y3B1X3J1bnN0YXRlX2luZm8pOworCisgICAg aWYgKCBvZmZzZXQgPiAoUEFHRV9TSVpFIC0gc2l6ZSkgKQorICAgICAgICByZXR1cm4gLUVJTlZB TDsKKworICAgIHBhZ2UgPSBnZXRfcGFnZV9mcm9tX2dmbihkLCBnZm5feChnZm4pLCBOVUxMLCBQ Mk1fQUxMT0MpOworICAgIGlmICggIXBhZ2UgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKwor ICAgIGlmICggIWdldF9wYWdlX3R5cGUocGFnZSwgUEdUX3dyaXRhYmxlX3BhZ2UpICkKKyAgICB7 CisgICAgICAgIHB1dF9wYWdlKHBhZ2UpOworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9 CisKKyAgICBtYXBwaW5nID0gX19tYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKHBhZ2UpOworCisgICAg aWYgKCBtYXBwaW5nID09IE5VTEwgKQorICAgIHsKKyAgICAgICAgcHV0X3BhZ2VfYW5kX3R5cGUo cGFnZSk7CisgICAgICAgIHJldHVybiAtRU5PTUVNOworICAgIH0KKworICAgIHYtPnJ1bnN0YXRl X2d1ZXN0LnBoeXMgPSBtYXBwaW5nICsgb2Zmc2V0OworCisgICAgcmV0dXJuIDA7Cit9CisKK3Zv aWQgZGlzY2FyZF9ydW5zdGF0ZV9hcmVhKHN0cnVjdCB2Y3B1ICp2KQoreworICAgIGlmICggdi0+ cnVuc3RhdGVfZ3Vlc3RfdHlwZSA9PSBSVU5TVEFURV9QQUREUiApCisgICAgICAgIHVubWFwX3J1 bnN0YXRlX2FyZWEodik7CisKKyAgICB2LT5ydW5zdGF0ZV9ndWVzdF90eXBlID0gUlVOU1RBVEVf Tk9ORTsKK30KKworc3RhdGljIHZvaWQgZGlzY2FyZF9ydW5zdGF0ZV9hcmVhX2xvY2tlZChzdHJ1 Y3QgdmNwdSAqdikKK3sKKyAgICB3aGlsZSAoIHhjaGcoJnYtPnJ1bnN0YXRlX2luX3VzZSwgMSkg KTsKKyAgICBkaXNjYXJkX3J1bnN0YXRlX2FyZWEodik7CisgICAgeGNoZygmdi0+cnVuc3RhdGVf aW5fdXNlLCAwKTsKK30KKwogaW50IGRvbWFpbl9raWxsKHN0cnVjdCBkb21haW4gKmQpCiB7CiAg ICAgaW50IHJjID0gMDsKQEAgLTczNCw3ICs4MDIsMTAgQEAgaW50IGRvbWFpbl9raWxsKHN0cnVj dCBkb21haW4gKmQpCiAgICAgICAgIGlmICggY3B1cG9vbF9tb3ZlX2RvbWFpbihkLCBjcHVwb29s MCkgKQogICAgICAgICAgICAgcmV0dXJuIC1FUkVTVEFSVDsKICAgICAgICAgZm9yX2VhY2hfdmNw dSAoIGQsIHYgKQorICAgICAgICB7CisgICAgICAgICAgICBkaXNjYXJkX3J1bnN0YXRlX2FyZWFf bG9ja2VkKHYpOwogICAgICAgICAgICAgdW5tYXBfdmNwdV9pbmZvKHYpOworICAgICAgICB9CiAg ICAgICAgIGQtPmlzX2R5aW5nID0gRE9NRFlJTkdfZGVhZDsKICAgICAgICAgLyogTWVtIGV2ZW50 IGNsZWFudXAgaGFzIHRvIGdvIGhlcmUgYmVjYXVzZSB0aGUgcmluZ3MgCiAgICAgICAgICAqIGhh dmUgdG8gYmUgcHV0IGJlZm9yZSB3ZSBjYWxsIHB1dF9kb21haW4uICovCkBAIC0xMTg4LDcgKzEy NTksNyBAQCBpbnQgZG9tYWluX3NvZnRfcmVzZXQoc3RydWN0IGRvbWFpbiAqZCkKIAogICAgIGZv cl9lYWNoX3ZjcHUgKCBkLCB2ICkKICAgICB7Ci0gICAgICAgIHNldF94ZW5fZ3Vlc3RfaGFuZGxl KHJ1bnN0YXRlX2d1ZXN0KHYpLCBOVUxMKTsKKyAgICAgICAgZGlzY2FyZF9ydW5zdGF0ZV9hcmVh X2xvY2tlZCh2KTsKICAgICAgICAgdW5tYXBfdmNwdV9pbmZvKHYpOwogICAgIH0KIApAQCAtMTUx OCwxOCArMTU4OSw1MCBAQCBsb25nIGRvX3ZjcHVfb3AoaW50IGNtZCwgdW5zaWduZWQgaW50IHZj cHVpZCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCiAgICAgICAgICAgICBicmVh azsKIAogICAgICAgICByYyA9IDA7Ci0gICAgICAgIHJ1bnN0YXRlX2d1ZXN0KHYpID0gYXJlYS5h ZGRyLmg7CiAKLSAgICAgICAgaWYgKCB2ID09IGN1cnJlbnQgKQotICAgICAgICB7Ci0gICAgICAg ICAgICBfX2NvcHlfdG9fZ3Vlc3QocnVuc3RhdGVfZ3Vlc3QodiksICZ2LT5ydW5zdGF0ZSwgMSk7 Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQorICAgICAgICB3aGlsZSggeGNoZygmdi0+cnVuc3Rh dGVfaW5fdXNlLCAxKSA9PSAwKTsKKworICAgICAgICBkaXNjYXJkX3J1bnN0YXRlX2FyZWEodik7 CisKKyAgICAgICAgaWYgKCAhZ3Vlc3RfaGFuZGxlX2lzX251bGwocnVuc3RhdGVfZ3Vlc3Rfdmly dCh2KSkgKQogICAgICAgICB7Ci0gICAgICAgICAgICB2Y3B1X3J1bnN0YXRlX2dldCh2LCAmcnVu c3RhdGUpOwotICAgICAgICAgICAgX19jb3B5X3RvX2d1ZXN0KHJ1bnN0YXRlX2d1ZXN0KHYpLCAm cnVuc3RhdGUsIDEpOworICAgICAgICAgICAgcnVuc3RhdGVfZ3Vlc3RfdmlydCh2KSA9IGFyZWEu YWRkci5oOworICAgICAgICAgICAgdi0+cnVuc3RhdGVfZ3Vlc3RfdHlwZSA9IFJVTlNUQVRFX1ZB RERSOworCisgICAgICAgICAgICBpZiAoIHYgPT0gY3VycmVudCApCisgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgX19jb3B5X3RvX2d1ZXN0KHJ1bnN0YXRlX2d1ZXN0X3ZpcnQodiksICZ2 LT5ydW5zdGF0ZSwgMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgdmNwdV9ydW5zdGF0ZV9nZXQodiwgJnJ1bnN0YXRlKTsK KyAgICAgICAgICAgICAgICBfX2NvcHlfdG9fZ3Vlc3QocnVuc3RhdGVfZ3Vlc3RfdmlydCh2KSwg JnJ1bnN0YXRlLCAxKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCisgICAgICAgIHhjaGco JnYtPnJ1bnN0YXRlX2luX3VzZSwgMCk7CisKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg Y2FzZSBWQ1BVT1BfcmVnaXN0ZXJfcnVuc3RhdGVfcGh5c19tZW1vcnlfYXJlYToKKyAgICB7Cisg ICAgICAgIHN0cnVjdCB2Y3B1X3JlZ2lzdGVyX3J1bnN0YXRlX21lbW9yeV9hcmVhIGFyZWE7CisK KyAgICAgICAgcmMgPSAtRUZBVUxUOworICAgICAgICBpZiAoIGNvcHlfZnJvbV9ndWVzdCgmYXJl YSwgYXJnLCAxKSApCisgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgd2hpbGUoIHhjaGco JnYtPnJ1bnN0YXRlX2luX3VzZSwgMSkgPT0gMCk7CisKKyAgICAgICAgZGlzY2FyZF9ydW5zdGF0 ZV9hcmVhKHYpOworCisgICAgICAgIHJjID0gbWFwX3J1bnN0YXRlX2FyZWEodiwgJmFyZWEpOwor ICAgICAgICBpZiAoICFyYyApCisgICAgICAgICAgICB2LT5ydW5zdGF0ZV9ndWVzdF90eXBlID0g UlVOU1RBVEVfUEFERFI7CisKKyAgICAgICAgeGNoZygmdi0+cnVuc3RhdGVfaW5fdXNlLCAwKTsK KwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1Ymxp Yy92Y3B1LmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvdmNwdS5oCmluZGV4IDM2MjNhZjkuLmQ3ZGE0 YTMgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy92Y3B1LmgKKysrIGIveGVuL2luY2x1 ZGUvcHVibGljL3ZjcHUuaApAQCAtMjM1LDYgKzIzNSwyMSBAQCBzdHJ1Y3QgdmNwdV9yZWdpc3Rl cl90aW1lX21lbW9yeV9hcmVhIHsKIHR5cGVkZWYgc3RydWN0IHZjcHVfcmVnaXN0ZXJfdGltZV9t ZW1vcnlfYXJlYSB2Y3B1X3JlZ2lzdGVyX3RpbWVfbWVtb3J5X2FyZWFfdDsKIERFRklORV9YRU5f R1VFU1RfSEFORExFKHZjcHVfcmVnaXN0ZXJfdGltZV9tZW1vcnlfYXJlYV90KTsKIAorLyoKKyAq IFJlZ2lzdGVyIGEgc2hhcmVkIG1lbW9yeSBhcmVhIGZyb20gd2hpY2ggdGhlIGd1ZXN0IG1heSBv YnRhaW4gaXRzIG93bgorICogcnVuc3RhdGUgaW5mb3JtYXRpb24gd2l0aG91dCBuZWVkaW5nIHRv IGV4ZWN1dGUgYSBoeXBlcmNhbGwuCisgKiBOb3RlczoKKyAqICAxLiBUaGUgcmVnaXN0ZXJlZCBh ZGRyZXNzIG11c3QgYmUgZ3Vlc3QncyBwaHlzaWNhbCBhZGRyZXNzLgorICogIDIuIFRoZSByZWdp c3RlcmVkIHJ1bnN0YXRlIGFyZWEgc2hvdWxkIG5vdCBjcm9zcyBwYWdlIGJvdW5kYXJ5LgorICog IDMuIE9ubHkgb25lIHNoYXJlZCBhcmVhIG1heSBiZSByZWdpc3RlcmVkIHBlciBWQ1BVLiBUaGUg c2hhcmVkIGFyZWEgaXMKKyAqICAgICB1cGRhdGVkIGJ5IHRoZSBoeXBlcnZpc29yIGVhY2ggdGlt ZSB0aGUgVkNQVSBpcyBzY2hlZHVsZWQuIFRodXMKKyAqICAgICBydW5zdGF0ZS5zdGF0ZSB3aWxs IGFsd2F5cyBiZSBSVU5TVEFURV9ydW5uaW5nIGFuZAorICogICAgIHJ1bnN0YXRlLnN0YXRlX2Vu dHJ5X3RpbWUgd2lsbCBpbmRpY2F0ZSB0aGUgc3lzdGVtIHRpbWUgYXQgd2hpY2ggdGhlCisgKiAg ICAgVkNQVSB3YXMgbGFzdCBzY2hlZHVsZWQgdG8gcnVuLgorICogQGV4dHJhX2FyZyA9PSBwb2lu dGVyIHRvIHZjcHVfcmVnaXN0ZXJfcnVuc3RhdGVfbWVtb3J5X2FyZWEgc3RydWN0dXJlLgorICov CisjZGVmaW5lIFZDUFVPUF9yZWdpc3Rlcl9ydW5zdGF0ZV9waHlzX21lbW9yeV9hcmVhIDE0CisK ICNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfVkNQVV9IX18gKi8KIAogLyoKZGlmZiAtLWdpdCBhL3hl bi9pbmNsdWRlL3hlbi9zY2hlZC5oIGIveGVuL2luY2x1ZGUveGVuL3NjaGVkLmgKaW5kZXggMjIw MWZhYy4uNmM4ZGU4ZiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3NjaGVkLmgKKysrIGIv eGVuL2luY2x1ZGUveGVuL3NjaGVkLmgKQEAgLTE2MywxNyArMTYzLDMxIEBAIHN0cnVjdCB2Y3B1 CiAgICAgdm9pZCAgICAgICAgICAgICpzY2hlZF9wcml2OyAgICAvKiBzY2hlZHVsZXItc3BlY2lm aWMgZGF0YSAqLwogCiAgICAgc3RydWN0IHZjcHVfcnVuc3RhdGVfaW5mbyBydW5zdGF0ZTsKKwor ICAgIGVudW0geworICAgICAgICBSVU5TVEFURV9OT05FID0gMCwKKyAgICAgICAgUlVOU1RBVEVf UEFERFIgPSAxLAorICAgICAgICBSVU5TVEFURV9WQUREUiA9IDIsCisgICAgfSBydW5zdGF0ZV9n dWVzdF90eXBlOworCisgICAgdW5zaWduZWQgbG9uZyBydW5zdGF0ZV9pbl91c2U7CisKKyAgICB1 bmlvbgorICAgIHsKICNpZm5kZWYgQ09ORklHX0NPTVBBVAotIyBkZWZpbmUgcnVuc3RhdGVfZ3Vl c3QodikgKCh2KS0+cnVuc3RhdGVfZ3Vlc3QpCi0gICAgWEVOX0dVRVNUX0hBTkRMRSh2Y3B1X3J1 bnN0YXRlX2luZm9fdCkgcnVuc3RhdGVfZ3Vlc3Q7IC8qIGd1ZXN0IGFkZHJlc3MgKi8KKyMgZGVm aW5lIHJ1bnN0YXRlX2d1ZXN0X3ZpcnQodikgKCh2KS0+cnVuc3RhdGVfZ3Vlc3QudmlydCkKKyAg ICAgICAgICAgWEVOX0dVRVNUX0hBTkRMRSh2Y3B1X3J1bnN0YXRlX2luZm9fdCkgdmlydDsgLyog Z3Vlc3QgYWRkcmVzcyAqLwogI2Vsc2UKLSMgZGVmaW5lIHJ1bnN0YXRlX2d1ZXN0KHYpICgodikt PnJ1bnN0YXRlX2d1ZXN0Lm5hdGl2ZSkKLSAgICB1bmlvbiB7Ci0gICAgICAgIFhFTl9HVUVTVF9I QU5ETEUodmNwdV9ydW5zdGF0ZV9pbmZvX3QpIG5hdGl2ZTsKLSAgICAgICAgWEVOX0dVRVNUX0hB TkRMRSh2Y3B1X3J1bnN0YXRlX2luZm9fY29tcGF0X3QpIGNvbXBhdDsKLSAgICB9IHJ1bnN0YXRl X2d1ZXN0OyAvKiBndWVzdCBhZGRyZXNzICovCisjIGRlZmluZSBydW5zdGF0ZV9ndWVzdF92aXJ0 KHYpICgodiktPnJ1bnN0YXRlX2d1ZXN0LnZpcnQubmF0aXZlKQorICAgICAgICAgICB1bmlvbiB7 CisgICAgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFKHZjcHVfcnVuc3RhdGVfaW5mb190KSBu YXRpdmU7CisgICAgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFKHZjcHVfcnVuc3RhdGVfaW5m b19jb21wYXRfdCkgY29tcGF0OworICAgICAgICAgICB9IHZpcnQ7IC8qIGd1ZXN0IGFkZHJlc3Mg Ki8KICNlbmRpZgogCisgICAgICAgIHZvaWQqICAgcGh5czsKKyAgICB9IHJ1bnN0YXRlX2d1ZXN0 OworCiAgICAgLyogbGFzdCB0aW1lIHdoZW4gdkNQVSBpcyBzY2hlZHVsZWQgb3V0ICovCiAgICAg dWludDY0X3QgbGFzdF9ydW5fdGltZTsKIAotLSAKMi43LjQKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h aWxtYW4vbGlzdGluZm8veGVuLWRldmVs From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.8 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 665D5C282E1 for ; Fri, 24 May 2019 18:13:22 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2E57E21773 for ; Fri, 24 May 2019 18:13:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="VYSYFSGo" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2E57E21773 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hUEgo-000792-Tq; Fri, 24 May 2019 18:13:10 +0000 Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hUEgm-00078S-U5 for xen-devel@lists.xenproject.org; Fri, 24 May 2019 18:13:08 +0000 X-Inumbo-ID: 93e8053e-7e4f-11e9-8980-bc764e045a96 Received: from mail-lf1-x141.google.com (unknown [2a00:1450:4864:20::141]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS id 93e8053e-7e4f-11e9-8980-bc764e045a96; Fri, 24 May 2019 18:13:06 +0000 (UTC) Received: by mail-lf1-x141.google.com with SMTP id b11so1389657lfa.5 for ; Fri, 24 May 2019 11:13:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=m/QSMWlX8wXGmeejl4fowyUqo8c8kVetl/n9aWRvZIc=; b=VYSYFSGoJ3zxuHZ2+TOjZjiK7Y6iq77Uo6cvZXNZv3TttzxIBV4ibg6SqKLgPZgdDd V2eo2NTaclSh+Hw/Qr3i3Xr37A1/c7qJQUd8IypsVFY4AwWjoZ/n6heLALUiRkvd07G9 l6L8i7SPEYsQkEyo4gXlFIjS2TX38vEM3gsHJmueQiwNIks0grkntV0ooOadHJSNRdkZ bqCI2aiL49WzrCoGOkOHLlfM27h4387ViALOJyD/8O84603N5gnQMTiFAOYm2O1MY8Xy 0VIs4dQ8R5LYzq2iQU4Cq51Q/Q6QMXRWQ+++Rm0xqPU6A0W5BRmBMAfoz1k6lTnRmBXZ u35g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=m/QSMWlX8wXGmeejl4fowyUqo8c8kVetl/n9aWRvZIc=; b=SRDdMNKEbRr6UQv/54bPzB5svM3Ev0LvwQORMd1+oJ8ScCh2O9JTkv/5t7ksDBg27y /atCgH7Wj9cXT5ADzsiaKb/UBaTpukn9lIOyGDe4/GhIvAmxwldovQJKMbqc+UQbn2bN 6Y4gHwbc06XsSYxEUS/+P5To80WUYhBxKEFOTtc3jVopoY2t4J29Bmb1HSStxdN5jxBO X8z3t4+VCMu+INbc+Pu+2zYer8F2wrrMrjXY8wtdPMhwOWJjWD1OE5vU7stldZHvBAqz oeRlN7g266ODXVXSz40bDd/ZQc/KYzNLv17mGYl8biM9Zv/8Xz+BTQoEHVW1hRr489z4 Oh8A== X-Gm-Message-State: APjAAAUG7HyomD1/FHyLYWlakF3p+jVDnX+/v8NvewkdIMnNgF3ZYGqO 5wF3rGNtmFOiGv/i7ivj6yPdelWZoA8= X-Google-Smtp-Source: APXvYqyfFMChcpYiZqigS2OL1oMscnfgkt3IE0vbTBNx0D4PdPW0IKbnSV4HOzkwokH2x9KL4ySXYw== X-Received: by 2002:a19:97d3:: with SMTP id z202mr19944186lfd.145.1558721585018; Fri, 24 May 2019 11:13:05 -0700 (PDT) Received: from aanisov-work.kyiv.epam.com (ll-22.209.223.85.sovam.net.ua. [85.223.209.22]) by smtp.gmail.com with ESMTPSA id m25sm629438ljj.92.2019.05.24.11.13.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 24 May 2019 11:13:04 -0700 (PDT) From: Andrii Anisov To: xen-devel@lists.xenproject.org Date: Fri, 24 May 2019 21:12:56 +0300 Message-Id: <1558721577-13958-3-git-send-email-andrii.anisov@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1558721577-13958-1-git-send-email-andrii.anisov@gmail.com> References: <1558721577-13958-1-git-send-email-andrii.anisov@gmail.com> Subject: [Xen-devel] [PATCH v3] xen: introduce VCPUOP_register_runstate_phys_memory_area hypercall X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Stefano Stabellini , Andrii Anisov , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Jan Beulich , Wei Liu , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Message-ID: <20190524181256.SlwgDScfNOQiPWkPjVWAniRnrxO9pYEG5NWVH9CB0Ls@z> RnJvbTogQW5kcmlpIEFuaXNvdiA8YW5kcmlpX2FuaXNvdkBlcGFtLmNvbT4KCkV4aXN0aW5nIGlu dGVyZmFjZSB0byByZWdpc3RlciBydW5zdGF0ZSBhcmUgd2l0aCBpdHMgdmlydHVhbCBhZGRyZXNz CmlzIHByb25lIHRvIGlzc3VlcyB3aGljaCBiZWNhbWUgbW9yZSBvYnZpb3VzIHdpdGggS1BUSSBl bmFibGVtZW50IGluCmd1ZXN0cy4gVGhlIG5hdHVyZSBvZiB0aG9zZSBpc3N1ZXMgaXMgdGhlIGZh Y3QgdGhhdCB0aGUgZ3Vlc3QgY291bGQKYmUgaW50ZXJydXB0ZWQgYnkgdGhlIGh5cGVydmlzb3Ig YXQgYW55IHRpbWUsIGFuZCB0aGVyZSBpcyBubyBndWFyYW50ZWUKdG8gaGF2ZSB0aGUgcmVnaXN0 ZXJlZCB2aXJ0dWFsIGFkZHJlc3MgdHJhbnNsYXRlZCB3aXRoIHRoZSBjdXJyZW50bHkKYXZhaWxh YmxlIGd1ZXN0J3MgcGFnZSB0YWJsZXMuIEJlZm9yZSB0aGUgS1BUSSBzdWNoIGEgc2l0dWF0aW9u IHdhcwpwb3NzaWJsZSBpbiBjYXNlIHRoZSBndWVzdCBpcyBjYXVnaHQgaW4gdGhlIG1pZGRsZSBv ZiBQVCBwcm9jZXNzaW5nCihlLmcuIHN1cGVycGFnZSBzaGF0dGVyaW5nKS4gV2l0aCB0aGUgS1BU SSB0aGlzIGhhcHBlbnMgYWxzbyB3aGVuIHRoZQpndWVzdCBydW5zIHVzZXJzcGFjZSwgc28gaGFz IGEgcHJldHR5IGhpZ2ggcHJvYmFiaWxpdHkuClNvIGl0IHdhcyBhZ3JlZWQgdG8gcmVnaXN0ZXIg cnVuc3RhdGUgd2l0aCB0aGUgZ3Vlc3QncyBwaHlzaWNhbCBhZGRyZXNzCnNvIHRoYXQgaXRzIG1h cHBpbmcgaXMgcGVybWFuZW50IGZyb20gdGhlIGh5cGVydmlzb3IgcG9pbnQgb2Ygdmlldy4gWzFd CgpUaGUgaHlwZXJjYWxsIGVtcGxveXMgdGhlIHNhbWUgdmNwdV9yZWdpc3Rlcl9ydW5zdGF0ZV9t ZW1vcnlfYXJlYQpzdHJ1Y3R1cmUgZm9yIHRoZSBpbnRlcmZhY2UsIGJ1dCByZXF1aXJlcyBhIHJl Z2lzdGVyZWQgYXJlYSB0byBub3QKY3Jvc3MgYSBwYWdlIGJvdW5kYXJ5LgoKWzFdIGh0dHBzOi8v bGlzdHMueGVucHJvamVjdC5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2ZWwvMjAxOS0wMi9tc2cw MDQxNi5odG1sCgpTaWduZWQtb2ZmLWJ5OiBBbmRyaWkgQW5pc292IDxhbmRyaWlfYW5pc292QGVw YW0uY29tPgotLS0KIHhlbi9hcmNoL2FybS9kb21haW4uYyAgICAgICAgfCAgNTggKysrKysrKysr KysrKysrKysrLS0tCiB4ZW4vYXJjaC94ODYvZG9tYWluLmMgICAgICAgIHwgIDk5ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tCiB4ZW4vYXJjaC94ODYveDg2XzY0L2RvbWFpbi5j IHwgIDE2ICsrKysrLQogeGVuL2NvbW1vbi9kb21haW4uYyAgICAgICAgICB8IDEyMSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCiB4ZW4vaW5jbHVkZS9wdWJsaWMv dmNwdS5oICAgIHwgIDE1ICsrKysrKwogeGVuL2luY2x1ZGUveGVuL3NjaGVkLmggICAgICB8ICAy OCArKysrKysrLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDMwNiBpbnNlcnRpb25zKCspLCAzMSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZG9tYWluLmMgYi94ZW4vYXJjaC9h cm0vZG9tYWluLmMKaW5kZXggZmYzMzBiMy4uZWNlZGYxYyAxMDA2NDQKLS0tIGEveGVuL2FyY2gv YXJtL2RvbWFpbi5jCisrKyBiL3hlbi9hcmNoL2FybS9kb21haW4uYwpAQCAtMjc0LDE3ICsyNzQs MTUgQEAgc3RhdGljIHZvaWQgY3R4dF9zd2l0Y2hfdG8oc3RydWN0IHZjcHUgKm4pCiAgICAgdmly dF90aW1lcl9yZXN0b3JlKG4pOwogfQogCi0vKiBVcGRhdGUgcGVyLVZDUFUgZ3Vlc3QgcnVuc3Rh dGUgc2hhcmVkIG1lbW9yeSBhcmVhIChpZiByZWdpc3RlcmVkKS4gKi8KLXN0YXRpYyB2b2lkIHVw ZGF0ZV9ydW5zdGF0ZV9hcmVhKHN0cnVjdCB2Y3B1ICp2KQorc3RhdGljIHZvaWQgdXBkYXRlX3J1 bnN0YXRlX2J5X2d2YWRkcihzdHJ1Y3QgdmNwdSAqdikKIHsKICAgICB2b2lkIF9fdXNlciAqZ3Vl c3RfaGFuZGxlID0gTlVMTDsKIAotICAgIGlmICggZ3Vlc3RfaGFuZGxlX2lzX251bGwocnVuc3Rh dGVfZ3Vlc3QodikpICkKLSAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCghZ3Vlc3RfaGFuZGxl X2lzX251bGwocnVuc3RhdGVfZ3Vlc3RfdmlydCh2KSkpOwogCiAgICAgaWYgKCBWTV9BU1NJU1Qo di0+ZG9tYWluLCBydW5zdGF0ZV91cGRhdGVfZmxhZykgKQogICAgIHsKLSAgICAgICAgZ3Vlc3Rf aGFuZGxlID0gJnYtPnJ1bnN0YXRlX2d1ZXN0LnAtPnN0YXRlX2VudHJ5X3RpbWUgKyAxOworICAg ICAgICBndWVzdF9oYW5kbGUgPSAmdi0+cnVuc3RhdGVfZ3Vlc3QudmlydC5wLT5zdGF0ZV9lbnRy eV90aW1lICsgMTsKICAgICAgICAgZ3Vlc3RfaGFuZGxlLS07CiAgICAgICAgIHYtPnJ1bnN0YXRl LnN0YXRlX2VudHJ5X3RpbWUgfD0gWEVOX1JVTlNUQVRFX1VQREFURTsKICAgICAgICAgX19yYXdf Y29weV90b19ndWVzdChndWVzdF9oYW5kbGUsCkBAIC0yOTIsNyArMjkwLDcgQEAgc3RhdGljIHZv aWQgdXBkYXRlX3J1bnN0YXRlX2FyZWEoc3RydWN0IHZjcHUgKnYpCiAgICAgICAgIHNtcF93bWIo KTsKICAgICB9CiAKLSAgICBfX2NvcHlfdG9fZ3Vlc3QocnVuc3RhdGVfZ3Vlc3QodiksICZ2LT5y dW5zdGF0ZSwgMSk7CisgICAgX19jb3B5X3RvX2d1ZXN0KHJ1bnN0YXRlX2d1ZXN0X3ZpcnQodiks ICZ2LT5ydW5zdGF0ZSwgMSk7CiAKICAgICBpZiAoIGd1ZXN0X2hhbmRsZSApCiAgICAgewpAQCAt MzAzLDYgKzMwMSw1MyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfcnVuc3RhdGVfYXJlYShzdHJ1Y3Qg dmNwdSAqdikKICAgICB9CiB9CiAKK3N0YXRpYyB2b2lkIHVwZGF0ZV9ydW5zdGF0ZV9ieV9ncGFk ZHIoc3RydWN0IHZjcHUgKnYpCit7CisgICAgc3RydWN0IHZjcHVfcnVuc3RhdGVfaW5mbyAqcnVu c3RhdGUgPQorICAgICAgICAgICAgKHN0cnVjdCB2Y3B1X3J1bnN0YXRlX2luZm8gKil2LT5ydW5z dGF0ZV9ndWVzdC5waHlzOworCisgICAgQVNTRVJUKHJ1bnN0YXRlICE9IE5VTEwpOworCisgICAg aWYgKCBWTV9BU1NJU1Qodi0+ZG9tYWluLCBydW5zdGF0ZV91cGRhdGVfZmxhZykgKQorICAgIHsK KyAgICAgICAgcnVuc3RhdGUtPnN0YXRlX2VudHJ5X3RpbWUgfD0gWEVOX1JVTlNUQVRFX1VQREFU RTsKKyAgICAgICAgc21wX3dtYigpOworICAgICAgICB2LT5ydW5zdGF0ZS5zdGF0ZV9lbnRyeV90 aW1lIHw9IFhFTl9SVU5TVEFURV9VUERBVEU7CisgICAgfQorCisgICAgbWVtY3B5KHYtPnJ1bnN0 YXRlX2d1ZXN0LnBoeXMsICZ2LT5ydW5zdGF0ZSwgc2l6ZW9mKHYtPnJ1bnN0YXRlKSk7CisKKyAg ICBpZiAoIFZNX0FTU0lTVCh2LT5kb21haW4sIHJ1bnN0YXRlX3VwZGF0ZV9mbGFnKSApCisgICAg eworICAgICAgICBydW5zdGF0ZS0+c3RhdGVfZW50cnlfdGltZSAmPSB+WEVOX1JVTlNUQVRFX1VQ REFURTsKKyAgICAgICAgc21wX3dtYigpOworICAgICAgICB2LT5ydW5zdGF0ZS5zdGF0ZV9lbnRy eV90aW1lICY9IH5YRU5fUlVOU1RBVEVfVVBEQVRFOworICAgIH0KK30KKworLyogVXBkYXRlIHBl ci1WQ1BVIGd1ZXN0IHJ1bnN0YXRlIHNoYXJlZCBtZW1vcnkgYXJlYSAoaWYgcmVnaXN0ZXJlZCku ICovCitzdGF0aWMgdm9pZCB1cGRhdGVfcnVuc3RhdGVfYXJlYShzdHJ1Y3QgdmNwdSAqdikKK3sK KyAgICBpZiAoIHhjaGcoJnYtPnJ1bnN0YXRlX2luX3VzZSwgMSkgKQorICAgICAgICByZXR1cm47 CisKKyAgICBzd2l0Y2ggKCB2LT5ydW5zdGF0ZV9ndWVzdF90eXBlICkKKyAgICB7CisgICAgY2Fz ZSBSVU5TVEFURV9OT05FOgorICAgICAgICBicmVhazsKKworICAgIGNhc2UgUlVOU1RBVEVfVkFE RFI6CisgICAgICAgIHVwZGF0ZV9ydW5zdGF0ZV9ieV9ndmFkZHIodik7CisgICAgICAgIGJyZWFr OworCisgICAgY2FzZSBSVU5TVEFURV9QQUREUjoKKyAgICAgICAgdXBkYXRlX3J1bnN0YXRlX2J5 X2dwYWRkcih2KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgeGNoZygmdi0+cnVuc3Rh dGVfaW5fdXNlLCAwKTsKK30KKwogc3RhdGljIHZvaWQgc2NoZWR1bGVfdGFpbChzdHJ1Y3QgdmNw dSAqcHJldikKIHsKICAgICBBU1NFUlQocHJldiAhPSBjdXJyZW50KTsKQEAgLTk5OCw2ICsxMDQz LDcgQEAgbG9uZyBkb19hcm1fdmNwdV9vcChpbnQgY21kLCB1bnNpZ25lZCBpbnQgdmNwdWlkLCBY RU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGEKICAgICB7CiAgICAgICAgIGNhc2UgVkNQVU9Q X3JlZ2lzdGVyX3ZjcHVfaW5mbzoKICAgICAgICAgY2FzZSBWQ1BVT1BfcmVnaXN0ZXJfcnVuc3Rh dGVfbWVtb3J5X2FyZWE6CisgICAgICAgIGNhc2UgVkNQVU9QX3JlZ2lzdGVyX3J1bnN0YXRlX3Bo eXNfbWVtb3J5X2FyZWE6CiAgICAgICAgICAgICByZXR1cm4gZG9fdmNwdV9vcChjbWQsIHZjcHVp ZCwgYXJnKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwpk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWFpbi5jIGIveGVuL2FyY2gveDg2L2RvbWFpbi5j CmluZGV4IGFjOTYwZGQuLmZlNzE3NzYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9kb21haW4u YworKysgYi94ZW4vYXJjaC94ODYvZG9tYWluLmMKQEAgLTE1NjYsMjIgKzE1NjYsMjEgQEAgdm9p ZCBwYXJhdmlydF9jdHh0X3N3aXRjaF90byhzdHJ1Y3QgdmNwdSAqdikKIH0KIAogLyogVXBkYXRl IHBlci1WQ1BVIGd1ZXN0IHJ1bnN0YXRlIHNoYXJlZCBtZW1vcnkgYXJlYSAoaWYgcmVnaXN0ZXJl ZCkuICovCi1ib29sIHVwZGF0ZV9ydW5zdGF0ZV9hcmVhKHN0cnVjdCB2Y3B1ICp2KQorc3RhdGlj IGJvb2wgdXBkYXRlX3J1bnN0YXRlX2J5X2d2YWRkcihzdHJ1Y3QgdmNwdSAqdikKIHsKICAgICBi b29sIHJjOwogICAgIHN0cnVjdCBndWVzdF9tZW1vcnlfcG9saWN5IHBvbGljeSA9IHsgLm5lc3Rl ZF9ndWVzdF9tb2RlID0gZmFsc2UgfTsKICAgICB2b2lkIF9fdXNlciAqZ3Vlc3RfaGFuZGxlID0g TlVMTDsKIAotICAgIGlmICggZ3Vlc3RfaGFuZGxlX2lzX251bGwocnVuc3RhdGVfZ3Vlc3Qodikp ICkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgQVNTRVJUKCFndWVzdF9oYW5kbGVfaXNfbnVs bChydW5zdGF0ZV9ndWVzdF92aXJ0KHYpKSk7CiAKICAgICB1cGRhdGVfZ3Vlc3RfbWVtb3J5X3Bv bGljeSh2LCAmcG9saWN5KTsKIAogICAgIGlmICggVk1fQVNTSVNUKHYtPmRvbWFpbiwgcnVuc3Rh dGVfdXBkYXRlX2ZsYWcpICkKICAgICB7CiAgICAgICAgIGd1ZXN0X2hhbmRsZSA9IGhhc18zMmJp dF9zaGluZm8odi0+ZG9tYWluKQotICAgICAgICAgICAgPyAmdi0+cnVuc3RhdGVfZ3Vlc3QuY29t cGF0LnAtPnN0YXRlX2VudHJ5X3RpbWUgKyAxCi0gICAgICAgICAgICA6ICZ2LT5ydW5zdGF0ZV9n dWVzdC5uYXRpdmUucC0+c3RhdGVfZW50cnlfdGltZSArIDE7CisgICAgICAgICAgICA/ICZ2LT5y dW5zdGF0ZV9ndWVzdC52aXJ0LmNvbXBhdC5wLT5zdGF0ZV9lbnRyeV90aW1lICsgMQorICAgICAg ICAgICAgOiAmdi0+cnVuc3RhdGVfZ3Vlc3QudmlydC5uYXRpdmUucC0+c3RhdGVfZW50cnlfdGlt ZSArIDE7CiAgICAgICAgIGd1ZXN0X2hhbmRsZS0tOwogICAgICAgICB2LT5ydW5zdGF0ZS5zdGF0 ZV9lbnRyeV90aW1lIHw9IFhFTl9SVU5TVEFURV9VUERBVEU7CiAgICAgICAgIF9fcmF3X2NvcHlf dG9fZ3Vlc3QoZ3Vlc3RfaGFuZGxlLApAQCAtMTU5NCwxMSArMTU5MywxMSBAQCBib29sIHVwZGF0 ZV9ydW5zdGF0ZV9hcmVhKHN0cnVjdCB2Y3B1ICp2KQogICAgICAgICBzdHJ1Y3QgY29tcGF0X3Zj cHVfcnVuc3RhdGVfaW5mbyBpbmZvOwogCiAgICAgICAgIFhMQVRfdmNwdV9ydW5zdGF0ZV9pbmZv KCZpbmZvLCAmdi0+cnVuc3RhdGUpOwotICAgICAgICBfX2NvcHlfdG9fZ3Vlc3Qodi0+cnVuc3Rh dGVfZ3Vlc3QuY29tcGF0LCAmaW5mbywgMSk7CisgICAgICAgIF9fY29weV90b19ndWVzdCh2LT5y dW5zdGF0ZV9ndWVzdC52aXJ0LmNvbXBhdCwgJmluZm8sIDEpOwogICAgICAgICByYyA9IHRydWU7 CiAgICAgfQogICAgIGVsc2UKLSAgICAgICAgcmMgPSBfX2NvcHlfdG9fZ3Vlc3QocnVuc3RhdGVf Z3Vlc3QodiksICZ2LT5ydW5zdGF0ZSwgMSkgIT0KKyAgICAgICAgcmMgPSBfX2NvcHlfdG9fZ3Vl c3QocnVuc3RhdGVfZ3Vlc3RfdmlydCh2KSwgJnYtPnJ1bnN0YXRlLCAxKSAhPQogICAgICAgICAg ICAgIHNpemVvZih2LT5ydW5zdGF0ZSk7CiAKICAgICBpZiAoIGd1ZXN0X2hhbmRsZSApCkBAIC0x NjE0LDYgKzE2MTMsOTIgQEAgYm9vbCB1cGRhdGVfcnVuc3RhdGVfYXJlYShzdHJ1Y3QgdmNwdSAq dikKICAgICByZXR1cm4gcmM7CiB9CiAKK3N0YXRpYyBib29sIHVwZGF0ZV9ydW5zdGF0ZV9ieV9n cGFkZHJfbmF0aXZlKHN0cnVjdCB2Y3B1ICp2KQoreworICAgIHN0cnVjdCB2Y3B1X3J1bnN0YXRl X2luZm8gKnJ1bnN0YXRlID0KKyAgICAgICAgICAgIChzdHJ1Y3QgdmNwdV9ydW5zdGF0ZV9pbmZv ICopdi0+cnVuc3RhdGVfZ3Vlc3QucGh5czsKKworICAgIEFTU0VSVChydW5zdGF0ZSAhPSBOVUxM KTsKKworICAgIGlmICggVk1fQVNTSVNUKHYtPmRvbWFpbiwgcnVuc3RhdGVfdXBkYXRlX2ZsYWcp ICkKKyAgICB7CisgICAgICAgIHJ1bnN0YXRlLT5zdGF0ZV9lbnRyeV90aW1lIHw9IFhFTl9SVU5T VEFURV9VUERBVEU7CisgICAgICAgIHNtcF93bWIoKTsKKyAgICAgICAgdi0+cnVuc3RhdGUuc3Rh dGVfZW50cnlfdGltZSB8PSBYRU5fUlVOU1RBVEVfVVBEQVRFOworICAgIH0KKworICAgIG1lbWNw eSh2LT5ydW5zdGF0ZV9ndWVzdC5waHlzLCAmdi0+cnVuc3RhdGUsIHNpemVvZih2LT5ydW5zdGF0 ZSkpOworCisgICAgaWYgKCBWTV9BU1NJU1Qodi0+ZG9tYWluLCBydW5zdGF0ZV91cGRhdGVfZmxh ZykgKQorICAgIHsKKyAgICAgICAgcnVuc3RhdGUtPnN0YXRlX2VudHJ5X3RpbWUgJj0gflhFTl9S VU5TVEFURV9VUERBVEU7CisgICAgICAgIHNtcF93bWIoKTsKKyAgICAgICAgdi0+cnVuc3RhdGUu c3RhdGVfZW50cnlfdGltZSAmPSB+WEVOX1JVTlNUQVRFX1VQREFURTsKKyAgICB9CisKKyAgICBy ZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgdXBkYXRlX3J1bnN0YXRlX2J5X2dwYWRkcl9j b21wYXQoc3RydWN0IHZjcHUgKnYpCit7CisgICAgc3RydWN0IGNvbXBhdF92Y3B1X3J1bnN0YXRl X2luZm8gKnJ1bnN0YXRlID0KKyAgICAgICAgICAgIChzdHJ1Y3QgY29tcGF0X3ZjcHVfcnVuc3Rh dGVfaW5mbyAqKXYtPnJ1bnN0YXRlX2d1ZXN0LnBoeXM7CisKKyAgICBBU1NFUlQocnVuc3RhdGUg IT0gTlVMTCk7CisKKyAgICBpZiAoIFZNX0FTU0lTVCh2LT5kb21haW4sIHJ1bnN0YXRlX3VwZGF0 ZV9mbGFnKSApCisgICAgeworICAgICAgICBydW5zdGF0ZS0+c3RhdGVfZW50cnlfdGltZSB8PSBY RU5fUlVOU1RBVEVfVVBEQVRFOworICAgICAgICBzbXBfd21iKCk7CisgICAgICAgIHYtPnJ1bnN0 YXRlLnN0YXRlX2VudHJ5X3RpbWUgfD0gWEVOX1JVTlNUQVRFX1VQREFURTsKKyAgICB9CisKKyAg ICB7CisgICAgICAgIHN0cnVjdCBjb21wYXRfdmNwdV9ydW5zdGF0ZV9pbmZvIGluZm87CisgICAg ICAgIFhMQVRfdmNwdV9ydW5zdGF0ZV9pbmZvKCZpbmZvLCAmdi0+cnVuc3RhdGUpOworICAgICAg ICBtZW1jcHkodi0+cnVuc3RhdGVfZ3Vlc3QucGh5cywgJmluZm8sIHNpemVvZihpbmZvKSk7Cisg ICAgfQorICAgIGVsc2UKKyAgICAgICAgbWVtY3B5KHYtPnJ1bnN0YXRlX2d1ZXN0LnBoeXMsICZ2 LT5ydW5zdGF0ZSwgc2l6ZW9mKHYtPnJ1bnN0YXRlKSk7CisKKyAgICBpZiAoIFZNX0FTU0lTVCh2 LT5kb21haW4sIHJ1bnN0YXRlX3VwZGF0ZV9mbGFnKSApCisgICAgeworICAgICAgICBydW5zdGF0 ZS0+c3RhdGVfZW50cnlfdGltZSAmPSB+WEVOX1JVTlNUQVRFX1VQREFURTsKKyAgICAgICAgc21w X3dtYigpOworICAgICAgICB2LT5ydW5zdGF0ZS5zdGF0ZV9lbnRyeV90aW1lICY9IH5YRU5fUlVO U1RBVEVfVVBEQVRFOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIHVwZGF0 ZV9ydW5zdGF0ZV9hcmVhKHN0cnVjdCB2Y3B1ICp2KQoreworICAgIGJvb2wgcmMgPSB0cnVlOwor CisgICAgaWYgKCB4Y2hnKCZ2LT5ydW5zdGF0ZV9pbl91c2UsIDEpICkKKyAgICAgICAgcmV0dXJu IHJjOworCisgICAgc3dpdGNoICggdi0+cnVuc3RhdGVfZ3Vlc3RfdHlwZSApCisgICAgeworICAg IGNhc2UgUlVOU1RBVEVfTk9ORToKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFJVTlNUQVRF X1ZBRERSOgorICAgICAgICByYyA9IHVwZGF0ZV9ydW5zdGF0ZV9ieV9ndmFkZHIodik7CisgICAg ICAgIGJyZWFrOworCisgICAgY2FzZSBSVU5TVEFURV9QQUREUjoKKyAgICAgICAgaWYgKCBoYXNf MzJiaXRfc2hpbmZvKHYtPmRvbWFpbikgKQorICAgICAgICAgICAgcmMgPSB1cGRhdGVfcnVuc3Rh dGVfYnlfZ3BhZGRyX2NvbXBhdCh2KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmMgPSB1 cGRhdGVfcnVuc3RhdGVfYnlfZ3BhZGRyX25hdGl2ZSh2KTsKKyAgICAgICAgYnJlYWs7CisgICAg fQorCisgICAgeGNoZygmdi0+cnVuc3RhdGVfaW5fdXNlLCAwKTsKKyAgICByZXR1cm4gcmM7Cit9 CisKIHN0YXRpYyB2b2lkIF91cGRhdGVfcnVuc3RhdGVfYXJlYShzdHJ1Y3QgdmNwdSAqdikKIHsK ICAgICBpZiAoICF1cGRhdGVfcnVuc3RhdGVfYXJlYSh2KSAmJiBpc19wdl92Y3B1KHYpICYmCmRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2XzY0L2RvbWFpbi5jIGIveGVuL2FyY2gveDg2L3g4 Nl82NC9kb21haW4uYwppbmRleCBjNDZkY2NjLi44NWQwMDcyIDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYveDg2XzY0L2RvbWFpbi5jCisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvZG9tYWluLmMK QEAgLTEyLDYgKzEyLDggQEAKIENIRUNLX3ZjcHVfZ2V0X3BoeXNpZDsKICN1bmRlZiB4ZW5fdmNw dV9nZXRfcGh5c2lkCiAKK2V4dGVybiB2b2lkIGRpc2NhcmRfcnVuc3RhdGVfYXJlYShzdHJ1Y3Qg dmNwdSAqdik7CisKIGludAogYXJjaF9jb21wYXRfdmNwdV9vcCgKICAgICBpbnQgY21kLCBzdHJ1 Y3QgdmNwdSAqdiwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCkBAIC0zNSw4ICsz NywxNiBAQCBhcmNoX2NvbXBhdF92Y3B1X29wKAogICAgICAgICAgICAgICFjb21wYXRfaGFuZGxl X29rYXkoYXJlYS5hZGRyLmgsIDEpICkKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIHdo aWxlKCB4Y2hnKCZ2LT5ydW5zdGF0ZV9pbl91c2UsIDEpID09IDApOworCisgICAgICAgIGRpc2Nh cmRfcnVuc3RhdGVfYXJlYSh2KTsKKwogICAgICAgICByYyA9IDA7Ci0gICAgICAgIGd1ZXN0X2Zy b21fY29tcGF0X2hhbmRsZSh2LT5ydW5zdGF0ZV9ndWVzdC5jb21wYXQsIGFyZWEuYWRkci5oKTsK KworICAgICAgICBndWVzdF9mcm9tX2NvbXBhdF9oYW5kbGUodi0+cnVuc3RhdGVfZ3Vlc3Qudmly dC5jb21wYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmVhLmFkZHIuaCk7 CisKKyAgICAgICAgdi0+cnVuc3RhdGVfZ3Vlc3RfdHlwZSA9IFJVTlNUQVRFX1ZBRERSOwogCiAg ICAgICAgIGlmICggdiA9PSBjdXJyZW50ICkKICAgICAgICAgewpAQCAtNDksNyArNTksOSBAQCBh cmNoX2NvbXBhdF92Y3B1X29wKAogICAgICAgICAgICAgdmNwdV9ydW5zdGF0ZV9nZXQodiwgJnJ1 bnN0YXRlKTsKICAgICAgICAgICAgIFhMQVRfdmNwdV9ydW5zdGF0ZV9pbmZvKCZpbmZvLCAmcnVu c3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIF9fY29weV90b19ndWVzdCh2LT5ydW5zdGF0ZV9n dWVzdC5jb21wYXQsICZpbmZvLCAxKTsKKyAgICAgICAgX19jb3B5X3RvX2d1ZXN0KHYtPnJ1bnN0 YXRlX2d1ZXN0LnZpcnQuY29tcGF0LCAmaW5mbywgMSk7CisKKyAgICAgICAgeGNoZygmdi0+cnVu c3RhdGVfaW5fdXNlLCAwKTsKIAogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS94 ZW4vY29tbW9uL2RvbWFpbi5jIGIveGVuL2NvbW1vbi9kb21haW4uYwppbmRleCA5MGM2NjA3Li5k Mjc2Yjg3IDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL2RvbWFpbi5jCisrKyBiL3hlbi9jb21tb24v ZG9tYWluLmMKQEAgLTY5OCw2ICs2OTgsNzQgQEAgaW50IHJjdV9sb2NrX2xpdmVfcmVtb3RlX2Rv bWFpbl9ieV9pZChkb21pZF90IGRvbSwgc3RydWN0IGRvbWFpbiAqKmQpCiAgICAgcmV0dXJuIDA7 CiB9CiAKK3N0YXRpYyB2b2lkIHVubWFwX3J1bnN0YXRlX2FyZWEoc3RydWN0IHZjcHUgKnYpCit7 CisgICAgbWZuX3QgbWZuOworCisgICAgaWYgKCAhIHYtPnJ1bnN0YXRlX2d1ZXN0LnBoeXMgKQor ICAgICAgICByZXR1cm47CisKKyAgICBtZm4gPSBkb21haW5fcGFnZV9tYXBfdG9fbWZuKHYtPnJ1 bnN0YXRlX2d1ZXN0LnBoeXMpOworCisgICAgdW5tYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKCh2b2lk ICopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgbG9uZyl2LT5ydW5z dGF0ZV9ndWVzdC5waHlzICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VfTUFT SykpOworCisgICAgdi0+cnVuc3RhdGVfZ3Vlc3QucGh5cyA9IE5VTEw7CisgICAgcHV0X3BhZ2Vf YW5kX3R5cGUobWZuX3RvX3BhZ2UobWZuKSk7Cit9CisKK3N0YXRpYyBpbnQgbWFwX3J1bnN0YXRl X2FyZWEoc3RydWN0IHZjcHUgKnYsCisgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZjcHVf cmVnaXN0ZXJfcnVuc3RhdGVfbWVtb3J5X2FyZWEgKmFyZWEpCit7CisgICAgdW5zaWduZWQgbG9u ZyBvZmZzZXQgPSBhcmVhLT5hZGRyLnAgJiB+UEFHRV9NQVNLOworICAgIGdmbl90IGdmbiA9IGdh ZGRyX3RvX2dmbihhcmVhLT5hZGRyLnApOworICAgIHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21h aW47CisgICAgdm9pZCAqbWFwcGluZzsKKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlOworICAg IHNpemVfdCBzaXplID0gc2l6ZW9mKHN0cnVjdCB2Y3B1X3J1bnN0YXRlX2luZm8pOworCisgICAg aWYgKCBvZmZzZXQgPiAoUEFHRV9TSVpFIC0gc2l6ZSkgKQorICAgICAgICByZXR1cm4gLUVJTlZB TDsKKworICAgIHBhZ2UgPSBnZXRfcGFnZV9mcm9tX2dmbihkLCBnZm5feChnZm4pLCBOVUxMLCBQ Mk1fQUxMT0MpOworICAgIGlmICggIXBhZ2UgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKwor ICAgIGlmICggIWdldF9wYWdlX3R5cGUocGFnZSwgUEdUX3dyaXRhYmxlX3BhZ2UpICkKKyAgICB7 CisgICAgICAgIHB1dF9wYWdlKHBhZ2UpOworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9 CisKKyAgICBtYXBwaW5nID0gX19tYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKHBhZ2UpOworCisgICAg aWYgKCBtYXBwaW5nID09IE5VTEwgKQorICAgIHsKKyAgICAgICAgcHV0X3BhZ2VfYW5kX3R5cGUo cGFnZSk7CisgICAgICAgIHJldHVybiAtRU5PTUVNOworICAgIH0KKworICAgIHYtPnJ1bnN0YXRl X2d1ZXN0LnBoeXMgPSBtYXBwaW5nICsgb2Zmc2V0OworCisgICAgcmV0dXJuIDA7Cit9CisKK3Zv aWQgZGlzY2FyZF9ydW5zdGF0ZV9hcmVhKHN0cnVjdCB2Y3B1ICp2KQoreworICAgIGlmICggdi0+ cnVuc3RhdGVfZ3Vlc3RfdHlwZSA9PSBSVU5TVEFURV9QQUREUiApCisgICAgICAgIHVubWFwX3J1 bnN0YXRlX2FyZWEodik7CisKKyAgICB2LT5ydW5zdGF0ZV9ndWVzdF90eXBlID0gUlVOU1RBVEVf Tk9ORTsKK30KKworc3RhdGljIHZvaWQgZGlzY2FyZF9ydW5zdGF0ZV9hcmVhX2xvY2tlZChzdHJ1 Y3QgdmNwdSAqdikKK3sKKyAgICB3aGlsZSAoIHhjaGcoJnYtPnJ1bnN0YXRlX2luX3VzZSwgMSkg KTsKKyAgICBkaXNjYXJkX3J1bnN0YXRlX2FyZWEodik7CisgICAgeGNoZygmdi0+cnVuc3RhdGVf aW5fdXNlLCAwKTsKK30KKwogaW50IGRvbWFpbl9raWxsKHN0cnVjdCBkb21haW4gKmQpCiB7CiAg ICAgaW50IHJjID0gMDsKQEAgLTczNCw3ICs4MDIsMTAgQEAgaW50IGRvbWFpbl9raWxsKHN0cnVj dCBkb21haW4gKmQpCiAgICAgICAgIGlmICggY3B1cG9vbF9tb3ZlX2RvbWFpbihkLCBjcHVwb29s MCkgKQogICAgICAgICAgICAgcmV0dXJuIC1FUkVTVEFSVDsKICAgICAgICAgZm9yX2VhY2hfdmNw dSAoIGQsIHYgKQorICAgICAgICB7CisgICAgICAgICAgICBkaXNjYXJkX3J1bnN0YXRlX2FyZWFf bG9ja2VkKHYpOwogICAgICAgICAgICAgdW5tYXBfdmNwdV9pbmZvKHYpOworICAgICAgICB9CiAg ICAgICAgIGQtPmlzX2R5aW5nID0gRE9NRFlJTkdfZGVhZDsKICAgICAgICAgLyogTWVtIGV2ZW50 IGNsZWFudXAgaGFzIHRvIGdvIGhlcmUgYmVjYXVzZSB0aGUgcmluZ3MgCiAgICAgICAgICAqIGhh dmUgdG8gYmUgcHV0IGJlZm9yZSB3ZSBjYWxsIHB1dF9kb21haW4uICovCkBAIC0xMTg4LDcgKzEy NTksNyBAQCBpbnQgZG9tYWluX3NvZnRfcmVzZXQoc3RydWN0IGRvbWFpbiAqZCkKIAogICAgIGZv cl9lYWNoX3ZjcHUgKCBkLCB2ICkKICAgICB7Ci0gICAgICAgIHNldF94ZW5fZ3Vlc3RfaGFuZGxl KHJ1bnN0YXRlX2d1ZXN0KHYpLCBOVUxMKTsKKyAgICAgICAgZGlzY2FyZF9ydW5zdGF0ZV9hcmVh X2xvY2tlZCh2KTsKICAgICAgICAgdW5tYXBfdmNwdV9pbmZvKHYpOwogICAgIH0KIApAQCAtMTUx OCwxOCArMTU4OSw1MCBAQCBsb25nIGRvX3ZjcHVfb3AoaW50IGNtZCwgdW5zaWduZWQgaW50IHZj cHVpZCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCiAgICAgICAgICAgICBicmVh azsKIAogICAgICAgICByYyA9IDA7Ci0gICAgICAgIHJ1bnN0YXRlX2d1ZXN0KHYpID0gYXJlYS5h ZGRyLmg7CiAKLSAgICAgICAgaWYgKCB2ID09IGN1cnJlbnQgKQotICAgICAgICB7Ci0gICAgICAg ICAgICBfX2NvcHlfdG9fZ3Vlc3QocnVuc3RhdGVfZ3Vlc3QodiksICZ2LT5ydW5zdGF0ZSwgMSk7 Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQorICAgICAgICB3aGlsZSggeGNoZygmdi0+cnVuc3Rh dGVfaW5fdXNlLCAxKSA9PSAwKTsKKworICAgICAgICBkaXNjYXJkX3J1bnN0YXRlX2FyZWEodik7 CisKKyAgICAgICAgaWYgKCAhZ3Vlc3RfaGFuZGxlX2lzX251bGwocnVuc3RhdGVfZ3Vlc3Rfdmly dCh2KSkgKQogICAgICAgICB7Ci0gICAgICAgICAgICB2Y3B1X3J1bnN0YXRlX2dldCh2LCAmcnVu c3RhdGUpOwotICAgICAgICAgICAgX19jb3B5X3RvX2d1ZXN0KHJ1bnN0YXRlX2d1ZXN0KHYpLCAm cnVuc3RhdGUsIDEpOworICAgICAgICAgICAgcnVuc3RhdGVfZ3Vlc3RfdmlydCh2KSA9IGFyZWEu YWRkci5oOworICAgICAgICAgICAgdi0+cnVuc3RhdGVfZ3Vlc3RfdHlwZSA9IFJVTlNUQVRFX1ZB RERSOworCisgICAgICAgICAgICBpZiAoIHYgPT0gY3VycmVudCApCisgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgX19jb3B5X3RvX2d1ZXN0KHJ1bnN0YXRlX2d1ZXN0X3ZpcnQodiksICZ2 LT5ydW5zdGF0ZSwgMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgdmNwdV9ydW5zdGF0ZV9nZXQodiwgJnJ1bnN0YXRlKTsK KyAgICAgICAgICAgICAgICBfX2NvcHlfdG9fZ3Vlc3QocnVuc3RhdGVfZ3Vlc3RfdmlydCh2KSwg JnJ1bnN0YXRlLCAxKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCisgICAgICAgIHhjaGco JnYtPnJ1bnN0YXRlX2luX3VzZSwgMCk7CisKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg Y2FzZSBWQ1BVT1BfcmVnaXN0ZXJfcnVuc3RhdGVfcGh5c19tZW1vcnlfYXJlYToKKyAgICB7Cisg ICAgICAgIHN0cnVjdCB2Y3B1X3JlZ2lzdGVyX3J1bnN0YXRlX21lbW9yeV9hcmVhIGFyZWE7CisK KyAgICAgICAgcmMgPSAtRUZBVUxUOworICAgICAgICBpZiAoIGNvcHlfZnJvbV9ndWVzdCgmYXJl YSwgYXJnLCAxKSApCisgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgd2hpbGUoIHhjaGco JnYtPnJ1bnN0YXRlX2luX3VzZSwgMSkgPT0gMCk7CisKKyAgICAgICAgZGlzY2FyZF9ydW5zdGF0 ZV9hcmVhKHYpOworCisgICAgICAgIHJjID0gbWFwX3J1bnN0YXRlX2FyZWEodiwgJmFyZWEpOwor ICAgICAgICBpZiAoICFyYyApCisgICAgICAgICAgICB2LT5ydW5zdGF0ZV9ndWVzdF90eXBlID0g UlVOU1RBVEVfUEFERFI7CisKKyAgICAgICAgeGNoZygmdi0+cnVuc3RhdGVfaW5fdXNlLCAwKTsK KwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1Ymxp Yy92Y3B1LmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvdmNwdS5oCmluZGV4IDM2MjNhZjkuLmQ3ZGE0 YTMgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy92Y3B1LmgKKysrIGIveGVuL2luY2x1 ZGUvcHVibGljL3ZjcHUuaApAQCAtMjM1LDYgKzIzNSwyMSBAQCBzdHJ1Y3QgdmNwdV9yZWdpc3Rl cl90aW1lX21lbW9yeV9hcmVhIHsKIHR5cGVkZWYgc3RydWN0IHZjcHVfcmVnaXN0ZXJfdGltZV9t ZW1vcnlfYXJlYSB2Y3B1X3JlZ2lzdGVyX3RpbWVfbWVtb3J5X2FyZWFfdDsKIERFRklORV9YRU5f R1VFU1RfSEFORExFKHZjcHVfcmVnaXN0ZXJfdGltZV9tZW1vcnlfYXJlYV90KTsKIAorLyoKKyAq IFJlZ2lzdGVyIGEgc2hhcmVkIG1lbW9yeSBhcmVhIGZyb20gd2hpY2ggdGhlIGd1ZXN0IG1heSBv YnRhaW4gaXRzIG93bgorICogcnVuc3RhdGUgaW5mb3JtYXRpb24gd2l0aG91dCBuZWVkaW5nIHRv IGV4ZWN1dGUgYSBoeXBlcmNhbGwuCisgKiBOb3RlczoKKyAqICAxLiBUaGUgcmVnaXN0ZXJlZCBh ZGRyZXNzIG11c3QgYmUgZ3Vlc3QncyBwaHlzaWNhbCBhZGRyZXNzLgorICogIDIuIFRoZSByZWdp c3RlcmVkIHJ1bnN0YXRlIGFyZWEgc2hvdWxkIG5vdCBjcm9zcyBwYWdlIGJvdW5kYXJ5LgorICog IDMuIE9ubHkgb25lIHNoYXJlZCBhcmVhIG1heSBiZSByZWdpc3RlcmVkIHBlciBWQ1BVLiBUaGUg c2hhcmVkIGFyZWEgaXMKKyAqICAgICB1cGRhdGVkIGJ5IHRoZSBoeXBlcnZpc29yIGVhY2ggdGlt ZSB0aGUgVkNQVSBpcyBzY2hlZHVsZWQuIFRodXMKKyAqICAgICBydW5zdGF0ZS5zdGF0ZSB3aWxs IGFsd2F5cyBiZSBSVU5TVEFURV9ydW5uaW5nIGFuZAorICogICAgIHJ1bnN0YXRlLnN0YXRlX2Vu dHJ5X3RpbWUgd2lsbCBpbmRpY2F0ZSB0aGUgc3lzdGVtIHRpbWUgYXQgd2hpY2ggdGhlCisgKiAg ICAgVkNQVSB3YXMgbGFzdCBzY2hlZHVsZWQgdG8gcnVuLgorICogQGV4dHJhX2FyZyA9PSBwb2lu dGVyIHRvIHZjcHVfcmVnaXN0ZXJfcnVuc3RhdGVfbWVtb3J5X2FyZWEgc3RydWN0dXJlLgorICov CisjZGVmaW5lIFZDUFVPUF9yZWdpc3Rlcl9ydW5zdGF0ZV9waHlzX21lbW9yeV9hcmVhIDE0CisK ICNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfVkNQVV9IX18gKi8KIAogLyoKZGlmZiAtLWdpdCBhL3hl bi9pbmNsdWRlL3hlbi9zY2hlZC5oIGIveGVuL2luY2x1ZGUveGVuL3NjaGVkLmgKaW5kZXggMjIw MWZhYy4uNmM4ZGU4ZiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3NjaGVkLmgKKysrIGIv eGVuL2luY2x1ZGUveGVuL3NjaGVkLmgKQEAgLTE2MywxNyArMTYzLDMxIEBAIHN0cnVjdCB2Y3B1 CiAgICAgdm9pZCAgICAgICAgICAgICpzY2hlZF9wcml2OyAgICAvKiBzY2hlZHVsZXItc3BlY2lm aWMgZGF0YSAqLwogCiAgICAgc3RydWN0IHZjcHVfcnVuc3RhdGVfaW5mbyBydW5zdGF0ZTsKKwor ICAgIGVudW0geworICAgICAgICBSVU5TVEFURV9OT05FID0gMCwKKyAgICAgICAgUlVOU1RBVEVf UEFERFIgPSAxLAorICAgICAgICBSVU5TVEFURV9WQUREUiA9IDIsCisgICAgfSBydW5zdGF0ZV9n dWVzdF90eXBlOworCisgICAgdW5zaWduZWQgbG9uZyBydW5zdGF0ZV9pbl91c2U7CisKKyAgICB1 bmlvbgorICAgIHsKICNpZm5kZWYgQ09ORklHX0NPTVBBVAotIyBkZWZpbmUgcnVuc3RhdGVfZ3Vl c3QodikgKCh2KS0+cnVuc3RhdGVfZ3Vlc3QpCi0gICAgWEVOX0dVRVNUX0hBTkRMRSh2Y3B1X3J1 bnN0YXRlX2luZm9fdCkgcnVuc3RhdGVfZ3Vlc3Q7IC8qIGd1ZXN0IGFkZHJlc3MgKi8KKyMgZGVm aW5lIHJ1bnN0YXRlX2d1ZXN0X3ZpcnQodikgKCh2KS0+cnVuc3RhdGVfZ3Vlc3QudmlydCkKKyAg ICAgICAgICAgWEVOX0dVRVNUX0hBTkRMRSh2Y3B1X3J1bnN0YXRlX2luZm9fdCkgdmlydDsgLyog Z3Vlc3QgYWRkcmVzcyAqLwogI2Vsc2UKLSMgZGVmaW5lIHJ1bnN0YXRlX2d1ZXN0KHYpICgodikt PnJ1bnN0YXRlX2d1ZXN0Lm5hdGl2ZSkKLSAgICB1bmlvbiB7Ci0gICAgICAgIFhFTl9HVUVTVF9I QU5ETEUodmNwdV9ydW5zdGF0ZV9pbmZvX3QpIG5hdGl2ZTsKLSAgICAgICAgWEVOX0dVRVNUX0hB TkRMRSh2Y3B1X3J1bnN0YXRlX2luZm9fY29tcGF0X3QpIGNvbXBhdDsKLSAgICB9IHJ1bnN0YXRl X2d1ZXN0OyAvKiBndWVzdCBhZGRyZXNzICovCisjIGRlZmluZSBydW5zdGF0ZV9ndWVzdF92aXJ0 KHYpICgodiktPnJ1bnN0YXRlX2d1ZXN0LnZpcnQubmF0aXZlKQorICAgICAgICAgICB1bmlvbiB7 CisgICAgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFKHZjcHVfcnVuc3RhdGVfaW5mb190KSBu YXRpdmU7CisgICAgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFKHZjcHVfcnVuc3RhdGVfaW5m b19jb21wYXRfdCkgY29tcGF0OworICAgICAgICAgICB9IHZpcnQ7IC8qIGd1ZXN0IGFkZHJlc3Mg Ki8KICNlbmRpZgogCisgICAgICAgIHZvaWQqICAgcGh5czsKKyAgICB9IHJ1bnN0YXRlX2d1ZXN0 OworCiAgICAgLyogbGFzdCB0aW1lIHdoZW4gdkNQVSBpcyBzY2hlZHVsZWQgb3V0ICovCiAgICAg dWludDY0X3QgbGFzdF9ydW5fdGltZTsKIAotLSAKMi43LjQKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h aWxtYW4vbGlzdGluZm8veGVuLWRldmVs