From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [PATCH v2 08/10] KVM: arm64: guest debug, HW assisted debug support Date: Tue, 31 Mar 2015 16:08:06 +0100 Message-ID: <1427814488-28467-9-git-send-email-alex.bennee@linaro.org> References: <1427814488-28467-1-git-send-email-alex.bennee@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1427814488-28467-1-git-send-email-alex.bennee@linaro.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kvmarm-bounces@lists.cs.columbia.edu Sender: kvmarm-bounces@lists.cs.columbia.edu To: kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, christoffer.dall@linaro.org, marc.zyngier@arm.com, peter.maydell@linaro.org, agraf@suse.de, drjones@redhat.com, pbonzini@redhat.com, zhichao.huang@linaro.org Cc: Lorenzo Pieralisi , Russell King , Jonathan Corbet , Gleb Natapov , jan.kiszka@siemens.com, AKASHI Takahiro , "open list:DOCUMENTATION" , Will Deacon , open list , "open list:ABI/API" , dahi@linux.vnet.ibm.com, Catalin Marinas , r65777@freescale.com, bp@suse.de List-Id: linux-api@vger.kernel.org VGhpcyBhZGRzIHN1cHBvcnQgZm9yIHVzZXJzcGFjZSB0byBjb250cm9sIHRoZSBIVyBkZWJ1ZyBy ZWdpc3RlcnMgZm9yCmd1ZXN0IGRlYnVnLiBXZSdsbCBvbmx5IGNvcHkgdGhlICRBUkNIIGRlZmlu ZWQgbnVtYmVyIGFjcm9zcyBhcyB0aGF0IGlzCmFsbCB0aGF0IGh5cC5TIHdpbGwgdXNlIGFueXdh eS4gSSd2ZSBtb3ZlZCBzb21lIGhlbHBlciBmdW5jdGlvbnMgaW50bwp0aGUgaHdfYnJlYWtwb2lu dC5oIGhlYWRlciBmb3IgcmUtdXNlLgoKQXMgd2l0aCBzaW5nbGUgc3RlcCB3ZSBuZWVkIHRvIHR3 ZWFrIHRoZSBndWVzdCByZWdpc3RlcnMgdG8gZW5hYmxlIHRoZQpleGNlcHRpb25zIHNvIHdlIG5l ZWQgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aG9zZSBiaXRzLgoKVHdvIG5ldyBjYXBhYmlsaXRpZXMg aGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBLVk1fRVhURU5TSU9OIGlvY3RsIHRvIGFsbG93CnVzZXJz cGFjZSB0byBxdWVyeSB0aGUgbnVtYmVyIG9mIGhhcmR3YXJlIGJyZWFrIGFuZCB3YXRjaCBwb2lu dHMKYXZhaWxhYmxlIG9uIHRoZSBob3N0IGhhcmR3YXJlLgoKQXMgUUVNVSB0ZXN0cyBmb3Igd2F0 Y2hwb2ludHMgYmFzZWQgb24gdGhlIGFkZHJlc3MgYW5kIG5vdCB0aGUgUEMgd2UKYWxzbyBuZWVk IHRvIGV4cG9ydCB0aGUgdmFsdWUgb2YgZmFyX2VsMiB0byB1c2Vyc3BhY2UuCgpTaWduZWQtb2Zm LWJ5OiBBbGV4IEJlbm7DqWUgPGFsZXguYmVubmVlQGxpbmFyby5vcmc+CgotLS0KdjIKICAgLSBz d2l0Y2hlZCB0byBDIHNldHVwCiAgIC0gcmVwbGFjZSBob3N0IGRlYnVnIHJlZ2lzdGVycyBkaXJl Y3RseSBpbnRvIGNvbnRleHQKICAgLSBtaW5vciB0d2VhayB0byBhcGkgZG9jcwogICAtIHNldHVw IHJpZ2h0IHJlZ2lzdGVyIGZvciBkZWJ1ZwogICAtIGFkZCBGQVJfRUwyIHRvIGRlYnVnIGV4aXQg c3RydWN0dXJlCiAgIC0gYWRkIHN1cHBvcnQgZnJvIHRyYXBwaW5nIGRlYnVnIHJlZ2lzdGVyIGFj Y2VzcwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vYXBpLnR4dCBiL0Rv Y3VtZW50YXRpb24vdmlydHVhbC9rdm0vYXBpLnR4dAppbmRleCAxN2Q0ZjljLi5hYzM0MDkzIDEw MDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2FwaS50eHQKKysrIGIvRG9jdW1l bnRhdGlvbi92aXJ0dWFsL2t2bS9hcGkudHh0CkBAIC0yNjI3LDcgKzI2MjcsNyBAQCBUaGUgdG9w IDE2IGJpdHMgb2YgdGhlIGNvbnRyb2wgZmllbGQgYXJlIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBj b250cm9sCiBmbGFncyB3aGljaCBjYW4gaW5jbHVkZSB0aGUgZm9sbG93aW5nOgogCiAgIC0gS1ZN X0dVRVNUREJHX1VTRV9TV19CUDogICAgIHVzaW5nIHNvZnR3YXJlIGJyZWFrcG9pbnRzIFt4ODYs IGFybTY0XQotICAtIEtWTV9HVUVTVERCR19VU0VfSFdfQlA6ICAgICB1c2luZyBoYXJkd2FyZSBi cmVha3BvaW50cyBbeDg2LCBzMzkwXQorICAtIEtWTV9HVUVTVERCR19VU0VfSFdfQlA6ICAgICB1 c2luZyBoYXJkd2FyZSBicmVha3BvaW50cyBbeDg2LCBzMzkwLCBhcm02NF0KICAgLSBLVk1fR1VF U1REQkdfSU5KRUNUX0RCOiAgICAgaW5qZWN0IERCIHR5cGUgZXhjZXB0aW9uIFt4ODZdCiAgIC0g S1ZNX0dVRVNUREJHX0lOSkVDVF9CUDogICAgIGluamVjdCBCUCB0eXBlIGV4Y2VwdGlvbiBbeDg2 XQogICAtIEtWTV9HVUVTVERCR19FWElUX1BFTkRJTkc6ICB0cmlnZ2VyIGFuIGltbWVkaWF0ZSBn dWVzdCBleGl0IFtzMzkwXQpAQCAtMjY0Miw2ICsyNjQyLDEwIEBAIHVwZGF0ZWQgdG8gdGhlIGNv cnJlY3QgKHN1cHBsaWVkKSB2YWx1ZXMuCiBUaGUgc2Vjb25kIHBhcnQgb2YgdGhlIHN0cnVjdHVy ZSBpcyBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgYW5kCiB0eXBpY2FsbHkgY29udGFpbnMgYSBzZXQg b2YgZGVidWcgcmVnaXN0ZXJzLgogCitGb3IgYXJtNjQgdGhlIG51bWJlciBvZiBkZWJ1ZyByZWdp c3RlcnMgaXMgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBhbmQKK2NhbiBiZSBkZXRlcm1pbmVkIGJ5 IHF1ZXJ5aW5nIHRoZSBLVk1fQ0FQX0dVRVNUX0RFQlVHX0hXX0JQUyBhbmQKK0tWTV9DQVBfR1VF U1RfREVCVUdfSFdfV1BTIGNhcGFiaWxpdGllcy4KKwogV2hlbiBkZWJ1ZyBldmVudHMgZXhpdCB0 aGUgbWFpbiBydW4gbG9vcCB3aXRoIHRoZSByZWFzb24KIEtWTV9FWElUX0RFQlVHIHdpdGggdGhl IGt2bV9kZWJ1Z19leGl0X2FyY2ggcGFydCBvZiB0aGUga3ZtX3J1bgogc3RydWN0dXJlIGNvbnRh aW5pbmcgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGRlYnVnIGluZm9ybWF0aW9uLgpkaWZmIC0tZ2l0 IGEvYXJjaC9hcm0va3ZtL2FybS5jIGIvYXJjaC9hcm0va3ZtL2FybS5jCmluZGV4IGMxZWQ4Y2Iu LmEyODYwMjYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2t2bS9hcm0uYworKysgYi9hcmNoL2FybS9r dm0vYXJtLmMKQEAgLTMwNiw2ICszMDYsNyBAQCB2b2lkIGt2bV9hcmNoX3ZjcHVfcHV0KHN0cnVj dCBrdm1fdmNwdSAqdmNwdSkKIAogI2RlZmluZSBLVk1fR1VFU1REQkdfVkFMSUQgKEtWTV9HVUVT VERCR19FTkFCTEUgfCAgICBcCiAJCQkgICAgS1ZNX0dVRVNUREJHX1VTRV9TV19CUCB8IFwKKwkJ CSAgICBLVk1fR1VFU1REQkdfVVNFX0hXX0JQIHwgXAogCQkJICAgIEtWTV9HVUVTVERCR19TSU5H TEVTVEVQKQogCiAvKioKQEAgLTMyOCw2ICszMjksMjYgQEAgaW50IGt2bV9hcmNoX3ZjcHVfaW9j dGxfc2V0X2d1ZXN0X2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKIAkJCXJldHVybiAtRUlO VkFMOwogCiAJCXZjcHUtPmd1ZXN0X2RlYnVnID0gZGJnLT5jb250cm9sOworCisJCS8qIEhhcmR3 YXJlIGFzc2lzdGVkIEJyZWFrIGFuZCBXYXRjaCBwb2ludHMgKi8KKwkJaWYgKHZjcHUtPmd1ZXN0 X2RlYnVnICYgS1ZNX0dVRVNUREJHX1VTRV9IV19CUCkgeworCQkJaW50IG5iID0gZ2V0X251bV9i cnBzKCk7CisJCQlpbnQgbncgPSBnZXRfbnVtX3dycHMoKTsKKworCQkJLyogQ29weSBhY3Jvc3Mg dXAgdG8gSU1QREVGIGRlYnVnIHJlZ2lzdGVycyB0byBvdXIKKwkJCSAqIHNoYWRvdyBjb3B5IGlu IHRoZSB2Y3B1IHN0cnVjdHVyZS4gVGhlIGRlYnVnIGNvZGUKKwkJCSAqIHdpbGwgdGhlbiBzZXQg dGhlbSB1cCBiZWZvcmUgd2UgcmUtZW50ZXIgdGhlIGd1ZXN0LgorCQkJICovCisJCQltZW1jcHko dmNwdS0+YXJjaC5ndWVzdF9kZWJ1Z19yZWdzLmRiZ19iY3IsCisJCQkJZGJnLT5hcmNoLmRiZ19i Y3IsIHNpemVvZihfX3U2NCkqbmIpOworCQkJbWVtY3B5KHZjcHUtPmFyY2guZ3Vlc3RfZGVidWdf cmVncy5kYmdfYnZyLAorCQkJCWRiZy0+YXJjaC5kYmdfYnZyLCBzaXplb2YoX191NjQpKm5iKTsK KwkJCW1lbWNweSh2Y3B1LT5hcmNoLmd1ZXN0X2RlYnVnX3JlZ3MuZGJnX3djciwKKwkJCQlkYmct PmFyY2guZGJnX3djciwgc2l6ZW9mKF9fdTY0KSpudyk7CisJCQltZW1jcHkodmNwdS0+YXJjaC5n dWVzdF9kZWJ1Z19yZWdzLmRiZ193dnIsCisJCQkJZGJnLT5hcmNoLmRiZ193dnIsIHNpemVvZihf X3U2NCkqbncpOworCQl9CisKIAl9IGVsc2UgewogCQkvKiBJZiBub3QgZW5hYmxlZCBjbGVhciBh bGwgZmxhZ3MgKi8KIAkJdmNwdS0+Z3Vlc3RfZGVidWcgPSAwOwpkaWZmIC0tZ2l0IGEvYXJjaC9h cm02NC9pbmNsdWRlL2FzbS9od19icmVha3BvaW50LmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNt L2h3X2JyZWFrcG9pbnQuaAppbmRleCA1MmI0ODRiLi5jNDUwNTUyIDEwMDY0NAotLS0gYS9hcmNo L2FybTY0L2luY2x1ZGUvYXNtL2h3X2JyZWFrcG9pbnQuaAorKysgYi9hcmNoL2FybTY0L2luY2x1 ZGUvYXNtL2h3X2JyZWFrcG9pbnQuaApAQCAtMTMwLDYgKzEzMCwxOCBAQCBzdGF0aWMgaW5saW5l IHZvaWQgcHRyYWNlX2h3X2NvcHlfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykKIH0K ICNlbmRpZgogCisvKiBEZXRlcm1pbmUgbnVtYmVyIG9mIEJSUCByZWdpc3RlcnMgYXZhaWxhYmxl LiAqLworc3RhdGljIGlubGluZSBpbnQgZ2V0X251bV9icnBzKHZvaWQpCit7CisJcmV0dXJuICgo cmVhZF9jcHVpZChJRF9BQTY0REZSMF9FTDEpID4+IDEyKSAmIDB4ZikgKyAxOworfQorCisvKiBE ZXRlcm1pbmUgbnVtYmVyIG9mIFdSUCByZWdpc3RlcnMgYXZhaWxhYmxlLiAqLworc3RhdGljIGlu bGluZSBpbnQgZ2V0X251bV93cnBzKHZvaWQpCit7CisJcmV0dXJuICgocmVhZF9jcHVpZChJRF9B QTY0REZSMF9FTDEpID4+IDIwKSAmIDB4ZikgKyAxOworfQorCiBleHRlcm4gc3RydWN0IHBtdSBw ZXJmX29wc19icDsKIAogI2VuZGlmCS8qIF9fS0VSTkVMX18gKi8KZGlmZiAtLWdpdCBhL2FyY2gv YXJtNjQvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20va3Zt X2hvc3QuaAppbmRleCA2YTMzNjQ3Li4yYzM1OWM5IDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2lu Y2x1ZGUvYXNtL2t2bV9ob3N0LmgKKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9z dC5oCkBAIC0xMDYsOCArMTA2LDkgQEAgc3RydWN0IGt2bV92Y3B1X2FyY2ggewogCS8qIEV4Y2Vw dGlvbiBJbmZvcm1hdGlvbiAqLwogCXN0cnVjdCBrdm1fdmNwdV9mYXVsdF9pbmZvIGZhdWx0Owog Ci0JLyogRGVidWcgc3RhdGUgKi8KKwkvKiBHdWVzdCBkZWJ1ZyBzdGF0ZSAqLwogCXU2NCBkZWJ1 Z19mbGFnczsKKwlzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnX2FyY2ggZ3Vlc3RfZGVidWdfcmVnczsK IAogCS8qIFBvaW50ZXIgdG8gaG9zdCBDUFUgY29udGV4dCAqLwogCWt2bV9jcHVfY29udGV4dF90 ICpob3N0X2NwdV9jb250ZXh0OwpAQCAtMTI2LDYgKzEyNyw3IEBAIHN0cnVjdCBrdm1fdmNwdV9h cmNoIHsKIAkJdTMyCXBzdGF0ZV9zc19iaXQ7CiAJCXUzMgltZHNjcl9lbDFfYml0czsKIAorCQlz dHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnX2FyY2ggZGVidWdfcmVnczsKIAl9IGRlYnVnX3NhdmVkX3Jl Z3M7CiAKIAkvKiBEb24ndCBydW4gdGhlIGd1ZXN0ICovCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0 L2luY2x1ZGUvdWFwaS9hc20va3ZtLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvdWFwaS9hc20va3Zt LmgKaW5kZXggNmVlNzBhMC4uNzNmMjFlNCAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRl L3VhcGkvYXNtL2t2bS5oCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS91YXBpL2FzbS9rdm0uaApA QCAtMTE4LDYgKzExOCw3IEBAIHN0cnVjdCBrdm1fZ3Vlc3RfZGVidWdfYXJjaCB7CiBzdHJ1Y3Qg a3ZtX2RlYnVnX2V4aXRfYXJjaCB7CiAJX191NjQgcGM7CiAJX191MzIgaHNyOworCV9fdTY0IGZh cjsJLyogdXNlZCBmb3Igd2F0Y2hwb2ludHMgKi8KIH07CiAKIHN0cnVjdCBrdm1fc3luY19yZWdz IHsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva2VybmVsL2h3X2JyZWFrcG9pbnQuYyBiL2FyY2gv YXJtNjQva2VybmVsL2h3X2JyZWFrcG9pbnQuYwppbmRleCA5OGJiZTA2Li45MjNiZTQ0IDEwMDY0 NAotLS0gYS9hcmNoL2FybTY0L2tlcm5lbC9od19icmVha3BvaW50LmMKKysrIGIvYXJjaC9hcm02 NC9rZXJuZWwvaHdfYnJlYWtwb2ludC5jCkBAIC00OSwxOCArNDksNiBAQCBzdGF0aWMgREVGSU5F X1BFUl9DUFUoaW50LCBzdGVwcGluZ19rZXJuZWxfYnApOwogc3RhdGljIGludCBjb3JlX251bV9i cnBzOwogc3RhdGljIGludCBjb3JlX251bV93cnBzOwogCi0vKiBEZXRlcm1pbmUgbnVtYmVyIG9m IEJSUCByZWdpc3RlcnMgYXZhaWxhYmxlLiAqLwotc3RhdGljIGludCBnZXRfbnVtX2JycHModm9p ZCkKLXsKLQlyZXR1cm4gKChyZWFkX2NwdWlkKElEX0FBNjRERlIwX0VMMSkgPj4gMTIpICYgMHhm KSArIDE7Ci19Ci0KLS8qIERldGVybWluZSBudW1iZXIgb2YgV1JQIHJlZ2lzdGVycyBhdmFpbGFi bGUuICovCi1zdGF0aWMgaW50IGdldF9udW1fd3Jwcyh2b2lkKQotewotCXJldHVybiAoKHJlYWRf Y3B1aWQoSURfQUE2NERGUjBfRUwxKSA+PiAyMCkgJiAweGYpICsgMTsKLX0KLQogaW50IGh3X2Jy ZWFrcG9pbnRfc2xvdHMoaW50IHR5cGUpCiB7CiAJLyoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQv a3ZtL2RlYnVnLmMgYi9hcmNoL2FybTY0L2t2bS9kZWJ1Zy5jCmluZGV4IGIzMjM2MmMuLjNiMzY4 ZjMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQva3ZtL2RlYnVnLmMKKysrIGIvYXJjaC9hcm02NC9r dm0vZGVidWcuYwpAQCAtNTAsMTQgKzUwLDE5IEBACiAKIHZvaWQga3ZtX2FyY2hfc2V0dXBfZGVi dWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogeworCWJvb2wgdHJhcF9kZWJ1ZyA9IGZhbHNlOwor CiAJdmNwdS0+YXJjaC5tZGNyX2VsMiB8PSAoTURDUl9FTDJfVFBNIHwgTURDUl9FTDJfVFBNQ1Ip OwogCXZjcHUtPmFyY2gubWRjcl9lbDIgfD0gKE1EQ1JfRUwyX1REUkEgfCBNRENSX0VMMl9URE9T QSk7CiAKLQkvKiBUcmFwIGRlYnVnIHJlZ2lzdGVyIGFjY2Vzcz8gKi8KKwl0cmFjZV9rdm1fYXJj aF9zZXR1cF9kZWJ1Z19yZWczMigiTURDUl9FTDIiLCB2Y3B1LT5hcmNoLm1kY3JfZWwyKTsKKwor CS8qCisJICogSWYgd2UgYXJlIG5vdCB0cmVhdGluZyBkZWJ1ZyByZWdpc3RlcnMgYXJlIGRpcnR5 IHdlIG5lZWQKKwkgKiB0byB0cmFwIGlmIHRoZSBndWVzdCBzdGFydHMgYWNjZXNzaW5nIHRoZW0u CisJICovCiAJaWYgKCF2Y3B1LT5hcmNoLmRlYnVnX2ZsYWdzICYgS1ZNX0FSTTY0X0RFQlVHX0RJ UlRZKQotCQl2Y3B1LT5hcmNoLm1kY3JfZWwyIHw9IE1EQ1JfRUwyX1REQTsKLQllbHNlCi0JCXZj cHUtPmFyY2gubWRjcl9lbDIgJj0gfk1EQ1JfRUwyX1REQTsKKwkJdHJhcF9kZWJ1ZyA9IHRydWU7 CiAKIAkvKiBJcyBHdWVzdCBkZWJ1Z2dpbmcgaW4gZWZmZWN0PyAqLwogCWlmICh2Y3B1LT5ndWVz dF9kZWJ1ZykgewpAQCAtODQsMTAgKzg5LDY5IEBAIHZvaWQga3ZtX2FyY2hfc2V0dXBfZGVidWco c3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCQkJdmNwdV9zeXNfcmVnKHZjcHUsIE1EU0NSX0VMMSkg Jj0gfkRCR19NRFNDUl9TUzsKIAkJfQogCisJCS8qCisJCSAqIEhXIEJyZWFrL1dhdGNoIHBvaW50 cworCQkgKi8KKwkJaWYgKHZjcHUtPmd1ZXN0X2RlYnVnICYgS1ZNX0dVRVNUREJHX1VTRV9IV19C UCkgeworCQkJaW50IG5iID0gZ2V0X251bV9icnBzKCk7CisJCQlpbnQgbncgPSBnZXRfbnVtX3dy cHMoKTsKKwkJCXN0cnVjdCBrdm1fZ3Vlc3RfZGVidWdfYXJjaCAqc2F2ZWQsICpob3N0OworCisJ CQl2Y3B1X3N5c19yZWcodmNwdSwgTURTQ1JfRUwxKSB8PQorCQkJCShEQkdfTURTQ1JfS0RFfERC R19NRFNDUl9NREUpOworCisJCQkvKgorCQkJICogRmlyc3Qgd2UgbmVlZCB0byBtYWtlIGEgY29w eSBvZiB0aGUgZ3Vlc3QKKwkJCSAqIGRlYnVnIHJlZ2lzdGVycyBiZWZvcmUgd2Ugd2lwZSB0aGVt IG91dAorCQkJICogd2l0aCB0aGUgb25lcyB3ZSB3YW50IHRvIHVzZS4KKwkJCSAqLworCQkJc2F2 ZWQgPSAmdmNwdV9kZWJ1Z19zYXZlZF9yZWcodmNwdSwgZGVidWdfcmVncyk7CisJCQlob3N0ID0g JnZjcHUtPmFyY2guZ3Vlc3RfZGVidWdfcmVnczsKKworCQkJLyogU2F2ZSBndWVzdCB2YWx1ZXMg Ki8KKwkJCW1lbWNweSgmc2F2ZWQtPmRiZ19iY3IsCisJCQkgICAgICAgJnZjcHVfc3lzX3JlZyh2 Y3B1LCBEQkdCQ1IwX0VMMSksCisJCQkgICAgICAgc2l6ZW9mKF9fdTY0KSpuYik7CisJCQltZW1j cHkoJnNhdmVkLT5kYmdfYnZyLAorCQkJICAgICAgICZ2Y3B1X3N5c19yZWcodmNwdSwgREJHQlZS MF9FTDEpLAorCQkJICAgICAgIHNpemVvZihfX3U2NCkqbmIpOworCQkJbWVtY3B5KCZzYXZlZC0+ ZGJnX3djciwKKwkJCSAgICAgICAmdmNwdV9zeXNfcmVnKHZjcHUsIERCR1dDUjBfRUwxKSwKKwkJ CSAgICAgICBzaXplb2YoX191NjQpKm53KTsKKwkJCW1lbWNweSgmc2F2ZWQtPmRiZ193dnIsCisJ CQkgICAgICAgJnZjcHVfc3lzX3JlZyh2Y3B1LCBEQkdXVlIwX0VMMSksCisJCQkgICAgICAgc2l6 ZW9mKF9fdTY0KSpudyk7CisKKwkJCS8qIENvcHkgaW4gaG9zdCB2YWx1ZXMgKi8KKwkJCW1lbWNw eSgmdmNwdV9zeXNfcmVnKHZjcHUsIERCR0JDUjBfRUwxKSwKKwkJCSAgICAgICAmaG9zdC0+ZGJn X2JjciwKKwkJCSAgICAgICBzaXplb2YoX191NjQpKm5iKTsKKwkJCW1lbWNweSgmdmNwdV9zeXNf cmVnKHZjcHUsIERCR0JWUjBfRUwxKSwKKwkJCSAgICAgICAmaG9zdC0+ZGJnX2J2ciwKKwkJCSAg ICAgICBzaXplb2YoX191NjQpKm5iKTsKKwkJCW1lbWNweSgmdmNwdV9zeXNfcmVnKHZjcHUsIERC R1dDUjBfRUwxKSwKKwkJCSAgICAgICAmaG9zdC0+ZGJnX3djciwKKwkJCSAgICAgICBzaXplb2Yo X191NjQpKm53KTsKKwkJCW1lbWNweSgmdmNwdV9zeXNfcmVnKHZjcHUsIERCR1dWUjBfRUwxKSwK KwkJCSAgICAgICAmaG9zdC0+ZGJnX3d2ciwKKwkJCSAgICAgICBzaXplb2YoX191NjQpKm53KTsK KworCQkJLyogTWFrZSBzdXJlIGh5cC5TIGNvcGllcyB0aGVtIGluL291dCAqLworCQkJdmNwdS0+ YXJjaC5kZWJ1Z19mbGFncyB8PSBLVk1fQVJNNjRfREVCVUdfRElSVFk7CisJCQkvKiBBbHNvIHRy YWNrIGd1ZXN0IGNoYW5nZXMgKi8KKwkJCXRyYXBfZGVidWcgPSB0cnVlOworCQl9CisKIAl9IGVs c2UgewogCQkvKiBEZWJ1ZyBvcGVyYXRpb25zIGNhbiBnbyBzdHJhaWdodCB0byB0aGUgZ3Vlc3Qg Ki8KIAkJdmNwdS0+YXJjaC5tZGNyX2VsMiAmPSB+TURDUl9FTDJfVERFOwogCX0KKworCS8qIFRy YXAgZGVidWcgcmVnaXN0ZXIgYWNjZXNzPyAqLworCWlmICh0cmFwX2RlYnVnKQorCQl2Y3B1LT5h cmNoLm1kY3JfZWwyIHw9IE1EQ1JfRUwyX1REQTsKKwllbHNlCisJCXZjcHUtPmFyY2gubWRjcl9l bDIgJj0gfk1EQ1JfRUwyX1REQTsKIH0KIAogdm9pZCBrdm1fYXJjaF9jbGVhcl9kZWJ1ZyhzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUpCkBAIC0xMDAsNSArMTY0LDMxIEBAIHZvaWQga3ZtX2FyY2hfY2xl YXJfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCQl2Y3B1X3N5c19yZWcodmNwdSwgTURT Q1JfRUwxKSAmPSB+TURTQ1JfRUwxX0RFQlVHX0JJVFM7CiAJCXZjcHVfc3lzX3JlZyh2Y3B1LCBN RFNDUl9FTDEpIHw9CiAJCQl2Y3B1X2RlYnVnX3NhdmVkX3JlZyh2Y3B1LCBtZHNjcl9lbDFfYml0 cyk7CisKKwkJLyoKKwkJICogSWYgd2Ugd2VyZSB1c2luZyBIVyBkZWJ1ZyB3ZSBuZWVkIHRvIHJl c3RvcmUgdGhlCisJCSAqIHZhbHVlcyB0aGUgZ3Vlc3QgaGFkIHNldCB0aGVtIHVwIHdpdGgKKwkJ ICovCisJCWlmICh2Y3B1LT5ndWVzdF9kZWJ1ZyAmIEtWTV9HVUVTVERCR19VU0VfSFdfQlApIHsK KwkJCXN0cnVjdCBrdm1fZ3Vlc3RfZGVidWdfYXJjaCAqcmVnczsKKwkJCWludCBuYiA9IGdldF9u dW1fYnJwcygpOworCQkJaW50IG53ID0gZ2V0X251bV93cnBzKCk7CisKKwkJCXJlZ3MgPSAmdmNw dV9kZWJ1Z19zYXZlZF9yZWcodmNwdSwgZGVidWdfcmVncyk7CisKKwkJCS8qIFJlc3RvcmUgdGhl IHNhdmVkIGRlYnVnIHJlZ2lzdGVyIHZhbHVlcyAqLworCQkJbWVtY3B5KCZ2Y3B1X3N5c19yZWco dmNwdSwgREJHQkNSMF9FTDEpLAorCQkJICAgICAgICZyZWdzLT5kYmdfYmNyLAorCQkJICAgICAg IHNpemVvZihfX3U2NCkqbmIpOworCQkJbWVtY3B5KCZ2Y3B1X3N5c19yZWcodmNwdSwgREJHQlZS MF9FTDEpLAorCQkJICAgICAgICZyZWdzLT5kYmdfYnZyLAorCQkJICAgICAgIHNpemVvZihfX3U2 NCkqbmIpOworCQkJbWVtY3B5KCZ2Y3B1X3N5c19yZWcodmNwdSwgREJHV0NSMF9FTDEpLAorCQkJ ICAgICAgICZyZWdzLT5kYmdfd2NyLAorCQkJICAgICAgIHNpemVvZihfX3U2NCkqbncpOworCQkJ bWVtY3B5KCZ2Y3B1X3N5c19yZWcodmNwdSwgREJHV1ZSMF9FTDEpLAorCQkJICAgICAgICZyZWdz LT5kYmdfd3ZyLAorCQkJICAgICAgIHNpemVvZihfX3U2NCkqbncpOworCQl9CiAJfQogfQpkaWZm IC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vaGFuZGxlX2V4aXQuYyBiL2FyY2gvYXJtNjQva3ZtL2hh bmRsZV9leGl0LmMKaW5kZXggMTZhY2NhZS4uNDYwYTFhYSAxMDA2NDQKLS0tIGEvYXJjaC9hcm02 NC9rdm0vaGFuZGxlX2V4aXQuYworKysgYi9hcmNoL2FybTY0L2t2bS9oYW5kbGVfZXhpdC5jCkBA IC0xMDEsNyArMTAxLDExIEBAIHN0YXRpYyBpbnQga3ZtX2hhbmRsZV9ndWVzdF9kZWJ1ZyhzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4pCiAJcnVuLT5kZWJ1Zy5hcmNo LmhzciA9IGhzcjsKIAogCXN3aXRjaCAoaHNyID4+IEVTUl9FTHhfRUNfU0hJRlQpIHsKKwljYXNl IEVTUl9FTHhfRUNfV0FUQ0hQVF9MT1c6CisJCXJ1bi0+ZGVidWcuYXJjaC5mYXIgPSB2Y3B1LT5h cmNoLmZhdWx0LmZhcl9lbDI7CisJCS8qIGZhbGwgdGhyb3VnaCAqLwogCWNhc2UgRVNSX0VMeF9F Q19TT0ZUU1RQX0xPVzoKKwljYXNlIEVTUl9FTHhfRUNfQlJFQUtQVF9MT1c6CiAJY2FzZSBFU1Jf RUx4X0VDX0JLUFQzMjoKIAljYXNlIEVTUl9FTHhfRUNfQlJLNjQ6CiAJCXJ1bi0+ZGVidWcuYXJj aC5wYyA9ICp2Y3B1X3BjKHZjcHUpOwpAQCAtMTI5LDYgKzEzMyw4IEBAIHN0YXRpYyBleGl0X2hh bmRsZV9mbiBhcm1fZXhpdF9oYW5kbGVyc1tdID0gewogCVtFU1JfRUx4X0VDX0lBQlRfTE9XXQk9 IGt2bV9oYW5kbGVfZ3Vlc3RfYWJvcnQsCiAJW0VTUl9FTHhfRUNfREFCVF9MT1ddCT0ga3ZtX2hh bmRsZV9ndWVzdF9hYm9ydCwKIAlbRVNSX0VMeF9FQ19TT0ZUU1RQX0xPV109IGt2bV9oYW5kbGVf Z3Vlc3RfZGVidWcsCisJW0VTUl9FTHhfRUNfV0FUQ0hQVF9MT1ddPSBrdm1faGFuZGxlX2d1ZXN0 X2RlYnVnLAorCVtFU1JfRUx4X0VDX0JSRUFLUFRfTE9XXT0ga3ZtX2hhbmRsZV9ndWVzdF9kZWJ1 ZywKIAlbRVNSX0VMeF9FQ19CS1BUMzJdCT0ga3ZtX2hhbmRsZV9ndWVzdF9kZWJ1ZywKIAlbRVNS X0VMeF9FQ19CUks2NF0JPSBrdm1faGFuZGxlX2d1ZXN0X2RlYnVnLAogfTsKZGlmZiAtLWdpdCBh L2FyY2gvYXJtNjQva3ZtL3Jlc2V0LmMgYi9hcmNoL2FybTY0L2t2bS9yZXNldC5jCmluZGV4IDBi NDMyNjUuLmMyNzMyYzcgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQva3ZtL3Jlc2V0LmMKKysrIGIv YXJjaC9hcm02NC9rdm0vcmVzZXQuYwpAQCAtNjQsNiArNjQsMTIgQEAgaW50IGt2bV9hcmNoX2Rl dl9pb2N0bF9jaGVja19leHRlbnNpb24obG9uZyBleHQpCiAJY2FzZSBLVk1fQ0FQX0FSTV9FTDFf MzJCSVQ6CiAJCXIgPSBjcHVfaGFzXzMyYml0X2VsMSgpOwogCQlicmVhazsKKwljYXNlIEtWTV9D QVBfR1VFU1RfREVCVUdfSFdfQlBTOgorCQlyID0gZ2V0X251bV9icnBzKCk7CisJCWJyZWFrOwor CWNhc2UgS1ZNX0NBUF9HVUVTVF9ERUJVR19IV19XUFM6CisJCXIgID0gZ2V0X251bV93cnBzKCk7 CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXIgPSAwOwogCX0KZGlmZiAtLWdpdCBhL2FyY2gvYXJt NjQva3ZtL3N5c19yZWdzLmMgYi9hcmNoL2FybTY0L2t2bS9zeXNfcmVncy5jCmluZGV4IGMzNzBi NDAuLmJlOWIxODggMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQva3ZtL3N5c19yZWdzLmMKKysrIGIv YXJjaC9hcm02NC9rdm0vc3lzX3JlZ3MuYwpAQCAtMTk2LDE2ICsxOTYsNDkgQEAgc3RhdGljIGJv b2wgdHJhcF9kYmdhdXRoc3RhdHVzX2VsMShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAgKiAtIElm IHRoZSBkaXJ0eSBiaXQgaXMgc2V0LCBzYXZlIGd1ZXN0IHJlZ2lzdGVycywgcmVzdG9yZSBob3N0 CiAgKiAgIHJlZ2lzdGVycyBhbmQgY2xlYXIgdGhlIGRpcnR5IGJpdC4gVGhpcyBlbnN1cmUgdGhh dCB0aGUgaG9zdCBjYW4KICAqICAgbm93IHVzZSB0aGUgZGVidWcgcmVnaXN0ZXJzLgorICoKKyAq IFdlIGFsc28gdXNlIHRoaXMgbWVjaGFuaXNtIHRvIHNldC11cCB0aGUgZGVidWcgcmVnaXN0ZXJz IGZvciBndWVzdAorICogZGVidWdnaW5nLiBJZiB0aGlzIGlzIHRoZSBjYXNlIHdlIHdhbnQgdG8g ZW5zdXJlIHRoZSBndWVzdCBzZWVzCisgKiB0aGUgcmlnaHQgdmVyc2lvbnMgb2YgdGhlIHJlZ2lz dGVycyAtIGV2ZW4gaWYgdGhleSBhcmUgbm90IGdvaW5nIHRvCisgKiBiZSBlZmZlY3RpdmUgd2hp bGUgZ3Vlc3QgZGVidWcgaXMgdXNpbmcgSFcgZGVidWcuCisgKgogICovCisKIHN0YXRpYyBib29s IHRyYXBfZGVidWdfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJCQkgICAgY29uc3Qgc3Ry dWN0IHN5c19yZWdfcGFyYW1zICpwLAogCQkJICAgIGNvbnN0IHN0cnVjdCBzeXNfcmVnX2Rlc2Mg KnIpCiB7Ci0JaWYgKHAtPmlzX3dyaXRlKSB7Ci0JCXZjcHVfc3lzX3JlZyh2Y3B1LCByLT5yZWcp ID0gKnZjcHVfcmVnKHZjcHUsIHAtPlJ0KTsKLQkJdmNwdS0+YXJjaC5kZWJ1Z19mbGFncyB8PSBL Vk1fQVJNNjRfREVCVUdfRElSVFk7CisJaWYgKHZjcHUtPmd1ZXN0X2RlYnVnICYgS1ZNX0dVRVNU REJHX1VTRV9IV19CUCkgeworCQlzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnX2FyY2ggKnNhdmVkOwor CQlfX3U2NCAqdmFsOworCisJCXNhdmVkID0gJnZjcHVfZGVidWdfc2F2ZWRfcmVnKHZjcHUsIGRl YnVnX3JlZ3MpOworCisJCWlmIChyLT5yZWcgPj0gREJHQkNSMF9FTDEgJiYgci0+cmVnIDw9IERC R0JDUjE1X0VMMSkKKwkJCXZhbCA9ICZzYXZlZC0+ZGJnX2JjcltyLT5yZWcgLSBEQkdCQ1IwX0VM MV07CisJCWVsc2UgaWYgKHItPnJlZyA+PSBEQkdCVlIwX0VMMSAmJiByLT5yZWcgPD0gREJHQlZS MTVfRUwxKQorCQkJdmFsID0gJnNhdmVkLT5kYmdfYnZyW3ItPnJlZyAtIERCR0JWUjBfRUwxXTsK KwkJZWxzZSBpZiAoci0+cmVnID49IERCR1dDUjBfRUwxICYmIHItPnJlZyA8PSBEQkdXQ1IxNV9F TDEpCisJCQl2YWwgPSAmc2F2ZWQtPmRiZ193Y3Jbci0+cmVnIC0gREJHV0NSMF9FTDFdOworCQll bHNlIGlmIChyLT5yZWcgPj0gREJHV1ZSMF9FTDEgJiYgci0+cmVnIDw9IERCR1dWUjE1X0VMMSkK KwkJCXZhbCA9ICZzYXZlZC0+ZGJnX3d2cltyLT5yZWcgLSBEQkdXVlIwX0VMMV07CisJCWVsc2Ug eworCQkJa3ZtX2VycigiQmFkIHJlZ2lzdGVyIGluZGV4ICVkXG4iLCByLT5yZWcpOworCQkJcmV0 dXJuIGZhbHNlOworCQl9CisKKwkJaWYgKHAtPmlzX3dyaXRlKQorCQkJKnZhbCA9ICp2Y3B1X3Jl Zyh2Y3B1LCBwLT5SdCk7CisJCWVsc2UKKwkJCSp2Y3B1X3JlZyh2Y3B1LCBwLT5SdCkgPSAqdmFs OworCiAJfSBlbHNlIHsKLQkJKnZjcHVfcmVnKHZjcHUsIHAtPlJ0KSA9IHZjcHVfc3lzX3JlZyh2 Y3B1LCByLT5yZWcpOworCQlpZiAocC0+aXNfd3JpdGUpIHsKKwkJCXZjcHVfc3lzX3JlZyh2Y3B1 LCByLT5yZWcpID0gKnZjcHVfcmVnKHZjcHUsIHAtPlJ0KTsKKwkJCXZjcHUtPmFyY2guZGVidWdf ZmxhZ3MgfD0gS1ZNX0FSTTY0X0RFQlVHX0RJUlRZOworCQl9IGVsc2UgeworCQkJKnZjcHVfcmVn KHZjcHUsIHAtPlJ0KSA9IHZjcHVfc3lzX3JlZyh2Y3B1LCByLT5yZWcpOworCQl9CiAJfQogCiAJ cmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmggYi9pbmNs dWRlL3VhcGkvbGludXgva3ZtLmgKaW5kZXggY2UyZGIxNC4uMGU0OGMwZCAxMDA2NDQKLS0tIGEv aW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oCisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaApA QCAtNzcxLDYgKzc3MSw4IEBAIHN0cnVjdCBrdm1fcHBjX3NtbXVfaW5mbyB7CiAjZGVmaW5lIEtW TV9DQVBfUFBDX0VOQUJMRV9IQ0FMTCAxMDQKICNkZWZpbmUgS1ZNX0NBUF9DSEVDS19FWFRFTlNJ T05fVk0gMTA1CiAjZGVmaW5lIEtWTV9DQVBfUzM5MF9VU0VSX1NJR1AgMTA2CisjZGVmaW5lIEtW TV9DQVBfR1VFU1RfREVCVUdfSFdfQlBTIDEwNworI2RlZmluZSBLVk1fQ0FQX0dVRVNUX0RFQlVH X0hXX1dQUyAxMDgKIAogI2lmZGVmIEtWTV9DQVBfSVJRX1JPVVRJTkcKIAotLSAKMi4zLjQKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmt2bWFybSBtYWls aW5nIGxpc3QKa3ZtYXJtQGxpc3RzLmNzLmNvbHVtYmlhLmVkdQpodHRwczovL2xpc3RzLmNzLmNv bHVtYmlhLmVkdS9tYWlsbWFuL2xpc3RpbmZvL2t2bWFybQo=