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 10:42:42 -0700 Message-ID: <20161013174241.GE18646@jeffdesk> References: <1475520182-9224-1-git-send-email-anusha.srivatsa@intel.com> <1475520182-9224-4-git-send-email-anusha.srivatsa@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id E53656EA81 for ; Thu, 13 Oct 2016 17:34:09 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1475520182-9224-4-git-send-email-anusha.srivatsa@intel.com> 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 T24gTW9uLCBPY3QgMDMsIDIwMTYgYXQgMTE6NDI6NTdBTSAtMDcwMCwgQW51c2hhIFNyaXZhdHNh IHdyb3RlOgo+IEZyb206IFBldGVyIEFudG9pbmUgPHBldGVyLmFudG9pbmVAaW50ZWwuY29tPgo+ IAo+IFRoZSBIdUMgbG9hZGluZyBwcm9jZXNzIGlzIHNpbWlsYXIgdG8gR3VDLiBUaGUgaW50ZWxf dWNfZndfZmV0Y2goKQo+IGlzIHVzZWQgZm9yIGJvdGggY2FzZXMuCj4gCj4gSHVDIGxvYWRpbmcg bmVlZHMgdG8gYmUgYmVmb3JlIEd1QyBsb2FkaW5nLiBUaGUgV09QQ00gc2V0dGluZyBtdXN0Cj4g YmUgZG9uZSBlYXJseSBiZWZvcmUgbG9hZGluZyBhbnkgb2YgdGhlbS4KPiAKPiB2MjogcmViYXNl ZCBvbi10b3Agb2YgZHJtLWludGVsLW5pZ2h0bHkuCj4gICAgIHJlbW92ZWQgaWYoSEFTX0dVQygp KSBiZWZvcmUgdGhlIGd1YyBjYWxsLiAoRC5Hb3Jkb24pCj4gICAgIHVwZGF0ZSBodWNfdmVyc2lv biBudW1iZXIgb2YgZm9ybWF0Lgo+IHYzOiByZWJhc2VkIHRvIGRybS1pbnRlbC1uaWdodGx5LCBj aGFuZ2VkIHRoZSBmaWxlIG5hbWUgZm9ybWF0IHRvCj4gICAgIG1hdGNoIHRoZSBvbmUgaW4gdGhl IGh1YyBwYWNrYWdlLgo+ICAgICBDaGFuZ2VkIGRldi0+ZGV2X3ByaXZhdGUgdG8gdG9faTkxNSgp Cj4gdjQ6IG1vdmVkIGZ1bmN0aW9uIGJhY2sgdG8gd2hlcmUgaXQgd2FzLgo+ICAgICBjaGFuZ2Ug d2FpdF9mb3JfYXRvbWljIHRvIHdhaXRfZm9yLgo+IHY1OiByZWJhc2VkICsgY29tbWVudCBjaGFu Z2VzLgo+IHY3OiByZWJhc2VkLgo+IHY4OiByZWJhc2VkLgo+IAo+IFRlc3RlZC1ieTogWGlhbmcg SGFpaGFvIDxoYWloYW8ueGlhbmdAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEFudXNoYSBT cml2YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBBbGV4 IERhaSA8eXUuZGFpQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBQZXRlciBBbnRvaW5lIDxw ZXRlci5hbnRvaW5lQGludGVsLmNvbT4KPiBSZXZpZXdlZC1ieTogRGF2ZSBHb3Jkb24gPGRhdmlk LnMuZ29yZG9uQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZp bGUgICAgICAgICAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAg ICAgICAgIHwgICAzICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAg IHwgICAzICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmggICAgIHwgICAz ICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmggICAgICAgIHwgICAxICsKPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jIHwgICA2ICstCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Yy5oICAgICAgICB8ICA0NCArKysrKysKPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjX2xvYWRlci5jIHwgMjY4ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCj4gIDggZmlsZXMgY2hhbmdlZCwgMzI3IGluc2VydGlvbnMoKyksIDIg ZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9odWMuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaHVjX2xvYWRlci5jCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01h a2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBpbmRleCBlNmZlMDA0Li42 ZTk5YzUxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBAQCAtNTMsNiArNTMsNyBAQCBpOTE1 LXkgKz0gaTkxNV9jbWRfcGFyc2VyLm8gXAo+ICAKPiAgIyBnZW5lcmFsLXB1cnBvc2UgbWljcm9j b250cm9sbGVyIChHdUMpIHN1cHBvcnQKPiAgaTkxNS15ICs9IGludGVsX2d1Y19sb2FkZXIubyBc Cj4gKwkgIGludGVsX2h1Y19sb2FkZXIubyBcCj4gIAkgIGk5MTVfZ3VjX3N1Ym1pc3Npb24ubwo+ ICAKPiAgIyBhdXRvZ2VuZXJhdGVkIG51bGwgcmVuZGVyIHN0YXRlCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5jCj4gaW5kZXggMzFiMmI2My4uN2FmN2JkNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuYwo+IEBAIC02MTMsNiArNjEzLDcgQEAgc3RhdGljIGludCBpOTE1X2xvYWRfbW9kZXNldF9p bml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkgKiB3b3JraW5nIGlycXMgZm9yIGUuZy4g Z21idXMgYW5kIGRwIGF1eCB0cmFuc2ZlcnMuICovCj4gIAlpbnRlbF9tb2Rlc2V0X2luaXQoZGV2 KTsKPiAgCj4gKwlpbnRlbF9odWNfaW5pdChkZXYpOwo+ICAJaW50ZWxfZ3VjX2luaXQoZGV2KTsK PiAgCj4gIAlyZXQgPSBpOTE1X2dlbV9pbml0KGRldik7Cj4gQEAgLTYzOCw2ICs2MzksNyBAQCBz dGF0aWMgaW50IGk5MTVfbG9hZF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiAgY2xlYW51cF9nZW06Cj4gIAlpOTE1X2dlbV9maW5pKGRldik7Cj4gIGNsZWFudXBfaXJxOgo+ ICsJaW50ZWxfaHVjX2ZpbmkoZGV2KTsKPiAgCWludGVsX2d1Y19maW5pKGRldik7Cj4gIAlkcm1f aXJxX3VuaW5zdGFsbChkZXYpOwo+ICAJaW50ZWxfdGVhcmRvd25fZ21idXMoZGV2KTsKPiBAQCAt MTMxNSw2ICsxMzE3LDcgQEAgdm9pZCBpOTE1X2RyaXZlcl91bmxvYWQoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiAgCS8qIEZsdXNoIGFueSBvdXRzdGFuZGluZyB1bnBpbl93b3JrLiAqLwo+ICAJ ZHJhaW5fd29ya3F1ZXVlKGRldl9wcml2LT53cSk7Cj4gIAo+ICsJaW50ZWxfaHVjX2ZpbmkoZGV2 KTsKPiAgCWludGVsX2d1Y19maW5pKGRldik7Cj4gIAlpOTE1X2dlbV9maW5pKGRldik7Cj4gIAlp bnRlbF9mYmNfY2xlYW51cF9jZmIoZGV2X3ByaXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ IGluZGV4IGUwY2I3MWMuLjYyNWFhOTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBA QCAtNTUsNiArNTUsNyBAQAo+ICAjaW5jbHVkZSAiaW50ZWxfYmlvcy5oIgo+ICAjaW5jbHVkZSAi aW50ZWxfZHBsbF9tZ3IuaCIKPiAgI2luY2x1ZGUgImludGVsX2d1Yy5oIgo+ICsjaW5jbHVkZSAi aW50ZWxfaHVjLmgiCj4gICNpbmNsdWRlICJpbnRlbF9scmMuaCIKPiAgI2luY2x1ZGUgImludGVs X3JpbmdidWZmZXIuaCIKPiAgCj4gQEAgLTE3NjYsNiArMTc2Nyw3IEBAIHN0cnVjdCBkcm1faTkx NV9wcml2YXRlIHsKPiAgCj4gIAlzdHJ1Y3QgaW50ZWxfZ3Z0IGd2dDsKPiAgCj4gKwlzdHJ1Y3Qg aW50ZWxfaHVjIGh1YzsKPiAgCXN0cnVjdCBpbnRlbF9ndWMgZ3VjOwo+ICAKPiAgCXN0cnVjdCBp bnRlbF9jc3IgY3NyOwo+IEBAIC0yODIyLDYgKzI4MjQsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfY21k X3RhYmxlIHsKPiAgI2RlZmluZSBIQVNfR1VDKGRldikJCShJTlRFTF9JTkZPKGRldiktPmhhc19n dWMpCj4gICNkZWZpbmUgSEFTX0dVQ19VQ09ERShkZXYpCShIQVNfR1VDKGRldikpCj4gICNkZWZp bmUgSEFTX0dVQ19TQ0hFRChkZXYpCShIQVNfR1VDKGRldikpCj4gKyNkZWZpbmUgSEFTX0hVQ19V Q09ERShkZXYpCShIQVNfR1VDKGRldikpCj4gIAo+ICAjZGVmaW5lIEhBU19SRVNPVVJDRV9TVFJF QU1FUihkZXYpIChJTlRFTF9JTkZPKGRldiktPmhhc19yZXNvdXJjZV9zdHJlYW1lcikKPiAgCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmgKPiBpbmRleCBhNDdlMWU0Li42NGU5NDJhIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5oCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmgKPiBAQCAtNjEsOSArNjEsMTIgQEAK PiAgI2RlZmluZSAgIERNQV9BRERSRVNTX1NQQUNFX0dUVAkJICAoOCA8PCAxNikKPiAgI2RlZmlu ZSBETUFfQ09QWV9TSVpFCQkJX01NSU8oMHhjMzEwKQo+ICAjZGVmaW5lIERNQV9DVFJMCQkJX01N SU8oMHhjMzE0KQo+ICsjZGVmaW5lICAgSFVDX1VLRVJORUwJCQkgICgxPDw5KQo+ICAjZGVmaW5l ICAgVU9TX01PVkUJCQkgICgxPDw0KQo+ICAjZGVmaW5lICAgU1RBUlRfRE1BCQkJICAoMTw8MCkK PiAgI2RlZmluZSBETUFfR1VDX1dPUENNX09GRlNFVAkJX01NSU8oMHhjMzQwKQo+ICsjZGVmaW5l ICAgSFVDX0xPQURJTkdfQUdFTlRfVkNSCQkgICgwPDwxKQo+ICsjZGVmaW5lICAgSFVDX0xPQURJ TkdfQUdFTlRfR1VDCQkgICgxPDwxKQo+ICAjZGVmaW5lICAgR1VDX1dPUENNX09GRlNFVF9WQUxV RQkgIDB4ODAwMDAJLyogNTEyS0IgKi8KPiAgI2RlZmluZSBHVUNfTUFYX0lETEVfQ09VTlQJCV9N TUlPKDB4QzNFNCkKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d1Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKPiBpbmRleCA4MTJlNGNh Li5hZjc2ZmZlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5o Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKPiBAQCAtMTYwLDYgKzE2 MCw3IEBAIGV4dGVybiBjb25zdCBjaGFyICppbnRlbF91Y19md19zdGF0dXNfcmVwcihlbnVtIGlu dGVsX3VjX2Z3X3N0YXR1cyBzdGF0dXMpOwo+ICBleHRlcm4gaW50IGludGVsX2d1Y19zdXNwZW5k KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICBleHRlcm4gaW50IGludGVsX2d1Y19yZXN1bWUo c3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gIHZvaWQgaW50ZWxfdWNfZndfZmV0Y2goc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdyk7Cj4gK3UzMiBndWNf d29wY21fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAKPiAgLyog aTkxNV9ndWNfc3VibWlzc2lvbi5jICovCj4gIGludCBpOTE1X2d1Y19zdWJtaXNzaW9uX2luaXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZ3VjX2xvYWRlci5jCj4gaW5kZXggMGI4NjNhMS4uMGQyMTRiNCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKPiBAQCAtMzA1LDcgKzMwNSw4IEBAIHN0 YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXJfZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiAgCUk5MTVfV1JJVEUoRE1BX0FERFJfMV9ISUdILCBETUFfQUREUkVTU19TUEFDRV9X T1BDTSk7Cj4gIAo+ICAJLyogRmluYWxseSBzdGFydCB0aGUgRE1BICovCj4gLQlJOTE1X1dSSVRF KERNQV9DVFJMLCBfTUFTS0VEX0JJVF9FTkFCTEUoVU9TX01PVkUgfCBTVEFSVF9ETUEpKTsKPiAr CUk5MTVfV1JJVEUoRE1BX0NUUkwsIF9NQVNLRURfQklUX0VOQUJMRShVT1NfTU9WRSB8IFNUQVJU X0RNQSkgfAo+ICsJCQlfTUFTS0VEX0JJVF9ESVNBQkxFKEhVQ19VS0VSTkVMKSk7Cj4gIAo+ICAJ LyoKPiAgCSAqIFdhaXQgZm9yIHRoZSBETUEgdG8gY29tcGxldGUgJiB0aGUgR3VDIHRvIHN0YXJ0 IHVwLgo+IEBAIC0zMzAsNyArMzMxLDcgQEAgc3RhdGljIGludCBndWNfdWNvZGVfeGZlcl9kbWEo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ ICAKPiAtc3RhdGljIHUzMiBndWNfd29wY21fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gK3UzMiBndWNfd29wY21fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gIHsKPiAgCXUzMiB3b3BjbV9zaXplID0gR1VDX1dPUENNX1RPUDsKPiAgCj4g QEAgLTUwOCw2ICs1MDksNyBAQCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gIAkJaWYgKGVycikKPiAgCQkJZ290byBmYWlsOwo+ICAKPiArCQlpbnRlbF9odWNf bG9hZChkZXYpOwo+ICAJCWVyciA9IGd1Y191Y29kZV94ZmVyKGRldl9wcml2KTsKPiAgCQlpZiAo IWVycikKPiAgCQkJYnJlYWs7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2h1Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmgKPiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjk0NmNhYTcKPiAtLS0gL2Rldi9udWxsCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmgKPiBAQCAtMCwwICsxLDQ0IEBACj4g Ky8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE0IEludGVsIENvcnBvcmF0aW9uCgpTaG91bGQgdGhp cyBiZSAyMDE2PwoKPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlz IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdh cmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg aW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29w eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICog YW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z IHRvIHdob20gdGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5 cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5l eHQKPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1 YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhF IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ TkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU TyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFM TAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9N LCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9S IE9USEVSIERFQUxJTkdTCj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiArICoKPiArICovCj4gKyNp Zm5kZWYgX0lOVEVMX0hVQ19IXwo+ICsjZGVmaW5lIF9JTlRFTF9IVUNfSF8KPiArCj4gKyNpbmNs dWRlICJpbnRlbF9ndWMuaCIKPiArCj4gKyNkZWZpbmUgSFVDX1NUQVRVUzIJCV9NTUlPKDB4RDNC MCkKPiArI2RlZmluZSAgIEhVQ19GV19WRVJJRklFRAkoMTw8NykKPiArCj4gK3N0cnVjdCBpbnRl bF9odWMgewo+ICsJLyogR2VuZXJpYyB1QyBmaXJtd2FyZSBtYW5hZ2VtZW50ICovCj4gKwlzdHJ1 Y3QgaW50ZWxfdWNfZncgaHVjX2Z3Owo+ICsKPiArCS8qIEh1Qy1zcGVjaWZpYyBhZGRpdGlvbnMg Ki8KPiArfTsKPiArCj4gK2V4dGVybiB2b2lkIGludGVsX2h1Y19pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpOwo+ICtleHRlcm4gaW50IGludGVsX2h1Y19sb2FkKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpOwo+ICtleHRlcm4gdm9pZCBpbnRlbF9odWNfYXV0aChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KTsKPiArZXh0ZXJuIHZvaWQgaW50ZWxfaHVjX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRl dik7Cj4gKwo+ICsjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaHVjX2xvYWRlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjX2xvYWRlci5j Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi4xYWFmZjY3Cj4gLS0tIC9k ZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYwo+ IEBAIC0wLDAgKzEsMjY4IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE0IEludGVsIENv cnBvcmF0aW9uCgpTaG91bGQgdGhpcyBiZSAyMDE2PwoKPiArICoKPiArICogUGVybWlzc2lvbiBp 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 RS4KPiArICoKPiArICovCj4gKyNpbmNsdWRlIDxsaW51eC9maXJtd2FyZS5oPgo+ICsjaW5jbHVk ZSAiaTkxNV9kcnYuaCIKPiArI2luY2x1ZGUgImludGVsX2h1Yy5oIgo+ICsKPiArLyoqCj4gKyAq IERPQzogSHVDIEZpcm13YXJlCj4gKyAqCj4gKyAqIE1vdGl2YXRpb246Cj4gKyAqIEdFTjkgaW50 cm9kdWNlcyBhIG5ldyBkZWRpY2F0ZWQgZmlybXdhcmUgZm9yIHVzYWdlIGluIG1lZGlhIEhFVkMg KEhpZ2gKPiArICogRWZmaWNpZW5jeSBWaWRlbyBDb2RpbmcpIG9wZXJhdGlvbnMuIFVzZXJzcGFj ZSBjYW4gdXNlIHRoZSBmaXJtd2FyZQo+ICsgKiBjYXBhYmlsaXRpZXMgYnkgYWRkaW5nIEh1QyBz cGVjaWZpYyBjb21tYW5kcyB0byBiYXRjaCBidWZmZXJzLgo+ICsgKgo+ICsgKiBJbXBsZW1lbnRh dGlvbjoKPiArICogT24gc3VwcG9ydGVkIHBsYXRmb3JtcywgaTkxNSdzIGpvYiBpcyB0byBsb2Fk IHRoZSBmaXJtd2FyZSBzdG9yZWQgb24gdGhlCj4gKyAqIGZpbGUgc3lzdGVtIGFuZCBhc3Npc3Qg d2l0aCBhdXRoZW50aWNhdGlvbi4gSXQgaXMgdXAgdG8gdXNlcnNwYWNlIHRvCj4gKyAqIGRldGVj dCB0aGUgcHJlc2VuY2Ugb2YgSHVDIHN1cHBvcnQgb24gYSBwbGF0Zm9ybSwgb24gdGhlaXIgb3du Lgo+ICsgKiBGb3IgZGVidWdnaW5nLCBpOTE1IHByb3ZpZGVzIGEgZGVidWdmcyBmaWxlLCBpOTE1 X2h1Y19sb2FkX3N0YXR1c19pbmZvCj4gKyAqIHdoaWNoIGRpc3BsYXlzIHRoZSBmaXJtd2FyZSBs b2FkIHN0YXR1cy4KQWJvdmUgY29tbWVudCByZWZlcnMgdG8gZmVhdHVyZXMgYWRkZWQgaW4gc3Vi c2VxdWVudCBwYXRjaGVzIGFuZCBpcyBub3QKZW50aXJlbHkgYWNjdXJhdGUgYXQgdGhhdC4gU28g SSB3b3VsZCBqdXN0IHJlbW92ZSB0aGlzIHdob2xlIGJsb2NrLiBMZXNzCmNvbW1lbnRpbmcgaXMg YmV0dGVyIHRoYW4gbWlzbGVhZGluZyBjb21tZW50aW5nLgoKPiArICoKPiArICogVGhlIHNhbWUg ZmlybXdhcmUgbG9hZGVyIGlzIHVzZWQgYXMgdGhlIEd1Qy4gRmlybXdhcmUgKiBiaW5hcnkgaXMg ZmV0Y2hlZCBieQo+ICsgKiB0aGUgbG9hZGVyIGFzeW5jaHJvbm91c2x5IGZyb20gdGhlIGRyaXZl ciBpbml0IHByb2Nlc3MuIEhvd2V2ZXIsIHRoZSBhY3R1YWwKUmVtb3ZlICogZnJvbSAiRmlybXdh cmUgKiBiaW5hcnkiLiBMb2FkaW5nIGlzIG5vdCBhc3luY2hyb25vdXMgc28gcmVtb3ZlIHRoaXMK c3RhdGVtZW50LgoKPiArICogbG9hZGluZyB0byBIVyBpcyBkZWZlcnJlZCB1bnRpbCBHRU0gaW5p dGlhbGl6YXRpb24gaXMgZG9uZS4KPiArICoKPiArICogTm90ZSB0aGF0IEh1QyBmaXJtd2FyZSBs b2FkaW5nIG11c3QgYmUgZG9uZSBiZWZvcmUgR3VDIGxvYWRpbmcuCj4gKyAqLwo+ICsKPiArI2Rl ZmluZSBJOTE1X1NLTF9IVUNfVUNPREUgImk5MTUvc2tsX2h1Y192ZXIwMV8wN18xMzk4LmJpbiIK PiArTU9EVUxFX0ZJUk1XQVJFKEk5MTVfU0tMX0hVQ19VQ09ERSk7ClBsZWFzZSB1cGRhdGUgdG8g dXNlIHRoZSBuZXcgYXBwcm9hY2ggdXNlZCBieSBHdUMgZm9yIHNwZWNpZnlpbmcKcmVxdWlyZWQg dmVyc2lvbiBhbmQgY29uc3RydWN0aW5nIHRoZSBmaWxlIHBhdGguIFNlZSBpbnRlbF9ndWNfbG9h ZGVyLmMuCkh1QyBmaXJtd2FyZSB2ZXJzaW9uaW5nIGluY2x1ZGVzIHRoZSBidWlsZCBudW1iZXIg YWZ0ZXIgdGhlIG1pbm9yIHNvCnNvbWUgbW9kaWZpY2F0aW9uIHdpbGwgYmUgbmVlZGVkLgoKPiAr Cj4gKy8qKgo+ICsgKiBpbnRlbF9odWNfbG9hZF91Y29kZSgpIC0gRE1BJ3MgdGhlIGZpcm13YXJl Cj4gKyAqIEBkZXY6IHRoZSBkcm0gZGV2aWNlCkZpeCBuYW1lIGFuZCBwYXJhbWV0ZXIKCj4gKyAq Cj4gKyAqIFRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIGdlbSBvYmplY3QgY29udGFpbmluZyB0aGUg ZmlybXdhcmUsIHNldHMgdXAgdGhlIERNQQo+ICsgKiBlbmdpbmUgTU1JTywgdHJpZ2dlcnMgdGhl IERNQSBvcGVyYXRpb24gYW5kIHdhaXRzIGZvciBpdCB0byBmaW5pc2guCj4gKyAqCj4gKyAqIFRy YW5zZmVyIHRoZSBmaXJtd2FyZSBpbWFnZSB0byBSQU0gZm9yIGV4ZWN1dGlvbiBieSB0aGUgbWlj cm9jb250cm9sbGVyLgo+ICsgKgo+ICsgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgbm9uLXplcm8g b24gZmFpbHVyZQo+ICsgKi8KPiArCj4gK3N0YXRpYyBpbnQgaHVjX3Vjb2RlX3hmZXIoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncg Kmh1Y19mdyA9ICZkZXZfcHJpdi0+aHVjLmh1Y19mdzsKPiArCXN0cnVjdCBpOTE1X3ZtYSAqdm1h Owo+ICsJdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwOwo+ICsJdTMyIHNpemU7Cj4gKwlpbnQgcmV0 Owo+ICsKPiArCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihodWNfZnct PnVjX2Z3X29iaiwgZmFsc2UpOwo+ICsJaWYgKHJldCkgewo+ICsJCURSTV9ERUJVR19EUklWRVIo InNldC1kb21haW4gZmFpbGVkICVkXG4iLCByZXQpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4g Kwo+ICsJdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKGh1Y19mdy0+dWNfZndfb2JqLCBO VUxMLCAwLCAwLCAwKTsKPiArCWlmIChJU19FUlIodm1hKSkgewo+ICsJCURSTV9ERUJVR19EUklW RVIoInBpbiBmYWlsZWQgJWRcbiIsIChpbnQpUFRSX0VSUih2bWEpKTsKPiArCQlyZXR1cm4gUFRS X0VSUih2bWEpOwo+ICsJfQo+ICsKPiArCS8qIEludmFsaWRhdGUgR3VDIFRMQiB0byBsZXQgR3VD IHRha2UgdGhlIGxhdGVzdCB1cGRhdGVzIHRvIEdUVC4gKi8KPiArCUk5MTVfV1JJVEUoR0VOOF9H VENSLCBHRU44X0dUQ1JfSU5WQUxJREFURSk7Cj4gKwo+ICsJV0FSTl9PTighbXV0ZXhfaXNfbG9j a2VkKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCkpOwpJIGRvbid0IHNlZSByZWFzb24gZm9y IHRoaXMgV0FSTl9PTiBjaGVjay4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQKaW4gd2VsbCBkZWZp bmVkIHBhdGhzIHRoYXQgcmVxdWlyZSBsb2NraW5nIHdheSB1cCB0aGUgY2hhaW4uCkkgdGhpbmsg d2UgY2FuIHJlbW92ZSBpdC4KCj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJp diwgRk9SQ0VXQUtFX0FMTCk7Cj4gKwo+ICsJLyogaW5pdCBXT1BDTSAqLwo+ICsJSTkxNV9XUklU RShHVUNfV09QQ01fU0laRSwgZ3VjX3dvcGNtX3NpemUoZGV2X3ByaXYpKTsKPiArCUk5MTVfV1JJ VEUoRE1BX0dVQ19XT1BDTV9PRkZTRVQsIEdVQ19XT1BDTV9PRkZTRVRfVkFMVUUgfAo+ICsJCQlI VUNfTE9BRElOR19BR0VOVF9HVUMpOwo+ICsKPiArCS8qIFNldCB0aGUgc291cmNlIGFkZHJlc3Mg Zm9yIHRoZSB1Q29kZSAqLwo+ICsJb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldCh2bWEpICsgaHVj X2Z3LT5oZWFkZXJfb2Zmc2V0Owo+ICsJSTkxNV9XUklURShETUFfQUREUl8wX0xPVywgbG93ZXJf MzJfYml0cyhvZmZzZXQpKTsKPiArCUk5MTVfV1JJVEUoRE1BX0FERFJfMF9ISUdILCB1cHBlcl8z Ml9iaXRzKG9mZnNldCkgJiAweEZGRkYpOwo+ICsKPiArCS8qIEhhcmR3YXJlIGRvZXNuJ3QgbG9v ayBhdCBkZXN0aW5hdGlvbiBhZGRyZXNzIGZvciBIdUMuIFNldCBpdCB0byAwLAo+ICsJICogYnV0 IHN0aWxsIHByb2dyYW0gdGhlIGNvcnJlY3QgYWRkcmVzcyBzcGFjZS4KPiArCSAqLwo+ICsJSTkx NV9XUklURShETUFfQUREUl8xX0xPVywgMCk7Cj4gKwlJOTE1X1dSSVRFKERNQV9BRERSXzFfSElH SCwgRE1BX0FERFJFU1NfU1BBQ0VfV09QQ00pOwo+ICsKPiArCXNpemUgPSBodWNfZnctPmhlYWRl cl9zaXplICsgaHVjX2Z3LT51Y29kZV9zaXplOwo+ICsJSTkxNV9XUklURShETUFfQ09QWV9TSVpF LCBzaXplKTsKPiArCj4gKwkvKiBTdGFydCB0aGUgRE1BICovCj4gKwlJOTE1X1dSSVRFKERNQV9D VFJMLCBfTUFTS0VEX0JJVF9FTkFCTEUoSFVDX1VLRVJORUwgfCBTVEFSVF9ETUEpKTsKPiArCj4g KwkvKiBXYWl0IGZvciBETUEgdG8gZmluaXNoICovCj4gKwlyZXQgPSB3YWl0X2ZvcigoSTkxNV9S RUFEKERNQV9DVFJMKSAmIFNUQVJUX0RNQSkgPT0gMCwgMTAwKTsKPiArCj4gKwlEUk1fREVCVUdf RFJJVkVSKCJIdUMgRE1BIHRyYW5zZmVyIHdhaXQgb3ZlciB3aXRoIHJldCAlZFxuIiwgcmV0KTsK PiArCj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FM TCk7Cj4gKwo+ICsJLyoKPiArCSAqIFdlIGtlZXAgdGhlIG9iamVjdCBwYWdlcyBmb3IgcmV1c2Ug ZHVyaW5nIHJlc3VtZS4gQnV0IHdlIGNhbiB1bnBpbiBpdAo+ICsJICogbm93IHRoYXQgRE1BIGhh cyBjb21wbGV0ZWQsIHNvIGl0IGRvZXNuJ3QgY29udGludWUgdG8gdGFrZSB1cCBzcGFjZS4KPiAr CSAqLwo+ICsJaTkxNV92bWFfdW5waW4odm1hKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4g Kwo+ICsvKioKPiArICogaW50ZWxfaHVjX2luaXQoKSAtIGluaXRpYXRlIEh1QyBmaXJtd2FyZSBs b2FkaW5nIHJlcXVlc3QKPiArICogQGRldjogdGhlIGRybSBkZXZpY2UKPiArICoKPiArICogQ2Fs bGVkIGVhcmx5IGR1cmluZyBkcml2ZXIgbG9hZCwgYnV0IGFmdGVyIEdFTSBpcyBpbml0aWFsaXNl ZC4gVGhlIGxvYWRpbmcKPiArICogd2lsbCBjb250aW51ZSBvbmx5IHdoZW4gZHJpdmVyIGV4cGxp Y2l0bHkgc3BlY2lmeSBmaXJtd2FyZSBuYW1lIGFuZCB2ZXJzaW9uLgo+ICsgKiBBbGwgb3RoZXIg Y2FzZXMgYXJlIGNvbnNpZGVyZWQgYXMgVUNfRklSTVdBUkVfTk9ORSBlaXRoZXIgYmVjYXVzZSBI VyBpcyBub3QKPiArICogY2FwYWJsZSBvciBkcml2ZXIgeWV0IHN1cHBvcnQgaXQuIEFuZCB0aGVy ZSB3aWxsIGJlIG5vIGVycm9yIG1lc3NhZ2UgZm9yCj4gKyAqIFVDX0ZJUk1XQVJFX05PTkUgY2Fz ZXMuCj4gKyAqCj4gKyAqIFRoZSBETUEtY29weWluZyB0byBIVyBpcyBkb25lIGxhdGVyIHdoZW4g aW50ZWxfaHVjX3Vjb2RlX2xvYWQoKSBpcyBjYWxsZWQuCmludGVsX2h1Y191Y29kZV9sb2FkKCkg c2hvdWxkIGJlIGludGVsX2h1Y19sb2FkKCkuCgo+ICsgKi8KPiArdm9pZCBpbnRlbF9odWNfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfaHVjICpodWMgPSAm ZGV2X3ByaXYtPmh1YzsKPiArCXN0cnVjdCBpbnRlbF91Y19mdyAqaHVjX2Z3ID0gJmh1Yy0+aHVj X2Z3Owo+ICsJY29uc3QgY2hhciAqZndfcGF0aCA9IE5VTEw7Cj4gKwo+ICsJaHVjX2Z3LT51Y19k ZXYgPSBkZXY7Cj4gKwlodWNfZnctPnVjX2Z3X3BhdGggPSBOVUxMOwo+ICsJaHVjX2Z3LT5mZXRj aF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9OT05FOwo+ICsJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IFVD X0ZJUk1XQVJFX05PTkU7Cj4gKwlodWNfZnctPmZ3X3R5cGUgPSBVQ19GV19UWVBFX0hVQzsKPiAr Cj4gKwlpZiAoIUhBU19IVUNfVUNPREUoZGV2X3ByaXYpKQo+ICsJCXJldHVybjsKPiArCj4gKwlp ZiAoSVNfU0tZTEFLRShkZXZfcHJpdikpIHsKPiArCQlmd19wYXRoID0gSTkxNV9TS0xfSFVDX1VD T0RFOwo+ICsJCWh1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCA9IDE7Cj4gKwkJaHVjX2Z3LT5taW5v cl92ZXJfd2FudGVkID0gNzsKPiArCX0KPiArCj4gKwlpZiAoZndfcGF0aCA9PSBOVUxMKQo+ICsJ CXJldHVybjsKPiArCj4gKwlodWNfZnctPnVjX2Z3X3BhdGggPSBmd19wYXRoOwo+ICsJaHVjX2Z3 LT5mZXRjaF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9QRU5ESU5HOwo+ICsKPiArCURSTV9ERUJVR19E UklWRVIoIkh1QyBmaXJtd2FyZSBwZW5kaW5nLCBwYXRoICVzXG4iLCBmd19wYXRoKTsKPiArCj4g KwlpbnRlbF91Y19md19mZXRjaChkZXYsIGh1Y19mdyk7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBp bnRlbF9odWNfbG9hZCgpIC0gbG9hZCBIdUMgdUNvZGUgdG8gZGV2aWNlCj4gKyAqIEBkZXY6IHRo ZSBkcm0gZGV2aWNlCj4gKyAqCj4gKyAqIENhbGxlZCBmcm9tIGdlbV9pbml0X2h3KCkgZHVyaW5n IGRyaXZlciBsb2FkaW5nIGFuZCBhbHNvIGFmdGVyIGEgR1BVIHJlc2V0Lgo+ICsgKiBCZSBub3Rl IHRoYXQgSHVDIGxvYWRpbmcgbXVzdCBiZSBkb25lIGJlZm9yZSBHdUMgbG9hZGluZy4KPiArICoK PiArICogVGhlIGZpcm13YXJlIGltYWdlIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBmZXRjaGVk IGludG8gbWVtb3J5IGJ5IHRoZQo+ICsgKiBlYXJsaWVyIGNhbGwgdG8gaW50ZWxfaHVjX3Vjb2Rl X2luaXQoKSwgc28gaGVyZSB3ZSBuZWVkIG9ubHkgY2hlY2sgdGhhdAo+ICsgKiBpcyBzdWNjZWVk ZWQsIGFuZCB0aGVuIHRyYW5zZmVyIHRoZSBpbWFnZSB0byB0aGUgaC93Lgo+ICsgKgo+ICsgKiBS ZXR1cm46CW5vbi16ZXJvIGNvZGUgb24gZXJyb3IKPiArICovCj4gK2ludCBpbnRlbF9odWNfbG9h ZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19m dyA9ICZkZXZfcHJpdi0+aHVjLmh1Y19mdzsKPiArCWludCBlcnI7Cj4gKwo+ICsJaWYgKGh1Y19m dy0+ZmV0Y2hfc3RhdHVzID09IFVDX0ZJUk1XQVJFX05PTkUpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ ICsJRFJNX0RFQlVHX0RSSVZFUigiJXMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwK PiArCQlodWNfZnctPnVjX2Z3X3BhdGgsCj4gKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVj X2Z3LT5mZXRjaF9zdGF0dXMpLAo+ICsJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+ bG9hZF9zdGF0dXMpKTsKPiArCj4gKwlpZiAoaHVjX2Z3LT5mZXRjaF9zdGF0dXMgPT0gVUNfRklS TVdBUkVfU1VDQ0VTUyAmJgo+ICsJICAgIGh1Y19mdy0+bG9hZF9zdGF0dXMgPT0gVUNfRklSTVdB UkVfRkFJTCkKPiArCQlyZXR1cm4gLUVOT0VYRUM7Cj4gKwo+ICsJaHVjX2Z3LT5sb2FkX3N0YXR1 cyA9IFVDX0ZJUk1XQVJFX1BFTkRJTkc7Cj4gKwo+ICsJc3dpdGNoIChodWNfZnctPmZldGNoX3N0 YXR1cykgewo+ICsJY2FzZSBVQ19GSVJNV0FSRV9GQUlMOgo+ICsJCS8qIHNvbWV0aGluZyB3ZW50 IHdyb25nIDooICovCj4gKwkJZXJyID0gLUVJTzsKPiArCQlnb3RvIGZhaWw7Cj4gKwo+ICsJY2Fz ZSBVQ19GSVJNV0FSRV9OT05FOgo+ICsJY2FzZSBVQ19GSVJNV0FSRV9QRU5ESU5HOgo+ICsJZGVm YXVsdDoKPiArCQkvKiAiY2FuJ3QgaGFwcGVuIiAqLwo+ICsJCVdBUk5fT05DRSgxLCAiSHVDIGZ3 ICVzIGludmFsaWQgZmV0Y2hfc3RhdHVzICVzIFslZF1cbiIsCj4gKwkJCWh1Y19mdy0+dWNfZndf cGF0aCwKPiArCQkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5mZXRjaF9zdGF0dXMp LAo+ICsJCQlodWNfZnctPmZldGNoX3N0YXR1cyk7Cj4gKwkJZXJyID0gLUVOWElPOwo+ICsJCWdv dG8gZmFpbDsKPiArCj4gKwljYXNlIFVDX0ZJUk1XQVJFX1NVQ0NFU1M6Cj4gKwkJYnJlYWs7Cj4g Kwl9Cj4gKwo+ICsJZXJyID0gaHVjX3Vjb2RlX3hmZXIoZGV2X3ByaXYpOwo+ICsJaWYgKGVycikK PiArCQlnb3RvIGZhaWw7Cj4gKwo+ICsJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJF X1NVQ0NFU1M7Cj4gKwo+ICsJRFJNX0RFQlVHX0RSSVZFUigiJXMgZncgc3RhdHVzOiBmZXRjaCAl cywgbG9hZCAlc1xuIiwKPiArCQlodWNfZnctPnVjX2Z3X3BhdGgsCj4gKwkJaW50ZWxfdWNfZndf c3RhdHVzX3JlcHIoaHVjX2Z3LT5mZXRjaF9zdGF0dXMpLAo+ICsJCWludGVsX3VjX2Z3X3N0YXR1 c19yZXByKGh1Y19mdy0+bG9hZF9zdGF0dXMpKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArCj4gK2Zh aWw6Cj4gKwlpZiAoaHVjX2Z3LT5sb2FkX3N0YXR1cyA9PSBVQ19GSVJNV0FSRV9QRU5ESU5HKQo+ ICsJCWh1Y19mdy0+bG9hZF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9GQUlMOwo+ICsKPiArCURSTV9F UlJPUigiRmFpbGVkIHRvIGNvbXBsZXRlIEh1QyB1Q29kZSBsb2FkIHdpdGggcmV0ICVkXG4iLCBl cnIpOwo+ICsKPiArCXJldHVybiBlcnI7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBpbnRlbF9odWNf ZmluaSgpIC0gY2xlYW4gdXAgcmVzb3VyY2VzIGFsbG9jYXRlZCBmb3IgSHVDCj4gKyAqIEBkZXY6 IHRoZSBkcm0gZGV2aWNlCj4gKyAqCj4gKyAqIENsZWFucyB1cCBieSByZWxlYXNpbmcgdGhlIGh1 YyBmaXJtd2FyZSBHRU0gb2JqLgo+ICsgKi8KPiArdm9pZCBpbnRlbF9odWNfZmluaShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZkZXZf cHJpdi0+aHVjLmh1Y19mdzsKPiArCj4gKwltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7 Cj4gKwlpZiAoaHVjX2Z3LT51Y19md19vYmopCj4gKwkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVu Y2UoJmh1Y19mdy0+dWNfZndfb2JqLT5iYXNlKTsKVGhlc2UgYXJlIG5vdyByZXBsYWNlZCB3aXRo IGk5MTVfZ2VtX29iamVjdF9wdXQoaHVjX2Z3LT51Y19md19vYmopCgo+ICsJaHVjX2Z3LT51Y19m d19vYmogPSBOVUxMOwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwo+ ICsJaHVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9OT05FOwo+ICt9Cj4gLS0gCj4g Mi43LjQKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==