From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v10] drm/i915/icl: Gen11 forcewake support Date: Thu, 1 Feb 2018 10:25:39 +0000 Message-ID: <8d8459cb-9921-e417-dc89-3418ef729f07@linux.intel.com> References: <20180109232835.11478-4-paulo.r.zanoni@intel.com> <20180201005243.15334-1-michel.thierry@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 305156EB5C for ; Thu, 1 Feb 2018 10:25:42 +0000 (UTC) In-Reply-To: <20180201005243.15334-1-michel.thierry@intel.com> Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Michel Thierry , intel-gfx@lists.freedesktop.org Cc: Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org Ck9uIDAxLzAyLzIwMTggMDA6NTIsIE1pY2hlbCBUaGllcnJ5IHdyb3RlOgo+IEZyb206IERhbmll bGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+Cj4gCj4g VGhlIG1haW4gZGlmZmVyZW5jZSB3aXRoIHByZXZpb3VzIEdFTnMgaXMgdGhhdCBzdGFydGluZyBm cm9tIEdlbjExCj4gZWFjaCBWQ1MgYW5kIFZFQ1MgZW5naW5lIGhhcyBpdHMgb3duIHBvd2VyIHdl bGwsIHdoaWNoIG9ubHkgZXhpc3QKPiBpZiB0aGUgcmVsYXRlZCBlbmdpbmUgZXhpc3RzIGluIHRo ZSBIVy4KPiBUaGUgZmFsbGJhY2sgZm9yY2V3YWtlIHJlcXVlc3Qgd29ya2Fyb3VuZCBpcyBvbmx5 IG5lZWRlZCBvbiBnZW45Cj4gYWNjb3JkaW5nIHRvIHRoZSBIU0RFUyBXQSBlbnRyeSAoMTYwNDI1 NDUyNCksIHNvIHdlIGNhbiBnbyBiYWNrIHRvIHVzaW5nCj4gdGhlIHNpbXBsZXIgZndfZG9tYWlu c19nZXQvcHV0IGZ1bmN0aW9ucy4KPiAKPiBCU3BlYzogMTgzMzEKPiAKPiB2MjogZml4IGZ3dGFi bGUsIHVzZSBhcnJheSB0byB0ZXN0IHNoYWRvdyB0YWJsZXMsIGNyZWF0ZSBuZXcKPiAgICAgIGFj Y2Vzc29ycyB0byBhdm9pZCBjaGVjayBvbiBldmVyeSBhY2Nlc3MgKFR2cnRrbykKPiB2MyAoZnJv bSBQYXVsbyk6IFJlYmFzZS4KPiB2NDoKPiAgICAtIFJhbmdlIDA5NDAwLTA5N0ZGIHNob3VsZCBi ZSBGT1JDRVdBS0VfQUxMIChEYW5pZWxlKQo+ICAgIC0gVXNlIHRoZSBCSVQgbWFjcm8gZm9yIGZv cmNld2FrZSBkb21haW5zIChEYW5pZWxlKQo+ICAgIC0gQWRkIGEgY29tbWVudCBhYm91dCB0aGUg cmFuZ2Ugb3JkZXJpbmcgKE9zY2FyKQo+ICAgIC0gVXBkYXRlZCBjb21taXQgbWVzc2FnZSAoT3Nj YXIpCj4gdjU6IFJlYmFzZWQKPiB2NjogVXNlIEk5MTVfTUFYX1ZDUy9WRUNTIChNaWNoYWwpCj4g djc6IHRyYW5zbGF0ZSBGT1JDRVdBS0VfQUxMIHRvIGF2YWlsYWJsZSBkb21haW5zCj4gdjg6IHJl YmFzZSwgYWRkIGNsYXJpZmljYXRpb24gb24gZmFsbGJhY2sgYWNrIGluIGNvbW1pdCBtZXNzYWdl Lgo+IHY5OiBmaXggcmViYXNlIGlzc3VlLCBjaGFuZ2UgY2hlY2sgaW4gZndfZG9tYWluc19pbml0 IGZyb20gSVNfR0VOMTEKPiAgICAgIHRvIEdFTiA+PSAxMQo+IHYxMDogR2VuZXJhdGUgaXNfZ2Vu WF9zaGFkb3dlZCB3aXRoIGEgbWFjcm8gKERhbmllbGUpCj4gICAgICAgSW5jbHVkZSBnZW4xMV9m d19yYW5nZXMgaW4gdGhlIHNlbGZ0ZXN0IChNaWNoZWwpCj4gCj4gQ2M6IE1pY2hhbCBXYWpkZWN6 a28gPG1pY2hhbC53YWpkZWN6a29AaW50ZWwuY29tPgo+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZy dGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+IENjOiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25p QGludGVsLmNvbT4KPiBBY2tlZC1ieTogTWljaGVsIFRoaWVycnkgPG1pY2hlbC50aGllcnJ5QGlu dGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIDxkYW5pZWxl LmNlcmFvbG9zcHVyaW9AaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IE9zY2FyIE1hdGVvIDxv c2Nhci5tYXRlb0BpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogTWljaGVsIFRoaWVycnkgPG1p Y2hlbC50aGllcnJ5QGludGVsLmNvbT4KPiAtLS0KPiAKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVnLmggICAgICAgICAgICAgICB8ICAgNCArCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF91bmNvcmUuYyAgICAgICAgICAgfCAxNTUgKysrKysrKysrKysrKysrKysrKysrKysr LS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5oICAgICAgICAgICB8ICAy NyArKysrLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3VuY29yZS5j IHwgIDMxICsrKystLQo+ICAgNCBmaWxlcyBjaGFuZ2VkLCAxOTMgaW5zZXJ0aW9ucygrKSwgMjQg ZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gaW5kZXggZDI5ZThhMGUy Y2EzLi5lYWNhMTIyOTJmZmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZWcuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBAQCAtODAx NSw5ICs4MDE1LDEzIEBAIGVudW0gewo+ICAgI2RlZmluZSAgIFZMVl9HVExDX1BXX1JFTkRFUl9T VEFUVVNfTUFTSwkoMSA8PCA3KQo+ICAgI2RlZmluZSAgRk9SQ0VXQUtFX01UCQkJCV9NTUlPKDB4 YTE4OCkgLyogbXVsdGktdGhyZWFkZWQgKi8KPiAgICNkZWZpbmUgIEZPUkNFV0FLRV9NRURJQV9H RU45CQkJX01NSU8oMHhhMjcwKQo+ICsjZGVmaW5lICBGT1JDRVdBS0VfTUVESUFfVkRCT1hfR0VO MTEobikJCV9NTUlPKDB4YTU0MCArIChuKSAqIDQpCj4gKyNkZWZpbmUgIEZPUkNFV0FLRV9NRURJ QV9WRUJPWF9HRU4xMShuKQkJX01NSU8oMHhhNTYwICsgKG4pICogNCkKPiAgICNkZWZpbmUgIEZP UkNFV0FLRV9SRU5ERVJfR0VOOQkJCV9NTUlPKDB4YTI3OCkKPiAgICNkZWZpbmUgIEZPUkNFV0FL RV9CTElUVEVSX0dFTjkJCQlfTU1JTygweGExODgpCj4gICAjZGVmaW5lICBGT1JDRVdBS0VfQUNL X01FRElBX0dFTjkJCV9NTUlPKDB4MEQ4OCkKPiArI2RlZmluZSAgRk9SQ0VXQUtFX0FDS19NRURJ QV9WREJPWF9HRU4xMShuKQlfTU1JTygweDBENTAgKyAobikgKiA0KQo+ICsjZGVmaW5lICBGT1JD RVdBS0VfQUNLX01FRElBX1ZFQk9YX0dFTjExKG4pCV9NTUlPKDB4MEQ3MCArIChuKSAqIDQpCj4g ICAjZGVmaW5lICBGT1JDRVdBS0VfQUNLX1JFTkRFUl9HRU45CQlfTU1JTygweDBEODQpCj4gICAj ZGVmaW5lICBGT1JDRVdBS0VfQUNLX0JMSVRURVJfR0VOOQkJX01NSU8oMHgxMzAwNDQpCj4gICAj ZGVmaW5lICAgRk9SQ0VXQUtFX0tFUk5FTAkJCUJJVCgwKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3VuY29yZS5jCj4gaW5kZXggMTY0ZGJiOGNmYTM2Li5jMTk1MzA0MzYwNGIgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+IEBAIC0zNyw2ICszNywxMiBAQCBzdGF0aWMgY29u c3QgY2hhciAqIGNvbnN0IGZvcmNld2FrZV9kb21haW5fbmFtZXNbXSA9IHsKPiAgIAkicmVuZGVy IiwKPiAgIAkiYmxpdHRlciIsCj4gICAJIm1lZGlhIiwKPiArCSJ2ZGJveDAiLAo+ICsJInZkYm94 MSIsCj4gKwkidmRib3gyIiwKPiArCSJ2ZGJveDMiLAo+ICsJInZlYm94MCIsCj4gKwkidmVib3gx IiwKPiAgIH07Cj4gICAKPiAgIGNvbnN0IGNoYXIgKgo+IEBAIC03NzMsNiArNzc5LDggQEAgdm9p ZCBhc3NlcnRfZm9yY2V3YWtlc19hY3RpdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ICAgCj4gICAvKiBXZSBnaXZlIGZhc3QgcGF0aHMgZm9yIHRoZSByZWFsbHkgY29vbCBy ZWdpc3RlcnMgKi8KPiAgICNkZWZpbmUgTkVFRFNfRk9SQ0VfV0FLRShyZWcpICgocmVnKSA8IDB4 NDAwMDApCj4gKyNkZWZpbmUgR0VOMTFfTkVFRFNfRk9SQ0VfV0FLRShyZWcpIFwKPiArCSgocmVn KSA8IDB4NDAwMDAgfHwgKChyZWcpID49IDB4MWMwMDAwICYmIChyZWcpIDwgMHgxZGMwMDApKQoK Tml0cGljayAtIEknZCBwZXJoYXBzIGF0IGxlYXN0IGhhdmUgYSBibGFuayBsaW5lIGJldHdlZW4g dGhlIHR3byAKZGVmaW5lcywgb3IgZXZlbiBtb3ZlZCB0aGUgR0VOMTEgbG93ZXIgaW4gZmlsZSwg anVzdCBiZWZvcmUgdGhlIGZpcnN0IAptZW50aW9uIG9mIEdFTjExIHNwZWNpZmljIGNvZGUgc3Rh cnRzIGFwcGVhcmluZy4KCj4gICAKPiAgICNkZWZpbmUgX19nZW42X3JlZ19yZWFkX2Z3X2RvbWFp bnMob2Zmc2V0KSBcCj4gICAoeyBcCj4gQEAgLTgyNiw2ICs4MzQsMTQgQEAgZmluZF9md19kb21h aW4oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgb2Zmc2V0KQo+ICAgCWlm ICghZW50cnkpCj4gICAJCXJldHVybiAwOwo+ICAgCj4gKwkvKgo+ICsJICogVGhlIGxpc3Qgb2Yg RlcgZG9tYWlucyBkZXBlbmRzIG9uIHRoZSBTS1UgaW4gZ2VuMTErIHNvIHdlCj4gKwkgKiBjYW4n dCBkZXRlcm1pbmUgaXQgc3RhdGljYWxseS4gV2UgdXNlIEZPUkNFV0FLRV9BTEwgYW5kCj4gKwkg KiB0cmFuc2xhdGUgaXQgaGVyZSB0byB0aGUgbGlzdCBvZiBhdmFpbGFibGUgZG9tYWlucy4KPiAr CSAqLwo+ICsJaWYgKGVudHJ5LT5kb21haW5zID09IEZPUkNFV0FLRV9BTEwpCj4gKwkJcmV0dXJu IGRldl9wcml2LT51bmNvcmUuZndfZG9tYWluczsKPiArCj4gICAJV0FSTihlbnRyeS0+ZG9tYWlu cyAmIH5kZXZfcHJpdi0+dW5jb3JlLmZ3X2RvbWFpbnMsCj4gICAJICAgICAiVW5pbml0aWFsaXpl ZCBmb3JjZXdha2UgZG9tYWluKHMpIDB4JXggYWNjZXNzZWQgYXQgMHgleFxuIiwKPiAgIAkgICAg IGVudHJ5LT5kb21haW5zICYgfmRldl9wcml2LT51bmNvcmUuZndfZG9tYWlucywgb2Zmc2V0KTsK PiBAQCAtODYwLDYgKzg3NiwxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2ZvcmNld2Fr ZV9yYW5nZSBfX3Zsdl9md19yYW5nZXNbXSA9IHsKPiAgIAlfX2Z3ZDsgXAo+ICAgfSkKPiAgIAo+ ICsjZGVmaW5lIF9fZ2VuMTFfZnd0YWJsZV9yZWdfcmVhZF9md19kb21haW5zKG9mZnNldCkgXAo+ ICsoeyBcCj4gKwllbnVtIGZvcmNld2FrZV9kb21haW5zIF9fZndkID0gMDsgXAo+ICsJaWYgKEdF TjExX05FRURTX0ZPUkNFX1dBS0UoKG9mZnNldCkpKSBcCj4gKwkJX19md2QgPSBmaW5kX2Z3X2Rv bWFpbihkZXZfcHJpdiwgb2Zmc2V0KTsgXAo+ICsJX19md2Q7IFwKPiArfSkKPiArCj4gICAvKiAq TXVzdCogYmUgc29ydGVkIGJ5IG9mZnNldCEgU2VlIGludGVsX3NoYWRvd190YWJsZV9jaGVjaygp LiAqLwo+ICAgc3RhdGljIGNvbnN0IGk5MTVfcmVnX3QgZ2VuOF9zaGFkb3dlZF9yZWdzW10gPSB7 Cj4gICAJUklOR19UQUlMKFJFTkRFUl9SSU5HX0JBU0UpLAkvKiAweDIwMDAgKGJhc2UpICovCj4g QEAgLTg3MSw2ICs4OTUsMjAgQEAgc3RhdGljIGNvbnN0IGk5MTVfcmVnX3QgZ2VuOF9zaGFkb3dl ZF9yZWdzW10gPSB7Cj4gICAJLyogVE9ETzogT3RoZXIgcmVnaXN0ZXJzIGFyZSBub3QgeWV0IHVz ZWQgKi8KPiAgIH07Cj4gICAKPiArc3RhdGljIGNvbnN0IGk5MTVfcmVnX3QgZ2VuMTFfc2hhZG93 ZWRfcmVnc1tdID0gewo+ICsJUklOR19UQUlMKFJFTkRFUl9SSU5HX0JBU0UpLAkJLyogMHgyMDAw IChiYXNlKSAqLwo+ICsJR0VONl9SUE5TV1JFUSwJCQkJLyogMHhBMDA4ICovCj4gKwlHRU42X1JD X1ZJREVPX0ZSRVEsCQkJLyogMHhBMDBDICovCj4gKwlSSU5HX1RBSUwoQkxUX1JJTkdfQkFTRSks CQkvKiAweDIyMDAwIChiYXNlKSAqLwo+ICsJUklOR19UQUlMKEdFTjExX0JTRF9SSU5HX0JBU0Up LAkJLyogMHgxQzAwMDAgKGJhc2UpICovCj4gKwlSSU5HX1RBSUwoR0VOMTFfQlNEMl9SSU5HX0JB U0UpLAkvKiAweDFDNDAwMCAoYmFzZSkgKi8KPiArCVJJTkdfVEFJTChHRU4xMV9WRUJPWF9SSU5H X0JBU0UpLAkvKiAweDFDODAwMCAoYmFzZSkgKi8KPiArCVJJTkdfVEFJTChHRU4xMV9CU0QzX1JJ TkdfQkFTRSksCS8qIDB4MUQwMDAwIChiYXNlKSAqLwo+ICsJUklOR19UQUlMKEdFTjExX0JTRDRf UklOR19CQVNFKSwJLyogMHgxRDQwMDAgKGJhc2UpICovCj4gKwlSSU5HX1RBSUwoR0VOMTFfVkVC T1gyX1JJTkdfQkFTRSksCS8qIDB4MUQ4MDAwIChiYXNlKSAqLwo+ICsJLyogVE9ETzogT3RoZXIg cmVnaXN0ZXJzIGFyZSBub3QgeWV0IHVzZWQgKi8KPiArfTsKPiArCj4gICBzdGF0aWMgaW50IG1t aW9fcmVnX2NtcCh1MzIga2V5LCBjb25zdCBpOTE1X3JlZ190ICpyZWcpCj4gICB7Cj4gICAJdTMy IG9mZnNldCA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KCpyZWcpOwo+IEBAIC04ODMsMTQgKzkyMSwx NyBAQCBzdGF0aWMgaW50IG1taW9fcmVnX2NtcCh1MzIga2V5LCBjb25zdCBpOTE1X3JlZ190ICpy ZWcpCj4gICAJCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyBib29sIGlzX2dlbjhfc2hh ZG93ZWQodTMyIG9mZnNldCkKPiAtewo+IC0JY29uc3QgaTkxNV9yZWdfdCAqcmVncyA9IGdlbjhf c2hhZG93ZWRfcmVnczsKPiAtCj4gLQlyZXR1cm4gQlNFQVJDSChvZmZzZXQsIHJlZ3MsIEFSUkFZ X1NJWkUoZ2VuOF9zaGFkb3dlZF9yZWdzKSwKPiAtCQkgICAgICAgbW1pb19yZWdfY21wKTsKPiAr I2RlZmluZSBfX2lzX2dlblhfc2hhZG93ZWQoeCkgXAo+ICtzdGF0aWMgYm9vbCBpc19nZW4jI3gj I19zaGFkb3dlZCh1MzIgb2Zmc2V0KSBcCj4gK3sgXAo+ICsJY29uc3QgaTkxNV9yZWdfdCAqcmVn cyA9IGdlbiMjeCMjX3NoYWRvd2VkX3JlZ3M7IFwKPiArCXJldHVybiBCU0VBUkNIKG9mZnNldCwg cmVncywgQVJSQVlfU0laRShnZW4jI3gjI19zaGFkb3dlZF9yZWdzKSwgXAo+ICsJCSAgICAgICBt bWlvX3JlZ19jbXApOyBcCj4gICB9Cj4gICAKPiArX19pc19nZW5YX3NoYWRvd2VkKDgpCj4gK19f aXNfZ2VuWF9zaGFkb3dlZCgxMSkKPiArCj4gICAjZGVmaW5lIF9fZ2VuOF9yZWdfd3JpdGVfZndf ZG9tYWlucyhvZmZzZXQpIFwKPiAgICh7IFwKPiAgIAllbnVtIGZvcmNld2FrZV9kb21haW5zIF9f ZndkOyBcCj4gQEAgLTkyOSw2ICs5NzAsMTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9m b3JjZXdha2VfcmFuZ2UgX19jaHZfZndfcmFuZ2VzW10gPSB7Cj4gICAJX19md2Q7IFwKPiAgIH0p Cj4gICAKPiArI2RlZmluZSBfX2dlbjExX2Z3dGFibGVfcmVnX3dyaXRlX2Z3X2RvbWFpbnMob2Zm c2V0KSBcCj4gKyh7IFwKPiArCWVudW0gZm9yY2V3YWtlX2RvbWFpbnMgX19md2QgPSAwOyBcCj4g KwlpZiAoR0VOMTFfTkVFRFNfRk9SQ0VfV0FLRSgob2Zmc2V0KSkgJiYgIWlzX2dlbjExX3NoYWRv d2VkKG9mZnNldCkpIFwKPiArCQlfX2Z3ZCA9IGZpbmRfZndfZG9tYWluKGRldl9wcml2LCBvZmZz ZXQpOyBcCj4gKwlfX2Z3ZDsgXAo+ICt9KQo+ICsKPiAgIC8qICpNdXN0KiBiZSBzb3J0ZWQgYnkg b2Zmc2V0IHJhbmdlcyEgU2VlIGludGVsX2Z3X3RhYmxlX2NoZWNrKCkuICovCj4gICBzdGF0aWMg Y29uc3Qgc3RydWN0IGludGVsX2ZvcmNld2FrZV9yYW5nZSBfX2dlbjlfZndfcmFuZ2VzW10gPSB7 Cj4gICAJR0VOX0ZXX1JBTkdFKDB4MCwgMHhhZmYsIEZPUkNFV0FLRV9CTElUVEVSKSwKPiBAQCAt OTY1LDYgKzEwMTQsNDAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9mb3JjZXdha2VfcmFu Z2UgX19nZW45X2Z3X3Jhbmdlc1tdID0gewo+ICAgCUdFTl9GV19SQU5HRSgweDMwMDAwLCAweDNm ZmZmLCBGT1JDRVdBS0VfTUVESUEpLAo+ICAgfTsKPiAgIAo+ICsvKiAqTXVzdCogYmUgc29ydGVk IGJ5IG9mZnNldCByYW5nZXMhIFNlZSBpbnRlbF9md190YWJsZV9jaGVjaygpLiAqLwo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGludGVsX2ZvcmNld2FrZV9yYW5nZSBfX2dlbjExX2Z3X3Jhbmdlc1td ID0gewo+ICsJR0VOX0ZXX1JBTkdFKDB4MCwgMHhhZmYsIEZPUkNFV0FLRV9CTElUVEVSKSwKPiAr CUdFTl9GV19SQU5HRSgweGIwMCwgMHgxZmZmLCAwKSwgLyogdW5jb3JlIHJhbmdlICovCj4gKwlH RU5fRldfUkFOR0UoMHgyMDAwLCAweDI2ZmYsIEZPUkNFV0FLRV9SRU5ERVIpLAo+ICsJR0VOX0ZX X1JBTkdFKDB4MjcwMCwgMHgyZmZmLCBGT1JDRVdBS0VfQkxJVFRFUiksCj4gKwlHRU5fRldfUkFO R0UoMHgzMDAwLCAweDNmZmYsIEZPUkNFV0FLRV9SRU5ERVIpLAo+ICsJR0VOX0ZXX1JBTkdFKDB4 NDAwMCwgMHg1MWZmLCBGT1JDRVdBS0VfQkxJVFRFUiksCj4gKwlHRU5fRldfUkFOR0UoMHg1MjAw LCAweDdmZmYsIEZPUkNFV0FLRV9SRU5ERVIpLAo+ICsJR0VOX0ZXX1JBTkdFKDB4ODAwMCwgMHg4 MTNmLCBGT1JDRVdBS0VfQkxJVFRFUiksCj4gKwlHRU5fRldfUkFOR0UoMHg4MTQwLCAweDgxNWYs IEZPUkNFV0FLRV9SRU5ERVIpLAo+ICsJR0VOX0ZXX1JBTkdFKDB4ODE2MCwgMHg4MmZmLCBGT1JD RVdBS0VfQkxJVFRFUiksCj4gKwlHRU5fRldfUkFOR0UoMHg4MzAwLCAweDg0ZmYsIEZPUkNFV0FL RV9SRU5ERVIpLAo+ICsJR0VOX0ZXX1JBTkdFKDB4ODUwMCwgMHg4YmZmLCBGT1JDRVdBS0VfQkxJ VFRFUiksCj4gKwlHRU5fRldfUkFOR0UoMHg4YzAwLCAweDhjZmYsIEZPUkNFV0FLRV9SRU5ERVIp LAo+ICsJR0VOX0ZXX1JBTkdFKDB4OGQwMCwgMHg5M2ZmLCBGT1JDRVdBS0VfQkxJVFRFUiksCj4g KwlHRU5fRldfUkFOR0UoMHg5NDAwLCAweDk3ZmYsIEZPUkNFV0FLRV9BTEwpLAo+ICsJR0VOX0ZX X1JBTkdFKDB4OTgwMCwgMHhhZmZmLCBGT1JDRVdBS0VfQkxJVFRFUiksCj4gKwlHRU5fRldfUkFO R0UoMHhiMDAwLCAweGI0N2YsIEZPUkNFV0FLRV9SRU5ERVIpLAo+ICsJR0VOX0ZXX1JBTkdFKDB4 YjQ4MCwgMHhkZmZmLCBGT1JDRVdBS0VfQkxJVFRFUiksCj4gKwlHRU5fRldfUkFOR0UoMHhlMDAw LCAweGU4ZmYsIEZPUkNFV0FLRV9SRU5ERVIpLAo+ICsJR0VOX0ZXX1JBTkdFKDB4ZTkwMCwgMHgy NDNmZiwgRk9SQ0VXQUtFX0JMSVRURVIpLAo+ICsJR0VOX0ZXX1JBTkdFKDB4MjQ0MDAsIDB4MjQ3 ZmYsIEZPUkNFV0FLRV9SRU5ERVIpLAo+ICsJR0VOX0ZXX1JBTkdFKDB4MjQ4MDAsIDB4M2ZmZmYs IEZPUkNFV0FLRV9CTElUVEVSKSwKPiArCUdFTl9GV19SQU5HRSgweDQwMDAwLCAweDFiZmZmZiwg MCksCj4gKwlHRU5fRldfUkFOR0UoMHgxYzAwMDAsIDB4MWMzZmZmLCBGT1JDRVdBS0VfTUVESUFf VkRCT1gwKSwKPiArCUdFTl9GV19SQU5HRSgweDFjNDAwMCwgMHgxYzdmZmYsIEZPUkNFV0FLRV9N RURJQV9WREJPWDEpLAo+ICsJR0VOX0ZXX1JBTkdFKDB4MWM4MDAwLCAweDFjYmZmZiwgRk9SQ0VX QUtFX01FRElBX1ZFQk9YMCksCj4gKwlHRU5fRldfUkFOR0UoMHgxY2MwMDAsIDB4MWNmZmZmLCBG T1JDRVdBS0VfQkxJVFRFUiksCj4gKwlHRU5fRldfUkFOR0UoMHgxZDAwMDAsIDB4MWQzZmZmLCBG T1JDRVdBS0VfTUVESUFfVkRCT1gyKSwKPiArCUdFTl9GV19SQU5HRSgweDFkNDAwMCwgMHgxZDdm ZmYsIEZPUkNFV0FLRV9NRURJQV9WREJPWDMpLAo+ICsJR0VOX0ZXX1JBTkdFKDB4MWQ4MDAwLCAw eDFkYmZmZiwgRk9SQ0VXQUtFX01FRElBX1ZFQk9YMSkKPiArfTsKPiArCj4gICBzdGF0aWMgdm9p ZAo+ICAgaWxrX2R1bW15X3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiAgIHsKPiBAQCAtMTA5NSw3ICsxMTc4LDEyIEBAIGZ1bmMjI19yZWFkIyN4KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaTkxNV9yZWdfdCByZWcsIGJvb2wgdHJhY2UpIHsKPiAg IH0KPiAgICNkZWZpbmUgX19nZW42X3JlYWQoeCkgX19nZW5fcmVhZChnZW42LCB4KQo+ICAgI2Rl ZmluZSBfX2Z3dGFibGVfcmVhZCh4KSBfX2dlbl9yZWFkKGZ3dGFibGUsIHgpCj4gKyNkZWZpbmUg X19nZW4xMV9md3RhYmxlX3JlYWQoeCkgX19nZW5fcmVhZChnZW4xMV9md3RhYmxlLCB4KQo+ICAg Cj4gK19fZ2VuMTFfZnd0YWJsZV9yZWFkKDgpCj4gK19fZ2VuMTFfZnd0YWJsZV9yZWFkKDE2KQo+ ICtfX2dlbjExX2Z3dGFibGVfcmVhZCgzMikKPiArX19nZW4xMV9md3RhYmxlX3JlYWQoNjQpCj4g ICBfX2Z3dGFibGVfcmVhZCg4KQo+ICAgX19md3RhYmxlX3JlYWQoMTYpCj4gICBfX2Z3dGFibGVf cmVhZCgzMikKPiBAQCAtMTEwNSw2ICsxMTkzLDcgQEAgX19nZW42X3JlYWQoMTYpCj4gICBfX2dl bjZfcmVhZCgzMikKPiAgIF9fZ2VuNl9yZWFkKDY0KQo+ICAgCj4gKyN1bmRlZiBfX2dlbjExX2Z3 dGFibGVfcmVhZAo+ICAgI3VuZGVmIF9fZnd0YWJsZV9yZWFkCj4gICAjdW5kZWYgX19nZW42X3Jl YWQKPiAgICN1bmRlZiBHRU42X1JFQURfRk9PVEVSCj4gQEAgLTExODEsNyArMTI3MCwxMSBAQCBm dW5jIyNfd3JpdGUjI3goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpOTE1X3Jl Z190IHJlZywgdSMjeCB2YWwsIGJvbwo+ICAgfQo+ICAgI2RlZmluZSBfX2dlbjhfd3JpdGUoeCkg X19nZW5fd3JpdGUoZ2VuOCwgeCkKPiAgICNkZWZpbmUgX19md3RhYmxlX3dyaXRlKHgpIF9fZ2Vu X3dyaXRlKGZ3dGFibGUsIHgpCj4gKyNkZWZpbmUgX19nZW4xMV9md3RhYmxlX3dyaXRlKHgpIF9f Z2VuX3dyaXRlKGdlbjExX2Z3dGFibGUsIHgpCj4gICAKPiArX19nZW4xMV9md3RhYmxlX3dyaXRl KDgpCj4gK19fZ2VuMTFfZnd0YWJsZV93cml0ZSgxNikKPiArX19nZW4xMV9md3RhYmxlX3dyaXRl KDMyKQo+ICAgX19md3RhYmxlX3dyaXRlKDgpCj4gICBfX2Z3dGFibGVfd3JpdGUoMTYpCj4gICBf X2Z3dGFibGVfd3JpdGUoMzIpCj4gQEAgLTExOTIsNiArMTI4NSw3IEBAIF9fZ2VuNl93cml0ZSg4 KQo+ICAgX19nZW42X3dyaXRlKDE2KQo+ICAgX19nZW42X3dyaXRlKDMyKQo+ICAgCj4gKyN1bmRl ZiBfX2dlbjExX2Z3dGFibGVfd3JpdGUKPiAgICN1bmRlZiBfX2Z3dGFibGVfd3JpdGUKPiAgICN1 bmRlZiBfX2dlbjhfd3JpdGUKPiAgICN1bmRlZiBfX2dlbjZfd3JpdGUKPiBAQCAtMTI0MCw2ICsx MzM0LDEzIEBAIHN0YXRpYyB2b2lkIGZ3X2RvbWFpbl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiAgIAlCVUlMRF9CVUdfT04oRk9SQ0VXQUtFX1JFTkRFUiAhPSAoMSA8 PCBGV19ET01BSU5fSURfUkVOREVSKSk7Cj4gICAJQlVJTERfQlVHX09OKEZPUkNFV0FLRV9CTElU VEVSICE9ICgxIDw8IEZXX0RPTUFJTl9JRF9CTElUVEVSKSk7Cj4gICAJQlVJTERfQlVHX09OKEZP UkNFV0FLRV9NRURJQSAhPSAoMSA8PCBGV19ET01BSU5fSURfTUVESUEpKTsKPiArCUJVSUxEX0JV R19PTihGT1JDRVdBS0VfTUVESUFfVkRCT1gwICE9ICgxIDw8IEZXX0RPTUFJTl9JRF9NRURJQV9W REJPWDApKTsKPiArCUJVSUxEX0JVR19PTihGT1JDRVdBS0VfTUVESUFfVkRCT1gxICE9ICgxIDw8 IEZXX0RPTUFJTl9JRF9NRURJQV9WREJPWDEpKTsKPiArCUJVSUxEX0JVR19PTihGT1JDRVdBS0Vf TUVESUFfVkRCT1gyICE9ICgxIDw8IEZXX0RPTUFJTl9JRF9NRURJQV9WREJPWDIpKTsKPiArCUJV SUxEX0JVR19PTihGT1JDRVdBS0VfTUVESUFfVkRCT1gzICE9ICgxIDw8IEZXX0RPTUFJTl9JRF9N RURJQV9WREJPWDMpKTsKPiArCUJVSUxEX0JVR19PTihGT1JDRVdBS0VfTUVESUFfVkVCT1gwICE9 ICgxIDw8IEZXX0RPTUFJTl9JRF9NRURJQV9WRUJPWDApKTsKPiArCUJVSUxEX0JVR19PTihGT1JD RVdBS0VfTUVESUFfVkVCT1gxICE9ICgxIDw8IEZXX0RPTUFJTl9JRF9NRURJQV9WRUJPWDEpKTsK PiArCj4gICAKPiAgIAlkLT5tYXNrID0gQklUKGRvbWFpbl9pZCk7Cj4gICAKPiBAQCAtMTI2Nyw3 ICsxMzY4LDM0IEBAIHN0YXRpYyB2b2lkIGludGVsX3VuY29yZV9md19kb21haW5zX2luaXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCQlkZXZfcHJpdi0+dW5jb3JlLmZ3 X2NsZWFyID0gX01BU0tFRF9CSVRfRElTQUJMRShGT1JDRVdBS0VfS0VSTkVMKTsKPiAgIAl9Cj4g ICAKPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPiArCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDExKSB7Cj4gKwkJaW50IGk7Cj4gKwo+ICsJCWRldl9wcml2LT51bmNvcmUu ZnVuY3MuZm9yY2Vfd2FrZV9nZXQgPSBmd19kb21haW5zX2dldDsKPiArCQlkZXZfcHJpdi0+dW5j b3JlLmZ1bmNzLmZvcmNlX3dha2VfcHV0ID0gZndfZG9tYWluc19wdXQ7Cj4gKwkJZndfZG9tYWlu X2luaXQoZGV2X3ByaXYsIEZXX0RPTUFJTl9JRF9SRU5ERVIsCj4gKwkJCSAgICAgICBGT1JDRVdB S0VfUkVOREVSX0dFTjksCj4gKwkJCSAgICAgICBGT1JDRVdBS0VfQUNLX1JFTkRFUl9HRU45KTsK PiArCQlmd19kb21haW5faW5pdChkZXZfcHJpdiwgRldfRE9NQUlOX0lEX0JMSVRURVIsCj4gKwkJ CSAgICAgICBGT1JDRVdBS0VfQkxJVFRFUl9HRU45LAo+ICsJCQkgICAgICAgRk9SQ0VXQUtFX0FD S19CTElUVEVSX0dFTjkpOwo+ICsJCWZvciAoaSA9IDA7IGkgPCBJOTE1X01BWF9WQ1M7IGkrKykg ewo+ICsJCQlpZiAoIUhBU19FTkdJTkUoZGV2X3ByaXYsIF9WQ1MoaSkpKQo+ICsJCQkJY29udGlu dWU7Cj4gKwo+ICsJCQlmd19kb21haW5faW5pdChkZXZfcHJpdiwgRldfRE9NQUlOX0lEX01FRElB X1ZEQk9YMCArIGksCj4gKwkJCQkgICAgICAgRk9SQ0VXQUtFX01FRElBX1ZEQk9YX0dFTjExKGkp LAo+ICsJCQkJICAgICAgIEZPUkNFV0FLRV9BQ0tfTUVESUFfVkRCT1hfR0VOMTEoaSkpOwo+ICsJ CX0KPiArCQlmb3IgKGkgPSAwOyBpIDwgSTkxNV9NQVhfVkVDUzsgaSsrKSB7Cj4gKwkJCWlmICgh SEFTX0VOR0lORShkZXZfcHJpdiwgX1ZFQ1MoaSkpKQo+ICsJCQkJY29udGludWU7Cj4gKwo+ICsJ CQlmd19kb21haW5faW5pdChkZXZfcHJpdiwgRldfRE9NQUlOX0lEX01FRElBX1ZFQk9YMCArIGks Cj4gKwkJCQkgICAgICAgRk9SQ0VXQUtFX01FRElBX1ZFQk9YX0dFTjExKGkpLAo+ICsJCQkJICAg ICAgIEZPUkNFV0FLRV9BQ0tfTUVESUFfVkVCT1hfR0VOMTEoaSkpOwo+ICsJCX0KPiArCX0gZWxz ZSBpZiAoSVNfR0VOOShkZXZfcHJpdikgfHwgSVNfR0VOMTAoZGV2X3ByaXYpKSB7Cj4gICAJCWRl dl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9nZXQgPQo+ICAgCQkJZndfZG9tYWluc19n ZXRfd2l0aF9mYWxsYmFjazsKPiAgIAkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93YWtl X3B1dCA9IGZ3X2RvbWFpbnNfcHV0Owo+IEBAIC0xNDIyLDEwICsxNTQ5LDE0IEBAIHZvaWQgaW50 ZWxfdW5jb3JlX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCQkJ QVNTSUdOX1dSSVRFX01NSU9fVkZVTkNTKGRldl9wcml2LCBnZW44KTsKPiAgIAkJCUFTU0lHTl9S RUFEX01NSU9fVkZVTkNTKGRldl9wcml2LCBnZW42KTsKPiAgIAkJfQo+IC0JfSBlbHNlIHsKPiAr CX0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA5LCAxMCkpIHsKPiAgIAkJQVNTSUdOX0ZXX0RP TUFJTlNfVEFCTEUoX19nZW45X2Z3X3Jhbmdlcyk7Cj4gICAJCUFTU0lHTl9XUklURV9NTUlPX1ZG VU5DUyhkZXZfcHJpdiwgZnd0YWJsZSk7Cj4gICAJCUFTU0lHTl9SRUFEX01NSU9fVkZVTkNTKGRl dl9wcml2LCBmd3RhYmxlKTsKPiArCX0gZWxzZSB7Cj4gKwkJQVNTSUdOX0ZXX0RPTUFJTlNfVEFC TEUoX19nZW4xMV9md19yYW5nZXMpOwo+ICsJCUFTU0lHTl9XUklURV9NTUlPX1ZGVU5DUyhkZXZf cHJpdiwgZ2VuMTFfZnd0YWJsZSk7Cj4gKwkJQVNTSUdOX1JFQURfTU1JT19WRlVOQ1MoZGV2X3By aXYsIGdlbjExX2Z3dGFibGUpOwo+ICAgCX0KPiAgIAo+ICAgCWlvc2ZfbWJpX3JlZ2lzdGVyX3Bt aWNfYnVzX2FjY2Vzc19ub3RpZmllcigKPiBAQCAtMTk4NSw3ICsyMTE2LDkgQEAgaW50ZWxfdW5j b3JlX2ZvcmNld2FrZV9mb3JfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gICAJdTMyIG9mZnNldCA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KHJlZyk7Cj4gICAJZW51bSBm b3JjZXdha2VfZG9tYWlucyBmd19kb21haW5zOwo+ICAgCj4gLQlpZiAoSEFTX0ZXVEFCTEUoZGV2 X3ByaXYpKSB7Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkgewo+ICsJCWZ3X2Rv bWFpbnMgPSBfX2dlbjExX2Z3dGFibGVfcmVnX3JlYWRfZndfZG9tYWlucyhvZmZzZXQpOwo+ICsJ fSBlbHNlIGlmIChIQVNfRldUQUJMRShkZXZfcHJpdikpIHsKPiAgIAkJZndfZG9tYWlucyA9IF9f Znd0YWJsZV9yZWdfcmVhZF9md19kb21haW5zKG9mZnNldCk7Cj4gICAJfSBlbHNlIGlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDYpIHsKPiAgIAkJZndfZG9tYWlucyA9IF9fZ2VuNl9yZWdfcmVh ZF9md19kb21haW5zKG9mZnNldCk7Cj4gQEAgLTIwMDYsNyArMjEzOSw5IEBAIGludGVsX3VuY29y ZV9mb3JjZXdha2VfZm9yX3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiAgIAl1MzIgb2Zmc2V0ID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQocmVnKTsKPiAgIAllbnVtIGZv cmNld2FrZV9kb21haW5zIGZ3X2RvbWFpbnM7Cj4gICAKPiAtCWlmIChIQVNfRldUQUJMRShkZXZf cHJpdikgJiYgIUlTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKSB7Cj4gKwlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSAxMSkgewo+ICsJCWZ3X2RvbWFpbnMgPSBfX2dlbjExX2Z3dGFibGVfcmVnX3dy aXRlX2Z3X2RvbWFpbnMob2Zmc2V0KTsKPiArCX0gZWxzZSBpZiAoSEFTX0ZXVEFCTEUoZGV2X3By aXYpICYmICFJU19WQUxMRVlWSUVXKGRldl9wcml2KSkgewo+ICAgCQlmd19kb21haW5zID0gX19m d3RhYmxlX3JlZ193cml0ZV9md19kb21haW5zKG9mZnNldCk7Cj4gICAJfSBlbHNlIGlmIChJU19H RU44KGRldl9wcml2KSkgewo+ICAgCQlmd19kb21haW5zID0gX19nZW44X3JlZ193cml0ZV9md19k b21haW5zKG9mZnNldCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3VuY29yZS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmgKPiBpbmRleCBi ZWQwMTllZjAwMGYuLjllODMzMGM1ODA4ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF91bmNvcmUuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Vu Y29yZS5oCj4gQEAgLTM3LDE3ICszNywzNiBAQCBlbnVtIGZvcmNld2FrZV9kb21haW5faWQgewo+ ICAgCUZXX0RPTUFJTl9JRF9SRU5ERVIgPSAwLAo+ICAgCUZXX0RPTUFJTl9JRF9CTElUVEVSLAo+ ICAgCUZXX0RPTUFJTl9JRF9NRURJQSwKPiArCUZXX0RPTUFJTl9JRF9NRURJQV9WREJPWDAsCj4g KwlGV19ET01BSU5fSURfTUVESUFfVkRCT1gxLAo+ICsJRldfRE9NQUlOX0lEX01FRElBX1ZEQk9Y MiwKPiArCUZXX0RPTUFJTl9JRF9NRURJQV9WREJPWDMsCj4gKwlGV19ET01BSU5fSURfTUVESUFf VkVCT1gwLAo+ICsJRldfRE9NQUlOX0lEX01FRElBX1ZFQk9YMSwKPiAgIAo+ICAgCUZXX0RPTUFJ Tl9JRF9DT1VOVAo+ICAgfTsKPiAgIAo+ICAgZW51bSBmb3JjZXdha2VfZG9tYWlucyB7Cj4gLQlG T1JDRVdBS0VfUkVOREVSID0gQklUKEZXX0RPTUFJTl9JRF9SRU5ERVIpLAo+IC0JRk9SQ0VXQUtF X0JMSVRURVIgPSBCSVQoRldfRE9NQUlOX0lEX0JMSVRURVIpLAo+IC0JRk9SQ0VXQUtFX01FRElB CT0gQklUKEZXX0RPTUFJTl9JRF9NRURJQSksCj4gKwlGT1JDRVdBS0VfUkVOREVSCT0gQklUKEZX X0RPTUFJTl9JRF9SRU5ERVIpLAo+ICsJRk9SQ0VXQUtFX0JMSVRURVIJPSBCSVQoRldfRE9NQUlO X0lEX0JMSVRURVIpLAo+ICsJRk9SQ0VXQUtFX01FRElBCQk9IEJJVChGV19ET01BSU5fSURfTUVE SUEpLAo+ICsJRk9SQ0VXQUtFX01FRElBX1ZEQk9YMAk9IEJJVChGV19ET01BSU5fSURfTUVESUFf VkRCT1gwKSwKPiArCUZPUkNFV0FLRV9NRURJQV9WREJPWDEJPSBCSVQoRldfRE9NQUlOX0lEX01F RElBX1ZEQk9YMSksCj4gKwlGT1JDRVdBS0VfTUVESUFfVkRCT1gyCT0gQklUKEZXX0RPTUFJTl9J RF9NRURJQV9WREJPWDIpLAo+ICsJRk9SQ0VXQUtFX01FRElBX1ZEQk9YMwk9IEJJVChGV19ET01B SU5fSURfTUVESUFfVkRCT1gzKSwKPiArCUZPUkNFV0FLRV9NRURJQV9WRUJPWDAJPSBCSVQoRldf RE9NQUlOX0lEX01FRElBX1ZFQk9YMCksCj4gKwlGT1JDRVdBS0VfTUVESUFfVkVCT1gxCT0gQklU KEZXX0RPTUFJTl9JRF9NRURJQV9WRUJPWDEpLAo+ICsKPiAgIAlGT1JDRVdBS0VfQUxMID0gKEZP UkNFV0FLRV9SRU5ERVIgfAo+ICAgCQkJIEZPUkNFV0FLRV9CTElUVEVSIHwKPiAtCQkJIEZPUkNF V0FLRV9NRURJQSkKPiArCQkJIEZPUkNFV0FLRV9NRURJQSB8Cj4gKwkJCSBGT1JDRVdBS0VfTUVE SUFfVkRCT1gwIHwKPiArCQkJIEZPUkNFV0FLRV9NRURJQV9WREJPWDEgfAo+ICsJCQkgRk9SQ0VX QUtFX01FRElBX1ZEQk9YMiB8Cj4gKwkJCSBGT1JDRVdBS0VfTUVESUFfVkRCT1gzIHwKPiArCQkJ IEZPUkNFV0FLRV9NRURJQV9WRUJPWDAgfAo+ICsJCQkgRk9SQ0VXQUtFX01FRElBX1ZFQk9YMSkK CklmIEkgYW0gbm90IGNvbmZ1c2VkLCB0aGlzIHRoaXMgY291bGQgYmUgc2ltcGxpZmllZCBhczoK CiAgIEZPUkNFV0FLRV9BTEwgPSBCSVQoRldfRE9NQUlOX0lEX0NPVU5UKSAtIDE7Cgo+ICAgfTsK PiAgIAo+ICAgc3RydWN0IGludGVsX3VuY29yZV9mdW5jcyB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF91bmNvcmUuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF91bmNvcmUuYwo+IGluZGV4IDJmNjM2NzY0MzE3MS4uZjc2 ZjI1OTdkZjVjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p bnRlbF91bmNvcmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRl bF91bmNvcmUuYwo+IEBAIC02MSwyMCArNjEsMzAgQEAgc3RhdGljIGludCBpbnRlbF9md190YWJs ZV9jaGVjayhjb25zdCBzdHJ1Y3QgaW50ZWxfZm9yY2V3YWtlX3JhbmdlICpyYW5nZXMsCj4gICAK PiAgIHN0YXRpYyBpbnQgaW50ZWxfc2hhZG93X3RhYmxlX2NoZWNrKHZvaWQpCj4gICB7Cj4gLQlj b25zdCBpOTE1X3JlZ190ICpyZWcgPSBnZW44X3NoYWRvd2VkX3JlZ3M7Cj4gLQl1bnNpZ25lZCBp bnQgaTsKPiArCXN0cnVjdCB7Cj4gKwkJY29uc3QgaTkxNV9yZWdfdCAqcmVnczsKPiArCQl1bnNp Z25lZCBpbnQgc2l6ZTsKPiArCX0gcmVnX2xpc3RzW10gPSB7Cj4gKwkJeyBnZW44X3NoYWRvd2Vk X3JlZ3MsIEFSUkFZX1NJWkUoZ2VuOF9zaGFkb3dlZF9yZWdzKSB9LAo+ICsJCXsgZ2VuMTFfc2hh ZG93ZWRfcmVncywgQVJSQVlfU0laRShnZW4xMV9zaGFkb3dlZF9yZWdzKSB9LAo+ICsJfTsKPiAr CWNvbnN0IGk5MTVfcmVnX3QgKnJlZzsKPiArCXVuc2lnbmVkIGludCBpLCBqOwo+ICAgCXMzMiBw cmV2Owo+ICAgCj4gLQlmb3IgKGkgPSAwLCBwcmV2ID0gLTE7IGkgPCBBUlJBWV9TSVpFKGdlbjhf c2hhZG93ZWRfcmVncyk7IGkrKywgcmVnKyspIHsKPiAtCQl1MzIgb2Zmc2V0ID0gaTkxNV9tbWlv X3JlZ19vZmZzZXQoKnJlZyk7Cj4gKwlmb3IgKGogPSAwOyBqIDwgQVJSQVlfU0laRShyZWdfbGlz dHMpOyArK2opIHsKPiArCQlyZWcgPSByZWdfbGlzdHNbal0ucmVnczsKPiArCQlmb3IgKGkgPSAw LCBwcmV2ID0gLTE7IGkgPCByZWdfbGlzdHNbal0uc2l6ZTsgaSsrLCByZWcrKykgewo+ICsJCQl1 MzIgb2Zmc2V0ID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoKnJlZyk7Cj4gICAKPiAtCQlpZiAocHJl diA+PSAoczMyKW9mZnNldCkgewo+IC0JCQlwcl9lcnIoIiVzOiBlbnRyeVslZF06KCV4KSBpcyBi ZWZvcmUgcHJldmlvdXMgKCV4KVxuIiwKPiAtCQkJICAgICAgIF9fZnVuY19fLCBpLCBvZmZzZXQs IHByZXYpOwo+IC0JCQlyZXR1cm4gLUVJTlZBTDsKPiAtCQl9Cj4gKwkJCWlmIChwcmV2ID49IChz MzIpb2Zmc2V0KSB7Cj4gKwkJCQlwcl9lcnIoIiVzOiBlbnRyeVslZF06KCV4KSBpcyBiZWZvcmUg cHJldmlvdXMgKCV4KVxuIiwKPiArCQkJCSAgICAgICBfX2Z1bmNfXywgaSwgb2Zmc2V0LCBwcmV2 KTsKPiArCQkJCXJldHVybiAtRUlOVkFMOwo+ICsJCQl9Cj4gICAKPiAtCQlwcmV2ID0gb2Zmc2V0 Owo+ICsJCQlwcmV2ID0gb2Zmc2V0Owo+ICsJCX0KPiAgIAl9Cj4gICAKPiAgIAlyZXR1cm4gMDsK PiBAQCAtOTAsNiArMTAwLDcgQEAgaW50IGludGVsX3VuY29yZV9tb2NrX3NlbGZ0ZXN0cyh2b2lk KQo+ICAgCQl7IF9fdmx2X2Z3X3JhbmdlcywgQVJSQVlfU0laRShfX3Zsdl9md19yYW5nZXMpLCBm YWxzZSB9LAo+ICAgCQl7IF9fY2h2X2Z3X3JhbmdlcywgQVJSQVlfU0laRShfX2Nodl9md19yYW5n ZXMpLCBmYWxzZSB9LAo+ICAgCQl7IF9fZ2VuOV9md19yYW5nZXMsIEFSUkFZX1NJWkUoX19nZW45 X2Z3X3JhbmdlcyksIHRydWUgfSwKPiArCQl7IF9fZ2VuMTFfZndfcmFuZ2VzLCBBUlJBWV9TSVpF KF9fZ2VuMTFfZndfcmFuZ2VzKSwgdHJ1ZSB9LAo+ICAgCX07Cj4gICAJaW50IGVyciwgaTsKPiAg IAo+IAoKSSBoYXZlbid0IGNoZWNrZWQgdGhlIHJhbmdlcywgYnV0IHRoZSBjb2RlIGxvb2tzIGdv b2QuIFdpdGggb3Igd2l0aG91dCAKdGhlIG5pdHBpY2tzOgoKUmV2aWV3ZWQtYnk6IFR2cnRrbyBV cnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CgpSZWdhcmRzLAoKVHZydGtvCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=