From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [PATCH v4 10/12] KVM: arm64: guest debug, HW assisted debug support Date: Fri, 15 May 2015 15:27:13 +0100 Message-ID: <1431700035-23479-11-git-send-email-alex.bennee@linaro.org> References: <1431700035-23479-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: <1431700035-23479-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, "open list:DOCUMENTATION" , Will Deacon , open list , "open list:ABI/API" , dahi@linux.vnet.ibm.com, Peter Zijlstra , Catalin Marinas , r65777@freescale.com, bp@suse.de, Ingo Molnar List-Id: linux-api@vger.kernel.org VGhpcyBhZGRzIHN1cHBvcnQgZm9yIHVzZXJzcGFjZSB0byBjb250cm9sIHRoZSBIVyBkZWJ1ZyBy ZWdpc3RlcnMgZm9yCmd1ZXN0IGRlYnVnLiBJbiB0aGUgZGVidWcgaW9jdGwgd2UgY29weSB0aGUg SU1QREVGIGRlZmluZWQgbnVtYmVyIG9mCnJlZ2lzdGVycyBpbnRvIGEgbmV3IHJlZ2lzdGVyIHNl dCBjYWxsZWQgaG9zdF9kZWJ1Z19zdGF0ZS4gVGhlcmUgaXMgbm93CmEgbmV3IHZjcHUgcGFyYW1l dGVyIGNhbGxlZCBkZWJ1Z19wdHIgd2hpY2ggc2VsZWN0cyB3aGljaCByZWdpc3RlciBzZXQKaXMg dG8gY29waWVkIGludG8gdGhlIHJlYWwgcmVnaXN0ZXJzIHdoZW4gd29ybGQgc3dpdGNoIG9jY3Vy cy4KCkkndmUgbW92ZWQgc29tZSBoZWxwZXIgZnVuY3Rpb25zIGludG8gdGhlIGh3X2JyZWFrcG9p bnQuaCBoZWFkZXIgZm9yCnJlLXVzZS4KCkFzIHdpdGggc2luZ2xlIHN0ZXAgd2UgbmVlZCB0byB0 d2VhayB0aGUgZ3Vlc3QgcmVnaXN0ZXJzIHRvIGVuYWJsZSB0aGUKZXhjZXB0aW9ucyBzbyB3ZSBu ZWVkIHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhvc2UgYml0cy4KClR3byBuZXcgY2FwYWJpbGl0aWVz IGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgS1ZNX0VYVEVOU0lPTiBpb2N0bCB0byBhbGxvdwp1c2Vy c3BhY2UgdG8gcXVlcnkgdGhlIG51bWJlciBvZiBoYXJkd2FyZSBicmVhayBhbmQgd2F0Y2ggcG9p bnRzCmF2YWlsYWJsZSBvbiB0aGUgaG9zdCBoYXJkd2FyZS4KClNpZ25lZC1vZmYtYnk6IEFsZXgg QmVubsOpZSA8YWxleC5iZW5uZWVAbGluYXJvLm9yZz4KCi0tLQp2MgogICAtIHN3aXRjaGVkIHRv IEMgc2V0dXAKICAgLSByZXBsYWNlIGhvc3QgZGVidWcgcmVnaXN0ZXJzIGRpcmVjdGx5IGludG8g Y29udGV4dAogICAtIG1pbm9yIHR3ZWFrIHRvIGFwaSBkb2NzCiAgIC0gc2V0dXAgcmlnaHQgcmVn aXN0ZXIgZm9yIGRlYnVnCiAgIC0gYWRkIEZBUl9FTDIgdG8gZGVidWcgZXhpdCBzdHJ1Y3R1cmUK ICAgLSBhZGQgc3VwcG9ydCBmb3IgdHJhcHBpbmcgZGVidWcgcmVnaXN0ZXIgYWNjZXNzCnYzCiAg IC0gcmVtb3ZlIHN0cmF5IHRyYWNlIHN0YXRlbWVudAogICAtIGZpeCBzcGFjaW5nIGFyb3VuZCBv cGVyYXRvcnMgKHZhcmlvdXMpCiAgIC0gY2xlYW4tdXAgdXNhZ2Ugb2YgdHJhcF9kZWJ1ZwogICAt IGludHJvZHVjZSBkZWJ1Z19wdHIsIHJlcGxhY2UgZXhjZXNzaXZlIG1lbWNweSBzdHVmZgogICAt IGRvbid0IHVzZSBtZW1jcHkgaW4gaW9jdGwsIGp1c3QgYXNzaWduCiAgIC0gdXBkYXRlIGNhcCBp b2N0bCBkb2N1bWVudGF0aW9uCiAgIC0gcmV3b3JkIGEgbnVtYmVyIGNvbW1lbnRzCiAgIC0gcmVu YW1lIGhvc3RfZGVidWdfc3RhdGUtPmV4dGVybmFsX2RlYnVnX3N0YXRlCnY0CiAgIC0gdXNlIHRo ZSBuZXcgdTMyL3U2NCBzcGxpdCBkZWJ1Z19wdHIgYXBwcm9hY2gKICAgLSBmaXggc29tZSB3b3Jk aW5nL2NvbW1lbnRzCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9hcGku dHh0IGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9hcGkudHh0CmluZGV4IDMzYzgxNDMuLmFk YTU3ZGYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vYXBpLnR4dAorKysg Yi9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2FwaS50eHQKQEAgLTI2NjgsNyArMjY2OCw3IEBA IFRoZSB0b3AgMTYgYml0cyBvZiB0aGUgY29udHJvbCBmaWVsZCBhcmUgYXJjaGl0ZWN0dXJlIHNw ZWNpZmljIGNvbnRyb2wKIGZsYWdzIHdoaWNoIGNhbiBpbmNsdWRlIHRoZSBmb2xsb3dpbmc6CiAK ICAgLSBLVk1fR1VFU1REQkdfVVNFX1NXX0JQOiAgICAgdXNpbmcgc29mdHdhcmUgYnJlYWtwb2lu dHMgW3g4NiwgYXJtNjRdCi0gIC0gS1ZNX0dVRVNUREJHX1VTRV9IV19CUDogICAgIHVzaW5nIGhh cmR3YXJlIGJyZWFrcG9pbnRzIFt4ODYsIHMzOTBdCisgIC0gS1ZNX0dVRVNUREJHX1VTRV9IV19C UDogICAgIHVzaW5nIGhhcmR3YXJlIGJyZWFrcG9pbnRzIFt4ODYsIHMzOTAsIGFybTY0XQogICAt IEtWTV9HVUVTVERCR19JTkpFQ1RfREI6ICAgICBpbmplY3QgREIgdHlwZSBleGNlcHRpb24gW3g4 Nl0KICAgLSBLVk1fR1VFU1REQkdfSU5KRUNUX0JQOiAgICAgaW5qZWN0IEJQIHR5cGUgZXhjZXB0 aW9uIFt4ODZdCiAgIC0gS1ZNX0dVRVNUREJHX0VYSVRfUEVORElORzogIHRyaWdnZXIgYW4gaW1t ZWRpYXRlIGd1ZXN0IGV4aXQgW3MzOTBdCkBAIC0yNjgzLDYgKzI2ODMsMTEgQEAgdXBkYXRlZCB0 byB0aGUgY29ycmVjdCAoc3VwcGxpZWQpIHZhbHVlcy4KIFRoZSBzZWNvbmQgcGFydCBvZiB0aGUg c3RydWN0dXJlIGlzIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBhbmQKIHR5cGljYWxseSBjb250YWlu cyBhIHNldCBvZiBkZWJ1ZyByZWdpc3RlcnMuCiAKK0ZvciBhcm02NCB0aGUgbnVtYmVyIG9mIGRl YnVnIHJlZ2lzdGVycyBpcyBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGFuZAorY2FuIGJlIGRldGVy bWluZWQgYnkgcXVlcnlpbmcgdGhlIEtWTV9DQVBfR1VFU1RfREVCVUdfSFdfQlBTIGFuZAorS1ZN X0NBUF9HVUVTVF9ERUJVR19IV19XUFMgY2FwYWJpbGl0aWVzIHdoaWNoIHJldHVybiBhIHBvc2l0 aXZlIG51bWJlcgoraW5kaWNhdGluZyB0aGUgbnVtYmVyIG9mIHN1cHBvcnRlZCByZWdpc3RlcnMu CisKIFdoZW4gZGVidWcgZXZlbnRzIGV4aXQgdGhlIG1haW4gcnVuIGxvb3Agd2l0aCB0aGUgcmVh c29uCiBLVk1fRVhJVF9ERUJVRyB3aXRoIHRoZSBrdm1fZGVidWdfZXhpdF9hcmNoIHBhcnQgb2Yg dGhlIGt2bV9ydW4KIHN0cnVjdHVyZSBjb250YWluaW5nIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBk ZWJ1ZyBpbmZvcm1hdGlvbi4KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2t2bS9hcm0uYyBiL2FyY2gv YXJtL2t2bS9hcm0uYwppbmRleCAwZDE3YzdiLi42ZGY0N2MxIDEwMDY0NAotLS0gYS9hcmNoL2Fy bS9rdm0vYXJtLmMKKysrIGIvYXJjaC9hcm0va3ZtL2FybS5jCkBAIC0zMDcsNiArMzA3LDcgQEAg dm9pZCBrdm1fYXJjaF92Y3B1X3B1dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAKICNkZWZpbmUg S1ZNX0dVRVNUREJHX1ZBTElEX01BU0sgKEtWTV9HVUVTVERCR19FTkFCTEUgfCAgICBcCiAJCQkg ICAgS1ZNX0dVRVNUREJHX1VTRV9TV19CUCB8IFwKKwkJCSAgICBLVk1fR1VFU1REQkdfVVNFX0hX X0JQIHwgXAogCQkJICAgIEtWTV9HVUVTVERCR19TSU5HTEVTVEVQKQogCiAvKioKQEAgLTMyNyw2 ICszMjgsMTIgQEAgaW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfc2V0X2d1ZXN0X2RlYnVnKHN0cnVj dCBrdm1fdmNwdSAqdmNwdSwKIAogCWlmIChkYmctPmNvbnRyb2wgJiBLVk1fR1VFU1REQkdfRU5B QkxFKSB7CiAJCXZjcHUtPmd1ZXN0X2RlYnVnID0gZGJnLT5jb250cm9sOworCisJCS8qIEhhcmR3 YXJlIGFzc2lzdGVkIEJyZWFrIGFuZCBXYXRjaCBwb2ludHMgKi8KKwkJaWYgKHZjcHUtPmd1ZXN0 X2RlYnVnICYgS1ZNX0dVRVNUREJHX1VTRV9IV19CUCkgeworCQkJdmNwdS0+YXJjaC5leHRlcm5h bF9kZWJ1Z19zdGF0ZSA9IGRiZy0+YXJjaDsKKwkJfQorCiAJfSBlbHNlIHsKIAkJLyogSWYgbm90 IGVuYWJsZWQgY2xlYXIgYWxsIGZsYWdzICovCiAJCXZjcHUtPmd1ZXN0X2RlYnVnID0gMDsKZGlm ZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vaHdfYnJlYWtwb2ludC5oIGIvYXJjaC9h cm02NC9pbmNsdWRlL2FzbS9od19icmVha3BvaW50LmgKaW5kZXggNTJiNDg0Yi4uYzQ1MDU1MiAx MDA2NDQKLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9od19icmVha3BvaW50LmgKKysrIGIv YXJjaC9hcm02NC9pbmNsdWRlL2FzbS9od19icmVha3BvaW50LmgKQEAgLTEzMCw2ICsxMzAsMTgg QEAgc3RhdGljIGlubGluZSB2b2lkIHB0cmFjZV9od19jb3B5X3RocmVhZChzdHJ1Y3QgdGFza19z dHJ1Y3QgKnRhc2spCiB9CiAjZW5kaWYKIAorLyogRGV0ZXJtaW5lIG51bWJlciBvZiBCUlAgcmVn aXN0ZXJzIGF2YWlsYWJsZS4gKi8KK3N0YXRpYyBpbmxpbmUgaW50IGdldF9udW1fYnJwcyh2b2lk KQoreworCXJldHVybiAoKHJlYWRfY3B1aWQoSURfQUE2NERGUjBfRUwxKSA+PiAxMikgJiAweGYp ICsgMTsKK30KKworLyogRGV0ZXJtaW5lIG51bWJlciBvZiBXUlAgcmVnaXN0ZXJzIGF2YWlsYWJs ZS4gKi8KK3N0YXRpYyBpbmxpbmUgaW50IGdldF9udW1fd3Jwcyh2b2lkKQoreworCXJldHVybiAo KHJlYWRfY3B1aWQoSURfQUE2NERGUjBfRUwxKSA+PiAyMCkgJiAweGYpICsgMTsKK30KKwogZXh0 ZXJuIHN0cnVjdCBwbXUgcGVyZl9vcHNfYnA7CiAKICNlbmRpZgkvKiBfX0tFUk5FTF9fICovCmRp ZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL2FybTY0 L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKaW5kZXggYWQ3OTJjYi4uYmEzYTFjNSAxMDA2NDQKLS0t IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCisrKyBiL2FyY2gvYXJtNjQvaW5j bHVkZS9hc20va3ZtX2hvc3QuaApAQCAtMTEzLDEyICsxMTMsMTMgQEAgc3RydWN0IGt2bV92Y3B1 X2FyY2ggewogCiAJLyoKIAkgKiBGb3IgZGVidWdnaW5nIHRoZSBndWVzdCB3ZSBuZWVkIHRvIGtl ZXAgYSBzZXQgb2YgZGVidWcKLQkgKiByZWdpc3RlcnMgd2hpY2ggY2FuIG92ZXJyaWRlIHRoZSBn dWVzdHMgb3duIGRlYnVnIHN0YXRlCisJICogcmVnaXN0ZXJzIHdoaWNoIGNhbiBvdmVycmlkZSB0 aGUgZ3Vlc3QncyBvd24gZGVidWcgc3RhdGUKIAkgKiB3aGlsZSBiZWluZyB1c2VkLiBUaGVzZSBh cmUgc2V0IHZpYSB0aGUgS1ZNX1NFVF9HVUVTVF9ERUJVRwogCSAqIGlvY3RsLgogCSAqLwogCXN0 cnVjdCBrdm1fZ3Vlc3RfZGVidWdfYXJjaCAqZGVidWdfcHRyOwogCXN0cnVjdCBrdm1fZ3Vlc3Rf ZGVidWdfYXJjaCB2Y3B1X2RlYnVnX3N0YXRlOworCXN0cnVjdCBrdm1fZ3Vlc3RfZGVidWdfYXJj aCBleHRlcm5hbF9kZWJ1Z19zdGF0ZTsKIAogCS8qIFBvaW50ZXIgdG8gaG9zdCBDUFUgY29udGV4 dCAqLwogCWt2bV9jcHVfY29udGV4dF90ICpob3N0X2NwdV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEv YXJjaC9hcm02NC9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL3Vh cGkvYXNtL2t2bS5oCmluZGV4IDg3OTY2MTAuLjE0NGVkZWUgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJt NjQvaW5jbHVkZS91YXBpL2FzbS9rdm0uaAorKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvdWFwaS9h c20va3ZtLmgKQEAgLTEyMSw3ICsxMjEsNyBAQCBzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnX2FyY2gg ewogCiBzdHJ1Y3Qga3ZtX2RlYnVnX2V4aXRfYXJjaCB7CiAJX191MzIgaHNyOwotCV9fdTY0IGZh cjsKKwlfX3U2NCBmYXI7CS8qIHVzZWQgZm9yIHdhdGNocG9pbnRzICovCiB9OwogCiBzdHJ1Y3Qg a3ZtX3N5bmNfcmVncyB7CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9od19icmVha3Bv aW50LmMgYi9hcmNoL2FybTY0L2tlcm5lbC9od19icmVha3BvaW50LmMKaW5kZXggZTdkOTM0ZC4u M2E0MWJiZiAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9rZXJuZWwvaHdfYnJlYWtwb2ludC5jCisr KyBiL2FyY2gvYXJtNjQva2VybmVsL2h3X2JyZWFrcG9pbnQuYwpAQCAtNDksMTggKzQ5LDYgQEAg c3RhdGljIERFRklORV9QRVJfQ1BVKGludCwgc3RlcHBpbmdfa2VybmVsX2JwKTsKIHN0YXRpYyBp bnQgY29yZV9udW1fYnJwczsKIHN0YXRpYyBpbnQgY29yZV9udW1fd3JwczsKIAotLyogRGV0ZXJt aW5lIG51bWJlciBvZiBCUlAgcmVnaXN0ZXJzIGF2YWlsYWJsZS4gKi8KLXN0YXRpYyBpbnQgZ2V0 X251bV9icnBzKHZvaWQpCi17Ci0JcmV0dXJuICgocmVhZF9jcHVpZChJRF9BQTY0REZSMF9FTDEp ID4+IDEyKSAmIDB4ZikgKyAxOwotfQotCi0vKiBEZXRlcm1pbmUgbnVtYmVyIG9mIFdSUCByZWdp c3RlcnMgYXZhaWxhYmxlLiAqLwotc3RhdGljIGludCBnZXRfbnVtX3dycHModm9pZCkKLXsKLQly ZXR1cm4gKChyZWFkX2NwdWlkKElEX0FBNjRERlIwX0VMMSkgPj4gMjApICYgMHhmKSArIDE7Ci19 Ci0KIGludCBod19icmVha3BvaW50X3Nsb3RzKGludCB0eXBlKQogewogCS8qCmRpZmYgLS1naXQg YS9hcmNoL2FybTY0L2t2bS9kZWJ1Zy5jIGIvYXJjaC9hcm02NC9rdm0vZGVidWcuYwppbmRleCBm NjMwZjRkLi43Y2ZjYjUzIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2t2bS9kZWJ1Zy5jCisrKyBi L2FyY2gvYXJtNjQva3ZtL2RlYnVnLmMKQEAgLTEwMywxMCArMTAzLDYgQEAgdm9pZCBrdm1fYXJt X3NldHVwX2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAkJCQlNRENSX0VMMl9URFJBIHwK IAkJCQlNRENSX0VMMl9URE9TQSk7CiAKLQkvKiBUcmFwIG9uIGFjY2VzcyB0byBkZWJ1ZyByZWdp c3RlcnM/ICovCi0JaWYgKHRyYXBfZGVidWcpCi0JCXZjcHUtPmFyY2gubWRjcl9lbDIgfD0gTURD Ul9FTDJfVERBOwotCiAJLyogSXMgR3Vlc3QgZGVidWdnaW5nIGluIGVmZmVjdD8gKi8KIAlpZiAo dmNwdS0+Z3Vlc3RfZGVidWcpIHsKIAkJdmNwdS0+YXJjaC5tZGNyX2VsMiB8PSBNRENSX0VMMl9U REU7CkBAIC0xMjksMTEgKzEyNSw0MyBAQCB2b2lkIGt2bV9hcm1fc2V0dXBfZGVidWcoc3RydWN0 IGt2bV92Y3B1ICp2Y3B1KQogCQkJKnZjcHVfY3Bzcih2Y3B1KSAmPSB+REJHX1NQU1JfU1M7CiAJ CQl2Y3B1X3N5c19yZWcodmNwdSwgTURTQ1JfRUwxKSAmPSB+REJHX01EU0NSX1NTOwogCQl9CisK KwkJLyoKKwkJICogSFcgQnJlYWsvV2F0Y2ggcG9pbnRzCisJCSAqCisJCSAqIFdlIHNpbXBseSBz d2l0Y2ggdGhlIGRlYnVnX3B0ciB0byBwb2ludCB0byBvdXIgbmV3CisJCSAqIGV4dGVybmFsX2Rl YnVnX3N0YXRlIHdoaWNoIGhhcyBiZWVuIHBvcHVsYXRlZCBieSB0aGUKKwkJICogZGVidWcgaW9j dGwuIFRoZSBleGlzdGluZyBLVk1fQVJNNjRfREVCVUdfRElSVFkKKwkJICogbWVjaGFuaXNtIGVu c3VyZXMgdGhlIHJlZ2lzdGVycyBhcmUgdXBkYXRlZCBvbiB0aGUKKwkJICogd29ybGQgc3dpdGNo LgorCQkgKi8KKwkJaWYgKHZjcHUtPmd1ZXN0X2RlYnVnICYgS1ZNX0dVRVNUREJHX1VTRV9IV19C UCkgeworCQkJLyogRW5hYmxlIGRlYnVnIGV4Y2VwdGlvbnMgZm9yIGFsbCBFTDAvRUwxICovCisJ CQl2Y3B1X3N5c19yZWcodmNwdSwgTURTQ1JfRUwxKSB8PQorCQkJCShEQkdfTURTQ1JfS0RFIHwg REJHX01EU0NSX01ERSk7CisKKwkJCXZjcHUtPmFyY2guZGVidWdfcHRyID0gJnZjcHUtPmFyY2gu ZXh0ZXJuYWxfZGVidWdfc3RhdGU7CisJCQl2Y3B1LT5hcmNoLmRlYnVnX2ZsYWdzIHw9IEtWTV9B Uk02NF9ERUJVR19ESVJUWTsKKwkJCXRyYXBfZGVidWcgPSB0cnVlOworCQl9CiAJfQorCisJLyog VHJhcCBkZWJ1ZyByZWdpc3RlciBhY2Nlc3MgKi8KKwlpZiAodHJhcF9kZWJ1ZykKKwkJdmNwdS0+ YXJjaC5tZGNyX2VsMiB8PSBNRENSX0VMMl9UREE7CiB9CiAKIHZvaWQga3ZtX2FybV9jbGVhcl9k ZWJ1ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7Ci0JaWYgKHZjcHUtPmd1ZXN0X2RlYnVnKQor CWlmICh2Y3B1LT5ndWVzdF9kZWJ1ZykgewogCQlyZXN0b3JlX2d1ZXN0X2RlYnVnX3JlZ3ModmNw dSk7CisKKwkJLyoKKwkJICogSWYgd2Ugd2VyZSB1c2luZyBIVyBkZWJ1ZyB3ZSBuZWVkIHRvIHJl c3RvcmUgdGhlCisJCSAqIGRlYnVnX3B0ciB0byB0aGUgZ3Vlc3QgZGVidWcgc3RhdGUuCisJCSAq LworCQlpZiAodmNwdS0+Z3Vlc3RfZGVidWcgJiBLVk1fR1VFU1REQkdfVVNFX0hXX0JQKQorCQkJ dmNwdS0+YXJjaC5kZWJ1Z19wdHIgPSAmdmNwdS0+YXJjaC52Y3B1X2RlYnVnX3N0YXRlOworCisJ fQogfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vaGFuZGxlX2V4aXQuYyBiL2FyY2gvYXJt NjQva3ZtL2hhbmRsZV9leGl0LmMKaW5kZXggZTlkZTEzZS4uNjhhMDc1OSAxMDA2NDQKLS0tIGEv YXJjaC9hcm02NC9rdm0vaGFuZGxlX2V4aXQuYworKysgYi9hcmNoL2FybTY0L2t2bS9oYW5kbGVf ZXhpdC5jCkBAIC0xMDMsNyArMTAzLDExIEBAIHN0YXRpYyBpbnQga3ZtX2hhbmRsZV9ndWVzdF9k ZWJ1ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4pCiAJcnVuLT5k ZWJ1Zy5hcmNoLmhzciA9IGhzcjsKIAogCXN3aXRjaCAoaHNyID4+IEVTUl9FTHhfRUNfU0hJRlQp IHsKKwljYXNlIEVTUl9FTHhfRUNfV0FUQ0hQVF9MT1c6CisJCXJ1bi0+ZGVidWcuYXJjaC5mYXIg PSB2Y3B1LT5hcmNoLmZhdWx0LmZhcl9lbDI7CisJCS8qIGZhbGwgdGhyb3VnaCAqLwogCWNhc2Ug RVNSX0VMeF9FQ19TT0ZUU1RQX0xPVzoKKwljYXNlIEVTUl9FTHhfRUNfQlJFQUtQVF9MT1c6CiAJ Y2FzZSBFU1JfRUx4X0VDX0JLUFQzMjoKIAljYXNlIEVTUl9FTHhfRUNfQlJLNjQ6CiAJCWJyZWFr OwpAQCAtMTMyLDYgKzEzNiw4IEBAIHN0YXRpYyBleGl0X2hhbmRsZV9mbiBhcm1fZXhpdF9oYW5k bGVyc1tdID0gewogCVtFU1JfRUx4X0VDX0lBQlRfTE9XXQk9IGt2bV9oYW5kbGVfZ3Vlc3RfYWJv cnQsCiAJW0VTUl9FTHhfRUNfREFCVF9MT1ddCT0ga3ZtX2hhbmRsZV9ndWVzdF9hYm9ydCwKIAlb RVNSX0VMeF9FQ19TT0ZUU1RQX0xPV109IGt2bV9oYW5kbGVfZ3Vlc3RfZGVidWcsCisJW0VTUl9F THhfRUNfV0FUQ0hQVF9MT1ddPSBrdm1faGFuZGxlX2d1ZXN0X2RlYnVnLAorCVtFU1JfRUx4X0VD X0JSRUFLUFRfTE9XXT0ga3ZtX2hhbmRsZV9ndWVzdF9kZWJ1ZywKIAlbRVNSX0VMeF9FQ19CS1BU MzJdCT0ga3ZtX2hhbmRsZV9ndWVzdF9kZWJ1ZywKIAlbRVNSX0VMeF9FQ19CUks2NF0JPSBrdm1f aGFuZGxlX2d1ZXN0X2RlYnVnLAogfTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL3Jlc2V0 LmMgYi9hcmNoL2FybTY0L2t2bS9yZXNldC5jCmluZGV4IDBiNDMyNjUuLjIxZDVhNjIgMTAwNjQ0 Ci0tLSBhL2FyY2gvYXJtNjQva3ZtL3Jlc2V0LmMKKysrIGIvYXJjaC9hcm02NC9rdm0vcmVzZXQu YwpAQCAtNTYsNiArNTYsMTIgQEAgc3RhdGljIGJvb2wgY3B1X2hhc18zMmJpdF9lbDEodm9pZCkK IAlyZXR1cm4gISEocGZyMCAmIDB4MjApOwogfQogCisvKioKKyAqIGt2bV9hcmNoX2Rldl9pb2N0 bF9jaGVja19leHRlbnNpb24KKyAqCisgKiBXZSBjdXJyZW50bHkgYXNzdW1lIHRoYXQgdGhlIG51 bWJlciBvZiBIVyByZWdpc3RlcnMgaXMgdW5pZm9ybQorICogYWNyb3NzIGFsbCBDUFVzIChzZWUg Y3B1aW5mb19zYW5pdHlfY2hlY2spLgorICovCiBpbnQga3ZtX2FyY2hfZGV2X2lvY3RsX2NoZWNr X2V4dGVuc2lvbihsb25nIGV4dCkKIHsKIAlpbnQgcjsKQEAgLTY0LDYgKzcwLDEyIEBAIGludCBr dm1fYXJjaF9kZXZfaW9jdGxfY2hlY2tfZXh0ZW5zaW9uKGxvbmcgZXh0KQogCWNhc2UgS1ZNX0NB UF9BUk1fRUwxXzMyQklUOgogCQlyID0gY3B1X2hhc18zMmJpdF9lbDEoKTsKIAkJYnJlYWs7CisJ Y2FzZSBLVk1fQ0FQX0dVRVNUX0RFQlVHX0hXX0JQUzoKKwkJciA9IGdldF9udW1fYnJwcygpOwor CQlicmVhazsKKwljYXNlIEtWTV9DQVBfR1VFU1RfREVCVUdfSFdfV1BTOgorCQlyICA9IGdldF9u dW1fd3JwcygpOworCQlicmVhazsKIAlkZWZhdWx0OgogCQlyID0gMDsKIAl9CmRpZmYgLS1naXQg YS9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmggYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmgKaW5k ZXggN2M1ZGQxMS4uZDNlNjYxZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5o CisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaApAQCAtODE5LDYgKzgxOSw4IEBAIHN0cnVj dCBrdm1fcHBjX3NtbXVfaW5mbyB7CiAjZGVmaW5lIEtWTV9DQVBfUzM5MF9JTkpFQ1RfSVJRIDEx MwogI2RlZmluZSBLVk1fQ0FQX1MzOTBfSVJRX1NUQVRFIDExNAogI2RlZmluZSBLVk1fQ0FQX1BQ Q19IV1JORyAxMTUKKyNkZWZpbmUgS1ZNX0NBUF9HVUVTVF9ERUJVR19IV19CUFMgMTE2CisjZGVm aW5lIEtWTV9DQVBfR1VFU1RfREVCVUdfSFdfV1BTIDExNwogCiAjaWZkZWYgS1ZNX0NBUF9JUlFf Uk9VVElORwogCi0tIAoyLjMuNQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18Ka3ZtYXJtIG1haWxpbmcgbGlzdAprdm1hcm1AbGlzdHMuY3MuY29sdW1iaWEu ZWR1Cmh0dHBzOi8vbGlzdHMuY3MuY29sdW1iaWEuZWR1L21haWxtYW4vbGlzdGluZm8va3ZtYXJt Cg==