From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Thompson Subject: [PATCH v4 08/13] ARM: Add KGDB/KDB FIQ debugger generic code Date: Thu, 19 Jun 2014 11:38:18 +0100 Message-ID: <1403174303-25456-9-git-send-email-daniel.thompson@linaro.org> References: <1401961994-18033-1-git-send-email-daniel.thompson@linaro.org> <1403174303-25456-1-git-send-email-daniel.thompson@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1403174303-25456-1-git-send-email-daniel.thompson@linaro.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Jason Wessel Cc: Mark Rutland , kernel@stlinux.com, kgdb-bugreport@lists.sourceforge.net, Linus Walleij , Jiri Slaby , Daniel Thompson , Dirk Behme , Russell King , Nicolas Pitre , Ian Campbell , Anton Vorontsov , Ben Dooks , "David A. Long" , linux-serial@vger.kernel.org, Catalin Marinas , kernel-team@android.com, Dave Martin , devicetree@vger.kernel.org, linaro-kernel@lists.linaro.org, Pawel Moll , patches@linaro.org, Kumar Gala , Rob Herring , John Stultz , Thomas Gleixner List-Id: devicetree@vger.kernel.org RnJvbTogQW50b24gVm9yb250c292IDxhbnRvbi52b3JvbnRzb3ZAbGluYXJvLm9yZz4KClRoZSBG SVEgZGVidWdnZXIgbWF5IGJlIHVzZWQgdG8gZGVidWcgc2l0dWF0aW9ucyB3aGVuIHRoZSBrZXJu ZWwgc3R1Y2sKaW4gdW5pbnRlcnJ1cHRhYmxlIHNlY3Rpb25zLCBlLmcuIHRoZSBrZXJuZWwgaW5m aW5pdGVseSBsb29wcyBvcgpkZWFkbG9ja2VkIGluIGFuIGludGVycnVwdCBvciB3aXRoIGludGVy cnVwdHMgZGlzYWJsZWQuCgpCeSBkZWZhdWx0IEtHREIgRklRIGlzIGRpc2FibGVkIGluIHJ1bnRp bWUsIGJ1dCBjYW4gYmUgZW5hYmxlZCB3aXRoCmtnZGJfZmlxLmVuYWJsZT0xIGtlcm5lbCBjb21t YW5kIGxpbmUgb3B0aW9uLgoKU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhbnRvbi52 b3JvbnRzb3ZAbGluYXJvLm9yZz4KU2lnbmVkLW9mZi1ieTogSm9obiBTdHVsdHogPGpvaG4uc3R1 bHR6QGxpbmFyby5vcmc+ClNpZ25lZC1vZmYtYnk6IERhbmllbCBUaG9tcHNvbiA8ZGFuaWVsLnRo b21wc29uQGxpbmFyby5vcmc+CkNjOiBSdXNzZWxsIEtpbmcgPGxpbnV4QGFybS5saW51eC5vcmcu dWs+CkNjOiBCZW4gRG9va3MgPGJlbi5kb29rc0Bjb2RldGhpbmsuY28udWs+CkNjOiBEYXZlIE1h cnRpbiA8RGF2ZS5NYXJ0aW5AYXJtLmNvbT4KLS0tCiBhcmNoL2FybS9LY29uZmlnICAgICAgICAg ICAgICAgICB8ICAgMiArCiBhcmNoL2FybS9LY29uZmlnLmRlYnVnICAgICAgICAgICB8ICAxOCAr KysrCiBhcmNoL2FybS9pbmNsdWRlL2FzbS9rZ2RiLmggICAgICB8ICAgNyArKwogYXJjaC9hcm0v a2VybmVsL01ha2VmaWxlICAgICAgICAgfCAgIDEgKwogYXJjaC9hcm0va2VybmVsL2VudHJ5LWhl YWRlci5TICAgfCAxODYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBh cmNoL2FybS9rZXJuZWwva2dkYl9maXEuYyAgICAgICB8IDEyNCArKysrKysrKysrKysrKysrKysr KysrKysrKwogYXJjaC9hcm0va2VybmVsL2tnZGJfZmlxX2VudHJ5LlMgfCAgODcgKysrKysrKysr KysrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDIzOSBpbnNlcnRpb25zKCspLCAxODYgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0va2VybmVsL2tnZGJfZmlxLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9rZXJuZWwva2dkYl9maXFfZW50cnkuUwoKZGlmZiAt LWdpdCBhL2FyY2gvYXJtL0tjb25maWcgYi9hcmNoL2FybS9LY29uZmlnCmluZGV4IDg3YjYzZmQu LjMyNzk1YzIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL0tjb25maWcKKysrIGIvYXJjaC9hcm0vS2Nv bmZpZwpAQCAtMzA0LDYgKzMwNCw3IEBAIGNob2ljZQogY29uZmlnIEFSQ0hfTVVMVElQTEFURk9S TQogCWJvb2wgIkFsbG93IG11bHRpcGxlIHBsYXRmb3JtcyB0byBiZSBzZWxlY3RlZCIKIAlkZXBl bmRzIG9uIE1NVQorCXNlbGVjdCBBUkNIX01JR0hUX0hBVkVfS0dEQl9GSVEKIAlzZWxlY3QgQVJD SF9XQU5UX09QVElPTkFMX0dQSU9MSUIKIAlzZWxlY3QgQVJNX0hBU19TR19DSEFJTgogCXNlbGVj dCBBUk1fUEFUQ0hfUEhZU19WSVJUCkBAIC0zNTQsNiArMzU1LDcgQEAgY29uZmlnIEFSQ0hfUkVB TFZJRVcKIAogY29uZmlnIEFSQ0hfVkVSU0FUSUxFCiAJYm9vbCAiQVJNIEx0ZC4gVmVyc2F0aWxl IGZhbWlseSIKKwlzZWxlY3QgQVJDSF9NSUdIVF9IQVZFX0tHREJfRklRCiAJc2VsZWN0IEFSQ0hf V0FOVF9PUFRJT05BTF9HUElPTElCCiAJc2VsZWN0IEFSTV9BTUJBCiAJc2VsZWN0IEFSTV9USU1F Ul9TUDgwNApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vS2NvbmZpZy5kZWJ1ZyBiL2FyY2gvYXJtL0tj b25maWcuZGVidWcKaW5kZXggMjY1MzZmNy4uYzczNDJiNiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0v S2NvbmZpZy5kZWJ1ZworKysgYi9hcmNoL2FybS9LY29uZmlnLmRlYnVnCkBAIC0yLDYgKzIsMjQg QEAgbWVudSAiS2VybmVsIGhhY2tpbmciCiAKIHNvdXJjZSAibGliL0tjb25maWcuZGVidWciCiAK K2NvbmZpZyBBUkNIX01JR0hUX0hBVkVfS0dEQl9GSVEKKwlib29sCisKK2NvbmZpZyBLR0RCX0ZJ UQorCWJvb2wgIktHREIgRklRIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBLR0RCX0tEQiAmJiBBUkNI X01JR0hUX0hBVkVfS0dEQl9GSVEgJiYgIVRIVU1CMl9LRVJORUwKKwlzZWxlY3QgRklRCisJaGVs cAorCSAgVGhlIEZJUSBkZWJ1Z2dlciBtYXkgYmUgdXNlZCB0byBkZWJ1ZyBzaXR1YXRpb25zIHdo ZW4gdGhlCisJICBrZXJuZWwgc3R1Y2sgaW4gdW5pbnRlcnJ1cHRhYmxlIHNlY3Rpb25zLCBlLmcu IHRoZSBrZXJuZWwKKwkgIGluZmluaXRlbHkgbG9vcHMgb3IgZGVhZGxvY2tlZCBpbiBhbiBpbnRl cnJ1cHQgb3Igd2l0aAorCSAgaW50ZXJydXB0cyBkaXNhYmxlZC4KKworCSAgQnkgZGVmYXVsdCBL R0RCIEZJUSBpcyBkaXNhYmxlZCBhdCBydW50aW1lLCBidXQgY2FuIGJlCisJICBlbmFibGVkIHdp dGgga2dkYl9maXEuZW5hYmxlPTEga2VybmVsIGNvbW1hbmQgbGluZSBvcHRpb24uCisKKwkgIElm IHVuc3VyZSwgc2F5IE4uCisKIGNvbmZpZyBBUk1fUFREVU1QCiAJYm9vbCAiRXhwb3J0IGtlcm5l bCBwYWdldGFibGUgbGF5b3V0IHRvIHVzZXJzcGFjZSB2aWEgZGVidWdmcyIKIAlkZXBlbmRzIG9u IERFQlVHX0tFUk5FTApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vaW5jbHVkZS9hc20va2dkYi5oIGIv YXJjaC9hcm0vaW5jbHVkZS9hc20va2dkYi5oCmluZGV4IDBhOWQ1ZGQuLjVkZTIxZjAxIDEwMDY0 NAotLS0gYS9hcmNoL2FybS9pbmNsdWRlL2FzbS9rZ2RiLmgKKysrIGIvYXJjaC9hcm0vaW5jbHVk ZS9hc20va2dkYi5oCkBAIC0xMSw3ICsxMSw5IEBACiAjZGVmaW5lIF9fQVJNX0tHREJfSF9fCiAK ICNpbmNsdWRlIDxsaW51eC9wdHJhY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9saW5rYWdlLmg+CiAj aW5jbHVkZSA8YXNtL29wY29kZXMuaD4KKyNpbmNsdWRlIDxhc20vZXhjZXB0aW9uLmg+CiAKIC8q CiAgKiBHREIgYXNzdW1lcyB0aGF0IHdlJ3JlIGEgdXNlciBwcm9jZXNzIGJlaW5nIGRlYnVnZ2Vk LCBzbwpAQCAtNDgsNiArNTAsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkIGFyY2hfa2dkYl9icmVh a3BvaW50KHZvaWQpCiBleHRlcm4gdm9pZCBrZ2RiX2hhbmRsZV9idXNfZXJyb3Iodm9pZCk7CiBl eHRlcm4gaW50IGtnZGJfZmF1bHRfZXhwZWN0ZWQ7CiAKK2V4dGVybiBjaGFyIGtnZGJfZmlxX2hh bmRsZXI7CitleHRlcm4gY2hhciBrZ2RiX2ZpcV9oYW5kbGVyX2VuZDsKK2FzbWxpbmthZ2Ugdm9p ZCBfX2V4Y2VwdGlvbl9pcnFfZW50cnkga2dkYl9maXFfZG9faGFuZGxlKHN0cnVjdCBwdF9yZWdz ICpyZWdzKTsKK2V4dGVybiBpbnQga2dkYl9yZWdpc3Rlcl9maXEodW5zaWduZWQgaW50IGZpcSk7 CisKICNlbmRpZiAvKiAhX19BU1NFTUJMWV9fICovCiAKIC8qCmRpZmYgLS1naXQgYS9hcmNoL2Fy bS9rZXJuZWwvTWFrZWZpbGUgYi9hcmNoL2FybS9rZXJuZWwvTWFrZWZpbGUKaW5kZXggMzhkZGQ5 Zi4uMzBlZThmMyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0va2VybmVsL01ha2VmaWxlCisrKyBiL2Fy Y2gvYXJtL2tlcm5lbC9NYWtlZmlsZQpAQCAtNjgsNiArNjgsNyBAQCBlbmRpZgogb2JqLSQoQ09O RklHX09BQklfQ09NUEFUKQkrPSBzeXNfb2FiaS1jb21wYXQubwogb2JqLSQoQ09ORklHX0FSTV9U SFVNQkVFKQkrPSB0aHVtYmVlLm8KIG9iai0kKENPTkZJR19LR0RCKQkJKz0ga2dkYi5vCitvYmot JChDT05GSUdfS0dEQl9GSVEpCQkrPSBrZ2RiX2ZpcV9lbnRyeS5vIGtnZGJfZmlxLm8KIG9iai0k KENPTkZJR19BUk1fVU5XSU5EKQkrPSB1bndpbmQubwogb2JqLSQoQ09ORklHX0hBVkVfVENNKQkJ Kz0gdGNtLm8KIG9iai0kKENPTkZJR19PRikJCSs9IGRldnRyZWUubwpkaWZmIC0tZ2l0IGEvYXJj aC9hcm0va2VybmVsL2VudHJ5LWhlYWRlci5TIGIvYXJjaC9hcm0va2VybmVsL2VudHJ5LWhlYWRl ci5TCmluZGV4IDU3MmY0YjQuLmViMmM0MjYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2tlcm5lbC9l bnRyeS1oZWFkZXIuUworKysgYi9hcmNoL2FybS9rZXJuZWwvZW50cnktaGVhZGVyLlMKQEAgLTQ3 NywxOTIgKzQ3Nyw2IEBAIHRzawkucmVxCXI5CQlAIGN1cnJlbnQgdGhyZWFkX2luZm8KICNlbmRp ZgogCS5lbmRtCiAKLSNlcnJvciAic2l6ZW9mKHN0cnVjdCBwdF9yZWdzKSBtdXN0IGJlIGEgbXVs dGlwbGUgb2YgOCIKLSNlbmRpZgotCi0JLm1hY3JvCXVzcl9lbnRyeQotIFVOV0lORCguZm5zdGFy dAkpCi0gVU5XSU5EKC5jYW50dW53aW5kCSkJQCBkb24ndCB1bndpbmQgdGhlIHVzZXIgc3BhY2UK LQlzdWIJc3AsIHNwLCAjU19GUkFNRV9TSVpFCi0gQVJNKAlzdG1pYglzcCwge3IxIC0gcjEyfQkp Ci0gVEhVTUIoCXN0bWlhCXNwLCB7cjAgLSByMTJ9CSkKLQotCWxkbWlhCXIwLCB7cjMgLSByNX0K LQlhZGQJcjAsIHNwLCAjU19QQwkJQCBoZXJlIGZvciBpbnRlcmxvY2sgYXZvaWRhbmNlCi0JbW92 CXI2LCAjLTEJCQlAICAiIiAgIiIgICAgICIiICAgICAgICAiIgotCi0Jc3RyCXIzLCBbc3BdCQlA IHNhdmUgdGhlICJyZWFsIiByMCBjb3BpZWQKLQkJCQkJQCBmcm9tIHRoZSBleGNlcHRpb24gc3Rh Y2sKLQotCUAKLQlAIFdlIGFyZSBub3cgcmVhZHkgdG8gZmlsbCBpbiB0aGUgcmVtYWluaW5nIGJs YW5rcyBvbiB0aGUgc3RhY2s6Ci0JQAotCUAgIHI0IC0gbHJfPGV4Y2VwdGlvbj4sIGFscmVhZHkg Zml4ZWQgdXAgZm9yIGNvcnJlY3QgcmV0dXJuL3Jlc3RhcnQKLQlAICByNSAtIHNwc3JfPGV4Y2Vw dGlvbj4KLQlAICByNiAtIG9yaWdfcjAgKHNlZSBwdF9yZWdzIGRlZmluaXRpb24gaW4gcHRyYWNl LmgpCi0JQAotCUAgQWxzbywgc2VwYXJhdGVseSBzYXZlIHNwX3VzciBhbmQgbHJfdXNyCi0JQAot CXN0bWlhCXIwLCB7cjQgLSByNn0KLSBBUk0oCXN0bWRiCXIwLCB7c3AsIGxyfV4JCQkpCi0gVEhV TUIoCXN0b3JlX3VzZXJfc3BfbHIgcjAsIHIxLCBTX1NQIC0gU19QQwkpCi0KLQlACi0JQCBFbmFi bGUgdGhlIGFsaWdubWVudCB0cmFwIHdoaWxlIGluIGtlcm5lbCBtb2RlCi0JQAotCWFsaWdubWVu dF90cmFwIHIwLCAuTENjcmFsaWduCi0KLQlACi0JQCBDbGVhciBGUCB0byBtYXJrIHRoZSBmaXJz dCBzdGFjayBmcmFtZQotCUAKLQl6ZXJvX2ZwCi0KLSNpZmRlZiBDT05GSUdfSVJRU09GRl9UUkFD RVIKLQlibAl0cmFjZV9oYXJkaXJxc19vZmYKLSNlbmRpZgotCWN0X3VzZXJfZXhpdCBzYXZlID0g MAotCS5lbmRtCi0KLQkubWFjcm8Ja3VzZXJfY21weGNoZ19jaGVjawotI2lmICFkZWZpbmVkKENP TkZJR19DUFVfMzJ2NkspICYmIGRlZmluZWQoQ09ORklHX0tVU0VSX0hFTFBFUlMpICYmIFwKLSAg ICAhZGVmaW5lZChDT05GSUdfTkVFRFNfU1lTQ0FMTF9GT1JfQ01QWENIRykKLSNpZm5kZWYgQ09O RklHX01NVQotI3dhcm5pbmcgIk5QVEwgb24gbm9uIE1NVSBuZWVkcyBmaXhpbmciCi0jZWxzZQot CUAgTWFrZSBzdXJlIG91ciB1c2VyIHNwYWNlIGF0b21pYyBoZWxwZXIgaXMgcmVzdGFydGVkCi0J QCBpZiBpdCB3YXMgaW50ZXJydXB0ZWQgaW4gYSBjcml0aWNhbCByZWdpb24uICBIZXJlIHdlCi0J QCBwZXJmb3JtIGEgcXVpY2sgdGVzdCBpbmxpbmUgc2luY2UgaXQgc2hvdWxkIGJlIGZhbHNlCi0J QCA5OS45OTk5JSBvZiB0aGUgdGltZS4gIFRoZSByZXN0IGlzIGRvbmUgb3V0IG9mIGxpbmUuCi0J Y21wCXI0LCAjVEFTS19TSVpFCi0JYmxocwlrdXNlcl9jbXB4Y2hnNjRfZml4dXAKLSNlbmRpZgot I2VuZGlmCi0JLmVuZG0KLQotI2Vycm9yICJzaXplb2Yoc3RydWN0IHB0X3JlZ3MpIG11c3QgYmUg YSBtdWx0aXBsZSBvZiA4IgotI2VuZGlmCi0KLQkubWFjcm8JdXNyX2VudHJ5Ci0gVU5XSU5EKC5m bnN0YXJ0CSkKLSBVTldJTkQoLmNhbnR1bndpbmQJKQlAIGRvbid0IHVud2luZCB0aGUgdXNlciBz cGFjZQotCXN1YglzcCwgc3AsICNTX0ZSQU1FX1NJWkUKLSBBUk0oCXN0bWliCXNwLCB7cjEgLSBy MTJ9CSkKLSBUSFVNQigJc3RtaWEJc3AsIHtyMCAtIHIxMn0JKQotCi0JbGRtaWEJcjAsIHtyMyAt IHI1fQotCWFkZAlyMCwgc3AsICNTX1BDCQlAIGhlcmUgZm9yIGludGVybG9jayBhdm9pZGFuY2UK LQltb3YJcjYsICMtMQkJCUAgICIiICAiIiAgICAgIiIgICAgICAgICIiCi0KLQlzdHIJcjMsIFtz cF0JCUAgc2F2ZSB0aGUgInJlYWwiIHIwIGNvcGllZAotCQkJCQlAIGZyb20gdGhlIGV4Y2VwdGlv biBzdGFjawotCi0JQAotCUAgV2UgYXJlIG5vdyByZWFkeSB0byBmaWxsIGluIHRoZSByZW1haW5p bmcgYmxhbmtzIG9uIHRoZSBzdGFjazoKLQlACi0JQCAgcjQgLSBscl88ZXhjZXB0aW9uPiwgYWxy ZWFkeSBmaXhlZCB1cCBmb3IgY29ycmVjdCByZXR1cm4vcmVzdGFydAotCUAgIHI1IC0gc3Bzcl88 ZXhjZXB0aW9uPgotCUAgIHI2IC0gb3JpZ19yMCAoc2VlIHB0X3JlZ3MgZGVmaW5pdGlvbiBpbiBw dHJhY2UuaCkKLQlACi0JQCBBbHNvLCBzZXBhcmF0ZWx5IHNhdmUgc3BfdXNyIGFuZCBscl91c3IK LQlACi0Jc3RtaWEJcjAsIHtyNCAtIHI2fQotIEFSTSgJc3RtZGIJcjAsIHtzcCwgbHJ9XgkJCSkK LSBUSFVNQigJc3RvcmVfdXNlcl9zcF9sciByMCwgcjEsIFNfU1AgLSBTX1BDCSkKLQotCUAKLQlA IEVuYWJsZSB0aGUgYWxpZ25tZW50IHRyYXAgd2hpbGUgaW4ga2VybmVsIG1vZGUKLQlACi0JYWxp Z25tZW50X3RyYXAgcjAsIC5MQ2NyYWxpZ24KLQotCUAKLQlAIENsZWFyIEZQIHRvIG1hcmsgdGhl IGZpcnN0IHN0YWNrIGZyYW1lCi0JQAotCXplcm9fZnAKLQotI2lmZGVmIENPTkZJR19JUlFTT0ZG X1RSQUNFUgotCWJsCXRyYWNlX2hhcmRpcnFzX29mZgotI2VuZGlmCi0JY3RfdXNlcl9leGl0IHNh dmUgPSAwCi0JLmVuZG0KLQotCS5tYWNybwlrdXNlcl9jbXB4Y2hnX2NoZWNrCi0jaWYgIWRlZmlu ZWQoQ09ORklHX0NQVV8zMnY2SykgJiYgZGVmaW5lZChDT05GSUdfS1VTRVJfSEVMUEVSUykgJiYg XAotICAgICFkZWZpbmVkKENPTkZJR19ORUVEU19TWVNDQUxMX0ZPUl9DTVBYQ0hHKQotI2lmbmRl ZiBDT05GSUdfTU1VCi0jd2FybmluZyAiTlBUTCBvbiBub24gTU1VIG5lZWRzIGZpeGluZyIKLSNl bHNlCi0JQCBNYWtlIHN1cmUgb3VyIHVzZXIgc3BhY2UgYXRvbWljIGhlbHBlciBpcyByZXN0YXJ0 ZWQKLQlAIGlmIGl0IHdhcyBpbnRlcnJ1cHRlZCBpbiBhIGNyaXRpY2FsIHJlZ2lvbi4gIEhlcmUg d2UKLQlAIHBlcmZvcm0gYSBxdWljayB0ZXN0IGlubGluZSBzaW5jZSBpdCBzaG91bGQgYmUgZmFs c2UKLQlAIDk5Ljk5OTklIG9mIHRoZSB0aW1lLiAgVGhlIHJlc3QgaXMgZG9uZSBvdXQgb2YgbGlu ZS4KLQljbXAJcjQsICNUQVNLX1NJWkUKLQlibGhzCWt1c2VyX2NtcHhjaGc2NF9maXh1cAotI2Vu ZGlmCi0jZW5kaWYKLQkuZW5kbQotCi0jZXJyb3IgInNpemVvZihzdHJ1Y3QgcHRfcmVncykgbXVz dCBiZSBhIG11bHRpcGxlIG9mIDgiCi0jZW5kaWYKLQotCS5tYWNybwl1c3JfZW50cnkKLSBVTldJ TkQoLmZuc3RhcnQJKQotIFVOV0lORCguY2FudHVud2luZAkpCUAgZG9uJ3QgdW53aW5kIHRoZSB1 c2VyIHNwYWNlCi0Jc3ViCXNwLCBzcCwgI1NfRlJBTUVfU0laRQotIEFSTSgJc3RtaWIJc3AsIHty MSAtIHIxMn0JKQotIFRIVU1CKAlzdG1pYQlzcCwge3IwIC0gcjEyfQkpCi0KLQlsZG1pYQlyMCwg e3IzIC0gcjV9Ci0JYWRkCXIwLCBzcCwgI1NfUEMJCUAgaGVyZSBmb3IgaW50ZXJsb2NrIGF2b2lk YW5jZQotCW1vdglyNiwgIy0xCQkJQCAgIiIgICIiICAgICAiIiAgICAgICAgIiIKLQotCXN0cgly MywgW3NwXQkJQCBzYXZlIHRoZSAicmVhbCIgcjAgY29waWVkCi0JCQkJCUAgZnJvbSB0aGUgZXhj ZXB0aW9uIHN0YWNrCi0KLQlACi0JQCBXZSBhcmUgbm93IHJlYWR5IHRvIGZpbGwgaW4gdGhlIHJl bWFpbmluZyBibGFua3Mgb24gdGhlIHN0YWNrOgotCUAKLQlAICByNCAtIGxyXzxleGNlcHRpb24+ LCBhbHJlYWR5IGZpeGVkIHVwIGZvciBjb3JyZWN0IHJldHVybi9yZXN0YXJ0Ci0JQCAgcjUgLSBz cHNyXzxleGNlcHRpb24+Ci0JQCAgcjYgLSBvcmlnX3IwIChzZWUgcHRfcmVncyBkZWZpbml0aW9u IGluIHB0cmFjZS5oKQotCUAKLQlAIEFsc28sIHNlcGFyYXRlbHkgc2F2ZSBzcF91c3IgYW5kIGxy X3VzcgotCUAKLQlzdG1pYQlyMCwge3I0IC0gcjZ9Ci0gQVJNKAlzdG1kYglyMCwge3NwLCBscn1e CQkJKQotIFRIVU1CKAlzdG9yZV91c2VyX3NwX2xyIHIwLCByMSwgU19TUCAtIFNfUEMJKQotCi0J QAotCUAgRW5hYmxlIHRoZSBhbGlnbm1lbnQgdHJhcCB3aGlsZSBpbiBrZXJuZWwgbW9kZQotCUAK LQlhbGlnbm1lbnRfdHJhcCByMAotCi0JQAotCUAgQ2xlYXIgRlAgdG8gbWFyayB0aGUgZmlyc3Qg c3RhY2sgZnJhbWUKLQlACi0JemVyb19mcAotCi0jaWZkZWYgQ09ORklHX0lSUVNPRkZfVFJBQ0VS Ci0JYmwJdHJhY2VfaGFyZGlycXNfb2ZmCi0jZW5kaWYKLQljdF91c2VyX2V4aXQgc2F2ZSA9IDAK LQkuZW5kbQotCi0JLm1hY3JvCWt1c2VyX2NtcHhjaGdfY2hlY2sKLSNpZiAhZGVmaW5lZChDT05G SUdfQ1BVXzMydjZLKSAmJiBkZWZpbmVkKENPTkZJR19LVVNFUl9IRUxQRVJTKSAmJiBcCi0gICAg IWRlZmluZWQoQ09ORklHX05FRURTX1NZU0NBTExfRk9SX0NNUFhDSEcpCi0jaWZuZGVmIENPTkZJ R19NTVUKLSN3YXJuaW5nICJOUFRMIG9uIG5vbiBNTVUgbmVlZHMgZml4aW5nIgotI2Vsc2UKLQlA IE1ha2Ugc3VyZSBvdXIgdXNlciBzcGFjZSBhdG9taWMgaGVscGVyIGlzIHJlc3RhcnRlZAotCUAg aWYgaXQgd2FzIGludGVycnVwdGVkIGluIGEgY3JpdGljYWwgcmVnaW9uLiAgSGVyZSB3ZQotCUAg cGVyZm9ybSBhIHF1aWNrIHRlc3QgaW5saW5lIHNpbmNlIGl0IHNob3VsZCBiZSBmYWxzZQotCUAg OTkuOTk5OSUgb2YgdGhlIHRpbWUuICBUaGUgcmVzdCBpcyBkb25lIG91dCBvZiBsaW5lLgotCWNt cAlyNCwgI1RBU0tfU0laRQotCWJsaHMJa3VzZXJfY21weGNoZzY0X2ZpeHVwCi0jZW5kaWYKLSNl bmRpZgotCS5lbmRtCi0KIC8qCiAgKiBWZWN0b3Igc3R1YnMgbWFjcm8uCiAgKi8KZGlmZiAtLWdp dCBhL2FyY2gvYXJtL2tlcm5lbC9rZ2RiX2ZpcS5jIGIvYXJjaC9hcm0va2VybmVsL2tnZGJfZmlx LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJmNDg3MwotLS0gL2Rldi9u dWxsCisrKyBiL2FyY2gvYXJtL2tlcm5lbC9rZ2RiX2ZpcS5jCkBAIC0wLDAgKzEsMTI0IEBACisv KgorICogS0dEQiBGSVEKKyAqCisgKiBDb3B5cmlnaHQgMjAxMCBHb29nbGUsIEluYy4KKyAqCQkg IEFydmUgSGrDuG5uZXbDpWcgPGFydmVAYW5kcm9pZC5jb20+CisgKgkJICBDb2xpbiBDcm9zcyA8 Y2Nyb3NzQGFuZHJvaWQuY29tPgorICogQ29weXJpZ2h0IDIwMTIgTGluYXJvIEx0ZC4KKyAqCQkg IEFudG9uIFZvcm9udHNvdiA8YW50b24udm9yb250c292QGxpbmFyby5vcmc+CisgKgorICogVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZAorICogYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbi4KKyAqLworCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8 bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4 L3NsYWIuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgorI2luY2x1ZGUgPGxpbnV4L2hhcmRp cnEuaD4KKyNpbmNsdWRlIDxsaW51eC9hdG9taWMuaD4KKyNpbmNsdWRlIDxsaW51eC9rZGIuaD4K KyNpbmNsdWRlIDxsaW51eC9rZ2RiLmg+CisjaW5jbHVkZSA8YXNtL2ZpcS5oPgorI2luY2x1ZGUg PGFzbS9leGNlcHRpb24uaD4KKworc3RhdGljIGludCBrZ2RiX2ZpcV9lbmFibGVkOworbW9kdWxl X3BhcmFtX25hbWVkKGVuYWJsZSwga2dkYl9maXFfZW5hYmxlZCwgaW50LCAwNjAwKTsKK01PRFVM RV9QQVJNX0RFU0MoZW5hYmxlLCAic2V0IHRvIDEgdG8gZW5hYmxlIEZJUSBLR0RCIik7CisKK3N0 YXRpYyB1bnNpZ25lZCBpbnQga2dkYl9maXE7CisKK2FzbWxpbmthZ2Ugdm9pZCBfX2V4Y2VwdGlv bl9pcnFfZW50cnkga2dkYl9maXFfZG9faGFuZGxlKHN0cnVjdCBwdF9yZWdzICpyZWdzKQorewor CWlmIChrZ2RiX25taV9wb2xsX2tub2NrKCkpIHsKKwkJbm1pX2VudGVyKCk7CisJCWtnZGJfaGFu ZGxlX2V4Y2VwdGlvbigxLCAwLCAwLCByZWdzKTsKKwkJbm1pX2V4aXQoKTsKKwl9CisKKwllb2lf ZmlxKGtnZGJfZmlxKTsKK30KKworc3RhdGljIHN0cnVjdCBmaXFfaGFuZGxlciBrZ2RiX2ZpcV9k ZXNjID0geworCS5uYW1lID0gImtnZGIiLAorfTsKKworc3RhdGljIGxvbmcga2dkYl9maXFfc2V0 dXBfc3RhY2sodm9pZCAqaW5mbykKK3sKKwlzdHJ1Y3QgcHRfcmVncyByZWdzOworCisJcmVncy5B Uk1fc3AgPSBfX2dldF9mcmVlX3BhZ2VzKEdGUF9LRVJORUwsIFRIUkVBRF9TSVpFX09SREVSKSAr CisJCQlUSFJFQURfU1RBUlRfU1A7CisJV0FSTl9PTighcmVncy5BUk1fc3ApOworCisJc2V0X2Zp cV9yZWdzKCZyZWdzKTsKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBrZ2RiX2ZpcV9lbmFibGVf bm1pIC0gTWFuYWdlIE5NSS10cmlnZ2VyZWQgZW50cnkgdG8gS0dEQgorICogQG9uOiBGbGFnIHRv IGVpdGhlciBlbmFibGUgb3IgZGlzYWJsZSBhbiBOTUkKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIG1h bmFnZXMgTk1JcyB0aGF0IHVzdWFsbHkgY2F1c2UgS0dEQiB0byBlbnRlci4gVGhhdCBpcywgbm90 CisgKiBhbGwgTk1JcyBzaG91bGQgYmUgZW5hYmxlZCBvciBkaXNhYmxlZCwgYnV0IG9ubHkgdGhv c2UgdGhhdCBpc3N1ZQorICoga2dkYl9oYW5kbGVfZXhjZXB0aW9uKCkuCisgKgorICogVGhlIGNh bGwgY291bnRzIGRpc2FibGUgcmVxdWVzdHMsIGFuZCB0aHVzIGFsbG93cyB0byBuZXN0IGRpc2Fi bGVzLiBCdXQKKyAqIHRyeWluZyB0byBlbmFibGUgYWxyZWFkeSBlbmFibGVkIE5NSSBpcyBhbiBl cnJvci4KKyAqLworc3RhdGljIHZvaWQga2dkYl9maXFfZW5hYmxlX25taShib29sIG9uKQorewor CXN0YXRpYyBhdG9taWNfdCBjbnQ7CisJaW50IHJldDsKKworCXJldCA9IGF0b21pY19hZGRfcmV0 dXJuKG9uID8gMSA6IC0xLCAmY250KTsKKwlpZiAocmV0ID4gMSAmJiBvbikgeworCQkvKgorCQkg KiBUaGVyZSBzaG91bGQgYmUgb25seSBvbmUgaW5zdGFuY2UgdGhhdCBjYWxscyB0aGlzIGZ1bmN0 aW9uCisJCSAqIGluICJlbmFibGUsIGRpc2FibGUiIG9yZGVyLiBBbGwgb3RoZXIgdXNlcnMgbXVz dCBjYWxsCisJCSAqIGRpc2FibGUgZmlyc3QsIHRoZW4gZW5hYmxlLiBJZiBub3QsIHNvbWV0aGlu ZyBpcyB3cm9uZy4KKwkJICovCisJCVdBUk5fT04oMSk7CisJCXJldHVybjsKKwl9CisKKwlpZiAo cmV0ID4gMCkKKwkJZW5hYmxlX2ZpcShrZ2RiX2ZpcSk7CisJZWxzZQorCQlkaXNhYmxlX2ZpcShr Z2RiX2ZpcSk7Cit9CisKK2ludCBrZ2RiX3JlZ2lzdGVyX2ZpcSh1bnNpZ25lZCBpbnQgZmlxKQor eworCWludCBlcnI7CisJaW50IGNwdTsKKworCWlmICgha2dkYl9maXFfZW5hYmxlZCkKKwkJcmV0 dXJuIC1FTk9ERVY7CisKKwlpZiAoIWhhc19maXEoZmlxKSkgeworCQlwcl93YXJuKAorCQkgICAg IiVzOiBDYW5ub3QgcmVnaXN0ZXIgJXUgKG5vIEZJUSB3aXRoIHRoaXMgbnVtYmVyKVxuIiwKKwkJ ICAgIF9fZnVuY19fLCBmaXEpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlrZ2RiX2ZpcSA9 IGZpcTsKKworCWVyciA9IGNsYWltX2ZpcSgma2dkYl9maXFfZGVzYyk7CisJaWYgKGVycikgewor CQlwcl93YXJuKCIlczogdW5hYmxlIHRvIGNsYWltIGZpcSIsIF9fZnVuY19fKTsKKwkJcmV0dXJu IGVycjsKKwl9CisKKwlmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KQorCQl3b3JrX29uX2NwdShj cHUsIGtnZGJfZmlxX3NldHVwX3N0YWNrLCBOVUxMKTsKKworCXNldF9maXFfaGFuZGxlcigma2dk Yl9maXFfaGFuZGxlciwKKwkJCSZrZ2RiX2ZpcV9oYW5kbGVyX2VuZCAtICZrZ2RiX2ZpcV9oYW5k bGVyKTsKKworCWFyY2hfa2dkYl9vcHMuZW5hYmxlX25taSA9IGtnZGJfZmlxX2VuYWJsZV9ubWk7 CisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9hcmNoL2FybS9rZXJuZWwva2dkYl9maXFfZW50 cnkuUyBiL2FyY2gvYXJtL2tlcm5lbC9rZ2RiX2ZpcV9lbnRyeS5TCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmQ2YmVjY2EKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9r ZXJuZWwva2dkYl9maXFfZW50cnkuUwpAQCAtMCwwICsxLDg3IEBACisvKgorICogS0dEQiBGSVEg ZW50cnkKKyAqCisgKiBDb3B5cmlnaHQgMTk5NiwxOTk3LDE5OTggUnVzc2VsbCBLaW5nLgorICog Q29weXJpZ2h0IDIwMTIgTGluYXJvIEx0ZC4KKyAqCQkgIEFudG9uIFZvcm9udHNvdiA8YW50b24u dm9yb250c292QGxpbmFyby5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzIHB1 Ymxpc2hlZAorICogYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjaW5j bHVkZSA8bGludXgvbGlua2FnZS5oPgorI2luY2x1ZGUgPGFzbS9hc3NlbWJsZXIuaD4KKyNpbmNs dWRlIDxhc20vbWVtb3J5Lmg+CisjaW5jbHVkZSA8YXNtL3Vud2luZC5oPgorI2luY2x1ZGUgImVu dHJ5LWhlYWRlci5TIgorCisJLnRleHQKKworQCBUaGlzIGlzIG5lZWRlZCBmb3IgdXNyX2VudHJ5 L2FsaWdubWVudF90cmFwCisuTENjcmFsaWduOgorCS5sb25nCWNyX2FsaWdubWVudAorLkxDZG9o YW5kbGU6CisJLmxvbmcJa2dkYl9maXFfZG9faGFuZGxlCisKKwkubWFjcm8JZmlxX2hhbmRsZXIK KwlsZHIJcjEsID0uTENkb2hhbmRsZQorCW1vdglyMCwgc3AKKwlhZHIJbHIsIEJTWU0oOTk5N2Yp CisJbGRyCXBjLCBbcjFdCis5OTk3OgorCS5lbmRtCisKKwkuYWxpZ24JNQorX19maXFfc3ZjOgor CXN2Y19lbnRyeQorCWZpcV9oYW5kbGVyCisJbW92CXIwLCBzcAorCWxkbWliCXIwLCB7cjEgLSBy MTR9CisJbXNyCWNwc3JfYywgI0ZJUV9NT0RFIHwgUFNSX0lfQklUIHwgUFNSX0ZfQklUCisJYWRk CXI4LCByMCwgI1NfUEMKKwlsZHIJcjksIFtyMCwgI1NfUFNSXQorCW1zcglzcHNyX2N4c2YsIHI5 CisJbGRyCXIwLCBbcjAsICNTX1IwXQorCWxkbWlhCXI4LCB7cGN9XgorCisgVU5XSU5EKC5mbmVu ZAkJKQorRU5EUFJPQyhfX2ZpcV9zdmMpCisJLmx0b3JnCisKKwkuYWxpZ24JNQorX19maXFfdXNy OgorCXVzcl9lbnRyeQorCWt1c2VyX2NtcHhjaGdfY2hlY2sKKwlmaXFfaGFuZGxlcgorCWdldF90 aHJlYWRfaW5mbyB0c2sKKwltb3YJd2h5LCAjMAorCWIJcmV0X3RvX3VzZXJfZnJvbV9pcnEKKyBV TldJTkQoLmZuZW5kCQkpCitFTkRQUk9DKF9fZmlxX3VzcikKKwkubHRvcmcKKworCS5nbG9iYWwg a2dkYl9maXFfaGFuZGxlcgora2dkYl9maXFfaGFuZGxlcjoKKworCXZlY3Rvcl9zdHViCWZpcSwg RklRX01PREUsIDQKKworCS5sb25nCV9fZmlxX3VzcgkJCUAgIDAgIChVU1JfMjYgLyBVU1JfMzIp CisJLmxvbmcJX19maXFfc3ZjCQkJQCAgMSAgKEZJUV8yNiAvIEZJUV8zMikKKwkubG9uZwlfX2Zp cV9zdmMJCQlAICAyICAoSVJRXzI2IC8gSVJRXzMyKQorCS5sb25nCV9fZmlxX3N2YwkJCUAgIDMg IChTVkNfMjYgLyBTVkNfMzIpCisJLmxvbmcJX19maXFfc3ZjCQkJQCAgNAorCS5sb25nCV9fZmlx X3N2YwkJCUAgIDUKKwkubG9uZwlfX2ZpcV9zdmMJCQlAICA2CisJLmxvbmcJX19maXFfc3ZjCQkJ QCAgNworCS5sb25nCV9fZmlxX3N2YwkJCUAgIDgKKwkubG9uZwlfX2ZpcV9zdmMJCQlAICA5CisJ LmxvbmcJX19maXFfc3ZjCQkJQCAgYQorCS5sb25nCV9fZmlxX3N2YwkJCUAgIGIKKwkubG9uZwlf X2ZpcV9zdmMJCQlAICBjCisJLmxvbmcJX19maXFfc3ZjCQkJQCAgZAorCS5sb25nCV9fZmlxX3N2 YwkJCUAgIGUKKwkubG9uZwlfX2ZpcV9zdmMJCQlAICBmCisKKwkuZ2xvYmFsIGtnZGJfZmlxX2hh bmRsZXJfZW5kCitrZ2RiX2ZpcV9oYW5kbGVyX2VuZDoKLS0gCjEuOS4zCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWls aW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0 cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=