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: [v2,3/4] drivers: edac: Add EDAC driver support for QCOM SoCs From: Venkata Narendra Kumar Gutta Message-Id: <93f11f3728ef658f903509ae0bc00d03@codeaurora.org> Date: Fri, 24 Aug 2018 14:05:19 -0700 To: Evan Green Cc: robh@kernel.org, mchehab@kernel.org, linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org, Andy Gross , David Brown , linux-arm-msm@vger.kernel.org, linux-soc@vger.kernel.org, robh+dt@kernel.org, mark.rutland@arm.com, devicetree@vger.kernel.org, tsoni@codeaurora.org, ckadabi@codeaurora.org, rishabhb@codeaurora.org, bp@alien8.de List-ID: T24gMjAxOC0wOC0yNCAxMzoxOCwgRXZhbiBHcmVlbiB3cm90ZToKPiBPbiBGcmksIEF1ZyAyNCwg MjAxOCBhdCAxMTozMiBBTSA8dm5rZ3V0dGFAY29kZWF1cm9yYS5vcmc+IHdyb3RlOgo+PiAKPj4g T24gMjAxOC0wOC0yMyAxNjowNCwgRXZhbiBHcmVlbiB3cm90ZToKPj4gPiBPbiBGcmksIEF1ZyAx NywgMjAxOCBhdCA1OjA4IFBNIFZlbmthdGEgTmFyZW5kcmEgS3VtYXIgR3V0dGEKPj4gPiA8dm5r Z3V0dGFAY29kZWF1cm9yYS5vcmc+IHdyb3RlOgo+PiA+Pgo+PiA+PiBGcm9tOiBDaGFubmFnb3Vk IEthZGFiaSA8Y2thZGFiaUBjb2RlYXVyb3JhLm9yZz4KPj4gPj4KPj4gPj4gQWRkIGVycm9yIHJl cG9ydGluZyBkcml2ZXIgZm9yIFNpbmdsZSBCaXQgRXJyb3JzIChTQkVzKSBhbmQgRG91YmxlIEJp dAo+PiA+PiBFcnJvcnMgKERCRXMpLiBBcyBvZiBub3csIHRoaXMgZHJpdmVyIHN1cHBvcnRzIGVy cCBmb3IgTGFzdCBMZXZlbAo+PiA+PiBDYWNoZQo+PiA+PiBDb250cm9sbGVyIChMTENDKS4gVGhp cyBkcml2ZXIgdGFrZXMgY2FyZSBvZiBkdW1waW5nIHJlZ2lzdGVycyBhbmQKPj4gPj4gYWRkaW5n Cj4+ID4+IGNvbmZpZyBvcHRpb25zIHRvIGVuYWJsZSBhbmQgZGlzYWJsZSBwYW5pYyB3aGVuIHRo ZSBlcnJvcnMgaGFwcGVuIGluCj4+ID4+IGNhY2hlLgo+PiA+Pgo+PiA+PiBTaWduZWQtb2ZmLWJ5 OiBDaGFubmFnb3VkIEthZGFiaSA8Y2thZGFiaUBjb2RlYXVyb3JhLm9yZz4KPj4gPj4gU2lnbmVk LW9mZi1ieTogVmVua2F0YSBOYXJlbmRyYSBLdW1hciBHdXR0YSA8dm5rZ3V0dGFAY29kZWF1cm9y YS5vcmc+Cj4+ID4+IENvLWRldmVsb3BlZC1ieTogVmVua2F0YSBOYXJlbmRyYSBLdW1hciBHdXR0 YQo+PiA+PiA8dm5rZ3V0dGFAY29kZWF1cm9yYS5vcmc+Cj4+ID4+IC0tLQo+PiA+PiAgTUFJTlRB SU5FUlMgICAgICAgICAgICAgICAgICAgICAgICB8ICAgOCArCj4+ID4+ICBkcml2ZXJzL2VkYWMv S2NvbmZpZyAgICAgICAgICAgICAgIHwgIDI4ICsrKwo+PiA+PiAgZHJpdmVycy9lZGFjL01ha2Vm aWxlICAgICAgICAgICAgICB8ICAgMSArCj4+ID4+ICBkcml2ZXJzL2VkYWMvcWNvbV9lZGFjLmMg ICAgICAgICAgIHwgNDQ2Cj4+ID4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKPj4gPj4gIGluY2x1ZGUvbGludXgvc29jL3Fjb20vbGxjYy1xY29tLmggfCAgMjUgKysrCj4+ ID4+ICA1IGZpbGVzIGNoYW5nZWQsIDUwOCBpbnNlcnRpb25zKCspCj4+ID4+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9lZGFjL3Fjb21fZWRhYy5jCj4+ID4+Cj4+ID4+IGRpZmYgLS1naXQg YS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCj4+ID4+IGluZGV4IDBhMjM0MjcuLjBiZmY3MTMg MTAwNjQ0Cj4+ID4+IC0tLSBhL01BSU5UQUlORVJTCj4+ID4+ICsrKyBiL01BSU5UQUlORVJTCj4+ ID4+IEBAIC01MjI3LDYgKzUyMjcsMTQgQEAgTDogICAgICAgbGludXgtZWRhY0B2Z2VyLmtlcm5l bC5vcmcKPj4gPj4gIFM6ICAgICBNYWludGFpbmVkCj4+ID4+ICBGOiAgICAgZHJpdmVycy9lZGFj L3RpX2VkYWMuYwo+PiA+Pgo+PiA+PiArRURBQy1RVUFMQ09NTQo+PiA+PiArTTogICAgIENoYW5u YWdvdWQgS2FkYWJpIDxja2FkYWJpQGNvZGVhdXJvcmEub3JnPgo+PiA+PiArTTogICAgIFZlbmth dGEgTmFyZW5kcmEgS3VtYXIgR3V0dGEgPHZua2d1dHRhQGNvZGVhdXJvcmEub3JnPgo+PiA+PiAr TDogICAgIGxpbnV4LWFybS1tc21Admdlci5rZXJuZWwub3JnCj4+ID4+ICtMOiAgICAgbGludXgt ZWRhY0B2Z2VyLmtlcm5lbC5vcmcKPj4gPj4gK1M6ICAgICBNYWludGFpbmVkCj4+ID4+ICtGOiAg ICAgZHJpdmVycy9lZGFjL3Fjb21fZWRhYy5jCj4+ID4+ICsKPj4gPj4gIEVESVJPTCBVQS0xMDEv VUEtMTAwMCBEUklWRVIKPj4gPj4gIE06ICAgICBDbGVtZW5zIExhZGlzY2ggPGNsZW1lbnNAbGFk aXNjaC5kZT4KPj4gPj4gIEw6ICAgICBhbHNhLWRldmVsQGFsc2EtcHJvamVjdC5vcmcgKG1vZGVy YXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQo+PiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9lZGFj L0tjb25maWcgYi9kcml2ZXJzL2VkYWMvS2NvbmZpZwo+PiA+PiBpbmRleCA1NzMwNGIyLi5kYThm MTUwIDEwMDY0NAo+PiA+PiAtLS0gYS9kcml2ZXJzL2VkYWMvS2NvbmZpZwo+PiA+PiArKysgYi9k cml2ZXJzL2VkYWMvS2NvbmZpZwo+PiA+PiBAQCAtNDYwLDQgKzQ2MCwzMiBAQCBjb25maWcgRURB Q19USQo+PiA+PiAgICAgICAgICAgU3VwcG9ydCBmb3IgZXJyb3IgZGV0ZWN0aW9uIGFuZCBjb3Jy ZWN0aW9uIG9uIHRoZQo+PiA+PiAgICAgICAgICAgIFRJIFNvQ3MuCj4+ID4+Cj4+ID4+ICtjb25m aWcgRURBQ19RQ09NCj4+ID4+ICsgICAgICAgdHJpc3RhdGUgIlFDT00gRURBQyBDb250cm9sbGVy Igo+PiA+PiArICAgICAgIGRlcGVuZHMgb24gRURBQwo+PiA+PiArICAgICAgIGhlbHAKPj4gPj4g KyAgICAgICAgIFN1cHBvcnQgZm9yIGVycm9yIGRldGVjdGlvbiBhbmQgY29ycmVjdGlvbiBvbiB0 aGUKPj4gPj4gKyAgICAgICAgIFFDT00gU29Dcy4KPj4gPj4gKwo+PiA+PiArY29uZmlnIEVEQUNf UUNPTV9MTENDCj4+ID4+ICsgICAgICAgdHJpc3RhdGUgIlFDT00gRURBQyBDb250cm9sbGVyIGZv ciBMTENDIENhY2hlIgo+PiA+PiArICAgICAgIGRlcGVuZHMgb24gRURBQ19RQ09NICYmIFFDT01f TExDQwo+PiA+PiArICAgICAgIGhlbHAKPj4gPj4gKyAgICAgICAgIFN1cHBvcnQgZm9yIGVycm9y IGRldGVjdGlvbiBhbmQgY29ycmVjdGlvbiBvbiB0aGUKPj4gPj4gKyAgICAgICAgIFFDT00gTExD QyBjYWNoZS4gUmVwb3J0IGVycm9ycyBjYXVnaHQgYnkgTExDQyBFQ0MKPj4gPj4gKyAgICAgICAg IG1lY2hhbmlzbS4KPj4gPj4gKwo+PiA+PiArICAgICAgICAgRm9yIGRlYnVnZ2luZyBpc3N1ZXMg aGF2aW5nIHRvIGRvIHdpdGggc3RhYmlsaXR5IGFuZCBvdmVyYWxsCj4+ID4+IHN5c3RlbQo+PiA+ PiArICAgICAgICAgIGhlYWx0aCwgeW91IHNob3VsZCBwcm9iYWJseSBzYXkgJ1knIGhlcmUuCj4+ ID4+ICsKPj4gPj4gK2NvbmZpZyBFREFDX1FDT01fTExDQ19QQU5JQ19PTl9VRQo+PiA+PiArICAg ICAgIGJvb2wgIlBhbmljIG9uIHVuY29ycmVjdGFibGUgZXJyb3JzIC0gcWNvbSBsbGNjIgo+PiA+ PiArICAgICAgIGRlcGVuZHMgb24gRURBQ19RQ09NX0xMQ0MKPj4gPj4gKyAgICAgICBoZWxwCj4+ ID4+ICsgICAgICAgICBGb3JjaWJseSBjYXVzZSBhIGtlcm5lbCBwYW5pYyBpZiBhbiB1bmNvcnJl Y3RhYmxlIGVycm9yIChVRSkKPj4gPj4gaXMKPj4gPj4gKyAgICAgICAgIGRldGVjdGVkLiBUaGlz IGNhbiByZWR1Y2UgZGVidWdnaW5nIHRpbWVzIG9uIGhhcmR3YXJlIHdoaWNoCj4+ID4+IG1heSBi ZQo+PiA+PiArICAgICAgICAgb3BlcmF0aW5nIGF0IHZvbHRhZ2VzIG9yIGZyZXF1ZW5jaWVzIG91 dHNpZGUgbm9ybWFsCj4+ID4+IHNwZWNpZmljYXRpb24uCj4+ID4+ICsKPj4gPj4gKyAgICAgICAg IEZvciBwcm9kdWN0aW9uIGJ1aWxkcywgeW91IHNob3VsZCBwcm9iYWJseSBzYXkgJ04nIGhlcmUu Cj4+ID4+ICsKPj4gPj4gIGVuZGlmICMgRURBQwo+PiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9l ZGFjL01ha2VmaWxlIGIvZHJpdmVycy9lZGFjL01ha2VmaWxlCj4+ID4+IGluZGV4IDAyYjQzYTcu LjcxNjA5NmQgMTAwNjQ0Cj4+ID4+IC0tLSBhL2RyaXZlcnMvZWRhYy9NYWtlZmlsZQo+PiA+PiAr KysgYi9kcml2ZXJzL2VkYWMvTWFrZWZpbGUKPj4gPj4gQEAgLTc3LDMgKzc3LDQgQEAgb2JqLSQo Q09ORklHX0VEQUNfQUxURVJBKSAgICAgICAgICAgICArPQo+PiA+PiBhbHRlcmFfZWRhYy5vCj4+ ID4+ICBvYmotJChDT05GSUdfRURBQ19TWU5PUFNZUykgICAgICAgICAgICArPSBzeW5vcHN5c19l ZGFjLm8KPj4gPj4gIG9iai0kKENPTkZJR19FREFDX1hHRU5FKSAgICAgICAgICAgICAgICs9IHhn ZW5lX2VkYWMubwo+PiA+PiAgb2JqLSQoQ09ORklHX0VEQUNfVEkpICAgICAgICAgICAgICAgICAg Kz0gdGlfZWRhYy5vCj4+ID4+ICtvYmotJChDT05GSUdfRURBQ19RQ09NKSAgICAgICAgICAgICAg ICAgICAgICAgICs9IHFjb21fZWRhYy5vCj4+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2VkYWMv cWNvbV9lZGFjLmMgYi9kcml2ZXJzL2VkYWMvcWNvbV9lZGFjLmMKPj4gPj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPj4gPj4gaW5kZXggMDAwMDAwMC4uOWE4YzY3MAo+PiA+PiAtLS0gL2Rldi9udWxs Cj4+ID4+ICsrKyBiL2RyaXZlcnMvZWRhYy9xY29tX2VkYWMuYwo+PiA+PiBAQCAtMCwwICsxLDQ0 NiBAQAo+PiA+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPj4gPj4gKy8q Cj4+ID4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTgsIFRoZSBMaW51eCBGb3VuZGF0aW9uLiBBbGwg cmlnaHRzIHJlc2VydmVkLgo+PiA+PiArICovCj4+ID4+ICsKPj4gPj4gKyNpbmNsdWRlIDxsaW51 eC9lZGFjLmg+Cj4+ID4+ICsjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+Cj4+ID4+ICsjaW5j bHVkZSA8bGludXgva2VybmVsLmg+Cj4+ID4+ICsjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+ Cj4+ID4+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4+ID4+ICsjaW5jbHVk ZSA8bGludXgvcmVnbWFwLmg+Cj4+ID4+ICsjaW5jbHVkZSA8bGludXgvc21wLmg+Cj4+ID4+ICsj aW5jbHVkZSA8bGludXgvc29jL3Fjb20vbGxjYy1xY29tLmg+Cj4+ID4+ICsKPj4gPj4gKyNpbmNs dWRlICJlZGFjX21jLmgiCj4+ID4+ICsjaW5jbHVkZSAiZWRhY19kZXZpY2UuaCIKPj4gPj4gKwo+ PiA+PiArI2lmZGVmIENPTkZJR19FREFDX1FDT01fTExDQ19QQU5JQ19PTl9VRQo+PiA+PiArI2Rl ZmluZSBMTENDX0VSUF9QQU5JQ19PTl9VRSAgICAgICAgICAgIDEKPj4gPj4gKyNlbHNlCj4+ID4+ ICsjZGVmaW5lIExMQ0NfRVJQX1BBTklDX09OX1VFICAgICAgICAgICAgMAo+PiA+PiArI2VuZGlm Cj4+ID4+ICsKPj4gPj4gKyNkZWZpbmUgRURBQ19MTENDICAgICAgICAgICAgICAgICAgICAgICAi cWNvbV9sbGNjIgo+PiA+PiArCj4+ID4+ICsjZGVmaW5lIFRSUF9TWU5fUkVHX0NOVCAgICAgICAg ICAgICAgICAgNgo+PiA+PiArCj4+ID4+ICsjZGVmaW5lIERSUF9TWU5fUkVHX0NOVCAgICAgICAg ICAgICAgICAgOAo+PiA+PiArCj4+ID4+ICsjZGVmaW5lIExMQ0NfQ09NTU9OX1NUQVRVUzAgICAg ICAgICAgICAgMHgwMDAzMDAwQwo+PiA+PiArI2RlZmluZSBMTENDX0xCX0NOVF9NQVNLICAgICAg ICAgICAgICAgIEdFTk1BU0soMzEsIDI4KQo+PiA+PiArI2RlZmluZSBMTENDX0xCX0NOVF9TSElG VCAgICAgICAgICAgICAgIDI4Cj4+ID4+ICsKPj4gPj4gKy8qIHNpbmdsZSAmIERvdWJsZSBCaXQg c3luZHJvbWUgcmVnaXN0ZXIgb2Zmc2V0cyAqLwo+PiA+Cj4+ID4gU3RyYW5nZSBjYXBpdGFsaXph dGlvbiBnb2luZyBvbiBoZXJlLgo+PiBJJ2xsIGZpeCB0aGlzLgo+PiAKPj4gPgo+PiA+PiArI2Rl ZmluZSBUUlBfRUNDX1NCX0VSUl9TWU4wICAgICAgICAgICAgIDB4MDAwMjMwNEMKPj4gPj4gKyNk ZWZpbmUgVFJQX0VDQ19EQl9FUlJfU1lOMCAgICAgICAgICAgICAweDAwMDIwMzcwCj4+ID4+ICsj ZGVmaW5lIERSUF9FQ0NfU0JfRVJSX1NZTjAgICAgICAgICAgICAgMHgwMDA0MjA0Qwo+PiA+PiAr I2RlZmluZSBEUlBfRUNDX0RCX0VSUl9TWU4wICAgICAgICAgICAgIDB4MDAwNDIwNzAKPj4gPgo+ PiA+IEkgdGhpbmsgdGhlIGNvbnZlbnRpb24gaXMgdG8gdXNlIGxvd2VyY2FzZSBoZXggZXZlcnl3 aGVyZS4KPj4gCj4+IEkgZGlkbid0IGdldCB5b3UuIERvIHlvdSBtZWFuLCB0aGUgTWFjcm9zIHNo b3VsZCBiZSBpbiBsb3dlciBjYXNlIG9yIAo+PiB0aGUKPj4gY29tbWVudHM/Cj4gCj4gSSBtZWFu IDB4MDAwMjMwNEMgc2hvdWxkIGJlIDB4MDAwMjMwNGMuCgpPaCwgSSBzZWUuIEknbGwgdXBkYXRl IGl0LCBUaGFua3MuCgo+IAo+PiAKPj4gPgo+PiA+PiArCj4+ID4+ICsvKiBFcnJvciByZWdpc3Rl ciBvZmZzZXRzICovCj4+ID4+ICsjZGVmaW5lIFRSUF9FQ0NfRVJST1JfU1RBVFVTMSAgICAgICAg ICAgMHgwMDAyMDM0OAo+PiA+PiArI2RlZmluZSBUUlBfRUNDX0VSUk9SX1NUQVRVUzAgICAgICAg ICAgIDB4MDAwMjAzNDQKPj4gPj4gKyNkZWZpbmUgRFJQX0VDQ19FUlJPUl9TVEFUVVMxICAgICAg ICAgICAweDAwMDQyMDQ4Cj4+ID4+ICsjZGVmaW5lIERSUF9FQ0NfRVJST1JfU1RBVFVTMCAgICAg ICAgICAgMHgwMDA0MjA0NAo+PiA+PiArCj4+ID4+ICsvKiBUUlAsIERSUCBpbnRlcnJ1cHQgcmVn aXN0ZXIgb2Zmc2V0cyAqLwo+PiA+PiArI2RlZmluZSBEUlBfSU5URVJSVVBUX1NUQVRVUyAgICAg ICAgICAgIDB4MDAwNDEwMDAKPj4gPj4gKyNkZWZpbmUgVFJQX0lOVEVSUlVQVF8wX1NUQVRVUyAg ICAgICAgICAweDAwMDIwNDgwCj4+ID4+ICsjZGVmaW5lIERSUF9JTlRFUlJVUFRfQ0xFQVIgICAg ICAgICAgICAgMHgwMDA0MTAwOAo+PiA+PiArI2RlZmluZSBEUlBfRUNDX0VSUk9SX0NOVFJfQ0xF QVIgICAgICAgIDB4MDAwNDAwMDQKPj4gPj4gKyNkZWZpbmUgVFJQX0lOVEVSUlVQVF8wX0NMRUFS ICAgICAgICAgICAweDAwMDIwNDg0Cj4+ID4+ICsjZGVmaW5lIFRSUF9FQ0NfRVJST1JfQ05UUl9D TEVBUiAgICAgICAgMHgwMDAyMDQ0MAo+PiA+PiArCj4+ID4+ICsvKiBNYXNrIGFuZCBzaGlmdCBt YWNyb3MgKi8KPj4gPj4gKyNkZWZpbmUgRUNDX0RCX0VSUl9DT1VOVF9NQVNLICAgICAgICAgICBH RU5NQVNLKDQsIDApCj4+ID4+ICsjZGVmaW5lIEVDQ19EQl9FUlJfV0FZU19NQVNLICAgICAgICAg ICAgR0VOTUFTSygzMSwgMTYpCj4+ID4+ICsjZGVmaW5lIEVDQ19EQl9FUlJfV0FZU19TSElGVCAg ICAgICAgICAgQklUKDQpCj4+ID4+ICsKPj4gPj4gKyNkZWZpbmUgRUNDX1NCX0VSUl9DT1VOVF9N QVNLICAgICAgICAgICBHRU5NQVNLKDIzLCAxNikKPj4gPj4gKyNkZWZpbmUgRUNDX1NCX0VSUl9D T1VOVF9TSElGVCAgICAgICAgICBCSVQoNCkKPj4gPj4gKyNkZWZpbmUgRUNDX1NCX0VSUl9XQVlT X01BU0sgICAgICAgICAgICBHRU5NQVNLKDE1LCAwKQo+PiA+PiArCj4+ID4+ICsjZGVmaW5lIFNC X0VDQ19FUlJPUiAgICAgICAgICAgICAgICAgICAgQklUKDApCj4+ID4+ICsjZGVmaW5lIERCX0VD Q19FUlJPUiAgICAgICAgICAgICAgICAgICAgQklUKDEpCj4+ID4+ICsKPj4gPj4gKyNkZWZpbmUg RFJQX1RSUF9JTlRfQ0xFQVIgICAgICAgICAgICAgICBHRU5NQVNLKDEsIDApCj4+ID4+ICsjZGVm aW5lIERSUF9UUlBfQ05UX0NMRUFSICAgICAgICAgICAgICAgR0VOTUFTSygxLCAwKQo+PiA+PiAr Cj4+ID4+ICsvKiBDb25maWcgcmVnaXN0ZXJzIG9mZnNldHMqLwo+PiA+PiArI2RlZmluZSBEUlBf RUNDX0VSUk9SX0NGRyAgICAgICAgICAgICAgIDB4MDAwNDAwMDAKPj4gPj4gKwo+PiA+PiArLyog VFJQLCBEUlAgaW50ZXJydXB0IHJlZ2lzdGVyIG9mZnNldHMgKi8KPj4gPj4gKyNkZWZpbmUgQ01O X0lOVEVSUlVQVF8wX0VOQUJMRSAgICAgICAgICAweDAwMDMwMDFDCj4+ID4+ICsjZGVmaW5lIENN Tl9JTlRFUlJVUFRfMl9FTkFCTEUgICAgICAgICAgMHgwMDAzMDAzQwo+PiA+PiArI2RlZmluZSBU UlBfSU5URVJSVVBUXzBfRU5BQkxFICAgICAgICAgIDB4MDAwMjA0ODgKPj4gPj4gKyNkZWZpbmUg RFJQX0lOVEVSUlVQVF9FTkFCTEUgICAgICAgICAgICAweDAwMDQxMDBDCj4+ID4+ICsKPj4gPj4g KyNkZWZpbmUgU0JfRVJST1JfVEhSRVNIT0xEICAgICAgICAgICAgICAweDEKPj4gPj4gKyNkZWZp bmUgU0JfRVJST1JfVEhSRVNIT0xEX1NISUZUICAgICAgICAyNAo+PiA+PiArI2RlZmluZSBTQl9E Ql9UUlBfSU5URVJSVVBUX0VOQUJMRSAgICAgIDB4Mwo+PiA+PiArI2RlZmluZSBUUlAwX0lOVEVS UlVQVF9FTkFCTEUgICAgICAgICAgIDB4MQo+PiA+PiArI2RlZmluZSBEUlAwX0lOVEVSUlVQVF9F TkFCTEUgICAgICAgICAgIEJJVCg2KQo+PiA+PiArI2RlZmluZSBTQl9EQl9EUlBfSU5URVJSVVBU X0VOQUJMRSAgICAgIDB4Mwo+PiA+PiArCj4+ID4+ICtlbnVtIHsKPj4gPj4gKyAgICAgICBMTEND X0RSQU1fQ0UgPSAwLAo+PiA+PiArICAgICAgIExMQ0NfRFJBTV9VRSwKPj4gPj4gKyAgICAgICBM TENDX1RSQU1fQ0UsCj4+ID4+ICsgICAgICAgTExDQ19UUkFNX1VFLAo+PiA+PiArICAgICAgIExM Q0NfRVJSX1RZUEVfTUFYID0gTExDQ19UUkFNX1VFICsgMSwKPj4gPgo+PiA+IFRoaXMgaXMgYSBu aXQsIG9yIHBlcmhhcHMgcGVyc29uYWwgcHJlZmVyZW5jZSwgYnV0IEkgcHJlZmVyIHRvIG5vdAo+ PiA+IGhhdmUgaW5pdGlhbGl6ZXJzIGZvciBzZW50aW5lbCB2YWx1ZXMsIHNpbmNlIGl0J3Mgb25l IG1vcmUgdGhpbmcKPj4gPiBzb21lb25lIGNvdWxkIGZvcmdldCB0byB1cGRhdGUgd2hlbiBhZGRp bmcgbmV3IHZhbHVlcy4KPj4gCj4+IEknbGwgZ2V0IHJpZCBvZiB0aGlzLCBJIHdhcyB1c2luZyB0 aGlzIG9uZSB0byBhbGxvY2F0ZSB0aGUgbWVtb3J5IGZvcgo+PiBsbGNjX2RyaXZfZGF0YS0+ZWRh Y19yZWcsIChzdHJ1Y3QgbGxjY19lZGFjX3JlZ19kYXRhKS4KPj4gQnV0IHRoZSBzdWdnZXN0aW9u IHdhcyB0byBpbml0aWFsaXplIHRoYXQgb25lIHN0YXRpY2FsbHkuCj4gCj4gU291bmRzIGdvb2Qu Cj4gCj4+IAo+PiAKPj4gPgo+PiA+PiArfTsKPj4gPj4gKwo+PiA+PiArc3RhdGljIGludCBxY29t X2xsY2NfY29yZV9zZXR1cChzdHJ1Y3QgcmVnbWFwICpsbGNjX2JjYXN0X3JlZ21hcCkKPj4gPj4g K3sKPj4gPj4gKyAgICAgICB1MzIgc2JfZXJyX3RocmVzaG9sZDsKPj4gPj4gKyAgICAgICBpbnQg cmV0Owo+PiA+PiArCj4+ID4+ICsgICAgICAgLyogRW5hYmxlIFRSUCBpbiBpbnN0YW5jZSAyIG9m IGNvbW1vbiBpbnRlcnJ1cHQgZW5hYmxlCj4+ID4+IHJlZ2lzdGVyICovCj4+ID4KPj4gPiBDYW4g d2UgZ2V0IGEgY29tbWVudCBleHBsYWluaW5nIHdoYXQncyBzbyBzcGVjaWFsIGFib3V0IGluc3Rh bmNlIDI/Cj4+ID4gSW5zdGFuY2VzIDEgYW5kIDMgZ2V0IG5vIGxvdmU/Cj4+IAo+PiBJJ2xsIHRy eSB0byBlbGFib3JhdGUgb24gdGhpcy4KPj4gCj4+ID4KPj4gPj4gKyAgICAgICByZXQgPSByZWdt YXBfdXBkYXRlX2JpdHMobGxjY19iY2FzdF9yZWdtYXAsCj4+ID4+IENNTl9JTlRFUlJVUFRfMl9F TkFCTEUsCj4+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSUDBfSU5URVJS VVBUX0VOQUJMRSwKPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJQMF9J TlRFUlJVUFRfRU5BQkxFKTsKPj4gPj4gKyAgICAgICBpZiAocmV0KQo+PiA+PiArICAgICAgICAg ICAgICAgcmV0dXJuIHJldDsKPj4gPj4gKwo+PiA+PiArICAgICAgIC8qIEVuYWJsZSBFQ0MgaW50 ZXJydXB0cyBvbiBUYWcgUmFtICovCj4+ID4+ICsgICAgICAgcmV0ID0gcmVnbWFwX3VwZGF0ZV9i aXRzKGxsY2NfYmNhc3RfcmVnbWFwLAo+PiA+PiBUUlBfSU5URVJSVVBUXzBfRU5BQkxFLAo+PiA+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQl9EQl9UUlBfSU5URVJSVVBUX0VO QUJMRSwKPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0JfREJfVFJQX0lO VEVSUlVQVF9FTkFCTEUpOwo+PiA+PiArICAgICAgIGlmIChyZXQpCj4+ID4+ICsgICAgICAgICAg ICAgICByZXR1cm4gcmV0Owo+PiA+PiArCj4+ID4+ICsgICAgICAgLyogRW5hYmxlIFNCIGVycm9y IGZvciBEYXRhIFJBTSAqLwo+PiA+PiArICAgICAgIHNiX2Vycl90aHJlc2hvbGQgPSAoU0JfRVJS T1JfVEhSRVNIT0xEIDw8Cj4+ID4+IFNCX0VSUk9SX1RIUkVTSE9MRF9TSElGVCk7Cj4+ID4+ICsg ICAgICAgcmV0ID0gcmVnbWFwX3dyaXRlKGxsY2NfYmNhc3RfcmVnbWFwLCBEUlBfRUNDX0VSUk9S X0NGRywKPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2JfZXJyX3RocmVzaG9sZCk7 Cj4+ID4+ICsgICAgICAgaWYgKHJldCkKPj4gPj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7 Cj4+ID4+ICsKPj4gPj4gKyAgICAgICAvKiBFbmFibGUgRFJQIGluIGluc3RhbmNlIDIgb2YgY29t bW9uIGludGVycnVwdCBlbmFibGUKPj4gPj4gcmVnaXN0ZXIgKi8KPj4gPj4gKyAgICAgICByZXQg PSByZWdtYXBfdXBkYXRlX2JpdHMobGxjY19iY2FzdF9yZWdtYXAsCj4+ID4+IENNTl9JTlRFUlJV UFRfMl9FTkFCTEUsCj4+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERSUDBf SU5URVJSVVBUX0VOQUJMRSwKPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RFJQMF9JTlRFUlJVUFRfRU5BQkxFKTsKPj4gPj4gKyAgICAgICBpZiAocmV0KQo+PiA+PiArICAg ICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4gPj4gKwo+PiA+PiArICAgICAgIC8qIEVuYWJsZSBF Q0MgaW50ZXJydXB0cyBvbiBEYXRhIFJhbSAqLwo+PiA+PiArICAgICAgIHJldCA9IHJlZ21hcF93 cml0ZShsbGNjX2JjYXN0X3JlZ21hcCwgRFJQX0lOVEVSUlVQVF9FTkFCTEUsCj4+ID4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgIFNCX0RCX0RSUF9JTlRFUlJVUFRfRU5BQkxFKTsKPj4gPj4g KyAgICAgICByZXR1cm4gcmV0Owo+PiA+PiArfQo+PiA+PiArCj4+ID4+ICsvKiBDbGVhciB0aGUg ZXJyb3IgaW50ZXJydXB0IGFuZCBjb3VudGVyIHJlZ2lzdGVycyAqLwo+PiA+PiArc3RhdGljIGlu dAo+PiA+PiArcWNvbV9sbGNjX2NsZWFyX2Vycm9yc19zdGF0dXMoaW50IGVycl90eXBlLCBzdHJ1 Y3QgbGxjY19kcnZfZGF0YQo+PiA+PiAqZHJ2KQo+PiA+Cj4+ID4gQW5vdGhlciBuaXQ6IGVycm9y c19zdGF0dXMgaXMga2luZCBvZiB3ZWlyZC4gTWF5YmUKPj4gPiBxY29tX2xsY2NfY2xlYXJfZXJy b3JzIG9yIHFjb21fbGxjY19jbGVhcl9lcnJvcl9zdGF0dXM/Cj4+IAo+PiBJJ2xsIHVwZGF0ZSB0 aGUgbmFtZS4KPj4gCj4+ID4KPj4gPj4gK3sKPj4gPj4gKyAgICAgICBpbnQgcmV0ID0gMDsKPj4g Pj4gKwo+PiA+PiArICAgICAgIHN3aXRjaCAoZXJyX3R5cGUpIHsKPj4gPj4gKyAgICAgICBjYXNl IExMQ0NfRFJBTV9DRToKPj4gPj4gKyAgICAgICBjYXNlIExMQ0NfRFJBTV9VRToKPj4gPj4gKyAg ICAgICAgICAgICAgIC8qIENsZWFyIHRoZSBpbnRlcnJ1cHQgKi8KPj4gPj4gKyAgICAgICAgICAg ICAgIHJldCA9IHJlZ21hcF93cml0ZShkcnYtPmJjYXN0X3JlZ21hcCwKPj4gPj4gRFJQX0lOVEVS UlVQVF9DTEVBUiwKPj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUlBf VFJQX0lOVF9DTEVBUik7Cj4+ID4+ICsgICAgICAgICAgICAgICBpZiAocmV0KQo+PiA+PiArICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+PiA+PiArCj4+ID4+ICsgICAgICAgICAg ICAgICAvKiBDbGVhciB0aGUgY291bnRlcnMgKi8KPj4gPj4gKyAgICAgICAgICAgICAgIHJldCA9 IHJlZ21hcF93cml0ZShkcnYtPmJjYXN0X3JlZ21hcCwKPj4gPj4gRFJQX0VDQ19FUlJPUl9DTlRS X0NMRUFSLAo+PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERSUF9UUlBf Q05UX0NMRUFSKTsKPj4gPj4gKyAgICAgICAgICAgICAgIGlmIChyZXQpCj4+ID4+ICsgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+ID4+ICsgICAgICAgICAgICAgICBicmVhazsK Pj4gPj4gKyAgICAgICBjYXNlIExMQ0NfVFJBTV9DRToKPj4gPj4gKyAgICAgICBjYXNlIExMQ0Nf VFJBTV9VRToKPj4gPj4gKyAgICAgICAgICAgICAgIHJldCA9IHJlZ21hcF93cml0ZShkcnYtPmJj YXN0X3JlZ21hcCwKPj4gPj4gVFJQX0lOVEVSUlVQVF8wX0NMRUFSLAo+PiA+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIERSUF9UUlBfSU5UX0NMRUFSKTsKPj4gPj4gKyAgICAg ICAgICAgICAgIGlmIChyZXQpCj4+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBy ZXQ7Cj4+ID4+ICsKPj4gPj4gKyAgICAgICAgICAgICAgIHJldCA9IHJlZ21hcF93cml0ZShkcnYt PmJjYXN0X3JlZ21hcCwKPj4gPj4gVFJQX0VDQ19FUlJPUl9DTlRSX0NMRUFSLAo+PiA+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERSUF9UUlBfQ05UX0NMRUFSKTsKPj4gPj4g KyAgICAgICAgICAgICAgIGlmIChyZXQpCj4+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiByZXQ7Cj4+ID4+ICsgICAgICAgICAgICAgICBicmVhazsKPj4gPgo+PiA+IEEgZGVmYXVs dCBjYXNlIHRoYXQgZXJyb3JzIG9yIGNvbXBsYWlucyBvciBib3RoIHdvdWxkIGJlIG5pY2UuCj4+ IAo+PiBPaywgSSBoYWQgdGhpcyB0aG91Z2h0IHRvbywgYnV0IHdlIG5ldmVyIHJ1biBpbnRvIHRo YXQgc2NlbmFyaW8sCj4+IHRoYXQncyB3ZSBkb24ndCBldmVyIGNhbGwgdGhpcyBmdW5jdGlvbiB3 aXRoIGFueSBvdGhlciB0eXBlcywKPj4gSGFkIGl0IGJlZW4gYW4gQVBJIGl0IG1ha2VzIHNlbnNl IHRvIGhhdmUgYSBkZWZhdWx0IGNhc2UuCj4+IFRoZSBpbnRlcm5hbCBmdW5jdGlvbnMgcmVxdWly ZSB0aGVtIHRvbyEgSSBkb24ndCBrbm93ISEKPj4gV2hhdCBkbyB5b3UgdGhpbms/Cj4+IEFzIHdl IHNheSwgaWYgaXQncyBnb29kIHRvIGhhdmUgaXQsIEknbGwgYWRkIGl0Lgo+IAo+IEkgcGVyc29u YWxseSBsaWtlIHRoZSBkZWZhdWx0IGNhc2UsIEkgZmluZCBpdCB0byBiZSBkZWZlbnNpdmUgYWdh aW5zdAo+IHNvbWVvbmUgYWRkaW5nIGNvZGUgbGF0ZXIgd2hvIHBhc3NlcyB0aGUgd3JvbmcgdmFs dWUgb3IgdHlwZSBkb3duLgo+IE90aGVycyBtaWdodCBkaXNhZ3JlZS4gSXQncyB1cCB0byB5b3Uu CgpJdCBtYWtlcyBzZW5zZSB0byBoYXZlIGEgZGVmZW5zaXZlIGNvZGUgYWdhaW5zdCBzb21lb25l IGFkZGluZyB0aGUgY29kZSAKbGF0ZXIsCkknbGwgYWRkIGl0Lgo=