From mboxrd@z Thu Jan 1 00:00:00 1970 From: Animesh Manna Subject: Re: [PATCH v3 1/8] drm/i915/skl: Add support to load SKL CSR firmware Date: Mon, 13 Apr 2015 18:37:22 +0530 Message-ID: <552BBF8A.9070007@intel.com> References: <1428678670-11258-1-git-send-email-animesh.manna@intel.com> <1428920642-23712-1-git-send-email-animesh.manna@intel.com> <1428923030.29827.33.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 6F2996E3BF for ; Mon, 13 Apr 2015 05:11:55 -0700 (PDT) In-Reply-To: <1428923030.29827.33.camel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: imre.deak@intel.com Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiAwNC8xMy8yMDE1IDA0OjMzIFBNLCBJbXJlIERlYWsgd3JvdGU6Cj4gT24gbWEsIDIwMTUt MDQtMTMgYXQgMTU6NTQgKzA1MzAsIEFuaW1lc2ggTWFubmEgd3JvdGU6Cj4+IEZyb206ICJBLlN1 bmlsIEthbWF0aCIgPHN1bmlsLmthbWF0aEBpbnRlbC5jb20+Cj4+Cj4+IERpc3BsYXkgQ29udGV4 dCBTYXZlIGFuZCBSZXN0b3JlIHN1cHBvcnQgaXMgbmVlZGVkIGZvcgo+PiB2YXJpb3VzIFNLTCBE aXNwbGF5IEMgc3RhdGVzIGxpa2UgREM1LCBEQzYuCj4+Cj4+IFRoaXMgaW1wbGVtZW50YXRpb24g aXMgYWRkZWQgYmFzZWQgb24gZmlyc3QgdmVyc2lvbiBvZiBETUMgQ1NSIHByb2dyYW0KPj4gdGhh dCB3ZSByZWNlaXZlZCBmcm9tIGgvdyB0ZWFtLgo+Pgo+PiBIZXJlIHdlIGFyZSB1c2luZyByZXF1 ZXN0X2Zpcm13YXJlIGJhc2VkIGRlc2lnbi4KPj4gRmluYWxseSB0aGlzIGZpcm13YXJlIHNob3Vs ZCBlbmQgdXAgaW4gbGludXgtZmlybXdhcmUgdHJlZS4KPj4KPj4gRm9yIFNLTCBwbGF0Zm9ybSBp dHMgbWFuZGF0b3J5IHRvIGVuc3VyZSB0aGF0IHdlIGxvYWQgdGhpcwo+PiBjc3IgcHJvZ3JhbSBi ZWZvcmUgZW5hYmxpbmcgREMgc3RhdGVzIGxpa2UgREM1L0RDNi4KPj4KPj4gQXMgQ1NSIHByb2dy YW0gZ2V0cyByZXNldCBvbiB2YXJpb3VzIGNvbmRpdGlvbnMsIHdlIHNob3VsZCBlbnN1cmUKPj4g dG8gbG9hZCBpdCBkdXJpbmcgYm9vdCBhbmQgaW4gZnV0dXJlIGNoYW5nZSB0byBiZSBhZGRlZCB0 byBsb2FkCj4+IHRoaXMgc3lzdGVtIHJlc3VtZSBzZXF1ZW5jZSB0b28uCj4+Cj4+IHYxOiBJbml0 aWFsIHJlbGVzZSBhcyBSRkMgcGF0Y2gKPj4KPj4gdjI6IERlc2lnbiBjaGFuZ2UgYXMgcGVyIERh bmllbCwgRGFtaWVuIGFuZCBTaG9iaXQncyByZXZpZXcgY29tbWVudHMKPj4gcmVxdWVzdCBmaXJt d2FyZSBtZXRob2QgZm9sbG93ZWQuCj4+Cj4+IHYzOiBTb21lIG9wdGltaXphdGlvbiBhbmQgZnVu Y3Rpb25hbCBjaGFuZ2VzLgo+PiBQdWxsZWQgcmVnaXN0ZXIgZGVmaW5lcyBpbnRvIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPj4gVXNlZCBrbWVtZHVwIHRvIGFsbG9jYXRlIGFuZCBk dXBsaWNhdGUgZmlybXdhcmUgY29udGVudC4KPj4gRW5zdXJlZCB0byBmcmVlIGFsbG9jYXRlZCBi dWZmZXIuCj4+Cj4+IHY0OiBNb2RpZmllZCBhcyBwZXIgcmV2aWV3IGNvbW1lbnRzIGZyb20gU2F0 aGVlc2ggYW5kIERhbmllbAo+PiBSZW1vdmVkIHRlbXBvcmFyeSBidWZmZXIuCj4+IE9wdGltaXpl ZCBudW1iZXIgb2Ygd3JpdGVzIGJ5IHJlcGxhY2luZyBJOTE1X1dSSVRFIHdpdGggSTkxNV9XUklU RTY0Lgo+Pgo+PiB2NToKPj4gTW9kaWZpZWQgYXMgcGVyIHJldmlldyBjb21lbW50cyBmcm9tIERh bWllbi4KPj4gLSBDaGFuZ2VkIG5hbWUgZm9yIGZ1bmN0aW9ucyBhbmQgZmlybXdhcmUuCj4+IC0g SW50cm9kdWNlZCBIQVNfQ1NSLgo+PiAtIFJldmVydGVkIGJhY2sgcHJldmlvdXMgY2hhbmdlIGFu ZCB1c2VkIGNzcl9idWYgd2l0aCB1OCBzaXplLgo+PiAtIFVzaW5nIGNwdV90b19iZTY0IGZvciBl bmRpYW5uZXNzIGNoYW5nZS4KPj4KPj4gTW9kaWZpZWQgYXMgcGVyIHJldmlldyBjb21tZW50cyBm cm9tIEltcmUuCj4+IC0gTW9kaWZpZWQgcmVnaXN0ZXJzIGFuZCBtYWNybyBuYW1lcyB0byBiZSBh IGJpdCBjbG9zZXIgdG8gYnNwZWMgdGVybWlub2xvZ3kKPj4gYW5kIHRoZSBleGlzdGluZyByZWdp c3RlciBuYW1pbmcgaW4gdGhlIGRyaXZlci4KPj4gLSBFYXJseSByZXR1cm4gZm9yIG5vbiBTS0wg cGxhdGZvcm1zIGluIGludGVsX2xvYWRfY3NyX3Byb2dyYW0gZnVuY3Rpb24uCj4+IC0gQWRkZWQg bG9ja2luZyBhcm91bmQgQ1NSIHByb2dyYW0gbG9hZCBmdW5jdGlvbiBhcyBpdCBtYXkgYmUgY2Fs bGVkCj4+IGNvbmN1cnJlbnRseSBkdXJpbmcgc3lzdGVtL3J1bnRpbWUgcmVzdW1lLgo+PiAtIFJl bGVhc2luZyB0aGUgZncgYmVmb3JlIGxvYWRpbmcgdGhlIHByb2dyYW0gZm9yIGNvbnNpc3RlbmN5 Cj4+IC0gSGFuZGxlZCBlcnJvciBwYXRoIGR1cmluZyBmL3cgbG9hZC4KPj4KPj4gdjY6IE1vZGlm aWVkIGFzIHBlciByZXZpZXcgY29tbWVudHMgZnJvbSBJbXJlLgo+PiAtIENvcnJlY3RlZCBvdXRf ZnJlZWNzciBzZXF1ZW5jZS4KPj4KPj4gdjc6IE1vZGlmaWVkIGFzIHBlciByZXZpZXcgY29tbWVu dHMgZnJvbSBJbXJlLgo+PiBGYWlsIGxvYWRpbmcgZncgaWYgZnctPnNpemUlOCE9MC4KPj4KPj4g djg6IFJlYmFzZSB0byBsYXRlc3QuCj4+Cj4+IHY5OiBSZWJhc2Ugb24gdG9wIG9mIC1uaWdodGx5 IChEYW1pZW4pCj4+Cj4+IHYxMDogRW5hYmxlZCBzdXBwb3J0IGZvciBkbWMgZmlybXdhcmUgdmVy IDEuMC4KPj4gQWNjb3JkaW5nIHRvIHZlciAxLjAgaW4gYSBzaW5nbGUgYmluYXJ5IHBhY2thZ2Ug YWxsIHRoZSBmaXJtd2FyZSdzIHRoYXQgYXJlCj4+IHJlcXVpcmVkIGZvciBkaWZmZXJlbnQgc3Rl cHBpbmcncyBvZiB0aGUgcHJvZHVjdCB3aWxsIGJlIHN0b3JlZC4gVGhlIHBhY2thZ2UKPj4gY29u dGFpbnMgdGhlIGNzcyBoZWFkZXIsIGZvbGxvd2VkIGJ5IHRoZSBwYWNrYWdlIGhlYWRlciBhbmQg dGhlIGFjdHVhbCBkbWMKPj4gZmlybXdhcmVzLiBQYWNrYWdlIGhlYWRlciBjb250YWlucyB0aGUg ZmlybXdhcmUvc3RlcHBpbmcgbWFwcGluZyB0YWJsZSBhbmQKPj4gdGhlIGNvcnJlc3BvbmRpbmcg ZmlybXdhcmUgb2Zmc2V0cyB0byB0aGUgaW5kaXZpZHVhbCBiaW5hcmllcywgd2l0aGluIHRoZQo+ PiBwYWNrYWdlLiBFYWNoIGluZGl2aWR1YWwgcHJvZ3JhbSBiaW5hcnkgY29udGFpbnMgdGhlIGhl YWRlciBhbmQgdGhlIHBheWxvYWQKPj4gc2VjdGlvbnMgd2hvc2Ugc2l6ZSBpcyBzcGVjaWZpZWQg aW4gdGhlIGhlYWRlciBzZWN0aW9uLiBUaGlzIGNoYW5nZXMgYXJlIGRvbmUKPj4gdG8gZXh0cmFj dCB0aGUgc3BlY2lmaWMgZmlybWF3YXJlIGZyb20gdGhlIHBhY2thZ2UuIChBbmltZXNoKQo+Pgo+ PiB2MTE6IE1vZGlmaWVkIGFzIHBlciByZXZpZXcgY29tZW1udHMgZnJvbSBJbXJlLgo+PiAtIEFk ZGVkIGNvZGUgY29tbWVudCBmcm9tIGJwZWMgZm9yIGhlYWRlciBzdHJ1Y3R1cmUgZWxlbWVudHMu Cj4+IC0gQWRkZWQgX19wYWNrZWQgdG8gYXZvaWQgc3RydWN0dXJlIHBhZGRpbmcuCj4+IC0gQWRk ZWQgaGVscGVyIGZ1bmN0aW9ucyBmb3Igc3RlcHBpbmcgYW5kIHN1YnN0ZXBwaW5nIGluZm8uCj4+ IC0gQWRkZWQgY29kZSBjb21tZW50IGZvciBDU1JfTUFYX0ZXX1NJWkUuCj4+IC0gRGlzYWJsZWQg QlhUIGZpcm13YXJlIGxvYWRpbmcsIHdpbGwgYmUgZW5hYmxlZCB3aXRoIGRtYyAxLjAgc3VwcG9y dC4KPj4gLSBDaGFuZ2VkIHNrbF9zdGVwcGluZ19pbmZvIGJhc2VkIG9uIGJzcGVjLCBlYXJsaWVy IHVzZWQgZnJvbSBjb25maWcgREIuCj4+IC0gUmVtb3ZlZCBkdXBsaWNhdGUgY2FsbCBvZiBjcHVf dG9fYmUqIGZyb20gaW50ZWxfY3NyX2xvYWRfcHJvZ3JhbSBmdW5jdGlvbi4KPj4gLSBVc2VkIGNw dV90b19iZTMyIGluc3RlYWQgb2YgY3B1X3RvX2JlNjQgYXMgZmlybXdhcmUgYmluYXJ5IGluIGR3 b3JkIGFsaWduZWQuCj4+IC0gQWRkZWQgc2FuaXR5IGNoZWNrIGZvciBoZWFkZXIgbGVuZ3RoLgo+ PiAtIEFkZGVkIHNhbml0eSBjaGVjayBmb3IgbW1pbyBhZGRyZXNzIGdvdCBmcm9tIGZpcm13YXJl IGJpbmFyeS4KPj4gLSBrbWFsbG9jIGRvbmUgc2VwYXJhdGVseSBmb3IgZG1jIGhlYWRlciBhbmQg ZG1jIGZpcm13YXJlLiAoQW5pbWVzaCkKPj4KPj4gdjEyOiBNb2RpZmllZCBhcyBwZXIgcmV2aWV3 IGNvbWVtbnRzIGZyb20gSW1yZS4KPj4gLSBDb3JyZWN0ZWQgdGhlIHR5cG8gZXJyb3IgaW4gc2ts IHN0ZXBwaW5nIGluZm8gc3RydWN0dXJlLgo+PiAtIEFkZGVkIG91dC1vZi1ib3VuZCBhY2Nlc3Mg Zm9yIHNrbF9zdGVwcGluZ19pbmZvLgo+PiAtIFNhbml0eSBjaGVjayBmb3IgbW1pbyBhZGRyZXNz IG1vZGlmaWVkLgo+PiAtIFNhbml0eSBjaGVjayBhZGRlZCBmb3Igc3RlcHBpbmcgYW5kIHN1YnN0 ZXBwaWcuCj4+IC0gTW9kaWZpZWQgdGhlIGludGVsX2RtY19pbmZvIHN0cnVjdHVyZSwgY2FjaGUg b25seSB0aGUgcmVxdWlyZWQgaGVhZGVyIGluZm8uIChBbmltZXNoKQo+Pgo+PiB2MTM6IGNsYXJp ZnkgZmlybXdhcmUgbG9hZCBlcnJvciBtZXNzYWdlLgo+PiBUaGUgcmVhc29uIGZvciBhIGZpcm13 YXJlIGxvYWRpbmcgZmFpbHVyZSBjYW4gYmUgb2JzY3VyZSBpZiB0aGUgZHJpdmVyCj4+IGlzIGJ1 aWx0LWluLiBQcm92aWRlIGFuIGV4cGxhbmF0aW9uIHRvIHRoZSB1c2VyIGFib3V0IHRoZSBsaWtl bHkgcmVhc29uIGZvcgo+PiB0aGUgZmFpbHVyZSBhbmQgaG93IHRvIHJlc29sdmUgaXQuIChJbXJl KQo+Pgo+PiB2MTQ6IFN1Z2dlc3RlZCBieSBKYW5pLgo+PiAtIGZpeCBzL0k5MTUvQ09ORklHX0RS TV9JOTE1LyB0eXBvCj4+IC0gYWRkIGZ3X3BhdGggdG8gdGhlIGZpcm13YXJlIG9iamVjdCBpbnN0 ZWFkIG9mIHVzaW5nIGEgc3RhdGljIHB0ciAoSmFuaSkKPj4KPj4gdjE1Ogo+PiAxKSBDaGFuZ2Vk IHRoZSBmaXJtd2FyZSBuYW1lIGFzIGRtY19nZW45LmJpbiwgZXZlcnl0aW1lIGZvciBhIG5ldyBm aXJtd2FyZSB2ZXJzaW9uIGEgc3ltYm9saWMgbGluawo+PiB3aXRoIHNhbWUgbmFtZSB3aWxsIGhl bHAgbm90IHRvIGJ1aWxkIGtlcm5lbCBhZ2Fpbi4KPj4gMikgQ2hhbmdlcyBkb25lIGFzIHBlciBy ZXZpZXcgY29tbWVudHMgZnJvbSBJbXJlLgo+PiAtIEVycm9yIGNoZWNrIHJlbW92ZWQgZm9yIGlu dGVsX2Nzcl91Y29kZV9pbml0Lgo+PiAtIE1vdmVkIGNzci1zcGVjaWZpYyBkYXRhIHN0cnVjdHVy ZSB0byBpbnRlbF9jc3IuaCBhbmQgb3B0aW1pemF0aW9uIGRvbmUgb24gc3RydWN0dXJlIGRlZmlu aXRpb24uCj4+IC0gZnctPmRhdGEgdXNlZCBkaXJlY3RseSBmb3IgcGFyc2luZyB0aGUgaGVhZGVy IGluZm8gJiBtZW1vcnkgYWxsb2NhdGlvbgo+PiBvbmx5IGRvbmUgc2VwYXJhdGVseSBmb3IgcGF5 bG9hZC4gKEFuaW1lc2gpCj4+Cj4+IHYxNjoKPj4gTm8gbmVlZCBmb3Igb3V0X3JlZ3MgbGFiZWwg aW4gaTkxNV9kcml2ZXJfbG9hZCgpLCBzbyByZW1vdmVkIGl0LiAoQW5pbWVzaCkKPj4KPj4gSXNz dWU6IFZJWi0yNTY5Cj4+IFNpZ25lZC1vZmYtYnk6IEEuU3VuaWwgS2FtYXRoIDxzdW5pbC5rYW1h dGhAaW50ZWwuY29tPgo+PiBTaWduZWQtb2ZmLWJ5OiBEYW1pZW4gTGVzcGlhdSA8ZGFtaWVuLmxl c3BpYXVAaW50ZWwuY29tPgo+PiBTaWduZWQtb2ZmLWJ5OiBBbmltZXNoIE1hbm5hIDxhbmltZXNo Lm1hbm5hQGludGVsLmNvbT4KPj4gU2lnbmVkLW9mZi1ieTogSW1yZSBEZWFrIDxpbXJlLmRlYWtA aW50ZWwuY29tPgo+PiAtLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICB8 ICAgMyArLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgIHwgIDExICstCj4+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgfCAgMjAgKysrKwo+PiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggIHwgIDE3ICsrKwo+PiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Nzci5jIHwgMjM0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nzci5oIHwgMTY0ICsrKysr KysrKysrKysrKysrKysrKysrKysrKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oIHwgICA1ICsKPj4gICA3IGZpbGVzIGNoYW5nZWQsIDQ1MSBpbnNlcnRpb25zKCspLCAzIGRl bGV0aW9ucygtKQo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9jc3IuYwo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9jc3IuaAo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZp bGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+PiBpbmRleCBhNjkwMDJlLi41MjM4 ZGViIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+PiBAQCAtMTIsNyArMTIsOCBAQCBpOTE1 LXkgOj0gaTkxNV9kcnYubyBcCj4+ICAgICAgICAgICAgIGk5MTVfc3VzcGVuZC5vIFwKPj4gICAJ ICBpOTE1X3N5c2ZzLm8gXAo+PiAgIAkgIGludGVsX3BtLm8gXAo+PiAtCSAgaW50ZWxfcnVudGlt ZV9wbS5vCj4+ICsJICBpbnRlbF9ydW50aW1lX3BtLm8gXAo+PiArCSAgaW50ZWxfY3NyLm8KPj4g ICAKPj4gICBpOTE1LSQoQ09ORklHX0NPTVBBVCkgICArPSBpOTE1X2lvYzMyLm8KPj4gICBpOTE1 LSQoQ09ORklHX0RFQlVHX0ZTKSArPSBpOTE1X2RlYnVnZnMubwo+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZG1hLmMKPj4gaW5kZXggZTQ0MTE2Zi4uYTIzODg4OSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RtYS5jCj4+IEBAIC04MTYsNiArODE2LDcgQEAgaW50IGk5MTVfZHJpdmVyX2xvYWQoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBmbGFncykKPj4gICAJc3Bpbl9sb2NrX2lu aXQoJmRldl9wcml2LT5tbWlvX2ZsaXBfbG9jayk7Cj4+ICAgCW11dGV4X2luaXQoJmRldl9wcml2 LT5kcGlvX2xvY2spOwo+PiAgIAltdXRleF9pbml0KCZkZXZfcHJpdi0+bW9kZXNldF9yZXN0b3Jl X2xvY2spOwo+PiArCW11dGV4X2luaXQoJmRldl9wcml2LT5jc3JfbG9jayk7Cj4+ICAgCj4+ICAg CWludGVsX3BtX3NldHVwKGRldik7Cj4+ICAgCj4+IEBAIC04NjEsOSArODYyLDEyIEBAIGludCBp OTE1X2RyaXZlcl9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZmxh Z3MpCj4+ICAgCj4+ICAgCWludGVsX3VuY29yZV9pbml0KGRldik7Cj4+ICAgCj4+ICsJLyogTG9h ZCBDU1IgRmlybXdhcmUgZm9yIFNLTCAqLwo+PiArCWludGVsX2Nzcl91Y29kZV9pbml0KGRldik7 Cj4+ICsKPj4gICAJcmV0ID0gaTkxNV9nZW1fZ3R0X2luaXQoZGV2KTsKPj4gICAJaWYgKHJldCkK Pj4gLQkJZ290byBvdXRfcmVnczsKPj4gKwkJZ290byBvdXRfZnJlZWNzcjsKPj4gICAKPj4gICAJ LyogV0FSTklORzogQXBwYXJlbnRseSB3ZSBtdXN0IGtpY2sgZmJkZXYgZHJpdmVycyBiZWZvcmUg dmdhY29uLAo+PiAgIAkgKiBvdGhlcndpc2UgdGhlIHZnYSBmYmRldiBkcml2ZXIgZmFsbHMgb3Zl ci4gKi8KPj4gQEAgLTEwMzMsNyArMTAzNyw4IEBAIG91dF9tdHJyZnJlZToKPj4gICAJaW9fbWFw cGluZ19mcmVlKGRldl9wcml2LT5ndHQubWFwcGFibGUpOwo+PiAgIG91dF9ndHQ6Cj4+ICAgCWk5 MTVfZ2xvYmFsX2d0dF9jbGVhbnVwKGRldik7Cj4+IC1vdXRfcmVnczoKPj4gK291dF9mcmVlY3Ny Ogo+PiArCWludGVsX2Nzcl91Y29kZV9maW5pKGRldik7Cj4+ICAgCWludGVsX3VuY29yZV9maW5p KGRldik7Cj4+ICAgCXBjaV9pb3VubWFwKGRldi0+cGRldiwgZGV2X3ByaXYtPnJlZ3MpOwo+PiAg IHB1dF9icmlkZ2U6Cj4+IEBAIC0xMTEzLDYgKzExMTgsOCBAQCBpbnQgaTkxNV9kcml2ZXJfdW5s b2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICAgCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1 Y3RfbXV0ZXgpOwo+PiAgIAlpOTE1X2dlbV9jbGVhbnVwX3N0b2xlbihkZXYpOwo+PiAgIAo+PiAr CWludGVsX2Nzcl91Y29kZV9maW5pKGRldik7Cj4+ICsKPj4gICAJaW50ZWxfdGVhcmRvd25fZ21i dXMoZGV2KTsKPj4gICAJaW50ZWxfdGVhcmRvd25fbWNoYmFyKGRldik7Cj4+ICAgCj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuYwo+PiBpbmRleCBjM2ZkYmIwLi5hY2QwZTJiIDEwMDY0NAo+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMKPj4gQEAgLTU1Niw2ICs1NTYsMjYgQEAgdm9pZCBpbnRlbF9ocGRf Y2FuY2VsX3dvcmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIAljYW5j ZWxfZGVsYXllZF93b3JrX3N5bmMoJmRldl9wcml2LT5ob3RwbHVnX3JlZW5hYmxlX3dvcmspOwo+ PiAgIH0KPj4gICAKPj4gK3ZvaWQgaTkxNV9maXJtd2FyZV9sb2FkX2Vycm9yX3ByaW50KGNvbnN0 IGNoYXIgKmZ3X3BhdGgsIGludCBlcnIpCj4+ICt7Cj4+ICsJRFJNX0VSUk9SKCJmYWlsZWQgdG8g bG9hZCBmaXJtd2FyZSAlcyAoJWQpXG4iLCBmd19wYXRoLCBlcnIpOwo+PiArCj4+ICsJLyoKPj4g KwkgKiBJZiB0aGUgcmVhc29uIGlzIG5vdCBrbm93biBhc3N1bWUgLUVOT0VOVCBzaW5jZSB0aGF0 J3MgdGhlIG1vc3QKPj4gKwkgKiB1c3VhbCBmYWlsdXJlIG1vZGUuCj4+ICsJICovCj4+ICsJaWYg KCFlcnIpCj4+ICsJCWVyciA9IC1FTk9FTlQ7Cj4+ICsKPj4gKwlpZiAoIShJU19CVUlMVElOKENP TkZJR19EUk1fSTkxNSkgJiYgZXJyID09IC1FTk9FTlQpKQo+PiArCQlyZXR1cm47Cj4+ICsKPj4g KwlEUk1fRVJST1IoCj4+ICsJICAiVGhlIGRyaXZlciBpcyBidWlsdC1pbiwgc28gdG8gbG9hZCB0 aGUgZmlybXdhcmUgeW91IG5lZWQgdG9cbiIKPj4gKwkgICJpbmNsdWRlIGl0IGVpdGhlciBpbiB0 aGUga2VybmVsIChzZWUgQ09ORklHX0VYVFJBX0ZJUk1XQVJFKSBvclxuIgo+PiArCSAgImluIHlv dXIgaW5pdHJkL2luaXRyYW1mcyBpbWFnZS5cbiIpOwo+PiArfQo+PiArCj4+ICAgc3RhdGljIHZv aWQgaW50ZWxfc3VzcGVuZF9lbmNvZGVycyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4+ICAgewo+PiAgIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsK Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+IGluZGV4IDQ3YmU0YTUuLjkwZTQ3YTkgMTAwNjQ0 Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiBAQCAtNjY3LDYgKzY2NywxNSBAQCBzdHJ1Y3Qg aW50ZWxfdW5jb3JlIHsKPj4gICAjZGVmaW5lIGZvcl9lYWNoX2Z3X2RvbWFpbihkb21haW5fXywg ZGV2X3ByaXZfXywgaV9fKSBcCj4+ICAgCWZvcl9lYWNoX2Z3X2RvbWFpbl9tYXNrKGRvbWFpbl9f LCBGT1JDRVdBS0VfQUxMLCBkZXZfcHJpdl9fLCBpX18pCj4+ICAgCj4+ICtzdHJ1Y3QgaW50ZWxf Y3NyIHsKPj4gKwljb25zdCBjaGFyICpmd19wYXRoOwo+PiArCV9fYmUzMiAqZG1jX3BheWxvYWQ7 Cj4+ICsJdWludDMyX3QgZG1jX2Z3X3NpemU7Cj4+ICsJdWludDMyX3QgbW1pb19jb3VudDsKPj4g Kwl1aW50MzJfdCBtbWlvYWRkcls4XTsKPj4gKwl1aW50MzJfdCBtbWlvZGF0YVs4XTsKPj4gK307 Cj4+ICsKPj4gICAjZGVmaW5lIERFVl9JTkZPX0ZPUl9FQUNIX0ZMQUcoZnVuYywgc2VwKSBcCj4+ ICAgCWZ1bmMoaXNfbW9iaWxlKSBzZXAgXAo+PiAgIAlmdW5jKGlzX2k4NXgpIHNlcCBcCj4+IEBA IC0xNTczLDYgKzE1ODIsMTEgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+PiAgIAo+PiAg IAlzdHJ1Y3QgaTkxNV92aXJ0dWFsX2dwdSB2Z3B1Owo+PiAgIAo+PiArCXN0cnVjdCBpbnRlbF9j c3IgY3NyOwo+PiArCj4+ICsJLyogRGlzcGxheSBDU1ItcmVsYXRlZCBwcm90ZWN0aW9uICovCj4+ ICsJc3RydWN0IG11dGV4IGNzcl9sb2NrOwo+PiArCj4+ICAgCXN0cnVjdCBpbnRlbF9nbWJ1cyBn bWJ1c1tHTUJVU19OVU1fUElOU107Cj4+ICAgCj4+ICAgCS8qKiBnbWJ1c19tdXRleCBwcm90ZWN0 cyBhZ2FpbnN0IGNvbmN1cnJlbnQgdXNhZ2Ugb2YgdGhlIHNpbmdsZSBodyBnbWJ1cwo+PiBAQCAt MjQyNSw2ICsyNDM5LDggQEAgc3RydWN0IGRybV9pOTE1X2NtZF90YWJsZSB7Cj4+ICAgI2RlZmlu ZSBIQVNfUkM2KGRldikJCShJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2KQo+PiAgICNkZWZpbmUg SEFTX1JDNnAoZGV2KQkJKElOVEVMX0lORk8oZGV2KS0+Z2VuID09IDYgfHwgSVNfSVZZQlJJREdF KGRldikpCj4+ICAgCj4+ICsjZGVmaW5lIEhBU19DU1IoZGV2KQkoSVNfU0tZTEFLRShkZXYpKQo+ PiArCj4+ICAgI2RlZmluZSBJTlRFTF9QQ0hfREVWSUNFX0lEX01BU0sJCTB4ZmYwMAo+PiAgICNk ZWZpbmUgSU5URUxfUENIX0lCWF9ERVZJQ0VfSURfVFlQRQkJMHgzYjAwCj4+ICAgI2RlZmluZSBJ TlRFTF9QQ0hfQ1BUX0RFVklDRV9JRF9UWVBFCQkweDFjMDAKPj4gQEAgLTI1MTUsNiArMjUzMSw3 IEBAIGV4dGVybiB1bnNpZ25lZCBsb25nIGk5MTVfZ2Z4X3ZhbChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpOwo+PiAgIGV4dGVybiB2b2lkIGk5MTVfdXBkYXRlX2dmeF92YWwoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPj4gICBpbnQgdmx2X2ZvcmNlX2dmeF9j bG9jayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgb24pOwo+PiAgIHZv aWQgaW50ZWxfaHBkX2NhbmNlbF93b3JrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7Cj4+ICt2b2lkIGk5MTVfZmlybXdhcmVfbG9hZF9lcnJvcl9wcmludChjb25zdCBjaGFyICpm d19wYXRoLCBpbnQgZXJyKTsKPj4gICAKPj4gICAvKiBpOTE1X2lycS5jICovCj4+ICAgdm9pZCBp OTE1X3F1ZXVlX2hhbmdjaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nzci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfY3NyLmMKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMC4u YWI5YjE2Ygo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Nzci5jCj4+IEBAIC0wLDAgKzEsMjM0IEBACj4+ICsvKgo+PiArICogQ29weXJpZ2h0IMKp IDIwMTQgSW50ZWwgQ29ycG9yYXRpb24KPj4gKyAqCj4+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVi eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+PiAr ICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls ZXMgKHRoZSAiU29mdHdhcmUiKSwKPj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPj4gKyAqIHRoZSBy aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBz dWJsaWNlbnNlLAo+PiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5k IHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNo ZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+PiArICoK Pj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90 aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVk ZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPj4gKyAqIFNv ZnR3YXJlLgo+PiArICoKPj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4+ICsgKiBJTVBMSUVELCBJ TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ TElUWSwKPj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS SU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+PiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJ R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPj4g KyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Ig T1RIRVJXSVNFLCBBUklTSU5HCj4+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4+ICsgKiBJTiBU SEUgU09GVFdBUkUuCj4+ICsgKgo+PiArICovCj4+ICsjaW5jbHVkZSA8bGludXgvZmlybXdhcmUu aD4KPj4gKyNpbmNsdWRlICJpOTE1X2Rydi5oIgo+PiArI2luY2x1ZGUgImk5MTVfcmVnLmgiCj4+ ICsjaW5jbHVkZSAiaW50ZWxfY3NyLmgiCj4+ICsKPj4gK3N0YXRpYyBzdHJ1Y3Qgc3RlcHBpbmdf aW5mbyBza2xfc3RlcHBpbmdfaW5mb1tdID0gewo+IE5pdHBpY2s6IHRoaXMgc2hvdWxkIGJlIGNv bnN0Lgo+Cj4+ICsJCXsnQScsICcwJ30sIHsnQicsICcwJ30sIHsnQycsICcwJ30sCj4+ICsJCXsn RCcsICcwJ30sIHsnRScsICcwJ30sIHsnRicsICcwJ30sCj4+ICsJCXsnRycsICcwJ30sIHsnSCcs ICcwJ30sIHsnSScsICcwJ30KPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBjaGFyIGludGVsX2dldF9z dGVwcGluZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiArewo+PiArCWlmIChJU19TS1lMQUtF KGRldikgJiYgKGRldi0+cGRldi0+cmV2aXNpb24gPAo+PiArCQkJQVJSQVlfU0laRShza2xfc3Rl cHBpbmdfaW5mbykpKQo+PiArCQlyZXR1cm4gc2tsX3N0ZXBwaW5nX2luZm9bZGV2LT5wZGV2LT5y ZXZpc2lvbl0uc3RlcHBpbmc7Cj4gTml0cGljazogYXQgdGhpcyBwb2ludCBpdCdzIGp1c3QKPiBp ZiAoZGV2LT5wZGV2LT5yZXZpc2lvbiA8IDkpCj4gCXJldHVybiAnQScgKyBkZXYtPnBkZXYtPnJl dmlzaW9uOwo+Cj4gdy9vIHRoZSBuZWVkIGZvciBza2xfc3RlcHBpbmdfaW5mby4KCklmIHdlIGhh dmUgZGlmZmVyZW50IGZpcm13YXJlcyBmb3IgZGlmZmVyZW50IHN1YnN0ZXBwaW5nIGZvciBleGFt cGxlIEEwLEExLEEzIHRoZW4gc3RlcHBpbmcgd2lsbApiZSBzYW1lIGJ1dCBzdWJzdGVwcGluZyB3 aWxsIGJlIGRpZmZlcmVudCBhbmQgSSBhc3N1bWUgcmV2aXNpb25faWQgYWxzbyB3aWxsIGJlIGRp ZmZlcmVudC4gQW5kCmlmIHdlIHdhbnQgdG8gcHV0IHNvbWUgbG9naWMgbGlrZSAoJ0EnICsgZGV2 LT5wZGV2LT5yZXZpc2lvbikgdGhlbiB3ZSBjYW4gZG8gaXQgYnV0IHNob3VsZCBiZQpiYXNlZCBv biBic3BlYywgV2h5IEkgYW0gdGVsbGluZyBiZWNhdXNlIGlmIGxhdGVyIHdlIGdldCBzb21lIHRh YmxlIGFuZCBub3QgYWJsZSB0byBkZXJpdmUKYSBjb21tb24gbG9naWMgdGhlbiBhZ2FpbiBtYXkg bmVlZCB0aGlzIGtpbmQgb2YgbG9va3VwIHRhYmxlLgoKQW5kIHVzaW5nIGxvb2t1byB0YWJsZSBj b21lcyB3aXRoIGFkdmFudGFnZQotIHRvIGV4dGVuZCBzdXBwb3J0IGZvciBmdXR1cmUgcGxhdGZv cm0gb25seSBoYXZlIHRvIGFkZCBuZXcgc3RydWN0dXJlIG9yIGNoYW5nZSBleGlzdGluZwpzdHJ1 Y3R1cmUgdG8gaW5jb3Jwb3JhdGUgYW55IGZ1dHVyZSBjaGFuZ2VzIGluIHN0ZXBwaW5nIGluZm8g d2hpY2ggZ290IGZyb20gYnNwZWMuCi0gdGltZSBjb21wbGV4aXR5IHdpbGwgYmUgbGVzcy4KClll cyBhZ3JlZSBzcGFjZSBtaWdodCBiZSBhbiBpc3N1ZS4gU3VnZ2VzdCBtZSB0cmFkZSBvZmYgYmV0 d2VlbiB0aW1lIGFuZCBzcGFjZS4KCj4gICAgCj4KPj4gKwllbHNlCj4+ICsJCXJldHVybiAtRU5P REFUQTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGNoYXIgaW50ZWxfZ2V0X3N1YnN0ZXBwaW5nKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICt7Cj4+ICsJaWYgKElTX1NLWUxBS0UoZGV2KSAmJiAo ZGV2LT5wZGV2LT5yZXZpc2lvbiA8Cj4+ICsJCQlBUlJBWV9TSVpFKHNrbF9zdGVwcGluZ19pbmZv KSkpCj4+ICsJCXJldHVybiBza2xfc3RlcHBpbmdfaW5mb1tkZXYtPnBkZXYtPnJldmlzaW9uXS5z dWJzdGVwcGluZzsKPiBhbmQgdGhpcyBvbmUgaXMgc2ltcGx5Cj4gcmV0dXJuIDA7CgpGb3Igbm93 IGFsbCB2YWx1ZXMgYXJlIDAgZm9yIHNrbCwgYnV0IGltcGxlbWVudGF0aW9uIGRvbmUgdGhpbmtp bmcgb2Ygc3VwcG9ydGluZyBmdXR1cmUgY2hhbmdlcy4KV2UgbWF5IGhhdmUgbXVsdGlwbGUgZmly bXdhcmUgZm9yIGRpZmZlcmVudCBzdWJzdGVwcGluZy4KCj4+ICsJZWxzZQo+PiArCQlyZXR1cm4g LUVOT0RBVEE7Cj4+ICt9Cj4gTWlzc2luZyBuZXdsaW5lLgo+Cj4+ICt2b2lkIGludGVsX2Nzcl9s b2FkX3Byb2dyYW0oc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gK3sKPj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+PiArCV9fYmUzMiAq cGF5bG9hZCA9IGRldl9wcml2LT5jc3IuZG1jX3BheWxvYWQ7Cj4+ICsJdWludDMyX3QgaSwgZndf c2l6ZTsKPj4gKwo+PiArCWlmICghSVNfR0VOOShkZXYpKSB7Cj4+ICsJCURSTV9FUlJPUigiTm8g Q1NSIHN1cHBvcnQgYXZhaWxhYmxlIGZvciB0aGlzIHBsYXRmb3JtXG4iKTsKPj4gKwkJcmV0dXJu Owo+PiArCX0KPj4gKwo+PiArCW11dGV4X2xvY2soJmRldl9wcml2LT5jc3JfbG9jayk7Cj4+ICsJ LyogZndfc2l6ZSBpcyBkd29yZHMsIGNvbnZlcnRpbmcgaXQgdG8gYnl0ZXMgYW5kIG5lYXJlc3Qg OCBtdWx0aXBsZS4gKi8KPiBUaGUgYWJvdmUgY29tbWVudCBpcyBzdGFsZSBub3cuCgpBZ3JlZS4K Cj4KPj4gKwlmd19zaXplID0gZGV2X3ByaXYtPmNzci5kbWNfZndfc2l6ZTsKPj4gKwlmb3IgKGkg PSAwOyBpIDwgZndfc2l6ZTsgaSsrKQo+PiArCQlJOTE1X1dSSVRFKENTUl9QUk9HUkFNX0JBU0Ug KyBpICogNCwKPj4gKwkJCSh1MzIgX19mb3JjZSlwYXlsb2FkW2ldKTsKPj4gKwo+PiArCWZvciAo aSA9IDA7IGkgPCBkZXZfcHJpdi0+Y3NyLm1taW9fY291bnQ7IGkrKykgewo+PiArCQlJOTE1X1dS SVRFKGRldl9wcml2LT5jc3IubW1pb2FkZHJbaV0sCj4+ICsJCQlkZXZfcHJpdi0+Y3NyLm1taW9k YXRhW2ldKTsKPj4gKwl9Cj4+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+Y3NyX2xvY2spOwo+ PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBmaW5pc2hfY3NyX2xvYWQoY29uc3Qgc3RydWN0IGZp cm13YXJlICpmdywgdm9pZCAqY29udGV4dCkKPj4gK3sKPj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBjb250ZXh0Owo+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBk ZXZfcHJpdi0+ZGV2Owo+PiArCXN0cnVjdCBpbnRlbF9jc3NfaGVhZGVyICpjc3NfaGVhZGVyOwo+ PiArCXN0cnVjdCBpbnRlbF9wYWNrYWdlX2hlYWRlciAqcGFja2FnZV9oZWFkZXI7Cj4+ICsJc3Ry dWN0IGludGVsX2RtY19oZWFkZXIgKmRtY19oZWFkZXI7Cj4+ICsJc3RydWN0IGludGVsX2NzciAq Y3NyID0gJmRldl9wcml2LT5jc3I7Cj4+ICsJY2hhciBzdGVwcGluZyA9IGludGVsX2dldF9zdGVw cGluZyhkZXYpOwo+PiArCWNoYXIgc3Vic3RlcHBpbmcgPSBpbnRlbF9nZXRfc3Vic3RlcHBpbmco ZGV2KTsKPj4gKwl1aW50MzJfdCBkbWNfb2Zmc2V0ID0gQ1NSX0RFRkFVTFRfRldfT0ZGU0VULCBy ZWFkY291bnQgPSAwLCBuYnl0ZXM7Cj4+ICsJdWludDMyX3QgaTsKPj4gKwlfX2JlMzIgKmRtY19w YXlsb2FkOwo+PiArCj4+ICsJaWYgKCFmdykgewo+PiArCQlpOTE1X2Zpcm13YXJlX2xvYWRfZXJy b3JfcHJpbnQoY3NyLT5md19wYXRoLCAwKTsKPj4gKwkJZ290byBvdXQ7Cj4+ICsJfQo+PiArCj4+ ICsJaWYgKChzdGVwcGluZyA9PSAtRU5PREFUQSkgfHwgKHN1YnN0ZXBwaW5nID09IC1FTk9EQVRB KSkgewo+PiArCQlEUk1fRVJST1IoIlVua25vd24gc3RlcHBpbmcgaW5mbywgZmlybXdhcmUgbG9h ZGluZyBmYWlsZWRcbiIpOwo+PiArCQlnb3RvIG91dDsKPj4gKwl9Cj4+ICsKPj4gKwkvKiBFeHRy YWN0IENTUyBIZWFkZXIgaW5mb3JtYXRpb24qLwo+PiArCWNzc19oZWFkZXIgPSAoc3RydWN0IGlu dGVsX2Nzc19oZWFkZXIgKilmdy0+ZGF0YTsKPj4gKwlpZiAoc2l6ZW9mKHN0cnVjdCBpbnRlbF9j c3NfaGVhZGVyKSAhPQo+PiArCQkoY3NzX2hlYWRlci0+aGVhZGVyX2xlbiAqIDQpKSB7Cj4+ICsJ CURSTV9FUlJPUigiRmlybXdhcmUgaGFzIHdyb25nIENTUyBoZWFkZXIgbGVuZ3RoICV1IGJ5dGVz XG4iLAo+PiArCQkJKGNzc19oZWFkZXItPmhlYWRlcl9sZW4gKiA0KSk7Cj4+ICsJCWdvdG8gb3V0 Owo+PiArCX0KPj4gKwlyZWFkY291bnQgKz0gc2l6ZW9mKHN0cnVjdCBpbnRlbF9jc3NfaGVhZGVy KTsKPj4gKwo+PiArCS8qIEV4dHJhY3QgUGFja2FnZSBIZWFkZXIgaW5mb3JtYXRpb24qLwo+PiAr CXBhY2thZ2VfaGVhZGVyID0gKHN0cnVjdCBpbnRlbF9wYWNrYWdlX2hlYWRlciAqKQo+PiArCQkJ CQkmZnctPmRhdGFbcmVhZGNvdW50XTsKPj4gKwlpZiAoc2l6ZW9mKHN0cnVjdCBpbnRlbF9wYWNr YWdlX2hlYWRlcikgIT0KPj4gKwkJKHBhY2thZ2VfaGVhZGVyLT5oZWFkZXJfbGVuICogNCkpIHsK Pj4gKwkJRFJNX0VSUk9SKCJGaXJtd2FyZSBoYXMgd3JvbmcgcGFja2FnZSBoZWFkZXIgbGVuZ3Ro ICV1IGJ5dGVzXG4iLAo+PiArCQkJKHBhY2thZ2VfaGVhZGVyLT5oZWFkZXJfbGVuICogNCkpOwo+ PiArCQlnb3RvIG91dDsKPj4gKwl9Cj4+ICsJcmVhZGNvdW50ICs9IHNpemVvZihzdHJ1Y3QgaW50 ZWxfcGFja2FnZV9oZWFkZXIpOwo+PiArCj4+ICsJLyogU2VhcmNoIGZvciBkbWNfb2Zmc2V0IHRv IGZpbmQgZmlyd2FyZSBiaW5hcnkuICovCj4+ICsJZm9yIChpID0gMDsgaSA8IHBhY2thZ2VfaGVh ZGVyLT5udW1fZW50cmllczsgaSsrKSB7Cj4+ICsJCWlmIChwYWNrYWdlX2hlYWRlci0+ZndfaW5m b1tpXS5zdWJzdGVwcGluZyA9PSAnKicgJiYKPj4gKwkJCXN0ZXBwaW5nID09IHBhY2thZ2VfaGVh ZGVyLT5md19pbmZvW2ldLnN0ZXBwaW5nKSB7Cj4+ICsJCQlkbWNfb2Zmc2V0ID0gcGFja2FnZV9o ZWFkZXItPmZ3X2luZm9baV0ub2Zmc2V0Owo+PiArCQkJYnJlYWs7Cj4+ICsJCX0gZWxzZSBpZiAo c3RlcHBpbmcgPT0gcGFja2FnZV9oZWFkZXItPmZ3X2luZm9baV0uc3RlcHBpbmcgJiYKPj4gKwkJ CXN1YnN0ZXBwaW5nID09IHBhY2thZ2VfaGVhZGVyLT5md19pbmZvW2ldLnN1YnN0ZXBwaW5nKSB7 Cj4+ICsJCQlkbWNfb2Zmc2V0ID0gcGFja2FnZV9oZWFkZXItPmZ3X2luZm9baV0ub2Zmc2V0Owo+ PiArCQkJYnJlYWs7Cj4+ICsJCX0gZWxzZSBpZiAocGFja2FnZV9oZWFkZXItPmZ3X2luZm9baV0u c3RlcHBpbmcgPT0gJyonICYmCj4+ICsJCQlwYWNrYWdlX2hlYWRlci0+ZndfaW5mb1tpXS5zdWJz dGVwcGluZyA9PSAnKicpCj4+ICsJCQlkbWNfb2Zmc2V0ID0gcGFja2FnZV9oZWFkZXItPmZ3X2lu Zm9baV0ub2Zmc2V0Owo+PiArCX0KPj4gKwlpZiAoZG1jX29mZnNldCA9PSBDU1JfREVGQVVMVF9G V19PRkZTRVQpIHsKPj4gKwkJRFJNX0VSUk9SKCJGaXJtd2FyZSBub3Qgc3VwcG9ydGVkIGZvciAl YyBzdGVwcGluZ1xuIiwgc3RlcHBpbmcpOwo+PiArCQlnb3RvIG91dDsKPj4gKwl9Cj4+ICsJcmVh ZGNvdW50ICs9IGRtY19vZmZzZXQ7Cj4+ICsKPj4gKwkvKiBFeHRyYWN0IGRtY19oZWFkZXIgaW5m b3JtYXRpb24uICovCj4+ICsJZG1jX2hlYWRlciA9IChzdHJ1Y3QgaW50ZWxfZG1jX2hlYWRlciAq KSZmdy0+ZGF0YVtyZWFkY291bnRdOwo+PiArCWlmIChzaXplb2Yoc3RydWN0IGludGVsX2RtY19o ZWFkZXIpICE9IChkbWNfaGVhZGVyLT5oZWFkZXJfbGVuKSkgewo+PiArCQlEUk1fRVJST1IoIkZp cm13YXJlIGhhcyB3cm9uZyBkbWMgaGVhZGVyIGxlbmd0aCAldSBieXRlc1xuIiwKPj4gKwkJCQko ZG1jX2hlYWRlci0+aGVhZGVyX2xlbikpOwo+PiArCQlnb3RvIG91dDsKPj4gKwl9Cj4+ICsJcmVh ZGNvdW50ICs9IHNpemVvZihzdHJ1Y3QgaW50ZWxfZG1jX2hlYWRlcik7Cj4+ICsKPj4gKwkvKiBD YWNoZSB0aGUgZG1jIGhlYWRlciBpbmZvLiAqLwo+PiArCWlmIChkbWNfaGVhZGVyLT5tbWlvX2Nv dW50ID4gQVJSQVlfU0laRShjc3ItPm1taW9hZGRyKSkgewo+PiArCQlEUk1fRVJST1IoIkZpcm13 YXJlIGhhcyB3cm9uZyBtbWlvIGNvdW50ICV1XG4iLAo+PiArCQkJCQkJZG1jX2hlYWRlci0+bW1p b19jb3VudCk7Cj4+ICsJCWdvdG8gb3V0Owo+PiArCX0KPj4gKwljc3ItPm1taW9fY291bnQgPSBk bWNfaGVhZGVyLT5tbWlvX2NvdW50Owo+PiArCWZvciAoaSA9IDA7IGkgPCBkbWNfaGVhZGVyLT5t bWlvX2NvdW50OyBpKyspIHsKPj4gKwkJaWYgKGRtY19oZWFkZXItPm1taW9hZGRyW2ldIDwgQ1NS X01NSU9fU1RBUlRfUkFOR0UgJiYKPj4gKwkJCWRtY19oZWFkZXItPm1taW9hZGRyW2ldID4gQ1NS X01NSU9fRU5EX1JBTkdFKSB7Cj4+ICsJCQlEUk1fRVJST1IoIiBGaXJtd2FyZSBoYXMgd3Jvbmcg bW1pbyBhZGRyZXNzIDB4JXhcbiIsCj4+ICsJCQkJCQlkbWNfaGVhZGVyLT5tbWlvYWRkcltpXSk7 Cj4+ICsJCQlnb3RvIG91dDsKPj4gKwkJfQo+PiArCQljc3ItPm1taW9hZGRyW2ldID0gZG1jX2hl YWRlci0+bW1pb2FkZHJbaV07Cj4+ICsJCWNzci0+bW1pb2RhdGFbaV0gPSBkbWNfaGVhZGVyLT5t bWlvZGF0YVtpXTsKPj4gKwl9Cj4+ICsKPj4gKwkvKiBmd19zaXplIGlzIGluIGR3b3Jkcywgc28g bXVsdGlwbGllZCBieSA0IHRvIGNvbnZlcnQgaW50byBieXRlcy4gKi8KPj4gKwluYnl0ZXMgPSBk bWNfaGVhZGVyLT5md19zaXplICogNDsKPj4gKwlpZiAobmJ5dGVzID4gQ1NSX01BWF9GV19TSVpF KSB7Cj4+ICsJCURSTV9FUlJPUigiQ1NSIGZpcm13YXJlIHRvbyBiaWcgKCV1KSBieXRlc1xuIiwg bmJ5dGVzKTsKPj4gKwkJZ290byBvdXQ7Cj4+ICsJfQo+PiArCWNzci0+ZG1jX2Z3X3NpemUgPSBk bWNfaGVhZGVyLT5md19zaXplOwo+PiArCj4+ICsJY3NyLT5kbWNfcGF5bG9hZCA9IGttYWxsb2Mo bmJ5dGVzLCBHRlBfS0VSTkVMKTsKPj4gKwlpZiAoIWNzci0+ZG1jX3BheWxvYWQpIHsKPj4gKwkJ RFJNX0VSUk9SKCJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQgZm9yIGRtYyBwYXlsb2FkXG4iKTsK Pj4gKwkJZ290byBvdXQ7Cj4+ICsJfQo+PiArCj4+ICsJZG1jX3BheWxvYWQgPSBjc3ItPmRtY19w YXlsb2FkOwo+PiArCWZvciAoaSA9IDA7IGkgPCBkbWNfaGVhZGVyLT5md19zaXplOyBpKyspIHsK Pj4gKwkJdWludDMyX3QgKnRtcCA9ICh1MzIgKikmZnctPmRhdGFbcmVhZGNvdW50ICsgaSAqIDRd Owo+PiArCQkvKgo+PiArCQkgKiBUaGUgZmlybXdhcmUgcGF5bG9hZCBpcyBhbiBhcnJheSBvZiAz MiBiaXQgd29yZHMgc3RvcmVkIGluCj4+ICsJCSAqIGxpdHRsZS1lbmRpYW4gZm9ybWF0IGluIHRo ZSBmaXJtd2FyZSBpbWFnZSBhbmQgcHJvZ3JhbW1lZAo+PiArCQkgKiBhcyAzMiBiaXQgYmlnLWVu ZGlhbiBmb3JtYXQgdG8gbWVtb3J5Lgo+PiArCQkgKi8KPj4gKwkJZG1jX3BheWxvYWRbaV0gPSBj cHVfdG9fYmUzMigqdG1wKTsKPj4gKwl9Cj4+ICsKPj4gKwkvKiBsb2FkIGNzciBwcm9ncmFtIGR1 cmluZyBzeXN0ZW0gYm9vdCwgYXMgbmVlZGVkIGZvciBEQyBzdGF0ZXMgKi8KPj4gKwlpbnRlbF9j c3JfbG9hZF9wcm9ncmFtKGRldik7Cj4+ICtvdXQ6Cj4+ICsJcmVsZWFzZV9maXJtd2FyZShmdyk7 Cj4+ICt9Cj4+ICsKPj4gK3ZvaWQgaW50ZWxfY3NyX3Vjb2RlX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPj4gK3sKPj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwo+PiArCXN0cnVjdCBpbnRlbF9jc3IgKmNzciA9ICZkZXZfcHJpdi0+ Y3NyOwo+PiArCWludCByZXQ7Cj4+ICsKPj4gKwlpZiAoIUhBU19DU1IoZGV2KSkKPj4gKwkJcmV0 dXJuOwo+PiArCj4+ICsJaWYgKElTX1NLWUxBS0UoZGV2KSkKPj4gKwkJY3NyLT5md19wYXRoID0g STkxNV9DU1JfU0tMOwo+PiArCWVsc2Ugewo+PiArCQlEUk1fRVJST1IoIlVuZXhwZWN0ZWQ6IG5v IGtub3duIENTUiBmaXJtd2FyZSBmb3IgcGxhdGZvcm1cbiIpOwo+PiArCQlyZXR1cm47Cj4+ICsJ fQo+PiArCj4+ICsJLyogQ1NSIHN1cHBvcnRlZCBmb3IgcGxhdGZvcm0sIGxvYWQgZmlybXdhcmUg Ki8KPj4gKwlyZXQgPSByZXF1ZXN0X2Zpcm13YXJlX25vd2FpdChUSElTX01PRFVMRSwgdHJ1ZSwg Y3NyLT5md19wYXRoLAo+PiArCQkJCSZkZXZfcHJpdi0+ZGV2LT5wZGV2LT5kZXYsCj4+ICsJCQkJ R0ZQX0tFUk5FTCwgZGV2X3ByaXYsCj4+ICsJCQkJZmluaXNoX2Nzcl9sb2FkKTsKPj4gKwlpZiAo cmV0KQo+PiArCQlpOTE1X2Zpcm13YXJlX2xvYWRfZXJyb3JfcHJpbnQoY3NyLT5md19wYXRoLCBy ZXQpOwo+PiArCj4+ICt9Cj4+ICsKPj4gK3ZvaWQgaW50ZWxfY3NyX3Vjb2RlX2Zpbmkoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPj4gK3sKPj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+PiArCj4+ICsJaWYgKCFIQVNfQ1NSKGRldikpCj4+ ICsJCXJldHVybjsKPj4gKwo+PiArCWtmcmVlKGRldl9wcml2LT5jc3IuZG1jX3BheWxvYWQpOwo+ PiArfQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3NyLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jc3IuaAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ PiBpbmRleCAwMDAwMDAwLi5jMmE1YTUzCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfY3NyLmgKPj4gQEAgLTAsMCArMSwxNjQgQEAKPj4gKy8qCj4+ ICsgKiBDb3B5cmlnaHQgwqkgMjAxNCBJbnRlbCBDb3Jwb3JhdGlvbgo+PiArICoKPj4gKyAqIFBl cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u IG9idGFpbmluZyBhCj4+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+PiArICogdG8gZGVhbCBpbiB0 aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRh dGlvbgo+PiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2Yg dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPj4gKyAqIFNv ZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnM6Cj4+ICsgKgo+PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+PiArICogcGFyYWdyYXBo KSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z IG9mIHRoZQo+PiArICogU29mdHdhcmUuCj4+ICsgKgo+PiArICogVEhFIFNPRlRXQVJFIElTIFBS T1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IK Pj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+PiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4+ICsgKiBUSEUg QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN QUdFUyBPUiBPVEhFUgo+PiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBD T05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPj4gKyAqIEZST00sIE9VVCBPRiBP UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB TElOR1MKPj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPj4gKyAqCj4+ICsgKi8KPj4gKwo+PiArI2lm bmRlZiBfSU5URUxfQ1NSX0hfCj4+ICsjZGVmaW5lIF9JTlRFTF9DU1JfSF8KPj4gKwo+PiArI2Rl ZmluZSBJOTE1X0NTUl9TS0wgImk5MTUvZG1jX2dlbjkuYmluIgo+PiArCj4+ICtNT0RVTEVfRklS TVdBUkUoSTkxNV9DU1JfU0tMKTsKPj4gKwo+PiArLyoKPj4gKyogU0tMIENTUiByZWdpc3RlcnMg Zm9yIERDNSBhbmQgREM2Cj4+ICsqLwo+PiArI2RlZmluZSBDU1JfUFJPR1JBTV9CQVNFCQkweDgw MDAwCj4+ICsjZGVmaW5lIENTUl9IRUFERVJfT0ZGU0VUCQkxMjgKPj4gKyNkZWZpbmUgQ1NSX1NT UF9CQVNFX0FERFJfR0VOOQkJMHgwMDAwMkZDMAo+PiArI2RlZmluZSBDU1JfSFRQX0FERFJfU0tM CQkweDAwNTAwMDM0Cj4+ICsjZGVmaW5lIENTUl9TU1BfQkFTRQkJCTB4OEYwNzQKPj4gKyNkZWZp bmUgQ1NSX0hUUF9TS0wJCQkweDhGMDA0Cj4+ICsjZGVmaW5lIENTUl9MQVNUX1dSSVRFCQkJMHg4 RjAzNAo+PiArI2RlZmluZSBDU1JfTEFTVF9XUklURV9WQUxVRQkJMHhjMDAzYjQwMAo+PiArLyog TU1JTyBhZGRyZXNzIHJhbmdlIGZvciBDU1IgcHJvZ3JhbSAoMHg4MDAwMCAtIDB4ODJGRkYpICov Cj4+ICsjZGVmaW5lIENTUl9NQVhfRldfU0laRQkJCTB4MkZGRgo+PiArI2RlZmluZSBDU1JfREVG QVVMVF9GV19PRkZTRVQJCTB4RkZGRkZGRkYKPj4gKyNkZWZpbmUgQ1NSX01NSU9fU1RBUlRfUkFO R0UJMHg4MDAwMAo+PiArI2RlZmluZSBDU1JfTU1JT19FTkRfUkFOR0UJCTB4OEZGRkYKPj4gKwo+ PiArc3RydWN0IGludGVsX2Nzc19oZWFkZXIgewo+PiArCS8qIDB4MDkgZm9yIERNQyAqLwo+PiAr CXVpbnQzMl90IG1vZHVsZV90eXBlOwo+PiArCj4+ICsJLyogSW5jbHVkZXMgdGhlIERNQyBzcGVj aWZpYyBoZWFkZXIgaW4gZHdvcmRzICovCj4+ICsJdWludDMyX3QgaGVhZGVyX2xlbjsKPj4gKwo+ PiArCS8qIGFsd2F5cyB2YWx1ZSB3b3VsZCBiZSAweDEwMDAwICovCj4+ICsJdWludDMyX3QgaGVh ZGVyX3ZlcjsKPj4gKwo+PiArCS8qIE5vdCB1c2VkICovCj4+ICsJdWludDMyX3QgbW9kdWxlX2lk Owo+PiArCj4+ICsJLyogTm90IHVzZWQgKi8KPj4gKwl1aW50MzJfdCBtb2R1bGVfdmVuZG9yOwo+ PiArCj4+ICsJLyogaW4gWVlZWU1NREQgZm9ybWF0ICovCj4+ICsJdWludDMyX3QgZGF0ZTsKPj4g Kwo+PiArCS8qIFNpemUgaW4gZHdvcmRzIChDU1NfSGVhZGVybGVuICsgUGFja2FnZUhlYWRlckxl biArIGRtYyBGV3NMZW4pLzQgKi8KPj4gKwl1aW50MzJfdCBzaXplOwo+PiArCj4+ICsJLyogTm90 IHVzZWQgKi8KPj4gKwl1aW50MzJfdCBrZXlfc2l6ZTsKPj4gKwo+PiArCS8qIE5vdCB1c2VkICov Cj4+ICsJdWludDMyX3QgbW9kdWx1c19zaXplOwo+PiArCj4+ICsJLyogTm90IHVzZWQgKi8KPj4g Kwl1aW50MzJfdCBleHBvbmVudF9zaXplOwo+PiArCj4+ICsJLyogTm90IHVzZWQgKi8KPj4gKwl1 aW50MzJfdCByZXNlcnZlZDFbMTJdOwo+PiArCj4+ICsJLyogTWFqb3IgTWlub3IgKi8KPj4gKwl1 aW50MzJfdCB2ZXJzaW9uOwo+PiArCj4+ICsJLyogTm90IHVzZWQgKi8KPj4gKwl1aW50MzJfdCBy ZXNlcnZlZDJbOF07Cj4+ICsKPj4gKwkvKiBOb3QgdXNlZCAqLwo+PiArCXVpbnQzMl90IGtlcm5l bF9oZWFkZXJfaW5mbzsKPj4gK30gX19wYWNrZWQ7Cj4+ICsKPj4gK3N0cnVjdCBpbnRlbF9md19p bmZvIHsKPj4gKwl1aW50MTZfdCByZXNlcnZlZDE7Cj4+ICsKPj4gKwkvKiBTdGVwcGluZyAoQSwg QiwgQywgLi4uLCAqKS4gKiBpcyBhIHdpbGRjYXJkICovCj4+ICsJY2hhciBzdGVwcGluZzsKPj4g Kwo+PiArCS8qIFN1Yi1zdGVwcGluZyAoMCwgMSwgLi4uLCAqKS4gKiBpcyBhIHdpbGRjYXJkICov Cj4+ICsJY2hhciBzdWJzdGVwcGluZzsKPj4gKwo+PiArCXVpbnQzMl90IG9mZnNldDsKPj4gKwl1 aW50MzJfdCByZXNlcnZlZDI7Cj4+ICt9IF9fcGFja2VkOwo+PiArCj4+ICtzdHJ1Y3QgaW50ZWxf cGFja2FnZV9oZWFkZXIgewo+PiArCS8qIERNQyBjb250YWluZXIgaGVhZGVyIGxlbmd0aCBpbiBk d29yZHMgKi8KPj4gKwl1bnNpZ25lZCBjaGFyIGhlYWRlcl9sZW47Cj4+ICsKPj4gKwkvKiBhbHdh eXMgdmFsdWUgd291bGQgYmUgMHgwMSAqLwo+PiArCXVuc2lnbmVkIGNoYXIgaGVhZGVyX3ZlcjsK Pj4gKwo+PiArCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMTBdOwo+PiArCj4+ICsJLyogTnVtYmVy IG9mIHZhbGlkIGVudHJpZXMgaW4gdGhlIEZXSW5mbyBhcnJheSBiZWxvdyAqLwo+PiArCXVpbnQz Ml90IG51bV9lbnRyaWVzOwo+PiArCj4+ICsJc3RydWN0IGludGVsX2Z3X2luZm8gZndfaW5mb1sy MF07Cj4+ICt9IF9fcGFja2VkOwo+PiArCj4+ICtzdHJ1Y3QgaW50ZWxfZG1jX2hlYWRlciB7Cj4+ ICsJLyogYWx3YXlzIHZhbHVlIHdvdWxkIGJlIDB4NDA0MDNFM0UgKi8KPj4gKwl1aW50MzJfdCBz aWduYXR1cmU7Cj4+ICsKPj4gKwkvKiBETUMgYmluYXJ5IGhlYWRlciBsZW5ndGggKi8KPj4gKwl1 bnNpZ25lZCBjaGFyIGhlYWRlcl9sZW47Cj4+ICsKPj4gKwkvKiAweDAxICovCj4+ICsJdW5zaWdu ZWQgY2hhciBoZWFkZXJfdmVyOwo+PiArCj4+ICsJLyogUmVzZXJ2ZWQgKi8KPj4gKwl1aW50MTZf dCBkbWNjX3ZlcjsKPj4gKwo+PiArCS8qIE1ham9yLCBNaW5vciAqLwo+PiArCXVpbnQzMl90CXBy b2plY3Q7Cj4+ICsKPj4gKwkvKiBGaXJtd2FyZSBwcm9ncmFtIHNpemUgKGV4Y2x1ZGluZyBoZWFk ZXIpIGluIGR3b3JkcyAqLwo+PiArCXVpbnQzMl90CWZ3X3NpemU7Cj4+ICsKPj4gKwkvKiBNYWpv ciBNaW5vciB2ZXJzaW9uICovCj4+ICsJdWludDMyX3QgZndfdmVyc2lvbjsKPj4gKwo+PiArCS8q IE51bWJlciBvZiB2YWxpZCBNTUlPIGN5Y2xlcyBwcmVzZW50LiAqLwo+PiArCXVpbnQzMl90IG1t aW9fY291bnQ7Cj4+ICsKPj4gKwkvKiBNTUlPIGFkZHJlc3MgKi8KPj4gKwl1aW50MzJfdCBtbWlv YWRkcls4XTsKPj4gKwo+PiArCS8qIE1NSU8gZGF0YSAqLwo+PiArCXVpbnQzMl90IG1taW9kYXRh WzhdOwo+PiArCj4+ICsJLyogRlcgZmlsZW5hbWUgICovCj4+ICsJdW5zaWduZWQgY2hhciBkZmls ZVszMl07Cj4+ICsKPj4gKwl1aW50MzJfdCByZXNlcnZlZDFbMl07Cj4+ICt9IF9fcGFja2VkOwo+ PiArCj4+ICtzdHJ1Y3Qgc3RlcHBpbmdfaW5mbyB7Cj4+ICsJY2hhciBzdGVwcGluZzsKPj4gKwlj aGFyIHN1YnN0ZXBwaW5nOwo+PiArfSBfX3BhY2tlZDsKPiBzdGVwcGluZ19pbmZvIGRvZXNuJ3Qg bmVlZCB0byBiZSBwYWNrZWQuCgpUbyBhdm9pZCBzdHJ1Y3R1cmUgcGFkZGluZyB1c2VkIF9fcGFj a2VkIHdoaWNoIHdpbGwgc2F2ZSBzb21lIG1lbW9yeS4KICAKCj4KPiBXaGF0IEkgbWVhbnQgaXMg dG8gYWRkIGFsbCB0aGVzZSB0byBpbnRlbF9jc3IuYy4gSSBkb24ndCB0aGluayB0aGVyZSBpcwo+ IGFueSByZWFzb24gZm9yIGEgbmV3IGhlYWRlciBmaWxlIHVubGVzcyB5b3UgbmVlZCB0byBzaGFy ZSBzb21ldGhpbmcKPiBhbW9uZyBtdWx0aXBsZSAuYyBtb2R1bGVzLgo+Cj4gLS1JbXJlCgppbnRl bF9ydW50aW1lX3BtLmMgaXMgdXNpbmcgZmV3IG1hY3JvIHdoaWNoIGlzIGRlZmluZWQgaW4gdGhp cyBoZWFkZXIgZmlsZSBpbiBsYXRlciBwYXRjaGVzLgpUaGVuIHdlIGNhbiBtb3ZlIGFsbCBtYWNy byBkZWZpbml0aW9uIHRvIGk5MTVfZHJ2Lmggb3IgZWxzZSBjYW4gcHV0IGZldyBtYWNybyBpbiBp bnRlbF9jc3IuYwphbmQgZmV3IGluIGk5MTVfZHJ2LmguIEdpdmUgbWUgeW91ciBzdWdnZXN0aW9u LgoKUmVnYXJkcywKQW5pbWVzaAoKPgo+PiArCj4+ICsKPj4gKyNlbmRpZiAvKiBfSU5URUxfQ1NS X0hfICovCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+IGluZGV4IDdhMGFhMjQuLmYzYTJk ODggMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+IEBAIC0xMDYyLDYgKzEwNjIs MTEgQEAgdm9pZCBpbnRlbF9tb2Rlc2V0X3ByZWNsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHN0cnVjdCBkcm1fZmlsZSAqZmlsZSk7Cj4+ICAgdW5zaWduZWQgbG9uZyBpbnRlbF9wbGFuZV9v Ympfb2Zmc2V0KHN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUsCj4+ICAgCQkJCSAgICAg c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cj4+ICAgCj4+ICsvKiBpbnRlbF9jc3Iu YyAqLwo+PiArdm9pZCBpbnRlbF9jc3JfdWNvZGVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKPj4gK3ZvaWQgaW50ZWxfY3NyX2xvYWRfcHJvZ3JhbShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKPj4gK3ZvaWQgaW50ZWxfY3NyX3Vjb2RlX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldik7 Cj4+ICsKPj4gICAvKiBpbnRlbF9kcC5jICovCj4+ICAgdm9pZCBpbnRlbF9kcF9pbml0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIGludCBvdXRwdXRfcmVnLCBlbnVtIHBvcnQgcG9ydCk7Cj4+ICAg Ym9vbCBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpp bnRlbF9kaWdfcG9ydCwKPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK