From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zhang, Rui" Subject: Re: [PATCH 20/31] thermal: core: introduce thermal_helpers.c Date: Tue, 17 May 2016 13:20:17 +0000 Message-ID: <1463491216.29980.36.camel@rzhang1-mobl4> References: <1462341765-13268-1-git-send-email-edubezval@gmail.com> <1462341765-13268-21-git-send-email-edubezval@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com ([192.55.52.120]:12921 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755125AbcEQNUV (ORCPT ); Tue, 17 May 2016 09:20:21 -0400 In-Reply-To: <1462341765-13268-21-git-send-email-edubezval@gmail.com> Content-Language: en-US Content-ID: Sender: linux-pm-owner@vger.kernel.org List-Id: linux-pm@vger.kernel.org To: "edubezval@gmail.com" Cc: "linux-kernel@vger.kernel.org" , "linux-pm@vger.kernel.org" JGNoZWNrcGF0Y2gucGwgMjAtMzEtdGhlcm1hbC1jb3JlLWludHJvZHVjZS10aGVybWFsX2hlbHBl cnMuYy5wYXRjaCANCg0KV0FSTklORzogYWRkZWQsIG1vdmVkIG9yIGRlbGV0ZWQgZmlsZShzKSwg ZG9lcyBNQUlOVEFJTkVSUyBuZWVkDQp1cGRhdGluZz8NCiMxODc6IA0KbmV3IGZpbGUgbW9kZSAx MDA2NDQNCg0KRVJST1I6IHRyYWlsaW5nIHdoaXRlc3BhY2UNCiMzMDI6IEZJTEU6IGRyaXZlcnMv dGhlcm1hbC90aGVybWFsX2hlbHBlcnMuYzoxMTE6DQorICQNCg0KV0FSTklORzogcGxlYXNlLCBu byBzcGFjZXMgYXQgdGhlIHN0YXJ0IG9mIGEgbGluZQ0KIzMwMjogRklMRTogZHJpdmVycy90aGVy bWFsL3RoZXJtYWxfaGVscGVycy5jOjExMToNCisgJA0KDQp0b3RhbDogMSBlcnJvcnMsIDIgd2Fy bmluZ3MsIDI4NyBsaW5lcyBjaGVja2VkDQoNCk5PVEU6IFdoaXRlc3BhY2UgZXJyb3JzIGRldGVj dGVkLg0KICAgICAgWW91IG1heSB3aXNoIHRvIHVzZSBzY3JpcHRzL2NsZWFucGF0Y2ggb3Igc2Ny aXB0cy9jbGVhbmZpbGUNCg0KMjAtMzEtdGhlcm1hbC1jb3JlLWludHJvZHVjZS10aGVybWFsX2hl bHBlcnMuYy5wYXRjaCBoYXMgc3R5bGUgcHJvYmxlbXMsDQpwbGVhc2UgcmV2aWV3Lg0KDQpOT1RF OiBJZiBhbnkgb2YgdGhlIGVycm9ycyBhcmUgZmFsc2UgcG9zaXRpdmVzLCBwbGVhc2UgcmVwb3J0 DQogICAgICB0aGVtIHRvIHRoZSBtYWludGFpbmVyLCBzZWUgQ0hFQ0tQQVRDSCBpbiBNQUlOVEFJ TkVSUy4NCg0KUGxlYXNlIHJlbW92ZSB0aGVzZSBzcGFjZXMuDQpCVFcsIHRoZXJlIGFyZSBhbHNv IHNvbWUgd2FybmluZ3MgaW4gdGhlIG90aGVyIHBhdGNoZXMsIHBsZWFzZSBmaXggdGhlDQpjaGVj a3BhdGNoIHdhcm5pbmdzL2Vycm9ycy4NCg0KdGhhbmtzLA0KcnVpDQpPbiBUdWUsIDIwMTYtMDUt MDMgYXQgMjM6MDIgLTA3MDAsIEVkdWFyZG8gVmFsZW50aW4gd3JvdGU6DQo+IEhlcmUgd2UgaGF2 ZSBhIHNpbXBsZSBjb2RlIG9yZ2FuaXphdGlvbi4gVGhpcyBwYXRjaCBtb3Zlcw0KPiBmdW5jdGlv bnMgdGhhdCBkbyBub3QgbmVlZCB0byBoYW5kbGUgdGhlcm1hbCBjb3JlIGludGVybmFsDQo+IGRh dGEgc3RydWN0dXJlIHRvIHRoZXJtYWxfaGVscGVycy5jIGZpbGUuDQo+IA0KPiBDYzogWmhhbmcg UnVpIDxydWkuemhhbmdAaW50ZWwuY29tPg0KPiBDYzogbGludXgtcG1Admdlci5rZXJuZWwub3Jn DQo+IENjOiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnDQo+IFNpZ25lZC1vZmYtYnk6IEVk dWFyZG8gVmFsZW50aW4gPGVkdWJlenZhbEBnbWFpbC5jb20+DQo+IC0tLQ0KPiAgZHJpdmVycy90 aGVybWFsL01ha2VmaWxlICAgICAgICAgIHwgICAzICstDQo+ICBkcml2ZXJzL3RoZXJtYWwvdGhl cm1hbF9jb3JlLmMgICAgfCAxMTcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAg ZHJpdmVycy90aGVybWFsL3RoZXJtYWxfaGVscGVycy5jIHwgMTQzICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrDQo+ICAzIGZpbGVzIGNoYW5nZWQsIDE0NSBpbnNlcnRpb25z KCspLCAxMTggZGVsZXRpb25zKC0pDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy90aGVy bWFsL3RoZXJtYWxfaGVscGVycy5jDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy90aGVybWFs L01ha2VmaWxlIGIvZHJpdmVycy90aGVybWFsL01ha2VmaWxlDQo+IGluZGV4IDk1Y2NiNzUuLmNk ZWQ4MDIgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvdGhlcm1hbC9NYWtlZmlsZQ0KPiArKysgYi9k cml2ZXJzL3RoZXJtYWwvTWFrZWZpbGUNCj4gQEAgLTMsNyArMyw4IEBADQo+ICAjDQo+ICANCj4g IG9iai0kKENPTkZJR19USEVSTUFMKQkJKz0gdGhlcm1hbF9zeXMubw0KPiAtdGhlcm1hbF9zeXMt eQkJCSs9IHRoZXJtYWxfY29yZS5vIHRoZXJtYWxfc3lzZnMubw0KPiArdGhlcm1hbF9zeXMteQkJ CSs9IHRoZXJtYWxfY29yZS5vIHRoZXJtYWxfc3lzZnMubyBcDQo+ICsJCQkJCXRoZXJtYWxfaGVs cGVycy5vDQo+ICANCj4gICMgaW50ZXJmYWNlIHRvL2Zyb20gb3RoZXIgbGF5ZXJzIHByb3ZpZGlu ZyBzZW5zb3JzDQo+ICB0aGVybWFsX3N5cy0kKENPTkZJR19USEVSTUFMX0hXTU9OKQkJKz0gdGhl cm1hbF9od21vbi5vDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3RoZXJtYWwvdGhlcm1hbF9jb3Jl LmMgYi9kcml2ZXJzL3RoZXJtYWwvdGhlcm1hbF9jb3JlLmMNCj4gaW5kZXggODQ2NDQ5Yy4uYWEy ZWRlYyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy90aGVybWFsL3RoZXJtYWxfY29yZS5jDQo+ICsr KyBiL2RyaXZlcnMvdGhlcm1hbC90aGVybWFsX2NvcmUuYw0KPiBAQCAtMjMwLDQ3ICsyMzAsNiBA QCBzdGF0aWMgdm9pZCByZWxlYXNlX2lkcihzdHJ1Y3QgaWRyICppZHIsIHN0cnVjdCBtdXRleCAq bG9jaywgaW50IGlkKQ0KPiAgCQltdXRleF91bmxvY2sobG9jayk7DQo+ICB9DQo+ICANCj4gLWlu dCBnZXRfdHpfdHJlbmQoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnR6LCBpbnQgdHJpcCkN Cj4gLXsNCj4gLQllbnVtIHRoZXJtYWxfdHJlbmQgdHJlbmQ7DQo+IC0NCj4gLQlpZiAodHotPmVt dWxfdGVtcGVyYXR1cmUgfHwgIXR6LT5vcHMtPmdldF90cmVuZCB8fA0KPiAtCSAgICB0ei0+b3Bz LT5nZXRfdHJlbmQodHosIHRyaXAsICZ0cmVuZCkpIHsNCj4gLQkJaWYgKHR6LT50ZW1wZXJhdHVy ZSA+IHR6LT5sYXN0X3RlbXBlcmF0dXJlKQ0KPiAtCQkJdHJlbmQgPSBUSEVSTUFMX1RSRU5EX1JB SVNJTkc7DQo+IC0JCWVsc2UgaWYgKHR6LT50ZW1wZXJhdHVyZSA8IHR6LT5sYXN0X3RlbXBlcmF0 dXJlKQ0KPiAtCQkJdHJlbmQgPSBUSEVSTUFMX1RSRU5EX0RST1BQSU5HOw0KPiAtCQllbHNlDQo+ IC0JCQl0cmVuZCA9IFRIRVJNQUxfVFJFTkRfU1RBQkxFOw0KPiAtCX0NCj4gLQ0KPiAtCXJldHVy biB0cmVuZDsNCj4gLX0NCj4gLUVYUE9SVF9TWU1CT0woZ2V0X3R6X3RyZW5kKTsNCj4gLQ0KPiAt c3RydWN0IHRoZXJtYWxfaW5zdGFuY2UgKmdldF90aGVybWFsX2luc3RhbmNlKHN0cnVjdCB0aGVy bWFsX3pvbmVfZGV2aWNlICp0eiwNCj4gLQkJCXN0cnVjdCB0aGVybWFsX2Nvb2xpbmdfZGV2aWNl ICpjZGV2LCBpbnQgdHJpcCkNCj4gLXsNCj4gLQlzdHJ1Y3QgdGhlcm1hbF9pbnN0YW5jZSAqcG9z ID0gTlVMTDsNCj4gLQlzdHJ1Y3QgdGhlcm1hbF9pbnN0YW5jZSAqdGFyZ2V0X2luc3RhbmNlID0g TlVMTDsNCj4gLQ0KPiAtCW11dGV4X2xvY2soJnR6LT5sb2NrKTsNCj4gLQltdXRleF9sb2NrKCZj ZGV2LT5sb2NrKTsNCj4gLQ0KPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkocG9zLCAmdHotPnRoZXJt YWxfaW5zdGFuY2VzLCB0el9ub2RlKSB7DQo+IC0JCWlmIChwb3MtPnR6ID09IHR6ICYmIHBvcy0+ dHJpcCA9PSB0cmlwICYmIHBvcy0+Y2RldiA9PSBjZGV2KSB7DQo+IC0JCQl0YXJnZXRfaW5zdGFu Y2UgPSBwb3M7DQo+IC0JCQlicmVhazsNCj4gLQkJfQ0KPiAtCX0NCj4gLQ0KPiAtCW11dGV4X3Vu bG9jaygmY2Rldi0+bG9jayk7DQo+IC0JbXV0ZXhfdW5sb2NrKCZ0ei0+bG9jayk7DQo+IC0NCj4g LQlyZXR1cm4gdGFyZ2V0X2luc3RhbmNlOw0KPiAtfQ0KPiAtRVhQT1JUX1NZTUJPTChnZXRfdGhl cm1hbF9pbnN0YW5jZSk7DQo+IC0NCj4gIHN0YXRpYyB2b2lkIHByaW50X2JpbmRfZXJyX21zZyhz dHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHosDQo+ICAJCQlzdHJ1Y3QgdGhlcm1hbF9jb29s aW5nX2RldmljZSAqY2RldiwgaW50IHJldCkNCj4gIHsNCj4gQEAgLTQ3MSw1NSArNDMwLDYgQEAg c3RhdGljIHZvaWQgaGFuZGxlX3RoZXJtYWxfdHJpcChzdHJ1Y3QgdGhlcm1hbF96b25lX2Rldmlj ZSAqdHosIGludCB0cmlwKQ0KPiAgCW1vbml0b3JfdGhlcm1hbF96b25lKHR6KTsNCj4gIH0NCj4g IA0KPiAtLyoqDQo+IC0gKiB0aGVybWFsX3pvbmVfZ2V0X3RlbXAoKSAtIHJldHVybnMgdGhlIHRl bXBlcmF0dXJlIG9mIGEgdGhlcm1hbCB6b25lDQo+IC0gKiBAdHo6IGEgdmFsaWQgcG9pbnRlciB0 byBhIHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlDQo+IC0gKiBAdGVtcDogYSB2YWxpZCBwb2lu dGVyIHRvIHdoZXJlIHRvIHN0b3JlIHRoZSByZXN1bHRpbmcgdGVtcGVyYXR1cmUuDQo+IC0gKg0K PiAtICogV2hlbiBhIHZhbGlkIHRoZXJtYWwgem9uZSByZWZlcmVuY2UgaXMgcGFzc2VkLCBpdCB3 aWxsIGZldGNoIGl0cw0KPiAtICogdGVtcGVyYXR1cmUgYW5kIGZpbGwgQHRlbXAuDQo+IC0gKg0K PiAtICogUmV0dXJuOiBPbiBzdWNjZXNzIHJldHVybnMgMCwgYW4gZXJyb3IgY29kZSBvdGhlcndp c2UNCj4gLSAqLw0KPiAtaW50IHRoZXJtYWxfem9uZV9nZXRfdGVtcChzdHJ1Y3QgdGhlcm1hbF96 b25lX2RldmljZSAqdHosIGludCAqdGVtcCkNCj4gLXsNCj4gLQlpbnQgcmV0ID0gLUVJTlZBTDsN Cj4gLQlpbnQgY291bnQ7DQo+IC0JaW50IGNyaXRfdGVtcCA9IElOVF9NQVg7DQo+IC0JZW51bSB0 aGVybWFsX3RyaXBfdHlwZSB0eXBlOw0KPiAtDQo+IC0JaWYgKCF0eiB8fCBJU19FUlIodHopIHx8 ICF0ei0+b3BzLT5nZXRfdGVtcCkNCj4gLQkJZ290byBleGl0Ow0KPiAtDQo+IC0JbXV0ZXhfbG9j aygmdHotPmxvY2spOw0KPiAtDQo+IC0JcmV0ID0gdHotPm9wcy0+Z2V0X3RlbXAodHosIHRlbXAp Ow0KPiAtDQo+IC0JaWYgKElTX0VOQUJMRUQoQ09ORklHX1RIRVJNQUxfRU1VTEFUSU9OKSAmJiB0 ei0+ZW11bF90ZW1wZXJhdHVyZSkgew0KPiAtCQlmb3IgKGNvdW50ID0gMDsgY291bnQgPCB0ei0+ dHJpcHM7IGNvdW50KyspIHsNCj4gLQkJCXJldCA9IHR6LT5vcHMtPmdldF90cmlwX3R5cGUodHos IGNvdW50LCAmdHlwZSk7DQo+IC0JCQlpZiAoIXJldCAmJiB0eXBlID09IFRIRVJNQUxfVFJJUF9D UklUSUNBTCkgew0KPiAtCQkJCXJldCA9IHR6LT5vcHMtPmdldF90cmlwX3RlbXAodHosIGNvdW50 LA0KPiAtCQkJCQkJJmNyaXRfdGVtcCk7DQo+IC0JCQkJYnJlYWs7DQo+IC0JCQl9DQo+IC0JCX0N Cj4gLQ0KPiAtCQkvKg0KPiAtCQkgKiBPbmx5IGFsbG93IGVtdWxhdGluZyBhIHRlbXBlcmF0dXJl IHdoZW4gdGhlIHJlYWwgdGVtcGVyYXR1cmUNCj4gLQkJICogaXMgYmVsb3cgdGhlIGNyaXRpY2Fs IHRlbXBlcmF0dXJlIHNvIHRoYXQgdGhlIGVtdWxhdGlvbiBjb2RlDQo+IC0JCSAqIGNhbm5vdCBo aWRlIGNyaXRpY2FsIGNvbmRpdGlvbnMuDQo+IC0JCSAqLw0KPiAtCQlpZiAoIXJldCAmJiAqdGVt cCA8IGNyaXRfdGVtcCkNCj4gLQkJCSp0ZW1wID0gdHotPmVtdWxfdGVtcGVyYXR1cmU7DQo+IC0J fQ0KPiAtIA0KPiAtCW11dGV4X3VubG9jaygmdHotPmxvY2spOw0KPiAtZXhpdDoNCj4gLQlyZXR1 cm4gcmV0Ow0KPiAtfQ0KPiAtRVhQT1JUX1NZTUJPTF9HUEwodGhlcm1hbF96b25lX2dldF90ZW1w KTsNCj4gLQ0KPiAgc3RhdGljIHZvaWQgdXBkYXRlX3RlbXBlcmF0dXJlKHN0cnVjdCB0aGVybWFs X3pvbmVfZGV2aWNlICp0eikNCj4gIHsNCj4gIAlpbnQgdGVtcCwgcmV0Ow0KPiBAQCAtMTExOCwz MyArMTAyOCw2IEBAIHZvaWQgdGhlcm1hbF9jb29saW5nX2RldmljZV91bnJlZ2lzdGVyKHN0cnVj dCB0aGVybWFsX2Nvb2xpbmdfZGV2aWNlICpjZGV2KQ0KPiAgfQ0KPiAgRVhQT1JUX1NZTUJPTF9H UEwodGhlcm1hbF9jb29saW5nX2RldmljZV91bnJlZ2lzdGVyKTsNCj4gIA0KPiAtdm9pZCB0aGVy bWFsX2NkZXZfdXBkYXRlKHN0cnVjdCB0aGVybWFsX2Nvb2xpbmdfZGV2aWNlICpjZGV2KQ0KPiAt ew0KPiAtCXN0cnVjdCB0aGVybWFsX2luc3RhbmNlICppbnN0YW5jZTsNCj4gLQl1bnNpZ25lZCBs b25nIHRhcmdldCA9IDA7DQo+IC0NCj4gLQkvKiBjb29saW5nIGRldmljZSBpcyB1cGRhdGVkKi8N Cj4gLQlpZiAoY2Rldi0+dXBkYXRlZCkNCj4gLQkJcmV0dXJuOw0KPiAtDQo+IC0JbXV0ZXhfbG9j aygmY2Rldi0+bG9jayk7DQo+IC0JLyogTWFrZSBzdXJlIGNkZXYgZW50ZXJzIHRoZSBkZWVwZXN0 IGNvb2xpbmcgc3RhdGUgKi8NCj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGluc3RhbmNlLCAmY2Rl di0+dGhlcm1hbF9pbnN0YW5jZXMsIGNkZXZfbm9kZSkgew0KPiAtCQlkZXZfZGJnKCZjZGV2LT5k ZXZpY2UsICJ6b25lJWQtPnRhcmdldD0lbHVcbiIsDQo+IC0JCQkJaW5zdGFuY2UtPnR6LT5pZCwg aW5zdGFuY2UtPnRhcmdldCk7DQo+IC0JCWlmIChpbnN0YW5jZS0+dGFyZ2V0ID09IFRIRVJNQUxf Tk9fVEFSR0VUKQ0KPiAtCQkJY29udGludWU7DQo+IC0JCWlmIChpbnN0YW5jZS0+dGFyZ2V0ID4g dGFyZ2V0KQ0KPiAtCQkJdGFyZ2V0ID0gaW5zdGFuY2UtPnRhcmdldDsNCj4gLQl9DQo+IC0JbXV0 ZXhfdW5sb2NrKCZjZGV2LT5sb2NrKTsNCj4gLQljZGV2LT5vcHMtPnNldF9jdXJfc3RhdGUoY2Rl diwgdGFyZ2V0KTsNCj4gLQljZGV2LT51cGRhdGVkID0gdHJ1ZTsNCj4gLQl0cmFjZV9jZGV2X3Vw ZGF0ZShjZGV2LCB0YXJnZXQpOw0KPiAtCWRldl9kYmcoJmNkZXYtPmRldmljZSwgInNldCB0byBz dGF0ZSAlbHVcbiIsIHRhcmdldCk7DQo+IC19DQo+IC1FWFBPUlRfU1lNQk9MKHRoZXJtYWxfY2Rl dl91cGRhdGUpOw0KPiAtDQo+ICAvKioNCj4gICAqIHRoZXJtYWxfbm90aWZ5X2ZyYW1ld29yayAt IFNlbnNvciBkcml2ZXJzIHVzZSB0aGlzIEFQSSB0byBub3RpZnkgZnJhbWV3b3JrDQo+ICAgKiBA dHo6CQl0aGVybWFsIHpvbmUgZGV2aWNlDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3RoZXJtYWwv dGhlcm1hbF9oZWxwZXJzLmMgYi9kcml2ZXJzL3RoZXJtYWwvdGhlcm1hbF9oZWxwZXJzLmMNCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uMzJmMzhlOQ0KPiAtLS0gL2Rl di9udWxsDQo+ICsrKyBiL2RyaXZlcnMvdGhlcm1hbC90aGVybWFsX2hlbHBlcnMuYw0KPiBAQCAt MCwwICsxLDE0MyBAQA0KPiArLyoNCj4gKyAqICB0aGVybWFsX2hlbHBlcnMuYyAtIGhlbHBlciBm dW5jdGlvbnMgdG8gaGFuZGxlIHRoZXJtYWwgZGV2aWNlcw0KPiArICoNCj4gKyAqICBDb3B5cmln aHQgKEMpIDIwMTYgRWR1YXJkbyBWYWxlbnRpbiA8ZWR1YmV6dmFsQGdtYWlsLmNvbT4NCj4gKyAq DQo+ICsgKiAgSGlnaGx5IGJhc2VkIG9uIG9yaWdpbmFsIHRoZXJtYWxfY29yZS5jDQo+ICsgKiAg Q29weXJpZ2h0IChDKSAyMDA4IEludGVsIENvcnANCj4gKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgg WmhhbmcgUnVpIDxydWkuemhhbmdAaW50ZWwuY29tPg0KPiArICogIENvcHlyaWdodCAoQykgMjAw OCBTdWppdGggVGhvbWFzIDxzdWppdGgudGhvbWFzQGludGVsLmNvbT4NCj4gKyAqDQo+ICsgKiAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkNCj4gKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KPiArICogIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4NCj4gKyAqLw0KPiArDQo+ICsj ZGVmaW5lIHByX2ZtdChmbXQpIEtCVUlMRF9NT0ROQU1FICI6ICIgZm10DQo+ICsNCj4gKyNpbmNs dWRlIDxsaW51eC9zeXNmcy5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPg0KPiArI2lu Y2x1ZGUgPGxpbnV4L2Vyci5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4NCj4gKyNpbmNs dWRlIDxsaW51eC9zdHJpbmcuaD4NCj4gKw0KPiArI2luY2x1ZGUgPHRyYWNlL2V2ZW50cy90aGVy bWFsLmg+DQo+ICsNCj4gKyNpbmNsdWRlICJ0aGVybWFsX2NvcmUuaCINCj4gKw0KPiAraW50IGdl dF90el90cmVuZChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHosIGludCB0cmlwKQ0KPiAr ew0KPiArCWVudW0gdGhlcm1hbF90cmVuZCB0cmVuZDsNCj4gKw0KPiArCWlmICh0ei0+ZW11bF90 ZW1wZXJhdHVyZSB8fCAhdHotPm9wcy0+Z2V0X3RyZW5kIHx8DQo+ICsJICAgIHR6LT5vcHMtPmdl dF90cmVuZCh0eiwgdHJpcCwgJnRyZW5kKSkgew0KPiArCQlpZiAodHotPnRlbXBlcmF0dXJlID4g dHotPmxhc3RfdGVtcGVyYXR1cmUpDQo+ICsJCQl0cmVuZCA9IFRIRVJNQUxfVFJFTkRfUkFJU0lO RzsNCj4gKwkJZWxzZSBpZiAodHotPnRlbXBlcmF0dXJlIDwgdHotPmxhc3RfdGVtcGVyYXR1cmUp DQo+ICsJCQl0cmVuZCA9IFRIRVJNQUxfVFJFTkRfRFJPUFBJTkc7DQo+ICsJCWVsc2UNCj4gKwkJ CXRyZW5kID0gVEhFUk1BTF9UUkVORF9TVEFCTEU7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIHRy ZW5kOw0KPiArfQ0KPiArRVhQT1JUX1NZTUJPTChnZXRfdHpfdHJlbmQpOw0KPiArDQo+ICtzdHJ1 Y3QgdGhlcm1hbF9pbnN0YW5jZSAqZ2V0X3RoZXJtYWxfaW5zdGFuY2Uoc3RydWN0IHRoZXJtYWxf em9uZV9kZXZpY2UgKnR6LA0KPiArCQkJc3RydWN0IHRoZXJtYWxfY29vbGluZ19kZXZpY2UgKmNk ZXYsIGludCB0cmlwKQ0KPiArew0KPiArCXN0cnVjdCB0aGVybWFsX2luc3RhbmNlICpwb3MgPSBO VUxMOw0KPiArCXN0cnVjdCB0aGVybWFsX2luc3RhbmNlICp0YXJnZXRfaW5zdGFuY2UgPSBOVUxM Ow0KPiArDQo+ICsJbXV0ZXhfbG9jaygmdHotPmxvY2spOw0KPiArCW11dGV4X2xvY2soJmNkZXYt PmxvY2spOw0KPiArDQo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShwb3MsICZ0ei0+dGhlcm1hbF9p bnN0YW5jZXMsIHR6X25vZGUpIHsNCj4gKwkJaWYgKHBvcy0+dHogPT0gdHogJiYgcG9zLT50cmlw ID09IHRyaXAgJiYgcG9zLT5jZGV2ID09IGNkZXYpIHsNCj4gKwkJCXRhcmdldF9pbnN0YW5jZSA9 IHBvczsNCj4gKwkJCWJyZWFrOw0KPiArCQl9DQo+ICsJfQ0KPiArDQo+ICsJbXV0ZXhfdW5sb2Nr KCZjZGV2LT5sb2NrKTsNCj4gKwltdXRleF91bmxvY2soJnR6LT5sb2NrKTsNCj4gKw0KPiArCXJl dHVybiB0YXJnZXRfaW5zdGFuY2U7DQo+ICt9DQo+ICtFWFBPUlRfU1lNQk9MKGdldF90aGVybWFs X2luc3RhbmNlKTsNCj4gKw0KPiArLyoqDQo+ICsgKiB0aGVybWFsX3pvbmVfZ2V0X3RlbXAoKSAt IHJldHVybnMgdGhlIHRlbXBlcmF0dXJlIG9mIGEgdGhlcm1hbCB6b25lDQo+ICsgKiBAdHo6IGEg dmFsaWQgcG9pbnRlciB0byBhIHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlDQo+ICsgKiBAdGVt cDogYSB2YWxpZCBwb2ludGVyIHRvIHdoZXJlIHRvIHN0b3JlIHRoZSByZXN1bHRpbmcgdGVtcGVy YXR1cmUuDQo+ICsgKg0KPiArICogV2hlbiBhIHZhbGlkIHRoZXJtYWwgem9uZSByZWZlcmVuY2Ug aXMgcGFzc2VkLCBpdCB3aWxsIGZldGNoIGl0cw0KPiArICogdGVtcGVyYXR1cmUgYW5kIGZpbGwg QHRlbXAuDQo+ICsgKg0KPiArICogUmV0dXJuOiBPbiBzdWNjZXNzIHJldHVybnMgMCwgYW4gZXJy b3IgY29kZSBvdGhlcndpc2UNCj4gKyAqLw0KPiAraW50IHRoZXJtYWxfem9uZV9nZXRfdGVtcChz dHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHosIGludCAqdGVtcCkNCj4gK3sNCj4gKwlpbnQg cmV0ID0gLUVJTlZBTDsNCj4gKwlpbnQgY291bnQ7DQo+ICsJaW50IGNyaXRfdGVtcCA9IElOVF9N QVg7DQo+ICsJZW51bSB0aGVybWFsX3RyaXBfdHlwZSB0eXBlOw0KPiArDQo+ICsJaWYgKCF0eiB8 fCBJU19FUlIodHopIHx8ICF0ei0+b3BzLT5nZXRfdGVtcCkNCj4gKwkJZ290byBleGl0Ow0KPiAr DQo+ICsJbXV0ZXhfbG9jaygmdHotPmxvY2spOw0KPiArDQo+ICsJcmV0ID0gdHotPm9wcy0+Z2V0 X3RlbXAodHosIHRlbXApOw0KPiArDQo+ICsJaWYgKElTX0VOQUJMRUQoQ09ORklHX1RIRVJNQUxf RU1VTEFUSU9OKSAmJiB0ei0+ZW11bF90ZW1wZXJhdHVyZSkgew0KPiArCQlmb3IgKGNvdW50ID0g MDsgY291bnQgPCB0ei0+dHJpcHM7IGNvdW50KyspIHsNCj4gKwkJCXJldCA9IHR6LT5vcHMtPmdl dF90cmlwX3R5cGUodHosIGNvdW50LCAmdHlwZSk7DQo+ICsJCQlpZiAoIXJldCAmJiB0eXBlID09 IFRIRVJNQUxfVFJJUF9DUklUSUNBTCkgew0KPiArCQkJCXJldCA9IHR6LT5vcHMtPmdldF90cmlw X3RlbXAodHosIGNvdW50LA0KPiArCQkJCQkJJmNyaXRfdGVtcCk7DQo+ICsJCQkJYnJlYWs7DQo+ ICsJCQl9DQo+ICsJCX0NCj4gKw0KPiArCQkvKg0KPiArCQkgKiBPbmx5IGFsbG93IGVtdWxhdGlu ZyBhIHRlbXBlcmF0dXJlIHdoZW4gdGhlIHJlYWwgdGVtcGVyYXR1cmUNCj4gKwkJICogaXMgYmVs b3cgdGhlIGNyaXRpY2FsIHRlbXBlcmF0dXJlIHNvIHRoYXQgdGhlIGVtdWxhdGlvbiBjb2RlDQo+ ICsJCSAqIGNhbm5vdCBoaWRlIGNyaXRpY2FsIGNvbmRpdGlvbnMuDQo+ICsJCSAqLw0KPiArCQlp ZiAoIXJldCAmJiAqdGVtcCA8IGNyaXRfdGVtcCkNCj4gKwkJCSp0ZW1wID0gdHotPmVtdWxfdGVt cGVyYXR1cmU7DQo+ICsJfQ0KPiArIA0KPiArCW11dGV4X3VubG9jaygmdHotPmxvY2spOw0KPiAr ZXhpdDoNCj4gKwlyZXR1cm4gcmV0Ow0KPiArfQ0KPiArRVhQT1JUX1NZTUJPTF9HUEwodGhlcm1h bF96b25lX2dldF90ZW1wKTsNCj4gKw0KPiArdm9pZCB0aGVybWFsX2NkZXZfdXBkYXRlKHN0cnVj dCB0aGVybWFsX2Nvb2xpbmdfZGV2aWNlICpjZGV2KQ0KPiArew0KPiArCXN0cnVjdCB0aGVybWFs X2luc3RhbmNlICppbnN0YW5jZTsNCj4gKwl1bnNpZ25lZCBsb25nIHRhcmdldCA9IDA7DQo+ICsN Cj4gKwkvKiBjb29saW5nIGRldmljZSBpcyB1cGRhdGVkKi8NCj4gKwlpZiAoY2Rldi0+dXBkYXRl ZCkNCj4gKwkJcmV0dXJuOw0KPiArDQo+ICsJbXV0ZXhfbG9jaygmY2Rldi0+bG9jayk7DQo+ICsJ LyogTWFrZSBzdXJlIGNkZXYgZW50ZXJzIHRoZSBkZWVwZXN0IGNvb2xpbmcgc3RhdGUgKi8NCj4g KwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGluc3RhbmNlLCAmY2Rldi0+dGhlcm1hbF9pbnN0YW5jZXMs IGNkZXZfbm9kZSkgew0KPiArCQlkZXZfZGJnKCZjZGV2LT5kZXZpY2UsICJ6b25lJWQtPnRhcmdl dD0lbHVcbiIsDQo+ICsJCQkJaW5zdGFuY2UtPnR6LT5pZCwgaW5zdGFuY2UtPnRhcmdldCk7DQo+ ICsJCWlmIChpbnN0YW5jZS0+dGFyZ2V0ID09IFRIRVJNQUxfTk9fVEFSR0VUKQ0KPiArCQkJY29u dGludWU7DQo+ICsJCWlmIChpbnN0YW5jZS0+dGFyZ2V0ID4gdGFyZ2V0KQ0KPiArCQkJdGFyZ2V0 ID0gaW5zdGFuY2UtPnRhcmdldDsNCj4gKwl9DQo+ICsJbXV0ZXhfdW5sb2NrKCZjZGV2LT5sb2Nr KTsNCj4gKwljZGV2LT5vcHMtPnNldF9jdXJfc3RhdGUoY2RldiwgdGFyZ2V0KTsNCj4gKwljZGV2 LT51cGRhdGVkID0gdHJ1ZTsNCj4gKwl0cmFjZV9jZGV2X3VwZGF0ZShjZGV2LCB0YXJnZXQpOw0K PiArCWRldl9kYmcoJmNkZXYtPmRldmljZSwgInNldCB0byBzdGF0ZSAlbHVcbiIsIHRhcmdldCk7 DQo+ICt9DQo+ICtFWFBPUlRfU1lNQk9MKHRoZXJtYWxfY2Rldl91cGRhdGUpOw0KDQo=