From mboxrd@z Thu Jan 1 00:00:00 1970 From: Appana Durga Kedareswara Rao Subject: RE: [PATCH v4] can: Convert to runtime_pm Date: Sun, 11 Jan 2015 05:34:21 +0000 Message-ID: <12e7202e137e4d5680185748ebf0cf2d@BY2FFO11FD060.protection.gbl> References: <58f37b6fd9104ce185c413c473fe047b@BY2FFO11FD050.protection.gbl> <54AD267C.4060004@pengutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "linux-can@vger.kernel.org" , "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "Soren Brinkmann" , "grant.likely@linaro.org" , "wg@grandegger.com" To: Marc Kleine-Budde Return-path: In-Reply-To: <54AD267C.4060004@pengutronix.de> Content-Language: en-US Sender: linux-can-owner@vger.kernel.org List-Id: netdev.vger.kernel.org SGkgTWFyYywNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBNYXJjIEts ZWluZS1CdWRkZSBbbWFpbHRvOm1rbEBwZW5ndXRyb25peC5kZV0NCj4gU2VudDogV2VkbmVzZGF5 LCBKYW51YXJ5IDA3LCAyMDE1IDU6NTkgUE0NCj4gVG86IEFwcGFuYSBEdXJnYSBLZWRhcmVzd2Fy YSBSYW87IHdnQGdyYW5kZWdnZXIuY29tOyBNaWNoYWwgU2ltZWs7DQo+IGdyYW50Lmxpa2VseUBs aW5hcm8ub3JnDQo+IENjOiBsaW51eC1jYW5Admdlci5rZXJuZWwub3JnOyBuZXRkZXZAdmdlci5r ZXJuZWwub3JnOyBsaW51eC0NCj4ga2VybmVsQHZnZXIua2VybmVsLm9yZzsgQXBwYW5hIER1cmdh IEtlZGFyZXN3YXJhIFJhbzsgU29yZW4gQnJpbmttYW5uDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0gg djRdIGNhbjogQ29udmVydCB0byBydW50aW1lX3BtDQo+DQo+IE9uIDEyLzIzLzIwMTQgMDE6MjUg UE0sIEtlZGFyZXN3YXJhIHJhbyBBcHBhbmEgd3JvdGU6DQo+ID4gSW5zdGVhZCBvZiBlbmFibGlu Zy9kaXNhYmxpbmcgY2xvY2tzIGF0IHNldmVyYWwgbG9jYXRpb25zIGluIHRoZQ0KPiA+IGRyaXZl ciwgdXNlIHRoZSBydW50aW1lX3BtIGZyYW1ld29yay4gVGhpcyBjb25zb2xpZGF0ZXMgdGhlIGFj dGlvbnMNCj4gPiBmb3IgcnVudGltZSBQTSBpbiB0aGUgYXBwcm9wcmlhdGUgY2FsbGJhY2tzIGFu ZCBtYWtlcyB0aGUgZHJpdmVyIG1vcmUNCj4gPiByZWFkYWJsZSBhbmQgbWFudGFpbmFibGUuDQo+ ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBTb3JlbiBCcmlua21hbm4gPHNvcmVuLmJyaW5rbWFubkB4 aWxpbnguY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IEtlZGFyZXN3YXJhIHJhbyBBcHBhbmEgPGFw cGFuYWRAeGlsaW54LmNvbT4NCj4gPiAtLS0NCj4gPiBDaG5hZ2VzIGZvciB2NDoNCj4gPiAgLSBV cGRhdGVkIHdpdGggdGhlIHJldmlldyBjb21tZW50cy4NCj4gPiBDaGFuZ2VzIGZvciB2MzoNCj4g PiAgIC0gQ29udmVydGVkIHRoZSBkcml2ZXIgdG8gdXNlIHJ1bnRpbWVfcG0uDQo+ID4gQ2hhbmdl cyBmb3IgdjI6DQo+ID4gICAtIFJlbW92ZWQgdGhlIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UqIGZy b20gc3VzcGVuZC9yZXN1bWUNCj4gPiAgICAgYXMgc3VnZ2VzdCBieSBMb3RoYXIuDQo+ID4NCj4g PiAgZHJpdmVycy9uZXQvY2FuL3hpbGlueF9jYW4uYyB8ICAxMjMNCj4gPiArKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiAgMSBmaWxlcyBjaGFuZ2VkLCA3NCBp bnNlcnRpb25zKCspLCA0OSBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL25ldC9jYW4veGlsaW54X2Nhbi5jDQo+ID4gYi9kcml2ZXJzL25ldC9jYW4veGlsaW54X2Nh bi5jIGluZGV4IDZjNjc2NDMuLmM3MWY2ODMgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQv Y2FuL3hpbGlueF9jYW4uYw0KPiA+ICsrKyBiL2RyaXZlcnMvbmV0L2Nhbi94aWxpbnhfY2FuLmMN Cj4gPiBAQCAtMzIsNiArMzIsNyBAQA0KPiA+ICAjaW5jbHVkZSA8bGludXgvY2FuL2Rldi5oPg0K PiA+ICAjaW5jbHVkZSA8bGludXgvY2FuL2Vycm9yLmg+DQo+ID4gICNpbmNsdWRlIDxsaW51eC9j YW4vbGVkLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+DQo+ID4NCj4gPiAg I2RlZmluZSBEUklWRVJfTkFNRSAgICAgICAgInhpbGlueF9jYW4iDQo+ID4NCj4gPiBAQCAtMTM4 LDcgKzEzOSw3IEBAIHN0cnVjdCB4Y2FuX3ByaXYgew0KPiA+ICAgICB1MzIgKCpyZWFkX3JlZyko Y29uc3Qgc3RydWN0IHhjYW5fcHJpdiAqcHJpdiwgZW51bSB4Y2FuX3JlZyByZWcpOw0KPiA+ICAg ICB2b2lkICgqd3JpdGVfcmVnKShjb25zdCBzdHJ1Y3QgeGNhbl9wcml2ICpwcml2LCBlbnVtIHhj YW5fcmVnIHJlZywNCj4gPiAgICAgICAgICAgICAgICAgICAgIHUzMiB2YWwpOw0KPiA+IC0gICBz dHJ1Y3QgbmV0X2RldmljZSAqZGV2Ow0KPiA+ICsgICBzdHJ1Y3QgZGV2aWNlICpkZXY7DQo+ID4g ICAgIHZvaWQgX19pb21lbSAqcmVnX2Jhc2U7DQo+ID4gICAgIHVuc2lnbmVkIGxvbmcgaXJxX2Zs YWdzOw0KPiA+ICAgICBzdHJ1Y3QgY2xrICpidXNfY2xrOw0KPiA+IEBAIC04NDIsNiArODQzLDEz IEBAIHN0YXRpYyBpbnQgeGNhbl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQ0KPiA+ICAg ICBzdHJ1Y3QgeGNhbl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7DQo+ID4gICAgIGlu dCByZXQ7DQo+ID4NCj4gPiArICAgcmV0ID0gcG1fcnVudGltZV9nZXRfc3luYyhwcml2LT5kZXYp Ow0KPiA+ICsgICBpZiAocmV0IDwgMCkgew0KPiA+ICsgICAgICAgICAgIG5ldGRldl9lcnIobmRl diwgIiVzOiBwbV9ydW50aW1lX2dldCBmYWlsZWRcciglZClcblxyIiwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgX19mdW5jX18sIHJldCk7DQo+ID4gKyAgICAgICAgICAgcmV0dXJu IHJldDsNCj4gPiArICAgfQ0KPiA+ICsNCj4gPiAgICAgcmV0ID0gcmVxdWVzdF9pcnEobmRldi0+ aXJxLCB4Y2FuX2ludGVycnVwdCwgcHJpdi0+aXJxX2ZsYWdzLA0KPiA+ICAgICAgICAgICAgICAg ICAgICAgbmRldi0+bmFtZSwgbmRldik7DQo+ID4gICAgIGlmIChyZXQgPCAwKSB7DQo+ID4gQEAg LTg0OSwyOSArODU3LDE3IEBAIHN0YXRpYyBpbnQgeGNhbl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNl ICpuZGV2KQ0KPiA+ICAgICAgICAgICAgIGdvdG8gZXJyOw0KPiA+ICAgICB9DQo+ID4NCj4gPiAt ICAgcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHByaXYtPmNhbl9jbGspOw0KPiA+IC0gICBpZiAo cmV0KSB7DQo+ID4gLSAgICAgICAgICAgbmV0ZGV2X2VycihuZGV2LCAidW5hYmxlIHRvIGVuYWJs ZSBkZXZpY2UgY2xvY2tcbiIpOw0KPiA+IC0gICAgICAgICAgIGdvdG8gZXJyX2lycTsNCj4gPiAt ICAgfQ0KPiA+IC0NCj4gPiAtICAgcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHByaXYtPmJ1c19j bGspOw0KPiA+IC0gICBpZiAocmV0KSB7DQo+ID4gLSAgICAgICAgICAgbmV0ZGV2X2VycihuZGV2 LCAidW5hYmxlIHRvIGVuYWJsZSBidXMgY2xvY2tcbiIpOw0KPiA+IC0gICAgICAgICAgIGdvdG8g ZXJyX2Nhbl9jbGs7DQo+ID4gLSAgIH0NCj4gPiAtDQo+ID4gICAgIC8qIFNldCBjaGlwIGludG8g cmVzZXQgbW9kZSAqLw0KPiA+ICAgICByZXQgPSBzZXRfcmVzZXRfbW9kZShuZGV2KTsNCj4gPiAg ICAgaWYgKHJldCA8IDApIHsNCj4gPiAgICAgICAgICAgICBuZXRkZXZfZXJyKG5kZXYsICJtb2Rl IHJlc2V0dGluZyBmYWlsZWQhXG4iKTsNCj4gPiAtICAgICAgICAgICBnb3RvIGVycl9idXNfY2xr Ow0KPiA+ICsgICAgICAgICAgIGdvdG8gZXJyX2lycTsNCj4gPiAgICAgfQ0KPiA+DQo+ID4gICAg IC8qIENvbW1vbiBvcGVuICovDQo+ID4gICAgIHJldCA9IG9wZW5fY2FuZGV2KG5kZXYpOw0KPiA+ ICAgICBpZiAocmV0KQ0KPiA+IC0gICAgICAgICAgIGdvdG8gZXJyX2J1c19jbGs7DQo+ID4gKyAg ICAgICAgICAgZ290byBlcnJfaXJxOw0KPiA+DQo+ID4gICAgIHJldCA9IHhjYW5fY2hpcF9zdGFy dChuZGV2KTsNCj4gPiAgICAgaWYgKHJldCA8IDApIHsNCj4gPiBAQCAtODg3LDEzICs4ODMsMTEg QEAgc3RhdGljIGludCB4Y2FuX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpDQo+ID4NCj4g PiAgZXJyX2NhbmRldjoNCj4gPiAgICAgY2xvc2VfY2FuZGV2KG5kZXYpOw0KPiA+IC1lcnJfYnVz X2NsazoNCj4gPiAtICAgY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHByaXYtPmJ1c19jbGspOw0KPiA+ IC1lcnJfY2FuX2NsazoNCj4gPiAtICAgY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHByaXYtPmNhbl9j bGspOw0KPiA+ICBlcnJfaXJxOg0KPiA+ICAgICBmcmVlX2lycShuZGV2LT5pcnEsIG5kZXYpOw0K PiA+ICBlcnI6DQo+ID4gKyAgIHBtX3J1bnRpbWVfcHV0KHByaXYtPmRldik7DQo+ID4gKw0KPiA+ ICAgICByZXR1cm4gcmV0Ow0KPiA+ICB9DQo+ID4NCj4gPiBAQCAtOTEwLDEyICs5MDQsMTEgQEAg c3RhdGljIGludCB4Y2FuX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQ0KPiA+ICAgICBu ZXRpZl9zdG9wX3F1ZXVlKG5kZXYpOw0KPiA+ICAgICBuYXBpX2Rpc2FibGUoJnByaXYtPm5hcGkp Ow0KPiA+ICAgICB4Y2FuX2NoaXBfc3RvcChuZGV2KTsNCj4gPiAtICAgY2xrX2Rpc2FibGVfdW5w cmVwYXJlKHByaXYtPmJ1c19jbGspOw0KPiA+IC0gICBjbGtfZGlzYWJsZV91bnByZXBhcmUocHJp di0+Y2FuX2Nsayk7DQo+ID4gICAgIGZyZWVfaXJxKG5kZXYtPmlycSwgbmRldik7DQo+ID4gICAg IGNsb3NlX2NhbmRldihuZGV2KTsNCj4gPg0KPiA+ICAgICBjYW5fbGVkX2V2ZW50KG5kZXYsIENB Tl9MRURfRVZFTlRfU1RPUCk7DQo+ID4gKyAgIHBtX3J1bnRpbWVfcHV0KHByaXYtPmRldik7DQo+ ID4NCj4gPiAgICAgcmV0dXJuIDA7DQo+ID4gIH0NCj4gPiBAQCAtOTM0LDI3ICs5MjcsMjAgQEAg c3RhdGljIGludCB4Y2FuX2dldF9iZXJyX2NvdW50ZXIoY29uc3Qgc3RydWN0DQo+IG5ldF9kZXZp Y2UgKm5kZXYsDQo+ID4gICAgIHN0cnVjdCB4Y2FuX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihu ZGV2KTsNCj4gPiAgICAgaW50IHJldDsNCj4gPg0KPiA+IC0gICByZXQgPSBjbGtfcHJlcGFyZV9l bmFibGUocHJpdi0+Y2FuX2Nsayk7DQo+ID4gLSAgIGlmIChyZXQpDQo+ID4gLSAgICAgICAgICAg Z290byBlcnI7DQo+ID4gLQ0KPiA+IC0gICByZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUocHJpdi0+ YnVzX2Nsayk7DQo+ID4gLSAgIGlmIChyZXQpDQo+ID4gLSAgICAgICAgICAgZ290byBlcnJfY2xr Ow0KPiA+ICsgICByZXQgPSBwbV9ydW50aW1lX2dldF9zeW5jKHByaXYtPmRldik7DQo+ID4gKyAg IGlmIChyZXQgPCAwKSB7DQo+ID4gKyAgICAgICAgICAgbmV0ZGV2X2VycihuZGV2LCAiJXM6IHBt X3J1bnRpbWVfZ2V0IGZhaWxlZFxyKCVkKVxuXHIiLA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICBfX2Z1bmNfXywgcmV0KTsNCj4NCj4gUGxlYXNlIHJlbW92ZSB0aGUgXHIgZnJvbSB0 aGUgZXJyb3IgbWVzc2FnZXMuDQo+DQoNCk9rDQoNCj4gPiArICAgICAgICAgICByZXR1cm4gcmV0 Ow0KPiA+ICsgICB9DQo+ID4NCj4gPiAgICAgYmVjLT50eGVyciA9IHByaXYtPnJlYWRfcmVnKHBy aXYsIFhDQU5fRUNSX09GRlNFVCkgJg0KPiBYQ0FOX0VDUl9URUNfTUFTSzsNCj4gPiAgICAgYmVj LT5yeGVyciA9ICgocHJpdi0+cmVhZF9yZWcocHJpdiwgWENBTl9FQ1JfT0ZGU0VUKSAmDQo+ID4g ICAgICAgICAgICAgICAgICAgICBYQ0FOX0VDUl9SRUNfTUFTSykgPj4gWENBTl9FU1JfUkVDX1NI SUZUKTsNCj4gPg0KPiA+IC0gICBjbGtfZGlzYWJsZV91bnByZXBhcmUocHJpdi0+YnVzX2Nsayk7 DQo+ID4gLSAgIGNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LT5jYW5fY2xrKTsNCj4gPiArICAg cG1fcnVudGltZV9wdXQocHJpdi0+ZGV2KTsNCj4gPg0KPiA+ICAgICByZXR1cm4gMDsNCj4gPiAt DQo+ID4gLWVycl9jbGs6DQo+ID4gLSAgIGNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LT5jYW5f Y2xrKTsNCj4gPiAtZXJyOg0KPiA+IC0gICByZXR1cm4gcmV0Ow0KPiA+ICB9DQo+ID4NCj4gPg0K PiA+IEBAIC05NjcsMTUgKzk1Myw0NSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vf b3BzDQo+ID4geGNhbl9uZXRkZXZfb3BzID0gew0KPiA+DQo+ID4gIC8qKg0KPiA+ICAgKiB4Y2Fu X3N1c3BlbmQgLSBTdXNwZW5kIG1ldGhvZCBmb3IgdGhlIGRyaXZlcg0KPiA+IC0gKiBAZGV2OiAg IEFkZHJlc3Mgb2YgdGhlIHBsYXRmb3JtX2RldmljZSBzdHJ1Y3R1cmUNCj4gPiArICogQGRldjog ICBBZGRyZXNzIG9mIHRoZSBkZXZpY2Ugc3RydWN0dXJlDQo+ID4gICAqDQo+ID4gICAqIFB1dCB0 aGUgZHJpdmVyIGludG8gbG93IHBvd2VyIG1vZGUuDQo+ID4gLSAqIFJldHVybjogMCBhbHdheXMN Cj4gPiArICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MgYW5kIGZhaWx1cmUgdmFsdWUgb24gZXJyb3IN Cj4gPiAgICovDQo+ID4gIHN0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgeGNhbl9zdXNwZW5kKHN0 cnVjdCBkZXZpY2UgKmRldikgIHsNCj4gPiAtICAgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl diA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiA+IC0gICBzdHJ1Y3QgbmV0X2RldmljZSAqbmRl diA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOw0KPiA+ICsgICBpZiAoIWRldmljZV9tYXlf d2FrZXVwKGRldikpDQo+ID4gKyAgICAgICAgICAgcmV0dXJuIHBtX3J1bnRpbWVfZm9yY2Vfc3Vz cGVuZChkZXYpOw0KPiA+ICsNCj4gPiArICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICsgKiB4Y2FuX3Jlc3VtZSAtIFJlc3VtZSBmcm9tIHN1c3BlbmQNCj4gPiArICog QGRldjogICBBZGRyZXNzIG9mIHRoZSBkZXZpY2Ugc3RydWN0dXJlDQo+ID4gKyAqDQo+ID4gKyAq IFJlc3VtZSBvcGVyYXRpb24gYWZ0ZXIgc3VzcGVuZC4NCj4gPiArICogUmV0dXJuOiAwIG9uIHN1 Y2Nlc3MgYW5kIGZhaWx1cmUgdmFsdWUgb24gZXJyb3IgICovIHN0YXRpYyBpbnQNCj4gPiArX19t YXliZV91bnVzZWQgeGNhbl9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KSB7DQo+ID4gKyAgIGlm ICghZGV2aWNlX21heV93YWtldXAoZGV2KSkNCj4gPiArICAgICAgICAgICByZXR1cm4gcG1fcnVu dGltZV9mb3JjZV9yZXN1bWUoZGV2KTsNCj4gPiArDQo+ID4gKyAgIHJldHVybiAwOw0KPiA+ICsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHhjYW5fcnVudGltZV9zdXNwZW5kIC0g UnVudGltZSBzdXNwZW5kIG1ldGhvZCBmb3IgdGhlIGRyaXZlcg0KPiA+ICsgKiBAZGV2OiAgIEFk ZHJlc3Mgb2YgdGhlIGRldmljZSBzdHJ1Y3R1cmUNCj4gPiArICoNCj4gPiArICogUHV0IHRoZSBk cml2ZXIgaW50byBsb3cgcG93ZXIgbW9kZS4NCj4gPiArICogUmV0dXJuOiAwIGFsd2F5cw0KPiA+ ICsgKi8NCj4gPiArc3RhdGljIGludCBfX21heWJlX3VudXNlZCB4Y2FuX3J1bnRpbWVfc3VzcGVu ZChzdHJ1Y3QgZGV2aWNlICpkZXYpIHsNCj4gPiArICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYg PSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gPiAgICAgc3RydWN0IHhjYW5fcHJpdiAqcHJpdiA9 IG5ldGRldl9wcml2KG5kZXYpOw0KPiA+DQo+ID4gICAgIGlmIChuZXRpZl9ydW5uaW5nKG5kZXYp KSB7DQo+ID4gQEAgLTk5MywxNiArMTAwOSwxNSBAQCBzdGF0aWMgaW50IF9fbWF5YmVfdW51c2Vk IHhjYW5fc3VzcGVuZChzdHJ1Y3QNCj4gPiBkZXZpY2UgKmRldikgIH0NCj4gPg0KPiA+ICAvKioN Cj4gPiAtICogeGNhbl9yZXN1bWUgLSBSZXN1bWUgZnJvbSBzdXNwZW5kDQo+ID4gLSAqIEBkZXY6 ICAgQWRkcmVzcyBvZiB0aGUgcGxhdGZvcm1kZXZpY2Ugc3RydWN0dXJlDQo+ID4gKyAqIHhjYW5f cnVudGltZV9yZXN1bWUgLSBSdW50aW1lIHJlc3VtZSBmcm9tIHN1c3BlbmQNCj4gPiArICogQGRl djogICBBZGRyZXNzIG9mIHRoZSBkZXZpY2Ugc3RydWN0dXJlDQo+ID4gICAqDQo+ID4gICAqIFJl c3VtZSBvcGVyYXRpb24gYWZ0ZXIgc3VzcGVuZC4NCj4gPiAgICogUmV0dXJuOiAwIG9uIHN1Y2Nl c3MgYW5kIGZhaWx1cmUgdmFsdWUgb24gZXJyb3INCj4gPiAgICovDQo+ID4gLXN0YXRpYyBpbnQg X19tYXliZV91bnVzZWQgeGNhbl9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQ0KPiA+ICtzdGF0 aWMgaW50IF9fbWF5YmVfdW51c2VkIHhjYW5fcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAq ZGV2KQ0KPiA+ICB7DQo+ID4gLSAgIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSBkZXZf Z2V0X2RydmRhdGEoZGV2KTsNCj4gPiAtICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBwbGF0 Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsNCj4gPiArICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYg PSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gPiAgICAgc3RydWN0IHhjYW5fcHJpdiAqcHJpdiA9 IG5ldGRldl9wcml2KG5kZXYpOw0KPiA+ICAgICBpbnQgcmV0Ow0KPg0KPiBTb21lIG1vcmUgY29u dGV4dDoNCj4NCj4gPiAgICAgcmV0ID0gY2xrX2VuYWJsZShwcml2LT5idXNfY2xrKTsNCj4gPiAg ICAgaWYgKHJldCkgew0KPiA+ICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiQ2Fubm90IGVuYWJs ZSBjbG9jay5cbiIpOw0KPiA+ICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gICAgIH0NCj4g PiAgICAgcmV0ID0gY2xrX2VuYWJsZShwcml2LT5jYW5fY2xrKTsNCj4gPiAgICAgaWYgKHJldCkg ew0KPiA+ICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiQ2Fubm90IGVuYWJsZSBjbG9jay5cbiIp Ow0KPiA+ICAgICAgICAgICAgIGNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LT5idXNfY2xrKTsN Cj4NCj4gVGhpcyBkaXNhYmxlX3VucHJlcGFyZSBsb29rcyB3cm9uZywgc2hvdWxkIGJlIGEgZGlz YWJsZSBvbmx5Lg0KPg0KDQpPaw0KDQo+ID4gICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiAg ICAgfQ0KPiA+DQo+ID4gICAgIHByaXYtPndyaXRlX3JlZyhwcml2LCBYQ0FOX01TUl9PRkZTRVQs IDApOw0KPiA+ICAgICBwcml2LT53cml0ZV9yZWcocHJpdiwgWENBTl9TUlJfT0ZGU0VULCBYQ0FO X1NSUl9DRU5fTUFTSyk7DQo+ID4NCj4gPiAgICAgaWYgKG5ldGlmX3J1bm5pbmcobmRldikpIHsN Cj4gPiAgICAgICAgICAgICBwcml2LT5jYW4uc3RhdGUgPSBDQU5fU1RBVEVfRVJST1JfQUNUSVZF Ow0KPg0KPiBXaGF0IGhhcHBlbnMgaWYgdGhlIGRldmljZSB3YXMgbm90IGluIEFDVElWRSBzdGF0 ZSBwcmlvciB0byB0aGUNCj4gcnVudGltZV9zdXNwZW5kPw0KPg0KDQpJIGFtIG5vdCBzdXJlIGFi b3V0IHRoZSBzdGF0ZSBvZiBDQU4gYXQgdGhpcyBwb2ludCBvZiB0aW1lLg0KSSBqdXN0IGZvbGxv d2VkIHdoYXQgb3RoZXIgZHJpdmVycyBhcmUgZm9sbG93aW5nIGZvciBydW4gdGltZSAgc3VzcGVu ZCA6KS4NCg0KPiA+ICAgICAgICAgICAgIG5ldGlmX2RldmljZV9hdHRhY2gobmRldik7DQo+ID4g ICAgICAgICAgICAgbmV0aWZfc3RhcnRfcXVldWUobmRldik7DQo+ID4gICAgIH0NCj4gPg0KPiA+ ICAgICByZXR1cm4gMDsNCj4gPiB9DQo+DQo+DQo+ID4NCj4gPiBAQCAtMTAyMCw5ICsxMDM1LDkg QEAgc3RhdGljIGludCBfX21heWJlX3VudXNlZCB4Y2FuX3Jlc3VtZShzdHJ1Y3QNCj4gPiBkZXZp Y2UgKmRldikNCj4gPg0KPiA+ICAgICBwcml2LT53cml0ZV9yZWcocHJpdiwgWENBTl9NU1JfT0ZG U0VULCAwKTsNCj4gPiAgICAgcHJpdi0+d3JpdGVfcmVnKHByaXYsIFhDQU5fU1JSX09GRlNFVCwg WENBTl9TUlJfQ0VOX01BU0spOw0KPiA+IC0gICBwcml2LT5jYW4uc3RhdGUgPSBDQU5fU1RBVEVf RVJST1JfQUNUSVZFOw0KPiA+DQo+ID4gICAgIGlmIChuZXRpZl9ydW5uaW5nKG5kZXYpKSB7DQo+ ID4gKyAgICAgICAgICAgcHJpdi0+Y2FuLnN0YXRlID0gQ0FOX1NUQVRFX0VSUk9SX0FDVElWRTsN Cj4gPiAgICAgICAgICAgICBuZXRpZl9kZXZpY2VfYXR0YWNoKG5kZXYpOw0KPiA+ICAgICAgICAg ICAgIG5ldGlmX3N0YXJ0X3F1ZXVlKG5kZXYpOw0KPiA+ICAgICB9DQo+ID4gQEAgLTEwMzAsNyAr MTA0NSwxMCBAQCBzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIHhjYW5fcmVzdW1lKHN0cnVjdA0K PiBkZXZpY2UgKmRldikNCj4gPiAgICAgcmV0dXJuIDA7DQo+ID4gIH0NCj4gPg0KPiA+IC1zdGF0 aWMgU0lNUExFX0RFVl9QTV9PUFMoeGNhbl9kZXZfcG1fb3BzLCB4Y2FuX3N1c3BlbmQsDQo+IHhj YW5fcmVzdW1lKTsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIHhjYW5fZGV2 X3BtX29wcyA9IHsNCj4gPiArICAgU0VUX1NZU1RFTV9TTEVFUF9QTV9PUFMoeGNhbl9zdXNwZW5k LCB4Y2FuX3Jlc3VtZSkNCj4gPiArICAgU0VUX1BNX1JVTlRJTUVfUE1fT1BTKHhjYW5fcnVudGlt ZV9zdXNwZW5kLA0KPiB4Y2FuX3J1bnRpbWVfcmVzdW1lLA0KPiA+ICtOVUxMKSB9Ow0KPiA+DQo+ ID4gIC8qKg0KPiA+ICAgKiB4Y2FuX3Byb2JlIC0gUGxhdGZvcm0gcmVnaXN0cmF0aW9uIGNhbGwg QEAgLTEwNzEsNyArMTA4OSw3IEBADQo+ID4gc3RhdGljIGludCB4Y2FuX3Byb2JlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ID4gICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+ ID4NCj4gPiAgICAgcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpOw0KPiA+IC0gICBwcml2LT5kZXYg PSBuZGV2Ow0KPiA+ICsgICBwcml2LT5kZXYgPSAmcGRldi0+ZGV2Ow0KPiA+ICAgICBwcml2LT5j YW4uYml0dGltaW5nX2NvbnN0ID0gJnhjYW5fYml0dGltaW5nX2NvbnN0Ow0KPiA+ICAgICBwcml2 LT5jYW4uZG9fc2V0X21vZGUgPSB4Y2FuX2RvX3NldF9tb2RlOw0KPiA+ICAgICBwcml2LT5jYW4u ZG9fZ2V0X2JlcnJfY291bnRlciA9IHhjYW5fZ2V0X2JlcnJfY291bnRlcjsgQEAgLQ0KPiAxMTM3 LDE1DQo+ID4gKzExNTUsMjIgQEAgc3RhdGljIGludCB4Y2FuX3Byb2JlKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpDQo+ID4NCj4gPiAgICAgbmV0aWZfbmFwaV9hZGQobmRldiwgJnByaXYt Pm5hcGksIHhjYW5fcnhfcG9sbCwgcnhfbWF4KTsNCj4gPg0KPiA+ICsgICBwbV9ydW50aW1lX3Nl dF9hY3RpdmUoJnBkZXYtPmRldik7DQo+ID4gKyAgIHBtX3J1bnRpbWVfaXJxX3NhZmUoJnBkZXYt PmRldik7DQo+ID4gKyAgIHBtX3J1bnRpbWVfZW5hYmxlKCZwZGV2LT5kZXYpOw0KPiA+ICsgICBw bV9ydW50aW1lX2dldF9zeW5jKCZwZGV2LT5kZXYpOw0KPiBDaGVjayBlcnJvciB2YWx1ZXM/DQoN Ck9rDQo+ID4gKw0KPiA+ICAgICByZXQgPSByZWdpc3Rlcl9jYW5kZXYobmRldik7DQo+ID4gICAg IGlmIChyZXQpIHsNCj4gPiAgICAgICAgICAgICBkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsIHRv IHJlZ2lzdGVyIGZhaWxlZCAoZXJyPSVkKVxuIiwNCj4gcmV0KTsNCj4gPiArICAgICAgICAgICBw bV9ydW50aW1lX3B1dChwcml2LT5kZXYpOw0KPg0KPiBQbGVhc2UgbW92ZSB0aGUgcG1fcnVudGlt ZV9wdXQgaW50byB0aGUgY29tbW9uIGVycm9yIGV4aXQgcGF0aC4NCj4NCg0KT2sNCg0KPiA+ICAg ICAgICAgICAgIGdvdG8gZXJyX3VucHJlcGFyZV9kaXNhYmxlX2J1c2NsazsNCj4gPiAgICAgfQ0K PiA+DQo+ID4gICAgIGRldm1fY2FuX2xlZF9pbml0KG5kZXYpOw0KPiA+IC0gICBjbGtfZGlzYWJs ZV91bnByZXBhcmUocHJpdi0+YnVzX2Nsayk7DQo+ID4gLSAgIGNsa19kaXNhYmxlX3VucHJlcGFy ZShwcml2LT5jYW5fY2xrKTsNCj4gPiArDQo+ID4gKyAgIHBtX3J1bnRpbWVfcHV0KCZwZGV2LT5k ZXYpOw0KPiA+ICsNCj4gPiAgICAgbmV0ZGV2X2RiZyhuZGV2LCAicmVnX2Jhc2U9MHglcCBpcnE9 JWQgY2xvY2s9JWQsIHR4IGZpZm8NCj4gZGVwdGg6JWRcbiIsDQo+ID4gICAgICAgICAgICAgICAg ICAgICBwcml2LT5yZWdfYmFzZSwgbmRldi0+aXJxLCBwcml2LT5jYW4uY2xvY2suZnJlcSwNCj4g PiAgICAgICAgICAgICAgICAgICAgIHByaXYtPnR4X21heCk7DQo+ID4NCj4NCj4gSSB0aGluayB5 b3UgaGF2ZSB0byBjb252ZXJ0IHRoZSBfcmVtb3ZlKCkgZnVuY3Rpb24sIHRvby4gSGF2ZSBhIGxv b2sgYXQgdGhlDQo+IGdwaW8tenlucS5jIGRyaXZlcjoNCj4NCj4gPiBzdGF0aWMgaW50IHp5bnFf Z3Bpb19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikgew0KPiA+ICAgICBzdHJ1 Y3QgenlucV9ncGlvICpncGlvID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7DQo+ID4NCj4g PiAgICAgcG1fcnVudGltZV9nZXRfc3luYygmcGRldi0+ZGV2KTsNCj4NCj4gSG93ZXZlciBJIGRv bid0IHVuZGVyc3RhbmQgd2h5IHRoZSBnZXRfc3luYygpIGlzIGhlcmUuIE1heWJlIFPDtnJlbiBj YW4NCj4gaGVscD8NCg0KSSBjb252ZXJ0ZWQgdGhlIHJlbW92ZSBmdW5jdGlvbiB0byB1c2UgdGhl IHJ1bi10aW1lIFBNIGFuZCAuDQpCZWxvdyBpcyB0aGUgcmVtb3ZlIGNvZGUgc25pcHBldC4NCg0K ICAgICAgIHJldCA9IHBtX3J1bnRpbWVfZ2V0X3N5bmMoJnBkZXYtPmRldik7DQogICAgICAgIGlm IChyZXQgPCAwKSB7DQogICAgICAgICAgICAgICAgbmV0ZGV2X2VycihuZGV2LCAiJXM6IHBtX3J1 bnRpbWVfZ2V0IGZhaWxlZCglZClcbiIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF9fZnVuY19fLCByZXQpOw0KICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQogICAgICAgIH0N Cg0KICAgICAgICBpZiAoc2V0X3Jlc2V0X21vZGUobmRldikgPCAwKQ0KICAgICAgICAgICAgICAg IG5ldGRldl9lcnIobmRldiwgIm1vZGUgcmVzZXR0aW5nIGZhaWxlZCFcbiIpOw0KDQogICAgICAg IHVucmVnaXN0ZXJfY2FuZGV2KG5kZXYpOw0KICAgICAgICBuZXRpZl9uYXBpX2RlbCgmcHJpdi0+ bmFwaSk7DQogICAgICAgIGZyZWVfY2FuZGV2KG5kZXYpOw0KICAgICAgICBwbV9ydW50aW1lX2Rp c2FibGUoJnBkZXYtPmRldik7DQoNCk9ic2VydmVkIHRoZSBiZWxvdyB0aGluZ3MgaW4gdGhlIC9z eXMva2VybmVsL2RlYnVnL2Nsay9jbGtfc3VtbWFyeS4NCg0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBNb2Rwcm9iZSAgICAgICAgaWZjb25maWcgdXAgICAgaWZjb25maWcgZG93biAg IHJtbW9kICBNb2Rwcm9iZSAgaWZjb25maWcgdXAgICBpZmNvbmZpZyBkb3duICBybW1vZCAgTW9k cHJvYmUgIGlmY29uZmlnIHVwICAgaWZjb25maWcgZG93biAgcm1tb2QNCg0KQ2xrX3ByZXBhcmUg Y291bnQ6ICAgICAgICAgICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMSAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAxICAgICAgIDIgICAgICAgIDIgICAg ICAgICAgICAgIDIgICAgICAgICAgICAgICAyICAgICAgIDMgICAgICAgMyAgICAgICAgICAgICAg IDMgICAgICAgICAgICAgICAzDQoNCkNsa19lbmFibGUgY291bnQ6ICAgICAgICAgICAgICAgICAw ICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgMSAgICAgICAyICAg ICAgIDIgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMiAgICAgICAzICAgICAgIDMgICAg ICAgICAgICAgICAzICAgICAgICAgICAgICAgMw0KDQpSZWdhcmRzLA0KS2VkYXIuDQoNCj4NCj4g PiAgICAgZ3Bpb2NoaXBfcmVtb3ZlKCZncGlvLT5jaGlwKTsNCj4gPiAgICAgY2xrX2Rpc2FibGVf dW5wcmVwYXJlKGdwaW8tPmNsayk7DQo+ID4gICAgIGRldmljZV9zZXRfd2FrZXVwX2NhcGFibGUo JnBkZXYtPmRldiwgMCk7DQo+ID4gICAgIHJldHVybiAwOw0KPiA+IH0NCj4NCj4gcmVnYXJkcywN Cj4gTWFyYw0KPg0KPiAtLQ0KPiBQZW5ndXRyb25peCBlLksuICAgICAgICAgICAgICAgICAgfCBN YXJjIEtsZWluZS1CdWRkZSAgICAgICAgICAgfA0KPiBJbmR1c3RyaWFsIExpbnV4IFNvbHV0aW9u cyAgICAgICAgfCBQaG9uZTogKzQ5LTIzMS0yODI2LTkyNCAgICAgfA0KPiBWZXJ0cmV0dW5nIFdl c3QvRG9ydG11bmQgICAgICAgICAgfCBGYXg6ICAgKzQ5LTUxMjEtMjA2OTE3LTU1NTUgfA0KPiBB bXRzZ2VyaWNodCBIaWxkZXNoZWltLCBIUkEgMjY4NiAgfCBodHRwOi8vd3d3LnBlbmd1dHJvbml4 LmRlICAgfA0KDQoNCg0KVGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIGFyZSBpbnRlbmRl ZCBmb3IgdGhlIHNvbGUgdXNlIG9mIHRoZSBuYW1lZCByZWNpcGllbnQocykgYW5kIGNvbnRhaW4o cykgY29uZmlkZW50aWFsIGluZm9ybWF0aW9uIHRoYXQgbWF5IGJlIHByb3ByaWV0YXJ5LCBwcml2 aWxlZ2VkIG9yIGNvcHlyaWdodGVkIHVuZGVyIGFwcGxpY2FibGUgbGF3LiBJZiB5b3UgYXJlIG5v dCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBkbyBub3QgcmVhZCwgY29weSwgb3IgZm9yd2FyZCB0 aGlzIGVtYWlsIG1lc3NhZ2Ugb3IgYW55IGF0dGFjaG1lbnRzLiBEZWxldGUgdGhpcyBlbWFpbCBt ZXNzYWdlIGFuZCBhbnkgYXR0YWNobWVudHMgaW1tZWRpYXRlbHkuDQoNCg==