From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v3 1/3] drm/i915: set proper N/M in modeset Date: Fri, 5 Aug 2016 09:36:01 +0300 Message-ID: <20160805063601.GN4329@intel.com> References: <1470297484-82178-1-git-send-email-libin.yang@linux.intel.com> <20160804085257.GA4329@intel.com> <96A12704CE18D347B625EE2D4A099D19119F943F@SHSMSX103.ccr.corp.intel.com> <20160805055633.GM4329@intel.com> <96A12704CE18D347B625EE2D4A099D19119F94EB@SHSMSX103.ccr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 85CFC6EAE8 for ; Fri, 5 Aug 2016 06:36:05 +0000 (UTC) Content-Disposition: inline In-Reply-To: <96A12704CE18D347B625EE2D4A099D19119F94EB@SHSMSX103.ccr.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Yang, Libin" Cc: "tiwai@suse.de" , "Vetter, Daniel" , "libin.yang@linux.intel.com" , "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBBdWcgMDUsIDIwMTYgYXQgMDY6MTY6NTlBTSArMDAwMCwgWWFuZywgTGliaW4gd3Jv dGU6Cj4gSGkgVmlsbGUsCj4gCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4gRnJv bTogVmlsbGUgU3lyasOkbMOkIFttYWlsdG86dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb21d Cj4gPiBTZW50OiBGcmlkYXksIEF1Z3VzdCA1LCAyMDE2IDE6NTcgUE0KPiA+IFRvOiBZYW5nLCBM aWJpbiA8bGliaW4ueWFuZ0BpbnRlbC5jb20+Cj4gPiBDYzogbGliaW4ueWFuZ0BsaW51eC5pbnRl bC5jb207IGludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7Cj4gPiBqYW5pLm5pa3VsYUBs aW51eC5pbnRlbC5jb207IFZldHRlciwgRGFuaWVsIDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT47 Cj4gPiB0aXdhaUBzdXNlLmRlCj4gPiBTdWJqZWN0OiBSZTogW1BBVENIIHYzIDEvM10gZHJtL2k5 MTU6IHNldCBwcm9wZXIgTi9NIGluIG1vZGVzZXQKPiA+IAo+ID4gT24gRnJpLCBBdWcgMDUsIDIw MTYgYXQgMDU6Mzk6MTlBTSArMDAwMCwgWWFuZywgTGliaW4gd3JvdGU6Cj4gPiA+IEhpIFZpbGxl LAo+ID4gPgo+ID4gPiBTb3JyeSBmb3IgZGVsYXkgcmVwbHkuIFBsZWFzZSBzZWUgbXkgY29tbWVu dHMgYmVsb3cuCj4gPiA+Cj4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+ID4g PiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgW21haWx0bzp2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVs LmNvbV0KPiA+ID4gPiBTZW50OiBUaHVyc2RheSwgQXVndXN0IDQsIDIwMTYgNDo1MyBQTQo+ID4g PiA+IFRvOiBsaWJpbi55YW5nQGxpbnV4LmludGVsLmNvbQo+ID4gPiA+IENjOiBpbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb207Cj4gPiA+ ID4gVmV0dGVyLCBEYW5pZWwgPGRhbmllbC52ZXR0ZXJAaW50ZWwuY29tPjsgdGl3YWlAc3VzZS5k ZTsgWWFuZywgTGliaW4KPiA+ID4gPiA8bGliaW4ueWFuZ0BpbnRlbC5jb20+Cj4gPiA+ID4gU3Vi amVjdDogUmU6IFtQQVRDSCB2MyAxLzNdIGRybS9pOTE1OiBzZXQgcHJvcGVyIE4vTSBpbiBtb2Rl c2V0Cj4gPiA+ID4KPiA+ID4gPiBPbiBUaHUsIEF1ZyAwNCwgMjAxNiBhdCAwMzo1ODowMlBNICsw ODAwLCBsaWJpbi55YW5nQGxpbnV4LmludGVsLmNvbQo+ID4gd3JvdGU6Cj4gPiA+ID4gPiBGcm9t OiBMaWJpbiBZYW5nIDxsaWJpbi55YW5nQGxpbnV4LmludGVsLmNvbT4KPiA+ID4gPiA+Cj4gPiA+ ID4gPiBXaGVuIG1vZGVzZXQgb2NjdXJzIGFuZCB0aGUgTFNfQ0xLIGlzIHNldCB0byBzb21lIHNw ZWNpYWwgdmFsdWVzCj4gPiA+ID4gPiBpbiBEUCBtb2RlLCB0aGUgTi9NIG5lZWQgdG8gYmUgc2V0 IG1hbnVhbGx5IGlmIGF1ZGlvIGlzIHBsYXlpbmcuCj4gPiA+ID4gPiBPdGhlcndpc2UgdGhlIGZp cnN0IHNldmVyYWwgc2Vjb25kcyBtYXkgYmUgc2lsZW50IGluIGF1ZGlvIHBsYXliYWNrLgo+ID4g PiA+ID4KPiA+ID4gPiA+IFRoZSByZWxhdGlvbnNoaXAgb2YgTWF1ZCBhbmQgTmF1ZCBpcyBleHBy ZXNzZWQgaW4gdGhlIGZvbGxvd2luZwo+ID4gPiA+ID4gZXF1YXRpb246Cj4gPiA+ID4gPiBNYXVk L05hdWQgPSA1MTIgKiBmcyAvIGZfTFNfQ2xrCj4gPiA+ID4gPgo+ID4gPiA+ID4gUGxlYXNlIHJl ZmVyIFZFU0EgRGlzcGxheVBvcnQgU3RhbmRhcmQgc3BlYyBmb3IgZGV0YWlscy4KPiA+ID4gPgo+ ID4gPiA+IFBsZWFzIGluY2x1ZGUgYSBzbWFsbCBjaGFuZ2Vsb2cgaGVyZSBzbyB0aGF0IEkga25v dyB3aGF0IGhhcyBjaGFuZ2VkCj4gPiA+ID4gd2l0aCBlYWNoIHJldmlzaW9uIG9mIHRoZSBwYXRj aC4gRWc6Cj4gPiA+ID4KPiA+ID4gPiB2MjogYmxhaAo+ID4gPiA+IHYzOiB3aGF0ZXZlcgo+ID4g PiA+Cj4gPiA+ID4gPgo+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogTGliaW4gWWFuZyA8bGliaW4u eWFuZ0BsaW51eC5pbnRlbC5jb20+Cj4gPiA+ID4gPiAtLS0KPiA+ID4gPiA+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgIHwgICA2ICsrCj4gPiA+ID4gPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfYXVkaW8uYyB8IDEzMwo+ID4gPiA+ID4gKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLQo+ID4gPiA+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMTIzIGluc2Vy dGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQo+ID4gPiA+ID4KPiA+ID4gPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiA+ID4gPiBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmggaW5kZXggOGJmZGU3NS4uMmY5ZDAwZSAxMDA2NDQKPiA+ID4g PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ID4gPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ID4gPiA+IEBAIC03MzUxLDYgKzcz NTEsMTIgQEAgZW51bSB7Cj4gPiA+ID4gPiAgI2RlZmluZSBfSFNXX0FVRF9DT05GSUdfQgkJMHg2 NTEwMAo+ID4gPiA+ID4gICNkZWZpbmUgSFNXX0FVRF9DRkcocGlwZSkJCV9NTUlPX1BJUEUocGlw ZSwKPiA+ID4gPiBfSFNXX0FVRF9DT05GSUdfQSwgX0hTV19BVURfQ09ORklHX0IpCj4gPiA+ID4g Pgo+ID4gPiA+ID4gKyNkZWZpbmUgX0hTV19BVURfTV9DVFNfRU5BQkxFX0EJCTB4NjUwMjgKPiA+ ID4gPiA+ICsjZGVmaW5lIF9IU1dfQVVEX01fQ1RTX0VOQUJMRV9CCQkweDY1MTI4Cj4gPiA+ID4g PiArI2RlZmluZSBIU1dfQVVEX01fQ1RTX0VOQUJMRShwaXBlKQo+ID4gCV9NTUlPX1BJUEUocGlw ZSwKPiA+ID4gPiBfSFNXX0FVRF9NX0NUU19FTkFCTEVfQSwgX0hTV19BVURfTV9DVFNfRU5BQkxF X0IpCj4gPiA+ID4gPiArI2RlZmluZSAgIEFVRF9NX0NUU19NX1ZBTFVFX0lOREVYCSgxIDw8IDIx KQo+ID4gPiA+ID4gKyNkZWZpbmUgICBBVURfTV9DVFNfTV9QUk9HX0VOQUJMRQkoMSA8PCAyMCkK PiA+ID4gPgo+ID4gPiA+IFBsZWFzZSB0cnkgdG8ga2VlcCB0aGUgcmVnaXN0ZXIgZGVmaW5lcyBp biBvcmRlciBieSB0aGUgcmVnaXN0ZXIgb2Zmc2V0Lgo+ID4gPiA+IEllLiB0aGVzZSByZWdpc3Rl cnMgc2hvdWxkIGJlIHBsYWNlZCBqdXN0IGFmdGVyIEhTV19BVURfTUlTQ19DVFJMLgo+ID4gPiA+ Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiAgI2RlZmluZSBfSFNXX0FVRF9NSVNDX0NUUkxfQQkJMHg2 NTAxMAo+ID4gPiA+ID4gICNkZWZpbmUgX0hTV19BVURfTUlTQ19DVFJMX0IJCTB4NjUxMTAKPiA+ ID4gPiA+ICAjZGVmaW5lIEhTV19BVURfTUlTQ19DVFJMKHBpcGUpCQlfTU1JT19QSVBFKHBpcGUs Cj4gPiA+ID4gX0hTV19BVURfTUlTQ19DVFJMX0EsIF9IU1dfQVVEX01JU0NfQ1RSTF9CKQo+ID4g PiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKPiA+ ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+ID4gPiA+ID4gaW5k ZXggNjcwMGE3Yi4uMDRlNzM1OCAxMDA2NDQKPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2F1ZGlvLmMKPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2F1ZGlvLmMKPiA+ID4gPiA+IEBAIC05OCw2ICs5OCwzNSBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IHsKPiA+ID4gPiA+ICAJeyAxOTIwMDAsIFRNRFNfMjk3TSwgMjA0ODAsIDI0NzUwMCB9 LCAgfTsKPiA+ID4gPiA+Cj4gPiA+ID4gPiArI2RlZmluZSBMQ181NDBNIDU0MDAwMAo+ID4gPiA+ ID4gKyNkZWZpbmUgTENfMjcwTSAyNzAwMDAKPiA+ID4gPiA+ICsjZGVmaW5lIExDXzE2Mk0gMTYy MDAwCj4gPiA+ID4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCB7Cj4gPiA+ID4gPiArCWludCBzYW1w bGVfcmF0ZTsKPiA+ID4gPiA+ICsJaW50IGNsb2NrOwo+ID4gPiA+ID4gKwl1MTYgbjsKPiA+ID4g PiA+ICsJdTE2IG07Cj4gPiA+ID4gPiArfSBhdWRfbm1bXSA9IHsKPiA+ID4gPiA+ICsJezE5MjAw MCwgTENfNTQwTSwgNTYyNSwgMTAyNH0sCj4gPiA+ID4gICAgICAgICAgXiAgICAgICAgICAgICAg ICAgICAgICAgICAgXgo+ID4gPiA+Cj4gPiA+ID4gU3R5bGUgbml0OiBwbGVhc2UgYWRkIHNwYWNl cyBoZXJlCj4gPiA+ID4KPiA+ID4gPiA+ICsJezk2MDAwLCBMQ181NDBNLCA1NjI1LCA1MTJ9LAo+ ID4gPiA+ID4gKwl7ODgyMDAsIExDXzU0ME0sIDkzNzUsIDc4NH0sCj4gPiA+ID4gPiArCXs0ODAw MCwgTENfNTQwTSwgNTYyNSwgMjU2fSwKPiA+ID4gPiA+ICsJezQ0MTAwLCBMQ181NDBNLCA5Mzc1 LCAzOTJ9LAo+ID4gPiA+ID4gKwl7MzIwMDAsIExDXzU0ME0sIDE2ODc1LCA1MTJ9LAo+ID4gPiA+ ID4gKwl7MTkyMDAwLCBMQ18yNzBNLCA1NjI1LCAyMDQ4fSwKPiA+ID4gPiA+ICsJezk2MDAwLCBM Q18yNzBNLCA1NjI1LCAxMDI0fSwKPiA+ID4gPiA+ICsJezg4MjAwLCBMQ18yNzBNLCA5Mzc1LCAx NTY4fSwKPiA+ID4gPiA+ICsJezQ4MDAwLCBMQ18yNzBNLCA1NjI1LCA1MTJ9LAo+ID4gPiA+ID4g Kwl7NDQxMDAsIExDXzI3ME0sIDkzNzUsIDc4NH0sCj4gPiA+ID4gPiArCXszMjAwMCwgTENfMjcw TSwgMTY4NzUsIDEwMjR9LAo+ID4gPiA+ID4gKwl7MTkyMDAwLCBMQ18xNjJNLCAzMzc1LCAyMDQ4 fSwKPiA+ID4gPiA+ICsJezk2MDAwLCBMQ18xNjJNLCAzMzc1LCAxMDI0fSwKPiA+ID4gPiA+ICsJ ezg4MjAwLCBMQ18xNjJNLCA1NjI1LCAxNTY4fSwKPiA+ID4gPiA+ICsJezQ4MDAwLCBMQ18xNjJN LCAzMzc1LCA1MTJ9LAo+ID4gPiA+ID4gKwl7NDQxMDAsIExDXzE2Mk0sIDU2MjUsIDc4NH0sCj4g PiA+ID4gPiArCXszMjAwMCwgTENfMTYyTSwgMTAxMjUsIDEwMjR9LAo+ID4gPiA+Cj4gPiA+ID4g VGhlIG51bWJlcnMgbG9va3MgZ29vZC4gQnV0IGxvb2tzIGxpa2UgeW91IGZvcmdvdCBhYm91dCAx NzYuNCBrSHo/Cj4gPiA+ID4KPiA+ID4gPiA+ICt9Owo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gIC8q IGdldCBBVURfQ09ORklHX1BJWEVMX0NMT0NLX0hETUlfKiB2YWx1ZSBmb3IgbW9kZSAqLyAgc3Rh dGljCj4gPiA+ID4gPiB1MzIgYXVkaW9fY29uZmlnX2hkbWlfcGl4ZWxfY2xvY2soY29uc3Qgc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUKPiA+ID4gPiA+ICphZGp1c3RlZF9tb2RlKSAgeyBAQCAtMTIx LDIwICsxNTAsNTAgQEAgc3RhdGljIHUzMgo+ID4gPiA+ID4gYXVkaW9fY29uZmlnX2hkbWlfcGl4 ZWxfY2xvY2soY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUKPiA+ICphZGp1c3RlZAo+ID4g PiA+ID4gIAlyZXR1cm4gaGRtaV9hdWRpb19jbG9ja1tpXS5jb25maWc7ICB9Cj4gPiA+ID4gPgo+ ID4gPiA+ID4gLXN0YXRpYyBpbnQgYXVkaW9fY29uZmlnX2dldF9uKGNvbnN0IHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlCj4gPiA+ID4gPiAqbW9kZSwgaW50IHJhdGUpCj4gPiA+ID4gPiArc3RhdGlj IGludCBhdWRpb19jb25maWdfZ2V0X24oc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gPiA+ID4g PiArCQkJICAgICAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUs Cj4gPiA+ID4gPiArCQkJICAgICAgaW50IHJhdGUpCj4gPiA+ID4gPiAgewo+ID4gPiA+ID4gIAlp bnQgaTsKPiA+ID4gPiA+Cj4gPiA+ID4gPiAtCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGF1 ZF9uY3RzKTsgaSsrKSB7Cj4gPiA+ID4gPiAtCQlpZiAoKHJhdGUgPT0gYXVkX25jdHNbaV0uc2Ft cGxlX3JhdGUpICYmCj4gPiA+ID4gPiAtCQkJKG1vZGUtPmNsb2NrID09IGF1ZF9uY3RzW2ldLmNs b2NrKSkgewo+ID4gPiA+ID4gLQkJCXJldHVybiBhdWRfbmN0c1tpXS5uOwo+ID4gPiA+ID4gKwlp ZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9IRE1JKSkg ewo+ID4gPiA+ID4gKwkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYXVkX25jdHMpOyBpKysp IHsKPiA+ID4gPiA+ICsJCQlpZiAoKHJhdGUgPT0gYXVkX25jdHNbaV0uc2FtcGxlX3JhdGUpICYm Cj4gPiA+ID4gPiArCQkJCShhZGp1c3RlZF9tb2RlLT5jbG9jayA9PSBhdWRfbmN0c1tpXS5jbG9j aykpIHsKPiA+ID4gPgo+ID4gPiA+IEluZGVudCBmYWlsLCBhbmQgYSBiaXQgdG9vIG1hbnkgcGFy ZW5zIGZvciBteSB0YXN0ZS4gU2hvdWxkIGxvb2sgbGlrZToKPiA+ID4gPgo+ID4gPiA+IAkJaWYg KHJhdGUgPT0gYXVkX25jdHNbaV0uc2FtcGxlX3JhdGUgJiYKPiA+ID4gPiAJCSAgICBhZGp1c3Rl ZF9tb2RlLT5jbG9jayA9PSBhdWRfbmN0c1tpXS5jbG9jaykgewo+ID4gPiA+Cj4gPiA+ID4KPiA+ ID4gPiA+ICsJCQkJcmV0dXJuIGF1ZF9uY3RzW2ldLm47Cj4gPiA+ID4gPiArCQkJfQo+ID4gPiA+ ID4gIAkJfQo+ID4gPiA+ID4gIAl9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWlmIChpbnRlbF9j cnRjX2hhc190eXBlKGNydGMtPmNvbmZpZywgSU5URUxfT1VUUFVUX0RQKSkgewo+ID4gPiA+Cj4g PiA+ID4gaW50ZWxfaGFzX2RwX2VuY29kZXIoKSB3aWxsIG1ha2UgdGhpcyB3b3JrIGZvciBNU1Qg YXMgd2VsbC4KPiA+ID4gPgo+ID4gPiA+ICJJbiBNU1QgbW9kZSwgdGhlIFNpbmsgZGV2aWNlIG11 c3QgaWdub3JlIHRoZSBNYXVkIGFuZCBNdmlkIHZhbHVlcwo+ID4gPiA+IHNlbnQgYnkgYW4gTVNU IFNvdXJjZSBkZXZpY2UgdW5sZXNzIHRoZSBNU1QgU2luayBkZXZpY2UgaXMgZGlyZWN0bHkKPiA+ ID4gPiBjb25uZWN0ZWQgdG8gdGhlIE1TVCBTb3VyY2UgZGV2aWNlIHZpYSBhIHNpbmdsZSBsaW5r IGFzIHRoZSBTb3VyY2UKPiA+ID4gPiBkZXZpY2UgZ2VuZXJhdGVzIHRob3NlIHZhbHVlcyBiYXNl ZCBvbiB0aGUgTFNfQ2xrIG9mIHRoZSBsaW5rIGl0IGlzCj4gPiA+ID4gZHJpdmluZy4gQW4gTVNU IFNpbmsgZGV2aWNlIG11c3QgYmUgYWJsZSB0byByZWdlbmVyYXRlIGEgc3RyZWFtCj4gPiA+ID4g Y2xvY2sgd2l0aG91dCBkZXBlbmRpbmcgb24gTXZpZCBhbmQgTXZpZCB0aW1lIHN0YW1wIHZhbHVl cyBiZWNhdXNlCj4gPiA+ID4gdGhlIE1TVCBTaW5rIGRldmljZSBtaWdodCBiZSBwbHVnZ2VkIGlu dG8gYW4gTVNUIEJyYW5jaCBkZXZpY2UsIG5vdCBhbgo+ID4gTVNUIFNvdXJjZSBkZXZpY2UuIgo+ ID4gPiA+Cj4gPiA+ID4gU28gaWYgSSdtIHJlYWRpbmcgdGhhdCByaWdodCwgYW4gTVNUIHNpbmsg Y2FuIHN0aWxsIHVzZSB0aGUgTS9OCj4gPiA+ID4gdmFsdWVzIGlmIGl0J3MgZGlyZWNsdHkgaG9v a2VkIHVwIHRvIGEgTVNUIHNvdXJjZS4gSGVuY2Ugd2UgcHJvYmFibHkKPiA+ID4gPiB3YW50IHRv IGZpbGwgb3V0IHRoZSBNL04gZXZlbiBmb3IgTVNULgo+ID4gPgo+ID4gPiBNeSB1bmRlcnN0YW5k aW5nIGlzIHRoaXMgaXMgdGhlIHJlcXVpcmVtZW50IGZvciBzaW5rIGRldmljZS4KPiA+ID4gTm9u LW1zdCBhbmQgTVNULCBzb3VyY2Ugd2lsbCBzZW5kIHRoZSBOL00gdmFsdWUsIGFuZCBpZiBpdCBp cwo+ID4gPiBOb24tbXN0L3NpbmdsZSBsaW5rLCBzaW5rIGRldmljZSBzaG91bGQgdXNlIHRoZXNl IGRhdGEgdG8gZ2VuZXJhdGUgdGhlCj4gPiA+IGNsb2NrLiBJZiBpdCBpcyBpbiBNU1QsIHNpbmsg ZGV2aWNlIHNob3VsZCBpZ25vcmUgdGhlIGRhdGEgYW5kCj4gPiA+IHJlZ2VuZXJhdGUgdGhlIGNs b2NrIHdpdGhvdXQgZGVwZW5kaW5nIG9uIE4vTSB2YWx1ZS4KPiA+ID4KPiA+ID4gU28gdGhpcyBj b2RlIHNob3VsZCBPSyBiZSBmb3IgYm90aCBub24tbXN0IGFuZCBNU1QuIElmIG5vdCwgSSB0aGlu ayB3ZQo+ID4gPiBjYW4gbWFrZSBhIHNlcGFyYXRlIHBhdGNoIGZvciBEUCBNU1QuCj4gPiAKPiA+ IEl0J3Mgb25seSBPSyBmb3IgU1NULiBXZSBjb3VsZCBvZiBjb3Vyc2UgZGVsYXkgZGVhbGluZyB3 aXRoIE1TVCwgYnV0IHRoYXQgc2VlbXMKPiA+IGxpa2UgdW5uZWNlc3NhcnkgY2h1cm4uIFlvdSdy ZSB0b3VjaGluZyBhbGwgdGhlc2UgcGxhY2VzIGluIHRoaXMgcGF0Y2gsIHNvIG1pZ2h0Cj4gPiBh cyB3ZWxsIHVzZSBpbnRlbF9kcF9lbmNvZGVyKCkgZnJvbSB0aGUgc3RhcnQuIEl0IHdpbGwgbWFr ZSB0aGUgTVNUIHBhdGNoCj4gPiBzbWFsbGVyIHRvbywgd2hpY2ggd2lsbCBtYWtlIGl0IGVhc2ll ciB0byByZXZpZXcuCj4gCj4gT0ssIEkgd2lsbCB1c2UgaW50ZWxfY3J0Y19oYXNfZHBfZW5jb2Rl cigpLiBIb3BlIGl0IHN0aWxsIHdvcmtzIGZvciBEUCBNU1QgOikKPiAKPiA+IAo+ID4gPgo+ID4g PiA+Cj4gPiA+ID4gPiArCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShhdWRfbm0pOyBpKysp IHsKPiA+ID4gPiA+ICsJCQlpZiAoKHJhdGUgPT0gYXVkX25tW2ldLnNhbXBsZV9yYXRlKSAmJgo+ ID4gPiA+ID4gKwkJCQkoY3J0Yy0+Y29uZmlnLT5wb3J0X2Nsb2NrID09IGF1ZF9ubVtpXS5jbG9j aykpCj4gPiA+ID4gewo+ID4gPiA+Cj4gPiA+ID4gaW5kZW50ICsgcGFyZW5zCj4gPiA+ID4KPiA+ ID4gPiA+ICsJCQkJcmV0dXJuIGF1ZF9ubVtpXS5uOwo+ID4gPiA+ID4gKwkJCX0KPiA+ID4gPiA+ ICsJCX0KPiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gPiA+ICt9Cj4g PiA+ID4gPiArCj4gPiA+ID4gPiArc3RhdGljIGludCBhdWRpb19jb25maWdfZ2V0X20oc3RydWN0 IGludGVsX2NydGMgKmNydGMsIGludCByYXRlKSB7Cj4gPiA+ID4gPiArCWludCBpOwo+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElO VEVMX09VVFBVVF9EUCkpIHsKPiA+ID4gPgo+ID4gPiA+IGludGVsX2hhc19kcF9lbmNvZGVyKCkK PiA+ID4gPgo+ID4gPiA+ID4gKwkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYXVkX25tKTsg aSsrKSB7Cj4gPiA+ID4gPiArCQkJaWYgKChyYXRlID09IGF1ZF9ubVtpXS5zYW1wbGVfcmF0ZSkg JiYKPiA+ID4gPiA+ICsJCQkJKGNydGMtPmNvbmZpZy0+cG9ydF9jbG9jayA9PSBhdWRfbm1baV0u Y2xvY2spKQo+ID4gPiA+IHsKPiA+ID4gPgo+ID4gPiA+IGluZGVudCArIHBhcmVucwo+ID4gPiA+ Cj4gPiA+ID4gPiArCQkJCXJldHVybiBhdWRfbm1baV0ubTsKPiA+ID4gPiA+ICsJCQl9Cj4gPiA+ ID4gPiArCQl9Cj4gPiA+ID4gPiArCX0KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICAJcmV0dXJuIDA7 Cj4gPiA+ID4gPiAgfQo+ID4gPiA+ID4KPiA+ID4gPiA+IC1zdGF0aWMgdWludDMyX3QgYXVkaW9f Y29uZmlnX3NldHVwX25fcmVnKGludCBuLCB1aW50MzJfdCB2YWwpCj4gPiA+ID4gPiArc3RhdGlj IHVpbnQzMl90IGF1ZGlvX2NvbmZpZ19zZXR1cF9uX3JlZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YywKPiA+ID4gPiA+ICsJCQkJCSBpbnQgbiwgdWludDMyX3QgdmFsKQo+ID4gPiA+ID4gIHsKPiA+ ID4gPiA+ICAJaW50IG5fbG93LCBuX3VwOwo+ID4gPiA+ID4gIAl1aW50MzJfdCB0bXAgPSB2YWw7 Cj4gPiA+ID4gPiBAQCAtMTQ1LDE3ICsyMDQsMzkgQEAgc3RhdGljIHVpbnQzMl90IGF1ZGlvX2Nv bmZpZ19zZXR1cF9uX3JlZyhpbnQKPiA+ID4gPiA+IG4sCj4gPiA+ID4gdWludDMyX3QgdmFsKQo+ ID4gPiA+ID4gIAl0bXAgfD0gKChuX3VwIDw8IEFVRF9DT05GSUdfVVBQRVJfTl9TSElGVCkgfAo+ ID4gPiA+ID4gIAkJCShuX2xvdyA8PCBBVURfQ09ORklHX0xPV0VSX05fU0hJRlQpIHwKPiA+ID4g PiA+ICAJCQlBVURfQ09ORklHX05fUFJPR19FTkFCTEUpOwo+ID4gPiA+ID4gKwlpZiAoaW50ZWxf Y3J0Y19oYXNfdHlwZShjcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9EUCkpCj4gPiA+ID4KPiA+ ID4gPiBpbnRlbF9oYXNfZHBfZW5jb2RlcigpCj4gPiA+ID4KPiA+ID4gPiA+ICsJCXRtcCB8PSBB VURfQ09ORklHX05fVkFMVUVfSU5ERVg7Cj4gPiA+ID4gPiArCXJldHVybiB0bXA7Cj4gPiA+ID4g PiArfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gK3N0YXRpYyB1aW50MzJfdCBhdWRpb19jb25maWdf c2V0dXBfbV9yZWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gPiA+ID4gPiArCQkJCQkgaW50 IG0sIHVpbnQzMl90IHZhbCkKPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiArCXVpbnQzMl90IHRtcCA9 IHZhbDsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJaWYgKCFpbnRlbF9jcnRjX2hhc190eXBlKGNy dGMtPmNvbmZpZywgSU5URUxfT1VUUFVUX0RQKSkKPiA+ID4gPiA+ICsJCXJldHVybiAwOwo+ID4g PiA+Cj4gPiA+ID4gVGhlIGNhbGxlciBhbHJlYWR5IGNoZWNrZWQgdGhhdC4KPiA+ID4gPgo+ID4g PiA+ID4gKwo+ID4gPiA+ID4gKwl0bXAgfD0gbTsKPiA+ID4gPiA+ICsJdG1wIHw9IEFVRF9NX0NU U19NX1ZBTFVFX0lOREVYOwo+ID4gPiA+ID4gKwl0bXAgfD0gQVVEX01fQ1RTX01fUFJPR19FTkFC TEU7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiAgCXJldHVybiB0bXA7Cj4gPiA+ID4gPiAgfQo+ID4g PiA+ID4KPiA+ID4gPiA+ICAvKiBjaGVjayB3aGV0aGVyIE4vQ1RTL00gbmVlZCBiZSBzZXQgbWFu dWFsbHkgKi8gIHN0YXRpYyBib29sCj4gPiA+ID4gPiBhdWRpb19yYXRlX25lZWRfcHJvZyhzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiA+ID4gPiA+IC0JCQkJIGNvbnN0IHN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICptb2RlKQo+ID4gPiA+ID4gKwkJCQkgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUKPiA+ID4gPiAqYWRqdXN0ZWRfbW9kZSkKPiA+ID4gPiA+ICB7Cj4gPiA+ID4gPiAtCWlm ICgoKG1vZGUtPmNsb2NrID09IFRNRFNfMjk3TSkgfHwKPiA+ID4gPiA+IC0JCSAobW9kZS0+Y2xv Y2sgPT0gVE1EU18yOTZNKSkgJiYKPiA+ID4gPiA+ICsJaWYgKCgoYWRqdXN0ZWRfbW9kZS0+Y2xv Y2sgPT0gVE1EU18yOTdNKSB8fAo+ID4gPiA+ID4gKwkJIChhZGp1c3RlZF9tb2RlLT5jbG9jayA9 PSBUTURTXzI5Nk0pKSAmJgo+ID4gPiA+ID4gIAkJaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjLT5j b25maWcsIElOVEVMX09VVFBVVF9IRE1JKSkKPiA+ID4gPiA+ICAJCXJldHVybiB0cnVlOwo+ID4g PiA+ID4gKwllbHNlIGlmICgoKGNydGMtPmNvbmZpZy0+cG9ydF9jbG9jayA9PSBMQ181NDBNKSB8 fAo+ID4gPiA+ID4gKwkJICAoY3J0Yy0+Y29uZmlnLT5wb3J0X2Nsb2NrID09IExDXzI3ME0pIHx8 Cj4gPiA+ID4gPiArCQkgIChjcnRjLT5jb25maWctPnBvcnRfY2xvY2sgPT0gTENfMTYyTSkpICYm Cj4gPiA+ID4gPiArCQkgIGludGVsX2NydGNfaGFzX3R5cGUoY3J0Yy0+Y29uZmlnLCBJTlRFTF9P VVRQVVRfRFApKQo+ID4gPiA+Cj4gPiA+ID4gaW50ZWxfaGFzX2RwX2VuY29kZXIoKQo+ID4gPiA+ Cj4gPiA+ID4gPiArCQlyZXR1cm4gdHJ1ZTsKPiA+ID4gPiA+ICAJZWxzZQo+ID4gPiA+ID4gIAkJ cmV0dXJuIGZhbHNlOwo+ID4gPiA+ID4gIH0KPiA+ID4gPiA+IEBAIC0yODcsNyArMzY4LDcgQEAg c3RhdGljIHZvaWQgaHN3X2F1ZGlvX2NvZGVjX2VuYWJsZShzdHJ1Y3QKPiA+ID4gPiBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsCj4gPiA+ID4gPiAgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQg KmludGVsX2RpZ19wb3J0ID0KPiA+ID4gPiA+ICAJCWVuY190b19kaWdfcG9ydCgmZW5jb2Rlci0+ YmFzZSk7Cj4gPiA+ID4gPiAgCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPnBvcnQ7 Cj4gPiA+ID4gPiAtCXVpbnQzMl90IHRtcDsKPiA+ID4gPiA+ICsJdWludDMyX3QgdG1wLCBtOwo+ ID4gPiA+ID4gIAlpbnQgbGVuLCBpOwo+ID4gPiA+ID4gIAlpbnQgbiwgcmF0ZTsKPiA+ID4gPiA+ Cj4gPiA+ID4gPiBAQCAtMzQzLDE1ICs0MjQsMjUgQEAgc3RhdGljIHZvaWQgaHN3X2F1ZGlvX2Nv ZGVjX2VuYWJsZShzdHJ1Y3QKPiA+ID4gPiBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPiA+ ID4gPiAgCQkJRFJNX0VSUk9SKCJpbnZhbGlkIHBvcnQ6ICVkXG4iLCBwb3J0KTsKPiA+ID4gPiA+ ICAJCQlyYXRlID0gMDsKPiA+ID4gPiA+ICAJCX0KPiA+ID4gPiA+IC0JCW4gPSBhdWRpb19jb25m aWdfZ2V0X24oYWRqdXN0ZWRfbW9kZSwgcmF0ZSk7Cj4gPiA+ID4gPiArCQluID0gYXVkaW9fY29u ZmlnX2dldF9uKGludGVsX2NydGMsIGFkanVzdGVkX21vZGUsIHJhdGUpOwo+ID4gPiA+ID4gIAkJ aWYgKG4gIT0gMCkKPiA+ID4gPiA+IC0JCQl0bXAgPSBhdWRpb19jb25maWdfc2V0dXBfbl9yZWco biwgdG1wKTsKPiA+ID4gPiA+ICsJCQl0bXAgPSBhdWRpb19jb25maWdfc2V0dXBfbl9yZWcoaW50 ZWxfY3J0YywgbiwgdG1wKTsKPiA+ID4gPiA+ICAJCWVsc2UKPiA+ID4gPiA+ICAJCQlEUk1fREVC VUdfS01TKCJubyBzdWl0YWJsZSBOIHZhbHVlIGlzIGZvdW5kXG4iKTsKPiA+ID4gPiA+ICAJfQo+ ID4gPiA+ID4KPiA+ID4gPiA+ICAJSTkxNV9XUklURShIU1dfQVVEX0NGRyhwaXBlKSwgdG1wKTsK PiA+ID4gPiA+Cj4gPiA+ID4gPiArCS8qIHNldHVwIG0gdmFsdWUgZm9yIERQICovCj4gPiA+ID4g PiArCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGludGVsX2NydGMtPmNvbmZpZywgSU5URUxfT1VU UFVUX0RQKSkgewo+ID4gPiA+Cj4gPiA+ID4gaW50ZWxfaGFzX2RwX2VuY29kZXIoKQo+ID4gPiA+ Cj4gPiA+ID4gPiArCQltID0gYXVkaW9fY29uZmlnX2dldF9tKGludGVsX2NydGMsIHJhdGUpOwo+ ID4gPiA+ID4gKwkJaWYgKG0gIT0gMCkgewo+ID4gPiA+ID4gKwkJCXRtcCA9IEk5MTVfUkVBRChI U1dfQVVEX01fQ1RTX0VOQUJMRShwaXBlKSk7Cj4gPiA+ID4gPiArCQkJdG1wID0gYXVkaW9fY29u ZmlnX3NldHVwX21fcmVnKGludGVsX2NydGMsIG0sIHRtcCk7Cj4gPiA+ID4gPiArCQkJSTkxNV9X UklURShIU1dfQVVEX01fQ1RTX0VOQUJMRShwaXBlKSwgdG1wKTsKPiA+ID4gPgo+ID4gPiA+IFdl IHNob3VsZCBwcm9ncmFtIHRoaXMgcmVnaXN0ZXIgZXZlbiBmb3IgSERNSSwgc28gdGhhdCB3ZSBk b24ndCBsZWFrCj4gPiA+ID4gaW52YWxpZCByZWdpc3RlciB2YWx1ZXMgZWcuIHdoZW4gY2hhbmdp bmcgZnJvbSBEUC0+SERNSS4KPiA+ID4KPiA+ID4gSERNSSBkb2Vzbid0IG5lZWQgc2V0IHRoZXNl IHZhbHVlcyBiYXNlZCBvbiBvdXIgdGVzdC4gSXQgc2VlbXMgc2lsaWNvbgo+ID4gPiBjYW4gaGFu ZGxlIHNtb290aGx5IGZvciBIRE1JLgo+ID4gCj4gPiBZZXMsIGJ1dCB3ZSBuZWUgdG8gbWFrZSBz dXJlIHdlIGNsZWFyIHdoYXRldmVyIHdlIHByb2dyYW1tZWQgaW4gZm9yIERQCj4gPiBwcmV2aW91 c2x5Lgo+IAo+IFRoZSBzaWxpY29uIHNlZW1zIHRvIGJlIGFibGUgdG8gaGFuZGxlIHRoZSBzaXR1 YXRpb24gb2YgRFAgLT4gSERNSSBhbmQgSERNSSAtPgo+IERQLgoKRGlkIHlvdSBtYWtlIHN1cmUg ZWcuIHRoYXQgdGhlIHBvd2VyIHdlbGwgZGlkbid0IGdldCB0b2dnbGVkIGluIGJldHdlZW4/ClRo YXQgd291bGQgcmVzZXQgdGhlIHJlZ2lzdGVyIGFueXdheS4KCj4gV2hhdCdzIG1vcmUgaXQgY2Fu IGhhbmRsZSBzYW1wbGUgcmF0ZS90bWRzIGNoYW5nZXMuCj4gCj4gUmVnYXJkcywKPiBMaWJpbgo+ IAo+ID4gCj4gPiA+Cj4gPiA+ID4KPiA+ID4gPiA+ICsJCX0KPiA+ID4gPiA+ICsJfQo+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5hdl9tdXRleCk7Cj4gPiA+ ID4gPiAgfQo+ID4gPiA+ID4KPiA+ID4gPiA+IEBAIC02MzcsNyArNzI4LDcgQEAgc3RhdGljIGlu dAo+ID4gPiA+IGk5MTVfYXVkaW9fY29tcG9uZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2 aWNlICpkZXYsCj4gPiA+ID4gPiAgCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOwo+ID4g PiA+ID4gIAlzdHJ1Y3QgaTkxNV9hdWRpb19jb21wb25lbnQgKmFjb21wID0gZGV2X3ByaXYtPmF1 ZGlvX2NvbXBvbmVudDsKPiA+ID4gPiA+ICAJZW51bSBwaXBlIHBpcGUgPSBJTlZBTElEX1BJUEU7 Cj4gPiA+ID4gPiAtCXUzMiB0bXA7Cj4gPiA+ID4gPiArCXUzMiB0bXAsIG07Cj4gPiA+ID4gPiAg CWludCBuOwo+ID4gPiA+ID4gIAlpbnQgZXJyID0gMDsKPiA+ID4gPiA+Cj4gPiA+ID4gPiBAQCAt NjUzLDcgKzc0NCw4IEBAIHN0YXRpYyBpbnQKPiA+ID4gPiBpOTE1X2F1ZGlvX2NvbXBvbmVudF9z eW5jX2F1ZGlvX3JhdGUoc3RydWN0IGRldmljZSAqZGV2LAo+ID4gPiA+ID4gIAlpbnRlbF9lbmNv ZGVyID0gZGV2X3ByaXYtPmRpZ19wb3J0X21hcFtwb3J0XTsKPiA+ID4gPiA+ICAJLyogaW50ZWxf ZW5jb2RlciBtaWdodCBiZSBOVUxMIGZvciBEUCBNU1QgKi8KPiA+ID4gPiA+ICAJaWYgKCFpbnRl bF9lbmNvZGVyIHx8ICFpbnRlbF9lbmNvZGVyLT5iYXNlLmNydGMgfHwKPiA+ID4gPiA+IC0JICAg IGludGVsX2VuY29kZXItPnR5cGUgIT0gSU5URUxfT1VUUFVUX0hETUkpIHsKPiA+ID4gPiA+ICsJ ICAgICgoaW50ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfSERNSSkgJiYKPiA+ID4g PiA+ICsJICAgICAoaW50ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfRFApKSkgewo+ ID4gPiA+Cj4gPiA+ID4gSG1tLiBTaG91bGQgcHJvYmFibHQgbW92ZSB0aGlzIHN0dWZmIGxhdGVy IHNvIHRoYXQgd2UgY2FuIHVzZSBjaGVjawo+ID4gPiA+IGNydGMtPmNvbmZpZy0+b3V0cHV0X3R5 cGVzIGluc3RlYWQuIEJ1dCBJIGd1ZXNzIHRoYXQncyBtb3JlCj4gPiA+ID4gYXBwcm9wcmlhdGVs eSBsZWZ0IHRvIGFueSBNU1QgcGF0Y2guCj4gPiA+Cj4gPiA+IFRoZSBzYW1lIHJlYXNvbiBhcyBp bnRlbF9oYXNfZHBfZW5jb2RlcigpLiBBbmQgaWYgaXQgaXMgd3JvbmcgZm9yIERQCj4gPiA+IE1T VCwgbGV0J3MgaGF2ZSBhIHNlcGFyYXRlIHBhdGNoIHdoZW4gd2Ugc3VwcG9ydCBEUCBNU1QuCj4g PiA+IEF0IHRoYXQgdGltZSwgd2UgY2FuIGRvIGEgZnVsbCB0ZXN0IG9uIERQIE1TVC4KPiA+IAo+ ID4gWWVhaCB0aGlzIHBhcnQgd2UgY2FuIGxlYXZlIGZvciB0aGUgTVNUIHBhdGNoIGFzIGl0J2xs IGludm9sdmUgYSBiaXQgbW9yZSB0aGFuCj4gPiBqdXN0IGFkZGluZyBhbm90aGVyIGNoZWNrIHRv IHRoZSBpZiBzdGF0ZW1lbnQuCj4gPiAKPiA+ID4KPiA+ID4gUmVnYXJkcywKPiA+ID4gTGliaW4K PiA+ID4KPiA+ID4gPgo+ID4gPiA+ID4gIAkJRFJNX0RFQlVHX0tNUygibm8gdmFsaWQgcG9ydCAl Y1xuIiwgcG9ydF9uYW1lKHBvcnQpKTsKPiA+ID4gPiA+ICAJCWVyciA9IC1FTk9ERVY7Cj4gPiA+ ID4gPiAgCQlnb3RvIHVubG9jazsKPiA+ID4gPiA+IEBAIC02ODEsNyArNzczLDcgQEAgc3RhdGlj IGludAo+ID4gPiA+IGk5MTVfYXVkaW9fY29tcG9uZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3Qg ZGV2aWNlICpkZXYsCj4gPiA+ID4gPiAgCQlnb3RvIHVubG9jazsKPiA+ID4gPiA+ICAJfQo+ID4g PiA+ID4KPiA+ID4gPiA+IC0JbiA9IGF1ZGlvX2NvbmZpZ19nZXRfbihtb2RlLCByYXRlKTsKPiA+ ID4gPiA+ICsJbiA9IGF1ZGlvX2NvbmZpZ19nZXRfbihjcnRjLCBtb2RlLCByYXRlKTsKPiA+ID4g PiA+ICAJaWYgKG4gPT0gMCkgewo+ID4gPiA+ID4gIAkJRFJNX0RFQlVHX0tNUygiVXNpbmcgYXV0 b21hdGljIG1vZGUgZm9yIE4gdmFsdWUgb24KPiA+ID4gPiBwb3J0ICVjXG4iLAo+ID4gPiA+ID4g IAkJCQkJICBwb3J0X25hbWUocG9ydCkpOwo+ID4gPiA+ID4gQEAgLTY5Myw4ICs3ODUsMTcgQEAg c3RhdGljIGludAo+ID4gPiA+ID4gaTkxNV9hdWRpb19jb21wb25lbnRfc3luY19hdWRpb19yYXRl KHN0cnVjdCBkZXZpY2UgKmRldiwKPiA+ID4gPiA+Cj4gPiA+ID4gPiAgCS8qIDMuIHNldCB0aGUg Ti9DVFMvTSAqLwo+ID4gPiA+ID4gIAl0bXAgPSBJOTE1X1JFQUQoSFNXX0FVRF9DRkcocGlwZSkp Owo+ID4gPiA+ID4gLQl0bXAgPSBhdWRpb19jb25maWdfc2V0dXBfbl9yZWcobiwgdG1wKTsKPiA+ ID4gPiA+ICsJdG1wID0gYXVkaW9fY29uZmlnX3NldHVwX25fcmVnKGNydGMsIG4sIHRtcCk7Cj4g PiA+ID4gPiAgCUk5MTVfV1JJVEUoSFNXX0FVRF9DRkcocGlwZSksIHRtcCk7Cj4gPiA+ID4gPiAr CS8qIHNldHVwIG0gdmFsdWUgZm9yIERQICovCj4gPiA+ID4gPiArCWlmIChpbnRlbF9jcnRjX2hh c190eXBlKGNydGMtPmNvbmZpZywgSU5URUxfT1VUUFVUX0RQKSkgewo+ID4gPiA+Cj4gPiA+ID4g aW50ZWxfaGFzX2RwX2VuY29kZXIoKQo+ID4gPiA+Cj4gPiA+ID4gPiArCQltID0gYXVkaW9fY29u ZmlnX2dldF9tKGNydGMsIHJhdGUpOwo+ID4gPiA+ID4gKwkJaWYgKG0gPT0gMCkKPiA+ID4gPiA+ ICsJCQlnb3RvIHVubG9jazsKPiA+ID4gPiA+ICsJCXRtcCA9IEk5MTVfUkVBRChIU1dfQVVEX01f Q1RTX0VOQUJMRShwaXBlKSk7Cj4gPiA+ID4gPiArCQl0bXAgPSBhdWRpb19jb25maWdfc2V0dXBf bV9yZWcoY3J0YywgbSwgdG1wKTsKPiA+ID4gPiA+ICsJCUk5MTVfV1JJVEUoSFNXX0FVRF9NX0NU U19FTkFCTEUocGlwZSksIHRtcCk7Cj4gPiA+ID4gPiArCX0KPiA+ID4gPiA+Cj4gPiA+ID4gPiAg IHVubG9jazoKPiA+ID4gPiA+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOwo+ ID4gPiA+ID4gLS0KPiA+ID4gPiA+IDEuOS4xCj4gPiA+ID4KPiA+ID4gPiAtLQo+ID4gPiA+IFZp bGxlIFN5cmrDpGzDpAo+ID4gPiA+IEludGVsIE9UQwo+ID4gCj4gPiAtLQo+ID4gVmlsbGUgU3ly asOkbMOkCj4gPiBJbnRlbCBPVEMKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=