From mboxrd@z Thu Jan 1 00:00:00 1970 From: MyungJoo Ham Subject: Re: [PATCHv8 1/9] devfreq: event: Add new devfreq_event class to provide basic data for devfreq governor Date: Tue, 20 Jan 2015 04:34:16 +0000 (GMT) Message-ID: <79052135.1306751421728453211.JavaMail.weblogic@epmlwas04a> Reply-To: myungjoo.ham@samsung.com Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 Return-path: MIME-version: 1.0 Sender: linux-kernel-owner@vger.kernel.org To: =?utf-8?Q?=EC=B5=9C=EC=B0=AC=EC=9A=B0?= , "kgene@kernel.org" Cc: =?utf-8?Q?=EB=B0=95=EA=B2=BD=EB=AF=BC?= , "rafael.j.wysocki@intel.com" , "mark.rutland@arm.com" , ABHILASH KESAVAN , "tomasz.figa@gmail.com" , Krzysztof Kozlowski , Bartlomiej Zolnierkiewicz , "robh+dt@kernel.org" , =?utf-8?Q?=EB=8C=80=EC=9D=B8=EA=B8=B0?= , "linux-pm@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-samsung-soc@vger.kernel.org" List-Id: linux-samsung-soc@vger.kernel.org PiAgIA0KPiAgVGhpcyBwYXRjaCBhZGQgbmV3IGRldmZyZXFfZXZlbnQgY2xhc3MgZm9yIGRldmZy ZXFfZXZlbnQgZGV2aWNlIHdoaWNoIHByb3ZpZGUNCj4gcmF3IGRhdGEgKGUuZy4sIG1lbW9yeSBi dXMgdXRpbGl6YXRpb24vR1BVIHV0aWxpemF0aW9uKS4gVGhpcyByYXcgZGF0YSBmcm9tDQo+IGRl dmZyZXFfZXZlbnQgZGF0YSB3b3VsZCBiZSB1c2VkIGZvciB0aGUgZ292ZXJub3Igb2YgZGV2ZnJl cSBzdWJzeXN0ZW0uDQo+IC0gZGV2ZnJlcV9ldmVudCBkZXZpY2UgOiBQcm92aWRlIHJhdyBkYXRh IGZvciBnb3Zlcm5vciBvZiBleGlzdGluZyBkZXZmcmVxIGRldmljZQ0KPiAtIGRldmZyZXEgZGV2 aWNlICAgICAgIDogTW9uaXRvciBkZXZpY2Ugc3RhdGUgYW5kIGNoYW5nZSBmcmVxdWVuY3kvdm9s dGFnZSBvZiBkZXZpY2UNCj4gICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSByYXcg ZGF0YSBmcm9tIGRldmZyZXFfZXZlbnQgZGV2aWNlDQo+IA0KPiBUaGUgZGV2ZnJlcSBzdWJzeXN0 ZW0gc3VwcG9ydCBnZW5lcmljIERWRlMoRHluYW1pYyBWb2x0YWdlL0ZyZXF1ZW5jeSBTY2FsaW5n KQ0KPiBmb3IgTm9uLUNQVSBEZXZpY2VzLiBUaGUgZGV2ZnJlcSBkZXZpY2Ugd291bGQgZGVydGVy bWluZSBjdXJyZW50IGRldmljZSBzdGF0ZQ0KPiB1c2luZyB2YXJpb3VzIGdvdmVybm9yIChlLmcu LCBvbmRlbWFuZCwgcGVyZm9ybWFuY2UsIHBvd2Vyc2F2ZSkuIEFmdGVyIGNvbXBsZXRlZA0KPiBk ZXRlcm1pbmF0aW9uIG9mIHN5c3RlbSBzdGF0ZSwgZGV2ZnJlcSBkZXZpY2Ugd291bGQgY2hhbmdl IHRoZSBmcmVxdWVuY3kvdm9sdGFnZQ0KPiBvZiBkZXZmcmVxIGRldmljZSBhY2NvcmRpbmcgdG8g dGhlIHJlc3VsdCBvZiBnb3Zlcm5vci4NCj4gDQo+IEJ1dCwgZGV2ZnJlcSBnb3Zlcm5vciBtdXN0 IG5lZWQgYmFzaWMgZGF0YSB3aGljaCBpbmRpY2F0ZXMgY3VycmVudCBkZXZpY2Ugc3RhdGUuDQo+ IEV4aXN0aW5nIGRldmZyZXEgc3Vic3lzdGVtIG9ubHkgY29uc2lkZXIgZGV2ZnJlcSBkZXZpY2Ug d2hpY2ggY2hlY2sgY3VycmVudCBzeXN0ZW0NCj4gc3RhdGUgYW5kIGRldGVybWluZSBwcm9wZXIg c3lzdGVtIHN0YXRlIHVzaW5nIGJhc2ljIGRhdGEuIFRoZXJlIGlzIG5vIHN1YnN5c3RlbQ0KPiBm b3IgZGV2aWNlIHByb3ZpZGluZyBiYXNpYyBkYXRhIHRvIGRldmZyZXEgZGV2aWNlLg0KPiANCj4g VGhlIGRldmZyZXEgc3Vic3lzdGVtIG11c3QgbmVlZCBkZXZmcmVxX2V2ZW50IGRldmljZShkYXRh LXByb3ZpZGVyIGRldmljZSkgZm9yDQo+IGV4aXN0aW5nIGRldmZyZXEgZGV2aWNlLiBTbywgdGhp cyBwYXRjaCBhZGQgbmV3IGRldmZyZXFfZXZlbnQgY2xhc3MgZm9yDQo+IGRldmZyZXFfZXZlbnQg ZGV2aWNlIHdoaWNoIHJlYWQgdmFyaW91cyBiYXNpYyBkYXRhKGUuZywgbWVtb3J5IGJ1cyB1dGls aXphdGlvbiwNCj4gR1BVIHV0aWxpemF0aW9uKSBhbmQgcHJvdmlkZSBtZWFzdXJlZCBkYXRhIHRv IGV4aXN0aW5nIGRldmZyZXEgZGV2aWNlIHRocm91Z2gNCj4gc3RhbmRhcmQgQVBJcyBvZiBkZXZm cmVxX2V2ZW50IGNsYXNzLg0KPiANCj4gVGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBleHBsYWlu cyB0aGUgZmVhdHVyZSBvZiB0d28ga2luZCBvZiBkZXZmcmVxIGNsYXNzOg0KPiAtIGRldmZyZXEg Y2xhc3MgKGV4aXN0aW5nKQ0KPiAgOiBkZXZmcmVxIGNvbnN1bWVyIGRldmljZSB1c2UgcmF3IGRh dGEgZnJvbSBkZXZmcmVxX2V2ZW50IGRldmljZSBmb3INCj4gICAgZGV0ZXJtaW5pbmcgcHJvcGVy IGN1cnJlbnQgc3lzdGVtIHN0YXRlIGFuZCBjaGFuZ2Ugdm9sdGFnZS9mcmVxdWVuY3kNCj4gICAg ZHluYW1pY2FsbHkgdXNpbmcgdmFyaW91cyBnb3Zlcm5vcnMuDQo+IA0KPiAtIGRldmZyZXFfZXZl bnQgY2xhc3MgKG5ldykNCj4gIDogUHJvdmlkZSBtZWFzdXJlZCByYXcgZGF0YSB0byBkZXZmcmVx IGRldmljZSBmb3IgZ292ZXJub3INCj4gDQo+IENjOiBNeXVuZ0pvbyBIYW0gPG15dW5nam9vLmhh bUBzYW1zdW5nLmNvbT4NCj4gQ2M6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3Vu Zy5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IENoYW53b28gQ2hvaSA8Y3cwMC5jaG9pQHNhbXN1bmcu Y29tPg0KPiAtLS0NCg0KW10NCg0KPiArLyoqDQo+ICsgKiBkZXZmcmVxX2V2ZW50X2VuYWJsZV9l ZGV2KCkgLSBFbmFibGUgdGhlIGRldmZyZXEtZXZlbnQgZGV2IGFuZCBpbmNyZWFzZQ0KPiArICoJ CQkJIHRoZSBlbmFibGVfY291bnQgb2YgZGV2ZnJlcS1ldmVudCBkZXYuDQo+ICsgKiBAZWRldgk6 IHRoZSBkZXZmcmVxLWV2ZW50IGRldmljZQ0KPiArICoNCj4gKyAqIE5vdGUgdGhhdCB0aGlzIGZ1 bmN0aW9uIGluY3JlYXNlIHRoZSBlbmFibGVfY291bnQgYW5kIGVuYWJsZSB0aGUNCj4gKyAqIGRl dmZyZXEtZXZlbnQgZGV2aWNlLiBUaGUgZGV2ZnJlcS1ldmVudCBkZXZpY2Ugc2hvdWxkIGJlIGVu YWJsZWQgYmVmb3JlDQo+ICsgKiB1c2luZyBpdCBieSBkZXZmcmVxIGRldmljZS4NCj4gKyAqLw0K PiAraW50IGRldmZyZXFfZXZlbnRfZW5hYmxlX2VkZXYoc3RydWN0IGRldmZyZXFfZXZlbnRfZGV2 ICplZGV2KQ0KPiArew0KPiArCWludCByZXQgPSAwOw0KPiArDQo+ICsJaWYgKCFlZGV2IHx8ICFl ZGV2LT5kZXNjKQ0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKw0KPiArCW11dGV4X2xvY2soJmVk ZXYtPmxvY2spOw0KPiArCWlmIChlZGV2LT5kZXNjLT5vcHMgJiYgZWRldi0+ZGVzYy0+b3BzLT5l bmFibGUpIHsNCj4gKwkJcmV0ID0gZWRldi0+ZGVzYy0+b3BzLT5lbmFibGUoZWRldik7DQo+ICsJ CWlmIChyZXQgPCAwKQ0KPiArCQkJZ290byBlcnI7DQo+ICsJfQ0KDQpJcyB0aGVyZSBhbnkgcmVh c29uIHRvIGNhbGwgZW5hYmxlKGVkZXYpIGV2ZW4gd2hlbiBlbmFibGVfY291bnQgaXMgYWxyZWFk eSA+IDAgDQp3aGlsZSB5b3UgZG8gbm90IGNhbGwgZGlzYWJsZShlZGV2KSB3aGlsZSBlbmFibGVf Y291bnQgPiAwPw0KDQpJIHRoaW5rIHRoaXMgbWF5IGluY3VyIGVycm9ycyBpbiB0aGUgcmVsYXRl ZCBkZXZpY2UgZHJpdmVycy4NCihlLmcuLCBpbmNvcnJlY3QgcGFpcmluZyBvZiBjbGsvcnVudGlt ZS1wbS9yZWd1bGF0b3IgZW5hYmxlL2Rpc2FibGUNCmF0IHRoZSBkZXZpY2UgZHJpdmVyIHNpZGUp DQoNCj4gKwllZGV2LT5lbmFibGVfY291bnQrKzsNCj4gK2VycjoNCj4gKwltdXRleF91bmxvY2so JmVkZXYtPmxvY2spOw0KPiArDQo+ICsJcmV0dXJuIHJldDsNCj4gK30NCj4gK0VYUE9SVF9TWU1C T0xfR1BMKGRldmZyZXFfZXZlbnRfZW5hYmxlX2VkZXYpOw0KPiArDQo+ICsvKioNCj4gKyAqIGRl dmZyZXFfZXZlbnRfZGlzYWJsZV9lZGV2KCkgLSBEaXNhYmxlIHRoZSBkZXZmcmVxLWV2ZW50IGRl diBhbmQgZGVjcmVhc2UNCj4gKyAqCQkJCSAgdGhlIGVuYWJsZV9jb3VudCBvZiB0aGUgZGV2ZnJl cS1ldmVudCBkZXYuDQo+ICsgKiBAZWRldgk6IHRoZSBkZXZmcmVxLWV2ZW50IGRldmljZQ0KPiAr ICoNCj4gKyAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGRlY3JlYXNlIHRoZSBlbmFibGVfY291 bnQgYW5kIGRpc2FibGUgdGhlDQo+ICsgKiBkZXZmcmVxLWV2ZW50IGRldmljZS4gQWZ0ZXIgdGhl IGRldmZyZXEtZXZlbnQgZGV2aWNlIGlzIGRpc2FibGVkLA0KPiArICogZGV2ZnJlcSBkZXZpY2Ug Y2FuJ3QgdXNlIHRoZSBkZXZmcmVxLWV2ZW50IGRldmljZSBmb3IgZ2V0L3NldC9yZXNldA0KPiAr ICogb3BlcmF0aW9ucy4NCj4gKyAqLw0KPiAraW50IGRldmZyZXFfZXZlbnRfZGlzYWJsZV9lZGV2 KHN0cnVjdCBkZXZmcmVxX2V2ZW50X2RldiAqZWRldikNCj4gK3sNCj4gKwlpbnQgcmV0ID0gMDsN Cj4gKw0KPiArCWlmICghZWRldiB8fCAhZWRldi0+ZGVzYykNCj4gKwkJcmV0dXJuIC1FSU5WQUw7 DQo+ICsNCj4gKwltdXRleF9sb2NrKCZlZGV2LT5sb2NrKTsNCj4gKwlpZiAoZWRldi0+ZW5hYmxl X2NvdW50ID4gMCkgew0KPiArCQllZGV2LT5lbmFibGVfY291bnQtLTsNCj4gKwl9IGVsc2Ugew0K PiArCQlkZXZfd2FybigmZWRldi0+ZGV2LCAidW5iYWxhbmNlZCBlbmFibGVfY291bnRcbiIpOw0K PiArCQlyZXQgPSAtRUlOVkFMOw0KPiArCQlnb3RvIGVycjsNCj4gKwl9DQo+ICsNCj4gKwlpZiAo ZWRldi0+ZGVzYy0+b3BzICYmIGVkZXYtPmRlc2MtPm9wcy0+ZGlzYWJsZSkgew0KPiArCQlyZXQg PSBlZGV2LT5kZXNjLT5vcHMtPmRpc2FibGUoZWRldik7DQo+ICsJCWlmIChyZXQgPCAwKSB7DQo+ ICsJCQllZGV2LT5lbmFibGVfY291bnQrKzsNCj4gKwkJCWdvdG8gZXJyOw0KPiArCQl9DQo+ICsJ fQ0KDQpZb3UgZGlkIGl0IGNvcnJlY3RseSB3aXRoIGRpc2FibGUgaGVyZTsNCm5vdCBjYWxsaW5n IGl0IHdoZW4gaXQgaXMgbm90IHJlcXVpcmVkLg0KDQo+ICtlcnI6DQo+ICsJbXV0ZXhfdW5sb2Nr KCZlZGV2LT5sb2NrKTsNCj4gKw0KPiArCXJldHVybiByZXQ7DQo+ICt9DQo+ICtFWFBPUlRfU1lN Qk9MX0dQTChkZXZmcmVxX2V2ZW50X2Rpc2FibGVfZWRldik7DQo+ICsNCg0KW10NCj4gK0VYUE9S VF9TWU1CT0xfR1BMKGRldmZyZXFfZXZlbnRfaXNfZW5hYmxlZCk7DQpbXQ0KDQo+ICtFWFBPUlRf U1lNQk9MX0dQTChkZXZmcmVxX2V2ZW50X3NldF9ldmVudCk7DQpbXQ0KDQo+ICsNCj4gKy8qKg0K PiArICogZGV2ZnJlcV9ldmVudF9nZXRfZXZlbnQoKSAtIEdldCBldmVudCBhbmQgdG90YWxfZXZl bnQgZnJvbSBkZXZmcmVxLWV2ZW50IGRldi4NCj4gKyAqIEBlZGV2CTogdGhlIGRldmZyZXEtZXZl bnQgZGV2aWNlDQo+ICsgKiBAZWRhdGEJOiB0aGUgY2FsY3VsYXRlZCBkYXRhIG9mIGRldmZyZXEt ZXZlbnQgZGV2aWNlDQo+ICsgKg0KPiArICogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZ2V0IHRo ZSBjYWxjdWxhdGVkIGV2ZW50IGRhdGEgZnJvbSBkZXZmcmVxLWV2ZW50IGRldg0KPiArICogYWZ0 ZXIgc3RvcGluZyB0aGUgcHJvZ3Jlc3Mgb2Ygd2hvbGUgc2VxdWVuY2Ugb2YgZGV2ZnJlcS1ldmVu dCBkZXYuDQo+ICsgKi8NCj4gK2ludCBkZXZmcmVxX2V2ZW50X2dldF9ldmVudChzdHJ1Y3QgZGV2 ZnJlcV9ldmVudF9kZXYgKmVkZXYsDQo+ICsJCQkgICAgc3RydWN0IGRldmZyZXFfZXZlbnRfZGF0 YSAqZWRhdGEpDQo+ICt7DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCWlmICghZWRldiB8fCAhZWRl di0+ZGVzYykNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsNCj4gKwlpZiAoIWVkZXYtPmRlc2Mt Pm9wcyB8fCAhZWRldi0+ZGVzYy0+b3BzLT5nZXRfZXZlbnQpDQo+ICsJCXJldHVybiAtRUlOVkFM Ow0KPiArDQo+ICsJaWYgKCFkZXZmcmVxX2V2ZW50X2lzX2VuYWJsZWQoZWRldikpDQo+ICsJCXJl dHVybiAtRUlOVkFMOw0KPiArDQo+ICsJZWRhdGEtPmV2ZW50ID0gZWRhdGEtPnRvdGFsX2V2ZW50 ID0gMDsNCj4gKw0KPiArCW11dGV4X2xvY2soJmVkZXYtPmxvY2spOw0KPiArCXJldCA9IGVkZXYt PmRlc2MtPm9wcy0+Z2V0X2V2ZW50KGVkZXYsIGVkYXRhKTsNCj4gKwltdXRleF91bmxvY2soJmVk ZXYtPmxvY2spOw0KPiArDQo+ICsJaWYgKChlZGF0YS0+dG90YWxfZXZlbnQgPD0gMCkNCj4gKwkJ fHwgKGVkYXRhLT5ldmVudCA+IGVkYXRhLT50b3RhbF9ldmVudCkpIHsNCj4gKwkJZWRhdGEtPmV2 ZW50ID0gZWRhdGEtPnRvdGFsX2V2ZW50ID0gMDsNCj4gKwkJcmV0ID0gLUVJTlZBTDsNCg0KdG90 YWxfZXZlbnQgaXMgdW5zaWduZWQuIChjYW5ub3QgYmUgPCAwKQ0KDQpQbHVzLCBnZXRfZXZlbnQo KSBtYXkgYWxyZWFkeSBoYXZlIHJldHVybmVkIGEgbmVnYXRpdmUgdmFsdWUgd2l0aA0KdGhlIGlu dGVudGlvbiBvZiBnaXZpbmcgYSBlcnJvciBkaWZmZXJlbnQgZnJvbSBFSU5WQUwuDQoNCkkgd291 bGQganVzdCBzaW1wbHkgc2V0IHRvdGFsX2V2ZW50ID0gZXZlbnQgPSAwIGlmIHJldCA8IDAuDQoN Cg0KPiArCX0NCj4gKw0KPiArCXJldHVybiByZXQ7DQo+ICt9DQo+ICtFWFBPUlRfU1lNQk9MX0dQ TChkZXZmcmVxX2V2ZW50X2dldF9ldmVudCk7DQo+ICsNCj4gKy8qKg0KPiArICogZGV2ZnJlcV9l dmVudF9yZXNldF9ldmVudCgpIC0gUmVzZXQgYWxsIG9wZWF0aW9ucyBvZiBkZXZmcmVxLWV2ZW50 IGRldi4NCj4gKyAqIEBlZGV2CTogdGhlIGRldmZyZXEtZXZlbnQgZGV2aWNlDQo+ICsgKg0KPiAr ICogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gc3RvcCBhbGwgb3BlcmF0aW9ucyBvZiBkZXZmcmVx LWV2ZW50IGRldiBhbmQgcmVzZXQNCj4gKyAqIHRoZSBjdXJyZW50IGV2ZW50IGRhdGEgdG8gbWFr ZSB0aGUgZGV2ZnJlcS1ldmVudCBkZXZpY2UgaW50byBpbml0aWFsIHN0YXRlLg0KPiArICovDQo+ ICtpbnQgZGV2ZnJlcV9ldmVudF9yZXNldF9ldmVudChzdHJ1Y3QgZGV2ZnJlcV9ldmVudF9kZXYg KmVkZXYpDQo+ICt7DQo+ICsJaW50IHJldCA9IDA7DQo+ICsNCj4gKwlpZiAoIWVkZXYgfHwgIWVk ZXYtPmRlc2MpDQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArDQo+ICsJaWYgKCFkZXZmcmVxX2V2 ZW50X2lzX2VuYWJsZWQoZWRldikpDQo+ICsJCXJldHVybiAtRVBFUk07DQo+ICsNCj4gKwltdXRl eF9sb2NrKCZlZGV2LT5sb2NrKTsNCj4gKwlpZiAoZWRldi0+ZGVzYy0+b3BzICYmIGVkZXYtPmRl c2MtPm9wcy0+cmVzZXQpDQo+ICsJCXJldCA9IGVkZXYtPmRlc2MtPm9wcy0+cmVzZXQoZWRldik7 DQo+ICsJbXV0ZXhfdW5sb2NrKCZlZGV2LT5sb2NrKTsNCg0KSW4gdGhlIGNvbnRleHQgb2YgdGhl IGdldF9ldmVudCgpIGhhbmRsaW5nICJsb2FkIiwNCmFyZW4ndCB5b3Ugc3VwcG9zZWQgdG8gc2V0 IHRvdGFsX2V2ZW50ID0gZXZlbnQgPSAwOyBoZXJlPw0KDQo+ICsNCj4gKwlpZiAocmV0IDwgMCkN Cj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsNCj4gKwlyZXR1cm4gcmV0Ow0KPiArfQ0KPiArRVhQ T1JUX1NZTUJPTF9HUEwoZGV2ZnJlcV9ldmVudF9yZXNldF9ldmVudCk7DQo+ICsNCj4gKy8qKg0K PiArICogZGV2ZnJlcV9ldmVudF9nZXRfZHJ2ZGF0YSgpIC0gUmV0dXJuIGRyaXZlci1kYXRhIG9m IGRldmZyZXEtZXZlbnQgZGV2Lg0KPiArICogQGVkZXYJOiB0aGUgZGV2ZnJlcS1ldmVudCBkZXZp Y2UNCj4gKyAqDQo+ICsgKiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiByZXR1cm4gdGhlIGRyaXZl ci1kYXRhIG9mIGRldmZyZXEtZXZlbnQgZGV2aWNlLg0KPiArICovDQo+ICt2b2lkICpkZXZmcmVx X2V2ZW50X2dldF9kcnZkYXRhKHN0cnVjdCBkZXZmcmVxX2V2ZW50X2RldiAqZWRldikNCj4gK3sN Cj4gKwlyZXR1cm4gZWRldi0+ZGVzYy0+ZHJpdmVyX2RhdGE7DQo+ICt9DQo+ICtFWFBPUlRfU1lN Qk9MX0dQTChkZXZmcmVxX2V2ZW50X2dldF9kcnZkYXRhKTsNCg0KTG9va3MgbGlrZSB5b3UgY2Fu IHNpbXBseSB3cml0ZSB0aGlzIGluIHRoZSBoZWFkZXIgZmlsZS4NCihlaXRoZXIgI2RlZmluZSBv ciBzdGF0aWMgaW5saW5lIGZ1bmN0aW9uKQ0KDQpbXQ0KDQo+ICtFWFBPUlRfU1lNQk9MX0dQTChk ZXZmcmVxX2V2ZW50X2dldF9lZGV2X2J5X3BoYW5kbGUpOw0KW10NCj4gK0VYUE9SVF9TWU1CT0xf R1BMKGRldmZyZXFfZXZlbnRfZ2V0X2VkZXZfY291bnQpOw0KW10NCg0KPiArLyoqDQo+ICsgKiBk ZXZmcmVxX2V2ZW50X2FkZF9lZGV2KCkgLSBBZGQgbmV3IGRldmZyZXEtZXZlbnQgZGV2aWNlLg0K PiArICogQGRldgkJOiB0aGUgZGV2aWNlIG93bmluZyB0aGUgZGV2ZnJlcS1ldmVudCBkZXZpY2Ug YmVpbmcgY3JlYXRlZA0KPiArICogQGRlc2MJOiB0aGUgZGV2ZnJlcS1ldmVudCBkZXZpY2UncyBk ZWNyaXB0b3Igd2hpY2ggaW5jbHVkZSBlc3NlbnRpYWwNCj4gKyAqCQkgIGRhdGEgZm9yIGRldmZy ZXEtZXZlbnQgZGV2aWNlLg0KPiArICoNCj4gKyAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGFk ZCBuZXcgZGV2ZnJlcS1ldmVudCBkZXZpY2UgdG8gZGV2ZnJlcS1ldmVudCBjbGFzcw0KPiArICog bGlzdCBhbmQgcmVnaXN0ZXIgdGhlIGRldmljZSBvZiB0aGUgZGV2ZnJlcS1ldmVudCBkZXZpY2Uu DQo+ICsgKi8NCj4gK3N0cnVjdCBkZXZmcmVxX2V2ZW50X2RldiAqZGV2ZnJlcV9ldmVudF9hZGRf ZWRldihzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ICsJCQkJCQlzdHJ1Y3QgZGV2ZnJlcV9ldmVudF9k ZXNjICpkZXNjKQ0KPiArew0KPiArCXN0cnVjdCBkZXZmcmVxX2V2ZW50X2RldiAqZWRldjsNCj4g KwlzdGF0aWMgYXRvbWljX3QgZXZlbnRfbm8gPSBBVE9NSUNfSU5JVCgwKTsNCj4gKwlpbnQgcmV0 Ow0KPiArDQo+ICsJaWYgKCFkZXYgfHwgIWRlc2MpDQo+ICsJCXJldHVybiBFUlJfUFRSKC1FSU5W QUwpOw0KPiArDQo+ICsJaWYgKCFkZXNjLT5uYW1lIHx8ICFkZXNjLT5vcHMpDQo+ICsJCXJldHVy biBFUlJfUFRSKC1FSU5WQUwpOw0KPiArDQo+ICsJaWYgKCFkZXNjLT5vcHMtPnNldF9ldmVudCB8 fCAhZGVzYy0+b3BzLT5nZXRfZXZlbnQpDQo+ICsJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOw0K PiArDQo+ICsJZWRldiA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBkZXZmcmVxX2V2ZW50X2Rldiks IEdGUF9LRVJORUwpOw0KDQpkZXZtXyogaGVyZT8gKHNlZWluZyBubyBmcmVlKQ0KDQo+ICsJaWYg KCFlZGV2KQ0KPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsNCj4gKw0KPiArCW11dGV4X2lu aXQoJmVkZXYtPmxvY2spOw0KPiArCWVkZXYtPmRlc2MgPSBkZXNjOw0KPiArCWVkZXYtPmRldi5w YXJlbnQgPSBkZXY7DQo+ICsJZWRldi0+ZGV2LmNsYXNzID0gZGV2ZnJlcV9ldmVudF9jbGFzczsN Cj4gKwllZGV2LT5kZXYucmVsZWFzZSA9IGRldmZyZXFfZXZlbnRfcmVsZWFzZV9lZGV2Ow0KPiAr DQo+ICsJZGV2X3NldF9uYW1lKCZlZGV2LT5kZXYsICJldmVudC4lZCIsIGF0b21pY19pbmNfcmV0 dXJuKCZldmVudF9ubykgLSAxKTsNCj4gKwlyZXQgPSBkZXZpY2VfcmVnaXN0ZXIoJmVkZXYtPmRl dik7DQo+ICsJaWYgKHJldCA8IDApIHsNCj4gKwkJcHV0X2RldmljZSgmZWRldi0+ZGV2KTsNCj4g KwkJcmV0dXJuIEVSUl9QVFIocmV0KTsNCj4gKwl9DQo+ICsJZGV2X3NldF9kcnZkYXRhKCZlZGV2 LT5kZXYsIGVkZXYpOw0KPiArDQo+ICsJSU5JVF9MSVNUX0hFQUQoJmVkZXYtPm5vZGUpOw0KPiAr DQo+ICsJbXV0ZXhfbG9jaygmZGV2ZnJlcV9ldmVudF9saXN0X2xvY2spOw0KPiArCWxpc3RfYWRk KCZlZGV2LT5ub2RlLCAmZGV2ZnJlcV9ldmVudF9saXN0KTsNCj4gKwltdXRleF91bmxvY2soJmRl dmZyZXFfZXZlbnRfbGlzdF9sb2NrKTsNCj4gKw0KPiArCXJldHVybiBlZGV2Ow0KPiArfQ0KPiAr RVhQT1JUX1NZTUJPTF9HUEwoZGV2ZnJlcV9ldmVudF9hZGRfZWRldik7DQo+ICsNCj4gKy8qKg0K PiArICogZGV2ZnJlcV9ldmVudF9yZW1vdmVfZWRldigpIC0gUmVtb3ZlIHRoZSBkZXZmcmVxLWV2 ZW50IGRldmljZSByZWdpc3RlcmVkLg0KPiArICogQGRldgkJOiB0aGUgZGV2ZnJlcS1ldmVudCBk ZXZpY2UNCj4gKyAqDQo+ICsgKiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiByZW1vdmUgdGhlIHJl Z2lzdGVyZWQgZGV2ZnJlcS1ldmVudCBkZXZpY2UuDQo+ICsgKi8NCj4gK2ludCBkZXZmcmVxX2V2 ZW50X3JlbW92ZV9lZGV2KHN0cnVjdCBkZXZmcmVxX2V2ZW50X2RldiAqZWRldikNCj4gK3sNCj4g KwlpZiAoIWVkZXYpDQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArDQo+ICsJbXV0ZXhfbG9jaygm ZGV2ZnJlcV9ldmVudF9saXN0X2xvY2spOw0KPiArCVdBUk5fT04oZWRldi0+ZW5hYmxlX2NvdW50 KTsNCg0KTGV0J3MgV0FSTiBiZWZvcmUgbXV0ZXhfbG9jaygpOw0KDQo+ICsJbGlzdF9kZWwoJmVk ZXYtPm5vZGUpOw0KPiArCWRldmljZV91bnJlZ2lzdGVyKCZlZGV2LT5kZXYpOw0KDQpMZXQncyB1 bnJlZ2lzdGVyIGFmdGVyIG11dGV4X3VubG9jaygpOw0KDQpUaGUgdHdvIGxpbmVzIGRvIG5vdCBu ZWVkIHRvIGJlIHByb3RlY3RlZCBieSB0aGUgbXV0ZXguDQoNCj4gKwltdXRleF91bmxvY2soJmRl dmZyZXFfZXZlbnRfbGlzdF9sb2NrKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArRVhQ T1JUX1NZTUJPTF9HUEwoZGV2ZnJlcV9ldmVudF9yZW1vdmVfZWRldik7DQo+ICsNCg0KW10NCg0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kZXZmcmVxL2V2ZW50L0tjb25maWcgYi9kcml2ZXJzL2Rl dmZyZXEvZXZlbnQvS2NvbmZpZw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAw MDAwLi4xY2VkNDJjDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZHJpdmVycy9kZXZmcmVxL2V2 ZW50L0tjb25maWcNCj4gQEAgLTAsMCArMSwxNiBAQA0KPiArbWVudWNvbmZpZyBQTV9ERVZGUkVR X0VWRU5UDQo+ICsJYm9vbCAiREVWRlJFUS1FdmVudCBkZXZpY2UgU3VwcG9ydCINCj4gKwloZWxw DQo+ICsJICBUaGUgZGV2ZnJlcS1ldmVudCBkZXZpY2UgcHJvdmlkZSB0aGUgcmF3IGRhdGEgYW5k IGV2ZW50cyB3aGljaA0KPiArCSAgaW5kaWNhdGUgdGhlIGN1cnJlbnQgc3RhdGUgb2YgZGV2ZnJl cS1ldmVudCBkZXZpY2UuIFRoZSBwcm92aWRlZA0KPiArCSAgZGF0YSBmcm9tIGRldmZyZXEtZXZl bnQgZGV2aWNlIGlzIHVzZWQgdG8gbW9uaXRvciB0aGUgc3RhdGUgb2YNCj4gKwkgIGRldmljZSBh bmQgZGV0ZXJtaW5lIHRoZSBzdWl0YWJsZSBzaXplIG9mIHJlc291cmNlIHRvIHJlZHVjZSB0aGUN Cj4gKwkgIHdhc3RlZCByZXNvdXJjZS4NCj4gKw0KPiArCSAgVGhlIGRldmZyZXEtZXZlbnQgZGV2 aWNlIGNhbiBzdXBwb3J0IHRoZSB2YXJpb3VzIHR5cGUgb2YgZXZlbnRzDQo+ICsJICAoZS5nLiwg cmF3IGRhdGEsIHV0aWxpemF0aW9uLCBsYXRlbmN5LCBiYW5kd2lkdGgpLiBUaGUgZXZlbnRzDQo+ ICsJICBtYXkgYmUgdXNlZCBieSBkZXZmcmVxIGdvdmVybm9yIGFuZCBvdGhlciBzdWJzeXN0ZW0u DQo+ICsNCj4gK2lmIFBNX0RFVkZSRVFfRVZFTlQNCj4gKw0KPiArZW5kaWYgIyBQTV9ERVZGUkVR X0VWRU5UDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2RldmZyZXEvZXZlbnQvTWFrZWZpbGUgYi9k cml2ZXJzL2RldmZyZXEvZXZlbnQvTWFrZWZpbGUNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g aW5kZXggMDAwMDAwMC4uZGM1NjAwNQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZlcnMv ZGV2ZnJlcS9ldmVudC9NYWtlZmlsZQ0KPiBAQCAtMCwwICsxIEBADQo+ICsjIEV4eW5vcyBERVZG UkVRIEV2ZW50IERyaXZlcnMNCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGV2ZnJlcS1l dmVudC5oIGIvaW5jbHVkZS9saW51eC9kZXZmcmVxLWV2ZW50LmgNCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uYjczNjNmNQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBi L2luY2x1ZGUvbGludXgvZGV2ZnJlcS1ldmVudC5oDQo+IEBAIC0wLDAgKzEsMTcwIEBADQo+ICsv Kg0KPiArICogZGV2ZnJlcS1ldmVudDogYSBmcmFtZXdvcmsgdG8gcHJvdmlkZSByYXcgZGF0YSBh bmQgZXZlbnRzIG9mIGRldmZyZXEgZGV2aWNlcw0KPiArICoNCj4gKyAqIENvcHlyaWdodCAoQykg MjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNzDQo+ICsgKiBBdXRob3I6IENoYW53b28gQ2hvaSA8Y3cw MC5jaG9pQHNhbXN1bmcuY29tPg0KPiArICoNCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQo+ICsgKiBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24g MiBhcw0KPiArICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQo+ ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBfX0xJTlVYX0RFVkZSRVFfRVZFTlRfSF9fDQo+ICsjZGVm aW5lIF9fTElOVVhfREVWRlJFUV9FVkVOVF9IX18NCj4gKw0KPiArI2luY2x1ZGUgPGxpbnV4L2Rl dmljZS5oPg0KPiArDQo+ICsvKioNCj4gKyAqIHN0cnVjdCBkZXZmcmVxX2V2ZW50X2RldiAtIHRo ZSBkZXZmcmVxLWV2ZW50IGRldmljZQ0KPiArICoNCj4gKyAqIEBub2RlCTogQ29udGFpbiB0aGUg ZGV2ZnJlcS1ldmVudCBkZXZpY2UgdGhhdCBoYXZlIGJlZW4gcmVnaXN0ZXJlZC4NCj4gKyAqIEBk ZXYJCTogdGhlIGRldmljZSByZWdpc3RlcmVkIGJ5IGRldmZyZXEtZXZlbnQgY2xhc3MuIGRldi5w YXJlbnQgaXMNCj4gKyAqCQkgIHRoZSBkZXZpY2UgdXNpbmcgZGV2ZnJlcS1ldmVudC4NCj4gKyAq IEBsb2NrCTogYSBtdXRleCB0byBwcm90ZWN0IGFjY2Vzc2luZyBkZXZmcmVxLWV2ZW50Lg0KPiAr ICogQGVuYWJsZV9jb3VudDogdGhlIG51bWJlciBvZiBlbmFibGUgZnVuY3Rpb24gaGF2ZSBiZWVu IGNhbGxlZC4NCj4gKyAqIEBkZXNjCTogdGhlIGRlc2NyaXB0aW9uIGZvciBkZXZmcmVxLWV2ZW50 IGRldmljZS4NCj4gKyAqDQo+ICsgKiBUaGlzIHN0cnVjdHVyZSBjb250YWlucyBkZXZmcmVxLWV2 ZW50IGRldmljZSBpbmZvcm1hdGlvbi4NCj4gKyAqLw0KPiArc3RydWN0IGRldmZyZXFfZXZlbnRf ZGV2IHsNCj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7DQo+ICsNCj4gKwlzdHJ1Y3QgZGV2aWNl IGRldjsNCj4gKwlzdHJ1Y3QgbXV0ZXggbG9jazsNCj4gKwl1MzIgZW5hYmxlX2NvdW50Ow0KPiAr DQo+ICsJY29uc3Qgc3RydWN0IGRldmZyZXFfZXZlbnRfZGVzYyAqZGVzYzsNCj4gK307DQo+ICsN Cj4gKy8qKg0KPiArICogc3RydWN0IGRldmZyZXFfZXZlbnRfZGF0YSAtIHRoZSBkZXZmcmVxLWV2 ZW50IGRhdGENCj4gKyAqDQo+ICsgKiBAZXZlbnQJOiB0aGUgbG9hZCBvZiBkZXZmcmVxLWV2ZW50 IGRldmljZSBmb3IgcG9sbGluZyBwZXJpb2QNCj4gKyAqIEB0b3RhbF9ldmVudAk6IHRoZSB0b3Rh bCBsb2FkIG9mIGRldmZyZXEtZXZlbnQgZGV2aWNlIGZvciBwb2xsaW5nIHBlcmlvZA0KPiArICoN Cj4gKyAqIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIHRoZSBkYXRhIG9mIGRldmZyZXEtZXZlbnQg ZGV2aWNlIGZvciBwb2xsaW5nIHBlcmlvZC4NCj4gKyAqLw0KPiArc3RydWN0IGRldmZyZXFfZXZl bnRfZGF0YSB7DQo+ICsJdW5zaWduZWQgbG9uZyBldmVudDsNCj4gKwl1bnNpZ25lZCBsb25nIHRv dGFsX2V2ZW50Ow0KPiArfTsNCg0KSSB3b3VsZCBsaWtlIHRvIHJlcGhyYXNlIGFuZCByZW5hbWUg YXMgZm9sbG93czoNCg0KKyAqIEBsb2FkX2NvdW50CQk6IGxvYWQgY291bnQgb2YgZGV2ZnJlcS1l dmVudCBkZXZpY2UgZm9yIHRoZSBnaXZlbiBwZXJpb2QuDQorICogQHRvdGFsX2NvdW50CTogdG90 YWwgY291bnQgb2YgZGV2ZnJlcS1ldmVudCBkZXZpY2UgZm9yIHRoZSBnaXZlbiBwZXJpb2QuDQor ICoJCQllYWNoIGNvdW50IG1heSByZXByZXNlbnQgYSBjbG9jayBjeWNsZSwNCisgKgkJCWEgdGlt ZSB1bml0IChucy91cy8uLi4pLCBvciBhbnl0aGluZyB0aGUgZGV2aWNlIGRyaXZlciB3YW50cy4N CisgKgkJCUdlbmVyYWxseSwgdXRpbGl6YXRpb24gaXMgbG9hZF9jb3VudCAvIHRvdGFsX2NvdW50 Lg0KDQpbXQ0KDQoNCllvdSBtYXkgYWxyZWFkeSBjb250YWN0IG1lIHdpdGggc3luY2hyb25vdXMg bWV0aG9kcyBmb3IgbW9yZQ0KcHJvbXB0IGRpc2N1c3Npb24uIDopIFlvdXIgb2ZmaWNlIGlzIG5v dCB0aGF0IGZhciBmcm9tIG1pbmUuDQooT3IgZHVyaW5nIGx1bmNoLCBkaW5uZXIsIG9yIGJlZXIg c2Vzc2lvbnMgYXMgd2VsbCkNCg0KDQpDaGVlcnMsDQpNeXVuZ0pvbw0KDQo=