From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH 1/8] drm/i915/skl: Add support to load SKL CSR firmware Date: Thu, 02 Apr 2015 18:21:31 +0300 Message-ID: <1427988091.29646.64.camel@intel.com> References: <1427885382-8753-1-git-send-email-animesh.manna@intel.com> <1427885547-8834-1-git-send-email-animesh.manna@intel.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 0D901721B8 for ; Thu, 2 Apr 2015 08:21:39 -0700 (PDT) In-Reply-To: <1427885547-8834-1-git-send-email-animesh.manna@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Animesh Manna Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24ga2UsIDIwMTUtMDQtMDEgYXQgMTY6MjIgKzA1MzAsIEFuaW1lc2ggTWFubmEgd3JvdGU6Cj4g RnJvbTogIkEuU3VuaWwgS2FtYXRoIiA8c3VuaWwua2FtYXRoQGludGVsLmNvbT4KPiAKPiBEaXNw bGF5IENvbnRleHQgU2F2ZSBhbmQgUmVzdG9yZSBzdXBwb3J0IGlzIG5lZWRlZCBmb3IKPiB2YXJp b3VzIFNLTCBEaXNwbGF5IEMgc3RhdGVzIGxpa2UgREM1LCBEQzYuCj4gCj4gVGhpcyBpbXBsZW1l bnRhdGlvbiBpcyBhZGRlZCBiYXNlZCBvbiBmaXJzdCB2ZXJzaW9uIG9mIERNQyBDU1IgcHJvZ3Jh bQo+IHRoYXQgd2UgcmVjZWl2ZWQgZnJvbSBoL3cgdGVhbS4KPiAKPiBIZXJlIHdlIGFyZSB1c2lu ZyByZXF1ZXN0X2Zpcm13YXJlIGJhc2VkIGRlc2lnbi4KPiBGaW5hbGx5IHRoaXMgZmlybXdhcmUg c2hvdWxkIGVuZCB1cCBpbiBsaW51eC1maXJtd2FyZSB0cmVlLgo+IAo+IEZvciBTS0wgcGxhdGZv cm0gaXRzIG1hbmRhdG9yeSB0byBlbnN1cmUgdGhhdCB3ZSBsb2FkIHRoaXMKPiBjc3IgcHJvZ3Jh bSBiZWZvcmUgZW5hYmxpbmcgREMgc3RhdGVzIGxpa2UgREM1L0RDNi4KPiAKPiBBcyBDU1IgcHJv Z3JhbSBnZXRzIHJlc2V0IG9uIHZhcmlvdXMgY29uZGl0aW9ucywgd2Ugc2hvdWxkIGVuc3VyZQo+ IHRvIGxvYWQgaXQgZHVyaW5nIGJvb3QgYW5kIGluIGZ1dHVyZSBjaGFuZ2UgdG8gYmUgYWRkZWQg dG8gbG9hZAo+IHRoaXMgc3lzdGVtIHJlc3VtZSBzZXF1ZW5jZSB0b28uCj4gCj4gdjE6IEluaXRp YWwgcmVsZXNlIGFzIFJGQyBwYXRjaAo+IAo+IHYyOiBEZXNpZ24gY2hhbmdlIGFzIHBlciBEYW5p ZWwsIERhbWllbiBhbmQgU2hvYml0J3MgcmV2aWV3IGNvbW1lbnRzCj4gcmVxdWVzdCBmaXJtd2Fy ZSBtZXRob2QgZm9sbG93ZWQuCj4gCj4gdjM6IFNvbWUgb3B0aW1pemF0aW9uIGFuZCBmdW5jdGlv bmFsIGNoYW5nZXMuCj4gUHVsbGVkIHJlZ2lzdGVyIGRlZmluZXMgaW50byBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlZy5oCj4gVXNlZCBrbWVtZHVwIHRvIGFsbG9jYXRlIGFuZCBkdXBsaWNh dGUgZmlybXdhcmUgY29udGVudC4KPiBFbnN1cmVkIHRvIGZyZWUgYWxsb2NhdGVkIGJ1ZmZlci4K PiAKPiB2NDogTW9kaWZpZWQgYXMgcGVyIHJldmlldyBjb21tZW50cyBmcm9tIFNhdGhlZXNoIGFu ZCBEYW5pZWwKPiBSZW1vdmVkIHRlbXBvcmFyeSBidWZmZXIuCj4gT3B0aW1pemVkIG51bWJlciBv ZiB3cml0ZXMgYnkgcmVwbGFjaW5nIEk5MTVfV1JJVEUgd2l0aCBJOTE1X1dSSVRFNjQuCj4gCj4g djU6Cj4gTW9kaWZpZWQgYXMgcGVyIHJldmlldyBjb21lbW50cyBmcm9tIERhbWllbi4KPiAtIENo YW5nZWQgbmFtZSBmb3IgZnVuY3Rpb25zIGFuZCBmaXJtd2FyZS4KPiAtIEludHJvZHVjZWQgSEFT X0NTUi4KPiAtIFJldmVydGVkIGJhY2sgcHJldmlvdXMgY2hhbmdlIGFuZCB1c2VkIGNzcl9idWYg d2l0aCB1OCBzaXplLgo+IC0gVXNpbmcgY3B1X3RvX2JlNjQgZm9yIGVuZGlhbm5lc3MgY2hhbmdl Lgo+IAo+IE1vZGlmaWVkIGFzIHBlciByZXZpZXcgY29tbWVudHMgZnJvbSBJbXJlLgo+IC0gTW9k aWZpZWQgcmVnaXN0ZXJzIGFuZCBtYWNybyBuYW1lcyB0byBiZSBhIGJpdCBjbG9zZXIgdG8gYnNw ZWMgdGVybWlub2xvZ3kKPiBhbmQgdGhlIGV4aXN0aW5nIHJlZ2lzdGVyIG5hbWluZyBpbiB0aGUg ZHJpdmVyLgo+IC0gRWFybHkgcmV0dXJuIGZvciBub24gU0tMIHBsYXRmb3JtcyBpbiBpbnRlbF9s b2FkX2Nzcl9wcm9ncmFtIGZ1bmN0aW9uLgo+IC0gQWRkZWQgbG9ja2luZyBhcm91bmQgQ1NSIHBy b2dyYW0gbG9hZCBmdW5jdGlvbiBhcyBpdCBtYXkgYmUgY2FsbGVkCj4gY29uY3VycmVudGx5IGR1 cmluZyBzeXN0ZW0vcnVudGltZSByZXN1bWUuCj4gLSBSZWxlYXNpbmcgdGhlIGZ3IGJlZm9yZSBs b2FkaW5nIHRoZSBwcm9ncmFtIGZvciBjb25zaXN0ZW5jeQo+IC0gSGFuZGxlZCBlcnJvciBwYXRo IGR1cmluZyBmL3cgbG9hZC4KPiAKPiB2NjogTW9kaWZpZWQgYXMgcGVyIHJldmlldyBjb21tZW50 cyBmcm9tIEltcmUuCj4gLSBDb3JyZWN0ZWQgb3V0X2ZyZWVjc3Igc2VxdWVuY2UuCj4gCj4gdjc6 IE1vZGlmaWVkIGFzIHBlciByZXZpZXcgY29tbWVudHMgZnJvbSBJbXJlLgo+IEZhaWwgbG9hZGlu ZyBmdyBpZiBmdy0+c2l6ZSU4IT0wLgo+IAo+IHY4OiBSZWJhc2UgdG8gbGF0ZXN0Lgo+IAo+IHY5 OiBSZWJhc2Ugb24gdG9wIG9mIC1uaWdodGx5IChEYW1pZW4pCj4gCj4gdjEwOiBFbmFibGVkIHN1 cHBvcnQgZm9yIGRtYyBmaXJtd2FyZSB2ZXIgMS4wLgo+IEFjY29yZGluZyB0byB2ZXIgMS4wIGlu IGEgc2luZ2xlIGJpbmFyeSBwYWNrYWdlIGFsbCB0aGUgZmlybXdhcmUncyB0aGF0IGFyZQo+IHJl cXVpcmVkIGZvciBkaWZmZXJlbnQgc3RlcHBpbmcncyBvZiB0aGUgcHJvZHVjdCB3aWxsIGJlIHN0 b3JlZC4gVGhlIHBhY2thZ2UKPiBjb250YWlucyB0aGUgY3NzIGhlYWRlciwgZm9sbG93ZWQgYnkg dGhlIHBhY2thZ2UgaGVhZGVyIGFuZCB0aGUgYWN0dWFsIGRtYwo+IGZpcm13YXJlcy4gUGFja2Fn ZSBoZWFkZXIgY29udGFpbnMgdGhlIGZpcm13YXJlL3N0ZXBwaW5nIG1hcHBpbmcgdGFibGUgYW5k Cj4gdGhlIGNvcnJlc3BvbmRpbmcgZmlybXdhcmUgb2Zmc2V0cyB0byB0aGUgaW5kaXZpZHVhbCBi aW5hcmllcywgd2l0aGluIHRoZQo+IHBhY2thZ2UuIEVhY2ggaW5kaXZpZHVhbCBwcm9ncmFtIGJp bmFyeSBjb250YWlucyB0aGUgaGVhZGVyIGFuZCB0aGUgcGF5bG9hZAo+IHNlY3Rpb25zIHdob3Nl IHNpemUgaXMgc3BlY2lmaWVkIGluIHRoZSBoZWFkZXIgc2VjdGlvbi4gVGhpcyBjaGFuZ2VzIGFy ZSBkb25lCj4gdG8gZXh0cmFjdCB0aGUgc3BlY2lmaWMgZmlybWF3YXJlIGZyb20gdGhlIHBhY2th Z2UuIChBbmltZXNoKQo+IAo+IHYxMTogTW9kaWZpZWQgYXMgcGVyIHJldmlldyBjb21lbW50cyBm cm9tIEltcmUuCj4gLSBBZGRlZCBjb2RlIGNvbW1lbnQgZnJvbSBicGVjIGZvciBoZWFkZXIgc3Ry dWN0dXJlIGVsZW1lbnRzLgo+IC0gQWRkZWQgX19wYWNrZWQgdG8gYXZvaWQgc3RydWN0dXJlIHBh ZGRpbmcuCj4gLSBBZGRlZCBoZWxwZXIgZnVuY3Rpb25zIGZvciBzdGVwcGluZyBhbmQgc3Vic3Rl cHBpbmcgaW5mby4KPiAtIEFkZGVkIGNvZGUgY29tbWVudCBmb3IgQ1NSX01BWF9GV19TSVpFLgo+ IC0gRGlzYWJsZWQgQlhUIGZpcm13YXJlIGxvYWRpbmcsIHdpbGwgYmUgZW5hYmxlZCB3aXRoIGRt YyAxLjAgc3VwcG9ydC4KPiAtIENoYW5nZWQgc2tsX3N0ZXBwaW5nX2luZm8gYmFzZWQgb24gYnNw ZWMsIGVhcmxpZXIgdXNlZCBmcm9tIGNvbmZpZyBEQi4KPiAtIFJlbW92ZWQgZHVwbGljYXRlIGNh bGwgb2YgY3B1X3RvX2JlKiBmcm9tIGludGVsX2Nzcl9sb2FkX3Byb2dyYW0gZnVuY3Rpb24uCj4g LSBVc2VkIGNwdV90b19iZTMyIGluc3RlYWQgb2YgY3B1X3RvX2JlNjQgYXMgZmlybXdhcmUgYmlu YXJ5IGluIGR3b3JkIGFsaWduZWQuCj4gLSBBZGRlZCBzYW5pdHkgY2hlY2sgZm9yIGhlYWRlciBs ZW5ndGguCj4gLSBBZGRlZCBzYW5pdHkgY2hlY2sgZm9yIG1taW8gYWRkcmVzcyBnb3QgZnJvbSBm aXJtd2FyZSBiaW5hcnkuCj4gLSBrbWFsbG9jIGRvbmUgc2VwYXJhdGVseSBmb3IgZG1jIGhlYWRl ciBhbmQgZG1jIGZpcm13YXJlLiAoQW5pbWVzaCkKPiAKPiB2MTI6IE1vZGlmaWVkIGFzIHBlciBy ZXZpZXcgY29tZW1udHMgZnJvbSBJbXJlLgo+IC0gQ29ycmVjdGVkIHRoZSB0eXBvIGVycm9yIGlu IHNrbCBzdGVwcGluZyBpbmZvIHN0cnVjdHVyZS4KPiAtIEFkZGVkIG91dC1vZi1ib3VuZCBhY2Nl c3MgZm9yIHNrbF9zdGVwcGluZ19pbmZvLgo+IC0gU2FuaXR5IGNoZWNrIGZvciBtbWlvIGFkZHJl c3MgbW9kaWZpZWQuCj4gLSBTYW5pdHkgY2hlY2sgYWRkZWQgZm9yIHN0ZXBwaW5nIGFuZCBzdWJz dGVwcGlnLgo+IC0gTW9kaWZpZWQgdGhlIGludGVsX2RtY19pbmZvIHN0cnVjdHVyZSwgY2FjaGUg b25seSB0aGUgcmVxdWlyZWQgaGVhZGVyIGluZm8uIChBbmltZXNoKQo+IAo+IHYxMzogY2xhcmlm eSBmaXJtd2FyZSBsb2FkIGVycm9yIG1lc3NhZ2UuCj4gVGhlIHJlYXNvbiBmb3IgYSBmaXJtd2Fy ZSBsb2FkaW5nIGZhaWx1cmUgY2FuIGJlIG9ic2N1cmUgaWYgdGhlIGRyaXZlcgo+IGlzIGJ1aWx0 LWluLiBQcm92aWRlIGFuIGV4cGxhbmF0aW9uIHRvIHRoZSB1c2VyIGFib3V0IHRoZSBsaWtlbHkg cmVhc29uIGZvcgo+IHRoZSBmYWlsdXJlIGFuZCBob3cgdG8gcmVzb2x2ZSBpdC4gKEltcmUpCj4g Cj4gdjE0OiBTdWdnZXN0ZWQgYnkgSmFuaS4KPiAtIGZpeCBzL0k5MTUvQ09ORklHX0RSTV9JOTE1 LyB0eXBvCj4gLSBhZGQgZndfcGF0aCB0byB0aGUgZmlybXdhcmUgb2JqZWN0IGluc3RlYWQgb2Yg dXNpbmcgYSBzdGF0aWMgcHRyIChKYW5pKQo+IAo+IElzc3VlOiBWSVotMjU2OQo+IFNpZ25lZC1v ZmYtYnk6IEEuU3VuaWwgS2FtYXRoIDxzdW5pbC5rYW1hdGhAaW50ZWwuY29tPgo+IFNpZ25lZC1v ZmYtYnk6IERhbWllbiBMZXNwaWF1IDxkYW1pZW4ubGVzcGlhdUBpbnRlbC5jb20+Cj4gU2lnbmVk LW9mZi1ieTogQW5pbWVzaCBNYW5uYSA8YW5pbWVzaC5tYW5uYUBpbnRlbC5jb20+Cj4gU2lnbmVk LW9mZi1ieTogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICB8ICAgMyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RtYS5jICB8ICAxMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5j ICB8ICAyMCArKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgfCAxMzIgKysr KysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgfCAg MTggKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nzci5jIHwgMjYyICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaCB8ICAgNSArCj4gIDcgZmlsZXMgY2hhbmdlZCwgNDUwIGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9jc3IuYwo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtl ZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gaW5kZXggYTY5MDAyZS4uNTIz OGRlYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gQEAgLTEyLDcgKzEyLDggQEAgaTkxNS15 IDo9IGk5MTVfZHJ2Lm8gXAo+ICAgICAgICAgICAgaTkxNV9zdXNwZW5kLm8gXAo+ICAJICBpOTE1 X3N5c2ZzLm8gXAo+ICAJICBpbnRlbF9wbS5vIFwKPiAtCSAgaW50ZWxfcnVudGltZV9wbS5vCj4g KwkgIGludGVsX3J1bnRpbWVfcG0ubyBcCj4gKwkgIGludGVsX2Nzci5vCj4gIAo+ICBpOTE1LSQo Q09ORklHX0NPTVBBVCkgICArPSBpOTE1X2lvYzMyLm8KPiAgaTkxNS0kKENPTkZJR19ERUJVR19G UykgKz0gaTkxNV9kZWJ1Z2ZzLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kbWEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKPiBpbmRleCA2OGUw Yzg1Li40ZDkyNDI5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1h LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4gQEAgLTc4Myw2ICs3 ODMsNyBAQCBpbnQgaTkxNV9kcml2ZXJfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNp Z25lZCBsb25nIGZsYWdzKQo+ICAJc3Bpbl9sb2NrX2luaXQoJmRldl9wcml2LT5tbWlvX2ZsaXBf bG9jayk7Cj4gIAltdXRleF9pbml0KCZkZXZfcHJpdi0+ZHBpb19sb2NrKTsKPiAgCW11dGV4X2lu aXQoJmRldl9wcml2LT5tb2Rlc2V0X3Jlc3RvcmVfbG9jayk7Cj4gKwltdXRleF9pbml0KCZkZXZf cHJpdi0+Y3NyX2xvY2spOwo+ICAKPiAgCWludGVsX3BtX3NldHVwKGRldik7Cj4gIAo+IEBAIC04 MjgsMTAgKzgyOSwxNSBAQCBpbnQgaTkxNV9kcml2ZXJfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB1bnNpZ25lZCBsb25nIGZsYWdzKQo+ICAKPiAgCWludGVsX3VuY29yZV9pbml0KGRldik7 Cj4gIAo+IC0JcmV0ID0gaTkxNV9nZW1fZ3R0X2luaXQoZGV2KTsKPiArCS8qIExvYWQgQ1NSIEZp cm13YXJlIGZvciBTS0wgKi8KPiArCXJldCA9IGludGVsX2Nzcl91Y29kZV9pbml0KGRldik7Cj4g IAlpZiAocmV0KQo+ICAJCWdvdG8gb3V0X3JlZ3M7CgpJIG1pc3NlZCB0aGlzIGVhcmxpZXIsIGJ1 dCB3ZSBzaG91bGQganVzdCBjb250aW51ZSBoZXJlIGluIGNhc2Ugb2YgZXJyb3IKYW5kIGRvbid0 IGZhaWwgbG9hZGluZyB0aGUgZHJpdmVyLgoKPiAgCj4gKwlyZXQgPSBpOTE1X2dlbV9ndHRfaW5p dChkZXYpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIG91dF9mcmVlY3NyOwo+ICsKPiAgCS8qIFdB Uk5JTkc6IEFwcGFyZW50bHkgd2UgbXVzdCBraWNrIGZiZGV2IGRyaXZlcnMgYmVmb3JlIHZnYWNv biwKPiAgCSAqIG90aGVyd2lzZSB0aGUgdmdhIGZiZGV2IGRyaXZlciBmYWxscyBvdmVyLiAqLwo+ ICAJcmV0ID0gaTkxNV9raWNrX291dF9maXJtd2FyZV9mYihkZXZfcHJpdik7Cj4gQEAgLTEwMDAs NiArMTAwNiw4IEBAIG91dF9tdHJyZnJlZToKPiAgCWlvX21hcHBpbmdfZnJlZShkZXZfcHJpdi0+ Z3R0Lm1hcHBhYmxlKTsKPiAgb3V0X2d0dDoKPiAgCWk5MTVfZ2xvYmFsX2d0dF9jbGVhbnVwKGRl dik7Cj4gK291dF9mcmVlY3NyOgo+ICsJaW50ZWxfY3NyX3Vjb2RlX2ZpbmkoZGV2KTsKPiAgb3V0 X3JlZ3M6Cj4gIAlpbnRlbF91bmNvcmVfZmluaShkZXYpOwo+ICAJcGNpX2lvdW5tYXAoZGV2LT5w ZGV2LCBkZXZfcHJpdi0+cmVncyk7Cj4gQEAgLTEwNzcsNiArMTA4NSw4IEBAIGludCBpOTE1X2Ry aXZlcl91bmxvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCW11dGV4X3VubG9jaygmZGV2 LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAJaTkxNV9nZW1fY2xlYW51cF9zdG9sZW4oZGV2KTsKPiAgCj4g KwlpbnRlbF9jc3JfdWNvZGVfZmluaShkZXYpOwo+ICsKPiAgCWludGVsX3RlYXJkb3duX2dtYnVz KGRldik7Cj4gIAlpbnRlbF90ZWFyZG93bl9tY2hiYXIoZGV2KTsKPiAgCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5jCj4gaW5kZXggODJmOGJlNC4uNDg5Y2FhNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuYwo+IEBAIC01NDMsNiArNTQzLDI2IEBAIHZvaWQgaW50ZWxfaHBkX2NhbmNlbF93b3Jr KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWNhbmNlbF9kZWxheWVkX3dv cmtfc3luYygmZGV2X3ByaXYtPmhvdHBsdWdfcmVlbmFibGVfd29yayk7Cj4gIH0KPiAgCj4gK3Zv aWQgaTkxNV9maXJtd2FyZV9sb2FkX2Vycm9yX3ByaW50KGNvbnN0IGNoYXIgKmZ3X3BhdGgsIGlu dCBlcnIpCj4gK3sKPiArCURSTV9FUlJPUigiZmFpbGVkIHRvIGxvYWQgZmlybXdhcmUgJXMgKCVk KVxuIiwgZndfcGF0aCwgZXJyKTsKPiArCj4gKwkvKgo+ICsJICogSWYgdGhlIHJlYXNvbiBpcyBu b3Qga25vd24gYXNzdW1lIC1FTk9FTlQgc2luY2UgdGhhdCdzIHRoZSBtb3N0Cj4gKwkgKiB1c3Vh bCBmYWlsdXJlIG1vZGUuCj4gKwkgKi8KPiArCWlmICghZXJyKQo+ICsJCWVyciA9IC1FTk9FTlQ7 Cj4gKwo+ICsJaWYgKCEoSVNfQlVJTFRJTihDT05GSUdfRFJNX0k5MTUpICYmIGVyciA9PSAtRU5P RU5UKSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJRFJNX0VSUk9SKAo+ICsJICAiVGhlIGRyaXZlciBp cyBidWlsdC1pbiwgc28gdG8gbG9hZCB0aGUgZmlybXdhcmUgeW91IG5lZWQgdG9cbiIKPiArCSAg ImluY2x1ZGUgaXQgZWl0aGVyIGluIHRoZSBrZXJuZWwgKHNlZSBDT05GSUdfRVhUUkFfRklSTVdB UkUpIG9yXG4iCj4gKwkgICJpbiB5b3VyIGluaXRyZC9pbml0cmFtZnMgaW1hZ2UuXG4iKTsKPiAr fQo+ICsKPiAgc3RhdGljIHZvaWQgaW50ZWxfc3VzcGVuZF9lbmNvZGVycyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBk ZXZfcHJpdi0+ZGV2Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDRlZjMyMGMuLmRk NTcyYTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtNjY2LDYgKzY2NiwxMiBA QCBzdHJ1Y3QgaW50ZWxfdW5jb3JlIHsKPiAgI2RlZmluZSBmb3JfZWFjaF9md19kb21haW4oZG9t YWluX18sIGRldl9wcml2X18sIGlfXykgXAo+ICAJZm9yX2VhY2hfZndfZG9tYWluX21hc2soZG9t YWluX18sIEZPUkNFV0FLRV9BTEwsIGRldl9wcml2X18sIGlfXykKPiAgCj4gK3N0cnVjdCBpbnRl bF9jc3Igewo+ICsJaW50IGNzcl9zaXplOwo+ICsJdTggKmNzcl9idWY7Cgpjc3Jfc2l6ZSBpc24n dCB1c2VkIGFuZCBjc3JfYnVmIGlzIG9ubHkgdXNlZCBsb2NhbGx5LCBzbyB0aGV5IGNhbiBiZQpy ZW1vdmVkIGZyb20gaGVyZS4KCj4gKwljb25zdCBjaGFyICpmd19wYXRoOwo+ICt9Owo+ICsKPiAg I2RlZmluZSBERVZfSU5GT19GT1JfRUFDSF9GTEFHKGZ1bmMsIHNlcCkgXAo+ICAJZnVuYyhpc19t b2JpbGUpIHNlcCBcCj4gIAlmdW5jKGlzX2k4NXgpIHNlcCBcCj4gQEAgLTE1NjAsNiArMTU2Niwx MjMgQEAgc3RydWN0IGk5MTVfdmlydHVhbF9ncHUgewo+ICAJYm9vbCBhY3RpdmU7Cj4gIH07Cj4g IAo+ICtzdHJ1Y3QgaW50ZWxfY3NzX2hlYWRlciB7Cj4gKwkvKiAweDA5IGZvciBETUMgKi8KPiAr CXVpbnQzMl90IG1vZHVsZV90eXBlOwo+ICsKPiArCS8qIEluY2x1ZGVzIHRoZSBETUMgc3BlY2lm aWMgaGVhZGVyIGluIGR3b3JkcyAqLwo+ICsJdWludDMyX3QgaGVhZGVyX2xlbjsKPiArCj4gKwkv KiBhbHdheXMgdmFsdWUgd291bGQgYmUgMHgxMDAwMCAqLwo+ICsJdWludDMyX3QgaGVhZGVyX3Zl cjsKPiArCj4gKwkvKiBOb3QgdXNlZCAqLwo+ICsJdWludDMyX3QgbW9kdWxlX2lkOwo+ICsKPiAr CS8qIE5vdCB1c2VkICovCj4gKwl1aW50MzJfdCBtb2R1bGVfdmVuZG9yOwo+ICsKPiArCS8qIGlu IFlZWVlNTUREIGZvcm1hdCAqLwo+ICsJdWludDMyX3QgZGF0ZTsKPiArCj4gKwkvKiBTaXplIGlu IGR3b3JkcyAoQ1NTX0hlYWRlcmxlbiArIFBhY2thZ2VIZWFkZXJMZW4gKyBkbWMgRldzTGVuKS80 ICovCj4gKwl1aW50MzJfdCBzaXplOwo+ICsKPiArCS8qIE5vdCB1c2VkICovCj4gKwl1aW50MzJf dCBrZXlfc2l6ZTsKPiArCj4gKwkvKiBOb3QgdXNlZCAqLwo+ICsJdWludDMyX3QgbW9kdWx1c19z aXplOwo+ICsKPiArCS8qIE5vdCB1c2VkICovCj4gKwl1aW50MzJfdCBleHBvbmVudF9zaXplOwo+ ICsKPiArCS8qIE5vdCB1c2VkICovCj4gKwl1aW50MzJfdCByZXNlcnZlZDFbMTJdOwo+ICsKPiAr CS8qIE1ham9yIE1pbm9yICovCj4gKwl1aW50MzJfdCB2ZXJzaW9uOwo+ICsKPiArCS8qIE5vdCB1 c2VkICovCj4gKwl1aW50MzJfdCByZXNlcnZlZDJbOF07Cj4gKwo+ICsJLyogTm90IHVzZWQgKi8K PiArCXVpbnQzMl90IGtlcm5lbF9oZWFkZXJfaW5mbzsKPiArfSBfX3BhY2tlZDsKPiArCj4gK3N0 cnVjdCBpbnRlbF9md19pbmZvIHsKPiArCXVpbnQxNl90IHJlc2VydmVkMTsKPiArCj4gKwkvKiBT dGVwcGluZyAoQSwgQiwgQywgLi4uLCAqKS4gKiBpcyBhIHdpbGRjYXJkICovCj4gKwljaGFyIHN0 ZXBwaW5nOwo+ICsKPiArCS8qIFN1Yi1zdGVwcGluZyAoMCwgMSwgLi4uLCAqKS4gKiBpcyBhIHdp bGRjYXJkICovCj4gKwljaGFyIHN1YnN0ZXBwaW5nOwo+ICsKPiArCXVpbnQzMl90IG9mZnNldDsK PiArCXVpbnQzMl90IHJlc2VydmVkMjsKPiArfSBfX3BhY2tlZDsKPiArCj4gK3N0cnVjdCBpbnRl bF9wYWNrYWdlX2hlYWRlciB7Cj4gKwkvKiBETUMgY29udGFpbmVyIGhlYWRlciBsZW5ndGggaW4g ZHdvcmRzICovCj4gKwl1bnNpZ25lZCBjaGFyIGhlYWRlcl9sZW47Cj4gKwo+ICsJLyogYWx3YXlz IHZhbHVlIHdvdWxkIGJlIDB4MDEgKi8KPiArCXVuc2lnbmVkIGNoYXIgaGVhZGVyX3ZlcjsKPiAr Cj4gKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzEwXTsKPiArCj4gKwkvKiBOdW1iZXIgb2YgdmFs aWQgZW50cmllcyBpbiB0aGUgRldJbmZvIGFycmF5IGJlbG93ICovCj4gKwl1aW50MzJfdCBudW1f ZW50cmllczsKPiArCj4gKwlzdHJ1Y3QgaW50ZWxfZndfaW5mbyBmd19pbmZvWzIwXTsKPiArfSBf X3BhY2tlZDsKPiArCj4gK3N0cnVjdCBpbnRlbF9kbWNfaGVhZGVyIHsKPiArCS8qIGFsd2F5cyB2 YWx1ZSB3b3VsZCBiZSAweDQwNDAzRTNFICovCj4gKwl1aW50MzJfdCBzaWduYXR1cmU7Cj4gKwo+ ICsJLyogRE1DIGJpbmFyeSBoZWFkZXIgbGVuZ3RoICovCj4gKwl1bnNpZ25lZCBjaGFyIGhlYWRl cl9sZW47Cj4gKwo+ICsJLyogMHgwMSAqLwo+ICsJdW5zaWduZWQgY2hhciBoZWFkZXJfdmVyOwo+ ICsKPiArCS8qIFJlc2VydmVkICovCj4gKwl1aW50MTZfdCBkbWNjX3ZlcjsKPiArCj4gKwkvKiBN YWpvciwgTWlub3IgKi8KPiArCXVpbnQzMl90CXByb2plY3Q7Cj4gKwo+ICsJLyogRmlybXdhcmUg cHJvZ3JhbSBzaXplIChleGNsdWRpbmcgaGVhZGVyKSBpbiBkd29yZHMgKi8KPiArCXVpbnQzMl90 CWZ3X3NpemU7Cj4gKwo+ICsJLyogTWFqb3IgTWlub3IgdmVyc2lvbiAqLwo+ICsJdWludDMyX3Qg ZndfdmVyc2lvbjsKPiArCj4gKwkvKiBOdW1iZXIgb2YgdmFsaWQgTU1JTyBjeWNsZXMgcHJlc2Vu dC4gKi8KPiArCXVpbnQzMl90IG1taW9fY291bnQ7Cj4gKwo+ICsJLyogTU1JTyBhZGRyZXNzICov Cj4gKwl1aW50MzJfdCBtbWlvYWRkcls4XTsKPiArCj4gKwkvKiBNTUlPIGRhdGEgKi8KPiArCXVp bnQzMl90IG1taW9kYXRhWzhdOwo+ICsKPiArCS8qIEZXIGZpbGVuYW1lICAqLwo+ICsJdW5zaWdu ZWQgY2hhciBkZmlsZVszMl07Cj4gKwo+ICsJdWludDMyX3QgcmVzZXJ2ZWQxWzJdOwo+ICt9IF9f cGFja2VkOwoKQWxsIHRoZSBhYm92ZSBfX3BhY2tlZCBzdHJ1Y3RzIGFyZSB1c2VkIG9ubHkgaW4g aW50ZWxfY3NyLmMsIHNvIHRoZXkgY2FuCmJlIGRlZmluZWQgdGhlcmUgd2l0aG91dCBleHBvcnQg dGhlbS4KCj4gKwo+ICtzdHJ1Y3QgaW50ZWxfZG1jX2luZm8gewo+ICsJX19iZTMyICpkbWNfcGF5 bG9hZDsKPiArCXVpbnQzMl90IGRtY19md19zaXplOwo+ICsJdWludDMyX3QgbW1pb19jb3VudDsK PiArCXVpbnQzMl90IG1taW9hZGRyWzhdOwo+ICsJdWludDMyX3QgbW1pb2RhdGFbOF07Cj4gK307 Cj4gKwo+ICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2Owo+ICAJc3RydWN0IGttZW1fY2FjaGUgKnNsYWI7Cj4gQEAgLTE1NzQsNiArMTY5NywxMSBA QCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gIAo+ICAJc3RydWN0IGk5MTVfdmlydHVhbF9n cHUgdmdwdTsKPiAgCj4gKwlzdHJ1Y3QgaW50ZWxfY3NyIGNzcjsKPiArCj4gKwkvKiBEaXNwbGF5 IENTUi1yZWxhdGVkIHByb3RlY3Rpb24gKi8KPiArCXN0cnVjdCBtdXRleCBjc3JfbG9jazsKPiAr Cj4gIAlzdHJ1Y3QgaW50ZWxfZ21idXMgZ21idXNbR01CVVNfTlVNX1BPUlRTXTsKPiAgCj4gCj4g QEAgLTE4MzIsNiArMTk2MCw3IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPiAgCSAqIE5P VEU6IFRoaXMgaXMgdGhlIGRyaTEvdW1zIGR1bmdlb24sIGRvbid0IGFkZCBzdHVmZiBoZXJlLiBZ b3VyIHBhdGNoCj4gIAkgKiB3aWxsIGJlIHJlamVjdGVkLiBJbnN0ZWFkIGxvb2sgZm9yIGEgYmV0 dGVyIHBsYWNlLgo+ICAJICovCj4gKwlzdHJ1Y3QgaW50ZWxfZG1jX2luZm8gZG1jX2luZm87CgpU aGlzIHNob3VsZCBiZSBwYXJ0IG9mIHN0cnVjdCBpbnRlbF9jc3IuCgo+ICB9Owo+ICAKPiAgc3Rh dGljIGlubGluZSBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqdG9faTkxNShjb25zdCBzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+IEBAIC0yNDE4LDYgKzI1NDcsOCBAQCBzdHJ1Y3QgZHJtX2k5MTVf Y21kX3RhYmxlIHsKPiAgI2RlZmluZSBIQVNfUkM2KGRldikJCShJTlRFTF9JTkZPKGRldiktPmdl biA+PSA2KQo+ICAjZGVmaW5lIEhBU19SQzZwKGRldikJCShJTlRFTF9JTkZPKGRldiktPmdlbiA9 PSA2IHx8IElTX0lWWUJSSURHRShkZXYpKQo+ICAKPiArI2RlZmluZSBIQVNfQ1NSKGRldikJKElT X1NLWUxBS0UoZGV2KSkKPiArCj4gICNkZWZpbmUgSU5URUxfUENIX0RFVklDRV9JRF9NQVNLCQkw eGZmMDAKPiAgI2RlZmluZSBJTlRFTF9QQ0hfSUJYX0RFVklDRV9JRF9UWVBFCQkweDNiMDAKPiAg I2RlZmluZSBJTlRFTF9QQ0hfQ1BUX0RFVklDRV9JRF9UWVBFCQkweDFjMDAKPiBAQCAtMjUwOCw2 ICsyNjM5LDcgQEAgZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaTkxNV9nZnhfdmFsKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIGV4dGVybiB2b2lkIGk5MTVfdXBkYXRlX2dmeF92 YWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgaW50IHZsdl9mb3JjZV9n ZnhfY2xvY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBib29sIG9uKTsKPiAg dm9pZCBpbnRlbF9ocGRfY2FuY2VsX3dvcmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KTsKPiArdm9pZCBpOTE1X2Zpcm13YXJlX2xvYWRfZXJyb3JfcHJpbnQoY29uc3QgY2hhciAq ZndfcGF0aCwgaW50IGVycik7Cj4gIAo+ICAvKiBpOTE1X2lycS5jICovCj4gIHZvaWQgaTkxNV9x dWV1ZV9oYW5nY2hlY2soc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oCj4gaW5kZXggYjUyMmViNi4uNzdmYWEyYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaAo+IEBAIC02Nzc2LDYgKzY3NzYsMjQgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7 Cj4gICNkZWZpbmUgR0VUX0NGR19DUjFfUkVHKGlkKSAoRFBMTDFfQ0ZHQ1IxICsgKGlkIC0gU0tM X0RQTEwxKSAqIDgpCj4gICNkZWZpbmUgR0VUX0NGR19DUjJfUkVHKGlkKSAoRFBMTDFfQ0ZHQ1Iy ICsgKGlkIC0gU0tMX0RQTEwxKSAqIDgpCj4gIAo+ICsvKgo+ICsqIFNLTCBDU1IgcmVnaXN0ZXJz IGZvciBEQzUgYW5kIERDNgo+ICsqLwo+ICsjZGVmaW5lIENTUl9QUk9HUkFNX0JBU0UJCTB4ODAw MDAKPiArI2RlZmluZSBDU1JfSEVBREVSX09GRlNFVAkJMTI4Cj4gKyNkZWZpbmUgQ1NSX1NTUF9C QVNFX0FERFJfR0VOOQkJMHgwMDAwMkZDMAo+ICsjZGVmaW5lIENTUl9IVFBfQUREUl9TS0wJCTB4 MDA1MDAwMzQKPiArI2RlZmluZSBDU1JfU1NQX0JBU0UJCQkweDhGMDc0Cj4gKyNkZWZpbmUgQ1NS X0hUUF9TS0wJCQkweDhGMDA0Cj4gKyNkZWZpbmUgQ1NSX0xBU1RfV1JJVEUJCQkweDhGMDM0Cj4g KyNkZWZpbmUgQ1NSX0xBU1RfV1JJVEVfVkFMVUUJCTB4YzAwM2I0MDAKPiArLyogTU1JTyBhZGRy ZXNzIHJhbmdlIGZvciBDU1IgcHJvZ3JhbSAoMHg4MDAwMCAtIDB4ODJGRkYpICovCj4gKyNkZWZp bmUgQ1NSX01BWF9GV19TSVpFCQkJMHgyRkZGCj4gKyNkZWZpbmUgQ1NSX0RFRkFVTFRfRldfT0ZG U0VUCQkweEZGRkZGRkZGCj4gKyNkZWZpbmUgQ1NSX01NSU9fU1RBUlRfUkFOR0UJMHg4MDAwMAo+ ICsjZGVmaW5lIENTUl9NTUlPX0VORF9SQU5HRQkJMHg4RkZGRgoKQWxsIG9mIHRoZSBhYm92ZSBh cmUgdXNlZCBvbmx5IGludGVsX2Nzci5jLCBzbyBubyBuZWVkIHRvIGV4cG9ydCB0aGVtLgoKPiAr I2RlZmluZSBDU1JfTUFYX01NSU9fQ09VTlQJCTgKCkkgd291bGRuJ3QgZGVmaW5lIHRoaXMsIGp1 c3QgdXNlIEFSUkFZX1NJWkUgZm9yIHRoZSBjb3JyZXNwb25kaW5nIHNhbml0eQpjaGVjay4KCj4g Kwo+ICAvKiBQbGVhc2Ugc2VlIGhzd19yZWFkX2Rjb21wKCkgYW5kIGhzd193cml0ZV9kY29tcCgp IGJlZm9yZSB1c2luZyB0aGlzIHJlZ2lzdGVyLAo+ICAgKiBzaW5jZSBvbiBIU1cgd2UgY2FuJ3Qg d3JpdGUgdG8gaXQgdXNpbmcgSTkxNV9XUklURS4gKi8KPiAgI2RlZmluZSBEX0NPTVBfSFNXCQkJ KE1DSEJBUl9NSVJST1JfQkFTRV9TTkIgKyAweDVGMEMpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Nzci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3Ny LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmY0NGYxY2QKPiAtLS0g L2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3NyLmMKPiBAQCAt MCwwICsxLDI2MiBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxNCBJbnRlbCBDb3Jwb3Jh dGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2Rp ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Ig c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv bSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ICsg KiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAq IFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN LCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIg REVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKgo+ICsgKi8KPiArI2luY2x1ZGUg PGxpbnV4L2Zpcm13YXJlLmg+Cj4gKyNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICsjaW5jbHVkZSAi aTkxNV9yZWcuaCIKPiArCj4gKyNkZWZpbmUgSTkxNV9DU1JfU0tMICJpOTE1L3NrbF9kbWNfdmVy MS5iaW4iCj4gKwo+ICtNT0RVTEVfRklSTVdBUkUoSTkxNV9DU1JfU0tMKTsKPiArCj4gKyNkZWZp bmUgbnVtX2FycmF5X2VsZW1lbnRzKGEpIChzaXplb2YoYSkvc2l6ZW9mKGFbMF0pKQoKWW91IGNh biB1c2UgQVJSQVlfU0laRS4KCj4gKwo+ICtzdHJ1Y3Qgc3RlcHBpbmdfaW5mbyB7Cj4gKwljaGFy IHN0ZXBwaW5nOwo+ICsJY2hhciBzdWJzdGVwcGluZzsKPiArCXVpbnQxNl90IHJlc2VydmVkOwoK cmVzZXJ2ZWQgaXMgbm90IHVzZWQuIAoKPiArfTsKPiArCj4gK3N0cnVjdCBzdGVwcGluZ19pbmZv IHNrbF9zdGVwcGluZ19pbmZvW10gPSB7Cj4gKwkJeydBJywgJzAnLCAwfSwgeydCJywgJzAnLCAw fSwgeydDJywgJzAnLCAwfSwKPiArCQl7J0QnLCAnMCcsIDB9LCB7J0UnLCAnMCcsIDB9LCB7J0Yn LCAnMCcsIDB9LAo+ICsJCXsnRycsICcwJywgMH0sIHsnSCcsICcwJywgMH0sIHsnSScsICcwJywg MH0KPiArfTsKClNob3VsZCBiZSBzdGF0aWMuCgo+ICsKPiArY2hhciBpbnRlbF9nZXRfc3RlcHBp bmcoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArewo+ICsJaWYgKElTX1NLWUxBS0UoZGV2KSAm JiAoZGV2LT5wZGV2LT5yZXZpc2lvbiA8Cj4gKwkJCW51bV9hcnJheV9lbGVtZW50cyhza2xfc3Rl cHBpbmdfaW5mbykpKQo+ICsJCXJldHVybiBza2xfc3RlcHBpbmdfaW5mb1tkZXYtPnBkZXYtPnJl dmlzaW9uXS5zdGVwcGluZzsKPiArCWVsc2UKPiArCQlyZXR1cm4gLUVOT0RBVEE7Cj4gK30KPiAr Cj4gK2NoYXIgaW50ZWxfZ2V0X3N1YnN0ZXBwaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g K3sKPiArCWlmIChJU19TS1lMQUtFKGRldikgJiYgKGRldi0+cGRldi0+cmV2aXNpb24gPAo+ICsJ CQludW1fYXJyYXlfZWxlbWVudHMoc2tsX3N0ZXBwaW5nX2luZm8pKSkKPiArCQlyZXR1cm4gc2ts X3N0ZXBwaW5nX2luZm9bZGV2LT5wZGV2LT5yZXZpc2lvbl0uc3Vic3RlcHBpbmc7Cj4gKwllbHNl Cj4gKwkJcmV0dXJuIC1FTk9EQVRBOwo+ICt9Cj4gK3ZvaWQgaW50ZWxfY3NyX2xvYWRfcHJvZ3Jh bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoKVGhlIGFib3ZlIDMgZnVuY3Rpb25zIHNob3VsZCBi ZSBzdGF0aWMuCgo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwo+ICsJdW5zaWduZWQgY2hhciAqYnVmID0gKHVuc2lnbmVkIGNoYXIg KilkZXZfcHJpdi0+ZG1jX2luZm8uZG1jX3BheWxvYWQ7Cj4gKwl1aW50MzJfdCBpLCBudW1fYnl0 ZXM7Cj4gKwo+ICsJaWYgKCFJU19HRU45KGRldikpIHsKPiArCQlEUk1fRVJST1IoIk5vIENTUiBz dXBwb3J0IGF2YWlsYWJsZSBmb3IgdGhpcyBwbGF0Zm9ybVxuIik7Cj4gKwkJcmV0dXJuOwo+ICsJ fQo+ICsKPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5jc3JfbG9jayk7Cj4gKwkvKiBmd19zaXpl IGlzIGR3b3JkcywgY29udmVydGluZyBpdCB0byBieXRlcyBhbmQgbmVhcmVzdCA4IG11bHRpcGxl LiAqLwo+ICsJbnVtX2J5dGVzID0gZGV2X3ByaXYtPmRtY19pbmZvLmRtY19md19zaXplICogNDsK PiArCWZvciAoaSA9IDA7IGkgPCAobnVtX2J5dGVzICYgfjcpOyBpID0gaSArIDgpIHsKPiArCQl1 aW50NjRfdCB0bXAgPSAqKHVpbnQ2NF90ICopKGJ1ZiArIGkpOwo+ICsKPiArCQlJOTE1X1dSSVRF NjQoKENTUl9QUk9HUkFNX0JBU0UgKyBpKSwgdG1wKTsKPiArCX0KPiArCj4gKwkvKiBmd19zaXpl IGlzIGluIGR3b3JkcywgZm9yIG9kZCBzaXplIG5lZWQgdG8gd3JpdGUgbGFzdCA0IGJ5dGVzICov Cj4gKwlpZiAobnVtX2J5dGVzICYgNykgewo+ICsJCXVpbnQzMl90IHRtcCA9ICoodWludDMyX3Qg KikoYnVmICsgKG51bV9ieXRlcyAmIH43KSk7Cj4gKwo+ICsJCUk5MTVfV1JJVEUoKENTUl9QUk9H UkFNX0JBU0UgKyBpKSwgdG1wKTsKPiArCX0KCkkgd291bGRuJ3Qgb3B0aW1pemUgYXQgdGhpcyBw b2ludCwganVzdCB1c2UgYSBzaW1wbGUgbG9vcDoKZm9yIChpID0gMDsgaSA8IGRtY19md19zaXpl OyBpKyspCglJOTE1X1dSSVRFKENTUl9QUk9HUkFNX0JBU0UgKyBpICogNCwgKHUzMiBfX2ZvcmNl KWRtY19wYXlsb2FkICsgIGkpOwoKSWYgaXQgbmVlZHMgdG8gYmUgb3B0aW1pemVkIEknZCB1c2Ug aW5zdGVhZDoKLyogTm8gZm9yY2V3YWtlIG5lZWRlZCBmb3IgdGhlIENTUiBwcm9ncmFtIE1NSU8g cmFuZ2UgKi8KbWVtY3B5X3RvaW8oZGV2X3ByaXYtPnJlZ3MgKyBDU1JfUFJPR1JBTV9CQVNFLCBk bWNfcGF5bG9hZCwgZG1jX2Z3X3NpemUgKiA0KTsKCj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IGRl dl9wcml2LT5kbWNfaW5mby5tbWlvX2NvdW50OyBpKyspIHsKPiArCQlJOTE1X1dSSVRFKGRldl9w cml2LT5kbWNfaW5mby5tbWlvYWRkcltpXSwKPiArCQkJZGV2X3ByaXYtPmRtY19pbmZvLm1taW9k YXRhW2ldKTsKPiArCX0KPiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmNzcl9sb2NrKTsKPiAr fQo+ICsKPiArc3RhdGljIHZvaWQgZmluaXNoX2Nzcl9sb2FkKGNvbnN0IHN0cnVjdCBmaXJtd2Fy ZSAqZncsIHZvaWQgKmNvbnRleHQpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGNvbnRleHQ7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYt PmRldjsKPiArCXN0cnVjdCBpbnRlbF9jc3NfaGVhZGVyICpjc3NfaGVhZGVyOwo+ICsJc3RydWN0 IGludGVsX3BhY2thZ2VfaGVhZGVyICpwYWNrYWdlX2hlYWRlcjsKPiArCXN0cnVjdCBpbnRlbF9k bWNfaGVhZGVyICpkbWNfaGVhZGVyOwo+ICsJc3RydWN0IGludGVsX2NzciAqY3NyID0gJmRldl9w cml2LT5jc3I7Cj4gKwljaGFyIHN0ZXBwaW5nID0gaW50ZWxfZ2V0X3N0ZXBwaW5nKGRldik7Cj4g KwljaGFyIHN1YnN0ZXBwaW5nID0gaW50ZWxfZ2V0X3N1YnN0ZXBwaW5nKGRldik7Cj4gKwl1aW50 MzJfdCBkbWNfb2Zmc2V0ID0gQ1NSX0RFRkFVTFRfRldfT0ZGU0VULCByZWFkY291bnQgPSAwLCBu Ynl0ZXM7Cj4gKwl1aW50MzJfdCBpLCBqOwo+ICsJX19iZTMyICpkbWNfcGF5bG9hZDsKPiArCj4g KwlpZiAoIWZ3KSB7Cj4gKwkJaTkxNV9maXJtd2FyZV9sb2FkX2Vycm9yX3ByaW50KGNzci0+Zndf cGF0aCwgMCk7Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+ICsJaWYgKChzdGVwcGluZyA9PSAt RU5PREFUQSkgfHwgKHN1YnN0ZXBwaW5nID09IC1FTk9EQVRBKSkgewo+ICsJCURSTV9FUlJPUigi VW5rbm93biBzdGVwcGluZyBpbmZvLCBmaXJtd2FyZSBsb2FkaW5nIGZhaWxlZFxuIik7Cj4gKwkJ Z290byBvdXQ7Cj4gKwl9Cj4gKwo+ICsJLyogc2F2ZSBjc3IgZi93IGFzIGl0IHdpbGwgYmUgbmVl ZGVkIGR1cmluZyByZXN1bWUgKi8KPiArCWNzci0+Y3NyX2J1ZiA9IGttZW1kdXAoZnctPmRhdGEs IGZ3LT5zaXplLCBHRlBfS0VSTkVMKTsKClNpbmNlIHlvdSB3aWxsIGNvcHkgZXZlcnl0aGluZyBy ZWxldmFudCBvdXQgb2YgY3NyX2J1ZiBhbmQgZnJlZSBpdCBhdAp0aGUgZW5kIG9mIHRoZSBmdW5j dGlvbiwgeW91IGNvdWxkIGp1c3QgdXNlIGZ3LT5kYXRhIGRpcmVjdGx5IChhbmQgbW92ZQpyZWxl YXNlX2Zpcm13YXJlIGxhdGVyIGFjY29yZGluZ2x5KS4KCj4gKwo+ICsJY3NyLT5jc3Jfc2l6ZSA9 IGZ3LT5zaXplOwoKVGhpcyBpcyB1bnVzZWQuCgo+ICsKPiArCXJlbGVhc2VfZmlybXdhcmUoZncp Owo+ICsKPiArCS8qIEV4dHJhY3QgQ1NTIEhlYWRlciBpbmZvcm1hdGlvbiovCj4gKwljc3NfaGVh ZGVyID0gKHN0cnVjdCBpbnRlbF9jc3NfaGVhZGVyICopY3NyLT5jc3JfYnVmOwo+ICsJaWYgKHNp emVvZihzdHJ1Y3QgaW50ZWxfY3NzX2hlYWRlcikgIT0KPiArCQkoY3NzX2hlYWRlci0+aGVhZGVy X2xlbiAqIDQpKSB7Cj4gKwkJRFJNX0VSUk9SKCJGaXJtd2FyZSBoYXMgd3JvbmcgQ1NTIGhlYWRl ciBsZW5ndGggJXUgYnl0ZXNcbiIsCj4gKwkJCShjc3NfaGVhZGVyLT5oZWFkZXJfbGVuICogNCkp Owo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsJcmVhZGNvdW50ICs9IHNpemVvZihzdHJ1Y3QgaW50 ZWxfY3NzX2hlYWRlcik7Cj4gKwo+ICsJLyogRXh0cmFjdCBQYWNrYWdlIEhlYWRlciBpbmZvcm1h dGlvbiovCj4gKwlwYWNrYWdlX2hlYWRlciA9IChzdHJ1Y3QgaW50ZWxfcGFja2FnZV9oZWFkZXIg KikKPiArCQkJCQkmY3NyLT5jc3JfYnVmW3JlYWRjb3VudF07Cj4gKwlpZiAoc2l6ZW9mKHN0cnVj dCBpbnRlbF9wYWNrYWdlX2hlYWRlcikgIT0KPiArCQkocGFja2FnZV9oZWFkZXItPmhlYWRlcl9s ZW4gKiA0KSkgewo+ICsJCURSTV9FUlJPUigiRmlybXdhcmUgaGFzIHdyb25nIHBhY2thZ2UgaGVh ZGVyIGxlbmd0aCAldSBieXRlc1xuIiwKPiArCQkJKHBhY2thZ2VfaGVhZGVyLT5oZWFkZXJfbGVu ICogNCkpOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsJcmVhZGNvdW50ICs9IHNpemVvZihzdHJ1 Y3QgaW50ZWxfcGFja2FnZV9oZWFkZXIpOwo+ICsKPiArCS8qIFNlYXJjaCBmb3IgZG1jX29mZnNl dCB0byBmaW5kIGZpcndhcmUgYmluYXJ5LiAqLwo+ICsJZm9yIChpID0gMDsgaSA8IHBhY2thZ2Vf aGVhZGVyLT5udW1fZW50cmllczsgaSsrKSB7Cj4gKwkJaWYgKHBhY2thZ2VfaGVhZGVyLT5md19p bmZvW2ldLnN1YnN0ZXBwaW5nID09ICcqJyAmJgo+ICsJCQlzdGVwcGluZyA9PSBwYWNrYWdlX2hl YWRlci0+ZndfaW5mb1tpXS5zdGVwcGluZykgewo+ICsJCQlkbWNfb2Zmc2V0ID0gcGFja2FnZV9o ZWFkZXItPmZ3X2luZm9baV0ub2Zmc2V0Owo+ICsJCQlicmVhazsKPiArCQl9IGVsc2UgaWYgKHN0 ZXBwaW5nID09IHBhY2thZ2VfaGVhZGVyLT5md19pbmZvW2ldLnN0ZXBwaW5nICYmCj4gKwkJCXN1 YnN0ZXBwaW5nID09IHBhY2thZ2VfaGVhZGVyLT5md19pbmZvW2ldLnN1YnN0ZXBwaW5nKSB7Cj4g KwkJCWRtY19vZmZzZXQgPSBwYWNrYWdlX2hlYWRlci0+ZndfaW5mb1tpXS5vZmZzZXQ7Cj4gKwkJ CWJyZWFrOwo+ICsJCX0gZWxzZSBpZiAocGFja2FnZV9oZWFkZXItPmZ3X2luZm9baV0uc3RlcHBp bmcgPT0gJyonICYmCj4gKwkJCXBhY2thZ2VfaGVhZGVyLT5md19pbmZvW2ldLnN1YnN0ZXBwaW5n ID09ICcqJykKPiArCQkJZG1jX29mZnNldCA9IHBhY2thZ2VfaGVhZGVyLT5md19pbmZvW2ldLm9m ZnNldDsKPiArCX0KPiArCWlmIChkbWNfb2Zmc2V0ID09IENTUl9ERUZBVUxUX0ZXX09GRlNFVCkg ewo+ICsJCURSTV9FUlJPUigiRmlybXdhcmUgbm90IHN1cHBvcnRlZCBmb3IgJWMgc3RlcHBpbmdc biIsIHN0ZXBwaW5nKTsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCXJlYWRjb3VudCArPSBkbWNf b2Zmc2V0Owo+ICsKPiArCS8qIEV4dHJhY3QgZG1jX2hlYWRlciBpbmZvcm1hdGlvbi4gKi8KPiAr CWRtY19oZWFkZXIgPSAoc3RydWN0IGludGVsX2RtY19oZWFkZXIgKikmY3NyLT5jc3JfYnVmW3Jl YWRjb3VudF07Cj4gKwlpZiAoc2l6ZW9mKHN0cnVjdCBpbnRlbF9kbWNfaGVhZGVyKSAhPSAoZG1j X2hlYWRlci0+aGVhZGVyX2xlbikpIHsKPiArCQlEUk1fRVJST1IoIkZpcm13YXJlIGhhcyB3cm9u ZyBkbWMgaGVhZGVyIGxlbmd0aCAldSBieXRlc1xuIiwKPiArCQkJCShkbWNfaGVhZGVyLT5oZWFk ZXJfbGVuKSk7Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwlyZWFkY291bnQgKz0gc2l6ZW9mKHN0 cnVjdCBpbnRlbF9kbWNfaGVhZGVyKTsKPiArCj4gKwkvKiBDYWNoZSB0aGUgZG1jIGhlYWRlciBp bmZvLiAqLwo+ICsJaWYgKGRtY19oZWFkZXItPm1taW9fY291bnQgPiBDU1JfTUFYX01NSU9fQ09V TlQpIHsKPiArCQlEUk1fRVJST1IoIkZpcm13YXJlIGhhcyB3cm9uZyBtbWlvIGNvdW50ICV1XG4i LAo+ICsJCQkJCQlkbWNfaGVhZGVyLT5tbWlvX2NvdW50KTsKPiArCQlnb3RvIG91dDsKPiArCX0K PiArCWRldl9wcml2LT5kbWNfaW5mby5tbWlvX2NvdW50ID0gZG1jX2hlYWRlci0+bW1pb19jb3Vu dDsKPiArCWZvciAoaSA9IDA7IGkgPCBkbWNfaGVhZGVyLT5tbWlvX2NvdW50OyBpKyspIHsKPiAr CQlpZiAoZG1jX2hlYWRlci0+bW1pb2FkZHJbaV0gPj0gQ1NSX01NSU9fU1RBUlRfUkFOR0UgJiYK PiArCQkJZG1jX2hlYWRlci0+bW1pb2FkZHJbaV0gPD0gQ1NSX01NSU9fRU5EX1JBTkdFKSB7Cj4g KwkJCURSTV9FUlJPUigiIEZpcm13YXJlIGhhcyB3cm9uZyBtbWlvIGFkZHJlc3MgMHgleFxuIiwK PiArCQkJCQkJZG1jX2hlYWRlci0+bW1pb2FkZHJbaV0pOwo+ICsJCQlnb3RvIG91dDsKPiArCQl9 Cj4gKwkJZGV2X3ByaXYtPmRtY19pbmZvLm1taW9hZGRyW2ldID0gZG1jX2hlYWRlci0+bW1pb2Fk ZHJbaV07Cj4gKwkJZGV2X3ByaXYtPmRtY19pbmZvLm1taW9kYXRhW2ldID0gZG1jX2hlYWRlci0+ bW1pb2RhdGFbaV07Cj4gKwl9Cj4gKwo+ICsJLyogZndfc2l6ZSBpcyBpbiBkd29yZHMsIHNvIG11 bHRpcGxpZWQgYnkgNCB0byBjb252ZXJ0IGludG8gYnl0ZXMuICovCj4gKwluYnl0ZXMgPSBkbWNf aGVhZGVyLT5md19zaXplICogNDsKPiArCWlmIChuYnl0ZXMgPiBDU1JfTUFYX0ZXX1NJWkUpIHsK PiArCQlEUk1fRVJST1IoIkNTUiBmaXJtd2FyZSB0b28gYmlnICgldSkgYnl0ZXNcbiIsIG5ieXRl cyk7Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwlkZXZfcHJpdi0+ZG1jX2luZm8uZG1jX3BheWxv YWQgPSBrbWFsbG9jKG5ieXRlcywgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWRldl9wcml2LT5kbWNf aW5mby5kbWNfcGF5bG9hZCkgewo+ICsJCURSTV9FUlJPUigiTWVtb3J5IGFsbG9jYXRpb24gZmFp bGVkIGZvciBkbWMgcGF5bG9hZFxuIik7Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+ICsJZG1j X3BheWxvYWQgPSBkZXZfcHJpdi0+ZG1jX2luZm8uZG1jX3BheWxvYWQ7Cj4gKwlmb3IgKGkgPSAw LCBqID0gMDsgaSA8IG5ieXRlczsgaSA9IGkgKyA0LCBqKyspIHsKCkknZCBqdXN0IHVzZSBhIHNp bmdsZSBpdGVyYXRvciBoZXJlLgoKPiArCQl1aW50MzJfdCAqdG1wID0gKHUzMiAqKSZjc3ItPmNz cl9idWZbcmVhZGNvdW50ICsgaV07Cj4gKwkJLyoKPiArCQkgKiBUaGUgZmlybXdhcmUgcGF5bG9h ZCBpcyBhbiBhcnJheSBvZiAzMiBiaXQgd29yZHMgc3RvcmVkIGluCj4gKwkJICogbGl0dGxlLWVu ZGlhbiBmb3JtYXQgaW4gdGhlIGZpcm13YXJlIGltYWdlIGFuZCBwcm9ncmFtbWVkCj4gKwkJICog YXMgMzIgYml0IGJpZy1lbmRpYW4gZm9ybWF0IHRvIG1lbW9yeS4KPiArCQkgKi8KPiArCQlkbWNf cGF5bG9hZFtqXSA9IGNwdV90b19iZTMyKCp0bXApOwo+ICsJfQo+ICsKPiArCS8qIGxvYWQgY3Ny IHByb2dyYW0gZHVyaW5nIHN5c3RlbSBib290LCBhcyBuZWVkZWQgZm9yIERDIHN0YXRlcyAqLwo+ ICsJaW50ZWxfY3NyX2xvYWRfcHJvZ3JhbShkZXYpOwo+ICtvdXQ6Cj4gKwlrZnJlZShjc3ItPmNz cl9idWYpOwo+ICsJY3NyLT5jc3JfYnVmID0gTlVMTDsKPiArfQo+ICsKPiAraW50IGludGVsX2Nz cl91Y29kZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCgpUaGlzIGNvdWxkIGJlIHZvaWQs IHNpbmNlIHdlIHdvbid0IHVzZSB0aGUgcmV0dXJuZWQgZXJyb3IuCgo+ICt7Cj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0 IGludGVsX2NzciAqY3NyID0gJmRldl9wcml2LT5jc3I7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlm ICghSEFTX0NTUihkZXYpKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWlmIChJU19TS1lMQUtFKGRl dikpCj4gKwkJY3NyLT5md19wYXRoID0gSTkxNV9DU1JfU0tMOwo+ICsJZWxzZSB7Cj4gKwkJRFJN X0VSUk9SKCJVbmV4cGVjdGVkOiBubyBrbm93biBDU1IgZmlybXdhcmUgZm9yIHBsYXRmb3JtXG4i KTsKPiArCQlyZXR1cm4gMDsKPiArCX0KPiArCj4gKwkvKiBDU1Igc3VwcG9ydGVkIGZvciBwbGF0 Zm9ybSwgbG9hZCBmaXJtd2FyZSAqLwo+ICsJcmV0ID0gcmVxdWVzdF9maXJtd2FyZV9ub3dhaXQo VEhJU19NT0RVTEUsIHRydWUsIGNzci0+ZndfcGF0aCwKPiArCQkJCSZkZXZfcHJpdi0+ZGV2LT5w ZGV2LT5kZXYsCj4gKwkJCQlHRlBfS0VSTkVMLCBkZXZfcHJpdiwKPiArCQkJCWZpbmlzaF9jc3Jf bG9hZCk7Cj4gKwlpZiAocmV0KQo+ICsJCWk5MTVfZmlybXdhcmVfbG9hZF9lcnJvcl9wcmludChj c3ItPmZ3X3BhdGgsIHJldCk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArdm9pZCBp bnRlbF9jc3JfdWNvZGVfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsKPiAr CWlmICghSEFTX0NTUihkZXYpKQo+ICsJCXJldHVybjsKPiArCj4gKwlrZnJlZShkZXZfcHJpdi0+ ZG1jX2luZm8uZG1jX3BheWxvYWQpOwo+ICsJbWVtc2V0KCZkZXZfcHJpdi0+ZG1jX2luZm8sIDAs IHNpemVvZihzdHJ1Y3QgaW50ZWxfZG1jX2luZm8pKTsKCk5vIG5lZWQgZm9yIHRoZSBtZW1zZXQs IGRtY19pbmZvIHdvbid0IGJlIHVzZWQgYWZ0ZXJ3YXJkcy4KCj4gK30KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaAo+IGluZGV4IGZjYTdiOWYuLmNkMjBiNmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaAo+IEBAIC0xMDU5LDYgKzEwNTksMTEgQEAgdm9pZCBpbnRlbF9tb2Rlc2V0X3By ZWNsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSk7Cj4g IHVuc2lnbmVkIGxvbmcgaW50ZWxfcGxhbmVfb2JqX29mZnNldChzdHJ1Y3QgaW50ZWxfcGxhbmUg KmludGVsX3BsYW5lLAo+ICAJCQkJICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KTsKPiAgCj4gKy8qIGludGVsX2Nzci5jICovCj4gK2ludCBpbnRlbF9jc3JfdWNvZGVfaW5pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiArdm9pZCBpbnRlbF9jc3JfbG9hZF9wcm9ncmFtKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICt2b2lkIGludGVsX2Nzcl91Y29kZV9maW5pKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpOwo+ICsKPiAgLyogaW50ZWxfZHAuYyAqLwo+ICB2b2lkIGludGVs X2RwX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IG91dHB1dF9yZWcsIGVudW0gcG9y dCBwb3J0KTsKPiAgYm9vbCBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=