From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marc Zyngier Subject: Re: [PATCH v2 1/6] thermal: armada: add overheat interrupt support Date: Fri, 23 Nov 2018 16:55:59 +0000 Message-ID: <2b2efaa3-8bfb-720b-e36c-9750661f29be@arm.com> References: <20181123161730.11289-1-miquel.raynal@bootlin.com> <20181123161730.11289-2-miquel.raynal@bootlin.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181123161730.11289-2-miquel.raynal@bootlin.com> Content-Language: en-US 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: Miquel Raynal , Gregory Clement , Jason Cooper , Andrew Lunn , Sebastian Hesselbarth , Zhang Rui , Eduardo Valentin , Daniel Lezcano Cc: Mark Rutland , devicetree@vger.kernel.org, linux-pm@vger.kernel.org, Antoine Tenart , Catalin Marinas , Will Deacon , Russell King , Maxime Chevallier , Nadav Haklai , David Sniatkiwicz , Rob Herring , Thomas Petazzoni , linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org T24gMjMvMTEvMjAxOCAxNjoxNywgTWlxdWVsIFJheW5hbCB3cm90ZToKPiBUaGUgSVAgY2FuIG1h bmFnZSB0byB0cmlnZ2VyIGludGVycnVwdHMgb24gb3ZlcmhlYXQgc2l0dWF0aW9uIGZyb20gYWxs Cj4gdGhlIHNlbnNvcnMuCj4gCj4gSG93ZXZlciwgdGhlIGludGVycnVwdCBzb3VyY2UgY2hhbmdl cyBhbG9uZyB3aXRoIHRoZSBsYXN0IHNlbGVjdGVkCj4gc291cmNlIChpZS4gdGhlIGxhc3QgcmVh ZCBzZW5zb3IpLCB3aGljaCBpcyBhbiBpbmNvbnNpc3RlbnQgYmVoYXZpb3IuCj4gQXZvaWQgcG9z c2libGUgZ2xpdGNoZXMgYnkgYWx3YXlzIHNlbGVjdGluZyBiYWNrIG9ubHkgb25lIGNoYW5uZWwg d2hpY2gKPiB3aWxsIHRoZW4gYmUgcmVmZXJlbmNlZCBhcyB0aGUgIm92ZXJoZWF0X3NlbnNvciIg KGFyYml0cmFyaWx5OiB0aGUgZmlyc3QKPiBpbiB0aGUgRFQgd2hpY2ggaGFzIGEgY3JpdGljYWwg dHJpcCBwb2ludCBmaWxsZWQgaW4pLgo+IAo+IEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIHNjYW4g b2YgYWxsIHRoZXJtYWwgem9uZSBub2RlcyBkaWQgbm90IGJyaW5nIGEKPiBjcml0aWNhbCB0cmlw IHBvaW50IGZyb20gd2hpY2ggdGhlIG92ZXJoZWF0IGludGVycnVwdCBjb3VsZCBiZQo+IGNvbmZp Z3VyZWQuIEluIHRoaXMgY2FzZSBqdXN0IGNvbXBsYWluIGJ1dCBkbyBub3QgZmFpbCB0aGUgcHJv YmUuCj4gCj4gQWxzbyBkaXNhYmxlIHNlbnNvciBzd2l0Y2ggZHVyaW5nIG92ZXJoZWF0IHNpdHVh dGlvbnMgYmVjYXVzZSBjaGFuZ2luZwo+IHRoZSBjaGFubmVsIHdoaWxlIHRoZSBzeXN0ZW0gaXMg dG9vIGhvdCBjb3VsZCBjbGVhciB0aGUgb3ZlcmhlYXQgc3RhdGUKPiBieSBjaGFuZ2luZyB0aGUg c291cmNlIHdoaWxlIHRoZSB0ZW1wZXJhdHVyZSBpcyBzdGlsbCB2ZXJ5IGhpZ2guCj4gCj4gRXZl biBpZiB0aGUgb3ZlcmhlYXQgc3RhdGUgaXMgbm90IGRlY2xhcmVkLCBvdmVyaGVhdCBpbnRlcnJ1 cHQgbXVzdCBiZQo+IGNsZWFyZWQgYnkgcmVhZGluZyB0aGUgREZYIGludGVycnVwdCBjYXVzZSBf YWZ0ZXJfIHRoZSB0ZW1wZXJhdHVyZSBoYXMKPiBmYWxsZW4gZG93biB0byB0aGUgbG93IHRocmVz aG9sZCwgb3RoZXJ3aXNlIGZ1dHVyZSBwb3NzaWJsZSBpbnRlcnJ1cHRzCj4gd291bGQgbm90IGJl IHNlcnZlZC4gQSB3b3JrIHBvbGxzIHRoZSBjb3JyZXNwb25kaW5nIHJlZ2lzdGVyIHVudGlsIHRo ZQo+IG92ZXJoZWF0IGZsYWcgZ2V0cyBjbGVhcmVkIGluIHRoaXMgY2FzZS4KPiAKPiBTdWdnZXN0 ZWQtYnk6IERhdmlkIFNuaWF0a2l3aWN6IDxkYXZpZHNuQG1hcnZlbGwuY29tPgo+IFNpZ25lZC1v ZmYtYnk6IE1pcXVlbCBSYXluYWwgPG1pcXVlbC5yYXluYWxAYm9vdGxpbi5jb20+Cj4gLS0tCj4g IGRyaXZlcnMvdGhlcm1hbC9hcm1hZGFfdGhlcm1hbC5jIHwgMjcwICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0KPiAgMSBmaWxlIGNoYW5nZWQsIDI2OSBpbnNlcnRpb25zKCspLCAxIGRl bGV0aW9uKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGhlcm1hbC9hcm1hZGFfdGhlcm1h bC5jIGIvZHJpdmVycy90aGVybWFsL2FybWFkYV90aGVybWFsLmMKPiBpbmRleCA5MmY2N2Q0MGYy ZTkuLjU1Y2ZhZWUwZGE3NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3RoZXJtYWwvYXJtYWRhX3Ro ZXJtYWwuYwo+ICsrKyBiL2RyaXZlcnMvdGhlcm1hbC9hcm1hZGFfdGhlcm1hbC5jCj4gQEAgLTI2 LDYgKzI2LDExIEBACj4gICNpbmNsdWRlIDxsaW51eC9pb3BvbGwuaD4KPiAgI2luY2x1ZGUgPGxp bnV4L21mZC9zeXNjb24uaD4KPiAgI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgo+ICsjaW5jbHVk ZSA8bGludXgvaW50ZXJydXB0Lmg+Cj4gKwo+ICsjaW5jbHVkZSAidGhlcm1hbF9jb3JlLmgiCj4g Kwo+ICsjZGVmaW5lIFRPX01DRUxTSVVTKGMpCQkJKChjKSAqIDEwMDApCj4gIAo+ICAvKiBUaGVy bWFsIE1hbmFnZXIgQ29udHJvbCBhbmQgU3RhdHVzIFJlZ2lzdGVyICovCj4gICNkZWZpbmUgUE1V X1REQzBfU1dfUlNUX01BU0sJCSgweDEgPDwgMSkKPiBAQCAtNjEsOSArNjYsMTMgQEAKPiAgI2Rl ZmluZSBDT05UUk9MMV9UU0VOX0FWR19NQVNLCQkweDcKPiAgI2RlZmluZSBDT05UUk9MMV9FWFRf VFNFTl9TV19SRVNFVAlCSVQoNykKPiAgI2RlZmluZSBDT05UUk9MMV9FWFRfVFNFTl9IV19SRVNF VG4JQklUKDgpCj4gKyNkZWZpbmUgQ09OVFJPTDFfVFNFTl9JTlRfRU4JCUJJVCgyNSkKPiArI2Rl ZmluZSBDT05UUk9MMV9UU0VOX1NFTEVDVF9PRkYJMjEKPiArI2RlZmluZSBDT05UUk9MMV9UU0VO X1NFTEVDVF9NQVNLCTB4Mwo+ICAKPiAgI2RlZmluZSBTVEFUVVNfUE9MTF9QRVJJT0RfVVMJCTEw MDAKPiAgI2RlZmluZSBTVEFUVVNfUE9MTF9USU1FT1VUX1VTCQkxMDAwMDAKPiArI2RlZmluZSBP VkVSSEVBVF9JTlRfUE9MTF9ERUxBWV9NUwkxMDAwCj4gIAo+ICBzdHJ1Y3QgYXJtYWRhX3RoZXJt YWxfZGF0YTsKPiAgCj4gQEAgLTc1LDcgKzg0LDExIEBAIHN0cnVjdCBhcm1hZGFfdGhlcm1hbF9w cml2IHsKPiAgCS8qIHNlcmlhbGl6ZSB0ZW1wZXJhdHVyZSByZWFkcy91cGRhdGVzICovCj4gIAlz dHJ1Y3QgbXV0ZXggdXBkYXRlX2xvY2s7Cj4gIAlzdHJ1Y3QgYXJtYWRhX3RoZXJtYWxfZGF0YSAq ZGF0YTsKPiArCXN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICpvdmVyaGVhdF9zZW5zb3I7Cj4g KwlpbnQgaW50ZXJydXB0X3NvdXJjZTsKPiAgCWludCBjdXJyZW50X2NoYW5uZWw7Cj4gKwlsb25n IGN1cnJlbnRfdGhyZXNob2xkOwo+ICsJbG9uZyBjdXJyZW50X2h5c3RlcmVzaXM7Cj4gIH07Cj4g IAo+ICBzdHJ1Y3QgYXJtYWRhX3RoZXJtYWxfZGF0YSB7Cj4gQEAgLTkzLDEyICsxMDYsMjAgQEAg c3RydWN0IGFybWFkYV90aGVybWFsX2RhdGEgewo+ICAJLyogUmVnaXN0ZXIgc2hpZnQgYW5kIG1h c2sgdG8gYWNjZXNzIHRoZSBzZW5zb3IgdGVtcGVyYXR1cmUgKi8KPiAgCXVuc2lnbmVkIGludCB0 ZW1wX3NoaWZ0Owo+ICAJdW5zaWduZWQgaW50IHRlbXBfbWFzazsKPiArCXVuc2lnbmVkIGludCB0 aHJlc2hfc2hpZnQ7Cj4gKwl1bnNpZ25lZCBpbnQgaHlzdF9zaGlmdDsKPiArCXVuc2lnbmVkIGlu dCBoeXN0X21hc2s7Cj4gIAl1MzIgaXNfdmFsaWRfYml0Owo+ICAKPiAgCS8qIFN5c2NvbiBhY2Nl c3MgKi8KPiAgCXVuc2lnbmVkIGludCBzeXNjb25fY29udHJvbDBfb2ZmOwo+ICAJdW5zaWduZWQg aW50IHN5c2Nvbl9jb250cm9sMV9vZmY7Cj4gIAl1bnNpZ25lZCBpbnQgc3lzY29uX3N0YXR1c19v ZmY7Cj4gKwl1bnNpZ25lZCBpbnQgZGZ4X2lycV9jYXVzZV9vZmY7Cj4gKwl1bnNpZ25lZCBpbnQg ZGZ4X2lycV9tYXNrX29mZjsKPiArCXVuc2lnbmVkIGludCBkZnhfb3ZlcmhlYXRfaXJxOwo+ICsJ dW5zaWduZWQgaW50IGRmeF9zZXJ2ZXJfaXJxX21hc2tfb2ZmOwo+ICsJdW5zaWduZWQgaW50IGRm eF9zZXJ2ZXJfaXJxX2VuOwo+ICAKPiAgCS8qIE9uZSBzZW5zb3IgaXMgaW4gdGhlIHRoZXJtYWwg SUMsIHRoZSBvdGhlcnMgYXJlIGluIHRoZSBDUFVzIGlmIGFueSAqLwo+ICAJdW5zaWduZWQgaW50 IGNwdV9ucjsKPiBAQCAtMjcyLDYgKzI5Myw0MSBAQCBzdGF0aWMgYm9vbCBhcm1hZGFfaXNfdmFs aWQoc3RydWN0IGFybWFkYV90aGVybWFsX3ByaXYgKnByaXYpCj4gIAlyZXR1cm4gcmVnICYgcHJp di0+ZGF0YS0+aXNfdmFsaWRfYml0Owo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZCBhcm1hZGFfZW5h YmxlX292ZXJoZWF0X2ludGVycnVwdChzdHJ1Y3QgYXJtYWRhX3RoZXJtYWxfcHJpdiAqcHJpdikK PiArewo+ICsJc3RydWN0IGFybWFkYV90aGVybWFsX2RhdGEgKmRhdGEgPSBwcml2LT5kYXRhOwo+ ICsJdTMyIHJlZzsKPiArCj4gKwkvKiBDbGVhciBERlggdGVtcGVyYXR1cmUgSVJRIGNhdXNlICov Cj4gKwlyZWdtYXBfcmVhZChwcml2LT5zeXNjb24sIGRhdGEtPmRmeF9pcnFfY2F1c2Vfb2ZmLCAm cmVnKTsKPiArCj4gKwkvKiBFbmFibGUgREZYIFRlbXBlcmF0dXJlIElSUSAqLwo+ICsJcmVnbWFw X3JlYWQocHJpdi0+c3lzY29uLCBkYXRhLT5kZnhfaXJxX21hc2tfb2ZmLCAmcmVnKTsKPiArCXJl ZyB8PSBkYXRhLT5kZnhfb3ZlcmhlYXRfaXJxOwo+ICsJcmVnbWFwX3dyaXRlKHByaXYtPnN5c2Nv biwgZGF0YS0+ZGZ4X2lycV9tYXNrX29mZiwgcmVnKTsKPiArCj4gKwkvKiBFbmFibGUgREZYIHNl cnZlciBJUlEgKi8KPiArCXJlZ21hcF9yZWFkKHByaXYtPnN5c2NvbiwgZGF0YS0+ZGZ4X3NlcnZl cl9pcnFfbWFza19vZmYsICZyZWcpOwo+ICsJcmVnIHw9IGRhdGEtPmRmeF9zZXJ2ZXJfaXJxX2Vu Owo+ICsJcmVnbWFwX3dyaXRlKHByaXYtPnN5c2NvbiwgZGF0YS0+ZGZ4X3NlcnZlcl9pcnFfbWFz a19vZmYsIHJlZyk7Cj4gKwo+ICsJLyogRW5hYmxlIG92ZXJoZWF0IGludGVycnVwdCAqLwo+ICsJ cmVnbWFwX3JlYWQocHJpdi0+c3lzY29uLCBkYXRhLT5zeXNjb25fY29udHJvbDFfb2ZmLCAmcmVn KTsKPiArCXJlZyB8PSBDT05UUk9MMV9UU0VOX0lOVF9FTjsKPiArCXJlZ21hcF93cml0ZShwcml2 LT5zeXNjb24sIGRhdGEtPnN5c2Nvbl9jb250cm9sMV9vZmYsIHJlZyk7Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIF9fbWF5YmVfdW51c2VkCj4gK2FybWFkYV9kaXNhYmxlX292ZXJoZWF0X2ludGVy cnVwdChzdHJ1Y3QgYXJtYWRhX3RoZXJtYWxfcHJpdiAqcHJpdikKPiArewo+ICsJc3RydWN0IGFy bWFkYV90aGVybWFsX2RhdGEgKmRhdGEgPSBwcml2LT5kYXRhOwo+ICsJdTMyIHJlZzsKPiArCj4g KwlyZWdtYXBfcmVhZChwcml2LT5zeXNjb24sIGRhdGEtPnN5c2Nvbl9jb250cm9sMV9vZmYsICZy ZWcpOwo+ICsJcmVnICY9IH5DT05UUk9MMV9UU0VOX0lOVF9FTjsKPiArCXJlZ21hcF93cml0ZShw cml2LT5zeXNjb24sIGRhdGEtPnN5c2Nvbl9jb250cm9sMV9vZmYsIHJlZyk7Cj4gK30KPiArCj4g IC8qIFRoZXJlIGlzIGN1cnJlbnRseSBubyBib2FyZCB3aXRoIG1vcmUgdGhhbiBvbmUgc2Vuc29y IHBlciBjaGFubmVsICovCj4gIHN0YXRpYyBpbnQgYXJtYWRhX3NlbGVjdF9jaGFubmVsKHN0cnVj dCBhcm1hZGFfdGhlcm1hbF9wcml2ICpwcml2LCBpbnQgY2hhbm5lbCkKPiAgewo+IEBAIC0zODgs NiArNDQ0LDE2IEBAIHN0YXRpYyBpbnQgYXJtYWRhX2dldF90ZW1wKHZvaWQgKl9zZW5zb3IsIGlu dCAqdGVtcCkKPiAgCj4gIAkvKiBEbyB0aGUgYWN0dWFsIHJlYWRpbmcgKi8KPiAgCXJldCA9IGFy bWFkYV9yZWFkX3NlbnNvcihwcml2LCB0ZW1wKTsKPiArCWlmIChyZXQpCj4gKwkJZ290byB1bmxv Y2tfbXV0ZXg7Cj4gKwo+ICsJLyoKPiArCSAqIFNlbGVjdCBiYWNrIHRoZSBpbnRlcnJ1cHQgc291 cmNlIGNoYW5uZWwgZnJvbSB3aGljaCBhIHBvdGVudGlhbAo+ICsJICogY3JpdGljYWwgdHJpcCBw b2ludCBoYXMgYmVlbiBzZXQuCj4gKwkgKi8KPiArCXJldCA9IGFybWFkYV9zZWxlY3RfY2hhbm5l bChwcml2LCBwcml2LT5pbnRlcnJ1cHRfc291cmNlKTsKPiArCWlmIChyZXQpCj4gKwkJZ290byB1 bmxvY2tfbXV0ZXg7CgpEbyB5b3UgcmVhbGx5IG5lZWQgYSAiZ290byIgdG8gdGhlIGltbWVkaWF0 ZWx5IGZvbGxvd2luZyBsaW5lPwoKPiAgCj4gIHVubG9ja19tdXRleDoKPiAgCW11dGV4X3VubG9j aygmcHJpdi0+dXBkYXRlX2xvY2spOwo+IEBAIC0zOTksNiArNDY1LDEyMSBAQCBzdGF0aWMgc3Ry dWN0IHRoZXJtYWxfem9uZV9vZl9kZXZpY2Vfb3BzIG9mX29wcyA9IHsKPiAgCS5nZXRfdGVtcCA9 IGFybWFkYV9nZXRfdGVtcCwKPiAgfTsKPiAgCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgYXJtYWRh X21jX3RvX3JlZ190ZW1wKHN0cnVjdCBhcm1hZGFfdGhlcm1hbF9kYXRhICpkYXRhLAo+ICsJCQkJ CSAgdW5zaWduZWQgaW50IHRlbXBfbWMpCj4gK3sKPiArCXM2NCBiID0gZGF0YS0+Y29lZl9iOwo+ ICsJczY0IG0gPSBkYXRhLT5jb2VmX207Cj4gKwlzNjQgZGl2ID0gZGF0YS0+Y29lZl9kaXY7Cj4g Kwl1bnNpZ25lZCBpbnQgc2FtcGxlOwo+ICsKPiArCWlmIChkYXRhLT5pbnZlcnRlZCkKPiArCQlz YW1wbGUgPSBkaXZfczY0KCgodGVtcF9tYyAqIGRpdikgKyBiKSwgbSk7Cj4gKwllbHNlCj4gKwkJ c2FtcGxlID0gZGl2X3M2NCgoYiAtICh0ZW1wX21jICogZGl2KSksIG0pOwo+ICsKPiArCXJldHVy biBzYW1wbGUgJiBkYXRhLT50ZW1wX21hc2s7Cj4gK30KPiArCj4gK3N0YXRpYyB1bnNpZ25lZCBp bnQgYXJtYWRhX21jX3RvX3JlZ19oeXN0KHN0cnVjdCBhcm1hZGFfdGhlcm1hbF9kYXRhICpkYXRh LAo+ICsJCQkJCSAgdW5zaWduZWQgaW50IGh5c3RfbWMpCj4gK3sKPiArCS8qCj4gKwkgKiBUaGUg ZG9jdW1lbnRhdGlvbiBzdGF0ZXM6Cj4gKwkgKiBoaWdoL2xvdyB3YXRlcm1hcmsgPSB0aHJlc2hv bGQgKy8tIDAuNDc2MSAqIDJeKGh5c3RlcmVzaXMgKyAyKQo+ICsJICogd2hpY2ggaXMgdGhlIG1h dGhlbWF0aWNhbCBkZXJpdmF0aW9uIGZvcjoKPiArCSAqIDB4MCA8PT4gMS45wrBDLCAweDEgPD0+ IDMuOMKwQywgMHgyIDw9PiA3LjbCsEMsIDB4MyA8PT4gMTUuMgo+ICsJICovCj4gKwl1bnNpZ25l ZCBpbnQgaHlzdF9sZXZlbHNfbWNbXSA9IHsxOTAwLCAzODAwLCA3NjAwLCAxNTIwMH07CgpXaHkg aXNuJ3QgdGhpcyBhIHN0YXRpYyBhcnJheSByYXRoZXIgdGhhbiBzb21ldGhpbmcgeW91IGhhdmUg dG8gcHVzaCBvbgp0aGUgc3RhY2sgZWFjaCB0aW1lIHlvdSBleGVjdXRlIHRoaXMgZnVuY3Rpb24/ Cgo+ICsJaW50IGk7Cj4gKwo+ICsJLyoKPiArCSAqIFdlIHdpbGwgYWx3YXlzIHRha2UgdGhlIHNt YWxsZXN0IHBvc3NpYmxlIGh5c3RlcmVzaXMgdG8gYXZvaWQgcmlza2luZwo+ICsJICogdGhlIGhh cmR3YXJlIGludGVncml0eSBieSBlbmxhcmdpbmcgdGhlIHRocmVzaG9sZCBieSArOMKwQyBpbiB0 aGUKPiArCSAqIHdvcnN0IGNhc2UuCj4gKwkgKi8KPiArCWZvciAoaSA9IEFSUkFZX1NJWkUoaHlz dF9sZXZlbHNfbWMpIC0gMTsgaSA+IDA7IGktLSkKPiArCQlpZiAoaHlzdF9tYyA+PSBoeXN0X2xl dmVsc19tY1tpXSkKPiArCQkJYnJlYWs7Cj4gKwo+ICsJcmV0dXJuIGkgJiBkYXRhLT5oeXN0X21h c2s7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGFybWFkYV9zZXRfb3ZlcmhlYXRfdGhyZXNob2xk cyhzdHJ1Y3QgYXJtYWRhX3RoZXJtYWxfcHJpdiAqcHJpdiwKPiArCQkJCQkgICBpbnQgdGhyZXNo X21jLCBpbnQgaHlzdF9tYykKPiArewo+ICsJc3RydWN0IGFybWFkYV90aGVybWFsX2RhdGEgKmRh dGEgPSBwcml2LT5kYXRhOwo+ICsJdW5zaWduZWQgaW50IHRocmVzaG9sZCA9IGFybWFkYV9tY190 b19yZWdfdGVtcChkYXRhLCB0aHJlc2hfbWMpOwo+ICsJdW5zaWduZWQgaW50IGh5c3RlcmVzaXMg PSBhcm1hZGFfbWNfdG9fcmVnX2h5c3QoZGF0YSwgaHlzdF9tYyk7Cj4gKwl1MzIgY3RybDE7Cj4g Kwo+ICsJcmVnbWFwX3JlYWQocHJpdi0+c3lzY29uLCBkYXRhLT5zeXNjb25fY29udHJvbDFfb2Zm LCAmY3RybDEpOwo+ICsKPiArCS8qIFNldCBUaHJlc2hvbGQgKi8KPiArCWlmICh0aHJlc2hfbWMg Pj0gMCkgewo+ICsJCWN0cmwxICY9IH4oZGF0YS0+dGVtcF9tYXNrIDw8IGRhdGEtPnRocmVzaF9z aGlmdCk7Cj4gKwkJY3RybDEgfD0gdGhyZXNob2xkIDw8IGRhdGEtPnRocmVzaF9zaGlmdDsKPiAr CQlwcml2LT5jdXJyZW50X3RocmVzaG9sZCA9IHRocmVzaF9tYzsKPiArCX0KPiArCj4gKwkvKiBT ZXQgSHlzdGVyZXNpcyAqLwo+ICsJaWYgKGh5c3RfbWMgPj0gMCkgewo+ICsJCWN0cmwxICY9IH4o ZGF0YS0+aHlzdF9tYXNrIDw8IGRhdGEtPmh5c3Rfc2hpZnQpOwo+ICsJCWN0cmwxIHw9IGh5c3Rl cmVzaXMgPDwgZGF0YS0+aHlzdF9zaGlmdDsKPiArCQlwcml2LT5jdXJyZW50X2h5c3RlcmVzaXMg PSBoeXN0X21jOwo+ICsJfQo+ICsKPiArCXJlZ21hcF93cml0ZShwcml2LT5zeXNjb24sIGRhdGEt PnN5c2Nvbl9jb250cm9sMV9vZmYsIGN0cmwxKTsKPiArfQo+ICsKPiArc3RhdGljIGlycXJldHVy bl90IGFybWFkYV9vdmVyaGVhdF9pc3IoaW50IGlycSwgdm9pZCAqYmxvYikKPiArewo+ICsJLyoK PiArCSAqIERpc2FibGUgdGhlIElSUSBhbmQgY29udGludWUgaW4gdGhyZWFkIGNvbnRleHQgKHRo ZXJtYWwgY29yZQo+ICsJICogbm90aWZpY2F0aW9uIGFuZCB0ZW1wZXJhdHVyZSBtb25pdG9yaW5n KS4KPiArCSAqLwo+ICsJZGlzYWJsZV9pcnFfbm9zeW5jKGlycSk7Cj4gKwo+ICsJcmV0dXJuIElS UV9XQUtFX1RIUkVBRDsKPiArfQo+ICsKPiArc3RhdGljIGlycXJldHVybl90IGFybWFkYV9vdmVy aGVhdF9pc3JfdGhyZWFkKGludCBpcnEsIHZvaWQgKmJsb2IpCj4gK3sKPiArCXN0cnVjdCBhcm1h ZGFfdGhlcm1hbF9wcml2ICpwcml2ID0gKHN0cnVjdCBhcm1hZGFfdGhlcm1hbF9wcml2ICopYmxv YjsKClVubmVjZXNzYXJ5IGNhc3QuCgo+ICsJaW50IGxvd190aHJlc2hvbGQgPSBwcml2LT5jdXJy ZW50X3RocmVzaG9sZCAtIHByaXYtPmN1cnJlbnRfaHlzdGVyZXNpczsKPiArCWludCB0ZW1wZXJh dHVyZTsKPiArCXUzMiBkdW1teTsKPiArCWludCByZXQ7Cj4gKwo+ICsJLyogTm90aWZ5IHRoZSBj b3JlIGluIHRocmVhZCBjb250ZXh0ICovCj4gKwl0aGVybWFsX3pvbmVfZGV2aWNlX3VwZGF0ZShw cml2LT5vdmVyaGVhdF9zZW5zb3IsCj4gKwkJCQkgICBUSEVSTUFMX0VWRU5UX1VOU1BFQ0lGSUVE KTsKPiArCj4gKwkvKgo+ICsJICogVGhlIG92ZXJoZWF0IGludGVycnVwdCBtdXN0IGJlIGNsZWFy ZWQgYnkgcmVhZGluZyB0aGUgREZYIGludGVycnVwdAo+ICsJICogY2F1c2UgX2FmdGVyXyB0aGUg dGVtcGVyYXR1cmUgaGFzIGZhbGxlbiBkb3duIHRvIHRoZSBsb3cgdGhyZXNob2xkLgo+ICsJICog T3RoZXJ3aXNlIGZ1dHVyZSBpbnRlcnJ1cHRzIG1pZ2h0IG5vdCBiZSBzZXJ2ZWQuCj4gKwkgKi8K PiArCWRvIHsKPiArCQltc2xlZXAoT1ZFUkhFQVRfSU5UX1BPTExfREVMQVlfTVMpOwo+ICsJCW11 dGV4X2xvY2soJnByaXYtPnVwZGF0ZV9sb2NrKTsKPiArCQlyZXQgPSBhcm1hZGFfcmVhZF9zZW5z b3IocHJpdiwgJnRlbXBlcmF0dXJlKTsKPiArCQltdXRleF91bmxvY2soJnByaXYtPnVwZGF0ZV9s b2NrKTsKPiArCQlpZiAocmV0KQo+ICsJCQlyZXR1cm4gcmV0OwoKSG93IHdpbGwgdGhlIGludGVy cnVwdCBmaXJlIGFnYWluIGlmIHlvdSBleGl0IHdpdGhvdXQgcmUtZW5hYmxpbmcgaXQ/IElzCiJy ZXQiIGd1YXJhbnRlZWQgdG8gYmUgYSB2YWxpZCBpcnFyZXR1cm5fdD8KCj4gKwl9IHdoaWxlICh0 ZW1wZXJhdHVyZSA+PSBsb3dfdGhyZXNob2xkKTsKPiArCj4gKwlyZWdtYXBfcmVhZChwcml2LT5z eXNjb24sIHByaXYtPmRhdGEtPmRmeF9pcnFfY2F1c2Vfb2ZmLCAmZHVtbXkpOwo+ICsKPiArCS8q IE5vdGlmeSB0aGUgdGhlcm1hbCBjb3JlIHRoYXQgdGhlIHRlbXBlcmF0dXJlIGlzIGFjY2VwdGFi bGUgYWdhaW4gKi8KPiArCXRoZXJtYWxfem9uZV9kZXZpY2VfdXBkYXRlKHByaXYtPm92ZXJoZWF0 X3NlbnNvciwKPiArCQkJCSAgIFRIRVJNQUxfRVZFTlRfVU5TUEVDSUZJRUQpOwo+ICsKPiArCWVu YWJsZV9pcnEoaXJxKTsKPiArCj4gKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cj4gK30KPiArCj4gIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgYXJtYWRhX3RoZXJtYWxfZGF0YSBhcm1hZGF4cF9kYXRhID0gewo+ ICAJLmluaXQgPSBhcm1hZGF4cF9pbml0LAo+ICAJLnRlbXBfc2hpZnQgPSAxMCwKPiBAQCAtNDU0 LDYgKzYzNSw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJtYWRhX3RoZXJtYWxfZGF0YSBhcm1h ZGFfYXA4MDZfZGF0YSA9IHsKPiAgCS5pc192YWxpZF9iaXQgPSBCSVQoMTYpLAo+ICAJLnRlbXBf c2hpZnQgPSAwLAo+ICAJLnRlbXBfbWFzayA9IDB4M2ZmLAo+ICsJLnRocmVzaF9zaGlmdCA9IDMs Cj4gKwkuaHlzdF9zaGlmdCA9IDE5LAo+ICsJLmh5c3RfbWFzayA9IDB4MywKPiAgCS5jb2VmX2Ig PSAtMTUwMDAwTEwsCj4gIAkuY29lZl9tID0gNDIzVUxMLAo+ICAJLmNvZWZfZGl2ID0gMSwKPiBA QCAtNDYyLDYgKzY0NiwxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFybWFkYV90aGVybWFsX2Rh dGEgYXJtYWRhX2FwODA2X2RhdGEgPSB7Cj4gIAkuc3lzY29uX2NvbnRyb2wwX29mZiA9IDB4ODQs Cj4gIAkuc3lzY29uX2NvbnRyb2wxX29mZiA9IDB4ODgsCj4gIAkuc3lzY29uX3N0YXR1c19vZmYg PSAweDhDLAo+ICsJLmRmeF9pcnFfY2F1c2Vfb2ZmID0gMHgxMDgsCj4gKwkuZGZ4X2lycV9tYXNr X29mZiA9IDB4MTBDLAo+ICsJLmRmeF9vdmVyaGVhdF9pcnEgPSBCSVQoMjIpLAo+ICsJLmRmeF9z ZXJ2ZXJfaXJxX21hc2tfb2ZmID0gMHgxMDQsCj4gKwkuZGZ4X3NlcnZlcl9pcnFfZW4gPSBCSVQo MSksCj4gIAkuY3B1X25yID0gNCwKPiAgfTsKPiAgCj4gQEAgLTQ3MCw2ICs2NTksOSBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGFybWFkYV90aGVybWFsX2RhdGEgYXJtYWRhX2NwMTEwX2RhdGEgPSB7 Cj4gIAkuaXNfdmFsaWRfYml0ID0gQklUKDEwKSwKPiAgCS50ZW1wX3NoaWZ0ID0gMCwKPiAgCS50 ZW1wX21hc2sgPSAweDNmZiwKPiArCS50aHJlc2hfc2hpZnQgPSAxNiwKPiArCS5oeXN0X3NoaWZ0 ID0gMjYsCj4gKwkuaHlzdF9tYXNrID0gMHgzLAo+ICAJLmNvZWZfYiA9IDExNzI0OTkxMDBVTEws Cj4gIAkuY29lZl9tID0gMjAwMDA5NlVMTCwKPiAgCS5jb2VmX2RpdiA9IDQyMDEsCj4gQEAgLTQ3 Nyw2ICs2NjksMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcm1hZGFfdGhlcm1hbF9kYXRhIGFy bWFkYV9jcDExMF9kYXRhID0gewo+ICAJLnN5c2Nvbl9jb250cm9sMF9vZmYgPSAweDcwLAo+ICAJ LnN5c2Nvbl9jb250cm9sMV9vZmYgPSAweDc0LAo+ICAJLnN5c2Nvbl9zdGF0dXNfb2ZmID0gMHg3 OCwKPiArCS5kZnhfaXJxX2NhdXNlX29mZiA9IDB4MTA4LAo+ICsJLmRmeF9pcnFfbWFza19vZmYg PSAweDEwQywKPiArCS5kZnhfb3ZlcmhlYXRfaXJxID0gQklUKDIwKSwKPiArCS5kZnhfc2VydmVy X2lycV9tYXNrX29mZiA9IDB4MTA0LAo+ICsJLmRmeF9zZXJ2ZXJfaXJxX2VuID0gQklUKDEpLAo+ ICB9Owo+ICAKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYXJtYWRhX3RoZXJt YWxfaWRfdGFibGVbXSA9IHsKPiBAQCAtNTkyLDYgKzc4OSw0OCBAQCBzdGF0aWMgdm9pZCBhcm1h ZGFfc2V0X3NhbmVfbmFtZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAo+ICAJfSB3aGls ZSAoaW5zYW5lX2NoYXIpOwo+ICB9Cj4gIAo+ICsvKgo+ICsgKiBUaGUgSVAgY2FuIG1hbmFnZSB0 byB0cmlnZ2VyIGludGVycnVwdHMgb24gb3ZlcmhlYXQgc2l0dWF0aW9uIGZyb20gYWxsIHRoZQo+ ICsgKiBzZW5zb3JzLiBIb3dldmVyLCB0aGUgaW50ZXJydXB0IHNvdXJjZSBjaGFuZ2VzIGFsb25n IHdpdGggdGhlIGxhc3Qgc2VsZWN0ZWQKPiArICogc291cmNlIChpZS4gdGhlIGxhc3QgcmVhZCBz ZW5zb3IpLCB3aGljaCBpcyBhbiBpbmNvbnNpc3RlbnQgYmVoYXZpb3IuIEF2b2lkCj4gKyAqIHBv c3NpYmxlIGdsaXRjaGVzIGJ5IGFsd2F5cyBzZWxlY3RpbmcgYmFjayBvbmx5IG9uZSBjaGFubmVs IChhcmJpdHJhcmlseTogdGhlCj4gKyAqIGZpcnN0IGluIHRoZSBEVCB3aGljaCBoYXMgYSBjcml0 aWNhbCB0cmlwIHBvaW50KS4gV2UgYWxzbyBkaXNhYmxlIHNlbnNvcgoKVGhlIERUIGRvZXNuJ3Qg c2VlbSB0byAqbWFuZGF0ZSogdGhpcy4gU2hvdWxkIGl0PyBEb2VzIGl0IGFsc28gbWVhbiB0aGF0 CnlvdSBjYW4gb25seSBoYXZlIGEgc2luZ2xlIGNyaXRpY2FsIHBvaW50IHRoYXQgd2lsbCBnZW5l cmF0ZSBhbgppbnRlcnJ1cHQgb24gb3ZlcmhlYXQ/Cgo+ICsgKiBzd2l0Y2ggZHVyaW5nIG92ZXJo ZWF0IHNpdHVhdGlvbnMuCj4gKyAqLwo+ICtzdGF0aWMgaW50IGFybWFkYV9jb25maWd1cmVfb3Zl cmhlYXRfaW50KHN0cnVjdCBhcm1hZGFfdGhlcm1hbF9wcml2ICpwcml2LAo+ICsJCQkJCSBzdHJ1 Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHosCj4gKwkJCQkJIGludCBzZW5zb3JfaWQpCj4gK3sK PiArCS8qIFJldHJpZXZlIHRoZSBjcml0aWNhbCB0cmlwIHBvaW50IHRvIGVuYWJsZSB0aGUgb3Zl cmhlYXQgaW50ZXJydXB0ICovCj4gKwljb25zdCBzdHJ1Y3QgdGhlcm1hbF90cmlwICp0cmlwcyA9 IG9mX3RoZXJtYWxfZ2V0X3RyaXBfcG9pbnRzKHR6KTsKPiArCWludCByZXQ7Cj4gKwlpbnQgaTsK PiArCj4gKwlpZiAoIXRyaXBzKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWZvciAoaSA9 IDA7IGkgPCBvZl90aGVybWFsX2dldF9udHJpcHModHopOyBpKyspCj4gKwkJaWYgKHRyaXBzW2ld LnR5cGUgPT0gVEhFUk1BTF9UUklQX0NSSVRJQ0FMKQo+ICsJCQlicmVhazsKPiArCj4gKwlpZiAo aSA9PSBvZl90aGVybWFsX2dldF9udHJpcHModHopKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsK PiArCXJldCA9IGFybWFkYV9zZWxlY3RfY2hhbm5lbChwcml2LCBzZW5zb3JfaWQpOwo+ICsJaWYg KHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCWFybWFkYV9zZXRfb3ZlcmhlYXRfdGhyZXNo b2xkcyhwcml2LAo+ICsJCQkJICAgICAgIHRyaXBzW2ldLnRlbXBlcmF0dXJlLAo+ICsJCQkJICAg ICAgIHRyaXBzW2ldLmh5c3RlcmVzaXMpOwo+ICsJcHJpdi0+b3ZlcmhlYXRfc2Vuc29yID0gdHo7 Cj4gKwlwcml2LT5pbnRlcnJ1cHRfc291cmNlID0gc2Vuc29yX2lkOwo+ICsKPiArCWFybWFkYV9l bmFibGVfb3ZlcmhlYXRfaW50ZXJydXB0KHByaXYpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4g Kwo+ICBzdGF0aWMgaW50IGFybWFkYV90aGVybWFsX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpCj4gIHsKPiAgCXN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0ejsKPiBAQCAt NTk5LDcgKzgzOCw3IEBAIHN0YXRpYyBpbnQgYXJtYWRhX3RoZXJtYWxfcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKPiAgCXN0cnVjdCBhcm1hZGFfZHJ2ZGF0YSAqZHJ2ZGF0YTsK PiAgCWNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm1hdGNoOwo+ICAJc3RydWN0IGFybWFkYV90 aGVybWFsX3ByaXYgKnByaXY7Cj4gLQlpbnQgc2Vuc29yX2lkOwo+ICsJaW50IHNlbnNvcl9pZCwg aXJxOwo+ICAJaW50IHJldDsKPiAgCj4gIAltYXRjaCA9IG9mX21hdGNoX2RldmljZShhcm1hZGFf dGhlcm1hbF9pZF90YWJsZSwgJnBkZXYtPmRldik7Cj4gQEAgLTY2OSw2ICs5MDgsMjMgQEAgc3Rh dGljIGludCBhcm1hZGFfdGhlcm1hbF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQo+ICAJZHJ2ZGF0YS0+ZGF0YS5wcml2ID0gcHJpdjsKPiAgCXBsYXRmb3JtX3NldF9kcnZkYXRh KHBkZXYsIGRydmRhdGEpOwo+ICAKPiArCWlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7 Cj4gKwlpZiAoaXJxID09IC1FUFJPQkVfREVGRVIpCj4gKwkJcmV0dXJuIGlycTsKPiArCj4gKwkv KiBUaGUgb3ZlcmhlYXQgaW50ZXJydXB0IGZlYXR1cmUgaXMgbm90IG1hbmRhdG9yeSAqLwo+ICsJ aWYgKGlycSA+PSAwKSB7CgowIGlzIG5vdCBhIHZhbGlkIGludGVycnVwdC4KCj4gKwkJcmV0ID0g ZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycSgmcGRldi0+ZGV2LCBpcnEsCj4gKwkJCQkJCWFybWFk YV9vdmVyaGVhdF9pc3IsCj4gKwkJCQkJCWFybWFkYV9vdmVyaGVhdF9pc3JfdGhyZWFkLAo+ICsJ CQkJCQkwLCBOVUxMLCBwcml2KTsKPiArCQlpZiAocmV0KSB7Cj4gKwkJCWRldl9lcnIoJnBkZXYt PmRldiwgIkNhbm5vdCByZXF1ZXN0IHRocmVhZGVkIElSUSAlZFxuIiwKPiArCQkJCWlycSk7Cj4g KwkJCXJldHVybiByZXQ7Cj4gKwkJfQo+ICsJfQo+ICsKPiAgCS8qCj4gIAkgKiBUaGVyZSBpcyBv bmUgY2hhbm5lbCBmb3IgdGhlIElDIGFuZCBvbmUgcGVyIENQVSAoaWYgYW55KSwgZWFjaAo+ICAJ ICogY2hhbm5lbCBoYXMgb25lIHNlbnNvci4KPiBAQCAtNjkyLDggKzk0OCwyMCBAQCBzdGF0aWMg aW50IGFybWFkYV90aGVybWFsX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4g IAkJCWRldm1fa2ZyZWUoJnBkZXYtPmRldiwgc2Vuc29yKTsKPiAgCQkJY29udGludWU7Cj4gIAkJ fQo+ICsKPiArCQkvKgo+ICsJCSAqIFRoZSBmaXJzdCBjaGFubmVsIHRoYXQgaGFzIGEgY3JpdGlj YWwgdHJpcCBwb2ludCByZWdpc3RlcmVkCj4gKwkJICogaW4gdGhlIERUIHdpbGwgc2VydmUgYXMg aW50ZXJydXB0IHNvdXJjZS4gT3RoZXJzIHBvc3NpYmxlCj4gKwkJICogY3JpdGljYWwgdHJpcCBw b2ludHMgd2lsbCBzaW1wbHkgYmUgaWdub3JlZCBieSB0aGUgZHJpdmVyLgo+ICsJCSAqLwo+ICsJ CWlmIChpcnEgPj0gMCAmJiAhcHJpdi0+b3ZlcmhlYXRfc2Vuc29yKQoKU2FtZSBoZXJlLgoKPiAr CQkJYXJtYWRhX2NvbmZpZ3VyZV9vdmVyaGVhdF9pbnQocHJpdiwgdHosIHNlbnNvci0+aWQpOwo+ ICAJfQo+ICAKPiArCS8qIEp1c3QgY29tcGxhaW4gaWYgbm8gb3ZlcmhlYXQgaW50ZXJydXB0IHdh cyBzZXQgdXAgKi8KPiArCWlmICghcHJpdi0+b3ZlcmhlYXRfc2Vuc29yKQo+ICsJCWRldl93YXJu KCZwZGV2LT5kZXYsICJPdmVyaGVhdCBpbnRlcnJ1cHQgbm90IGF2YWlsYWJsZVxuIik7Cj4gKwo+ ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gCgpUaGFua3MsCgoJTS4KLS0gCkphenogaXMgbm90IGRl YWQuIEl0IGp1c3Qgc21lbGxzIGZ1bm55Li4uCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1h cm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==