From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Weinehall Subject: Re: [PATCH 19/19] drm/i915: Make IS_GEN macros only take dev_priv Date: Wed, 12 Oct 2016 14:50:19 +0300 Message-ID: <20161012115019.454dfsebz4xrluf5@boom> References: <1476192112-25336-1-git-send-email-tvrtko.ursulin@linux.intel.com> <1476192112-25336-20-git-send-email-tvrtko.ursulin@linux.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 ESMTPS id D6F366E82B for ; Wed, 12 Oct 2016 11:50:21 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1476192112-25336-20-git-send-email-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin Cc: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBPY3QgMTEsIDIwMTYgYXQgMDI6MjE6NTJQTSArMDEwMCwgVHZydGtvIFVyc3VsaW4g d3JvdGU6Cj4gRnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4K PiAKPiBTYXZlcyAxNDE2IGJ5dGVzIG9mIC5yb2RhdGEgc3RyaW5ncy4KPiAKPiB2MjogQWRkIHBh cmFudGhlc2VzIGFyb3VuZCBkZXZfcHJpdi4gKFZpbGxlIFN5cmphbGEpCj4gCj4gU2lnbmVkLW9m Zi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClJldmlld2Vk LWJ5OiBEYXZpZCBXZWluZWhhbGwgPGRhdmlkLndlaW5laGFsbEBsaW51eC5pbnRlbC5jb20+CgpE byBub3RlIHRob3VnaCwgdGhhdCB0aGlzIGlzIGEgKnZlcnkqIGxhcmdlIHBhdGNoLCBhbmQgSSBz dXNwZWN0IHRoYXQKeW91J2xsIGhhdmUgdHJvdWJsZSBnZXR0aW5nIGl0IG1lcmdlZC4uLgoKPiAt LS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgIHwgIDQgKy0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICAgIHwgIDYgKy0tCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICB8IDE2ICsrKy0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgfCAgOCArLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIHwgIDQgKy0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2UuYyAgICAgIHwgIDkgKystLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyAgICAgICAgfCAxMCArKy0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jICAgICB8ICA0ICstCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jICAgICB8ICA0ICstCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgICAgICB8IDEwICsrLS0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgICAgIHwgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9zdXNwZW5kLmMgICAgICAgIHwgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfY3J0LmMgICAgICAgICAgIHwgIDYgKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYyAgICAgICB8IDQxICsrKysrKysrLS0tLS0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAgICAgICAgfCAyMCArKystLS0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAgICB8ICAyICstCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2ZpZm9fdW5kZXJydW4uYyB8ICA2ICstLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgICAgfCAgMyArLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9sdmRzLmMgICAgICAgICAgfCAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jICAgICAgICAgICAgfCA4MyArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgICAgICAgIHwgIDQgKy0K PiAgMjEgZmlsZXMgY2hhbmdlZCwgMTI2IGluc2VydGlvbnMoKyksIDEyNCBkZWxldGlvbnMoLSkK PiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IDIwNjg5ZjFjZDcxOS4u M2E0MmRmM2EyOWU1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAt NDU1Miw3ICs0NTUyLDcgQEAgc3RhdGljIHZvaWQgd21fbGF0ZW5jeV9zaG93KHN0cnVjdCBzZXFf ZmlsZSAqbSwgY29uc3QgdWludDE2X3Qgd21bOF0pCj4gIAllbHNlIGlmIChJU19WQUxMRVlWSUVX KGRldl9wcml2KSkKPiAgCQludW1fbGV2ZWxzID0gMTsKPiAgCWVsc2UKPiAtCQludW1fbGV2ZWxz ID0gaWxrX3dtX21heF9sZXZlbChkZXYpICsgMTsKPiArCQludW1fbGV2ZWxzID0gaWxrX3dtX21h eF9sZXZlbChkZXZfcHJpdikgKyAxOwo+ICAKPiAgCWRybV9tb2Rlc2V0X2xvY2tfYWxsKGRldik7 Cj4gIAo+IEBAIC00NjY4LDcgKzQ2NjgsNyBAQCBzdGF0aWMgc3NpemVfdCB3bV9sYXRlbmN5X3dy aXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZiwKPiAgCWVsc2Ug aWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQo+ICAJCW51bV9sZXZlbHMgPSAxOwo+ICAJZWxz ZQo+IC0JCW51bV9sZXZlbHMgPSBpbGtfd21fbWF4X2xldmVsKGRldikgKyAxOwo+ICsJCW51bV9s ZXZlbHMgPSBpbGtfd21fbWF4X2xldmVsKGRldl9wcml2KSArIDE7Cj4gIAo+ICAJaWYgKGxlbiA+ PSBzaXplb2YodG1wKSkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmMKPiBpbmRleCA1ZTdiNmExY2IyYzguLmMxOTU2ODU1ZmViNiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYwo+IEBAIC0xNzQsNyArMTc0LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGV0ZWN0 X3BjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCQlpZiAoaWQgPT0gSU5URUxfUENIX0lC WF9ERVZJQ0VfSURfVFlQRSkgewo+ICAJCQkJZGV2X3ByaXYtPnBjaF90eXBlID0gUENIX0lCWDsK PiAgCQkJCURSTV9ERUJVR19LTVMoIkZvdW5kIEliZXggUGVhayBQQ0hcbiIpOwo+IC0JCQkJV0FS Tl9PTighSVNfR0VONShkZXYpKTsKPiArCQkJCVdBUk5fT04oIUlTX0dFTjUoZGV2X3ByaXYpKTsK PiAgCQkJfSBlbHNlIGlmIChpZCA9PSBJTlRFTF9QQ0hfQ1BUX0RFVklDRV9JRF9UWVBFKSB7Cj4g IAkJCQlkZXZfcHJpdi0+cGNoX3R5cGUgPSBQQ0hfQ1BUOwo+ICAJCQkJRFJNX0RFQlVHX0tNUygi Rm91bmQgQ291Z2FyUG9pbnQgUENIXG4iKTsKPiBAQCAtODg0LDcgKzg4NCw3IEBAIHN0YXRpYyBp bnQgaTkxNV9tbWlvX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlpbnQgbW1pb19i YXI7Cj4gIAlpbnQgbW1pb19zaXplOwo+ICAKPiAtCW1taW9fYmFyID0gSVNfR0VOMihkZXYpID8g MSA6IDA7Cj4gKwltbWlvX2JhciA9IElTX0dFTjIoZGV2X3ByaXYpID8gMSA6IDA7Cj4gIAkvKgo+ ICAJICogQmVmb3JlIGdlbjQsIHRoZSByZWdpc3RlcnMgYW5kIHRoZSBHVFQgYXJlIGJlaGluZCBk aWZmZXJlbnQgQkFScy4KPiAgCSAqIEhvd2V2ZXIsIGZyb20gZ2VuNCBvbndhcmRzLCB0aGUgcmVn aXN0ZXJzIGFuZCB0aGUgR1RUIGFyZSBzaGFyZWQKPiBAQCAtMTAzNyw3ICsxMDM3LDcgQEAgc3Rh dGljIGludCBpOTE1X2RyaXZlcl9pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgCXBjaV9zZXRfbWFzdGVyKHBkZXYpOwo+ICAKPiAgCS8qIG92ZXJsYXkgb24gZ2Vu MiBpcyBicm9rZW4gYW5kIGNhbid0IGFkZHJlc3MgYWJvdmUgMUcgKi8KPiAtCWlmIChJU19HRU4y KGRldikpIHsKPiArCWlmIChJU19HRU4yKGRldl9wcml2KSkgewo+ICAJCXJldCA9IGRtYV9zZXRf Y29oZXJlbnRfbWFzaygmcGRldi0+ZGV2LCBETUFfQklUX01BU0soMzApKTsKPiAgCQlpZiAocmV0 KSB7Cj4gIAkJCURSTV9FUlJPUigiZmFpbGVkIHRvIHNldCBETUEgbWFza1xuIik7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggM2YzOGI5NzU1NzYzLi5hMDU2NjVhZjMxYmUgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMjc0MiwxNCArMjc0MiwxNCBAQCBzdHJ1Y3Qg ZHJtX2k5MTVfY21kX3RhYmxlIHsKPiAgICogaGF2ZSB0aGVpciBvd24gKGUuZy4gSEFTX1BDSF9T UExJVCBmb3IgSUxLKyBkaXNwbGF5LCBJU19mb28gZm9yIHBhcnRpY3VsYXIKPiAgICogY2hpcHMs IGV0Yy4pLgo+ICAgKi8KPiAtI2RlZmluZSBJU19HRU4yKGRldikJKCEhKElOVEVMX0lORk8oZGV2 KS0+Z2VuX21hc2sgJiBCSVQoMSkpKQo+IC0jZGVmaW5lIElTX0dFTjMoZGV2KQkoISEoSU5URUxf SU5GTyhkZXYpLT5nZW5fbWFzayAmIEJJVCgyKSkpCj4gLSNkZWZpbmUgSVNfR0VONChkZXYpCSgh IShJTlRFTF9JTkZPKGRldiktPmdlbl9tYXNrICYgQklUKDMpKSkKPiAtI2RlZmluZSBJU19HRU41 KGRldikJKCEhKElOVEVMX0lORk8oZGV2KS0+Z2VuX21hc2sgJiBCSVQoNCkpKQo+IC0jZGVmaW5l IElTX0dFTjYoZGV2KQkoISEoSU5URUxfSU5GTyhkZXYpLT5nZW5fbWFzayAmIEJJVCg1KSkpCj4g LSNkZWZpbmUgSVNfR0VONyhkZXYpCSghIShJTlRFTF9JTkZPKGRldiktPmdlbl9tYXNrICYgQklU KDYpKSkKPiAtI2RlZmluZSBJU19HRU44KGRldikJKCEhKElOVEVMX0lORk8oZGV2KS0+Z2VuX21h c2sgJiBCSVQoNykpKQo+IC0jZGVmaW5lIElTX0dFTjkoZGV2KQkoISEoSU5URUxfSU5GTyhkZXYp LT5nZW5fbWFzayAmIEJJVCg4KSkpCj4gKyNkZWZpbmUgSVNfR0VOMihkZXZfcHJpdikJKCEhKChk ZXZfcHJpdiktPmluZm8uZ2VuX21hc2sgJiBCSVQoMSkpKQo+ICsjZGVmaW5lIElTX0dFTjMoZGV2 X3ByaXYpCSghISgoZGV2X3ByaXYpLT5pbmZvLmdlbl9tYXNrICYgQklUKDIpKSkKPiArI2RlZmlu ZSBJU19HRU40KGRldl9wcml2KQkoISEoKGRldl9wcml2KS0+aW5mby5nZW5fbWFzayAmIEJJVCgz KSkpCj4gKyNkZWZpbmUgSVNfR0VONShkZXZfcHJpdikJKCEhKChkZXZfcHJpdiktPmluZm8uZ2Vu X21hc2sgJiBCSVQoNCkpKQo+ICsjZGVmaW5lIElTX0dFTjYoZGV2X3ByaXYpCSghISgoZGV2X3By aXYpLT5pbmZvLmdlbl9tYXNrICYgQklUKDUpKSkKPiArI2RlZmluZSBJU19HRU43KGRldl9wcml2 KQkoISEoKGRldl9wcml2KS0+aW5mby5nZW5fbWFzayAmIEJJVCg2KSkpCj4gKyNkZWZpbmUgSVNf R0VOOChkZXZfcHJpdikJKCEhKChkZXZfcHJpdiktPmluZm8uZ2VuX21hc2sgJiBCSVQoNykpKQo+ ICsjZGVmaW5lIElTX0dFTjkoZGV2X3ByaXYpCSghISgoZGV2X3ByaXYpLT5pbmZvLmdlbl9tYXNr ICYgQklUKDgpKSkKPiAgCj4gICNkZWZpbmUgRU5HSU5FX01BU0soaWQpCUJJVChpZCkKPiAgI2Rl ZmluZSBSRU5ERVJfUklORwlFTkdJTkVfTUFTSyhSQ1MpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j Cj4gaW5kZXggOGMzNjI4OTk2NzRhLi5iNzkzOTI2MDUyNTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMKPiBAQCAtNDMwOCwxNSArNDMwOCwxNSBAQCB2b2lkIGk5MTVfZ2VtX2luaXRfc3dp enpsaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlJOTE1X1dSSVRFKERJU1BfQVJCX0NU TCwgSTkxNV9SRUFEKERJU1BfQVJCX0NUTCkgfAo+ICAJCQkJIERJU1BfVElMRV9TVVJGQUNFX1NX SVpaTElORyk7Cj4gIAo+IC0JaWYgKElTX0dFTjUoZGV2KSkKPiArCWlmIChJU19HRU41KGRldl9w cml2KSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJSTkxNV9XUklURShUSUxFQ1RMLCBJOTE1X1JFQUQo VElMRUNUTCkgfCBUSUxFQ1RMX1NXWkNUTCk7Cj4gLQlpZiAoSVNfR0VONihkZXYpKQo+ICsJaWYg KElTX0dFTjYoZGV2X3ByaXYpKQo+ICAJCUk5MTVfV1JJVEUoQVJCX01PREUsIF9NQVNLRURfQklU X0VOQUJMRShBUkJfTU9ERV9TV0laWkxFX1NOQikpOwo+IC0JZWxzZSBpZiAoSVNfR0VONyhkZXYp KQo+ICsJZWxzZSBpZiAoSVNfR0VONyhkZXZfcHJpdikpCj4gIAkJSTkxNV9XUklURShBUkJfTU9E RSwgX01BU0tFRF9CSVRfRU5BQkxFKEFSQl9NT0RFX1NXSVpaTEVfSVZCKSk7Cj4gLQllbHNlIGlm IChJU19HRU44KGRldikpCj4gKwllbHNlIGlmIChJU19HRU44KGRldl9wcml2KSkKPiAgCQlJOTE1 X1dSSVRFKEdBTVRBUkJNT0RFLCBfTUFTS0VEX0JJVF9FTkFCTEUoQVJCX01PREVfU1dJWlpMRV9C RFcpKTsKPiAgCWVsc2UKPiAgCQlCVUcoKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZXhlY2J1ZmZlci5jCj4gaW5kZXggNzJjN2MxODU1ZTcwLi4xMWJiM2FlOTRlMDAgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gQEAgLTU3Miw3 ICs1NzIsNyBAQCBpOTE1X2dlbV9leGVjYnVmZmVyX3JlbG9jYXRlX2VudHJ5KHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIAkJCQkgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9j YXRpb25fZW50cnkgKnJlbG9jLAo+ICAJCQkJICAgc3RydWN0IHJlbG9jX2NhY2hlICpjYWNoZSkK PiAgewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+YmFzZS5kZXY7Cj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOwo+ ICAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICp0YXJnZXRfb2JqOwo+ICAJc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKnRhcmdldF9pOTE1X29iajsKPiAgCXN0cnVjdCBpOTE1X3ZtYSAqdGFyZ2V0 X3ZtYTsKPiBAQCAtNTkxLDcgKzU5MSw3IEBAIGk5MTVfZ2VtX2V4ZWNidWZmZXJfcmVsb2NhdGVf ZW50cnkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgCS8qIFNhbmR5YnJpZGdl IFBQR1RUIGVycmF0YTogV2UgbmVlZCBhIGdsb2JhbCBndHQgbWFwcGluZyBmb3IgTUkgYW5kCj4g IAkgKiBwaXBlX2NvbnRyb2wgd3JpdGVzIGJlY2F1c2UgdGhlIGdwdSBkb2Vzbid0IHByb3Blcmx5 IHJlZGlyZWN0IHRoZW0KPiAgCSAqIHRocm91Z2ggdGhlIHBwZ3R0IGZvciBub25fc2VjdXJlIGJh dGNoYnVmZmVycy4gKi8KPiAtCWlmICh1bmxpa2VseShJU19HRU42KGRldikgJiYKPiArCWlmICh1 bmxpa2VseShJU19HRU42KGRldl9wcml2KSAmJgo+ICAJICAgIHJlbG9jLT53cml0ZV9kb21haW4g PT0gSTkxNV9HRU1fRE9NQUlOX0lOU1RSVUNUSU9OKSkgewo+ICAJCXJldCA9IGk5MTVfdm1hX2Jp bmQodGFyZ2V0X3ZtYSwgdGFyZ2V0X2k5MTVfb2JqLT5jYWNoZV9sZXZlbCwKPiAgCQkJCSAgICBQ SU5fR0xPQkFMKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f ZmVuY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlLmMKPiBpbmRleCBk MjY3Njg1NjcyNTIuLmJlZGYyMjc4ZGYxNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9mZW5jZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZmVuY2UuYwo+IEBAIC00ODcsMTkgKzQ4NywyMCBAQCBpOTE1X2dlbV9kZXRlY3RfYml0XzZf c3dpenpsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCQkJc3dpenpsZV95ID0gSTkxNV9C SVRfNl9TV0laWkxFX05PTkU7Cj4gIAkJCX0KPiAgCQl9Cj4gLQl9IGVsc2UgaWYgKElTX0dFTjUo ZGV2KSkgewo+ICsJfSBlbHNlIGlmIChJU19HRU41KGRldl9wcml2KSkgewo+ICAJCS8qIE9uIEly b25sYWtlIHdoYXRldmVyIERSQU0gY29uZmlnLCBHUFUgYWx3YXlzIGRvCj4gIAkJICogc2FtZSBz d2l6emxpbmcgc2V0dXAuCj4gIAkJICovCj4gIAkJc3dpenpsZV94ID0gSTkxNV9CSVRfNl9TV0la WkxFXzlfMTA7Cj4gIAkJc3dpenpsZV95ID0gSTkxNV9CSVRfNl9TV0laWkxFXzk7Cj4gLQl9IGVs c2UgaWYgKElTX0dFTjIoZGV2KSkgewo+ICsJfSBlbHNlIGlmIChJU19HRU4yKGRldl9wcml2KSkg ewo+ICAJCS8qIEFzIGZhciBhcyB3ZSBrbm93LCB0aGUgODY1IGRvZXNuJ3QgaGF2ZSB0aGVzZSBi aXQgNgo+ICAJCSAqIHN3aXp6bGluZyBpc3N1ZXMuCj4gIAkJICovCj4gIAkJc3dpenpsZV94ID0g STkxNV9CSVRfNl9TV0laWkxFX05PTkU7Cj4gIAkJc3dpenpsZV95ID0gSTkxNV9CSVRfNl9TV0la WkxFX05PTkU7Cj4gLQl9IGVsc2UgaWYgKElTX01PQklMRShkZXYpIHx8IChJU19HRU4zKGRldikg JiYgIUlTX0czMyhkZXYpKSkgewo+ICsJfSBlbHNlIGlmIChJU19NT0JJTEUoZGV2X3ByaXYpIHx8 IChJU19HRU4zKGRldl9wcml2KSAmJgo+ICsJCSAgICFJU19HMzMoZGV2X3ByaXYpKSkgewo+ICAJ CXVpbnQzMl90IGRjYzsKPiAgCj4gIAkJLyogT24gOXh4IGNoaXBzZXRzLCBjaGFubmVsIGludGVy bGVhdmUgYnkgdGhlIENQVSBpcwo+IEBAIC01MzcsNyArNTM4LDcgQEAgaTkxNV9nZW1fZGV0ZWN0 X2JpdF82X3N3aXp6bGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQl9Cj4gIAo+ICAJCS8q IGNoZWNrIGZvciBMLXNoYXBlZCBtZW1vcnkgYWthIG1vZGlmaWVkIGVuaGFuY2VkIGFkZHJlc3Np bmcgKi8KPiAtCQlpZiAoSVNfR0VONChkZXYpICYmCj4gKwkJaWYgKElTX0dFTjQoZGV2X3ByaXYp ICYmCj4gIAkJICAgICEoSTkxNV9SRUFEKERDQzIpICYgRENDMl9NT0RJRklFRF9FTkhBTkNFRF9E SVNBQkxFKSkgewo+ICAJCQlzd2l6emxlX3ggPSBJOTE1X0JJVF82X1NXSVpaTEVfVU5LTk9XTjsK PiAgCQkJc3dpenpsZV95ID0gSTkxNV9CSVRfNl9TV0laWkxFX1VOS05PV047Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBpbmRleCA0MjExYjlhNGE5MTguLmMzNWJhNjdkMWE1ZCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gQEAgLTIwNTgsMTEgKzIwNTgs MTEgQEAgc3RhdGljIGludCBnZW42X3BwZ3R0X2luaXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBw Z3R0KQo+ICAJaW50IHJldDsKPiAgCj4gIAlwcGd0dC0+YmFzZS5wdGVfZW5jb2RlID0gZ2d0dC0+ YmFzZS5wdGVfZW5jb2RlOwo+IC0JaWYgKGludGVsX3ZncHVfYWN0aXZlKGRldl9wcml2KSB8fCBJ U19HRU42KGRldikpCj4gKwlpZiAoaW50ZWxfdmdwdV9hY3RpdmUoZGV2X3ByaXYpIHx8IElTX0dF TjYoZGV2X3ByaXYpKQo+ICAJCXBwZ3R0LT5zd2l0Y2hfbW0gPSBnZW42X21tX3N3aXRjaDsKPiAg CWVsc2UgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKQo+ICAJCXBwZ3R0LT5zd2l0Y2hfbW0gPSBo c3dfbW1fc3dpdGNoOwo+IC0JZWxzZSBpZiAoSVNfR0VONyhkZXYpKQo+ICsJZWxzZSBpZiAoSVNf R0VONyhkZXZfcHJpdikpCj4gIAkJcHBndHQtPnN3aXRjaF9tbSA9IGdlbjdfbW1fc3dpdGNoOwo+ ICAJZWxzZQo+ICAJCUJVRygpOwo+IEBAIC0yMTU5LDYgKzIxNTksOCBAQCBzdGF0aWMgaW50IGk5 MTVfcHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCj4gIAo+ICBpbnQgaTkx NV9wcGd0dF9pbml0X2h3KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIHsKPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiArCj4gIAlndHRfd3Jp dGVfd29ya2Fyb3VuZHMoZGV2KTsKPiAgCj4gIAkvKiBJbiB0aGUgY2FzZSBvZiBleGVjbGlzdHMs IFBQR1RUIGlzIGVuYWJsZWQgYnkgdGhlIGNvbnRleHQgZGVzY3JpcHRvcgo+IEBAIC0yMTcwLDkg KzIxNzIsOSBAQCBpbnQgaTkxNV9wcGd0dF9pbml0X2h3KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gIAlpZiAoIVVTRVNfUFBHVFQoZGV2KSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gLQlpZiAoSVNf R0VONihkZXYpKQo+ICsJaWYgKElTX0dFTjYoZGV2X3ByaXYpKQo+ICAJCWdlbjZfcHBndHRfZW5h YmxlKGRldik7Cj4gLQllbHNlIGlmIChJU19HRU43KGRldikpCj4gKwllbHNlIGlmIChJU19HRU43 KGRldl9wcml2KSkKPiAgCQlnZW43X3BwZ3R0X2VuYWJsZShkZXYpOwo+ICAJZWxzZSBpZiAoSU5U RUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkKPiAgCQlnZW44X3BwZ3R0X2VuYWJsZShkZXYpOwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCj4gaW5kZXggZDFiNDBiY2UwMjQ5Li5m NGY2ZDNhNDhiMDUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f c3RvbGVuLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwo+ IEBAIC0yMTUsNyArMjE1LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgaTkxNV9zdG9sZW5fdG9f cGh5c2ljYWwoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQl1NjQgZ2d0dF9zdGFydCwgZ2d0 dF9lbmQ7Cj4gIAo+ICAJCWdndHRfc3RhcnQgPSBJOTE1X1JFQUQoUEdUQkxfQ1RMKTsKPiAtCQlp ZiAoSVNfR0VONChkZXYpKQo+ICsJCWlmIChJU19HRU40KGRldl9wcml2KSkKPiAgCQkJZ2d0dF9z dGFydCA9IChnZ3R0X3N0YXJ0ICYgUEdUQkxfQUREUkVTU19MT19NQVNLKSB8Cj4gIAkJCQkgICAg IChnZ3R0X3N0YXJ0ICYgUEdUQkxfQUREUkVTU19ISV9NQVNLKSA8PCAyODsKPiAgCQllbHNlCj4g QEAgLTI3MSw3ICsyNzEsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBpOTE1X3N0b2xlbl90b19w aHlzaWNhbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCSAqIEdFTjMgZmlybXdhcmUgbGlr ZXMgdG8gc21hc2ggcGNpIGJyaWRnZXMgaW50byB0aGUgc3RvbGVuCj4gIAkJICogcmFuZ2UuIEFw cGFyZW50bHkgdGhpcyB3b3Jrcy4KPiAgCQkgKi8KPiAtCQlpZiAociA9PSBOVUxMICYmICFJU19H RU4zKGRldikpIHsKPiArCQlpZiAociA9PSBOVUxMICYmICFJU19HRU4zKGRldl9wcml2KSkgewo+ ICAJCQlEUk1fRVJST1IoImNvbmZsaWN0IGRldGVjdGVkIHdpdGggc3RvbGVuIHJlZ2lvbjogWzB4 JTA4eCAtIDB4JTA4eF1cbiIsCj4gIAkJCQkgIGJhc2UsIGJhc2UgKyAodWludDMyX3QpZ2d0dC0+ c3RvbGVuX3NpemUpOwo+ICAJCQliYXNlID0gMDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV90aWxpbmcuYwo+IGluZGV4IDg5ZDFkMjM0YTFiNC4uYzIxYmMwMDY4ZDIwIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMKPiBAQCAtNzIsNyArNzIsNyBAQCBpOTE1 X3RpbGluZ19vayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgc3RyaWRlLCBpbnQgc2l6ZSwg aW50IHRpbGluZ19tb2RlKQo+ICAJaWYgKHRpbGluZ19tb2RlID4gSTkxNV9USUxJTkdfTEFTVCkK PiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+IC0JaWYgKElTX0dFTjIoZGV2KSB8fAo+ICsJaWYgKElT X0dFTjIoZGV2X3ByaXYpIHx8Cj4gIAkgICAgKHRpbGluZ19tb2RlID09IEk5MTVfVElMSU5HX1kg JiYgSEFTXzEyOF9CWVRFX1lfVElMSU5HKGRldl9wcml2KSkpCj4gIAkJdGlsZV93aWR0aCA9IDEy ODsKPiAgCWVsc2UKPiBAQCAtOTEsNyArOTEsNyBAQCBpOTE1X3RpbGluZ19vayhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBpbnQgc3RyaWRlLCBpbnQgc2l6ZSwgaW50IHRpbGluZ19tb2RlKQo+ICAJ CWlmIChzdHJpZGUgPiA4MTkyKQo+ICAJCQlyZXR1cm4gZmFsc2U7Cj4gIAo+IC0JCWlmIChJU19H RU4zKGRldikpIHsKPiArCQlpZiAoSVNfR0VOMyhkZXZfcHJpdikpIHsKPiAgCQkJaWYgKHNpemUg PiBJODMwX0ZFTkNFX01BWF9TSVpFX1ZBTCA8PCAyMCkKPiAgCQkJCXJldHVybiBmYWxzZTsKPiAg CQl9IGVsc2Ugewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9l cnJvci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+IGluZGV4IDZl YjExZmQzMjZmZC4uNjI5YWM1NjdkY2JiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dw dV9lcnJvci5jCj4gQEAgLTQ0Miw3ICs0NDIsNyBAQCBpbnQgaTkxNV9lcnJvcl9zdGF0ZV90b19z dHIoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKPiAgCQllcnJfcHJpbnRmKG0s ICJET05FX1JFRzogMHglMDh4XG4iLCBlcnJvci0+ZG9uZV9yZWcpOwo+ICAJfQo+ICAKPiAtCWlm IChJU19HRU43KGRldikpCj4gKwlpZiAoSVNfR0VONyhkZXZfcHJpdikpCj4gIAkJZXJyX3ByaW50 ZihtLCAiRVJSX0lOVDogMHglMDh4XG4iLCBlcnJvci0+ZXJyX2ludCk7Cj4gIAo+ICAJZm9yIChp ID0gMDsgaSA8IEFSUkFZX1NJWkUoZXJyb3ItPmVuZ2luZSk7IGkrKykgewo+IEBAIC0xMzU1LDcg KzEzNTUsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2NhcHR1cmVfcmVnX3N0YXRlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQllcnJvci0+Zm9yY2V3YWtlID0gSTkxNV9SRUFE X0ZXKEZPUkNFV0FLRV9WTFYpOwo+ICAJfQo+ICAKPiAtCWlmIChJU19HRU43KGRldikpCj4gKwlp ZiAoSVNfR0VONyhkZXZfcHJpdikpCj4gIAkJZXJyb3ItPmVycl9pbnQgPSBJOTE1X1JFQUQoR0VO N19FUlJfSU5UKTsKPiAgCj4gIAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkgewo+IEBA IC0xMzYzLDcgKzEzNjMsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2NhcHR1cmVfcmVnX3N0YXRlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQllcnJvci0+ZmF1bHRfZGF0YTEg PSBJOTE1X1JFQUQoR0VOOF9GQVVMVF9UTEJfREFUQTEpOwo+ICAJfQo+ICAKPiAtCWlmIChJU19H RU42KGRldikpIHsKPiArCWlmIChJU19HRU42KGRldl9wcml2KSkgewo+ICAJCWVycm9yLT5mb3Jj ZXdha2UgPSBJOTE1X1JFQURfRlcoRk9SQ0VXQUtFKTsKPiAgCQllcnJvci0+Z2FiX2N0bCA9IEk5 MTVfUkVBRChHQUJfQ1RMKTsKPiAgCQllcnJvci0+Z2Z4X21vZGUgPSBJOTE1X1JFQUQoR0ZYX01P REUpOwo+IEBAIC0xMzgwLDcgKzEzODAsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2NhcHR1cmVfcmVn X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCX0KPiAgCj4gIAkv KiAzOiBGZWF0dXJlIHNwZWNpZmljIHJlZ2lzdGVycyAqLwo+IC0JaWYgKElTX0dFTjYoZGV2KSB8 fCBJU19HRU43KGRldikpIHsKPiArCWlmIChJU19HRU42KGRldl9wcml2KSB8fCBJU19HRU43KGRl dl9wcml2KSkgewo+ICAJCWVycm9yLT5nYW1fZWNvY2hrID0gSTkxNV9SRUFEKEdBTV9FQ09DSEsp Owo+ICAJCWVycm9yLT5nYWNfZWNvID0gSTkxNV9SRUFEKEdBQ19FQ09fQklUUyk7Cj4gIAl9Cj4g QEAgLTEzOTYsNyArMTM5Niw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfY2FwdHVyZV9yZWdfc3RhdGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJfSBlbHNlIGlmIChIQVNfUENI X1NQTElUKGRldl9wcml2KSkgewo+ICAJCWVycm9yLT5pZXIgPSBJOTE1X1JFQUQoREVJRVIpOwo+ ICAJCWVycm9yLT5ndGllclswXSA9IEk5MTVfUkVBRChHVElFUik7Cj4gLQl9IGVsc2UgaWYgKElT X0dFTjIoZGV2KSkgewo+ICsJfSBlbHNlIGlmIChJU19HRU4yKGRldl9wcml2KSkgewo+ICAJCWVy cm9yLT5pZXIgPSBJOTE1X1JFQUQxNihJRVIpOwo+ICAJfSBlbHNlIGlmICghSVNfVkFMTEVZVklF VyhkZXZfcHJpdikpIHsKPiAgCQllcnJvci0+aWVyID0gSTkxNV9SRUFEKElFUik7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2lycS5jCj4gaW5kZXggMDc5YmE3Y2ZjOTcxLi5kNjEwZGY5MmFkMWYgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiBAQCAtMzMzMyw3ICszMzMzLDcgQEAgc3RhdGljIHZv aWQgaXJvbmxha2VfaXJxX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlJOTE1X1dS SVRFKEhXU1RBTSwgMHhmZmZmZmZmZik7Cj4gIAo+ICAJR0VONV9JUlFfUkVTRVQoREUpOwo+IC0J aWYgKElTX0dFTjcoZGV2KSkKPiArCWlmIChJU19HRU43KGRldl9wcml2KSkKPiAgCQlJOTE1X1dS SVRFKEdFTjdfRVJSX0lOVCwgMHhmZmZmZmZmZik7Cj4gIAo+ICAJZ2VuNV9ndF9pcnFfcmVzZXQo ZGV2KTsKPiBAQCAtMzU5OSw3ICszNTk5LDcgQEAgc3RhdGljIHZvaWQgZ2VuNV9ndF9pcnFfcG9z dGluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCX0KPiAgCj4gIAlndF9pcnFzIHw9 IEdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVDsKPiAtCWlmIChJU19HRU41KGRldikpIHsKPiArCWlm IChJU19HRU41KGRldl9wcml2KSkgewo+ICAJCWd0X2lycXMgfD0gSUxLX0JTRF9VU0VSX0lOVEVS UlVQVDsKPiAgCX0gZWxzZSB7Cj4gIAkJZ3RfaXJxcyB8PSBHVF9CTFRfVVNFUl9JTlRFUlJVUFQg fCBHVF9CU0RfVVNFUl9JTlRFUlJVUFQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfc3VzcGVuZC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zdXNwZW5kLmMK PiBpbmRleCA3ODcwODU2ZmNjZDAuLjM0NGNiZjM5Y2ZhOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3N1c3BlbmQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfc3VzcGVuZC5jCj4gQEAgLTcwLDcgKzcwLDcgQEAgaW50IGk5MTVfc2F2ZV9zdGF0ZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgCWk5MTVfc2F2ZV9kaXNwbGF5KGRldik7Cj4g IAo+IC0JaWYgKElTX0dFTjQoZGV2KSkKPiArCWlmIChJU19HRU40KGRldl9wcml2KSkKPiAgCQlw Y2lfcmVhZF9jb25maWdfd29yZChwZGV2LCBHQ0RHTUJVUywKPiAgCQkJCSAgICAgJmRldl9wcml2 LT5yZWdmaWxlLnNhdmVHQ0RHTUJVUyk7Cj4gIAo+IEBAIC0xMTYsNyArMTE2LDcgQEAgaW50IGk5 MTVfcmVzdG9yZV9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgCWk5MTVfZ2Vt X3Jlc3RvcmVfZmVuY2VzKGRldik7Cj4gIAo+IC0JaWYgKElTX0dFTjQoZGV2KSkKPiArCWlmIChJ U19HRU40KGRldl9wcml2KSkKPiAgCQlwY2lfd3JpdGVfY29uZmlnX3dvcmQocGRldiwgR0NER01C VVMsCj4gIAkJCQkgICAgICBkZXZfcHJpdi0+cmVnZmlsZS5zYXZlR0NER01CVVMpOwo+ICAJaTkx NV9yZXN0b3JlX2Rpc3BsYXkoZGV2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfY3J0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYwo+IGluZGV4 IGQ5MmMzZWRmMTBmZi4uYTk3MTUxZmNiOWY0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2NydC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0 LmMKPiBAQCAtMjU5LDcgKzI1OSw3IEBAIGludGVsX2NydF9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IsCj4gIAkJICogREFDIGxpbWl0IHN1cHBvc2VkbHkgMzU1IE1I ei4KPiAgCQkgKi8KPiAgCQltYXhfY2xvY2sgPSAyNzAwMDA7Cj4gLQllbHNlIGlmIChJU19HRU4z KGRldikgfHwgSVNfR0VONChkZXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VOMyhkZXZfcHJpdikgfHwg SVNfR0VONChkZXZfcHJpdikpCj4gIAkJbWF4X2Nsb2NrID0gNDAwMDAwOwo+ICAJZWxzZQo+ICAJ CW1heF9jbG9jayA9IDM1MDAwMDsKPiBAQCAtNTY3LDcgKzU2Nyw3IEBAIGludGVsX2NydF9sb2Fk X2RldGVjdChzdHJ1Y3QgaW50ZWxfY3J0ICpjcnQsIHVpbnQzMl90IHBpcGUpCj4gIAkvKiBTZXQg dGhlIGJvcmRlciBjb2xvciB0byBwdXJwbGUuICovCj4gIAlJOTE1X1dSSVRFKGJjbHJwYXRfcmVn LCAweDUwMDA1MCk7Cj4gIAo+IC0JaWYgKCFJU19HRU4yKGRldikpIHsKPiArCWlmICghSVNfR0VO MihkZXZfcHJpdikpIHsKPiAgCQl1aW50MzJfdCBwaXBlY29uZiA9IEk5MTVfUkVBRChwaXBlY29u Zl9yZWcpOwo+ICAJCUk5MTVfV1JJVEUocGlwZWNvbmZfcmVnLCBwaXBlY29uZiB8IFBJUEVDT05G X0ZPUkNFX0JPUkRFUik7Cj4gIAkJUE9TVElOR19SRUFEKHBpcGVjb25mX3JlZyk7Cj4gQEAgLTg5 OSw3ICs4OTksNyBAQCB2b2lkIGludGVsX2NydF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gIAllbHNlCj4gIAkJY3J0LT5iYXNlLmNydGNfbWFzayA9ICgxIDw8IDApIHwgKDEgPDwgMSkg fCAoMSA8PCAyKTsKPiAgCj4gLQlpZiAoSVNfR0VOMihkZXYpKQo+ICsJaWYgKElTX0dFTjIoZGV2 X3ByaXYpKQo+ICAJCWNvbm5lY3Rvci0+aW50ZXJsYWNlX2FsbG93ZWQgPSAwOwo+ICAJZWxzZQo+ ICAJCWNvbm5lY3Rvci0+aW50ZXJsYWNlX2FsbG93ZWQgPSAxOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKPiBpbmRleCBlZGEzOGU1M2Y2OGEuLmYzOTMxYzY2MTE2ZiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMTA0NSw3ICsxMDQ1LDcgQEAg c3RhdGljIGJvb2wgcGlwZV9kc2xfc3RvcHBlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVt IHBpcGUgcGlwZSkKPiAgCXUzMiBsaW5lMSwgbGluZTI7Cj4gIAl1MzIgbGluZV9tYXNrOwo+ICAK PiAtCWlmIChJU19HRU4yKGRldikpCj4gKwlpZiAoSVNfR0VOMihkZXZfcHJpdikpCj4gIAkJbGlu ZV9tYXNrID0gRFNMX0xJTkVNQVNLX0dFTjI7Cj4gIAllbHNlCj4gIAkJbGluZV9tYXNrID0gRFNM X0xJTkVNQVNLX0dFTjM7Cj4gQEAgLTM5NDcsNyArMzk0Nyw3IEBAIHN0YXRpYyB2b2lkIGdlbjZf ZmRpX2xpbmtfdHJhaW4oc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJdGVtcCA9IEk5MTVfUkVB RChyZWcpOwo+ICAJdGVtcCAmPSB+RkRJX0xJTktfVFJBSU5fTk9ORTsKPiAgCXRlbXAgfD0gRkRJ X0xJTktfVFJBSU5fUEFUVEVSTl8yOwo+IC0JaWYgKElTX0dFTjYoZGV2KSkgewo+ICsJaWYgKElT X0dFTjYoZGV2X3ByaXYpKSB7Cj4gIAkJdGVtcCAmPSB+RkRJX0xJTktfVFJBSU5fVk9MX0VNUF9N QVNLOwo+ICAJCS8qIFNOQi1CICovCj4gIAkJdGVtcCB8PSBGRElfTElOS19UUkFJTl80MDBNVl8w REJfU05CX0I7Cj4gQEAgLTQ5ODUsNyArNDk4NSw3IEBAIGludGVsX3Bvc3RfZW5hYmxlX3ByaW1h cnkoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJICogRklYTUU6IE5lZWQgdG8gZml4IHRoZSBs b2dpYyB0byB3b3JrIHdoZW4gd2UgdHVybiBvZmYgYWxsIHBsYW5lcwo+ICAJICogYnV0IGxlYXZl IHRoZSBwaXBlIHJ1bm5pbmcuCj4gIAkgKi8KPiAtCWlmIChJU19HRU4yKGRldikpCj4gKwlpZiAo SVNfR0VOMihkZXZfcHJpdikpCj4gIAkJaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3JlcG9y dGluZyhkZXZfcHJpdiwgcGlwZSwgdHJ1ZSk7Cj4gIAo+ICAJLyogVW5kZXJydW5zIGRvbid0IGFs d2F5cyByYWlzZSBpbnRlcnJ1cHRzLCBzbyBjaGVjayBtYW51YWxseS4gKi8KPiBAQCAtNTAwOCw3 ICs1MDA4LDcgQEAgaW50ZWxfcHJlX2Rpc2FibGVfcHJpbWFyeShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpCj4gIAkgKiBGSVhNRTogTmVlZCB0byBmaXggdGhlIGxvZ2ljIHRvIHdvcmsgd2hlbiB3ZSB0 dXJuIG9mZiBhbGwgcGxhbmVzCj4gIAkgKiBidXQgbGVhdmUgdGhlIHBpcGUgcnVubmluZy4KPiAg CSAqLwo+IC0JaWYgKElTX0dFTjIoZGV2KSkKPiArCWlmIChJU19HRU4yKGRldl9wcml2KSkKPiAg CQlpbnRlbF9zZXRfY3B1X2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRldl9wcml2LCBwaXBlLCBm YWxzZSk7Cj4gIAo+ICAJLyoKPiBAQCAtNjc3NSw3ICs2Nzc1LDcgQEAgc3RhdGljIHZvaWQgaTl4 eF9jcnRjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gIAo+ ICAJaW50ZWxfY3J0Yy0+YWN0aXZlID0gdHJ1ZTsKPiAgCj4gLQlpZiAoIUlTX0dFTjIoZGV2KSkK PiArCWlmICghSVNfR0VOMihkZXZfcHJpdikpCj4gIAkJaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVy cnVuX3JlcG9ydGluZyhkZXZfcHJpdiwgcGlwZSwgdHJ1ZSk7Cj4gIAo+ICAJaW50ZWxfZW5jb2Rl cnNfcHJlX2VuYWJsZShjcnRjLCBwaXBlX2NvbmZpZywgb2xkX3N0YXRlKTsKPiBAQCAtNjgyMyw3 ICs2ODIzLDcgQEAgc3RhdGljIHZvaWQgaTl4eF9jcnRjX2Rpc2FibGUoc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAo+ICAJICogT24gZ2VuMiBwbGFuZXMgYXJlIGRvdWJs ZSBidWZmZXJlZCBidXQgdGhlIHBpcGUgaXNuJ3QsIHNvIHdlIG11c3QKPiAgCSAqIHdhaXQgZm9y IHBsYW5lcyB0byBmdWxseSB0dXJuIG9mZiBiZWZvcmUgZGlzYWJsaW5nIHRoZSBwaXBlLgo+ICAJ ICovCj4gLQlpZiAoSVNfR0VOMihkZXYpKQo+ICsJaWYgKElTX0dFTjIoZGV2X3ByaXYpKQo+ICAJ CWludGVsX3dhaXRfZm9yX3ZibGFuayhkZXYsIHBpcGUpOwo+ICAKPiAgCWludGVsX2VuY29kZXJz X2Rpc2FibGUoY3J0Yywgb2xkX2NydGNfc3RhdGUsIG9sZF9zdGF0ZSk7Cj4gQEAgLTY4NDgsNyAr Njg0OCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfY3J0Y19kaXNhYmxlKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKPiAgCj4gIAlpbnRlbF9lbmNvZGVyc19wb3N0X3BsbF9k aXNhYmxlKGNydGMsIG9sZF9jcnRjX3N0YXRlLCBvbGRfc3RhdGUpOwo+ICAKPiAtCWlmICghSVNf R0VOMihkZXYpKQo+ICsJaWYgKCFJU19HRU4yKGRldl9wcml2KSkKPiAgCQlpbnRlbF9zZXRfY3B1 X2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRldl9wcml2LCBwaXBlLCBmYWxzZSk7Cj4gIH0KPiAg Cj4gQEAgLTk4NDYsNyArOTg0Niw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX2dldF9wZml0X2Nv bmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQkvKiBXZSBjdXJyZW50bHkgZG8gbm90 IGZyZWUgYXNzaWduZW1lbnRzIG9mIHBhbmVsIGZpdHRlcnMgb24KPiAgCQkgKiBpdmIvaHN3IChz aW5jZSB3ZSBkb24ndCB1c2UgdGhlIGhpZ2hlciB1cHNjYWxpbmcgbW9kZXMgd2hpY2gKPiAgCQkg KiBkaWZmZXJlbnRpYXRlcyB0aGVtKSBzbyBqdXN0IFdBUk4gYWJvdXQgdGhpcyBjYXNlIGZvciBu b3cuICovCj4gLQkJaWYgKElTX0dFTjcoZGV2KSkgewo+ICsJCWlmIChJU19HRU43KGRldl9wcml2 KSkgewo+ICAJCQlXQVJOX09OKCh0bXAgJiBQRl9QSVBFX1NFTF9NQVNLX0lWQikgIT0KPiAgCQkJ CVBGX1BJUEVfU0VMX0lWQihjcnRjLT5waXBlKSk7Cj4gIAkJfQo+IEBAIC0xMTMyMiw3ICsxMTMy Miw3IEBAIHN0YXRpYyBpbnQgaTl4eF9wbGxfcmVmY2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4gIAkJcmV0dXJuIGRldl9wcml2LT52YnQubHZkc19zc2NfZnJlcTsKPiAgCWVsc2UgaWYgKEhB U19QQ0hfU1BMSVQoZGV2X3ByaXYpKQo+ICAJCXJldHVybiAxMjAwMDA7Cj4gLQllbHNlIGlmICgh SVNfR0VOMihkZXYpKQo+ICsJZWxzZSBpZiAoIUlTX0dFTjIoZGV2X3ByaXYpKQo+ICAJCXJldHVy biA5NjAwMDsKPiAgCWVsc2UKPiAgCQlyZXR1cm4gNDgwMDA7Cj4gQEAgLTExMzU1LDcgKzExMzU1 LDcgQEAgc3RhdGljIHZvaWQgaTl4eF9jcnRjX2Nsb2NrX2dldChzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywKPiAgCQljbG9jay5tMiA9IChmcCAmIEZQX00yX0RJVl9NQVNLKSA+PiBGUF9NMl9ESVZf U0hJRlQ7Cj4gIAl9Cj4gIAo+IC0JaWYgKCFJU19HRU4yKGRldikpIHsKPiArCWlmICghSVNfR0VO MihkZXZfcHJpdikpIHsKPiAgCQlpZiAoSVNfUElORVZJRVcoZGV2KSkKPiAgCQkJY2xvY2sucDEg PSBmZnMoKGRwbGwgJiBEUExMX0ZQQTAxX1AxX1BPU1RfRElWX01BU0tfUElORVZJRVcpID4+Cj4g IAkJCQlEUExMX0ZQQTAxX1AxX1BPU1RfRElWX1NISUZUX1BJTkVWSUVXKTsKPiBAQCAtMTE4NTQs NiArMTE4NTQsNyBAQCBzdGF0aWMgaW50IGludGVsX2dlbjdfcXVldWVfZmxpcChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAo+ICAJCQkJIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ ICAJCQkJIHVpbnQzMl90IGZsYWdzKQo+ICB7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJl cS0+cmluZzsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0 YyhjcnRjKTsKPiAgCXVpbnQzMl90IHBsYW5lX2JpdCA9IDA7Cj4gQEAgLTExODgyLDcgKzExODgz LDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW43X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPiAgCQkgKiA0OGJpdHMgYWRkcmVzc2VzLCBhbmQgd2UgbmVlZCBhIE5PT1AgZm9yIHRo ZSBiYXRjaCBzaXplIHRvCj4gIAkJICogc3RheSBldmVuLgo+ICAJCSAqLwo+IC0JCWlmIChJU19H RU44KGRldikpCj4gKwkJaWYgKElTX0dFTjgoZGV2X3ByaXYpKQo+ICAJCQlsZW4gKz0gMjsKPiAg CX0KPiAgCj4gQEAgLTExOTE5LDcgKzExOTIwLDcgQEAgc3RhdGljIGludCBpbnRlbF9nZW43X3F1 ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQlpbnRlbF9yaW5nX2VtaXQocmlu ZywgfihERVJSTVJfUElQRUFfUFJJX0ZMSVBfRE9ORSB8Cj4gIAkJCQkJICBERVJSTVJfUElQRUJf UFJJX0ZMSVBfRE9ORSB8Cj4gIAkJCQkJICBERVJSTVJfUElQRUNfUFJJX0ZMSVBfRE9ORSkpOwo+ IC0JCWlmIChJU19HRU44KGRldikpCj4gKwkJaWYgKElTX0dFTjgoZGV2X3ByaXYpKQo+ICAJCQlp bnRlbF9yaW5nX2VtaXQocmluZywgTUlfU1RPUkVfUkVHSVNURVJfTUVNX0dFTjggfAo+ICAJCQkJ CSAgICAgIE1JX1NSTV9MUk1fR0xPQkFMX0dUVCk7Cj4gIAkJZWxzZQo+IEBAIC0xMTkyOCw3ICsx MTkyOSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuN19xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gIAkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBERVJSTVIpOwo+ICAJCWlu dGVsX3JpbmdfZW1pdChyaW5nLAo+ICAJCQkJaTkxNV9nZ3R0X29mZnNldChyZXEtPmVuZ2luZS0+ c2NyYXRjaCkgKyAyNTYpOwo+IC0JCWlmIChJU19HRU44KGRldikpIHsKPiArCQlpZiAoSVNfR0VO OChkZXZfcHJpdikpIHsKPiAgCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwo+ICAJCQlpbnRl bF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Cj4gIAkJfQo+IEBAIC0xNTMyMiw3ICsxNTMyMyw3 IEBAIHN0YXRpYyBib29sIGhhc19lZHBfYShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJaWYg KChJOTE1X1JFQUQoRFBfQSkgJiBEUF9ERVRFQ1RFRCkgPT0gMCkKPiAgCQlyZXR1cm4gZmFsc2U7 Cj4gIAo+IC0JaWYgKElTX0dFTjUoZGV2KSAmJiAoSTkxNV9SRUFEKEZVU0VfU1RSQVApICYgSUxL X2VEUF9BX0RJU0FCTEUpKQo+ICsJaWYgKElTX0dFTjUoZGV2X3ByaXYpICYmIChJOTE1X1JFQUQo RlVTRV9TVFJBUCkgJiBJTEtfZURQX0FfRElTQUJMRSkpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAK PiAgCXJldHVybiB0cnVlOwo+IEBAIC0xNTUyNCw3ICsxNTUyNSw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX3NldHVwX291dHB1dHMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQl9Cj4gIAo+ICAJ CWludGVsX2RzaV9pbml0KGRldik7Cj4gLQl9IGVsc2UgaWYgKCFJU19HRU4yKGRldikgJiYgIUlT X1BJTkVWSUVXKGRldikpIHsKPiArCX0gZWxzZSBpZiAoIUlTX0dFTjIoZGV2X3ByaXYpICYmICFJ U19QSU5FVklFVyhkZXZfcHJpdikpIHsKPiAgCQlib29sIGZvdW5kID0gZmFsc2U7Cj4gIAo+ICAJ CWlmIChJOTE1X1JFQUQoR0VOM19TRFZPQikgJiBTRFZPX0RFVEVDVEVEKSB7Cj4gQEAgLTE1NTU4 LDcgKzE1NTU5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2V0dXBfb3V0cHV0cyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+ICAKPiAgCQlpZiAoSVNfRzRYKGRldl9wcml2KSAmJiAoSTkxNV9SRUFE KERQX0QpICYgRFBfREVURUNURUQpKQo+ICAJCQlpbnRlbF9kcF9pbml0KGRldiwgRFBfRCwgUE9S VF9EKTsKPiAtCX0gZWxzZSBpZiAoSVNfR0VOMihkZXYpKQo+ICsJfSBlbHNlIGlmIChJU19HRU4y KGRldl9wcml2KSkKPiAgCQlpbnRlbF9kdm9faW5pdChkZXYpOwo+ICAKPiAgCWlmIChTVVBQT1JU U19UVihkZXYpKQo+IEBAIC0xNjM4MywxMCArMTYzODQsMTAgQEAgdm9pZCBpbnRlbF9tb2Rlc2V0 X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQl9Cj4gIAl9Cj4gIAo+IC0JaWYgKElT X0dFTjIoZGV2KSkgewo+ICsJaWYgKElTX0dFTjIoZGV2X3ByaXYpKSB7Cj4gIAkJZGV2LT5tb2Rl X2NvbmZpZy5tYXhfd2lkdGggPSAyMDQ4Owo+ICAJCWRldi0+bW9kZV9jb25maWcubWF4X2hlaWdo dCA9IDIwNDg7Cj4gLQl9IGVsc2UgaWYgKElTX0dFTjMoZGV2KSkgewo+ICsJfSBlbHNlIGlmIChJ U19HRU4zKGRldl9wcml2KSkgewo+ICAJCWRldi0+bW9kZV9jb25maWcubWF4X3dpZHRoID0gNDA5 NjsKPiAgCQlkZXYtPm1vZGVfY29uZmlnLm1heF9oZWlnaHQgPSA0MDk2Owo+ICAJfSBlbHNlIHsK PiBAQCAtMTYzOTcsNyArMTYzOTgsNyBAQCB2b2lkIGludGVsX21vZGVzZXRfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAJaWYgKElTXzg0NUcoZGV2X3ByaXYpIHx8IElTX0k4NjVHKGRl dl9wcml2KSkgewo+ICAJCWRldi0+bW9kZV9jb25maWcuY3Vyc29yX3dpZHRoID0gSVNfODQ1Ryhk ZXZfcHJpdikgPyA2NCA6IDUxMjsKPiAgCQlkZXYtPm1vZGVfY29uZmlnLmN1cnNvcl9oZWlnaHQg PSAxMDIzOwo+IC0JfSBlbHNlIGlmIChJU19HRU4yKGRldikpIHsKPiArCX0gZWxzZSBpZiAoSVNf R0VOMihkZXZfcHJpdikpIHsKPiAgCQlkZXYtPm1vZGVfY29uZmlnLmN1cnNvcl93aWR0aCA9IEdF TjJfQ1VSU09SX1dJRFRIOwo+ICAJCWRldi0+bW9kZV9jb25maWcuY3Vyc29yX2hlaWdodCA9IEdF TjJfQ1VSU09SX0hFSUdIVDsKPiAgCX0gZWxzZSB7Cj4gQEAgLTE2OTE4LDcgKzE2OTE5LDcgQEAg aW50ZWxfbW9kZXNldF9zZXR1cF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAK PiAgCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2 KSkKPiAgCQl2bHZfd21fZ2V0X2h3X3N0YXRlKGRldik7Cj4gLQllbHNlIGlmIChJU19HRU45KGRl dikpCj4gKwllbHNlIGlmIChJU19HRU45KGRldl9wcml2KSkKPiAgCQlza2xfd21fZ2V0X2h3X3N0 YXRlKGRldik7Cj4gIAllbHNlIGlmIChIQVNfUENIX1NQTElUKGRldl9wcml2KSkKPiAgCQlpbGtf d21fZ2V0X2h3X3N0YXRlKGRldik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gaW5kZXggYTJj NGQ1YTBiNzA0Li5iYTNhYzI2NjE2MjUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBA QCAtMTc2Nyw3ICsxNzY3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHBfcHJlcGFyZShzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCj4gIAkvKiBTcGxpdCBvdXQgdGhlIElCWC9DUFUg dnMgQ1BUIHNldHRpbmdzICovCj4gIAo+IC0JaWYgKElTX0dFTjcoZGV2KSAmJiBwb3J0ID09IFBP UlRfQSkgewo+ICsJaWYgKElTX0dFTjcoZGV2X3ByaXYpICYmIHBvcnQgPT0gUE9SVF9BKSB7Cj4g IAkJaWYgKGFkanVzdGVkX21vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19QSFNZTkMpCj4gIAkJ CWludGVsX2RwLT5EUCB8PSBEUF9TWU5DX0hTX0hJR0g7Cj4gIAkJaWYgKGFkanVzdGVkX21vZGUt PmZsYWdzICYgRFJNX01PREVfRkxBR19QVlNZTkMpCj4gQEAgLTIxMTMsNyArMjExMyw3IEBAIHN0 YXRpYyB2b2lkIGVkcF9wYW5lbF9vbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAKPiAg CXBwX2N0cmxfcmVnID0gX3BwX2N0cmxfcmVnKGludGVsX2RwKTsKPiAgCXBwID0gaXJvbmxha2Vf Z2V0X3BwX2NvbnRyb2woaW50ZWxfZHApOwo+IC0JaWYgKElTX0dFTjUoZGV2KSkgewo+ICsJaWYg KElTX0dFTjUoZGV2X3ByaXYpKSB7Cj4gIAkJLyogSUxLIHdvcmthcm91bmQ6IGRpc2FibGUgcmVz ZXQgYXJvdW5kIHBvd2VyIHNlcXVlbmNlICovCj4gIAkJcHAgJj0gflBBTkVMX1BPV0VSX1JFU0VU Owo+ICAJCUk5MTVfV1JJVEUocHBfY3RybF9yZWcsIHBwKTsKPiBAQCAtMjEyMSw3ICsyMTIxLDcg QEAgc3RhdGljIHZvaWQgZWRwX3BhbmVsX29uKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4g IAl9Cj4gIAo+ICAJcHAgfD0gUEFORUxfUE9XRVJfT047Cj4gLQlpZiAoIUlTX0dFTjUoZGV2KSkK PiArCWlmICghSVNfR0VONShkZXZfcHJpdikpCj4gIAkJcHAgfD0gUEFORUxfUE9XRVJfUkVTRVQ7 Cj4gIAo+ICAJSTkxNV9XUklURShwcF9jdHJsX3JlZywgcHApOwo+IEBAIC0yMTMwLDcgKzIxMzAs NyBAQCBzdGF0aWMgdm9pZCBlZHBfcGFuZWxfb24oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK PiAgCXdhaXRfcGFuZWxfb24oaW50ZWxfZHApOwo+ICAJaW50ZWxfZHAtPmxhc3RfcG93ZXJfb24g PSBqaWZmaWVzOwo+ICAKPiAtCWlmIChJU19HRU41KGRldikpIHsKPiArCWlmIChJU19HRU41KGRl dl9wcml2KSkgewo+ICAJCXBwIHw9IFBBTkVMX1BPV0VSX1JFU0VUOyAvKiByZXN0b3JlIHBhbmVs IHJlc2V0IGJpdCAqLwo+ICAJCUk5MTVfV1JJVEUocHBfY3RybF9yZWcsIHBwKTsKPiAgCQlQT1NU SU5HX1JFQUQocHBfY3RybF9yZWcpOwo+IEBAIC0yNDQzLDcgKzI0NDMsNyBAQCBzdGF0aWMgYm9v bCBpbnRlbF9kcF9nZXRfaHdfc3RhdGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4g IAlpZiAoISh0bXAgJiBEUF9QT1JUX0VOKSkKPiAgCQlnb3RvIG91dDsKPiAgCj4gLQlpZiAoSVNf R0VONyhkZXYpICYmIHBvcnQgPT0gUE9SVF9BKSB7Cj4gKwlpZiAoSVNfR0VONyhkZXZfcHJpdikg JiYgcG9ydCA9PSBQT1JUX0EpIHsKPiAgCQkqcGlwZSA9IFBPUlRfVE9fUElQRV9DUFQodG1wKTsK PiAgCX0gZWxzZSBpZiAoSEFTX1BDSF9DUFQoZGV2X3ByaXYpICYmIHBvcnQgIT0gUE9SVF9BKSB7 Cj4gIAkJZW51bSBwaXBlIHA7Cj4gQEAgLTI2NjEsNyArMjY2MSw3IEBAIF9pbnRlbF9kcF9zZXRf bGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJCX0KPiAgCQlJOTE1X1dS SVRFKERQX1RQX0NUTChwb3J0KSwgdGVtcCk7Cj4gIAo+IC0JfSBlbHNlIGlmICgoSVNfR0VONyhk ZXYpICYmIHBvcnQgPT0gUE9SVF9BKSB8fAo+ICsJfSBlbHNlIGlmICgoSVNfR0VONyhkZXZfcHJp dikgJiYgcG9ydCA9PSBQT1JUX0EpIHx8Cj4gIAkJICAgKEhBU19QQ0hfQ1BUKGRldl9wcml2KSAm JiBwb3J0ICE9IFBPUlRfQSkpIHsKPiAgCQkqRFAgJj0gfkRQX0xJTktfVFJBSU5fTUFTS19DUFQ7 Cj4gIAo+IEBAIC0yOTkwLDcgKzI5OTAsNyBAQCBpbnRlbF9kcF92b2x0YWdlX21heChzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwKQo+ICAJCXJldHVybiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xF VkVMXzI7Cj4gIAl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJS WVZJRVcoZGV2X3ByaXYpKQo+ICAJCXJldHVybiBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVM XzM7Cj4gLQllbHNlIGlmIChJU19HRU43KGRldikgJiYgcG9ydCA9PSBQT1JUX0EpCj4gKwllbHNl IGlmIChJU19HRU43KGRldl9wcml2KSAmJiBwb3J0ID09IFBPUlRfQSkKPiAgCQlyZXR1cm4gRFBf VFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8yOwo+ICAJZWxzZSBpZiAoSEFTX1BDSF9DUFQoZGV2 X3ByaXYpICYmIHBvcnQgIT0gUE9SVF9BKQo+ICAJCXJldHVybiBEUF9UUkFJTl9WT0xUQUdFX1NX SU5HX0xFVkVMXzM7Cj4gQEAgLTMzNTMsMTAgKzMzNTMsMTAgQEAgaW50ZWxfZHBfc2V0X3NpZ25h bF9sZXZlbHMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCQlzaWduYWxfbGV2ZWxzID0g Y2h2X3NpZ25hbF9sZXZlbHMoaW50ZWxfZHApOwo+ICAJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVX KGRldl9wcml2KSkgewo+ICAJCXNpZ25hbF9sZXZlbHMgPSB2bHZfc2lnbmFsX2xldmVscyhpbnRl bF9kcCk7Cj4gLQl9IGVsc2UgaWYgKElTX0dFTjcoZGV2KSAmJiBwb3J0ID09IFBPUlRfQSkgewo+ ICsJfSBlbHNlIGlmIChJU19HRU43KGRldl9wcml2KSAmJiBwb3J0ID09IFBPUlRfQSkgewo+ICAJ CXNpZ25hbF9sZXZlbHMgPSBnZW43X2VkcF9zaWduYWxfbGV2ZWxzKHRyYWluX3NldCk7Cj4gIAkJ bWFzayA9IEVEUF9MSU5LX1RSQUlOX1ZPTF9FTVBfTUFTS19JVkI7Cj4gLQl9IGVsc2UgaWYgKElT X0dFTjYoZGV2KSAmJiBwb3J0ID09IFBPUlRfQSkgewo+ICsJfSBlbHNlIGlmIChJU19HRU42KGRl dl9wcml2KSAmJiBwb3J0ID09IFBPUlRfQSkgewo+ICAJCXNpZ25hbF9sZXZlbHMgPSBnZW42X2Vk cF9zaWduYWxfbGV2ZWxzKHRyYWluX3NldCk7Cj4gIAkJbWFzayA9IEVEUF9MSU5LX1RSQUlOX1ZP TF9FTVBfTUFTS19TTkI7Cj4gIAl9IGVsc2Ugewo+IEBAIC0zNDQ0LDcgKzM0NDQsNyBAQCBpbnRl bF9kcF9saW5rX2Rvd24oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCj4gIAlEUk1fREVC VUdfS01TKCJcbiIpOwo+ICAKPiAtCWlmICgoSVNfR0VONyhkZXYpICYmIHBvcnQgPT0gUE9SVF9B KSB8fAo+ICsJaWYgKChJU19HRU43KGRldl9wcml2KSAmJiBwb3J0ID09IFBPUlRfQSkgfHwKPiAg CSAgICAoSEFTX1BDSF9DUFQoZGV2X3ByaXYpICYmIHBvcnQgIT0gUE9SVF9BKSkgewo+ICAJCURQ ICY9IH5EUF9MSU5LX1RSQUlOX01BU0tfQ1BUOwo+ICAJCURQIHw9IERQX0xJTktfVFJBSU5fUEFU X0lETEVfQ1BUOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggZjQ4ZTc5YWUyYWM2 Li45ZjU3MTc3MGMxZGIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0xNzIy LDcgKzE3MjIsNyBAQCBib29sIGNodl9waHlfcG93ZXJnYXRlX2NoKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwgZW51bSBkcGlvX3BoeSBwaHksCj4gIC8qIGludGVsX3BtLmMgKi8K PiAgdm9pZCBpbnRlbF9pbml0X2Nsb2NrX2dhdGluZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsK PiAgdm9pZCBpbnRlbF9zdXNwZW5kX2h3KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+IC1pbnQg aWxrX3dtX21heF9sZXZlbChjb25zdCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAraW50IGls a193bV9tYXhfbGV2ZWwoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsK PiAgdm9pZCBpbnRlbF91cGRhdGVfd2F0ZXJtYXJrcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwo+ ICB2b2lkIGludGVsX2luaXRfcG0oc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gIHZvaWQgaW50 ZWxfaW5pdF9jbG9ja19nYXRpbmdfaG9va3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmlmb191bmRl cnJ1bi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmlmb191bmRlcnJ1bi5jCj4gaW5k ZXggMDc2ODkzY2MzODkwLi4zMDE4ZjRmNTg5YzggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZmlmb191bmRlcnJ1bi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZmlmb191bmRlcnJ1bi5jCj4gQEAgLTI1NiwxMSArMjU2LDExIEBAIHN0YXRpYyBi b29sIF9faW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+ICAKPiAgCWlmIChIQVNfR01DSF9ESVNQTEFZKGRldl9wcml2KSkKPiAgCQlp OXh4X3NldF9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXYsIHBpcGUsIGVuYWJsZSwgb2xkKTsK PiAtCWVsc2UgaWYgKElTX0dFTjUoZGV2KSB8fCBJU19HRU42KGRldikpCj4gKwllbHNlIGlmIChJ U19HRU41KGRldl9wcml2KSB8fCBJU19HRU42KGRldl9wcml2KSkKPiAgCQlpcm9ubGFrZV9zZXRf Zmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2LCBwaXBlLCBlbmFibGUpOwo+IC0JZWxzZSBpZiAo SVNfR0VONyhkZXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VONyhkZXZfcHJpdikpCj4gIAkJaXZ5YnJp ZGdlX3NldF9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXYsIHBpcGUsIGVuYWJsZSwgb2xkKTsK PiAtCWVsc2UgaWYgKElTX0dFTjgoZGV2KSB8fCBJU19HRU45KGRldikpCj4gKwllbHNlIGlmIChJ U19HRU44KGRldl9wcml2KSB8fCBJU19HRU45KGRldl9wcml2KSkKPiAgCQlicm9hZHdlbGxfc2V0 X2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRldiwgcGlwZSwgZW5hYmxlKTsKPiAgCj4gIAlyZXR1 cm4gb2xkOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9h ZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKPiBpbmRleCA1 ZDVkNjA5ZWQ1ZTkuLmNjN2RmMGM1Nzk4MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWNfbG9hZGVyLmMKPiBAQCAtMzQ3LDcgKzM0Nyw2IEBAIHN0YXRpYyB1MzIgZ3VjX3dvcGNt X3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICBzdGF0aWMgaW50IGd1 Y191Y29kZV94ZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJ c3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3Owo+IC0J c3RydWN0IGRybV9kZXZpY2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJtOwo+ICAJc3RydWN0IGk5MTVf dm1hICp2bWE7Cj4gIAlpbnQgcmV0Owo+ICAKPiBAQCAtMzkwLDcgKzM4OSw3IEBAIHN0YXRpYyBp bnQgZ3VjX3Vjb2RlX3hmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJ ZWxzZQo+ICAJCUk5MTVfV1JJVEUoR0VOOV9HVF9QTV9DT05GSUcsIEdUX0RPT1JCRUxMX0VOQUJM RSk7Cj4gIAo+IC0JaWYgKElTX0dFTjkoZGV2KSkgewo+ICsJaWYgKElTX0dFTjkoZGV2X3ByaXYp KSB7Cj4gIAkJLyogRE9QIENsb2NrIEdhdGluZyBFbmFibGUgZm9yIEd1QyBjbG9ja3MgKi8KPiAg CQlJOTE1X1dSSVRFKEdFTjdfTUlTQ0NQQ1RMLCAoR0VOOF9ET1BfQ0xPQ0tfR0FURV9HVUNfRU5B QkxFIHwKPiAgCQkJCQkgICAgSTkxNV9SRUFEKEdFTjdfTUlTQ0NQQ1RMKSkpOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sdmRzLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9sdmRzLmMKPiBpbmRleCAxYzQ3Zjk5OTE3ZTYuLjE5OWI5MGM3OTA3YSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sdmRzLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sdmRzLmMKPiBAQCAtMTA3MSw3ICsxMDcxLDcgQEAgdm9p ZCBpbnRlbF9sdmRzX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCWludGVsX2VuY29k ZXItPmNsb25lYWJsZSA9IDA7Cj4gIAlpZiAoSEFTX1BDSF9TUExJVChkZXZfcHJpdikpCj4gIAkJ aW50ZWxfZW5jb2Rlci0+Y3J0Y19tYXNrID0gKDEgPDwgMCkgfCAoMSA8PCAxKSB8ICgxIDw8IDIp Owo+IC0JZWxzZSBpZiAoSVNfR0VONChkZXYpKQo+ICsJZWxzZSBpZiAoSVNfR0VONChkZXZfcHJp dikpCj4gIAkJaW50ZWxfZW5jb2Rlci0+Y3J0Y19tYXNrID0gKDEgPDwgMCkgfCAoMSA8PCAxKTsK PiAgCWVsc2UKPiAgCQlpbnRlbF9lbmNvZGVyLT5jcnRjX21hc2sgPSAoMSA8PCAxKTsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BtLmMKPiBpbmRleCA5YmFmZmFlNGY5ZjguLmQ5ZWIxMGYyYmI3OCAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IEBAIC0xNTMwLDcgKzE1MzAsNyBAQCBzdGF0aWMg dm9pZCBpOXh4X3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMgKnVudXNlZF9jcnRjKQo+ICAKPiAg CWlmIChJU19JOTQ1R00oZGV2KSkKPiAgCQl3bV9pbmZvID0gJmk5NDVfd21faW5mbzsKPiAtCWVs c2UgaWYgKCFJU19HRU4yKGRldikpCj4gKwllbHNlIGlmICghSVNfR0VOMihkZXZfcHJpdikpCj4g IAkJd21faW5mbyA9ICZpOTE1X3dtX2luZm87Cj4gIAllbHNlCj4gIAkJd21faW5mbyA9ICZpODMw X2Ffd21faW5mbzsKPiBAQCAtMTU0MCw3ICsxNTQwLDcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRh dGVfd20oc3RydWN0IGRybV9jcnRjICp1bnVzZWRfY3J0YykKPiAgCWlmIChpbnRlbF9jcnRjX2Fj dGl2ZShjcnRjKSkgewo+ICAJCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3Rl ZF9tb2RlOwo+ICAJCWludCBjcHAgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChjcnRjLT5wcmltYXJ5 LT5zdGF0ZS0+ZmItPnBpeGVsX2Zvcm1hdCwgMCk7Cj4gLQkJaWYgKElTX0dFTjIoZGV2KSkKPiAr CQlpZiAoSVNfR0VOMihkZXZfcHJpdikpCj4gIAkJCWNwcCA9IDQ7Cj4gIAo+ICAJCWFkanVzdGVk X21vZGUgPSAmdG9faW50ZWxfY3J0YyhjcnRjKS0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7 Cj4gQEAgLTE1NTQsNyArMTU1NCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3dtKHN0cnVj dCBkcm1fY3J0YyAqdW51c2VkX2NydGMpCj4gIAkJCXBsYW5lYV93bSA9IHdtX2luZm8tPm1heF93 bTsKPiAgCX0KPiAgCj4gLQlpZiAoSVNfR0VOMihkZXYpKQo+ICsJaWYgKElTX0dFTjIoZGV2X3By aXYpKQo+ICAJCXdtX2luZm8gPSAmaTgzMF9iY193bV9pbmZvOwo+ICAKPiAgCWZpZm9fc2l6ZSA9 IGRldl9wcml2LT5kaXNwbGF5LmdldF9maWZvX3NpemUoZGV2LCAxKTsKPiBAQCAtMTU2Miw3ICsx NTYyLDcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfd20oc3RydWN0IGRybV9jcnRjICp1bnVz ZWRfY3J0YykKPiAgCWlmIChpbnRlbF9jcnRjX2FjdGl2ZShjcnRjKSkgewo+ICAJCWNvbnN0IHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlOwo+ICAJCWludCBjcHAgPSBkcm1f Zm9ybWF0X3BsYW5lX2NwcChjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+ZmItPnBpeGVsX2Zvcm1hdCwg MCk7Cj4gLQkJaWYgKElTX0dFTjIoZGV2KSkKPiArCQlpZiAoSVNfR0VOMihkZXZfcHJpdikpCj4g IAkJCWNwcCA9IDQ7Cj4gIAo+ICAJCWFkanVzdGVkX21vZGUgPSAmdG9faW50ZWxfY3J0YyhjcnRj KS0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gQEAgLTIwODIsMTAgKzIwODIsMTAgQEAg c3RhdGljIHZvaWQgaW50ZWxfcmVhZF93bV9sYXRlbmN5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHVpbnQxNl90IHdtWzhdKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGRldik7Cj4gIAo+IC0JaWYgKElTX0dFTjkoZGV2KSkgewo+ICsJaWYgKElT X0dFTjkoZGV2X3ByaXYpKSB7Cj4gIAkJdWludDMyX3QgdmFsOwo+ICAJCWludCByZXQsIGk7Cj4g LQkJaW50IGxldmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21fbWF4X2xldmVsKGRldik7Cj4gKwkJaW50 IGxldmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21fbWF4X2xldmVsKGRldl9wcml2KTsKPiAgCj4gIAkJ LyogcmVhZCB0aGUgZmlyc3Qgc2V0IG9mIG1lbW9yeSBsYXRlbmNpZXNbMDozXSAqLwo+ICAJCXZh bCA9IDA7IC8qIGRhdGEwIHRvIGJlIHByb2dyYW1tZWQgdG8gMCBmb3IgZmlyc3Qgc2V0ICovCj4g QEAgLTIxODQsMTAgKzIxODQsMTEgQEAgc3RhdGljIHZvaWQgaW50ZWxfcmVhZF93bV9sYXRlbmN5 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVpbnQxNl90IHdtWzhdKQo+ICAJfQo+ICB9Cj4gIAo+ IC1zdGF0aWMgdm9pZCBpbnRlbF9maXh1cF9zcHJfd21fbGF0ZW5jeShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB1aW50MTZfdCB3bVs1XSkKPiArc3RhdGljIHZvaWQgaW50ZWxfZml4dXBfc3ByX3dt X2xhdGVuY3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJICAgICAg IHVpbnQxNl90IHdtWzVdKQo+ICB7Cj4gIAkvKiBJTEsgc3ByaXRlIExQMCBsYXRlbmN5IGlzIDEz MDAgbnMgKi8KPiAtCWlmIChJU19HRU41KGRldikpCj4gKwlpZiAoSVNfR0VONShkZXZfcHJpdikp Cj4gIAkJd21bMF0gPSAxMzsKPiAgfQo+ICAKPiBAQCAtMjIwMywxMCArMjIwNCw4IEBAIHN0YXRp YyB2b2lkIGludGVsX2ZpeHVwX2N1cl93bV9sYXRlbmN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiAgCQl3bVszXSAqPSAyOwo+ICB9Cj4gIAo+IC1pbnQgaWxrX3dtX21heF9s ZXZlbChjb25zdCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICtpbnQgaWxrX3dtX21heF9sZXZl bChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAtCj4gIAkvKiBo b3cgbWFueSBXTSBsZXZlbHMgYXJlIHdlIGV4cGVjdGluZyAqLwo+ICAJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOSkKPiAgCQlyZXR1cm4gNzsKPiBAQCAtMjIxOCwxMSArMjIxNywxMSBAQCBp bnQgaWxrX3dtX21heF9sZXZlbChjb25zdCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCXJl dHVybiAyOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpbnRlbF9wcmludF93bV9sYXRlbmN5KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gK3N0YXRpYyB2b2lkIGludGVsX3ByaW50X3dtX2xhdGVu Y3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJICAgY29uc3QgY2hh ciAqbmFtZSwKPiAgCQkJCSAgIGNvbnN0IHVpbnQxNl90IHdtWzhdKQo+ICB7Cj4gLQlpbnQgbGV2 ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2KTsKPiArCWludCBsZXZlbCwgbWF4 X2xldmVsID0gaWxrX3dtX21heF9sZXZlbChkZXZfcHJpdik7Cj4gIAo+ICAJZm9yIChsZXZlbCA9 IDA7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewo+ICAJCXVuc2lnbmVkIGludCBsYXRl bmN5ID0gd21bbGV2ZWxdOwo+IEBAIC0yMjM3LDcgKzIyMzYsNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9wcmludF93bV9sYXRlbmN5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJICogLSBsYXRl bmNpZXMgYXJlIGluIHVzIG9uIGdlbjkuCj4gIAkJICogLSBiZWZvcmUgdGhlbiwgV00xKyBsYXRl bmN5IHZhbHVlcyBhcmUgaW4gMC41dXMgdW5pdHMKPiAgCQkgKi8KPiAtCQlpZiAoSVNfR0VOOShk ZXYpKQo+ICsJCWlmIChJU19HRU45KGRldl9wcml2KSkKPiAgCQkJbGF0ZW5jeSAqPSAxMDsKPiAg CQllbHNlIGlmIChsZXZlbCA+IDApCj4gIAkJCWxhdGVuY3kgKj0gNTsKPiBAQCAtMjI1MSw3ICsy MjUwLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHJpbnRfd21fbGF0ZW5jeShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+ICBzdGF0aWMgYm9vbCBpbGtfaW5jcmVhc2Vfd21fbGF0ZW5jeShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCQkgICAgdWludDE2X3Qgd21bNV0sIHVp bnQxNl90IG1pbikKPiAgewo+IC0JaW50IGxldmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21fbWF4X2xl dmVsKCZkZXZfcHJpdi0+ZHJtKTsKPiArCWludCBsZXZlbCwgbWF4X2xldmVsID0gaWxrX3dtX21h eF9sZXZlbChkZXZfcHJpdik7Cj4gIAo+ICAJaWYgKHdtWzBdID49IG1pbikKPiAgCQlyZXR1cm4g ZmFsc2U7Cj4gQEAgLTIyODAsOSArMjI3OSw5IEBAIHN0YXRpYyB2b2lkIHNuYl93bV9sYXRlbmN5 X3F1aXJrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCURSTV9E RUJVR19LTVMoIldNIGxhdGVuY3kgdmFsdWVzIGluY3JlYXNlZCB0byBhdm9pZCBwb3RlbnRpYWwg dW5kZXJydW5zXG4iKTsKPiAtCWludGVsX3ByaW50X3dtX2xhdGVuY3koZGV2LCAiUHJpbWFyeSIs IGRldl9wcml2LT53bS5wcmlfbGF0ZW5jeSk7Cj4gLQlpbnRlbF9wcmludF93bV9sYXRlbmN5KGRl diwgIlNwcml0ZSIsIGRldl9wcml2LT53bS5zcHJfbGF0ZW5jeSk7Cj4gLQlpbnRlbF9wcmludF93 bV9sYXRlbmN5KGRldiwgIkN1cnNvciIsIGRldl9wcml2LT53bS5jdXJfbGF0ZW5jeSk7Cj4gKwlp bnRlbF9wcmludF93bV9sYXRlbmN5KGRldl9wcml2LCAiUHJpbWFyeSIsIGRldl9wcml2LT53bS5w cmlfbGF0ZW5jeSk7Cj4gKwlpbnRlbF9wcmludF93bV9sYXRlbmN5KGRldl9wcml2LCAiU3ByaXRl IiwgZGV2X3ByaXYtPndtLnNwcl9sYXRlbmN5KTsKPiArCWludGVsX3ByaW50X3dtX2xhdGVuY3ko ZGV2X3ByaXYsICJDdXJzb3IiLCBkZXZfcHJpdi0+d20uY3VyX2xhdGVuY3kpOwo+ICB9Cj4gIAo+ ICBzdGF0aWMgdm9pZCBpbGtfc2V0dXBfd21fbGF0ZW5jeShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+IEBAIC0yMjk2LDE0ICsyMjk1LDE0IEBAIHN0YXRpYyB2b2lkIGlsa19zZXR1cF93bV9sYXRl bmN5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAltZW1jcHkoZGV2X3ByaXYtPndtLmN1cl9s YXRlbmN5LCBkZXZfcHJpdi0+d20ucHJpX2xhdGVuY3ksCj4gIAkgICAgICAgc2l6ZW9mKGRldl9w cml2LT53bS5wcmlfbGF0ZW5jeSkpOwo+ICAKPiAtCWludGVsX2ZpeHVwX3Nwcl93bV9sYXRlbmN5 KGRldiwgZGV2X3ByaXYtPndtLnNwcl9sYXRlbmN5KTsKPiArCWludGVsX2ZpeHVwX3Nwcl93bV9s YXRlbmN5KGRldl9wcml2LCBkZXZfcHJpdi0+d20uc3ByX2xhdGVuY3kpOwo+ICAJaW50ZWxfZml4 dXBfY3VyX3dtX2xhdGVuY3koZGV2X3ByaXYsIGRldl9wcml2LT53bS5jdXJfbGF0ZW5jeSk7Cj4g IAo+IC0JaW50ZWxfcHJpbnRfd21fbGF0ZW5jeShkZXYsICJQcmltYXJ5IiwgZGV2X3ByaXYtPndt LnByaV9sYXRlbmN5KTsKPiAtCWludGVsX3ByaW50X3dtX2xhdGVuY3koZGV2LCAiU3ByaXRlIiwg ZGV2X3ByaXYtPndtLnNwcl9sYXRlbmN5KTsKPiAtCWludGVsX3ByaW50X3dtX2xhdGVuY3koZGV2 LCAiQ3Vyc29yIiwgZGV2X3ByaXYtPndtLmN1cl9sYXRlbmN5KTsKPiArCWludGVsX3ByaW50X3dt X2xhdGVuY3koZGV2X3ByaXYsICJQcmltYXJ5IiwgZGV2X3ByaXYtPndtLnByaV9sYXRlbmN5KTsK PiArCWludGVsX3ByaW50X3dtX2xhdGVuY3koZGV2X3ByaXYsICJTcHJpdGUiLCBkZXZfcHJpdi0+ d20uc3ByX2xhdGVuY3kpOwo+ICsJaW50ZWxfcHJpbnRfd21fbGF0ZW5jeShkZXZfcHJpdiwgIkN1 cnNvciIsIGRldl9wcml2LT53bS5jdXJfbGF0ZW5jeSk7Cj4gIAo+IC0JaWYgKElTX0dFTjYoZGV2 KSkKPiArCWlmIChJU19HRU42KGRldl9wcml2KSkKPiAgCQlzbmJfd21fbGF0ZW5jeV9xdWlyayhk ZXYpOwo+ICB9Cj4gIAo+IEBAIC0yMzEyLDcgKzIzMTEsNyBAQCBzdGF0aWMgdm9pZCBza2xfc2V0 dXBfd21fbGF0ZW5jeShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAKPiAgCWludGVsX3JlYWRfd21f bGF0ZW5jeShkZXYsIGRldl9wcml2LT53bS5za2xfbGF0ZW5jeSk7Cj4gLQlpbnRlbF9wcmludF93 bV9sYXRlbmN5KGRldiwgIkdlbjkgUGxhbmUiLCBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3kpOwo+ ICsJaW50ZWxfcHJpbnRfd21fbGF0ZW5jeShkZXZfcHJpdiwgIkdlbjkgUGxhbmUiLCBkZXZfcHJp di0+d20uc2tsX2xhdGVuY3kpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgYm9vbCBpbGtfdmFsaWRhdGVf cGlwZV93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IEBAIC0yMzUwLDcgKzIzNDksNyBAQCBz dGF0aWMgaW50IGlsa19jb21wdXRlX3BpcGVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNz dGF0ZSkKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcHJpc3RhdGUgPSBOVUxMOwo+ICAJ c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpzcHJzdGF0ZSA9IE5VTEw7Cj4gIAlzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKmN1cnN0YXRlID0gTlVMTDsKPiAtCWludCBsZXZlbCwgbWF4X2xldmVs ID0gaWxrX3dtX21heF9sZXZlbChkZXYpLCB1c2FibGVfbGV2ZWw7Cj4gKwlpbnQgbGV2ZWwsIG1h eF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2X3ByaXYpLCB1c2FibGVfbGV2ZWw7Cj4gIAlz dHJ1Y3QgaWxrX3dtX21heGltdW1zIG1heDsKPiAgCj4gIAlwaXBlX3dtID0gJmNzdGF0ZS0+d20u aWxrLm9wdGltYWw7Cj4gQEAgLTI0MzcsNyArMjQzNiw3IEBAIHN0YXRpYyBpbnQgaWxrX2NvbXB1 dGVfaW50ZXJtZWRpYXRlX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIHsKPiAgCXN0cnVj dCBpbnRlbF9waXBlX3dtICphID0gJm5ld3N0YXRlLT53bS5pbGsuaW50ZXJtZWRpYXRlOwo+ICAJ c3RydWN0IGludGVsX3BpcGVfd20gKmIgPSAmaW50ZWxfY3J0Yy0+d20uYWN0aXZlLmlsazsKPiAt CWludCBsZXZlbCwgbWF4X2xldmVsID0gaWxrX3dtX21heF9sZXZlbChkZXYpOwo+ICsJaW50IGxl dmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21fbWF4X2xldmVsKHRvX2k5MTUoZGV2KSk7Cj4gIAo+ICAJ LyoKPiAgCSAqIFN0YXJ0IHdpdGggdGhlIGZpbmFsLCB0YXJnZXQgd2F0ZXJtYXJrcywgdGhlbiBj b21iaW5lIHdpdGggdGhlCj4gQEAgLTI1MjEsNyArMjUyMCw3IEBAIHN0YXRpYyB2b2lkIGlsa193 bV9tZXJnZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQkgc3RydWN0IGludGVsX3BpcGVf d20gKm1lcmdlZCkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShkZXYpOwo+IC0JaW50IGxldmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21fbWF4X2xldmVs KGRldik7Cj4gKwlpbnQgbGV2ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2X3By aXYpOwo+ICAJaW50IGxhc3RfZW5hYmxlZF9sZXZlbCA9IG1heF9sZXZlbDsKPiAgCj4gIAkvKiBJ TEsvU05CL0lWQjogTFAxKyB3YXRlcm1hcmtzIG9ubHkgdy8gc2luZ2xlIHBpcGUgKi8KPiBAQCAt MjU2MSw3ICsyNTYwLDcgQEAgc3RhdGljIHZvaWQgaWxrX3dtX21lcmdlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gIAkgKiBXaGF0IHdlIHNob3VsZCBjaGVjayBoZXJlIGlzIHdoZXRoZXIgRkJD IGNhbiBiZQo+ICAJICogZW5hYmxlZCBzb21ldGltZSBsYXRlci4KPiAgCSAqLwo+IC0JaWYgKElT X0dFTjUoZGV2KSAmJiAhbWVyZ2VkLT5mYmNfd21fZW5hYmxlZCAmJgo+ICsJaWYgKElTX0dFTjUo ZGV2X3ByaXYpICYmICFtZXJnZWQtPmZiY193bV9lbmFibGVkICYmCj4gIAkgICAgaW50ZWxfZmJj X2lzX2FjdGl2ZShkZXZfcHJpdikpIHsKPiAgCQlmb3IgKGxldmVsID0gMjsgbGV2ZWwgPD0gbWF4 X2xldmVsOyBsZXZlbCsrKSB7Cj4gIAkJCXN0cnVjdCBpbnRlbF93bV9sZXZlbCAqd20gPSAmbWVy Z2VkLT53bVtsZXZlbF07Cj4gQEAgLTI2NjEsNyArMjY2MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgaW50 ZWxfcGlwZV93bSAqaWxrX2ZpbmRfYmVzdF9yZXN1bHQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiAgCQkJCQkJICBzdHJ1Y3QgaW50ZWxfcGlwZV93bSAqcjEsCj4gIAkJCQkJCSAgc3RydWN0IGlu dGVsX3BpcGVfd20gKnIyKQo+ICB7Cj4gLQlpbnQgbGV2ZWwsIG1heF9sZXZlbCA9IGlsa193bV9t YXhfbGV2ZWwoZGV2KTsKPiArCWludCBsZXZlbCwgbWF4X2xldmVsID0gaWxrX3dtX21heF9sZXZl bCh0b19pOTE1KGRldikpOwo+ICAJaW50IGxldmVsMSA9IDAsIGxldmVsMiA9IDA7Cj4gIAo+ICAJ Zm9yIChsZXZlbCA9IDE7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewo+IEBAIC0zMDM1 LDcgKzMwMzQsNyBAQCBib29sIGludGVsX2Nhbl9lbmFibGVfc2FndihzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAgCQkvKiBGaW5kIHRoZSBoaWdo ZXN0IGVuYWJsZWQgd20gbGV2ZWwgZm9yIHRoaXMgcGxhbmUgKi8KPiAtCQlmb3IgKGxldmVsID0g aWxrX3dtX21heF9sZXZlbChkZXYpOwo+ICsJCWZvciAobGV2ZWwgPSBpbGtfd21fbWF4X2xldmVs KGRldl9wcml2KTsKPiAgCQkgICAgIGludGVsX3N0YXRlLT53bV9yZXN1bHRzLnBsYW5lW3BpcGVd W3BsYW5lXVtsZXZlbF0gPT0gMDsgLS1sZXZlbCkKPiAgCQkgICAgIHsgfQo+ICAKPiBAQCAtMzc3 Niw3ICszNzc1LDcgQEAgc3RhdGljIGludCBza2xfYnVpbGRfcGlwZV93bShzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3N0YXRlLAo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3N0 YXRlLT5iYXNlLmNydGMtPmRldjsKPiAgCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAtCWludCBsZXZlbCwgbWF4X2xldmVsID0gaWxrX3dt X21heF9sZXZlbChkZXYpOwo+ICsJaW50IGxldmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21fbWF4X2xl dmVsKGRldl9wcml2KTsKPiAgCWludCByZXQ7Cj4gIAo+ICAJZm9yIChsZXZlbCA9IDA7IGxldmVs IDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewo+IEBAIC0zNzk3LDcgKzM3OTYsNyBAQCBzdGF0aWMg dm9pZCBza2xfY29tcHV0ZV93bV9yZXN1bHRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJ CQkgICBzdHJ1Y3Qgc2tsX3dtX3ZhbHVlcyAqciwKPiAgCQkJCSAgIHN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjKQo+ICB7Cj4gLQlpbnQgbGV2ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhf bGV2ZWwoZGV2KTsKPiArCWludCBsZXZlbCwgbWF4X2xldmVsID0gaWxrX3dtX21heF9sZXZlbCh0 b19pOTE1KGRldikpOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ICAJ dWludDMyX3QgdGVtcDsKPiAgCWludCBpOwo+IEBAIC0zODY2LDcgKzM4NjUsNyBAQCB2b2lkIHNr bF93cml0ZV9wbGFuZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiAgCXN0cnVj dCBkcm1fY3J0YyAqY3J0YyA9ICZpbnRlbF9jcnRjLT5iYXNlOwo+ICAJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGNydGMtPmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZGV2KTsKPiAtCWludCBsZXZlbCwgbWF4X2xldmVsID0gaWxrX3dtX21heF9s ZXZlbChkZXYpOwo+ICsJaW50IGxldmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21fbWF4X2xldmVsKGRl dl9wcml2KTsKPiAgCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAgCj4gIAlm b3IgKGxldmVsID0gMDsgbGV2ZWwgPD0gbWF4X2xldmVsOyBsZXZlbCsrKSB7Cj4gQEAgLTM4ODcs NyArMzg4Niw3IEBAIHZvaWQgc2tsX3dyaXRlX2N1cnNvcl93bShzdHJ1Y3QgaW50ZWxfY3J0YyAq aW50ZWxfY3J0YywKPiAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZpbnRlbF9jcnRjLT5iYXNl Owo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAtCWludCBsZXZlbCwgbWF4 X2xldmVsID0gaWxrX3dtX21heF9sZXZlbChkZXYpOwo+ICsJaW50IGxldmVsLCBtYXhfbGV2ZWwg PSBpbGtfd21fbWF4X2xldmVsKGRldl9wcml2KTsKPiAgCWVudW0gcGlwZSBwaXBlID0gaW50ZWxf Y3J0Yy0+cGlwZTsKPiAgCj4gIAlmb3IgKGxldmVsID0gMDsgbGV2ZWwgPD0gbWF4X2xldmVsOyBs ZXZlbCsrKSB7Cj4gQEAgLTQzMzEsNyArNDMzMCw3IEBAIHN0YXRpYyB2b2lkIHNrbF9waXBlX3dt X2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAlpbnQgbGV2ZWwsIGksIG1h eF9sZXZlbDsKPiAgCXVpbnQzMl90IHRlbXA7Cj4gIAo+IC0JbWF4X2xldmVsID0gaWxrX3dtX21h eF9sZXZlbChkZXYpOwo+ICsJbWF4X2xldmVsID0gaWxrX3dtX21heF9sZXZlbChkZXZfcHJpdik7 Cj4gIAo+ICAJaHctPndtX2xpbmV0aW1lW3BpcGVdID0gSTkxNV9SRUFEKFBJUEVfV01fTElORVRJ TUUocGlwZSkpOwo+ICAKPiBAQCAtNDQzMSw3ICs0NDMwLDcgQEAgc3RhdGljIHZvaWQgaWxrX3Bp cGVfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCQlhY3RpdmUtPndt WzBdLmN1cl92YWwgPSB0bXAgJiBXTTBfUElQRV9DVVJTT1JfTUFTSzsKPiAgCQlhY3RpdmUtPmxp bmV0aW1lID0gaHctPndtX2xpbmV0aW1lW3BpcGVdOwo+ICAJfSBlbHNlIHsKPiAtCQlpbnQgbGV2 ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2KTsKPiArCQlpbnQgbGV2ZWwsIG1h eF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2X3ByaXYpOwo+ICAKPiAgCQkvKgo+ICAJCSAq IEZvciBpbmFjdGl2ZSBwaXBlcywgYWxsIHdhdGVybWFyayBsZXZlbHMKPiBAQCAtNzcyOSw3ICs3 NzI4LDcgQEAgdm9pZCBpbnRlbF9pbml0X3BtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkv KiBGb3IgY3hzciAqLwo+ICAJaWYgKElTX1BJTkVWSUVXKGRldikpCj4gIAkJaTkxNV9waW5ldmll d19nZXRfbWVtX2ZyZXEoZGV2KTsKPiAtCWVsc2UgaWYgKElTX0dFTjUoZGV2KSkKPiArCWVsc2Ug aWYgKElTX0dFTjUoZGV2X3ByaXYpKQo+ICAJCWk5MTVfaXJvbmxha2VfZ2V0X21lbV9mcmVxKGRl dik7Cj4gIAo+ICAJLyogRm9yIEZJRk8gd2F0ZXJtYXJrIHVwZGF0ZXMgKi8KPiBAQCAtNzc0MCw5 ICs3NzM5LDkgQEAgdm9pZCBpbnRlbF9pbml0X3BtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g IAl9IGVsc2UgaWYgKEhBU19QQ0hfU1BMSVQoZGV2X3ByaXYpKSB7Cj4gIAkJaWxrX3NldHVwX3dt X2xhdGVuY3koZGV2KTsKPiAgCj4gLQkJaWYgKChJU19HRU41KGRldikgJiYgZGV2X3ByaXYtPndt LnByaV9sYXRlbmN5WzFdICYmCj4gKwkJaWYgKChJU19HRU41KGRldl9wcml2KSAmJiBkZXZfcHJp di0+d20ucHJpX2xhdGVuY3lbMV0gJiYKPiAgCQkgICAgIGRldl9wcml2LT53bS5zcHJfbGF0ZW5j eVsxXSAmJiBkZXZfcHJpdi0+d20uY3VyX2xhdGVuY3lbMV0pIHx8Cj4gLQkJICAgICghSVNfR0VO NShkZXYpICYmIGRldl9wcml2LT53bS5wcmlfbGF0ZW5jeVswXSAmJgo+ICsJCSAgICAoIUlTX0dF TjUoZGV2X3ByaXYpICYmIGRldl9wcml2LT53bS5wcmlfbGF0ZW5jeVswXSAmJgo+ICAJCSAgICAg ZGV2X3ByaXYtPndtLnNwcl9sYXRlbmN5WzBdICYmIGRldl9wcml2LT53bS5jdXJfbGF0ZW5jeVsw XSkpIHsKPiAgCQkJZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9waXBlX3dtID0gaWxrX2NvbXB1 dGVfcGlwZV93bTsKPiAgCQkJZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9pbnRlcm1lZGlhdGVf d20gPQo+IEBAIC03Nzc4LDEyICs3Nzc3LDEyIEBAIHZvaWQgaW50ZWxfaW5pdF9wbShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAJCQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfd20gPSBwaW5l dmlld191cGRhdGVfd207Cj4gIAl9IGVsc2UgaWYgKElTX0c0WChkZXZfcHJpdikpIHsKPiAgCQlk ZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfd20gPSBnNHhfdXBkYXRlX3dtOwo+IC0JfSBlbHNlIGlm IChJU19HRU40KGRldikpIHsKPiArCX0gZWxzZSBpZiAoSVNfR0VONChkZXZfcHJpdikpIHsKPiAg CQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfd20gPSBpOTY1X3VwZGF0ZV93bTsKPiAtCX0gZWxz ZSBpZiAoSVNfR0VOMyhkZXYpKSB7Cj4gKwl9IGVsc2UgaWYgKElTX0dFTjMoZGV2X3ByaXYpKSB7 Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3dtID0gaTl4eF91cGRhdGVfd207Cj4gIAkJ ZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2ZpZm9fc2l6ZSA9IGk5eHhfZ2V0X2ZpZm9fc2l6ZTsKPiAt CX0gZWxzZSBpZiAoSVNfR0VOMihkZXYpKSB7Cj4gKwl9IGVsc2UgaWYgKElTX0dFTjIoZGV2X3By aXYpKSB7Cj4gIAkJaWYgKElOVEVMX0lORk8oZGV2KS0+bnVtX3BpcGVzID09IDEpIHsKPiAgCQkJ ZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3dtID0gaTg0NV91cGRhdGVfd207Cj4gIAkJCWRldl9w cml2LT5kaXNwbGF5LmdldF9maWZvX3NpemUgPSBpODQ1X2dldF9maWZvX3NpemU7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiBpbmRleCA4YjQ3NDg4MzljMDcuLmM3ZDlhMjBlMzcw ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gQEAgLTY4MCw3ICs2ODAs NyBAQCBpbGtfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJaWYgKGZi LT5tb2RpZmllclswXSA9PSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCkKPiAgCQlkdnNjbnRyIHw9 IERWU19USUxFRDsKPiAgCj4gLQlpZiAoSVNfR0VONihkZXYpKQo+ICsJaWYgKElTX0dFTjYoZGV2 X3ByaXYpKQo+ICAJCWR2c2NudHIgfD0gRFZTX1RSSUNLTEVfRkVFRF9ESVNBQkxFOyAvKiBtdXN0 IGRpc2FibGUgKi8KPiAgCj4gIAkvKiBTaXplcyBhcmUgMCBiYXNlZCAqLwo+IEBAIC0xMDc1LDcg KzEwNzUsNyBAQCBpbnRlbF9wbGFuZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0g cGlwZSBwaXBlLCBpbnQgcGxhbmUpCj4gIAkJaW50ZWxfcGxhbmUtPnVwZGF0ZV9wbGFuZSA9IGls a191cGRhdGVfcGxhbmU7Cj4gIAkJaW50ZWxfcGxhbmUtPmRpc2FibGVfcGxhbmUgPSBpbGtfZGlz YWJsZV9wbGFuZTsKPiAgCj4gLQkJaWYgKElTX0dFTjYoZGV2KSkgewo+ICsJCWlmIChJU19HRU42 KGRldl9wcml2KSkgewo+ICAJCQlwbGFuZV9mb3JtYXRzID0gc25iX3BsYW5lX2Zvcm1hdHM7Cj4g IAkJCW51bV9wbGFuZV9mb3JtYXRzID0gQVJSQVlfU0laRShzbmJfcGxhbmVfZm9ybWF0cyk7Cj4g IAkJfSBlbHNlIHsKPiAtLSAKPiAyLjcuNAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK