From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [V3,2/2] rasdaemon: add support for ARM events From: Mauro Carvalho Chehab Message-Id: <20170811175258.348b0d31@vento.lan> Date: Fri, 11 Aug 2017 17:52:58 -0300 To: Tyler Baicar Cc: linux-edac@vger.kernel.org, astone@redhat.com, fu.wei@linaro.org, shiju.jose@huawei.com List-ID: RW0gTW9uLCAxMiBKdW4gMjAxNyAxNjoxNjowNSAtMDYwMApUeWxlciBCYWljYXIgPHRiYWljYXJA Y29kZWF1cm9yYS5vcmc+IGVzY3JldmV1OgoKPiBBZGQgc3VwcG9ydCB0byBoYW5kbGUgdGhlIEFS TSBrZXJuZWwgdHJhY2UgZXZlbnRzCj4gd2hpY2ggY292ZXIgUkFTIEFSTSBwcm9jZXNzb3IgZXJy b3JzLgoKSSdtIGdldHRpbmcgdGhpcyBnY2MgNy4xIHdhcm5pbmcgd2l0aCB0aGlzIHBhdGNoIGFw cGxpZWQ6CgpyYXMtcmVjb3JkLmM6MjI3OjQxOiB3YXJuaW5nOiDigJhhcm1fZXZlbnRfdGFi4oCZ IGRlZmluZWQgYnV0IG5vdCB1c2VkIFstV3VudXNlZC1jb25zdC12YXJpYWJsZT1dCiBzdGF0aWMg Y29uc3Qgc3RydWN0IGRiX3RhYmxlX2Rlc2NyaXB0b3IgYXJtX2V2ZW50X3RhYiA9IHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+fn5+CgoKPiAKPiBT aWduZWQtb2ZmLWJ5OiBUeWxlciBCYWljYXIgPHRiYWljYXJAY29kZWF1cm9yYS5vcmc+Cj4gLS0t Cj4gIE1ha2VmaWxlLmFtICAgICAgIHwgIDMgKysKPiAgY29uZmlndXJlLmFjICAgICAgfCAgOSAr KysrKysKPiAgcmFzLWFybS1oYW5kbGVyLmMgfCA5MCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIHJhcy1hcm0taGFuZGxlci5oIHwgMjQg KysrKysrKysrKysrKysrCj4gIHJhcy1ldmVudHMuYyAgICAgIHwgMTUgKysrKysrKysrKwo+ICBy YXMtcmVjb3JkLmMgICAgICB8IDUyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4g IHJhcy1yZWNvcmQuaCAgICAgIHwgMTYgKysrKysrKysrKwo+ICByYXMtcmVwb3J0LmMgICAgICB8 IDc1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgcmFz LXJlcG9ydC5oICAgICAgfCAgNSArKystCj4gIDkgZmlsZXMgY2hhbmdlZCwgMjg4IGluc2VydGlv bnMoKyksIDEgZGVsZXRpb24oLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHJhcy1hcm0taGFuZGxl ci5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCByYXMtYXJtLWhhbmRsZXIuaAo+IAo+IGRpZmYgLS1n aXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCj4gaW5kZXggMWJjMjVlNC4uODM4NjhlMiAx MDA2NDQKPiAtLS0gYS9NYWtlZmlsZS5hbQo+ICsrKyBiL01ha2VmaWxlLmFtCj4gQEAgLTI3LDYg KzI3LDkgQEAgZW5kaWYKPiAgaWYgV0lUSF9OT05fU1RBTkRBUkQKPiAgICAgcmFzZGFlbW9uX1NP VVJDRVMgKz0gcmFzLW5vbi1zdGFuZGFyZC1oYW5kbGVyLmMKPiAgZW5kaWYKPiAraWYgV0lUSF9B Uk0KPiArICAgcmFzZGFlbW9uX1NPVVJDRVMgKz0gcmFzLWFybS1oYW5kbGVyLmMKPiArZW5kaWYK PiAgaWYgV0lUSF9NQ0UKPiAgICAgcmFzZGFlbW9uX1NPVVJDRVMgKz0gcmFzLW1jZS1oYW5kbGVy LmMgbWNlLWludGVsLmMgbWNlLWFtZC1rOC5jIFwKPiAgCQkJbWNlLWludGVsLXA0LXA2LmMgbWNl LWludGVsLW5laGFsZW0uYyBcCj4gZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3Vy ZS5hYwo+IGluZGV4IDJhZGI3OTguLjY0OGEzYWMgMTAwNjQ0Cj4gLS0tIGEvY29uZmlndXJlLmFj Cj4gKysrIGIvY29uZmlndXJlLmFjCj4gQEAgLTUzLDYgKzUzLDE1IEBAIEFTX0lGKFt0ZXN0ICJ4 JGVuYWJsZV9ub25fc3RhbmRhcmQiID0gInh5ZXMiXSwgWwo+ICBdKQo+ICBBTV9DT05ESVRJT05B TChbV0lUSF9OT05fU1RBTkRBUkRdLCBbdGVzdCB4JGVuYWJsZV9ub25fc3RhbmRhcmQgPSB4eWVz XSkKPiAgCj4gK0FDX0FSR19FTkFCTEUoW2FybV0sCj4gKyAgICBBU19IRUxQX1NUUklORyhbLS1l bmFibGUtYXJtXSwgW2VuYWJsZSBBUk0gZXZlbnRzIChjdXJyZW50bHkgZXhwZXJpbWVudGFsKV0p KQo+ICsKPiArQVNfSUYoW3Rlc3QgIngkZW5hYmxlX2FybSIgPSAieHllcyJdLCBbCj4gKyAgQUNf REVGSU5FKEhBVkVfQVJNLDEsImhhdmUgQVJNIGV2ZW50cyBjb2xsZWN0IikKPiArICBBQ19TVUJT VChbV0lUSF9BUk1dKQo+ICtdKQo+ICtBTV9DT05ESVRJT05BTChbV0lUSF9BUk1dLCBbdGVzdCB4 JGVuYWJsZV9hcm0gPSB4eWVzXSkKPiArCj4gIEFDX0FSR19FTkFCTEUoW21jZV0sCj4gICAgICBB U19IRUxQX1NUUklORyhbLS1lbmFibGUtbWNlXSwgW2VuYWJsZSBNQ0UgZXZlbnRzIChjdXJyZW50 bHkgZXhwZXJpbWVudGFsKV0pKQo+ICAKPiBkaWZmIC0tZ2l0IGEvcmFzLWFybS1oYW5kbGVyLmMg Yi9yYXMtYXJtLWhhbmRsZXIuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAw MC4uYTc2NDcwZAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9yYXMtYXJtLWhhbmRsZXIuYwo+IEBA IC0wLDAgKzEsOTAgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAyMDE2LCBUaGUgTGludXgg Rm91bmRhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK PiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSB2ZXJzaW9uIDIgYW5kCj4gKyAqIG9ubHkgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+ICsKPiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAqIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4g KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKPiArICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8c3RkaW8uaD4KPiArI2luY2x1ZGUgPHN0ZGxpYi5o Pgo+ICsjaW5jbHVkZSA8c3RyaW5nLmg+Cj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4KPiArI2luY2x1 ZGUgImxpYnRyYWNlL2tidWZmZXIuaCIKPiArI2luY2x1ZGUgInJhcy1hcm0taGFuZGxlci5oIgo+ ICsjaW5jbHVkZSAicmFzLXJlY29yZC5oIgo+ICsjaW5jbHVkZSAicmFzLWxvZ2dlci5oIgo+ICsj aW5jbHVkZSAicmFzLXJlcG9ydC5oIgo+ICsKPiAraW50IHJhc19hcm1fZXZlbnRfaGFuZGxlcihz dHJ1Y3QgdHJhY2Vfc2VxICpzLAo+ICsJCQkgc3RydWN0IHBldmVudF9yZWNvcmQgKnJlY29yZCwK PiArCQkJIHN0cnVjdCBldmVudF9mb3JtYXQgKmV2ZW50LCB2b2lkICpjb250ZXh0KQo+ICt7Cj4g Kwl1bnNpZ25lZCBsb25nIGxvbmcgdmFsOwo+ICsJc3RydWN0IHJhc19ldmVudHMgKnJhcyA9IGNv bnRleHQ7Cj4gKwl0aW1lX3Qgbm93Owo+ICsJc3RydWN0IHRtICp0bTsKPiArCXN0cnVjdCByYXNf YXJtX2V2ZW50IGV2Owo+ICsKPiArCS8qCj4gKwkgKiBOZXdlciBrZXJuZWxzICgzLjEwLXJjMSBv ciB1cHBlcikgcHJvdmlkZSBhbiB1cHRpbWUgY2xvY2suCj4gKwkgKiBPbiBwcmV2aW91cyBrZXJu ZWxzLCB0aGUgd2F5IHRvIHByb3Blcmx5IGdlbmVyYXRlIGFuIGV2ZW50IHdvdWxkCj4gKwkgKiBi ZSB0byBpbmplY3QgYSBmYWtlIG9uZSwgbWVhc3VyZSBpdHMgdGltZXN0YW1wIGFuZCBkaWZmIGl0 IGFnYWluc3QKPiArCSAqIGdldHRpbWVvZmRheS4gV2Ugd29uJ3QgZG8gaXQgaGVyZS4gSW5zdGVh ZCwgbGV0J3MgdXNlIHVwdGltZSwKPiArCSAqIGZhbGxpbmctYmFjayB0byB0aGUgZXZlbnQgcmVw b3J0J3MgdGltZSwgaWYgInVwdGltZSIgY2xvY2sgaXMKPiArCSAqIG5vdCBhdmFpbGFibGUgKGxl Z2FjeSBrZXJuZWxzKS4KPiArCSAqLwo+ICsKPiArCWlmIChyYXMtPnVzZV91cHRpbWUpCj4gKwkJ bm93ID0gcmVjb3JkLT50cy91c2VyX2h6ICsgcmFzLT51cHRpbWVfZGlmZjsKPiArCWVsc2UKPiAr CQlub3cgPSB0aW1lKE5VTEwpOwo+ICsKPiArCXRtID0gbG9jYWx0aW1lKCZub3cpOwo+ICsJaWYg KHRtKQo+ICsJCXN0cmZ0aW1lKGV2LnRpbWVzdGFtcCwgc2l6ZW9mKGV2LnRpbWVzdGFtcCksCj4g KwkJCSAiJVktJW0tJWQgJUg6JU06JVMgJXoiLCB0bSk7Cj4gKwl0cmFjZV9zZXFfcHJpbnRmKHMs ICIlc1xuIiwgZXYudGltZXN0YW1wKTsKPiArCj4gKwlpZiAocGV2ZW50X2dldF9maWVsZF92YWwo cywgZXZlbnQsICJhZmZpbml0eSIsIHJlY29yZCwgJnZhbCwgMSkgPCAwKQo+ICsJCXJldHVybiAt MTsKPiArCWV2LmFmZmluaXR5ID0gdmFsOwo+ICsJdHJhY2Vfc2VxX3ByaW50ZihzLCAiIGFmZmlu aXR5OiAlZCIsIGV2LmFmZmluaXR5KTsKPiArCj4gKwlpZiAocGV2ZW50X2dldF9maWVsZF92YWwo cywgZXZlbnQsICJtcGlkciIsIHJlY29yZCwgJnZhbCwgMSkgPCAwKQo+ICsJCXJldHVybiAtMTsK PiArCWV2Lm1waWRyID0gdmFsOwo+ICsJdHJhY2Vfc2VxX3ByaW50ZihzLCAiXG4gTVBJRFI6IDB4 JWxseCIsICh1bnNpZ25lZCBsb25nIGxvbmcpZXYubXBpZHIpOwo+ICsKPiArCWlmIChwZXZlbnRf Z2V0X2ZpZWxkX3ZhbChzLCBldmVudCwgIm1pZHIiLCByZWNvcmQsICZ2YWwsIDEpIDwgMCkKPiAr CQlyZXR1cm4gLTE7Cj4gKwlldi5taWRyID0gdmFsOwo+ICsJdHJhY2Vfc2VxX3ByaW50ZihzLCAi XG4gTUlEUjogMHglbGx4IiwgKHVuc2lnbmVkIGxvbmcgbG9uZylldi5taWRyKTsKPiArCj4gKwlp ZiAocGV2ZW50X2dldF9maWVsZF92YWwocywgZXZlbnQsICJydW5uaW5nX3N0YXRlIiwgcmVjb3Jk LCAmdmFsLCAxKSA8IDApCj4gKwkJcmV0dXJuIC0xOwo+ICsJZXYucnVubmluZ19zdGF0ZSA9IHZh bDsKPiArCXRyYWNlX3NlcV9wcmludGYocywgIlxuIHJ1bm5pbmdfc3RhdGU6ICVkIiwgZXYucnVu bmluZ19zdGF0ZSk7Cj4gKwo+ICsJaWYgKHBldmVudF9nZXRfZmllbGRfdmFsKHMsIGV2ZW50LCAi cHNjaV9zdGF0ZSIsIHJlY29yZCwgJnZhbCwgMSkgPCAwKQo+ICsJCXJldHVybiAtMTsKPiArCWV2 LnBzY2lfc3RhdGUgPSB2YWw7Cj4gKwl0cmFjZV9zZXFfcHJpbnRmKHMsICJcbiBwc2NpX3N0YXRl OiAlZCIsIGV2LnBzY2lfc3RhdGUpOwo+ICsKPiArCS8qIEluc2VydCBkYXRhIGludG8gdGhlIFNH QkQgKi8KPiArI2lmZGVmIEhBVkVfU1FMSVRFMwo+ICsJcmFzX3N0b3JlX2FybV9yZWNvcmQocmFz LCAmZXYpOwo+ICsjZW5kaWYKPiArCj4gKyNpZmRlZiBIQVZFX0FCUlRfUkVQT1JUCj4gKwkvKiBS ZXBvcnQgZXZlbnQgdG8gQUJSVCAqLwo+ICsJcmFzX3JlcG9ydF9hcm1fZXZlbnQocmFzLCAmZXYp Owo+ICsjZW5kaWYKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+IGRpZmYgLS1naXQgYS9yYXMtYXJt LWhhbmRsZXIuaCBiL3Jhcy1hcm0taGFuZGxlci5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBp bmRleCAwMDAwMDAwLi5lYWUxMGVjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3Jhcy1hcm0taGFu ZGxlci5oCj4gQEAgLTAsMCArMSwyNCBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTYs IFRoZSBMaW51eCBGb3VuZGF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKgo+ICsgKiBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhbmQKPiArICogb25seSB2ZXJzaW9uIDIgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCj4gKwo+ICsgKiBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiAr ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQo+ICsgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19SQVNfQVJNX0hBTkRMRVJfSAo+ ICsjZGVmaW5lIF9fUkFTX0FSTV9IQU5ETEVSX0gKPiArCj4gKyNpbmNsdWRlICJyYXMtZXZlbnRz LmgiCj4gKyNpbmNsdWRlICJsaWJ0cmFjZS9ldmVudC1wYXJzZS5oIgo+ICsKPiAraW50IHJhc19h cm1fZXZlbnRfaGFuZGxlcihzdHJ1Y3QgdHJhY2Vfc2VxICpzLAo+ICsJCQkgc3RydWN0IHBldmVu dF9yZWNvcmQgKnJlY29yZCwKPiArCQkJIHN0cnVjdCBldmVudF9mb3JtYXQgKmV2ZW50LCB2b2lk ICpjb250ZXh0KTsKPiArCj4gKyNlbmRpZgo+IGRpZmYgLS1naXQgYS9yYXMtZXZlbnRzLmMgYi9y YXMtZXZlbnRzLmMKPiBpbmRleCA5NmFhNmYxLi44MTJkNzEyIDEwMDY0NAo+IC0tLSBhL3Jhcy1l dmVudHMuYwo+ICsrKyBiL3Jhcy1ldmVudHMuYwo+IEBAIC0zMCw2ICszMCw3IEBACj4gICNpbmNs dWRlICJyYXMtbWMtaGFuZGxlci5oIgo+ICAjaW5jbHVkZSAicmFzLWFlci1oYW5kbGVyLmgiCj4g ICNpbmNsdWRlICJyYXMtbm9uLXN0YW5kYXJkLWhhbmRsZXIuaCIKPiArI2luY2x1ZGUgInJhcy1h cm0taGFuZGxlci5oIgo+ICAjaW5jbHVkZSAicmFzLW1jZS1oYW5kbGVyLmgiCj4gICNpbmNsdWRl ICJyYXMtZXh0bG9nLWhhbmRsZXIuaCIKPiAgI2luY2x1ZGUgInJhcy1yZWNvcmQuaCIKPiBAQCAt MjEzLDYgKzIxNCwxMCBAQCBpbnQgdG9nZ2xlX3Jhc19tY19ldmVudChpbnQgZW5hYmxlKQo+ICAJ cmMgfD0gX190b2dnbGVfcmFzX21jX2V2ZW50KHJhcywgInJhcyIsICJub25fc3RhbmRhcmRfZXZl bnQiLCBlbmFibGUpOwo+ICAjZW5kaWYKPiAgCj4gKyNpZmRlZiBIQVZFX0FSTQo+ICsJcmMgfD0g X190b2dnbGVfcmFzX21jX2V2ZW50KHJhcywgInJhcyIsICJhcm1fZXZlbnQiLCBlbmFibGUpOwo+ ICsjZW5kaWYKPiArCj4gIGZyZWVfcmFzOgo+ICAJZnJlZShyYXMpOwo+ICAJcmV0dXJuIHJjOwo+ IEBAIC02OTEsNiArNjk2LDE2IEBAIGludCBoYW5kbGVfcmFzX2V2ZW50cyhpbnQgcmVjb3JkX2V2 ZW50cykKPiAgICAgICAgICAgICAgICAgICAgICAicmFzIiwgIm5vbl9zdGFuZGFyZF9ldmVudCIp Owo+ICAjZW5kaWYKPiAgCj4gKyNpZmRlZiBIQVZFX0FSTQo+ICsgICAgICAgIHJjID0gYWRkX2V2 ZW50X2hhbmRsZXIocmFzLCBwZXZlbnQsIHBhZ2Vfc2l6ZSwgInJhcyIsICJhcm1fZXZlbnQiLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFzX2FybV9ldmVudF9oYW5kbGVyKTsK PiArICAgICAgICBpZiAoIXJjKQo+ICsgICAgICAgICAgICAgICAgbnVtX2V2ZW50cysrOwo+ICsg ICAgICAgIGVsc2UKPiArICAgICAgICAgICAgICAgIGxvZyhBTEwsIExPR19FUlIsICJDYW4ndCBn ZXQgdHJhY2VzIGZyb20gJXM6JXNcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgInJhcyIsICJh cm1fZXZlbnQiKTsKPiArI2VuZGlmCj4gKwo+ICAJY3B1cyA9IGdldF9udW1fY3B1cyhyYXMpOwo+ ICAKPiAgI2lmZGVmIEhBVkVfTUNFCj4gZGlmZiAtLWdpdCBhL3Jhcy1yZWNvcmQuYyBiL3Jhcy1y ZWNvcmQuYwo+IGluZGV4IDM1N2FiNjEuLjVkZmEwMGYgMTAwNjQ0Cj4gLS0tIGEvcmFzLXJlY29y ZC5jCj4gKysrIGIvcmFzLXJlY29yZC5jCj4gQEAgLTIwOSw2ICsyMDksNTggQEAgaW50IHJhc19z dG9yZV9ub25fc3RhbmRhcmRfcmVjb3JkKHN0cnVjdCByYXNfZXZlbnRzICpyYXMsIHN0cnVjdCBy YXNfbm9uX3N0YW5kYXIKPiAgfQo+ICAjZW5kaWYKPiAgCj4gKy8qCj4gKyAqIFRhYmxlIGFuZCBm dW5jdGlvbnMgdG8gaGFuZGxlIHJhczphcm0KPiArICovCj4gKwo+ICsjaWZkZWYgSEFWRV9BUk0K PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkYl9maWVsZHMgYXJtX2V2ZW50X2ZpZWxkc1tdID0gewo+ ICsJCXsgLm5hbWU9ImlkIiwJCQkudHlwZT0iSU5URUdFUiBQUklNQVJZIEtFWSIgfSwKPiArCQl7 IC5uYW1lPSJ0aW1lc3RhbXAiLAkJLnR5cGU9IlRFWFQiIH0sCj4gKwkJeyAubmFtZT0iZXJyb3Jf Y291bnQiLAkJLnR5cGU9IklOVEVHRVIiIH0sCj4gKwkJeyAubmFtZT0iYWZmaW5pdHkiLAkJLnR5 cGU9IklOVEVHRVIiIH0sCj4gKwkJeyAubmFtZT0ibXBpZHIiLAkJLnR5cGU9IklOVEVHRVIiIH0s Cj4gKwkJeyAubmFtZT0icnVubmluZ19zdGF0ZSIsCS50eXBlPSJJTlRFR0VSIiB9LAo+ICsJCXsg Lm5hbWU9InBzY2lfc3RhdGUiLAkJLnR5cGU9IklOVEVHRVIiIH0sCj4gK307Cj4gKwo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGRiX3RhYmxlX2Rlc2NyaXB0b3IgYXJtX2V2ZW50X3RhYiA9IHsKPiAr CS5uYW1lID0gImFybV9ldmVudCIsCj4gKwkuZmllbGRzID0gYXJtX2V2ZW50X2ZpZWxkcywKPiAr CS5udW1fZmllbGRzID0gQVJSQVlfU0laRShhcm1fZXZlbnRfZmllbGRzKSwKPiArfTsKPiArCj4g K2ludCByYXNfc3RvcmVfYXJtX3JlY29yZChzdHJ1Y3QgcmFzX2V2ZW50cyAqcmFzLCBzdHJ1Y3Qg cmFzX2FybV9ldmVudCAqZXYpCj4gK3sKPiArCWludCByYzsKPiArCXN0cnVjdCBzcWxpdGUzX3By aXYgKnByaXYgPSByYXMtPmRiX3ByaXY7Cj4gKwo+ICsJaWYgKCFwcml2IHx8ICFwcml2LT5zdG10 X2FybV9yZWNvcmQpCj4gKwkJcmV0dXJuIDA7Cj4gKwlsb2coVEVSTSwgTE9HX0lORk8sICJhcm1f ZXZlbnQgc3RvcmU6ICVwXG4iLCBwcml2LT5zdG10X2FybV9yZWNvcmQpOwo+ICsKPiArCXNxbGl0 ZTNfYmluZF90ZXh0IChwcml2LT5zdG10X2FybV9yZWNvcmQsICAxLCAgZXYtPnRpbWVzdGFtcCwg LTEsIE5VTEwpOwo+ICsJc3FsaXRlM19iaW5kX2ludCAgKHByaXYtPnN0bXRfYXJtX3JlY29yZCwg IDIsICBldi0+ZXJyb3JfY291bnQpOwo+ICsJc3FsaXRlM19iaW5kX2ludCAgKHByaXYtPnN0bXRf YXJtX3JlY29yZCwgIDMsICBldi0+YWZmaW5pdHkpOwo+ICsJc3FsaXRlM19iaW5kX2ludCAgKHBy aXYtPnN0bXRfYXJtX3JlY29yZCwgIDQsICBldi0+bXBpZHIpOwo+ICsJc3FsaXRlM19iaW5kX2lu dCAgKHByaXYtPnN0bXRfYXJtX3JlY29yZCwgIDUsICBldi0+cnVubmluZ19zdGF0ZSk7Cj4gKwlz cWxpdGUzX2JpbmRfaW50ICAocHJpdi0+c3RtdF9hcm1fcmVjb3JkLCAgNiwgIGV2LT5wc2NpX3N0 YXRlKTsKPiArCj4gKwlyYyA9IHNxbGl0ZTNfc3RlcChwcml2LT5zdG10X2FybV9yZWNvcmQpOwo+ ICsJaWYgKHJjICE9IFNRTElURV9PSyAmJiByYyAhPSBTUUxJVEVfRE9ORSkKPiArCQlsb2coVEVS TSwgTE9HX0VSUiwKPiArCQkgICAgIkZhaWxlZCB0byBkbyBhcm1fZXZlbnQgc3RlcCBvbiBzcWxp dGU6IGVycm9yID0gJWRcbiIsIHJjKTsKPiArCXJjID0gc3FsaXRlM19yZXNldChwcml2LT5zdG10 X2FybV9yZWNvcmQpOwo+ICsJaWYgKHJjICE9IFNRTElURV9PSyAmJiByYyAhPSBTUUxJVEVfRE9O RSkKPiArCQlsb2coVEVSTSwgTE9HX0VSUiwKPiArCQkgICAgIkZhaWxlZCByZXNldCBhcm1fZXZl bnQgb24gc3FsaXRlOiBlcnJvciA9ICVkXG4iLAo+ICsJCSAgICByYyk7Cj4gKwlsb2coVEVSTSwg TE9HX0lORk8sICJyZWdpc3RlciBpbnNlcnRlZCBhdCBkYlxuIik7Cj4gKwo+ICsJcmV0dXJuIHJj Owo+ICt9Cj4gKyNlbmRpZgo+ICsKPiAgI2lmZGVmIEhBVkVfRVhUTE9HCj4gIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZGJfZmllbGRzIGV4dGxvZ19ldmVudF9maWVsZHNbXSA9IHsKPiAgCQl7IC5uYW1l PSJpZCIsCQkJLnR5cGU9IklOVEVHRVIgUFJJTUFSWSBLRVkiIH0sCj4gZGlmZiAtLWdpdCBhL3Jh cy1yZWNvcmQuaCBiL3Jhcy1yZWNvcmQuaAo+IGluZGV4IDQ3M2FlNDAuLjEyYzIyMTggMTAwNjQ0 Cj4gLS0tIGEvcmFzLXJlY29yZC5oCj4gKysrIGIvcmFzLXJlY29yZC5oCj4gQEAgLTY1LDEwICs2 NSwyMSBAQCBzdHJ1Y3QgcmFzX25vbl9zdGFuZGFyZF9ldmVudCB7Cj4gIAl1aW50MzJfdCBsZW5n dGg7Cj4gIH07Cj4gIAo+ICtzdHJ1Y3QgcmFzX2FybV9ldmVudCB7Cj4gKwljaGFyIHRpbWVzdGFt cFs2NF07Cj4gKwlpbnQzMl90IGVycm9yX2NvdW50Owo+ICsJaW50OF90IGFmZmluaXR5Owo+ICsJ aW50NjRfdCBtcGlkcjsKPiArCWludDY0X3QgbWlkcjsKPiArCWludDMyX3QgcnVubmluZ19zdGF0 ZTsKPiArCWludDMyX3QgcHNjaV9zdGF0ZTsKPiArfTsKPiArCj4gIHN0cnVjdCByYXNfbWNfZXZl bnQ7Cj4gIHN0cnVjdCByYXNfYWVyX2V2ZW50Owo+ICBzdHJ1Y3QgcmFzX2V4dGxvZ19ldmVudDsK PiAgc3RydWN0IHJhc19ub25fc3RhbmRhcmRfZXZlbnQ7Cj4gK3N0cnVjdCByYXNfYXJtX2V2ZW50 Owo+ICBzdHJ1Y3QgbWNlX2V2ZW50Owo+ICAKPiAgI2lmZGVmIEhBVkVfU1FMSVRFMwo+IEBAIC05 MCw2ICsxMDEsOSBAQCBzdHJ1Y3Qgc3FsaXRlM19wcml2IHsKPiAgI2lmZGVmIEhBVkVfTk9OX1NU QU5EQVJECj4gIAlzcWxpdGUzX3N0bXQJKnN0bXRfbm9uX3N0YW5kYXJkX3JlY29yZDsKPiAgI2Vu ZGlmCj4gKyNpZmRlZiBIQVZFX0FSTQo+ICsJc3FsaXRlM19zdG10CSpzdG10X2FybV9yZWNvcmQ7 Cj4gKyNlbmRpZgo+ICB9Owo+ICAKPiAgaW50IHJhc19tY19ldmVudF9vcGVuZGIodW5zaWduZWQg Y3B1LCBzdHJ1Y3QgcmFzX2V2ZW50cyAqcmFzKTsKPiBAQCAtOTgsNiArMTEyLDcgQEAgaW50IHJh c19zdG9yZV9hZXJfZXZlbnQoc3RydWN0IHJhc19ldmVudHMgKnJhcywgc3RydWN0IHJhc19hZXJf ZXZlbnQgKmV2KTsKPiAgaW50IHJhc19zdG9yZV9tY2VfcmVjb3JkKHN0cnVjdCByYXNfZXZlbnRz ICpyYXMsIHN0cnVjdCBtY2VfZXZlbnQgKmV2KTsKPiAgaW50IHJhc19zdG9yZV9leHRsb2dfbWVt X3JlY29yZChzdHJ1Y3QgcmFzX2V2ZW50cyAqcmFzLCBzdHJ1Y3QgcmFzX2V4dGxvZ19ldmVudCAq ZXYpOwo+ICBpbnQgcmFzX3N0b3JlX25vbl9zdGFuZGFyZF9yZWNvcmQoc3RydWN0IHJhc19ldmVu dHMgKnJhcywgc3RydWN0IHJhc19ub25fc3RhbmRhcmRfZXZlbnQgKmV2KTsKPiAraW50IHJhc19z dG9yZV9hcm1fcmVjb3JkKHN0cnVjdCByYXNfZXZlbnRzICpyYXMsIHN0cnVjdCByYXNfYXJtX2V2 ZW50ICpldik7Cj4gIAo+ICAjZWxzZQo+ICBzdGF0aWMgaW5saW5lIGludCByYXNfbWNfZXZlbnRf b3BlbmRiKHVuc2lnbmVkIGNwdSwgc3RydWN0IHJhc19ldmVudHMgKnJhcykgeyByZXR1cm4gMDsg fTsKPiBAQCAtMTA2LDYgKzEyMSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJhc19zdG9yZV9hZXJf ZXZlbnQoc3RydWN0IHJhc19ldmVudHMgKnJhcywgc3RydWN0IHJhc19hZXJfZXZlCj4gIHN0YXRp YyBpbmxpbmUgaW50IHJhc19zdG9yZV9tY2VfcmVjb3JkKHN0cnVjdCByYXNfZXZlbnRzICpyYXMs IHN0cnVjdCBtY2VfZXZlbnQgKmV2KSB7IHJldHVybiAwOyB9Owo+ICBzdGF0aWMgaW5saW5lIGlu dCByYXNfc3RvcmVfZXh0bG9nX21lbV9yZWNvcmQoc3RydWN0IHJhc19ldmVudHMgKnJhcywgc3Ry dWN0IHJhc19leHRsb2dfZXZlbnQgKmV2KSB7IHJldHVybiAwOyB9Owo+ICBzdGF0aWMgaW5saW5l IGludCByYXNfc3RvcmVfbm9uX3N0YW5kYXJkX3JlY29yZChzdHJ1Y3QgcmFzX2V2ZW50cyAqcmFz LCBzdHJ1Y3QgcmFzX25vbl9zdGFuZGFyZF9ldmVudCAqZXYpIHsgcmV0dXJuIDA7IH07Cj4gK3N0 YXRpYyBpbmxpbmUgaW50IHJhc19zdG9yZV9hcm1fcmVjb3JkKHN0cnVjdCByYXNfZXZlbnRzICpy YXMsIHN0cnVjdCByYXNfYXJtX2V2ZW50ICpldikgeyByZXR1cm4gMDsgfTsKPiAgCj4gICNlbmRp Zgo+ICAKPiBkaWZmIC0tZ2l0IGEvcmFzLXJlcG9ydC5jIGIvcmFzLXJlcG9ydC5jCj4gaW5kZXgg MWViOWY3OS4uZDRiZWVlMCAxMDA2NDQKPiAtLS0gYS9yYXMtcmVwb3J0LmMKPiArKysgYi9yYXMt cmVwb3J0LmMKPiBAQCAtMjI4LDYgKzIyOCwzMyBAQCBzdGF0aWMgaW50IHNldF9ub25fc3RhbmRh cmRfZXZlbnRfYmFja3RyYWNlKGNoYXIgKmJ1Ziwgc3RydWN0IHJhc19ub25fc3RhbmRhcmRfZQo+ ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbnQgc2V0X2FybV9ldmVudF9iYWNrdHJh Y2UoY2hhciAqYnVmLCBzdHJ1Y3QgcmFzX2FybV9ldmVudCAqZXYpewo+ICsJY2hhciBidF9idWZb TUFYX0JBQ0tUUkFDRV9TSVpFXTsKPiArCj4gKwlpZighYnVmIHx8ICFldikKPiArCQlyZXR1cm4g LTE7Cj4gKwo+ICsJc3ByaW50ZihidF9idWYsICJCQUNLVFJBQ0U9IiAgICBcCj4gKwkJCQkJCSJ0 aW1lc3RhbXA9JXNcbiIJXAo+ICsJCQkJCQkiZXJyb3JfY291bnQ9JWRcbiIJXAo+ICsJCQkJCQki YWZmaW5pdHk9JWRcbiIJXAo+ICsJCQkJCQkibXBpZHI9MHglbHhcbiIJXAo+ICsJCQkJCQkibWlk cj0weCVseFxuIglcCj4gKwkJCQkJCSJydW5uaW5nX3N0YXRlPSVkXG4iCVwKPiArCQkJCQkJInBz Y2lfc3RhdGU9JWRcbiIsCVwKPiArCQkJCQkJZXYtPnRpbWVzdGFtcCwJXAo+ICsJCQkJCQlldi0+ ZXJyb3JfY291bnQsCVwKPiArCQkJCQkJZXYtPmFmZmluaXR5LAlcCj4gKwkJCQkJCWV2LT5tcGlk ciwJXAo+ICsJCQkJCQlldi0+bWlkciwJXAo+ICsJCQkJCQlldi0+cnVubmluZ19zdGF0ZSwJXAo+ ICsJCQkJCQlldi0+cHNjaV9zdGF0ZSk7Cj4gKwo+ICsJc3RyY2F0KGJ1ZiwgYnRfYnVmKTsKPiAr Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgc3RhdGljIGludCBjb21taXRfcmVwb3J0X2JhY2t0 cmFjZShpbnQgc29ja2ZkLCBpbnQgdHlwZSwgdm9pZCAqZXYpewo+ICAJY2hhciBidWZbTUFYX0JB Q0tUUkFDRV9TSVpFXTsKPiAgCWNoYXIgKnBidWYgPSBidWY7Cj4gQEAgLTI1Myw2ICsyODAsOSBA QCBzdGF0aWMgaW50IGNvbW1pdF9yZXBvcnRfYmFja3RyYWNlKGludCBzb2NrZmQsIGludCB0eXBl LCB2b2lkICpldil7Cj4gIAljYXNlIE5PTl9TVEFOREFSRF9FVkVOVDoKPiAgCQlyYyA9IHNldF9u b25fc3RhbmRhcmRfZXZlbnRfYmFja3RyYWNlKGJ1ZiwgKHN0cnVjdCByYXNfbm9uX3N0YW5kYXJk X2V2ZW50ICopZXYpOwo+ICAJCWJyZWFrOwo+ICsJY2FzZSBBUk1fRVZFTlQ6Cj4gKwkJcmMgPSBz ZXRfYXJtX2V2ZW50X2JhY2t0cmFjZShidWYsIChzdHJ1Y3QgcmFzX2FybV9ldmVudCAqKWV2KTsK PiArCQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gIAkJcmV0dXJuIC0xOwo+ICAJfQo+IEBAIC00MjUs NiArNDU1LDUxIEBAIG5vbl9zdGFuZGFyZF9mYWlsOgo+ICAJcmV0dXJuIHJjOwo+ICB9Cj4gIAo+ ICtpbnQgcmFzX3JlcG9ydF9hcm1fZXZlbnQoc3RydWN0IHJhc19ldmVudHMgKnJhcywgc3RydWN0 IHJhc19hcm1fZXZlbnQgKmV2KXsKPiArCWNoYXIgYnVmW01BWF9NRVNTQUdFX1NJWkVdOwo+ICsJ aW50IHNvY2tmZCA9IDA7Cj4gKwlpbnQgcmMgPSAtMTsKPiArCj4gKwltZW1zZXQoYnVmLCAwLCBz aXplb2YoYnVmKSk7Cj4gKwo+ICsJc29ja2ZkID0gc2V0dXBfcmVwb3J0X3NvY2tldCgpOwo+ICsJ aWYoc29ja2ZkIDwgMCl7Cj4gKwkJcmV0dXJuIHJjOwo+ICsJfQo+ICsKPiArCXJjID0gY29tbWl0 X3JlcG9ydF9iYXNpYyhzb2NrZmQpOwo+ICsJaWYocmMgPCAwKXsKPiArCQlnb3RvIGFybV9mYWls Owo+ICsJfQo+ICsKPiArCXJjID0gY29tbWl0X3JlcG9ydF9iYWNrdHJhY2Uoc29ja2ZkLCBBUk1f RVZFTlQsIGV2KTsKPiArCWlmKHJjIDwgMCl7Cj4gKwkJZ290byBhcm1fZmFpbDsKPiArCX0KPiAr Cj4gKwlzcHJpbnRmKGJ1ZiwgIkFOQUxZWkVSPSVzIiwgInJhc2RhZW1vbi1hcm0iKTsKPiArCXJj ID0gd3JpdGUoc29ja2ZkLCBidWYsIHN0cmxlbihidWYpICsgMSk7Cj4gKwlpZihyYyA8IHN0cmxl bihidWYpICsgMSl7Cj4gKwkJZ290byBhcm1fZmFpbDsKPiArCX0KPiArCj4gKwlzcHJpbnRmKGJ1 ZiwgIlJFQVNPTj0lcyIsICJBUk0gQ1BVIHJlcG9ydCBwcm9ibGVtIik7Cj4gKwlyYyA9IHdyaXRl KHNvY2tmZCwgYnVmLCBzdHJsZW4oYnVmKSArIDEpOwo+ICsJaWYocmMgPCBzdHJsZW4oYnVmKSAr IDEpewo+ICsJCWdvdG8gYXJtX2ZhaWw7Cj4gKwl9Cj4gKwo+ICsJcmMgPSAwOwo+ICsKPiArYXJt X2ZhaWw6Cj4gKwo+ICsJaWYoc29ja2ZkID4gMCl7Cj4gKwkJY2xvc2Uoc29ja2ZkKTsKPiArCX0K PiArCj4gKwlyZXR1cm4gcmM7Cj4gK30KPiArCj4gIGludCByYXNfcmVwb3J0X21jZV9ldmVudChz dHJ1Y3QgcmFzX2V2ZW50cyAqcmFzLCBzdHJ1Y3QgbWNlX2V2ZW50ICpldil7Cj4gIAljaGFyIGJ1 ZltNQVhfTUVTU0FHRV9TSVpFXTsKPiAgCWludCBzb2NrZmQgPSAwOwo+IGRpZmYgLS1naXQgYS9y YXMtcmVwb3J0LmggYi9yYXMtcmVwb3J0LmgKPiBpbmRleCBjMmZjZjQyLi42YzQ2NmY1IDEwMDY0 NAo+IC0tLSBhL3Jhcy1yZXBvcnQuaAo+ICsrKyBiL3Jhcy1yZXBvcnQuaAo+IEBAIC0zMyw3ICsz Myw4IEBAIGVudW0gewo+ICAJTUNfRVZFTlQsCj4gIAlNQ0VfRVZFTlQsCj4gIAlBRVJfRVZFTlQs Cj4gLQlOT05fU1RBTkRBUkRfRVZFTlQKPiArCU5PTl9TVEFOREFSRF9FVkVOVCwKPiArCUFSTV9F VkVOVAo+ICB9Owo+ICAKPiAgI2lmZGVmIEhBVkVfQUJSVF9SRVBPUlQKPiBAQCAtNDIsNiArNDMs NyBAQCBpbnQgcmFzX3JlcG9ydF9tY19ldmVudChzdHJ1Y3QgcmFzX2V2ZW50cyAqcmFzLCBzdHJ1 Y3QgcmFzX21jX2V2ZW50ICpldik7Cj4gIGludCByYXNfcmVwb3J0X2Flcl9ldmVudChzdHJ1Y3Qg cmFzX2V2ZW50cyAqcmFzLCBzdHJ1Y3QgcmFzX2Flcl9ldmVudCAqZXYpOwo+ICBpbnQgcmFzX3Jl cG9ydF9tY2VfZXZlbnQoc3RydWN0IHJhc19ldmVudHMgKnJhcywgc3RydWN0IG1jZV9ldmVudCAq ZXYpOwo+ICBpbnQgcmFzX3JlcG9ydF9ub25fc3RhbmRhcmRfZXZlbnQoc3RydWN0IHJhc19ldmVu dHMgKnJhcywgc3RydWN0IHJhc19ub25fc3RhbmRhcmRfZXZlbnQgKmV2KTsKPiAraW50IHJhc19y ZXBvcnRfYXJtX2V2ZW50KHN0cnVjdCByYXNfZXZlbnRzICpyYXMsIHN0cnVjdCByYXNfYXJtX2V2 ZW50ICpldik7Cj4gIAo+ICAjZWxzZQo+ICAKPiBAQCAtNDksNiArNTEsNyBAQCBzdGF0aWMgaW5s aW5lIGludCByYXNfcmVwb3J0X21jX2V2ZW50KHN0cnVjdCByYXNfZXZlbnRzICpyYXMsIHN0cnVj dCByYXNfbWNfZXZlbgo+ICBzdGF0aWMgaW5saW5lIGludCByYXNfcmVwb3J0X2Flcl9ldmVudChz dHJ1Y3QgcmFzX2V2ZW50cyAqcmFzLCBzdHJ1Y3QgcmFzX2Flcl9ldmVudCAqZXYpIHsgcmV0dXJu IDA7IH07Cj4gIHN0YXRpYyBpbmxpbmUgaW50IHJhc19yZXBvcnRfbWNlX2V2ZW50KHN0cnVjdCBy YXNfZXZlbnRzICpyYXMsIHN0cnVjdCBtY2VfZXZlbnQgKmV2KSB7IHJldHVybiAwOyB9Owo+ICBz dGF0aWMgaW5saW5lIGludCByYXNfcmVwb3J0X25vbl9zdGFuZGFyZF9ldmVudChzdHJ1Y3QgcmFz X2V2ZW50cyAqcmFzLCBzdHJ1Y3QgcmFzX25vbl9zdGFuZGFyZF9ldmVudCAqZXYpIHsgcmV0dXJu IDA7IH07Cj4gK3N0YXRpYyBpbmxpbmUgaW50IHJhc19yZXBvcnRfYXJtX2V2ZW50KHN0cnVjdCBy YXNfZXZlbnRzICpyYXMsIHN0cnVjdCByYXNfYXJtX2V2ZW50ICpldikgeyByZXR1cm4gMDsgfTsK PiAgCj4gICNlbmRpZgo+Cg==