From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: Re: [PATCH 3/6] drm/i915/huc: Add HuC fw loading support Date: Tue, 28 Jun 2016 15:54:16 +0100 Message-ID: <57728F98.8020504@intel.com> References: <1466532685-5101-1-git-send-email-peter.antoine@intel.com> <1466532685-5101-4-git-send-email-peter.antoine@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id BA50B6E3BB for ; Tue, 28 Jun 2016 14:56:03 +0000 (UTC) In-Reply-To: <1466532685-5101-4-git-send-email-peter.antoine@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Peter Antoine , intel-gfx@lists.freedesktop.org Cc: sean.v.kelley@intel.com, lawrence.t.li@intel.com, rodrigo.vivi@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gMjEvMDYvMTYgMTk6MTEsIFBldGVyIEFudG9pbmUgd3JvdGU6Cj4gRnJvbTogQWxleCBEYWkg PHl1LmRhaUBpbnRlbC5jb20+Cj4KPiBUaGUgSHVDIGxvYWRpbmcgcHJvY2VzcyBpcyBzaW1pbGFy IHRvIEd1Qy4gVGhlIGludGVsX3VjX2Z3X2ZldGNoKCkKPiBpcyB1c2VkIGZvciBib3RoIGNhc2Vz Lgo+Cj4gSHVDIGxvYWRpbmcgbmVlZHMgdG8gYmUgYmVmb3JlIEd1QyBsb2FkaW5nLiBUaGUgV09Q Q00gc2V0dGluZyBtdXN0Cj4gYmUgZG9uZSBlYXJseSBiZWZvcmUgbG9hZGluZyBhbnkgb2YgdGhl bS4KPgo+IFNpZ25lZC1vZmYtYnk6IEFsZXggRGFpIDx5dS5kYWlAaW50ZWwuY29tPgo+IFNpZ25l ZC1vZmYtYnk6IFBldGVyIEFudG9pbmUgPHBldGVyLmFudG9pbmVAaW50ZWwuY29tPgo+IC0tLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgIHwgICAxICsKPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgICAgICAgICB8ICAgMyArCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgIDMgKwo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgIHwgIDEzICstCj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2d1Y19yZWcuaCAgICAgfCAgIDMgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZ3VjLmggICAgICAgIHwgICAxICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d1Y19sb2FkZXIuYyB8ICAxMSArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVj LmggICAgICAgIHwgIDQ0ICsrKysrKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVj X2xvYWRlci5jIHwgMjYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gICA5IGZp bGVzIGNoYW5nZWQsIDMzMSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKPiAgIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuaAo+ICAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYwo+Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUKPiBpbmRleCAyNzZhYmYxLi43Mzg0ZGIwIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvTWFrZWZpbGUKPiBAQCAtNDQsNiArNDQsNyBAQCBpOTE1LXkgKz0gaTkxNV9jbWRfcGFyc2Vy Lm8gXAo+Cj4gICAjIGdlbmVyYWwtcHVycG9zZSBtaWNyb2NvbnRyb2xsZXIgKEd1Qykgc3VwcG9y dAo+ICAgaTkxNS15ICs9IGludGVsX2d1Y19sb2FkZXIubyBcCj4gKwkgIGludGVsX2h1Y19sb2Fk ZXIubyBcCj4gICAJICBpOTE1X2d1Y19zdWJtaXNzaW9uLm8KPgo+ICAgIyBhdXRvZ2VuZXJhdGVk IG51bGwgcmVuZGVyIHN0YXRlCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZG1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4gaW5kZXggZTI4YzBk ZC4uYTQ0OWE1OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+IEBAIC01MDcsNiArNTA3 LDcgQEAgc3RhdGljIGludCBpOTE1X2xvYWRfbW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gICAJICogd29ya2luZyBpcnFzIGZvciBlLmcuIGdtYnVzIGFuZCBkcCBhdXggdHJh bnNmZXJzLiAqLwo+ICAgCWludGVsX21vZGVzZXRfaW5pdChkZXYpOwo+Cj4gKwlpbnRlbF9odWNf aW5pdChkZXYpOwo+ICAgCWludGVsX2d1Y19pbml0KGRldik7Cj4KPiAgIAlyZXQgPSBpOTE1X2dl bV9pbml0KGRldik7Cj4gQEAgLTUzMiw2ICs1MzMsNyBAQCBzdGF0aWMgaW50IGk5MTVfbG9hZF9t b2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIGNsZWFudXBfZ2VtOgo+ICAg CWk5MTVfZ2VtX2ZpbmkoZGV2KTsKPiAgIGNsZWFudXBfaXJxOgo+ICsJaW50ZWxfaHVjX2Zpbmko ZGV2KTsKPiAgIAlpbnRlbF9ndWNfZmluaShkZXYpOwo+ICAgCWRybV9pcnFfdW5pbnN0YWxsKGRl dik7Cj4gICAJaW50ZWxfdGVhcmRvd25fZ21idXMoZGV2KTsKPiBAQCAtMTU2Myw2ICsxNTY1LDcg QEAgaW50IGk5MTVfZHJpdmVyX3VubG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCS8q IEZsdXNoIGFueSBvdXRzdGFuZGluZyB1bnBpbl93b3JrLiAqLwo+ICAgCWZsdXNoX3dvcmtxdWV1 ZShkZXZfcHJpdi0+d3EpOwo+Cj4gKwlpbnRlbF9odWNfZmluaShkZXYpOwo+ICAgCWludGVsX2d1 Y19maW5pKGRldik7Cj4gICAJaTkxNV9nZW1fZmluaShkZXYpOwo+ICAgCWludGVsX2ZiY19jbGVh bnVwX2NmYihkZXZfcHJpdik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggN2M4MTc1 Ny4uOGI4ODIyNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC01NCw2ICs1NCw3 IEBACj4gICAjaW5jbHVkZSAiaW50ZWxfYmlvcy5oIgo+ICAgI2luY2x1ZGUgImludGVsX2RwbGxf bWdyLmgiCj4gICAjaW5jbHVkZSAiaW50ZWxfZ3VjLmgiCj4gKyNpbmNsdWRlICJpbnRlbF9odWMu aCIKPiAgICNpbmNsdWRlICJpbnRlbF9scmMuaCIKPiAgICNpbmNsdWRlICJpbnRlbF9yaW5nYnVm ZmVyLmgiCj4KPiBAQCAtMTc0OSw2ICsxNzUwLDcgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg ewo+Cj4gICAJc3RydWN0IGludGVsX2d2dCBndnQ7Cj4KPiArCXN0cnVjdCBpbnRlbF9odWMgaHVj Owo+ICAgCXN0cnVjdCBpbnRlbF9ndWMgZ3VjOwo+Cj4gICAJc3RydWN0IGludGVsX2NzciBjc3I7 Cj4gQEAgLTI4NDEsNiArMjg0Myw3IEBAIHN0cnVjdCBkcm1faTkxNV9jbWRfdGFibGUgewo+ICAg I2RlZmluZSBIQVNfR1VDKGRldikJCShJU19HRU45KGRldikgJiYgIUlTX0tBQllMQUtFKGRldikp Cj4gICAjZGVmaW5lIEhBU19HVUNfVUNPREUoZGV2KQkoSEFTX0dVQyhkZXYpKQo+ICAgI2RlZmlu ZSBIQVNfR1VDX1NDSEVEKGRldikJKEhBU19HVUMoZGV2KSkKPiArI2RlZmluZSBIQVNfSFVDX1VD T0RFKGRldikJKEhBU19HVUMoZGV2KSkKPgo+ICAgI2RlZmluZSBIQVNfUkVTT1VSQ0VfU1RSRUFN RVIoZGV2KSAoSVNfSEFTV0VMTChkZXYpIHx8IFwKPiAgIAkJCQkgICAgSU5URUxfSU5GTyhkZXYp LT5nZW4gPj0gOCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCA2YWJkNWU1Li41NDlk ZDNmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAgLTUxNDMsOSArNTE0MywxNiBA QCBpOTE1X2dlbV9pbml0X2h3KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJaW50ZWxfbW9j c19pbml0X2wzY2NfdGFibGUoZGV2KTsKPgo+ICAgCS8qIFdlIGNhbid0IGVuYWJsZSBjb250ZXh0 cyB1bnRpbCBhbGwgZmlybXdhcmUgaXMgbG9hZGVkICovCj4gLQlyZXQgPSBpbnRlbF9ndWNfc2V0 dXAoZGV2KTsKPiAtCWlmIChyZXQpCj4gLQkJZ290byBvdXQ7Cj4gKwlpZiAoSEFTX0dVQyhkZXYp KSB7Cj4gKwkJLyogaW5pdCBXT1BDTSAqLwo+ICsJCUk5MTVfV1JJVEUoR1VDX1dPUENNX1NJWkUs IGd1Y193b3BjbV9zaXplKGRldikpOwo+ICsJCUk5MTVfV1JJVEUoRE1BX0dVQ19XT1BDTV9PRkZT RVQsIEdVQ19XT1BDTV9PRkZTRVRfVkFMVUUpOwo+ICsKPiArCQlpbnRlbF9odWNfbG9hZChkZXYp Owo+ICsJCXJldCA9IGludGVsX2d1Y19zZXR1cChkZXYpOwo+ICsJCWlmIChyZXQpCj4gKwkJCWdv dG8gb3V0Owo+ICsJfQoKTm8gLS0gdGhlIGNhbGwgdG8gaW50ZWxfZ3VjX3NldHVwKCkgYXQgbGVh c3Qgc2hvdWxkIG5vdCBiZSBpbnNpZGUgdGhlIApIQVNfR1VDKCkgY2xhdXNlLiBJdCBuZWVkcyB0 byBiZSBjYWxsZWQgYW55d2F5LCB0byBlbnN1cmUgZXhlY2xpc3QgbW9kZSAKaXMgc2V0IHVwIGNv cnJlY3RseSBpZiBHdUMgbW9kZSBpcyBub3Qgc3VwcG9ydGVkLgoKU2VlIGU1NTZmN2MxNiBkcm0v aTkxNS9ndWM6IGZpeCBHdUMgbG9hZGluZy9zdWJtaXNzaW9uIGNoZWNrCgo+ICAgCS8qCj4gICAJ ICogSW5jcmVtZW50IHRoZSBuZXh0IHNlcW5vIGJ5IDB4MTAwIHNvIHdlIGhhdmUgYSB2aXNpYmxl IGJyZWFrCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmgKPiBpbmRleCBjZjVhNjViLi41 MTUzM2YxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5o Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmgKPiBAQCAtNjEsOSAr NjEsMTIgQEAKPiAgICNkZWZpbmUgICBETUFfQUREUkVTU19TUEFDRV9HVFQJCSAgKDggPDwgMTYp Cj4gICAjZGVmaW5lIERNQV9DT1BZX1NJWkUJCQlfTU1JTygweGMzMTApCj4gICAjZGVmaW5lIERN QV9DVFJMCQkJX01NSU8oMHhjMzE0KQo+ICsjZGVmaW5lICAgSFVDX1VLRVJORUwJCQkgICgxPDw5 KQo+ICAgI2RlZmluZSAgIFVPU19NT1ZFCQkJICAoMTw8NCkKPiAgICNkZWZpbmUgICBTVEFSVF9E TUEJCQkgICgxPDwwKQo+ICAgI2RlZmluZSBETUFfR1VDX1dPUENNX09GRlNFVAkJX01NSU8oMHhj MzQwKQo+ICsjZGVmaW5lICAgSFVDX0xPQURJTkdfQUdFTlRfVkNSCQkgICgwPDwxKQo+ICsjZGVm aW5lICAgSFVDX0xPQURJTkdfQUdFTlRfR1VDCQkgICgxPDwxKQo+ICAgI2RlZmluZSAgIEdVQ19X T1BDTV9PRkZTRVRfVkFMVUUJICAweDgwMDAwCS8qIDUxMktCICovCj4gICAjZGVmaW5lIEdVQ19N QVhfSURMRV9DT1VOVAkJX01NSU8oMHhDM0U0KQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2d1Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgK PiBpbmRleCAwYjRlZDg4Li5jNGI5MmYzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Yy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgK PiBAQCAtMTYwLDYgKzE2MCw3IEBAIGV4dGVybiBjb25zdCBjaGFyICppbnRlbF91Y19md19zdGF0 dXNfcmVwcihlbnVtIGludGVsX3VjX2Z3X3N0YXR1cyBzdGF0dXMpOwo+ICAgZXh0ZXJuIGludCBp bnRlbF9ndWNfc3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgIGV4dGVybiBpbnQg aW50ZWxfZ3VjX3Jlc3VtZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgIHZvaWQgaW50ZWxf dWNfZndfZmV0Y2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX3VjX2Z3ICp1 Y19mdyk7Cj4gK3UzMiBndWNfd29wY21fc2l6ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPgo+ ICAgLyogaTkxNV9ndWNfc3VibWlzc2lvbi5jICovCj4gICBpbnQgaTkxNV9ndWNfc3VibWlzc2lv bl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwo+IGluZGV4IDcwNTc1YmQuLmM0YTIxMGQgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCj4gQEAgLTI3MCw3ICsyNzAs OCBAQCBzdGF0aWMgaW50IGd1Y191Y29kZV94ZmVyX2RtYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gICAJSTkxNV9XUklURShETUFfQUREUl8xX0hJR0gsIERNQV9BRERSRVNT X1NQQUNFX1dPUENNKTsKPgo+ICAgCS8qIEZpbmFsbHkgc3RhcnQgdGhlIERNQSAqLwo+IC0JSTkx NV9XUklURShETUFfQ1RSTCwgX01BU0tFRF9CSVRfRU5BQkxFKFVPU19NT1ZFIHwgU1RBUlRfRE1B KSk7Cj4gKwlJOTE1X1dSSVRFKERNQV9DVFJMLCBfTUFTS0VEX0JJVF9FTkFCTEUoVU9TX01PVkUg fCBTVEFSVF9ETUEpIHwKPiArCQkJX01BU0tFRF9CSVRfRElTQUJMRShIVUNfVUtFUk5FTCkpOwo+ Cj4gICAJLyoKPiAgIAkgKiBXYWl0IGZvciB0aGUgRE1BIHRvIGNvbXBsZXRlICYgdGhlIEd1QyB0 byBzdGFydCB1cC4KPiBAQCAtMjk1LDEyICsyOTYsMTIgQEAgc3RhdGljIGludCBndWNfdWNvZGVf eGZlcl9kbWEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCXJldHVybiBy ZXQ7Cj4gICB9Cj4KPiAtc3RhdGljIHUzMiBndWNfd29wY21fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3UzMiBndWNfd29wY21fc2l6ZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+ICAgewo+ICAgCXUzMiB3b3BjbV9zaXplID0gR1VDX1dPUENNX1RPUDsKPgo+ICAg CS8qIE9uIEJYVCwgdGhlIHRvcCBvZiBXT1BDTSBpcyByZXNlcnZlZCBmb3IgUkM2IGNvbnRleHQg Ki8KPiAtCWlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKPiArCWlmIChJU19CUk9YVE9OKGRldikp CgpObyAtLSBkZXZfcHJpdiBpcyBwcmVmZXJyZWQuCgo+ICAgCQl3b3BjbV9zaXplIC09IEJYVF9H VUNfV09QQ01fUkM2X1JFU0VSVkVEOwo+Cj4gICAJcmV0dXJuIHdvcGNtX3NpemU7Cj4gQEAgLTMz MiwxMCArMzMzLDYgQEAgc3RhdGljIGludCBndWNfdWNvZGVfeGZlcihzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4KPiAgIAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZf cHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4KPiAtCS8qIGluaXQgV09QQ00gKi8KPiAtCUk5MTVfV1JJ VEUoR1VDX1dPUENNX1NJWkUsIGd1Y193b3BjbV9zaXplKGRldl9wcml2KSk7Cj4gLQlJOTE1X1dS SVRFKERNQV9HVUNfV09QQ01fT0ZGU0VULCBHVUNfV09QQ01fT0ZGU0VUX1ZBTFVFKTsKPiAtCj4g ICAJLyogRW5hYmxlIE1JQSBjYWNoaW5nLiBHdUMgY2xvY2sgZ2F0aW5nIGlzIGRpc2FibGVkLiAq Lwo+ICAgCUk5MTVfV1JJVEUoR1VDX1NISU1fQ09OVFJPTCwgR1VDX1NISU1fQ09OVFJPTF9WQUxV RSk7Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g aW5kZXggMDAwMDAwMC4uOTQ2Y2FhNwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9odWMuaAo+IEBAIC0wLDAgKzEsNDQgQEAKPiArLyoKPiArICogQ29w eXJpZ2h0IMKpIDIwMTQgSW50ZWwgQ29ycG9yYXRpb24KPiArICoKPiArICogUGVybWlzc2lvbiBp cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n IGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp b24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUg d2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0 aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0 ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5p c2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAq Cj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90 aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRl ZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0 d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVE SU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFks Cj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1F TlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT RSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBT T0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4gKyAqIElOIFRIRSBTT0ZUV0FS RS4KPiArICoKPiArICovCj4gKyNpZm5kZWYgX0lOVEVMX0hVQ19IXwo+ICsjZGVmaW5lIF9JTlRF TF9IVUNfSF8KPiArCj4gKyNpbmNsdWRlICJpbnRlbF9ndWMuaCIKPiArCj4gKyNkZWZpbmUgSFVD X1NUQVRVUzIJCV9NTUlPKDB4RDNCMCkKPiArI2RlZmluZSAgIEhVQ19GV19WRVJJRklFRAkoMTw8 NykKPiArCj4gK3N0cnVjdCBpbnRlbF9odWMgewo+ICsJLyogR2VuZXJpYyB1QyBmaXJtd2FyZSBt YW5hZ2VtZW50ICovCj4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncgaHVjX2Z3Owo+ICsKPiArCS8qIEh1 Qy1zcGVjaWZpYyBhZGRpdGlvbnMgKi8KPiArfTsKPiArCj4gK2V4dGVybiB2b2lkIGludGVsX2h1 Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICtleHRlcm4gaW50IGludGVsX2h1Y19s b2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICtleHRlcm4gdm9pZCBpbnRlbF9odWNfYXV0 aChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiArZXh0ZXJuIHZvaWQgaW50ZWxfaHVjX2Zpbmko c3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gKwo+ICsjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjX2xvYWRlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfaHVjX2xvYWRlci5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw MDAwLi40NzJmYWJlCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2h1Y19sb2FkZXIuYwo+IEBAIC0wLDAgKzEsMjYyIEBACj4gKy8qCj4gKyAqIENvcHly aWdodCDCqSAyMDE0IEludGVsIENvcnBvcmF0aW9uCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMg aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh Cj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiArICogdGhl IHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUs IHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNo ZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj ZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQg aW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdh cmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VU IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U LiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERF UlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklM SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0Us IEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+ICsgKiBJTiBUSEUgU09GVFdBUkUu Cj4gKyAqCj4gKyAqLwo+ICsjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KPiArI2luY2x1ZGUg Imk5MTVfZHJ2LmgiCj4gKyNpbmNsdWRlICJpbnRlbF9odWMuaCIKPiArCj4gKy8qKgo+ICsgKiBE T0M6IEh1QyBGaXJtd2FyZQo+ICsgKgo+ICsgKiBNb3RpdmF0aW9uOgo+ICsgKiBHRU45IGludHJv ZHVjZXMgYSBuZXcgZGVkaWNhdGVkIGZpcm13YXJlIGZvciB1c2FnZSBpbiBtZWRpYSBIRVZDIChI aWdoCj4gKyAqIEVmZmljaWVuY3kgVmlkZW8gQ29kaW5nKSBvcGVyYXRpb25zLiBVc2Vyc3BhY2Ug Y2FuIHVzZSB0aGUgZmlybXdhcmUKPiArICogY2FwYWJpbGl0aWVzIGJ5IGFkZGluZyBIdUMgc3Bl Y2lmaWMgY29tbWFuZHMgdG8gYmF0Y2ggYnVmZmVycy4KPiArICoKPiArICogSW1wbGVtZW50YXRp b246Cj4gKyAqIE9uIHN1cHBvcnRlZCBwbGF0Zm9ybXMsIGk5MTUncyBqb2IgaXMgdG8gbG9hZCB0 aGUgZmlybXdhcmUgc3RvcmVkIG9uIHRoZQo+ICsgKiBmaWxlIHN5c3RlbSBhbmQgYXNzaXN0IHdp dGggYXV0aGVudGljYXRpb24uIEl0IGlzIHVwIHRvIHVzZXJzcGFjZSB0bwo+ICsgKiBkZXRlY3Qg dGhlIHByZXNlbmNlIG9mIEh1QyBzdXBwb3J0IG9uIGEgcGxhdGZvcm0sIG9uIHRoZWlyIG93bi4K PiArICogRm9yIGRlYnVnZ2luZywgaTkxNSBwcm92aWRlcyBhIGRlYnVnZnMgZmlsZSwgaTkxNV9o dWNfbG9hZF9zdGF0dXNfaW5mbwo+ICsgKiB3aGljaCBkaXNwbGF5cyB0aGUgZmlybXdhcmUgbG9h ZCBzdGF0dXMuCj4gKyAqCj4gKyAqIFRoZSB1bmlmaWVkIHVDIGZpcm13YXJlIGxvYWRlciBpcyB1 c2VkLiBGaXJtd2FyZSBiaW5hcnkgaXMgZmV0Y2hlZCBieSB0aGUKPiArICogbG9hZGVyIGFzeW5j aHJvbm91c2x5IGZyb20gdGhlIGRyaXZlciBpbml0IHByb2Nlc3MuIEhvd2V2ZXIsIHRoZSBhY3R1 YWwKPiArICogbG9hZGluZyB0byBIVyBpcyBkZWZlcnJlZCB1bnRpbCBHRU0gaW5pdGlhbGl6YXRp b24gaXMgZG9uZS4gQmUgbm90ZSB0aGF0IEh1Qwo+ICsgKiBmaXJtd2FyZSBsb2FkaW5nIG11c3Qg YmUgZG9uZSBiZWZvcmUgR3VDIGxvYWRpbmcuCj4gKyAqLwo+ICsKPiArI2RlZmluZSBJOTE1X1NL TF9IVUNfVUNPREUgImk5MTUvc2tsX2h1Y192ZXIxLmJpbiIKPiArTU9EVUxFX0ZJUk1XQVJFKEk5 MTVfU0tMX0hVQ19VQ09ERSk7Cj4gKwo+ICsvKioKPiArICogaW50ZWxfaHVjX2xvYWRfdWNvZGUo KSAtIERNQSdzIHRoZSBmaXJtd2FyZQo+ICsgKiBAZGV2OiB0aGUgZHJtIGRldmljZQo+ICsgKgo+ ICsgKiBUaGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBnZW0gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZp cm13YXJlLCBzZXRzIHVwIHRoZSBETUEKPiArICogZW5naW5lIE1NSU8sIHRyaWdnZXJzIHRoZSBE TUEgb3BlcmF0aW9uIGFuZCB3YWl0cyBmb3IgaXQgdG8gZmluaXNoLgo+ICsgKgo+ICsgKiBUcmFu c2ZlciB0aGUgZmlybXdhcmUgaW1hZ2UgdG8gUkFNIGZvciBleGVjdXRpb24gYnkgdGhlIG1pY3Jv Y29udHJvbGxlci4KPiArICoKPiArICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5vbi16ZXJvIG9u IGZhaWx1cmUKPiArICovCj4gKwo+ICtzdGF0aWMgaW50IGh1Y191Y29kZV94ZmVyKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJc3RydWN0IGludGVsX3VjX2Z3ICpo dWNfZncgPSAmZGV2X3ByaXYtPmh1Yy5odWNfZnc7Cj4gKwl1bnNpZ25lZCBsb25nIG9mZnNldCA9 IDA7Cj4gKwl1MzIgc2l6ZTsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gaTkxNV9nZW1fb2Jq ZWN0X3NldF90b19ndHRfZG9tYWluKGh1Y19mdy0+dWNfZndfb2JqLCBmYWxzZSk7Cj4gKwlpZiAo cmV0KSB7Cj4gKwkJRFJNX0RFQlVHX0RSSVZFUigic2V0LWRvbWFpbiBmYWlsZWQgJWRcbiIsIHJl dCk7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlyZXQgPSBpOTE1X2dlbV9vYmpfZ2d0 dF9waW4oaHVjX2Z3LT51Y19md19vYmosIDAsIDApOwo+ICsJaWYgKHJldCkgewo+ICsJCURSTV9E RUJVR19EUklWRVIoInBpbiBmYWlsZWQgJWRcbiIsIHJldCk7Cj4gKwkJcmV0dXJuIHJldDsKPiAr CX0KPiArCj4gKwkvKiBJbnZhbGlkYXRlIEd1QyBUTEIgdG8gbGV0IEd1QyB0YWtlIHRoZSBsYXRl c3QgdXBkYXRlcyB0byBHVFQuICovCj4gKwlJOTE1X1dSSVRFKEdFTjhfR1RDUiwgR0VOOF9HVENS X0lOVkFMSURBVEUpOwo+ICsKPiArCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2X3ByaXYt PmRldi0+c3RydWN0X211dGV4KSk7Cj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZf cHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gKwo+ICsJLyogU2V0IHRoZSBzb3VyY2UgYWRkcmVzcyBm b3IgdGhlIHVDb2RlICovCj4gKwlvZmZzZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoaHVj X2Z3LT51Y19md19vYmopICsKPiArCQkJaHVjX2Z3LT5oZWFkZXJfb2Zmc2V0Owo+ICsJSTkxNV9X UklURShETUFfQUREUl8wX0xPVywgbG93ZXJfMzJfYml0cyhvZmZzZXQpKTsKPiArCUk5MTVfV1JJ VEUoRE1BX0FERFJfMF9ISUdILCB1cHBlcl8zMl9iaXRzKG9mZnNldCkgJiAweEZGRkYpOwo+ICsK PiArCS8qIEhhcmR3YXJlIGRvZXNuJ3QgbG9vayBhdCBkZXN0aW5hdGlvbiBhZGRyZXNzIGZvciBI dUMuIFNldCBpdCB0byAwLAo+ICsJICogYnV0IHN0aWxsIHByb2dyYW0gdGhlIGNvcnJlY3QgYWRk cmVzcyBzcGFjZS4KPiArCSAqLwo+ICsJSTkxNV9XUklURShETUFfQUREUl8xX0xPVywgMCk7Cj4g KwlJOTE1X1dSSVRFKERNQV9BRERSXzFfSElHSCwgRE1BX0FERFJFU1NfU1BBQ0VfV09QQ00pOwo+ ICsKPiArCXNpemUgPSBodWNfZnctPmhlYWRlcl9zaXplICsgaHVjX2Z3LT51Y29kZV9zaXplOwo+ ICsJSTkxNV9XUklURShETUFfQ09QWV9TSVpFLCBzaXplKTsKPiArCj4gKwkvKiBTdGFydCB0aGUg RE1BICovCj4gKwlJOTE1X1dSSVRFKERNQV9DVFJMLCBfTUFTS0VEX0JJVF9FTkFCTEUoSFVDX1VL RVJORUwgfCBTVEFSVF9ETUEpKTsKPiArCj4gKwkvKiBXYWl0IGZvciBETUEgdG8gZmluaXNoICov Cj4gKwlyZXQgPSB3YWl0X2Zvcl9hdG9taWMoKEk5MTVfUkVBRChETUFfQ1RSTCkgJiBTVEFSVF9E TUEpID09IDAsIDUwKTsKPiArCj4gKwlEUk1fREVCVUdfRFJJVkVSKCJIdUMgRE1BIHRyYW5zZmVy IHdhaXQgb3ZlciB3aXRoIHJldCAlZFxuIiwgcmV0KTsKPiArCj4gKwlpbnRlbF91bmNvcmVfZm9y Y2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gKwo+ICsJLyoKPiArCSAqIFdl IGtlZXAgdGhlIG9iamVjdCBwYWdlcyBmb3IgcmV1c2UgZHVyaW5nIHJlc3VtZS4gQnV0IHdlIGNh biB1bnBpbiBpdAo+ICsJICogbm93IHRoYXQgRE1BIGhhcyBjb21wbGV0ZWQsIHNvIGl0IGRvZXNu J3QgY29udGludWUgdG8gdGFrZSB1cCBzcGFjZS4KPiArCSAqLwo+ICsJaTkxNV9nZW1fb2JqZWN0 X2dndHRfdW5waW4oaHVjX2Z3LT51Y19md19vYmopOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30K PiArCj4gKy8qKgo+ICsgKiBpbnRlbF9odWNfaW5pdCgpIC0gaW5pdGlhdGUgSHVDIGZpcm13YXJl IGxvYWRpbmcgcmVxdWVzdAo+ICsgKiBAZGV2OiB0aGUgZHJtIGRldmljZQo+ICsgKgo+ICsgKiBD YWxsZWQgZWFybHkgZHVyaW5nIGRyaXZlciBsb2FkLCBidXQgYWZ0ZXIgR0VNIGlzIGluaXRpYWxp c2VkLiBUaGUgbG9hZGluZwo+ICsgKiB3aWxsIGNvbnRpbnVlIG9ubHkgd2hlbiBkcml2ZXIgZXhw bGljaXRseSBzcGVjaWZ5IGZpcm13YXJlIG5hbWUgYW5kIHZlcnNpb24uCj4gKyAqIEFsbCBvdGhl ciBjYXNlcyBhcmUgY29uc2lkZXJlZCBhcyBVQ19GSVJNV0FSRV9OT05FIGVpdGhlciBiZWNhdXNl IEhXIGlzIG5vdAo+ICsgKiBjYXBhYmxlIG9yIGRyaXZlciB5ZXQgc3VwcG9ydCBpdC4gQW5kIHRo ZXJlIHdpbGwgYmUgbm8gZXJyb3IgbWVzc2FnZSBmb3IKPiArICogVUNfRklSTVdBUkVfTk9ORSBj YXNlcy4KPiArICoKPiArICogVGhlIERNQS1jb3B5aW5nIHRvIEhXIGlzIGRvbmUgbGF0ZXIgd2hl biBpbnRlbF9odWNfdWNvZGVfbG9hZCgpIGlzIGNhbGxlZC4KPiArICovCj4gK3ZvaWQgaW50ZWxf aHVjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBpbnRlbF9o dWMgKmh1YyA9ICZkZXZfcHJpdi0+aHVjOwo+ICsJc3RydWN0IGludGVsX3VjX2Z3ICpodWNfZncg PSAmaHVjLT5odWNfZnc7Cj4gKwljb25zdCBjaGFyICpmd19wYXRoID0gTlVMTDsKPiArCj4gKwlo dWNfZnctPnVjX2RldiA9IGRldjsKPiArCWh1Y19mdy0+dWNfZndfcGF0aCA9IE5VTEw7Cj4gKwlo dWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX05PTkU7Cj4gKwlodWNfZnctPmxvYWRf c3RhdHVzID0gVUNfRklSTVdBUkVfTk9ORTsKPiArCWh1Y19mdy0+ZndfdHlwZSA9IFVDX0ZXX1RZ UEVfSFVDOwo+ICsKPiArCWlmICghSEFTX0hVQ19VQ09ERShkZXYpKQoKZGV2X3ByaXYgaXMgcHJl ZmVycmVkIGZvciBhbGwgc3VjaCBtYWNyb3MKCj4gKwkJcmV0dXJuOwo+ICsKPiArCWlmIChJU19T S1lMQUtFKGRldikpIHsKCmFuZCBhZ2Fpbi4KClRoZSByZXN0IGxvb2tzIE9LLgoKLkRhdmUuCgo+ ICsJCWZ3X3BhdGggPSBJOTE1X1NLTF9IVUNfVUNPREU7Cj4gKwkJaHVjX2Z3LT5tYWpvcl92ZXJf d2FudGVkID0gMTsKPiArCQlodWNfZnctPm1pbm9yX3Zlcl93YW50ZWQgPSA1Owo+ICsJfQo+ICsK PiArCWlmIChmd19wYXRoID09IE5VTEwpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWh1Y19mdy0+dWNf ZndfcGF0aCA9IGZ3X3BhdGg7Cj4gKwlodWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1XQVJF X1BFTkRJTkc7Cj4gKwo+ICsJRFJNX0RFQlVHX0RSSVZFUigiSHVDIGZpcm13YXJlIHBlbmRpbmcs IHBhdGggJXNcbiIsIGZ3X3BhdGgpOwo+ICsKPiArCWludGVsX3VjX2Z3X2ZldGNoKGRldiwgaHVj X2Z3KTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGludGVsX2h1Y19sb2FkKCkgLSBsb2FkIEh1QyB1 Q29kZSB0byBkZXZpY2UKPiArICogQGRldjogdGhlIGRybSBkZXZpY2UKPiArICoKPiArICogQ2Fs bGVkIGZyb20gZ2VtX2luaXRfaHcoKSBkdXJpbmcgZHJpdmVyIGxvYWRpbmcgYW5kIGFsc28gYWZ0 ZXIgYSBHUFUgcmVzZXQuCj4gKyAqIEJlIG5vdGUgdGhhdCBIdUMgbG9hZGluZyBtdXN0IGJlIGRv bmUgYmVmb3JlIEd1QyBsb2FkaW5nLgo+ICsgKgo+ICsgKiBUaGUgZmlybXdhcmUgaW1hZ2Ugc2hv dWxkIGhhdmUgYWxyZWFkeSBiZWVuIGZldGNoZWQgaW50byBtZW1vcnkgYnkgdGhlCj4gKyAqIGVh cmxpZXIgY2FsbCB0byBpbnRlbF9odWNfdWNvZGVfaW5pdCgpLCBzbyBoZXJlIHdlIG5lZWQgb25s eSBjaGVjayB0aGF0Cj4gKyAqIGlzIHN1Y2NlZWRlZCwgYW5kIHRoZW4gdHJhbnNmZXIgdGhlIGlt YWdlIHRvIHRoZSBoL3cuCj4gKyAqCj4gKyAqIFJldHVybjoJbm9uLXplcm8gY29kZSBvbiBlcnJv cgo+ICsgKi8KPiAraW50IGludGVsX2h1Y19sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g K3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZkZXZfcHJpdi0+aHVjLmh1Y19m dzsKPiArCWludCBlcnI7Cj4gKwo+ICsJaWYgKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzID09IFVDX0ZJ Uk1XQVJFX05PTkUpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJRFJNX0RFQlVHX0RSSVZFUigiJXMg Zncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKPiArCQlodWNfZnctPnVjX2Z3X3BhdGgs Cj4gKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5mZXRjaF9zdGF0dXMpLAo+ICsJ CWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+bG9hZF9zdGF0dXMpKTsKPiArCj4gKwlp ZiAoaHVjX2Z3LT5mZXRjaF9zdGF0dXMgPT0gVUNfRklSTVdBUkVfU1VDQ0VTUyAmJgo+ICsJICAg IGh1Y19mdy0+bG9hZF9zdGF0dXMgPT0gVUNfRklSTVdBUkVfRkFJTCkKPiArCQlyZXR1cm4gLUVO T0VYRUM7Cj4gKwo+ICsJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1BFTkRJTkc7 Cj4gKwo+ICsJc3dpdGNoIChodWNfZnctPmZldGNoX3N0YXR1cykgewo+ICsJY2FzZSBVQ19GSVJN V0FSRV9GQUlMOgo+ICsJCS8qIHNvbWV0aGluZyB3ZW50IHdyb25nIDooICovCj4gKwkJZXJyID0g LUVJTzsKPiArCQlnb3RvIGZhaWw7Cj4gKwo+ICsJY2FzZSBVQ19GSVJNV0FSRV9OT05FOgo+ICsJ Y2FzZSBVQ19GSVJNV0FSRV9QRU5ESU5HOgo+ICsJZGVmYXVsdDoKPiArCQkvKiAiY2FuJ3QgaGFw cGVuIiAqLwo+ICsJCVdBUk5fT05DRSgxLCAiSHVDIGZ3ICVzIGludmFsaWQgZmV0Y2hfc3RhdHVz ICVzIFslZF1cbiIsCj4gKwkJCWh1Y19mdy0+dWNfZndfcGF0aCwKPiArCQkJaW50ZWxfdWNfZndf c3RhdHVzX3JlcHIoaHVjX2Z3LT5mZXRjaF9zdGF0dXMpLAo+ICsJCQlodWNfZnctPmZldGNoX3N0 YXR1cyk7Cj4gKwkJZXJyID0gLUVOWElPOwo+ICsJCWdvdG8gZmFpbDsKPiArCj4gKwljYXNlIFVD X0ZJUk1XQVJFX1NVQ0NFU1M6Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICsJZXJyID0gaHVjX3Vj b2RlX3hmZXIoZGV2X3ByaXYpOwo+ICsJaWYgKGVycikKPiArCQlnb3RvIGZhaWw7Cj4gKwo+ICsJ aHVjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1NVQ0NFU1M7Cj4gKwo+ICsJRFJNX0RF QlVHX0RSSVZFUigiJXMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKPiArCQlodWNf ZnctPnVjX2Z3X3BhdGgsCj4gKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5mZXRj aF9zdGF0dXMpLAo+ICsJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+bG9hZF9zdGF0 dXMpKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArCj4gK2ZhaWw6Cj4gKwlpZiAoaHVjX2Z3LT5sb2Fk X3N0YXR1cyA9PSBVQ19GSVJNV0FSRV9QRU5ESU5HKQo+ICsJCWh1Y19mdy0+bG9hZF9zdGF0dXMg PSBVQ19GSVJNV0FSRV9GQUlMOwo+ICsKPiArCURSTV9FUlJPUigiRmFpbGVkIHRvIGNvbXBsZXRl IEh1QyB1Q29kZSBsb2FkIHdpdGggcmV0ICVkXG4iLCBlcnIpOwo+ICsKPiArCXJldHVybiBlcnI7 Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBpbnRlbF9odWNfZmluaSgpIC0gY2xlYW4gdXAgcmVzb3Vy Y2VzIGFsbG9jYXRlZCBmb3IgSHVDCj4gKyAqIEBkZXY6IHRoZSBkcm0gZGV2aWNlCj4gKyAqCj4g KyAqIENsZWFucyB1cCBieSByZWxlYXNpbmcgdGhlIGh1YyBmaXJtd2FyZSBHRU0gb2JqLgo+ICsg Ki8KPiArdm9pZCBpbnRlbF9odWNfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ ICsJc3RydWN0IGludGVsX3VjX2Z3ICpodWNfZncgPSAmZGV2X3ByaXYtPmh1Yy5odWNfZnc7Cj4g Kwo+ICsJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICsJaWYgKGh1Y19mdy0+dWNf Zndfb2JqKQo+ICsJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZodWNfZnctPnVjX2Z3X29i ai0+YmFzZSk7Cj4gKwlodWNfZnctPnVjX2Z3X29iaiA9IE5VTEw7Cj4gKwltdXRleF91bmxvY2so JmRldi0+c3RydWN0X211dGV4KTsKPiArCj4gKwlodWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJ Uk1XQVJFX05PTkU7Cj4gK30KPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==