From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: Re: [PATCH 1/6] drm/i915/guc: Make the GuC fw loading helper functions general Date: Tue, 28 Jun 2016 15:24:10 +0100 Message-ID: <5772888A.9080004@intel.com> References: <1466532685-5101-1-git-send-email-peter.antoine@intel.com> <1466532685-5101-2-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 mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 721506E5A9 for ; Tue, 28 Jun 2016 14:24:13 +0000 (UTC) In-Reply-To: <1466532685-5101-2-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 T24gMjEvMDYvMTYgMTk6MTEsIFBldGVyIEFudG9pbmUgd3JvdGU6Cj4gUmVuYW1lIHNvbWUgb2Yg dGhlIEd1QyBmdyBsb2FkaW5nIGNvZGUgdG8gbWFrZSB0aGVtIG1vcmUgZ2VuZXJhbC4gV2UKPiB3 aWxsIHV0aWxpemUgdGhlbSBmb3IgSHVDIGxvYWRpbmcgYXMgd2VsbC4KPiAgICAgIHMvaW50ZWxf Z3VjX2Z3L2ludGVsX3VjX2Z3L2cKPiAgICAgIHMvR1VDX0ZJUk1XQVJFL1VDX0ZJUk1XQVJFL2cK Pgo+IFN0cnVjdCBpbnRlbF9ndWNfZncgaXMgcmVuYW1lZCB0byBpbnRlbF91Y19mdy4gUHJlZml4 IG9mIHR0cyBtZW1iZXJzLAo+IHN1Y2ggYXMgJ2d1Yycgb3IgJ2d1Y19mdycgZWl0aGVyIGlzIHJl bmFtZWQgdG8gJ3VjJyBvciByZW1vdmVkIGZvcgo+IHNhbWUgcHVycG9zZS4KPgo+IFNpZ25lZC1v ZmYtYnk6IEFsZXggRGFpIDx5dS5kYWlAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFBldGVy IEFudG9pbmUgPHBldGVyLmFudG9pbmVAaW50ZWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgIHwgIDEyICstCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgfCAgIDQgKy0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Yy5oICAgICAgICAgICB8ICAzOSArKy0tLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jICAgIHwgMjIxICsrKysrKysrKysrKysrKystLS0t LS0tLS0tLS0tCj4gICA0IGZpbGVzIGNoYW5nZWQsIDE1MSBpbnNlcnRpb25zKCspLCAxMjUgZGVs ZXRpb25zKC0pCgpUaGUgcmVuYW1pbmcgaXMgZmluZSwgYnV0IHRoaXMgcGF0Y2ggYWxzbyBpbmNs dWRlcyBvdGhlciBjaGFuZ2VzIAooZmxhZ2dlZCBiZWxvdykgd2hpY2ggY29uc3RpdHV0ZSBhIHJl Z3Jlc3Npb24uIEl0IGxvb2tzIGxpa2UgaXQncyBiYXNlZCAKb24gKGFuZCBpcyByZWluc3RhdGlu ZyBjb2RlIGZyb20pIEFsZXgncyBvcmlnaW5hbCBwYXRjaAotIDMzYTczMmYgZHJtL2k5MTU6IEd1 Qy1zcGVjaWZpYyBmaXJtd2FyZSBsb2FkZXIKdGh1cyByZXZlcnRpbmcgc29tZSBvZiB0aGUgY2hh bmdlcyBpbiB0aGUgbW9yZSByZWNlbnQKKyBmY2U5MWYyIGRybS9pOTE1L2d1YzogYWRkIGVuYWJs ZV9ndWNfbG9hZGluZyBwYXJhbWV0ZXIKCkkgc3VnZ2VzdCB0aGUgcHVyZWx5IG1lY2hhbmljYWwg c2VhcmNoLWFuZC1yZXBsYWNlIHNob3VsZCBiZSBkb25lIGluIGEgCmZpcnN0IHByZWxpbWluYXJ5 IHBhdGNoLCBhbmQgdGhlbiBhbnkgcmVtYWluaW5nIGNoYW5nZXMgc2hvdWxkIGJlIApjYXJlZnVs bHkgZXhhbWluZWQgdG8gc2VlIHdoZXRoZXIgdGhleSBhcmUgc3RpbGwgd2FudGVkIC0tIEkgc3Vz cGVjdCAKdGhleSBhcmVuJ3QuCgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gaW5k ZXggN2Q2M2FmMC4uNjk5NjRjMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j Cj4gQEAgLTI0ODMsNyArMjQ4Myw3IEBAIHN0YXRpYyBpbnQgaTkxNV9ndWNfbG9hZF9zdGF0dXNf aW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gICB7Cj4gICAJc3RydWN0IGRy bV9pbmZvX25vZGUgKm5vZGUgPSBtLT5wcml2YXRlOwo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IG5vZGUtPm1pbm9yLT5kZXYtPmRldl9wcml2YXRlOwo+IC0Jc3RydWN0 IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3Owo+ICsJc3RydWN0 IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7Cj4gICAJdTMyIHRt cCwgaTsKPgo+ICAgCWlmICghSEFTX0dVQ19VQ09ERShkZXZfcHJpdikpCj4gQEAgLTI0OTEsMTUg KzI0OTEsMTUgQEAgc3RhdGljIGludCBpOTE1X2d1Y19sb2FkX3N0YXR1c19pbmZvKHN0cnVjdCBz ZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPgo+ICAgCXNlcV9wcmludGYobSwgIkd1QyBmaXJtd2Fy ZSBzdGF0dXM6XG4iKTsKPiAgIAlzZXFfcHJpbnRmKG0sICJcdHBhdGg6ICVzXG4iLAo+IC0JCWd1 Y19mdy0+Z3VjX2Z3X3BhdGgpOwo+ICsJCWd1Y19mdy0+dWNfZndfcGF0aCk7Cj4gICAJc2VxX3By aW50ZihtLCAiXHRmZXRjaDogJXNcbiIsCj4gLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1 Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cykpOwo+ICsJCWludGVsX3VjX2Z3X3N0YXR1c19yZXBy KGd1Y19mdy0+ZmV0Y2hfc3RhdHVzKSk7Cj4gICAJc2VxX3ByaW50ZihtLCAiXHRsb2FkOiAlc1xu IiwKPiAtCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0 dXMpKTsKPiArCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPmxvYWRfc3RhdHVzKSk7 Cj4gICAJc2VxX3ByaW50ZihtLCAiXHR2ZXJzaW9uIHdhbnRlZDogJWQuJWRcbiIsCj4gLQkJZ3Vj X2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkLCBndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQpOwo+ ICsJCWd1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCwgZ3VjX2Z3LT5taW5vcl92ZXJfd2FudGVkKTsK PiAgIAlzZXFfcHJpbnRmKG0sICJcdHZlcnNpb24gZm91bmQ6ICVkLiVkXG4iLAo+IC0JCWd1Y19m dy0+Z3VjX2Z3X21ham9yX2ZvdW5kLCBndWNfZnctPmd1Y19md19taW5vcl9mb3VuZCk7Cj4gKwkJ Z3VjX2Z3LT5tYWpvcl92ZXJfZm91bmQsIGd1Y19mdy0+bWlub3JfdmVyX2ZvdW5kKTsKPiAgIAlz ZXFfcHJpbnRmKG0sICJcdGhlYWRlcjogb2Zmc2V0IGlzICVkOyBzaXplID0gJWRcbiIsCj4gICAJ CWd1Y19mdy0+aGVhZGVyX29mZnNldCwgZ3VjX2Z3LT5oZWFkZXJfc2l6ZSk7Cj4gICAJc2VxX3By aW50ZihtLCAiXHR1Q29kZTogb2Zmc2V0IGlzICVkOyBzaXplID0gJWRcbiIsCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+IGluZGV4IDAxYzdjZGYuLmJmYjg0 MDAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lv bi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4g QEAgLTEwMzksNyArMTAzOSw3IEBAIGludCBpbnRlbF9ndWNfc3VzcGVuZChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+ICAgCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gICAJdTMyIGRh dGFbM107Cj4KPiAtCWlmIChndWMtPmd1Y19mdy5ndWNfZndfbG9hZF9zdGF0dXMgIT0gR1VDX0ZJ Uk1XQVJFX1NVQ0NFU1MpCj4gKwlpZiAoZ3VjLT5ndWNfZncubG9hZF9zdGF0dXMgIT0gVUNfRklS TVdBUkVfU1VDQ0VTUykKPiAgIAkJcmV0dXJuIDA7Cj4KPiAgIAljdHggPSBkZXZfcHJpdi0+a2Vy bmVsX2NvbnRleHQ7Cj4gQEAgLTEwNjUsNyArMTA2NSw3IEBAIGludCBpbnRlbF9ndWNfcmVzdW1l KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0 eDsKPiAgIAl1MzIgZGF0YVszXTsKPgo+IC0JaWYgKGd1Yy0+Z3VjX2Z3Lmd1Y19md19sb2FkX3N0 YXR1cyAhPSBHVUNfRklSTVdBUkVfU1VDQ0VTUykKPiArCWlmIChndWMtPmd1Y19mdy5sb2FkX3N0 YXR1cyAhPSBVQ19GSVJNV0FSRV9TVUNDRVNTKQo+ICAgCQlyZXR1cm4gMDsKPgo+ICAgCWN0eCA9 IGRldl9wcml2LT5rZXJuZWxfY29udGV4dDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAo+IGlu ZGV4IDNlM2U3NDMuLjgzNjQyMGIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZ3VjLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAo+IEBA IC05MCwyOSArOTAsMjkgQEAgc3RydWN0IGk5MTVfZ3VjX2NsaWVudCB7Cj4gICAJdWludDY0X3Qg c3VibWlzc2lvbnNbSTkxNV9OVU1fRU5HSU5FU107Cj4gICB9Owo+Cj4gLWVudW0gaW50ZWxfZ3Vj X2Z3X3N0YXR1cyB7Cj4gLQlHVUNfRklSTVdBUkVfRkFJTCA9IC0xLAo+IC0JR1VDX0ZJUk1XQVJF X05PTkUgPSAwLAo+IC0JR1VDX0ZJUk1XQVJFX1BFTkRJTkcsCj4gLQlHVUNfRklSTVdBUkVfU1VD Q0VTUwo+ICtlbnVtIGludGVsX3VjX2Z3X3N0YXR1cyB7Cj4gKwlVQ19GSVJNV0FSRV9GQUlMID0g LTEsCj4gKwlVQ19GSVJNV0FSRV9OT05FID0gMCwKPiArCVVDX0ZJUk1XQVJFX1BFTkRJTkcsCj4g KwlVQ19GSVJNV0FSRV9TVUNDRVNTCj4gICB9Owo+Cj4gICAvKgo+ICAgICogVGhpcyBzdHJ1Y3R1 cmUgZW5jYXBzdWxhdGVzIGFsbCB0aGUgZGF0YSBuZWVkZWQgZHVyaW5nIHRoZSBwcm9jZXNzCj4g ICAgKiBvZiBmZXRjaGluZywgY2FjaGluZywgYW5kIGxvYWRpbmcgdGhlIGZpcm13YXJlIGltYWdl IGludG8gdGhlIEd1Qy4KPiAgICAqLwo+IC1zdHJ1Y3QgaW50ZWxfZ3VjX2Z3IHsKPiAtCXN0cnVj dCBkcm1fZGV2aWNlICoJCWd1Y19kZXY7Cj4gLQljb25zdCBjaGFyICoJCQlndWNfZndfcGF0aDsK PiAtCXNpemVfdAkJCQlndWNfZndfc2l6ZTsKPiAtCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICoJZ3VjX2Z3X29iajsKPiAtCWVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cwlndWNfZndfZmV0Y2hf c3RhdHVzOwo+IC0JZW51bSBpbnRlbF9ndWNfZndfc3RhdHVzCWd1Y19md19sb2FkX3N0YXR1czsK PiAtCj4gLQl1aW50MTZfdAkJCWd1Y19md19tYWpvcl93YW50ZWQ7Cj4gLQl1aW50MTZfdAkJCWd1 Y19md19taW5vcl93YW50ZWQ7Cj4gLQl1aW50MTZfdAkJCWd1Y19md19tYWpvcl9mb3VuZDsKPiAt CXVpbnQxNl90CQkJZ3VjX2Z3X21pbm9yX2ZvdW5kOwo+ICtzdHJ1Y3QgaW50ZWxfdWNfZncgewo+ ICsJc3RydWN0IGRybV9kZXZpY2UgKnVjX2RldjsKPiArCWNvbnN0IGNoYXIgKnVjX2Z3X3BhdGg7 Cj4gKwlzaXplX3QgdWNfZndfc2l6ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICp1 Y19md19vYmo7Cj4gKwllbnVtIGludGVsX3VjX2Z3X3N0YXR1cyBmZXRjaF9zdGF0dXM7Cj4gKwll bnVtIGludGVsX3VjX2Z3X3N0YXR1cwlsb2FkX3N0YXR1czsKPiArCj4gKwl1aW50MTZfdCBtYWpv cl92ZXJfd2FudGVkOwo+ICsJdWludDE2X3QgbWlub3JfdmVyX3dhbnRlZDsKPiArCXVpbnQxNl90 IG1ham9yX3Zlcl9mb3VuZDsKPiArCXVpbnQxNl90IG1pbm9yX3Zlcl9mb3VuZDsKPgo+ICAgCXVp bnQzMl90IGhlYWRlcl9zaXplOwo+ICAgCXVpbnQzMl90IGhlYWRlcl9vZmZzZXQ7Cj4gQEAgLTEy Myw3ICsxMjMsNyBAQCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3IHsKPiAgIH07Cj4KPiAgIHN0cnVjdCBp bnRlbF9ndWMgewo+IC0Jc3RydWN0IGludGVsX2d1Y19mdyBndWNfZnc7Cj4gKwlzdHJ1Y3QgaW50 ZWxfdWNfZncgZ3VjX2Z3Owo+ICAgCXVpbnQzMl90IGxvZ19mbGFnczsKPiAgIAlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqbG9nX29iajsKPgo+IEBAIC0xNTIsOSArMTUyLDEwIEBAIHN0cnVj dCBpbnRlbF9ndWMgewo+ICAgZXh0ZXJuIHZvaWQgaW50ZWxfZ3VjX2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldik7Cj4gICBleHRlcm4gaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KTsKPiAgIGV4dGVybiB2b2lkIGludGVsX2d1Y19maW5pKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpOwo+IC1leHRlcm4gY29uc3QgY2hhciAqaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXBy KGVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cyBzdGF0dXMpOwo+ICtleHRlcm4gY29uc3QgY2hhciAq aW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZW51bSBpbnRlbF91Y19md19zdGF0dXMgc3RhdHVzKTsK PiAgIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3N1c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7 Cj4gICBleHRlcm4gaW50IGludGVsX2d1Y19yZXN1bWUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7 Cj4gK3ZvaWQgaW50ZWxfdWNfZndfZmV0Y2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0 IGludGVsX3VjX2Z3ICp1Y19mdyk7Cj4KPiAgIC8qIGk5MTVfZ3VjX3N1Ym1pc3Npb24uYyAqLwo+ ICAgaW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNf bG9hZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKPiBpbmRl eCA4ZmU5NmEyLi5mZjA1NGY1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2d1Y19sb2FkZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19s b2FkZXIuYwo+IEBAIC02NiwxNiArNjYsMTYgQEAgTU9EVUxFX0ZJUk1XQVJFKEk5MTVfU0tMX0dV Q19VQ09ERSk7Cj4gICBNT0RVTEVfRklSTVdBUkUoSTkxNV9CWFRfR1VDX1VDT0RFKTsKPgo+ICAg LyogVXNlci1mcmllbmRseSByZXByZXNlbnRhdGlvbiBvZiBhbiBlbnVtICovCj4gLWNvbnN0IGNo YXIgKmludGVsX2d1Y19md19zdGF0dXNfcmVwcihlbnVtIGludGVsX2d1Y19md19zdGF0dXMgc3Rh dHVzKQo+ICtjb25zdCBjaGFyICppbnRlbF91Y19md19zdGF0dXNfcmVwcihlbnVtIGludGVsX3Vj X2Z3X3N0YXR1cyBzdGF0dXMpCj4gICB7Cj4gICAJc3dpdGNoIChzdGF0dXMpIHsKPiAtCWNhc2Ug R1VDX0ZJUk1XQVJFX0ZBSUw6Cj4gKwljYXNlIFVDX0ZJUk1XQVJFX0ZBSUw6Cj4gICAJCXJldHVy biAiRkFJTCI7Cj4gLQljYXNlIEdVQ19GSVJNV0FSRV9OT05FOgo+ICsJY2FzZSBVQ19GSVJNV0FS RV9OT05FOgo+ICAgCQlyZXR1cm4gIk5PTkUiOwo+IC0JY2FzZSBHVUNfRklSTVdBUkVfUEVORElO RzoKPiArCWNhc2UgVUNfRklSTVdBUkVfUEVORElORzoKPiAgIAkJcmV0dXJuICJQRU5ESU5HIjsK PiAtCWNhc2UgR1VDX0ZJUk1XQVJFX1NVQ0NFU1M6Cj4gKwljYXNlIFVDX0ZJUk1XQVJFX1NVQ0NF U1M6Cj4gICAJCXJldHVybiAiU1VDQ0VTUyI7Cj4gICAJZGVmYXVsdDoKPiAgIAkJcmV0dXJuICJV TktOT1dOISI7Cj4gQEAgLTIzOCw4ICsyMzgsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZ3VjX3Vj b2RlX3Jlc3BvbnNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgICAqLwo+ ICAgc3RhdGljIGludCBndWNfdWNvZGVfeGZlcl9kbWEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICAgewo+IC0Jc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9w cml2LT5ndWMuZ3VjX2Z3Owo+IC0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmZ3X29iaiA9 IGd1Y19mdy0+Z3VjX2Z3X29iajsKPiArCXN0cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRl dl9wcml2LT5ndWMuZ3VjX2Z3Owo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmZ3X29i aiA9IGd1Y19mdy0+dWNfZndfb2JqOwo+ICAgCXVuc2lnbmVkIGxvbmcgb2Zmc2V0Owo+ICAgCXN0 cnVjdCBzZ190YWJsZSAqc2cgPSBmd19vYmotPnBhZ2VzOwo+ICAgCXUzMiBzdGF0dXMsIHJzYVtV T1NfUlNBX1NDUkFUQ0hfTUFYX0NPVU5UXTsKPiBAQCAtMzExLDE3ICszMTEsMTcgQEAgc3RhdGlj IHUzMiBndWNfd29wY21fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g ICAgKi8KPiAgIHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ICAgewo+IC0Jc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRl dl9wcml2LT5ndWMuZ3VjX2Z3Owo+ICsJc3RydWN0IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2 X3ByaXYtPmd1Yy5ndWNfZnc7Cj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2 LT5kZXY7Cj4gICAJaW50IHJldDsKPgo+IC0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19n dHRfZG9tYWluKGd1Y19mdy0+Z3VjX2Z3X29iaiwgZmFsc2UpOwo+ICsJcmV0ID0gaTkxNV9nZW1f b2JqZWN0X3NldF90b19ndHRfZG9tYWluKGd1Y19mdy0+dWNfZndfb2JqLCBmYWxzZSk7Cj4gICAJ aWYgKHJldCkgewo+ICAgCQlEUk1fREVCVUdfRFJJVkVSKCJzZXQtZG9tYWluIGZhaWxlZCAlZFxu IiwgcmV0KTsKPiAgIAkJcmV0dXJuIHJldDsKPiAgIAl9Cj4KPiAtCXJldCA9IGk5MTVfZ2VtX29i al9nZ3R0X3BpbihndWNfZnctPmd1Y19md19vYmosIDAsIDApOwo+ICsJcmV0ID0gaTkxNV9nZW1f b2JqX2dndHRfcGluKGd1Y19mdy0+dWNfZndfb2JqLCAwLCAwKTsKPiAgIAlpZiAocmV0KSB7Cj4g ICAJCURSTV9ERUJVR19EUklWRVIoInBpbiBmYWlsZWQgJWRcbiIsIHJldCk7Cj4gICAJCXJldHVy biByZXQ7Cj4gQEAgLTM3Myw3ICszNzMsNyBAQCBzdGF0aWMgaW50IGd1Y191Y29kZV94ZmVyKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkgKiBXZSBrZWVwIHRoZSBvYmpl Y3QgcGFnZXMgZm9yIHJldXNlIGR1cmluZyByZXN1bWUuIEJ1dCB3ZSBjYW4gdW5waW4gaXQKPiAg IAkgKiBub3cgdGhhdCBETUEgaGFzIGNvbXBsZXRlZCwgc28gaXQgZG9lc24ndCBjb250aW51ZSB0 byB0YWtlIHVwIHNwYWNlLgo+ICAgCSAqLwo+IC0JaTkxNV9nZW1fb2JqZWN0X2dndHRfdW5waW4o Z3VjX2Z3LT5ndWNfZndfb2JqKTsKPiArCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKGd1Y19m dy0+dWNfZndfb2JqKTsKPgo+ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4gQEAgLTQxMiw0NiArNDEy LDU4IEBAIHN0YXRpYyBpbnQgaTkxNV9yZXNldF9ndWMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQoKVGhpcyBzZWN0aW9uIGlzIHRoZSBiaXQgdGhhdCBsb29rcyBsaWtlIGl0J3MgYmFzZWQgb24g YW4gb2xkIHZlcnNpb24gb2YgCnRoaXMgZnVuY3Rpb24gLi4uCgo+ICAgewo+ICAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQlzdHJ1Y3Qg aW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7Cj4gLQljb25zdCBj aGFyICpmd19wYXRoID0gZ3VjX2Z3LT5ndWNfZndfcGF0aDsKPiAtCWludCByZXRyaWVzLCByZXQs IGVycjsKPiAtCj4gLQlEUk1fREVCVUdfRFJJVkVSKCJHdUMgZncgc3RhdHVzOiBwYXRoICVzLCBm ZXRjaCAlcywgbG9hZCAlc1xuIiwKPiAtCQlmd19wYXRoLAo+IC0JCWludGVsX2d1Y19md19zdGF0 dXNfcmVwcihndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMpLAo+IC0JCWludGVsX2d1Y19md19z dGF0dXNfcmVwcihndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cykpOwo+IC0KPiAtCS8qIExvYWRp bmcgZm9yYmlkZGVuLCBvciBubyBmaXJtd2FyZSB0byBsb2FkPyAqLwo+IC0JaWYgKCFpOTE1LmVu YWJsZV9ndWNfbG9hZGluZykgewo+IC0JCWVyciA9IDA7Cj4gLQkJZ290byBmYWlsOwo+IC0JfSBl bHNlIGlmIChmd19wYXRoID09IE5VTEwpIHsKPiAtCQkvKiBEZXZpY2UgaXMga25vd24gdG8gaGF2 ZSBubyB1Q29kZSAoZS5nLiBubyBHdUMpICovCj4gLQkJZXJyID0gLUVOWElPOwo+IC0JCWdvdG8g ZmFpbDsKPiAtCX0gZWxzZSBpZiAoKmZ3X3BhdGggPT0gJ1wwJykgewo+IC0JCS8qIERldmljZSBo YXMgYSBHdUMgYnV0IHdlIGRvbid0IGtub3cgd2hhdCBmL3cgdG8gbG9hZD8gKi8KPiAtCQlEUk1f SU5GTygiTm8gR3VDIGZpcm13YXJlIGtub3duIGZvciB0aGlzIHBsYXRmb3JtXG4iKTsKPiAtCQll cnIgPSAtRU5PREVWOwo+IC0JCWdvdG8gZmFpbDsKPiAtCX0KPiArCXN0cnVjdCBpbnRlbF91Y19m dyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3Owo+ICsJaW50IHJldHJpZXMsIHJldCwg ZXJyID0gMDsKPiArCj4gKwlpZiAoIWk5MTUuZW5hYmxlX2d1Y19sb2FkaW5nKQo+ICsJCXJldHVy biAwOwo+ICsKPiArCURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBzdGF0dXM6IGZldGNoICVzLCBs b2FkICVzXG4iLAo+ICsJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ZmV0Y2hfc3Rh dHVzKSwKPiArCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPmxvYWRfc3RhdHVzKSk7 Cj4gKwo+ICsJZGlyZWN0X2ludGVycnVwdHNfdG9faG9zdChkZXZfcHJpdik7Cj4gKwo+ICsJaWYg KGd1Y19mdy0+ZmV0Y2hfc3RhdHVzID09IFVDX0ZJUk1XQVJFX05PTkUpCj4gKwkJcmV0dXJuIDA7 Cj4gKwo+ICsJaWYgKGd1Y19mdy0+ZmV0Y2hfc3RhdHVzID09IFVDX0ZJUk1XQVJFX1NVQ0NFU1Mg JiYKPiArCSAgICBndWNfZnctPmxvYWRfc3RhdHVzID09IFVDX0ZJUk1XQVJFX0ZBSUwpCj4gKwkJ cmV0dXJuIC1FTk9FWEVDOwo+Cj4gLQkvKiBGZXRjaCBmYWlsZWQsIG9yIGFscmVhZHkgZmV0Y2hl ZCBidXQgZmFpbGVkIHRvIGxvYWQ/ICovCj4gLQlpZiAoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3Rh dHVzICE9IEdVQ19GSVJNV0FSRV9TVUNDRVNTKSB7Cj4gKwlndWNfZnctPmxvYWRfc3RhdHVzID0g VUNfRklSTVdBUkVfUEVORElORzsKPiArCj4gKwlEUk1fREVCVUdfRFJJVkVSKCJHdUMgZncgZmV0 Y2ggc3RhdHVzICVzXG4iLAo+ICsJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ZmV0 Y2hfc3RhdHVzKSk7Cj4gKwo+ICsJc3dpdGNoIChndWNfZnctPmZldGNoX3N0YXR1cykgewo+ICsJ Y2FzZSBVQ19GSVJNV0FSRV9GQUlMOgo+ICsJCS8qIHNvbWV0aGluZyB3ZW50IHdyb25nIDooICov Cj4gICAJCWVyciA9IC1FSU87Cj4gICAJCWdvdG8gZmFpbDsKPiAtCX0gZWxzZSBpZiAoZ3VjX2Z3 LT5ndWNfZndfbG9hZF9zdGF0dXMgPT0gR1VDX0ZJUk1XQVJFX0ZBSUwpIHsKPiAtCQllcnIgPSAt RU5PRVhFQzsKPiArCj4gKwljYXNlIFVDX0ZJUk1XQVJFX05PTkU6Cj4gKwljYXNlIFVDX0ZJUk1X QVJFX1BFTkRJTkc6Cj4gKwlkZWZhdWx0Ogo+ICsJCS8qICJjYW4ndCBoYXBwZW4iICovCj4gKwkJ V0FSTl9PTkNFKDEsICJHdUMgZncgJXMgaW52YWxpZCBndWNfZndfZmV0Y2hfc3RhdHVzICVzIFsl ZF1cbiIsCj4gKwkJCWd1Y19mdy0+dWNfZndfcGF0aCwKPiArCQkJaW50ZWxfdWNfZndfc3RhdHVz X3JlcHIoZ3VjX2Z3LT5mZXRjaF9zdGF0dXMpLAo+ICsJCQlndWNfZnctPmZldGNoX3N0YXR1cyk7 Cj4gKwkJZXJyID0gLUVOWElPOwo+ICAgCQlnb3RvIGZhaWw7Cj4gKwo+ICsJY2FzZSBVQ19GSVJN V0FSRV9TVUNDRVNTOgo+ICsJCWJyZWFrOwo+ICAgCX0KCkFmdGVyIHRoaXMgd2UncmUgbW9zdGx5 IGJhY2sgdG8gc2VhcmNoLWFuZC1yZXBsYWNlLCBJIHRoaW5rLgoKLkRhdmUuCgo+ICAgCWRpcmVj dF9pbnRlcnJ1cHRzX3RvX2hvc3QoZGV2X3ByaXYpOwo+Cj4gLQlndWNfZnctPmd1Y19md19sb2Fk X3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9QRU5ESU5HOwo+ICsJZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9 IFVDX0ZJUk1XQVJFX1BFTkRJTkc7Cj4KPiAgIAlEUk1fREVCVUdfRFJJVkVSKCJHdUMgZncgc3Rh dHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKPiAtCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIo Z3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSwKPiAtCQlpbnRlbF9ndWNfZndfc3RhdHVzX3Jl cHIoZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMpKTsKPiArCQlpbnRlbF91Y19md19zdGF0dXNf cmVwcihndWNfZnctPmZldGNoX3N0YXR1cyksCj4gKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIo Z3VjX2Z3LT5sb2FkX3N0YXR1cykpOwo+Cj4gICAJZXJyID0gaTkxNV9ndWNfc3VibWlzc2lvbl9p bml0KGRldl9wcml2KTsKPiAgIAlpZiAoZXJyKQo+IEBAIC00ODUsMTEgKzQ5NywxMSBAQCBpbnQg aW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJCQkgInJldHJ5ICVk IG1vcmUgdGltZShzKVxuIiwgZXJyLCByZXRyaWVzKTsKPiAgIAl9Cj4KPiAtCWd1Y19mdy0+Z3Vj X2Z3X2xvYWRfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX1NVQ0NFU1M7Cj4gKwlndWNfZnctPmxvYWRf c3RhdHVzID0gVUNfRklSTVdBUkVfU1VDQ0VTUzsKPgo+ICAgCURSTV9ERUJVR19EUklWRVIoIkd1 QyBmdyBzdGF0dXM6IGZldGNoICVzLCBsb2FkICVzXG4iLAo+IC0JCWludGVsX2d1Y19md19zdGF0 dXNfcmVwcihndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMpLAo+IC0JCWludGVsX2d1Y19md19z dGF0dXNfcmVwcihndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cykpOwo+ICsJCWludGVsX3VjX2Z3 X3N0YXR1c19yZXByKGd1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKPiArCQlpbnRlbF91Y19md19zdGF0 dXNfcmVwcihndWNfZnctPmxvYWRfc3RhdHVzKSk7Cj4KPiAgIAlpZiAoaTkxNS5lbmFibGVfZ3Vj X3N1Ym1pc3Npb24pIHsKPiAgIAkJZXJyID0gaTkxNV9ndWNfc3VibWlzc2lvbl9lbmFibGUoZGV2 X3ByaXYpOwo+IEBAIC01MDEsOCArNTEzLDggQEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAgCXJldHVybiAwOwo+Cj4gICBmYWlsOgo+IC0JaWYgKGd1Y19m dy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID09IEdVQ19GSVJNV0FSRV9QRU5ESU5HKQo+IC0JCWd1Y19m dy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX0ZBSUw7Cj4gKwlpZiAoZ3VjX2Z3 LT5sb2FkX3N0YXR1cyA9PSBVQ19GSVJNV0FSRV9QRU5ESU5HKQo+ICsJCWd1Y19mdy0+bG9hZF9z dGF0dXMgPSBVQ19GSVJNV0FSRV9GQUlMOwo+Cj4gICAJZGlyZWN0X2ludGVycnVwdHNfdG9faG9z dChkZXZfcHJpdik7Cj4gICAJaTkxNV9ndWNfc3VibWlzc2lvbl9kaXNhYmxlKGRldl9wcml2KTsK PiBAQCAtNTM1LDcgKzU0Nyw3IEBAIGZhaWw6Cj4gICAJCURSTV9FUlJPUigiR3VDIGZpcm13YXJl IGxvYWQgZmFpbGVkOiAlZFxuIiwgZXJyKTsKPgo+ICAgCWlmIChpOTE1LmVuYWJsZV9ndWNfc3Vi bWlzc2lvbikgewo+IC0JCWlmIChmd19wYXRoID09IE5VTEwpCj4gKwkJaWYgKGd1Y19mdy0+dWNf ZndfcGF0aCA9PSBOVUxMKQo+ICAgCQkJRFJNX0lORk8oIkd1QyBzdWJtaXNzaW9uIHdpdGhvdXQg ZmlybXdhcmUgbm90IHN1cHBvcnRlZFxuIik7Cj4gICAJCWlmIChyZXQgPT0gMCkKPiAgIAkJCURS TV9JTkZPKCJGYWxsaW5nIGJhY2sgZnJvbSBHdUMgc3VibWlzc2lvbiB0byBleGVjbGlzdCBtb2Rl XG4iKTsKPiBAQCAtNTQ3LDcgKzU1OSwxOCBAQCBmYWlsOgo+ICAgCXJldHVybiByZXQ7Cj4gICB9 Cj4KPiAtc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0 cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdykKPiArLyoqCj4gKyAqIGludGVsX3VjX2Z3X2ZldGNo KCkgLSBmZXRjaCBmdyBibG9iIGFuZCBzYXZlIGl0IHRvIGludGVybmFsIG9iago+ICsgKiBAZGV2 Oglkcm0gZGV2aWNlCj4gKyAqIEB1Y19mdzoJdGhlIGludGVsX3VjX2Z3IHRvIGJlIHNldHVwCj4g KyAqCj4gKyAqIFRoZSBjYWxsZXIgc2hvdWxkIGhhdmUgc2V0dXAgZncgcGF0aCBhbmQgZncgdmVy c2lvbiByZXF1aXJlZC4gVGhpcyBmdW5jdGlvbgo+ICsgKiBmaXJzdCBmZXRjaCB0aGUgZncgYmxv YiBmcm9tIGZpbGUgc3lzdGVtLiBJZiBzdWNjZWVkLCBpdCB3aWxsIGRvIHNvbWUgYmFzaWMKPiAr ICogY2hlY2sgYmFzZWQgb24gY3NzIGhlYWRlciBpbmZvcm1hdGlvbi4gQXQgbGFzdCwgYSBHRU0g b2JqIGlzIGNyZWF0ZWQgYW5kCj4gKyAqIGZpbGxlZCB3aXRoIHRoZSBmdyBkYXRhLiBUaGlzIG9i aiB3aWxsIGJlIGxvYWRlZCB0byBIVyBhdCBsYXRlciBzdGFnZSBvZgo+ICsgKiBkcml2ZXIgaW5p dCBwcm9jZXNzLgo+ICsgKi8KPiArdm9pZCBpbnRlbF91Y19md19mZXRjaChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQo+ICAgewo+ICAgCXN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gICAJY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdzsK PiBAQCAtNTU1LDE3ICs1NzgsMTcgQEAgc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNoKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdykKPiAgIAlzaXplX3Qg c2l6ZTsKPiAgIAlpbnQgZXJyOwo+Cj4gLQlEUk1fREVCVUdfRFJJVkVSKCJiZWZvcmUgcmVxdWVz dGluZyBmaXJtd2FyZTogR3VDIGZ3IGZldGNoIHN0YXR1cyAlc1xuIiwKPiAtCQlpbnRlbF9ndWNf Zndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSk7Cj4gKwlEUk1fREVC VUdfRFJJVkVSKCJiZWZvcmUgcmVxdWVzdGluZyBmaXJtd2FyZTogdUMgZncgZmV0Y2ggc3RhdHVz ICVzXG4iLAo+ICsJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKHVjX2Z3LT5mZXRjaF9zdGF0dXMp KTsKPgo+IC0JZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmZncsIGd1Y19mdy0+Z3VjX2Z3X3BhdGgs ICZkZXYtPnBkZXYtPmRldik7Cj4gKwllcnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZmdywgdWNfZnct PnVjX2Z3X3BhdGgsICZkZXYtPnBkZXYtPmRldik7Cj4gICAJaWYgKGVycikKPiAgIAkJZ290byBm YWlsOwo+ICAgCWlmICghZncpCj4gICAJCWdvdG8gZmFpbDsKPgo+IC0JRFJNX0RFQlVHX0RSSVZF UigiZmV0Y2ggR3VDIGZ3IGZyb20gJXMgc3VjY2VlZGVkLCBmdyAlcFxuIiwKPiAtCQlndWNfZnct Pmd1Y19md19wYXRoLCBmdyk7Cj4gKwlEUk1fREVCVUdfRFJJVkVSKCJmZXRjaCB1QyBmdyBmcm9t ICVzIHN1Y2NlZWRlZCwgZncgJXBcbiIsCj4gKwkJdWNfZnctPnVjX2Z3X3BhdGgsIGZ3KTsKPgo+ ICAgCS8qIENoZWNrIHRoZSBzaXplIG9mIHRoZSBibG9iIGJlZm9yZSBleGFtaW5pbmcgYnVmZmVy IGNvbnRlbnRzICovCj4gICAJaWYgKGZ3LT5zaXplIDwgc2l6ZW9mKHN0cnVjdCBndWNfY3NzX2hl YWRlcikpIHsKPiBAQCAtNTc2LDYyICs1OTksNjQgQEAgc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNo KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdykKPiAg IAljc3MgPSAoc3RydWN0IGd1Y19jc3NfaGVhZGVyICopZnctPmRhdGE7Cj4KPiAgIAkvKiBGaXJt d2FyZSBiaXRzIGFsd2F5cyBzdGFydCBmcm9tIGhlYWRlciAqLwo+IC0JZ3VjX2Z3LT5oZWFkZXJf b2Zmc2V0ID0gMDsKPiAtCWd1Y19mdy0+aGVhZGVyX3NpemUgPSAoY3NzLT5oZWFkZXJfc2l6ZV9k dyAtIGNzcy0+bW9kdWx1c19zaXplX2R3IC0KPiArCXVjX2Z3LT5oZWFkZXJfb2Zmc2V0ID0gMDsK PiArCXVjX2Z3LT5oZWFkZXJfc2l6ZSA9IChjc3MtPmhlYWRlcl9zaXplX2R3IC0gY3NzLT5tb2R1 bHVzX3NpemVfZHcgLQo+ICAgCQljc3MtPmtleV9zaXplX2R3IC0gY3NzLT5leHBvbmVudF9zaXpl X2R3KSAqIHNpemVvZih1MzIpOwo+Cj4gLQlpZiAoZ3VjX2Z3LT5oZWFkZXJfc2l6ZSAhPSBzaXpl b2Yoc3RydWN0IGd1Y19jc3NfaGVhZGVyKSkgewo+ICsJaWYgKHVjX2Z3LT5oZWFkZXJfc2l6ZSAh PSBzaXplb2Yoc3RydWN0IGd1Y19jc3NfaGVhZGVyKSkgewo+ICAgCQlEUk1fRVJST1IoIkNTUyBo ZWFkZXIgZGVmaW5pdGlvbiBtaXNtYXRjaFxuIik7Cj4gICAJCWdvdG8gZmFpbDsKPiAgIAl9Cj4K PiAgIAkvKiB0aGVuLCB1Q29kZSAqLwo+IC0JZ3VjX2Z3LT51Y29kZV9vZmZzZXQgPSBndWNfZnct PmhlYWRlcl9vZmZzZXQgKyBndWNfZnctPmhlYWRlcl9zaXplOwo+IC0JZ3VjX2Z3LT51Y29kZV9z aXplID0gKGNzcy0+c2l6ZV9kdyAtIGNzcy0+aGVhZGVyX3NpemVfZHcpICogc2l6ZW9mKHUzMik7 Cj4gKwl1Y19mdy0+dWNvZGVfb2Zmc2V0ID0gdWNfZnctPmhlYWRlcl9vZmZzZXQgKyB1Y19mdy0+ aGVhZGVyX3NpemU7Cj4gKwl1Y19mdy0+dWNvZGVfc2l6ZSA9IChjc3MtPnNpemVfZHcgLSBjc3Mt PmhlYWRlcl9zaXplX2R3KSAqIHNpemVvZih1MzIpOwo+Cj4gICAJLyogbm93IFJTQSAqLwo+ICAg CWlmIChjc3MtPmtleV9zaXplX2R3ICE9IFVPU19SU0FfU0NSQVRDSF9NQVhfQ09VTlQpIHsKPiAg IAkJRFJNX0VSUk9SKCJSU0Ega2V5IHNpemUgaXMgYmFkXG4iKTsKPiAgIAkJZ290byBmYWlsOwo+ ICAgCX0KPiAtCWd1Y19mdy0+cnNhX29mZnNldCA9IGd1Y19mdy0+dWNvZGVfb2Zmc2V0ICsgZ3Vj X2Z3LT51Y29kZV9zaXplOwo+IC0JZ3VjX2Z3LT5yc2Ffc2l6ZSA9IGNzcy0+a2V5X3NpemVfZHcg KiBzaXplb2YodTMyKTsKPiArCXVjX2Z3LT5yc2Ffb2Zmc2V0ID0gdWNfZnctPnVjb2RlX29mZnNl dCArIHVjX2Z3LT51Y29kZV9zaXplOwo+ICsJdWNfZnctPnJzYV9zaXplID0gY3NzLT5rZXlfc2l6 ZV9kdyAqIHNpemVvZih1MzIpOwo+Cj4gICAJLyogQXQgbGVhc3QsIGl0IHNob3VsZCBoYXZlIGhl YWRlciwgdUNvZGUgYW5kIFJTQS4gU2l6ZSBvZiBhbGwgdGhyZWUuICovCj4gLQlzaXplID0gZ3Vj X2Z3LT5oZWFkZXJfc2l6ZSArIGd1Y19mdy0+dWNvZGVfc2l6ZSArIGd1Y19mdy0+cnNhX3NpemU7 Cj4gKwlzaXplID0gdWNfZnctPmhlYWRlcl9zaXplICsgdWNfZnctPnVjb2RlX3NpemUgKyB1Y19m dy0+cnNhX3NpemU7Cj4gICAJaWYgKGZ3LT5zaXplIDwgc2l6ZSkgewo+ICAgCQlEUk1fRVJST1Io Ik1pc3NpbmcgZmlybXdhcmUgY29tcG9uZW50c1xuIik7Cj4gICAJCWdvdG8gZmFpbDsKPiAgIAl9 Cj4KPiAgIAkvKiBIZWFkZXIgYW5kIHVDb2RlIHdpbGwgYmUgbG9hZGVkIHRvIFdPUENNLiBTaXpl IG9mIHRoZSB0d28uICovCj4gLQlzaXplID0gZ3VjX2Z3LT5oZWFkZXJfc2l6ZSArIGd1Y19mdy0+ dWNvZGVfc2l6ZTsKPiArCXNpemUgPSB1Y19mdy0+aGVhZGVyX3NpemUgKyB1Y19mdy0+dWNvZGVf c2l6ZTsKPiArCj4gKwkvKiBUb3AgMzJrIG9mIFdPUENNIGlzIHJlc2VydmVkICg4SyBzdGFjayAr IDI0ayBSQzYgY29udGV4dCkuICovCj4gICAJaWYgKHNpemUgPiBndWNfd29wY21fc2l6ZShkZXYt PmRldl9wcml2YXRlKSkgewo+ICAgCQlEUk1fRVJST1IoIkZpcm13YXJlIGlzIHRvbyBsYXJnZSB0 byBmaXQgaW4gV09QQ01cbiIpOwo+ICAgCQlnb3RvIGZhaWw7Cj4gICAJfQo+Cj4gICAJLyoKPiAt CSAqIFRoZSBHdUMgZmlybXdhcmUgaW1hZ2UgaGFzIHRoZSB2ZXJzaW9uIG51bWJlciBlbWJlZGRl ZCBhdCBhIHdlbGwta25vd24KPiArCSAqIFRoZSB1QyBmaXJtd2FyZSBpbWFnZSBoYXMgdGhlIHZl cnNpb24gbnVtYmVyIGVtYmVkZGVkIGF0IGEgd2VsbC1rbm93bgo+ICAgCSAqIG9mZnNldCB3aXRo aW4gdGhlIGZpcm13YXJlIGJsb2I7IG5vdGUgdGhhdCBtYWpvciAvIG1pbm9yIHZlcnNpb24gYXJl Cj4gICAJICogVFdPIGJ5dGVzIGVhY2ggKGkuZS4gdTE2KSwgYWx0aG91Z2ggYWxsIHBvaW50ZXJz IGFuZCBvZmZzZXRzIGFyZSBkZWZpbmVkCj4gICAJICogaW4gdGVybXMgb2YgYnl0ZXMgKHU4KS4K PiAgIAkgKi8KPiAtCWd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5kID0gY3NzLT5ndWNfc3dfdmVy c2lvbiA+PiAxNjsKPiAtCWd1Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5kID0gY3NzLT5ndWNfc3df dmVyc2lvbiAmIDB4RkZGRjsKPiAtCj4gLQlpZiAoZ3VjX2Z3LT5ndWNfZndfbWFqb3JfZm91bmQg IT0gZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkIHx8Cj4gLQkgICAgZ3VjX2Z3LT5ndWNfZndf bWlub3JfZm91bmQgPCBndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQpIHsKPiAtCQlEUk1fRVJS T1IoIkd1QyBmaXJtd2FyZSB2ZXJzaW9uICVkLiVkLCByZXF1aXJlZCAlZC4lZFxuIiwKPiAtCQkJ Z3VjX2Z3LT5ndWNfZndfbWFqb3JfZm91bmQsIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5kLAo+ IC0JCQlndWNfZnctPmd1Y19md19tYWpvcl93YW50ZWQsIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX3dh bnRlZCk7Cj4gKwl1Y19mdy0+bWFqb3JfdmVyX2ZvdW5kID0gY3NzLT5ndWNfc3dfdmVyc2lvbiA+ PiAxNjsKPiArCXVjX2Z3LT5taW5vcl92ZXJfZm91bmQgPSBjc3MtPmd1Y19zd192ZXJzaW9uICYg MHhGRkZGOwo+ICsKPiArCWlmICh1Y19mdy0+bWFqb3JfdmVyX2ZvdW5kICE9IHVjX2Z3LT5tYWpv cl92ZXJfd2FudGVkIHx8Cj4gKwkgICAgdWNfZnctPm1pbm9yX3Zlcl9mb3VuZCA8IHVjX2Z3LT5t aW5vcl92ZXJfd2FudGVkKSB7Cj4gKwkJRFJNX0VSUk9SKCJGaXJtd2FyZSB2ZXJzaW9uICVkLiVk LCByZXF1aXJlZCAlZC4lZFxuIiwKPiArCQkJdWNfZnctPm1ham9yX3Zlcl9mb3VuZCwgdWNfZnct Pm1pbm9yX3Zlcl9mb3VuZCwKPiArCQkJdWNfZnctPm1ham9yX3Zlcl93YW50ZWQsIHVjX2Z3LT5t aW5vcl92ZXJfd2FudGVkKTsKPiAgIAkJZXJyID0gLUVOT0VYRUM7Cj4gICAJCWdvdG8gZmFpbDsK PiAgIAl9Cj4KPiAgIAlEUk1fREVCVUdfRFJJVkVSKCJmaXJtd2FyZSB2ZXJzaW9uICVkLiVkIE9L IChtaW5pbXVtICVkLiVkKVxuIiwKPiAtCQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3JfZm91bmQsIGd1 Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5kLAo+IC0JCQlndWNfZnctPmd1Y19md19tYWpvcl93YW50 ZWQsIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX3dhbnRlZCk7Cj4gKwkJCXVjX2Z3LT5tYWpvcl92ZXJf Zm91bmQsIHVjX2Z3LT5taW5vcl92ZXJfZm91bmQsCj4gKwkJCXVjX2Z3LT5tYWpvcl92ZXJfd2Fu dGVkLCB1Y19mdy0+bWlub3JfdmVyX3dhbnRlZCk7Cj4KPiAgIAltdXRleF9sb2NrKCZkZXYtPnN0 cnVjdF9tdXRleCk7Cj4gICAJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9mcm9tX2RhdGEo ZGV2LCBmdy0+ZGF0YSwgZnctPnNpemUpOwo+IEBAIC02NDEsMzEgKzY2NiwzMSBAQCBzdGF0aWMg dm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX2d1 Y19mdyAqZ3VjX2Z3KQo+ICAgCQlnb3RvIGZhaWw7Cj4gICAJfQo+Cj4gLQlndWNfZnctPmd1Y19m d19vYmogPSBvYmo7Cj4gLQlndWNfZnctPmd1Y19md19zaXplID0gZnctPnNpemU7Cj4gKwl1Y19m dy0+dWNfZndfb2JqID0gb2JqOwo+ICsJdWNfZnctPnVjX2Z3X3NpemUgPSBmdy0+c2l6ZTsKPgo+ ICAgCURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBmZXRjaCBzdGF0dXMgU1VDQ0VTUywgb2JqICVw XG4iLAo+IC0JCQlndWNfZnctPmd1Y19md19vYmopOwo+ICsJCQl1Y19mdy0+dWNfZndfb2JqKTsK Pgo+ICAgCXJlbGVhc2VfZmlybXdhcmUoZncpOwo+IC0JZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3Rh dHVzID0gR1VDX0ZJUk1XQVJFX1NVQ0NFU1M7Cj4gKwl1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gVUNf RklSTVdBUkVfU1VDQ0VTUzsKPiAgIAlyZXR1cm47Cj4KPiAgIGZhaWw6Cj4gICAJRFJNX0RFQlVH X0RSSVZFUigiR3VDIGZ3IGZldGNoIHN0YXR1cyBGQUlMOyBlcnIgJWQsIGZ3ICVwLCBvYmogJXBc biIsCj4gLQkJZXJyLCBmdywgZ3VjX2Z3LT5ndWNfZndfb2JqKTsKPiArCQllcnIsIGZ3LCB1Y19m dy0+dWNfZndfb2JqKTsKPiAgIAlEUk1fRVJST1IoIkZhaWxlZCB0byBmZXRjaCBHdUMgZmlybXdh cmUgZnJvbSAlcyAoZXJyb3IgJWQpXG4iLAo+IC0JCSAgZ3VjX2Z3LT5ndWNfZndfcGF0aCwgZXJy KTsKPiArCQkgIHVjX2Z3LT51Y19md19wYXRoLCBlcnIpOwo+Cj4gICAJbXV0ZXhfbG9jaygmZGV2 LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0Jb2JqID0gZ3VjX2Z3LT5ndWNfZndfb2JqOwo+ICsJb2JqID0g dWNfZnctPnVjX2Z3X29iajsKPiAgIAlpZiAob2JqKQo+ICAgCQlkcm1fZ2VtX29iamVjdF91bnJl ZmVyZW5jZSgmb2JqLT5iYXNlKTsKPiAtCWd1Y19mdy0+Z3VjX2Z3X29iaiA9IE5VTEw7Cj4gKwl1 Y19mdy0+dWNfZndfb2JqID0gTlVMTDsKPiAgIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211 dGV4KTsKPgo+ICAgCXJlbGVhc2VfZmlybXdhcmUoZncpOwkJLyogT0sgZXZlbiBpZiBmdyBpcyBO VUxMICovCj4gLQlndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfRkFJ TDsKPiArCXVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9GQUlMOwo+ICAgfQo+Cj4g ICAvKioKPiBAQCAtNjgwLDcgKzcwNSw3IEBAIGZhaWw6Cj4gICB2b2lkIGludGVsX2d1Y19pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCXN0cnVjdCBpbnRlbF9ndWNfZncg Kmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKPiArCXN0cnVjdCBpbnRlbF91Y19mdyAq Z3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3Owo+ICAgCWNvbnN0IGNoYXIgKmZ3X3BhdGg7 Cj4KPiAgIAkvKiBBIG5lZ2F0aXZlIHZhbHVlIG1lYW5zICJ1c2UgcGxhdGZvcm0gZGVmYXVsdCIg Ki8KPiBAQCAtNjkzLDIwICs3MTgsMjAgQEAgdm9pZCBpbnRlbF9ndWNfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+ICAgCQlmd19wYXRoID0gTlVMTDsKPiAgIAl9IGVsc2UgaWYgKElTX1NL WUxBS0UoZGV2KSkgewo+ICAgCQlmd19wYXRoID0gSTkxNV9TS0xfR1VDX1VDT0RFOwo+IC0JCWd1 Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCA9IDY7Cj4gLQkJZ3VjX2Z3LT5ndWNfZndfbWlub3Jf d2FudGVkID0gMTsKPiArCQlndWNfZnctPm1ham9yX3Zlcl93YW50ZWQgPSA2Owo+ICsJCWd1Y19m dy0+bWlub3JfdmVyX3dhbnRlZCA9IDE7Cj4gICAJfSBlbHNlIGlmIChJU19CUk9YVE9OKGRldikp IHsKPiAgIAkJZndfcGF0aCA9IEk5MTVfQlhUX0dVQ19VQ09ERTsKPiAtCQlndWNfZnctPmd1Y19m d19tYWpvcl93YW50ZWQgPSA4Owo+IC0JCWd1Y19mdy0+Z3VjX2Z3X21pbm9yX3dhbnRlZCA9IDc7 Cj4gKwkJZ3VjX2Z3LT5tYWpvcl92ZXJfd2FudGVkID0gODsKPiArCQlndWNfZnctPm1pbm9yX3Zl cl93YW50ZWQgPSA3Owo+ICAgCX0gZWxzZSB7Cj4gICAJCWZ3X3BhdGggPSAiIjsJLyogdW5rbm93 biBkZXZpY2UgKi8KPiAgIAl9Cj4KPiAtCWd1Y19mdy0+Z3VjX2RldiA9IGRldjsKPiAtCWd1Y19m dy0+Z3VjX2Z3X3BhdGggPSBmd19wYXRoOwo+IC0JZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVz ID0gR1VDX0ZJUk1XQVJFX05PTkU7Cj4gLQlndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cyA9IEdV Q19GSVJNV0FSRV9OT05FOwo+ICsJZ3VjX2Z3LT51Y19kZXYgPSBkZXY7Cj4gKwlndWNfZnctPnVj X2Z3X3BhdGggPSBmd19wYXRoOwo+ICsJZ3VjX2Z3LT5mZXRjaF9zdGF0dXMgPSBVQ19GSVJNV0FS RV9OT05FOwo+ICsJZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX05PTkU7Cj4KPiAg IAkvKiBFYXJseSAoYW5kIHNpbGVudCkgcmV0dXJuIGlmIEd1QyBsb2FkaW5nIGlzIGRpc2FibGVk ICovCj4gICAJaWYgKCFpOTE1LmVuYWJsZV9ndWNfbG9hZGluZykKPiBAQCAtNzE2LDkgKzc0MSw5 IEBAIHZvaWQgaW50ZWxfZ3VjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAlpZiAo KmZ3X3BhdGggPT0gJ1wwJykKPiAgIAkJcmV0dXJuOwo+Cj4gLQlndWNfZnctPmd1Y19md19mZXRj aF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfUEVORElORzsKPiArCWd1Y19mdy0+ZmV0Y2hfc3RhdHVz ID0gVUNfRklSTVdBUkVfUEVORElORzsKPiAgIAlEUk1fREVCVUdfRFJJVkVSKCJHdUMgZmlybXdh cmUgcGVuZGluZywgcGF0aCAlc1xuIiwgZndfcGF0aCk7Cj4gLQlndWNfZndfZmV0Y2goZGV2LCBn dWNfZncpOwo+ICsJaW50ZWxfdWNfZndfZmV0Y2goZGV2LCBndWNfZncpOwo+ICAgCS8qIHN0YXR1 cyBtdXN0IG5vdyBiZSBGQUlMIG9yIFNVQ0NFU1MgKi8KPiAgIH0KPgo+IEBAIC03MjksMTcgKzc1 NCwxNyBAQCB2b2lkIGludGVsX2d1Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICB2 b2lkIGludGVsX2d1Y19maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICB7Cj4gICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCXN0 cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKPiArCXN0 cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3Owo+Cj4gICAJ bXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCWRpcmVjdF9pbnRlcnJ1cHRzX3Rv X2hvc3QoZGV2X3ByaXYpOwo+ICAgCWk5MTVfZ3VjX3N1Ym1pc3Npb25fZGlzYWJsZShkZXZfcHJp dik7Cj4gICAJaTkxNV9ndWNfc3VibWlzc2lvbl9maW5pKGRldl9wcml2KTsKPgo+IC0JaWYgKGd1 Y19mdy0+Z3VjX2Z3X29iaikKPiAtCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmZ3VjX2Z3 LT5ndWNfZndfb2JqLT5iYXNlKTsKPiAtCWd1Y19mdy0+Z3VjX2Z3X29iaiA9IE5VTEw7Cj4gKwlp ZiAoZ3VjX2Z3LT51Y19md19vYmopCj4gKwkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJmd1 Y19mdy0+dWNfZndfb2JqLT5iYXNlKTsKPiArCWd1Y19mdy0+dWNfZndfb2JqID0gTlVMTDsKPiAg IAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPgo+IC0JZ3VjX2Z3LT5ndWNfZndf ZmV0Y2hfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX05PTkU7Cj4gKwlndWNfZnctPmZldGNoX3N0YXR1 cyA9IFVDX0ZJUk1XQVJFX05PTkU7Cj4gICB9Cj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=