From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 1/5] drm/i915: Separate cherryview from valleyview Date: Thu, 10 Dec 2015 11:45:43 +0200 Message-ID: <87h9jqljqw.fsf@intel.com> References: <20151209171036.GJ4437@intel.com> <1449692975-14803-1-git-send-email-wayne.boyer@intel.com> <20151209205954.GN4437@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id E26FE6E943 for ; Thu, 10 Dec 2015 01:45:58 -0800 (PST) In-Reply-To: <20151209205954.GN4437@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?utf-8?B?U3lyasOkbMOk?= , Wayne Boyer Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org, Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAwOSBEZWMgMjAxNSwgVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4 LmludGVsLmNvbT4gd3JvdGU6Cj4gT24gV2VkLCBEZWMgMDksIDIwMTUgYXQgMTI6Mjk6MzVQTSAt MDgwMCwgV2F5bmUgQm95ZXIgd3JvdGU6Cj4+IFRoZSBjaGVycnl2aWV3IGRldmljZSBzaGFyZXMg bWFueSBjaGFyYWN0ZXJpc3RpY3Mgd2l0aCB0aGUgdmFsbGV5dmlldwo+PiBkZXZpY2UuICBXaGVu IHN1cHBvcnQgd2FzIGFkZGVkIHRvIHRoZSBkcml2ZXIgZm9yIGNoZXJyeXZpZXcsIHRoZQo+PiBj b3JyZXNwb25kaW5nIGRldmljZSBpbmZvIHN0cnVjdHVyZSBpbmNsdWRlZCAuaXNfdmFsbGV5dmll dyA9IDEuCj4+IFRoaXMgaXMgbm90IGNvcnJlY3QgYW5kIGxlYWRzIHRvIHNvbWUgY29uZnVzaW9u Lgo+PiAKPj4gVGhpcyBwYXRjaCBjaGFuZ2VzIC5pc192YWxsZXl2aWV3IHRvIC5pc19jaGVycnl2 aWV3IGluIHRoZSBjaGVycnl2aWV3Cj4+IGRldmljZSBpbmZvIHN0cnVjdHVyZSBhbmQgc2ltcGxp ZmllcyB0aGUgSVNfQ0hFUlJZVklFVyBtYWNyby4KPj4gVGhlbiB3aGVyZSBhcHByb3ByaWF0ZSwg aW5zdGFuY2VzIG9mIElTX1ZBTExFWVZJRVcgYXJlIHJlcGxhY2VkIHdpdGgKPj4gSVNfVkFMTEVZ VklFVyB8fCBJU19DSEVSUllWSUVXIG9yIGVxdWl2YWxlbnQuCj4+IAo+PiB2MjogVXNlIElTX1ZB TExFWVZJRVcgfHwgSVNfQ0hFUlJZVklFVyBpbnN0ZWFkIG9mIGRlZmluaW5nIGEgbmV3IG1hY3Jv Lgo+PiAgICAgQWxzbyBhZGQgZm9sbG93dXAgcGF0Y2hlcyB0byBmaXggaXNzdWVzIGRpc2NvdmVy ZWQgZHVyaW5nIHRoZSBmaXJzdAo+PiAgICAgcmV2aWV3LiAoVmlsbGUpCj4+IHYzOiBGaXggc29t ZSBzdHlsZSBpc3N1ZXMgYW5kIG9uZSBnZW4gY2hlY2suIFJlbW92ZSBDUlQgcmVsYXRlZCBjaGFu Z2VzCj4+ICAgICBhcyBDUlQgaXMgbm90IHN1cHBvcnRlZCBvbiBDSFYuIChJbXJlLCBWaWxsZSkK Pj4gdjQ6IE1ha2UgYSBmZXcgbW9yZSBvcHRpbWl6YXRpb25zLiAoVmlsbGUpCj4+IAo+PiBDYzog VmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPj4gQ2M6IFJv ZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KPj4gU2lnbmVkLW9mZi1ieTogV2F5 bmUgQm95ZXIgPHdheW5lLmJveWVyQGludGVsLmNvbT4KPgo+IGxndG0KPiBSZXZpZXdlZC1ieTog VmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkFja2VkLWJ5 OiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgoKRm9yIHRoaXMgb25lIEknbGwg bGV0IERhbmllbCBkbyB0aGUgaG9ub3JzIHRvIHB1c2guCgoKPgo+PiAtLS0KPj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICB8IDY4ICsrKysrKysrKysrKysrKystLS0t LS0tLS0tLS0tLS0tLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYyAgICAgICAg IHwgMTEgKystLS0tCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAg fCAxMCArKy0tLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwg MTYgKysrKystLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICB8 ICA0ICstCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgfCAgMiAr LQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgICAgIHwgIDMgKy0KPj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgICAgICAgICB8ICA4ICsrLS0KPj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3VzcGVuZC5jICAgICB8ICA0ICstCj4+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMgICAgICAgfCAxMCArKy0tLQo+PiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYyAgICAgIHwgIDcgKystLQo+PiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgIHwgNTQgKysrKysrKysrKysrKystLS0tLS0tLS0t LS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICAgICB8IDQwICsrKysr KysrKy0tLS0tLS0tLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jICAgICAg ICB8IDE0ICsrKy0tLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9wbGwuYyAg ICB8ICA2ICstLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jICAgICAgIHwg IDQgKy0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hvdHBsdWcuYyAgICB8ICAyICst Cj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMuYyAgICAgICAgfCAgMiArLQo+PiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyAgICAgIHwgIDIgKy0KPj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAgICB8ICA4ICsrLS0KPj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3Bzci5jICAgICAgICB8ICA2ICstLQo+PiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgICAgIHwgIDQgKy0KPj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3VuY29yZS5jICAgICB8ICA0ICstCj4+ICAyMyBmaWxlcyBjaGFuZ2VkLCAxNDcg aW5zZXJ0aW9ucygrKSwgMTQyIGRlbGV0aW9ucygtKQo+PiAKPj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMKPj4gaW5kZXggYTg3MjFmYy4uZmZmMzEyNTMgMTAwNjQ0Cj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCj4+IEBAIC0xMTQyLDggKzExNDIsMzQgQEAgc3RhdGljIGlu dCBpOTE1X2ZyZXF1ZW5jeV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ PiAgCQkJICAgTUVNU1RBVF9WSURfU0hJRlQpOwo+PiAgCQlzZXFfcHJpbnRmKG0sICJDdXJyZW50 IFAtc3RhdGU6ICVkXG4iLAo+PiAgCQkJICAgKHJndnN0YXQgJiBNRU1TVEFUX1BTVEFURV9NQVNL KSA+PiBNRU1TVEFUX1BTVEFURV9TSElGVCk7Cj4+IC0JfSBlbHNlIGlmIChJU19HRU42KGRldikg fHwgKElTX0dFTjcoZGV2KSAmJiAhSVNfVkFMTEVZVklFVyhkZXYpKSB8fAo+PiAtCQkgICBJU19C Uk9BRFdFTEwoZGV2KSB8fCBJU19HRU45KGRldikpIHsKPj4gKwl9IGVsc2UgaWYgKElTX1ZBTExF WVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpIHsKPj4gKwkJdTMyIGZyZXFfc3RzOwo+ PiArCj4+ICsJCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7Cj4+ICsJCWZyZXFf c3RzID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBVTklUX1JFR19HUFVfRlJFUV9TVFMpOwo+ PiArCQlzZXFfcHJpbnRmKG0sICJQVU5JVF9SRUdfR1BVX0ZSRVFfU1RTOiAweCUwOHhcbiIsIGZy ZXFfc3RzKTsKPj4gKwkJc2VxX3ByaW50ZihtLCAiRERSIGZyZXE6ICVkIE1IelxuIiwgZGV2X3By aXYtPm1lbV9mcmVxKTsKPj4gKwo+PiArCQlzZXFfcHJpbnRmKG0sICJhY3R1YWwgR1BVIGZyZXE6 ICVkIE1IelxuIiwKPj4gKwkJCSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCAoZnJlcV9zdHMg Pj4gOCkgJiAweGZmKSk7Cj4+ICsKPj4gKwkJc2VxX3ByaW50ZihtLCAiY3VycmVudCBHUFUgZnJl cTogJWQgTUh6XG4iLAo+PiArCQkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2 LT5ycHMuY3VyX2ZyZXEpKTsKPj4gKwo+PiArCQlzZXFfcHJpbnRmKG0sICJtYXggR1BVIGZyZXE6 ICVkIE1IelxuIiwKPj4gKwkJCSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+ cnBzLm1heF9mcmVxKSk7Cj4+ICsKPj4gKwkJc2VxX3ByaW50ZihtLCAibWluIEdQVSBmcmVxOiAl ZCBNSHpcbiIsCj4+ICsJCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnJw cy5taW5fZnJlcSkpOwo+PiArCj4+ICsJCXNlcV9wcmludGYobSwgImlkbGUgR1BVIGZyZXE6ICVk IE1IelxuIiwKPj4gKwkJCSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+cnBz LmlkbGVfZnJlcSkpOwo+PiArCj4+ICsJCXNlcV9wcmludGYobSwKPj4gKwkJCSAgICJlZmZpY2ll bnQgKFJQZSkgZnJlcXVlbmN5OiAlZCBNSHpcbiIsCj4+ICsJCQkgICBpbnRlbF9ncHVfZnJlcShk ZXZfcHJpdiwgZGV2X3ByaXYtPnJwcy5lZmZpY2llbnRfZnJlcSkpOwo+PiArCQltdXRleF91bmxv Y2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7Cj4+ICsJfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRl diktPmdlbiA+PSA2KSB7Cj4+ICAJCXUzMiBycF9zdGF0ZV9saW1pdHM7Cj4+ICAJCXUzMiBndF9w ZXJmX3N0YXR1czsKPj4gIAkJdTMyIHJwX3N0YXRlX2NhcDsKPj4gQEAgLTEyODQsMzMgKzEzMTAs NiBAQCBzdGF0aWMgaW50IGk5MTVfZnJlcXVlbmN5X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2 b2lkICp1bnVzZWQpCj4+ICAJCXNlcV9wcmludGYobSwKPj4gIAkJCSAgICJlZmZpY2llbnQgKFJQ ZSkgZnJlcXVlbmN5OiAlZCBNSHpcbiIsCj4+ICAJCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJp diwgZGV2X3ByaXYtPnJwcy5lZmZpY2llbnRfZnJlcSkpOwo+PiAtCX0gZWxzZSBpZiAoSVNfVkFM TEVZVklFVyhkZXYpKSB7Cj4+IC0JCXUzMiBmcmVxX3N0czsKPj4gLQo+PiAtCQltdXRleF9sb2Nr KCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwo+PiAtCQlmcmVxX3N0cyA9IHZsdl9wdW5pdF9yZWFk KGRldl9wcml2LCBQVU5JVF9SRUdfR1BVX0ZSRVFfU1RTKTsKPj4gLQkJc2VxX3ByaW50ZihtLCAi UFVOSVRfUkVHX0dQVV9GUkVRX1NUUzogMHglMDh4XG4iLCBmcmVxX3N0cyk7Cj4+IC0JCXNlcV9w cmludGYobSwgIkREUiBmcmVxOiAlZCBNSHpcbiIsIGRldl9wcml2LT5tZW1fZnJlcSk7Cj4+IC0K Pj4gLQkJc2VxX3ByaW50ZihtLCAiYWN0dWFsIEdQVSBmcmVxOiAlZCBNSHpcbiIsCj4+IC0JCQkg ICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgKGZyZXFfc3RzID4+IDgpICYgMHhmZikpOwo+PiAt Cj4+IC0JCXNlcV9wcmludGYobSwgImN1cnJlbnQgR1BVIGZyZXE6ICVkIE1IelxuIiwKPj4gLQkJ CSAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLmN1cl9mcmVxKSk7Cj4+ IC0KPj4gLQkJc2VxX3ByaW50ZihtLCAibWF4IEdQVSBmcmVxOiAlZCBNSHpcbiIsCj4+IC0JCQkg ICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnJwcy5tYXhfZnJlcSkpOwo+PiAt Cj4+IC0JCXNlcV9wcmludGYobSwgIm1pbiBHUFUgZnJlcTogJWQgTUh6XG4iLAo+PiAtCQkJICAg aW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMubWluX2ZyZXEpKTsKPj4gLQo+ PiAtCQlzZXFfcHJpbnRmKG0sICJpZGxlIEdQVSBmcmVxOiAlZCBNSHpcbiIsCj4+IC0JCQkgICBp bnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnJwcy5pZGxlX2ZyZXEpKTsKPj4gLQo+ PiAtCQlzZXFfcHJpbnRmKG0sCj4+IC0JCQkgICAiZWZmaWNpZW50IChSUGUpIGZyZXF1ZW5jeTog JWQgTUh6XG4iLAo+PiAtCQkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5y cHMuZWZmaWNpZW50X2ZyZXEpKTsKPj4gLQkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3 X2xvY2spOwo+PiAgCX0gZWxzZSB7Cj4+ICAJCXNlcV9wdXRzKG0sICJubyBQLXN0YXRlIGluZm8g YXZhaWxhYmxlXG4iKTsKPj4gIAl9Cj4+IEBAIC0xNjAyLDcgKzE2MDEsNyBAQCBzdGF0aWMgaW50 IGk5MTVfZHJwY19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+PiAgCXN0 cnVjdCBkcm1faW5mb19ub2RlICpub2RlID0gbS0+cHJpdmF0ZTsKPj4gIAlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gbm9kZS0+bWlub3ItPmRldjsKPj4gIAo+PiAtCWlmIChJU19WQUxMRVlWSUVX KGRldikpCj4+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikp Cj4+ICAJCXJldHVybiB2bHZfZHJwY19pbmZvKG0pOwo+PiAgCWVsc2UgaWYgKElOVEVMX0lORk8o ZGV2KS0+Z2VuID49IDYpCj4+ICAJCXJldHVybiBnZW42X2RycGNfaW5mbyhtKTsKPj4gQEAgLTE3 NDMsNyArMTc0Miw3IEBAIHN0YXRpYyBpbnQgaTkxNV9zcl9zdGF0dXMoc3RydWN0IHNlcV9maWxl ICptLCB2b2lkICp1bnVzZWQpCj4+ICAJCXNyX2VuYWJsZWQgPSBJOTE1X1JFQUQoSU5TVFBNKSAm IElOU1RQTV9TRUxGX0VOOwo+PiAgCWVsc2UgaWYgKElTX1BJTkVWSUVXKGRldikpCj4+ICAJCXNy X2VuYWJsZWQgPSBJOTE1X1JFQUQoRFNQRlczKSAmIFBJTkVWSUVXX1NFTEZfUkVGUkVTSF9FTjsK Pj4gLQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpCj4+ICsJZWxzZSBpZiAoSVNfVkFMTEVZ VklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPj4gIAkJc3JfZW5hYmxlZCA9IEk5MTVf UkVBRChGV19CTENfU0VMRl9WTFYpICYgRldfQ1NQV1JEV05FTjsKPj4gIAo+PiAgCWludGVsX3J1 bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPj4gQEAgLTM5ODMsNyArMzk4Miw3IEBAIHN0YXRpYyBp bnQgcGlwZV9jcmNfc2V0X3NvdXJjZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBpcGUg cGlwZSwKPj4gIAkJcmV0ID0gaTh4eF9waXBlX2NyY19jdGxfcmVnKCZzb3VyY2UsICZ2YWwpOwo+ PiAgCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNSkKPj4gIAkJcmV0ID0gaTl4eF9w aXBlX2NyY19jdGxfcmVnKGRldiwgcGlwZSwgJnNvdXJjZSwgJnZhbCk7Cj4+IC0JZWxzZSBpZiAo SVNfVkFMTEVZVklFVyhkZXYpKQo+PiArCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJ U19DSEVSUllWSUVXKGRldikpCj4+ICAJCXJldCA9IHZsdl9waXBlX2NyY19jdGxfcmVnKGRldiwg cGlwZSwgJnNvdXJjZSwgJnZhbCk7Cj4+ICAJZWxzZSBpZiAoSVNfR0VONShkZXYpIHx8IElTX0dF TjYoZGV2KSkKPj4gIAkJcmV0ID0gaWxrX3BpcGVfY3JjX2N0bF9yZWcoJnNvdXJjZSwgJnZhbCk7 Cj4+IEBAIC00MDUyLDcgKzQwNTEsNyBAQCBzdGF0aWMgaW50IHBpcGVfY3JjX3NldF9zb3VyY2Uo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBpcGUsCj4+ICAKPj4gIAkJaWYgKElT X0c0WChkZXYpKQo+PiAgCQkJZzR4X3VuZG9fcGlwZV9zY3JhbWJsZV9yZXNldChkZXYsIHBpcGUp Owo+PiAtCQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpCj4+ICsJCWVsc2UgaWYgKElTX1ZB TExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpCj4+ICAJCQl2bHZfdW5kb19waXBl X3NjcmFtYmxlX3Jlc2V0KGRldiwgcGlwZSk7Cj4+ICAJCWVsc2UgaWYgKElTX0hBU1dFTEwoZGV2 KSAmJiBwaXBlID09IFBJUEVfQSkKPj4gIAkJCWhzd190cmFuc19lZHBfcGlwZV9BX2NyY193YShk ZXYsIGZhbHNlKTsKPj4gQEAgLTQ0NDIsNyArNDQ0MSw4IEBAIHN0YXRpYyB2b2lkIHdtX2xhdGVu Y3lfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGNvbnN0IHVpbnQxNl90IHdtWzhdKQo+PiAgCQkg KiAtIFdNMSsgbGF0ZW5jeSB2YWx1ZXMgaW4gMC41dXMgdW5pdHMKPj4gIAkJICogLSBsYXRlbmNp ZXMgYXJlIGluIHVzIG9uIGdlbjkvdmx2L2Nodgo+PiAgCQkgKi8KPj4gLQkJaWYgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuID49IDkgfHwgSVNfVkFMTEVZVklFVyhkZXYpKQo+PiArCQlpZiAoSU5URUxf SU5GTyhkZXYpLT5nZW4gPj0gOSB8fCBJU19WQUxMRVlWSUVXKGRldikgfHwKPj4gKwkJICAgIElT X0NIRVJSWVZJRVcoZGV2KSkKPj4gIAkJCWxhdGVuY3kgKj0gMTA7Cj4+ICAJCWVsc2UgaWYgKGxl dmVsID4gMCkKPj4gIAkJCWxhdGVuY3kgKj0gNTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZG1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4+ IGluZGV4IGE4MWM3NjYuLjA4M2UyYzAgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZG1hLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+ PiBAQCAtMjU2LDcgKzI1Niw3IEBAIGludGVsX3NldHVwX21jaGJhcihzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+PiAgCXUzMiB0ZW1wOwo+PiAgCWJvb2wgZW5hYmxlZDsKPj4gIAo+PiAtCWlmIChJ U19WQUxMRVlWSUVXKGRldikpCj4+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVS UllWSUVXKGRldikpCj4+ICAJCXJldHVybjsKPj4gIAo+PiAgCWRldl9wcml2LT5tY2hiYXJfbmVl ZF9kaXNhYmxlID0gZmFsc2U7Cj4+IEBAIC03NzksNyArNzc5LDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfZGV2aWNlX2luZm9fcnVudGltZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICAJ CWluZm8tPm51bV9zcHJpdGVzW1BJUEVfQV0gPSAyOwo+PiAgCQlpbmZvLT5udW1fc3ByaXRlc1tQ SVBFX0JdID0gMjsKPj4gIAkJaW5mby0+bnVtX3Nwcml0ZXNbUElQRV9DXSA9IDE7Cj4+IC0JfSBl bHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpCj4+ICsJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVX KGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKQo+PiAgCQlmb3JfZWFjaF9waXBlKGRldl9wcml2 LCBwaXBlKQo+PiAgCQkJaW5mby0+bnVtX3Nwcml0ZXNbcGlwZV0gPSAyOwo+PiAgCWVsc2UKPj4g QEAgLTc5MSw3ICs3OTEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19ydW50aW1l X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gIAkJaW5mby0+bnVtX3BpcGVzID0gMDsK Pj4gIAl9IGVsc2UgaWYgKGluZm8tPm51bV9waXBlcyA+IDAgJiYKPj4gIAkJICAgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuID09IDcgfHwgSU5URUxfSU5GTyhkZXYpLT5nZW4gPT0gOCkgJiYKPj4gLQkJ ICAgIUlTX1ZBTExFWVZJRVcoZGV2KSkgewo+PiArCQkgICAhKElTX1ZBTExFWVZJRVcoZGV2KSB8 fCBJU19DSEVSUllWSUVXKGRldikpKSB7Cj4+ICAJCXUzMiBmdXNlX3N0cmFwID0gSTkxNV9SRUFE KEZVU0VfU1RSQVApOwo+PiAgCQl1MzIgc2Z1c2Vfc3RyYXAgPSBJOTE1X1JFQUQoU0ZVU0VfU1RS QVApOwo+PiAgCj4+IEBAIC04MzYsOSArODM2LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGV2aWNl X2luZm9fcnVudGltZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICAKPj4gIHN0YXRp YyB2b2lkIGludGVsX2luaXRfZHBpbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4+ICB7Cj4+IC0JaWYgKCFJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKPj4gLQkJcmV0dXJuOwo+ PiAtCj4+ICAJLyoKPj4gIAkgKiBJT1NGX1BPUlRfRFBJTyBpcyB1c2VkIGZvciBWTFYgeDIgUEhZ IChEUC9IRE1JIEIgYW5kIEMpLAo+PiAgCSAqIENIViB4MSBQSFkgKERQL0hETUkgRCkKPj4gQEAg LTg0Nyw3ICs4NDQsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9pbml0X2RwaW8oc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkg ewo+PiAgCQlEUElPX1BIWV9JT1NGX1BPUlQoRFBJT19QSFkwKSA9IElPU0ZfUE9SVF9EUElPXzI7 Cj4+ICAJCURQSU9fUEhZX0lPU0ZfUE9SVChEUElPX1BIWTEpID0gSU9TRl9QT1JUX0RQSU87Cj4+ IC0JfSBlbHNlIHsKPj4gKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKSB7Cj4+ ICAJCURQSU9fUEhZX0lPU0ZfUE9SVChEUElPX1BIWTApID0gSU9TRl9QT1JUX0RQSU87Cj4+ICAJ fQo+PiAgfQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPj4gaW5kZXggZTY5MzVmMS4uMWZiYmU4 ZSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4+IEBAIC0zMTEsNyArMzExLDcgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9jaGVycnl2aWV3X2lu Zm8gPSB7Cj4+ICAJLmdlbiA9IDgsIC5udW1fcGlwZXMgPSAzLAo+PiAgCS5uZWVkX2dmeF9od3Mg PSAxLCAuaGFzX2hvdHBsdWcgPSAxLAo+PiAgCS5yaW5nX21hc2sgPSBSRU5ERVJfUklORyB8IEJT RF9SSU5HIHwgQkxUX1JJTkcgfCBWRUJPWF9SSU5HLAo+PiAtCS5pc192YWxsZXl2aWV3ID0gMSwK Pj4gKwkuaXNfY2hlcnJ5dmlldyA9IDEsCj4+ICAJLmRpc3BsYXlfbW1pb19vZmZzZXQgPSBWTFZf RElTUExBWV9CQVNFLAo+PiAgCUdFTl9DSFZfUElQRU9GRlNFVFMsCj4+ICAJQ1VSU09SX09GRlNF VFMsCj4+IEBAIC04MDIsNyArODAyLDcgQEAgc3RhdGljIGludCBpOTE1X2RybV9yZXN1bWVfZWFy bHkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gIAo+PiAgCXBjaV9zZXRfbWFzdGVyKGRldi0+ cGRldik7Cj4+ICAKPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCj4+ICsJaWYgKElT X1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+PiAgCQly ZXQgPSB2bHZfcmVzdW1lX3ByZXBhcmUoZGV2X3ByaXYsIGZhbHNlKTsKPj4gIAlpZiAocmV0KQo+ PiAgCQlEUk1fRVJST1IoIlJlc3VtZSBwcmVwYXJlIGZhaWxlZDogJWQsIGNvbnRpbnVpbmcgYW55 d2F5XG4iLAo+PiBAQCAtMTUzMiw3ICsxNTMyLDcgQEAgc3RhdGljIGludCBpbnRlbF9ydW50aW1l X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UpCj4+ICAJCXJldCA9IGJ4dF9yZXN1bWVfcHJl cGFyZShkZXZfcHJpdik7Cj4+ICAJZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNf QlJPQURXRUxMKGRldl9wcml2KSkKPj4gIAkJaHN3X2Rpc2FibGVfcGM4KGRldl9wcml2KTsKPj4g LQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKPj4gKwllbHNlIGlmIChJU19WQUxM RVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPj4gIAkJcmV0ID0g dmx2X3Jlc3VtZV9wcmVwYXJlKGRldl9wcml2LCB0cnVlKTsKPj4gIAo+PiAgCS8qCj4+IEBAIC0x NTQ5LDcgKzE1NDksNyBAQCBzdGF0aWMgaW50IGludGVsX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBk ZXZpY2UgKmRldmljZSkKPj4gIAkgKiBwb3dlciB3ZWxsLCBzbyBocGQgaXMgcmVpbml0aWFsaXpl ZCBmcm9tIHRoZXJlLiBGb3IKPj4gIAkgKiBldmVyeW9uZSBlbHNlIGRvIGl0IGhlcmUuCj4+ICAJ ICovCj4+IC0JaWYgKCFJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKPj4gKwlpZiAoIUlTX1ZBTExF WVZJRVcoZGV2X3ByaXYpICYmICFJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPj4gIAkJaW50ZWxf aHBkX2luaXQoZGV2X3ByaXYpOwo+PiAgCj4+ICAJaW50ZWxfZW5hYmxlX2d0X3Bvd2Vyc2F2ZShk ZXYpOwo+PiBAQCAtMTU3NCw3ICsxNTc0LDcgQEAgc3RhdGljIGludCBpbnRlbF9zdXNwZW5kX2Nv bXBsZXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gIAkJcmV0ID0gYnh0 X3N1c3BlbmRfY29tcGxldGUoZGV2X3ByaXYpOwo+PiAgCWVsc2UgaWYgKElTX0hBU1dFTEwoZGV2 X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4+ICAJCXJldCA9IGhzd19zdXNwZW5k X2NvbXBsZXRlKGRldl9wcml2KTsKPj4gLQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2 KSkKPj4gKwllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVX KGRldl9wcml2KSkKPj4gIAkJcmV0ID0gdmx2X3N1c3BlbmRfY29tcGxldGUoZGV2X3ByaXYpOwo+ PiAgCWVsc2UKPj4gIAkJcmV0ID0gMDsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+IGluZGV4 IGYxYThhNTMuLjM4OTlmMjMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiBAQCAt NzYzLDYgKzc2Myw3IEBAIHN0cnVjdCBpbnRlbF9jc3Igewo+PiAgCWZ1bmMoaXNfY3Jlc3RsaW5l KSBzZXAgXAo+PiAgCWZ1bmMoaXNfaXZ5YnJpZGdlKSBzZXAgXAo+PiAgCWZ1bmMoaXNfdmFsbGV5 dmlldykgc2VwIFwKPj4gKwlmdW5jKGlzX2NoZXJyeXZpZXcpIHNlcCBcCj4+ICAJZnVuYyhpc19o YXN3ZWxsKSBzZXAgXAo+PiAgCWZ1bmMoaXNfc2t5bGFrZSkgc2VwIFwKPj4gIAlmdW5jKGlzX2Jy b3h0b24pIHNlcCBcCj4+IEBAIC0yNDU1LDkgKzI0NTYsOSBAQCBzdHJ1Y3QgZHJtX2k5MTVfY21k X3RhYmxlIHsKPj4gIAkJCQkgSU5URUxfREVWSUQoZGV2KSA9PSAweDAxNTIgfHwgXAo+PiAgCQkJ CSBJTlRFTF9ERVZJRChkZXYpID09IDB4MDE1YSkKPj4gICNkZWZpbmUgSVNfVkFMTEVZVklFVyhk ZXYpCShJTlRFTF9JTkZPKGRldiktPmlzX3ZhbGxleXZpZXcpCj4+IC0jZGVmaW5lIElTX0NIRVJS WVZJRVcoZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5pc192YWxsZXl2aWV3ICYmIElTX0dFTjgoZGV2 KSkKPj4gKyNkZWZpbmUgSVNfQ0hFUlJZVklFVyhkZXYpCShJTlRFTF9JTkZPKGRldiktPmlzX2No ZXJyeXZpZXcpCj4+ICAjZGVmaW5lIElTX0hBU1dFTEwoZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5p c19oYXN3ZWxsKQo+PiAtI2RlZmluZSBJU19CUk9BRFdFTEwoZGV2KQkoIUlOVEVMX0lORk8oZGV2 KS0+aXNfdmFsbGV5dmlldyAmJiBJU19HRU44KGRldikpCj4+ICsjZGVmaW5lIElTX0JST0FEV0VM TChkZXYpCSghSU5URUxfSU5GTyhkZXYpLT5pc19jaGVycnl2aWV3ICYmIElTX0dFTjgoZGV2KSkK Pj4gICNkZWZpbmUgSVNfU0tZTEFLRShkZXYpCShJTlRFTF9JTkZPKGRldiktPmlzX3NreWxha2Up Cj4+ICAjZGVmaW5lIElTX0JST1hUT04oZGV2KQkJKElOVEVMX0lORk8oZGV2KS0+aXNfYnJveHRv bikKPj4gICNkZWZpbmUgSVNfS0FCWUxBS0UoZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5pc19rYWJ5 bGFrZSkKPj4gQEAgLTI1ODQsNyArMjU4NSw4IEBAIHN0cnVjdCBkcm1faTkxNV9jbWRfdGFibGUg ewo+PiAgCQkJCSBJU19TS1lMQUtFKGRldikgfHwgSVNfS0FCWUxBS0UoZGV2KSkKPj4gICNkZWZp bmUgSEFTX1JVTlRJTUVfUE0oZGV2KQkoSVNfR0VONihkZXYpIHx8IElTX0hBU1dFTEwoZGV2KSB8 fCBcCj4+ICAJCQkJIElTX0JST0FEV0VMTChkZXYpIHx8IElTX1ZBTExFWVZJRVcoZGV2KSB8fCBc Cj4+IC0JCQkJIElTX1NLWUxBS0UoZGV2KSB8fCBJU19LQUJZTEFLRShkZXYpKQo+PiArCQkJCSBJ U19DSEVSUllWSUVXKGRldikgfHwgSVNfU0tZTEFLRShkZXYpIHx8IFwKPj4gKwkJCQkgSVNfS0FC WUxBS0UoZGV2KSkKPj4gICNkZWZpbmUgSEFTX1JDNihkZXYpCQkoSU5URUxfSU5GTyhkZXYpLT5n ZW4gPj0gNikKPj4gICNkZWZpbmUgSEFTX1JDNnAoZGV2KQkJKElOVEVMX0lORk8oZGV2KS0+Z2Vu ID09IDYgfHwgSVNfSVZZQlJJREdFKGRldikpCj4+ICAKPj4gQEAgLTI1OTcsNyArMjU5OSw4IEBA IHN0cnVjdCBkcm1faTkxNV9jbWRfdGFibGUgewo+PiAgCQkJCSAgICBJTlRFTF9JTkZPKGRldikt PmdlbiA+PSA4KQo+PiAgCj4+ICAjZGVmaW5lIEhBU19DT1JFX1JJTkdfRlJFUShkZXYpCShJTlRF TF9JTkZPKGRldiktPmdlbiA+PSA2ICYmIFwKPj4gLQkJCQkgIUlTX1ZBTExFWVZJRVcoZGV2KSAm JiAhSVNfQlJPWFRPTihkZXYpKQo+PiArCQkJCSAhSVNfVkFMTEVZVklFVyhkZXYpICYmICFJU19D SEVSUllWSUVXKGRldikgJiYgXAo+PiArCQkJCSAhSVNfQlJPWFRPTihkZXYpKQo+PiAgCj4+ICAj ZGVmaW5lIElOVEVMX1BDSF9ERVZJQ0VfSURfTUFTSwkJMHhmZjAwCj4+ICAjZGVmaW5lIElOVEVM X1BDSF9JQlhfREVWSUNFX0lEX1RZUEUJCTB4M2IwMAo+PiBAQCAtMjYyMCw3ICsyNjIzLDggQEAg c3RydWN0IGRybV9pOTE1X2NtZF90YWJsZSB7Cj4+ICAjZGVmaW5lIEhBU19QQ0hfTk9QKGRldikg KElOVEVMX1BDSF9UWVBFKGRldikgPT0gUENIX05PUCkKPj4gICNkZWZpbmUgSEFTX1BDSF9TUExJ VChkZXYpIChJTlRFTF9QQ0hfVFlQRShkZXYpICE9IFBDSF9OT05FKQo+PiAgCj4+IC0jZGVmaW5l IEhBU19HTUNIX0RJU1BMQVkoZGV2KSAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA1IHx8IElTX1ZB TExFWVZJRVcoZGV2KSkKPj4gKyNkZWZpbmUgSEFTX0dNQ0hfRElTUExBWShkZXYpIChJTlRFTF9J TkZPKGRldiktPmdlbiA8IDUgfHwgXAo+PiArCQkJICAgICAgIElTX1ZBTExFWVZJRVcoZGV2KSB8 fCBJU19DSEVSUllWSUVXKGRldikpCj4+ICAKPj4gIC8qIERQRiA9PSBkeW5hbWljIHBhcml0eSBm ZWF0dXJlICovCj4+ICAjZGVmaW5lIEhBU19MM19EUEYoZGV2KSAoSVNfSVZZQlJJREdFKGRldikg fHwgSVNfSEFTV0VMTChkZXYpKQo+PiBAQCAtMzUxMSw3ICszNTE1LDcgQEAgX19yYXdfd3JpdGUo NjQsIHEpCj4+ICAKPj4gIHN0YXRpYyBpbmxpbmUgaTkxNV9yZWdfdCBpOTE1X3ZnYWNudHJsX3Jl ZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgewo+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRl dikpCj4+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpCj4+ ICAJCXJldHVybiBWTFZfVkdBQ05UUkw7Cj4+ICAJZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5n ZW4gPj0gNSkKPj4gIAkJcmV0dXJuIENQVV9WR0FDTlRSTDsKPj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bS5jCj4+IGluZGV4IGRmYWYyNWIuLmU5NmU0OTYgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYwo+PiBAQCAtNDgzOCw3ICs0ODM4LDcgQEAgaW50IGk5MTVfZ2VtX2luaXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKPj4gIAo+PiAgCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsK Pj4gIAo+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPj4gKwlpZiAoSVNfVkFMTEVZVklF VyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewo+PiAgCQkvKiBWTFZBMCAocG90ZW50aWFs IGhhY2spLCBCSU9TIGlzbid0IGFjdHVhbGx5IHdha2luZyB1cyAqLwo+PiAgCQlJOTE1X1dSSVRF KFZMVl9HVExDX1dBS0VfQ1RSTCwgVkxWX0dUTENfQUxMT1dXQUtFUkVRKTsKPj4gIAkJaWYgKHdh aXRfZm9yKChJOTE1X1JFQUQoVkxWX0dUTENfUFdfU1RBVFVTKSAmCj4+IEBAIC00OTYzLDcgKzQ5 NjMsNyBAQCBpOTE1X2dlbV9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICAKPj4gIAlk ZXZfcHJpdi0+cmVsYXRpdmVfY29uc3RhbnRzX21vZGUgPSBJOTE1X0VYRUNfQ09OU1RBTlRTX1JF TF9HRU5FUkFMOwo+PiAgCj4+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDcgJiYgIUlT X1ZBTExFWVZJRVcoZGV2KSkKPj4gKwlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNyAmJiAh SVNfVkFMTEVZVklFVyhkZXYpICYmICFJU19DSEVSUllWSUVXKGRldikpCj4+ICAJCWRldl9wcml2 LT5udW1fZmVuY2VfcmVncyA9IDMyOwo+PiAgCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu ID49IDQgfHwgSVNfSTk0NUcoZGV2KSB8fCBJU19JOTQ1R00oZGV2KSB8fCBJU19HMzMoZGV2KSkK Pj4gIAkJZGV2X3ByaXYtPm51bV9mZW5jZV9yZWdzID0gMTY7Cj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9jb250ZXh0LmMKPj4gaW5kZXggNDM3NjFjNS4uNGIxMTYxZCAxMDA2NDQKPj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+PiBAQCAtMTkwLDcgKzE5MCw3 IEBAIGk5MTVfZ2VtX2FsbG9jX2NvbnRleHRfb2JqKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHNp emVfdCBzaXplKQo+PiAgCSAqIHdvdWxkIG1ha2UgdGhlIG9iamVjdCBzbm9vcGVkIHdoaWNoIG1p Z2h0IGhhdmUgYQo+PiAgCSAqIG5lZ2F0aXZlIHBlcmZvcm1hbmNlIGltcGFjdC4KPj4gIAkgKi8K Pj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNyAmJiAhSVNfVkFMTEVZVklFVyhkZXYp KSB7Cj4+ICsJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDcgJiYgIUlTX1ZBTExFWVZJRVco ZGV2KSAmJiAhSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4+ICAJCXJldCA9IGk5MTVfZ2VtX29iamVj dF9zZXRfY2FjaGVfbGV2ZWwob2JqLCBJOTE1X0NBQ0hFX0wzX0xMQyk7Cj4+ICAJCS8qIEZhaWx1 cmUgc2hvdWxkbid0IGV2ZXIgaGFwcGVuIHRoaXMgZWFybHkgKi8KPj4gIAkJaWYgKFdBUk5fT04o cmV0KSkgewo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+PiBpbmRleCAxZjdlNmI5 Li45NjNkOWI2IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+PiBAQCAt MTQwLDggKzE0MCw3IEBAIHN0YXRpYyBpbnQgc2FuaXRpemVfZW5hYmxlX3BwZ3R0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIGludCBlbmFibGVfcHBndHQpCj4+ICAjZW5kaWYKPj4gIAo+PiAgCS8q IEVhcmx5IFZMViBkb2Vzbid0IGhhdmUgdGhpcyAqLwo+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRl dikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2KSAmJgo+PiAtCSAgICBkZXYtPnBkZXYtPnJldmlzaW9u IDwgMHhiKSB7Cj4+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSAmJiBkZXYtPnBkZXYtPnJldmlz aW9uIDwgMHhiKSB7Cj4+ICAJCURSTV9ERUJVR19EUklWRVIoImRpc2FibGluZyBQUEdUVCBvbiBw cmUtQjMgc3RlcCBWTFZcbiIpOwo+PiAgCQlyZXR1cm4gMDsKPj4gIAl9Cj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9pcnEuYwo+PiBpbmRleCBlODhkNjkyLi44NjY2NGQxIDEwMDY0NAo+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfaXJxLmMKPj4gQEAgLTU4MSw3ICs1ODEsNyBAQCBpOTE1X2VuYWJsZV9waXBlc3RhdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBlLAo+PiAgewo+ PiAgCXUzMiBlbmFibGVfbWFzazsKPj4gIAo+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2 LT5kZXYpKQo+PiArCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVX KGRldl9wcml2KSkKPj4gIAkJZW5hYmxlX21hc2sgPSB2bHZfZ2V0X3BpcGVzdGF0X2VuYWJsZV9t YXNrKGRldl9wcml2LT5kZXYsCj4+ICAJCQkJCQkJICAgc3RhdHVzX21hc2spOwo+PiAgCWVsc2UK Pj4gQEAgLTU5NSw3ICs1OTUsNyBAQCBpOTE1X2Rpc2FibGVfcGlwZXN0YXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSwKPj4gIHsKPj4gIAl1MzIgZW5h YmxlX21hc2s7Cj4+ICAKPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdi0+ZGV2KSkKPj4g KwlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikp Cj4+ICAJCWVuYWJsZV9tYXNrID0gdmx2X2dldF9waXBlc3RhdF9lbmFibGVfbWFzayhkZXZfcHJp di0+ZGV2LAo+PiAgCQkJCQkJCSAgIHN0YXR1c19tYXNrKTsKPj4gIAllbHNlCj4+IEBAIC0xNzIz LDcgKzE3MjMsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2hwZF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+PiAgCSAqLwo+PiAgCVBPU1RJTkdfUkVBRChQT1JUX0hPVFBMVUdfU1RB VCk7Cj4+ICAKPj4gLQlpZiAoSVNfRzRYKGRldikgfHwgSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ ICsJaWYgKElTX0c0WChkZXYpIHx8IElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVX KGRldikpIHsKPj4gIAkJdTMyIGhvdHBsdWdfdHJpZ2dlciA9IGhvdHBsdWdfc3RhdHVzICYgSE9U UExVR19JTlRfU1RBVFVTX0c0WDsKPj4gIAo+PiAgCQlpZiAoaG90cGx1Z190cmlnZ2VyKSB7Cj4+ IEBAIC00NDEyLDcgKzQ0MTIsNyBAQCB2b2lkIGludGVsX2lycV9pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPj4gIAlJTklUX1dPUksoJmRldl9wcml2LT5sM19wYXJpdHku ZXJyb3Jfd29yaywgaXZ5YnJpZGdlX3Bhcml0eV93b3JrKTsKPj4gIAo+PiAgCS8qIExldCdzIHRy YWNrIHRoZSBlbmFibGVkIHJwcyBldmVudHMgKi8KPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXZf cHJpdikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+PiArCWlmIChJU19WQUxMRVlWSUVX KGRldl9wcml2KSkKPj4gIAkJLyogV2FHc3ZSQzBSZXNpZGVuY3lNZXRob2Q6dmx2ICovCj4+ICAJ CWRldl9wcml2LT5wbV9ycHNfZXZlbnRzID0gR0VONl9QTV9SUF9ET1dOX0VJX0VYUElSRUQgfCBH RU42X1BNX1JQX1VQX0VJX0VYUElSRUQ7Cj4+ICAJZWxzZQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3N1c3BlbmQuYwo+PiBpbmRleCAyZDkxODIxLi5hMmFhMDljIDEwMDY0NAo+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N1c3BlbmQuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3N1c3BlbmQuYwo+PiBAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgdm9pZCBpOTE1 X3NhdmVfZGlzcGxheShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgCQlkZXZfcHJpdi0+cmVn ZmlsZS5zYXZlUFBfT05fREVMQVlTID0gSTkxNV9SRUFEKFBDSF9QUF9PTl9ERUxBWVMpOwo+PiAg CQlkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBfT0ZGX0RFTEFZUyA9IEk5MTVfUkVBRChQQ0hfUFBf T0ZGX0RFTEFZUyk7Cj4+ICAJCWRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9ESVZJU09SID0gSTkx NV9SRUFEKFBDSF9QUF9ESVZJU09SKTsKPj4gLQl9IGVsc2UgaWYgKCFJU19WQUxMRVlWSUVXKGRl dikpIHsKPj4gKwl9IGVsc2UgaWYgKCFJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0NIRVJSWVZJ RVcoZGV2KSkgewo+PiAgCQlkZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBfQ09OVFJPTCA9IEk5MTVf UkVBRChQUF9DT05UUk9MKTsKPj4gIAkJZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX09OX0RFTEFZ UyA9IEk5MTVfUkVBRChQUF9PTl9ERUxBWVMpOwo+PiAgCQlkZXZfcHJpdi0+cmVnZmlsZS5zYXZl UFBfT0ZGX0RFTEFZUyA9IEk5MTVfUkVBRChQUF9PRkZfREVMQVlTKTsKPj4gQEAgLTg0LDcgKzg0 LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9yZXN0b3JlX2Rpc3BsYXkoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPj4gIAkJSTkxNV9XUklURShQQ0hfUFBfT0ZGX0RFTEFZUywgZGV2X3ByaXYtPnJlZ2Zp bGUuc2F2ZVBQX09GRl9ERUxBWVMpOwo+PiAgCQlJOTE1X1dSSVRFKFBDSF9QUF9ESVZJU09SLCBk ZXZfcHJpdi0+cmVnZmlsZS5zYXZlUFBfRElWSVNPUik7Cj4+ICAJCUk5MTVfV1JJVEUoUENIX1BQ X0NPTlRST0wsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9DT05UUk9MKTsKPj4gLQl9IGVsc2Ug aWYgKCFJU19WQUxMRVlWSUVXKGRldikpIHsKPj4gKwl9IGVsc2UgaWYgKCFJU19WQUxMRVlWSUVX KGRldikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2KSkgewo+PiAgCQlJOTE1X1dSSVRFKFBQX09OX0RF TEFZUywgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX09OX0RFTEFZUyk7Cj4+ICAJCUk5MTVfV1JJ VEUoUFBfT0ZGX0RFTEFZUywgZGV2X3ByaXYtPnJlZ2ZpbGUuc2F2ZVBQX09GRl9ERUxBWVMpOwo+ PiAgCQlJOTE1X1dSSVRFKFBQX0RJVklTT1IsIGRldl9wcml2LT5yZWdmaWxlLnNhdmVQUF9ESVZJ U09SKTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYwo+PiBpbmRleCBmOTI5YzYxLi4zN2Uz ZjBkIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKPj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCj4+IEBAIC00OSw3ICs0OSw3 IEBAIHN0YXRpYyB1MzIgY2FsY19yZXNpZGVuY3koc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4g IAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4+ICAKPj4gIAkvKiBPbiBWTFYgYW5k IENIViwgcmVzaWRlbmN5IHRpbWUgaXMgaW4gQ1ogdW5pdHMgcmF0aGVyIHRoYW4gMS4yOHVzICov Cj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+PiArCWlmIChJU19WQUxMRVlWSUVXKGRl dikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4+ICAJCXVuaXRzID0gMTsKPj4gIAkJZGl2ID0g ZGV2X3ByaXYtPmN6Y2xrX2ZyZXE7Cj4+ICAKPj4gQEAgLTI4NCw3ICsyODQsNyBAQCBzdGF0aWMg c3NpemVfdCBndF9hY3RfZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICprZGV2LAo+PiAgCWlu dGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPj4gIAo+PiAgCW11dGV4X2xvY2soJmRldl9w cml2LT5ycHMuaHdfbG9jayk7Cj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYtPmRldikp IHsKPj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZf cHJpdikpIHsKPj4gIAkJdTMyIGZyZXE7Cj4+ICAJCWZyZXEgPSB2bHZfcHVuaXRfcmVhZChkZXZf cHJpdiwgUFVOSVRfUkVHX0dQVV9GUkVRX1NUUyk7Cj4+ICAJCXJldCA9IGludGVsX2dwdV9mcmVx KGRldl9wcml2LCAoZnJlcSA+PiA4KSAmIDB4ZmYpOwo+PiBAQCAtNTk4LDcgKzU5OCw3IEBAIHZv aWQgaTkxNV9zZXR1cF9zeXNmcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgCQlpZiAocmV0 KQo+PiAgCQkJRFJNX0VSUk9SKCJSQzZwIHJlc2lkZW5jeSBzeXNmcyBzZXR1cCBmYWlsZWRcbiIp Owo+PiAgCX0KPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ICsJaWYgKElTX1ZBTExF WVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpIHsKPj4gIAkJcmV0ID0gc3lzZnNfbWVy Z2VfZ3JvdXAoJmRldi0+cHJpbWFyeS0+a2Rldi0+a29iaiwKPj4gIAkJCQkJJm1lZGlhX3JjNl9h dHRyX2dyb3VwKTsKPj4gIAkJaWYgKHJldCkKPj4gQEAgLTYxOSw3ICs2MTksNyBAQCB2b2lkIGk5 MTVfc2V0dXBfc3lzZnMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gIAl9Cj4+ICAKPj4gIAly ZXQgPSAwOwo+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4+ICsJaWYgKElTX1ZBTExFWVZJ RVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpCj4+ICAJCXJldCA9IHN5c2ZzX2NyZWF0ZV9m aWxlcygmZGV2LT5wcmltYXJ5LT5rZGV2LT5rb2JqLCB2bHZfYXR0cnMpOwo+PiAgCWVsc2UgaWYg KElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpCj4+ICAJCXJldCA9IHN5c2ZzX2NyZWF0ZV9maWxl cygmZGV2LT5wcmltYXJ5LT5rZGV2LT5rb2JqLCBnZW42X2F0dHJzKTsKPj4gQEAgLTYzNSw3ICs2 MzUsNyBAQCB2b2lkIGk5MTVfc2V0dXBfc3lzZnMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4g IHZvaWQgaTkxNV90ZWFyZG93bl9zeXNmcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgewo+ PiAgCXN5c2ZzX3JlbW92ZV9iaW5fZmlsZSgmZGV2LT5wcmltYXJ5LT5rZGV2LT5rb2JqLCAmZXJy b3Jfc3RhdGVfYXR0cik7Cj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKPj4gKwlpZiAoSVNf VkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPj4gIAkJc3lzZnNfcmVtb3Zl X2ZpbGVzKCZkZXYtPnByaW1hcnktPmtkZXYtPmtvYmosIHZsdl9hdHRycyk7Cj4+ICAJZWxzZQo+ PiAgCQlzeXNmc19yZW1vdmVfZmlsZXMoJmRldi0+cHJpbWFyeS0+a2Rldi0+a29iaiwgZ2VuNl9h dHRycyk7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+PiBpbmRleCA5YWE4M2U3Li4w NmZmZmFlIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5j Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKPj4gQEAgLTM3NSw3 ICszNzUsNyBAQCBzdGF0aWMgdm9pZCBpbGtfYXVkaW9fY29kZWNfZGlzYWJsZShzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlcikKPj4gIAlpZiAoSEFTX1BDSF9JQlgoZGV2X3ByaXYtPmRldikp IHsKPj4gIAkJYXVkX2NvbmZpZyA9IElCWF9BVURfQ0ZHKHBpcGUpOwo+PiAgCQlhdWRfY250cmxf c3QyID0gSUJYX0FVRF9DTlRMX1NUMjsKPj4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2 X3ByaXYpKSB7Cj4+ICsJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19D SEVSUllWSUVXKGRldl9wcml2KSkgewo+PiAgCQlhdWRfY29uZmlnID0gVkxWX0FVRF9DRkcocGlw ZSk7Cj4+ICAJCWF1ZF9jbnRybF9zdDIgPSBWTFZfQVVEX0NOVExfU1QyOwo+PiAgCX0gZWxzZSB7 Cj4+IEBAIC00MzUsNyArNDM1LDggQEAgc3RhdGljIHZvaWQgaWxrX2F1ZGlvX2NvZGVjX2VuYWJs ZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiAgCQlhdWRfY29uZmlnID0gSUJY X0FVRF9DRkcocGlwZSk7Cj4+ICAJCWF1ZF9jbnRsX3N0ID0gSUJYX0FVRF9DTlRMX1NUKHBpcGUp Owo+PiAgCQlhdWRfY250cmxfc3QyID0gSUJYX0FVRF9DTlRMX1NUMjsKPj4gLQl9IGVsc2UgaWYg KElTX1ZBTExFWVZJRVcoY29ubmVjdG9yLT5kZXYpKSB7Cj4+ICsJfSBlbHNlIGlmIChJU19WQUxM RVlWSUVXKGNvbm5lY3Rvci0+ZGV2KSB8fAo+PiArCQkgICBJU19DSEVSUllWSUVXKGNvbm5lY3Rv ci0+ZGV2KSkgewo+PiAgCQloZG1pd19oZG1pZWRpZCA9IFZMVl9IRE1JV19IRE1JRURJRChwaXBl KTsKPj4gIAkJYXVkX2NvbmZpZyA9IFZMVl9BVURfQ0ZHKHBpcGUpOwo+PiAgCQlhdWRfY250bF9z dCA9IFZMVl9BVURfQ05UTF9TVChwaXBlKTsKPj4gQEAgLTU1OSw3ICs1NjAsNyBAQCB2b2lkIGlu dGVsX2luaXRfYXVkaW8oc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gIAlpZiAoSVNfRzRYKGRl dikpIHsKPj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29kZWNfZW5hYmxlID0gZzR4X2F1 ZGlvX2NvZGVjX2VuYWJsZTsKPj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29kZWNfZGlz YWJsZSA9IGc0eF9hdWRpb19jb2RlY19kaXNhYmxlOwo+PiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZ VklFVyhkZXYpKSB7Cj4+ICsJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hF UlJZVklFVyhkZXYpKSB7Cj4+ICAJCWRldl9wcml2LT5kaXNwbGF5LmF1ZGlvX2NvZGVjX2VuYWJs ZSA9IGlsa19hdWRpb19jb2RlY19lbmFibGU7Cj4+ICAJCWRldl9wcml2LT5kaXNwbGF5LmF1ZGlv X2NvZGVjX2Rpc2FibGUgPSBpbGtfYXVkaW9fY29kZWNfZGlzYWJsZTsKPj4gIAl9IGVsc2UgaWYg KElTX0hBU1dFTEwoZGV2KSB8fCBJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA4KSB7Cj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4gaW5kZXggYjU5YTJkOC4uZDNiNjQzYiAxMDA2 NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+PiBAQCAtMTg3LDcgKzE4Nyw3 IEBAIGludCBpbnRlbF9ocmF3Y2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICAJdWludDMy X3QgY2xrY2ZnOwo+PiAgCj4+ICAJLyogVGhlcmUgaXMgbm8gQ0xLQ0ZHIHJlZyBpbiBWYWxsZXl2 aWV3LiBWTFYgaHJhd2NsayBpcyAyMDAgTUh6ICovCj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2 KSkKPj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPj4g IAkJcmV0dXJuIDIwMDsKPj4gIAo+PiAgCWNsa2NmZyA9IEk5MTVfUkVBRChDTEtDRkcpOwo+PiBA QCAtMjE1LDcgKzIxNSw3IEBAIGludCBpbnRlbF9ocmF3Y2xrKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4+ICAKPj4gIHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9jemNsayhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICB7Cj4+IC0JaWYgKCFJU19WQUxMRVlWSUVXKGRldl9w cml2KSkKPj4gKwlpZiAoIShJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVX KGRldl9wcml2KSkpCj4+ICAJCXJldHVybjsKPj4gIAo+PiAgCWRldl9wcml2LT5jemNsa19mcmVx ID0gdmx2X2dldF9jY2tfY2xvY2tfaHBsbChkZXZfcHJpdiwgImN6Y2xrIiwKPj4gQEAgLTcxNiwx MSArNzE2LDEyIEBAIHN0YXRpYyBib29sIGludGVsX1BMTF9pc192YWxpZChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+PiAgCWlmIChjbG9jay0+bTEgIDwgbGltaXQtPm0xLm1pbiAgfHwgbGltaXQt Pm0xLm1heCAgPCBjbG9jay0+bTEpCj4+ICAJCUlOVEVMUGxsSW52YWxpZCgibTEgb3V0IG9mIHJh bmdlXG4iKTsKPj4gIAo+PiAtCWlmICghSVNfUElORVZJRVcoZGV2KSAmJiAhSVNfVkFMTEVZVklF VyhkZXYpICYmICFJU19CUk9YVE9OKGRldikpCj4+ICsJaWYgKCFJU19QSU5FVklFVyhkZXYpICYm ICFJU19WQUxMRVlWSUVXKGRldikgJiYKPj4gKwkgICAgIUlTX0NIRVJSWVZJRVcoZGV2KSAmJiAh SVNfQlJPWFRPTihkZXYpKQo+PiAgCQlpZiAoY2xvY2stPm0xIDw9IGNsb2NrLT5tMikKPj4gIAkJ CUlOVEVMUGxsSW52YWxpZCgibTEgPD0gbTJcbiIpOwo+PiAgCj4+IC0JaWYgKCFJU19WQUxMRVlW SUVXKGRldikgJiYgIUlTX0JST1hUT04oZGV2KSkgewo+PiArCWlmICghSVNfVkFMTEVZVklFVyhk ZXYpICYmICFJU19DSEVSUllWSUVXKGRldikgJiYgIUlTX0JST1hUT04oZGV2KSkgewo+PiAgCQlp ZiAoY2xvY2stPnAgPCBsaW1pdC0+cC5taW4gfHwgbGltaXQtPnAubWF4IDwgY2xvY2stPnApCj4+ ICAJCQlJTlRFTFBsbEludmFsaWQoInAgb3V0IG9mIHJhbmdlXG4iKTsKPj4gIAkJaWYgKGNsb2Nr LT5tIDwgbGltaXQtPm0ubWluIHx8IGxpbWl0LT5tLm1heCA8IGNsb2NrLT5tKQo+PiBAQCAtMTMw NSw3ICsxMzA2LDcgQEAgdm9pZCBhc3NlcnRfcGFuZWxfdW5sb2NrZWQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+PiAgCQkgICAgSTkxNV9SRUFEKFBDSF9MVkRTKSAmIExWRFNf UElQRUJfU0VMRUNUKQo+PiAgCQkJcGFuZWxfcGlwZSA9IFBJUEVfQjsKPj4gIAkJLyogWFhYOiBl bHNlIGZpeCBmb3IgZURQICovCj4+IC0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikpIHsK Pj4gKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikp IHsKPj4gIAkJLyogcHJlc3VtYWJseSB3cml0ZSBsb2NrIGRlcGVuZHMgb24gcGlwZSwgbm90IHBv cnQgc2VsZWN0ICovCj4+ICAJCXBwX3JlZyA9IFZMVl9QSVBFX1BQX0NPTlRST0wocGlwZSk7Cj4+ ICAJCXBhbmVsX3BpcGUgPSBwaXBlOwo+PiBAQCAtMTQyMyw3ICsxNDI0LDcgQEAgc3RhdGljIHZv aWQgYXNzZXJ0X3Nwcml0ZXNfZGlzYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+PiAgCQkJICAgICAicGxhbmUgJWQgYXNzZXJ0aW9uIGZhaWx1cmUsIHNob3VsZCBiZSBv ZmYgb24gcGlwZSAlYyBidXQgaXMgc3RpbGwgYWN0aXZlXG4iLAo+PiAgCQkJICAgICBzcHJpdGUs IHBpcGVfbmFtZShwaXBlKSk7Cj4+ICAJCX0KPj4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVco ZGV2KSkgewo+PiArCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJ RVcoZGV2KSkgewo+PiAgCQlmb3JfZWFjaF9zcHJpdGUoZGV2X3ByaXYsIHBpcGUsIHNwcml0ZSkg ewo+PiAgCQkJdTMyIHZhbCA9IEk5MTVfUkVBRChTUENOVFIocGlwZSwgc3ByaXRlKSk7Cj4+ICAJ CQlJOTE1X1NUQVRFX1dBUk4odmFsICYgU1BfRU5BQkxFLAo+PiBAQCAtMjMxOSw3ICsyMzIwLDcg QEAgc3RhdGljIHVuc2lnbmVkIGludCBpbnRlbF9saW5lYXJfYWxpZ25tZW50KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gIAlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdl biA+PSA5KQo+PiAgCQlyZXR1cm4gMjU2ICogMTAyNDsKPj4gIAllbHNlIGlmIChJU19CUk9BRFdB VEVSKGRldl9wcml2KSB8fCBJU19DUkVTVExJTkUoZGV2X3ByaXYpIHx8Cj4+IC0JCSBJU19WQUxM RVlWSUVXKGRldl9wcml2KSkKPj4gKwkJIElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NI RVJSWVZJRVcoZGV2X3ByaXYpKQo+PiAgCQlyZXR1cm4gMTI4ICogMTAyNDsKPj4gIAllbHNlIGlm IChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDQpCj4+ICAJCXJldHVybiA0ICogMTAyNDsK Pj4gQEAgLTU0NTUsNyArNTQ1Niw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9jZGNsayhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgCSAqIEJTcGVjIGVycm9uZW91c2x5IGNsYWltcyB3 ZSBzaG91bGQgYWltIGZvciA0TUh6LCBidXQKPj4gIAkgKiBpbiBmYWN0IDFNSHogaXMgdGhlIGNv cnJlY3QgZnJlcXVlbmN5Lgo+PiAgCSAqLwo+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsK Pj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewo+PiAg CQkvKgo+PiAgCQkgKiBQcm9ncmFtIHRoZSBnbWJ1c19mcmVxIGJhc2VkIG9uIHRoZSBjZGNsayBm cmVxdWVuY3kuCj4+ICAJCSAqIEJTcGVjIGVycm9uZW91c2x5IGNsYWltcyB3ZSBzaG91bGQgYWlt IGZvciA0TUh6LCBidXQKPj4gQEAgLTcxODAsNyArNzE4MSw3IEBAIHN0YXRpYyBpbnQgaTl4eF9n ZXRfcmVmY2xrKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+PiAg Cj4+ICAJV0FSTl9PTighY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZSk7Cj4+ICAKPj4gLQlpZiAoSVNf VkFMTEVZVklFVyhkZXYpIHx8IElTX0JST1hUT04oZGV2KSkgewo+PiArCWlmIChJU19WQUxMRVlW SUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpIHx8IElTX0JST1hUT04oZGV2KSkgewo+PiAg CQlyZWZjbGsgPSAxMDAwMDA7Cj4+ICAJfSBlbHNlIGlmIChpbnRlbF9waXBlX3dpbGxfaGF2ZV90 eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9MVkRTKSAmJgo+PiAgCSAgICBpbnRlbF9wYW5l bF91c2Vfc3NjKGRldl9wcml2KSAmJiBudW1fY29ubmVjdG9ycyA8IDIpIHsKPj4gQEAgLTc4Nzks NyArNzg4MCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfc2V0X3BpcGVjb25mKHN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjKQo+PiAgCQlwaXBlY29uZiB8PSBQSVBFQ09ORl9ET1VCTEVfV0lERTsK Pj4gIAo+PiAgCS8qIG9ubHkgZzR4IGFuZCBsYXRlciBoYXZlIGZhbmN5IGJwYy9kaXRoZXIgY29u dHJvbHMgKi8KPj4gLQlpZiAoSVNfRzRYKGRldikgfHwgSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ ICsJaWYgKElTX0c0WChkZXYpIHx8IElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVX KGRldikpIHsKPj4gIAkJLyogQnNwZWMgY2xhaW1zIHRoYXQgd2UgY2FuJ3QgdXNlIGRpdGhlcmlu ZyBmb3IgMzBicHAgcGlwZXMuICovCj4+ICAJCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmRpdGhl ciAmJiBpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfYnBwICE9IDMwKQo+PiAgCQkJcGlwZWNvbmYg fD0gUElQRUNPTkZfRElUSEVSX0VOIHwKPj4gQEAgLTc5MTksNyArNzkyMCw4IEBAIHN0YXRpYyB2 b2lkIGk5eHhfc2V0X3BpcGVjb25mKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQo+PiAg CX0gZWxzZQo+PiAgCQlwaXBlY29uZiB8PSBQSVBFQ09ORl9QUk9HUkVTU0lWRTsKPj4gIAo+PiAt CWlmIChJU19WQUxMRVlWSUVXKGRldikgJiYgaW50ZWxfY3J0Yy0+Y29uZmlnLT5saW1pdGVkX2Nv bG9yX3JhbmdlKQo+PiArCWlmICgoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVco ZGV2KSkgJiYKPj4gKwkgICAgIGludGVsX2NydGMtPmNvbmZpZy0+bGltaXRlZF9jb2xvcl9yYW5n ZSkKPj4gIAkJcGlwZWNvbmYgfD0gUElQRUNPTkZfQ09MT1JfUkFOR0VfU0VMRUNUOwo+PiAgCj4+ ICAJSTkxNV9XUklURShQSVBFQ09ORihpbnRlbF9jcnRjLT5waXBlKSwgcGlwZWNvbmYpOwo+PiBA QCAtODE2Niw3ICs4MTY4LDcgQEAgc3RhdGljIGJvb2wgaTl4eF9nZXRfcGlwZV9jb25maWcoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCj4+ICAJaWYgKCEodG1wICYgUElQRUNPTkZfRU5BQkxFKSkK Pj4gIAkJcmV0dXJuIGZhbHNlOwo+PiAgCj4+IC0JaWYgKElTX0c0WChkZXYpIHx8IElTX1ZBTExF WVZJRVcoZGV2KSkgewo+PiArCWlmIChJU19HNFgoZGV2KSB8fCBJU19WQUxMRVlWSUVXKGRldikg fHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4+ICAJCXN3aXRjaCAodG1wICYgUElQRUNPTkZfQlBD X01BU0spIHsKPj4gIAkJY2FzZSBQSVBFQ09ORl82QlBDOgo+PiAgCQkJcGlwZV9jb25maWctPnBp cGVfYnBwID0gMTg7Cj4+IEBAIC04MTgyLDcgKzgxODQsOCBAQCBzdGF0aWMgYm9vbCBpOXh4X2dl dF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPj4gIAkJfQo+PiAgCX0KPj4g IAo+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikgJiYgKHRtcCAmIFBJUEVDT05GX0NPTE9SX1JB TkdFX1NFTEVDVCkpCj4+ICsJaWYgKChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklF VyhkZXYpKSAmJgo+PiArCSAgICAodG1wICYgUElQRUNPTkZfQ09MT1JfUkFOR0VfU0VMRUNUKSkK Pj4gIAkJcGlwZV9jb25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UgPSB0cnVlOwo+PiAgCj4+ICAJ aWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNCkKPj4gQEAgLTgyMTAsNyArODIxMyw3IEBAIHN0 YXRpYyBib29sIGk5eHhfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ PiAgCQlwaXBlX2NvbmZpZy0+cGl4ZWxfbXVsdGlwbGllciA9IDE7Cj4+ICAJfQo+PiAgCXBpcGVf Y29uZmlnLT5kcGxsX2h3X3N0YXRlLmRwbGwgPSBJOTE1X1JFQUQoRFBMTChjcnRjLT5waXBlKSk7 Cj4+IC0JaWYgKCFJU19WQUxMRVlWSUVXKGRldikpIHsKPj4gKwlpZiAoIUlTX1ZBTExFWVZJRVco ZGV2KSAmJiAhSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4+ICAJCS8qCj4+ICAJCSAqIERQTExfRFZP XzJYX01PREUgbXVzdCBiZSBlbmFibGVkIGZvciBib3RoIERQTExzCj4+ICAJCSAqIG9uIDgzMC4g RmlsdGVyIGl0IG91dCBoZXJlIHNvIHRoYXQgd2UgZG9uJ3QKPj4gQEAgLTExNTM3LDcgKzExNTQw LDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCj4+ICAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDUgfHwgSVNfRzRYKGRldikpCj4+ ICAJCXdvcmstPmZsaXBfY291bnQgPSBJOTE1X1JFQUQoUElQRV9GTElQQ09VTlRfRzRYKHBpcGUp KSArIDE7Cj4+ICAKPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ICsJaWYgKElTX1ZB TExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpIHsKPj4gIAkJcmluZyA9ICZkZXZf cHJpdi0+cmluZ1tCQ1NdOwo+PiAgCQlpZiAob2JqLT50aWxpbmdfbW9kZSAhPSBpbnRlbF9mYl9v Ymood29yay0+b2xkX2ZiKS0+dGlsaW5nX21vZGUpCj4+ICAJCQkvKiB2bHY6IERJU1BMQVlfRkxJ UCBmYWlscyB0byBjaGFuZ2UgdGlsaW5nICovCj4+IEBAIC0xMjAxNiw3ICsxMjAxOSw3IEBAIGNv bXB1dGVfYmFzZWxpbmVfcGlwZV9icHAoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4+ICAJc3Ry dWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5lY3Rvcl9zdGF0ZTsKPj4gIAlpbnQgYnBwLCBp Owo+PiAgCj4+IC0JaWYgKChJU19HNFgoZGV2KSB8fCBJU19WQUxMRVlWSUVXKGRldikpKQo+PiAr CWlmICgoSVNfRzRYKGRldikgfHwgSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVco ZGV2KSkpCj4+ICAJCWJwcCA9IDEwKjM7Cj4+ICAJZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5n ZW4gPj0gNSkKPj4gIAkJYnBwID0gMTIqMzsKPj4gQEAgLTEyNjI2LDcgKzEyNjI5LDcgQEAgaW50 ZWxfcGlwZV9jb25maWdfY29tcGFyZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgCVBJUEVf Q09ORl9DSEVDS19JKHBpeGVsX211bHRpcGxpZXIpOwo+PiAgCVBJUEVfQ09ORl9DSEVDS19JKGhh c19oZG1pX3NpbmspOwo+PiAgCWlmICgoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA4ICYmICFJU19I QVNXRUxMKGRldikpIHx8Cj4+IC0JICAgIElTX1ZBTExFWVZJRVcoZGV2KSkKPj4gKwkgICAgSVNf VkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPj4gIAkJUElQRV9DT05GX0NI RUNLX0kobGltaXRlZF9jb2xvcl9yYW5nZSk7Cj4+ICAJUElQRV9DT05GX0NIRUNLX0koaGFzX2lu Zm9mcmFtZSk7Cj4+ICAKPj4gQEAgLTE0Mzc4LDcgKzE0MzgxLDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfc2V0dXBfb3V0cHV0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgCj4+ICAJCWlmIChJ OTE1X1JFQUQoUENIX0RQX0QpICYgRFBfREVURUNURUQpCj4+ICAJCQlpbnRlbF9kcF9pbml0KGRl diwgUENIX0RQX0QsIFBPUlRfRCk7Cj4+IC0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikp IHsKPj4gKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRl dikpIHsKPj4gIAkJLyoKPj4gIAkJICogVGhlIERQX0RFVEVDVEVEIGJpdCBpcyB0aGUgbGF0Y2hl ZCBzdGF0ZSBvZiB0aGUgRERDCj4+ICAJCSAqIFNEQSBwaW4gYXQgYm9vdC4gSG93ZXZlciBzaW5j ZSBlRFAgZG9lc24ndCByZXF1aXJlIEREQwo+PiBAQCAtMTQ1MjcsNyArMTQ1MzAsNyBAQCB1MzIg aW50ZWxfZmJfcGl0Y2hfbGltaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdWludDY0X3QgZmJf bW9kaWZpZXIsCj4+ICAJCSAqICBwaXhlbHMgYW5kIDMySyBieXRlcy4iCj4+ICAJCSAqLwo+PiAg CQkgcmV0dXJuIG1pbig4MTkyKmRybV9mb3JtYXRfcGxhbmVfY3BwKHBpeGVsX2Zvcm1hdCwgMCks IDMyNzY4KTsKPj4gLQl9IGVsc2UgaWYgKGdlbiA+PSA1ICYmICFJU19WQUxMRVlWSUVXKGRldikp IHsKPj4gKwl9IGVsc2UgaWYgKGdlbiA+PSA1ICYmICFJU19WQUxMRVlWSUVXKGRldikgJiYgIUlT X0NIRVJSWVZJRVcoZGV2KSkgewo+PiAgCQlyZXR1cm4gMzIqMTAyNDsKPj4gIAl9IGVsc2UgaWYg KGdlbiA+PSA0KSB7Cj4+ICAJCWlmIChmYl9tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWF9U SUxFRCkKPj4gQEAgLTE0NjMxLDcgKzE0NjM0LDggQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1 ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+ICAJCX0KPj4gIAkJYnJlYWs7Cj4+ ICAJY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4Ogo+PiAtCQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2 KSAmJiBJTlRFTF9JTkZPKGRldiktPmdlbiA8IDkpIHsKPj4gKwkJaWYgKCFJU19WQUxMRVlWSUVX KGRldikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2KSAmJgo+PiArCQkgICAgSU5URUxfSU5GTyhkZXYp LT5nZW4gPCA5KSB7Cj4+ICAJCQlEUk1fREVCVUcoInVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDog JXNcbiIsCj4+ICAJCQkJICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3Jt YXQpKTsKPj4gIAkJCXJldHVybiAtRUlOVkFMOwo+PiBAQCAtMTQ2NDcsNyArMTQ2NTEsNyBAQCBz dGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK Pj4gIAkJfQo+PiAgCQlicmVhazsKPj4gIAljYXNlIERSTV9GT1JNQVRfQUJHUjIxMDEwMTA6Cj4+ IC0JCWlmICghSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ICsJCWlmICghSVNfVkFMTEVZVklFVyhk ZXYpICYmICFJU19DSEVSUllWSUVXKGRldikpIHsKPj4gIAkJCURSTV9ERUJVRygidW5zdXBwb3J0 ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwKPj4gIAkJCQkgIGRybV9nZXRfZm9ybWF0X25hbWUobW9k ZV9jbWQtPnBpeGVsX2Zvcm1hdCkpOwo+PiAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4+IEBAIC0xNDc3 NSw3ICsxNDc3OSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2luaXRfZGlzcGxheShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+PiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2Rpc2FibGUgPSBpcm9u bGFrZV9jcnRjX2Rpc2FibGU7Cj4+ICAJCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9wcmltYXJ5 X3BsYW5lID0KPj4gIAkJCWlyb25sYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lOwo+PiAtCX0gZWxz ZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ICsJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVX KGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4+ICAJCWRldl9wcml2LT5kaXNwbGF5Lmdl dF9waXBlX2NvbmZpZyA9IGk5eHhfZ2V0X3BpcGVfY29uZmlnOwo+PiAgCQlkZXZfcHJpdi0+ZGlz cGxheS5nZXRfaW5pdGlhbF9wbGFuZV9jb25maWcgPQo+PiAgCQkJaTl4eF9nZXRfaW5pdGlhbF9w bGFuZV9jb25maWc7Cj4+IEBAIC0xNDgwOCw3ICsxNDgxMiw3IEBAIHN0YXRpYyB2b2lkIGludGVs X2luaXRfZGlzcGxheShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgCWVsc2UgaWYgKElTX0hB U1dFTEwoZGV2KSkKPj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2Rpc3BsYXlfY2xvY2tfc3Bl ZWQgPQo+PiAgCQkJaGFzd2VsbF9nZXRfZGlzcGxheV9jbG9ja19zcGVlZDsKPj4gLQllbHNlIGlm IChJU19WQUxMRVlWSUVXKGRldikpCj4+ICsJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8 IElTX0NIRVJSWVZJRVcoZGV2KSkKPj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2Rpc3BsYXlf Y2xvY2tfc3BlZWQgPQo+PiAgCQkJdmFsbGV5dmlld19nZXRfZGlzcGxheV9jbG9ja19zcGVlZDsK Pj4gIAllbHNlIGlmIChJU19HRU41KGRldikpCj4+IEBAIC0xNDg2Niw3ICsxNDg3MCw3IEBAIHN0 YXRpYyB2b2lkIGludGVsX2luaXRfZGlzcGxheShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAg CQkJZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jYWxjX2NkY2xrID0KPj4gIAkJCQlicm9hZHdl bGxfbW9kZXNldF9jYWxjX2NkY2xrOwo+PiAgCQl9Cj4+IC0JfSBlbHNlIGlmIChJU19WQUxMRVlW SUVXKGRldikpIHsKPj4gKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVS UllWSUVXKGRldikpIHsKPj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jb21taXRfY2Rj bGsgPQo+PiAgCQkJdmFsbGV5dmlld19tb2Rlc2V0X2NvbW1pdF9jZGNsazsKPj4gIAkJZGV2X3By aXYtPmRpc3BsYXkubW9kZXNldF9jYWxjX2NkY2xrID0KPj4gQEAgLTE1NjQwLDcgKzE1NjQ0LDcg QEAgaW50ZWxfbW9kZXNldF9zZXR1cF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ PiAgCQlwbGwtPm9uID0gZmFsc2U7Cj4+ICAJfQo+PiAgCj4+IC0JaWYgKElTX1ZBTExFWVZJRVco ZGV2KSkKPj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkK Pj4gIAkJdmx2X3dtX2dldF9od19zdGF0ZShkZXYpOwo+PiAgCWVsc2UgaWYgKElTX0dFTjkoZGV2 KSkKPj4gIAkJc2tsX3dtX2dldF9od19zdGF0ZShkZXYpOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMKPj4gaW5kZXggZjMzNWM5Mi4uMWVkZWIzZSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHAuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cC5jCj4+IEBAIC01MTcsNyArNTE3LDcgQEAgdm9pZCB2bHZfcG93ZXJfc2VxdWVuY2VyX3Jlc2V0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsKPj4gIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl cjsKPj4gIAo+PiAtCWlmIChXQVJOX09OKCFJU19WQUxMRVlWSUVXKGRldikpKQo+PiArCWlmIChX QVJOX09OKCFJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2KSkpCj4+ICAJ CXJldHVybjsKPj4gIAo+PiAgCS8qCj4+IEBAIC01ODIsNyArNTgyLDcgQEAgc3RhdGljIGludCBl ZHBfbm90aWZ5X2hhbmRsZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLCB1bnNpZ25lZCBs b25nIGNvZGUsCj4+ICAKPj4gIAlwcHNfbG9jayhpbnRlbF9kcCk7Cj4+ICAKPj4gLQlpZiAoSVNf VkFMTEVZVklFVyhkZXYpKSB7Cj4+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVS UllWSUVXKGRldikpIHsKPj4gIAkJZW51bSBwaXBlIHBpcGUgPSB2bHZfcG93ZXJfc2VxdWVuY2Vy X3BpcGUoaW50ZWxfZHApOwo+PiAgCQlpOTE1X3JlZ190IHBwX2N0cmxfcmVnLCBwcF9kaXZfcmVn Owo+PiAgCQl1MzIgcHBfZGl2Owo+PiBAQCAtNjEwLDcgKzYxMCw3IEBAIHN0YXRpYyBib29sIGVk cF9oYXZlX3BhbmVsX3Bvd2VyKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4+ICAKPj4gIAls b2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+cHBzX211dGV4KTsKPj4gIAo+PiAtCWlmIChJ U19WQUxMRVlWSUVXKGRldikgJiYKPj4gKwlpZiAoKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19D SEVSUllWSUVXKGRldikpICYmCj4+ICAJICAgIGludGVsX2RwLT5wcHNfcGlwZSA9PSBJTlZBTElE X1BJUEUpCj4+ICAJCXJldHVybiBmYWxzZTsKPj4gIAo+PiBAQCAtNjI0LDcgKzYyNCw3IEBAIHN0 YXRpYyBib29sIGVkcF9oYXZlX3BhbmVsX3ZkZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ PiAgCj4+ICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPnBwc19tdXRleCk7Cj4+ICAK Pj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpICYmCj4+ICsJaWYgKChJU19WQUxMRVlWSUVXKGRl dikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSAmJgo+PiAgCSAgICBpbnRlbF9kcC0+cHBzX3BpcGUg PT0gSU5WQUxJRF9QSVBFKQo+PiAgCQlyZXR1cm4gZmFsc2U7Cj4+ICAKPj4gQEAgLTE3MjMsNyAr MTcyMyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RwX3ByZXBhcmUoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIpCj4+ICAJCUk5MTVfV1JJVEUoVFJBTlNfRFBfQ1RMKGNydGMtPnBpcGUpLCB0 cmFuc19kcCk7Cj4+ICAJfSBlbHNlIHsKPj4gIAkJaWYgKCFIQVNfUENIX1NQTElUKGRldikgJiYg IUlTX1ZBTExFWVZJRVcoZGV2KSAmJgo+PiAtCQkgICAgY3J0Yy0+Y29uZmlnLT5saW1pdGVkX2Nv bG9yX3JhbmdlKQo+PiArCQkgICAgIUlTX0NIRVJSWVZJRVcoZGV2KSAmJiBjcnRjLT5jb25maWct PmxpbWl0ZWRfY29sb3JfcmFuZ2UpCj4+ICAJCQlpbnRlbF9kcC0+RFAgfD0gRFBfQ09MT1JfUkFO R0VfMTZfMjM1Owo+PiAgCj4+ICAJCWlmIChhZGp1c3RlZF9tb2RlLT5mbGFncyAmIERSTV9NT0RF X0ZMQUdfUEhTWU5DKQo+PiBAQCAtMjQxOCw3ICsyNDE4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf ZHBfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPj4gIAlwaXBlX2Nv bmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9IGZsYWdzOwo+PiAgCj4+ICAJaWYgKCFI QVNfUENIX1NQTElUKGRldikgJiYgIUlTX1ZBTExFWVZJRVcoZGV2KSAmJgo+PiAtCSAgICB0bXAg JiBEUF9DT0xPUl9SQU5HRV8xNl8yMzUpCj4+ICsJICAgICFJU19DSEVSUllWSUVXKGRldikgJiYg dG1wICYgRFBfQ09MT1JfUkFOR0VfMTZfMjM1KQo+PiAgCQlwaXBlX2NvbmZpZy0+bGltaXRlZF9j b2xvcl9yYW5nZSA9IHRydWU7Cj4+ICAKPj4gIAlwaXBlX2NvbmZpZy0+aGFzX2RwX2VuY29kZXIg PSB0cnVlOwo+PiBAQCAtMjY5NCw3ICsyNjk0LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxl X2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+PiAgCj4+ICAJcHBzX2xvY2soaW50 ZWxfZHApOwo+PiAgCj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkKPj4gKwlpZiAoSVNfVkFM TEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPj4gIAkJdmx2X2luaXRfcGFuZWxf cG93ZXJfc2VxdWVuY2VyKGludGVsX2RwKTsKPj4gIAo+PiAgCS8qCj4+IEBAIC0yNzI4LDcgKzI3 MjgsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIpCj4+ICAKPj4gIAlwcHNfdW5sb2NrKGludGVsX2RwKTsKPj4gIAo+PiAtCWlmIChJ U19WQUxMRVlWSUVXKGRldikpIHsKPj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NI RVJSWVZJRVcoZGV2KSkgewo+PiAgCQl1bnNpZ25lZCBpbnQgbGFuZV9tYXNrID0gMHgwOwo+PiAg Cj4+ICAJCWlmIChJU19DSEVSUllWSUVXKGRldikpCj4+IEBAIC0zMjE4LDcgKzMyMTgsNyBAQCBp bnRlbF9kcF92b2x0YWdlX21heChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+PiAgCQlpZiAo ZGV2X3ByaXYtPmVkcF9sb3dfdnN3aW5nICYmIHBvcnQgPT0gUE9SVF9BKQo+PiAgCQkJcmV0dXJu IERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMzsKPj4gIAkJcmV0dXJuIERQX1RSQUlOX1ZP TFRBR0VfU1dJTkdfTEVWRUxfMjsKPj4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkK Pj4gKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikp Cj4+ICAJCXJldHVybiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzM7Cj4+ICAJZWxzZSBp ZiAoSVNfR0VONyhkZXYpICYmIHBvcnQgPT0gUE9SVF9BKQo+PiAgCQlyZXR1cm4gRFBfVFJBSU5f Vk9MVEFHRV9TV0lOR19MRVZFTF8yOwo+PiBAQCAtMzI1OSw3ICszMjU5LDcgQEAgaW50ZWxfZHBf cHJlX2VtcGhhc2lzX21heChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1aW50OF90IHZvbHRh Z2Vfc3dpbmcpCj4+ICAJCWRlZmF1bHQ6Cj4+ICAJCQlyZXR1cm4gRFBfVFJBSU5fUFJFX0VNUEhf TEVWRUxfMDsKPj4gIAkJfQo+PiAtCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ ICsJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7 Cj4+ICAJCXN3aXRjaCAodm9sdGFnZV9zd2luZyAmIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTUFT Sykgewo+PiAgCQljYXNlIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMDoKPj4gIAkJCXJl dHVybiBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8zOwo+PiBAQCAtNDUzOSw3ICs0NTM5LDcgQEAg Ym9vbCBpbnRlbF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPj4gIAkJcmV0dXJuIGNwdF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKGRldl9w cml2LCBwb3J0KTsKPj4gIAllbHNlIGlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKPj4gIAkJcmV0 dXJuIGJ4dF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKGRldl9wcml2LCBwb3J0KTsKPj4gLQllbHNl IGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKPj4gKwllbHNlIGlmIChJU19WQUxMRVlWSUVX KGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPj4gIAkJcmV0dXJuIHZsdl9k aWdpdGFsX3BvcnRfY29ubmVjdGVkKGRldl9wcml2LCBwb3J0KTsKPj4gIAllbHNlCj4+ICAJCXJl dHVybiBnNHhfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChkZXZfcHJpdiwgcG9ydCk7Cj4+IEBAIC00 OTMzLDcgKzQ5MzMsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9lbmNvZGVyX3Jlc2V0KHN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlcikKPj4gIAkgKiBSZWFkIG91dCB0aGUgY3VycmVudCBwb3dl ciBzZXF1ZW5jZXIgYXNzaWdubWVudCwKPj4gIAkgKiBpbiBjYXNlIHRoZSBCSU9TIGRpZCBzb21l dGhpbmcgd2l0aCBpdC4KPj4gIAkgKi8KPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhlbmNvZGVyLT5k ZXYpKQo+PiArCWlmIChJU19WQUxMRVlWSUVXKGVuY29kZXItPmRldikgfHwgSVNfQ0hFUlJZVklF VyhlbmNvZGVyLT5kZXYpKQo+PiAgCQl2bHZfaW5pdGlhbF9wb3dlcl9zZXF1ZW5jZXJfc2V0dXAo aW50ZWxfZHApOwo+PiAgCj4+ICAJaW50ZWxfZWRwX3BhbmVsX3ZkZF9zYW5pdGl6ZShpbnRlbF9k cCk7Cj4+IEBAIC01MjkzLDcgKzUyOTMsNyBAQCBpbnRlbF9kcF9pbml0X3BhbmVsX3Bvd2VyX3Nl cXVlbmNlcl9yZWdpc3RlcnMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4gIAo+PiAgCS8qIEhh c3dlbGwgZG9lc24ndCBoYXZlIGFueSBwb3J0IHNlbGVjdGlvbiBiaXRzIGZvciB0aGUgcGFuZWwK Pj4gIAkgKiBwb3dlciBzZXF1ZW5jZXIgYW55IG1vcmUuICovCj4+IC0JaWYgKElTX1ZBTExFWVZJ RVcoZGV2KSkgewo+PiArCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhk ZXYpKSB7Cj4+ICAJCXBvcnRfc2VsID0gUEFORUxfUE9SVF9TRUxFQ1RfVkxWKHBvcnQpOwo+PiAg CX0gZWxzZSBpZiAoSEFTX1BDSF9JQlgoZGV2KSB8fCBIQVNfUENIX0NQVChkZXYpKSB7Cj4+ICAJ CWlmIChwb3J0ID09IFBPUlRfQSkKPj4gQEAgLTU0MDUsMTIgKzU0MDUsMTIgQEAgc3RhdGljIHZv aWQgaW50ZWxfZHBfc2V0X2RycnNfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IHJl ZnJlc2hfcmF0ZSkKPj4gIAo+PiAgCQl2YWwgPSBJOTE1X1JFQUQocmVnKTsKPj4gIAkJaWYgKGlu ZGV4ID4gRFJSU19ISUdIX1JSKSB7Cj4+IC0JCQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+PiAr CQkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpCj4+ICAJCQkJ dmFsIHw9IFBJUEVDT05GX0VEUF9SUl9NT0RFX1NXSVRDSF9WTFY7Cj4+ICAJCQllbHNlCj4+ICAJ CQkJdmFsIHw9IFBJUEVDT05GX0VEUF9SUl9NT0RFX1NXSVRDSDsKPj4gIAkJfSBlbHNlIHsKPj4g LQkJCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4+ICsJCQlpZiAoSVNfVkFMTEVZVklFVyhkZXYp IHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPj4gIAkJCQl2YWwgJj0gflBJUEVDT05GX0VEUF9SUl9N T0RFX1NXSVRDSF9WTFY7Cj4+ICAJCQllbHNlCj4+ICAJCQkJdmFsICY9IH5QSVBFQ09ORl9FRFBf UlJfTU9ERV9TV0lUQ0g7Cj4+IEBAIC01Nzc3LDcgKzU3NzcsNyBAQCBzdGF0aWMgYm9vbCBpbnRl bF9lZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPj4gIAl9Cj4+ ICAJbXV0ZXhfdW5sb2NrKCZkZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKPj4gIAo+PiAtCWlmIChJ U19WQUxMRVlWSUVXKGRldikpIHsKPj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NI RVJSWVZJRVcoZGV2KSkgewo+PiAgCQlpbnRlbF9kcC0+ZWRwX25vdGlmaWVyLm5vdGlmaWVyX2Nh bGwgPSBlZHBfbm90aWZ5X2hhbmRsZXI7Cj4+ICAJCXJlZ2lzdGVyX3JlYm9vdF9ub3RpZmllcigm aW50ZWxfZHAtPmVkcF9ub3RpZmllcik7Cj4+ICAKPj4gQEAgLTU4MjUsNyArNTgyNSw3IEBAIGlu dGVsX2RwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2Rp Z19wb3J0LAo+PiAgCS8qIGludGVsX2RwIHZmdW5jcyAqLwo+PiAgCWlmIChJTlRFTF9JTkZPKGRl diktPmdlbiA+PSA5KQo+PiAgCQlpbnRlbF9kcC0+Z2V0X2F1eF9jbG9ja19kaXZpZGVyID0gc2ts X2dldF9hdXhfY2xvY2tfZGl2aWRlcjsKPj4gLQllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikp Cj4+ICsJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkK Pj4gIAkJaW50ZWxfZHAtPmdldF9hdXhfY2xvY2tfZGl2aWRlciA9IHZsdl9nZXRfYXV4X2Nsb2Nr X2RpdmlkZXI7Cj4+ICAJZWxzZSBpZiAoSVNfSEFTV0VMTChkZXYpIHx8IElTX0JST0FEV0VMTChk ZXYpKQo+PiAgCQlpbnRlbF9kcC0+Z2V0X2F1eF9jbG9ja19kaXZpZGVyID0gaHN3X2dldF9hdXhf Y2xvY2tfZGl2aWRlcjsKPj4gQEAgLTU4NjAsOCArNTg2MCw4IEBAIGludGVsX2RwX2luaXRfY29u bmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+PiAgCQlp bnRlbF9lbmNvZGVyLT50eXBlID0gSU5URUxfT1VUUFVUX0VEUDsKPj4gIAo+PiAgCS8qIGVEUCBv bmx5IG9uIHBvcnQgQiBhbmQvb3IgQyBvbiB2bHYvY2h2ICovCj4+IC0JaWYgKFdBUk5fT04oSVNf VkFMTEVZVklFVyhkZXYpICYmIGlzX2VkcChpbnRlbF9kcCkgJiYKPj4gLQkJICAgIHBvcnQgIT0g UE9SVF9CICYmIHBvcnQgIT0gUE9SVF9DKSkKPj4gKwlpZiAoV0FSTl9PTigoSVNfVkFMTEVZVklF VyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgJiYKPj4gKwkJICAgIGlzX2VkcChpbnRlbF9k cCkgJiYgcG9ydCAhPSBQT1JUX0IgJiYgcG9ydCAhPSBQT1JUX0MpKQo+PiAgCQlyZXR1cm4gZmFs c2U7Cj4+ICAKPj4gIAlEUk1fREVCVUdfS01TKCJBZGRpbmcgJXMgY29ubmVjdG9yIG9uIHBvcnQg JWNcbiIsCj4+IEBAIC01OTEyLDcgKzU5MTIsNyBAQCBpbnRlbF9kcF9pbml0X2Nvbm5lY3Rvcihz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPj4gIAlpZiAoaXNfZWRw KGludGVsX2RwKSkgewo+PiAgCQlwcHNfbG9jayhpbnRlbF9kcCk7Cj4+ICAJCWludGVsX2RwX2lu aXRfcGFuZWxfcG93ZXJfdGltZXN0YW1wcyhpbnRlbF9kcCk7Cj4+IC0JCWlmIChJU19WQUxMRVlW SUVXKGRldikpCj4+ICsJCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhk ZXYpKQo+PiAgCQkJdmx2X2luaXRpYWxfcG93ZXJfc2VxdWVuY2VyX3NldHVwKGludGVsX2RwKTsK Pj4gIAkJZWxzZQo+PiAgCQkJaW50ZWxfZHBfaW5pdF9wYW5lbF9wb3dlcl9zZXF1ZW5jZXIoZGV2 LCBpbnRlbF9kcCk7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k c2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jCj4+IGluZGV4IDIzMDk1N2Yu LjI1YmRmMWMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5j Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jCj4+IEBAIC0zNjksNyAr MzY5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHNpX2RldmljZV9yZWFkeShzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlcikKPj4gIHsKPj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5j b2Rlci0+YmFzZS5kZXY7Cj4+ICAKPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+PiArCWlm IChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKQo+PiAgCQl2bHZfZHNp X2RldmljZV9yZWFkeShlbmNvZGVyKTsKPj4gIAllbHNlIGlmIChJU19CUk9YVE9OKGRldikpCj4+ ICAJCWJ4dF9kc2lfZGV2aWNlX3JlYWR5KGVuY29kZXIpOwo+PiBAQCAtNDg3LDcgKzQ4Nyw3IEBA IHN0YXRpYyB2b2lkIGludGVsX2RzaV9wcmVfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyKQo+PiAgCj4+ICAJbXNsZWVwKGludGVsX2RzaS0+cGFuZWxfb25fZGVsYXkpOwo+PiAg Cj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+PiArCWlmIChJU19WQUxMRVlWSUVXKGRl dikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4+ICAJCS8qCj4+ICAJCSAqIERpc2FibGUgRFBP dW5pdCBjbG9jayBnYXRpbmcsIGNhbiBzdGFsbCBwaXBlCj4+ICAJCSAqIGFuZCB3ZSBuZWVkIERQ TEwgUkVGQSBhbHdheXMgZW5hYmxlZAo+PiBAQCAtNjg0LDggKzY4NCw3IEBAIHN0YXRpYyBib29s IGludGVsX2RzaV9nZXRfaHdfc3RhdGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4+ ICAJCSAqIEVuYWJsZSBiaXQgZG9lcyBub3QgZ2V0IHNldC4gVG8gY2hlY2sgd2hldGhlciBEU0kg UG9ydCBDCj4+ICAJCSAqIHdhcyBlbmFibGVkIGluIEJJT1MsIGNoZWNrIHRoZSBQaXBlIEIgZW5h YmxlIGJpdAo+PiAgCQkgKi8KPj4gLQkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSAmJiAhSVNfQ0hF UlJZVklFVyhkZXYpICYmCj4+IC0JCSAgICAocG9ydCA9PSBQT1JUX0MpKQo+PiArCQlpZiAoSVNf VkFMTEVZVklFVyhkZXYpICYmIHBvcnQgPT0gUE9SVF9DKQo+PiAgCQkJZHBpX2VuYWJsZWQgPSBJ OTE1X1JFQUQoUElQRUNPTkYoUElQRV9CKSkgJgo+PiAgCQkJCQkJCVBJUEVDT05GX0VOQUJMRTsK Pj4gIAo+PiBAQCAtNzE2LDcgKzcxNSw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9nZXRfY29u ZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+PiAgCj4+ICAJaWYgKElTX0JST1hU T04oZW5jb2Rlci0+YmFzZS5kZXYpKQo+PiAgCQlwY2xrID0gYnh0X2dldF9kc2lfcGNsayhlbmNv ZGVyLCBwaXBlX2NvbmZpZy0+cGlwZV9icHApOwo+PiAtCWVsc2UgaWYgKElTX1ZBTExFWVZJRVco ZW5jb2Rlci0+YmFzZS5kZXYpKQo+PiArCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZW5jb2Rlci0+ YmFzZS5kZXYpIHx8Cj4+ICsJCSBJU19DSEVSUllWSUVXKGVuY29kZXItPmJhc2UuZGV2KSkKPj4g IAkJcGNsayA9IHZsdl9nZXRfZHNpX3BjbGsoZW5jb2RlciwgcGlwZV9jb25maWctPnBpcGVfYnBw KTsKPj4gIAo+PiAgCWlmICghcGNsaykKPj4gQEAgLTg2OSw3ICs4NjksNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9kc2lfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikK Pj4gIAl9Cj4+ICAKPj4gIAlmb3JfZWFjaF9kc2lfcG9ydChwb3J0LCBpbnRlbF9kc2ktPnBvcnRz KSB7Cj4+IC0JCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPj4gKwkJaWYgKElTX1ZBTExFWVZJ RVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpIHsKPj4gIAkJCS8qCj4+ICAJCQkgKiBlc2Nh cGUgY2xvY2sgZGl2aWRlciwgMjBNSHosIHNoYXJlZCBmb3IgQSBhbmQgQy4KPj4gIAkJCSAqIGRl dmljZSByZWFkeSBtdXN0IGJlIG9mZiB3aGVuIGRvaW5nIHRoaXMhIHR4Y2xrZXNjPwo+PiBAQCAt MTEyOSw3ICsxMTI5LDcgQEAgdm9pZCBpbnRlbF9kc2lfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+PiAgCWlmICghZGV2X3ByaXYtPnZidC5oYXNfbWlwaSkKPj4gIAkJcmV0dXJuOwo+PiAg Cj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+PiArCWlmIChJU19WQUxMRVlWSUVXKGRl dikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSB7Cj4+ICAJCWRldl9wcml2LT5taXBpX21taW9fYmFz ZSA9IFZMVl9NSVBJX0JBU0U7Cj4+ICAJfSBlbHNlIHsKPj4gIAkJRFJNX0VSUk9SKCJVbnN1cHBv cnRlZCBNaXBpIGRldmljZSB0byByZWcgYmFzZSIpOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHNpX3BsbC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHNpX3BsbC5jCj4+IGluZGV4IGNiM2NmMzkuLmZiZDJiNTEgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9wbGwuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kc2lfcGxsLmMKPj4gQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIGludGVsX2Vu YWJsZV9kc2lfcGxsKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+PiAgewo+PiAgCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKPj4gIAo+PiAtCWlmIChJ U19WQUxMRVlWSUVXKGRldikpCj4+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVS UllWSUVXKGRldikpCj4+ICAJCXZsdl9lbmFibGVfZHNpX3BsbChlbmNvZGVyKTsKPj4gIAllbHNl IGlmIChJU19CUk9YVE9OKGRldikpCj4+ICAJCWJ4dF9lbmFibGVfZHNpX3BsbChlbmNvZGVyKTsK Pj4gQEAgLTU3MSw3ICs1NzEsNyBAQCB2b2lkIGludGVsX2Rpc2FibGVfZHNpX3BsbChzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPj4gIHsKPj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gZW5jb2Rlci0+YmFzZS5kZXY7Cj4+ICAKPj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+ PiArCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKQo+PiAgCQl2 bHZfZGlzYWJsZV9kc2lfcGxsKGVuY29kZXIpOwo+PiAgCWVsc2UgaWYgKElTX0JST1hUT04oZGV2 KSkKPj4gIAkJYnh0X2Rpc2FibGVfZHNpX3BsbChlbmNvZGVyKTsKPj4gQEAgLTU5OSw2ICs1OTks NiBAQCB2b2lkIGludGVsX2RzaV9yZXNldF9jbG9ja3Moc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsIGVudW0gcG9ydCBwb3J0KQo+PiAgCj4+ICAJaWYgKElTX0JST1hUT04oZGV2KSkKPj4g IAkJYnh0X2RzaV9yZXNldF9jbG9ja3MoZW5jb2RlciwgcG9ydCk7Cj4+IC0JZWxzZSBpZiAoSVNf VkFMTEVZVklFVyhkZXYpKQo+PiArCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19D SEVSUllWSUVXKGRldikpCj4+ICAJCXZsdl9kc2lfcmVzZXRfY2xvY2tzKGVuY29kZXIsIHBvcnQp Owo+PiAgfQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4+IGluZGV4IGMzOTc4YmEuLmJl N2ZhYjkgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+ PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPj4gQEAgLTYzOCw3ICs2 MzgsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9oZG1pX3NldF9nY3BfaW5mb2ZyYW1lKHN0cnVjdCBk cm1fZW5jb2RlciAqZW5jb2RlcikKPj4gIAo+PiAgCWlmIChIQVNfRERJKGRldl9wcml2KSkKPj4g IAkJcmVnID0gSFNXX1RWSURFT19ESVBfR0NQKGNydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXIp Owo+PiAtCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQo+PiArCWVsc2UgaWYgKElT X1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+PiAgCQly ZWcgPSBWTFZfVFZJREVPX0RJUF9HQ1AoY3J0Yy0+cGlwZSk7Cj4+ICAJZWxzZSBpZiAoSEFTX1BD SF9TUExJVChkZXZfcHJpdi0+ZGV2KSkKPj4gIAkJcmVnID0gVFZJREVPX0RJUF9HQ1AoY3J0Yy0+ cGlwZSk7Cj4+IEBAIC0yMTAwLDcgKzIxMDAsNyBAQCB2b2lkIGludGVsX2hkbWlfaW5pdF9jb25u ZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4+ICAJCUJV RygpOwo+PiAgCX0KPj4gIAo+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPj4gKwlpZiAo SVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewo+PiAgCQlpbnRlbF9o ZG1pLT53cml0ZV9pbmZvZnJhbWUgPSB2bHZfd3JpdGVfaW5mb2ZyYW1lOwo+PiAgCQlpbnRlbF9o ZG1pLT5zZXRfaW5mb2ZyYW1lcyA9IHZsdl9zZXRfaW5mb2ZyYW1lczsKPj4gIAkJaW50ZWxfaGRt aS0+aW5mb2ZyYW1lX2VuYWJsZWQgPSB2bHZfaW5mb2ZyYW1lX2VuYWJsZWQ7Cj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ob3RwbHVnLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9ob3RwbHVnLmMKPj4gaW5kZXggYjE3Nzg1Ny4uYTI5NGEzYyAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jCj4+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hvdHBsdWcuYwo+PiBAQCAtNDA3LDcgKzQwNyw3IEBA IHZvaWQgaW50ZWxfaHBkX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+ICAJ CQkgKiBob3RwbHVnIGJpdHMgaXRzZWxmLiBTbyBvbmx5IFdBUk4gYWJvdXQgdW5leHBlY3RlZAo+ PiAgCQkJICogaW50ZXJydXB0cyBvbiBzYW5lciBwbGF0Zm9ybXMuCj4+ICAJCQkgKi8KPj4gLQkJ CVdBUk5fT05DRShJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA1ICYmICFJU19WQUxMRVlWSUVXKGRl diksCj4+ICsJCQlXQVJOX09OQ0UoIUhBU19HTUNIX0RJU1BMQVkoZGV2KSwKPj4gIAkJCQkgICJS ZWNlaXZlZCBIUEQgaW50ZXJydXB0IG9uIHBpbiAlZCBhbHRob3VnaCBkaXNhYmxlZFxuIiwgaSk7 Cj4+ICAJCQljb250aW51ZTsKPj4gIAkJfQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfaTJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMuYwo+PiBp bmRleCBlMjZlMjJhLi4yNTI1NGI1IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9pMmMuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9pMmMuYwo+ PiBAQCAtNjM2LDcgKzYzNiw3IEBAIGludCBpbnRlbF9zZXR1cF9nbWJ1cyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+PiAgCWlmIChIQVNfUENIX05PUChkZXYpKQo+PiAgCQlyZXR1cm4gMDsKPj4g IAo+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpCj4+ICsJaWYgKElTX1ZBTExFWVZJRVcoZGV2 KSB8fCBJU19DSEVSUllWSUVXKGRldikpCj4+ICAJCWRldl9wcml2LT5ncGlvX21taW9fYmFzZSA9 IFZMVl9ESVNQTEFZX0JBU0U7Cj4+ICAJZWxzZSBpZiAoIUhBU19HTUNIX0RJU1BMQVkoZGV2X3By aXYpKQo+PiAgCQlkZXZfcHJpdi0+Z3Bpb19tbWlvX2Jhc2UgPQo+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BhbmVsLmMKPj4gaW5kZXggYWU4MDhiNi4uNzIxODNhMCAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wYW5lbC5jCj4+IEBAIC0xNzg0LDcgKzE3ODQsNyBAQCBpbnRlbF9wYW5lbF9p bml0X2JhY2tsaWdodF9mdW5jcyhzdHJ1Y3QgaW50ZWxfcGFuZWwgKnBhbmVsKQo+PiAgCQlwYW5l bC0+YmFja2xpZ2h0LnNldCA9IHBjaF9zZXRfYmFja2xpZ2h0Owo+PiAgCQlwYW5lbC0+YmFja2xp Z2h0LmdldCA9IHBjaF9nZXRfYmFja2xpZ2h0Owo+PiAgCQlwYW5lbC0+YmFja2xpZ2h0Lmh6X3Rv X3B3bSA9IHBjaF9oel90b19wd207Cj4+IC0JfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldikp IHsKPj4gKwl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRl dikpIHsKPj4gIAkJaWYgKGRldl9wcml2LT52YnQuaGFzX21pcGkpIHsKPj4gIAkJCXBhbmVsLT5i YWNrbGlnaHQuc2V0dXAgPSBwd21fc2V0dXBfYmFja2xpZ2h0Owo+PiAgCQkJcGFuZWwtPmJhY2ts aWdodC5lbmFibGUgPSBwd21fZW5hYmxlX2JhY2tsaWdodDsKPj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w bS5jCj4+IGluZGV4IGVlMDVjZTguLmZlNTYxODEgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BtLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cG0uYwo+PiBAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgaW50ZWxfc2V0X21lbW9yeV9jeHNyKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9vbCBlbmFibGUpCj4+ICAJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7Cj4+ICAJdTMyIHZhbDsKPj4gIAo+PiAt CWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8 IElTX0NIRVJSWVZJRVcoZGV2KSkgewo+PiAgCQlJOTE1X1dSSVRFKEZXX0JMQ19TRUxGX1ZMViwg ZW5hYmxlID8gRldfQ1NQV1JEV05FTiA6IDApOwo+PiAgCQlQT1NUSU5HX1JFQUQoRldfQkxDX1NF TEZfVkxWKTsKPj4gIAkJZGV2X3ByaXYtPndtLnZsdi5jeHNyID0gZW5hYmxlOwo+PiBAQCAtNDQw NSw3ICs0NDA1LDcgQEAgdm9pZCBnZW42X3Jwc19pZGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPj4gIAo+PiAgCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7 Cj4+ICAJaWYgKGRldl9wcml2LT5ycHMuZW5hYmxlZCkgewo+PiAtCQlpZiAoSVNfVkFMTEVZVklF VyhkZXYpKQo+PiArCQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2 KSkKPj4gIAkJCXZsdl9zZXRfcnBzX2lkbGUoZGV2X3ByaXYpOwo+PiAgCQllbHNlCj4+ICAJCQln ZW42X3NldF9ycHMoZGV2X3ByaXYtPmRldiwgZGV2X3ByaXYtPnJwcy5pZGxlX2ZyZXEpOwo+PiBA QCAtNDQ1OCw3ICs0NDU4LDcgQEAgdm9pZCBnZW42X3Jwc19ib29zdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAKPj4gIHZvaWQgaW50ZWxfc2V0X3JwcyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB1OCB2YWwpCj4+ICB7Cj4+IC0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkK Pj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPj4gIAkJ dmFsbGV5dmlld19zZXRfcnBzKGRldiwgdmFsKTsKPj4gIAllbHNlCj4+ICAJCWdlbjZfc2V0X3Jw cyhkZXYsIHZhbCk7Cj4+IEBAIC00NTAyLDcgKzQ1MDIsNyBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2 aWV3X2Rpc2FibGVfcnBzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICAKPj4gIHN0YXRpYyB2 b2lkIGludGVsX3ByaW50X3JjNl9pbmZvKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBtb2Rl KQo+PiAgewo+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPj4gKwlpZiAoSVNfVkFMTEVZ VklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewo+PiAgCQlpZiAobW9kZSAmIChHRU43 X1JDX0NUTF9UT19NT0RFIHwgR0VONl9SQ19DVExfRUlfTU9ERSgxKSkpCj4+ICAJCQltb2RlID0g R0VONl9SQ19DVExfUkM2X0VOQUJMRTsKPj4gIAkJZWxzZQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w c3IuYwo+PiBpbmRleCBiNjYwOWU2Li4xNzc4YTdkIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wc3IuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wc3IuYwo+PiBAQCAtMzMyLDggKzMzMiw4IEBAIHN0YXRpYyBib29sIGludGVsX3Bzcl9tYXRj aF9jb25kaXRpb25zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4+ICAJCXJldHVybiBmYWxz ZTsKPj4gIAl9Cj4+ICAKPj4gLQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2KSAmJiAoKGRldl9wcml2 LT52YnQucHNyLmZ1bGxfbGluaykgfHwKPj4gLQkJCQkgICAgKGRpZ19wb3J0LT5wb3J0ICE9IFBP UlRfQSkpKSB7Cj4+ICsJaWYgKCFJU19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0NIRVJSWVZJRVco ZGV2KSAmJgo+PiArCSAgICAoKGRldl9wcml2LT52YnQucHNyLmZ1bGxfbGluaykgfHwgKGRpZ19w b3J0LT5wb3J0ICE9IFBPUlRfQSkpKSB7Cj4+ICAJCURSTV9ERUJVR19LTVMoIlBTUiBjb25kaXRp b24gZmFpbGVkOiBMaW5rIFN0YW5kYnkgcmVxdWVzdGVkL25lZWRlZCBidXQgbm90IHN1cHBvcnRl ZCBvbiB0aGlzIHBsYXRmb3JtXG4iKTsKPj4gIAkJcmV0dXJuIGZhbHNlOwo+PiAgCX0KPj4gQEAg LTY1MCw3ICs2NTAsNyBAQCB2b2lkIGludGVsX3Bzcl9zaW5nbGVfZnJhbWVfdXBkYXRlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4+ICAJICogU2luZ2xlIGZyYW1lIHVwZGF0ZSBpcyBhbHJlYWR5 IHN1cHBvcnRlZCBvbiBCRFcrIGJ1dCBpdCByZXF1aXJlcwo+PiAgCSAqIG1hbnkgVy9BIGFuZCBp dCBpc24ndCByZWFsbHkgbmVlZGVkLgo+PiAgCSAqLwo+PiAtCWlmICghSVNfVkFMTEVZVklFVyhk ZXYpKQo+PiArCWlmICghSVNfVkFMTEVZVklFVyhkZXYpICYmICFJU19DSEVSUllWSUVXKGRldikp Cj4+ICAJCXJldHVybjsKPj4gIAo+PiAgCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7 Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4+IGluZGV4IDJiOTZmMzMuLmY4YmY2 MjIgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4+IEBAIC05NTEsNyAr OTUxLDcgQEAgaW50IGludGVsX3Nwcml0ZV9zZXRfY29sb3JrZXkoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSwKPj4gIAlpZiAoKHNldC0+ZmxhZ3MgJiAoSTkxNV9TRVRfQ09MT1JL RVlfREVTVElOQVRJT04gfCBJOTE1X1NFVF9DT0xPUktFWV9TT1VSQ0UpKSA9PSAoSTkxNV9TRVRf Q09MT1JLRVlfREVTVElOQVRJT04gfCBJOTE1X1NFVF9DT0xPUktFWV9TT1VSQ0UpKQo+PiAgCQly ZXR1cm4gLUVJTlZBTDsKPj4gIAo+PiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikgJiYKPj4gKwlp ZiAoKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpICYmCj4+ICAJICAg IHNldC0+ZmxhZ3MgJiBJOTE1X1NFVF9DT0xPUktFWV9ERVNUSU5BVElPTikKPj4gIAkJcmV0dXJu IC1FSU5WQUw7Cj4+ICAKPj4gQEAgLTEwODYsNyArMTA4Niw3IEBAIGludGVsX3BsYW5lX2luaXQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBpcGUsIGludCBwbGFuZSkKPj4gIAkJ CWludGVsX3BsYW5lLT5tYXhfZG93bnNjYWxlID0gMTsKPj4gIAkJfQo+PiAgCj4+IC0JCWlmIChJ U19WQUxMRVlWSUVXKGRldikpIHsKPj4gKwkJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19D SEVSUllWSUVXKGRldikpIHsKPj4gIAkJCWludGVsX3BsYW5lLT51cGRhdGVfcGxhbmUgPSB2bHZf dXBkYXRlX3BsYW5lOwo+PiAgCQkJaW50ZWxfcGxhbmUtPmRpc2FibGVfcGxhbmUgPSB2bHZfZGlz YWJsZV9wbGFuZTsKPj4gIAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfdW5jb3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+PiBpbmRl eCBjMjM1OGJhLi5mY2YwNGZlIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF91bmNvcmUuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUu Ywo+PiBAQCAtMTExNSw3ICsxMTE1LDcgQEAgc3RhdGljIHZvaWQgZndfZG9tYWluX2luaXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiAgCQlkLT52YWxfY2xlYXIgPSBfTUFT S0VEX0JJVF9ESVNBQkxFKEZPUkNFV0FLRV9LRVJORUwpOwo+PiAgCX0KPj4gIAo+PiAtCWlmIChJ U19WQUxMRVlWSUVXKGRldl9wcml2KSkKPj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikg fHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4+ICAJCWQtPnJlZ19wb3N0ID0gRk9SQ0VXQUtF X0FDS19WTFY7Cj4+ICAJZWxzZSBpZiAoSVNfR0VONihkZXZfcHJpdikgfHwgSVNfR0VONyhkZXZf cHJpdikgfHwgSVNfR0VOOChkZXZfcHJpdikpCj4+ICAJCWQtPnJlZ19wb3N0ID0gRUNPQlVTOwo+ PiBAQCAtMTE0OCw3ICsxMTQ4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfdW5jb3JlX2Z3X2RvbWFp bnNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgCQkJICAgICAgIEZPUkNFV0FLRV9B Q0tfQkxJVFRFUl9HRU45KTsKPj4gIAkJZndfZG9tYWluX2luaXQoZGV2X3ByaXYsIEZXX0RPTUFJ Tl9JRF9NRURJQSwKPj4gIAkJCSAgICAgICBGT1JDRVdBS0VfTUVESUFfR0VOOSwgRk9SQ0VXQUtF X0FDS19NRURJQV9HRU45KTsKPj4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgewo+ PiArCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkg ewo+PiAgCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dha2VfZ2V0ID0gZndfZG9tYWlu c19nZXQ7Cj4+ICAJCWlmICghSVNfQ0hFUlJZVklFVyhkZXYpKQo+PiAgCQkJZGV2X3ByaXYtPnVu Y29yZS5mdW5jcy5mb3JjZV93YWtlX3B1dCA9Cj4+IC0tIAo+PiAyLjYuMwoKLS0gCkphbmkgTmlr dWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=