From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 30/49] drm/i915/bxt: add display initialize/uninitialize sequence Date: Fri, 20 Mar 2015 16:10:37 +0200 Message-ID: <20150320141037.GZ17419@intel.com> References: <1426585215-8788-1-git-send-email-imre.deak@intel.com> <1426585215-8788-31-git-send-email-imre.deak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 9ED0B6EC19 for ; Fri, 20 Mar 2015 07:11:01 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1426585215-8788-31-git-send-email-imre.deak@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 Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBNYXIgMTcsIDIwMTUgYXQgMTE6Mzk6NTZBTSArMDIwMCwgSW1yZSBEZWFrIHdyb3Rl Ogo+IEZyb206IFZhbmRhbmEgS2FubmFuIDx2YW5kYW5hLmthbm5hbkBpbnRlbC5jb20+Cj4gCj4g QWRkIGRpc3BsYXkgY2xvY2svUEhZIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGFzIHBlciBCU3Bl Yy4KClRoaXMgc2hvdWxkIHJlYWxseSBiZSB0d28gcGF0Y2hlcyBJIHRoaW5rLiBJJ2xsIGdvIG92 ZXIgdGhlIGNkY2xrIGJpdHMKZmlyc3QuLi4KCj4gCj4gVW50aWwgR09QL1ZCSU9TIHByb3ZpZGVz IGFuIHVwcGVyIGxpbWl0IHZhbHVlIGZvciBDRENMSywgY29tcGFyaW5nIGNsb2NrCj4gdmFsdWUg d2l0aCA2MjQgTUh6IGFuZCByZXR1cm5pbmcgMCBpbiBjYXNlIGl0IGV4Y2VlZHMuCj4gCj4gTm90 ZSB0aGF0IHRoZSBDRCBjbG9jayBhbmQgUEhZIGluaXRpYWxpemF0aW9uL3VuaW5pdGlhbGl6YXRp b24gYXJlIGRvbmUKPiBhdCB0aGVpciBjdXJyZW50IHBsYWNlIG9ubHkgZm9yIHNpbXBsaWNpdHks IGluIGEgZnV0dXJlIHBhdGNoIC0gd2hlbiBtb3JlCj4gb2YgdGhlIHJ1bnRpbWUgUE0gZmVhdHVy ZXMgd2lsbCBiZSBlbmFibGVkIC0gdGhlc2Ugd2lsbCBiZSBtb3ZlZCB0bwo+IHBvd2VyIHdlbGwj MSBhbmQgbW9kZXNldCBlbmNvZGVyIGVuYWJsaW5nL2Rpc2FibGluZyBob29rcyByZXNwZWN0aXZl bHkuCj4gVGhpcyBhbHNvIG1lYW5zIHRoYXQgYXRtIGR5bmFtaWMgcG93ZXIgZ2F0aW5nIHBvd2Vy IHdlbGwgIzIgaXMKPiBlZmZlY3RpdmVseSBkaXNhYmxlZC4KPiAKPiB2MTogQWRkZWQgZnVuY3Rp b24gZGVmaW5pdGlvbnMgaW4gaGVhZGVyIGZpbGVzCj4gdjI6IEltcmUncyByZXZpZXcgY29tbWVu dHMgYWRkcmVzc2VkCj4gLSBNb3ZlZCBDRENMSyByZWxhdGVkIGRlZmluaXRpb25zIHRvIGk5MTVf cmVnLmgKPiAtIFJlbW92ZWQgZGVmaW50aW9ucyBmb3IgQ0RDTEsgZnJlcXVlbmN5Cj4gLSBTcGxp dCB1bmluaXRfY2RjbGsoKSBieSBhZGRpbmcgYSBwaHlfdW5pbml0IGZ1bmN0aW9uCj4gLSBDYWxj dWxhdGUgZnJlcSBhbmQgZGVjaW1hbCBiYXNlZCBvbiBpbnB1dCBmcmVxdWVuY3kKPiAtIFByb2dy YW0gU1NBIHByZWNoYXJnZSBiYXNlZCBvbiBpbnB1dCBmcmVxdWVuY3kKPiAtIFVzZSB3YWl0X2Zv ciAxbXMgaW5zdGVhZCAyMDB1cyB1ZGVsYXkgZm9yIERFIFBMTCBsb2NraW5nCj4gLSBSZW1vdmVk IGluaXRpYWwgdmFsdWUgZm9yIGRpdmlkZXIsIGZyZXEsIGRlY2ltYWwsIHJhdGlvLgo+IC0gUmVw bGFjZWQgcG9sbGluZyBsb29wcyB3aXRoIHdhaXRfZm9yCj4gLSBQYXJhbWV0ZXJpemVkIGxhdGVu Y3kgb3B0aW0gc2V0dGluZwo+IC0gRml4IHRoZSBwYXJ0cyB3aGVyZSBERSBQTEwgaGFzIHRvIGJl IGRpc2FibGVkLgo+IC0gQ2FsbCBDRENMSyBzZWxlY3Rpb24gZnJvbSBtb2RlIHNldAo+IAo+IHYz OiAoaW1yZSkKPiAtIGFkZCBub3RlIGFib3V0IHRoZSBwbGFuIHRvIG1vdmUgdGhlIGNkY2xrL3Bo eSBpbml0IHRvIGEgYmV0dGVyIHBsYWNlCj4gLSB0YWtlIHJwcy5od19sb2NrIGFyb3VuZCBwY29k ZSBhY2Nlc3MKPiAtIGZpeCBEREkgUEhZIHRpbWVvdXQgdmFsdWUKPiAtIHNxdWFzaCBpbiBWYW5k YW5hJ3MgIlBPUlRfQ0wyQ01fRFc2X0EgQlVOIGZpeCIsCj4gICAiRERJIFBIWSBwcm9ncmFtbWlu ZyByZWdpc3RlciBkZWZuIiwgIkRvIGRkaV9waHlfaW5pdCBhbHdheXMiLAo+ICAgIkNoZWNrIENE Q0xLIHVwcGVyIGxpbWl0IiBwYXRjaGVzCj4gLSBtb3ZlIFBIWSByZWdpc3RlciBtYWNyb3MgbmV4 dCB0byB0aGUgY29ycmVzcG9uZGluZyBDSFYvVkxWIG1hY3Jvcwo+IC0gbW92ZSBERSBQTEwgcmVn aXN0ZXIgbWFjcm9zIGhlcmUgZnJvbSBhbm90aGVyIHBhdGNoIHNpbmNlIHRoZXkgYXJlCj4gICB1 c2VkIGhlcmUgZmlyc3QKPiAtIGFkZCBCWFRfIHByZWZpeCB0byBDRENMSyBmbGFncwo+IC0gcy9D T01NT05fUkVTRVQvQ09NTU9OX1JFU0VUX0RJUy8gYW5kIGNsYXJpZnkgcmVsYXRlZCBjb2RlIGNv bW1lbnRzCj4gLSBmaXggaW5jb3JyZWN0IHJlYWQgdmFsdWUgZm9yIHRoZSBSTVcgb2YgQlhUX1BI WV9DVExfRkFNSUxZX0RESQo+IC0gZml4IHVzaW5nIEdUX0RJU1BMQVlfRURQX1BPV0VSX09OIHZz LiBHVF9ESVNQTEFZX0RESV9QT1dFUl9PTgo+ICAgd2hlbiBwb3dlcmluZyBvbiBEREkgcG9ydHMK PiAtIGZpeCBpbmNvcnJlY3QgcG9ydCB3aGVuIHNldHRpbmcgQlhUX1BPUlRfVFhfRFcxNF9MTiBm b3IgRERJIHBvcnRzCj4gLSBhZGQgbWlzc2luZyBtYXNraW5nIHdoZW4gcHJvZ3JhbW1pbmcgQ0RD TEtfRlJFUV9ERUNJTUFMCj4gLSBhZGQgbWlzc2luZyBwb3dlcmluZyBvbiBmb3IgRERJLUMgcG9y dCwgcmVuYW1lIE9DTDJfTERPRlVTRV9QV1JfRU4KPiAgIHRvIE9DTDJfTERPRlVTRV9QV1JfRElT IHRvIHJlZHVjZSBjb25mdXNpb24KPiAtIGFkZCBub3RlIGFib3V0IG1pc21hdGNoIHdpdGggYnNw ZWMgaW4gdGhlIFBPUlRfUkVGX0RXNiBmaWVsZHMKPiAtIGZhY3RvciBvdXQgUEhZIGluaXQgY29k ZSB0byBhIG5ldyBmdW5jdGlvbiwgc28gd2UgY2FuIGNhbGwgaXQgZm9yCj4gICBQSFlfQSBhbmQg UEhZX0JDLCBpbnN0ZWFkIG9mIG9wZW4tY29kaW5nIHRoZSBzYW1lCj4gCj4gU2lnbmVkLW9mZi1i eTogVmFuZGFuYSBLYW5uYW4gPHZhbmRhbmEua2FubmFuQGludGVsLmNvbT4gKHYyKQo+IFNpZ25l ZC1vZmYtYnk6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgIHwgMTI2ICsrKysrKysrKysrKysrKwo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyAgICAgfCAyOTEgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jIHwgIDc1ICsrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAg ICAgfCAgIDQgKwo+ICA0IGZpbGVzIGNoYW5nZWQsIDQ5NiBpbnNlcnRpb25zKCspCj4gCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlZy5oCj4gaW5kZXggYjQ0NzRkMy4uYTM1NzljMCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaAo8c25pcD4KPiBAQCAtNTMyNiw2ICs1NDMwLDkgQEAgZW51bSBza2xf ZGlzcF9wb3dlcl93ZWxscyB7Cj4gICNkZWZpbmUgIERJU1BfRkJDX1dNX0RJUwkJKDE8PDE1KQo+ ICAjZGVmaW5lIERJU1BfQVJCX0NUTDIJMHg0NTAwNAo+ICAjZGVmaW5lICBESVNQX0RBVEFfUEFS VElUSU9OXzVfNgkoMTw8NikKPiArI2RlZmluZSBEQlVGX0NUTAkweDQ1MDA4Cj4gKyNkZWZpbmUg IERCVUZfUE9XRVJfUkVRVUVTVAkJKDE8PDMxKQo+ICsjZGVmaW5lICBEQlVGX1BPV0VSX1NUQVRF CQkoMTw8MzApCj4gICNkZWZpbmUgR0VON19NU0dfQ1RMCTB4NDUwMTAKPiAgI2RlZmluZSAgV0FJ VF9GT1JfUENIX1JFU0VUX0FDSwkJKDE8PDEpCj4gICNkZWZpbmUgIFdBSVRfRk9SX1BDSF9GTFJf QUNLCQkoMTw8MCkKPiBAQCAtNjI3MSw2ICs2Mzc4LDcgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93 ZWxscyB7Cj4gICNkZWZpbmUgICBHRU42X1BDT0RFX1dSSVRFX0RfQ09NUAkJMHgxMQo+ICAjZGVm aW5lICAgR0VONl9FTkNPREVfUkM2X1ZJRChtdikJCSgoKG12KSAtIDI0NSkgLyA1KQo+ICAjZGVm aW5lICAgR0VONl9ERUNPREVfUkM2X1ZJRCh2aWRzKQkJKCgodmlkcykgKiA1KSArIDI0NSkKPiAr I2RlZmluZSAgIERJU1BMQVlfUENVX0NPTlRST0wJCQkweDE3CgpJIGNhbGxlZCB0aGlzIEhTV19Q Q09ERV9ERV9XUklURV9GUkVRX1JFUSBpbiBteSBIU1cvQkRXIGNkY2xrCnBhdGNoZXMsIHdoaWNo IG1hdGNoZXMgdGhlIG5hbWUgaW4gQnNwZWMgZm9yIEhTVy9CRFcuCgpHaXZlbiBvdXIgZXN0YWJs aXNoZWQgcHJhY3RpY2Ugb2YgbmFtaW5nIHRoaW5ncyBiYXNlZCBvbiB0aGUgb2xkZXN0CnBsYXRm b3JtIHN1cHBvcnRpbmcgdGhlbSwgSSdkIGdvIHdpdGggdGhlIEhTVy9CRFcgbmFtZS4KCj4gICNk ZWZpbmUgICBESVNQTEFZX0lQU19DT05UUk9MCQkJMHgxOQo+ICAjZGVmaW5lCSAgSFNXX1BDT0RF X0RZTkFNSUNfRFVUWV9DWUNMRV9DT05UUk9MCTB4MUEKPiAgI2RlZmluZSBHRU42X1BDT0RFX0RB VEEJCQkJMHgxMzgxMjgKPiBAQCAtNjc0OCw2ICs2ODU2LDEzIEBAIGVudW0gc2tsX2Rpc3BfcG93 ZXJfd2VsbHMgewo+ICAjZGVmaW5lICBDRENMS19GUkVRXzY3NV82MTcJCSgzPDwyNikKPiAgI2Rl ZmluZSAgQ0RDTEtfRlJFUV9ERUNJTUFMX01BU0sJKDB4N2ZmKQo+ICAKPiArI2RlZmluZSAgQlhU X0NEQ0xLX0NEMlhfRElWX1NFTF9NQVNLCSgzPDwyMikKPiArI2RlZmluZSAgQlhUX0NEQ0xLX0NE MlhfRElWX1NFTF8xCSgwPDwyMikKPiArI2RlZmluZSAgQlhUX0NEQ0xLX0NEMlhfRElWX1NFTF8x XzUJKDE8PDIyKQo+ICsjZGVmaW5lICBCWFRfQ0RDTEtfQ0QyWF9ESVZfU0VMXzIJKDI8PDIyKQo+ ICsjZGVmaW5lICBCWFRfQ0RDTEtfQ0QyWF9ESVZfU0VMXzQJKDM8PDIyKQo+ICsjZGVmaW5lICBC WFRfQ0RDTEtfU1NBX1BSRUNIQVJHRV9FTkFCTEUJKDE8PDE2KQo+ICsKPiAgLyogTENQTExfQ1RM ICovCj4gICNkZWZpbmUgTENQTEwxX0NUTAkJMHg0NjAxMAo+ICAjZGVmaW5lIExDUExMMl9DVEwJ CTB4NDYwMTQKPiBAQCAtNjgxMiw2ICs2OTI3LDE3IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2Vs bHMgewo+ICAjZGVmaW5lIEdFVF9DRkdfQ1IxX1JFRyhpZCkgKERQTEwxX0NGR0NSMSArIChpZCAt IFNLTF9EUExMMSkgKiA4KQo+ICAjZGVmaW5lIEdFVF9DRkdfQ1IyX1JFRyhpZCkgKERQTEwxX0NG R0NSMiArIChpZCAtIFNLTF9EUExMMSkgKiA4KQo+ICAKPiArLyogQlhUIGRpc3BsYXkgZW5naW5l IFBMTCAqLwo+ICsjZGVmaW5lIEJYVF9ERV9QTExfQ1RMCQkJMHg2ZDAwMAo+ICsjZGVmaW5lICAg QlhUX0RFX1BMTF9SQVRJT18xMTUyCQkweDNjCj4gKyNkZWZpbmUgICBCWFRfREVfUExMX1JBVElP XzEyNDgJCTB4NDEKPiArI2RlZmluZSAgIEJYVF9ERV9QTExfUkFUSU9fREVGQVVMVAkweDY0CgpU aGVzZSBhcmUganVzdCA2MCw2NSwxMDAgZGVjaW1hbCBpbiBoZXguIFNvIEkgbWlnaHQgbWFrZSB0 aGlzCnNvbWV0aGluZyBsaWtlOgojZGVmaW5lIEJYVF9ERV9QTExfUkFUSU8oeCkgKHgpIC8qIHs2 MCw2NSwxMDB9ICogMTkuMk1IeiAqLwoKPiArI2RlZmluZSAgIEJYVF9ERV9QTExfUkFUSU9fTUFT SwkJMHg3ZgoKMHhmZgoKPiArCj4gKyNkZWZpbmUgQlhUX0RFX1BMTF9FTkFCTEUJCTB4NDYwNzAK PiArI2RlZmluZSAgIEJYVF9ERV9QTExfUExMX0VOQUJMRQkJKDEgPDwgMzEpCj4gKyNkZWZpbmUg ICBCWFRfREVfUExMX0xPQ0sJCSgxIDw8IDMwKQo+ICsKPiAgLyogUGxlYXNlIHNlZSBoc3dfcmVh ZF9kY29tcCgpIGFuZCBoc3dfd3JpdGVfZGNvbXAoKSBiZWZvcmUgdXNpbmcgdGhpcyByZWdpc3Rl ciwKPiAgICogc2luY2Ugb24gSFNXIHdlIGNhbid0IHdyaXRlIHRvIGl0IHVzaW5nIEk5MTVfV1JJ VEUuICovCj4gICNkZWZpbmUgRF9DT01QX0hTVwkJCShNQ0hCQVJfTUlSUk9SX0JBU0VfU05CICsg MHg1RjBDKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gaW5kZXggYTIwM2Q5ZC4uNzg5Njgy ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gQEAgLTE5NTcsNiArMTk1NywyOTQg QEAgc3RhdGljIHZvaWQgc2tsX3NoYXJlZF9kcGxsc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPHNuaXA+Cj4gKwo+ICsvKgo+ICsgKiBJdCBpcyB0aGUgcmVzcG9uc2li aWxpdHkgb2YgdGhlIGNhbGxlciB0byBlbnN1cmUgdGhhdAo+ICsgKiBjcml0ZXJpYSBmb3IgY2hh bmdpbmcgdGhlIENEIGNsayBmcmVxdWVuY3kgaXMgbWV0LgoKTm90IHN1cmUgdGhhdCBub3RlIGhl bHBzIGFueXRoaW5nLiBJdCBhcHBsaWVzIHRvIGFsbCBwbGF0Zm9ybXMgYW55d2F5LApub3QganVz dCBCWFQuCgo+ICsgKgo+ICsgKiBUaGlzIGZ1bmN0aW9uIG9ubHkgY2hhbmdlcyBDRCBjbG9jayBm cmVxdWVuY3kuCj4gKyAqIFRPRE86LSAxLiBBZGQgZnVuY3Rpb25zIHRvIGNoYW5nZSBvbmx5IHRo ZSBkaXZpZGVyIGFuZAo+ICsgKgkgIDIuIGNhbGwgaW1wYWN0ZWQgZnVuY3Rpb25zIGxpa2UgYmFj a2xpZ2h0LCBXaURpLCB3YXRlcm1hcmsuCgpUaGlzIFRPRE8gY2FuIGJlIGRyb3BwZWQuIFdlJ2xs IGRvIGFsbCB0aGF0IHN0dWZmIG5hdHVyYWxseSBhcyBwYXJ0IG9mCnRoZSBjcnRjIGVuYWJsZSwg c28gbm90aGluZyBuZWVkZWQgaGVyZSBJIHRoaW5rLgoKPiArKi8KPiArdm9pZCBieHRfc2VsZWN0 X2NkY2xrX2ZyZXEoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIGZyZXF1ZW5jeSkKCldlIGNh bGwgaXQgZm9vX3NldF9jZGNsaygpIG9uIG90aGVyIHBsYXRmb3Jtcy4gQWxzbyB3ZSB1c3VhbGx5 IHVzZSBqdXN0CmEgcGxhaW4gb2xkIGludCBmb3IgbW9zdCBmcmVxdWVuY3kgdmFyaWFibGVzLgoK QWxzbyBJJ2QgcHV0IHRoZSBjb2RlIGludG8gaW50ZWxfZGlzcGxheS5jIGFzIHRoYXQncyB3aGVy ZSB3ZSBoYXZlIHRoZQpyZXN0IG9mIHRoZSBjZGNsayBzdHVmZiwgYW5kIHRoYXQncyB3aGVyZSBJ IHdhcyBnb2luZyB0byBwdXQgdGhlIEhTVy9CRFcKY29kZSB0b28uCgpJZiBwZW9wbGUgYXJlIGlu dG8gdGhhdCBjb2RlIG1vdmVtZW50IHN0dWZmIHNvbWVvbmUgY291bGQgZXh0cmFjdCBhbGwgdGhl CmNkY2xrIHN0dWZmIHRvIHNvbWUgbmV3IGZpbGUgdG8gcmVkdWNlIGludGVsX2Rpc3BsYXkuYyBh IGJpdC4KCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7Cj4gKwl1aW50MzJfdCBjZGNsa19jdGwsIGRlY2ltYWwsIHJhdGlvOwo+ICsJ dWludDMyX3QgZGl2aWRlciwgZnJlcSwgY3VycmVudF9mcmVxOwo+ICsJaW50IHJldDsKPiArCj4g KwlmcmVxID0gKGZyZXF1ZW5jeSAvIDEwMDAgLSAxKSAqIDI7CgpUaGlzIHdpbGwgbG9zZSA8MU1I eiBiaXRzLiBTbyByZXdyaXRlIGFzCgooZnJlcXVlbmN5IC0gMTAwMCkgLyA1MDAKb3IKKChmcmVx dWVuY3kgLSAxMDAwKSA8PCAxKSAvIDEwMDAKaWYgeW91IHdhbnQgdG8gYWR2ZXJ0aXplIHRoZSAu MSBmaXhlZCBwb2ludCBmYWN0IGEgYml0IG1vcmUuCgpvciBtYXliZQpmcmVxdWVuY3kgLyA1MDAg LSAoMSA8PCAxKQpvcgooZnJlcXVlbmN5IDw8IDEpIC8gMTAwMCAtICgxIDw8IDEpCgo+ICsJZGVj aW1hbCA9IERJVl9ST1VORF9VUChmcmVxdWVuY3ksIDI1MDAwKTsKCkknZCBjYWxsIHRoaXMgcGN1 X2ZyZXEgb3Igc29tZXN1Y2guICdkZWNpbWFsJyBkb2Vzbid0IHJlYWxseQptYWtlIG11Y2ggc2Vu c2UuCgo+ICsKPiArCXN3aXRjaCAoZnJlcXVlbmN5KSB7Cj4gKwljYXNlIDE0NDAwMDoKPiArCQlk aXZpZGVyID0gQlhUX0NEQ0xLX0NEMlhfRElWX1NFTF80Owo+ICsJCXJhdGlvID0gQlhUX0RFX1BM TF9SQVRJT18xMTUyOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSAyODgwMDA6Cj4gKwkJZGl2aWRlciA9 IEJYVF9DRENMS19DRDJYX0RJVl9TRUxfMjsKPiArCQlyYXRpbyA9IEJYVF9ERV9QTExfUkFUSU9f MTE1MjsKPiArCQlicmVhazsKPiArCWNhc2UgMzg0MDAwOgo+ICsJCWRpdmlkZXIgPSBCWFRfQ0RD TEtfQ0QyWF9ESVZfU0VMXzFfNTsKPiArCQlyYXRpbyA9IEJYVF9ERV9QTExfUkFUSU9fMTE1MjsK PiArCQlicmVhazsKPiArCWNhc2UgNTc2MDAwOgo+ICsJCWRpdmlkZXIgPSBCWFRfQ0RDTEtfQ0Qy WF9ESVZfU0VMXzE7Cj4gKwkJcmF0aW8gPSBCWFRfREVfUExMX1JBVElPXzExNTI7Cj4gKwkJYnJl YWs7Cj4gKwljYXNlIDYyNDAwMDoKPiArCQlkaXZpZGVyID0gQlhUX0NEQ0xLX0NEMlhfRElWX1NF TF8xOwo+ICsJCXJhdGlvID0gQlhUX0RFX1BMTF9SQVRJT18xMjQ4Owo+ICsJCWJyZWFrOwo+ICsJ Y2FzZSAwOgo+ICsJCS8qIEluY2FzZSBpbmNvbWluZyBmcmVxdWVuY3kgaXMgMCwgb25seSBERSBQ TEwgaGFzIHRvIGJlCj4gKwkJICogZGlzYWJsZWQsIGRpdmlkZXIvcmF0aW8gbmVlZCBub3QgYmUg cHJvZ3JhbW1lZC4KPiArCQkgKiBIZW5jZSwgaW5pdGlhbGl6aW5nIHRvIDAuCj4gKwkJICovCj4g KwkJZGl2aWRlciA9IHJhdGlvID0gMDsKPiArCQlicmVhazsKPiArCWRlZmF1bHQ6Cj4gKwkJRFJN X0VSUk9SKCJVbnN1cHBvcnRlZCBjZCBmcmVxdWVuY3kgJWQgZW5hYmxlIHJlcXVlc3QiLAo+ICsJ CQkJCQkJCWZyZXF1ZW5jeSk7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsKPiArCWN1cnJlbnRfZnJl cSA9IEk5MTVfUkVBRChDRENMS19DVEwpICYgQ0RDTEtfRlJFUV9ERUNJTUFMX01BU0s7Cj4gKwlj dXJyZW50X2ZyZXEgPSAoKGN1cnJlbnRfZnJlcSAvIDIpICsgMSkgKiAxMDAwOwoKQWdhaW4gd2Ug bG9zZSA8MU1IeiBiaXRzIGhlcmUuCgo+ICsKPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMu aHdfbG9jayk7Cj4gKwkvKiBJbmZvcm0gcG93ZXIgY29udHJvbGxlciBvZiB1cGNvbWluZyBmcmVx dWVuY3kgY2hhbmdlICovCj4gKwlyZXQgPSBzYW5keWJyaWRnZV9wY29kZV93cml0ZShkZXZfcHJp diwgRElTUExBWV9QQ1VfQ09OVFJPTCwKPiArCQkJCSAgICAgIDB4ODAwMDAwMDApOwoKSSBjYW4n dCBzZWUgYW55IG5hbWUgZm9yIHRoZSBtYWdpYyB2YWx1ZSBpbiBCc3BlYy4gU28gSSBndWVzcyB3 ZSdsbApsZWF2ZSBpdCBhcyBpcy4KCj4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdf bG9jayk7Cj4gKwo+ICsJaWYgKHJldCkgewo+ICsJCURSTV9ERUJVR19LTVMoInBjb2RlIHdyaXRl IGZhaWxlZCwgbGVhdmluZyBDRENMSyB1bmNoYW5nZWQgKCVkKVxuIiwKPiArCQkJICAgICAgcmV0 KTsKClNvdW5kcyBsaWtlIERSTV9FUlJPUigpIHdvdWxkIGJlIGluIG9yZGVyLgoKPiArCQlyZXR1 cm47Cj4gKwl9Cj4gKwo+ICsJLyogREUgUExMIGhhcyB0byBiZSBkaXNhYmxlZCB3aGVuIGlucHV0 IGZyZXF1ZW5jeSBpcyAwIG9yCj4gKwkgKiBmcmVxdWVuY3kgaXMgdG8gYmUgY2hhbmdlZCB0byA2 MjRNSHogb3IgY2hhbmdlZCBmcm9tIDYyNCBNSHoKPiArCSAqLwo+ICsJaWYgKCFmcmVxdWVuY3kg fHwgY3VycmVudF9mcmVxID09IDYyNDAwMCB8fCBmcmVxdWVuY3kgPT0gNjI0MDAwKSB7Cj4gKwkJ STkxNV9XUklURShCWFRfREVfUExMX0VOQUJMRSwgfkJYVF9ERV9QTExfUExMX0VOQUJMRSk7Cj4g KwkJV0FSTih3YWl0X2ZvcigKPiArCQkJIShJOTE1X1JFQUQoQlhUX0RFX1BMTF9FTkFCTEUpICYg QlhUX0RFX1BMTF9MT0NLKSwKPiArCQkJMSksICJERSBQTEwgbG9ja2VkXG4iKTsKCkRSTV9FUlJP UigpIG1pZ2h0IGJlIGVub3VnaCBoZXJlLiBUaGUgYmFja3RyYWNlIHdvbid0IGdpdmUgaXMgbXVj aCBtb3JlCmluZm9ybWF0aW9uIEkgdGhpbmsuIE1heWJlIGFkZCBhIG5vdGUgdGhhdCB0aGUgdGlt ZW91dCByZXF1aXJlZCBpcwphdCBsZWFzdCAyMDB1cy4KCj4gKwl9Cj4gKwo+ICsJaWYgKGZyZXF1 ZW5jeSkgewo+ICsJCUk5MTVfV1JJVEUoQlhUX0RFX1BMTF9DVEwsIHJhdGlvKTsKClRoZSBzcGVj IHNheXMgd2UgbXVzdCBub3QgY2hhbmdlIHRoZSBvdGhlciBmaWVsZHMgaW4gdGhlIHJlZ2lzdGVy LCBzbwpwZXJoYXBzIHdlIHNob3VsZCBkbyBhbiBSTVcgaGVyZT8gQWx0aG91Z2ggdGhlIGRlZmF1 bHQgaXMgZG9jdW1lbnRlZCB0bwpiZSAwIGZvciBldmVyeXRoaW5nIGVsc2UsIGJ1dCBtYXliZSB0 aGF0IGNvdWxkIGNoYW5nZSBvbiBzb21lIGRldmljZXMuCgo+ICsJCUk5MTVfV1JJVEUoQlhUX0RF X1BMTF9FTkFCTEUsIEJYVF9ERV9QTExfUExMX0VOQUJMRSk7Cj4gKwkJV0FSTih3YWl0X2ZvcigK PiArCQkJSTkxNV9SRUFEKEJYVF9ERV9QTExfRU5BQkxFKSAmIEJYVF9ERV9QTExfTE9DSywgMSks Cj4gKwkJCSJERSBQTEwgbm90IGxvY2tlZFxuIik7CgpBZ2Fpbiwgbm90IHN1cmUgdGhlIFdBUk4g YnV5cyB1cyBhbnl0aGluZyBleHRyYS4gQWdhaW4gbWlnaHQgbWVudGlvbgp0aGF0IHRoZSB0aW1l b3V0IHJlcXVpcmVkIGlzIDIwMHVzLgoKPiArCj4gKwkJY2RjbGtfY3RsID0gSTkxNV9SRUFEKENE Q0xLX0NUTCk7Cj4gKwkJY2RjbGtfY3RsICY9IH5CWFRfQ0RDTEtfQ0QyWF9ESVZfU0VMX01BU0s7 Cj4gKwkJY2RjbGtfY3RsIHw9IGRpdmlkZXI7Cj4gKwo+ICsJCS8qIERpc2FibGUgU1NBIFByZWNo YXJnZSB3aGVuIENEIGNsb2NrIGZyZXF1ZW5jeSA8IDUwMCBNSHosCj4gKwkJICogZW5hYmxlIG90 aGVyd2lzZS4KPiArCQkgKi8KPiArCQljZGNsa19jdGwgJj0gfkJYVF9DRENMS19TU0FfUFJFQ0hB UkdFX0VOQUJMRTsKPiArCQlpZiAoZnJlcXVlbmN5ID49IDUwMDAwMCkKPiArCQkJY2RjbGtfY3Rs IHw9IEJYVF9DRENMS19TU0FfUFJFQ0hBUkdFX0VOQUJMRTsKPiArCj4gKwkJY2RjbGtfY3RsICY9 IH5DRENMS19GUkVRX0RFQ0lNQUxfTUFTSzsKPiArCQljZGNsa19jdGwgfD0gZnJlcTsKPiArCQlJ OTE1X1dSSVRFKENEQ0xLX0NUTCwgY2RjbGtfY3RsKTsKPiArCj4gKwkJbXV0ZXhfbG9jaygmZGV2 X3ByaXYtPnJwcy5od19sb2NrKTsKPiArCQlyZXQgPSBzYW5keWJyaWRnZV9wY29kZV93cml0ZShk ZXZfcHJpdiwgRElTUExBWV9QQ1VfQ09OVFJPTCwKPiArCQkJCQkgICAgICBkZWNpbWFsKTsKPiAr CQltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7Cj4gKwo+ICsJCWlmIChyZXQp IHsKPiArCQkJRFJNX0RFQlVHX0tNUygicGNvZGUgd3JpdGUgZmFpbGVkLiBlcnIgPSAlZCBkZWNp bWFsID0gJWRcbiIsCj4gKwkJCQkgICAgICByZXQsIGRlY2ltYWwpOwoKVGhlIGRlYnVnIG1lc3Nh Z2UgY291bGQgYmUgYSBiaXQgbW9yZSBkZXNjcmlwdGl2ZSBvZiB3aGF0IHdlIHdlcmUgdHJ5aW5n CnRvIGRvIGhlcmUuCgo+ICsJCQlyZXR1cm47Cj4gKwkJfQo+ICsKPiArCQlkZXZfcHJpdi0+Y2Rj bGtfZnJlcSA9IGZyZXF1ZW5jeTsKPiArCX0gZWxzZSB7Cj4gKwkJbXV0ZXhfbG9jaygmZGV2X3By aXYtPnJwcy5od19sb2NrKTsKPiArCQlyZXQgPSBzYW5keWJyaWRnZV9wY29kZV93cml0ZShkZXZf cHJpdiwgRElTUExBWV9QQ1VfQ09OVFJPTCwgMSk7Cj4gKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+cnBzLmh3X2xvY2spOwo+ICsKPiArCQlpZiAocmV0KQo+ICsJCQlEUk1fREVCVUdfS01TKCJw Y29kZSB3cml0ZSBmYWlsZWQuIGVyciA9ICVkIGRlY2ltYWwgPSAxXG4iLAo+ICsJCQkJICAgICAg cmV0KTsKPiArCX0KCkxvb2tzIGxpa2Ugd2UgY291bGQgYXZvaWQgdGhlIGR1cGxpY2F0ZWQgcGNv ZGUgd3JpdGUgZWFzaWx5LiBBbHNvIHRoZQpzcGVjIHNheXMgdGhhdCBjZGNsayB3aWxsIGFjdHVh bGx5IGJlIDE5LjJNSHogd2l0aCBERSBQTEwgZGlzYWJsZWQuIFNvCnNlZW1zIGxpa2Ugd2Ugc2hv dWxkIHVzZSB0aGF0IGluc3RlYWQgb2YgMCBhcyB0aGUgdmFsdWUgYWxsIGFyb3VuZC4KCklmIHdl IHdhbnQgdG8ga2VlcCB0aGUgc2V0X2NkY2xrKDApIGFzIGEgaGFuZHkgc2hvcnRoYW5kIGZvciAi ZGlzYWJsZQp0aGUgREUgUExMIiB3ZSBjb3VsZCB0aGVuIGhhdmUKaWYgKGZyZXF1ZW5jeSA9PSAw KQoJZnJlcXVlbmN5ID0gMTkyMDA7CmF0IHRoZSBzdGFydCBvZiB0aGUgZnVuY3Rpb24uCgo+ICt9 Cj4gKwo+ICt2b2lkIGJ4dF9pbml0X2NkY2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3sK PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 Cj4gKwo+ICsJLyogTkRFX1JTVFdSTl9PUFQgUlNUIFBDSCBIYW5kc2hha2UgRW4gbXVzdCBhbHdh eXMgYmUgMGIgb24gQlhUCj4gKwkgKiBvciBlbHNlIHRoZSByZXNldCB3aWxsIGhhbmcgYmVjYXVz ZSB0aGVyZSBpcyBubyBQQ0ggdG8gcmVzcG9uZC4KPiArCSAqIE1vdmUgdGhlIGhhbmRzaGFrZSBw cm9ncmFtbWluZyB0byBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4KPiArCSAqIFByZXZpb3VzbHkg d2FzIGxlZnQgdXAgdG8gQklPUy4KPiArCSAqLwo+ICsJdTMyIHRlbXAgPSBJOTE1X1JFQUQoSFNX X05ERV9SU1RXUk5fT1BUKTsKPiArCj4gKwl0ZW1wICY9IH5SRVNFVF9QQ0hfSEFORFNIQUtFX0VO QUJMRTsKPiArCUk5MTVfV1JJVEUoSFNXX05ERV9SU1RXUk5fT1BULCB0ZW1wKTsKPiArCj4gKwkv KiBFbmFibGUgUEcxIGZvciBjZGNsayAqLwo+ICsJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2 X3ByaXYsIFBPV0VSX0RPTUFJTl9QTExTKTsKPiArCj4gKwkvKiBjaGVjayBpZiBjZCBjbG9jayBp cyBlbmFibGVkICovCj4gKwlpZiAoSTkxNV9SRUFEKEJYVF9ERV9QTExfRU5BQkxFKSAmIEJYVF9E RV9QTExfUExMX0VOQUJMRSkgewo+ICsJCURSTV9ERUJVR19LTVMoIkRpc3BsYXkgYWxyZWFkeSBp bml0aWFsaXplZFxuIik7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsKPiArCS8qIEZJWE1FOi0gVGhl IGluaXRpYWwgQ0RDTEsgbmVlZHMgdG8gYmUgcmVhZCBmcm9tIFZCVC4KPiArCSAqIE5lZWQgdG8g bWFrZSB0aGlzIGNoYW5nZSBhZnRlciBWQlQgaGFzIGNoYW5nZXMgZm9yIEJYVC4KPiArCSAqLwo+ ICsJYnh0X3NlbGVjdF9jZGNsa19mcmVxKGRldiwgNjI0MDAwKTsKCkRvIHdlIG5lZWQgdG8gaW5p dGlhbGl6ZSB0aGlzIGhlcmU/IEl0IHdvdWxkIGdldCBpbml0aWFsaXplZCBhdCB0aGUKZmlyc3Qg bW9kZXNldCBhbnl3YXkuIE9yIGlzIHRoZXJlIHNvbWUgcHJvYmxlbSB3aXRoIEFVWC9zb21ldGhp bmcKd2l0aCB0aGUgbG93IDE5LjJNSHogY2RjbGsgd2UnZCBoYXZlIHcvbyBERSBQTEw/Cgo+ICsK PiArCUk5MTVfV1JJVEUoREJVRl9DVEwsIEk5MTVfUkVBRChEQlVGX0NUTCkgfCBEQlVGX1BPV0VS X1JFUVVFU1QpOwo+ICsJdWRlbGF5KDEwKTsKPiArCj4gKwlpZiAoIShJOTE1X1JFQUQoREJVRl9D VEwpICYgREJVRl9QT1dFUl9TVEFURSkpCj4gKwkJRFJNX0VSUk9SKCJEQnVmIHBvd2VyIGVuYWJs ZSB0aW1lb3V0IVxuIik7Cj4gK30KPiArCj4gK3ZvaWQgYnh0X3VuaW5pdF9jZGNsayhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsKPiArCWJ4dF9kZGlfcGh5X3VuaW5pdChkZXYpOwo+ ICsKPiArCUk5MTVfV1JJVEUoREJVRl9DVEwsIEk5MTVfUkVBRChEQlVGX0NUTCkgJiB+REJVRl9Q T1dFUl9SRVFVRVNUKTsKPiArCXVkZWxheSgxMCk7Cj4gKwo+ICsJaWYgKEk5MTVfUkVBRChEQlVG X0NUTCkgJiBEQlVGX1BPV0VSX1NUQVRFKQo+ICsJCURSTV9FUlJPUigiREJ1ZiBwb3dlciBkaXNh YmxlIHRpbWVvdXQhXG4iKTsKPiArCj4gKwlieHRfc2VsZWN0X2NkY2xrX2ZyZXEoZGV2LCAwKTsK PiArCj4gKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX1BM TFMpOwo+ICt9Cj4gKwo+ICB2b2lkIGludGVsX2RkaV9wbGxfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwo+IEBAIC0xOTczLDYgKzIyNjEsOSBAQCB2b2lkIGludGVsX2RkaV9wbGxf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJaWYgKElTX1NLWUxBS0UoZGV2KSkgewo+ ICAJCWlmICghKEk5MTVfUkVBRChMQ1BMTDFfQ1RMKSAmIExDUExMX1BMTF9FTkFCTEUpKQo+ICAJ CQlEUk1fRVJST1IoIkxDUExMMSBpcyBkaXNhYmxlZFxuIik7Cj4gKwl9IGVsc2UgaWYgKElTX0JS T1hUT04oZGV2KSkgewo+ICsJCWJ4dF9pbml0X2NkY2xrKGRldik7Cj4gKwkJYnh0X2RkaV9waHlf aW5pdChkZXYpOwo+ICAJfSBlbHNlIHsKPiAgCQkvKgo+ICAJCSAqIFRoZSBMQ1BMTCByZWdpc3Rl ciBzaG91bGQgYmUgdHVybmVkIG9uIGJ5IHRoZSBCSU9TLiBGb3Igbm93Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGI5MTg2MmUuLmJhMmQxYWUgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTgyODQsNiArODI4NCw3NSBAQCB2b2lk IGhzd19kaXNhYmxlX3BjOChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlp bnRlbF9wcmVwYXJlX2RkaShkZXYpOwo+ICB9Cj4gIAo+ICtzdGF0aWMgaW50IGJyb3h0b25fY2Fs Y19jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQlpbnQgbWF4 X3BpeGNsaykKPiArewo+ICsJLyoKPiArCSAqIENEY2xrcyBhcmUgc3VwcG9ydGVkOgo+ICsJICog ICAxNDRNSHoKPiArCSAqICAgMjg4TUh6Cj4gKwkgKiAgIDM4NE1Iego+ICsJICogICA1NzZNSHoK PiArCSAqICAgNjI0TUh6Cj4gKwkgKiBDaGVjayB0byBzZWUgd2hldGhlciB3ZSdyZSBhYm92ZSA5 MCUgb2YgdGhlIGxvd2VyIGJpbiBhbmQKPiArCSAqIGFkanVzdCBpZiBuZWVkZWQuCj4gKwkgKi8K PiArCj4gKwkvKiBJZiBtYXhfcGl4Y2xrIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4IGFsbG93ZWQg Y2xvY2ssIHJldHVybiAwLgo+ICsJICogRklYTUU6LSBUaGUgbWF4IGNsb2NrIGFsbG93ZWQgbmVl ZHMgdG8gYmUgcHJvdmlkZWQgYnkgR09QL1ZCSU9TCj4gKwkgKiB2aWEgYSBzY3JhdGNoIHBhZCBy ZWdpc3Rlci4gVGlsbCB0aGF0IGlzIGVuYWJsZWQsIHVzZSA2MjRNSHogYXMgbWF4Lgo+ICsJICov Cj4gKwlpZiAobWF4X3BpeGNsayA+IDYyNDAwMCkKPiArCQlyZXR1cm4gMDsKCkkgdGhpbmsgd2Ug Y2FuIGp1c3QgaWdub3JlIHRoZSBtYXggbGltaXQgZm9yIG5vdy4gVGhhdCdzIHdoYXQgd2UgZG8g Zm9yClZMVi9DSFYuIE9uY2Ugd2UgZ2V0IG15IGNkY2xrIHNlcmllcyBpbiB3ZSdsbCBoYXZlIG1h eF9jZGNsayBhbmQgY2FuCmNoZWNrIHN1Y2ggbGltaXRzIG9uIGFsbCBwbGF0Zm9ybXMsIGFuZCBp biB0aGUgYXBwcnByaWF0ZSBwbGFjZSB3aGVyZSB3ZQpjYW4gc3RpbGwgZmFpbCB0aGUgb3BlcmF0 aW9uIC8gcmVqZWN0IHRoZSBtb2RlLgoKVGhpcyB3aWxsIGF2b2lkIGhhdmluZyB0aGUgIXJlcV9j ZGNsayBzcGVjaWFsIGNhc2VzIGJlbG93LgoKPiArCWVsc2UgaWYgKG1heF9waXhjbGsgPiA1NzYw MDAqOS8xMCkKPiArCQlyZXR1cm4gNjI0MDAwOwo+ICsJZWxzZSBpZiAobWF4X3BpeGNsayA+IDM4 NDAwMCo5LzEwKQo+ICsJCXJldHVybiA1NzYwMDA7Cj4gKwllbHNlIGlmIChtYXhfcGl4Y2xrID4g Mjg4MDAwKjkvMTApCj4gKwkJcmV0dXJuIDM4NDAwMDsKPiArCWVsc2UgaWYgKG1heF9waXhjbGsg PiAxNDQwMDAqOS8xMCkKPiArCQlyZXR1cm4gMjg4MDAwOwoKQXJ0IGNvbmZpcm1lZCB0aGF0IHdl IGRvbid0IG5lZWQgYW55IGd1YXJkYmFuZCBoZXJlLCBzbyB0aGUgOS8xMCBmYWN0b3IKc2hvdWxk IGJlIHJlbW92ZWQsIGFuZCB0aGUgY29tbWVudCBhZGp1c3RlZC4KCj4gKwllbHNlCj4gKwkJcmV0 dXJuIDE0NDAwMDsKCkNhbiB3ZSBkcm9wIHRvIERFIFBMTCBkaXNhYmxlZC8xOS4yTUh6IHdoZW4g dGhlcmUgYXJlIG5vIGFjdGl2ZSBwaXBlcz8KSWYgc28gd2Ugc2hvdWxkIGFkZCBzdWNoIGNoZWNr IGhlcmUuIFNvIHNvbWV0aGluZyBsaWtlOgouLi4KZWxzZSBpZiAobWF4X3BpeGNsayA+IDApCgly ZXR1cm4gMTQ0MDAwOwplbHNlCglyZXR1cm4gMTkyMDA7Cgo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9p ZCBicm94dG9uX21vZGVzZXRfZ2xvYmFsX3BpcGVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g KwkJCQkJICAgIHVuc2lnbmVkICpwcmVwYXJlX3BpcGVzKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGludGVs X2NydGMgKmludGVsX2NydGM7Cj4gKwlpbnQgbWF4X3BpeGNsayA9IGludGVsX21vZGVfbWF4X3Bp eGNsayhkZXZfcHJpdik7Cj4gKwlpbnQgcmVxX2NkY2xrID0gYnJveHRvbl9jYWxjX2NkY2xrKGRl dl9wcml2LCBtYXhfcGl4Y2xrKTsKPiArCj4gKwlpZiAoIXJlcV9jZGNsaykgewo+ICsJCURSTV9F UlJPUigiQ0RDTEsgZXhjZWVkcyBtYXhpbXVtIGFsbG93YWJsZSB2YWx1ZVxuIik7Cj4gKwkJcmV0 dXJuOwo+ICsJfQo+ICsKPiArCWlmIChyZXFfY2RjbGsgPT0gZGV2X3ByaXYtPmNkY2xrX2ZyZXEp Cj4gKwkJcmV0dXJuOwo+ICsKPiArCS8qIGRpc2FibGUvZW5hYmxlIGFsbCBjdXJyZW50bHkgYWN0 aXZlIHBpcGVzIHdoaWxlIHdlIGNoYW5nZSBjZGNsayAqLwo+ICsJZm9yX2VhY2hfaW50ZWxfY3J0 YyhkZXYsIGludGVsX2NydGMpCj4gKwkJaWYgKGludGVsX2NydGMtPmJhc2UuZW5hYmxlZCkKPiAr CQkJKnByZXBhcmVfcGlwZXMgfD0gKDEgPDwgaW50ZWxfY3J0Yy0+cGlwZSk7Cj4gK30KCk1pZ2h0 IG1ha2Ugc2Vuc2UgdG8gY29tYmluZSB0aGlzIHdpdGggdGhlIFZMVi9DSFYgZnVuY3Rpb24gc28g dGhhdAp3ZSBkb24ndCBoYXZlIHRvIGFkZCBlc3NlbnRpYWxseSBkdXBsaWNhdGVkIGJsb2NrcyBv ZiBjb2RlIGluCl9faW50ZWxfc2V0X21vZGUoKS4KCj4gKwo+ICtzdGF0aWMgdm9pZCBicm94dG9u X21vZGVzZXRfZ2xvYmFsX3Jlc291cmNlcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ ICsJaW50IG1heF9waXhjbGsgPSBpbnRlbF9tb2RlX21heF9waXhjbGsoZGV2X3ByaXYpOwo+ICsJ aW50IHJlcV9jZGNsayA9IGJyb3h0b25fY2FsY19jZGNsayhkZXZfcHJpdiwgbWF4X3BpeGNsayk7 Cj4gKwo+ICsJaWYgKCFyZXFfY2RjbGspIHsKPiArCQlEUk1fRVJST1IoIkNEQ0xLIGV4Y2VlZHMg bWF4aW11bSBhbGxvd2FibGUgdmFsdWVcbiIpOwo+ICsJCXJldHVybjsKPiArCX0KPiArCj4gKwlp ZiAocmVxX2NkY2xrICE9IGRldl9wcml2LT5jZGNsa19mcmVxKQo+ICsJCWJ4dF9zZWxlY3RfY2Rj bGtfZnJlcShkZXYsIHJlcV9jZGNsayk7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgaGFzd2VsbF9j cnRjX2NvbXB1dGVfY2xvY2soc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAkJCQkgICAgICBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IEBAIC0xMTIzOSw2ICsx MTMwOCw5IEBAIHN0YXRpYyBpbnQgX19pbnRlbF9zZXRfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCj4gIAo+ICAJCS8qIG1heSBoYXZlIGFkZGVkIG1vcmUgdG8gcHJlcGFyZV9waXBlcyB0aGFu IHdlIHNob3VsZCAqLwo+ICAJCXByZXBhcmVfcGlwZXMgJj0gfmRpc2FibGVfcGlwZXM7Cj4gKwl9 IGVsc2UgaWYgKElTX0JST1hUT04oZGV2KSkgewo+ICsJCWJyb3h0b25fbW9kZXNldF9nbG9iYWxf cGlwZXMoZGV2LCAmcHJlcGFyZV9waXBlcyk7Cj4gKwkJcHJlcGFyZV9waXBlcyAmPSB+ZGlzYWJs ZV9waXBlczsKPiAgCX0KPiAgCj4gIAlyZXQgPSBfX2ludGVsX3NldF9tb2RlX3NldHVwX3BsbHMo ZGV2LCBtb2Rlc2V0X3BpcGVzLCBkaXNhYmxlX3BpcGVzKTsKPiBAQCAtMTMxMzMsNiArMTMyMDUs OSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9pbml0X2Rpc3BsYXkoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiAgCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gIAkJZGV2X3ByaXYtPmRp c3BsYXkubW9kZXNldF9nbG9iYWxfcmVzb3VyY2VzID0KPiAgCQkJdmFsbGV5dmlld19tb2Rlc2V0 X2dsb2JhbF9yZXNvdXJjZXM7Cj4gKwl9IGVsc2UgaWYgKElTX0JST1hUT04oZGV2KSkgewo+ICsJ CWRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRfZ2xvYmFsX3Jlc291cmNlcyA9Cj4gKwkJCWJyb3h0 b25fbW9kZXNldF9nbG9iYWxfcmVzb3VyY2VzOwo+ICAJfQo+ICAKPiAgCXN3aXRjaCAoSU5URUxf SU5GTyhkZXYpLT5nZW4pIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IGM3NzEy OGMuLjRiYzIwNDEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC04NzMsNiAr ODczLDcgQEAgdm9pZCBpbnRlbF9kZGlfaW5pdF9kcF9idWZfcmVnKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyKTsKPiAgdm9pZCBpbnRlbF9kZGlfY2xvY2tfZ2V0KHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAo+ICAJCQkgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29u ZmlnKTsKPiAgdm9pZCBpbnRlbF9kZGlfc2V0X3ZjX3BheWxvYWRfYWxsb2Moc3RydWN0IGRybV9j cnRjICpjcnRjLCBib29sIHN0YXRlKTsKPiArdm9pZCBieHRfc2VsZWN0X2NkY2xrX2ZyZXEoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIGZyZXF1ZW5jeSk7Cj4gIAo+ICAvKiBpbnRlbF9mcm9u dGJ1ZmZlci5jICovCj4gIHZvaWQgaW50ZWxfZmJfb2JqX2ludmFsaWRhdGUoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiwKPiBAQCAtMTAyMCw2ICsxMDIxLDkgQEAgdm9pZCBpbnRlbF9w cmVwYXJlX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICB2b2lkIGludGVsX2Zpbmlz aF9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgdm9pZCBoc3dfZW5hYmxlX3BjOChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICB2b2lkIGhzd19kaXNhYmxlX3Bj OChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICt2b2lkIGJ4dF9pbml0X2Nk Y2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICt2b2lkIGJ4dF91bmluaXRfY2RjbGsoc3Ry dWN0IGRybV9kZXZpY2UgKmRldik7Cj4gK3ZvaWQgYnh0X2RkaV9waHlfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KTsKPiAgdm9pZCBpbnRlbF9kcF9nZXRfbV9uKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjLAo+ICAJCSAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyk7 Cj4gIHZvaWQgaW50ZWxfZHBfc2V0X21fbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywgZW51bSBs aW5rX21fbl9zZXQgbV9uKTsKPiAtLSAKPiAyLjEuMAo+IAo+IF9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IElu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVs IE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=