From mboxrd@z Thu Jan 1 00:00:00 1970 From: ykzhao Subject: Re: [RFC PATCH 1/4] IPMI: Add one interface to get more info of low-level IPMI device Date: Tue, 23 Nov 2010 15:13:39 +0800 Message-ID: <1290496419.3948.55.camel@localhost.localdomain> References: <1288084454-560-1-git-send-email-yakui.zhao@intel.com> <1288084454-560-2-git-send-email-yakui.zhao@intel.com> <4CC84FAA.9040401@acm.org> <1288227644.3885.203.camel@localhost.localdomain> <1288675990.26046.9.camel@localhost.localdomain> <4CD2012A.20200@acm.org> <1289807563.3769.49.camel@localhost.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1289807563.3769.49.camel@localhost.localdomain> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: openipmi-developer-bounces@lists.sourceforge.net To: Corey Minyard Cc: "linux-acpi@vger.kernel.org" , "openipmi-developer@lists.sourceforge.net" , "lenb@kernel.org" List-Id: linux-acpi@vger.kernel.org T24gTW9uLCAyMDEwLTExLTE1IGF0IDE1OjUyICswODAwLCB5a3poYW8gd3JvdGU6Cj4gT24gVGh1 LCAyMDEwLTExLTA0IGF0IDA4OjQxICswODAwLCBDb3JleSBNaW55YXJkIHdyb3RlOgo+ID4gT24g MTEvMDIvMjAxMCAxMjozMyBBTSwgeWt6aGFvIHdyb3RlOgo+ID4gPiBPbiBUaHUsIDIwMTAtMTAt MjggYXQgMDk6MDAgKzA4MDAsIHlremhhbyB3cm90ZToKPiA+ID4KPiA+ID4+IE9uIFRodSwgMjAx MC0xMC0yOCBhdCAwMDoxMyArMDgwMCwgQ29yZXkgTWlueWFyZCB3cm90ZToKPiA+ID4+Cj4gPiA+ Pj4gSSB0aGluayB5b3UgbWlzcyB0aGUgcG9pbnQgb2YgYSByZWZjb3VudC4gIFRoZSByZWZjb3Vu dCBpcyB0byBrZWVwIHRoZQo+ID4gPj4+IGRhdGEgc3RydWN0dXJlIGFyb3VuZCBldmVuIGlmIHRo ZSBkZXZpY2UgaGFzIGdvbmUgYXdheSwgc28gdGhhdCBhbnkKPiA+ID4+PiB1c2VycyBtYXkgbm90 IGNyYXNoLiAgSnVzdCBoYXZpbmcgYSBjb3VudGVyIGluIHRoZSBJUE1JIHN0cnVjdHVyZSBhbmQK PiA+ID4+PiB0aGVuIGRlY3JlbWVudGluZyB0aGUgZGV2aWNlIHJlZmNvdW50IGlzIG5vdCBnb2lu ZyB0byBhY2NvbXBsaXNoIGFueXRoaW5nLgo+ID4gPj4+Cj4gPiA+Pj4gQW5kIHlvdSBkb24ndCBy ZWFsbHkgbmVlZCB0byByZWZjb3VudCB0aGUgSVBNSSBzdHJ1Y3R1cmUuICAoQW5kIGlmIHlvdQo+ ID4gPj4+IGRpZCwgeW91IHdvdWxkIG5lZWQgdG8gdXNlIGEgcmVmY291bnQgc3RydWN0dXJlIGFu ZCB5b3Ugd291bGQgbmVlZCB0bwo+ID4gPj4+IGtlZXAgZnJvbSBmcmVlaW5nIHRoZSBJUE1JIHN0 cnVjdHVyZSB1bnRpbCB0aGUgcmVmY291bnQgd2VudCB0byB6ZXJvLikKPiA+ID4+PiBZb3UganVz dCBuZWVkIHRvIGluY3JlbWVudCB0aGUgcmVmY291bnQgb24gdGhlIGRldmljZSBzdHJ1Y3R1cmUs IGFuZAo+ID4gPj4+IHdob2V2ZXIgZ2V0cyB0aGUgZGV2aWNlIHN0cnVjdHVyZSBuZWVkcyB0byBi ZSByZXNwb25zaWJsZSBmb3IKPiA+ID4+PiBkZWNyZW1lbnRpbmcgaXQncyByZWZjb3VudC4KPiA+ ID4+Pgo+ID4gPj4gWWVzLiBBZnRlciB0aGUgY29weSBtZWNoYW5pc20gaXMgdXNlZCwgaXQgaXMg dW5uZWNlc3NhcnkgdG8gdXNlIHRoZQo+ID4gPj4gcmVmY291bnQgdG8gcHJvdGVjdCB0aGUgY29y cmVzcG9uZGluZyBkYXRhIHN0cnVjdHVyZS4KPiA+ID4+Cj4gPiA+PiBJbiBmYWN0IHRoZSBwdXJw b3NlIG9mIGFkZGluZyBhbm90aGVyIG9uZSByZWZjb3VudCBpcyB0byBhZGQvZGVjcmVhc2UKPiA+ ID4+IHRoZSByZWZjb3VudCBvZiBkZXYgaW4gY291cnNlIG9mIGNhbGxpbmcgdGhlIGZ1bmN0aW9u IG9mCj4gPiA+PiBpcG1pX2dldF9zbWlfaW5mby9pcG1pX3B1dF9zbWlfaW5mby4KPiA+ID4+ICAg ICAgIEJ1dCBhZnRlciBJIGxvb2sgYXQgdGhlIHNtaV93YXRjaGVyIG1lY2hhbmlzbSwgSSBmaW5k IHRoYXQgdGhlCj4gPiA+PiByZWZjb3VudCBvZiBkZXYgaXMgbm90IHJlbGVhc2VkIGNvcnJlY3Rs eSBpbiB0aGUgZm9sbG93aW5nIGNhc2UuCj4gPiA+PiAgICAgICAgICBTdGVwIDE6ICBPdGhlciBk cml2ZXIgcmVnaXN0ZXJzIG9uZSBzbWlfd2F0Y2hlciBhbmQgdGhlCj4gPiA+PiBpcG1pX2dldF9z bWlfaW5mbyBpcyBjYWxsZWQgaW4gdGhlIG5ld19zbWkgY2FsbGJhY2sgZnVuY3Rpb24uIChBbmQg dGhlCj4gPiA+PiBkcml2ZXIgd2lsbCB1c2UgdGhlIGRldiBwb2ludGVyIGJlZm9yZSB0aGUgaXBt aV9wdXRfc21pX2luZm8gaXMKPiA+ID4+IGNhbGxlZCkuCj4gPiA+PiAgICAgICAgICBTdGVwIDI6 IGZvciBhbnkgcmVhc29uLCB0aGUgSVBNSSBkZXZpY2Ugd2lsbCBiZSB1bnJlZ2lzdGVyZWQgYnkg Y2FsbGluZwo+ID4gPj4gY2xlYW51cF9vbmVfc2kuIFRoaXMgZnVuY3Rpb24gd2lsbCByZW1vdmUg aXQgZnJvbSB0aGUgSVBNSSBkZXZpY2UgbGlzdAo+ID4gPj4gZmlyc3RseSBhbmQgdGhlbiBjYWxs IHRoZSBzbWlfZ29uZSBmb3IgZXZlcnkgc21pX3dhdGNoZXIuCj4gPiA+PiAgICAgICAgICBTdGVw IDM6IHRoZSBpcG1pX3B1dF9zbWlfaW5mbyBpcyBjYWxsZWQgaW4gc21pX2dvbmUgY2FsbGJhY2sg ZnVuY3Rpb24uCj4gPiA+PiBJbiBzdWNoIGNhc2UgdGhlIGlwbWlfcHV0X3NtaV9pbmZvIGNhbid0 IGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgSVBNSQo+ID4gPj4gZGV2aWNlIGJhc2VkIG9uIHRoZSBn aXZlbiBpZl9udW0gYW5kIGNhbid0IHJlbGVhc2UgdGhlIHBvaW50ZXIgb2YgZGV2Lgo+ID4gPj4K PiA+ID4+IEJ1dCBhZnRlciBhZGRpbmcgYW5vdGhlciByZWZjb3VudCwgd2UgY2FuIGhhbmRsZSB0 aGUgYWJvdmUgc2NlbmFyaW8uIEF0Cj4gPiA+PiB0aGUgc2FtZSB0aW1lIGV2ZW4gd2hlbiB0aGUg aXBtaV9wdXRfc21pX2luZm8gaXMgbm90IGNhbGxlZCBieSB0aGUKPiA+ID4+IGNhbGxlciwgaXQg c3RpbGwgY2FuIHdvcmsuCj4gPiA+PiBOb3Qgc3VyZSB3aGV0aGVyIHRoZSBhYm92ZSB0aG91Z2h0 IGlzIHJlZHVuZGFudD8KPiA+ID4+Cj4gPiA+IENvcmV5LAo+ID4gPiAgICAgIElzIHRoZSBhYm92 ZSB0aG91Z2h0IGNvcnJlY3Q/IElmIG5vdCwgcGxlYXNlIGNvcnJlY3QgbWUuIEluIGZhY3QgdGhl Cj4gPiA+IHB1cnBvc2Ugb2YgYWRkaW5nIGFub3RoZXIgcmVmY291bnQgaXMgdG8gZml4IHRoZSBp bmNvcnJlY3QgaW5jL2RlYyBpbgo+ID4gPiBjb3Vyc2Ugb2YgY2FsbGluZyBpcG1pX2dldF9zbWlf aW5mby9pcG1pX3B1dF9zbWlfaW5mby4KPiA+ID4KPiA+Cj4gCj4gSGksIENvcmV5Cj4gICAgIFNv cnJ5IGZvciB0aGUgbGF0ZSByZXNwb25zZS4KPiAKPiA+IE5vLiAgVGhlIHB1cnBvc2Ugb2YgYSBy ZWZjb3VudCBpcyB0byBrZWVwIGZyb20gZnJlZWluZyBhIGRhdGEgc3RydWN0dXJlCj4gPiB3aGls ZSBpdCBpcyBpbiB1c2UuCj4gPgo+ID4gTGV0J3Mgc2F5IHlvdXIgY29kZSBnZXRzIHRoZSBkZXZp Y2Ugc3RydWN0dXJlIGZvciB0aGUgSVBNSSBkZXZpY2UsIHRoZW4KPiA+IGEgdGFzayBzd2l0Y2gg b2NjdXJzLiAgRHVyaW5nIHRoZSB0aW1lIGl0IGlzIG5vdCBydW5uaW5nLCB0aGUgSVBNSQo+ID4g ZGV2aWNlIGlzIGhvdHBsdWdnZWQgYXdheSBhbmQgbm8gbG9uZ2VyIGV4aXN0cy4gIFRoZSBkZXZp Y2UgaXMgZGVsZXRlZC4KPiA+IFdoZW4geW91ciBjb2RlIHN0YXJ0cyBydW5uaW5nIGFnYWluLCBp dCBzdGlsbCBoYXMgYSBwb2ludGVyIHRvIHRoYXQKPiA+IGRldmljZSBzdHJ1Y3R1cmUuICBTdXJl LCB0aGUgcmVtb3ZhbCBjb2RlIG1heSBoYXZlIHJ1biwgYnV0IHlvdXIgY29kZQo+ID4gc3RpbGwg aGFzIGEgcG9pbnRlciB0byB0aGF0IGRldmljZSBzdHJ1Y3R1cmUuICBXaGljaCBoYXMgYmVlbiBm cmVlZC4gIEJhZC4KPiAKPiBUaGFua3MgZm9yIHRoZSBkZXRhaWxlZCBleHBsYW5hdGlvbiBhYm91 dCB0aGUgcmVmY291bnQuCj4gCj4gPiBUaGlzIGlzIHdoYXQgcmVmY291bnRzICh3ZWxsLCBrcmVm cykgZG8uICBJbiB0aGUgYWJvdmUgc2NlbmFyaW8sIHlvdXIKPiA+IGNvZGUgd2lsbCBnZXQgdGhl IGRldmljZSB3aXRoIHRoZSBrcmVmIGluY3JlbWVudGVkLiAgQWxsIHRoZSBhYm92ZQo+ID4gaGFw cGVucywgYnV0IHNpbmNlIHlvdSBoYXZlIGluY3JlbWVudGVkIHRoZSByZWZjb3VudCBvbiB0aGUg ZGV2aWNlCj4gPiBzdHJ1Y3R1cmUsIGl0IHdpbGwgbm90IGJlIGRlbGV0ZWQuICBJdCB3aWxsIHdh aXQgdW50aWwgeW91IHB1dAo+ID4gKGRlY3JlbWVudCkgdGhlIHJlZmNvdW50IGJlZm9yZSBwZXJm b3JtaW5nIHRoZSBmcmVlLgo+IAo+IFRoZSBhYm92ZSBjb25zaWRlcmF0aW9uIGlzIGJhc2VkIG9u IHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhlIGZ1bmN0aW9uIG9mCj4gaXBtaV9wdXRfc21pX2luZm8g aXMgY2FsbGVkIGluIHRoZSBmdW5jdGlvbiBvZiBzbWlfd2F0Y2hlciBzbWlfZ29uZQo+IGNhbGxi YWNrIGZ1bmN0aW9uLiBOb3Qgc3VyZSB3aGV0aGVyIGl0IGlzIGNvcnJlY3Q/IE9yIGlzIHRoZXJl IGFueQo+IHByb2JsZW0gYWJvdXQgdGhlIGRlZmluaXRpb24gb2YgaXBtaV9wdXRfc21pX2luZm8/ Cj4gCj4g77u/IHZvaWQgaXBtaV9wdXRfc21pX2luZm8oaW50IGlmX251bSkKPiArewo+ICsgICAg ICAgaXBtaV9zbWlfdCAgICBpbnRmOwo+ICsgICAgICAgc3RydWN0IGlwbWlfc21pX2hhbmRsZXJz ICpoYW5kbGVyczsKPiArCj4gKyAgICAgICBtdXRleF9sb2NrKCZpcG1pX2ludGVyZmFjZXNfbXV0 ZXgpOwo+ICsgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoaW50ZiwgJmlwbWlfaW50ZXJm YWNlcywgbGluaykgewo+ICsgICAgICAgICAgICAgICBpZiAoaW50Zi0+aW50Zl9udW0gPT0gaWZf bnVtKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZm91bmQ7Cj4gKyAgICAgICB9Cj4g KyAgICAgICAvKiBOb3QgZm91bmQsIHJldHVybiAqLwo+ICsgICAgICAgbXV0ZXhfdW5sb2NrKCZp cG1pX2ludGVyZmFjZXNfbXV0ZXgpOwo+ICsgICAgICAgcmV0dXJuOwo+ICsKPiArZm91bmQ6Cj4g KyAgICAgICBoYW5kbGVycyA9IGludGYtPmhhbmRsZXJzOwo+ICsgICAgICAgaGFuZGxlcnMtPnB1 dF9zbWlfaW5mbyhpbnRmLT5zZW5kX2luZm8pOwo+ICsgICAgICAgbXV0ZXhfdW5sb2NrKCZpcG1p X2ludGVyZmFjZXNfbXV0ZXgpOwo+ICt9Cj4gCj4gCj4gCj4gVGhlIHJlZmNvdW50IG9mIGtyZWYg Y2FuJ3QgYmUgZGVjcmVhc2VkIGNvcnJlY3RseSBpbiB0aGUgZm9sbG93aW5nIHR3bwo+IGNhc2Vz Ogo+ICAgICAgICAgYS4gV2hlbiBvbmUgc21pX3dhdGNoZXIgaXMgdW5yZWdpc3RlcmVkIGJ5IGNh bGxpbmcKPiBpcG1pX3NtaV93YXRjaGVyX3VucmVnaXN0ZXIsIHdlIG9ubHkgZGVsZXRlIGl0IGZy b20gdGhlIHNtaV93YXRjaGVyIGxpc3QKPiBhbmQgd29uJ3QgY2FsbCB0aGUgc21pX2dvbmUgY2Fs bGJhY2sgZnVuY3Rpb24uCj4gICAgICAgICBiLiBUaGUgZnVuY3Rpb24gb2YgY2xlYW51cF9vbmVf c2kgaXMgdG8gdW5yZWdpc3RlciBvbmUgSVBNSSBpbnRlcmZhY2UuCj4gSXQgd2lsbCByZW1vdmUg dGhlIGlwbWkgaW50ZXJmYWNlIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgaXBtaSBsaXN0IGFuZAo+ IHRoZW4gY2FsbCBzbWlfZ29uZSBjYWxsYmFjayBmdW5jdGlvbiBmb3IgZXZlcnkgc21pX3dhdGNo ZXIuIEFzIHRoZQo+IGNvcnJlc3BvbmRpbmcgSVBNSSBpbnRlcmZhY2UgaXMgYWxyZWFkeSByZW1v dmVkIGZyb20gdGhlIElQTUkgaW50ZXJmYWNlCj4gbGlzdCwgaXQgY2FuJ3QgZmluZCB0aGUgY29y cmVzcG9uZGluZyBJUE1JIGludGVyZmFjZSBiYXNlZCBvbiB0aGUKPiBpbnRlcmZhY2UgbnVtYmVy LiBJbiBzdWNoIGNhc2UgdGhlIHJlZmNvdW50IG9mIGRldiBjYW4ndCBiZSByZWxlYXNlZAo+IGNv cnJlY3RseS4KCkhpLCBDb3JleQoJV2hhdCBkbyB5b3UgdGhpbmsgYWJvdXQgdGhlIGFib3ZlIGRl c2NyaXB0aW9uIGZvciB0aGUgcmVmY291bnQgb2YgZGV2PwpEb2VzIGl0IG1ha2Ugc2Vuc2UgdGhh dCB0aGUgZm9sbG93aW5nIHByb3RvdHlwZSBpcyB1c2VkIGZvciB0aGUKaXBtaV9wdXRfc21pX2lu Zm8/Cgl2b2lkIGlwbWlfcHV0X3NtaV9pbmZvKO+7v3N0cnVjdCBpcG1pX3NtaV9pbmZvICpkYXRh KQoJewoJCXB1dF9kZXZpY2UoZGF0YS0+ZGV2KTsJCgl9CgkKPiA+Cj4gPiA+Cj4gPiA+Pgo+ID4g Pj4KPiA+ID4+PiBJJ2QgYWxzbyBwcmVmZXIgdG8gbm90IGhhdmUgYSBzdHJ1Y3QgaXBtaV9zbWlf aW5mbyBpbiB0aGUgSVBNSSBkYXRhCj4gPiA+Pj4gc3RydWN0dXJlLiAgSnVzdCBwdWxsIHRoZSBk YXRhIGZyb20gZXhpc3Rpbmcgc291cmNlcy4KPiA+ID4+Pgo+ID4gPj4gQXQgbW9zdCBjYXNlcyB0 aGUgcmVxdWlyZW1lbnQgaXMgZGlmZmVyZW50IGZvciB0aGUgZGlmZmVyZW50IGFkZHIgc291cmNl Cj4gPiA+PiB0eXBlLiBJZiB3ZSBkb24ndCBwdXQgdGhlIGlwbWlfc21pX2luZm8gaW4gdGhlIElQ TUkgZGF0YSBzdHJ1Y3R1cmUsIEkgYW0KPiA+ID4+IGFmcmFpZCB0aGF0IHdlIHdpbGwgaGF2ZSB0 byBmaWxsIHRoZSBjb3JyZXNwb25kaW5nIGluZm8gYmFzZWQgb24gdGhlCj4gPiA+PiBhZGRyIHNv dXJjZSB0eXBlLiBNYXliZSBpdCB3aWxsIGJlIG1vcmUgY29tcGxleC4KPiA+ID4+Cj4gPiA+IElm IG9ubHkgcHVsbCBkYXRhIGZyb20gdGhlIGV4aXN0aW5nIHNvdXJjZSwgaXQgY2FuIHNhdmUgc29t ZQo+ID4gPiBtZW1vcnktc3BhY2UuIEJ1dCBpdCBzZWVtcyBhIGJpdCBjb21wbGV4IGFzIHdlIGhh dmUgdG8gZmlsbCB0aGUgaW5mbwo+ID4gPiBiYXNlZCBvbiB0aGUgY29ycmVzcG9uZGluZyBhZGRy IHNvdXJjZSB0eXBlLiBBbmQgdGhpcyBzaG91bGQgYmUgZG9uZQo+ID4gPiBldmVyeSB0aW1lIHRo ZSBmdW5jdGlvbiBvZiBpcG1pX2dldF9zbWlfaW5mbyBpcyBjYWxsZWQuCj4gPiA+Cj4gPgo+ID4g SSBkb24ndCB0aGluayBpdCdzIHRoYXQgY29tcGxleCwgYW5kIEkgZG91YnQgdGhhdCBmdW5jdGlv biBpcyBjYWxsZWQKPiA+IHRoYXQgb2Z0ZW4uCj4gCj4gT2suIEkgd2lsbCByZWZyZXNoIHRoZSBw YXRjaCBzZXQgYW5kIGZpbGwgdGhlIGNvcnJlc3BvbmRpbmcgZGF0YQo+IHN0cnVjdHVyZSBmcm9t IHRoZSBleGlzdGluZyBzb3VyY2UuIEJ1dCBhcyBJIGRvbid0IGtub3cgd2hhdCBpbmZvIGlzCj4g cmVxdWlyZWQgZm9yIHRoZSBvdGhlciBpcG1pIHR5cGUgZXhjZXB0IHRoZSBTSV9BQ1BJIHR5cGUs IEkgd2lsbCBvbmx5Cj4gYWRkIHRoZSBpbmZvIG9mIFNJX0FDUEkgdHlwZS4KCu+7v0ZvciB0aGUg ZGV2aWNlIHR5cGUgYW5kIGRldiBwb2ludGVyLCBJIGNhbiBnZXQgaXQgZnJvbSB0aGUgY3VycmVu dApzbWlfaW5mbyBkaXJlY3RseS4gIEJ1dCBJIG1lZXQgd2l0aCB0aGUgZm9sbG93aW5nIGlzc3Vl cyB3aGVuIHB1bGxpbmcKZGF0YSBmcm9tIHRoZSBleGlzdGluZyBzb3VyY2UgdG8gZmlsbCB0aGUg c3BlY2lmaWMgZGF0YS4gCglhLiBubyBzcGVjaWZpYyBpbmZvIGlzIGNvbnRhaW5lZCBpbiBzbWlf aW5mby4gRm9yIGV4YW1wbGU6IEFDUEkgaGFuZGxlCmlzIGltcG9ydGFudCB0byB0aGUgU0lfQUNQ SSB0eXBlLiBCdXQgdGhlIGNvcnJlc3BvbmRpbmcgaGFuZGxlIGlzIHN0b3JlZAppbiBzbWlfaW5m by4gCgliLiBOZWVkIHRvIGFkZCBhIGxvdCBvZiBJZi9lbHNlIG1hY3JvIGRlZmluaXRpb24gdG8g aGFuZGxlIHRoZQpjb3JyZXNwb25kaW5nIElQTUkgZGV2aWNlIHR5cGUuCgpBbnkgaWRlYSBhYm91 dCB0aGUgYWJvdmUgaXNzdWVzPyAKClRoYW5rcy4KCj4gCj4gPgo+ID4gLWNvcmV5Cj4gPiA+Cj4g PiA+PiBUaGFua3MuCj4gPiA+PiAgICAgICAgICBZYWt1aQo+ID4gPj4KPiA+ID4+Cj4gPiA+Pj4g LWNvcmV5Cj4gPiA+Pj4KPiA+ID4+PiBPbiAxMC8yNi8yMDEwIDA0OjE0IEFNLCB5YWt1aS56aGFv QGludGVsLmNvbSB3cm90ZToKPiA+ID4+Pgo+ID4gPj4+PiBGcm9tOiBaaGFvIFlha3VpPHlha3Vp LnpoYW9AaW50ZWwuY29tPgo+ID4gPj4+Pgo+ID4gPj4+PiBUaGUgSVBNSSBzbWlfd2F0Y2hlciB3 aWxsIGJlIHVzZWQgdG8gY2F0Y2ggdGhlIElQTUkgaW50ZXJmYWNlIGFzIHRoZXkgY29tZSBvciBn by4KPiA+ID4+Pj4gSW4gb3JkZXIgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgY29ycmVjdCBJUE1J IGRldmljZSwgaXQgc2hvdWxkIGJlIGNvbmZpcm1lZAo+ID4gPj4+PiAgICB3aGV0aGVyIGl0IGlz IHdoYXQgd2Ugd2FudGVkIGVzcGVjaWFsbHkgb24gdGhlIHN5c3RlbSB3aXRoIG11bHRpcGxlIElQ TUkKPiA+ID4+Pj4gZGV2aWNlcy4gQnV0IHRoZSBuZXdfc21pIGNhbGxiYWNrIGZ1bmN0aW9uIG9m IHNtaV93YXRjaGVyIHByb3ZpZGVzIHZlcnkKPiA+ID4+Pj4gbGltaXRlZCBpbmZvKG9ubHkgdGhl IGludGVyZmFjZSBudW1iZXIgYW5kIGRldiBwb2ludGVyKSBhbmQgdGhlcmUgaXMgbm8KPiA+ID4+ Pj4gZGV0YWlsZWQgaW5mbyBhYm91dCB0aGUgbG93IGxldmVsIGludGVyZmFjZS4gRm9yIGV4YW1w bGU6IHdoaWNoIG1lY2hhbnNpbQo+ID4gPj4+PiByZWdpc3RlcnMgdGhlIElQTUkgaW50ZXJmYWNl KEFDUEksIFBDSSwgRE1JIGFuZCBzbyBvbikuCj4gPiA+Pj4+Cj4gPiA+Pj4+IFRoaXMgaXMgdG8g YWRkIG9uZSBpbnRlcmZhY2UgdGhhdCBjYW4gZ2V0IG1vcmUgaW5mbyBvZiBsb3ctbGV2ZWwgSVBN SQo+ID4gPj4+PiBkZXZpY2UuIEZvciBleGFtcGxlOiB0aGUgQUNQSSBkZXZpY2UgaGFuZGxlIHdp bGwgYmUgcmV0dXJuZWQgZm9yIHRoZSBwbnBfYWNwaQo+ID4gPj4+PiBJUE1JIGRldmljZS4KPiA+ ID4+Pj4KPiA+ID4+Pj4gU2lnbmVkLW9mZi1ieTogWmhhbyBZYWt1aTx5YWt1aS56aGFvQGludGVs LmNvbT4KPiA+ID4+Pj4gLS0tCj4gPiA+Pj4+ICAgIGRyaXZlcnMvY2hhci9pcG1pL2lwbWlfbXNn aGFuZGxlci5jIHwgICA0NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gPj4+ PiAgICBkcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX2ludGYuYyAgICB8ICAgNDkgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLQo+ID4gPj4+PiAgICBpbmNsdWRlL2xpbnV4L2lwbWku aCAgICAgICAgICAgICAgICB8ICAgMjkgKysrKysrKysrKysrKysrKysrKysKPiA+ID4+Pj4gICAg aW5jbHVkZS9saW51eC9pcG1pX3NtaS5oICAgICAgICAgICAgfCAgICA4ICsrKysrCj4gPiA+Pj4+ ICAgIDQgZmlsZXMgY2hhbmdlZCwgMTI3IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCj4g PiA+Pj4+Cj4gPiA+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX21zZ2hh bmRsZXIuYyBiL2RyaXZlcnMvY2hhci9pcG1pL2lwbWlfbXNnaGFuZGxlci5jCj4gPiA+Pj4+IGlu ZGV4IDRmM2Y4YzkuLmUzMjNlZGIgMTAwNjQ0Cj4gPiA+Pj4+IC0tLSBhL2RyaXZlcnMvY2hhci9p cG1pL2lwbWlfbXNnaGFuZGxlci5jCj4gPiA+Pj4+ICsrKyBiL2RyaXZlcnMvY2hhci9pcG1pL2lw bWlfbXNnaGFuZGxlci5jCj4gPiA+Pj4+IEBAIC05NzAsNiArOTcwLDUyIEBAIG91dF9rZnJlZToK PiA+ID4+Pj4gICAgfQo+ID4gPj4+PiAgICBFWFBPUlRfU1lNQk9MKGlwbWlfY3JlYXRlX3VzZXIp Owo+ID4gPj4+Pgo+ID4gPj4+PiAraW50IGlwbWlfZ2V0X3NtaV9pbmZvKGludCBpZl9udW0sIHN0 cnVjdCBpcG1pX3NtaV9pbmZvICpkYXRhKQo+ID4gPj4+PiArewo+ID4gPj4+PiArICAgaW50ICAg ICAgICAgICBydiA9IDA7Cj4gPiA+Pj4+ICsgICBpcG1pX3NtaV90ICAgIGludGY7Cj4gPiA+Pj4+ ICsgICBzdHJ1Y3QgaXBtaV9zbWlfaGFuZGxlcnMgKmhhbmRsZXJzOwo+ID4gPj4+PiArCj4gPiA+ Pj4+ICsgICBtdXRleF9sb2NrKCZpcG1pX2ludGVyZmFjZXNfbXV0ZXgpOwo+ID4gPj4+PiArICAg bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoaW50ZiwmaXBtaV9pbnRlcmZhY2VzLCBsaW5rKSB7Cj4g PiA+Pj4+ICsgICAgICAgICAgIGlmIChpbnRmLT5pbnRmX251bSA9PSBpZl9udW0pCj4gPiA+Pj4+ ICsgICAgICAgICAgICAgICAgICAgZ290byBmb3VuZDsKPiA+ID4+Pj4gKyAgIH0KPiA+ID4+Pj4g KyAgIC8qIE5vdCBmb3VuZCwgcmV0dXJuIGFuIGVycm9yICovCj4gPiA+Pj4+ICsgICBydiA9IC1F SU5WQUw7Cj4gPiA+Pj4+ICsgICBtdXRleF91bmxvY2soJmlwbWlfaW50ZXJmYWNlc19tdXRleCk7 Cj4gPiA+Pj4+ICsgICByZXR1cm4gcnY7Cj4gPiA+Pj4+ICsKPiA+ID4+Pj4gK2ZvdW5kOgo+ID4g Pj4+PiArICAgaGFuZGxlcnMgPSBpbnRmLT5oYW5kbGVyczsKPiA+ID4+Pj4gKyAgIHJ2ID0gaGFu ZGxlcnMtPmdldF9zbWlfaW5mbyhpbnRmLT5zZW5kX2luZm8sIGRhdGEpOwo+ID4gPj4+PiArICAg bXV0ZXhfdW5sb2NrKCZpcG1pX2ludGVyZmFjZXNfbXV0ZXgpOwo+ID4gPj4+PiArCj4gPiA+Pj4+ ICsgICByZXR1cm4gcnY7Cj4gPiA+Pj4+ICt9Cj4gPiA+Pj4+ICtFWFBPUlRfU1lNQk9MKGlwbWlf Z2V0X3NtaV9pbmZvKTsKPiA+ID4+Pj4gKwo+ID4gPj4+PiArdm9pZCBpcG1pX3B1dF9zbWlfaW5m byhpbnQgaWZfbnVtKQo+ID4gPj4+PiArewo+ID4gPj4+PiArICAgaXBtaV9zbWlfdCAgICBpbnRm Owo+ID4gPj4+PiArICAgc3RydWN0IGlwbWlfc21pX2hhbmRsZXJzICpoYW5kbGVyczsKPiA+ID4+ Pj4gKwo+ID4gPj4+PiArICAgbXV0ZXhfbG9jaygmaXBtaV9pbnRlcmZhY2VzX211dGV4KTsKPiA+ ID4+Pj4gKyAgIGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGludGYsJmlwbWlfaW50ZXJmYWNlcywg bGluaykgewo+ID4gPj4+PiArICAgICAgICAgICBpZiAoaW50Zi0+aW50Zl9udW0gPT0gaWZfbnVt KQo+ID4gPj4+PiArICAgICAgICAgICAgICAgICAgIGdvdG8gZm91bmQ7Cj4gPiA+Pj4+ICsgICB9 Cj4gPiA+Pj4+ICsgICAvKiBOb3QgZm91bmQsIHJldHVybiAqLwo+ID4gPj4+PiArICAgbXV0ZXhf dW5sb2NrKCZpcG1pX2ludGVyZmFjZXNfbXV0ZXgpOwo+ID4gPj4+PiArICAgcmV0dXJuOwo+ID4g Pj4+PiArCj4gPiA+Pj4+ICtmb3VuZDoKPiA+ID4+Pj4gKyAgIGhhbmRsZXJzID0gaW50Zi0+aGFu ZGxlcnM7Cj4gPiA+Pj4+ICsgICBoYW5kbGVycy0+cHV0X3NtaV9pbmZvKGludGYtPnNlbmRfaW5m byk7Cj4gPiA+Pj4+ICsgICBtdXRleF91bmxvY2soJmlwbWlfaW50ZXJmYWNlc19tdXRleCk7Cj4g PiA+Pj4+ICt9Cj4gPiA+Pj4+ICtFWFBPUlRfU1lNQk9MKGlwbWlfcHV0X3NtaV9pbmZvKTsKPiA+ ID4+Pj4gKwo+ID4gPj4+PiAgICBzdGF0aWMgdm9pZCBmcmVlX3VzZXIoc3RydWN0IGtyZWYgKnJl ZikKPiA+ID4+Pj4gICAgewo+ID4gPj4+PiAgICAgIGlwbWlfdXNlcl90IHVzZXIgPSBjb250YWlu ZXJfb2YocmVmLCBzdHJ1Y3QgaXBtaV91c2VyLCByZWZjb3VudCk7Cj4gPiA+Pj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX2ludGYuYyBiL2RyaXZlcnMvY2hhci9pcG1p L2lwbWlfc2lfaW50Zi5jCj4gPiA+Pj4+IGluZGV4IDdiZDdjNDUuLmQzMTMwMTggMTAwNjQ0Cj4g PiA+Pj4+IC0tLSBhL2RyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfaW50Zi5jCj4gPiA+Pj4+ICsr KyBiL2RyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfaW50Zi5jCj4gPiA+Pj4+IEBAIC01Nyw2ICs1 Nyw3IEBACj4gPiA+Pj4+ICAgICNpbmNsdWRlPGFzbS9pcnEuaD4KPiA+ID4+Pj4gICAgI2luY2x1 ZGU8bGludXgvaW50ZXJydXB0Lmg+Cj4gPiA+Pj4+ICAgICNpbmNsdWRlPGxpbnV4L3JjdXBkYXRl Lmg+Cj4gPiA+Pj4+ICsjaW5jbHVkZTxsaW51eC9pcG1pLmg+Cj4gPiA+Pj4+ICAgICNpbmNsdWRl PGxpbnV4L2lwbWlfc21pLmg+Cj4gPiA+Pj4+ICAgICNpbmNsdWRlPGFzbS9pby5oPgo+ID4gPj4+ PiAgICAjaW5jbHVkZSAiaXBtaV9zaV9zbS5oIgo+ID4gPj4+PiBAQCAtMTA3LDEwICsxMDgsNiBA QCBlbnVtIHNpX3R5cGUgewo+ID4gPj4+PiAgICB9Owo+ID4gPj4+PiAgICBzdGF0aWMgY2hhciAq c2lfdG9fc3RyW10gPSB7ICJrY3MiLCAic21pYyIsICJidCIgfTsKPiA+ID4+Pj4KPiA+ID4+Pj4g LWVudW0gaXBtaV9hZGRyX3NyYyB7Cj4gPiA+Pj4+IC0gICBTSV9JTlZBTElEID0gMCwgU0lfSE9U TU9ELCBTSV9IQVJEQ09ERUQsIFNJX1NQTUksIFNJX0FDUEksIFNJX1NNQklPUywKPiA+ID4+Pj4g LSAgIFNJX1BDSSwgU0lfREVWSUNFVFJFRSwgU0lfREVGQVVMVAo+ID4gPj4+PiAtfTsKPiA+ID4+ Pj4gICAgc3RhdGljIGNoYXIgKmlwbWlfYWRkcl9zcmNfdG9fc3RyW10gPSB7IE5VTEwsICJob3Rt b2QiLCAiaGFyZGNvZGVkIiwgIlNQTUkiLAo+ID4gPj4+PiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIkFDUEkiLCAiU01CSU9TIiwgIlBDSSIsCj4gPiA+Pj4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGV2aWNlLXRyZWUiLCAiZGVmYXVsdCIgfTsK PiA+ID4+Pj4gQEAgLTI5MSw2ICsyODgsMTIgQEAgc3RydWN0IHNtaV9pbmZvIHsKPiA+ID4+Pj4g ICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRocmVhZDsKPiA+ID4+Pj4KPiA+ID4+Pj4gICAgICBz dHJ1Y3QgbGlzdF9oZWFkIGxpbms7Cj4gPiA+Pj4+ICsgICAvKgo+ID4gPj4+PiArICAgICogQ291 bnQgdGhlIHJlZmNvdW50IG9mIHNtaV9kYXRhLT5kZXYgcmVsYXRlZCB3aXRoIHRoZSBmdW5jdGlv bgo+ID4gPj4+PiArICAgICogb2YgaXBtaV9nZXRfc21pX2luZm8vaXBtaV9wdXRfc21pX2luZm8u Cj4gPiA+Pj4+ICsgICAgKi8KPiA+ID4+Pj4gKyAgIGF0b21pY190ICAgICAgICBzbWlfaW5mb19y ZWY7Cj4gPiA+Pj4+ICsgICBzdHJ1Y3QgaXBtaV9zbWlfaW5mbyBzbWlfZGF0YTsKPiA+ID4+Pj4g ICAgfTsKPiA+ID4+Pj4KPiA+ID4+Pj4gICAgI2RlZmluZSBzbWlfaW5jX3N0YXQoc21pLCBzdGF0 KSBcCj4gPiA+Pj4+IEBAIC0xMTg2LDYgKzExODksMjcgQEAgc3RhdGljIGludCBzbWlfc3RhcnRf cHJvY2Vzc2luZyh2b2lkICAgICAgICpzZW5kX2luZm8sCj4gPiA+Pj4+ICAgICAgcmV0dXJuIDA7 Cj4gPiA+Pj4+ICAgIH0KPiA+ID4+Pj4KPiA+ID4+Pj4gK3N0YXRpYyBpbnQgZ2V0X3NtaV9pbmZv KHZvaWQgKnNlbmRfaW5mbywgc3RydWN0IGlwbWlfc21pX2luZm8gKmRhdGEpCj4gPiA+Pj4+ICt7 Cj4gPiA+Pj4+ICsgICBzdHJ1Y3Qgc21pX2luZm8gKm5ld19zbWkgPSBzZW5kX2luZm87Cj4gPiA+ Pj4+ICsgICBzdHJ1Y3QgaXBtaV9zbWlfaW5mbyAqc21pX2RhdGEgPSZuZXdfc21pLT5zbWlfZGF0 YTsKPiA+ID4+Pj4gKwo+ID4gPj4+PiArICAgZ2V0X2RldmljZShuZXdfc21pLT5kZXYpOwo+ID4g Pj4+PiArICAgbWVtY3B5KGRhdGEsIHNtaV9kYXRhLCBzaXplb2YoKnNtaV9kYXRhKSk7Cj4gPiA+ Pj4+ICsgICBzbWlfZGF0YS0+YWRkcl9zcmMgPSBuZXdfc21pLT5hZGRyX3NvdXJjZTsKPiA+ID4+ Pj4gKyAgIGF0b21pY19pbmMoJm5ld19zbWktPnNtaV9pbmZvX3JlZik7Cj4gPiA+Pj4+ICsKPiA+ ID4+Pj4gKyAgIHJldHVybiAwOwo+ID4gPj4+PiArfQo+ID4gPj4+PiArCj4gPiA+Pj4+ICtzdGF0 aWMgdm9pZCBwdXRfc21pX2luZm8odm9pZCAqc2VuZF9pbmZvKQo+ID4gPj4+PiArewo+ID4gPj4+ PiArICAgc3RydWN0IHNtaV9pbmZvICpuZXdfc21pID0gc2VuZF9pbmZvOwo+ID4gPj4+PiArCj4g PiA+Pj4+ICsgICBwdXRfZGV2aWNlKG5ld19zbWktPmRldik7Cj4gPiA+Pj4+ICsgICBhdG9taWNf ZGVjKCZuZXdfc21pLT5zbWlfaW5mb19yZWYpOwo+ID4gPj4+PiArfQo+ID4gPj4+PiArCj4gPiA+ Pj4+ICAgIHN0YXRpYyB2b2lkIHNldF9tYWludGVuYW5jZV9tb2RlKHZvaWQgKnNlbmRfaW5mbywg aW50IGVuYWJsZSkKPiA+ID4+Pj4gICAgewo+ID4gPj4+PiAgICAgIHN0cnVjdCBzbWlfaW5mbyAg ICpzbWlfaW5mbyA9IHNlbmRfaW5mbzsKPiA+ID4+Pj4gQEAgLTExOTcsNiArMTIyMSw4IEBAIHN0 YXRpYyB2b2lkIHNldF9tYWludGVuYW5jZV9tb2RlKHZvaWQgKnNlbmRfaW5mbywgaW50IGVuYWJs ZSkKPiA+ID4+Pj4gICAgc3RhdGljIHN0cnVjdCBpcG1pX3NtaV9oYW5kbGVycyBoYW5kbGVycyA9 IHsKPiA+ID4+Pj4gICAgICAub3duZXIgICAgICAgICAgICAgICAgICA9IFRISVNfTU9EVUxFLAo+ ID4gPj4+PiAgICAgIC5zdGFydF9wcm9jZXNzaW5nICAgICAgID0gc21pX3N0YXJ0X3Byb2Nlc3Np bmcsCj4gPiA+Pj4+ICsgICAuZ2V0X3NtaV9pbmZvICAgICAgICAgICA9IGdldF9zbWlfaW5mbywK PiA+ID4+Pj4gKyAgIC5wdXRfc21pX2luZm8gICAgICAgICAgID0gcHV0X3NtaV9pbmZvLAo+ID4g Pj4+PiAgICAgIC5zZW5kZXIgICAgICAgICAgICAgICAgID0gc2VuZGVyLAo+ID4gPj4+PiAgICAg IC5yZXF1ZXN0X2V2ZW50cyAgICAgICAgID0gcmVxdWVzdF9ldmVudHMsCj4gPiA+Pj4+ICAgICAg LnNldF9tYWludGVuYW5jZV9tb2RlICAgPSBzZXRfbWFpbnRlbmFuY2VfbW9kZSwKPiA+ID4+Pj4g QEAgLTIxNDMsNiArMjE2OSw4IEBAIHN0YXRpYyBpbnQgX19kZXZpbml0IGlwbWlfcG5wX3Byb2Jl KHN0cnVjdCBwbnBfZGV2ICpkZXYsCj4gPiA+Pj4+ICAgICAgICAgICAgICByZXR1cm4gLUVOT01F TTsKPiA+ID4+Pj4KPiA+ID4+Pj4gICAgICBpbmZvLT5hZGRyX3NvdXJjZSA9IFNJX0FDUEk7Cj4g PiA+Pj4+ICsgICBpbmZvLT5zbWlfZGF0YS5hZGRyX2luZm8uYWNwaV9pbmZvLmFjcGlfaGFuZGxl ID0KPiA+ID4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjcGlfZGV2LT5oYW5kbGU7 Cj4gPiA+Pj4+ICAgICAgcHJpbnRrKEtFUk5fSU5GTyBQRlggInByb2JpbmcgdmlhIEFDUElcbiIp Owo+ID4gPj4+Pgo+ID4gPj4+PiAgICAgIGhhbmRsZSA9IGFjcGlfZGV2LT5oYW5kbGU7Cj4gPiA+ Pj4+IEBAIC0zMDkyLDYgKzMxMjAsNyBAQCBzdGF0aWMgaW50IHRyeV9zbWlfaW5pdChzdHJ1Y3Qg c21pX2luZm8gKm5ld19zbWkpCj4gPiA+Pj4+ICAgIHsKPiA+ID4+Pj4gICAgICBpbnQgcnYgPSAw Owo+ID4gPj4+PiAgICAgIGludCBpOwo+ID4gPj4+PiArICAgc3RydWN0IGlwbWlfc21pX2luZm8g KnNtaV9kYXRhOwo+ID4gPj4+Pgo+ID4gPj4+PiAgICAgIHByaW50ayhLRVJOX0lORk8gUEZYICJU cnlpbmcgJXMtc3BlY2lmaWVkICVzIHN0YXRlIgo+ID4gPj4+PiAgICAgICAgICAgICAiIG1hY2hp bmUgYXQgJXMgYWRkcmVzcyAweCVseCwgc2xhdmUgYWRkcmVzcyAweCV4LCIKPiA+ID4+Pj4gQEAg LTMyNTUsNiArMzI4NCw5IEBAIHN0YXRpYyBpbnQgdHJ5X3NtaV9pbml0KHN0cnVjdCBzbWlfaW5m byAqbmV3X3NtaSkKPiA+ID4+Pj4KPiA+ID4+Pj4gICAgICBkZXZfaW5mbyhuZXdfc21pLT5kZXYs ICJJUE1JICVzIGludGVyZmFjZSBpbml0aWFsaXplZFxuIiwKPiA+ID4+Pj4gICAgICAgICAgICAg ICBzaV90b19zdHJbbmV3X3NtaS0+c2lfdHlwZV0pOwo+ID4gPj4+PiArICAgc21pX2RhdGEgPSZu ZXdfc21pLT5zbWlfZGF0YTsKPiA+ID4+Pj4gKyAgIHNtaV9kYXRhLT5kZXYgPSBuZXdfc21pLT5k ZXY7Cj4gPiA+Pj4+ICsgICBhdG9taWNfc2V0KCZuZXdfc21pLT5zbWlfaW5mb19yZWYsIDApOwo+ ID4gPj4+Pgo+ID4gPj4+PiAgICAgIHJldHVybiAwOwo+ID4gPj4+Pgo+ID4gPj4+PiBAQCAtMzUw MSw3ICszNTMzLDE0IEBAIHN0YXRpYyB2b2lkIGNsZWFudXBfb25lX3NpKHN0cnVjdCBzbWlfaW5m byAqdG9fY2xlYW4pCj4gPiA+Pj4+ICAgICAgICAgICAgICBwcmludGsoS0VSTl9FUlIgUEZYICJV bmFibGUgdG8gdW5yZWdpc3RlciBkZXZpY2U6IGVycm5vPSVkXG4iLAo+ID4gPj4+PiAgICAgICAg ICAgICAgICAgICAgIHJ2KTsKPiA+ID4+Pj4gICAgICB9Cj4gPiA+Pj4+IC0KPiA+ID4+Pj4gKyAg IC8qIG1heWJlIHRoZSBjYWxsZXIgZG9lc24ndCByZWxlYXNlIHRoZSByZWZjb3VudCBvZiBkZXYs IHdoaWNoIGlzCj4gPiA+Pj4+ICsgICAgKiBpbmNyZWFzZWQgYnkgY2FsbGluZyB0aGUgZnVuY3Rp b24gb2YgaXBtaV9nZXRfc21pX2luZm8uIFNvIHRyeQo+ID4gPj4+PiArICAgICogdG8gaGVscCBp dC4KPiA+ID4+Pj4gKyAgICAqLwo+ID4gPj4+PiArICAgd2hpbGUgKGF0b21pY19yZWFkKCZ0b19j bGVhbi0+c21pX2luZm9fcmVmKSkgewo+ID4gPj4+PiArICAgICAgICAgICBwdXRfZGV2aWNlKHRv X2NsZWFuLT5kZXYpOwo+ID4gPj4+PiArICAgICAgICAgICBhdG9taWNfZGVjKCZ0b19jbGVhbi0+ c21pX2luZm9fcmVmKTsKPiA+ID4+Pj4gKyAgIH0KPiA+ID4+Pj4gICAgICBpZiAodG9fY2xlYW4t PmhhbmRsZXJzKQo+ID4gPj4+PiAgICAgICAgICAgICAgdG9fY2xlYW4tPmhhbmRsZXJzLT5jbGVh bnVwKHRvX2NsZWFuLT5zaV9zbSk7Cj4gPiA+Pj4+Cj4gPiA+Pj4+IGRpZmYgLS1naXQgYS9pbmNs dWRlL2xpbnV4L2lwbWkuaCBiL2luY2x1ZGUvbGludXgvaXBtaS5oCj4gPiA+Pj4+IGluZGV4IDY1 YWFlMzQuLjlhMGM3MmUgMTAwNjQ0Cj4gPiA+Pj4+IC0tLSBhL2luY2x1ZGUvbGludXgvaXBtaS5o Cj4gPiA+Pj4+ICsrKyBiL2luY2x1ZGUvbGludXgvaXBtaS5oCj4gPiA+Pj4+IEBAIC00NTQsNiAr NDU0LDM1IEBAIHVuc2lnbmVkIGludCBpcG1pX2FkZHJfbGVuZ3RoKGludCBhZGRyX3R5cGUpOwo+ ID4gPj4+PiAgICAvKiBWYWxpZGF0ZSB0aGF0IHRoZSBnaXZlbiBJUE1JIGFkZHJlc3MgaXMgdmFs aWQuICovCj4gPiA+Pj4+ICAgIGludCBpcG1pX3ZhbGlkYXRlX2FkZHIoc3RydWN0IGlwbWlfYWRk ciAqYWRkciwgaW50IGxlbik7Cj4gPiA+Pj4+Cj4gPiA+Pj4+ICtlbnVtIGlwbWlfYWRkcl9zcmMg ewo+ID4gPj4+PiArICAgU0lfSU5WQUxJRCA9IDAsIFNJX0hPVE1PRCwgU0lfSEFSRENPREVELCBT SV9TUE1JLCBTSV9BQ1BJLCBTSV9TTUJJT1MsCj4gPiA+Pj4+ICsgICBTSV9QQ0ksIFNJX0RFVklD RVRSRUUsIFNJX0RFRkFVTFQKPiA+ID4+Pj4gK307Cj4gPiA+Pj4+ICtzdHJ1Y3QgaXBtaV9zbWlf aW5mbyB7Cj4gPiA+Pj4+ICsgICBlbnVtIGlwbWlfYWRkcl9zcmMgYWRkcl9zcmM7Cj4gPiA+Pj4+ ICsgICBzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gPiA+Pj4+ICsgICAvKgo+ID4gPj4+PiArICAgICog VGhlIGFkZHJfaW5mbyBjYW4gcHJvdmlkZSBtb3JlIGRldGFpbGVkIGluZm8gb2Ygb25lIElQTUkg ZGV2aWNlLgo+ID4gPj4+PiArICAgICogTm93IG9ubHkgU0lfQUNQSSBpbmZvIGlzIHByb3ZpZGVk LiBBbmQgaXQgZGVwZW5kcyBvbiB0aGUgU0lfQUNQSQo+ID4gPj4+PiArICAgICogYWRkcmVzcyB0 eXBlLiBJZiB0aGUgaW5mbyBpcyByZXF1aXJlZCBmb3Igb3RoZXIgYWRkcmVzcyB0eXBlLCBwbGVh c2UKPiA+ID4+Pj4gKyAgICAqIGFkZCBpdC4KPiA+ID4+Pj4gKyAgICAqLwo+ID4gPj4+PiArICAg dW5pb24gewo+ID4gPj4+PiArICAgICAgICAgICAvKiB0aGUgYWNwaV9pbmZvIGVsZW1lbnQgaXMg ZGVmaW5lZCBmb3IgdGhlIFNJX0FDUEkKPiA+ID4+Pj4gKyAgICAgICAgICAgICogYWRkcmVzcyB0 eXBlCj4gPiA+Pj4+ICsgICAgICAgICAgICAqLwo+ID4gPj4+PiArICAgICAgICAgICBzdHJ1Y3Qg ewo+ID4gPj4+PiArICAgICAgICAgICAgICAgICAgIHZvaWQgKmFjcGlfaGFuZGxlOwo+ID4gPj4+ PiArICAgICAgICAgICB9IGFjcGlfaW5mbzsKPiA+ID4+Pj4gKyAgIH0gYWRkcl9pbmZvOwo+ID4g Pj4+PiArfTsKPiA+ID4+Pj4gKwo+ID4gPj4+PiArLyogVGhpcyBpcyB0byBnZXQgdGhlIHByaXZh dGUgaW5mbyBvZiBpcG1pX3NtaV90ICovCj4gPiA+Pj4+ICtleHRlcm4gaW50IGlwbWlfZ2V0X3Nt aV9pbmZvKGludCBpZl9udW0sIHN0cnVjdCBpcG1pX3NtaV9pbmZvICpkYXRhKTsKPiA+ID4+Pj4g Ky8qIFRoaXMgaXMgdG8gZGVjcmVhc2UgcmVmY291bnQgb2YgZGV2IGFkZGVkIGluIHRoZSBmdW5j dGlvbiBvZgo+ID4gPj4+PiArICogaXBtaV9nZXRfc21pX2luZm8KPiA+ID4+Pj4gKyAqLwo+ID4g Pj4+PiArZXh0ZXJuIHZvaWQgaXBtaV9wdXRfc21pX2luZm8oaW50IGlmX251bSk7Cj4gPiA+Pj4+ ICAgICNlbmRpZiAvKiBfX0tFUk5FTF9fICovCj4gPiA+Pj4+Cj4gPiA+Pj4+Cj4gPiA+Pj4+IGRp ZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2lwbWlfc21pLmggYi9pbmNsdWRlL2xpbnV4L2lwbWlf c21pLmgKPiA+ID4+Pj4gaW5kZXggNGI0ODMxOC4uYjk5OTQyZCAxMDA2NDQKPiA+ID4+Pj4gLS0t IGEvaW5jbHVkZS9saW51eC9pcG1pX3NtaS5oCj4gPiA+Pj4+ICsrKyBiL2luY2x1ZGUvbGludXgv aXBtaV9zbWkuaAo+ID4gPj4+PiBAQCAtODYsNiArODYsMTQgQEAgc3RydWN0IGlwbWlfc21pX2hh bmRsZXJzIHsKPiA+ID4+Pj4gICAgICBpbnQgKCpzdGFydF9wcm9jZXNzaW5nKSh2b2lkICAgICAg ICpzZW5kX2luZm8sCj4gPiA+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBtaV9z bWlfdCBuZXdfaW50Zik7Cj4gPiA+Pj4+Cj4gPiA+Pj4+ICsgICAvKgo+ID4gPj4+PiArICAgICog R2V0IHRoZSBkZXRhaWxlZCBwcml2YXRlIGluZm8gb2YgdGhlIGxvdyBsZXZlbCBpbnRlcmZhY2Ug YW5kIHN0b3JlCj4gPiA+Pj4+ICsgICAgKiBpdCBpbnRvIHRoZSBzdHJ1Y3R1cmUgb2YgaXBtaV9z bWlfZGF0YS4gRm9yIGV4YW1wbGU6IHRoZQo+ID4gPj4+PiArICAgICogQUNQSSBkZXZpY2UgaGFu ZGxlIHdpbGwgYmUgcmV0dXJuZWQgZm9yIHRoZSBwbnBfYWNwaSBJUE1JIGRldmljZS4KPiA+ID4+ Pj4gKyAgICAqLwo+ID4gPj4+PiArICAgaW50ICgqZ2V0X3NtaV9pbmZvKSh2b2lkICpzZW5kX2lu Zm8sIHN0cnVjdCBpcG1pX3NtaV9pbmZvICpkYXRhKTsKPiA+ID4+Pj4gKwo+ID4gPj4+PiArICAg dm9pZCAoKnB1dF9zbWlfaW5mbykodm9pZCAqc2VuZF9pbmZvKTsKPiA+ID4+Pj4gICAgICAvKiBD YWxsZWQgdG8gZW5xdWV1ZSBhbiBTTUkgbWVzc2FnZSB0byBiZSBzZW50LiAgVGhpcwo+ID4gPj4+ PiAgICAgICAgIG9wZXJhdGlvbiBpcyBub3QgYWxsb3dlZCB0byBmYWlsLiAgSWYgYW4gZXJyb3Ig b2NjdXJzLCBpdAo+ID4gPj4+PiAgICAgICAgIHNob3VsZCByZXBvcnQgYmFjayB0aGUgZXJyb3Ig aW4gYSByZWNlaXZlZCBtZXNzYWdlLiAgSXQgbWF5Cj4gPiA+Pj4+Cj4gPiA+Pj4+Cj4gPiA+Pj4K PiA+ID4+IC0tCj4gPiA+PiBUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUg bGluZSAidW5zdWJzY3JpYmUgbGludXgtYWNwaSIgaW4KPiA+ID4+IHRoZSBib2R5IG9mIGEgbWVz c2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnCj4gPiA+PiBNb3JlIG1ham9yZG9tbyBp bmZvIGF0ICBodHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwKPiA+ID4+ Cj4gPiA+Cj4gPgo+IAo+IC0tCj4gVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQg dGhlIGxpbmUgInVuc3Vic2NyaWJlIGxpbnV4LWFjcGkiIGluCj4gdGhlIGJvZHkgb2YgYSBtZXNz YWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcKPiBNb3JlIG1ham9yZG9tbyBpbmZvIGF0 ICBodHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwKCgotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KSW5jcmVhc2UgVmlzaWJpbGl0eSBvZiBZb3VyIDNEIEdhbWUgQXBwICYgRWFy biBhIENoYW5jZSBUbyBXaW4gJDUwMCEKVGFwIGludG8gdGhlIGxhcmdlc3QgaW5zdGFsbGVkIFBD IGJhc2UgJiBnZXQgbW9yZSBleWVzIG9uIHlvdXIgZ2FtZSBieQpvcHRpbWl6aW5nIGZvciBJbnRl bChSKSBHcmFwaGljcyBUZWNobm9sb2d5LiBHZXQgc3RhcnRlZCB0b2RheSB3aXRoIHRoZQpJbnRl bChSKSBTb2Z0d2FyZSBQYXJ0bmVyIFByb2dyYW0uIEZpdmUgJDUwMCBjYXNoIHByaXplcyBhcmUg dXAgZm9yIGdyYWJzLgpodHRwOi8vcC5zZi5uZXQvc2Z1L2ludGVsaXNwLWRldjJkZXYKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KT3BlbmlwbWktZGV2ZWxv cGVyIG1haWxpbmcgbGlzdApPcGVuaXBtaS1kZXZlbG9wZXJAbGlzdHMuc291cmNlZm9yZ2UubmV0 Cmh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL29wZW5pcG1pLWRl dmVsb3Blcgo=