From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v8 4/4] drm/i915: Introduce concept of a sub-platform Date: Fri, 29 Mar 2019 12:10:51 +0000 Message-ID: References: <20190326074057.27833-5-tvrtko.ursulin@linux.intel.com> <20190327142328.31780-1-tvrtko.ursulin@linux.intel.com> <87pnqa0zvq.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 851B46E8CA for ; Fri, 29 Mar 2019 12:10:54 +0000 (UTC) In-Reply-To: <87pnqa0zvq.fsf@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula , Intel-gfx@lists.freedesktop.org Cc: Lucas De Marchi , Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org Ck9uIDI5LzAzLzIwMTkgMDk6NTQsIEphbmkgTmlrdWxhIHdyb3RlOgo+IE9uIFdlZCwgMjcgTWFy IDIwMTksIFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBsaW51eC5pbnRlbC5jb20+IHdy b3RlOgo+PiBGcm9tOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+ Pgo+PiBDb25jZXB0IG9mIGEgc3ViLXBsYXRmb3JtIGFscmVhZHkgZXhpc3QgaW4gb3VyIGNvZGUg KGxpa2UgVUxYIGFuZCBVTFQKPj4gcGxhdGZvcm0gdmFyaWFudHMgYW5kIHNpbWlsYXIpLGltcGxl bWVudGVkIHZpYSB0aGUgbWFjcm9zIHdoaWNoIGNoZWNrIGEKPj4gbGlzdCBvZiBkZXZpY2UgaWRz IHRvIGRldGVybWluZSBhIG1hdGNoLgo+Pgo+PiBXaXRoIHRoaXMgcGF0Y2ggd2UgY29uc29saWRh dGUgZGV2aWNlIGlkcyBjaGVja2luZyBpbnRvIGEgc2luZ2xlIGZ1bmN0aW9uCj4+IGNhbGxlZCBk dXJpbmcgZWFybHkgZHJpdmVyIGxvYWQuCj4+Cj4+IEEgZmV3IGxvdyBiaXRzIGluIHRoZSBwbGF0 Zm9ybSBtYXNrIGFyZSByZXNlcnZlZCBmb3Igc3ViLXBsYXRmb3JtCj4+IGlkZW50aWZpY2F0aW9u IGFuZCBkZWZpbmVkIGFzIGEgcGVyLXBsYXRmb3JtIG5hbWVzcGFjZS4KPj4KPj4gQXQgdGhlIHNh bWUgdGltZSBpdCBmdXR1cmUgcHJvb2ZzIHRoZSBwbGF0Zm9ybV9tYXNrIGhhbmRsaW5nIGJ5IHBy ZXBhcmluZwo+PiB0aGUgY29kZSBmb3IgZWFzeSBleHRlbmRpbmcsIGFuZCB0aWRpZXMgdGhlIHZl cnkgdmVyYm9zZSBXQVJOIHN0cmluZ3MKPj4gZ2VuZXJhdGVkIHdoZW4gSVNfUExBVEZPUk0gbWFj cm9zIGFyZSBlbWJlZGRlZCBpbnRvIGEgV0FSTiB0eXBlCj4+IHN0YXRlbWVudHMuCj4+Cj4+IHYy OiBGaXhlZCBJU19TVUJQTEFURk9STS4gVXBkYXRlZCBjb21taXQgbXNnLgo+PiB2MzogQ2hyaXMg d2FzIHJpZ2h0LCB0aGVyZSBpcyBhbiBvcmRlcmluZyBwcm9ibGVtLgo+Pgo+PiB2NDoKPj4gICAq IENhdGNoLXVwIHdpdGggbmV3IHN1Yi1wbGF0Zm9ybXMuCj4+ICAgKiBSZWJhc2UgZm9yIFJVTlRJ TUVfSU5GTy4KPj4gICAqIERyb3Agc3VicGxhdGZvcm0gbWFzayB1bmlvbiB0cmlja3MgYW5kIGNv bnZlcnQgcGxhdGZvcm1fbWFzayB0byBhbgo+PiAgICAgYXJyYXkgZm9yIGV4dGVuc2liaWxpdHku Cj4+Cj4+IHY1Ogo+PiAgICogRml4IHN1YnBsYXRmb3JtIGNoZWNrLgo+PiAgICogUHJvdGVjdCBh Z2FpbnN0IGZvcmdldHRpbmcgdG8gZXhwYW5kIHN1YnBsYXRmb3JtIGJpdHMuCj4+ICAgKiBSZW1v dmUgcGxhdGZvcm0gZW51bSB0YWxseWluZy4KPj4gICAqIEFkZCBzdWJwbGF0Zm9ybSB0byBlcnJv ciBzdGF0ZS4gKENocmlzKQo+PiAgICogRHJvcCBtYWNyb3MgYW5kIGp1c3QgdXNlIHN0YXRpYyBp bmxpbmVzLgo+PiAgICogUmVtb3ZlIHJlZHVuZGFudCBJUk9OTEFLRV9NLiAoVmlsbGUpCj4+Cj4+ IHY2Ogo+PiAgICogU3BsaXQgb3V0IElyb25sYWtlIGNoYW5nZS4KPj4gICAqIE9wdGltaXplIHN1 YnBsYXRmb3JtIGNoZWNrLgo+PiAgICogVXNlIF9fYWx3YXlzX2lubGluZS4gKEx1Y2FzKQo+PiAg ICogQWRkIHBsYXRmb3JtX21hc2sgY29tbWVudC4gKFBhdWxvKQo+PiAgICogUGFzcyBzdG9yZWQg cnVudGltZSBpbmZvIGluIGVycm9yIGNhcHR1cmUuIChDaHJpcykKPj4KPj4gdjc6Cj4+ICAgKiBS ZWJhc2VkIGZvciBuZXcgQU1MIFVMWCBkZXZpY2UgaWQuCj4+ICAgKiBCdW1wIHBsYXRmb3JtIG1h c2sgYXJyYXkgc2l6ZSBmb3IgRUhMLgo+PiAgICogU3RvcCBtZW50aW9uaW5nIGRldmljZSBpZHMg aW4gaW50ZWxfZGV2aWNlX3N1YnBsYXRmb3JtX2luaXQgYnkgdXNpbmcKPj4gICAgIHRoZSB0cmlj ayBvZiBzcGxpdHRpbmcgbWFjcm9zIGk5MTVfcGNpaWRzLmguIChKYW5pKQo+PiAgICogQU1MIHNl ZW1zIHRvIGJlIGVpdGhlciBhIHN1YnBsYXRmb3JtIG9mIEtCTCBvciBDRkwgc28gZXhwcmVzcyBp dCBsaWtlCj4+ICAgICB0aGF0Lgo+Pgo+PiB2ODoKPj4gICAqIFVzZSBvbmUgZGV2aWNlIGlkIHRh YmxlIHBlciBzdWJwbGF0Zm9ybS4gKEphbmkpCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IFR2cnRrbyBV cnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4+IFN1Z2dlc3RlZC1ieTogQ2hyaXMg V2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4+IENjOiBDaHJpcyBXaWxzb24gPGNo cmlzQGNocmlzLXdpbHNvbi5jby51az4KPj4gQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBp bnRlbC5jb20+Cj4+IENjOiBMdWNhcyBEZSBNYXJjaGkgPGx1Y2FzLmRlbWFyY2hpQGludGVsLmNv bT4KPj4gQ2M6IEpvc2UgU291emEgPGpvc2Uuc291emFAaW50ZWwuY29tPgo+PiBDYzogVmlsbGUg U3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPj4gQ2M6IFBhdWxvIFph bm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPgo+PiBSZXZpZXdlZC1ieTogQ2hyaXMgV2ls c29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ICMgdjYKPj4gLS0tCj4+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICB8ICAgOCArLQo+PiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgfCAxMjMgKysrKysrKysrKysrKysrKy0tLS0t LS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jICAgIHwgICAzICsK Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jICAgICAgICAgIHwgICAyICstCj4+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYyB8ICA5MyArKysrKysr KysrKysrKysrKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmgg fCAgMjcgKysrKy0KPj4gICA2IGZpbGVzIGNoYW5nZWQsIDIxNCBpbnNlcnRpb25zKCspLCA0MiBk ZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4+IGluZGV4IGYxMzM0ZjVk NGVhZC4uNzQ3MzRkNzY2MWU1IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPj4gQEAg LTg2OCw2ICs4NjgsOCBAQCBzdGF0aWMgaW50IGk5MTVfZHJpdmVyX2luaXRfZWFybHkoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgIAlpZiAoaTkxNV9pbmplY3RfbG9hZF9m YWlsdXJlKCkpCj4+ICAgCQlyZXR1cm4gLUVOT0RFVjsKPj4gICAKPj4gKwlpbnRlbF9kZXZpY2Vf aW5mb19zdWJwbGF0Zm9ybV9pbml0KGRldl9wcml2KTsKPj4gKwo+PiAgIAlzcGluX2xvY2tfaW5p dCgmZGV2X3ByaXYtPmlycV9sb2NrKTsKPj4gICAJc3Bpbl9sb2NrX2luaXQoJmRldl9wcml2LT5n cHVfZXJyb3IubG9jayk7Cj4+ICAgCW11dGV4X2luaXQoJmRldl9wcml2LT5iYWNrbGlnaHRfbG9j ayk7Cj4+IEBAIC0xNzE4LDEwICsxNzIwLDEyIEBAIHN0YXRpYyB2b2lkIGk5MTVfd2VsY29tZV9t ZXNzYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAgCWlmIChkcm1f ZGVidWcgJiBEUk1fVVRfRFJJVkVSKSB7Cj4+ICAgCQlzdHJ1Y3QgZHJtX3ByaW50ZXIgcCA9IGRy bV9kZWJ1Z19wcmludGVyKCJpOTE1IGRldmljZSBpbmZvOiIpOwo+PiAgIAo+PiAtCQlkcm1fcHJp bnRmKCZwLCAicGNpaWQ9MHglMDR4IHJldj0weCUwMnggcGxhdGZvcm09JXMgZ2VuPSVpXG4iLAo+ PiArCQlkcm1fcHJpbnRmKCZwLCAicGNpaWQ9MHglMDR4IHJldj0weCUwMnggcGxhdGZvcm09JXMg KHN1YnBsYXRmb3JtPTB4JXgpIGdlbj0laVxuIiwKPj4gICAJCQkgICBJTlRFTF9ERVZJRChkZXZf cHJpdiksCj4+ICAgCQkJICAgSU5URUxfUkVWSUQoZGV2X3ByaXYpLAo+PiAgIAkJCSAgIGludGVs X3BsYXRmb3JtX25hbWUoSU5URUxfSU5GTyhkZXZfcHJpdiktPnBsYXRmb3JtKSwKPj4gKwkJCSAg IGludGVsX3N1YnBsYXRmb3JtKFJVTlRJTUVfSU5GTyhkZXZfcHJpdiksCj4+ICsJCQkJCSAgICAg SU5URUxfSU5GTyhkZXZfcHJpdiktPnBsYXRmb3JtKSwKPj4gICAJCQkgICBJTlRFTF9HRU4oZGV2 X3ByaXYpKTsKPj4gICAKPj4gICAJCWludGVsX2RldmljZV9pbmZvX2R1bXBfZmxhZ3MoSU5URUxf SU5GTyhkZXZfcHJpdiksICZwKTsKPj4gQEAgLTE3NjQsOCArMTc2OCw2IEBAIGk5MTVfZHJpdmVy X2NyZWF0ZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQg KmVudCkKPj4gICAJbWVtY3B5KGRldmljZV9pbmZvLCBtYXRjaF9pbmZvLCBzaXplb2YoKmRldmlj ZV9pbmZvKSk7Cj4+ICAgCVJVTlRJTUVfSU5GTyhpOTE1KS0+ZGV2aWNlX2lkID0gcGRldi0+ZGV2 aWNlOwo+PiAgIAo+PiAtCUJVSUxEX0JVR19PTihJTlRFTF9NQVhfUExBVEZPUk1TID4KPj4gLQkJ ICAgICBCSVRTX1BFUl9UWVBFKGRldmljZV9pbmZvLT5wbGF0Zm9ybV9tYXNrKSk7Cj4+ICAgCUJV R19PTihkZXZpY2VfaW5mby0+Z2VuID4gQklUU19QRVJfVFlQRShkZXZpY2VfaW5mby0+Z2VuX21h c2spKTsKPj4gICAKPj4gICAJcmV0dXJuIGk5MTU7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ PiBpbmRleCA5ZDNjYWI5NDA2ZTEuLmI3ZDNmM2E0NWVkOSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4+IEBAIC0yMjk4LDcgKzIyOTgsNjcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25l ZCBpbnQgaTkxNV9zZ19zZWdtZW50X3NpemUodm9pZCkKPj4gICAjZGVmaW5lIElTX1JFVklEKHAs IHNpbmNlLCB1bnRpbCkgXAo+PiAgIAkoSU5URUxfUkVWSUQocCkgPj0gKHNpbmNlKSAmJiBJTlRF TF9SRVZJRChwKSA8PSAodW50aWwpKQo+PiAgIAo+PiAtI2RlZmluZSBJU19QTEFURk9STShkZXZf cHJpdiwgcCkgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5wbGF0Zm9ybV9tYXNrICYgQklUKHApKQo+ PiArc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBpbnQKPj4gK19fcGxhdGZvcm1fbWFz a19pbmRleChjb25zdCBzdHJ1Y3QgaW50ZWxfcnVudGltZV9pbmZvICppbmZvLAo+PiArCQkgICAg ICBlbnVtIGludGVsX3BsYXRmb3JtIHApCj4+ICt7Cj4+ICsJY29uc3QgdW5zaWduZWQgaW50IHBi aXRzID0KPj4gKwkJQklUU19QRVJfVFlQRShpbmZvLT5wbGF0Zm9ybV9tYXNrWzBdKSAtIElOVEVM X1NVQlBMQVRGT1JNX0JJVFM7Cj4+ICsKPj4gKwkvKiBFeHBhbmQgdGhlIHBsYXRmb3JtX21hc2sg YXJyYXkgaWYgdGhpcyBmYWlscy4gKi8KPj4gKwlCVUlMRF9CVUdfT04oSU5URUxfTUFYX1BMQVRG T1JNUyA+Cj4+ICsJCSAgICAgcGJpdHMgKiBBUlJBWV9TSVpFKGluZm8tPnBsYXRmb3JtX21hc2sp KTsKPj4gKwo+PiArCXJldHVybiBwIC8gcGJpdHM7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBfX2Fs d2F5c19pbmxpbmUgdW5zaWduZWQgaW50Cj4+ICtfX3BsYXRmb3JtX21hc2tfYml0KGNvbnN0IHN0 cnVjdCBpbnRlbF9ydW50aW1lX2luZm8gKmluZm8sCj4+ICsJCSAgICBlbnVtIGludGVsX3BsYXRm b3JtIHApCj4+ICt7Cj4+ICsJY29uc3QgdW5zaWduZWQgaW50IHBiaXRzID0KPj4gKwkJQklUU19Q RVJfVFlQRShpbmZvLT5wbGF0Zm9ybV9tYXNrWzBdKSAtIElOVEVMX1NVQlBMQVRGT1JNX0JJVFM7 Cj4+ICsKPj4gKwlyZXR1cm4gcCAlIHBiaXRzICsgSU5URUxfU1VCUExBVEZPUk1fQklUUzsKPj4g K30KPj4gKwo+PiArc3RhdGljIGlubGluZSB1MzIKPj4gK2ludGVsX3N1YnBsYXRmb3JtKGNvbnN0 IHN0cnVjdCBpbnRlbF9ydW50aW1lX2luZm8gKmluZm8sIGVudW0gaW50ZWxfcGxhdGZvcm0gcCkK Pj4gK3sKPj4gKwljb25zdCB1bnNpZ25lZCBpbnQgcGkgPSBfX3BsYXRmb3JtX21hc2tfaW5kZXgo aW5mbywgcCk7Cj4+ICsKPj4gKwlyZXR1cm4gaW5mby0+cGxhdGZvcm1fbWFza1twaV0gJiBJTlRF TF9TVUJQTEFURk9STV9CSVRTOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgX19hbHdheXNfaW5saW5l IGJvb2wKPj4gK0lTX1BMQVRGT1JNKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LCBlbnVtIGludGVsX3BsYXRmb3JtIHApCj4+ICt7Cj4+ICsJY29uc3Qgc3RydWN0IGludGVsX3J1 bnRpbWVfaW5mbyAqaW5mbyA9IFJVTlRJTUVfSU5GTyhpOTE1KTsKPj4gKwljb25zdCB1bnNpZ25l ZCBpbnQgcGkgPSBfX3BsYXRmb3JtX21hc2tfaW5kZXgoaW5mbywgcCk7Cj4+ICsJY29uc3QgdW5z aWduZWQgaW50IHBiID0gX19wbGF0Zm9ybV9tYXNrX2JpdChpbmZvLCBwKTsKPj4gKwo+PiArCUJV SUxEX0JVR19PTighX19idWlsdGluX2NvbnN0YW50X3AocCkpOwo+PiArCj4+ICsJcmV0dXJuIGlu Zm8tPnBsYXRmb3JtX21hc2tbcGldICYgQklUKHBiKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIF9f YWx3YXlzX2lubGluZSBib29sCj4+ICtJU19TVUJQTEFURk9STShjb25zdCBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwKPj4gKwkgICAgICAgZW51bSBpbnRlbF9wbGF0Zm9ybSBwLCB1bnNp Z25lZCBpbnQgcykKPj4gK3sKPj4gKwljb25zdCBzdHJ1Y3QgaW50ZWxfcnVudGltZV9pbmZvICpp bmZvID0gUlVOVElNRV9JTkZPKGk5MTUpOwo+PiArCWNvbnN0IHVuc2lnbmVkIGludCBwaSA9IF9f cGxhdGZvcm1fbWFza19pbmRleChpbmZvLCBwKTsKPj4gKwljb25zdCB1bnNpZ25lZCBpbnQgcGIg PSBfX3BsYXRmb3JtX21hc2tfYml0KGluZm8sIHApOwo+PiArCWNvbnN0IHVuc2lnbmVkIGludCBt c2IgPSBCSVRTX1BFUl9UWVBFKGluZm8tPnBsYXRmb3JtX21hc2tbMF0pIC0gMTsKPj4gKwljb25z dCB1MzIgbWFzayA9IGluZm8tPnBsYXRmb3JtX21hc2tbcGldOwo+PiArCj4+ICsJQlVJTERfQlVH X09OKCFfX2J1aWx0aW5fY29uc3RhbnRfcChwKSk7Cj4+ICsJQlVJTERfQlVHX09OKCFfX2J1aWx0 aW5fY29uc3RhbnRfcChzKSk7Cj4+ICsJQlVJTERfQlVHX09OKChzKSA+PSBJTlRFTF9TVUJQTEFU Rk9STV9CSVRTKTsKPj4gKwo+PiArCS8qIFNoaWZ0IGFuZCB0ZXN0IG9uIHRoZSBNU0IgcG9zaXRp b24gc28gc2lnbiBmbGFnIGNhbiBiZSB1c2VkLiAqLwo+PiArCXJldHVybiAoKG1hc2sgPDwgKG1z YiAtIHBiKSkgJiAobWFzayA8PCAobXNiIC0gcykpKSAmIEJJVChtc2IpOwo+PiArfQo+IAo+IEh1 bSwgSSB3b25kZXIgaWYgdGhlIF9fYnVpbHRpbl9jb25zdGFudF9wKCkncyBpbiBhbiBpbmxpbmUg ZnVuY3Rpb24gYXJlCj4gZ29pbmcgdG8gYmUgYSBwcm9ibGVtIGZvciBjbGFuZy4KCk5vIGlkZWEu LiBoYXMgc29tZXRoaW5nIGJlZW4gaGFwcGVuaW5nIGFsb25nIHRoZXNlIGxpbmVzIGluIHRoZSBw YXN0PwoKSXQgY291bGQgYmUgYSBtYWNybyBidXQgdGhlbiBhbGwgV0FSTl9PTidzIHdoaWNoIHVz ZSBJU19QTEFURk9STSBleHBhbmQgCnRvIG1vc3QgdW5yZWFkYWJsZSBtZXNzLgoKPiAKPj4gICAK Pj4gICAjZGVmaW5lIElTX01PQklMRShkZXZfcHJpdikJKElOVEVMX0lORk8oZGV2X3ByaXYpLT5p c19tb2JpbGUpCj4+ICAgCj4+IEBAIC0yMzM3LDQzICsyMzk3LDMyIEBAIHN0YXRpYyBpbmxpbmUg dW5zaWduZWQgaW50IGk5MTVfc2dfc2VnbWVudF9zaXplKHZvaWQpCj4+ICAgI2RlZmluZSBJU19F TEtIQVJUTEFLRShkZXZfcHJpdikJSVNfUExBVEZPUk0oZGV2X3ByaXYsIElOVEVMX0VMS0hBUlRM QUtFKQo+PiAgICNkZWZpbmUgSVNfSFNXX0VBUkxZX1NEVihkZXZfcHJpdikgKElTX0hBU1dFTEwo ZGV2X3ByaXYpICYmIFwKPj4gICAJCQkJICAgIChJTlRFTF9ERVZJRChkZXZfcHJpdikgJiAweEZG MDApID09IDB4MEMwMCkKPj4gLSNkZWZpbmUgSVNfQkRXX1VMVChkZXZfcHJpdikJKElTX0JST0FE V0VMTChkZXZfcHJpdikgJiYgXAo+PiAtCQkJCSAoKElOVEVMX0RFVklEKGRldl9wcml2KSAmIDB4 ZikgPT0gMHg2IHx8CVwKPj4gLQkJCQkgKElOVEVMX0RFVklEKGRldl9wcml2KSAmIDB4ZikgPT0g MHhiIHx8CVwKPj4gLQkJCQkgKElOVEVMX0RFVklEKGRldl9wcml2KSAmIDB4ZikgPT0gMHhlKSkK Pj4gLS8qIFVMWCBtYWNoaW5lcyBhcmUgYWxzbyBjb25zaWRlcmVkIFVMVC4gKi8KPj4gLSNkZWZp bmUgSVNfQkRXX1VMWChkZXZfcHJpdikJKElTX0JST0FEV0VMTChkZXZfcHJpdikgJiYgXAo+PiAt CQkJCSAoSU5URUxfREVWSUQoZGV2X3ByaXYpICYgMHhmKSA9PSAweGUpCj4+ICsjZGVmaW5lIElT X0JEV19VTFQoZGV2X3ByaXYpIFwKPj4gKwlJU19TVUJQTEFURk9STShkZXZfcHJpdiwgSU5URUxf QlJPQURXRUxMLCBJTlRFTF9TVUJQTEFURk9STV9VTFQpCj4+ICsjZGVmaW5lIElTX0JEV19VTFgo ZGV2X3ByaXYpIFwKPj4gKwlJU19TVUJQTEFURk9STShkZXZfcHJpdiwgSU5URUxfQlJPQURXRUxM LCBJTlRFTF9TVUJQTEFURk9STV9VTFgpCj4+ICAgI2RlZmluZSBJU19CRFdfR1QzKGRldl9wcml2 KQkoSVNfQlJPQURXRUxMKGRldl9wcml2KSAmJiBcCj4+ICAgCQkJCSBJTlRFTF9JTkZPKGRldl9w cml2KS0+Z3QgPT0gMykKPj4gLSNkZWZpbmUgSVNfSFNXX1VMVChkZXZfcHJpdikJKElTX0hBU1dF TEwoZGV2X3ByaXYpICYmIFwKPj4gLQkJCQkgKElOVEVMX0RFVklEKGRldl9wcml2KSAmIDB4RkYw MCkgPT0gMHgwQTAwKQo+PiArI2RlZmluZSBJU19IU1dfVUxUKGRldl9wcml2KSBcCj4+ICsJSVNf U1VCUExBVEZPUk0oZGV2X3ByaXYsIElOVEVMX0hBU1dFTEwsIElOVEVMX1NVQlBMQVRGT1JNX1VM VCkKPj4gICAjZGVmaW5lIElTX0hTV19HVDMoZGV2X3ByaXYpCShJU19IQVNXRUxMKGRldl9wcml2 KSAmJiBcCj4+ICAgCQkJCSBJTlRFTF9JTkZPKGRldl9wcml2KS0+Z3QgPT0gMykKPj4gICAjZGVm aW5lIElTX0hTV19HVDEoZGV2X3ByaXYpCShJU19IQVNXRUxMKGRldl9wcml2KSAmJiBcCj4+ICAg CQkJCSBJTlRFTF9JTkZPKGRldl9wcml2KS0+Z3QgPT0gMSkKPj4gICAvKiBVTFggbWFjaGluZXMg YXJlIGFsc28gY29uc2lkZXJlZCBVTFQuICovCj4+IC0jZGVmaW5lIElTX0hTV19VTFgoZGV2X3By aXYpCShJTlRFTF9ERVZJRChkZXZfcHJpdikgPT0gMHgwQTBFIHx8IFwKPj4gLQkJCQkgSU5URUxf REVWSUQoZGV2X3ByaXYpID09IDB4MEExRSkKPj4gLSNkZWZpbmUgSVNfU0tMX1VMVChkZXZfcHJp dikJKElOVEVMX0RFVklEKGRldl9wcml2KSA9PSAweDE5MDYgfHwgXAo+PiAtCQkJCSBJTlRFTF9E RVZJRChkZXZfcHJpdikgPT0gMHgxOTEzIHx8IFwKPj4gLQkJCQkgSU5URUxfREVWSUQoZGV2X3By aXYpID09IDB4MTkxNiB8fCBcCj4+IC0JCQkJIElOVEVMX0RFVklEKGRldl9wcml2KSA9PSAweDE5 MjEgfHwgXAo+PiAtCQkJCSBJTlRFTF9ERVZJRChkZXZfcHJpdikgPT0gMHgxOTI2KQo+PiAtI2Rl ZmluZSBJU19TS0xfVUxYKGRldl9wcml2KQkoSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4MTkw RSB8fCBcCj4+IC0JCQkJIElOVEVMX0RFVklEKGRldl9wcml2KSA9PSAweDE5MTUgfHwgXAo+PiAt CQkJCSBJTlRFTF9ERVZJRChkZXZfcHJpdikgPT0gMHgxOTFFKQo+PiAtI2RlZmluZSBJU19LQkxf VUxUKGRldl9wcml2KQkoSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4NTkwNiB8fCBcCj4+IC0J CQkJIElOVEVMX0RFVklEKGRldl9wcml2KSA9PSAweDU5MTMgfHwgXAo+PiAtCQkJCSBJTlRFTF9E RVZJRChkZXZfcHJpdikgPT0gMHg1OTE2IHx8IFwKPj4gLQkJCQkgSU5URUxfREVWSUQoZGV2X3By aXYpID09IDB4NTkyMSB8fCBcCj4+IC0JCQkJIElOVEVMX0RFVklEKGRldl9wcml2KSA9PSAweDU5 MjYpCj4+IC0jZGVmaW5lIElTX0tCTF9VTFgoZGV2X3ByaXYpCShJTlRFTF9ERVZJRChkZXZfcHJp dikgPT0gMHg1OTBFIHx8IFwKPj4gLQkJCQkgSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4NTkx NSB8fCBcCj4+IC0JCQkJIElOVEVMX0RFVklEKGRldl9wcml2KSA9PSAweDU5MUUpCj4+IC0jZGVm aW5lIElTX0FNTF9VTFgoZGV2X3ByaXYpCShJTlRFTF9ERVZJRChkZXZfcHJpdikgPT0gMHg1OTFD IHx8IFwKPj4gLQkJCQkgSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4ODdDMCB8fCBcCj4+IC0J CQkJIElOVEVMX0RFVklEKGRldl9wcml2KSA9PSAweDg3Q0EpCj4+ICsjZGVmaW5lIElTX0hTV19V TFgoZGV2X3ByaXYpIFwKPj4gKwlJU19TVUJQTEFURk9STShkZXZfcHJpdiwgSU5URUxfSEFTV0VM TCwgSU5URUxfU1VCUExBVEZPUk1fVUxYKQo+PiArI2RlZmluZSBJU19TS0xfVUxUKGRldl9wcml2 KSBcCj4+ICsJSVNfU1VCUExBVEZPUk0oZGV2X3ByaXYsIElOVEVMX1NLWUxBS0UsIElOVEVMX1NV QlBMQVRGT1JNX1VMVCkKPj4gKyNkZWZpbmUgSVNfU0tMX1VMWChkZXZfcHJpdikgXAo+PiArCUlT X1NVQlBMQVRGT1JNKGRldl9wcml2LCBJTlRFTF9TS1lMQUtFLCBJTlRFTF9TVUJQTEFURk9STV9V TFgpCj4+ICsjZGVmaW5lIElTX0tCTF9VTFQoZGV2X3ByaXYpIFwKPj4gKwlJU19TVUJQTEFURk9S TShkZXZfcHJpdiwgSU5URUxfS0FCWUxBS0UsIElOVEVMX1NVQlBMQVRGT1JNX1VMVCkKPj4gKyNk ZWZpbmUgSVNfS0JMX1VMWChkZXZfcHJpdikgXAo+PiArCUlTX1NVQlBMQVRGT1JNKGRldl9wcml2 LCBJTlRFTF9LQUJZTEFLRSwgSU5URUxfU1VCUExBVEZPUk1fVUxYKQo+PiArI2RlZmluZSBJU19B TUxfVUxYKGRldl9wcml2KSBcCj4+ICsJKElTX1NVQlBMQVRGT1JNKGRldl9wcml2LCBJTlRFTF9L QUJZTEFLRSwgSU5URUxfU1VCUExBVEZPUk1fQU1MKSB8fCBcCj4+ICsJIElTX1NVQlBMQVRGT1JN KGRldl9wcml2LCBJTlRFTF9DT0ZGRUVMQUtFLCBJTlRFTF9TVUJQTEFURk9STV9BTUwpKQo+PiAg ICNkZWZpbmUgSVNfU0tMX0dUMihkZXZfcHJpdikJKElTX1NLWUxBS0UoZGV2X3ByaXYpICYmIFwK Pj4gICAJCQkJIElOVEVMX0lORk8oZGV2X3ByaXYpLT5ndCA9PSAyKQo+PiAgICNkZWZpbmUgSVNf U0tMX0dUMyhkZXZfcHJpdikJKElTX1NLWUxBS0UoZGV2X3ByaXYpICYmIFwKPj4gQEAgLTIzODQs MTYgKzI0MzMsMTYgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgaTkxNV9zZ19zZWdtZW50 X3NpemUodm9pZCkKPj4gICAJCQkJIElOVEVMX0lORk8oZGV2X3ByaXYpLT5ndCA9PSAyKQo+PiAg ICNkZWZpbmUgSVNfS0JMX0dUMyhkZXZfcHJpdikJKElTX0tBQllMQUtFKGRldl9wcml2KSAmJiBc Cj4+ICAgCQkJCSBJTlRFTF9JTkZPKGRldl9wcml2KS0+Z3QgPT0gMykKPj4gLSNkZWZpbmUgSVNf Q0ZMX1VMVChkZXZfcHJpdikJKElTX0NPRkZFRUxBS0UoZGV2X3ByaXYpICYmIFwKPj4gLQkJCQkg KElOVEVMX0RFVklEKGRldl9wcml2KSAmIDB4MDBGMCkgPT0gMHgwMEEwKQo+PiArI2RlZmluZSBJ U19DRkxfVUxUKGRldl9wcml2KSBcCj4+ICsJSVNfU1VCUExBVEZPUk0oZGV2X3ByaXYsIElOVEVM X0NPRkZFRUxBS0UsIElOVEVMX1NVQlBMQVRGT1JNX1VMVCkKPj4gICAjZGVmaW5lIElTX0NGTF9H VDIoZGV2X3ByaXYpCShJU19DT0ZGRUVMQUtFKGRldl9wcml2KSAmJiBcCj4+ICAgCQkJCSBJTlRF TF9JTkZPKGRldl9wcml2KS0+Z3QgPT0gMikKPj4gICAjZGVmaW5lIElTX0NGTF9HVDMoZGV2X3By aXYpCShJU19DT0ZGRUVMQUtFKGRldl9wcml2KSAmJiBcCj4+ICAgCQkJCSBJTlRFTF9JTkZPKGRl dl9wcml2KS0+Z3QgPT0gMykKPj4gLSNkZWZpbmUgSVNfQ05MX1dJVEhfUE9SVF9GKGRldl9wcml2 KSAgIChJU19DQU5OT05MQUtFKGRldl9wcml2KSAmJiBcCj4+IC0JCQkJCShJTlRFTF9ERVZJRChk ZXZfcHJpdikgJiAweDAwMDQpID09IDB4MDAwNCkKPj4gLSNkZWZpbmUgSVNfSUNMX1dJVEhfUE9S VF9GKGRldl9wcml2KSAgIChJU19JQ0VMQUtFKGRldl9wcml2KSAmJiBcCj4+IC0JCQkJCUlOVEVM X0RFVklEKGRldl9wcml2KSAhPSAweDhBNTEpCj4+ICsjZGVmaW5lIElTX0NOTF9XSVRIX1BPUlRf RihkZXZfcHJpdikgXAo+PiArCUlTX1NVQlBMQVRGT1JNKGRldl9wcml2LCBJTlRFTF9DQU5OT05M QUtFLCBJTlRFTF9TVUJQTEFURk9STV9QT1JURikKPj4gKyNkZWZpbmUgSVNfSUNMX1dJVEhfUE9S VF9GKGRldl9wcml2KSBcCj4+ICsJSVNfU1VCUExBVEZPUk0oZGV2X3ByaXYsIElOVEVMX0lDRUxB S0UsIElOVEVMX1NVQlBMQVRGT1JNX1BPUlRGKQo+PiAgIAo+PiAgICNkZWZpbmUgSVNfQUxQSEFf U1VQUE9SVChpbnRlbF9pbmZvKSAoKGludGVsX2luZm8pLT5pc19hbHBoYV9zdXBwb3J0KQo+PiAg IAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPj4gaW5kZXggYTJhOThjY2Rh NDIxLi44MWEyN2I4MDgyNzMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ3B1X2Vycm9yLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJy b3IuYwo+PiBAQCAtNjc3LDYgKzY3Nyw5IEBAIHN0YXRpYyB2b2lkIF9fZXJyX3ByaW50X3RvX3Nn bChzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAo+PiAgIAllcnJfcHJpbnRmKG0s ICJSZXNldCBjb3VudDogJXVcbiIsIGVycm9yLT5yZXNldF9jb3VudCk7Cj4+ICAgCWVycl9wcmlu dGYobSwgIlN1c3BlbmQgY291bnQ6ICV1XG4iLCBlcnJvci0+c3VzcGVuZF9jb3VudCk7Cj4+ICAg CWVycl9wcmludGYobSwgIlBsYXRmb3JtOiAlc1xuIiwgaW50ZWxfcGxhdGZvcm1fbmFtZShlcnJv ci0+ZGV2aWNlX2luZm8ucGxhdGZvcm0pKTsKPj4gKwllcnJfcHJpbnRmKG0sICJTdWJwbGF0Zm9y bTogMHgleFxuIiwKPj4gKwkJICAgaW50ZWxfc3VicGxhdGZvcm0oJmVycm9yLT5ydW50aW1lX2lu Zm8sCj4+ICsJCQkJICAgICBlcnJvci0+ZGV2aWNlX2luZm8ucGxhdGZvcm0pKTsKPj4gICAJZXJy X3ByaW50X3BjaWlkKG0sIG0tPmk5MTUpOwo+PiAgIAo+PiAgIAllcnJfcHJpbnRmKG0sICJJT01N VSBlbmFibGVkPzogJWRcbiIsIGVycm9yLT5pb21tdSk7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2ku Ywo+PiBpbmRleCA3MTZmMmY5NWM1N2QuLjM5MjUxNTg2MzQ5YSAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3BjaS5jCj4+IEBAIC0zMiw3ICszMiw3IEBACj4+ICAgI2luY2x1ZGUgImk5MTVfZ2xv YmFscy5oIgo+PiAgICNpbmNsdWRlICJpOTE1X3NlbGZ0ZXN0LmgiCj4+ICAgCj4+IC0jZGVmaW5l IFBMQVRGT1JNKHgpIC5wbGF0Zm9ybSA9ICh4KSwgLnBsYXRmb3JtX21hc2sgPSBCSVQoeCkKPj4g KyNkZWZpbmUgUExBVEZPUk0oeCkgLnBsYXRmb3JtID0gKHgpCj4+ICAgI2RlZmluZSBHRU4oeCkg LmdlbiA9ICh4KSwgLmdlbl9tYXNrID0gQklUKCh4KSAtIDEpCj4+ICAgCj4+ICAgI2RlZmluZSBJ ODQ1X1BJUEVfT0ZGU0VUUyBcCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kZXZpY2VfaW5mby5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2lu Zm8uYwo+PiBpbmRleCBlMGY1ZTAyMzFkMDQuLjBlZDQ5ZDAzMmMwMCAxMDA2NDQKPj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYwo+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCj4+IEBAIC03MTQsNiArNzE0LDk5IEBA IHN0YXRpYyB1MzIgcmVhZF90aW1lc3RhbXBfZnJlcXVlbmN5KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPj4gICAJcmV0dXJuIDA7Cj4+ICAgfQo+PiAgIAo+PiArI3VuZGVmIElO VEVMX1ZHQV9ERVZJQ0UKPj4gKyNkZWZpbmUgSU5URUxfVkdBX0RFVklDRShpZCwgaW5mbykgKGlk KQo+PiArCj4+ICtzdGF0aWMgY29uc3QgdTE2IHN1YnBsYXRmb3JtX3VsdF9pZHNbXSA9IHsKPj4g KwlJTlRFTF9IU1dfVUxUX0dUMV9JRFMoMCksCj4+ICsJSU5URUxfSFNXX1VMVF9HVDJfSURTKDAp LAo+PiArCUlOVEVMX0hTV19VTFRfR1QzX0lEUygwKSwKPj4gKwlJTlRFTF9CRFdfVUxUX0dUMV9J RFMoMCksCj4+ICsJSU5URUxfQkRXX1VMVF9HVDJfSURTKDApLAo+PiArCUlOVEVMX0JEV19VTFRf R1QzX0lEUygwKSwKPj4gKwlJTlRFTF9CRFdfVUxUX1JTVkRfSURTKDApLAo+PiArCUlOVEVMX1NL TF9VTFRfR1QxX0lEUygwKSwKPj4gKwlJTlRFTF9TS0xfVUxUX0dUMl9JRFMoMCksCj4+ICsJSU5U RUxfU0tMX1VMVF9HVDNfSURTKDApLAo+PiArCUlOVEVMX0tCTF9VTFRfR1QxX0lEUygwKSwKPj4g KwlJTlRFTF9LQkxfVUxUX0dUMl9JRFMoMCksCj4+ICsJSU5URUxfS0JMX1VMVF9HVDNfSURTKDAp LAo+PiArCUlOVEVMX0NGTF9VX0dUMl9JRFMoMCksCj4+ICsJSU5URUxfQ0ZMX1VfR1QzX0lEUygw KSwKPj4gKwlJTlRFTF9XSExfVV9HVDFfSURTKDApLAo+PiArCUlOVEVMX1dITF9VX0dUMl9JRFMo MCksCj4+ICsJSU5URUxfV0hMX1VfR1QzX0lEUygwKQo+PiArfTsKPj4gKwo+PiArc3RhdGljIGNv bnN0IHUxNiBzdWJwbGF0Zm9ybV91bHhfaWRzW10gPSB7Cj4+ICsJSU5URUxfSFNXX1VMWF9HVDFf SURTKDApLAo+PiArCUlOVEVMX0hTV19VTFhfR1QyX0lEUygwKSwKPj4gKwlJTlRFTF9CRFdfVUxY X0dUMV9JRFMoMCksCj4+ICsJSU5URUxfQkRXX1VMWF9HVDJfSURTKDApLAo+PiArCUlOVEVMX0JE V19VTFhfR1QzX0lEUygwKSwKPj4gKwlJTlRFTF9CRFdfVUxYX1JTVkRfSURTKDApLAo+PiArCUlO VEVMX1NLTF9VTFhfR1QxX0lEUygwKSwKPj4gKwlJTlRFTF9TS0xfVUxYX0dUMl9JRFMoMCksCj4+ ICsJSU5URUxfS0JMX1VMWF9HVDFfSURTKDApLAo+PiArCUlOVEVMX0tCTF9VTFhfR1QyX0lEUygw KQo+PiArfTsKPj4gKwo+PiArc3RhdGljIGNvbnN0IHUxNiBzdWJwbGF0Zm9ybV9hbWxfaWRzW10g PSB7Cj4+ICsJSU5URUxfQU1MX0tCTF9HVDJfSURTKDApLAo+PiArCUlOVEVMX0FNTF9DRkxfR1Qy X0lEUygwKQo+PiArfTsKPj4gKwo+PiArc3RhdGljIGNvbnN0IHUxNiBzdWJwbGF0Zm9ybV9wb3J0 Zl9pZHNbXSA9IHsKPj4gKwlJTlRFTF9DTkxfUE9SVF9GX0lEUygwKSwKPj4gKwlJTlRFTF9JQ0xf UE9SVF9GX0lEUygwKQo+PiArfTsKPj4gKwo+PiArc3RhdGljIGJvb2wgZmluZF9kZXZpZCh1MTYg aWQsIGNvbnN0IHUxNiAqcCwgdW5zaWduZWQgaW50IG51bSkKPj4gK3sKPj4gKwlmb3IgKDsgbnVt OyBudW0tLSwgcCsrKSB7Cj4+ICsJCWlmICgqcCA9PSBpZCkKPj4gKwkJCXJldHVybiB0cnVlOwo+ PiArCX0KPiAKPiBXaHkgc3VjaCBhIGNvbnZvbHV0ZWQgd2F5IG9mIGRvaW5nIHdoYXQncyBzdXBw b3NlZCB0byBiZSBhIHNpbXBsZSB0aGluZz8KPiBJIGhhZCB0byBzdG9wIGF0IHRoYXQgYW5kIHdv bmRlciB3aGF0J3MgZ29pbmcgb24uIFdoaWxlIHRoaXMgd291bGQndmUKPiBiZWVuIG9idmlvdXMg YW5kIHJldmlld2VkIHdpdGggYSAyLXNlY29uZCBnbGFuY2U6Cj4gCj4gCWludCBpOwo+IAo+ICAg ICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW07IGkrKykKPiAgICAgICAgICAJaWYgKGlkID09IHBb aV0pCj4gICAgICAgICAgICAgICAgICAJcmV0dXJuIHRydWU7Cj4gCj4gVGhlIGFsdGVybmF0aXZl IGlzIHplcm8tdGVybWluYXRpbmcgdGhlIGFycmF5czoKPiAKPiAJZm9yICg7ICpwOyBwKyspCj4g ICAgICAgICAgCWlmIChpZCA9PSAqcCkKPiAgICAgICAgICAgICAgICAgIAlyZXR1cm4gdHJ1ZTsK PiAKCkkgdGhpbmsgbWluZSBpcyBub3QgdGhhdCBjb21wbGljYXRlZC4gSXQncyBhIHN0YW5kYXJk IGNvdW50ZG93biBwYXR0ZXJuLCAKbm8/IFdoeSBhZGQgbG9jYWxzIG9yIG51bGwgdGVybWluYXRp b24gaWYgbm90IG5lZWRlZC4KCj4+ICsKPj4gKwlyZXR1cm4gZmFsc2U7Cj4+ICt9Cj4+ICsKPj4g K3ZvaWQgaW50ZWxfZGV2aWNlX2luZm9fc3VicGxhdGZvcm1faW5pdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKPj4gK3sKPj4gKwljb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8g KmluZm8gPSBJTlRFTF9JTkZPKGk5MTUpOwo+PiArCWNvbnN0IHN0cnVjdCBpbnRlbF9ydW50aW1l X2luZm8gKnJpbmZvID0gUlVOVElNRV9JTkZPKGk5MTUpOwo+PiArCWNvbnN0IHVuc2lnbmVkIGlu dCBwaSA9IF9fcGxhdGZvcm1fbWFza19pbmRleChyaW5mbywgaW5mby0+cGxhdGZvcm0pOwo+PiAr CWNvbnN0IHVuc2lnbmVkIGludCBwYiA9IF9fcGxhdGZvcm1fbWFza19iaXQocmluZm8sIGluZm8t PnBsYXRmb3JtKTsKPj4gKwl1MTYgZGV2aWQgPSBJTlRFTF9ERVZJRChpOTE1KTsKPj4gKwl1MzIg bWFzazsKPj4gKwo+PiArCS8qIE1ha2Ugc3VyZSBJU188cGxhdGZvcm0+IGNoZWNrcyBhcmUgd29y a2luZy4gKi8KPj4gKwlSVU5USU1FX0lORk8oaTkxNSktPnBsYXRmb3JtX21hc2tbcGldID0gQklU KHBiKTsKPj4gKwo+PiArCS8qIEZpbmQgYW5kIG1hcmsgc3VicGxhdGZvcm0gYml0cyBiYXNlZCBv biB0aGUgUENJIGRldmljZSBpZC4gKi8KPj4gKwlpZiAoZmluZF9kZXZpZChkZXZpZCwgc3VicGxh dGZvcm1fdWx0X2lkcywKPj4gKwkJICAgICAgIEFSUkFZX1NJWkUoc3VicGxhdGZvcm1fdWx0X2lk cykpKSB7Cj4+ICsJCW1hc2sgPSBCSVQoSU5URUxfU1VCUExBVEZPUk1fVUxUKTsKPj4gKwl9IGVs c2UgaWYgKGZpbmRfZGV2aWQoZGV2aWQsIHN1YnBsYXRmb3JtX3VseF9pZHMsCj4+ICsJCQkgICAg ICBBUlJBWV9TSVpFKHN1YnBsYXRmb3JtX3VseF9pZHMpKSkgewo+PiArCQltYXNrID0gQklUKElO VEVMX1NVQlBMQVRGT1JNX1VMWCk7Cj4+ICsJCWlmIChJU19IQVNXRUxMKGk5MTUpIHx8IElTX0JS T0FEV0VMTChpOTE1KSkgewo+PiArCQkJLyogVUxYIG1hY2hpbmVzIGFyZSBhbHNvIGNvbnNpZGVy ZWQgVUxULiAqLwo+PiArCQkJbWFzayB8PSBCSVQoSU5URUxfU1VCUExBVEZPUk1fVUxUKTsKPj4g KwkJfQo+IAo+ICpjcmluZ2UqIGF0IHNwZWNpYWwgY2FzaW5nIGhzdy9iZHcgdWx4IG1lYW5zIHVs dCBoZXJlLiBDYW4gYmUgZmlndXJlZAo+IG91dCBsYXRlciB0aG91Z2ggaWYgbmVlZGVkLgoKWWVh aC4uCgo+IAo+IEFueXdheSwKPiAKPiBBY2tlZC1ieTogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxh QGludGVsLmNvbT4KPiAKClRoYW5rcyEKClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4