From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v8 4/4] drm/i915: Introduce concept of a sub-platform Date: Fri, 29 Mar 2019 11:54:33 +0200 Message-ID: <87pnqa0zvq.fsf@intel.com> References: <20190326074057.27833-5-tvrtko.ursulin@linux.intel.com> <20190327142328.31780-1-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 394526E05D for ; Fri, 29 Mar 2019 09:51:54 +0000 (UTC) In-Reply-To: <20190327142328.31780-1-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin , Intel-gfx@lists.freedesktop.org Cc: Lucas De Marchi , Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyNyBNYXIgMjAxOSwgVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGxpbnV4 LmludGVsLmNvbT4gd3JvdGU6Cj4gRnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGlu QGludGVsLmNvbT4KPgo+IENvbmNlcHQgb2YgYSBzdWItcGxhdGZvcm0gYWxyZWFkeSBleGlzdCBp biBvdXIgY29kZSAobGlrZSBVTFggYW5kIFVMVAo+IHBsYXRmb3JtIHZhcmlhbnRzIGFuZCBzaW1p bGFyKSxpbXBsZW1lbnRlZCB2aWEgdGhlIG1hY3JvcyB3aGljaCBjaGVjayBhCj4gbGlzdCBvZiBk ZXZpY2UgaWRzIHRvIGRldGVybWluZSBhIG1hdGNoLgo+Cj4gV2l0aCB0aGlzIHBhdGNoIHdlIGNv bnNvbGlkYXRlIGRldmljZSBpZHMgY2hlY2tpbmcgaW50byBhIHNpbmdsZSBmdW5jdGlvbgo+IGNh bGxlZCBkdXJpbmcgZWFybHkgZHJpdmVyIGxvYWQuCj4KPiBBIGZldyBsb3cgYml0cyBpbiB0aGUg cGxhdGZvcm0gbWFzayBhcmUgcmVzZXJ2ZWQgZm9yIHN1Yi1wbGF0Zm9ybQo+IGlkZW50aWZpY2F0 aW9uIGFuZCBkZWZpbmVkIGFzIGEgcGVyLXBsYXRmb3JtIG5hbWVzcGFjZS4KPgo+IEF0IHRoZSBz YW1lIHRpbWUgaXQgZnV0dXJlIHByb29mcyB0aGUgcGxhdGZvcm1fbWFzayBoYW5kbGluZyBieSBw cmVwYXJpbmcKPiB0aGUgY29kZSBmb3IgZWFzeSBleHRlbmRpbmcsIGFuZCB0aWRpZXMgdGhlIHZl cnkgdmVyYm9zZSBXQVJOIHN0cmluZ3MKPiBnZW5lcmF0ZWQgd2hlbiBJU19QTEFURk9STSBtYWNy b3MgYXJlIGVtYmVkZGVkIGludG8gYSBXQVJOIHR5cGUKPiBzdGF0ZW1lbnRzLgo+Cj4gdjI6IEZp eGVkIElTX1NVQlBMQVRGT1JNLiBVcGRhdGVkIGNvbW1pdCBtc2cuCj4gdjM6IENocmlzIHdhcyBy aWdodCwgdGhlcmUgaXMgYW4gb3JkZXJpbmcgcHJvYmxlbS4KPgo+IHY0Ogo+ICAqIENhdGNoLXVw IHdpdGggbmV3IHN1Yi1wbGF0Zm9ybXMuCj4gICogUmViYXNlIGZvciBSVU5USU1FX0lORk8uCj4g ICogRHJvcCBzdWJwbGF0Zm9ybSBtYXNrIHVuaW9uIHRyaWNrcyBhbmQgY29udmVydCBwbGF0Zm9y bV9tYXNrIHRvIGFuCj4gICAgYXJyYXkgZm9yIGV4dGVuc2liaWxpdHkuCj4KPiB2NToKPiAgKiBG aXggc3VicGxhdGZvcm0gY2hlY2suCj4gICogUHJvdGVjdCBhZ2FpbnN0IGZvcmdldHRpbmcgdG8g ZXhwYW5kIHN1YnBsYXRmb3JtIGJpdHMuCj4gICogUmVtb3ZlIHBsYXRmb3JtIGVudW0gdGFsbHlp bmcuCj4gICogQWRkIHN1YnBsYXRmb3JtIHRvIGVycm9yIHN0YXRlLiAoQ2hyaXMpCj4gICogRHJv cCBtYWNyb3MgYW5kIGp1c3QgdXNlIHN0YXRpYyBpbmxpbmVzLgo+ICAqIFJlbW92ZSByZWR1bmRh bnQgSVJPTkxBS0VfTS4gKFZpbGxlKQo+Cj4gdjY6Cj4gICogU3BsaXQgb3V0IElyb25sYWtlIGNo YW5nZS4KPiAgKiBPcHRpbWl6ZSBzdWJwbGF0Zm9ybSBjaGVjay4KPiAgKiBVc2UgX19hbHdheXNf aW5saW5lLiAoTHVjYXMpCj4gICogQWRkIHBsYXRmb3JtX21hc2sgY29tbWVudC4gKFBhdWxvKQo+ ICAqIFBhc3Mgc3RvcmVkIHJ1bnRpbWUgaW5mbyBpbiBlcnJvciBjYXB0dXJlLiAoQ2hyaXMpCj4K PiB2NzoKPiAgKiBSZWJhc2VkIGZvciBuZXcgQU1MIFVMWCBkZXZpY2UgaWQuCj4gICogQnVtcCBw bGF0Zm9ybSBtYXNrIGFycmF5IHNpemUgZm9yIEVITC4KPiAgKiBTdG9wIG1lbnRpb25pbmcgZGV2 aWNlIGlkcyBpbiBpbnRlbF9kZXZpY2Vfc3VicGxhdGZvcm1faW5pdCBieSB1c2luZwo+ICAgIHRo ZSB0cmljayBvZiBzcGxpdHRpbmcgbWFjcm9zIGk5MTVfcGNpaWRzLmguIChKYW5pKQo+ICAqIEFN TCBzZWVtcyB0byBiZSBlaXRoZXIgYSBzdWJwbGF0Zm9ybSBvZiBLQkwgb3IgQ0ZMIHNvIGV4cHJl c3MgaXQgbGlrZQo+ICAgIHRoYXQuCj4KPiB2ODoKPiAgKiBVc2Ugb25lIGRldmljZSBpZCB0YWJs ZSBwZXIgc3VicGxhdGZvcm0uIChKYW5pKQo+Cj4gU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3Vs aW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPiBTdWdnZXN0ZWQtYnk6IENocmlzIFdpbHNv biA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNo cmlzLXdpbHNvbi5jby51az4KPiBDYzogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNv bT4KPiBDYzogTHVjYXMgRGUgTWFyY2hpIDxsdWNhcy5kZW1hcmNoaUBpbnRlbC5jb20+Cj4gQ2M6 IEpvc2UgU291emEgPGpvc2Uuc291emFAaW50ZWwuY29tPgo+IENjOiBWaWxsZSBTeXJqw6Rsw6Qg PHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IENjOiBQYXVsbyBaYW5vbmkgPHBhdWxv LnIuemFub25pQGludGVsLmNvbT4KPiBSZXZpZXdlZC1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0Bj aHJpcy13aWxzb24uY28udWs+ICMgdjYKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuYyAgICAgICAgICB8ICAgOCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oICAgICAgICAgIHwgMTIzICsrKysrKysrKysrKysrKystLS0tLS0tCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgICAgfCAgIDMgKwo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3BjaS5jICAgICAgICAgIHwgICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RldmljZV9pbmZvLmMgfCAgOTMgKysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uaCB8ICAyNyArKysrLQo+ICA2IGZpbGVzIGNo YW5nZWQsIDIxNCBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYwo+IGluZGV4IGYxMzM0ZjVkNGVhZC4uNzQ3MzRkNzY2MWU1IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5jCj4gQEAgLTg2OCw2ICs4NjgsOCBAQCBzdGF0aWMgaW50IGk5MTVf ZHJpdmVyX2luaXRfZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJ aWYgKGk5MTVfaW5qZWN0X2xvYWRfZmFpbHVyZSgpKQo+ICAJCXJldHVybiAtRU5PREVWOwo+ICAK PiArCWludGVsX2RldmljZV9pbmZvX3N1YnBsYXRmb3JtX2luaXQoZGV2X3ByaXYpOwo+ICsKPiAg CXNwaW5fbG9ja19pbml0KCZkZXZfcHJpdi0+aXJxX2xvY2spOwo+ICAJc3Bpbl9sb2NrX2luaXQo JmRldl9wcml2LT5ncHVfZXJyb3IubG9jayk7Cj4gIAltdXRleF9pbml0KCZkZXZfcHJpdi0+YmFj a2xpZ2h0X2xvY2spOwo+IEBAIC0xNzE4LDEwICsxNzIwLDEyIEBAIHN0YXRpYyB2b2lkIGk5MTVf d2VsY29tZV9tZXNzYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlp ZiAoZHJtX2RlYnVnICYgRFJNX1VUX0RSSVZFUikgewo+ICAJCXN0cnVjdCBkcm1fcHJpbnRlciBw ID0gZHJtX2RlYnVnX3ByaW50ZXIoImk5MTUgZGV2aWNlIGluZm86Iik7Cj4gIAo+IC0JCWRybV9w cmludGYoJnAsICJwY2lpZD0weCUwNHggcmV2PTB4JTAyeCBwbGF0Zm9ybT0lcyBnZW49JWlcbiIs Cj4gKwkJZHJtX3ByaW50ZigmcCwgInBjaWlkPTB4JTA0eCByZXY9MHglMDJ4IHBsYXRmb3JtPSVz IChzdWJwbGF0Zm9ybT0weCV4KSBnZW49JWlcbiIsCj4gIAkJCSAgIElOVEVMX0RFVklEKGRldl9w cml2KSwKPiAgCQkJICAgSU5URUxfUkVWSUQoZGV2X3ByaXYpLAo+ICAJCQkgICBpbnRlbF9wbGF0 Zm9ybV9uYW1lKElOVEVMX0lORk8oZGV2X3ByaXYpLT5wbGF0Zm9ybSksCj4gKwkJCSAgIGludGVs X3N1YnBsYXRmb3JtKFJVTlRJTUVfSU5GTyhkZXZfcHJpdiksCj4gKwkJCQkJICAgICBJTlRFTF9J TkZPKGRldl9wcml2KS0+cGxhdGZvcm0pLAo+ICAJCQkgICBJTlRFTF9HRU4oZGV2X3ByaXYpKTsK PiAgCj4gIAkJaW50ZWxfZGV2aWNlX2luZm9fZHVtcF9mbGFncyhJTlRFTF9JTkZPKGRldl9wcml2 KSwgJnApOwo+IEBAIC0xNzY0LDggKzE3NjgsNiBAQCBpOTE1X2RyaXZlcl9jcmVhdGUoc3RydWN0 IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpCj4gIAltZW1j cHkoZGV2aWNlX2luZm8sIG1hdGNoX2luZm8sIHNpemVvZigqZGV2aWNlX2luZm8pKTsKPiAgCVJV TlRJTUVfSU5GTyhpOTE1KS0+ZGV2aWNlX2lkID0gcGRldi0+ZGV2aWNlOwo+ICAKPiAtCUJVSUxE X0JVR19PTihJTlRFTF9NQVhfUExBVEZPUk1TID4KPiAtCQkgICAgIEJJVFNfUEVSX1RZUEUoZGV2 aWNlX2luZm8tPnBsYXRmb3JtX21hc2spKTsKPiAgCUJVR19PTihkZXZpY2VfaW5mby0+Z2VuID4g QklUU19QRVJfVFlQRShkZXZpY2VfaW5mby0+Z2VuX21hc2spKTsKPiAgCj4gIAlyZXR1cm4gaTkx NTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCA5ZDNjYWI5NDA2ZTEuLmI3ZDNmM2E0 NWVkOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0yMjk4LDcgKzIyOTgsNjcg QEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgaTkxNV9zZ19zZWdtZW50X3NpemUodm9pZCkK PiAgI2RlZmluZSBJU19SRVZJRChwLCBzaW5jZSwgdW50aWwpIFwKPiAgCShJTlRFTF9SRVZJRChw KSA+PSAoc2luY2UpICYmIElOVEVMX1JFVklEKHApIDw9ICh1bnRpbCkpCj4gIAo+IC0jZGVmaW5l IElTX1BMQVRGT1JNKGRldl9wcml2LCBwKSAoSU5URUxfSU5GTyhkZXZfcHJpdiktPnBsYXRmb3Jt X21hc2sgJiBCSVQocCkpCj4gK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgaW50Cj4g K19fcGxhdGZvcm1fbWFza19pbmRleChjb25zdCBzdHJ1Y3QgaW50ZWxfcnVudGltZV9pbmZvICpp bmZvLAo+ICsJCSAgICAgIGVudW0gaW50ZWxfcGxhdGZvcm0gcCkKPiArewo+ICsJY29uc3QgdW5z aWduZWQgaW50IHBiaXRzID0KPiArCQlCSVRTX1BFUl9UWVBFKGluZm8tPnBsYXRmb3JtX21hc2tb MF0pIC0gSU5URUxfU1VCUExBVEZPUk1fQklUUzsKPiArCj4gKwkvKiBFeHBhbmQgdGhlIHBsYXRm b3JtX21hc2sgYXJyYXkgaWYgdGhpcyBmYWlscy4gKi8KPiArCUJVSUxEX0JVR19PTihJTlRFTF9N QVhfUExBVEZPUk1TID4KPiArCQkgICAgIHBiaXRzICogQVJSQVlfU0laRShpbmZvLT5wbGF0Zm9y bV9tYXNrKSk7Cj4gKwo+ICsJcmV0dXJuIHAgLyBwYml0czsKPiArfQo+ICsKPiArc3RhdGljIF9f YWx3YXlzX2lubGluZSB1bnNpZ25lZCBpbnQKPiArX19wbGF0Zm9ybV9tYXNrX2JpdChjb25zdCBz dHJ1Y3QgaW50ZWxfcnVudGltZV9pbmZvICppbmZvLAo+ICsJCSAgICBlbnVtIGludGVsX3BsYXRm b3JtIHApCj4gK3sKPiArCWNvbnN0IHVuc2lnbmVkIGludCBwYml0cyA9Cj4gKwkJQklUU19QRVJf VFlQRShpbmZvLT5wbGF0Zm9ybV9tYXNrWzBdKSAtIElOVEVMX1NVQlBMQVRGT1JNX0JJVFM7Cj4g Kwo+ICsJcmV0dXJuIHAgJSBwYml0cyArIElOVEVMX1NVQlBMQVRGT1JNX0JJVFM7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbmxpbmUgdTMyCj4gK2ludGVsX3N1YnBsYXRmb3JtKGNvbnN0IHN0cnVjdCBp bnRlbF9ydW50aW1lX2luZm8gKmluZm8sIGVudW0gaW50ZWxfcGxhdGZvcm0gcCkKPiArewo+ICsJ Y29uc3QgdW5zaWduZWQgaW50IHBpID0gX19wbGF0Zm9ybV9tYXNrX2luZGV4KGluZm8sIHApOwo+ ICsKPiArCXJldHVybiBpbmZvLT5wbGF0Zm9ybV9tYXNrW3BpXSAmIElOVEVMX1NVQlBMQVRGT1JN X0JJVFM7Cj4gK30KPiArCj4gK3N0YXRpYyBfX2Fsd2F5c19pbmxpbmUgYm9vbAo+ICtJU19QTEFU Rk9STShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgZW51bSBpbnRlbF9wbGF0 Zm9ybSBwKQo+ICt7Cj4gKwljb25zdCBzdHJ1Y3QgaW50ZWxfcnVudGltZV9pbmZvICppbmZvID0g UlVOVElNRV9JTkZPKGk5MTUpOwo+ICsJY29uc3QgdW5zaWduZWQgaW50IHBpID0gX19wbGF0Zm9y bV9tYXNrX2luZGV4KGluZm8sIHApOwo+ICsJY29uc3QgdW5zaWduZWQgaW50IHBiID0gX19wbGF0 Zm9ybV9tYXNrX2JpdChpbmZvLCBwKTsKPiArCj4gKwlCVUlMRF9CVUdfT04oIV9fYnVpbHRpbl9j b25zdGFudF9wKHApKTsKPiArCj4gKwlyZXR1cm4gaW5mby0+cGxhdGZvcm1fbWFza1twaV0gJiBC SVQocGIpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wKPiArSVNfU1VC UExBVEZPUk0oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gKwkgICAgICAg ZW51bSBpbnRlbF9wbGF0Zm9ybSBwLCB1bnNpZ25lZCBpbnQgcykKPiArewo+ICsJY29uc3Qgc3Ry dWN0IGludGVsX3J1bnRpbWVfaW5mbyAqaW5mbyA9IFJVTlRJTUVfSU5GTyhpOTE1KTsKPiArCWNv bnN0IHVuc2lnbmVkIGludCBwaSA9IF9fcGxhdGZvcm1fbWFza19pbmRleChpbmZvLCBwKTsKPiAr CWNvbnN0IHVuc2lnbmVkIGludCBwYiA9IF9fcGxhdGZvcm1fbWFza19iaXQoaW5mbywgcCk7Cj4g Kwljb25zdCB1bnNpZ25lZCBpbnQgbXNiID0gQklUU19QRVJfVFlQRShpbmZvLT5wbGF0Zm9ybV9t YXNrWzBdKSAtIDE7Cj4gKwljb25zdCB1MzIgbWFzayA9IGluZm8tPnBsYXRmb3JtX21hc2tbcGld Owo+ICsKPiArCUJVSUxEX0JVR19PTighX19idWlsdGluX2NvbnN0YW50X3AocCkpOwo+ICsJQlVJ TERfQlVHX09OKCFfX2J1aWx0aW5fY29uc3RhbnRfcChzKSk7Cj4gKwlCVUlMRF9CVUdfT04oKHMp ID49IElOVEVMX1NVQlBMQVRGT1JNX0JJVFMpOwo+ICsKPiArCS8qIFNoaWZ0IGFuZCB0ZXN0IG9u IHRoZSBNU0IgcG9zaXRpb24gc28gc2lnbiBmbGFnIGNhbiBiZSB1c2VkLiAqLwo+ICsJcmV0dXJu ICgobWFzayA8PCAobXNiIC0gcGIpKSAmIChtYXNrIDw8IChtc2IgLSBzKSkpICYgQklUKG1zYik7 Cj4gK30KCkh1bSwgSSB3b25kZXIgaWYgdGhlIF9fYnVpbHRpbl9jb25zdGFudF9wKCkncyBpbiBh biBpbmxpbmUgZnVuY3Rpb24gYXJlCmdvaW5nIHRvIGJlIGEgcHJvYmxlbSBmb3IgY2xhbmcuCgo+ ICAKPiAgI2RlZmluZSBJU19NT0JJTEUoZGV2X3ByaXYpCShJTlRFTF9JTkZPKGRldl9wcml2KS0+ aXNfbW9iaWxlKQo+ICAKPiBAQCAtMjMzNyw0MyArMjM5NywzMiBAQCBzdGF0aWMgaW5saW5lIHVu c2lnbmVkIGludCBpOTE1X3NnX3NlZ21lbnRfc2l6ZSh2b2lkKQo+ICAjZGVmaW5lIElTX0VMS0hB UlRMQUtFKGRldl9wcml2KQlJU19QTEFURk9STShkZXZfcHJpdiwgSU5URUxfRUxLSEFSVExBS0Up Cj4gICNkZWZpbmUgSVNfSFNXX0VBUkxZX1NEVihkZXZfcHJpdikgKElTX0hBU1dFTEwoZGV2X3By aXYpICYmIFwKPiAgCQkJCSAgICAoSU5URUxfREVWSUQoZGV2X3ByaXYpICYgMHhGRjAwKSA9PSAw eDBDMDApCj4gLSNkZWZpbmUgSVNfQkRXX1VMVChkZXZfcHJpdikJKElTX0JST0FEV0VMTChkZXZf cHJpdikgJiYgXAo+IC0JCQkJICgoSU5URUxfREVWSUQoZGV2X3ByaXYpICYgMHhmKSA9PSAweDYg fHwJXAo+IC0JCQkJIChJTlRFTF9ERVZJRChkZXZfcHJpdikgJiAweGYpID09IDB4YiB8fAlcCj4g LQkJCQkgKElOVEVMX0RFVklEKGRldl9wcml2KSAmIDB4ZikgPT0gMHhlKSkKPiAtLyogVUxYIG1h Y2hpbmVzIGFyZSBhbHNvIGNvbnNpZGVyZWQgVUxULiAqLwo+IC0jZGVmaW5lIElTX0JEV19VTFgo ZGV2X3ByaXYpCShJU19CUk9BRFdFTEwoZGV2X3ByaXYpICYmIFwKPiAtCQkJCSAoSU5URUxfREVW SUQoZGV2X3ByaXYpICYgMHhmKSA9PSAweGUpCj4gKyNkZWZpbmUgSVNfQkRXX1VMVChkZXZfcHJp dikgXAo+ICsJSVNfU1VCUExBVEZPUk0oZGV2X3ByaXYsIElOVEVMX0JST0FEV0VMTCwgSU5URUxf U1VCUExBVEZPUk1fVUxUKQo+ICsjZGVmaW5lIElTX0JEV19VTFgoZGV2X3ByaXYpIFwKPiArCUlT X1NVQlBMQVRGT1JNKGRldl9wcml2LCBJTlRFTF9CUk9BRFdFTEwsIElOVEVMX1NVQlBMQVRGT1JN X1VMWCkKPiAgI2RlZmluZSBJU19CRFdfR1QzKGRldl9wcml2KQkoSVNfQlJPQURXRUxMKGRldl9w cml2KSAmJiBcCj4gIAkJCQkgSU5URUxfSU5GTyhkZXZfcHJpdiktPmd0ID09IDMpCj4gLSNkZWZp bmUgSVNfSFNXX1VMVChkZXZfcHJpdikJKElTX0hBU1dFTEwoZGV2X3ByaXYpICYmIFwKPiAtCQkJ CSAoSU5URUxfREVWSUQoZGV2X3ByaXYpICYgMHhGRjAwKSA9PSAweDBBMDApCj4gKyNkZWZpbmUg SVNfSFNXX1VMVChkZXZfcHJpdikgXAo+ICsJSVNfU1VCUExBVEZPUk0oZGV2X3ByaXYsIElOVEVM X0hBU1dFTEwsIElOVEVMX1NVQlBMQVRGT1JNX1VMVCkKPiAgI2RlZmluZSBJU19IU1dfR1QzKGRl dl9wcml2KQkoSVNfSEFTV0VMTChkZXZfcHJpdikgJiYgXAo+ICAJCQkJIElOVEVMX0lORk8oZGV2 X3ByaXYpLT5ndCA9PSAzKQo+ICAjZGVmaW5lIElTX0hTV19HVDEoZGV2X3ByaXYpCShJU19IQVNX RUxMKGRldl9wcml2KSAmJiBcCj4gIAkJCQkgSU5URUxfSU5GTyhkZXZfcHJpdiktPmd0ID09IDEp Cj4gIC8qIFVMWCBtYWNoaW5lcyBhcmUgYWxzbyBjb25zaWRlcmVkIFVMVC4gKi8KPiAtI2RlZmlu ZSBJU19IU1dfVUxYKGRldl9wcml2KQkoSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4MEEwRSB8 fCBcCj4gLQkJCQkgSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4MEExRSkKPiAtI2RlZmluZSBJ U19TS0xfVUxUKGRldl9wcml2KQkoSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4MTkwNiB8fCBc Cj4gLQkJCQkgSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4MTkxMyB8fCBcCj4gLQkJCQkgSU5U RUxfREVWSUQoZGV2X3ByaXYpID09IDB4MTkxNiB8fCBcCj4gLQkJCQkgSU5URUxfREVWSUQoZGV2 X3ByaXYpID09IDB4MTkyMSB8fCBcCj4gLQkJCQkgSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4 MTkyNikKPiAtI2RlZmluZSBJU19TS0xfVUxYKGRldl9wcml2KQkoSU5URUxfREVWSUQoZGV2X3By aXYpID09IDB4MTkwRSB8fCBcCj4gLQkJCQkgSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4MTkx NSB8fCBcCj4gLQkJCQkgSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4MTkxRSkKPiAtI2RlZmlu ZSBJU19LQkxfVUxUKGRldl9wcml2KQkoSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4NTkwNiB8 fCBcCj4gLQkJCQkgSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4NTkxMyB8fCBcCj4gLQkJCQkg SU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4NTkxNiB8fCBcCj4gLQkJCQkgSU5URUxfREVWSUQo ZGV2X3ByaXYpID09IDB4NTkyMSB8fCBcCj4gLQkJCQkgSU5URUxfREVWSUQoZGV2X3ByaXYpID09 IDB4NTkyNikKPiAtI2RlZmluZSBJU19LQkxfVUxYKGRldl9wcml2KQkoSU5URUxfREVWSUQoZGV2 X3ByaXYpID09IDB4NTkwRSB8fCBcCj4gLQkJCQkgSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4 NTkxNSB8fCBcCj4gLQkJCQkgSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4NTkxRSkKPiAtI2Rl ZmluZSBJU19BTUxfVUxYKGRldl9wcml2KQkoSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4NTkx QyB8fCBcCj4gLQkJCQkgSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4ODdDMCB8fCBcCj4gLQkJ CQkgSU5URUxfREVWSUQoZGV2X3ByaXYpID09IDB4ODdDQSkKPiArI2RlZmluZSBJU19IU1dfVUxY KGRldl9wcml2KSBcCj4gKwlJU19TVUJQTEFURk9STShkZXZfcHJpdiwgSU5URUxfSEFTV0VMTCwg SU5URUxfU1VCUExBVEZPUk1fVUxYKQo+ICsjZGVmaW5lIElTX1NLTF9VTFQoZGV2X3ByaXYpIFwK PiArCUlTX1NVQlBMQVRGT1JNKGRldl9wcml2LCBJTlRFTF9TS1lMQUtFLCBJTlRFTF9TVUJQTEFU Rk9STV9VTFQpCj4gKyNkZWZpbmUgSVNfU0tMX1VMWChkZXZfcHJpdikgXAo+ICsJSVNfU1VCUExB VEZPUk0oZGV2X3ByaXYsIElOVEVMX1NLWUxBS0UsIElOVEVMX1NVQlBMQVRGT1JNX1VMWCkKPiAr I2RlZmluZSBJU19LQkxfVUxUKGRldl9wcml2KSBcCj4gKwlJU19TVUJQTEFURk9STShkZXZfcHJp diwgSU5URUxfS0FCWUxBS0UsIElOVEVMX1NVQlBMQVRGT1JNX1VMVCkKPiArI2RlZmluZSBJU19L QkxfVUxYKGRldl9wcml2KSBcCj4gKwlJU19TVUJQTEFURk9STShkZXZfcHJpdiwgSU5URUxfS0FC WUxBS0UsIElOVEVMX1NVQlBMQVRGT1JNX1VMWCkKPiArI2RlZmluZSBJU19BTUxfVUxYKGRldl9w cml2KSBcCj4gKwkoSVNfU1VCUExBVEZPUk0oZGV2X3ByaXYsIElOVEVMX0tBQllMQUtFLCBJTlRF TF9TVUJQTEFURk9STV9BTUwpIHx8IFwKPiArCSBJU19TVUJQTEFURk9STShkZXZfcHJpdiwgSU5U RUxfQ09GRkVFTEFLRSwgSU5URUxfU1VCUExBVEZPUk1fQU1MKSkKPiAgI2RlZmluZSBJU19TS0xf R1QyKGRldl9wcml2KQkoSVNfU0tZTEFLRShkZXZfcHJpdikgJiYgXAo+ICAJCQkJIElOVEVMX0lO Rk8oZGV2X3ByaXYpLT5ndCA9PSAyKQo+ICAjZGVmaW5lIElTX1NLTF9HVDMoZGV2X3ByaXYpCShJ U19TS1lMQUtFKGRldl9wcml2KSAmJiBcCj4gQEAgLTIzODQsMTYgKzI0MzMsMTYgQEAgc3RhdGlj IGlubGluZSB1bnNpZ25lZCBpbnQgaTkxNV9zZ19zZWdtZW50X3NpemUodm9pZCkKPiAgCQkJCSBJ TlRFTF9JTkZPKGRldl9wcml2KS0+Z3QgPT0gMikKPiAgI2RlZmluZSBJU19LQkxfR1QzKGRldl9w cml2KQkoSVNfS0FCWUxBS0UoZGV2X3ByaXYpICYmIFwKPiAgCQkJCSBJTlRFTF9JTkZPKGRldl9w cml2KS0+Z3QgPT0gMykKPiAtI2RlZmluZSBJU19DRkxfVUxUKGRldl9wcml2KQkoSVNfQ09GRkVF TEFLRShkZXZfcHJpdikgJiYgXAo+IC0JCQkJIChJTlRFTF9ERVZJRChkZXZfcHJpdikgJiAweDAw RjApID09IDB4MDBBMCkKPiArI2RlZmluZSBJU19DRkxfVUxUKGRldl9wcml2KSBcCj4gKwlJU19T VUJQTEFURk9STShkZXZfcHJpdiwgSU5URUxfQ09GRkVFTEFLRSwgSU5URUxfU1VCUExBVEZPUk1f VUxUKQo+ICAjZGVmaW5lIElTX0NGTF9HVDIoZGV2X3ByaXYpCShJU19DT0ZGRUVMQUtFKGRldl9w cml2KSAmJiBcCj4gIAkJCQkgSU5URUxfSU5GTyhkZXZfcHJpdiktPmd0ID09IDIpCj4gICNkZWZp bmUgSVNfQ0ZMX0dUMyhkZXZfcHJpdikJKElTX0NPRkZFRUxBS0UoZGV2X3ByaXYpICYmIFwKPiAg CQkJCSBJTlRFTF9JTkZPKGRldl9wcml2KS0+Z3QgPT0gMykKPiAtI2RlZmluZSBJU19DTkxfV0lU SF9QT1JUX0YoZGV2X3ByaXYpICAgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpICYmIFwKPiAtCQkJ CQkoSU5URUxfREVWSUQoZGV2X3ByaXYpICYgMHgwMDA0KSA9PSAweDAwMDQpCj4gLSNkZWZpbmUg SVNfSUNMX1dJVEhfUE9SVF9GKGRldl9wcml2KSAgIChJU19JQ0VMQUtFKGRldl9wcml2KSAmJiBc Cj4gLQkJCQkJSU5URUxfREVWSUQoZGV2X3ByaXYpICE9IDB4OEE1MSkKPiArI2RlZmluZSBJU19D TkxfV0lUSF9QT1JUX0YoZGV2X3ByaXYpIFwKPiArCUlTX1NVQlBMQVRGT1JNKGRldl9wcml2LCBJ TlRFTF9DQU5OT05MQUtFLCBJTlRFTF9TVUJQTEFURk9STV9QT1JURikKPiArI2RlZmluZSBJU19J Q0xfV0lUSF9QT1JUX0YoZGV2X3ByaXYpIFwKPiArCUlTX1NVQlBMQVRGT1JNKGRldl9wcml2LCBJ TlRFTF9JQ0VMQUtFLCBJTlRFTF9TVUJQTEFURk9STV9QT1JURikKPiAgCj4gICNkZWZpbmUgSVNf QUxQSEFfU1VQUE9SVChpbnRlbF9pbmZvKSAoKGludGVsX2luZm8pLT5pc19hbHBoYV9zdXBwb3J0 KQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3Iu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiBpbmRleCBhMmE5OGNj ZGE0MjEuLjgxYTI3YjgwODI3MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dwdV9lcnJvci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJy b3IuYwo+IEBAIC02NzcsNiArNjc3LDkgQEAgc3RhdGljIHZvaWQgX19lcnJfcHJpbnRfdG9fc2ds KHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKm0sCj4gIAllcnJfcHJpbnRmKG0sICJS ZXNldCBjb3VudDogJXVcbiIsIGVycm9yLT5yZXNldF9jb3VudCk7Cj4gIAllcnJfcHJpbnRmKG0s ICJTdXNwZW5kIGNvdW50OiAldVxuIiwgZXJyb3ItPnN1c3BlbmRfY291bnQpOwo+ICAJZXJyX3By aW50ZihtLCAiUGxhdGZvcm06ICVzXG4iLCBpbnRlbF9wbGF0Zm9ybV9uYW1lKGVycm9yLT5kZXZp Y2VfaW5mby5wbGF0Zm9ybSkpOwo+ICsJZXJyX3ByaW50ZihtLCAiU3VicGxhdGZvcm06IDB4JXhc biIsCj4gKwkJICAgaW50ZWxfc3VicGxhdGZvcm0oJmVycm9yLT5ydW50aW1lX2luZm8sCj4gKwkJ CQkgICAgIGVycm9yLT5kZXZpY2VfaW5mby5wbGF0Zm9ybSkpOwo+ICAJZXJyX3ByaW50X3BjaWlk KG0sIG0tPmk5MTUpOwo+ICAKPiAgCWVycl9wcmludGYobSwgIklPTU1VIGVuYWJsZWQ/OiAlZFxu IiwgZXJyb3ItPmlvbW11KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9wY2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMKPiBpbmRleCA3MTZmMmY5 NWM1N2QuLjM5MjUxNTg2MzQ5YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3BjaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYwo+IEBAIC0z Miw3ICszMiw3IEBACj4gICNpbmNsdWRlICJpOTE1X2dsb2JhbHMuaCIKPiAgI2luY2x1ZGUgImk5 MTVfc2VsZnRlc3QuaCIKPiAgCj4gLSNkZWZpbmUgUExBVEZPUk0oeCkgLnBsYXRmb3JtID0gKHgp LCAucGxhdGZvcm1fbWFzayA9IEJJVCh4KQo+ICsjZGVmaW5lIFBMQVRGT1JNKHgpIC5wbGF0Zm9y bSA9ICh4KQo+ICAjZGVmaW5lIEdFTih4KSAuZ2VuID0gKHgpLCAuZ2VuX21hc2sgPSBCSVQoKHgp IC0gMSkKPiAgCj4gICNkZWZpbmUgSTg0NV9QSVBFX09GRlNFVFMgXAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYwo+IGluZGV4IGUwZjVlMDIzMWQwNC4uMGVkNDlkMDMy YzAwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZv LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCj4gQEAg LTcxNCw2ICs3MTQsOTkgQEAgc3RhdGljIHUzMiByZWFkX3RpbWVzdGFtcF9mcmVxdWVuY3koc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4g KyN1bmRlZiBJTlRFTF9WR0FfREVWSUNFCj4gKyNkZWZpbmUgSU5URUxfVkdBX0RFVklDRShpZCwg aW5mbykgKGlkKQo+ICsKPiArc3RhdGljIGNvbnN0IHUxNiBzdWJwbGF0Zm9ybV91bHRfaWRzW10g PSB7Cj4gKwlJTlRFTF9IU1dfVUxUX0dUMV9JRFMoMCksCj4gKwlJTlRFTF9IU1dfVUxUX0dUMl9J RFMoMCksCj4gKwlJTlRFTF9IU1dfVUxUX0dUM19JRFMoMCksCj4gKwlJTlRFTF9CRFdfVUxUX0dU MV9JRFMoMCksCj4gKwlJTlRFTF9CRFdfVUxUX0dUMl9JRFMoMCksCj4gKwlJTlRFTF9CRFdfVUxU X0dUM19JRFMoMCksCj4gKwlJTlRFTF9CRFdfVUxUX1JTVkRfSURTKDApLAo+ICsJSU5URUxfU0tM X1VMVF9HVDFfSURTKDApLAo+ICsJSU5URUxfU0tMX1VMVF9HVDJfSURTKDApLAo+ICsJSU5URUxf U0tMX1VMVF9HVDNfSURTKDApLAo+ICsJSU5URUxfS0JMX1VMVF9HVDFfSURTKDApLAo+ICsJSU5U RUxfS0JMX1VMVF9HVDJfSURTKDApLAo+ICsJSU5URUxfS0JMX1VMVF9HVDNfSURTKDApLAo+ICsJ SU5URUxfQ0ZMX1VfR1QyX0lEUygwKSwKPiArCUlOVEVMX0NGTF9VX0dUM19JRFMoMCksCj4gKwlJ TlRFTF9XSExfVV9HVDFfSURTKDApLAo+ICsJSU5URUxfV0hMX1VfR1QyX0lEUygwKSwKPiArCUlO VEVMX1dITF9VX0dUM19JRFMoMCkKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCB1MTYgc3VicGxh dGZvcm1fdWx4X2lkc1tdID0gewo+ICsJSU5URUxfSFNXX1VMWF9HVDFfSURTKDApLAo+ICsJSU5U RUxfSFNXX1VMWF9HVDJfSURTKDApLAo+ICsJSU5URUxfQkRXX1VMWF9HVDFfSURTKDApLAo+ICsJ SU5URUxfQkRXX1VMWF9HVDJfSURTKDApLAo+ICsJSU5URUxfQkRXX1VMWF9HVDNfSURTKDApLAo+ ICsJSU5URUxfQkRXX1VMWF9SU1ZEX0lEUygwKSwKPiArCUlOVEVMX1NLTF9VTFhfR1QxX0lEUygw KSwKPiArCUlOVEVMX1NLTF9VTFhfR1QyX0lEUygwKSwKPiArCUlOVEVMX0tCTF9VTFhfR1QxX0lE UygwKSwKPiArCUlOVEVMX0tCTF9VTFhfR1QyX0lEUygwKQo+ICt9Owo+ICsKPiArc3RhdGljIGNv bnN0IHUxNiBzdWJwbGF0Zm9ybV9hbWxfaWRzW10gPSB7Cj4gKwlJTlRFTF9BTUxfS0JMX0dUMl9J RFMoMCksCj4gKwlJTlRFTF9BTUxfQ0ZMX0dUMl9JRFMoMCkKPiArfTsKPiArCj4gK3N0YXRpYyBj b25zdCB1MTYgc3VicGxhdGZvcm1fcG9ydGZfaWRzW10gPSB7Cj4gKwlJTlRFTF9DTkxfUE9SVF9G X0lEUygwKSwKPiArCUlOVEVMX0lDTF9QT1JUX0ZfSURTKDApCj4gK307Cj4gKwo+ICtzdGF0aWMg Ym9vbCBmaW5kX2RldmlkKHUxNiBpZCwgY29uc3QgdTE2ICpwLCB1bnNpZ25lZCBpbnQgbnVtKQo+ ICt7Cj4gKwlmb3IgKDsgbnVtOyBudW0tLSwgcCsrKSB7Cj4gKwkJaWYgKCpwID09IGlkKQo+ICsJ CQlyZXR1cm4gdHJ1ZTsKPiArCX0KCldoeSBzdWNoIGEgY29udm9sdXRlZCB3YXkgb2YgZG9pbmcg d2hhdCdzIHN1cHBvc2VkIHRvIGJlIGEgc2ltcGxlIHRoaW5nPwpJIGhhZCB0byBzdG9wIGF0IHRo YXQgYW5kIHdvbmRlciB3aGF0J3MgZ29pbmcgb24uIFdoaWxlIHRoaXMgd291bGQndmUKYmVlbiBv YnZpb3VzIGFuZCByZXZpZXdlZCB3aXRoIGEgMi1zZWNvbmQgZ2xhbmNlOgoKCWludCBpOwoKICAg ICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtOyBpKyspCiAgICAgICAgCWlmIChpZCA9PSBwW2ldKQog ICAgICAgICAgICAgICAgCXJldHVybiB0cnVlOwoKVGhlIGFsdGVybmF0aXZlIGlzIHplcm8tdGVy bWluYXRpbmcgdGhlIGFycmF5czoKCglmb3IgKDsgKnA7IHArKykKICAgICAgICAJaWYgKGlkID09 ICpwKQogICAgICAgICAgICAgICAgCXJldHVybiB0cnVlOwoKPiArCj4gKwlyZXR1cm4gZmFsc2U7 Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfZGV2aWNlX2luZm9fc3VicGxhdGZvcm1faW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ICsJY29uc3Qgc3RydWN0IGludGVsX2Rl dmljZV9pbmZvICppbmZvID0gSU5URUxfSU5GTyhpOTE1KTsKPiArCWNvbnN0IHN0cnVjdCBpbnRl bF9ydW50aW1lX2luZm8gKnJpbmZvID0gUlVOVElNRV9JTkZPKGk5MTUpOwo+ICsJY29uc3QgdW5z aWduZWQgaW50IHBpID0gX19wbGF0Zm9ybV9tYXNrX2luZGV4KHJpbmZvLCBpbmZvLT5wbGF0Zm9y bSk7Cj4gKwljb25zdCB1bnNpZ25lZCBpbnQgcGIgPSBfX3BsYXRmb3JtX21hc2tfYml0KHJpbmZv LCBpbmZvLT5wbGF0Zm9ybSk7Cj4gKwl1MTYgZGV2aWQgPSBJTlRFTF9ERVZJRChpOTE1KTsKPiAr CXUzMiBtYXNrOwo+ICsKPiArCS8qIE1ha2Ugc3VyZSBJU188cGxhdGZvcm0+IGNoZWNrcyBhcmUg d29ya2luZy4gKi8KPiArCVJVTlRJTUVfSU5GTyhpOTE1KS0+cGxhdGZvcm1fbWFza1twaV0gPSBC SVQocGIpOwo+ICsKPiArCS8qIEZpbmQgYW5kIG1hcmsgc3VicGxhdGZvcm0gYml0cyBiYXNlZCBv biB0aGUgUENJIGRldmljZSBpZC4gKi8KPiArCWlmIChmaW5kX2RldmlkKGRldmlkLCBzdWJwbGF0 Zm9ybV91bHRfaWRzLAo+ICsJCSAgICAgICBBUlJBWV9TSVpFKHN1YnBsYXRmb3JtX3VsdF9pZHMp KSkgewo+ICsJCW1hc2sgPSBCSVQoSU5URUxfU1VCUExBVEZPUk1fVUxUKTsKPiArCX0gZWxzZSBp ZiAoZmluZF9kZXZpZChkZXZpZCwgc3VicGxhdGZvcm1fdWx4X2lkcywKPiArCQkJICAgICAgQVJS QVlfU0laRShzdWJwbGF0Zm9ybV91bHhfaWRzKSkpIHsKPiArCQltYXNrID0gQklUKElOVEVMX1NV QlBMQVRGT1JNX1VMWCk7Cj4gKwkJaWYgKElTX0hBU1dFTEwoaTkxNSkgfHwgSVNfQlJPQURXRUxM KGk5MTUpKSB7Cj4gKwkJCS8qIFVMWCBtYWNoaW5lcyBhcmUgYWxzbyBjb25zaWRlcmVkIFVMVC4g Ki8KPiArCQkJbWFzayB8PSBCSVQoSU5URUxfU1VCUExBVEZPUk1fVUxUKTsKPiArCQl9CgoqY3Jp bmdlKiBhdCBzcGVjaWFsIGNhc2luZyBoc3cvYmR3IHVseCBtZWFucyB1bHQgaGVyZS4gQ2FuIGJl IGZpZ3VyZWQKb3V0IGxhdGVyIHRob3VnaCBpZiBuZWVkZWQuCgpBbnl3YXksCgpBY2tlZC1ieTog SmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4KCgoKQlIsCkphbmkuCgo+ICsJfSBl bHNlIGlmIChmaW5kX2RldmlkKGRldmlkLCBzdWJwbGF0Zm9ybV9hbWxfaWRzLAo+ICsJCQkgICAg ICBBUlJBWV9TSVpFKHN1YnBsYXRmb3JtX2FtbF9pZHMpKSkgewo+ICsJCW1hc2sgPSBCSVQoSU5U RUxfU1VCUExBVEZPUk1fQU1MKTsKPiArCX0gZWxzZSBpZiAoZmluZF9kZXZpZChkZXZpZCwgc3Vi cGxhdGZvcm1fcG9ydGZfaWRzLAo+ICsJCQkgICAgICBBUlJBWV9TSVpFKHN1YnBsYXRmb3JtX3Bv cnRmX2lkcykpKSB7Cj4gKwkJbWFzayA9IEJJVChJTlRFTF9TVUJQTEFURk9STV9QT1JURik7Cj4g Kwl9Cj4gKwo+ICsJR0VNX0JVR19PTihtYXNrICYgfklOVEVMX1NVQlBMQVRGT1JNX0JJVFMpOwo+ ICsKPiArCVJVTlRJTUVfSU5GTyhpOTE1KS0+cGxhdGZvcm1fbWFza1twaV0gfD0gbWFzazsKPiAr fQo+ICsKPiAgLyoqCj4gICAqIGludGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5pdCAtIGluaXRp YWxpemUgcnVudGltZSBpbmZvCj4gICAqIEBkZXZfcHJpdjogdGhlIGk5MTUgZGV2aWNlCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5oCj4gaW5kZXggN2UwNGI0ODI5YWJh Li42MTZlOWY3MDc4NzcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGV2aWNlX2luZm8uaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9p bmZvLmgKPiBAQCAtNzcsNiArNzcsMjEgQEAgZW51bSBpbnRlbF9wbGF0Zm9ybSB7Cj4gIAlJTlRF TF9NQVhfUExBVEZPUk1TCj4gIH07Cj4gIAo+ICsvKgo+ICsgKiBTdWJwbGF0Zm9ybSBiaXRzIHNo YXJlIHRoZSBzYW1lIG5hbWVzcGFjZSBwZXIgcGFyZW50IHBsYXRmb3JtLiBJbiBvdGhlciB3b3Jk cwo+ICsgKiBpdCBpcyBmaW5lIGZvciB0aGUgc2FtZSBiaXQgdG8gYmUgdXNlZCBvbiBtdWx0aXBs ZSBwYXJlbnQgcGxhdGZvcm1zLgo+ICsgKi8KPiArCj4gKyNkZWZpbmUgSU5URUxfU1VCUExBVEZP Uk1fQklUUyAoMykKPiArCj4gKy8qIEhTVy9CRFcvU0tML0tCTC9DRkwgKi8KPiArI2RlZmluZSBJ TlRFTF9TVUJQTEFURk9STV9VTFQJKDApCj4gKyNkZWZpbmUgSU5URUxfU1VCUExBVEZPUk1fVUxY CSgxKQo+ICsjZGVmaW5lIElOVEVMX1NVQlBMQVRGT1JNX0FNTAkoMikKPiArCj4gKy8qIENOTC9J Q0wgKi8KPiArI2RlZmluZSBJTlRFTF9TVUJQTEFURk9STV9QT1JURgkoMCkKPiArCj4gIGVudW0g aW50ZWxfcHBndHRfdHlwZSB7Cj4gIAlJTlRFTF9QUEdUVF9OT05FID0gSTkxNV9HRU1fUFBHVFRf Tk9ORSwKPiAgCUlOVEVMX1BQR1RUX0FMSUFTSU5HID0gSTkxNV9HRU1fUFBHVFRfQUxJQVNJTkcs Cj4gQEAgLTE2MCw3ICsxNzUsNiBAQCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gewo+ICAJaW50 ZWxfZW5naW5lX21hc2tfdCBlbmdpbmVfbWFzazsgLyogRW5naW5lcyBzdXBwb3J0ZWQgYnkgdGhl IEhXICovCj4gIAo+ICAJZW51bSBpbnRlbF9wbGF0Zm9ybSBwbGF0Zm9ybTsKPiAtCXUzMiBwbGF0 Zm9ybV9tYXNrOwo+ICAKPiAgCWVudW0gaW50ZWxfcHBndHRfdHlwZSBwcGd0dF90eXBlOwo+ICAJ dW5zaWduZWQgaW50IHBwZ3R0X3NpemU7IC8qIGxvZzIsIGUuZy4gMzEvMzIvNDggYml0cyAqLwo+ IEBAIC0xOTcsNiArMjExLDE2IEBAIHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyB7Cj4gIH07Cj4g IAo+ICBzdHJ1Y3QgaW50ZWxfcnVudGltZV9pbmZvIHsKPiArCS8qCj4gKwkgKiBQbGF0Zm9ybSBt YXNrIGlzIHVzZWQgZm9yIG9wdGltaXppbmcgb3ItZWQgSVNfUExBVEZPUk0gY2FsbHMgaW50bwo+ ICsJICogaW50byBzaW5nbGUgcnVudGltZSBjb25kaXRpb25hbHMsIGFuZCBhbHNvIHRvIHByb3Zp ZGUgZ3JvdW5kd29yawo+ICsJICogZm9yIGZ1dHVyZSBwZXIgcGxhdGZvcm0sIG9yIHBlciBTS1Ug YnVpbGQgb3B0aW1pemF0aW9ucy4KPiArCSAqCj4gKwkgKiBBcnJheSBjYW4gYmUgZXh0ZW5kZWQg d2hlbiBuZWNlc3NhcnkgaWYgdGhlIGNvcnJlc3BvbmRpbmcKPiArCSAqIEJVSUxEX0JVR19PTiBp cyBoaXQuCj4gKwkgKi8KPiArCXUzMiBwbGF0Zm9ybV9tYXNrWzJdOwo+ICsKPiAgCXUxNiBkZXZp Y2VfaWQ7Cj4gIAo+ICAJdTggbnVtX3Nwcml0ZXNbSTkxNV9NQVhfUElQRVNdOwo+IEBAIC0yNjcs NiArMjkxLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHNzZXVfc2V0X2V1cyhzdHJ1Y3Qgc3NldV9k ZXZfaW5mbyAqc3NldSwKPiAgCj4gIGNvbnN0IGNoYXIgKmludGVsX3BsYXRmb3JtX25hbWUoZW51 bSBpbnRlbF9wbGF0Zm9ybSBwbGF0Zm9ybSk7Cj4gIAo+ICt2b2lkIGludGVsX2RldmljZV9pbmZv X3N1YnBsYXRmb3JtX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAg dm9pZCBpbnRlbF9kZXZpY2VfaW5mb19ydW50aW1lX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KTsKPiAgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19kdW1wX2ZsYWdzKGNvbnN0 IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyAqaW5mbywKPiAgCQkJCSAgc3RydWN0IGRybV9wcmlu dGVyICpwKTsKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgR3JhcGhpY3MgQ2Vu dGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==