From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH v4 19/27] drm/i915: Read hw state into an atomic state struct, v2. Date: Mon, 1 Jun 2015 14:47:10 -0700 Message-ID: <20150601214710.GA17555@intel.com> References: <1433155811-9671-1-git-send-email-maarten.lankhorst@linux.intel.com> <1433155811-9671-20-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id C342D6E0DD for ; Mon, 1 Jun 2015 14:47:10 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1433155811-9671-20-git-send-email-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: Ander Conselvan de Oliveira , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBKdW4gMDEsIDIwMTUgYXQgMTI6NTA6MDNQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gRnJvbTogQW5kZXIgQ29uc2VsdmFuIGRlIE9saXZlaXJhIDxhbmRlci5jb25z ZWx2YW4uZGUub2xpdmVpcmFAaW50ZWwuY29tPgo+IAo+IFRvIG1ha2UgdGhpcyB3b3JrIHdlIGxv YWQgdGhlIG5ldyBoYXJkd2FyZSBzdGF0ZSBpbnRvIHRoZQo+IGF0b21pY19zdGF0ZSwgdGhlbiBz d2FwIGl0IHdpdGggdGhlIHN3IHN0YXRlLgo+IAo+IFRoaXMgbGV0cyB1cyBjaGFuZ2UgdGhlIGZv cmNlIHJlc3RvcmUgcGF0aCBpbiBzZXR1cF9od19zdGF0ZSgpCj4gdG8gdXNlIGEgc2luZ2xlIGNh bGwgdG8gaW50ZWxfbW9kZV9zZXQoKSB0byByZXN0b3JlIGFsbCB0aGUKPiBwcmV2aW91cyBzdGF0 ZS4KPiAKPiBBcyBhIG5pY2UgYm9udXMgdGhpcyBraWxscyBvZmYgZW5jb2Rlci0+bmV3X2VuY29k ZXIsCj4gY29ubmVjdG9yLT5uZXdfZW5hYmxlZCBhbmQgY3J0Yy0+bmV3X2VuYWJsZWQuIFRoZXkg d2VyZSB1c2VkIG9ubHkKPiB0byByZXN0b3JlIHRoZSBzdGF0ZSBhZnRlciBhIG1vZGVzZXQuCj4g Cj4gQ2hhbmdlcyBzaW5jZSB2MToKPiAtIE1ha2Ugc3VyZSBhbGwgcG9zc2libGUgcGxhbmVzIGFy ZSBhZGRlZCB3aXRoIHRoZWlyIGNydGMgc2V0LAo+ICAgc28gdGhleSB3aWxsIGJlIHR1cm5lZCBv ZmYgb24gZmlyc3QgbW9kZXNldC4KCkNvcnJlY3QgbWUgaWYgSSdtIHdyb25nLCBidXQgSSBkb24n dCB0aGluayB3ZSdyZSBhY3R1YWxseSBkb2luZyB0aGlzCnlldC4gIFdlJ3JlIHVzaW5nIGRybV9h dG9taWNfYWRkX2FmZmVjdGVkX3BsYW5lcygpIHdoaWNoIGxvb2tzIGF0IHRoZQpjdXJyZW50IChh bmQgcG9zc2libHkgaW5jb21wbGV0ZSkgc29mdHdhcmUgc3RhdGUgdG8gZmlndXJlIG91dCB3aGF0 IGFuCidhZmZlY3RlZCcgcGxhbmUgaXMuICBJZiBwcmUtZHJpdmVyIGZpcm13YXJlIGhhcyBlbmFi bGVkIGEgc3ByaXRlIG9yCmN1cnNvciBwbGFuZSwgdGhhdCdzIG5vdCBnb2luZyB0byBiZSByZWZs ZWN0ZWQgaW4gb3VyIHN0YXRlJ3MKcGxhbmVfbWFzayBmaWVsZHMsIHNvIHRob3NlIHBsYW5lcyB3 b24ndCBiZSBhZGRlZCBieSB0aGUgaGVscGVyLgoKSSB0aGluayB3aGF0IHlvdSB3YW50IGlzIGFu IGk5MTUtc3BlY2lmaWMgbG9vcCB0aGF0IG9wZXJhdGVzIG92ZXIgKmFsbCoKZHJtX3BsYW5lJ3Mg YW5kIGNvbXBhcmVzIGludGVsX3BsYW5lLT5waXBlIHRvIGludGVsX2NydGMtPnBpcGUgdG8KZGV0 ZXJtaW5lIHdoaWNoIG9uZXMgbmVlZCB0byBiZSBwdWxsZWQgaW50byB0aGUgc3RhdGUuICBUaGVu IHRoZQpzcHJpdGVzL2N1cnNvcnMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHR1cm5lZCBvZmYgb24g dGhlIGZpcnN0IG1vZGVzZXQsCmVuc3VyaW5nIG91ciBoYXJkd2FyZSBhbmQgc29mdHdhcmUgc3Rh dGUgc3RheSBpbiBzeW5jLgoKVGhlIG90aGVyIGFsdGVybmF0aXZlIGlzIHRvIGFjdHVhbGx5IGxv b2sgYXQgdGhlIGhhcmR3YXJlIHN0YXRlIGZvciBlYWNoCnNwcml0ZS9jdXJzb3IgYW5kIHRyeSB0 byBpbmhlcml0IHRoZWlyIHJlYWwgc3RhdGUgYXMgd2UgZG8gZm9yIHRoZQpwcmltYXJ5IHBsYW5l LiAgQnV0IEknbSBub3Qgc3VyZSBpdCdzIHdvcnRoIHB1dHRpbmcgaW4gdGhhdCBlZmZvcnQgcmln aHQKbm93LgoKCk1hdHQKCj4gCj4gU2lnbmVkLW9mZi1ieTogQW5kZXIgQ29uc2VsdmFuIGRlIE9s aXZlaXJhIDxhbmRlci5jb25zZWx2YW4uZGUub2xpdmVpcmFAaW50ZWwuY29tPgo+IFNpZ25lZC1v ZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5j b20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jICB8ICAgMiAr LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAzNzkgKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmggICAgIHwgIDE0ICstCj4gIDMgZmlsZXMgY2hhbmdlZCwgMjQzIGluc2VydGlvbnMoKyks IDE1MiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYwo+IGlu ZGV4IDgzMDc4NzYzYmExNC4uMTdiZjllODBjNTU3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2F0b21pYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfYXRvbWljLmMKPiBAQCAtMzk1LDcgKzM5NSw3IEBAIGludCBpbnRlbF9hdG9taWNfc2V0dXBf c2NhbGVycyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4g LXN0YXRpYyB2b2lkCj4gK3ZvaWQKPiAgaW50ZWxfYXRvbWljX2R1cGxpY2F0ZV9kcGxsX3N0YXRl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJCSAgc3RydWN0IGludGVs X3NoYXJlZF9kcGxsX2NvbmZpZyAqc2hhcmVkX2RwbGwpCj4gIHsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCj4gaW5kZXggYTEzNGQ4M2IxNWNhLi44MTZmNTA5YjU3N2EgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTEwMDYwLDcgKzEwMDYwLDcg QEAgYm9vbCBpbnRlbF9nZXRfbG9hZF9kZXRlY3RfcGlwZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yLAo+ICByZXRyeToKPiAgCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmNvbmZpZy0+ Y29ubmVjdGlvbl9tdXRleCwgY3R4KTsKPiAgCWlmIChyZXQpCj4gLQkJZ290byBmYWlsX3VubG9j azsKPiArCQlnb3RvIGZhaWw7Cj4gIAo+ICAJLyoKPiAgCSAqIEFsZ29yaXRobSBnZXRzIGEgbGl0 dGxlIG1lc3N5Ogo+IEBAIC0xMDA3OCwxMCArMTAwNzgsMTAgQEAgcmV0cnk6Cj4gIAo+ICAJCXJl dCA9IGRybV9tb2Rlc2V0X2xvY2soJmNydGMtPm11dGV4LCBjdHgpOwo+ICAJCWlmIChyZXQpCj4g LQkJCWdvdG8gZmFpbF91bmxvY2s7Cj4gKwkJCWdvdG8gZmFpbDsKPiAgCQlyZXQgPSBkcm1fbW9k ZXNldF9sb2NrKCZjcnRjLT5wcmltYXJ5LT5tdXRleCwgY3R4KTsKPiAgCQlpZiAocmV0KQo+IC0J CQlnb3RvIGZhaWxfdW5sb2NrOwo+ICsJCQlnb3RvIGZhaWw7Cj4gIAo+ICAJCW9sZC0+ZHBtc19t b2RlID0gY29ubmVjdG9yLT5kcG1zOwo+ICAJCW9sZC0+bG9hZF9kZXRlY3RfdGVtcCA9IGZhbHNl Owo+IEBAIC0xMDEwMCw5ICsxMDEwMCw2IEBAIHJldHJ5Ogo+ICAJCQljb250aW51ZTsKPiAgCQlp ZiAocG9zc2libGVfY3J0Yy0+c3RhdGUtPmVuYWJsZSkKPiAgCQkJY29udGludWU7Cj4gLQkJLyog VGhpcyBjYW4gb2NjdXIgd2hlbiBhcHBseWluZyB0aGUgcGlwZSBBIHF1aXJrIG9uIHJlc3VtZS4g Ki8KPiAtCQlpZiAodG9faW50ZWxfY3J0Yyhwb3NzaWJsZV9jcnRjKS0+bmV3X2VuYWJsZWQpCj4g LQkJCWNvbnRpbnVlOwo+ICAKPiAgCQljcnRjID0gcG9zc2libGVfY3J0YzsKPiAgCQlicmVhazsK PiBAQCAtMTAxMTMsMjAgKzEwMTEwLDE3IEBAIHJldHJ5Ogo+ICAJICovCj4gIAlpZiAoIWNydGMp IHsKPiAgCQlEUk1fREVCVUdfS01TKCJubyBwaXBlIGF2YWlsYWJsZSBmb3IgbG9hZC1kZXRlY3Rc biIpOwo+IC0JCWdvdG8gZmFpbF91bmxvY2s7Cj4gKwkJZ290byBmYWlsOwo+ICAJfQo+ICAKPiAg CXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmNydGMtPm11dGV4LCBjdHgpOwo+ICAJaWYgKHJldCkK PiAtCQlnb3RvIGZhaWxfdW5sb2NrOwo+ICsJCWdvdG8gZmFpbDsKPiAgCXJldCA9IGRybV9tb2Rl c2V0X2xvY2soJmNydGMtPnByaW1hcnktPm11dGV4LCBjdHgpOwo+ICAJaWYgKHJldCkKPiAtCQln b3RvIGZhaWxfdW5sb2NrOwo+IC0JaW50ZWxfZW5jb2Rlci0+bmV3X2NydGMgPSB0b19pbnRlbF9j cnRjKGNydGMpOwo+IC0JdG9faW50ZWxfY29ubmVjdG9yKGNvbm5lY3RvciktPm5ld19lbmNvZGVy ID0gaW50ZWxfZW5jb2RlcjsKPiArCQlnb3RvIGZhaWw7Cj4gIAo+ICAJaW50ZWxfY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Yyk7Cj4gLQlpbnRlbF9jcnRjLT5uZXdfZW5hYmxlZCA9IHRydWU7Cj4g IAlvbGQtPmRwbXNfbW9kZSA9IGNvbm5lY3Rvci0+ZHBtczsKPiAgCW9sZC0+bG9hZF9kZXRlY3Rf dGVtcCA9IHRydWU7Cj4gIAlvbGQtPnJlbGVhc2VfZmIgPSBOVUxMOwo+IEBAIC0xMDE5NCw5ICsx MDE4OCw3IEBAIHJldHJ5Ogo+ICAJaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldiwgaW50ZWxfY3J0 Yy0+cGlwZSk7Cj4gIAlyZXR1cm4gdHJ1ZTsKPiAgCj4gLSBmYWlsOgo+IC0JaW50ZWxfY3J0Yy0+ bmV3X2VuYWJsZWQgPSBjcnRjLT5zdGF0ZS0+ZW5hYmxlOwo+IC1mYWlsX3VubG9jazoKPiArZmFp bDoKPiAgCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4gIAlzdGF0ZSA9IE5VTEw7Cj4g IAo+IEBAIC0xMDI0MiwxMCArMTAyMzQsNiBAQCB2b2lkIGludGVsX3JlbGVhc2VfbG9hZF9kZXRl Y3RfcGlwZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJCWlmIChJU19FUlIo Y3J0Y19zdGF0ZSkpCj4gIAkJCWdvdG8gZmFpbDsKPiAgCj4gLQkJdG9faW50ZWxfY29ubmVjdG9y KGNvbm5lY3RvciktPm5ld19lbmNvZGVyID0gTlVMTDsKPiAtCQlpbnRlbF9lbmNvZGVyLT5uZXdf Y3J0YyA9IE5VTEw7Cj4gLQkJaW50ZWxfY3J0Yy0+bmV3X2VuYWJsZWQgPSBmYWxzZTsKPiAtCj4g IAkJY29ubmVjdG9yX3N0YXRlLT5iZXN0X2VuY29kZXIgPSBOVUxMOwo+ICAJCWNvbm5lY3Rvcl9z dGF0ZS0+Y3J0YyA9IE5VTEw7Cj4gIAo+IEBAIC0xMTM5MiwzMyArMTEzODAsNiBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyBpbnRlbF9oZWxwZXJfZnVuY3MgPSB7 Cj4gIAkuYXRvbWljX2ZsdXNoID0gaW50ZWxfZmluaXNoX2NydGNfY29tbWl0LAo+ICB9Owo+ICAK PiAtLyoqCj4gLSAqIGludGVsX21vZGVzZXRfdXBkYXRlX3N0YWdlZF9vdXRwdXRfc3RhdGUKPiAt ICoKPiAtICogVXBkYXRlcyB0aGUgc3RhZ2VkIG91dHB1dCBjb25maWd1cmF0aW9uIHN0YXRlLCBl LmcuIGFmdGVyIHdlJ3ZlIHJlYWQgb3V0IHRoZQo+IC0gKiBjdXJyZW50IGh3IHN0YXRlLgo+IC0g Ki8KPiAtc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNldF91cGRhdGVfc3RhZ2VkX291dHB1dF9zdGF0 ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IC17Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YzsKPiAtCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwo+IC0Jc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yOwo+IC0KPiAtCWZvcl9lYWNoX2ludGVsX2Nvbm5lY3RvcihkZXYs IGNvbm5lY3Rvcikgewo+IC0JCWNvbm5lY3Rvci0+bmV3X2VuY29kZXIgPQo+IC0JCQl0b19pbnRl bF9lbmNvZGVyKGNvbm5lY3Rvci0+YmFzZS5lbmNvZGVyKTsKPiAtCX0KPiAtCj4gLQlmb3JfZWFj aF9pbnRlbF9lbmNvZGVyKGRldiwgZW5jb2Rlcikgewo+IC0JCWVuY29kZXItPm5ld19jcnRjID0K PiAtCQkJdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5iYXNlLmNydGMpOwo+IC0JfQo+IC0KPiAtCWZv cl9lYWNoX2ludGVsX2NydGMoZGV2LCBjcnRjKSB7Cj4gLQkJY3J0Yy0+bmV3X2VuYWJsZWQgPSBj cnRjLT5iYXNlLnN0YXRlLT5lbmFibGU7Cj4gLQl9Cj4gLX0KPiAtCj4gIC8qIFRyYW5zaXRpb25h bCBoZWxwZXIgdG8gY29weSBjdXJyZW50IGNvbm5lY3Rvci9lbmNvZGVyIHN0YXRlIHRvCj4gICAq IGNvbm5lY3Rvci0+c3RhdGUuIFRoaXMgaXMgbmVlZGVkIHNvIHRoYXQgY29kZSB0aGF0IGlzIHBh cnRpYWxseQo+ICAgKiBjb252ZXJ0ZWQgdG8gYXRvbWljIGRvZXMgdGhlIHJpZ2h0IHRoaW5nLgo+ IEBAIC0xMTk0OSw3ICsxMTkxMCw2IEBAIGludGVsX21vZGVzZXRfdXBkYXRlX3N0YXRlKHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCX0KPiAgCj4gIAlkcm1fYXRvbWljX2hlbHBl cl91cGRhdGVfbGVnYWN5X21vZGVzZXRfc3RhdGUoc3RhdGUtPmRldiwgc3RhdGUpOwo+IC0JaW50 ZWxfbW9kZXNldF91cGRhdGVfc3RhZ2VkX291dHB1dF9zdGF0ZShzdGF0ZS0+ZGV2KTsKPiAgCj4g IAkvKiBEb3VibGUgY2hlY2sgc3RhdGUuICovCj4gIAlmb3JfZWFjaF9jcnRjKGRldiwgY3J0Yykg ewo+IEBAIC0xMjI1MywxMSArMTIyMTMsMTQgQEAgY2hlY2tfY29ubmVjdG9yX3N0YXRlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gIAlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3I7 Cj4gIAo+ICAJZm9yX2VhY2hfaW50ZWxfY29ubmVjdG9yKGRldiwgY29ubmVjdG9yKSB7Cj4gKwkJ c3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0gY29ubmVjdG9yLT5iYXNlLmVuY29kZXI7Cj4g KwkJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKnN0YXRlID0gY29ubmVjdG9yLT5iYXNlLnN0 YXRlOwo+ICsKPiAgCQkvKiBUaGlzIGFsc28gY2hlY2tzIHRoZSBlbmNvZGVyL2Nvbm5lY3RvciBo dyBzdGF0ZSB3aXRoIHRoZQo+ICAJCSAqIC0+Z2V0X2h3X3N0YXRlIGNhbGxiYWNrcy4gKi8KPiAg CQlpbnRlbF9jb25uZWN0b3JfY2hlY2tfc3RhdGUoY29ubmVjdG9yKTsKPiAgCj4gLQkJSTkxNV9T VEFURV9XQVJOKCZjb25uZWN0b3ItPm5ld19lbmNvZGVyLT5iYXNlICE9IGNvbm5lY3Rvci0+YmFz ZS5lbmNvZGVyLAo+ICsJCUk5MTVfU1RBVEVfV0FSTihzdGF0ZS0+YmVzdF9lbmNvZGVyICE9IGVu Y29kZXIsCj4gIAkJICAgICAiY29ubmVjdG9yJ3Mgc3RhZ2VkIGVuY29kZXIgZG9lc24ndCBtYXRj aCBjdXJyZW50IGVuY29kZXJcbiIpOwo+ICAJfQo+ICB9Cj4gQEAgLTEyMjc3LDggKzEyMjQwLDYg QEAgY2hlY2tfZW5jb2Rlcl9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCQkgICAg ICBlbmNvZGVyLT5iYXNlLmJhc2UuaWQsCj4gIAkJCSAgICAgIGVuY29kZXItPmJhc2UubmFtZSk7 Cj4gIAo+IC0JCUk5MTVfU1RBVEVfV0FSTigmZW5jb2Rlci0+bmV3X2NydGMtPmJhc2UgIT0gZW5j b2Rlci0+YmFzZS5jcnRjLAo+IC0JCSAgICAgImVuY29kZXIncyBzdGFnZSBjcnRjIGRvZXNuJ3Qg bWF0Y2ggY3VycmVudCBjcnRjXG4iKTsKPiAgCQlJOTE1X1NUQVRFX1dBUk4oZW5jb2Rlci0+Y29u bmVjdG9yc19hY3RpdmUgJiYgIWVuY29kZXItPmJhc2UuY3J0YywKPiAgCQkgICAgICJlbmNvZGVy J3MgYWN0aXZlX2Nvbm5lY3RvcnMgc2V0LCBidXQgbm8gY3J0Y1xuIik7Cj4gIAo+IEBAIC0xMjI4 OCw2ICsxMjI0OSw5IEBAIGNoZWNrX2VuY29kZXJfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiAgCQkJZW5hYmxlZCA9IHRydWU7Cj4gIAkJCWlmIChjb25uZWN0b3ItPmJhc2UuZHBtcyAh PSBEUk1fTU9ERV9EUE1TX09GRikKPiAgCQkJCWFjdGl2ZSA9IHRydWU7Cj4gKwo+ICsJCQlJOTE1 X1NUQVRFX1dBUk4oY29ubmVjdG9yLT5iYXNlLnN0YXRlLT5jcnRjICE9IGVuY29kZXItPmJhc2Uu Y3J0YywKPiArCQkJICAgICAiZW5jb2RlcidzIHN0YWdlIGNydGMgZG9lc24ndCBtYXRjaCBjdXJy ZW50IGNydGNcbiIpOwo+ICAJCX0KPiAgCQkvKgo+ICAJCSAqIGZvciBNU1QgY29ubmVjdG9ycyBp ZiB3ZSB1bnBsdWcgdGhlIGNvbm5lY3RvciBpcyBnb25lCj4gQEAgLTEyNzEzLDExICsxMjY3Nywx MSBAQCB2b2lkIGludGVsX2NydGNfcmVzdG9yZV9tb2RlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK PiAgCSAqIG5lZWQgdG8gY29weSB0aGUgc3RhZ2VkIGNvbmZpZyB0byB0aGUgYXRvbWljIHN0YXRl LCBvdGhlcndpc2UgdGhlCj4gIAkgKiBtb2RlIHNldCB3aWxsIGp1c3QgcmVhcHBseSB0aGUgc3Rh dGUgdGhlIEhXIGlzIGFscmVhZHkgaW4uICovCj4gIAlmb3JfZWFjaF9pbnRlbF9lbmNvZGVyKGRl diwgZW5jb2Rlcikgewo+IC0JCWlmICgmZW5jb2Rlci0+bmV3X2NydGMtPmJhc2UgIT0gY3J0YykK PiArCQlpZiAoZW5jb2Rlci0+YmFzZS5jcnRjICE9IGNydGMpCj4gIAkJCWNvbnRpbnVlOwo+ICAK PiAgCQlmb3JfZWFjaF9pbnRlbF9jb25uZWN0b3IoZGV2LCBjb25uZWN0b3IpIHsKPiAtCQkJaWYg KGNvbm5lY3Rvci0+bmV3X2VuY29kZXIgIT0gZW5jb2RlcikKPiArCQkJaWYgKGNvbm5lY3Rvci0+ YmFzZS5zdGF0ZS0+YmVzdF9lbmNvZGVyICE9ICZlbmNvZGVyLT5iYXNlKQo+ICAJCQkJY29udGlu dWU7Cj4gIAo+ICAJCQljb25uZWN0b3Jfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9jb25uZWN0b3Jf c3RhdGUoc3RhdGUsICZjb25uZWN0b3ItPmJhc2UpOwo+IEBAIC0xMjczMCwxNCArMTI2OTQsMTAg QEAgdm9pZCBpbnRlbF9jcnRjX3Jlc3RvcmVfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4g IAkJCX0KPiAgCj4gIAkJCWNvbm5lY3Rvcl9zdGF0ZS0+Y3J0YyA9IGNydGM7Cj4gLQkJCWNvbm5l Y3Rvcl9zdGF0ZS0+YmVzdF9lbmNvZGVyID0gJmVuY29kZXItPmJhc2U7Cj4gIAkJfQo+ICAJfQo+ ICAKPiAgCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2LCBpbnRlbF9jcnRjKSB7Cj4gLQkJaWYgKGlu dGVsX2NydGMtPm5ld19lbmFibGVkID09IGludGVsX2NydGMtPmJhc2UuZW5hYmxlZCkKPiAtCQkJ Y29udGludWU7Cj4gLQo+ICAJCWNydGNfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3Rh dGUoc3RhdGUsIGludGVsX2NydGMpOwo+ICAJCWlmIChJU19FUlIoY3J0Y19zdGF0ZSkpIHsKPiAg CQkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvIGFkZCBbQ1JUQzolZF0gdG8gc3RhdGU6ICVsZFxu IiwKPiBAQCAtMTI3NDYsOSArMTI3MDYsNiBAQCB2b2lkIGludGVsX2NydGNfcmVzdG9yZV9tb2Rl KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCQkJY29udGludWU7Cj4gIAkJfQo+ICAKPiAtCQlj cnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSA9IGNydGNfc3RhdGUtPmJhc2UuZW5hYmxlID0KPiAtCQkJ aW50ZWxfY3J0Yy0+bmV3X2VuYWJsZWQ7Cj4gLQo+ICAJCWlmICgmaW50ZWxfY3J0Yy0+YmFzZSA9 PSBjcnRjKQo+ICAJCQlkcm1fbW9kZV9jb3B5KCZjcnRjX3N0YXRlLT5iYXNlLm1vZGUsICZjcnRj LT5tb2RlKTsKPiAgCX0KPiBAQCAtMTQ4MjMsNiArMTQ3ODAsNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9zYW5pdGl6ZV9jcnRjKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICAJCSAqIC4uLiAgKi8K PiAgCQlwbGFuZSA9IGNydGMtPnBsYW5lOwo+ICAJCXRvX2ludGVsX3BsYW5lX3N0YXRlKGNydGMt PmJhc2UucHJpbWFyeS0+c3RhdGUpLT52aXNpYmxlID0gdHJ1ZTsKPiArCQljcnRjLT5iYXNlLnBy aW1hcnktPmNydGMgPSAmY3J0Yy0+YmFzZTsKPiAgCQljcnRjLT5wbGFuZSA9ICFwbGFuZTsKPiAg CQlpbnRlbF9jcnRjX2NvbnRyb2woJmNydGMtPmJhc2UsIGZhbHNlKTsKPiAgCQljcnRjLT5wbGFu ZSA9IHBsYW5lOwo+IEBAIC0xNDk4Niw5OSArMTQ5NDQsMjI1IEBAIHN0YXRpYyBib29sIHByaW1h cnlfZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICB7Cj4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBjcnRjLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7 Cj4gIAo+IC0JaWYgKCFjcnRjLT5hY3RpdmUpCj4gKwlpZiAoIWNydGMtPmJhc2UuZW5hYmxlZCkK PiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+ICAJcmV0dXJuIEk5MTVfUkVBRChEU1BDTlRSKGNydGMt PnBsYW5lKSkgJiBESVNQTEFZX1BMQU5FX0VOQUJMRTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQg aW50ZWxfbW9kZXNldF9yZWFkb3V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g K3N0YXRpYyBpbnQgcmVhZG91dF9od19jcnRjX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSwKPiArCQkJCSBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgewo+IC0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCWVudW0g cGlwZSBwaXBlOwo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGM7Cj4gLQlzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlcjsKPiAtCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcjsK PiAtCWludCBpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShzdGF0ZS0+ZGV2KTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ ICsJc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSA9IGNydGMtPmJhc2UucHJpbWFyeTsKPiArCXN0 cnVjdCBkcm1fcGxhbmVfc3RhdGUgKmRybV9wbGFuZV9zdGF0ZTsKPiArCXN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7Cj4gKwlpbnQgcmV0Owo+ICAKPiAtCWZvcl9lYWNoX2lu dGVsX2NydGMoZGV2LCBjcnRjKSB7Cj4gLQkJc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSA9IGNy dGMtPmJhc2UucHJpbWFyeTsKPiAtCQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlOwo+ICsJY3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwg Y3J0Yyk7Cj4gKwlpZiAoSVNfRVJSKGNydGNfc3RhdGUpKQo+ICsJCXJldHVybiBQVFJfRVJSKGNy dGNfc3RhdGUpOwo+ICAKPiAtCQltZW1zZXQoY3J0Yy0+Y29uZmlnLCAwLCBzaXplb2YoKmNydGMt PmNvbmZpZykpOwo+IC0JCWNydGMtPmNvbmZpZy0+YmFzZS5jcnRjID0gJmNydGMtPmJhc2U7Cj4g KwlyZXQgPSBkcm1fYXRvbWljX2FkZF9hZmZlY3RlZF9wbGFuZXMoc3RhdGUsICZjcnRjLT5iYXNl KTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiAgCj4gLQkJY3J0Yy0+Y29uZmlnLT5x dWlya3MgfD0gUElQRV9DT05GSUdfUVVJUktfSU5IRVJJVEVEX01PREU7Cj4gKwltZW1zZXQoY3J0 Y19zdGF0ZSwgMCwgc2l6ZW9mKCpjcnRjX3N0YXRlKSk7Cj4gKwljcnRjX3N0YXRlLT5iYXNlLmNy dGMgPSAmY3J0Yy0+YmFzZTsKPiArCWNydGNfc3RhdGUtPmJhc2Uuc3RhdGUgPSBzdGF0ZTsKPiAg Cj4gLQkJY3J0Yy0+YWN0aXZlID0gZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X3BpcGVfY29uZmlnKGNy dGMsCj4gLQkJCQkJCQkJIGNydGMtPmNvbmZpZyk7Cj4gKwljcnRjX3N0YXRlLT5xdWlya3MgfD0g UElQRV9DT05GSUdfUVVJUktfSU5IRVJJVEVEX01PREU7Cj4gIAo+IC0JCWNydGMtPmJhc2Uuc3Rh dGUtPmVuYWJsZSA9IGNydGMtPmFjdGl2ZTsKPiAtCQljcnRjLT5iYXNlLnN0YXRlLT5hY3RpdmUg PSBjcnRjLT5hY3RpdmU7Cj4gLQkJY3J0Yy0+YmFzZS5lbmFibGVkID0gY3J0Yy0+YWN0aXZlOwo+ ICsJY3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUgPSBjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSA9Cj4g KwljcnRjLT5iYXNlLmVuYWJsZWQgPSBkZXZfcHJpdi0+ZGlzcGxheS5nZXRfcGlwZV9jb25maWco Y3J0YywgY3J0Y19zdGF0ZSk7Cj4gIAo+IC0JCXBsYW5lX3N0YXRlID0gdG9faW50ZWxfcGxhbmVf c3RhdGUocHJpbWFyeS0+c3RhdGUpOwo+IC0JCXBsYW5lX3N0YXRlLT52aXNpYmxlID0gcHJpbWFy eV9nZXRfaHdfc3RhdGUoY3J0Yyk7Cj4gKwkvKiB1cGRhdGUgdHJhbnNpdGlvbmFsIHN0YXRlICov Cj4gKwljcnRjLT5hY3RpdmUgPSBjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZTsKPiArCWNydGMtPmNv bmZpZyA9IGNydGNfc3RhdGU7Cj4gIAo+IC0JCURSTV9ERUJVR19LTVMoIltDUlRDOiVkXSBodyBz dGF0ZSByZWFkb3V0OiAlc1xuIiwKPiAtCQkJICAgICAgY3J0Yy0+YmFzZS5iYXNlLmlkLAo+IC0J CQkgICAgICBjcnRjLT5hY3RpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKPiAtCX0KPiAr CWRybV9wbGFuZV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X3BsYW5lX3N0YXRlKHN0YXRlLCBwcmlt YXJ5KTsKPiArCWlmIChJU19FUlIoZHJtX3BsYW5lX3N0YXRlKSkKPiArCQlyZXR1cm4gUFRSX0VS Uihkcm1fcGxhbmVfc3RhdGUpOwo+ICsKPiArCXBsYW5lX3N0YXRlID0gdG9faW50ZWxfcGxhbmVf c3RhdGUoZHJtX3BsYW5lX3N0YXRlKTsKPiArCXBsYW5lX3N0YXRlLT52aXNpYmxlID0gcHJpbWFy eV9nZXRfaHdfc3RhdGUoY3J0Yyk7Cj4gIAo+ICsJaWYgKHBsYW5lX3N0YXRlLT52aXNpYmxlKSB7 Cj4gKwkJcHJpbWFyeS0+Y3J0YyA9ICZjcnRjLT5iYXNlOwo+ICsJCWNydGNfc3RhdGUtPmJhc2Uu cGxhbmVfbWFzayB8PSAxIDw8IGRybV9wbGFuZV9pbmRleChwcmltYXJ5KTsKPiArCX0gZWxzZQo+ ICsJCWNydGNfc3RhdGUtPmJhc2UucGxhbmVfbWFzayAmPSB+KDEgPDwgZHJtX3BsYW5lX2luZGV4 KHByaW1hcnkpKTsKPiArCj4gKwlEUk1fREVCVUdfS01TKCJbQ1JUQzolZF0gaHcgc3RhdGUgcmVh ZG91dDogJXNcbiIsCj4gKwkJICAgICAgY3J0Yy0+YmFzZS5iYXNlLmlkLAo+ICsJCSAgICAgIGNy dGNfc3RhdGUtPmJhc2UuYWN0aXZlID8gImVuYWJsZWQiIDogImRpc2FibGVkIik7Cj4gKwo+ICsJ cmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgcmVhZG91dF9od19wbGxfc3RhdGUoc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5kZXYpOwo+ICsJc3RydWN0IGludGVsX3No YXJlZF9kcGxsX2NvbmZpZyAqc2hhcmVkX2RwbGw7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YzsKPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ICsJaW50IGk7Cj4g Kwo+ICsJc2hhcmVkX2RwbGwgPSBpbnRlbF9hdG9taWNfZ2V0X3NoYXJlZF9kcGxsX3N0YXRlKHN0 YXRlKTsKPiAgCWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+bnVtX3NoYXJlZF9kcGxsOyBpKysp IHsKPiAgCQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCA9ICZkZXZfcHJpdi0+c2hhcmVk X2RwbGxzW2ldOwo+ICAKPiAgCQlwbGwtPm9uID0gcGxsLT5nZXRfaHdfc3RhdGUoZGV2X3ByaXYs IHBsbCwKPiAtCQkJCQkgICAgJnBsbC0+Y29uZmlnLmh3X3N0YXRlKTsKPiArCQkJCQkgICAgJnNo YXJlZF9kcGxsW2ldLmh3X3N0YXRlKTsKPiArCj4gIAkJcGxsLT5hY3RpdmUgPSAwOwo+IC0JCXBs bC0+Y29uZmlnLmNydGNfbWFzayA9IDA7Cj4gLQkJZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGNy dGMpIHsKPiAtCQkJaWYgKGNydGMtPmFjdGl2ZSAmJiBpbnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxs KGNydGMpID09IHBsbCkgewo+ICsJCXNoYXJlZF9kcGxsW2ldLmNydGNfbWFzayA9IDA7Cj4gKwo+ ICsJCWZvcl9lYWNoX2ludGVsX2NydGMoc3RhdGUtPmRldiwgY3J0Yykgewo+ICsJCQljcnRjX3N0 YXRlID0gaW50ZWxfYXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPiArCQkJaWYg KElTX0VSUihjcnRjX3N0YXRlKSkKPiArCQkJCXJldHVybiBQVFJfRVJSKGNydGNfc3RhdGUpOwo+ ICsKPiArCQkJaWYgKGNydGNfc3RhdGUtPmJhc2UuYWN0aXZlICYmCj4gKwkJCSAgICBjcnRjX3N0 YXRlLT5zaGFyZWRfZHBsbCA9PSBpKSB7Cj4gIAkJCQlwbGwtPmFjdGl2ZSsrOwo+IC0JCQkJcGxs LT5jb25maWcuY3J0Y19tYXNrIHw9IDEgPDwgY3J0Yy0+cGlwZTsKPiArCQkJCXNoYXJlZF9kcGxs W2ldLmNydGNfbWFzayB8PQo+ICsJCQkJCTEgPDwgY3J0Yy0+cGlwZTsKPiAgCQkJfQo+ICAJCX0K PiAgCj4gIAkJRFJNX0RFQlVHX0tNUygiJXMgaHcgc3RhdGUgcmVhZG91dDogY3J0Y19tYXNrIDB4 JTA4eCwgb24gJWlcbiIsCj4gLQkJCSAgICAgIHBsbC0+bmFtZSwgcGxsLT5jb25maWcuY3J0Y19t YXNrLCBwbGwtPm9uKTsKPiArCQkJICAgICAgcGxsLT5uYW1lLCBzaGFyZWRfZHBsbFtpXS5jcnRj X21hc2ssCj4gKwkJCSAgICAgIHBsbC0+b24pOwo+ICAKPiAtCQlpZiAocGxsLT5jb25maWcuY3J0 Y19tYXNrKQo+ICsJCWlmIChzaGFyZWRfZHBsbFtpXS5jcnRjX21hc2spCj4gIAkJCWludGVsX2Rp c3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fUExMUyk7Cj4gIAl9Cj4gIAo+ IC0JZm9yX2VhY2hfaW50ZWxfZW5jb2RlcihkZXYsIGVuY29kZXIpIHsKPiAtCQlwaXBlID0gMDsK PiArCXJldHVybiAwOwo+ICt9Cj4gIAo+IC0JCWlmIChlbmNvZGVyLT5nZXRfaHdfc3RhdGUoZW5j b2RlciwgJnBpcGUpKSB7Cj4gLQkJCWNydGMgPSB0b19pbnRlbF9jcnRjKGRldl9wcml2LT5waXBl X3RvX2NydGNfbWFwcGluZ1twaXBlXSk7Cj4gLQkJCWVuY29kZXItPmJhc2UuY3J0YyA9ICZjcnRj LT5iYXNlOwo+IC0JCQllbmNvZGVyLT5nZXRfY29uZmlnKGVuY29kZXIsIGNydGMtPmNvbmZpZyk7 Cj4gLQkJfSBlbHNlIHsKPiAtCQkJZW5jb2Rlci0+YmFzZS5jcnRjID0gTlVMTDsKPiAtCQl9Cj4g K3N0YXRpYyBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqCj4gK2dldF9jb25uZWN0b3Jfc3Rh dGVfZm9yX2VuY29kZXIoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICsJCQkJc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gK3sKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3I7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubmVjdG9yX3N0 YXRlOwo+ICsJaW50IGk7Cj4gIAo+IC0JCWVuY29kZXItPmNvbm5lY3RvcnNfYWN0aXZlID0gZmFs c2U7Cj4gLQkJRFJNX0RFQlVHX0tNUygiW0VOQ09ERVI6JWQ6JXNdIGh3IHN0YXRlIHJlYWRvdXQ6 ICVzLCBwaXBlICVjXG4iLAo+IC0JCQkgICAgICBlbmNvZGVyLT5iYXNlLmJhc2UuaWQsCj4gLQkJ CSAgICAgIGVuY29kZXItPmJhc2UubmFtZSwKPiAtCQkJICAgICAgZW5jb2Rlci0+YmFzZS5jcnRj ID8gImVuYWJsZWQiIDogImRpc2FibGVkIiwKPiAtCQkJICAgICAgcGlwZV9uYW1lKHBpcGUpKTsK PiAtCX0KPiArCWZvcl9lYWNoX2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yLCBj b25uZWN0b3Jfc3RhdGUsIGkpCj4gKwkJaWYgKGNvbm5lY3Rvcl9zdGF0ZS0+YmVzdF9lbmNvZGVy ID09ICZlbmNvZGVyLT5iYXNlKQo+ICsJCQlyZXR1cm4gY29ubmVjdG9yX3N0YXRlOwo+ICsKPiAr CXJldHVybiBOVUxMOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHJlYWRvdXRfaHdfY29ubmVjdG9y X2VuY29kZXJfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICt7Cj4gKwlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmRldjsKPiArCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YzsKPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqZHJtX2NydGNfc3RhdGU7Cj4g KwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiArCXN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyOwo+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+ ICsJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5lY3Rvcl9zdGF0ZTsKPiArCWVudW0g cGlwZSBwaXBlOwo+ICAKPiAgCWZvcl9lYWNoX2ludGVsX2Nvbm5lY3RvcihkZXYsIGNvbm5lY3Rv cikgewo+ICsJCWNvbm5lY3Rvcl9zdGF0ZSA9Cj4gKwkJCWRybV9hdG9taWNfZ2V0X2Nvbm5lY3Rv cl9zdGF0ZShzdGF0ZSwgJmNvbm5lY3Rvci0+YmFzZSk7Cj4gKwkJaWYgKElTX0VSUihjb25uZWN0 b3Jfc3RhdGUpKQo+ICsJCQlyZXR1cm4gUFRSX0VSUihjb25uZWN0b3Jfc3RhdGUpOwo+ICsKPiAg CQlpZiAoY29ubmVjdG9yLT5nZXRfaHdfc3RhdGUoY29ubmVjdG9yKSkgewo+ICAJCQljb25uZWN0 b3ItPmJhc2UuZHBtcyA9IERSTV9NT0RFX0RQTVNfT047Cj4gLQkJCWNvbm5lY3Rvci0+ZW5jb2Rl ci0+Y29ubmVjdG9yc19hY3RpdmUgPSB0cnVlOwo+ICAJCQljb25uZWN0b3ItPmJhc2UuZW5jb2Rl ciA9ICZjb25uZWN0b3ItPmVuY29kZXItPmJhc2U7Cj4gIAkJfSBlbHNlIHsKPiAgCQkJY29ubmVj dG9yLT5iYXNlLmRwbXMgPSBEUk1fTU9ERV9EUE1TX09GRjsKPiAgCQkJY29ubmVjdG9yLT5iYXNl LmVuY29kZXIgPSBOVUxMOwo+ICAJCX0KPiArCj4gKwkJLyogV2UnbGwgdXBkYXRlIHRoZSBjcnRj IGZpZWxkIHdoZW4gcmVhZGluZyBlbmNvZGVyIHN0YXRlICovCj4gKwkJY29ubmVjdG9yX3N0YXRl LT5jcnRjID0gTlVMTDsKPiArCj4gKwkJY29ubmVjdG9yX3N0YXRlLT5iZXN0X2VuY29kZXIgPSBj b25uZWN0b3ItPmJhc2UuZW5jb2RlcjsKPiArCj4gIAkJRFJNX0RFQlVHX0tNUygiW0NPTk5FQ1RP UjolZDolc10gaHcgc3RhdGUgcmVhZG91dDogJXNcbiIsCj4gIAkJCSAgICAgIGNvbm5lY3Rvci0+ YmFzZS5iYXNlLmlkLAo+ICAJCQkgICAgICBjb25uZWN0b3ItPmJhc2UubmFtZSwKPiAgCQkJICAg ICAgY29ubmVjdG9yLT5iYXNlLmVuY29kZXIgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKPiAg CX0KPiArCj4gKwlmb3JfZWFjaF9pbnRlbF9lbmNvZGVyKGRldiwgZW5jb2Rlcikgewo+ICsJCXBp cGUgPSAwOwo+ICsKPiArCQljb25uZWN0b3Jfc3RhdGUgPQo+ICsJCQlnZXRfY29ubmVjdG9yX3N0 YXRlX2Zvcl9lbmNvZGVyKHN0YXRlLCBlbmNvZGVyKTsKPiArCj4gKwkJZW5jb2Rlci0+Y29ubmVj dG9yc19hY3RpdmUgPSAhIWNvbm5lY3Rvcl9zdGF0ZTsKPiArCj4gKwkJaWYgKGVuY29kZXItPmdl dF9od19zdGF0ZShlbmNvZGVyLCAmcGlwZSkpIHsKPiArCQkJZW5jb2Rlci0+YmFzZS5jcnRjID0K PiArCQkJCWRldl9wcml2LT5waXBlX3RvX2NydGNfbWFwcGluZ1twaXBlXTsKPiArCQkJY3J0YyA9 IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsKPiArCj4gKwkJCWRybV9jcnRjX3N0 YXRlID0KPiArCQkJCXN0YXRlLT5jcnRjX3N0YXRlc1tkcm1fY3J0Y19pbmRleCgmY3J0Yy0+YmFz ZSldOwo+ICsJCQljcnRjX3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShkcm1fY3J0Y19zdGF0 ZSk7Cj4gKwo+ICsJCQllbmNvZGVyLT5nZXRfY29uZmlnKGVuY29kZXIsIGNydGNfc3RhdGUpOwo+ ICsKPiArCQkJaWYgKGNvbm5lY3Rvcl9zdGF0ZSkKPiArCQkJCWNvbm5lY3Rvcl9zdGF0ZS0+Y3J0 YyA9ICZjcnRjLT5iYXNlOwo+ICsJCX0gZWxzZSB7Cj4gKwkJCWVuY29kZXItPmJhc2UuY3J0YyA9 IE5VTEw7Cj4gKwkJfQo+ICsKPiArCQlEUk1fREVCVUdfS01TKCJbRU5DT0RFUjolZDolc10gaHcg c3RhdGUgcmVhZG91dDogJXMsIHBpcGUgJWNcbiIsCj4gKwkJCSAgICAgIGVuY29kZXItPmJhc2Uu YmFzZS5pZCwKPiArCQkJICAgICAgZW5jb2Rlci0+YmFzZS5uYW1lLAo+ICsJCQkgICAgICBlbmNv ZGVyLT5iYXNlLmNydGMgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiLAo+ICsJCQkgICAgICBwaXBl X25hbWUocGlwZSkpOwo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMg c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKgo+ICtpbnRlbF9tb2Rlc2V0X3JlYWRvdXRfaHdfc3Rh dGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0IGludGVsX2NydGMgKmNy dGM7Cj4gKwlpbnQgcmV0ID0gMDsKPiArCj4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGU7Cj4gKwo+ICsJc3RhdGUgPSBkcm1fYXRvbWljX3N0YXRlX2FsbG9jKGRldik7Cj4gKwlpZiAo IXN0YXRlKQo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICsKPiArCXN0YXRlLT5hY3F1 aXJlX2N0eCA9IGRldi0+bW9kZV9jb25maWcuYWNxdWlyZV9jdHg7Cj4gKwo+ICsJZm9yX2VhY2hf aW50ZWxfY3J0YyhkZXYsIGNydGMpIHsKPiArCQlyZXQgPSByZWFkb3V0X2h3X2NydGNfc3RhdGUo c3RhdGUsIGNydGMpOwo+ICsJCWlmIChyZXQpCj4gKwkJCWdvdG8gZXJyX2ZyZWU7Cj4gKwl9Cj4g Kwo+ICsJcmV0ID0gcmVhZG91dF9od19wbGxfc3RhdGUoc3RhdGUpOwo+ICsJaWYgKHJldCkKPiAr CQlnb3RvIGVycl9mcmVlOwo+ICsKPiArCXJldCA9IHJlYWRvdXRfaHdfY29ubmVjdG9yX2VuY29k ZXJfc3RhdGUoc3RhdGUpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIGVycl9mcmVlOwo+ICsKPiAr CXJldHVybiBzdGF0ZTsKPiArCj4gK2Vycl9mcmVlOgo+ICsJZHJtX2F0b21pY19zdGF0ZV9mcmVl KHN0YXRlKTsKPiArCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gIH0KPiAgCj4gIC8qIFNjYW4gb3V0 IHRoZSBjdXJyZW50IGh3IG1vZGVzZXQgc3RhdGUsIHNhbml0aXplcyBpdCBhbmQgbWFwcyBpdCBp bnRvIHRoZSBkcm0KPiBAQCAtMTUwODcsMzcgKzE1MTcxLDU3IEBAIHZvaWQgaW50ZWxfbW9kZXNl dF9zZXR1cF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQkJICBib29sIGZv cmNlX3Jlc3RvcmUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQllbnVtIHBpcGUgcGlwZTsKPiAtCXN0cnVjdCBpbnRlbF9j cnRjICpjcnRjOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+ICsJc3RydWN0IGRybV9jcnRj X3N0YXRlICpjcnRjX3N0YXRlOwo+ICAJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7Cj4g KwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfc2hhcmVk X2RwbGxfY29uZmlnIHNoYXJlZF9kcGxsc1tJOTE1X05VTV9QTExTXTsKPiAgCWludCBpOwo+ICAK PiAtCWludGVsX21vZGVzZXRfcmVhZG91dF9od19zdGF0ZShkZXYpOwo+IC0KPiAtCS8qCj4gLQkg KiBOb3cgdGhhdCB3ZSBoYXZlIHRoZSBjb25maWcsIGNvcHkgaXQgdG8gZWFjaCBDUlRDIHN0cnVj dAo+IC0JICogTm90ZSB0aGF0IHRoaXMgY291bGQgZ28gYXdheSBpZiB3ZSBtb3ZlIHRvIHVzaW5n IGNydGNfY29uZmlnCj4gLQkgKiBjaGVja2luZyBldmVyeXdoZXJlLgo+IC0JICovCj4gLQlmb3Jf ZWFjaF9pbnRlbF9jcnRjKGRldiwgY3J0Yykgewo+IC0JCWlmIChjcnRjLT5hY3RpdmUgJiYgaTkx NS5mYXN0Ym9vdCkgewo+IC0JCQlpbnRlbF9tb2RlX2Zyb21fcGlwZV9jb25maWcoJmNydGMtPmJh c2UubW9kZSwKPiAtCQkJCQkJICAgIGNydGMtPmNvbmZpZyk7Cj4gLQkJCURSTV9ERUJVR19LTVMo IltDUlRDOiVkXSBmb3VuZCBhY3RpdmUgbW9kZTogIiwKPiAtCQkJCSAgICAgIGNydGMtPmJhc2Uu YmFzZS5pZCk7Cj4gLQkJCWRybV9tb2RlX2RlYnVnX3ByaW50bW9kZWxpbmUoJmNydGMtPmJhc2Uu bW9kZSk7Cj4gLQkJfQo+ICsJc3RhdGUgPSBpbnRlbF9tb2Rlc2V0X3JlYWRvdXRfaHdfc3RhdGUo ZGV2KTsKPiArCWlmIChJU19FUlIoc3RhdGUpKSB7Cj4gKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8g cmVhZCBvdXQgaHcgc3RhdGVcbiIpOwo+ICsJCXJldHVybjsKPiAgCX0KPiAgCj4gKwlkcm1fYXRv bWljX2hlbHBlcl9zd2FwX3N0YXRlKGRldiwgc3RhdGUpOwo+ICsKPiArCS8qIHN3YXAgc3cvaHcg ZHBsbCBzdGF0ZSAqLwo+ICsJaW50ZWxfYXRvbWljX2R1cGxpY2F0ZV9kcGxsX3N0YXRlKGRldl9w cml2LCBzaGFyZWRfZHBsbHMpOwo+ICsJaW50ZWxfc2hhcmVkX2RwbGxfY29tbWl0KHN0YXRlKTsK PiArCW1lbWNweSh0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpLT5zaGFyZWRfZHBsbCwKPiAr CSAgICAgICBzaGFyZWRfZHBsbHMsIHNpemVvZigqc2hhcmVkX2RwbGxzKSAqIGRldl9wcml2LT5u dW1fc2hhcmVkX2RwbGwpOwo+ICsKPiAgCS8qIEhXIHN0YXRlIGlzIHJlYWQgb3V0LCBub3cgd2Ug bmVlZCB0byBzYW5pdGl6ZSB0aGlzIG1lc3MuICovCj4gIAlmb3JfZWFjaF9pbnRlbF9lbmNvZGVy KGRldiwgZW5jb2Rlcikgewo+ICAJCWludGVsX3Nhbml0aXplX2VuY29kZXIoZW5jb2Rlcik7Cj4g IAl9Cj4gIAo+IC0JZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkgewo+IC0JCWNydGMgPSB0 b19pbnRlbF9jcnRjKGRldl9wcml2LT5waXBlX3RvX2NydGNfbWFwcGluZ1twaXBlXSk7Cj4gLQkJ aW50ZWxfc2FuaXRpemVfY3J0YyhjcnRjKTsKPiAtCQlpbnRlbF9kdW1wX3BpcGVfY29uZmlnKGNy dGMsIGNydGMtPmNvbmZpZywKPiArCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMs IGNydGNfc3RhdGUsIGkpIHsKPiArCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Yyk7Cj4gKwo+ICsJCS8qIHByZXZlbnQgdW5ubmVlZGVkIHJlc3RvcmVz IHdpdGggZm9yY2VfcmVzdG9yZSAqLwo+ICsJCWNydGNfc3RhdGUtPmFjdGl2ZV9jaGFuZ2VkID0K PiArCQljcnRjX3N0YXRlLT5tb2RlX2NoYW5nZWQgPQo+ICsJCWNydGNfc3RhdGUtPnBsYW5lc19j aGFuZ2VkID0gZmFsc2U7Cj4gKwo+ICsJCWlmIChjcnRjLT5lbmFibGVkKSB7Cj4gKwkJCWludGVs X21vZGVfZnJvbV9waXBlX2NvbmZpZygmY3J0Yy0+c3RhdGUtPm1vZGUsCj4gKwkJCQl0b19pbnRl bF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKSk7Cj4gKwo+ICsJCQlkcm1fbW9kZV9jb3B5KCZjcnRj LT5tb2RlLCAmY3J0Yy0+c3RhdGUtPm1vZGUpOwo+ICsJCQlkcm1fbW9kZV9jb3B5KCZjcnRjLT5o d21vZGUsCj4gKwkJCQkgICAgICAmY3J0Yy0+c3RhdGUtPmFkanVzdGVkX21vZGUpOwo+ICsJCX0K PiArCj4gKwkJaW50ZWxfc2FuaXRpemVfY3J0YyhpbnRlbF9jcnRjKTsKPiArCj4gKwkJLyoKPiAr CQkgKiBzYW5pdGl6ZV9jcnRjIG1heSBoYXZlIGZvcmNlZCBhbiB1cGRhdGUgb2YgY3J0Yy0+c3Rh dGUsCj4gKwkJICogc28gcmVsb2FkIGluIGludGVsX2R1bXBfcGlwZV9jb25maWcKPiArCQkgKi8K PiArCQlpbnRlbF9kdW1wX3BpcGVfY29uZmlnKGludGVsX2NydGMsCj4gKwkJCQkgICAgICAgdG9f aW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSksCj4gIAkJCQkgICAgICAgIltzZXR1cF9od19z dGF0ZV0iKTsKPiAgCX0KPiAgCj4gQEAgLTE1MTQxLDIwICsxNTI0NSwxNyBAQCB2b2lkIGludGVs X21vZGVzZXRfc2V0dXBfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQlpbGtf d21fZ2V0X2h3X3N0YXRlKGRldik7Cj4gIAo+ICAJaWYgKGZvcmNlX3Jlc3RvcmUpIHsKPiAtCQlp OTE1X3JlZGlzYWJsZV92Z2EoZGV2KTsKPiArCQlpbnQgcmV0Owo+ICAKPiAtCQkvKgo+IC0JCSAq IFdlIG5lZWQgdG8gdXNlIHJhdyBpbnRlcmZhY2VzIGZvciByZXN0b3Jpbmcgc3RhdGUgdG8gYXZv aWQKPiAtCQkgKiBjaGVja2luZyAoYm9ndXMpIGludGVybWVkaWF0ZSBzdGF0ZXMuCj4gLQkJICov Cj4gLQkJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkgewo+IC0JCQlzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMgPQo+IC0JCQkJZGV2X3ByaXYtPnBpcGVfdG9fY3J0Y19tYXBwaW5nW3BpcGVdOwo+ ICsJCWk5MTVfcmVkaXNhYmxlX3ZnYShkZXYpOwo+ICAKPiAtCQkJaW50ZWxfY3J0Y19yZXN0b3Jl X21vZGUoY3J0Yyk7Cj4gKwkJcmV0ID0gaW50ZWxfc2V0X21vZGUoc3RhdGUpOwo+ICsJCWlmIChy ZXQpIHsKPiArCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gcmVzdG9yZSBwcmV2aW91cyBtb2RlXG4i KTsKPiArCQkJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKPiAgCQl9Cj4gIAl9IGVsc2Ug ewo+IC0JCWludGVsX21vZGVzZXRfdXBkYXRlX3N0YWdlZF9vdXRwdXRfc3RhdGUoZGV2KTsKPiAr CQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+ICAJfQo+ICAKPiAgCWludGVsX21vZGVz ZXRfY2hlY2tfc3RhdGUoZGV2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IGRk YWUyOGFjNGU2Zi4uMDE4MzA1MzJiMzNlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgK PiBAQCAtMTMwLDExICsxMzAsNiBAQCBzdHJ1Y3QgaW50ZWxfZmJkZXYgewo+ICAKPiAgc3RydWN0 IGludGVsX2VuY29kZXIgewo+ICAJc3RydWN0IGRybV9lbmNvZGVyIGJhc2U7Cj4gLQkvKgo+IC0J ICogVGhlIG5ldyBjcnRjIHRoaXMgZW5jb2RlciB3aWxsIGJlIGRyaXZlbiBmcm9tLiBPbmx5IGRp ZmZlcnMgZnJvbQo+IC0JICogYmFzZS0+Y3J0YyB3aGlsZSBhIG1vZGVzZXQgaXMgaW4gcHJvZ3Jl c3MuCj4gLQkgKi8KPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpuZXdfY3J0YzsKPiAgCj4gIAllbnVt IGludGVsX291dHB1dF90eXBlIHR5cGU7Cj4gIAl1bnNpZ25lZCBpbnQgY2xvbmVhYmxlOwo+IEBA IC0xOTUsMTIgKzE5MCw2IEBAIHN0cnVjdCBpbnRlbF9jb25uZWN0b3Igewo+ICAJICovCj4gIAlz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsKPiAgCj4gLQkvKgo+IC0JICogVGhlIG5ldyBl bmNvZGVyIHRoaXMgY29ubmVjdG9yIHdpbGwgYmUgZHJpdmVuLiBPbmx5IGRpZmZlcnMgZnJvbQo+ IC0JICogZW5jb2RlciB3aGlsZSBhIG1vZGVzZXQgaXMgaW4gcHJvZ3Jlc3MuCj4gLQkgKi8KPiAt CXN0cnVjdCBpbnRlbF9lbmNvZGVyICpuZXdfZW5jb2RlcjsKPiAtCj4gIAkvKiBSZWFkcyBvdXQg dGhlIGN1cnJlbnQgaHcsIHJldHVybmluZyB0cnVlIGlmIHRoZSBjb25uZWN0b3IgaXMgZW5hYmxl ZAo+ICAJICogYW5kIGFjdGl2ZSAoaS5lLiBkcG1zIE9OIHN0YXRlKS4gKi8KPiAgCWJvb2wgKCpn ZXRfaHdfc3RhdGUpKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKik7Cj4gQEAgLTUzNSw3ICs1MjQs NiBAQCBzdHJ1Y3QgaW50ZWxfY3J0YyB7Cj4gIAo+ICAJc3RydWN0IGludGVsX2luaXRpYWxfcGxh bmVfY29uZmlnIHBsYW5lX2NvbmZpZzsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjb25m aWc7Cj4gLQlib29sIG5ld19lbmFibGVkOwo+ICAKPiAgCS8qIHJlc2V0IGNvdW50ZXIgdmFsdWUg d2hlbiB0aGUgbGFzdCBmbGlwIHdhcyBzdWJtaXR0ZWQgKi8KPiAgCXVuc2lnbmVkIGludCByZXNl dF9jb3VudGVyOwo+IEBAIC0xNDE3LDYgKzE0MDUsOCBAQCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqaW50ZWxfYXRvbWljX3N0YXRlX2FsbG9jKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICB2 b2lkIGludGVsX2F0b21pY19zdGF0ZV9jbGVhcihzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqKTsK PiAgc3RydWN0IGludGVsX3NoYXJlZF9kcGxsX2NvbmZpZyAqCj4gIGludGVsX2F0b21pY19nZXRf c2hhcmVkX2RwbGxfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnMpOwo+ICt2b2lkIGlu dGVsX2F0b21pY19kdXBsaWNhdGVfZHBsbF9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq LAo+ICsJCQkJICAgICAgIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbF9jb25maWcgKik7Cj4gIAo+ ICBzdGF0aWMgaW5saW5lIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICoKPiAgaW50ZWxfYXRvbWlj X2dldF9jcnRjX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAtLSAKPiAy LjEuMAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Cj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4CgotLSAKTWF0dCBSb3BlcgpHcmFwaGljcyBTb2Z0d2FyZSBFbmdpbmVlcgpJb1RHIFBsYXRm b3JtIEVuYWJsaW5nICYgRGV2ZWxvcG1lbnQKSW50ZWwgQ29ycG9yYXRpb24KKDkxNikgMzU2LTI3 OTUKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK