From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH v3 1/8] drm/i915/skl: Add support to load SKL CSR firmware Date: Mon, 13 Apr 2015 14:03:50 +0300 Message-ID: <1428923030.29827.33.camel@intel.com> References: <1428678670-11258-1-git-send-email-animesh.manna@intel.com> <1428920642-23712-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id F42006E244 for ; Mon, 13 Apr 2015 04:03:52 -0700 (PDT) In-Reply-To: <1428920642-23712-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 T24gbWEsIDIwMTUtMDQtMTMgYXQgMTU6NTQgKzA1MzAsIEFuaW1lc2ggTWFubmEgd3JvdGU6Cj4g 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+IHYxNToKPiAxKSBDaGFuZ2VkIHRoZSBmaXJt d2FyZSBuYW1lIGFzIGRtY19nZW45LmJpbiwgZXZlcnl0aW1lIGZvciBhIG5ldyBmaXJtd2FyZSB2 ZXJzaW9uIGEgc3ltYm9saWMgbGluawo+IHdpdGggc2FtZSBuYW1lIHdpbGwgaGVscCBub3QgdG8g YnVpbGQga2VybmVsIGFnYWluLgo+IDIpIENoYW5nZXMgZG9uZSBhcyBwZXIgcmV2aWV3IGNvbW1l bnRzIGZyb20gSW1yZS4KPiAtIEVycm9yIGNoZWNrIHJlbW92ZWQgZm9yIGludGVsX2Nzcl91Y29k ZV9pbml0Lgo+IC0gTW92ZWQgY3NyLXNwZWNpZmljIGRhdGEgc3RydWN0dXJlIHRvIGludGVsX2Nz ci5oIGFuZCBvcHRpbWl6YXRpb24gZG9uZSBvbiBzdHJ1Y3R1cmUgZGVmaW5pdGlvbi4KPiAtIGZ3 LT5kYXRhIHVzZWQgZGlyZWN0bHkgZm9yIHBhcnNpbmcgdGhlIGhlYWRlciBpbmZvICYgbWVtb3J5 IGFsbG9jYXRpb24KPiBvbmx5IGRvbmUgc2VwYXJhdGVseSBmb3IgcGF5bG9hZC4gKEFuaW1lc2gp Cj4gCj4gdjE2Ogo+IE5vIG5lZWQgZm9yIG91dF9yZWdzIGxhYmVsIGluIGk5MTVfZHJpdmVyX2xv YWQoKSwgc28gcmVtb3ZlZCBpdC4gKEFuaW1lc2gpCj4gCj4gSXNzdWU6IFZJWi0yNTY5Cj4gU2ln bmVkLW9mZi1ieTogQS5TdW5pbCBLYW1hdGggPHN1bmlsLmthbWF0aEBpbnRlbC5jb20+Cj4gU2ln bmVkLW9mZi1ieTogRGFtaWVuIExlc3BpYXUgPGRhbWllbi5sZXNwaWF1QGludGVsLmNvbT4KPiBT aWduZWQtb2ZmLWJ5OiBBbmltZXNoIE1hbm5hIDxhbmltZXNoLm1hbm5hQGludGVsLmNvbT4KPiBT aWduZWQtb2ZmLWJ5OiBJbXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+Cj4gLS0tCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgIHwgICAzICstCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZG1hLmMgIHwgIDExICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMgIHwgIDIwICsrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgfCAg MTcgKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nzci5jIHwgMjM0ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9jc3IuaCB8IDE2NCArKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggfCAgIDUgKwo+ICA3IGZpbGVzIGNoYW5nZWQsIDQ1MSBp bnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfY3NyLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Nzci5oCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBpbmRleCBh NjkwMDJlLi41MjM4ZGViIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2Vm aWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBAQCAtMTIsNyArMTIs OCBAQCBpOTE1LXkgOj0gaTkxNV9kcnYubyBcCj4gICAgICAgICAgICBpOTE1X3N1c3BlbmQubyBc Cj4gIAkgIGk5MTVfc3lzZnMubyBcCj4gIAkgIGludGVsX3BtLm8gXAo+IC0JICBpbnRlbF9ydW50 aW1lX3BtLm8KPiArCSAgaW50ZWxfcnVudGltZV9wbS5vIFwKPiArCSAgaW50ZWxfY3NyLm8KPiAg Cj4gIGk5MTUtJChDT05GSUdfQ09NUEFUKSAgICs9IGk5MTVfaW9jMzIubwo+ICBpOTE1LSQoQ09O RklHX0RFQlVHX0ZTKSArPSBpOTE1X2RlYnVnZnMubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RtYS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+ IGluZGV4IGU0NDExNmYuLmEyMzg4ODkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kbWEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKPiBA QCAtODE2LDYgKzgxNiw3IEBAIGludCBpOTE1X2RyaXZlcl9sb2FkKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCj4gIAlzcGluX2xvY2tfaW5pdCgmZGV2X3ByaXYt Pm1taW9fZmxpcF9sb2NrKTsKPiAgCW11dGV4X2luaXQoJmRldl9wcml2LT5kcGlvX2xvY2spOwo+ ICAJbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPm1vZGVzZXRfcmVzdG9yZV9sb2NrKTsKPiArCW11dGV4 X2luaXQoJmRldl9wcml2LT5jc3JfbG9jayk7Cj4gIAo+ICAJaW50ZWxfcG1fc2V0dXAoZGV2KTsK PiAgCj4gQEAgLTg2MSw5ICs4NjIsMTIgQEAgaW50IGk5MTVfZHJpdmVyX2xvYWQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBmbGFncykKPiAgCj4gIAlpbnRlbF91bmNvcmVf aW5pdChkZXYpOwo+ICAKPiArCS8qIExvYWQgQ1NSIEZpcm13YXJlIGZvciBTS0wgKi8KPiArCWlu dGVsX2Nzcl91Y29kZV9pbml0KGRldik7Cj4gKwo+ICAJcmV0ID0gaTkxNV9nZW1fZ3R0X2luaXQo ZGV2KTsKPiAgCWlmIChyZXQpCj4gLQkJZ290byBvdXRfcmVnczsKPiArCQlnb3RvIG91dF9mcmVl Y3NyOwo+ICAKPiAgCS8qIFdBUk5JTkc6IEFwcGFyZW50bHkgd2UgbXVzdCBraWNrIGZiZGV2IGRy aXZlcnMgYmVmb3JlIHZnYWNvbiwKPiAgCSAqIG90aGVyd2lzZSB0aGUgdmdhIGZiZGV2IGRyaXZl ciBmYWxscyBvdmVyLiAqLwo+IEBAIC0xMDMzLDcgKzEwMzcsOCBAQCBvdXRfbXRycmZyZWU6Cj4g IAlpb19tYXBwaW5nX2ZyZWUoZGV2X3ByaXYtPmd0dC5tYXBwYWJsZSk7Cj4gIG91dF9ndHQ6Cj4g IAlpOTE1X2dsb2JhbF9ndHRfY2xlYW51cChkZXYpOwo+IC1vdXRfcmVnczoKPiArb3V0X2ZyZWVj c3I6Cj4gKwlpbnRlbF9jc3JfdWNvZGVfZmluaShkZXYpOwo+ICAJaW50ZWxfdW5jb3JlX2Zpbmko ZGV2KTsKPiAgCXBjaV9pb3VubWFwKGRldi0+cGRldiwgZGV2X3ByaXYtPnJlZ3MpOwo+ICBwdXRf YnJpZGdlOgo+IEBAIC0xMTEzLDYgKzExMTgsOCBAQCBpbnQgaTkxNV9kcml2ZXJfdW5sb2FkKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4 KTsKPiAgCWk5MTVfZ2VtX2NsZWFudXBfc3RvbGVuKGRldik7Cj4gIAo+ICsJaW50ZWxfY3NyX3Vj b2RlX2ZpbmkoZGV2KTsKPiArCj4gIAlpbnRlbF90ZWFyZG93bl9nbWJ1cyhkZXYpOwo+ICAJaW50 ZWxfdGVhcmRvd25fbWNoYmFyKGRldik7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IGlu ZGV4IGMzZmRiYjAuLmFjZDBlMmIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBAQCAt NTU2LDYgKzU1NiwyNiBAQCB2b2lkIGludGVsX2hwZF9jYW5jZWxfd29yayhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmRldl9w cml2LT5ob3RwbHVnX3JlZW5hYmxlX3dvcmspOwo+ICB9Cj4gIAo+ICt2b2lkIGk5MTVfZmlybXdh cmVfbG9hZF9lcnJvcl9wcmludChjb25zdCBjaGFyICpmd19wYXRoLCBpbnQgZXJyKQo+ICt7Cj4g KwlEUk1fRVJST1IoImZhaWxlZCB0byBsb2FkIGZpcm13YXJlICVzICglZClcbiIsIGZ3X3BhdGgs IGVycik7Cj4gKwo+ICsJLyoKPiArCSAqIElmIHRoZSByZWFzb24gaXMgbm90IGtub3duIGFzc3Vt ZSAtRU5PRU5UIHNpbmNlIHRoYXQncyB0aGUgbW9zdAo+ICsJICogdXN1YWwgZmFpbHVyZSBtb2Rl Lgo+ICsJICovCj4gKwlpZiAoIWVycikKPiArCQllcnIgPSAtRU5PRU5UOwo+ICsKPiArCWlmICgh KElTX0JVSUxUSU4oQ09ORklHX0RSTV9JOTE1KSAmJiBlcnIgPT0gLUVOT0VOVCkpCj4gKwkJcmV0 dXJuOwo+ICsKPiArCURSTV9FUlJPUigKPiArCSAgIlRoZSBkcml2ZXIgaXMgYnVpbHQtaW4sIHNv IHRvIGxvYWQgdGhlIGZpcm13YXJlIHlvdSBuZWVkIHRvXG4iCj4gKwkgICJpbmNsdWRlIGl0IGVp dGhlciBpbiB0aGUga2VybmVsIChzZWUgQ09ORklHX0VYVFJBX0ZJUk1XQVJFKSBvclxuIgo+ICsJ ICAiaW4geW91ciBpbml0cmQvaW5pdHJhbWZzIGltYWdlLlxuIik7Cj4gK30KPiArCj4gIHN0YXRp YyB2b2lkIGludGVsX3N1c3BlbmRfZW5jb2RlcnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCA0N2JlNGE1Li45MGU0N2E5IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTY2Nyw2ICs2NjcsMTUgQEAgc3RydWN0IGludGVs X3VuY29yZSB7Cj4gICNkZWZpbmUgZm9yX2VhY2hfZndfZG9tYWluKGRvbWFpbl9fLCBkZXZfcHJp dl9fLCBpX18pIFwKPiAgCWZvcl9lYWNoX2Z3X2RvbWFpbl9tYXNrKGRvbWFpbl9fLCBGT1JDRVdB S0VfQUxMLCBkZXZfcHJpdl9fLCBpX18pCj4gIAo+ICtzdHJ1Y3QgaW50ZWxfY3NyIHsKPiArCWNv bnN0IGNoYXIgKmZ3X3BhdGg7Cj4gKwlfX2JlMzIgKmRtY19wYXlsb2FkOwo+ICsJdWludDMyX3Qg ZG1jX2Z3X3NpemU7Cj4gKwl1aW50MzJfdCBtbWlvX2NvdW50Owo+ICsJdWludDMyX3QgbW1pb2Fk ZHJbOF07Cj4gKwl1aW50MzJfdCBtbWlvZGF0YVs4XTsKPiArfTsKPiArCj4gICNkZWZpbmUgREVW X0lORk9fRk9SX0VBQ0hfRkxBRyhmdW5jLCBzZXApIFwKPiAgCWZ1bmMoaXNfbW9iaWxlKSBzZXAg XAo+ICAJZnVuYyhpc19pODV4KSBzZXAgXAo+IEBAIC0xNTczLDYgKzE1ODIsMTEgQEAgc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgewo+ICAKPiAgCXN0cnVjdCBpOTE1X3ZpcnR1YWxfZ3B1IHZncHU7 Cj4gIAo+ICsJc3RydWN0IGludGVsX2NzciBjc3I7Cj4gKwo+ICsJLyogRGlzcGxheSBDU1ItcmVs YXRlZCBwcm90ZWN0aW9uICovCj4gKwlzdHJ1Y3QgbXV0ZXggY3NyX2xvY2s7Cj4gKwo+ICAJc3Ry dWN0IGludGVsX2dtYnVzIGdtYnVzW0dNQlVTX05VTV9QSU5TXTsKPiAgCj4gIAkvKiogZ21idXNf bXV0ZXggcHJvdGVjdHMgYWdhaW5zdCBjb25jdXJyZW50IHVzYWdlIG9mIHRoZSBzaW5nbGUgaHcg Z21idXMKPiBAQCAtMjQyNSw2ICsyNDM5LDggQEAgc3RydWN0IGRybV9pOTE1X2NtZF90YWJsZSB7 Cj4gICNkZWZpbmUgSEFTX1JDNihkZXYpCQkoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNikKPiAg I2RlZmluZSBIQVNfUkM2cChkZXYpCQkoSU5URUxfSU5GTyhkZXYpLT5nZW4gPT0gNiB8fCBJU19J VllCUklER0UoZGV2KSkKPiAgCj4gKyNkZWZpbmUgSEFTX0NTUihkZXYpCShJU19TS1lMQUtFKGRl dikpCj4gKwo+ICAjZGVmaW5lIElOVEVMX1BDSF9ERVZJQ0VfSURfTUFTSwkJMHhmZjAwCj4gICNk ZWZpbmUgSU5URUxfUENIX0lCWF9ERVZJQ0VfSURfVFlQRQkJMHgzYjAwCj4gICNkZWZpbmUgSU5U RUxfUENIX0NQVF9ERVZJQ0VfSURfVFlQRQkJMHgxYzAwCj4gQEAgLTI1MTUsNiArMjUzMSw3IEBA IGV4dGVybiB1bnNpZ25lZCBsb25nIGk5MTVfZ2Z4X3ZhbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOwo+ICBleHRlcm4gdm9pZCBpOTE1X3VwZGF0ZV9nZnhfdmFsKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIGludCB2bHZfZm9yY2VfZ2Z4X2Nsb2NrKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9vbCBvbik7Cj4gIHZvaWQgaW50ZWxf aHBkX2NhbmNlbF93b3JrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gK3Zv aWQgaTkxNV9maXJtd2FyZV9sb2FkX2Vycm9yX3ByaW50KGNvbnN0IGNoYXIgKmZ3X3BhdGgsIGlu dCBlcnIpOwo+ICAKPiAgLyogaTkxNV9pcnEuYyAqLwo+ICB2b2lkIGk5MTVfcXVldWVfaGFuZ2No ZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9jc3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nzci5jCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5hYjliMTZiCj4gLS0tIC9kZXYv bnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nzci5jCj4gQEAgLTAsMCAr MSwyMzQgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTQgSW50ZWwgQ29ycG9yYXRpb24K PiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFu ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICog dG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp dGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt ZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwg Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl Cj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiArICogcGFy YWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElT IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg T1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUg QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN QUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ TkdTCj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiArICoKPiArICovCj4gKyNpbmNsdWRlIDxsaW51 eC9maXJtd2FyZS5oPgo+ICsjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiArI2luY2x1ZGUgImk5MTVf cmVnLmgiCj4gKyNpbmNsdWRlICJpbnRlbF9jc3IuaCIKPiArCj4gK3N0YXRpYyBzdHJ1Y3Qgc3Rl cHBpbmdfaW5mbyBza2xfc3RlcHBpbmdfaW5mb1tdID0gewoKTml0cGljazogdGhpcyBzaG91bGQg YmUgY29uc3QuCgo+ICsJCXsnQScsICcwJ30sIHsnQicsICcwJ30sIHsnQycsICcwJ30sCj4gKwkJ eydEJywgJzAnfSwgeydFJywgJzAnfSwgeydGJywgJzAnfSwKPiArCQl7J0cnLCAnMCd9LCB7J0gn LCAnMCd9LCB7J0knLCAnMCd9Cj4gK307Cj4gKwo+ICtzdGF0aWMgY2hhciBpbnRlbF9nZXRfc3Rl cHBpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArewo+ICsJaWYgKElTX1NLWUxBS0UoZGV2 KSAmJiAoZGV2LT5wZGV2LT5yZXZpc2lvbiA8Cj4gKwkJCUFSUkFZX1NJWkUoc2tsX3N0ZXBwaW5n X2luZm8pKSkKPiArCQlyZXR1cm4gc2tsX3N0ZXBwaW5nX2luZm9bZGV2LT5wZGV2LT5yZXZpc2lv bl0uc3RlcHBpbmc7CgpOaXRwaWNrOiBhdCB0aGlzIHBvaW50IGl0J3MganVzdAppZiAoZGV2LT5w ZGV2LT5yZXZpc2lvbiA8IDkpCglyZXR1cm4gJ0EnICsgZGV2LT5wZGV2LT5yZXZpc2lvbjsKCncv byB0aGUgbmVlZCBmb3Igc2tsX3N0ZXBwaW5nX2luZm8uCgo+ICsJZWxzZQo+ICsJCXJldHVybiAt RU5PREFUQTsKPiArfQo+ICsKPiArc3RhdGljIGNoYXIgaW50ZWxfZ2V0X3N1YnN0ZXBwaW5nKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3sKPiArCWlmIChJU19TS1lMQUtFKGRldikgJiYgKGRl di0+cGRldi0+cmV2aXNpb24gPAo+ICsJCQlBUlJBWV9TSVpFKHNrbF9zdGVwcGluZ19pbmZvKSkp Cj4gKwkJcmV0dXJuIHNrbF9zdGVwcGluZ19pbmZvW2Rldi0+cGRldi0+cmV2aXNpb25dLnN1YnN0 ZXBwaW5nOwoKYW5kIHRoaXMgb25lIGlzIHNpbXBseQpyZXR1cm4gMDsKCj4gKwllbHNlCj4gKwkJ cmV0dXJuIC1FTk9EQVRBOwo+ICt9CgpNaXNzaW5nIG5ld2xpbmUuCgo+ICt2b2lkIGludGVsX2Nz cl9sb2FkX3Byb2dyYW0oc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCV9fYmUzMiAq cGF5bG9hZCA9IGRldl9wcml2LT5jc3IuZG1jX3BheWxvYWQ7Cj4gKwl1aW50MzJfdCBpLCBmd19z aXplOwo+ICsKPiArCWlmICghSVNfR0VOOShkZXYpKSB7Cj4gKwkJRFJNX0VSUk9SKCJObyBDU1Ig c3VwcG9ydCBhdmFpbGFibGUgZm9yIHRoaXMgcGxhdGZvcm1cbiIpOwo+ICsJCXJldHVybjsKPiAr CX0KPiArCj4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+Y3NyX2xvY2spOwo+ICsJLyogZndfc2l6 ZSBpcyBkd29yZHMsIGNvbnZlcnRpbmcgaXQgdG8gYnl0ZXMgYW5kIG5lYXJlc3QgOCBtdWx0aXBs ZS4gKi8KClRoZSBhYm92ZSBjb21tZW50IGlzIHN0YWxlIG5vdy4KCj4gKwlmd19zaXplID0gZGV2 X3ByaXYtPmNzci5kbWNfZndfc2l6ZTsKPiArCWZvciAoaSA9IDA7IGkgPCBmd19zaXplOyBpKysp Cj4gKwkJSTkxNV9XUklURShDU1JfUFJPR1JBTV9CQVNFICsgaSAqIDQsCj4gKwkJCSh1MzIgX19m b3JjZSlwYXlsb2FkW2ldKTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgZGV2X3ByaXYtPmNzci5t bWlvX2NvdW50OyBpKyspIHsKPiArCQlJOTE1X1dSSVRFKGRldl9wcml2LT5jc3IubW1pb2FkZHJb aV0sCj4gKwkJCWRldl9wcml2LT5jc3IubW1pb2RhdGFbaV0pOwo+ICsJfQo+ICsJbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+Y3NyX2xvY2spOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBmaW5pc2hf Y3NyX2xvYWQoY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdywgdm9pZCAqY29udGV4dCkKPiArewo+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gY29udGV4dDsKPiArCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ZGV2Owo+ICsJc3RydWN0IGludGVsX2Nzc19o ZWFkZXIgKmNzc19oZWFkZXI7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGFja2FnZV9oZWFkZXIgKnBhY2th Z2VfaGVhZGVyOwo+ICsJc3RydWN0IGludGVsX2RtY19oZWFkZXIgKmRtY19oZWFkZXI7Cj4gKwlz dHJ1Y3QgaW50ZWxfY3NyICpjc3IgPSAmZGV2X3ByaXYtPmNzcjsKPiArCWNoYXIgc3RlcHBpbmcg PSBpbnRlbF9nZXRfc3RlcHBpbmcoZGV2KTsKPiArCWNoYXIgc3Vic3RlcHBpbmcgPSBpbnRlbF9n ZXRfc3Vic3RlcHBpbmcoZGV2KTsKPiArCXVpbnQzMl90IGRtY19vZmZzZXQgPSBDU1JfREVGQVVM VF9GV19PRkZTRVQsIHJlYWRjb3VudCA9IDAsIG5ieXRlczsKPiArCXVpbnQzMl90IGk7Cj4gKwlf X2JlMzIgKmRtY19wYXlsb2FkOwo+ICsKPiArCWlmICghZncpIHsKPiArCQlpOTE1X2Zpcm13YXJl X2xvYWRfZXJyb3JfcHJpbnQoY3NyLT5md19wYXRoLCAwKTsKPiArCQlnb3RvIG91dDsKPiArCX0K PiArCj4gKwlpZiAoKHN0ZXBwaW5nID09IC1FTk9EQVRBKSB8fCAoc3Vic3RlcHBpbmcgPT0gLUVO T0RBVEEpKSB7Cj4gKwkJRFJNX0VSUk9SKCJVbmtub3duIHN0ZXBwaW5nIGluZm8sIGZpcm13YXJl IGxvYWRpbmcgZmFpbGVkXG4iKTsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCj4gKwkvKiBFeHRy YWN0IENTUyBIZWFkZXIgaW5mb3JtYXRpb24qLwo+ICsJY3NzX2hlYWRlciA9IChzdHJ1Y3QgaW50 ZWxfY3NzX2hlYWRlciAqKWZ3LT5kYXRhOwo+ICsJaWYgKHNpemVvZihzdHJ1Y3QgaW50ZWxfY3Nz X2hlYWRlcikgIT0KPiArCQkoY3NzX2hlYWRlci0+aGVhZGVyX2xlbiAqIDQpKSB7Cj4gKwkJRFJN X0VSUk9SKCJGaXJtd2FyZSBoYXMgd3JvbmcgQ1NTIGhlYWRlciBsZW5ndGggJXUgYnl0ZXNcbiIs Cj4gKwkJCShjc3NfaGVhZGVyLT5oZWFkZXJfbGVuICogNCkpOwo+ICsJCWdvdG8gb3V0Owo+ICsJ fQo+ICsJcmVhZGNvdW50ICs9IHNpemVvZihzdHJ1Y3QgaW50ZWxfY3NzX2hlYWRlcik7Cj4gKwo+ ICsJLyogRXh0cmFjdCBQYWNrYWdlIEhlYWRlciBpbmZvcm1hdGlvbiovCj4gKwlwYWNrYWdlX2hl YWRlciA9IChzdHJ1Y3QgaW50ZWxfcGFja2FnZV9oZWFkZXIgKikKPiArCQkJCQkmZnctPmRhdGFb cmVhZGNvdW50XTsKPiArCWlmIChzaXplb2Yoc3RydWN0IGludGVsX3BhY2thZ2VfaGVhZGVyKSAh PQo+ICsJCShwYWNrYWdlX2hlYWRlci0+aGVhZGVyX2xlbiAqIDQpKSB7Cj4gKwkJRFJNX0VSUk9S KCJGaXJtd2FyZSBoYXMgd3JvbmcgcGFja2FnZSBoZWFkZXIgbGVuZ3RoICV1IGJ5dGVzXG4iLAo+ ICsJCQkocGFja2FnZV9oZWFkZXItPmhlYWRlcl9sZW4gKiA0KSk7Cj4gKwkJZ290byBvdXQ7Cj4g Kwl9Cj4gKwlyZWFkY291bnQgKz0gc2l6ZW9mKHN0cnVjdCBpbnRlbF9wYWNrYWdlX2hlYWRlcik7 Cj4gKwo+ICsJLyogU2VhcmNoIGZvciBkbWNfb2Zmc2V0IHRvIGZpbmQgZmlyd2FyZSBiaW5hcnku ICovCj4gKwlmb3IgKGkgPSAwOyBpIDwgcGFja2FnZV9oZWFkZXItPm51bV9lbnRyaWVzOyBpKysp IHsKPiArCQlpZiAocGFja2FnZV9oZWFkZXItPmZ3X2luZm9baV0uc3Vic3RlcHBpbmcgPT0gJyon ICYmCj4gKwkJCXN0ZXBwaW5nID09IHBhY2thZ2VfaGVhZGVyLT5md19pbmZvW2ldLnN0ZXBwaW5n KSB7Cj4gKwkJCWRtY19vZmZzZXQgPSBwYWNrYWdlX2hlYWRlci0+ZndfaW5mb1tpXS5vZmZzZXQ7 Cj4gKwkJCWJyZWFrOwo+ICsJCX0gZWxzZSBpZiAoc3RlcHBpbmcgPT0gcGFja2FnZV9oZWFkZXIt PmZ3X2luZm9baV0uc3RlcHBpbmcgJiYKPiArCQkJc3Vic3RlcHBpbmcgPT0gcGFja2FnZV9oZWFk ZXItPmZ3X2luZm9baV0uc3Vic3RlcHBpbmcpIHsKPiArCQkJZG1jX29mZnNldCA9IHBhY2thZ2Vf aGVhZGVyLT5md19pbmZvW2ldLm9mZnNldDsKPiArCQkJYnJlYWs7Cj4gKwkJfSBlbHNlIGlmIChw YWNrYWdlX2hlYWRlci0+ZndfaW5mb1tpXS5zdGVwcGluZyA9PSAnKicgJiYKPiArCQkJcGFja2Fn ZV9oZWFkZXItPmZ3X2luZm9baV0uc3Vic3RlcHBpbmcgPT0gJyonKQo+ICsJCQlkbWNfb2Zmc2V0 ID0gcGFja2FnZV9oZWFkZXItPmZ3X2luZm9baV0ub2Zmc2V0Owo+ICsJfQo+ICsJaWYgKGRtY19v ZmZzZXQgPT0gQ1NSX0RFRkFVTFRfRldfT0ZGU0VUKSB7Cj4gKwkJRFJNX0VSUk9SKCJGaXJtd2Fy ZSBub3Qgc3VwcG9ydGVkIGZvciAlYyBzdGVwcGluZ1xuIiwgc3RlcHBpbmcpOwo+ICsJCWdvdG8g b3V0Owo+ICsJfQo+ICsJcmVhZGNvdW50ICs9IGRtY19vZmZzZXQ7Cj4gKwo+ICsJLyogRXh0cmFj dCBkbWNfaGVhZGVyIGluZm9ybWF0aW9uLiAqLwo+ICsJZG1jX2hlYWRlciA9IChzdHJ1Y3QgaW50 ZWxfZG1jX2hlYWRlciAqKSZmdy0+ZGF0YVtyZWFkY291bnRdOwo+ICsJaWYgKHNpemVvZihzdHJ1 Y3QgaW50ZWxfZG1jX2hlYWRlcikgIT0gKGRtY19oZWFkZXItPmhlYWRlcl9sZW4pKSB7Cj4gKwkJ RFJNX0VSUk9SKCJGaXJtd2FyZSBoYXMgd3JvbmcgZG1jIGhlYWRlciBsZW5ndGggJXUgYnl0ZXNc biIsCj4gKwkJCQkoZG1jX2hlYWRlci0+aGVhZGVyX2xlbikpOwo+ICsJCWdvdG8gb3V0Owo+ICsJ fQo+ICsJcmVhZGNvdW50ICs9IHNpemVvZihzdHJ1Y3QgaW50ZWxfZG1jX2hlYWRlcik7Cj4gKwo+ ICsJLyogQ2FjaGUgdGhlIGRtYyBoZWFkZXIgaW5mby4gKi8KPiArCWlmIChkbWNfaGVhZGVyLT5t bWlvX2NvdW50ID4gQVJSQVlfU0laRShjc3ItPm1taW9hZGRyKSkgewo+ICsJCURSTV9FUlJPUigi RmlybXdhcmUgaGFzIHdyb25nIG1taW8gY291bnQgJXVcbiIsCj4gKwkJCQkJCWRtY19oZWFkZXIt Pm1taW9fY291bnQpOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsJY3NyLT5tbWlvX2NvdW50ID0g ZG1jX2hlYWRlci0+bW1pb19jb3VudDsKPiArCWZvciAoaSA9IDA7IGkgPCBkbWNfaGVhZGVyLT5t bWlvX2NvdW50OyBpKyspIHsKPiArCQlpZiAoZG1jX2hlYWRlci0+bW1pb2FkZHJbaV0gPCBDU1Jf TU1JT19TVEFSVF9SQU5HRSAmJgo+ICsJCQlkbWNfaGVhZGVyLT5tbWlvYWRkcltpXSA+IENTUl9N TUlPX0VORF9SQU5HRSkgewo+ICsJCQlEUk1fRVJST1IoIiBGaXJtd2FyZSBoYXMgd3JvbmcgbW1p byBhZGRyZXNzIDB4JXhcbiIsCj4gKwkJCQkJCWRtY19oZWFkZXItPm1taW9hZGRyW2ldKTsKPiAr CQkJZ290byBvdXQ7Cj4gKwkJfQo+ICsJCWNzci0+bW1pb2FkZHJbaV0gPSBkbWNfaGVhZGVyLT5t bWlvYWRkcltpXTsKPiArCQljc3ItPm1taW9kYXRhW2ldID0gZG1jX2hlYWRlci0+bW1pb2RhdGFb aV07Cj4gKwl9Cj4gKwo+ICsJLyogZndfc2l6ZSBpcyBpbiBkd29yZHMsIHNvIG11bHRpcGxpZWQg YnkgNCB0byBjb252ZXJ0IGludG8gYnl0ZXMuICovCj4gKwluYnl0ZXMgPSBkbWNfaGVhZGVyLT5m d19zaXplICogNDsKPiArCWlmIChuYnl0ZXMgPiBDU1JfTUFYX0ZXX1NJWkUpIHsKPiArCQlEUk1f RVJST1IoIkNTUiBmaXJtd2FyZSB0b28gYmlnICgldSkgYnl0ZXNcbiIsIG5ieXRlcyk7Cj4gKwkJ Z290byBvdXQ7Cj4gKwl9Cj4gKwljc3ItPmRtY19md19zaXplID0gZG1jX2hlYWRlci0+Zndfc2l6 ZTsKPiArCj4gKwljc3ItPmRtY19wYXlsb2FkID0ga21hbGxvYyhuYnl0ZXMsIEdGUF9LRVJORUwp Owo+ICsJaWYgKCFjc3ItPmRtY19wYXlsb2FkKSB7Cj4gKwkJRFJNX0VSUk9SKCJNZW1vcnkgYWxs b2NhdGlvbiBmYWlsZWQgZm9yIGRtYyBwYXlsb2FkXG4iKTsKPiArCQlnb3RvIG91dDsKPiArCX0K PiArCj4gKwlkbWNfcGF5bG9hZCA9IGNzci0+ZG1jX3BheWxvYWQ7Cj4gKwlmb3IgKGkgPSAwOyBp IDwgZG1jX2hlYWRlci0+Zndfc2l6ZTsgaSsrKSB7Cj4gKwkJdWludDMyX3QgKnRtcCA9ICh1MzIg KikmZnctPmRhdGFbcmVhZGNvdW50ICsgaSAqIDRdOwo+ICsJCS8qCj4gKwkJICogVGhlIGZpcm13 YXJlIHBheWxvYWQgaXMgYW4gYXJyYXkgb2YgMzIgYml0IHdvcmRzIHN0b3JlZCBpbgo+ICsJCSAq IGxpdHRsZS1lbmRpYW4gZm9ybWF0IGluIHRoZSBmaXJtd2FyZSBpbWFnZSBhbmQgcHJvZ3JhbW1l ZAo+ICsJCSAqIGFzIDMyIGJpdCBiaWctZW5kaWFuIGZvcm1hdCB0byBtZW1vcnkuCj4gKwkJICov Cj4gKwkJZG1jX3BheWxvYWRbaV0gPSBjcHVfdG9fYmUzMigqdG1wKTsKPiArCX0KPiArCj4gKwkv KiBsb2FkIGNzciBwcm9ncmFtIGR1cmluZyBzeXN0ZW0gYm9vdCwgYXMgbmVlZGVkIGZvciBEQyBz dGF0ZXMgKi8KPiArCWludGVsX2Nzcl9sb2FkX3Byb2dyYW0oZGV2KTsKPiArb3V0Ogo+ICsJcmVs ZWFzZV9maXJtd2FyZShmdyk7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfY3NyX3Vjb2RlX2luaXQo c3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBpbnRlbF9jc3IgKmNzciA9 ICZkZXZfcHJpdi0+Y3NyOwo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoIUhBU19DU1IoZGV2KSkK PiArCQlyZXR1cm47Cj4gKwo+ICsJaWYgKElTX1NLWUxBS0UoZGV2KSkKPiArCQljc3ItPmZ3X3Bh dGggPSBJOTE1X0NTUl9TS0w7Cj4gKwllbHNlIHsKPiArCQlEUk1fRVJST1IoIlVuZXhwZWN0ZWQ6 IG5vIGtub3duIENTUiBmaXJtd2FyZSBmb3IgcGxhdGZvcm1cbiIpOwo+ICsJCXJldHVybjsKPiAr CX0KPiArCj4gKwkvKiBDU1Igc3VwcG9ydGVkIGZvciBwbGF0Zm9ybSwgbG9hZCBmaXJtd2FyZSAq Lwo+ICsJcmV0ID0gcmVxdWVzdF9maXJtd2FyZV9ub3dhaXQoVEhJU19NT0RVTEUsIHRydWUsIGNz ci0+ZndfcGF0aCwKPiArCQkJCSZkZXZfcHJpdi0+ZGV2LT5wZGV2LT5kZXYsCj4gKwkJCQlHRlBf S0VSTkVMLCBkZXZfcHJpdiwKPiArCQkJCWZpbmlzaF9jc3JfbG9hZCk7Cj4gKwlpZiAocmV0KQo+ ICsJCWk5MTVfZmlybXdhcmVfbG9hZF9lcnJvcl9wcmludChjc3ItPmZ3X3BhdGgsIHJldCk7Cj4g Kwo+ICt9Cj4gKwo+ICt2b2lkIGludGVsX2Nzcl91Y29kZV9maW5pKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7Cj4gKwo+ICsJaWYgKCFIQVNfQ1NSKGRldikpCj4gKwkJcmV0dXJuOwo+ICsK PiArCWtmcmVlKGRldl9wcml2LT5jc3IuZG1jX3BheWxvYWQpOwo+ICt9Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nzci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfY3NyLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmMyYTVh NTMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3Ny LmgKPiBAQCAtMCwwICsxLDE2NCBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxNCBJbnRl bCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRo aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0 d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsg KiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJq ZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUg bmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Ig c3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBU SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg S0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNI QUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1Ig QU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZS T00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug T1IgT1RIRVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKgo+ICsgKi8KPiAr Cj4gKyNpZm5kZWYgX0lOVEVMX0NTUl9IXwo+ICsjZGVmaW5lIF9JTlRFTF9DU1JfSF8KPiArCj4g KyNkZWZpbmUgSTkxNV9DU1JfU0tMICJpOTE1L2RtY19nZW45LmJpbiIKPiArCj4gK01PRFVMRV9G SVJNV0FSRShJOTE1X0NTUl9TS0wpOwo+ICsKPiArLyoKPiArKiBTS0wgQ1NSIHJlZ2lzdGVycyBm b3IgREM1IGFuZCBEQzYKPiArKi8KPiArI2RlZmluZSBDU1JfUFJPR1JBTV9CQVNFCQkweDgwMDAw Cj4gKyNkZWZpbmUgQ1NSX0hFQURFUl9PRkZTRVQJCTEyOAo+ICsjZGVmaW5lIENTUl9TU1BfQkFT RV9BRERSX0dFTjkJCTB4MDAwMDJGQzAKPiArI2RlZmluZSBDU1JfSFRQX0FERFJfU0tMCQkweDAw NTAwMDM0Cj4gKyNkZWZpbmUgQ1NSX1NTUF9CQVNFCQkJMHg4RjA3NAo+ICsjZGVmaW5lIENTUl9I VFBfU0tMCQkJMHg4RjAwNAo+ICsjZGVmaW5lIENTUl9MQVNUX1dSSVRFCQkJMHg4RjAzNAo+ICsj ZGVmaW5lIENTUl9MQVNUX1dSSVRFX1ZBTFVFCQkweGMwMDNiNDAwCj4gKy8qIE1NSU8gYWRkcmVz cyByYW5nZSBmb3IgQ1NSIHByb2dyYW0gKDB4ODAwMDAgLSAweDgyRkZGKSAqLwo+ICsjZGVmaW5l IENTUl9NQVhfRldfU0laRQkJCTB4MkZGRgo+ICsjZGVmaW5lIENTUl9ERUZBVUxUX0ZXX09GRlNF VAkJMHhGRkZGRkZGRgo+ICsjZGVmaW5lIENTUl9NTUlPX1NUQVJUX1JBTkdFCTB4ODAwMDAKPiAr I2RlZmluZSBDU1JfTU1JT19FTkRfUkFOR0UJCTB4OEZGRkYKPiArCj4gK3N0cnVjdCBpbnRlbF9j c3NfaGVhZGVyIHsKPiArCS8qIDB4MDkgZm9yIERNQyAqLwo+ICsJdWludDMyX3QgbW9kdWxlX3R5 cGU7Cj4gKwo+ICsJLyogSW5jbHVkZXMgdGhlIERNQyBzcGVjaWZpYyBoZWFkZXIgaW4gZHdvcmRz ICovCj4gKwl1aW50MzJfdCBoZWFkZXJfbGVuOwo+ICsKPiArCS8qIGFsd2F5cyB2YWx1ZSB3b3Vs ZCBiZSAweDEwMDAwICovCj4gKwl1aW50MzJfdCBoZWFkZXJfdmVyOwo+ICsKPiArCS8qIE5vdCB1 c2VkICovCj4gKwl1aW50MzJfdCBtb2R1bGVfaWQ7Cj4gKwo+ICsJLyogTm90IHVzZWQgKi8KPiAr CXVpbnQzMl90IG1vZHVsZV92ZW5kb3I7Cj4gKwo+ICsJLyogaW4gWVlZWU1NREQgZm9ybWF0ICov Cj4gKwl1aW50MzJfdCBkYXRlOwo+ICsKPiArCS8qIFNpemUgaW4gZHdvcmRzIChDU1NfSGVhZGVy bGVuICsgUGFja2FnZUhlYWRlckxlbiArIGRtYyBGV3NMZW4pLzQgKi8KPiArCXVpbnQzMl90IHNp emU7Cj4gKwo+ICsJLyogTm90IHVzZWQgKi8KPiArCXVpbnQzMl90IGtleV9zaXplOwo+ICsKPiAr CS8qIE5vdCB1c2VkICovCj4gKwl1aW50MzJfdCBtb2R1bHVzX3NpemU7Cj4gKwo+ICsJLyogTm90 IHVzZWQgKi8KPiArCXVpbnQzMl90IGV4cG9uZW50X3NpemU7Cj4gKwo+ICsJLyogTm90IHVzZWQg Ki8KPiArCXVpbnQzMl90IHJlc2VydmVkMVsxMl07Cj4gKwo+ICsJLyogTWFqb3IgTWlub3IgKi8K PiArCXVpbnQzMl90IHZlcnNpb247Cj4gKwo+ICsJLyogTm90IHVzZWQgKi8KPiArCXVpbnQzMl90 IHJlc2VydmVkMls4XTsKPiArCj4gKwkvKiBOb3QgdXNlZCAqLwo+ICsJdWludDMyX3Qga2VybmVs X2hlYWRlcl9pbmZvOwo+ICt9IF9fcGFja2VkOwo+ICsKPiArc3RydWN0IGludGVsX2Z3X2luZm8g ewo+ICsJdWludDE2X3QgcmVzZXJ2ZWQxOwo+ICsKPiArCS8qIFN0ZXBwaW5nIChBLCBCLCBDLCAu Li4sICopLiAqIGlzIGEgd2lsZGNhcmQgKi8KPiArCWNoYXIgc3RlcHBpbmc7Cj4gKwo+ICsJLyog U3ViLXN0ZXBwaW5nICgwLCAxLCAuLi4sICopLiAqIGlzIGEgd2lsZGNhcmQgKi8KPiArCWNoYXIg c3Vic3RlcHBpbmc7Cj4gKwo+ICsJdWludDMyX3Qgb2Zmc2V0Owo+ICsJdWludDMyX3QgcmVzZXJ2 ZWQyOwo+ICt9IF9fcGFja2VkOwo+ICsKPiArc3RydWN0IGludGVsX3BhY2thZ2VfaGVhZGVyIHsK PiArCS8qIERNQyBjb250YWluZXIgaGVhZGVyIGxlbmd0aCBpbiBkd29yZHMgKi8KPiArCXVuc2ln bmVkIGNoYXIgaGVhZGVyX2xlbjsKPiArCj4gKwkvKiBhbHdheXMgdmFsdWUgd291bGQgYmUgMHgw MSAqLwo+ICsJdW5zaWduZWQgY2hhciBoZWFkZXJfdmVyOwo+ICsKPiArCXVuc2lnbmVkIGNoYXIg cmVzZXJ2ZWRbMTBdOwo+ICsKPiArCS8qIE51bWJlciBvZiB2YWxpZCBlbnRyaWVzIGluIHRoZSBG V0luZm8gYXJyYXkgYmVsb3cgKi8KPiArCXVpbnQzMl90IG51bV9lbnRyaWVzOwo+ICsKPiArCXN0 cnVjdCBpbnRlbF9md19pbmZvIGZ3X2luZm9bMjBdOwo+ICt9IF9fcGFja2VkOwo+ICsKPiArc3Ry dWN0IGludGVsX2RtY19oZWFkZXIgewo+ICsJLyogYWx3YXlzIHZhbHVlIHdvdWxkIGJlIDB4NDA0 MDNFM0UgKi8KPiArCXVpbnQzMl90IHNpZ25hdHVyZTsKPiArCj4gKwkvKiBETUMgYmluYXJ5IGhl YWRlciBsZW5ndGggKi8KPiArCXVuc2lnbmVkIGNoYXIgaGVhZGVyX2xlbjsKPiArCj4gKwkvKiAw eDAxICovCj4gKwl1bnNpZ25lZCBjaGFyIGhlYWRlcl92ZXI7Cj4gKwo+ICsJLyogUmVzZXJ2ZWQg Ki8KPiArCXVpbnQxNl90IGRtY2NfdmVyOwo+ICsKPiArCS8qIE1ham9yLCBNaW5vciAqLwo+ICsJ dWludDMyX3QJcHJvamVjdDsKPiArCj4gKwkvKiBGaXJtd2FyZSBwcm9ncmFtIHNpemUgKGV4Y2x1 ZGluZyBoZWFkZXIpIGluIGR3b3JkcyAqLwo+ICsJdWludDMyX3QJZndfc2l6ZTsKPiArCj4gKwkv KiBNYWpvciBNaW5vciB2ZXJzaW9uICovCj4gKwl1aW50MzJfdCBmd192ZXJzaW9uOwo+ICsKPiAr CS8qIE51bWJlciBvZiB2YWxpZCBNTUlPIGN5Y2xlcyBwcmVzZW50LiAqLwo+ICsJdWludDMyX3Qg bW1pb19jb3VudDsKPiArCj4gKwkvKiBNTUlPIGFkZHJlc3MgKi8KPiArCXVpbnQzMl90IG1taW9h ZGRyWzhdOwo+ICsKPiArCS8qIE1NSU8gZGF0YSAqLwo+ICsJdWludDMyX3QgbW1pb2RhdGFbOF07 Cj4gKwo+ICsJLyogRlcgZmlsZW5hbWUgICovCj4gKwl1bnNpZ25lZCBjaGFyIGRmaWxlWzMyXTsK PiArCj4gKwl1aW50MzJfdCByZXNlcnZlZDFbMl07Cj4gK30gX19wYWNrZWQ7Cj4gKwo+ICtzdHJ1 Y3Qgc3RlcHBpbmdfaW5mbyB7Cj4gKwljaGFyIHN0ZXBwaW5nOwo+ICsJY2hhciBzdWJzdGVwcGlu ZzsKPiArfSBfX3BhY2tlZDsKCnN0ZXBwaW5nX2luZm8gZG9lc24ndCBuZWVkIHRvIGJlIHBhY2tl ZC4KCldoYXQgSSBtZWFudCBpcyB0byBhZGQgYWxsIHRoZXNlIHRvIGludGVsX2Nzci5jLiBJIGRv bid0IHRoaW5rIHRoZXJlIGlzCmFueSByZWFzb24gZm9yIGEgbmV3IGhlYWRlciBmaWxlIHVubGVz cyB5b3UgbmVlZCB0byBzaGFyZSBzb21ldGhpbmcKYW1vbmcgbXVsdGlwbGUgLmMgbW9kdWxlcy4K Ci0tSW1yZQoKPiArCj4gKwo+ICsjZW5kaWYgLyogX0lOVEVMX0NTUl9IXyAqLwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCj4gaW5kZXggN2EwYWEyNC4uZjNhMmQ4OCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCj4gQEAgLTEwNjIsNiArMTA2MiwxMSBAQCB2b2lkIGludGVsX21vZGVz ZXRfcHJlY2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxl KTsKPiAgdW5zaWduZWQgbG9uZyBpbnRlbF9wbGFuZV9vYmpfb2Zmc2V0KHN0cnVjdCBpbnRlbF9w bGFuZSAqaW50ZWxfcGxhbmUsCj4gIAkJCQkgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmopOwo+ICAKPiArLyogaW50ZWxfY3NyLmMgKi8KPiArdm9pZCBpbnRlbF9jc3JfdWNvZGVf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiArdm9pZCBpbnRlbF9jc3JfbG9hZF9wcm9n cmFtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICt2b2lkIGludGVsX2Nzcl91Y29kZV9maW5p KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICsKPiAgLyogaW50ZWxfZHAuYyAqLwo+ICB2b2lk IGludGVsX2RwX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IG91dHB1dF9yZWcsIGVu dW0gcG9ydCBwb3J0KTsKPiAgYm9vbCBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=