From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeff McGee Subject: Re: [PATCH 3/8] drm/i915/huc: Add HuC fw loading support Date: Thu, 13 Oct 2016 13:54:33 -0700 Message-ID: <20161013205433.GG18646@jeffdesk> References: <1475520182-9224-1-git-send-email-anusha.srivatsa@intel.com> <1475520182-9224-4-git-send-email-anusha.srivatsa@intel.com> <20161013174241.GE18646@jeffdesk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 196046E0DE for ; Thu, 13 Oct 2016 20:46:01 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20161013174241.GE18646@jeffdesk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Anusha Srivatsa Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBPY3QgMTMsIDIwMTYgYXQgMTA6NDI6NDJBTSAtMDcwMCwgSmVmZiBNY0dlZSB3cm90 ZToKPiBPbiBNb24sIE9jdCAwMywgMjAxNiBhdCAxMTo0Mjo1N0FNIC0wNzAwLCBBbnVzaGEgU3Jp dmF0c2Egd3JvdGU6Cj4gPiBGcm9tOiBQZXRlciBBbnRvaW5lIDxwZXRlci5hbnRvaW5lQGludGVs LmNvbT4KPiA+IAo+ID4gVGhlIEh1QyBsb2FkaW5nIHByb2Nlc3MgaXMgc2ltaWxhciB0byBHdUMu IFRoZSBpbnRlbF91Y19md19mZXRjaCgpCj4gPiBpcyB1c2VkIGZvciBib3RoIGNhc2VzLgo+ID4g Cj4gPiBIdUMgbG9hZGluZyBuZWVkcyB0byBiZSBiZWZvcmUgR3VDIGxvYWRpbmcuIFRoZSBXT1BD TSBzZXR0aW5nIG11c3QKPiA+IGJlIGRvbmUgZWFybHkgYmVmb3JlIGxvYWRpbmcgYW55IG9mIHRo ZW0uCj4gPiAKPiA+IHYyOiByZWJhc2VkIG9uLXRvcCBvZiBkcm0taW50ZWwtbmlnaHRseS4KPiA+ ICAgICByZW1vdmVkIGlmKEhBU19HVUMoKSkgYmVmb3JlIHRoZSBndWMgY2FsbC4gKEQuR29yZG9u KQo+ID4gICAgIHVwZGF0ZSBodWNfdmVyc2lvbiBudW1iZXIgb2YgZm9ybWF0Lgo+ID4gdjM6IHJl YmFzZWQgdG8gZHJtLWludGVsLW5pZ2h0bHksIGNoYW5nZWQgdGhlIGZpbGUgbmFtZSBmb3JtYXQg dG8KPiA+ICAgICBtYXRjaCB0aGUgb25lIGluIHRoZSBodWMgcGFja2FnZS4KPiA+ICAgICBDaGFu Z2VkIGRldi0+ZGV2X3ByaXZhdGUgdG8gdG9faTkxNSgpCj4gPiB2NDogbW92ZWQgZnVuY3Rpb24g YmFjayB0byB3aGVyZSBpdCB3YXMuCj4gPiAgICAgY2hhbmdlIHdhaXRfZm9yX2F0b21pYyB0byB3 YWl0X2Zvci4KPiA+IHY1OiByZWJhc2VkICsgY29tbWVudCBjaGFuZ2VzLgo+ID4gdjc6IHJlYmFz ZWQuCj4gPiB2ODogcmViYXNlZC4KPiA+IAo+ID4gVGVzdGVkLWJ5OiBYaWFuZyBIYWloYW8gPGhh aWhhby54aWFuZ0BpbnRlbC5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBBbnVzaGEgU3JpdmF0c2Eg PGFudXNoYS5zcml2YXRzYUBpbnRlbC5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBBbGV4IERhaSA8 eXUuZGFpQGludGVsLmNvbT4KPiA+IFNpZ25lZC1vZmYtYnk6IFBldGVyIEFudG9pbmUgPHBldGVy LmFudG9pbmVAaW50ZWwuY29tPgo+ID4gUmV2aWV3ZWQtYnk6IERhdmUgR29yZG9uIDxkYXZpZC5z LmdvcmRvbkBpbnRlbC5jb20+Cj4gPiAtLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtl ZmlsZSAgICAgICAgICAgfCAgIDEgKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmMgICAgICAgICB8ICAgMyArCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAg ICAgICAgIHwgICAzICsKPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaCAg ICAgfCAgIDMgKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oICAgICAgICB8 ICAgMSArCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jIHwgICA2 ICstCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmggICAgICAgIHwgIDQ0ICsr KysrKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYyB8IDI2OCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gIDggZmlsZXMgY2hhbmdlZCwgMzI3 IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Yy5oCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYwo+ID4gCj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9N YWtlZmlsZQo+ID4gaW5kZXggZTZmZTAwNC4uNmU5OWM1MSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9N YWtlZmlsZQo+ID4gQEAgLTUzLDYgKzUzLDcgQEAgaTkxNS15ICs9IGk5MTVfY21kX3BhcnNlci5v IFwKPiA+ICAKPiA+ICAjIGdlbmVyYWwtcHVycG9zZSBtaWNyb2NvbnRyb2xsZXIgKEd1Qykgc3Vw cG9ydAo+ID4gIGk5MTUteSArPSBpbnRlbF9ndWNfbG9hZGVyLm8gXAo+ID4gKwkgIGludGVsX2h1 Y19sb2FkZXIubyBcCj4gPiAgCSAgaTkxNV9ndWNfc3VibWlzc2lvbi5vCj4gPiAgCj4gPiAgIyBh dXRvZ2VuZXJhdGVkIG51bGwgcmVuZGVyIHN0YXRlCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMK PiA+IGluZGV4IDMxYjJiNjMuLjdhZjdiZDYgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5jCj4gPiBAQCAtNjEzLDYgKzYxMyw3IEBAIHN0YXRpYyBpbnQgaTkxNV9sb2FkX21vZGVzZXRf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gIAkgKiB3b3JraW5nIGlycXMgZm9yIGUu Zy4gZ21idXMgYW5kIGRwIGF1eCB0cmFuc2ZlcnMuICovCj4gPiAgCWludGVsX21vZGVzZXRfaW5p dChkZXYpOwo+ID4gIAo+ID4gKwlpbnRlbF9odWNfaW5pdChkZXYpOwo+ID4gIAlpbnRlbF9ndWNf aW5pdChkZXYpOwo+ID4gIAo+ID4gIAlyZXQgPSBpOTE1X2dlbV9pbml0KGRldik7Cj4gPiBAQCAt NjM4LDYgKzYzOSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9sb2FkX21vZGVzZXRfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ID4gIGNsZWFudXBfZ2VtOgo+ID4gIAlpOTE1X2dlbV9maW5pKGRl dik7Cj4gPiAgY2xlYW51cF9pcnE6Cj4gPiArCWludGVsX2h1Y19maW5pKGRldik7Cj4gPiAgCWlu dGVsX2d1Y19maW5pKGRldik7Cj4gPiAgCWRybV9pcnFfdW5pbnN0YWxsKGRldik7Cj4gPiAgCWlu dGVsX3RlYXJkb3duX2dtYnVzKGRldik7Cj4gPiBAQCAtMTMxNSw2ICsxMzE3LDcgQEAgdm9pZCBp OTE1X2RyaXZlcl91bmxvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ICAJLyogRmx1c2gg YW55IG91dHN0YW5kaW5nIHVucGluX3dvcmsuICovCj4gPiAgCWRyYWluX3dvcmtxdWV1ZShkZXZf cHJpdi0+d3EpOwo+ID4gIAo+ID4gKwlpbnRlbF9odWNfZmluaShkZXYpOwo+ID4gIAlpbnRlbF9n dWNfZmluaShkZXYpOwo+ID4gIAlpOTE1X2dlbV9maW5pKGRldik7Cj4gPiAgCWludGVsX2ZiY19j bGVhbnVwX2NmYihkZXZfcHJpdik7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+IGluZGV4 IGUwY2I3MWMuLjYyNWFhOTIgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiBA QCAtNTUsNiArNTUsNyBAQAo+ID4gICNpbmNsdWRlICJpbnRlbF9iaW9zLmgiCj4gPiAgI2luY2x1 ZGUgImludGVsX2RwbGxfbWdyLmgiCj4gPiAgI2luY2x1ZGUgImludGVsX2d1Yy5oIgo+ID4gKyNp bmNsdWRlICJpbnRlbF9odWMuaCIKPiA+ICAjaW5jbHVkZSAiaW50ZWxfbHJjLmgiCj4gPiAgI2lu Y2x1ZGUgImludGVsX3JpbmdidWZmZXIuaCIKPiA+ICAKPiA+IEBAIC0xNzY2LDYgKzE3NjcsNyBA QCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gPiAgCj4gPiAgCXN0cnVjdCBpbnRlbF9ndnQg Z3Z0Owo+ID4gIAo+ID4gKwlzdHJ1Y3QgaW50ZWxfaHVjIGh1YzsKPiA+ICAJc3RydWN0IGludGVs X2d1YyBndWM7Cj4gPiAgCj4gPiAgCXN0cnVjdCBpbnRlbF9jc3IgY3NyOwo+ID4gQEAgLTI4MjIs NiArMjgyNCw3IEBAIHN0cnVjdCBkcm1faTkxNV9jbWRfdGFibGUgewo+ID4gICNkZWZpbmUgSEFT X0dVQyhkZXYpCQkoSU5URUxfSU5GTyhkZXYpLT5oYXNfZ3VjKQo+ID4gICNkZWZpbmUgSEFTX0dV Q19VQ09ERShkZXYpCShIQVNfR1VDKGRldikpCj4gPiAgI2RlZmluZSBIQVNfR1VDX1NDSEVEKGRl dikJKEhBU19HVUMoZGV2KSkKPiA+ICsjZGVmaW5lIEhBU19IVUNfVUNPREUoZGV2KQkoSEFTX0dV QyhkZXYpKQo+ID4gIAo+ID4gICNkZWZpbmUgSEFTX1JFU09VUkNFX1NUUkVBTUVSKGRldikgKElO VEVMX0lORk8oZGV2KS0+aGFzX3Jlc291cmNlX3N0cmVhbWVyKQo+ID4gIAo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9ndWNfcmVnLmgKPiA+IGluZGV4IGE0N2UxZTQuLjY0ZTk0MmEgMTAwNjQ0Cj4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaAo+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmgKPiA+IEBAIC02MSw5ICs2MSwxMiBAQAo+ ID4gICNkZWZpbmUgICBETUFfQUREUkVTU19TUEFDRV9HVFQJCSAgKDggPDwgMTYpCj4gPiAgI2Rl ZmluZSBETUFfQ09QWV9TSVpFCQkJX01NSU8oMHhjMzEwKQo+ID4gICNkZWZpbmUgRE1BX0NUUkwJ CQlfTU1JTygweGMzMTQpCj4gPiArI2RlZmluZSAgIEhVQ19VS0VSTkVMCQkJICAoMTw8OSkKPiA+ ICAjZGVmaW5lICAgVU9TX01PVkUJCQkgICgxPDw0KQo+ID4gICNkZWZpbmUgICBTVEFSVF9ETUEJ CQkgICgxPDwwKQo+ID4gICNkZWZpbmUgRE1BX0dVQ19XT1BDTV9PRkZTRVQJCV9NTUlPKDB4YzM0 MCkKPiA+ICsjZGVmaW5lICAgSFVDX0xPQURJTkdfQUdFTlRfVkNSCQkgICgwPDwxKQo+ID4gKyNk ZWZpbmUgICBIVUNfTE9BRElOR19BR0VOVF9HVUMJCSAgKDE8PDEpCj4gPiAgI2RlZmluZSAgIEdV Q19XT1BDTV9PRkZTRVRfVkFMVUUJICAweDgwMDAwCS8qIDUxMktCICovCj4gPiAgI2RlZmluZSBH VUNfTUFYX0lETEVfQ09VTlQJCV9NTUlPKDB4QzNFNCkKPiA+ICAKPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2d1Yy5oCj4gPiBpbmRleCA4MTJlNGNhLi5hZjc2ZmZlIDEwMDY0NAo+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Yy5oCj4gPiBAQCAtMTYwLDYgKzE2MCw3IEBAIGV4dGVybiBjb25zdCBjaGFy ICppbnRlbF91Y19md19zdGF0dXNfcmVwcihlbnVtIGludGVsX3VjX2Z3X3N0YXR1cyBzdGF0dXMp Owo+ID4gIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3N1c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRl dik7Cj4gPiAgZXh0ZXJuIGludCBpbnRlbF9ndWNfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpOwo+ID4gIHZvaWQgaW50ZWxfdWNfZndfZmV0Y2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwg c3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdyk7Cj4gPiArdTMyIGd1Y193b3BjbV9zaXplKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gPiAgCj4gPiAgLyogaTkxNV9ndWNfc3Vi bWlzc2lvbi5jICovCj4gPiAgaW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1 Y19sb2FkZXIuYwo+ID4gaW5kZXggMGI4NjNhMS4uMGQyMTRiNCAxMDA2NDQKPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwo+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCj4gPiBAQCAtMzA1LDcgKzMwNSw4IEBAIHN0 YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXJfZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiA+ICAJSTkxNV9XUklURShETUFfQUREUl8xX0hJR0gsIERNQV9BRERSRVNTX1NQQUNF X1dPUENNKTsKPiA+ICAKPiA+ICAJLyogRmluYWxseSBzdGFydCB0aGUgRE1BICovCj4gPiAtCUk5 MTVfV1JJVEUoRE1BX0NUUkwsIF9NQVNLRURfQklUX0VOQUJMRShVT1NfTU9WRSB8IFNUQVJUX0RN QSkpOwo+ID4gKwlJOTE1X1dSSVRFKERNQV9DVFJMLCBfTUFTS0VEX0JJVF9FTkFCTEUoVU9TX01P VkUgfCBTVEFSVF9ETUEpIHwKPiA+ICsJCQlfTUFTS0VEX0JJVF9ESVNBQkxFKEhVQ19VS0VSTkVM KSk7Cj4gPiAgCj4gPiAgCS8qCj4gPiAgCSAqIFdhaXQgZm9yIHRoZSBETUEgdG8gY29tcGxldGUg JiB0aGUgR3VDIHRvIHN0YXJ0IHVwLgo+ID4gQEAgLTMzMCw3ICszMzEsNyBAQCBzdGF0aWMgaW50 IGd1Y191Y29kZV94ZmVyX2RtYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g PiAgCXJldHVybiByZXQ7Cj4gPiAgfQo+ID4gIAo+ID4gLXN0YXRpYyB1MzIgZ3VjX3dvcGNtX3Np emUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gK3UzMiBndWNfd29wY21f c2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiAgewo+ID4gIAl1MzIg d29wY21fc2l6ZSA9IEdVQ19XT1BDTV9UT1A7Cj4gPiAgCj4gPiBAQCAtNTA4LDYgKzUwOSw3IEBA IGludCBpbnRlbF9ndWNfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ICAJCWlmIChl cnIpCj4gPiAgCQkJZ290byBmYWlsOwo+ID4gIAo+ID4gKwkJaW50ZWxfaHVjX2xvYWQoZGV2KTsK PiA+ICAJCWVyciA9IGd1Y191Y29kZV94ZmVyKGRldl9wcml2KTsKPiA+ICAJCWlmICghZXJyKQo+ ID4gIAkJCWJyZWFrOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2h1Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmgKPiA+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwLi45NDZjYWE3Cj4gPiAtLS0gL2Rldi9udWxsCj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuaAo+ID4gQEAgLTAsMCArMSw0 NCBAQAo+ID4gKy8qCj4gPiArICogQ29weXJpZ2h0IMKpIDIwMTQgSW50ZWwgQ29ycG9yYXRpb24K PiAKPiBTaG91bGQgdGhpcyBiZSAyMDE2Pwo+IAo+ID4gKyAqCj4gPiArICogUGVybWlzc2lvbiBp cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n IGEKPiA+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRh dGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ID4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3 YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiA+ ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlz dHJpYnV0ZSwgc3VibGljZW5zZSwKPiA+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNv ZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiA+ICsgKiBTb2Z0d2Fy ZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOgo+ID4gKyAqCj4gPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg cGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ID4gKyAqIHBhcmFncmFwaCkg c2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBv ZiB0aGUKPiA+ICsgKiBTb2Z0d2FyZS4KPiA+ICsgKgo+ID4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9S Cj4gPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gPiArICog VEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s IERBTUFHRVMgT1IgT1RIRVIKPiA+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ID4gKyAqIEZST00sIE9V VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI RVIgREVBTElOR1MKPiA+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gPiArICoKPiA+ICsgKi8KPiA+ ICsjaWZuZGVmIF9JTlRFTF9IVUNfSF8KPiA+ICsjZGVmaW5lIF9JTlRFTF9IVUNfSF8KPiA+ICsK PiA+ICsjaW5jbHVkZSAiaW50ZWxfZ3VjLmgiCj4gPiArCj4gPiArI2RlZmluZSBIVUNfU1RBVFVT MgkJX01NSU8oMHhEM0IwKQo+ID4gKyNkZWZpbmUgICBIVUNfRldfVkVSSUZJRUQJKDE8PDcpCj4g PiArCj4gPiArc3RydWN0IGludGVsX2h1YyB7Cj4gPiArCS8qIEdlbmVyaWMgdUMgZmlybXdhcmUg bWFuYWdlbWVudCAqLwo+ID4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncgaHVjX2Z3Owo+ID4gKwo+ID4g KwkvKiBIdUMtc3BlY2lmaWMgYWRkaXRpb25zICovCj4gPiArfTsKPiA+ICsKPiA+ICtleHRlcm4g dm9pZCBpbnRlbF9odWNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiA+ICtleHRlcm4g aW50IGludGVsX2h1Y19sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ID4gK2V4dGVybiB2 b2lkIGludGVsX2h1Y19hdXRoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ID4gK2V4dGVybiB2 b2lkIGludGVsX2h1Y19maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwpUaGVzZSBkb24ndCBu ZWVkIGV4dGVybi4gUGxlYXNlIHJlbW92ZS4gQWxzbyBpbnRlbF9odWNfYXV0aCBjb21lcyBpbiB3 aXRoCmxhdGVyIHBhdGNoIGluIHRoZSBzZXJpZXMgc28gd291bGQgYmUgYmV0dGVyIHRvIGRyb3Ag ZnJvbSBoZXJlLgoKPiA+ICsKPiA+ICsjZW5kaWYKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9odWNfbG9hZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9odWNfbG9hZGVyLmMKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAw Li4xYWFmZjY3Cj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9odWNfbG9hZGVyLmMKPiA+IEBAIC0wLDAgKzEsMjY4IEBACj4gPiArLyoKPiA+ICsg KiBDb3B5cmlnaHQgwqkgMjAxNCBJbnRlbCBDb3Jwb3JhdGlvbgo+IAo+IFNob3VsZCB0aGlzIGJl IDIwMTY/Cj4gCj4gPiArICoKPiA+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ID4gKyAqIGNvcHkgb2Yg dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv ZnR3YXJlIiksCj4gPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj dGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ID4gKyAqIHRoZSByaWdodHMgdG8g dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl LAo+ID4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJt aXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ID4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBk byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gPiArICoKPiA+ICsg KiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAo aW5jbHVkaW5nIHRoZSBuZXh0Cj4gPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBp biBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ID4gKyAqIFNvZnR3 YXJlLgo+ID4gKyAqCj4gPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJ VEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiA+ICsgKiBJTVBMSUVELCBJ TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ TElUWSwKPiA+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G UklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiA+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZ UklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ ID4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg T1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJ T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+ID4gKyAq IElOIFRIRSBTT0ZUV0FSRS4KPiA+ICsgKgo+ID4gKyAqLwo+ID4gKyNpbmNsdWRlIDxsaW51eC9m aXJtd2FyZS5oPgo+ID4gKyNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ID4gKyNpbmNsdWRlICJpbnRl bF9odWMuaCIKPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBET0M6IEh1QyBGaXJtd2FyZQo+ID4gKyAq Cj4gPiArICogTW90aXZhdGlvbjoKPiA+ICsgKiBHRU45IGludHJvZHVjZXMgYSBuZXcgZGVkaWNh dGVkIGZpcm13YXJlIGZvciB1c2FnZSBpbiBtZWRpYSBIRVZDIChIaWdoCj4gPiArICogRWZmaWNp ZW5jeSBWaWRlbyBDb2RpbmcpIG9wZXJhdGlvbnMuIFVzZXJzcGFjZSBjYW4gdXNlIHRoZSBmaXJt d2FyZQo+ID4gKyAqIGNhcGFiaWxpdGllcyBieSBhZGRpbmcgSHVDIHNwZWNpZmljIGNvbW1hbmRz IHRvIGJhdGNoIGJ1ZmZlcnMuCj4gPiArICoKPiA+ICsgKiBJbXBsZW1lbnRhdGlvbjoKPiA+ICsg KiBPbiBzdXBwb3J0ZWQgcGxhdGZvcm1zLCBpOTE1J3Mgam9iIGlzIHRvIGxvYWQgdGhlIGZpcm13 YXJlIHN0b3JlZCBvbiB0aGUKPiA+ICsgKiBmaWxlIHN5c3RlbSBhbmQgYXNzaXN0IHdpdGggYXV0 aGVudGljYXRpb24uIEl0IGlzIHVwIHRvIHVzZXJzcGFjZSB0bwo+ID4gKyAqIGRldGVjdCB0aGUg cHJlc2VuY2Ugb2YgSHVDIHN1cHBvcnQgb24gYSBwbGF0Zm9ybSwgb24gdGhlaXIgb3duLgo+ID4g KyAqIEZvciBkZWJ1Z2dpbmcsIGk5MTUgcHJvdmlkZXMgYSBkZWJ1Z2ZzIGZpbGUsIGk5MTVfaHVj X2xvYWRfc3RhdHVzX2luZm8KPiA+ICsgKiB3aGljaCBkaXNwbGF5cyB0aGUgZmlybXdhcmUgbG9h ZCBzdGF0dXMuCj4gQWJvdmUgY29tbWVudCByZWZlcnMgdG8gZmVhdHVyZXMgYWRkZWQgaW4gc3Vi c2VxdWVudCBwYXRjaGVzIGFuZCBpcyBub3QKPiBlbnRpcmVseSBhY2N1cmF0ZSBhdCB0aGF0LiBT byBJIHdvdWxkIGp1c3QgcmVtb3ZlIHRoaXMgd2hvbGUgYmxvY2suIExlc3MKPiBjb21tZW50aW5n IGlzIGJldHRlciB0aGFuIG1pc2xlYWRpbmcgY29tbWVudGluZy4KPiAKPiA+ICsgKgo+ID4gKyAq IFRoZSBzYW1lIGZpcm13YXJlIGxvYWRlciBpcyB1c2VkIGFzIHRoZSBHdUMuIEZpcm13YXJlICog YmluYXJ5IGlzIGZldGNoZWQgYnkKPiA+ICsgKiB0aGUgbG9hZGVyIGFzeW5jaHJvbm91c2x5IGZy b20gdGhlIGRyaXZlciBpbml0IHByb2Nlc3MuIEhvd2V2ZXIsIHRoZSBhY3R1YWwKPiBSZW1vdmUg KiBmcm9tICJGaXJtd2FyZSAqIGJpbmFyeSIuIExvYWRpbmcgaXMgbm90IGFzeW5jaHJvbm91cyBz byByZW1vdmUgdGhpcwo+IHN0YXRlbWVudC4KPiAKPiA+ICsgKiBsb2FkaW5nIHRvIEhXIGlzIGRl ZmVycmVkIHVudGlsIEdFTSBpbml0aWFsaXphdGlvbiBpcyBkb25lLgo+ID4gKyAqCj4gPiArICog Tm90ZSB0aGF0IEh1QyBmaXJtd2FyZSBsb2FkaW5nIG11c3QgYmUgZG9uZSBiZWZvcmUgR3VDIGxv YWRpbmcuCj4gPiArICovCj4gPiArCj4gPiArI2RlZmluZSBJOTE1X1NLTF9IVUNfVUNPREUgImk5 MTUvc2tsX2h1Y192ZXIwMV8wN18xMzk4LmJpbiIKPiA+ICtNT0RVTEVfRklSTVdBUkUoSTkxNV9T S0xfSFVDX1VDT0RFKTsKPiBQbGVhc2UgdXBkYXRlIHRvIHVzZSB0aGUgbmV3IGFwcHJvYWNoIHVz ZWQgYnkgR3VDIGZvciBzcGVjaWZ5aW5nCj4gcmVxdWlyZWQgdmVyc2lvbiBhbmQgY29uc3RydWN0 aW5nIHRoZSBmaWxlIHBhdGguIFNlZSBpbnRlbF9ndWNfbG9hZGVyLmMuCj4gSHVDIGZpcm13YXJl IHZlcnNpb25pbmcgaW5jbHVkZXMgdGhlIGJ1aWxkIG51bWJlciBhZnRlciB0aGUgbWlub3Igc28K PiBzb21lIG1vZGlmaWNhdGlvbiB3aWxsIGJlIG5lZWRlZC4KPiAKPiA+ICsKPiA+ICsvKioKPiA+ ICsgKiBpbnRlbF9odWNfbG9hZF91Y29kZSgpIC0gRE1BJ3MgdGhlIGZpcm13YXJlCj4gPiArICog QGRldjogdGhlIGRybSBkZXZpY2UKPiBGaXggbmFtZSBhbmQgcGFyYW1ldGVyCj4gCj4gPiArICoK PiA+ICsgKiBUaGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBnZW0gb2JqZWN0IGNvbnRhaW5pbmcgdGhl IGZpcm13YXJlLCBzZXRzIHVwIHRoZSBETUEKPiA+ICsgKiBlbmdpbmUgTU1JTywgdHJpZ2dlcnMg dGhlIERNQSBvcGVyYXRpb24gYW5kIHdhaXRzIGZvciBpdCB0byBmaW5pc2guCj4gPiArICoKPiA+ ICsgKiBUcmFuc2ZlciB0aGUgZmlybXdhcmUgaW1hZ2UgdG8gUkFNIGZvciBleGVjdXRpb24gYnkg dGhlIG1pY3JvY29udHJvbGxlci4KPiA+ICsgKgo+ID4gKyAqIFJldHVybjogMCBvbiBzdWNjZXNz LCBub24temVybyBvbiBmYWlsdXJlCj4gPiArICovCj4gPiArCj4gPiArc3RhdGljIGludCBodWNf dWNvZGVfeGZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiArewo+ID4g KwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZkZXZfcHJpdi0+aHVjLmh1Y19mdzsKPiA+ ICsJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gPiArCXVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gMDsK PiA+ICsJdTMyIHNpemU7Cj4gPiArCWludCByZXQ7Cj4gPiArCj4gPiArCXJldCA9IGk5MTVfZ2Vt X29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihodWNfZnctPnVjX2Z3X29iaiwgZmFsc2UpOwo+ID4g KwlpZiAocmV0KSB7Cj4gPiArCQlEUk1fREVCVUdfRFJJVkVSKCJzZXQtZG9tYWluIGZhaWxlZCAl ZFxuIiwgcmV0KTsKPiA+ICsJCXJldHVybiByZXQ7Cj4gPiArCX0KPiA+ICsKPiA+ICsJdm1hID0g aTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKGh1Y19mdy0+dWNfZndfb2JqLCBOVUxMLCAwLCAwLCAw KTsKPiA+ICsJaWYgKElTX0VSUih2bWEpKSB7Cj4gPiArCQlEUk1fREVCVUdfRFJJVkVSKCJwaW4g ZmFpbGVkICVkXG4iLCAoaW50KVBUUl9FUlIodm1hKSk7Cj4gPiArCQlyZXR1cm4gUFRSX0VSUih2 bWEpOwo+ID4gKwl9Cj4gPiArCj4gPiArCS8qIEludmFsaWRhdGUgR3VDIFRMQiB0byBsZXQgR3VD IHRha2UgdGhlIGxhdGVzdCB1cGRhdGVzIHRvIEdUVC4gKi8KPiA+ICsJSTkxNV9XUklURShHRU44 X0dUQ1IsIEdFTjhfR1RDUl9JTlZBTElEQVRFKTsKPiA+ICsKPiA+ICsJV0FSTl9PTighbXV0ZXhf aXNfbG9ja2VkKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCkpOwo+IEkgZG9uJ3Qgc2VlIHJl YXNvbiBmb3IgdGhpcyBXQVJOX09OIGNoZWNrLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZAo+IGlu IHdlbGwgZGVmaW5lZCBwYXRocyB0aGF0IHJlcXVpcmUgbG9ja2luZyB3YXkgdXAgdGhlIGNoYWlu Lgo+IEkgdGhpbmsgd2UgY2FuIHJlbW92ZSBpdC4KPiAKPiA+ICsJaW50ZWxfdW5jb3JlX2ZvcmNl d2FrZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+ID4gKwo+ID4gKwkvKiBpbml0IFdP UENNICovCj4gPiArCUk5MTVfV1JJVEUoR1VDX1dPUENNX1NJWkUsIGd1Y193b3BjbV9zaXplKGRl dl9wcml2KSk7Cj4gPiArCUk5MTVfV1JJVEUoRE1BX0dVQ19XT1BDTV9PRkZTRVQsIEdVQ19XT1BD TV9PRkZTRVRfVkFMVUUgfAo+ID4gKwkJCUhVQ19MT0FESU5HX0FHRU5UX0dVQyk7Cj4gPiArCj4g PiArCS8qIFNldCB0aGUgc291cmNlIGFkZHJlc3MgZm9yIHRoZSB1Q29kZSAqLwo+ID4gKwlvZmZz ZXQgPSBpOTE1X2dndHRfb2Zmc2V0KHZtYSkgKyBodWNfZnctPmhlYWRlcl9vZmZzZXQ7Cj4gPiAr CUk5MTVfV1JJVEUoRE1BX0FERFJfMF9MT1csIGxvd2VyXzMyX2JpdHMob2Zmc2V0KSk7Cj4gPiAr CUk5MTVfV1JJVEUoRE1BX0FERFJfMF9ISUdILCB1cHBlcl8zMl9iaXRzKG9mZnNldCkgJiAweEZG RkYpOwo+ID4gKwo+ID4gKwkvKiBIYXJkd2FyZSBkb2Vzbid0IGxvb2sgYXQgZGVzdGluYXRpb24g YWRkcmVzcyBmb3IgSHVDLiBTZXQgaXQgdG8gMCwKPiA+ICsJICogYnV0IHN0aWxsIHByb2dyYW0g dGhlIGNvcnJlY3QgYWRkcmVzcyBzcGFjZS4KPiA+ICsJICovCj4gPiArCUk5MTVfV1JJVEUoRE1B X0FERFJfMV9MT1csIDApOwo+ID4gKwlJOTE1X1dSSVRFKERNQV9BRERSXzFfSElHSCwgRE1BX0FE RFJFU1NfU1BBQ0VfV09QQ00pOwo+ID4gKwo+ID4gKwlzaXplID0gaHVjX2Z3LT5oZWFkZXJfc2l6 ZSArIGh1Y19mdy0+dWNvZGVfc2l6ZTsKPiA+ICsJSTkxNV9XUklURShETUFfQ09QWV9TSVpFLCBz aXplKTsKPiA+ICsKPiA+ICsJLyogU3RhcnQgdGhlIERNQSAqLwo+ID4gKwlJOTE1X1dSSVRFKERN QV9DVFJMLCBfTUFTS0VEX0JJVF9FTkFCTEUoSFVDX1VLRVJORUwgfCBTVEFSVF9ETUEpKTsKPiA+ ICsKPiA+ICsJLyogV2FpdCBmb3IgRE1BIHRvIGZpbmlzaCAqLwo+ID4gKwlyZXQgPSB3YWl0X2Zv cigoSTkxNV9SRUFEKERNQV9DVFJMKSAmIFNUQVJUX0RNQSkgPT0gMCwgMTAwKTsKPiA+ICsKPiA+ ICsJRFJNX0RFQlVHX0RSSVZFUigiSHVDIERNQSB0cmFuc2ZlciB3YWl0IG92ZXIgd2l0aCByZXQg JWRcbiIsIHJldCk7Cj4gPiArCj4gPiArCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KGRldl9w cml2LCBGT1JDRVdBS0VfQUxMKTsKPiA+ICsKPiA+ICsJLyoKPiA+ICsJICogV2Uga2VlcCB0aGUg b2JqZWN0IHBhZ2VzIGZvciByZXVzZSBkdXJpbmcgcmVzdW1lLiBCdXQgd2UgY2FuIHVucGluIGl0 Cj4gPiArCSAqIG5vdyB0aGF0IERNQSBoYXMgY29tcGxldGVkLCBzbyBpdCBkb2Vzbid0IGNvbnRp bnVlIHRvIHRha2UgdXAgc3BhY2UuCj4gPiArCSAqLwo+ID4gKwlpOTE1X3ZtYV91bnBpbih2bWEp Owo+ID4gKwo+ID4gKwlyZXR1cm4gcmV0Owo+ID4gK30KPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBp bnRlbF9odWNfaW5pdCgpIC0gaW5pdGlhdGUgSHVDIGZpcm13YXJlIGxvYWRpbmcgcmVxdWVzdAo+ ID4gKyAqIEBkZXY6IHRoZSBkcm0gZGV2aWNlCj4gPiArICoKPiA+ICsgKiBDYWxsZWQgZWFybHkg ZHVyaW5nIGRyaXZlciBsb2FkLCBidXQgYWZ0ZXIgR0VNIGlzIGluaXRpYWxpc2VkLiBUaGUgbG9h ZGluZwo+ID4gKyAqIHdpbGwgY29udGludWUgb25seSB3aGVuIGRyaXZlciBleHBsaWNpdGx5IHNw ZWNpZnkgZmlybXdhcmUgbmFtZSBhbmQgdmVyc2lvbi4KPiA+ICsgKiBBbGwgb3RoZXIgY2FzZXMg YXJlIGNvbnNpZGVyZWQgYXMgVUNfRklSTVdBUkVfTk9ORSBlaXRoZXIgYmVjYXVzZSBIVyBpcyBu b3QKPiA+ICsgKiBjYXBhYmxlIG9yIGRyaXZlciB5ZXQgc3VwcG9ydCBpdC4gQW5kIHRoZXJlIHdp bGwgYmUgbm8gZXJyb3IgbWVzc2FnZSBmb3IKPiA+ICsgKiBVQ19GSVJNV0FSRV9OT05FIGNhc2Vz Lgo+ID4gKyAqCj4gPiArICogVGhlIERNQS1jb3B5aW5nIHRvIEhXIGlzIGRvbmUgbGF0ZXIgd2hl biBpbnRlbF9odWNfdWNvZGVfbG9hZCgpIGlzIGNhbGxlZC4KPiBpbnRlbF9odWNfdWNvZGVfbG9h ZCgpIHNob3VsZCBiZSBpbnRlbF9odWNfbG9hZCgpLgo+IAo+ID4gKyAqLwo+ID4gK3ZvaWQgaW50 ZWxfaHVjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ICt7Cj4gPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+ICsJc3RydWN0IGlu dGVsX2h1YyAqaHVjID0gJmRldl9wcml2LT5odWM7Cj4gPiArCXN0cnVjdCBpbnRlbF91Y19mdyAq aHVjX2Z3ID0gJmh1Yy0+aHVjX2Z3Owo+ID4gKwljb25zdCBjaGFyICpmd19wYXRoID0gTlVMTDsK PiA+ICsKPiA+ICsJaHVjX2Z3LT51Y19kZXYgPSBkZXY7Cj4gPiArCWh1Y19mdy0+dWNfZndfcGF0 aCA9IE5VTEw7Cj4gPiArCWh1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gVUNfRklSTVdBUkVfTk9ORTsK PiA+ICsJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX05PTkU7Cj4gPiArCWh1Y19m dy0+ZndfdHlwZSA9IFVDX0ZXX1RZUEVfSFVDOwo+ID4gKwo+ID4gKwlpZiAoIUhBU19IVUNfVUNP REUoZGV2X3ByaXYpKQo+ID4gKwkJcmV0dXJuOwo+ID4gKwo+ID4gKwlpZiAoSVNfU0tZTEFLRShk ZXZfcHJpdikpIHsKPiA+ICsJCWZ3X3BhdGggPSBJOTE1X1NLTF9IVUNfVUNPREU7Cj4gPiArCQlo dWNfZnctPm1ham9yX3Zlcl93YW50ZWQgPSAxOwo+ID4gKwkJaHVjX2Z3LT5taW5vcl92ZXJfd2Fu dGVkID0gNzsKPiA+ICsJfQo+ID4gKwo+ID4gKwlpZiAoZndfcGF0aCA9PSBOVUxMKQo+ID4gKwkJ cmV0dXJuOwo+ID4gKwo+ID4gKwlodWNfZnctPnVjX2Z3X3BhdGggPSBmd19wYXRoOwo+ID4gKwlo dWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1BFTkRJTkc7Cj4gPiArCj4gPiArCURS TV9ERUJVR19EUklWRVIoIkh1QyBmaXJtd2FyZSBwZW5kaW5nLCBwYXRoICVzXG4iLCBmd19wYXRo KTsKPiA+ICsKPiA+ICsJaW50ZWxfdWNfZndfZmV0Y2goZGV2LCBodWNfZncpOwo+ID4gK30KPiA+ ICsKPiA+ICsvKioKPiA+ICsgKiBpbnRlbF9odWNfbG9hZCgpIC0gbG9hZCBIdUMgdUNvZGUgdG8g ZGV2aWNlCj4gPiArICogQGRldjogdGhlIGRybSBkZXZpY2UKPiA+ICsgKgo+ID4gKyAqIENhbGxl ZCBmcm9tIGdlbV9pbml0X2h3KCkgZHVyaW5nIGRyaXZlciBsb2FkaW5nIGFuZCBhbHNvIGFmdGVy IGEgR1BVIHJlc2V0Lgo+ID4gKyAqIEJlIG5vdGUgdGhhdCBIdUMgbG9hZGluZyBtdXN0IGJlIGRv bmUgYmVmb3JlIEd1QyBsb2FkaW5nLgo+ID4gKyAqCj4gPiArICogVGhlIGZpcm13YXJlIGltYWdl IHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBmZXRjaGVkIGludG8gbWVtb3J5IGJ5IHRoZQo+ID4g KyAqIGVhcmxpZXIgY2FsbCB0byBpbnRlbF9odWNfdWNvZGVfaW5pdCgpLCBzbyBoZXJlIHdlIG5l ZWQgb25seSBjaGVjayB0aGF0Cj4gPiArICogaXMgc3VjY2VlZGVkLCBhbmQgdGhlbiB0cmFuc2Zl ciB0aGUgaW1hZ2UgdG8gdGhlIGgvdy4KPiA+ICsgKgo+ID4gKyAqIFJldHVybjoJbm9uLXplcm8g Y29kZSBvbiBlcnJvcgo+ID4gKyAqLwo+ID4gK2ludCBpbnRlbF9odWNfbG9hZChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShkZXYpOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZk ZXZfcHJpdi0+aHVjLmh1Y19mdzsKPiA+ICsJaW50IGVycjsKPiA+ICsKPiA+ICsJaWYgKGh1Y19m dy0+ZmV0Y2hfc3RhdHVzID09IFVDX0ZJUk1XQVJFX05PTkUpCj4gPiArCQlyZXR1cm4gMDsKPiA+ ICsKPiA+ICsJRFJNX0RFQlVHX0RSSVZFUigiJXMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAl c1xuIiwKPiA+ICsJCWh1Y19mdy0+dWNfZndfcGF0aCwKPiA+ICsJCWludGVsX3VjX2Z3X3N0YXR1 c19yZXByKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKPiA+ICsJCWludGVsX3VjX2Z3X3N0YXR1c19y ZXByKGh1Y19mdy0+bG9hZF9zdGF0dXMpKTsKPiA+ICsKPiA+ICsJaWYgKGh1Y19mdy0+ZmV0Y2hf c3RhdHVzID09IFVDX0ZJUk1XQVJFX1NVQ0NFU1MgJiYKPiA+ICsJICAgIGh1Y19mdy0+bG9hZF9z dGF0dXMgPT0gVUNfRklSTVdBUkVfRkFJTCkKPiA+ICsJCXJldHVybiAtRU5PRVhFQzsKPiA+ICsK PiA+ICsJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1BFTkRJTkc7Cj4gPiArCj4g PiArCXN3aXRjaCAoaHVjX2Z3LT5mZXRjaF9zdGF0dXMpIHsKPiA+ICsJY2FzZSBVQ19GSVJNV0FS RV9GQUlMOgo+ID4gKwkJLyogc29tZXRoaW5nIHdlbnQgd3JvbmcgOiggKi8KPiA+ICsJCWVyciA9 IC1FSU87Cj4gPiArCQlnb3RvIGZhaWw7Cj4gPiArCj4gPiArCWNhc2UgVUNfRklSTVdBUkVfTk9O RToKPiA+ICsJY2FzZSBVQ19GSVJNV0FSRV9QRU5ESU5HOgo+ID4gKwlkZWZhdWx0Ogo+ID4gKwkJ LyogImNhbid0IGhhcHBlbiIgKi8KPiA+ICsJCVdBUk5fT05DRSgxLCAiSHVDIGZ3ICVzIGludmFs aWQgZmV0Y2hfc3RhdHVzICVzIFslZF1cbiIsCj4gPiArCQkJaHVjX2Z3LT51Y19md19wYXRoLAo+ ID4gKwkJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKPiA+ ICsJCQlodWNfZnctPmZldGNoX3N0YXR1cyk7Cj4gPiArCQllcnIgPSAtRU5YSU87Cj4gPiArCQln b3RvIGZhaWw7Cj4gPiArCj4gPiArCWNhc2UgVUNfRklSTVdBUkVfU1VDQ0VTUzoKPiA+ICsJCWJy ZWFrOwo+ID4gKwl9Cj4gPiArCj4gPiArCWVyciA9IGh1Y191Y29kZV94ZmVyKGRldl9wcml2KTsK PiA+ICsJaWYgKGVycikKPiA+ICsJCWdvdG8gZmFpbDsKPiA+ICsKPiA+ICsJaHVjX2Z3LT5sb2Fk X3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1NVQ0NFU1M7Cj4gPiArCj4gPiArCURSTV9ERUJVR19EUklW RVIoIiVzIGZ3IHN0YXR1czogZmV0Y2ggJXMsIGxvYWQgJXNcbiIsCj4gPiArCQlodWNfZnctPnVj X2Z3X3BhdGgsCj4gPiArCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihodWNfZnctPmZldGNoX3N0 YXR1cyksCj4gPiArCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihodWNfZnctPmxvYWRfc3RhdHVz KSk7Cj4gPiArCj4gPiArCXJldHVybiAwOwo+ID4gKwo+ID4gK2ZhaWw6Cj4gPiArCWlmIChodWNf ZnctPmxvYWRfc3RhdHVzID09IFVDX0ZJUk1XQVJFX1BFTkRJTkcpCj4gPiArCQlodWNfZnctPmxv YWRfc3RhdHVzID0gVUNfRklSTVdBUkVfRkFJTDsKPiA+ICsKPiA+ICsJRFJNX0VSUk9SKCJGYWls ZWQgdG8gY29tcGxldGUgSHVDIHVDb2RlIGxvYWQgd2l0aCByZXQgJWRcbiIsIGVycik7Cj4gPiAr Cj4gPiArCXJldHVybiBlcnI7Cj4gPiArfQo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGludGVsX2h1 Y19maW5pKCkgLSBjbGVhbiB1cCByZXNvdXJjZXMgYWxsb2NhdGVkIGZvciBIdUMKPiA+ICsgKiBA ZGV2OiB0aGUgZHJtIGRldmljZQo+ID4gKyAqCj4gPiArICogQ2xlYW5zIHVwIGJ5IHJlbGVhc2lu ZyB0aGUgaHVjIGZpcm13YXJlIEdFTSBvYmouCj4gPiArICovCj4gPiArdm9pZCBpbnRlbF9odWNf ZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfdWNf ZncgKmh1Y19mdyA9ICZkZXZfcHJpdi0+aHVjLmh1Y19mdzsKPiA+ICsKPiA+ICsJbXV0ZXhfbG9j aygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ID4gKwlpZiAoaHVjX2Z3LT51Y19md19vYmopCj4gPiAr CQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmaHVjX2Z3LT51Y19md19vYmotPmJhc2UpOwo+ IFRoZXNlIGFyZSBub3cgcmVwbGFjZWQgd2l0aCBpOTE1X2dlbV9vYmplY3RfcHV0KGh1Y19mdy0+ dWNfZndfb2JqKQo+IAo+ID4gKwlodWNfZnctPnVjX2Z3X29iaiA9IE5VTEw7Cj4gPiArCW11dGV4 X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ID4gKwo+ID4gKwlodWNfZnctPmZldGNoX3N0 YXR1cyA9IFVDX0ZJUk1XQVJFX05PTkU7Cj4gPiArfQo+ID4gLS0gCj4gPiAyLjcuNAo+ID4gCj4g PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IElu dGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4g aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==