From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH 1/2] drm/i915: Make modeset state checker take crtc as argument. Date: Thu, 7 Apr 2016 16:22:46 -0700 Message-ID: <20160407232246.GG22764@intel.com> References: <1458741487-23801-1-git-send-email-maarten.lankhorst@linux.intel.com> <1458741487-23801-2-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 mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 3FE296E0A4 for ; Thu, 7 Apr 2016 23:22:47 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1458741487-23801-2-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: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBNYXIgMjMsIDIwMTYgYXQgMDI6NTg6MDZQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gVGhpcyB3aWxsIG1ha2UgaXQgZWFzaWVyIHRvIGtlZXAgdGhlIGNydGMgY2hl Y2tlciB3aGVuIGF0b21pYwo+IGNvbW1pdCBpcyByZXdvcmtlZCB0byB0YWtlIGEgaW50ZWxfZmxp cF93b3JrLgoKTG9va3MgZ29vZCBvdmVyYWxsLiAgWW91IG1pZ2h0IHdhbnQgdG8gZXhwYW5kIHRo ZSBjb21taXQgbWVzc2FnZQpzbGlnaHRseSBzaW5jZSAnaW50ZWxfZmxpcF93b3JrJyBpc24ndCBz b21ldGhpbmcgdGhhdCBleGlzdHMgaW4gdG9kYXkncwpkcml2ZXIuICBJIGFzc3VtZSBpbnRlbF9m bGlwX3dvcmsgd2lsbCByZWZlciB0byB0aGUgd29yayBzdHJ1Y3R1cmUgdG8KdHJhY2sgYXN5bmNo cm9ub3VzIGNvbW1pdHM/CgpFdmVuIHRob3VnaCB0aGlzIHBhdGNoIGhlbHBzIGVuc3VyZSB0aGF0 IHdlIGRvbid0IGNoZWNrIENSVEMncyB0aGF0CndlcmVuJ3QgdXBkYXRlZCBhcyBwYXJ0IG9mIHRo aXMgdHJhbnNhY3Rpb24gKGFuZCB0aGF0IGNvdWxkIGhhdmUgaGFkCnJhY2luZyB0cmFuc2FjdGlv bnMgaGFwcGVuaW5nKSwgaXQgc2VlbXMgdG8gbWUgdGhhdCB0aGUgY2hlY2tfZGlzYWJsZWQKcGFy dCBvZiB0aGUgdGVzdHMgd2lsbCByZW1haW4gdW5zYWZlLCByaWdodD8gIEFzIGZhciBhcyBJIGtu b3csIHdlIGRvbid0CmhhdmUgYW55IGxvY2tzIHRoYXQgYXJlIGd1YXJhbnRlZWQgdG8gY292ZXIg dGhlIHN0cnVjdHVyZXMgeW91J3JlCnRlc3RpbmcgaW4gdGhhdCBjYXNlLiAgSXQgc2VlbXMgbGlr ZSBpZiB3ZSB3YW50IHRvIG1ha2UgdGhhdCBwYXJ0IG9mIHRoZQp0ZXN0IHNhZmUsIHdlJ2Qgb25s eSBiZSBhYmxlIHRvIGRvIHNvIGlmIHdlIHdhaXRlZCBmb3IgdGhlIHN5c3RlbSB0bwpxdWllc2Nl LgoKQW55d2F5LCB0aGlzIGlzIGRlZmluaXRlbHkgYSBtb3ZlIGluIHRoZSByaWdodCBkaXJlY3Rp b24sIHNvCgpSZXZpZXdlZC1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNv bT4KCgo+IAo+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmto b3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYyB8IDMxNiArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQo+ICAx IGZpbGUgY2hhbmdlZCwgMTgzIGluc2VydGlvbnMoKyksIDEzMyBkZWxldGlvbnMoLSkKPiAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggNTFmOTEzZmIxOTlkLi40MTQ4 YjI2MmYyYTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTEy NzQ3LDQ4ICsxMjc0Nyw0MyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9waXBlX2NvbmZpZ19zYW5pdHlf Y2hlY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJfQo+ICB9Cj4gIAo+ IC1zdGF0aWMgdm9pZCBjaGVja193bV9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICtz dGF0aWMgdm9pZCBjaGVja193bV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gKwkJCSAg IHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqbmV3X3N0YXRlKQo+ICB7Cj4gKwlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gaHdf ZGRiLCAqc3dfZGRiOwo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGM7Cj4gKwlzdHJ1 Y3Qgc2tsX2RkYl9lbnRyeSAqaHdfZW50cnksICpzd19lbnRyeTsKPiArCXN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiArCWNvbnN0IGVudW0gcGlw ZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAgCWludCBwbGFuZTsKPiAgCj4gLQlpZiAoSU5U RUxfSU5GTyhkZXYpLT5nZW4gPCA5KQo+ICsJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOSB8 fCAhbmV3X3N0YXRlLT5hY3RpdmUpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCXNrbF9kZGJfZ2V0X2h3 X3N0YXRlKGRldl9wcml2LCAmaHdfZGRiKTsKPiAgCXN3X2RkYiA9ICZkZXZfcHJpdi0+d20uc2ts X2h3LmRkYjsKPiAgCj4gLQlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgaW50ZWxfY3J0Yykgewo+ IC0JCXN0cnVjdCBza2xfZGRiX2VudHJ5ICpod19lbnRyeSwgKnN3X2VudHJ5Owo+IC0JCWNvbnN0 IGVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiArCS8qIHBsYW5lcyAqLwo+ICsJ Zm9yX2VhY2hfcGxhbmUoZGV2X3ByaXYsIHBpcGUsIHBsYW5lKSB7Cj4gKwkJaHdfZW50cnkgPSAm aHdfZGRiLnBsYW5lW3BpcGVdW3BsYW5lXTsKPiArCQlzd19lbnRyeSA9ICZzd19kZGItPnBsYW5l W3BpcGVdW3BsYW5lXTsKPiAgCj4gLQkJaWYgKCFpbnRlbF9jcnRjLT5hY3RpdmUpCj4gKwkJaWYg KHNrbF9kZGJfZW50cnlfZXF1YWwoaHdfZW50cnksIHN3X2VudHJ5KSkKPiAgCQkJY29udGludWU7 Cj4gIAo+IC0JCS8qIHBsYW5lcyAqLwo+IC0JCWZvcl9lYWNoX3BsYW5lKGRldl9wcml2LCBwaXBl LCBwbGFuZSkgewo+IC0JCQlod19lbnRyeSA9ICZod19kZGIucGxhbmVbcGlwZV1bcGxhbmVdOwo+ IC0JCQlzd19lbnRyeSA9ICZzd19kZGItPnBsYW5lW3BpcGVdW3BsYW5lXTsKPiAtCj4gLQkJCWlm IChza2xfZGRiX2VudHJ5X2VxdWFsKGh3X2VudHJ5LCBzd19lbnRyeSkpCj4gLQkJCQljb250aW51 ZTsKPiAtCj4gLQkJCURSTV9FUlJPUigibWlzbWF0Y2ggaW4gRERCIHN0YXRlIHBpcGUgJWMgcGxh bmUgJWQgIgo+IC0JCQkJICAiKGV4cGVjdGVkICgldSwldSksIGZvdW5kICgldSwldSkpXG4iLAo+ IC0JCQkJICBwaXBlX25hbWUocGlwZSksIHBsYW5lICsgMSwKPiAtCQkJCSAgc3dfZW50cnktPnN0 YXJ0LCBzd19lbnRyeS0+ZW5kLAo+IC0JCQkJICBod19lbnRyeS0+c3RhcnQsIGh3X2VudHJ5LT5l bmQpOwo+IC0JCX0KPiAtCj4gLQkJLyogY3Vyc29yICovCj4gLQkJaHdfZW50cnkgPSAmaHdfZGRi LnBsYW5lW3BpcGVdW1BMQU5FX0NVUlNPUl07Cj4gLQkJc3dfZW50cnkgPSAmc3dfZGRiLT5wbGFu ZVtwaXBlXVtQTEFORV9DVVJTT1JdOwo+ICsJCURSTV9FUlJPUigibWlzbWF0Y2ggaW4gRERCIHN0 YXRlIHBpcGUgJWMgcGxhbmUgJWQgIgo+ICsJCQkgICIoZXhwZWN0ZWQgKCV1LCV1KSwgZm91bmQg KCV1LCV1KSlcbiIsCj4gKwkJCSAgcGlwZV9uYW1lKHBpcGUpLCBwbGFuZSArIDEsCj4gKwkJCSAg c3dfZW50cnktPnN0YXJ0LCBzd19lbnRyeS0+ZW5kLAo+ICsJCQkgIGh3X2VudHJ5LT5zdGFydCwg aHdfZW50cnktPmVuZCk7Cj4gKwl9Cj4gIAo+IC0JCWlmIChza2xfZGRiX2VudHJ5X2VxdWFsKGh3 X2VudHJ5LCBzd19lbnRyeSkpCj4gLQkJCWNvbnRpbnVlOwo+ICsJLyogY3Vyc29yICovCj4gKwlo d19lbnRyeSA9ICZod19kZGIucGxhbmVbcGlwZV1bUExBTkVfQ1VSU09SXTsKPiArCXN3X2VudHJ5 ID0gJnN3X2RkYi0+cGxhbmVbcGlwZV1bUExBTkVfQ1VSU09SXTsKPiAgCj4gKwlpZiAoIXNrbF9k ZGJfZW50cnlfZXF1YWwoaHdfZW50cnksIHN3X2VudHJ5KSkgewo+ICAJCURSTV9FUlJPUigibWlz bWF0Y2ggaW4gRERCIHN0YXRlIHBpcGUgJWMgY3Vyc29yICIKPiAgCQkJICAiKGV4cGVjdGVkICgl dSwldSksIGZvdW5kICgldSwldSkpXG4iLAo+ICAJCQkgIHBpcGVfbmFtZShwaXBlKSwKPiBAQCAt MTI3OTgsMTkgKzEyNzkzLDE3IEBAIHN0YXRpYyB2b2lkIGNoZWNrX3dtX3N0YXRlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkCj4gLWNoZWNrX2Nvbm5lY3Rv cl9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IC0JCSAgICAgIHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpvbGRfc3RhdGUpCj4gK2NoZWNrX2Nvbm5lY3Rvcl9zdGF0ZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIHsKPiAtCXN0cnVjdCBkcm1f Y29ubmVjdG9yX3N0YXRlICpvbGRfY29ubl9zdGF0ZTsKPiAgCXN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3I7Cj4gLQlpbnQgaTsKPiAgCj4gLQlmb3JfZWFjaF9jb25uZWN0b3JfaW5fc3Rh dGUob2xkX3N0YXRlLCBjb25uZWN0b3IsIG9sZF9jb25uX3N0YXRlLCBpKSB7Cj4gKwlkcm1fZm9y X2VhY2hfY29ubmVjdG9yKGNvbm5lY3RvciwgZGV2KSB7Cj4gIAkJc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyID0gY29ubmVjdG9yLT5lbmNvZGVyOwo+ICAJCXN0cnVjdCBkcm1fY29ubmVjdG9y X3N0YXRlICpzdGF0ZSA9IGNvbm5lY3Rvci0+c3RhdGU7Cj4gIAo+IC0JCS8qIFRoaXMgYWxzbyBj aGVja3MgdGhlIGVuY29kZXIvY29ubmVjdG9yIGh3IHN0YXRlIHdpdGggdGhlCj4gLQkJICogLT5n ZXRfaHdfc3RhdGUgY2FsbGJhY2tzLiAqLwo+ICsJCWlmIChzdGF0ZS0+Y3J0YyAhPSBjcnRjKQo+ ICsJCQljb250aW51ZTsKPiArCj4gIAkJaW50ZWxfY29ubmVjdG9yX2NoZWNrX3N0YXRlKHRvX2lu dGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpKTsKPiAgCj4gIAkJSTkxNV9TVEFURV9XQVJOKHN0YXRl LT5iZXN0X2VuY29kZXIgIT0gZW5jb2RlciwKPiBAQCAtMTI4NTksMTQ0ICsxMjg1MiwyMDEgQEAg Y2hlY2tfZW5jb2Rlcl9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICB9Cj4gIAo+ICBz dGF0aWMgdm9pZAo+IC1jaGVja19jcnRjX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCj4gK2NoZWNrX2NydGNfc3RhdGUoc3Ry dWN0IGRybV9jcnRjICpjcnRjLAo+ICsJCSBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRj X3N0YXRlLAo+ICsJCSBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKQo+ICB7 Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyOwo+IC0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19z dGF0ZTsKPiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiAtCWludCBpOwo+IC0KPiAtCWZvcl9l YWNoX2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgaSkgewo+ IC0JCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsK PiAtCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsICpzd19jb25maWc7Cj4g LQkJYm9vbCBhY3RpdmU7Cj4gLQo+IC0JCWlmICghbmVlZHNfbW9kZXNldChjcnRjLT5zdGF0ZSkg JiYKPiAtCQkgICAgIXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpLT51cGRhdGVfcGlw ZSkKPiAtCQkJY29udGludWU7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25m aWcsICpzd19jb25maWc7Cj4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlOwo+ ICsJYm9vbCBhY3RpdmU7Cj4gIAo+IC0JCV9fZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kZXN0cm95 X3N0YXRlKGNydGMsIG9sZF9jcnRjX3N0YXRlKTsKPiAtCQlwaXBlX2NvbmZpZyA9IHRvX2ludGVs X2NydGNfc3RhdGUob2xkX2NydGNfc3RhdGUpOwo+IC0JCW1lbXNldChwaXBlX2NvbmZpZywgMCwg c2l6ZW9mKCpwaXBlX2NvbmZpZykpOwo+IC0JCXBpcGVfY29uZmlnLT5iYXNlLmNydGMgPSBjcnRj Owo+IC0JCXBpcGVfY29uZmlnLT5iYXNlLnN0YXRlID0gb2xkX3N0YXRlOwo+ICsJb2xkX3N0YXRl ID0gb2xkX2NydGNfc3RhdGUtPnN0YXRlOwo+ICsJX19kcm1fYXRvbWljX2hlbHBlcl9jcnRjX2Rl c3Ryb3lfc3RhdGUoY3J0Yywgb2xkX2NydGNfc3RhdGUpOwo+ICsJcGlwZV9jb25maWcgPSB0b19p bnRlbF9jcnRjX3N0YXRlKG9sZF9jcnRjX3N0YXRlKTsKPiArCW1lbXNldChwaXBlX2NvbmZpZywg MCwgc2l6ZW9mKCpwaXBlX2NvbmZpZykpOwo+ICsJcGlwZV9jb25maWctPmJhc2UuY3J0YyA9IGNy dGM7Cj4gKwlwaXBlX2NvbmZpZy0+YmFzZS5zdGF0ZSA9IG9sZF9zdGF0ZTsKPiAgCj4gLQkJRFJN X0RFQlVHX0tNUygiW0NSVEM6JWRdXG4iLAo+IC0JCQkgICAgICBjcnRjLT5iYXNlLmlkKTsKPiAr CURSTV9ERUJVR19LTVMoIltDUlRDOiVkXVxuIiwgY3J0Yy0+YmFzZS5pZCk7Cj4gIAo+IC0JCWFj dGl2ZSA9IGRldl9wcml2LT5kaXNwbGF5LmdldF9waXBlX2NvbmZpZyhpbnRlbF9jcnRjLAo+IC0J CQkJCQkJICAgcGlwZV9jb25maWcpOwo+ICsJYWN0aXZlID0gZGV2X3ByaXYtPmRpc3BsYXkuZ2V0 X3BpcGVfY29uZmlnKGludGVsX2NydGMsIHBpcGVfY29uZmlnKTsKPiAgCj4gLQkJLyogaHcgc3Rh dGUgaXMgaW5jb25zaXN0ZW50IHdpdGggdGhlIHBpcGUgcXVpcmsgKi8KPiAtCQlpZiAoKGludGVs X2NydGMtPnBpcGUgPT0gUElQRV9BICYmIGRldl9wcml2LT5xdWlya3MgJiBRVUlSS19QSVBFQV9G T1JDRSkgfHwKPiAtCQkgICAgKGludGVsX2NydGMtPnBpcGUgPT0gUElQRV9CICYmIGRldl9wcml2 LT5xdWlya3MgJiBRVUlSS19QSVBFQl9GT1JDRSkpCj4gLQkJCWFjdGl2ZSA9IGNydGMtPnN0YXRl LT5hY3RpdmU7Cj4gKwkvKiBodyBzdGF0ZSBpcyBpbmNvbnNpc3RlbnQgd2l0aCB0aGUgcGlwZSBx dWlyayAqLwo+ICsJaWYgKChpbnRlbF9jcnRjLT5waXBlID09IFBJUEVfQSAmJiBkZXZfcHJpdi0+ cXVpcmtzICYgUVVJUktfUElQRUFfRk9SQ0UpIHx8Cj4gKwkgICAgKGludGVsX2NydGMtPnBpcGUg PT0gUElQRV9CICYmIGRldl9wcml2LT5xdWlya3MgJiBRVUlSS19QSVBFQl9GT1JDRSkpCj4gKwkJ YWN0aXZlID0gbmV3X2NydGNfc3RhdGUtPmFjdGl2ZTsKPiAgCj4gLQkJSTkxNV9TVEFURV9XQVJO KGNydGMtPnN0YXRlLT5hY3RpdmUgIT0gYWN0aXZlLAo+IC0JCSAgICAgImNydGMgYWN0aXZlIHN0 YXRlIGRvZXNuJ3QgbWF0Y2ggd2l0aCBodyBzdGF0ZSAiCj4gLQkJICAgICAiKGV4cGVjdGVkICVp LCBmb3VuZCAlaSlcbiIsIGNydGMtPnN0YXRlLT5hY3RpdmUsIGFjdGl2ZSk7Cj4gKwlJOTE1X1NU QVRFX1dBUk4obmV3X2NydGNfc3RhdGUtPmFjdGl2ZSAhPSBhY3RpdmUsCj4gKwkgICAgICJjcnRj IGFjdGl2ZSBzdGF0ZSBkb2Vzbid0IG1hdGNoIHdpdGggaHcgc3RhdGUgIgo+ICsJICAgICAiKGV4 cGVjdGVkICVpLCBmb3VuZCAlaSlcbiIsIG5ld19jcnRjX3N0YXRlLT5hY3RpdmUsIGFjdGl2ZSk7 Cj4gIAo+IC0JCUk5MTVfU1RBVEVfV0FSTihpbnRlbF9jcnRjLT5hY3RpdmUgIT0gY3J0Yy0+c3Rh dGUtPmFjdGl2ZSwKPiAtCQkgICAgICJ0cmFuc2l0aW9uYWwgYWN0aXZlIHN0YXRlIGRvZXMgbm90 IG1hdGNoIGF0b21pYyBodyBzdGF0ZSAiCj4gLQkJICAgICAiKGV4cGVjdGVkICVpLCBmb3VuZCAl aSlcbiIsIGNydGMtPnN0YXRlLT5hY3RpdmUsIGludGVsX2NydGMtPmFjdGl2ZSk7Cj4gKwlJOTE1 X1NUQVRFX1dBUk4oaW50ZWxfY3J0Yy0+YWN0aXZlICE9IG5ld19jcnRjX3N0YXRlLT5hY3RpdmUs Cj4gKwkgICAgICJ0cmFuc2l0aW9uYWwgYWN0aXZlIHN0YXRlIGRvZXMgbm90IG1hdGNoIGF0b21p YyBodyBzdGF0ZSAiCj4gKwkgICAgICIoZXhwZWN0ZWQgJWksIGZvdW5kICVpKVxuIiwgbmV3X2Ny dGNfc3RhdGUtPmFjdGl2ZSwgaW50ZWxfY3J0Yy0+YWN0aXZlKTsKPiAgCj4gLQkJZm9yX2VhY2hf ZW5jb2Rlcl9vbl9jcnRjKGRldiwgY3J0YywgZW5jb2Rlcikgewo+IC0JCQllbnVtIHBpcGUgcGlw ZTsKPiArCWZvcl9lYWNoX2VuY29kZXJfb25fY3J0YyhkZXYsIGNydGMsIGVuY29kZXIpIHsKPiAr CQllbnVtIHBpcGUgcGlwZTsKPiAgCj4gLQkJCWFjdGl2ZSA9IGVuY29kZXItPmdldF9od19zdGF0 ZShlbmNvZGVyLCAmcGlwZSk7Cj4gLQkJCUk5MTVfU1RBVEVfV0FSTihhY3RpdmUgIT0gY3J0Yy0+ c3RhdGUtPmFjdGl2ZSwKPiAtCQkJCSJbRU5DT0RFUjolaV0gYWN0aXZlICVpIHdpdGggY3J0YyBh Y3RpdmUgJWlcbiIsCj4gLQkJCQllbmNvZGVyLT5iYXNlLmJhc2UuaWQsIGFjdGl2ZSwgY3J0Yy0+ c3RhdGUtPmFjdGl2ZSk7Cj4gKwkJYWN0aXZlID0gZW5jb2Rlci0+Z2V0X2h3X3N0YXRlKGVuY29k ZXIsICZwaXBlKTsKPiArCQlJOTE1X1NUQVRFX1dBUk4oYWN0aXZlICE9IG5ld19jcnRjX3N0YXRl LT5hY3RpdmUsCj4gKwkJCSJbRU5DT0RFUjolaV0gYWN0aXZlICVpIHdpdGggY3J0YyBhY3RpdmUg JWlcbiIsCj4gKwkJCWVuY29kZXItPmJhc2UuYmFzZS5pZCwgYWN0aXZlLCBuZXdfY3J0Y19zdGF0 ZS0+YWN0aXZlKTsKPiAgCj4gLQkJCUk5MTVfU1RBVEVfV0FSTihhY3RpdmUgJiYgaW50ZWxfY3J0 Yy0+cGlwZSAhPSBwaXBlLAo+IC0JCQkJCSJFbmNvZGVyIGNvbm5lY3RlZCB0byB3cm9uZyBwaXBl ICVjXG4iLAo+IC0JCQkJCXBpcGVfbmFtZShwaXBlKSk7Cj4gKwkJSTkxNV9TVEFURV9XQVJOKGFj dGl2ZSAmJiBpbnRlbF9jcnRjLT5waXBlICE9IHBpcGUsCj4gKwkJCQkiRW5jb2RlciBjb25uZWN0 ZWQgdG8gd3JvbmcgcGlwZSAlY1xuIiwKPiArCQkJCXBpcGVfbmFtZShwaXBlKSk7Cj4gIAo+IC0J CQlpZiAoYWN0aXZlKQo+IC0JCQkJZW5jb2Rlci0+Z2V0X2NvbmZpZyhlbmNvZGVyLCBwaXBlX2Nv bmZpZyk7Cj4gLQkJfQo+ICsJCWlmIChhY3RpdmUpCj4gKwkJCWVuY29kZXItPmdldF9jb25maWco ZW5jb2RlciwgcGlwZV9jb25maWcpOwo+ICsJfQo+ICAKPiAtCQlpZiAoIWNydGMtPnN0YXRlLT5h Y3RpdmUpCj4gLQkJCWNvbnRpbnVlOwo+ICsJaWYgKCFuZXdfY3J0Y19zdGF0ZS0+YWN0aXZlKQo+ ICsJCXJldHVybjsKPiAgCj4gLQkJaW50ZWxfcGlwZV9jb25maWdfc2FuaXR5X2NoZWNrKGRldl9w cml2LCBwaXBlX2NvbmZpZyk7Cj4gKwlpbnRlbF9waXBlX2NvbmZpZ19zYW5pdHlfY2hlY2soZGV2 X3ByaXYsIHBpcGVfY29uZmlnKTsKPiAgCj4gLQkJc3dfY29uZmlnID0gdG9faW50ZWxfY3J0Y19z dGF0ZShjcnRjLT5zdGF0ZSk7Cj4gLQkJaWYgKCFpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKGRl diwgc3dfY29uZmlnLAo+IC0JCQkJCSAgICAgICBwaXBlX2NvbmZpZywgZmFsc2UpKSB7Cj4gLQkJ CUk5MTVfU1RBVEVfV0FSTigxLCAicGlwZSBzdGF0ZSBkb2Vzbid0IG1hdGNoIVxuIik7Cj4gLQkJ CWludGVsX2R1bXBfcGlwZV9jb25maWcoaW50ZWxfY3J0YywgcGlwZV9jb25maWcsCj4gLQkJCQkJ ICAgICAgICJbaHcgc3RhdGVdIik7Cj4gLQkJCWludGVsX2R1bXBfcGlwZV9jb25maWcoaW50ZWxf Y3J0Yywgc3dfY29uZmlnLAo+IC0JCQkJCSAgICAgICAiW3N3IHN0YXRlXSIpOwo+IC0JCX0KPiAr CXN3X2NvbmZpZyA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwo+ICsJaWYgKCFp bnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKGRldiwgc3dfY29uZmlnLAo+ICsJCQkJICAgICAgIHBp cGVfY29uZmlnLCBmYWxzZSkpIHsKPiArCQlJOTE1X1NUQVRFX1dBUk4oMSwgInBpcGUgc3RhdGUg ZG9lc24ndCBtYXRjaCFcbiIpOwo+ICsJCWludGVsX2R1bXBfcGlwZV9jb25maWcoaW50ZWxfY3J0 YywgcGlwZV9jb25maWcsCj4gKwkJCQkgICAgICAgIltodyBzdGF0ZV0iKTsKPiArCQlpbnRlbF9k dW1wX3BpcGVfY29uZmlnKGludGVsX2NydGMsIHN3X2NvbmZpZywKPiArCQkJCSAgICAgICAiW3N3 IHN0YXRlXSIpOwo+ICAJfQo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IC1jaGVja19zaGFyZWRf ZHBsbF9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICtjaGVja19zaW5nbGVfZHBsbF9z dGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCXN0cnVjdCBpbnRl bF9zaGFyZWRfZHBsbCAqcGxsLAo+ICsJCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gKwkJCXN0 cnVjdCBkcm1fY3J0Y19zdGF0ZSAqbmV3X3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0Jc3RydWN0IGludGVsX2Ny dGMgKmNydGM7Cj4gIAlzdHJ1Y3QgaW50ZWxfZHBsbF9od19zdGF0ZSBkcGxsX2h3X3N0YXRlOwo+ IC0JaW50IGk7Cj4gKwl1bnNpZ25lZCBjcnRjX21hc2s7Cj4gKwlib29sIGFjdGl2ZTsKPiAgCj4g LQlmb3IgKGkgPSAwOyBpIDwgZGV2X3ByaXYtPm51bV9zaGFyZWRfZHBsbDsgaSsrKSB7Cj4gLQkJ c3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGwgPQo+IC0JCQlpbnRlbF9nZXRfc2hhcmVkX2Rw bGxfYnlfaWQoZGV2X3ByaXYsIGkpOwo+IC0JCXVuc2lnbmVkIGVuYWJsZWRfY3J0Y3MgPSAwLCBh Y3RpdmVfY3J0Y3MgPSAwOwo+IC0JCWJvb2wgYWN0aXZlOwo+ICsJbWVtc2V0KCZkcGxsX2h3X3N0 YXRlLCAwLCBzaXplb2YoZHBsbF9od19zdGF0ZSkpOwo+ICAKPiAtCQltZW1zZXQoJmRwbGxfaHdf c3RhdGUsIDAsIHNpemVvZihkcGxsX2h3X3N0YXRlKSk7Cj4gKwlEUk1fREVCVUdfS01TKCIlc1xu IiwgcGxsLT5uYW1lKTsKPiAgCj4gLQkJRFJNX0RFQlVHX0tNUygiJXNcbiIsIHBsbC0+bmFtZSk7 Cj4gKwlhY3RpdmUgPSBwbGwtPmZ1bmNzLmdldF9od19zdGF0ZShkZXZfcHJpdiwgcGxsLCAmZHBs bF9od19zdGF0ZSk7Cj4gIAo+IC0JCWFjdGl2ZSA9IHBsbC0+ZnVuY3MuZ2V0X2h3X3N0YXRlKGRl dl9wcml2LCBwbGwsICZkcGxsX2h3X3N0YXRlKTsKPiArCWlmICghKHBsbC0+ZmxhZ3MgJiBJTlRF TF9EUExMX0FMV0FZU19PTikpIHsKPiArCQlJOTE1X1NUQVRFX1dBUk4oIXBsbC0+b24gJiYgcGxs LT5hY3RpdmVfbWFzaywKPiArCQkgICAgICJwbGwgaW4gYWN0aXZlIHVzZSBidXQgbm90IG9uIGlu IHN3IHRyYWNraW5nXG4iKTsKPiArCQlJOTE1X1NUQVRFX1dBUk4ocGxsLT5vbiAmJiAhcGxsLT5h Y3RpdmVfbWFzaywKPiArCQkgICAgICJwbGwgaXMgb24gYnV0IG5vdCB1c2VkIGJ5IGFueSBhY3Rp dmUgY3J0Y1xuIik7Cj4gKwkJSTkxNV9TVEFURV9XQVJOKHBsbC0+b24gIT0gYWN0aXZlLAo+ICsJ CSAgICAgInBsbCBvbiBzdGF0ZSBtaXNtYXRjaCAoZXhwZWN0ZWQgJWksIGZvdW5kICVpKVxuIiwK PiArCQkgICAgIHBsbC0+b24sIGFjdGl2ZSk7Cj4gKwl9Cj4gIAo+ICsJaWYgKCFjcnRjKSB7Cj4g IAkJSTkxNV9TVEFURV9XQVJOKHBsbC0+YWN0aXZlX21hc2sgJiB+cGxsLT5jb25maWcuY3J0Y19t YXNrLAo+IC0JCSAgICAgIm1vcmUgYWN0aXZlIHBsbCB1c2VycyB0aGFuIHJlZmVyZW5jZXM6ICV4 IHZzICV4XG4iLAo+IC0JCSAgICAgcGxsLT5hY3RpdmVfbWFzaywgcGxsLT5jb25maWcuY3J0Y19t YXNrKTsKPiArCQkJCSJtb3JlIGFjdGl2ZSBwbGwgdXNlcnMgdGhhbiByZWZlcmVuY2VzOiAleCB2 cyAleFxuIiwKPiArCQkJCXBsbC0+YWN0aXZlX21hc2ssIHBsbC0+Y29uZmlnLmNydGNfbWFzayk7 Cj4gIAo+IC0JCWlmICghKHBsbC0+ZmxhZ3MgJiBJTlRFTF9EUExMX0FMV0FZU19PTikpIHsKPiAt CQkJSTkxNV9TVEFURV9XQVJOKCFwbGwtPm9uICYmIHBsbC0+YWN0aXZlX21hc2ssCj4gLQkJCSAg ICAgInBsbCBpbiBhY3RpdmUgdXNlIGJ1dCBub3Qgb24gaW4gc3cgdHJhY2tpbmdcbiIpOwo+IC0J CQlJOTE1X1NUQVRFX1dBUk4ocGxsLT5vbiAmJiAhcGxsLT5hY3RpdmVfbWFzaywKPiAtCQkJICAg ICAicGxsIGlzIG9uIGJ1dCBub3QgdXNlZCBieSBhbnkgYWN0aXZlIGNydGNcbiIpOwo+IC0JCQlJ OTE1X1NUQVRFX1dBUk4ocGxsLT5vbiAhPSBhY3RpdmUsCj4gLQkJCSAgICAgInBsbCBvbiBzdGF0 ZSBtaXNtYXRjaCAoZXhwZWN0ZWQgJWksIGZvdW5kICVpKVxuIiwKPiAtCQkJICAgICBwbGwtPm9u LCBhY3RpdmUpOwo+IC0JCX0KPiArCQlyZXR1cm47Cj4gKwl9Cj4gIAo+IC0JCWZvcl9lYWNoX2lu dGVsX2NydGMoZGV2LCBjcnRjKSB7Cj4gLQkJCWlmIChjcnRjLT5iYXNlLnN0YXRlLT5lbmFibGUg JiYgY3J0Yy0+Y29uZmlnLT5zaGFyZWRfZHBsbCA9PSBwbGwpCj4gLQkJCQllbmFibGVkX2NydGNz IHw9IDEgPDwgZHJtX2NydGNfaW5kZXgoJmNydGMtPmJhc2UpOwo+IC0JCQlpZiAoY3J0Yy0+YmFz ZS5zdGF0ZS0+YWN0aXZlICYmIGNydGMtPmNvbmZpZy0+c2hhcmVkX2RwbGwgPT0gcGxsKQo+IC0J CQkJYWN0aXZlX2NydGNzIHw9IDEgPDwgZHJtX2NydGNfaW5kZXgoJmNydGMtPmJhc2UpOwo+IC0J CX0KPiArCWNydGNfbWFzayA9IDEgPDwgZHJtX2NydGNfaW5kZXgoY3J0Yyk7Cj4gKwo+ICsJaWYg KG5ld19zdGF0ZS0+YWN0aXZlKQo+ICsJCUk5MTVfU1RBVEVfV0FSTighKHBsbC0+YWN0aXZlX21h c2sgJiBjcnRjX21hc2spLAo+ICsJCQkJInBsbCBhY3RpdmUgbWlzbWF0Y2ggKGV4cGVjdGVkIHBp cGUgJWMgaW4gYWN0aXZlIG1hc2sgMHglMDJ4KVxuIiwKPiArCQkJCXBpcGVfbmFtZShkcm1fY3J0 Y19pbmRleChjcnRjKSksIHBsbC0+YWN0aXZlX21hc2spOwo+ICsJZWxzZQo+ICsJCUk5MTVfU1RB VEVfV0FSTihwbGwtPmFjdGl2ZV9tYXNrICYgY3J0Y19tYXNrLAo+ICsJCQkJInBsbCBhY3RpdmUg bWlzbWF0Y2ggKGRpZG4ndCBleHBlY3QgcGlwZSAlYyBpbiBhY3RpdmUgbWFzayAweCUwMngpXG4i LAo+ICsJCQkJcGlwZV9uYW1lKGRybV9jcnRjX2luZGV4KGNydGMpKSwgcGxsLT5hY3RpdmVfbWFz ayk7Cj4gKwo+ICsJSTkxNV9TVEFURV9XQVJOKCEocGxsLT5jb25maWcuY3J0Y19tYXNrICYgY3J0 Y19tYXNrKSwKPiArCQkJInBsbCBlbmFibGVkIGNydGNzIG1pc21hdGNoIChleHBlY3RlZCAweCV4 IGluIDB4JTAyeClcbiIsCj4gKwkJCWNydGNfbWFzaywgcGxsLT5jb25maWcuY3J0Y19tYXNrKTsK PiAgCj4gLQkJSTkxNV9TVEFURV9XQVJOKHBsbC0+YWN0aXZlX21hc2sgIT0gYWN0aXZlX2NydGNz LAo+IC0JCSAgICAgInBsbCBhY3RpdmUgY3J0Y3MgbWlzbWF0Y2ggKGV4cGVjdGVkICV4LCBmb3Vu ZCAleClcbiIsCj4gLQkJICAgICBwbGwtPmFjdGl2ZV9tYXNrLCBhY3RpdmVfY3J0Y3MpOwo+IC0J CUk5MTVfU1RBVEVfV0FSTihwbGwtPmNvbmZpZy5jcnRjX21hc2sgIT0gZW5hYmxlZF9jcnRjcywK PiAtCQkgICAgICJwbGwgZW5hYmxlZCBjcnRjcyBtaXNtYXRjaCAoZXhwZWN0ZWQgJXgsIGZvdW5k ICV4KVxuIiwKPiAtCQkgICAgIHBsbC0+Y29uZmlnLmNydGNfbWFzaywgZW5hYmxlZF9jcnRjcyk7 Cj4gKwlJOTE1X1NUQVRFX1dBUk4ocGxsLT5vbiAmJiBtZW1jbXAoJnBsbC0+Y29uZmlnLmh3X3N0 YXRlLAo+ICsJCQkJCSAgJmRwbGxfaHdfc3RhdGUsCj4gKwkJCQkJICBzaXplb2YoZHBsbF9od19z dGF0ZSkpLAo+ICsJCQkicGxsIGh3IHN0YXRlIG1pc21hdGNoXG4iKTsKPiArfQo+ICAKPiAtCQlJ OTE1X1NUQVRFX1dBUk4ocGxsLT5vbiAmJiBtZW1jbXAoJnBsbC0+Y29uZmlnLmh3X3N0YXRlLCAm ZHBsbF9od19zdGF0ZSwKPiAtCQkJCSAgICAgICBzaXplb2YoZHBsbF9od19zdGF0ZSkpLAo+IC0J CSAgICAgInBsbCBodyBzdGF0ZSBtaXNtYXRjaFxuIik7Cj4gK3N0YXRpYyB2b2lkCj4gK2NoZWNr X3NoYXJlZF9kcGxsX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKPiArCQkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKPiAr CQkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkKPiArewo+ICsJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKG9sZF9j cnRjX3N0YXRlKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfc3RhdGUgPSB0b19p bnRlbF9jcnRjX3N0YXRlKG5ld19jcnRjX3N0YXRlKTsKPiArCj4gKwlpZiAobmV3X3N0YXRlLT5z aGFyZWRfZHBsbCkKPiArCQljaGVja19zaW5nbGVfZHBsbF9zdGF0ZShkZXZfcHJpdiwgbmV3X3N0 YXRlLT5zaGFyZWRfZHBsbCwgY3J0YywgbmV3X2NydGNfc3RhdGUpOwo+ICsKPiArCWlmIChvbGRf c3RhdGUtPnNoYXJlZF9kcGxsICYmCj4gKwkgICAgb2xkX3N0YXRlLT5zaGFyZWRfZHBsbCAhPSBu ZXdfc3RhdGUtPnNoYXJlZF9kcGxsKSB7Cj4gKwkJdW5zaWduZWQgY3J0Y19tYXNrID0gMSA8PCBk cm1fY3J0Y19pbmRleChjcnRjKTsKPiArCQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCA9 IG9sZF9zdGF0ZS0+c2hhcmVkX2RwbGw7Cj4gKwo+ICsJCUk5MTVfU1RBVEVfV0FSTihwbGwtPmFj dGl2ZV9tYXNrICYgY3J0Y19tYXNrLAo+ICsJCQkJInBsbCBhY3RpdmUgbWlzbWF0Y2ggKGRpZG4n dCBleHBlY3QgcGlwZSAlYyBpbiBhY3RpdmUgbWFzaylcbiIsCj4gKwkJCQlwaXBlX25hbWUoZHJt X2NydGNfaW5kZXgoY3J0YykpKTsKPiArCQlJOTE1X1NUQVRFX1dBUk4ocGxsLT5jb25maWcuY3J0 Y19tYXNrICYgY3J0Y19tYXNrLAo+ICsJCQkJInBsbCBlbmFibGVkIGNydGNzIG1pc21hdGNoIChm b3VuZCAleCBpbiBlbmFibGVkIG1hc2spXG4iLAo+ICsJCQkJcGlwZV9uYW1lKGRybV9jcnRjX2lu ZGV4KGNydGMpKSk7Cj4gIAl9Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkCj4gK2ludGVsX21vZGVz ZXRfY2hlY2tfY3J0YyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gKwkJCSBzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKm9sZF9zdGF0ZSwKPiArCQkJIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqbmV3X3N0 YXRlKQo+ICt7Cj4gKwlpZiAoIW5lZWRzX21vZGVzZXQobmV3X3N0YXRlKSAmJgo+ICsJICAgICF0 b19pbnRlbF9jcnRjX3N0YXRlKG5ld19zdGF0ZSktPnVwZGF0ZV9waXBlKQo+ICsJCXJldHVybjsK PiArCj4gKwljaGVja193bV9zdGF0ZShjcnRjLCBuZXdfc3RhdGUpOwo+ICsJY2hlY2tfY29ubmVj dG9yX3N0YXRlKGNydGMtPmRldiwgY3J0Yyk7Cj4gKwljaGVja19jcnRjX3N0YXRlKGNydGMsIG9s ZF9zdGF0ZSwgbmV3X3N0YXRlKTsKPiArCWNoZWNrX3NoYXJlZF9kcGxsX3N0YXRlKGNydGMtPmRl diwgY3J0Yywgb2xkX3N0YXRlLCBuZXdfc3RhdGUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ ICtjaGVja19kaXNhYmxlZF9kcGxsX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3sK PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 Cj4gKwlpbnQgaTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgZGV2X3ByaXYtPm51bV9zaGFyZWRf ZHBsbDsgaSsrKQo+ICsJCWNoZWNrX3NpbmdsZV9kcGxsX3N0YXRlKGRldl9wcml2LCAmZGV2X3By aXYtPnNoYXJlZF9kcGxsc1tpXSwgTlVMTCwgTlVMTCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk Cj4gK2ludGVsX21vZGVzZXRfY2hlY2tfZGlzYWJsZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiArCQkJICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQo+ICt7Cj4gKwlj aGVja19lbmNvZGVyX3N0YXRlKGRldik7Cj4gKwljaGVja19jb25uZWN0b3Jfc3RhdGUoZGV2LCBO VUxMKTsKPiArCWNoZWNrX2Rpc2FibGVkX2RwbGxfc3RhdGUoZGV2KTsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQKPiAgaW50ZWxfbW9kZXNldF9jaGVja19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAo+ICAJCQkgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCj4gIHsKPiAt CWNoZWNrX3dtX3N0YXRlKGRldik7Cj4gLQljaGVja19jb25uZWN0b3Jfc3RhdGUoZGV2LCBvbGRf c3RhdGUpOwo+IC0JY2hlY2tfZW5jb2Rlcl9zdGF0ZShkZXYpOwo+IC0JY2hlY2tfY3J0Y19zdGF0 ZShkZXYsIG9sZF9zdGF0ZSk7Cj4gLQljaGVja19zaGFyZWRfZHBsbF9zdGF0ZShkZXYpOwo+ICsJ c3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZTsKPiArCXN0cnVjdCBkcm1fY3J0 YyAqY3J0YzsKPiArCWludCBpOwo+ICsKPiArCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUob2xkX3N0 YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgaSkKPiArCQlpbnRlbF9tb2Rlc2V0X2NoZWNrX2Ny dGMoY3J0Yywgb2xkX2NydGNfc3RhdGUsIGNydGMtPnN0YXRlKTsKPiArCj4gKwlpbnRlbF9tb2Rl c2V0X2NoZWNrX2Rpc2FibGVkKGRldiwgb2xkX3N0YXRlKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZv aWQgdXBkYXRlX3NjYW5saW5lX29mZnNldChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAtLSAK PiAyLjEuMAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAoKLS0gCk1hdHQgUm9wZXIKR3JhcGhpY3MgU29mdHdhcmUgRW5naW5lZXIKSW9URyBQ bGF0Zm9ybSBFbmFibGluZyAmIERldmVsb3BtZW50CkludGVsIENvcnBvcmF0aW9uCig5MTYpIDM1 Ni0yNzk1Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=