From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carlos Santa Subject: Re: [PATCH 3/8] drm/i915/huc: Add HuC fw loading support Date: Mon, 24 Oct 2016 14:24:01 -0700 Message-ID: <1477344241.27435.3.camel@intel.com> References: <1475520182-9224-1-git-send-email-anusha.srivatsa@intel.com> <1475520182-9224-4-git-send-email-anusha.srivatsa@intel.com> <20161013174241.GE18646@jeffdesk> <20161013205433.GG18646@jeffdesk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9FAF16E5C6 for ; Mon, 24 Oct 2016 21:23:02 +0000 (UTC) In-Reply-To: <20161013205433.GG18646@jeffdesk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jeff McGee , Anusha Srivatsa Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyMDE2LTEwLTEzIGF0IDEzOjU0IC0wNzAwLCBKZWZmIE1jR2VlIHdyb3RlOgo+IE9u IFRodSwgT2N0IDEzLCAyMDE2IGF0IDEwOjQyOjQyQU0gLTA3MDAsIEplZmYgTWNHZWUgd3JvdGU6 Cj4gPiAKPiA+IE9uIE1vbiwgT2N0IDAzLCAyMDE2IGF0IDExOjQyOjU3QU0gLTA3MDAsIEFudXNo YSBTcml2YXRzYSB3cm90ZToKPiA+ID4gCj4gPiA+IEZyb206IFBldGVyIEFudG9pbmUgPHBldGVy LmFudG9pbmVAaW50ZWwuY29tPgo+ID4gPiAKPiA+ID4gVGhlIEh1QyBsb2FkaW5nIHByb2Nlc3Mg aXMgc2ltaWxhciB0byBHdUMuIFRoZQo+ID4gPiBpbnRlbF91Y19md19mZXRjaCgpCj4gPiA+IGlz IHVzZWQgZm9yIGJvdGggY2FzZXMuCj4gPiA+IAo+ID4gPiBIdUMgbG9hZGluZyBuZWVkcyB0byBi ZSBiZWZvcmUgR3VDIGxvYWRpbmcuIFRoZSBXT1BDTSBzZXR0aW5nCj4gPiA+IG11c3QKPiA+ID4g YmUgZG9uZSBlYXJseSBiZWZvcmUgbG9hZGluZyBhbnkgb2YgdGhlbS4KPiA+ID4gCj4gPiA+IHYy OiByZWJhc2VkIG9uLXRvcCBvZiBkcm0taW50ZWwtbmlnaHRseS4KPiA+ID4gwqDCoMKgwqByZW1v dmVkIGlmKEhBU19HVUMoKSkgYmVmb3JlIHRoZSBndWMgY2FsbC4gKEQuR29yZG9uKQo+ID4gPiDC oMKgwqDCoHVwZGF0ZSBodWNfdmVyc2lvbiBudW1iZXIgb2YgZm9ybWF0Lgo+ID4gPiB2MzogcmVi YXNlZCB0byBkcm0taW50ZWwtbmlnaHRseSwgY2hhbmdlZCB0aGUgZmlsZSBuYW1lIGZvcm1hdCB0 bwo+ID4gPiDCoMKgwqDCoG1hdGNoIHRoZSBvbmUgaW4gdGhlIGh1YyBwYWNrYWdlLgo+ID4gPiDC oMKgwqDCoENoYW5nZWQgZGV2LT5kZXZfcHJpdmF0ZSB0byB0b19pOTE1KCkKPiA+ID4gdjQ6IG1v dmVkIGZ1bmN0aW9uIGJhY2sgdG8gd2hlcmUgaXQgd2FzLgo+ID4gPiDCoMKgwqDCoGNoYW5nZSB3 YWl0X2Zvcl9hdG9taWMgdG8gd2FpdF9mb3IuCj4gPiA+IHY1OiByZWJhc2VkICsgY29tbWVudCBj aGFuZ2VzLgo+ID4gPiB2NzogcmViYXNlZC4KPiA+ID4gdjg6IHJlYmFzZWQuCj4gPiA+IAo+ID4g PiBUZXN0ZWQtYnk6IFhpYW5nIEhhaWhhbyA8aGFpaGFvLnhpYW5nQGludGVsLmNvbT4KPiA+ID4g U2lnbmVkLW9mZi1ieTogQW51c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwuY29t Pgo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBBbGV4IERhaSA8eXUuZGFpQGludGVsLmNvbT4KPiA+ID4g U2lnbmVkLW9mZi1ieTogUGV0ZXIgQW50b2luZSA8cGV0ZXIuYW50b2luZUBpbnRlbC5jb20+Cj4g PiA+IFJldmlld2VkLWJ5OiBEYXZlIEdvcmRvbiA8ZGF2aWQucy5nb3Jkb25AaW50ZWwuY29tPgo+ ID4gPiAtLS0KPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZcKgwqDCoMKgwqDC oMKgwqDCoMKgwqB8wqDCoMKgMSArCj4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuY8KgwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqAzICsKPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5owqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDMgKwo+ID4gPiDCoGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5owqDCoMKgwqDCoHzCoMKgwqAzICsKPiA+ID4g wqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaMKgwqDCoMKgwqDCoMKgwqB8wqDCoMKg MSArCj4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jIHzCoMKg wqA2ICstCj4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmjCoMKgwqDCoMKg wqDCoMKgfMKgwqA0NCArKysrKysKPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9o dWNfbG9hZGVyLmMgfCAyNjgKPiA+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK PiA+ID4gwqA4IGZpbGVzIGNoYW5nZWQsIDMyNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQo+ID4gPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9o dWMuaAo+ID4gPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9odWNfbG9hZGVyLmMKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9NYWtlZmlsZQo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gPiA+ IGluZGV4IGU2ZmUwMDQuLjZlOTljNTEgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L01ha2VmaWxlCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxl Cj4gPiA+IEBAIC01Myw2ICs1Myw3IEBAIGk5MTUteSArPSBpOTE1X2NtZF9wYXJzZXIubyBcCj4g PiA+IMKgCj4gPiA+IMKgIyBnZW5lcmFsLXB1cnBvc2UgbWljcm9jb250cm9sbGVyIChHdUMpIHN1 cHBvcnQKPiA+ID4gwqBpOTE1LXkgKz0gaW50ZWxfZ3VjX2xvYWRlci5vIFwKPiA+ID4gKwnCoMKg aW50ZWxfaHVjX2xvYWRlci5vIFwKPiA+ID4gwqAJwqDCoGk5MTVfZ3VjX3N1Ym1pc3Npb24ubwo+ ID4gPiDCoAo+ID4gPiDCoCMgYXV0b2dlbmVyYXRlZCBudWxsIHJlbmRlciBzdGF0ZQo+ID4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ID4gPiBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiA+ID4gaW5kZXggMzFiMmI2My4uN2FmN2JkNiAx MDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ID4gPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gPiA+IEBAIC02MTMsNiArNjEz LDcgQEAgc3RhdGljIGludCBpOTE1X2xvYWRfbW9kZXNldF9pbml0KHN0cnVjdAo+ID4gPiBkcm1f ZGV2aWNlICpkZXYpCj4gPiA+IMKgCcKgKiB3b3JraW5nIGlycXMgZm9yIGUuZy4gZ21idXMgYW5k IGRwIGF1eCB0cmFuc2ZlcnMuICovCj4gPiA+IMKgCWludGVsX21vZGVzZXRfaW5pdChkZXYpOwo+ ID4gPiDCoAo+ID4gPiArCWludGVsX2h1Y19pbml0KGRldik7Cj4gPiA+IMKgCWludGVsX2d1Y19p bml0KGRldik7Cj4gPiA+IMKgCj4gPiA+IMKgCXJldCA9IGk5MTVfZ2VtX2luaXQoZGV2KTsKPiA+ ID4gQEAgLTYzOCw2ICs2MzksNyBAQCBzdGF0aWMgaW50IGk5MTVfbG9hZF9tb2Rlc2V0X2luaXQo c3RydWN0Cj4gPiA+IGRybV9kZXZpY2UgKmRldikKPiA+ID4gwqBjbGVhbnVwX2dlbToKPiA+ID4g wqAJaTkxNV9nZW1fZmluaShkZXYpOwo+ID4gPiDCoGNsZWFudXBfaXJxOgo+ID4gPiArCWludGVs X2h1Y19maW5pKGRldik7Cj4gPiA+IMKgCWludGVsX2d1Y19maW5pKGRldik7Cj4gPiA+IMKgCWRy bV9pcnFfdW5pbnN0YWxsKGRldik7Cj4gPiA+IMKgCWludGVsX3RlYXJkb3duX2dtYnVzKGRldik7 Cj4gPiA+IEBAIC0xMzE1LDYgKzEzMTcsNyBAQCB2b2lkIGk5MTVfZHJpdmVyX3VubG9hZChzdHJ1 Y3QgZHJtX2RldmljZQo+ID4gPiAqZGV2KQo+ID4gPiDCoAkvKiBGbHVzaCBhbnkgb3V0c3RhbmRp bmcgdW5waW5fd29yay4gKi8KPiA+ID4gwqAJZHJhaW5fd29ya3F1ZXVlKGRldl9wcml2LT53cSk7 Cj4gPiA+IMKgCj4gPiA+ICsJaW50ZWxfaHVjX2ZpbmkoZGV2KTsKPiA+ID4gwqAJaW50ZWxfZ3Vj X2ZpbmkoZGV2KTsKPiA+ID4gwqAJaTkxNV9nZW1fZmluaShkZXYpOwo+ID4gPiDCoAlpbnRlbF9m YmNfY2xlYW51cF9jZmIoZGV2X3ByaXYpOwo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPiA+ID4gaW5kZXggZTBjYjcxYy4uNjI1YWE5MiAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4gPiA+IEBAIC01NSw2ICs1NSw3IEBACj4gPiA+IMKgI2luY2x1ZGUgImlu dGVsX2Jpb3MuaCIKPiA+ID4gwqAjaW5jbHVkZSAiaW50ZWxfZHBsbF9tZ3IuaCIKPiA+ID4gwqAj aW5jbHVkZSAiaW50ZWxfZ3VjLmgiCj4gPiA+ICsjaW5jbHVkZSAiaW50ZWxfaHVjLmgiCj4gPiA+ IMKgI2luY2x1ZGUgImludGVsX2xyYy5oIgo+ID4gPiDCoCNpbmNsdWRlICJpbnRlbF9yaW5nYnVm ZmVyLmgiCj4gPiA+IMKgCj4gPiA+IEBAIC0xNzY2LDYgKzE3NjcsNyBAQCBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSB7Cj4gPiA+IMKgCj4gPiA+IMKgCXN0cnVjdCBpbnRlbF9ndnQgZ3Z0Owo+ID4g PiDCoAo+ID4gPiArCXN0cnVjdCBpbnRlbF9odWMgaHVjOwo+ID4gPiDCoAlzdHJ1Y3QgaW50ZWxf Z3VjIGd1YzsKPiA+ID4gwqAKPiA+ID4gwqAJc3RydWN0IGludGVsX2NzciBjc3I7Cj4gPiA+IEBA IC0yODIyLDYgKzI4MjQsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfY21kX3RhYmxlIHsKPiA+ID4gwqAj ZGVmaW5lIEhBU19HVUMoZGV2KQkJKElOVEVMX0lORk8oZGV2KS0+aGFzX2d1YykKPiA+ID4gwqAj ZGVmaW5lIEhBU19HVUNfVUNPREUoZGV2KQkoSEFTX0dVQyhkZXYpKQo+ID4gPiDCoCNkZWZpbmUg SEFTX0dVQ19TQ0hFRChkZXYpCShIQVNfR1VDKGRldikpCj4gPiA+ICsjZGVmaW5lIEhBU19IVUNf VUNPREUoZGV2KQkoSEFTX0dVQyhkZXYpKQo+ID4gPiDCoAo+ID4gPiDCoCNkZWZpbmUgSEFTX1JF U09VUkNFX1NUUkVBTUVSKGRldikgKElOVEVMX0lORk8oZGV2KS0KPiA+ID4gPmhhc19yZXNvdXJj ZV9zdHJlYW1lcikKPiA+ID4gwqAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ3VjX3JlZy5oCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNf cmVnLmgKPiA+ID4gaW5kZXggYTQ3ZTFlNC4uNjRlOTQyYSAxMDA2NDQKPiA+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmgKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmgKPiA+ID4gQEAgLTYxLDkgKzYxLDEyIEBACj4gPiA+IMKg I2RlZmluZcKgwqDCoERNQV9BRERSRVNTX1NQQUNFX0dUVAkJwqDCoCg4IDw8IDE2KQo+ID4gPiDC oCNkZWZpbmUgRE1BX0NPUFlfU0laRQkJCV9NTUlPKDB4YzMxMCkKPiA+ID4gwqAjZGVmaW5lIERN QV9DVFJMCQkJX01NSU8oMHhjMzE0KQo+ID4gPiArI2RlZmluZcKgwqDCoEhVQ19VS0VSTkVMCQkJ wqDCoCgxPDw5KQo+ID4gPiDCoCNkZWZpbmXCoMKgwqBVT1NfTU9WRQkJCcKgwqAoMTw8NCkKPiA+ ID4gwqAjZGVmaW5lwqDCoMKgU1RBUlRfRE1BCQkJwqDCoCgxPDwwKQo+ID4gPiDCoCNkZWZpbmUg RE1BX0dVQ19XT1BDTV9PRkZTRVQJCV9NTUlPKDB4YzM0MCkKPiA+ID4gKyNkZWZpbmXCoMKgwqBI VUNfTE9BRElOR19BR0VOVF9WQ1IJCcKgwqAoMDw8MSkKPiA+ID4gKyNkZWZpbmXCoMKgwqBIVUNf TE9BRElOR19BR0VOVF9HVUMJCcKgwqAoMTw8MSkKPiA+ID4gwqAjZGVmaW5lwqDCoMKgR1VDX1dP UENNX09GRlNFVF9WQUxVRQnCoMKgMHg4MDAwMAkvKgo+ID4gPiA1MTJLQiAqLwo+ID4gPiDCoCNk ZWZpbmUgR1VDX01BWF9JRExFX0NPVU5UCQlfTU1JTygweEMzRTQpCj4gPiA+IMKgCj4gPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAo+ID4gPiBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCj4gPiA+IGluZGV4IDgxMmU0Y2EuLmFmNzZmZmUg MTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCj4gPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCj4gPiA+IEBAIC0xNjAsNiAr MTYwLDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIKPiA+ID4gKmludGVsX3VjX2Z3X3N0YXR1c19yZXBy KGVudW0gaW50ZWxfdWNfZndfc3RhdHVzIHN0YXR1cyk7Cj4gPiA+IMKgZXh0ZXJuIGludCBpbnRl bF9ndWNfc3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiA+ID4gwqBleHRlcm4gaW50 IGludGVsX2d1Y19yZXN1bWUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gPiA+IMKgdm9pZCBp bnRlbF91Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QKPiA+ID4gaW50 ZWxfdWNfZncgKnVjX2Z3KTsKPiA+ID4gK3UzMiBndWNfd29wY21fc2l6ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ID4gPiDCoAo+ID4gPiDCoC8qIGk5MTVfZ3VjX3N1Ym1p c3Npb24uYyAqLwo+ID4gPiDCoGludCBpOTE1X2d1Y19zdWJtaXNzaW9uX2luaXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Y19sb2FkZXIuYwo+ID4gPiBpbmRleCAwYjg2M2ExLi4wZDIxNGI0IDEwMDY0NAo+ ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKPiA+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCj4gPiA+IEBAIC0z MDUsNyArMzA1LDggQEAgc3RhdGljIGludCBndWNfdWNvZGVfeGZlcl9kbWEoc3RydWN0Cj4gPiA+ IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiDCoAlJOTE1X1dSSVRFKERNQV9BRERS XzFfSElHSCwgRE1BX0FERFJFU1NfU1BBQ0VfV09QQ00pOwo+ID4gPiDCoAo+ID4gPiDCoAkvKiBG aW5hbGx5IHN0YXJ0IHRoZSBETUEgKi8KPiA+ID4gLQlJOTE1X1dSSVRFKERNQV9DVFJMLCBfTUFT S0VEX0JJVF9FTkFCTEUoVU9TX01PVkUgfAo+ID4gPiBTVEFSVF9ETUEpKTsKPiA+ID4gKwlJOTE1 X1dSSVRFKERNQV9DVFJMLCBfTUFTS0VEX0JJVF9FTkFCTEUoVU9TX01PVkUgfAo+ID4gPiBTVEFS VF9ETUEpIHwKPiA+ID4gKwkJCV9NQVNLRURfQklUX0RJU0FCTEUoSFVDX1VLRVJORUwpKTsKPiA+ ID4gwqAKPiA+ID4gwqAJLyoKPiA+ID4gwqAJwqAqIFdhaXQgZm9yIHRoZSBETUEgdG8gY29tcGxl dGUgJiB0aGUgR3VDIHRvIHN0YXJ0IHVwLgo+ID4gPiBAQCAtMzMwLDcgKzMzMSw3IEBAIHN0YXRp YyBpbnQgZ3VjX3Vjb2RlX3hmZXJfZG1hKHN0cnVjdAo+ID4gPiBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiA+ID4gwqAJcmV0dXJuIHJldDsKPiA+ID4gwqB9Cj4gPiA+IMKgCj4gPiA+IC1z dGF0aWMgdTMyIGd1Y193b3BjbV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiA+ID4gK3UzMiBndWNfd29wY21fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gPiA+IMKgewo+ID4gPiDCoAl1MzIgd29wY21fc2l6ZSA9IEdVQ19XT1BDTV9UT1A7 Cj4gPiA+IMKgCj4gPiA+IEBAIC01MDgsNiArNTA5LDcgQEAgaW50IGludGVsX2d1Y19zZXR1cChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gPiDCoAkJaWYgKGVycikKPiA+ID4gwqAJCQlnb3Rv IGZhaWw7Cj4gPiA+IMKgCj4gPiA+ICsJCWludGVsX2h1Y19sb2FkKGRldik7Cj4gPiA+IMKgCQll cnIgPSBndWNfdWNvZGVfeGZlcihkZXZfcHJpdik7Cj4gPiA+IMKgCQlpZiAoIWVycikKPiA+ID4g wqAJCQlicmVhazsKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2h1Yy5oCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmgKPiA+ID4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQKPiA+ID4gaW5kZXggMDAwMDAwMC4uOTQ2Y2FhNwo+ID4gPiAtLS0g L2Rldi9udWxsCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Yy5oCj4g PiA+IEBAIC0wLDAgKzEsNDQgQEAKPiA+ID4gKy8qCj4gPiA+ICsgKiBDb3B5cmlnaHQgwqkgMjAx NCBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4gU2hvdWxkIHRoaXMgYmUgMjAxNj8KPiA+IAo+ID4gPiAK PiA+ID4gKyAqCj4gPiA+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m IGNoYXJnZSwgdG8gYW55IHBlcnNvbgo+ID4gPiBvYnRhaW5pbmcgYQo+ID4gPiArICogY29weSBv ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQo+ ID4gPiAiU29mdHdhcmUiKSwKPiA+ID4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwo+ID4gPiB3aXRob3V0IGxpbWl0YXRpb24KPiA+ID4g KyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0 cmlidXRlLAo+ID4gPiBzdWJsaWNlbnNlLAo+ID4gPiArICogYW5kL29yIHNlbGwgY29waWVzIG9m IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvCj4gPiA+IHdob20gdGhlCj4g PiA+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZv bGxvd2luZwo+ID4gPiBjb25kaXRpb25zOgo+ID4gPiArICoKPiA+ID4gKyAqIFRoZSBhYm92ZSBj b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlCj4gPiA+IChpbmNsdWRp bmcgdGhlIG5leHQKPiA+ID4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxs IGNvcGllcyBvciBzdWJzdGFudGlhbAo+ID4gPiBwb3J0aW9ucyBvZiB0aGUKPiA+ID4gKyAqIFNv ZnR3YXJlLgo+ID4gPiArICoKPiA+ID4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMg SVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQo+ID4gPiBLSU5ELCBFWFBSRVNTIE9SCj4gPiA+ ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT IE9GCj4gPiA+IE1FUkNIQU5UQUJJTElUWSwKPiA+ID4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuwqDCoElOIE5PCj4gPiA+IEVWRU5UIFNI QUxMCj4gPiA+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUg Rk9SIEFOWSBDTEFJTSwKPiA+ID4gREFNQUdFUyBPUiBPVEhFUgo+ID4gPiArICogTElBQklMSVRZ LCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUgo+ID4gPiBPVEhFUldJ U0UsIEFSSVNJTkcKPiA+ID4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKPiA+ID4gT1RIRVIgREVBTElOR1MKPiA+ID4gKyAq IElOIFRIRSBTT0ZUV0FSRS4KPiA+ID4gKyAqCj4gPiA+ICsgKi8KPiA+ID4gKyNpZm5kZWYgX0lO VEVMX0hVQ19IXwo+ID4gPiArI2RlZmluZSBfSU5URUxfSFVDX0hfCj4gPiA+ICsKPiA+ID4gKyNp bmNsdWRlICJpbnRlbF9ndWMuaCIKPiA+ID4gKwo+ID4gPiArI2RlZmluZSBIVUNfU1RBVFVTMgkJ X01NSU8oMHhEM0IwKQo+ID4gPiArI2RlZmluZcKgwqDCoEhVQ19GV19WRVJJRklFRAkoMTw8NykK PiA+ID4gKwo+ID4gPiArc3RydWN0IGludGVsX2h1YyB7Cj4gPiA+ICsJLyogR2VuZXJpYyB1QyBm aXJtd2FyZSBtYW5hZ2VtZW50ICovCj4gPiA+ICsJc3RydWN0IGludGVsX3VjX2Z3IGh1Y19mdzsK PiA+ID4gKwo+ID4gPiArCS8qIEh1Qy1zcGVjaWZpYyBhZGRpdGlvbnMgKi8KPiA+ID4gK307Cj4g PiA+ICsKPiA+ID4gK2V4dGVybiB2b2lkIGludGVsX2h1Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpOwo+ID4gPiArZXh0ZXJuIGludCBpbnRlbF9odWNfbG9hZChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KTsKPiA+ID4gK2V4dGVybiB2b2lkIGludGVsX2h1Y19hdXRoKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpOwo+ID4gPiArZXh0ZXJuIHZvaWQgaW50ZWxfaHVjX2Zpbmkoc3RydWN0IGRybV9k ZXZpY2UgKmRldik7Cj4gVGhlc2UgZG9uJ3QgbmVlZCBleHRlcm4uIFBsZWFzZSByZW1vdmUuIEFs c28gaW50ZWxfaHVjX2F1dGggY29tZXMgaW4KPiB3aXRoCj4gbGF0ZXIgcGF0Y2ggaW4gdGhlIHNl cmllcyBzbyB3b3VsZCBiZSBiZXR0ZXIgdG8gZHJvcCBmcm9tIGhlcmUuCj4gCgpSZW1vdmluZyBp bnRlbF9odWNfYXV0aCBhY3R1YWxseSBicmFrZXMgdGhlIGNvbXBpbGF0aW9uIGFzIGl0J3MgYmVp bmcKY2FsbGVkIGZyb23CoGludGVsX2d1Y19sb2FkZXIuYwoKQ2FybG9zCgo+ID4gCj4gPiA+IAo+ ID4gPiArCj4gPiA+ICsjZW5kaWYKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2h1Y19sb2FkZXIuYwo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2h1Y19sb2FkZXIuYwo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gPiBpbmRleCAwMDAw MDAwLi4xYWFmZjY3Cj4gPiA+IC0tLSAvZGV2L251bGwKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaHVjX2xvYWRlci5jCj4gPiA+IEBAIC0wLDAgKzEsMjY4IEBACj4gPiA+ ICsvKgo+ID4gPiArICogQ29weXJpZ2h0IMKpIDIwMTQgSW50ZWwgQ29ycG9yYXRpb24KPiA+IFNo b3VsZCB0aGlzIGJlIDIwMTY/Cj4gPiAKPiA+ID4gCj4gPiA+ICsgKgo+ID4gPiArICogUGVybWlz c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24KPiA+ ID4gb2J0YWluaW5nIGEKPiA+ID4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKPiA+ID4gIlNvZnR3YXJlIiksCj4gPiA+ICsg KiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcK PiA+ID4gd2l0aG91dCBsaW1pdGF0aW9uCj4gPiA+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29w eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwKPiA+ID4gc3VibGljZW5zZSwK PiA+ID4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJt aXQgcGVyc29ucyB0bwo+ID4gPiB3aG9tIHRoZQo+ID4gPiArICogU29mdHdhcmUgaXMgZnVybmlz aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcKPiA+ID4gY29uZGl0aW9uczoK PiA+ID4gKyAqCj4gPiA+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZQo+ID4gPiAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gPiA+ICsgKiBwYXJh Z3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwKPiA+ ID4gcG9ydGlvbnMgb2YgdGhlCj4gPiA+ICsgKiBTb2Z0d2FyZS4KPiA+ID4gKyAqCj4gPiA+ICsg KiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB TlkKPiA+ID4gS0lORCwgRVhQUkVTUyBPUgo+ID4gPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJV VCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgo+ID4gPiBNRVJDSEFOVEFCSUxJVFks Cj4gPiA+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO R0VNRU5ULsKgwqBJTiBOTwo+ID4gPiBFVkVOVCBTSEFMTAo+ID4gPiArICogVEhFIEFVVEhPUlMg T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCj4gPiA+IERBTUFH RVMgT1IgT1RIRVIKPiA+ID4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IKPiA+ID4gT1RIRVJXSVNFLCBBUklTSU5HCj4gPiA+ICsgKiBGUk9N LCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9S Cj4gPiA+IE9USEVSIERFQUxJTkdTCj4gPiA+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gPiA+ICsg Kgo+ID4gPiArICovCj4gPiA+ICsjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KPiA+ID4gKyNp bmNsdWRlICJpOTE1X2Rydi5oIgo+ID4gPiArI2luY2x1ZGUgImludGVsX2h1Yy5oIgo+ID4gPiAr Cj4gPiA+ICsvKioKPiA+ID4gKyAqIERPQzogSHVDIEZpcm13YXJlCj4gPiA+ICsgKgo+ID4gPiAr ICogTW90aXZhdGlvbjoKPiA+ID4gKyAqIEdFTjkgaW50cm9kdWNlcyBhIG5ldyBkZWRpY2F0ZWQg ZmlybXdhcmUgZm9yIHVzYWdlIGluIG1lZGlhCj4gPiA+IEhFVkMgKEhpZ2gKPiA+ID4gKyAqIEVm ZmljaWVuY3kgVmlkZW8gQ29kaW5nKSBvcGVyYXRpb25zLiBVc2Vyc3BhY2UgY2FuIHVzZSB0aGUK PiA+ID4gZmlybXdhcmUKPiA+ID4gKyAqIGNhcGFiaWxpdGllcyBieSBhZGRpbmcgSHVDIHNwZWNp ZmljIGNvbW1hbmRzIHRvIGJhdGNoCj4gPiA+IGJ1ZmZlcnMuCj4gPiA+ICsgKgo+ID4gPiArICog SW1wbGVtZW50YXRpb246Cj4gPiA+ICsgKiBPbiBzdXBwb3J0ZWQgcGxhdGZvcm1zLCBpOTE1J3Mg am9iIGlzIHRvIGxvYWQgdGhlIGZpcm13YXJlCj4gPiA+IHN0b3JlZCBvbiB0aGUKPiA+ID4gKyAq IGZpbGUgc3lzdGVtIGFuZCBhc3Npc3Qgd2l0aCBhdXRoZW50aWNhdGlvbi4gSXQgaXMgdXAgdG8K PiA+ID4gdXNlcnNwYWNlIHRvCj4gPiA+ICsgKiBkZXRlY3QgdGhlIHByZXNlbmNlIG9mIEh1QyBz dXBwb3J0IG9uIGEgcGxhdGZvcm0sIG9uIHRoZWlyCj4gPiA+IG93bi4KPiA+ID4gKyAqIEZvciBk ZWJ1Z2dpbmcsIGk5MTUgcHJvdmlkZXMgYSBkZWJ1Z2ZzIGZpbGUsCj4gPiA+IGk5MTVfaHVjX2xv YWRfc3RhdHVzX2luZm8KPiA+ID4gKyAqIHdoaWNoIGRpc3BsYXlzIHRoZSBmaXJtd2FyZSBsb2Fk IHN0YXR1cy4KPiA+IEFib3ZlIGNvbW1lbnQgcmVmZXJzIHRvIGZlYXR1cmVzIGFkZGVkIGluIHN1 YnNlcXVlbnQgcGF0Y2hlcyBhbmQgaXMKPiA+IG5vdAo+ID4gZW50aXJlbHkgYWNjdXJhdGUgYXQg dGhhdC4gU28gSSB3b3VsZCBqdXN0IHJlbW92ZSB0aGlzIHdob2xlIGJsb2NrLgo+ID4gTGVzcwo+ ID4gY29tbWVudGluZyBpcyBiZXR0ZXIgdGhhbiBtaXNsZWFkaW5nIGNvbW1lbnRpbmcuCj4gPiAK PiA+ID4gCj4gPiA+ICsgKgo+ID4gPiArICogVGhlIHNhbWUgZmlybXdhcmUgbG9hZGVyIGlzIHVz ZWQgYXMgdGhlIEd1Qy4gRmlybXdhcmUgKgo+ID4gPiBiaW5hcnkgaXMgZmV0Y2hlZCBieQo+ID4g PiArICogdGhlIGxvYWRlciBhc3luY2hyb25vdXNseSBmcm9tIHRoZSBkcml2ZXIgaW5pdCBwcm9j ZXNzLgo+ID4gPiBIb3dldmVyLCB0aGUgYWN0dWFsCj4gPiBSZW1vdmUgKiBmcm9tICJGaXJtd2Fy ZSAqIGJpbmFyeSIuIExvYWRpbmcgaXMgbm90IGFzeW5jaHJvbm91cyBzbwo+ID4gcmVtb3ZlIHRo aXMKPiA+IHN0YXRlbWVudC4KPiA+IAo+ID4gPiAKPiA+ID4gKyAqIGxvYWRpbmcgdG8gSFcgaXMg ZGVmZXJyZWQgdW50aWwgR0VNIGluaXRpYWxpemF0aW9uIGlzIGRvbmUuCj4gPiA+ICsgKgo+ID4g PiArICogTm90ZSB0aGF0IEh1QyBmaXJtd2FyZSBsb2FkaW5nIG11c3QgYmUgZG9uZSBiZWZvcmUg R3VDCj4gPiA+IGxvYWRpbmcuCj4gPiA+ICsgKi8KPiA+ID4gKwo+ID4gPiArI2RlZmluZSBJOTE1 X1NLTF9IVUNfVUNPREUgImk5MTUvc2tsX2h1Y192ZXIwMV8wN18xMzk4LmJpbiIKPiA+ID4gK01P RFVMRV9GSVJNV0FSRShJOTE1X1NLTF9IVUNfVUNPREUpOwo+ID4gUGxlYXNlIHVwZGF0ZSB0byB1 c2UgdGhlIG5ldyBhcHByb2FjaCB1c2VkIGJ5IEd1QyBmb3Igc3BlY2lmeWluZwo+ID4gcmVxdWly ZWQgdmVyc2lvbiBhbmQgY29uc3RydWN0aW5nIHRoZSBmaWxlIHBhdGguIFNlZQo+ID4gaW50ZWxf Z3VjX2xvYWRlci5jLgo+ID4gSHVDIGZpcm13YXJlIHZlcnNpb25pbmcgaW5jbHVkZXMgdGhlIGJ1 aWxkIG51bWJlciBhZnRlciB0aGUgbWlub3IKPiA+IHNvCj4gPiBzb21lIG1vZGlmaWNhdGlvbiB3 aWxsIGJlIG5lZWRlZC4KPiA+IAo+ID4gPiAKPiA+ID4gKwo+ID4gPiArLyoqCj4gPiA+ICsgKiBp bnRlbF9odWNfbG9hZF91Y29kZSgpIC0gRE1BJ3MgdGhlIGZpcm13YXJlCj4gPiA+ICsgKiBAZGV2 OiB0aGUgZHJtIGRldmljZQo+ID4gRml4IG5hbWUgYW5kIHBhcmFtZXRlcgo+ID4gCj4gPiA+IAo+ ID4gPiArICoKPiA+ID4gKyAqIFRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIGdlbSBvYmplY3QgY29u dGFpbmluZyB0aGUgZmlybXdhcmUsCj4gPiA+IHNldHMgdXAgdGhlIERNQQo+ID4gPiArICogZW5n aW5lIE1NSU8sIHRyaWdnZXJzIHRoZSBETUEgb3BlcmF0aW9uIGFuZCB3YWl0cyBmb3IgaXQgdG8K PiA+ID4gZmluaXNoLgo+ID4gPiArICoKPiA+ID4gKyAqIFRyYW5zZmVyIHRoZSBmaXJtd2FyZSBp bWFnZSB0byBSQU0gZm9yIGV4ZWN1dGlvbiBieSB0aGUKPiA+ID4gbWljcm9jb250cm9sbGVyLgo+ ID4gPiArICoKPiA+ID4gKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBub24temVybyBvbiBmYWls dXJlCj4gPiA+ICsgKi8KPiA+ID4gKwo+ID4gPiArc3RhdGljIGludCBodWNfdWNvZGVfeGZlcihz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0 IGludGVsX3VjX2Z3ICpodWNfZncgPSAmZGV2X3ByaXYtPmh1Yy5odWNfZnc7Cj4gPiA+ICsJc3Ry dWN0IGk5MTVfdm1hICp2bWE7Cj4gPiA+ICsJdW5zaWduZWQgbG9uZyBvZmZzZXQgPSAwOwo+ID4g PiArCXUzMiBzaXplOwo+ID4gPiArCWludCByZXQ7Cj4gPiA+ICsKPiA+ID4gKwlyZXQgPSBpOTE1 X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4oaHVjX2Z3LQo+ID4gPiA+dWNfZndfb2JqLCBm YWxzZSk7Cj4gPiA+ICsJaWYgKHJldCkgewo+ID4gPiArCQlEUk1fREVCVUdfRFJJVkVSKCJzZXQt ZG9tYWluIGZhaWxlZCAlZFxuIiwgcmV0KTsKPiA+ID4gKwkJcmV0dXJuIHJldDsKPiA+ID4gKwl9 Cj4gPiA+ICsKPiA+ID4gKwl2bWEgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oaHVjX2Z3LT51 Y19md19vYmosIE5VTEwsCj4gPiA+IDAsIDAsIDApOwo+ID4gPiArCWlmIChJU19FUlIodm1hKSkg ewo+ID4gPiArCQlEUk1fREVCVUdfRFJJVkVSKCJwaW4gZmFpbGVkICVkXG4iLAo+ID4gPiAoaW50 KVBUUl9FUlIodm1hKSk7Cj4gPiA+ICsJCXJldHVybiBQVFJfRVJSKHZtYSk7Cj4gPiA+ICsJfQo+ ID4gPiArCj4gPiA+ICsJLyogSW52YWxpZGF0ZSBHdUMgVExCIHRvIGxldCBHdUMgdGFrZSB0aGUg bGF0ZXN0IHVwZGF0ZXMKPiA+ID4gdG8gR1RULiAqLwo+ID4gPiArCUk5MTVfV1JJVEUoR0VOOF9H VENSLCBHRU44X0dUQ1JfSU5WQUxJREFURSk7Cj4gPiA+ICsKPiA+ID4gKwlXQVJOX09OKCFtdXRl eF9pc19sb2NrZWQoJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KSk7Cj4gPiBJIGRvbid0IHNl ZSByZWFzb24gZm9yIHRoaXMgV0FSTl9PTiBjaGVjay4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQK PiA+IGluIHdlbGwgZGVmaW5lZCBwYXRocyB0aGF0IHJlcXVpcmUgbG9ja2luZyB3YXkgdXAgdGhl IGNoYWluLgo+ID4gSSB0aGluayB3ZSBjYW4gcmVtb3ZlIGl0Lgo+ID4gCj4gPiA+IAo+ID4gPiAr CWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKPiA+ ID4gKwo+ID4gPiArCS8qIGluaXQgV09QQ00gKi8KPiA+ID4gKwlJOTE1X1dSSVRFKEdVQ19XT1BD TV9TSVpFLCBndWNfd29wY21fc2l6ZShkZXZfcHJpdikpOwo+ID4gPiArCUk5MTVfV1JJVEUoRE1B X0dVQ19XT1BDTV9PRkZTRVQsIEdVQ19XT1BDTV9PRkZTRVRfVkFMVUUKPiA+ID4gfAo+ID4gPiAr CQkJSFVDX0xPQURJTkdfQUdFTlRfR1VDKTsKPiA+ID4gKwo+ID4gPiArCS8qIFNldCB0aGUgc291 cmNlIGFkZHJlc3MgZm9yIHRoZSB1Q29kZSAqLwo+ID4gPiArCW9mZnNldCA9IGk5MTVfZ2d0dF9v ZmZzZXQodm1hKSArIGh1Y19mdy0+aGVhZGVyX29mZnNldDsKPiA+ID4gKwlJOTE1X1dSSVRFKERN QV9BRERSXzBfTE9XLCBsb3dlcl8zMl9iaXRzKG9mZnNldCkpOwo+ID4gPiArCUk5MTVfV1JJVEUo RE1BX0FERFJfMF9ISUdILCB1cHBlcl8zMl9iaXRzKG9mZnNldCkgJgo+ID4gPiAweEZGRkYpOwo+ ID4gPiArCj4gPiA+ICsJLyogSGFyZHdhcmUgZG9lc24ndCBsb29rIGF0IGRlc3RpbmF0aW9uIGFk ZHJlc3MgZm9yIEh1Qy4KPiA+ID4gU2V0IGl0IHRvIDAsCj4gPiA+ICsJwqAqIGJ1dCBzdGlsbCBw cm9ncmFtIHRoZSBjb3JyZWN0IGFkZHJlc3Mgc3BhY2UuCj4gPiA+ICsJwqAqLwo+ID4gPiArCUk5 MTVfV1JJVEUoRE1BX0FERFJfMV9MT1csIDApOwo+ID4gPiArCUk5MTVfV1JJVEUoRE1BX0FERFJf MV9ISUdILCBETUFfQUREUkVTU19TUEFDRV9XT1BDTSk7Cj4gPiA+ICsKPiA+ID4gKwlzaXplID0g aHVjX2Z3LT5oZWFkZXJfc2l6ZSArIGh1Y19mdy0+dWNvZGVfc2l6ZTsKPiA+ID4gKwlJOTE1X1dS SVRFKERNQV9DT1BZX1NJWkUsIHNpemUpOwo+ID4gPiArCj4gPiA+ICsJLyogU3RhcnQgdGhlIERN QSAqLwo+ID4gPiArCUk5MTVfV1JJVEUoRE1BX0NUUkwsIF9NQVNLRURfQklUX0VOQUJMRShIVUNf VUtFUk5FTCB8Cj4gPiA+IFNUQVJUX0RNQSkpOwo+ID4gPiArCj4gPiA+ICsJLyogV2FpdCBmb3Ig RE1BIHRvIGZpbmlzaCAqLwo+ID4gPiArCXJldCA9IHdhaXRfZm9yKChJOTE1X1JFQUQoRE1BX0NU UkwpICYgU1RBUlRfRE1BKSA9PSAwLAo+ID4gPiAxMDApOwo+ID4gPiArCj4gPiA+ICsJRFJNX0RF QlVHX0RSSVZFUigiSHVDIERNQSB0cmFuc2ZlciB3YWl0IG92ZXIgd2l0aCByZXQKPiA+ID4gJWRc biIsIHJldCk7Cj4gPiA+ICsKPiA+ID4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZf cHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gPiA+ICsKPiA+ID4gKwkvKgo+ID4gPiArCcKgKiBXZSBr ZWVwIHRoZSBvYmplY3QgcGFnZXMgZm9yIHJldXNlIGR1cmluZyByZXN1bWUuIEJ1dAo+ID4gPiB3 ZSBjYW4gdW5waW4gaXQKPiA+ID4gKwnCoCogbm93IHRoYXQgRE1BIGhhcyBjb21wbGV0ZWQsIHNv IGl0IGRvZXNuJ3QgY29udGludWUgdG8KPiA+ID4gdGFrZSB1cCBzcGFjZS4KPiA+ID4gKwnCoCov Cj4gPiA+ICsJaTkxNV92bWFfdW5waW4odm1hKTsKPiA+ID4gKwo+ID4gPiArCXJldHVybiByZXQ7 Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gKy8qKgo+ID4gPiArICogaW50ZWxfaHVjX2luaXQoKSAt IGluaXRpYXRlIEh1QyBmaXJtd2FyZSBsb2FkaW5nIHJlcXVlc3QKPiA+ID4gKyAqIEBkZXY6IHRo ZSBkcm0gZGV2aWNlCj4gPiA+ICsgKgo+ID4gPiArICogQ2FsbGVkIGVhcmx5IGR1cmluZyBkcml2 ZXIgbG9hZCwgYnV0IGFmdGVyIEdFTSBpcwo+ID4gPiBpbml0aWFsaXNlZC4gVGhlIGxvYWRpbmcK PiA+ID4gKyAqIHdpbGwgY29udGludWUgb25seSB3aGVuIGRyaXZlciBleHBsaWNpdGx5IHNwZWNp ZnkgZmlybXdhcmUKPiA+ID4gbmFtZSBhbmQgdmVyc2lvbi4KPiA+ID4gKyAqIEFsbCBvdGhlciBj YXNlcyBhcmUgY29uc2lkZXJlZCBhcyBVQ19GSVJNV0FSRV9OT05FIGVpdGhlcgo+ID4gPiBiZWNh dXNlIEhXIGlzIG5vdAo+ID4gPiArICogY2FwYWJsZSBvciBkcml2ZXIgeWV0IHN1cHBvcnQgaXQu IEFuZCB0aGVyZSB3aWxsIGJlIG5vIGVycm9yCj4gPiA+IG1lc3NhZ2UgZm9yCj4gPiA+ICsgKiBV Q19GSVJNV0FSRV9OT05FIGNhc2VzLgo+ID4gPiArICoKPiA+ID4gKyAqIFRoZSBETUEtY29weWlu ZyB0byBIVyBpcyBkb25lIGxhdGVyIHdoZW4KPiA+ID4gaW50ZWxfaHVjX3Vjb2RlX2xvYWQoKSBp cyBjYWxsZWQuCj4gPiBpbnRlbF9odWNfdWNvZGVfbG9hZCgpIHNob3VsZCBiZSBpbnRlbF9odWNf bG9hZCgpLgo+ID4gCj4gPiA+IAo+ID4gPiArICovCj4gPiA+ICt2b2lkIGludGVsX2h1Y19pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ID4gPiArCXN0cnVjdCBpbnRlbF9o dWMgKmh1YyA9ICZkZXZfcHJpdi0+aHVjOwo+ID4gPiArCXN0cnVjdCBpbnRlbF91Y19mdyAqaHVj X2Z3ID0gJmh1Yy0+aHVjX2Z3Owo+ID4gPiArCWNvbnN0IGNoYXIgKmZ3X3BhdGggPSBOVUxMOwo+ ID4gPiArCj4gPiA+ICsJaHVjX2Z3LT51Y19kZXYgPSBkZXY7Cj4gPiA+ICsJaHVjX2Z3LT51Y19m d19wYXRoID0gTlVMTDsKPiA+ID4gKwlodWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1XQVJF X05PTkU7Cj4gPiA+ICsJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX05PTkU7Cj4g PiA+ICsJaHVjX2Z3LT5md190eXBlID0gVUNfRldfVFlQRV9IVUM7Cj4gPiA+ICsKPiA+ID4gKwlp ZiAoIUhBU19IVUNfVUNPREUoZGV2X3ByaXYpKQo+ID4gPiArCQlyZXR1cm47Cj4gPiA+ICsKPiA+ ID4gKwlpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikpIHsKPiA+ID4gKwkJZndfcGF0aCA9IEk5MTVf U0tMX0hVQ19VQ09ERTsKPiA+ID4gKwkJaHVjX2Z3LT5tYWpvcl92ZXJfd2FudGVkID0gMTsKPiA+ ID4gKwkJaHVjX2Z3LT5taW5vcl92ZXJfd2FudGVkID0gNzsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ ID4gKwlpZiAoZndfcGF0aCA9PSBOVUxMKQo+ID4gPiArCQlyZXR1cm47Cj4gPiA+ICsKPiA+ID4g KwlodWNfZnctPnVjX2Z3X3BhdGggPSBmd19wYXRoOwo+ID4gPiArCWh1Y19mdy0+ZmV0Y2hfc3Rh dHVzID0gVUNfRklSTVdBUkVfUEVORElORzsKPiA+ID4gKwo+ID4gPiArCURSTV9ERUJVR19EUklW RVIoIkh1QyBmaXJtd2FyZSBwZW5kaW5nLCBwYXRoICVzXG4iLAo+ID4gPiBmd19wYXRoKTsKPiA+ ID4gKwo+ID4gPiArCWludGVsX3VjX2Z3X2ZldGNoKGRldiwgaHVjX2Z3KTsKPiA+ID4gK30KPiA+ ID4gKwo+ID4gPiArLyoqCj4gPiA+ICsgKiBpbnRlbF9odWNfbG9hZCgpIC0gbG9hZCBIdUMgdUNv ZGUgdG8gZGV2aWNlCj4gPiA+ICsgKiBAZGV2OiB0aGUgZHJtIGRldmljZQo+ID4gPiArICoKPiA+ ID4gKyAqIENhbGxlZCBmcm9tIGdlbV9pbml0X2h3KCkgZHVyaW5nIGRyaXZlciBsb2FkaW5nIGFu ZCBhbHNvCj4gPiA+IGFmdGVyIGEgR1BVIHJlc2V0Lgo+ID4gPiArICogQmUgbm90ZSB0aGF0IEh1 QyBsb2FkaW5nIG11c3QgYmUgZG9uZSBiZWZvcmUgR3VDIGxvYWRpbmcuCj4gPiA+ICsgKgo+ID4g PiArICogVGhlIGZpcm13YXJlIGltYWdlIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBmZXRjaGVk IGludG8KPiA+ID4gbWVtb3J5IGJ5IHRoZQo+ID4gPiArICogZWFybGllciBjYWxsIHRvIGludGVs X2h1Y191Y29kZV9pbml0KCksIHNvIGhlcmUgd2UgbmVlZCBvbmx5Cj4gPiA+IGNoZWNrIHRoYXQK PiA+ID4gKyAqIGlzIHN1Y2NlZWRlZCwgYW5kIHRoZW4gdHJhbnNmZXIgdGhlIGltYWdlIHRvIHRo ZSBoL3cuCj4gPiA+ICsgKgo+ID4gPiArICogUmV0dXJuOglub24temVybyBjb2RlIG9uIGVycm9y Cj4gPiA+ICsgKi8KPiA+ID4gK2ludCBpbnRlbF9odWNfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoZGV2KTsKPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZkZXZf cHJpdi0+aHVjLmh1Y19mdzsKPiA+ID4gKwlpbnQgZXJyOwo+ID4gPiArCj4gPiA+ICsJaWYgKGh1 Y19mdy0+ZmV0Y2hfc3RhdHVzID09IFVDX0ZJUk1XQVJFX05PTkUpCj4gPiA+ICsJCXJldHVybiAw Owo+ID4gPiArCj4gPiA+ICsJRFJNX0RFQlVHX0RSSVZFUigiJXMgZncgc3RhdHVzOiBmZXRjaCAl cywgbG9hZCAlc1xuIiwKPiA+ID4gKwkJaHVjX2Z3LT51Y19md19wYXRoLAo+ID4gPiArCQlpbnRl bF91Y19md19zdGF0dXNfcmVwcihodWNfZnctPmZldGNoX3N0YXR1cyksCj4gPiA+ICsJCWludGVs X3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+bG9hZF9zdGF0dXMpKTsKPiA+ID4gKwo+ID4gPiAr CWlmIChodWNfZnctPmZldGNoX3N0YXR1cyA9PSBVQ19GSVJNV0FSRV9TVUNDRVNTICYmCj4gPiA+ ICsJwqDCoMKgwqBodWNfZnctPmxvYWRfc3RhdHVzID09IFVDX0ZJUk1XQVJFX0ZBSUwpCj4gPiA+ ICsJCXJldHVybiAtRU5PRVhFQzsKPiA+ID4gKwo+ID4gPiArCWh1Y19mdy0+bG9hZF9zdGF0dXMg PSBVQ19GSVJNV0FSRV9QRU5ESU5HOwo+ID4gPiArCj4gPiA+ICsJc3dpdGNoIChodWNfZnctPmZl dGNoX3N0YXR1cykgewo+ID4gPiArCWNhc2UgVUNfRklSTVdBUkVfRkFJTDoKPiA+ID4gKwkJLyog c29tZXRoaW5nIHdlbnQgd3JvbmcgOiggKi8KPiA+ID4gKwkJZXJyID0gLUVJTzsKPiA+ID4gKwkJ Z290byBmYWlsOwo+ID4gPiArCj4gPiA+ICsJY2FzZSBVQ19GSVJNV0FSRV9OT05FOgo+ID4gPiAr CWNhc2UgVUNfRklSTVdBUkVfUEVORElORzoKPiA+ID4gKwlkZWZhdWx0Ogo+ID4gPiArCQkvKiAi Y2FuJ3QgaGFwcGVuIiAqLwo+ID4gPiArCQlXQVJOX09OQ0UoMSwgIkh1QyBmdyAlcyBpbnZhbGlk IGZldGNoX3N0YXR1cyAlcwo+ID4gPiBbJWRdXG4iLAo+ID4gPiArCQkJaHVjX2Z3LT51Y19md19w YXRoLAo+ID4gPiArCQkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LQo+ID4gPiA+ZmV0 Y2hfc3RhdHVzKSwKPiA+ID4gKwkJCWh1Y19mdy0+ZmV0Y2hfc3RhdHVzKTsKPiA+ID4gKwkJZXJy ID0gLUVOWElPOwo+ID4gPiArCQlnb3RvIGZhaWw7Cj4gPiA+ICsKPiA+ID4gKwljYXNlIFVDX0ZJ Uk1XQVJFX1NVQ0NFU1M6Cj4gPiA+ICsJCWJyZWFrOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiAr CWVyciA9IGh1Y191Y29kZV94ZmVyKGRldl9wcml2KTsKPiA+ID4gKwlpZiAoZXJyKQo+ID4gPiAr CQlnb3RvIGZhaWw7Cj4gPiA+ICsKPiA+ID4gKwlodWNfZnctPmxvYWRfc3RhdHVzID0gVUNfRklS TVdBUkVfU1VDQ0VTUzsKPiA+ID4gKwo+ID4gPiArCURSTV9ERUJVR19EUklWRVIoIiVzIGZ3IHN0 YXR1czogZmV0Y2ggJXMsIGxvYWQgJXNcbiIsCj4gPiA+ICsJCWh1Y19mdy0+dWNfZndfcGF0aCwK PiA+ID4gKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5mZXRjaF9zdGF0dXMpLAo+ ID4gPiArCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihodWNfZnctPmxvYWRfc3RhdHVzKSk7Cj4g PiA+ICsKPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gKwo+ID4gPiArZmFpbDoKPiA+ID4gKwlpZiAo aHVjX2Z3LT5sb2FkX3N0YXR1cyA9PSBVQ19GSVJNV0FSRV9QRU5ESU5HKQo+ID4gPiArCQlodWNf ZnctPmxvYWRfc3RhdHVzID0gVUNfRklSTVdBUkVfRkFJTDsKPiA+ID4gKwo+ID4gPiArCURSTV9F UlJPUigiRmFpbGVkIHRvIGNvbXBsZXRlIEh1QyB1Q29kZSBsb2FkIHdpdGggcmV0Cj4gPiA+ICVk XG4iLCBlcnIpOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIGVycjsKPiA+ID4gK30KPiA+ID4gKwo+ ID4gPiArLyoqCj4gPiA+ICsgKiBpbnRlbF9odWNfZmluaSgpIC0gY2xlYW4gdXAgcmVzb3VyY2Vz IGFsbG9jYXRlZCBmb3IgSHVDCj4gPiA+ICsgKiBAZGV2OiB0aGUgZHJtIGRldmljZQo+ID4gPiAr ICoKPiA+ID4gKyAqIENsZWFucyB1cCBieSByZWxlYXNpbmcgdGhlIGh1YyBmaXJtd2FyZSBHRU0g b2JqLgo+ID4gPiArICovCj4gPiA+ICt2b2lkIGludGVsX2h1Y19maW5pKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShkZXYpOwo+ID4gPiArCXN0cnVjdCBpbnRlbF91Y19mdyAqaHVjX2Z3ID0g JmRldl9wcml2LT5odWMuaHVjX2Z3Owo+ID4gPiArCj4gPiA+ICsJbXV0ZXhfbG9jaygmZGV2LT5z dHJ1Y3RfbXV0ZXgpOwo+ID4gPiArCWlmIChodWNfZnctPnVjX2Z3X29iaikKPiA+ID4gKwkJZHJt X2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJmh1Y19mdy0+dWNfZndfb2JqLQo+ID4gPiA+YmFzZSk7 Cj4gPiBUaGVzZSBhcmUgbm93IHJlcGxhY2VkIHdpdGggaTkxNV9nZW1fb2JqZWN0X3B1dChodWNf ZnctPnVjX2Z3X29iaikKPiA+IAo+ID4gPiAKPiA+ID4gKwlodWNfZnctPnVjX2Z3X29iaiA9IE5V TEw7Cj4gPiA+ICsJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gPiA+ICsKPiA+ ID4gKwlodWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX05PTkU7Cj4gPiA+ICt9Cl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=